From 7fb484cd8aee0eef3a6c2b5118d36c05f619c207 Mon Sep 17 00:00:00 2001 From: qsyqian Date: Fri, 30 Aug 2024 16:51:26 +0800 Subject: [PATCH 0001/1068] compact: add log for keyCompactions when finished compaction Signed-off-by: qsyqian --- server/storage/mvcc/kvstore_compaction.go | 1 + 1 file changed, 1 insertion(+) diff --git a/server/storage/mvcc/kvstore_compaction.go b/server/storage/mvcc/kvstore_compaction.go index 45409114e392..f9c9b19aa4d4 100644 --- a/server/storage/mvcc/kvstore_compaction.go +++ b/server/storage/mvcc/kvstore_compaction.go @@ -72,6 +72,7 @@ func (s *store) scheduleCompaction(compactMainRev, prevCompactRev int64) (KeyVal "finished scheduled compaction", zap.Int64("compact-revision", compactMainRev), zap.Duration("took", time.Since(totalStart)), + zap.Int("number-of-keys-compacted", keyCompactions), zap.Uint32("hash", hash.Hash), zap.Int64("current-db-size-bytes", size), zap.String("current-db-size", humanize.Bytes(uint64(size))), From 0fbcd3ec8f7e4c534209dcf7634be41e26073ce3 Mon Sep 17 00:00:00 2001 From: John Sampson Date: Fri, 17 Jul 2026 15:20:26 -0400 Subject: [PATCH 0002/1068] build(deps): bump github/codeql-action from 3.28.8 to 3.28.9 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.8 to 3.28.9. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/dd746615b3b9d728a6a37ca2045b68ca76d4841a...9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +-- .github/workflows/release.yaml | 77 +++++++++++++++++++++++++++ .github/workflows/scorecards.yml | 2 +- 3 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/release.yaml diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index dddd2746729a..676a5a7da46c 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 + uses: github/codeql-action/init@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 + uses: github/codeql-action/autobuild@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 + uses: github/codeql-action/analyze@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 000000000000..2e1230951725 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,77 @@ +--- +name: Release +on: [push, pull_request] +permissions: read-all +jobs: + main: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - id: goversion + run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" + - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 + with: + go-version: ${{ steps.goversion.outputs.goversion }} + - name: release + run: | + set -euo pipefail + + git config --global user.email "github-action@etcd.io" + git config --global user.name "Github Action" + gpg --batch --gen-key < Date: Wed, 1 Apr 2026 11:29:49 -0700 Subject: [PATCH 0003/1068] version: bump up to 3.6.10 Signed-off-by: Ivan Valdes --- api/version/version.go | 2 +- client/v3/go.mod | 4 +- etcdctl/go.mod | 8 +- etcdutl/go.mod | 10 +- go.mod | 16 +- pkg/go.mod | 2 +- server/go.mod | 8 +- tests/go.mod | 14 +- tools/mod/go.mod | 254 +++++++++---------- tools/mod/go.sum | 552 +++++++++++++++++++---------------------- 10 files changed, 410 insertions(+), 460 deletions(-) diff --git a/api/version/version.go b/api/version/version.go index 421b8c84e346..618f1f1b2053 100644 --- a/api/version/version.go +++ b/api/version/version.go @@ -26,7 +26,7 @@ import ( var ( // MinClusterVersion is the min cluster version this etcd binary is compatible with. MinClusterVersion = "3.0.0" - Version = "3.6.9" + Version = "3.6.10" APIVersion = "unknown" // Git SHA Value will be set during build diff --git a/client/v3/go.mod b/client/v3/go.mod index eaca1b0a0f60..62894c140a13 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -10,8 +10,8 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 github.com/prometheus/client_golang v1.20.5 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/api/v3 v3.6.9 - go.etcd.io/etcd/client/pkg/v3 v3.6.9 + go.etcd.io/etcd/api/v3 v3.6.10 + go.etcd.io/etcd/client/pkg/v3 v3.6.10 go.uber.org/zap v1.27.0 google.golang.org/grpc v1.79.3 sigs.k8s.io/yaml v1.4.0 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index ac6fb8b338fb..f32d73bb7d58 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -12,10 +12,10 @@ require ( github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/api/v3 v3.6.9 - go.etcd.io/etcd/client/pkg/v3 v3.6.9 - go.etcd.io/etcd/client/v3 v3.6.9 - go.etcd.io/etcd/pkg/v3 v3.6.9 + go.etcd.io/etcd/api/v3 v3.6.10 + go.etcd.io/etcd/client/pkg/v3 v3.6.10 + go.etcd.io/etcd/client/v3 v3.6.10 + go.etcd.io/etcd/pkg/v3 v3.6.10 go.uber.org/zap v1.27.0 golang.org/x/time v0.9.0 google.golang.org/grpc v1.79.3 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 04ee6e5d63af..dc6e9e4a99e6 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -27,11 +27,11 @@ require ( github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 - go.etcd.io/etcd/api/v3 v3.6.9 - go.etcd.io/etcd/client/pkg/v3 v3.6.9 - go.etcd.io/etcd/client/v3 v3.6.9 - go.etcd.io/etcd/pkg/v3 v3.6.9 - go.etcd.io/etcd/server/v3 v3.6.9 + go.etcd.io/etcd/api/v3 v3.6.10 + go.etcd.io/etcd/client/pkg/v3 v3.6.10 + go.etcd.io/etcd/client/v3 v3.6.10 + go.etcd.io/etcd/pkg/v3 v3.6.10 + go.etcd.io/etcd/server/v3 v3.6.10 go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 ) diff --git a/go.mod b/go.mod index f2e92b3e0233..ea4b44413245 100644 --- a/go.mod +++ b/go.mod @@ -23,14 +23,14 @@ require ( github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 - go.etcd.io/etcd/api/v3 v3.6.9 - go.etcd.io/etcd/client/pkg/v3 v3.6.9 - go.etcd.io/etcd/client/v3 v3.6.9 - go.etcd.io/etcd/etcdctl/v3 v3.6.9 - go.etcd.io/etcd/etcdutl/v3 v3.6.9 - go.etcd.io/etcd/pkg/v3 v3.6.9 - go.etcd.io/etcd/server/v3 v3.6.9 - go.etcd.io/etcd/tests/v3 v3.6.9 + go.etcd.io/etcd/api/v3 v3.6.10 + go.etcd.io/etcd/client/pkg/v3 v3.6.10 + go.etcd.io/etcd/client/v3 v3.6.10 + go.etcd.io/etcd/etcdctl/v3 v3.6.10 + go.etcd.io/etcd/etcdutl/v3 v3.6.10 + go.etcd.io/etcd/pkg/v3 v3.6.10 + go.etcd.io/etcd/server/v3 v3.6.10 + go.etcd.io/etcd/tests/v3 v3.6.10 go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.9.0 diff --git a/pkg/go.mod b/pkg/go.mod index ddf972587770..28440c9a69e8 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -10,7 +10,7 @@ require ( github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/client/pkg/v3 v3.6.9 + go.etcd.io/etcd/client/pkg/v3 v3.6.10 go.uber.org/zap v1.27.0 google.golang.org/grpc v1.79.3 ) diff --git a/server/go.mod b/server/go.mod index bd05b93b09a0..d98515ef387f 100644 --- a/server/go.mod +++ b/server/go.mod @@ -26,10 +26,10 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 go.etcd.io/bbolt v1.4.3 - go.etcd.io/etcd/api/v3 v3.6.9 - go.etcd.io/etcd/client/pkg/v3 v3.6.9 - go.etcd.io/etcd/client/v3 v3.6.9 - go.etcd.io/etcd/pkg/v3 v3.6.9 + go.etcd.io/etcd/api/v3 v3.6.10 + go.etcd.io/etcd/client/pkg/v3 v3.6.10 + go.etcd.io/etcd/client/v3 v3.6.10 + go.etcd.io/etcd/pkg/v3 v3.6.10 go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 go.opentelemetry.io/otel v1.40.0 diff --git a/tests/go.mod b/tests/go.mod index d94c5bb1fe0f..8a8eb162437c 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -28,14 +28,14 @@ require ( github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 - go.etcd.io/etcd/api/v3 v3.6.9 - go.etcd.io/etcd/client/pkg/v3 v3.6.9 + go.etcd.io/etcd/api/v3 v3.6.10 + go.etcd.io/etcd/client/pkg/v3 v3.6.10 go.etcd.io/etcd/client/v2 v2.305.20 - go.etcd.io/etcd/client/v3 v3.6.9 - go.etcd.io/etcd/etcdctl/v3 v3.6.9 - go.etcd.io/etcd/etcdutl/v3 v3.6.9 - go.etcd.io/etcd/pkg/v3 v3.6.9 - go.etcd.io/etcd/server/v3 v3.6.9 + go.etcd.io/etcd/client/v3 v3.6.10 + go.etcd.io/etcd/etcdctl/v3 v3.6.10 + go.etcd.io/etcd/etcdutl/v3 v3.6.10 + go.etcd.io/etcd/pkg/v3 v3.6.10 + go.etcd.io/etcd/server/v3 v3.6.10 go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 diff --git a/tools/mod/go.mod b/tools/mod/go.mod index b3482ddbebb6..e4e860390304 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -1,8 +1,8 @@ module go.etcd.io/etcd/tools/v3 -go 1.25.0 +go 1.23 -toolchain go1.25.8 +toolchain go1.23.6 require ( github.com/alexfalkowski/gocovmerge v1.3.18 @@ -10,87 +10,71 @@ require ( github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint/v2 v2.8.0 + github.com/golangci/golangci-lint v1.63.4 github.com/google/addlicense v1.1.1 - github.com/google/yamlfmt v0.15.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 + github.com/google/yamlfmt v0.16.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 - golang.org/x/tools v0.42.0 gotest.tools/gotestsum v1.12.0 gotest.tools/v3 v3.5.1 - honnef.co/go/tools v0.6.1 + honnef.co/go/tools v0.5.1 ) require ( - 4d63.com/gocheckcompilerdirectives v1.3.0 // indirect - 4d63.com/gochecknoglobals v0.2.2 // indirect - codeberg.org/chavacava/garif v0.2.0 // indirect - codeberg.org/polyfloyd/go-errorlint v1.9.0 // indirect - dev.gaijin.team/go/exhaustruct/v4 v4.0.0 // indirect - dev.gaijin.team/go/golib v0.6.0 // indirect - github.com/4meepo/tagalign v1.4.3 // indirect - github.com/Abirdcfly/dupword v0.1.7 // indirect - github.com/AdminBenni/iota-mixing v1.0.0 // indirect - github.com/AlwxSin/noinlineerr v1.0.5 // indirect - github.com/Antonboom/errname v1.1.1 // indirect - github.com/Antonboom/nilnil v1.1.1 // indirect - github.com/Antonboom/testifylint v1.6.4 // indirect - github.com/BurntSushi/toml v1.6.0 // indirect - github.com/Djarvur/go-err113 v0.1.1 // indirect - github.com/Masterminds/semver/v3 v3.4.0 // indirect - github.com/MirrexOne/unqueryvet v1.4.0 // indirect - github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect + 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect + 4d63.com/gochecknoglobals v0.2.1 // indirect + github.com/4meepo/tagalign v1.4.1 // indirect + github.com/Abirdcfly/dupword v0.1.3 // indirect + github.com/Antonboom/errname v1.0.0 // indirect + github.com/Antonboom/nilnil v1.0.1 // indirect + github.com/Antonboom/testifylint v1.5.2 // indirect + github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect + github.com/Crocmagnon/fatcontext v0.5.3 // indirect + github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect + github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 // indirect + github.com/Masterminds/semver/v3 v3.3.0 // indirect + github.com/OpenPeeDeeP/depguard/v2 v2.2.0 // indirect github.com/akhenakh/hunspellgo v0.0.0-20160221122622-9db38fa26e19 // indirect - github.com/alecthomas/chroma/v2 v2.21.1 // indirect github.com/alecthomas/go-check-sumtype v0.3.1 // indirect - github.com/alexkohler/nakedret/v2 v2.0.6 // indirect - github.com/alexkohler/prealloc v1.0.1 // indirect - github.com/alfatraining/structtag v1.0.0 // indirect + github.com/alexkohler/nakedret/v2 v2.0.5 // indirect + github.com/alexkohler/prealloc v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect - github.com/alingse/nilnesserr v0.2.0 // indirect - github.com/ashanbrown/forbidigo/v2 v2.3.0 // indirect - github.com/ashanbrown/makezero/v2 v2.1.0 // indirect - github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect + github.com/alingse/nilnesserr v0.1.1 // indirect + github.com/ashanbrown/forbidigo v1.6.0 // indirect + github.com/ashanbrown/makezero v1.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bitfield/gotestdox v0.2.2 // indirect github.com/bkielbasa/cyclop v1.2.3 // indirect github.com/blizzy78/varnamelen v0.8.0 // indirect github.com/bmatcuk/doublestar/v4 v4.7.1 // indirect - github.com/bombsimon/wsl/v4 v4.7.0 // indirect - github.com/bombsimon/wsl/v5 v5.3.0 // indirect - github.com/braydonk/yaml v0.7.0 // indirect - github.com/breml/bidichk v0.3.3 // indirect - github.com/breml/errchkjson v0.4.1 // indirect - github.com/butuzov/ireturn v0.4.0 // indirect + github.com/bombsimon/wsl/v4 v4.5.0 // indirect + github.com/braydonk/yaml v0.9.0 // indirect + github.com/breml/bidichk v0.3.2 // indirect + github.com/breml/errchkjson v0.4.0 // indirect + github.com/butuzov/ireturn v0.3.1 // indirect github.com/butuzov/mirror v1.3.0 // indirect - github.com/catenacyber/perfsprint v0.10.1 // indirect - github.com/ccojocar/zxcvbn-go v1.0.4 // indirect + github.com/catenacyber/perfsprint v0.7.1 // indirect + github.com/ccojocar/zxcvbn-go v1.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/charithe/durationcheck v0.0.11 // indirect - github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect - github.com/charmbracelet/lipgloss v1.1.0 // indirect - github.com/charmbracelet/x/ansi v0.8.0 // indirect - github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect - github.com/charmbracelet/x/term v0.2.1 // indirect - github.com/ckaznocha/intrange v0.3.1 // indirect + github.com/charithe/durationcheck v0.0.10 // indirect + github.com/chavacava/garif v0.1.0 // indirect + github.com/ckaznocha/intrange v0.3.0 // indirect github.com/curioswitch/go-reassign v0.3.0 // indirect - github.com/daixiang0/gci v0.13.7 // indirect - github.com/dave/dst v0.27.3 // indirect + github.com/daixiang0/gci v0.13.5 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/denis-tingaikin/go-header v0.5.0 // indirect - github.com/dlclark/regexp2 v1.11.5 // indirect github.com/dnephin/pflag v1.0.7 // indirect github.com/ettle/strcase v0.2.0 // indirect github.com/fatih/color v1.18.0 // indirect github.com/fatih/structtag v1.2.0 // indirect - github.com/firefart/nonamedreturns v1.0.6 // indirect + github.com/firefart/nonamedreturns v1.0.5 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect - github.com/ghostiam/protogetter v0.3.18 // indirect - github.com/go-critic/go-critic v0.14.3 // indirect - github.com/go-logr/logr v1.4.3 // indirect + github.com/ghostiam/protogetter v0.3.8 // indirect + github.com/go-critic/go-critic v0.11.5 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-sql-driver/mysql v1.7.1 // indirect github.com/go-toolsmith/astcast v1.1.0 // indirect github.com/go-toolsmith/astcopy v1.1.0 // indirect @@ -99,161 +83,155 @@ require ( github.com/go-toolsmith/astp v1.1.0 // indirect github.com/go-toolsmith/strparse v1.1.0 // indirect github.com/go-toolsmith/typep v1.1.0 // indirect - github.com/go-viper/mapstructure/v2 v2.4.0 // indirect + github.com/go-viper/mapstructure/v2 v2.2.1 // indirect github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/godoc-lint/godoc-lint v0.11.1 // indirect - github.com/gofrs/flock v0.13.0 // indirect + github.com/gofrs/flock v0.12.1 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/golangci/asciicheck v0.5.0 // indirect - github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect - github.com/golangci/go-printf-func-name v0.1.1 // indirect - github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect - github.com/golangci/golines v0.14.0 // indirect - github.com/golangci/misspell v0.7.0 // indirect - github.com/golangci/plugin-module-register v0.1.2 // indirect - github.com/golangci/revgrep v0.8.0 // indirect - github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e // indirect - github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e // indirect + github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect + github.com/golangci/go-printf-func-name v0.1.0 // indirect + github.com/golangci/gofmt v0.0.0-20241223200906-057b0627d9b9 // indirect + github.com/golangci/misspell v0.6.0 // indirect + github.com/golangci/plugin-module-register v0.1.1 // indirect + github.com/golangci/revgrep v0.5.3 // indirect + github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect github.com/google/certificate-transparency-go v1.1.7 // indirect - github.com/google/go-cmp v0.7.0 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/gordonklaus/ineffassign v0.2.0 // indirect + github.com/gordonklaus/ineffassign v0.1.0 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect - github.com/gostaticanalysis/comment v1.5.0 // indirect - github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect - github.com/gostaticanalysis/nilerr v0.1.2 // indirect + github.com/gostaticanalysis/comment v1.4.2 // indirect + github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect + github.com/gostaticanalysis/nilerr v0.1.1 // indirect github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect - github.com/hashicorp/go-version v1.8.0 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/jgautheron/goconst v1.8.2 // indirect + github.com/jgautheron/goconst v1.7.1 // indirect github.com/jingyugao/rowserrcheck v1.1.1 // indirect - github.com/jjti/go-spancheck v0.6.5 // indirect + github.com/jjti/go-spancheck v0.6.4 // indirect github.com/jmhodges/clock v1.2.0 // indirect github.com/jmoiron/sqlx v1.3.5 // indirect github.com/julz/importas v0.2.0 // indirect - github.com/karamaru-alpha/copyloopvar v1.2.2 // indirect - github.com/kisielk/errcheck v1.9.0 // indirect + github.com/karamaru-alpha/copyloopvar v1.1.0 // indirect + github.com/kisielk/errcheck v1.8.0 // indirect github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 // indirect - github.com/kkHAIKE/contextcheck v1.1.6 // indirect - github.com/kulti/thelper v0.7.1 // indirect - github.com/kunwardeep/paralleltest v1.0.15 // indirect + github.com/kkHAIKE/contextcheck v1.1.5 // indirect + github.com/kulti/thelper v0.6.3 // indirect + github.com/kunwardeep/paralleltest v1.0.10 // indirect + github.com/kyoh86/exportloopref v0.1.11 // indirect github.com/lasiar/canonicalheader v1.1.2 // indirect - github.com/ldez/exptostd v0.4.5 // indirect - github.com/ldez/gomoddirectives v0.8.0 // indirect - github.com/ldez/grignotin v0.10.1 // indirect - github.com/ldez/structtags v0.6.1 // indirect - github.com/ldez/tagliatelle v0.7.2 // indirect - github.com/ldez/usetesting v0.5.0 // indirect + github.com/ldez/exptostd v0.3.1 // indirect + github.com/ldez/gomoddirectives v0.6.0 // indirect + github.com/ldez/grignotin v0.7.0 // indirect + github.com/ldez/tagliatelle v0.7.1 // indirect + github.com/ldez/usetesting v0.4.2 // indirect github.com/leonklingele/grouper v1.1.2 // indirect github.com/lib/pq v1.10.9 // indirect - github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/macabu/inamedparam v0.2.0 // indirect + github.com/macabu/inamedparam v0.1.3 // indirect github.com/magiconair/properties v1.8.7 // indirect - github.com/manuelarte/embeddedstructfieldcheck v0.4.0 // indirect - github.com/manuelarte/funcorder v0.5.0 // indirect - github.com/maratori/testableexamples v1.0.1 // indirect - github.com/maratori/testpackage v1.1.2 // indirect - github.com/matoous/godox v1.1.0 // indirect + github.com/maratori/testableexamples v1.0.0 // indirect + github.com/maratori/testpackage v1.1.1 // indirect + github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mattn/go-sqlite3 v1.14.22 // indirect - github.com/mgechev/revive v1.13.0 // indirect + github.com/mgechev/revive v1.5.1 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moricho/tparallel v0.3.2 // indirect - github.com/muesli/termenv v0.16.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect - github.com/nunnatsa/ginkgolinter v0.21.2 // indirect + github.com/nunnatsa/ginkgolinter v0.18.4 // indirect + github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/polyfloyd/go-errorlint v1.7.0 // indirect github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.62.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect - github.com/quasilyte/go-ruleguard v0.4.5 // indirect - github.com/quasilyte/go-ruleguard/dsl v0.3.23 // indirect + github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect + github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect github.com/quasilyte/gogrep v0.5.0 // indirect github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect github.com/raeperd/recvcheck v0.2.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect - github.com/rogpeppe/go-internal v1.14.1 // indirect - github.com/ryancurrah/gomodguard v1.4.1 // indirect + github.com/rogpeppe/go-internal v1.13.1 // indirect + github.com/ryancurrah/gomodguard v1.3.5 // indirect github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect - github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect + github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect - github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect - github.com/securego/gosec/v2 v2.22.11 // indirect + github.com/sashamelentyev/usestdlibvars v1.28.0 // indirect + github.com/securego/gosec/v2 v2.21.4 // indirect + github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sivchari/containedctx v1.0.3 // indirect - github.com/sonatard/noctx v0.4.0 // indirect + github.com/sivchari/tenv v1.12.1 // indirect + github.com/sonatard/noctx v0.1.0 // indirect github.com/sourcegraph/go-diff v0.7.0 // indirect - github.com/spf13/afero v1.15.0 // indirect + github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/cobra v1.10.2 // indirect + github.com/spf13/cobra v1.8.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/spf13/pflag v1.0.10 // indirect + github.com/spf13/pflag v1.0.6 // indirect github.com/spf13/viper v1.12.0 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect - github.com/stbenjam/no-sprintf-host-port v0.3.1 // indirect + github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/stretchr/testify v1.11.1 // indirect + github.com/stretchr/testify v1.10.0 // indirect github.com/subosito/gotenv v1.4.1 // indirect - github.com/tetafro/godot v1.5.4 // indirect - github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 // indirect - github.com/timonwong/loggercheck v0.11.0 // indirect - github.com/tomarrell/wrapcheck/v2 v2.12.0 // indirect + github.com/tdakkota/asciicheck v0.3.0 // indirect + github.com/tetafro/godot v1.4.20 // indirect + github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 // indirect + github.com/timonwong/loggercheck v0.10.1 // indirect + github.com/tomarrell/wrapcheck/v2 v2.10.0 // indirect github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect github.com/trustmaster/go-aspell v0.0.0-20200701131845-c2b1f55bec8f // indirect github.com/ultraware/funlen v0.2.0 // indirect github.com/ultraware/whitespace v0.2.0 // indirect github.com/uudashr/gocognit v1.2.0 // indirect - github.com/uudashr/iface v1.4.1 // indirect + github.com/uudashr/iface v1.3.0 // indirect github.com/weppos/publicsuffix-go v0.30.0 // indirect - github.com/xen0n/gosmopolitan v1.3.0 // indirect - github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect + github.com/xen0n/gosmopolitan v1.2.2 // indirect github.com/yagipy/maintidx v1.0.0 // indirect github.com/yeya24/promlinter v0.3.0 // indirect github.com/ykadowak/zerologlint v0.1.5 // indirect github.com/zmap/zcrypto v0.0.0-20230310154051-c8b263fd8300 // indirect github.com/zmap/zlint/v3 v3.5.0 // indirect gitlab.com/bosi/decorder v0.4.2 // indirect - go-simpler.org/musttag v0.14.0 // indirect - go-simpler.org/sloglint v0.11.1 // indirect - go.augendre.info/arangolint v0.3.1 // indirect - go.augendre.info/fatcontext v0.9.0 // indirect + go-simpler.org/musttag v0.13.0 // indirect + go-simpler.org/sloglint v0.7.2 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.48.0 // indirect - golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546 // indirect - golang.org/x/mod v0.33.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 // indirect - golang.org/x/term v0.40.0 // indirect - golang.org/x/text v0.35.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/grpc v1.79.3 // indirect - google.golang.org/protobuf v1.36.10 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect + golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f // indirect + golang.org/x/mod v0.22.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.29.0 // indirect + golang.org/x/term v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect + golang.org/x/tools v0.29.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/grpc v1.70.0 // indirect + google.golang.org/protobuf v1.36.4 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.100.1 // indirect - mvdan.cc/gofumpt v0.9.2 // indirect - mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15 // indirect + mvdan.cc/gofumpt v0.7.0 // indirect + mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect ) diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 8ecb007f0a8b..bc3c2dd93340 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -1,69 +1,53 @@ -4d63.com/gocheckcompilerdirectives v1.3.0 h1:Ew5y5CtcAAQeTVKUVFrE7EwHMrTO6BggtEj8BZSjZ3A= -4d63.com/gocheckcompilerdirectives v1.3.0/go.mod h1:ofsJ4zx2QAuIP/NO/NAh1ig6R1Fb18/GI7RVMwz7kAY= -4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= -4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= -codeberg.org/chavacava/garif v0.2.0 h1:F0tVjhYbuOCnvNcU3YSpO6b3Waw6Bimy4K0mM8y6MfY= -codeberg.org/chavacava/garif v0.2.0/go.mod h1:P2BPbVbT4QcvLZrORc2T29szK3xEOlnl0GiPTJmEqBQ= -codeberg.org/polyfloyd/go-errorlint v1.9.0 h1:VkdEEmA1VBpH6ecQoMR4LdphVI3fA4RrCh2an7YmodI= -codeberg.org/polyfloyd/go-errorlint v1.9.0/go.mod h1:GPRRu2LzVijNn4YkrZYJfatQIdS+TrcK8rL5Xs24qw8= -dev.gaijin.team/go/exhaustruct/v4 v4.0.0 h1:873r7aNneqoBB3IaFIzhvt2RFYTuHgmMjoKfwODoI1Y= -dev.gaijin.team/go/exhaustruct/v4 v4.0.0/go.mod h1:aZ/k2o4Y05aMJtiux15x8iXaumE88YdiB0Ai4fXOzPI= -dev.gaijin.team/go/golib v0.6.0 h1:v6nnznFTs4bppib/NyU1PQxobwDHwCXXl15P7DV5Zgo= -dev.gaijin.team/go/golib v0.6.0/go.mod h1:uY1mShx8Z/aNHWDyAkZTkX+uCi5PdX7KsG1eDQa2AVE= -github.com/4meepo/tagalign v1.4.3 h1:Bnu7jGWwbfpAie2vyl63Zup5KuRv21olsPIha53BJr8= -github.com/4meepo/tagalign v1.4.3/go.mod h1:00WwRjiuSbrRJnSVeGWPLp2epS5Q/l4UEy0apLLS37c= -github.com/Abirdcfly/dupword v0.1.7 h1:2j8sInznrje4I0CMisSL6ipEBkeJUJAmK1/lfoNGWrQ= -github.com/Abirdcfly/dupword v0.1.7/go.mod h1:K0DkBeOebJ4VyOICFdppB23Q0YMOgVafM0zYW0n9lF4= -github.com/AdminBenni/iota-mixing v1.0.0 h1:Os6lpjG2dp/AE5fYBPAA1zfa2qMdCAWwPMCgpwKq7wo= -github.com/AdminBenni/iota-mixing v1.0.0/go.mod h1:i4+tpAaB+qMVIV9OK3m4/DAynOd5bQFaOu+2AhtBCNY= -github.com/AlwxSin/noinlineerr v1.0.5 h1:RUjt63wk1AYWTXtVXbSqemlbVTb23JOSRiNsshj7TbY= -github.com/AlwxSin/noinlineerr v1.0.5/go.mod h1:+QgkkoYrMH7RHvcdxdlI7vYYEdgeoFOVjU9sUhw/rQc= -github.com/Antonboom/errname v1.1.1 h1:bllB7mlIbTVzO9jmSWVWLjxTEbGBVQ1Ff/ClQgtPw9Q= -github.com/Antonboom/errname v1.1.1/go.mod h1:gjhe24xoxXp0ScLtHzjiXp0Exi1RFLKJb0bVBtWKCWQ= -github.com/Antonboom/nilnil v1.1.1 h1:9Mdr6BYd8WHCDngQnNVV0b554xyisFioEKi30sksufQ= -github.com/Antonboom/nilnil v1.1.1/go.mod h1:yCyAmSw3doopbOWhJlVci+HuyNRuHJKIv6V2oYQa8II= -github.com/Antonboom/testifylint v1.6.4 h1:gs9fUEy+egzxkEbq9P4cpcMB6/G0DYdMeiFS87UiqmQ= -github.com/Antonboom/testifylint v1.6.4/go.mod h1:YO33FROXX2OoUfwjz8g+gUxQXio5i9qpVy7nXGbxDD4= -github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk= -github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/Djarvur/go-err113 v0.1.1 h1:eHfopDqXRwAi+YmCUas75ZE0+hoBHJ2GQNLYRSxao4g= -github.com/Djarvur/go-err113 v0.1.1/go.mod h1:IaWJdYFLg76t2ihfflPZnM1LIQszWOsFDh2hhhAVF6k= -github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= -github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= -github.com/MirrexOne/unqueryvet v1.4.0 h1:6KAkqqW2KUnkl9Z0VuTphC3IXRPoFqEkJEtyxxHj5eQ= -github.com/MirrexOne/unqueryvet v1.4.0/go.mod h1:IWwCwMQlSWjAIteW0t+28Q5vouyktfujzYznSIWiuOg= -github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= -github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= +4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA= +4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= +4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc= +4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU= +github.com/4meepo/tagalign v1.4.1 h1:GYTu2FaPGOGb/xJalcqHeD4il5BiCywyEYZOA55P6J4= +github.com/4meepo/tagalign v1.4.1/go.mod h1:2H9Yu6sZ67hmuraFgfZkNcg5Py9Ch/Om9l2K/2W1qS4= +github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE= +github.com/Abirdcfly/dupword v0.1.3/go.mod h1:8VbB2t7e10KRNdwTVoxdBaxla6avbhGzb8sCTygUMhw= +github.com/Antonboom/errname v1.0.0 h1:oJOOWR07vS1kRusl6YRSlat7HFnb3mSfMl6sDMRoTBA= +github.com/Antonboom/errname v1.0.0/go.mod h1:gMOBFzK/vrTiXN9Oh+HFs+e6Ndl0eTFbtsRTSRdXyGI= +github.com/Antonboom/nilnil v1.0.1 h1:C3Tkm0KUxgfO4Duk3PM+ztPncTFlOf0b2qadmS0s4xs= +github.com/Antonboom/nilnil v1.0.1/go.mod h1:CH7pW2JsRNFgEh8B2UaPZTEPhCMuFowP/e8Udp9Nnb0= +github.com/Antonboom/testifylint v1.5.2 h1:4s3Xhuv5AvdIgbd8wOOEeo0uZG7PbDKQyKY5lGoQazk= +github.com/Antonboom/testifylint v1.5.2/go.mod h1:vxy8VJ0bc6NavlYqjZfmp6EfqXMtBgQ4+mhCojwC1P8= +github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= +github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/Crocmagnon/fatcontext v0.5.3 h1:zCh/wjc9oyeF+Gmp+V60wetm8ph2tlsxocgg/J0hOps= +github.com/Crocmagnon/fatcontext v0.5.3/go.mod h1:XoCQYY1J+XTfyv74qLXvNw4xFunr3L1wkopIIKG7wGM= +github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= +github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 h1:/fTUt5vmbkAcMBt4YQiuC23cV0kEsN1MVMNqeOW43cU= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0/go.mod h1:ONJg5sxcbsdQQ4pOW8TGdTidT2TMAUy/2Xhr8mrYaao= +github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= +github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJPdp74zmpA= +github.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ= github.com/akhenakh/hunspellgo v0.0.0-20160221122622-9db38fa26e19 h1:bYOD6QJnBJY79MJQR1i9cyQePG5oNDZXDKL2bhN/uvE= github.com/akhenakh/hunspellgo v0.0.0-20160221122622-9db38fa26e19/go.mod h1:HcqyLXmWoESd/vPSbCPqvgw5l5cMM5PtoqFOnXLjSeM= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= -github.com/alecthomas/chroma/v2 v2.21.1 h1:FaSDrp6N+3pphkNKU6HPCiYLgm8dbe5UXIXcoBhZSWA= -github.com/alecthomas/chroma/v2 v2.21.1/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o= github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU= github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= -github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= -github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= +github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/alexfalkowski/gocovmerge v1.3.18 h1:GRJz7uNUHuumvWQtS2zBjDkLdIiCcYE1rfxYYWwYvs8= github.com/alexfalkowski/gocovmerge v1.3.18/go.mod h1:TnngCLiVe3kIrJ8v12zHP8aQkRWpjTomZm18uQrRDvE= -github.com/alexkohler/nakedret/v2 v2.0.6 h1:ME3Qef1/KIKr3kWX3nti3hhgNxw6aqN5pZmQiFSsuzQ= -github.com/alexkohler/nakedret/v2 v2.0.6/go.mod h1:l3RKju/IzOMQHmsEvXwkqMDzHHvurNQfAgE1eVmT40Q= -github.com/alexkohler/prealloc v1.0.1 h1:A9P1haqowqUxWvU9nk6tQ7YktXIHf+LQM9wPRhuteEE= -github.com/alexkohler/prealloc v1.0.1/go.mod h1:fT39Jge3bQrfA7nPMDngUfvUbQGQeJyGQnR+913SCig= -github.com/alfatraining/structtag v1.0.0 h1:2qmcUqNcCoyVJ0up879K614L9PazjBSFruTB0GOFjCc= -github.com/alfatraining/structtag v1.0.0/go.mod h1:p3Xi5SwzTi+Ryj64DqjLWz7XurHxbGsq6y3ubePJPus= +github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU= +github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= +github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= +github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= -github.com/alingse/nilnesserr v0.2.0 h1:raLem5KG7EFVb4UIDAXgrv3N2JIaffeKNtcEXkEWd/w= -github.com/alingse/nilnesserr v0.2.0/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= +github.com/alingse/nilnesserr v0.1.1 h1:7cYuJewpy9jFNMEA72Q1+3Nm3zKHzg+Q28D5f2bBFUA= +github.com/alingse/nilnesserr v0.1.1/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c h1:xv0ICJ4AO52aNZ+vI2KFUYZBMh7dHvROixZ1vzMMfu8= github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c/go.mod h1:Y5/1I+0gnnhHKyX4z65mgaGTJ08tnz9WUgkoymA/cws= -github.com/ashanbrown/forbidigo/v2 v2.3.0 h1:OZZDOchCgsX5gvToVtEBoV2UWbFfI6RKQTir2UZzSxo= -github.com/ashanbrown/forbidigo/v2 v2.3.0/go.mod h1:5p6VmsG5/1xx3E785W9fouMxIOkvY2rRV9nMdWadd6c= -github.com/ashanbrown/makezero/v2 v2.1.0 h1:snuKYMbqosNokUKm+R6/+vOPs8yVAi46La7Ck6QYSaE= -github.com/ashanbrown/makezero/v2 v2.1.0/go.mod h1:aEGT/9q3S8DHeE57C88z2a6xydvgx8J5hgXIGWgo0MY= -github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= -github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= +github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= +github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= +github.com/ashanbrown/makezero v1.2.0 h1:/2Lp1bypdmK9wDIq7uWBlDF1iMUpIIS4A+pF6C9IEUU= +github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8euNO0qjQMtGY4= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bitfield/gotestdox v0.2.2 h1:x6RcPAbBbErKLnapz1QeAlf3ospg8efBsedU93CDsnE= @@ -75,62 +59,48 @@ github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkAp github.com/bmatcuk/doublestar/v4 v4.0.2/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bmatcuk/doublestar/v4 v4.7.1 h1:fdDeAqgT47acgwd9bd9HxJRDmc9UAmPpc+2m0CXv75Q= github.com/bmatcuk/doublestar/v4 v4.7.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= -github.com/bombsimon/wsl/v4 v4.7.0 h1:1Ilm9JBPRczjyUs6hvOPKvd7VL1Q++PL8M0SXBDf+jQ= -github.com/bombsimon/wsl/v4 v4.7.0/go.mod h1:uV/+6BkffuzSAVYD+yGyld1AChO7/EuLrCF/8xTiapg= -github.com/bombsimon/wsl/v5 v5.3.0 h1:nZWREJFL6U3vgW/B1lfDOigl+tEF6qgs6dGGbFeR0UM= -github.com/bombsimon/wsl/v5 v5.3.0/go.mod h1:Gp8lD04z27wm3FANIUPZycXp+8huVsn0oxc+n4qfV9I= -github.com/braydonk/yaml v0.7.0 h1:ySkqO7r0MGoCNhiRJqE0Xe9yhINMyvOAB3nFjgyJn2k= -github.com/braydonk/yaml v0.7.0/go.mod h1:hcm3h581tudlirk8XEUPDBAimBPbmnL0Y45hCRl47N4= -github.com/breml/bidichk v0.3.3 h1:WSM67ztRusf1sMoqH6/c4OBCUlRVTKq+CbSeo0R17sE= -github.com/breml/bidichk v0.3.3/go.mod h1:ISbsut8OnjB367j5NseXEGGgO/th206dVa427kR8YTE= -github.com/breml/errchkjson v0.4.1 h1:keFSS8D7A2T0haP9kzZTi7o26r7kE3vymjZNeNDRDwg= -github.com/breml/errchkjson v0.4.1/go.mod h1:a23OvR6Qvcl7DG/Z4o0el6BRAjKnaReoPQFciAl9U3s= -github.com/butuzov/ireturn v0.4.0 h1:+s76bF/PfeKEdbG8b54aCocxXmi0wvYdOVsWxVO7n8E= -github.com/butuzov/ireturn v0.4.0/go.mod h1:ghI0FrCmap8pDWZwfPisFD1vEc56VKH4NpQUxDHta70= +github.com/bombsimon/wsl/v4 v4.5.0 h1:iZRsEvDdyhd2La0FVi5k6tYehpOR/R7qIUjmKk7N74A= +github.com/bombsimon/wsl/v4 v4.5.0/go.mod h1:NOQ3aLF4nD7N5YPXMruR6ZXDOAqLoM0GEpLwTdvmOSc= +github.com/braydonk/yaml v0.9.0 h1:ewGMrVmEVpsm3VwXQDR388sLg5+aQ8Yihp6/hc4m+h4= +github.com/braydonk/yaml v0.9.0/go.mod h1:hcm3h581tudlirk8XEUPDBAimBPbmnL0Y45hCRl47N4= +github.com/breml/bidichk v0.3.2 h1:xV4flJ9V5xWTqxL+/PMFF6dtJPvZLPsyixAoPe8BGJs= +github.com/breml/bidichk v0.3.2/go.mod h1:VzFLBxuYtT23z5+iVkamXO386OB+/sVwZOpIj6zXGos= +github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAdk= +github.com/breml/errchkjson v0.4.0/go.mod h1:AuBOSTHyLSaaAFlWsRSuRBIroCh3eh7ZHh5YeelDIk8= +github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY= +github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M= github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= -github.com/catenacyber/perfsprint v0.10.1 h1:u7Riei30bk46XsG8nknMhKLXG9BcXz3+3tl/WpKm0PQ= -github.com/catenacyber/perfsprint v0.10.1/go.mod h1:DJTGsi/Zufpuus6XPGJyKOTMELe347o6akPvWG9Zcsc= -github.com/ccojocar/zxcvbn-go v1.0.4 h1:FWnCIRMXPj43ukfX000kvBZvV6raSxakYr1nzyNrUcc= -github.com/ccojocar/zxcvbn-go v1.0.4/go.mod h1:3GxGX+rHmueTUMvm5ium7irpyjmm7ikxYFOSJB21Das= +github.com/catenacyber/perfsprint v0.7.1 h1:PGW5G/Kxn+YrN04cRAZKC+ZuvlVwolYMrIyyTJ/rMmc= +github.com/catenacyber/perfsprint v0.7.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= +github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg= +github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charithe/durationcheck v0.0.11 h1:g1/EX1eIiKS57NTWsYtHDZ/APfeXKhye1DidBcABctk= -github.com/charithe/durationcheck v0.0.11/go.mod h1:x5iZaixRNl8ctbM+3B2RrPG5t856TxRyVQEnbIEM2X4= -github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs= -github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk= -github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= -github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30= -github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE= -github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q= -github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8= -github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs= -github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ= -github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg= +github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= +github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= +github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc= +github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww= github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 h1:0wUHjDfbCAROEAZ96zAJGwcNMkPIheFaIjtQyv3QqfM= github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03/go.mod h1:uFE9hX+zXEwvyUThZ4gDb9vkAwc5DoHUnRSEpH0VrOs= -github.com/ckaznocha/intrange v0.3.1 h1:j1onQyXvHUsPWujDH6WIjhyH26gkRt/txNlV7LspvJs= -github.com/ckaznocha/intrange v0.3.1/go.mod h1:QVepyz1AkUoFQkpEqksSYpNpUo3c5W7nWh/s6SHIJJk= +github.com/ckaznocha/intrange v0.3.0 h1:VqnxtK32pxgkhJgYQEeOArVidIPg+ahLP7WBOXZd5ZY= +github.com/ckaznocha/intrange v0.3.0/go.mod h1:+I/o2d2A1FBHgGELbGxzIcyd3/9l9DuwjM8FsbSS3Lo= github.com/cloudflare/cfssl v1.6.5 h1:46zpNkm6dlNkMZH/wMW22ejih6gIaJbzL2du6vD7ZeI= github.com/cloudflare/cfssl v1.6.5/go.mod h1:Bk1si7sq8h2+yVEDrFJiz3d7Aw+pfjjJSZVaD+Taky4= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs= github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88= -github.com/daixiang0/gci v0.13.7 h1:+0bG5eK9vlI08J+J/NWGbWPTNiXPG4WhNLJOkSxWITQ= -github.com/daixiang0/gci v0.13.7/go.mod h1:812WVN6JLFY9S6Tv76twqmNqevN0pa3SX3nih0brVzQ= -github.com/dave/dst v0.27.3 h1:P1HPoMza3cMEquVf9kKy8yXsFirry4zEnWOdYPOoIzY= -github.com/dave/dst v0.27.3/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEyc= -github.com/dave/jennifer v1.7.1 h1:B4jJJDHelWcDhlRQxWeo0Npa/pYKBLrirAQoTN45txo= -github.com/dave/jennifer v1.7.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= +github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c= +github.com/daixiang0/gci v0.13.5/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8= github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY= -github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ= -github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= +github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dnephin/pflag v1.0.7 h1:oxONGlWxhmUct0YzKTgrpQv9AUA1wtPBn7zuSjJqptk= github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= @@ -141,21 +111,21 @@ github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= -github.com/firefart/nonamedreturns v1.0.6 h1:vmiBcKV/3EqKY3ZiPxCINmpS431OcE1S47AQUwhrg8E= -github.com/firefart/nonamedreturns v1.0.6/go.mod h1:R8NisJnSIpvPWheCq0mNRXJok6D8h7fagJTF8EMEwCo= +github.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6tUTYIdRA= +github.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= -github.com/ghostiam/protogetter v0.3.18 h1:yEpghRGtP9PjKvVXtEzGpYfQj1Wl/ZehAfU6fr62Lfo= -github.com/ghostiam/protogetter v0.3.18/go.mod h1:FjIu5Yfs6FT391m+Fjp3fbAYJ6rkL/J6ySpZBfnODuI= -github.com/go-critic/go-critic v0.14.3 h1:5R1qH2iFeo4I/RJU8vTezdqs08Egi4u5p6vOESA0pog= -github.com/go-critic/go-critic v0.14.3/go.mod h1:xwntfW6SYAd7h1OqDzmN6hBX/JxsEKl5up/Y2bsxgVQ= +github.com/ghostiam/protogetter v0.3.8 h1:LYcXbYvybUyTIxN2Mj9h6rHrDZBDwZloPoKctWrFyJY= +github.com/ghostiam/protogetter v0.3.8/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= +github.com/go-critic/go-critic v0.11.5 h1:TkDTOn5v7EEngMxu8KbuFqFR43USaaH8XRJLz1jhVYA= +github.com/go-critic/go-critic v0.11.5/go.mod h1:wu6U7ny9PiaHaZHcvMDmdysMqvDem162Rh3zWTrqk8M= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= @@ -182,84 +152,77 @@ github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQi github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= -github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= -github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= +github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY= github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/godoc-lint/godoc-lint v0.11.1 h1:z9as8Qjiy6miRIa3VRymTa+Gt2RLnGICVikcvlUVOaA= -github.com/godoc-lint/godoc-lint v0.11.1/go.mod h1:BAqayheFSuZrEAqCRxgw9MyvsM+S/hZwJbU1s/ejRj8= -github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= -github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= +github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= +github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golangci/asciicheck v0.5.0 h1:jczN/BorERZwK8oiFBOGvlGPknhvq0bjnysTj4nUfo0= -github.com/golangci/asciicheck v0.5.0/go.mod h1:5RMNAInbNFw2krqN6ibBxN/zfRFa9S6tA1nPdM0l8qQ= -github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 h1:WUvBfQL6EW/40l6OmeSBYQJNSif4O11+bmWEz+C7FYw= -github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E= -github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarogrvjO9AfiW3B4U= -github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss= -github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= -github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint/v2 v2.8.0 h1:wJnr3hJWY3eVzOUcfwbDc2qbi2RDEpvLmQeNFaPSNYA= -github.com/golangci/golangci-lint/v2 v2.8.0/go.mod h1:xl+HafQ9xoP8rzw0z5AwnO5kynxtb80e8u02Ej/47RI= -github.com/golangci/golines v0.14.0 h1:xt9d3RKBjhasA3qpoXs99J2xN2t6eBlpLHt0TrgyyXc= -github.com/golangci/golines v0.14.0/go.mod h1:gf555vPG2Ia7mmy2mzmhVQbVjuK8Orw0maR1G4vVAAQ= -github.com/golangci/misspell v0.7.0 h1:4GOHr/T1lTW0hhR4tgaaV1WS/lJ+ncvYCoFKmqJsj0c= -github.com/golangci/misspell v0.7.0/go.mod h1:WZyyI2P3hxPY2UVHs3cS8YcllAeyfquQcKfdeE9AFVg= -github.com/golangci/plugin-module-register v0.1.2 h1:e5WM6PO6NIAEcij3B053CohVp3HIYbzSuP53UAYgOpg= -github.com/golangci/plugin-module-register v0.1.2/go.mod h1:1+QGTsKBvAIvPvoY/os+G5eoqxWn70HYDm2uvUyGuVw= -github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s= -github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= -github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e h1:ai0EfmVYE2bRA5htgAG9r7s3tHsfjIhN98WshBTJ9jM= -github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e/go.mod h1:Vrn4B5oR9qRwM+f54koyeH3yzphlecwERs0el27Fr/s= -github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e h1:gD6P7NEo7Eqtt0ssnqSJNNndxe69DOQ24A5h7+i3KpM= -github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e/go.mod h1:h+wZwLjUTJnm/P2rwlbJdRPZXOzaT36/FwnPnY2inzc= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= +github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUPPyAKJuzv8pEJU= +github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= +github.com/golangci/gofmt v0.0.0-20241223200906-057b0627d9b9 h1:t5wybL6RtO83VwoMOb7U/Peqe3gGKQlPIC66wXmnkvM= +github.com/golangci/gofmt v0.0.0-20241223200906-057b0627d9b9/go.mod h1:Ag3L7sh7E28qAp/5xnpMMTuGYqxLZoSaEHZDkZB1RgU= +github.com/golangci/golangci-lint v1.63.4 h1:bJQFQ3hSfUto597dkL7ipDzOxsGEpiWdLiZ359OWOBI= +github.com/golangci/golangci-lint v1.63.4/go.mod h1:Hx0B7Lg5/NXbaOHem8+KU+ZUIzMI6zNj/7tFwdnn10I= +github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= +github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= +github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= +github.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc= +github.com/golangci/revgrep v0.5.3 h1:3tL7c1XBMtWHHqVpS5ChmiAAoe4PF/d5+ULzV9sLAzs= +github.com/golangci/revgrep v0.5.3/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= +github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs= +github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ= github.com/google/addlicense v1.1.1 h1:jpVf9qPbU8rz5MxKo7d+RMcNHkqxi4YJi/laauX4aAE= github.com/google/addlicense v1.1.1/go.mod h1:Sm/DHu7Jk+T5miFHHehdIjbi4M5+dJDRS3Cq0rncIxA= github.com/google/certificate-transparency-go v1.1.7 h1:IASD+NtgSTJLPdzkthwvAG1ZVbF2WtFg4IvoA68XGSw= github.com/google/certificate-transparency-go v1.1.7/go.mod h1:FSSBo8fyMVgqptbfF6j5p/XNdgQftAhSmXcIxV9iphE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6 h1:EEHtgt9IwisQ2AZ4pIsMjahcegHh6rmhqxzIRQIyepY= -github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= +github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 h1:5iH8iuqE5apketRbSFBy+X1V0o+l+8NF1avt4HWl7cA= +github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/yamlfmt v0.15.0 h1:8VqeHp87EEyfAeCTp3QpV/8bnhDh04jKN6EeifiTM70= -github.com/google/yamlfmt v0.15.0/go.mod h1:MPmHSVetV8ofpKmeiEZAh2p4jbDapC+FNqilNN7JQVk= -github.com/gordonklaus/ineffassign v0.2.0 h1:Uths4KnmwxNJNzq87fwQQDDnbNb7De00VOk9Nu0TySs= -github.com/gordonklaus/ineffassign v0.2.0/go.mod h1:TIpymnagPSexySzs7F9FnO1XFTy8IT3a59vmZp5Y9Lw= +github.com/google/yamlfmt v0.16.0 h1:5auoxqdx2CxOb022XGBElFFVH8uE/lAJDCWKRMq4mT8= +github.com/google/yamlfmt v0.16.0/go.mod h1:/fF8jQmFopG3InQoWYG3gTORPXqLwNkcBqAT4UA4ab0= +github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s= +github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= +github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= +github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= -github.com/gostaticanalysis/comment v1.5.0 h1:X82FLl+TswsUMpMh17srGRuKaaXprTaytmEpgnKIDu8= -github.com/gostaticanalysis/comment v1.5.0/go.mod h1:V6eb3gpCv9GNVqb6amXzEUX3jXLVK/AdA+IrAMSqvEc= -github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk= -github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY= -github.com/gostaticanalysis/nilerr v0.1.2 h1:S6nk8a9N8g062nsx63kUkF6AzbHGw7zzyHMcpu52xQU= -github.com/gostaticanalysis/nilerr v0.1.2/go.mod h1:A19UHhoY3y8ahoL7YKz6sdjDtduwTSI4CsymaC2htPA= +github.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70= +github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= +github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= +github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= 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.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -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/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= @@ -268,28 +231,28 @@ github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUq github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/jgautheron/goconst v1.8.2 h1:y0XF7X8CikZ93fSNT6WBTb/NElBu9IjaY7CCYQrCMX4= -github.com/jgautheron/goconst v1.8.2/go.mod h1:A0oxgBCHy55NQn6sYpO7UdnA9p+h7cPtoOZUmvNIako= +github.com/jgautheron/goconst v1.7.1 h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5Jkk= +github.com/jgautheron/goconst v1.7.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= -github.com/jjti/go-spancheck v0.6.5 h1:lmi7pKxa37oKYIMScialXUK6hP3iY5F1gu+mLBPgYB8= -github.com/jjti/go-spancheck v0.6.5/go.mod h1:aEogkeatBrbYsyW6y5TgDfihCulDYciL1B7rG2vSsrU= +github.com/jjti/go-spancheck v0.6.4 h1:Tl7gQpYf4/TMU7AT84MN83/6PutY21Nb9fuQjFTpRRc= +github.com/jjti/go-spancheck v0.6.4/go.mod h1:yAEYdKJ2lRkDA8g7X+oKUHXOWVAXSBJRv04OhF+QUjk= github.com/jmhodges/clock v1.2.0 h1:eq4kys+NI0PLngzaHEe7AmPT90XMGIEySD1JfV1PDIs= github.com/jmhodges/clock v1.2.0/go.mod h1:qKjhA7x7u/lQpPB1XAqX1b1lCI/w3/fNuYpI/ZjLynI= github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ= github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY= -github.com/karamaru-alpha/copyloopvar v1.2.2 h1:yfNQvP9YaGQR7VaWLYcfZUlRP2eo2vhExWKxD/fP6q0= -github.com/karamaru-alpha/copyloopvar v1.2.2/go.mod h1:oY4rGZqZ879JkJMtX3RRkcXRkmUvH0x35ykgaKgsgJY= +github.com/karamaru-alpha/copyloopvar v1.1.0 h1:x7gNyKcC2vRBO1H2Mks5u1VxQtYvFiym7fCjIP8RPos= +github.com/karamaru-alpha/copyloopvar v1.1.0/go.mod h1:u7CIfztblY0jZLOQZgH3oYsJzpC2A7S6u/lfgSXHy0k= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/errcheck v1.9.0 h1:9xt1zI9EBfcYBvdU1nVrzMzzUPUtPKs9bVSIM3TAb3M= -github.com/kisielk/errcheck v1.9.0/go.mod h1:kQxWMMVZgIkDq7U8xtG/n2juOjbLgZtedi0D+/VL/i8= +github.com/kisielk/errcheck v1.8.0 h1:ZX/URYa7ilESY19ik/vBmCn6zdGQLxACwjAcWbHlYlg= +github.com/kisielk/errcheck v1.8.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 h1:veS9QfglfvqAw2e+eeNT/SbGySq8ajECXJ9e4fPoLhY= github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= -github.com/kkHAIKE/contextcheck v1.1.6 h1:7HIyRcnyzxL9Lz06NGhiKvenXq7Zw6Q0UQu/ttjfJCE= -github.com/kkHAIKE/contextcheck v1.1.6/go.mod h1:3dDbMRNBFaq8HFXWC1JyvDSPm43CmE6IuHam8Wr0rkg= +github.com/kkHAIKE/contextcheck v1.1.5 h1:CdnJh63tcDe53vG+RebdpdXJTc9atMgGqdx8LXxiilg= +github.com/kkHAIKE/contextcheck v1.1.5/go.mod h1:O930cpht4xb1YQpK+1+AgoM3mFsvxr7uyFptcnWTYUA= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -301,45 +264,39 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kulti/thelper v0.7.1 h1:fI8QITAoFVLx+y+vSyuLBP+rcVIB8jKooNSCT2EiI98= -github.com/kulti/thelper v0.7.1/go.mod h1:NsMjfQEy6sd+9Kfw8kCP61W1I0nerGSYSFnGaxQkcbs= -github.com/kunwardeep/paralleltest v1.0.15 h1:ZMk4Qt306tHIgKISHWFJAO1IDQJLc6uDyJMLyncOb6w= -github.com/kunwardeep/paralleltest v1.0.15/go.mod h1:di4moFqtfz3ToSKxhNjhOZL+696QtJGCFe132CbBLGk= +github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= +github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= +github.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCTdvWJ/lDDs= +github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= +github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= +github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= -github.com/ldez/exptostd v0.4.5 h1:kv2ZGUVI6VwRfp/+bcQ6Nbx0ghFWcGIKInkG/oFn1aQ= -github.com/ldez/exptostd v0.4.5/go.mod h1:QRjHRMXJrCTIm9WxVNH6VW7oN7KrGSht69bIRwvdFsM= -github.com/ldez/gomoddirectives v0.8.0 h1:JqIuTtgvFC2RdH1s357vrE23WJF2cpDCPFgA/TWDGpk= -github.com/ldez/gomoddirectives v0.8.0/go.mod h1:jutzamvZR4XYJLr0d5Honycp4Gy6GEg2mS9+2YX3F1Q= -github.com/ldez/grignotin v0.10.1 h1:keYi9rYsgbvqAZGI1liek5c+jv9UUjbvdj3Tbn5fn4o= -github.com/ldez/grignotin v0.10.1/go.mod h1:UlDbXFCARrXbWGNGP3S5vsysNXAPhnSuBufpTEbwOas= -github.com/ldez/structtags v0.6.1 h1:bUooFLbXx41tW8SvkfwfFkkjPYvFFs59AAMgVg6DUBk= -github.com/ldez/structtags v0.6.1/go.mod h1:YDxVSgDy/MON6ariaxLF2X09bh19qL7MtGBN5MrvbdY= -github.com/ldez/tagliatelle v0.7.2 h1:KuOlL70/fu9paxuxbeqlicJnCspCRjH0x8FW+NfgYUk= -github.com/ldez/tagliatelle v0.7.2/go.mod h1:PtGgm163ZplJfZMZ2sf5nhUT170rSuPgBimoyYtdaSI= -github.com/ldez/usetesting v0.5.0 h1:3/QtzZObBKLy1F4F8jLuKJiKBjjVFi1IavpoWbmqLwc= -github.com/ldez/usetesting v0.5.0/go.mod h1:Spnb4Qppf8JTuRgblLrEWb7IE6rDmUpGvxY3iRrzvDQ= +github.com/ldez/exptostd v0.3.1 h1:90yWWoAKMFHeovTK8uzBms9Ppp8Du/xQ20DRO26Ymrw= +github.com/ldez/exptostd v0.3.1/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ= +github.com/ldez/gomoddirectives v0.6.0 h1:Jyf1ZdTeiIB4dd+2n4qw+g4aI9IJ6JyfOZ8BityWvnA= +github.com/ldez/gomoddirectives v0.6.0/go.mod h1:TuwOGYoPAoENDWQpe8DMqEm5nIfjrxZXmxX/CExWyZ4= +github.com/ldez/grignotin v0.7.0 h1:vh0dI32WhHaq6LLPZ38g7WxXuZ1+RzyrJ7iPG9JMa8c= +github.com/ldez/grignotin v0.7.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk= +github.com/ldez/tagliatelle v0.7.1 h1:bTgKjjc2sQcsgPiT902+aadvMjCeMHrY7ly2XKFORIk= +github.com/ldez/tagliatelle v0.7.1/go.mod h1:3zjxUpsNB2aEZScWiZTHrAXOl1x25t3cRmzfK1mlo2I= +github.com/ldez/usetesting v0.4.2 h1:J2WwbrFGk3wx4cZwSMiCQQ00kjGR0+tuuyW0Lqm4lwA= +github.com/ldez/usetesting v0.4.2/go.mod h1:eEs46T3PpQ+9RgN9VjpY6qWdiw2/QmfiDeWmdZdrjIQ= github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= -github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/macabu/inamedparam v0.2.0 h1:VyPYpOc10nkhI2qeNUdh3Zket4fcZjEWe35poddBCpE= -github.com/macabu/inamedparam v0.2.0/go.mod h1:+Pee9/YfGe5LJ62pYXqB89lJ+0k5bsR8Wgz/C0Zlq3U= +github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk= +github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/manuelarte/embeddedstructfieldcheck v0.4.0 h1:3mAIyaGRtjK6EO9E73JlXLtiy7ha80b2ZVGyacxgfww= -github.com/manuelarte/embeddedstructfieldcheck v0.4.0/go.mod h1:z8dFSyXqp+fC6NLDSljRJeNQJJDWnY7RoWFzV3PC6UM= -github.com/manuelarte/funcorder v0.5.0 h1:llMuHXXbg7tD0i/LNw8vGnkDTHFpTnWqKPI85Rknc+8= -github.com/manuelarte/funcorder v0.5.0/go.mod h1:Yt3CiUQthSBMBxjShjdXMexmzpP8YGvGLjrxJNkO2hA= -github.com/maratori/testableexamples v1.0.1 h1:HfOQXs+XgfeRBJ+Wz0XfH+FHnoY9TVqL6Fcevpzy4q8= -github.com/maratori/testableexamples v1.0.1/go.mod h1:XE2F/nQs7B9N08JgyRmdGjYVGqxWwClLPCGSQhXQSrQ= -github.com/maratori/testpackage v1.1.2 h1:ffDSh+AgqluCLMXhM19f/cpvQAKygKAJXFl9aUjmbqs= -github.com/maratori/testpackage v1.1.2/go.mod h1:8F24GdVDFW5Ew43Et02jamrVMNXLUNaOynhDssITGfc= -github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4= -github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs= +github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= +github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= +github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= +github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= +github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE= +github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= @@ -350,13 +307,14 @@ github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/mgechev/revive v1.13.0 h1:yFbEVliCVKRXY8UgwEO7EOYNopvjb1BFbmYqm9hZjBM= -github.com/mgechev/revive v1.13.0/go.mod h1:efJfeBVCX2JUumNQ7dtOLDja+QKj9mYGgEZA7rt5u+0= +github.com/mgechev/revive v1.5.1 h1:hE+QPeq0/wIzJwOphdVyUJ82njdd8Khp4fUIHGZHW3M= +github.com/mgechev/revive v1.5.1/go.mod h1:lC9AhkJIBs5zwx8wkudyHrU+IJkrEKmpCmGMnIJPk4o= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -365,8 +323,6 @@ github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKH github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U= github.com/mreiferson/go-httpclient v0.0.0-20160630210159-31f0106b4474/go.mod h1:OQA4XLvDbMgS8P0CevmM4m9Q3Jq4phKUzcocxuGJ5m8= github.com/mreiferson/go-httpclient v0.0.0-20201222173833-5e475fde3a4d/go.mod h1:OQA4XLvDbMgS8P0CevmM4m9Q3Jq4phKUzcocxuGJ5m8= -github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc= -github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= @@ -375,12 +331,14 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/nunnatsa/ginkgolinter v0.21.2 h1:khzWfm2/Br8ZemX8QM1pl72LwM+rMeW6VUbQ4rzh0Po= -github.com/nunnatsa/ginkgolinter v0.21.2/go.mod h1:GItSI5fw7mCGLPmkvGYrr1kEetZe7B593jcyOpyabsY= -github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns= -github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= -github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A= -github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= +github.com/nunnatsa/ginkgolinter v0.18.4 h1:zmX4KUR+6fk/vhUFt8DOP6KwznekhkmVSzzVJve2vyM= +github.com/nunnatsa/ginkgolinter v0.18.4/go.mod h1:AMEane4QQ6JwFz5GgjI5xLUM9S/CylO+UyM97fN2iBI= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo/v2 v2.20.2 h1:7NVCeyIWROIAheY21RLS+3j2bb52W0W82tkberYytp4= +github.com/onsi/ginkgo/v2 v2.20.2/go.mod h1:K9gyxPIlb+aIvnZ8bd9Ak+YP18w3APlR+5coaZoE2ag= +github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8= +github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= @@ -391,10 +349,12 @@ github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT9 github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= -github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/polyfloyd/go-errorlint v1.7.0 h1:Zp6lzCK4hpBDj8y8a237YK4EPrMXQWvOe3nGoH4pFrU= +github.com/polyfloyd/go-errorlint v1.7.0/go.mod h1:dGWKu85mGHnegQ2SWpEybFityCg3j7ZbwsVUxAOk9gY= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= @@ -405,10 +365,10 @@ github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/quasilyte/go-ruleguard v0.4.5 h1:AGY0tiOT5hJX9BTdx/xBdoCubQUAE2grkqY2lSwvZcA= -github.com/quasilyte/go-ruleguard v0.4.5/go.mod h1:Vl05zJ538vcEEwu16V/Hdu7IYZWyKSwIy4c88Ro1kRE= -github.com/quasilyte/go-ruleguard/dsl v0.3.23 h1:lxjt5B6ZCiBeeNO8/oQsegE6fLeCzuMRoVWSkXC4uvY= -github.com/quasilyte/go-ruleguard/dsl v0.3.23/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= +github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo= +github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI= +github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE= +github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU= @@ -421,27 +381,27 @@ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryancurrah/gomodguard v1.4.1 h1:eWC8eUMNZ/wM/PWuZBv7JxxqT5fiIKSIyTvjb7Elr+g= -github.com/ryancurrah/gomodguard v1.4.1/go.mod h1:qnMJwV1hX9m+YJseXEBhd2s90+1Xn6x9dLz11ualI1I= +github.com/ryancurrah/gomodguard v1.3.5 h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV3oJmPU= +github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkqr+wKjSxTdsNJE= github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs= github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0= github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4= -github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ= -github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= -github.com/sashamelentyev/usestdlibvars v1.29.0 h1:8J0MoRrw4/NAXtjQqTHrbW9NN+3iMf7Knkq057v4XOQ= -github.com/sashamelentyev/usestdlibvars v1.29.0/go.mod h1:8PpnjHMk5VdeWlVb4wCdrB8PNbLqZ3wBZTZWkrpZZL8= -github.com/securego/gosec/v2 v2.22.11 h1:tW+weM/hCM/GX3iaCV91d5I6hqaRT2TPsFM1+USPXwg= -github.com/securego/gosec/v2 v2.22.11/go.mod h1:KE4MW/eH0GLWztkbt4/7XpyH0zJBBnu7sYB4l6Wn7Mw= -github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= -github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= +github.com/sashamelentyev/usestdlibvars v1.28.0 h1:jZnudE2zKCtYlGzLVreNp5pmCdOxXUzwsMDBkR21cyQ= +github.com/sashamelentyev/usestdlibvars v1.28.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= +github.com/securego/gosec/v2 v2.21.4 h1:Le8MSj0PDmOnHJgUATjD96PaXRvCpKC+DGJvwyy0Mlk= +github.com/securego/gosec/v2 v2.21.4/go.mod h1:Jtb/MwRQfRxCXyCm1rfM1BEiiiTfUOdyzzAhlr6lUTA= +github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= +github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -451,53 +411,62 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= -github.com/sonatard/noctx v0.4.0 h1:7MC/5Gg4SQ4lhLYR6mvOP6mQVSxCrdyiExo7atBs27o= -github.com/sonatard/noctx v0.4.0/go.mod h1:64XdbzFb18XL4LporKXp8poqZtPKbCrqQ402CV+kJas= +github.com/sivchari/tenv v1.12.1 h1:+E0QzjktdnExv/wwsnnyk4oqZBUfuh89YMQT1cyuvSY= +github.com/sivchari/tenv v1.12.1/go.mod h1:1LjSOUCc25snIr5n3DtGGrENhX3LuWefcplwVGC24mw= +github.com/sonatard/noctx v0.1.0 h1:JjqOc2WN16ISWAjAk8M5ej0RfExEXtkEyExl2hLW+OM= +github.com/sonatard/noctx v0.1.0/go.mod h1:0RvBxqY8D4j9cTTTWE8ylt2vqj2EPI8fHmrxHdsaZ2c= github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= -github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= -github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= -github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= -github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= -github.com/stbenjam/no-sprintf-host-port v0.3.1 h1:AyX7+dxI4IdLBPtDbsGAyqiTSLpCP9hWRrXQDU4Cm/g= -github.com/stbenjam/no-sprintf-host-port v0.3.1/go.mod h1:ODbZesTCHMVKthBHskvUUexdcNHAQRXk9NpSsL8p/HQ= +github.com/stbenjam/no-sprintf-host-port v0.2.0 h1:i8pxvGrt1+4G0czLr/WnmyH7zbZ8Bg8etvARQ1rpyl4= +github.com/stbenjam/no-sprintf-host-port v0.2.0/go.mod h1:eL0bQ9PasS0hsyTyfTjjG+E80QIyPnBVQbYZyv20Jfk= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/tdakkota/asciicheck v0.3.0 h1:LqDGgZdholxZMaJgpM6b0U9CFIjDCbFdUF00bDnBKOQ= +github.com/tdakkota/asciicheck v0.3.0/go.mod h1:KoJKXuX/Z/lt6XzLo8WMBfQGzak0SrAKZlvRr4tg8Ac= github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= -github.com/tetafro/godot v1.5.4 h1:u1ww+gqpRLiIA16yF2PV1CV1n/X3zhyezbNXC3E14Sg= -github.com/tetafro/godot v1.5.4/go.mod h1:eOkMrVQurDui411nBY2FA05EYH01r14LuWY/NrVDVcU= -github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 h1:9LPGD+jzxMlnk5r6+hJnar67cgpDIz/iyD+rfl5r2Vk= -github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= -github.com/timonwong/loggercheck v0.11.0 h1:jdaMpYBl+Uq9mWPXv1r8jc5fC3gyXx4/WGwTnnNKn4M= -github.com/timonwong/loggercheck v0.11.0/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= -github.com/tomarrell/wrapcheck/v2 v2.12.0 h1:H/qQ1aNWz/eeIhxKAFvkfIA+N7YDvq6TWVFL27Of9is= -github.com/tomarrell/wrapcheck/v2 v2.12.0/go.mod h1:AQhQuZd0p7b6rfW+vUwHm5OMCGgp63moQ9Qr/0BpIWo= +github.com/tetafro/godot v1.4.20 h1:z/p8Ek55UdNvzt4TFn2zx2KscpW4rWqcnUrdmvWJj7E= +github.com/tetafro/godot v1.4.20/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= +github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 h1:y4mJRFlM6fUyPhoXuFg/Yu02fg/nIPFMOY8tOqppoFg= +github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= +github.com/timonwong/loggercheck v0.10.1 h1:uVZYClxQFpw55eh+PIoqM7uAOHMrhVcDoWDery9R8Lg= +github.com/timonwong/loggercheck v0.10.1/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= +github.com/tomarrell/wrapcheck/v2 v2.10.0 h1:SzRCryzy4IrAH7bVGG4cK40tNUhmVmMDuJujy4XwYDg= +github.com/tomarrell/wrapcheck/v2 v2.10.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= github.com/trustmaster/go-aspell v0.0.0-20200701131845-c2b1f55bec8f h1:92ZQJRegaqnKjz9HY9an696Sw5EmAqRv0eie/U2IE6k= @@ -508,17 +477,15 @@ github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSW github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= github.com/uudashr/gocognit v1.2.0 h1:3BU9aMr1xbhPlvJLSydKwdLN3tEUUrzPSSM8S4hDYRA= github.com/uudashr/gocognit v1.2.0/go.mod h1:k/DdKPI6XBZO1q7HgoV2juESI2/Ofj9AcHPZhBBdrTU= -github.com/uudashr/iface v1.4.1 h1:J16Xl1wyNX9ofhpHmQ9h9gk5rnv2A6lX/2+APLTo0zU= -github.com/uudashr/iface v1.4.1/go.mod h1:pbeBPlbuU2qkNDn0mmfrxP2X+wjPMIQAy+r1MBXSXtg= +github.com/uudashr/iface v1.3.0 h1:zwPch0fs9tdh9BmL5kcgSpvnObV+yHjO4JjVBl8IA10= +github.com/uudashr/iface v1.3.0/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= github.com/weppos/publicsuffix-go v0.12.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= github.com/weppos/publicsuffix-go v0.13.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= github.com/weppos/publicsuffix-go v0.30.0 h1:QHPZ2GRu/YE7cvejH9iyavPOkVCB4dNxp2ZvtT+vQLY= github.com/weppos/publicsuffix-go v0.30.0/go.mod h1:kBi8zwYnR0zrbm8RcuN1o9Fzgpnnn+btVN8uWPMyXAY= github.com/weppos/publicsuffix-go/publicsuffix/generator v0.0.0-20220927085643-dc0d00c92642/go.mod h1:GHfoeIdZLdZmLjMlzBftbTDntahTttUMWjxZwQJhULE= -github.com/xen0n/gosmopolitan v1.3.0 h1:zAZI1zefvo7gcpbCOrPSHJZJYA9ZgLfJqtKzZ5pHqQM= -github.com/xen0n/gosmopolitan v1.3.0/go.mod h1:rckfr5T6o4lBtM1ga7mLGKZmLxswUoH1zxHgNXOsEt4= -github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= -github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= +github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= +github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg= github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= github.com/yeya24/promlinter v0.3.0 h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs= @@ -547,14 +514,10 @@ gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo= gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8= go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= -go-simpler.org/musttag v0.14.0 h1:XGySZATqQYSEV3/YTy+iX+aofbZZllJaqwFWs+RTtSo= -go-simpler.org/musttag v0.14.0/go.mod h1:uP8EymctQjJ4Z1kUnjX0u2l60WfUdQxCwSNKzE1JEOE= -go-simpler.org/sloglint v0.11.1 h1:xRbPepLT/MHPTCA6TS/wNfZrDzkGvCCqUv4Bdwc3H7s= -go-simpler.org/sloglint v0.11.1/go.mod h1:2PowwiCOK8mjiF+0KGifVOT8ZsCNiFzvfyJeJOIt8MQ= -go.augendre.info/arangolint v0.3.1 h1:n2E6p8f+zfXSFLa2e2WqFPp4bfvcuRdd50y6cT65pSo= -go.augendre.info/arangolint v0.3.1/go.mod h1:6ZKzEzIZuBQwoSvlKT+qpUfIbBfFCE5gbAoTg0/117g= -go.augendre.info/fatcontext v0.9.0 h1:Gt5jGD4Zcj8CDMVzjOJITlSb9cEch54hjRRlN3qDojE= -go.augendre.info/fatcontext v0.9.0/go.mod h1:L94brOAT1OOUNue6ph/2HnwxoNlds9aXDF2FcUntbNw= +go-simpler.org/musttag v0.13.0 h1:Q/YAW0AHvaoaIbsPj3bvEI5/QFP7w696IMUpnKXQfCE= +go-simpler.org/musttag v0.13.0/go.mod h1:FTzIGeK6OkKlUDVpj0iQUXZLUO1Js9+mvykDQy9C5yM= +go-simpler.org/sloglint v0.7.2 h1:Wc9Em/Zeuu7JYpl+oKoYOsQSy2X560aVueCW/m6IijY= +go-simpler.org/sloglint v0.7.2/go.mod h1:US+9C80ppl7VsThQclkM7BkCHQAzuz8kHLsW3ppuluo= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 h1:QQiUXlqz+d96jyNG71NE+IGTgOK6Xlhdx+PzvfbLHlQ= @@ -569,8 +532,6 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= -go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -585,14 +546,14 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546 h1:HDjDiATsGqvuqvkDvgJjD1IgPrVekcSXVVE21JwvzGE= -golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546/go.mod h1:4Mzdyp/6jzw9auFDJ3OMF5qksa7UvPnzKqTVGcb04ms= +golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f h1:WTyX8eCCyfdqiPYkRGm0MqElSfYFH3yR1+rl/mct9sA= +golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -600,14 +561,16 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= -golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -621,6 +584,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= @@ -630,8 +595,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -642,8 +607,8 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -664,6 +629,7 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -674,15 +640,15 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= -golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 h1:bTLqdHv7xrGlFbvf5/TXNxy/iUwwdkjhqQTJDjW7aj0= -golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4/go.mod h1:g5NllXBEermZrmR51cJDQxmJUHUOfRAaNyWBM+R+548= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= @@ -691,8 +657,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= -golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM= +golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -700,49 +666,55 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= -golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= -golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= -golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= -golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= -golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= -golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8= +golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= +golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= @@ -760,11 +732,11 @@ gotest.tools/gotestsum v1.12.0 h1:CmwtaGDkHxrZm4Ib0Vob89MTfpc3GrEFMJKovliPwGk= gotest.tools/gotestsum v1.12.0/go.mod h1:fAvqkSptospfSbQw26CTYzNwnsE/ztqLeyhP0h67ARY= gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= -honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= -honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= +honnef.co/go/tools v0.5.1 h1:4bH5o3b5ZULQ4UrBmP+63W9r7qIkqJClEA9ko5YKx+I= +honnef.co/go/tools v0.5.1/go.mod h1:e9irvo83WDG9/irijV44wr3tbhcFeRnfpVlRqVwpzMs= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -mvdan.cc/gofumpt v0.9.2 h1:zsEMWL8SVKGHNztrx6uZrXdp7AX8r421Vvp23sz7ik4= -mvdan.cc/gofumpt v0.9.2/go.mod h1:iB7Hn+ai8lPvofHd9ZFGVg2GOr8sBUw1QUWjNbmIL/s= -mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15 h1:ssMzja7PDPJV8FStj7hq9IKiuiKhgz9ErWw+m68e7DI= -mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15/go.mod h1:4M5MMXl2kW6fivUT6yRGpLLPNfuGtU2Z0cPvFquGDYU= +mvdan.cc/gofumpt v0.7.0 h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU= +mvdan.cc/gofumpt v0.7.0/go.mod h1:txVFJy/Sc/mvaycET54pV8SW8gWxTlUuGHVEcncmNUo= +mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U= +mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f/go.mod h1:RSLa7mKKCNeTTMHBw5Hsy2rfJmd6O2ivt9Dw9ZqCQpQ= From 30557c1fa2cccbfa6dabb4427e0ddf0d8b6d68d6 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 10 Feb 2025 20:14:31 +0000 Subject: [PATCH 0004/1068] dependency: bump gotest.tools/v3 from 3.5.1 to 3.5.2 Reference: - https://github.com/etcd-io/etcd/pull/19373 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 27 ++++---- api/go.sum | 77 +++++++++++----------- client/pkg/go.mod | 10 +-- client/pkg/go.sum | 12 ++-- client/v3/go.mod | 28 ++++---- client/v3/go.sum | 74 +++++++++++---------- etcdctl/go.mod | 35 +++++----- etcdctl/go.sum | 87 ++++++++++++------------- etcdutl/go.mod | 58 +++++++++-------- etcdutl/go.sum | 103 +++++++++++++++-------------- go.mod | 64 +++++++++--------- go.sum | 103 +++++++++++++++-------------- pkg/go.mod | 26 ++++---- pkg/go.sum | 81 +++++++++++------------ server/go.mod | 58 +++++++++-------- server/go.sum | 103 +++++++++++++++-------------- tests/go.mod | 68 ++++++++++---------- tests/go.sum | 114 +++++++++++++++------------------ tools/mod/go.mod | 4 +- tools/mod/go.sum | 7 +- tools/testgrid-analysis/go.mod | 22 ++++--- tools/testgrid-analysis/go.sum | 73 ++++++++++----------- 22 files changed, 601 insertions(+), 633 deletions(-) diff --git a/api/go.mod b/api/go.mod index c6d6d114cc8a..3f562a3c9565 100644 --- a/api/go.mod +++ b/api/go.mod @@ -1,29 +1,30 @@ module go.etcd.io/etcd/api/v3 -go 1.25.0 +go 1.23 -toolchain go1.25.8 +toolchain go1.23.6 require ( github.com/coreos/go-semver v0.3.1 github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 - github.com/stretchr/testify v1.11.1 - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 - google.golang.org/grpc v1.79.3 - google.golang.org/protobuf v1.36.10 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 + github.com/stretchr/testify v1.10.0 + google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f + google.golang.org/grpc v1.70.0 + google.golang.org/protobuf v1.36.4 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/kr/text v0.2.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/rogpeppe/go-internal v1.14.1 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.35.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect + github.com/rogpeppe/go-internal v1.13.1 // indirect + go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.34.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index bc2f296c6ef9..cdcd0025cd16 100644 --- a/api/go.sum +++ b/api/go.sum @@ -1,24 +1,21 @@ -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -27,24 +24,24 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -54,20 +51,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -76,16 +73,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index e44fd2c27936..0976583d1f78 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -1,21 +1,21 @@ module go.etcd.io/etcd/client/pkg/v3 -go 1.25.0 +go 1.23 -toolchain go1.25.8 +toolchain go1.23.6 require ( github.com/coreos/go-systemd/v22 v22.5.0 - github.com/stretchr/testify v1.11.1 + github.com/stretchr/testify v1.10.0 go.uber.org/zap v1.27.0 - golang.org/x/sys v0.41.0 + golang.org/x/sys v0.30.0 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/rogpeppe/go-internal v1.14.1 // indirect + github.com/rogpeppe/go-internal v1.13.1 // indirect go.uber.org/multierr v1.11.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/client/pkg/go.sum b/client/pkg/go.sum index 6357dd96ea32..9afaa25cf13b 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -15,18 +15,18 @@ github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsK github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 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= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index 62894c140a13..004663ae1671 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -1,19 +1,19 @@ module go.etcd.io/etcd/client/v3 -go 1.25.0 +go 1.23 -toolchain go1.25.8 +toolchain go1.23.6 require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 github.com/prometheus/client_golang v1.20.5 - github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/api/v3 v3.6.10 - go.etcd.io/etcd/client/pkg/v3 v3.6.10 + github.com/stretchr/testify v1.10.0 + go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.79.3 + google.golang.org/grpc v1.70.0 sigs.k8s.io/yaml v1.4.0 ) @@ -25,20 +25,22 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 // indirect github.com/klauspost/compress v1.17.9 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.62.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect + go.opentelemetry.io/otel/metric v1.34.0 // indirect + go.opentelemetry.io/otel/trace v1.34.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.35.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/protobuf v1.36.10 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/protobuf v1.36.4 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 536fe351bef7..0f18b1ad5bea 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -10,8 +10,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -20,16 +20,16 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= @@ -52,24 +52,24 @@ github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= 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= @@ -85,20 +85,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -107,16 +107,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index f32d73bb7d58..ed51d859ec62 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -1,24 +1,24 @@ module go.etcd.io/etcd/etcdctl/v3 -go 1.25.0 +go 1.23 -toolchain go1.25.8 +toolchain go1.23.6 require ( github.com/bgentry/speakeasy v0.2.0 github.com/cheggaaa/pb/v3 v3.1.6 github.com/dustin/go-humanize v1.0.1 github.com/olekukonko/tablewriter v0.0.5 - github.com/spf13/cobra v1.10.2 - github.com/spf13/pflag v1.0.10 - github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/api/v3 v3.6.10 - go.etcd.io/etcd/client/pkg/v3 v3.6.10 - go.etcd.io/etcd/client/v3 v3.6.10 - go.etcd.io/etcd/pkg/v3 v3.6.10 + github.com/spf13/cobra v1.8.1 + github.com/spf13/pflag v1.0.6 + github.com/stretchr/testify v1.10.0 + go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.9.0 - google.golang.org/grpc v1.79.3 + google.golang.org/grpc v1.70.0 ) require ( @@ -29,20 +29,21 @@ require ( github.com/fatih/color v1.18.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.35.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/protobuf v1.36.10 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/protobuf v1.36.4 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index a6b2a7600d1c..7ef4a59dc6be 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -12,15 +12,15 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -28,16 +28,16 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -72,37 +72,36 @@ github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoG 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= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= -github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= -github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= -github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= 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= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -112,8 +111,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -121,12 +120,12 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -137,16 +136,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index dc6e9e4a99e6..044336c3dd50 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -1,12 +1,13 @@ module go.etcd.io/etcd/etcdutl/v3 -go 1.25.0 +go 1.23 -toolchain go1.25.8 +toolchain go1.23.6 replace ( go.etcd.io/etcd/api/v3 => ../api go.etcd.io/etcd/client/pkg/v3 => ../client/pkg + go.etcd.io/etcd/client/v2 => ./../client/internal/v2 go.etcd.io/etcd/client/v3 => ../client/v3 go.etcd.io/etcd/pkg/v3 => ../pkg go.etcd.io/etcd/server/v3 => ../server @@ -24,14 +25,14 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 github.com/olekukonko/tablewriter v0.0.5 - github.com/spf13/cobra v1.10.2 - github.com/stretchr/testify v1.11.1 - go.etcd.io/bbolt v1.4.3 - go.etcd.io/etcd/api/v3 v3.6.10 - go.etcd.io/etcd/client/pkg/v3 v3.6.10 - go.etcd.io/etcd/client/v3 v3.6.10 - go.etcd.io/etcd/pkg/v3 v3.6.10 - go.etcd.io/etcd/server/v3 v3.6.10 + github.com/spf13/cobra v1.8.1 + github.com/stretchr/testify v1.10.0 + go.etcd.io/bbolt v1.4.0 + go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 ) @@ -42,18 +43,18 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect + github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.1.3 // indirect - github.com/google/go-cmp v0.7.0 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.4.2 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/klauspost/compress v1.17.9 // indirect @@ -67,28 +68,29 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect - github.com/spf13/pflag v1.0.10 // indirect + github.com/spf13/pflag v1.0.6 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect - go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect - go.opentelemetry.io/otel v1.40.0 // indirect + go.opentelemetry.io/otel v1.34.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect - go.opentelemetry.io/otel/metric v1.40.0 // indirect - go.opentelemetry.io/otel/sdk v1.40.0 // indirect - go.opentelemetry.io/otel/trace v1.40.0 // indirect + go.opentelemetry.io/otel/metric v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.34.0 // indirect + go.opentelemetry.io/otel/trace v1.34.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.48.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.35.0 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.9.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/grpc v1.79.3 // indirect - google.golang.org/protobuf v1.36.10 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/grpc v1.70.0 // indirect + google.golang.org/protobuf v1.36.4 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 41ea9e662948..5d198d76810f 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -10,29 +10,29 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= +github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= @@ -41,8 +41,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -77,50 +77,50 @@ github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoG 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= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= -github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= -github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= -github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= -go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= +go.etcd.io/bbolt v1.4.0 h1:TU77id3TnN/zKr7CO/uk+fBCwF2jGcMuw2B/FMAzYIk= +go.etcd.io/bbolt v1.4.0/go.mod h1:AsD+OCi/qPN1giOX1aiLAha3o1U8rAz65bvN4j0sRuk= 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/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= -go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -129,12 +129,11 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -142,23 +141,23 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -169,16 +168,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/go.mod b/go.mod index ea4b44413245..6c1517819109 100644 --- a/go.mod +++ b/go.mod @@ -1,12 +1,13 @@ module go.etcd.io/etcd/v3 -go 1.25.0 +go 1.23 -toolchain go1.25.8 +toolchain go1.23.6 replace ( go.etcd.io/etcd/api/v3 => ./api go.etcd.io/etcd/client/pkg/v3 => ./client/pkg + go.etcd.io/etcd/client/v2 => ./client/internal/v2 go.etcd.io/etcd/client/v3 => ./client/v3 go.etcd.io/etcd/etcdctl/v3 => ./etcdctl go.etcd.io/etcd/etcdutl/v3 => ./etcdutl @@ -20,22 +21,23 @@ require ( github.com/cheggaaa/pb/v3 v3.1.6 github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/spf13/cobra v1.10.2 - github.com/stretchr/testify v1.11.1 - go.etcd.io/bbolt v1.4.3 - go.etcd.io/etcd/api/v3 v3.6.10 - go.etcd.io/etcd/client/pkg/v3 v3.6.10 - go.etcd.io/etcd/client/v3 v3.6.10 - go.etcd.io/etcd/etcdctl/v3 v3.6.10 - go.etcd.io/etcd/etcdutl/v3 v3.6.10 - go.etcd.io/etcd/pkg/v3 v3.6.10 - go.etcd.io/etcd/server/v3 v3.6.10 - go.etcd.io/etcd/tests/v3 v3.6.10 + github.com/spf13/cobra v1.8.1 + github.com/stretchr/testify v1.10.0 + go.etcd.io/bbolt v1.4.0 + go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 + go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/etcdctl/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/etcdutl/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/tests/v3 v3.0.0-00010101000000-000000000000 go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.9.0 - google.golang.org/grpc v1.79.3 - google.golang.org/protobuf v1.36.10 + google.golang.org/grpc v1.70.0 + google.golang.org/protobuf v1.36.4 ) require ( @@ -46,20 +48,20 @@ require ( github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.18.0 // indirect - github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect + github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.1.3 // indirect - github.com/google/go-cmp v0.7.0 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.4.2 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/klauspost/compress v1.17.9 // indirect @@ -76,26 +78,26 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect - github.com/spf13/pflag v1.0.10 // indirect + github.com/spf13/pflag v1.0.6 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/gofail v0.2.0 // indirect - go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect - go.opentelemetry.io/otel v1.40.0 // indirect + go.opentelemetry.io/otel v1.34.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect - go.opentelemetry.io/otel/metric v1.40.0 // indirect - go.opentelemetry.io/otel/sdk v1.40.0 // indirect - go.opentelemetry.io/otel/trace v1.40.0 // indirect + go.opentelemetry.io/otel/metric v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.34.0 // indirect + go.opentelemetry.io/otel/trace v1.34.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.48.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.35.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect diff --git a/go.sum b/go.sum index 4470dc6e552a..1984699f03cb 100644 --- a/go.sum +++ b/go.sum @@ -21,7 +21,7 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -36,16 +36,16 @@ github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= +github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -59,8 +59,8 @@ github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= @@ -71,8 +71,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -116,56 +116,56 @@ github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoG 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= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= -github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= -github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= -github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= -go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= +go.etcd.io/bbolt v1.4.0 h1:TU77id3TnN/zKr7CO/uk+fBCwF2jGcMuw2B/FMAzYIk= +go.etcd.io/bbolt v1.4.0/go.mod h1:AsD+OCi/qPN1giOX1aiLAha3o1U8rAz65bvN4j0sRuk= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= 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/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= -go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -177,12 +177,11 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -198,16 +197,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -215,12 +214,12 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -235,26 +234,24 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/go.mod b/pkg/go.mod index 28440c9a69e8..bb455dd7452c 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -1,18 +1,18 @@ module go.etcd.io/etcd/pkg/v3 -go 1.25.0 +go 1.23 -toolchain go1.25.8 +toolchain go1.23.6 require ( github.com/creack/pty v1.1.18 github.com/dustin/go-humanize v1.0.1 - github.com/spf13/cobra v1.10.2 - github.com/spf13/pflag v1.0.10 - github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/client/pkg/v3 v3.6.10 + github.com/spf13/cobra v1.8.1 + github.com/spf13/pflag v1.0.6 + github.com/stretchr/testify v1.10.0 + go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.79.3 + google.golang.org/grpc v1.70.0 ) require ( @@ -20,12 +20,14 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.34.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.35.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/protobuf v1.36.10 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/protobuf v1.36.4 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index 9c74a87ffd08..a00ae3a1fe41 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -1,23 +1,21 @@ -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= @@ -28,49 +26,46 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= -github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= -github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= -github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= 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= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/server/go.mod b/server/go.mod index d98515ef387f..de7b0bbd3029 100644 --- a/server/go.mod +++ b/server/go.mod @@ -1,49 +1,49 @@ module go.etcd.io/etcd/server/v3 -go 1.25.0 +go 1.23 -toolchain go1.25.8 +toolchain go1.23.6 require ( github.com/coreos/go-semver v0.3.1 github.com/coreos/go-systemd/v22 v22.5.0 github.com/dustin/go-humanize v1.0.1 github.com/gogo/protobuf v1.3.2 - github.com/golang-jwt/jwt/v5 v5.2.2 + github.com/golang-jwt/jwt/v5 v5.2.1 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da github.com/golang/protobuf v1.5.4 github.com/google/btree v1.1.3 - github.com/google/go-cmp v0.7.0 + github.com/google/go-cmp v0.6.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.20.5 github.com/prometheus/client_model v0.6.1 github.com/soheilhy/cmux v0.1.5 - github.com/spf13/cobra v1.10.2 - github.com/stretchr/testify v1.11.1 + github.com/spf13/cobra v1.8.1 + github.com/stretchr/testify v1.10.0 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 - go.etcd.io/bbolt v1.4.3 - go.etcd.io/etcd/api/v3 v3.6.10 - go.etcd.io/etcd/client/pkg/v3 v3.6.10 - go.etcd.io/etcd/client/v3 v3.6.10 - go.etcd.io/etcd/pkg/v3 v3.6.10 + go.etcd.io/bbolt v1.4.0 + go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 + go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 - go.opentelemetry.io/otel v1.40.0 + go.opentelemetry.io/otel v1.34.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 - go.opentelemetry.io/otel/sdk v1.40.0 + go.opentelemetry.io/otel/sdk v1.34.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.48.0 - golang.org/x/net v0.51.0 + golang.org/x/crypto v0.32.0 + golang.org/x/net v0.34.0 golang.org/x/time v0.9.0 - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 - google.golang.org/grpc v1.79.3 - google.golang.org/protobuf v1.36.10 + google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f + google.golang.org/grpc v1.70.0 + google.golang.org/protobuf v1.36.4 gopkg.in/natefinch/lumberjack.v2 v2.2.1 - sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 sigs.k8s.io/yaml v1.4.0 ) @@ -52,7 +52,7 @@ require ( github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.4.2 // indirect @@ -65,22 +65,24 @@ require ( github.com/prometheus/common v0.62.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/pflag v1.0.10 // indirect - go.opentelemetry.io/auto/sdk v1.2.1 // indirect + github.com/spf13/pflag v1.0.6 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect - go.opentelemetry.io/otel/metric v1.40.0 // indirect - go.opentelemetry.io/otel/trace v1.40.0 // indirect + go.opentelemetry.io/otel/metric v1.34.0 // indirect + go.opentelemetry.io/otel/trace v1.34.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.35.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect ) replace ( go.etcd.io/etcd/api/v3 => ../api go.etcd.io/etcd/client/pkg/v3 => ../client/pkg + go.etcd.io/etcd/client/v2 => ./../client/internal/v2 go.etcd.io/etcd/client/v3 => ../client/v3 go.etcd.io/etcd/pkg/v3 => ../pkg ) diff --git a/server/go.sum b/server/go.sum index bedd9f43de4c..2dfce316c97a 100644 --- a/server/go.sum +++ b/server/go.sum @@ -15,7 +15,7 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -28,16 +28,16 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= +github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -51,8 +51,8 @@ github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= @@ -63,8 +63,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -96,54 +96,54 @@ github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= -github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= -github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= -github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= -go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= +go.etcd.io/bbolt v1.4.0 h1:TU77id3TnN/zKr7CO/uk+fBCwF2jGcMuw2B/FMAzYIk= +go.etcd.io/bbolt v1.4.0/go.mod h1:AsD+OCi/qPN1giOX1aiLAha3o1U8rAz65bvN4j0sRuk= 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/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= -go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -155,12 +155,11 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -176,28 +175,28 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -212,26 +211,24 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tests/go.mod b/tests/go.mod index 8a8eb162437c..40c1d20ea7f7 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -1,12 +1,13 @@ module go.etcd.io/etcd/tests/v3 -go 1.25.0 +go 1.23 -toolchain go1.25.8 +toolchain go1.23.6 replace ( go.etcd.io/etcd/api/v3 => ../api go.etcd.io/etcd/client/pkg/v3 => ../client/pkg + go.etcd.io/etcd/client/v2 => ./../client/internal/v2 go.etcd.io/etcd/client/v3 => ../client/v3 go.etcd.io/etcd/etcdctl/v3 => ../etcdctl go.etcd.io/etcd/etcdutl/v3 => ../etcdutl @@ -18,37 +19,36 @@ require ( github.com/anishathalye/porcupine v0.1.4 github.com/coreos/go-semver v0.3.1 github.com/golang/protobuf v1.5.4 - github.com/google/go-cmp v0.7.0 + github.com/google/go-cmp v0.6.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 github.com/prometheus/client_golang v1.20.5 github.com/prometheus/client_model v0.6.1 github.com/prometheus/common v0.62.0 github.com/soheilhy/cmux v0.1.5 - github.com/stretchr/testify v1.11.1 - go.etcd.io/bbolt v1.4.3 - go.etcd.io/etcd/api/v3 v3.6.10 - go.etcd.io/etcd/client/pkg/v3 v3.6.10 - go.etcd.io/etcd/client/v2 v2.305.20 - go.etcd.io/etcd/client/v3 v3.6.10 - go.etcd.io/etcd/etcdctl/v3 v3.6.10 - go.etcd.io/etcd/etcdutl/v3 v3.6.10 - go.etcd.io/etcd/pkg/v3 v3.6.10 - go.etcd.io/etcd/server/v3 v3.6.10 + github.com/stretchr/testify v1.10.0 + go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 + go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/etcdctl/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/etcdutl/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 - go.opentelemetry.io/otel v1.40.0 - go.opentelemetry.io/otel/sdk v1.40.0 - go.opentelemetry.io/otel/trace v1.40.0 + go.opentelemetry.io/otel v1.34.0 + go.opentelemetry.io/otel/sdk v1.34.0 + go.opentelemetry.io/otel/trace v1.34.0 go.opentelemetry.io/proto/otlp v1.5.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.48.0 - golang.org/x/sync v0.20.0 + golang.org/x/crypto v0.32.0 + golang.org/x/sync v0.10.0 golang.org/x/time v0.9.0 - google.golang.org/grpc v1.79.3 - google.golang.org/protobuf v1.36.10 + google.golang.org/grpc v1.70.0 + google.golang.org/protobuf v1.36.4 ) require ( @@ -63,10 +63,10 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/fatih/color v1.18.0 // indirect - github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect + github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/btree v1.1.3 // indirect github.com/google/uuid v1.6.0 // indirect @@ -74,33 +74,31 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.17.9 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/cobra v1.10.2 // indirect - github.com/spf13/pflag v1.0.10 // indirect + github.com/spf13/cobra v1.8.1 // indirect + github.com/spf13/pflag v1.0.6 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect - go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.etcd.io/bbolt v1.4.0 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect - go.opentelemetry.io/otel/metric v1.40.0 // indirect + go.opentelemetry.io/otel/metric v1.34.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.35.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect diff --git a/tests/go.sum b/tests/go.sum index f52923767567..db18ba8b34cf 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -23,7 +23,7 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -40,16 +40,16 @@ github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= +github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -63,9 +63,8 @@ github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= @@ -76,14 +75,12 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= @@ -103,11 +100,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= @@ -128,59 +120,56 @@ github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoG 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= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= -github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= -github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= -github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= -go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= -go.etcd.io/etcd/client/v2 v2.305.20 h1:3nOyi6p2NQsgPIIXXEhxYEvyW62h94Q0DsMiKHeApvE= -go.etcd.io/etcd/client/v2 v2.305.20/go.mod h1:elQUPzRTJKHQn4nGYlempVfkKEd+zxIEHDoW0OaudYs= +go.etcd.io/bbolt v1.4.0 h1:TU77id3TnN/zKr7CO/uk+fBCwF2jGcMuw2B/FMAzYIk= +go.etcd.io/bbolt v1.4.0/go.mod h1:AsD+OCi/qPN1giOX1aiLAha3o1U8rAz65bvN4j0sRuk= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= 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/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= -go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -192,12 +181,11 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -213,16 +201,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -230,12 +218,12 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -250,26 +238,24 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index e4e860390304..2849afc0772d 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 gotest.tools/gotestsum v1.12.0 - gotest.tools/v3 v3.5.1 + gotest.tools/v3 v3.5.2 honnef.co/go/tools v0.5.1 ) @@ -220,7 +220,7 @@ require ( golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.29.0 // indirect + golang.org/x/sys v0.30.0 // indirect golang.org/x/term v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.29.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index bc3c2dd93340..176996a8f582 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -640,8 +640,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -730,8 +730,9 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/gotestsum v1.12.0 h1:CmwtaGDkHxrZm4Ib0Vob89MTfpc3GrEFMJKovliPwGk= gotest.tools/gotestsum v1.12.0/go.mod h1:fAvqkSptospfSbQw26CTYzNwnsE/ztqLeyhP0h67ARY= -gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.5.1 h1:4bH5o3b5ZULQ4UrBmP+63W9r7qIkqJClEA9ko5YKx+I= honnef.co/go/tools v0.5.1/go.mod h1:e9irvo83WDG9/irijV44wr3tbhcFeRnfpVlRqVwpzMs= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index c3865e5042c6..63ec86272250 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -1,23 +1,25 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 -go 1.25.0 +go 1.23 -toolchain go1.25.8 +toolchain go1.23.6 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 github.com/google/go-github/v60 v60.0.0 - github.com/spf13/cobra v1.10.2 - google.golang.org/protobuf v1.36.10 + github.com/spf13/cobra v1.8.1 + google.golang.org/protobuf v1.36.4 ) require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/spf13/pflag v1.0.10 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.35.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/grpc v1.79.3 // indirect + github.com/spf13/pflag v1.0.6 // indirect + go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.34.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/grpc v1.70.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 58eac912b9e0..5b4dfd469832 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -788,12 +788,9 @@ github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -812,7 +809,7 @@ github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -866,8 +863,8 @@ github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTg github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= @@ -938,8 +935,8 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v60 v60.0.0 h1:oLG98PsLauFvvu4D/YPxq374jhSxFYdzQGNCyONLfn8= github.com/google/go-github/v60 v60.0.0/go.mod h1:ByhX2dP9XT9o/ll2yXAu2VD8l5eNVg8hD4Cr0S/LmQk= github.com/google/go-pkcs11 v0.2.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= @@ -1143,12 +1140,11 @@ github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTd github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= -github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= -github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -1182,22 +1178,21 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1341,8 +1336,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1489,8 +1484,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1521,8 +1516,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1611,8 +1606,6 @@ gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJ gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= @@ -1848,8 +1841,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -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-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1895,8 +1888,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1916,8 +1909,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From c4748a1dd13596fcd452a9d8a9fe131fa6d57a73 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 10 Feb 2025 21:25:20 +0100 Subject: [PATCH 0005/1068] dependency: bump golang.org/x/time from 0.9.0 to 0.10.0 Reference: - https://github.com/etcd-io/etcd/pull/19377 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 +-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 +-- etcdctl/go.mod | 4 +-- etcdctl/go.sum | 8 ++--- etcdutl/go.mod | 6 ++-- etcdutl/go.sum | 16 +++++----- go.mod | 6 ++-- go.sum | 16 +++++----- pkg/go.mod | 2 +- pkg/go.sum | 4 +-- server/go.mod | 6 ++-- server/go.sum | 16 +++++----- tests/go.mod | 8 ++--- tests/go.sum | 16 +++++----- tools/mod/go.mod | 8 ++--- tools/mod/go.sum | 16 +++++----- tools/rw-heatmaps/go.mod | 24 +++++++------- tools/rw-heatmaps/go.sum | 58 +++++++++++++++++----------------- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 +-- 22 files changed, 116 insertions(+), 116 deletions(-) diff --git a/api/go.mod b/api/go.mod index 3f562a3c9565..b60aabb4a732 100644 --- a/api/go.mod +++ b/api/go.mod @@ -23,7 +23,7 @@ require ( go.opentelemetry.io/otel/sdk v1.34.0 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index cdcd0025cd16..e1c33d241204 100644 --- a/api/go.sum +++ b/api/go.sum @@ -63,8 +63,8 @@ golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/client/v3/go.mod b/client/v3/go.mod index 004663ae1671..c17cd0da6af9 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -37,7 +37,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect google.golang.org/protobuf v1.36.4 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 0f18b1ad5bea..e4c837f4d252 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -97,8 +97,8 @@ golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index ed51d859ec62..39c54dc4635c 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -17,7 +17,7 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - golang.org/x/time v0.9.0 + golang.org/x/time v0.10.0 google.golang.org/grpc v1.70.0 ) @@ -40,7 +40,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect google.golang.org/protobuf v1.36.4 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 7ef4a59dc6be..32401f209f80 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -124,10 +124,10 @@ golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= -golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 044336c3dd50..2930b139a7d9 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -82,11 +82,11 @@ require ( go.opentelemetry.io/otel/trace v1.34.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.32.0 // indirect + golang.org/x/crypto v0.33.0 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.21.0 // indirect - golang.org/x/time v0.9.0 // indirect + golang.org/x/text v0.22.0 // indirect + golang.org/x/time v0.10.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect google.golang.org/grpc v1.70.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 5d198d76810f..248f4d80b091 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -132,8 +132,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -146,8 +146,8 @@ golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -156,10 +156,10 @@ golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= -golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/go.mod b/go.mod index 6c1517819109..c2ecc9fe5cd5 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( go.etcd.io/etcd/tests/v3 v3.0.0-00010101000000-000000000000 go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 - golang.org/x/time v0.9.0 + golang.org/x/time v0.10.0 google.golang.org/grpc v1.70.0 google.golang.org/protobuf v1.36.4 ) @@ -92,10 +92,10 @@ require ( go.opentelemetry.io/otel/trace v1.34.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.32.0 // indirect + golang.org/x/crypto v0.33.0 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index 1984699f03cb..4238455183ba 100644 --- a/go.sum +++ b/go.sum @@ -180,8 +180,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -205,8 +205,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -218,10 +218,10 @@ golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= -golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= diff --git a/pkg/go.mod b/pkg/go.mod index bb455dd7452c..57f0225d7518 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -25,7 +25,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect google.golang.org/protobuf v1.36.4 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index a00ae3a1fe41..86ae89ed7141 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -58,8 +58,8 @@ golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= diff --git a/server/go.mod b/server/go.mod index de7b0bbd3029..bd415ed283b6 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,9 +37,9 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 go.opentelemetry.io/otel/sdk v1.34.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.32.0 + golang.org/x/crypto v0.33.0 golang.org/x/net v0.34.0 - golang.org/x/time v0.9.0 + golang.org/x/time v0.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f google.golang.org/grpc v1.70.0 google.golang.org/protobuf v1.36.4 @@ -73,7 +73,7 @@ require ( go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect diff --git a/server/go.sum b/server/go.sum index 2dfce316c97a..668f377184ea 100644 --- a/server/go.sum +++ b/server/go.sum @@ -158,8 +158,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -183,8 +183,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -195,10 +195,10 @@ golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= -golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= diff --git a/tests/go.mod b/tests/go.mod index 40c1d20ea7f7..683a88ad9e0f 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -44,9 +44,9 @@ require ( go.opentelemetry.io/otel/trace v1.34.0 go.opentelemetry.io/proto/otlp v1.5.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.32.0 - golang.org/x/sync v0.10.0 - golang.org/x/time v0.9.0 + golang.org/x/crypto v0.33.0 + golang.org/x/sync v0.11.0 + golang.org/x/time v0.10.0 google.golang.org/grpc v1.70.0 google.golang.org/protobuf v1.36.4 ) @@ -96,7 +96,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index db18ba8b34cf..d31fd68e0807 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -184,8 +184,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -209,8 +209,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -222,10 +222,10 @@ golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= -golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 2849afc0772d..0c5d07ffd28d 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -214,15 +214,15 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.32.0 // indirect + golang.org/x/crypto v0.33.0 // indirect golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.34.0 // indirect - golang.org/x/sync v0.10.0 // indirect + golang.org/x/sync v0.11.0 // indirect golang.org/x/sys v0.30.0 // indirect - golang.org/x/term v0.28.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/term v0.29.0 // indirect + golang.org/x/text v0.22.0 // indirect golang.org/x/tools v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 176996a8f582..490c1b80ab4d 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -546,8 +546,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -607,8 +607,8 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -657,8 +657,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= -golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= +golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -673,8 +673,8 @@ golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 93533f8f347e..97e7120cfcf4 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -1,26 +1,26 @@ module go.etcd.io/etcd/tools/rw-heatmaps/v3 -go 1.25.0 +go 1.23 -toolchain go1.25.8 +toolchain go1.23.6 require ( - github.com/spf13/cobra v1.10.2 - github.com/spf13/pflag v1.0.10 - gonum.org/v1/plot v0.15.2 + github.com/spf13/cobra v1.8.1 + github.com/spf13/pflag v1.0.6 + gonum.org/v1/plot v0.14.0 ) require ( - codeberg.org/go-fonts/liberation v0.5.0 // indirect - codeberg.org/go-latex/latex v0.1.0 // indirect - codeberg.org/go-pdf/fpdf v0.10.0 // indirect - git.sr.ht/~sbinet/gg v0.6.0 // indirect + git.sr.ht/~sbinet/gg v0.5.0 // indirect github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b // indirect github.com/campoy/embedmd v1.0.0 // indirect + github.com/go-fonts/liberation v0.3.1 // indirect + github.com/go-latex/latex v0.0.0-20230307184459-12ec69307ad9 // indirect + github.com/go-pdf/fpdf v0.8.0 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - golang.org/x/image v0.38.0 // indirect - golang.org/x/text v0.35.0 // indirect - gonum.org/v1/gonum v0.16.0 // indirect + golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect + golang.org/x/image v0.18.0 // indirect + golang.org/x/text v0.22.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 31a155b3cdea..9e0e13676301 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -1,17 +1,7 @@ -codeberg.org/go-fonts/dejavu v0.4.0 h1:2yn58Vkh4CFK3ipacWUAIE3XVBGNa0y1bc95Bmfx91I= -codeberg.org/go-fonts/dejavu v0.4.0/go.mod h1:abni088lmhQJvso2Lsb7azCKzwkfcnttl6tL1UTWKzg= -codeberg.org/go-fonts/latin-modern v0.4.0 h1:vkRCc1y3whKA7iL9Ep0fSGVuJfqjix0ica9UflHORO8= -codeberg.org/go-fonts/latin-modern v0.4.0/go.mod h1:BF68mZznJ9QHn+hic9ks2DaFl4sR5YhfM6xTYaP9vNw= -codeberg.org/go-fonts/liberation v0.5.0 h1:SsKoMO1v1OZmzkG2DY+7ZkCL9U+rrWI09niOLfQ5Bo0= -codeberg.org/go-fonts/liberation v0.5.0/go.mod h1:zS/2e1354/mJ4pGzIIaEtm/59VFCFnYC7YV6YdGl5GU= -codeberg.org/go-latex/latex v0.1.0 h1:hoGO86rIbWVyjtlDLzCqZPjNykpWQ9YuTZqAzPcfL3c= -codeberg.org/go-latex/latex v0.1.0/go.mod h1:LA0q/AyWIYrqVd+A9Upkgsb+IqPcmSTKc9Dny04MHMw= -codeberg.org/go-pdf/fpdf v0.10.0 h1:u+w669foDDx5Ds43mpiiayp40Ov6sZalgcPMDBcZRd4= -codeberg.org/go-pdf/fpdf v0.10.0/go.mod h1:Y0DGRAdZ0OmnZPvjbMp/1bYxmIPxm0ws4tfoPOc4LjU= git.sr.ht/~sbinet/cmpimg v0.1.0 h1:E0zPRk2muWuCqSKSVZIWsgtU9pjsw3eKHi8VmQeScxo= git.sr.ht/~sbinet/cmpimg v0.1.0/go.mod h1:FU12psLbF4TfNXkKH2ZZQ29crIqoiqTZmeQ7dkp/pxE= -git.sr.ht/~sbinet/gg v0.6.0 h1:RIzgkizAk+9r7uPzf/VfbJHBMKUr0F5hRFxTUGMnt38= -git.sr.ht/~sbinet/gg v0.6.0/go.mod h1:uucygbfC9wVPQIfrmwM2et0imr8L7KQWywX0xpFMm94= +git.sr.ht/~sbinet/gg v0.5.0 h1:6V43j30HM623V329xA9Ntq+WJrMjDxRjuAB1LFWF5m8= +git.sr.ht/~sbinet/gg v0.5.0/go.mod h1:G2C0eRESqlKhS7ErsNey6HHrqU1PwsnCQlekFi9Q2Oo= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= @@ -19,7 +9,17 @@ github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b h1:slYM766cy2nI3BwyR github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= github.com/campoy/embedmd v1.0.0 h1:V4kI2qTJJLf4J29RzI/MAt2c3Bl4dQSYPuflzwFH2hY= github.com/campoy/embedmd v1.0.0/go.mod h1:oxyr9RCiSXg0M3VJ3ks0UGfp98BpSSGr0kpiX3MzVl8= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/go-fonts/dejavu v0.1.0 h1:JSajPXURYqpr+Cu8U9bt8K+XcACIHWqWrvWCKyeFmVQ= +github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= +github.com/go-fonts/latin-modern v0.3.1 h1:/cT8A7uavYKvglYXvrdDw4oS5ZLkcOU22fa2HJ1/JVM= +github.com/go-fonts/latin-modern v0.3.1/go.mod h1:ysEQXnuT/sCDOAONxC7ImeEDVINbltClhasMAqEtRK0= +github.com/go-fonts/liberation v0.3.1 h1:9RPT2NhUpxQ7ukUvz3jeUckmN42T9D9TpjtQcqK/ceM= +github.com/go-fonts/liberation v0.3.1/go.mod h1:jdJ+cqF+F4SUL2V+qxBth8fvBpBDS7yloUL5Fi8GTGY= +github.com/go-latex/latex v0.0.0-20230307184459-12ec69307ad9 h1:NxXI5pTAtpEaU49bpLpQoDsu1zrteW/vxzTz8Cd2UAs= +github.com/go-latex/latex v0.0.0-20230307184459-12ec69307ad9/go.mod h1:gWuR/CrFDDeVRFQwHPvsv9soJVB/iqymhuZQuJ3a9OM= +github.com/go-pdf/fpdf v0.8.0 h1:IJKpdaagnWUeSkUFUjTcSzTppFxmv8ucGQyNPQWxYOQ= +github.com/go-pdf/fpdf v0.8.0/go.mod h1:gfqhcNwXrsd3XYKte9a7vM3smvU/jB4ZRDrmWSxpfdc= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= @@ -28,20 +28,19 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= -github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= -github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= -github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= -golang.org/x/image v0.38.0 h1:5l+q+Y9JDC7mBOMjo4/aPhMDcxEptsX+Tt3GgRQRPuE= -golang.org/x/image v0.38.0/go.mod h1:/3f6vaXC+6CEanU4KJxbcUZyEePbyKbaLoDOe4ehFYY= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= +golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ= +golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -54,19 +53,20 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -gonum.org/v1/plot v0.15.2 h1:Tlfh/jBk2tqjLZ4/P8ZIwGrLEWQSPDLRm/SNWKNXiGI= -gonum.org/v1/plot v0.15.2/go.mod h1:DX+x+DWso3LTha+AdkJEv5Txvi+Tql3KAGkehP0/Ubg= +gonum.org/v1/gonum v0.14.0 h1:2NiG67LD1tEH0D7kM+ps2V+fXmsAnpUeec7n8tcr4S0= +gonum.org/v1/gonum v0.14.0/go.mod h1:AoWeoz0becf9QMWtE8iWXNXc27fK4fNeHNf/oMejGfU= +gonum.org/v1/plot v0.14.0 h1:+LBDVFYwFe4LHhdP8coW6296MBEY4nQ+Y4vuUpJopcE= +gonum.org/v1/plot v0.14.0/go.mod h1:MLdR9424SJed+5VqC6MsouEpig9pZX2VZ57H9ko2bXU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= rsc.io/pdf v0.1.1 h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 63ec86272250..69b7a5d7303a 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -19,7 +19,7 @@ require ( go.opentelemetry.io/otel/sdk v1.34.0 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect google.golang.org/grpc v1.70.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 5b4dfd469832..cc25f11081b4 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1516,8 +1516,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 2e9d5b2a8bf9c26514d11d1dde00cb01066d3933 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 10 Feb 2025 21:30:02 +0100 Subject: [PATCH 0006/1068] dependency: bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.26.0 to 2.26.1, bump google.golang.org/genproto/googleapis/rpc from v0.0.0-20250115164207-1a7da9e5054f to v0.0.0-20250204164813-702378808489, and google.golang.org/protobuf from v1.36.4 to v1.36.5 Reference: - https://github.com/etcd-io/etcd/pull/19374 - https://github.com/etcd-io/etcd/pull/19380 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 8 ++++---- api/go.sum | 16 ++++++++-------- client/v3/go.mod | 8 ++++---- client/v3/go.sum | 16 ++++++++-------- etcdctl/go.mod | 8 ++++---- etcdctl/go.sum | 16 ++++++++-------- etcdutl/go.mod | 8 ++++---- etcdutl/go.sum | 16 ++++++++-------- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- pkg/go.mod | 4 ++-- pkg/go.sum | 8 ++++---- server/go.mod | 8 ++++---- server/go.sum | 16 ++++++++-------- tests/go.mod | 8 ++++---- tests/go.sum | 16 ++++++++-------- tools/mod/go.mod | 8 ++++---- tools/mod/go.sum | 16 ++++++++-------- tools/testgrid-analysis/go.mod | 4 ++-- tools/testgrid-analysis/go.sum | 8 ++++---- 20 files changed, 108 insertions(+), 108 deletions(-) diff --git a/api/go.mod b/api/go.mod index b60aabb4a732..bc5e202bc5b9 100644 --- a/api/go.mod +++ b/api/go.mod @@ -8,11 +8,11 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 github.com/stretchr/testify v1.10.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f + google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 google.golang.org/grpc v1.70.0 - google.golang.org/protobuf v1.36.4 + google.golang.org/protobuf v1.36.5 ) require ( @@ -24,7 +24,7 @@ require ( golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index e1c33d241204..2b7a2fd60e6c 100644 --- a/api/go.sum +++ b/api/go.sum @@ -14,8 +14,8 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -73,14 +73,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 h1:fCuMM4fowGzigT89NCIsW57Pk9k2D12MMi2ODn+Nk+o= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 h1:5bKytslY8ViY0Cj/ewmRtrWHW64bNF03cAatUUFCdFI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= -google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= -google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index c17cd0da6af9..2604a72c67f7 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -25,7 +25,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 // indirect github.com/klauspost/compress v1.17.9 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -38,9 +38,9 @@ require ( golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect - google.golang.org/protobuf v1.36.4 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect + google.golang.org/protobuf v1.36.5 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index e4c837f4d252..e8a7ed1f9f5f 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -28,8 +28,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= @@ -107,14 +107,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 h1:fCuMM4fowGzigT89NCIsW57Pk9k2D12MMi2ODn+Nk+o= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 h1:5bKytslY8ViY0Cj/ewmRtrWHW64bNF03cAatUUFCdFI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= -google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= -google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 39c54dc4635c..9856ea54f018 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -29,7 +29,7 @@ require ( github.com/fatih/color v1.18.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -41,9 +41,9 @@ require ( golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect - google.golang.org/protobuf v1.36.4 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect + google.golang.org/protobuf v1.36.5 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 32401f209f80..685da65f1a84 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -36,8 +36,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -136,14 +136,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 h1:fCuMM4fowGzigT89NCIsW57Pk9k2D12MMi2ODn+Nk+o= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 h1:5bKytslY8ViY0Cj/ewmRtrWHW64bNF03cAatUUFCdFI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= -google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= -google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 2930b139a7d9..25fa3fc79158 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -54,7 +54,7 @@ require ( github.com/gorilla/websocket v1.4.2 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/klauspost/compress v1.17.9 // indirect @@ -87,10 +87,10 @@ require ( golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect golang.org/x/time v0.10.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect google.golang.org/grpc v1.70.0 // indirect - google.golang.org/protobuf v1.36.4 // indirect + google.golang.org/protobuf v1.36.5 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 248f4d80b091..ea6995ba7229 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -41,8 +41,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -168,14 +168,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 h1:fCuMM4fowGzigT89NCIsW57Pk9k2D12MMi2ODn+Nk+o= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 h1:5bKytslY8ViY0Cj/ewmRtrWHW64bNF03cAatUUFCdFI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= -google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= -google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/go.mod b/go.mod index c2ecc9fe5cd5..ca4f2a0772ee 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/time v0.10.0 google.golang.org/grpc v1.70.0 - google.golang.org/protobuf v1.36.4 + google.golang.org/protobuf v1.36.5 ) require ( @@ -61,7 +61,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/klauspost/compress v1.17.9 // indirect @@ -96,8 +96,8 @@ require ( golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect diff --git a/go.sum b/go.sum index 4238455183ba..3fb73e7c5f6d 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -239,10 +239,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 h1:fCuMM4fowGzigT89NCIsW57Pk9k2D12MMi2ODn+Nk+o= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 h1:5bKytslY8ViY0Cj/ewmRtrWHW64bNF03cAatUUFCdFI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -250,8 +250,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= -google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= -google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/go.mod b/pkg/go.mod index 57f0225d7518..515c054ff1ea 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -26,8 +26,8 @@ require ( golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect - google.golang.org/protobuf v1.36.4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect + google.golang.org/protobuf v1.36.5 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index 86ae89ed7141..63cee0e19954 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -60,12 +60,12 @@ golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 h1:5bKytslY8ViY0Cj/ewmRtrWHW64bNF03cAatUUFCdFI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= -google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= -google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/server/go.mod b/server/go.mod index bd415ed283b6..cd0bcc29b487 100644 --- a/server/go.mod +++ b/server/go.mod @@ -16,7 +16,7 @@ require ( github.com/google/go-cmp v0.6.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.20.5 github.com/prometheus/client_model v0.6.1 @@ -40,9 +40,9 @@ require ( golang.org/x/crypto v0.33.0 golang.org/x/net v0.34.0 golang.org/x/time v0.10.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f + google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 google.golang.org/grpc v1.70.0 - google.golang.org/protobuf v1.36.4 + google.golang.org/protobuf v1.36.5 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.4.0 ) @@ -74,7 +74,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect ) diff --git a/server/go.sum b/server/go.sum index 668f377184ea..b70330f79219 100644 --- a/server/go.sum +++ b/server/go.sum @@ -63,8 +63,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -216,10 +216,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 h1:fCuMM4fowGzigT89NCIsW57Pk9k2D12MMi2ODn+Nk+o= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 h1:5bKytslY8ViY0Cj/ewmRtrWHW64bNF03cAatUUFCdFI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -227,8 +227,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= -google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= -google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tests/go.mod b/tests/go.mod index 683a88ad9e0f..a565f62f7aa0 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -22,7 +22,7 @@ require ( github.com/google/go-cmp v0.6.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 github.com/prometheus/client_golang v1.20.5 github.com/prometheus/client_model v0.6.1 github.com/prometheus/common v0.62.0 @@ -48,7 +48,7 @@ require ( golang.org/x/sync v0.11.0 golang.org/x/time v0.10.0 google.golang.org/grpc v1.70.0 - google.golang.org/protobuf v1.36.4 + google.golang.org/protobuf v1.36.5 ) require ( @@ -97,8 +97,8 @@ require ( golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect diff --git a/tests/go.sum b/tests/go.sum index d31fd68e0807..1a26756f48a6 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -75,8 +75,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -243,10 +243,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 h1:fCuMM4fowGzigT89NCIsW57Pk9k2D12MMi2ODn+Nk+o= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 h1:5bKytslY8ViY0Cj/ewmRtrWHW64bNF03cAatUUFCdFI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -254,8 +254,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= -google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= -google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 0c5d07ffd28d..0856e51fbc69 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -13,7 +13,7 @@ require ( github.com/golangci/golangci-lint v1.63.4 github.com/google/addlicense v1.1.1 github.com/google/yamlfmt v0.16.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 @@ -224,10 +224,10 @@ require ( golang.org/x/term v0.29.0 // indirect golang.org/x/text v0.22.0 // indirect golang.org/x/tools v0.29.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect google.golang.org/grpc v1.70.0 // indirect - google.golang.org/protobuf v1.36.4 // indirect + google.golang.org/protobuf v1.36.5 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 490c1b80ab4d..5f4a20648023 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -214,8 +214,8 @@ github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= @@ -707,14 +707,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= -google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 h1:fCuMM4fowGzigT89NCIsW57Pk9k2D12MMi2ODn+Nk+o= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 h1:5bKytslY8ViY0Cj/ewmRtrWHW64bNF03cAatUUFCdFI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= -google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= -google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 69b7a5d7303a..27a2278c78e7 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -8,7 +8,7 @@ require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 github.com/google/go-github/v60 v60.0.0 github.com/spf13/cobra v1.8.1 - google.golang.org/protobuf v1.36.4 + google.golang.org/protobuf v1.36.5 ) require ( @@ -20,6 +20,6 @@ require ( golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect google.golang.org/grpc v1.70.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index cc25f11081b4..79f96a52d356 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1841,8 +1841,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 h1:5bKytslY8ViY0Cj/ewmRtrWHW64bNF03cAatUUFCdFI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1909,8 +1909,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= -google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From d660b9ae1f408fea842419194f30ed193b0cb4b0 Mon Sep 17 00:00:00 2001 From: shashwat-jain Date: Tue, 11 Feb 2025 11:19:24 +0530 Subject: [PATCH 0007/1068] Remove passing of anonymous visualize function Signed-off-by: shashwat-jain --- bill-of-materials.json | 2 +- tests/go.mod | 2 +- tests/go.sum | 4 +-- tests/robustness/main_test.go | 2 +- tests/robustness/validate/operations.go | 35 +++++++++++++++++----- tests/robustness/validate/validate.go | 12 ++++---- tests/robustness/validate/validate_test.go | 2 +- 7 files changed, 39 insertions(+), 20 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index 6519d652b1fa..4c7937cc9aaa 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -13,7 +13,7 @@ "licenses": [ { "type": "MIT License", - "confidence": 1 + "confidence": 0.96875 } ] }, diff --git a/tests/go.mod b/tests/go.mod index 8a8eb162437c..0d3259f4be5d 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -15,7 +15,7 @@ replace ( ) require ( - github.com/anishathalye/porcupine v0.1.4 + github.com/anishathalye/porcupine v1.0.0 github.com/coreos/go-semver v0.3.1 github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 diff --git a/tests/go.sum b/tests/go.sum index f52923767567..e462ab043c3e 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -2,8 +2,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= -github.com/anishathalye/porcupine v0.1.4 h1:rRekB2jH1mbtLPEzuqyMHp4scU52Bcc1jgkPi1kWFQA= -github.com/anishathalye/porcupine v0.1.4/go.mod h1:/X9OQYnVb7DzfKCQVO4tI1Aq+o56UJW+RvN/5U4EuZA= +github.com/anishathalye/porcupine v1.0.0 h1:93eF6d26IMDky+G4h8FcLuYp1oO+no8a//I7asq/oKI= +github.com/anishathalye/porcupine v1.0.0/go.mod h1:WM0SsFjWNl2Y4BqHr/E/ll2yY1GY1jqn+W7Z/84Zoog= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index 2adb53241409..f88c49b3672f 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -97,7 +97,7 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s scenari require.NoError(t, err) validateConfig := validate.Config{ExpectRevisionUnique: s.Traffic.ExpectUniqueRevision()} - r.Visualize = validate.ValidateAndReturnVisualize(t, lg, validateConfig, r.Client, persistedRequests, 5*time.Minute) + r.Visualize = validate.ValidateAndReturnVisualize(t, lg, validateConfig, r.Client, persistedRequests, 5*time.Minute).Visualize panicked = false } diff --git a/tests/robustness/validate/operations.go b/tests/robustness/validate/operations.go index 9f39407ad818..605df732c617 100644 --- a/tests/robustness/validate/operations.go +++ b/tests/robustness/validate/operations.go @@ -32,10 +32,31 @@ var ( errFutureRevRespRequested = errors.New("request about a future rev with response") ) -func validateLinearizableOperationsAndVisualize(lg *zap.Logger, operations []porcupine.Operation, timeout time.Duration) (result porcupine.CheckResult, visualize func(basepath string) error) { +type Results struct { + Info porcupine.LinearizationInfo + Model porcupine.Model + Linearizable porcupine.CheckResult + Lg *zap.Logger // TODO: Remove logger from struct and instead of making it an argument for Visualize +} + +func (r Results) Visualize(path string) error { + r.Lg.Info("Saving visualization", zap.String("path", path)) + err := porcupine.VisualizePath(r.Model, r.Info, path) + if err != nil { + return fmt.Errorf("failed to visualize, err: %w", err) + } + return nil +} + +func validateLinearizableOperationsAndVisualize( + lg *zap.Logger, + operations []porcupine.Operation, + timeout time.Duration, +) (results Results) { lg.Info("Validating linearizable operations", zap.Duration("timeout", timeout)) start := time.Now() result, info := porcupine.CheckOperationsVerbose(model.NonDeterministicModel, operations, timeout) + switch result { case porcupine.Illegal: lg.Error("Linearization failed", zap.Duration("duration", time.Since(start))) @@ -46,13 +67,11 @@ func validateLinearizableOperationsAndVisualize(lg *zap.Logger, operations []por default: panic(fmt.Sprintf("Unknown Linearization result %s", result)) } - return result, func(path string) error { - lg.Info("Saving visualization", zap.String("path", path)) - err := porcupine.VisualizePath(model.NonDeterministicModel, info, path) - if err != nil { - return fmt.Errorf("failed to visualize, err: %w", err) - } - return nil + return Results{ + Info: info, + Model: model.NonDeterministicModel, + Linearizable: result, + Lg: lg, } } diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index 5918ec0df83c..a23734953c50 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -28,18 +28,18 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/report" ) -// ValidateAndReturnVisualize returns visualize as porcupine.linearizationInfo used to generate visualization is private. -func ValidateAndReturnVisualize(t *testing.T, lg *zap.Logger, cfg Config, reports []report.ClientReport, persistedRequests []model.EtcdRequest, timeout time.Duration) (visualize func(basepath string) error) { +func ValidateAndReturnVisualize(t *testing.T, lg *zap.Logger, cfg Config, reports []report.ClientReport, persistedRequests []model.EtcdRequest, timeout time.Duration) Results { err := checkValidationAssumptions(reports, persistedRequests) require.NoErrorf(t, err, "Broken validation assumptions") linearizableOperations := patchLinearizableOperations(reports, persistedRequests) serializableOperations := filterSerializableOperations(reports) - linearizable, visualize := validateLinearizableOperationsAndVisualize(lg, linearizableOperations, timeout) - if linearizable != porcupine.Ok { + results := validateLinearizableOperationsAndVisualize(lg, linearizableOperations, timeout) + if results.Linearizable != porcupine.Ok { t.Error("Failed linearization, skipping further validation") - return visualize + return results } + // TODO: Use requests from linearization for replay. replay := model.NewReplay(persistedRequests) @@ -51,7 +51,7 @@ func ValidateAndReturnVisualize(t *testing.T, lg *zap.Logger, cfg Config, report if err != nil { t.Errorf("Failed validating serializable operations, err: %s", err) } - return visualize + return results } type Config struct { diff --git a/tests/robustness/validate/validate_test.go b/tests/robustness/validate/validate_test.go index e847af672a90..bd6709af97ee 100644 --- a/tests/robustness/validate/validate_test.go +++ b/tests/robustness/validate/validate_test.go @@ -45,7 +45,7 @@ func TestDataReports(t *testing.T) { persistedRequests, err := report.LoadClusterPersistedRequests(lg, path) require.NoError(t, err) - visualize := ValidateAndReturnVisualize(t, zaptest.NewLogger(t), Config{}, reports, persistedRequests, 5*time.Minute) + visualize := ValidateAndReturnVisualize(t, zaptest.NewLogger(t), Config{}, reports, persistedRequests, 5*time.Minute).Visualize err = visualize(filepath.Join(path, "history.html")) require.NoError(t, err) From dd4add60fddc51e433656bc959d9fcf8157c9b1a Mon Sep 17 00:00:00 2001 From: James Blair Date: Thu, 20 Feb 2025 08:16:53 +1300 Subject: [PATCH 0008/1068] Simplify release permissions process. Signed-off-by: James Blair --- Documentation/contributor-guide/release.md | 24 +++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Documentation/contributor-guide/release.md b/Documentation/contributor-guide/release.md index 266b500d1c4b..671bbfeadfb2 100644 --- a/Documentation/contributor-guide/release.md +++ b/Documentation/contributor-guide/release.md @@ -15,6 +15,7 @@ for ensuring the stability of the release branch. - Marek Siarkowicz [@serathius](https://github.com/serathius) - Sahdev Zala [@spzala](https://github.com/spzala) - Wenjia Zhang [@wenjiaswe](https://github.com/wenjiaswe) +- Ivan Valdes Castillo [@ivanvc](https://github.com/ivanvc) All release version numbers follow the format of [semantic versioning 2.0.0](http://semver.org/). @@ -69,9 +70,8 @@ which don't need to be executed before releasing each version. ### Release steps 1. Raise an issue to publish the release plan, e.g. [issues/17350](https://github.com/etcd-io/etcd/issues/17350). -2. Raise a `kubernetes/org` pull request to temporarily elevate permissions for the GitHub release team. -3. Once permissions are elevated, temporarily relax [branch protections](https://github.com/etcd-io/etcd/settings/branches) to allow pushing changes directly to `release-*` branches in GitHub. -4. Verify you can pass the authentication to the image registries, +2. Raise a `kubernetes/org` pull request to ensure members of the release team are added to the [release github team](https://github.com/orgs/etcd-io/teams/release-etcd). +3. Verify you can pass the authentication to the image registries, - `docker login gcr.io` - `docker login quay.io` - If the release person doesn't have access to 1password, one of the owners (@ahrtr, @ivanvc, @jmhbnz, @serathius) needs to share the password with them per [this guide](https://support.1password.com/share-items/). See rough steps below, @@ -80,9 +80,9 @@ which don't need to be executed before releasing each version. - Select `Password of quay.io`. - Click `Share` on the top right, and set expiration as `1 hour` and only available to the release person using his/her email. - Click `Copy Link` then send the link to the release person via slack or email. -5. Clone the etcd repository and checkout the target branch, +4. Clone the etcd repository and checkout the target branch, - `git clone --branch release-3.X git@github.com:etcd-io/etcd.git` -6. Run the release script under the repository's root directory, replacing `${VERSION}` with a value without the `v` prefix, i.e. `3.5.13`. +5. Run the release script under the repository's root directory, replacing `${VERSION}` with a value without the `v` prefix, i.e. `3.5.13`. - `DRY_RUN=false ./scripts/release.sh ${VERSION}` - **NOTE:** When doing a pre-release (i.e., a version from the main branch, 3.6.0-alpha.2), you will need to explicitly set the branch to main: ``` @@ -91,14 +91,14 @@ which don't need to be executed before releasing each version. It generates all release binaries under the directory `/tmp/etcd-release-${VERSION}/etcd/release/` and images. Binaries are pushed to the Google Cloud bucket under project `etcd-development`, and images are pushed to `quay.io` and `gcr.io`. -7. Publish the release page on GitHub +6. Publish the release page on GitHub - Open the **draft** release URL shown by the release script - Click the pen button at the top right to edit the release - Review that it looks correct, reviewing that the bottom checkboxes are checked depending on the release version (v3.4 no checkboxes, v3.5 has the set as latest release checkbox checked, v3.6 has the set as pre-release checkbox checked) - Then, publish the release -8. Announce to the etcd-dev googlegroup +7. Announce to the etcd-dev googlegroup Follow the format of previous release emails sent to etcd-dev@googlegroups.com, see an example below. After sending out the email, ask one of the mailing list maintainers to approve the email from the pending list. Additionally, label the release email as `Release`. @@ -114,11 +114,11 @@ Thanks to everyone who contributed to the release! etcd team ``` -9. Update the changelog to reflect the correct release date. -10. Paste the release link to the issue raised in Step 1 and close the issue. -11. Restore standard branch protection settings and raise a follow-up `kubernetes/org` pull request to return to least privilege permissions. -12. Crease a new stable branch through `git push origin release-${VERSION_MAJOR}.${VERSION_MINOR}` if this is a new major or minor stable release. -13. Re-generate a new password for quay.io if needed (e.g. shared to a contributor who isn't in the release team, and we should rotate the password at least once every 3 months). +8. Update the changelog to reflect the correct release date. +9. Paste the release link to the issue raised in Step 1 and close the issue. +10. Raise a follow-up `kubernetes/org` pull request to return the GitHub release team to empty, least privilege state. +11. Crease a new stable branch through `git push origin release-${VERSION_MAJOR}.${VERSION_MINOR}` if this is a new major or minor stable release. +12. Re-generate a new password for quay.io if needed (e.g. shared to a contributor who isn't in the release team, and we should rotate the password at least once every 3 months). #### Release known issues From 4359c4e4439875649fde2bb70d2e7ce76396bc2f Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 22 Feb 2025 19:53:24 +0000 Subject: [PATCH 0009/1068] dependency: bump github.com/spf13/cobra from 1.8.1 to 1.9.1 Reference: - https://github.com/etcd-io/etcd/pull/19438 Signed-off-by: Chun-Hung Tseng --- etcdctl/go.mod | 2 +- etcdctl/go.sum | 7 +++---- etcdutl/go.mod | 2 +- etcdutl/go.sum | 7 +++---- go.mod | 2 +- go.sum | 7 +++---- pkg/go.mod | 2 +- pkg/go.sum | 7 +++---- server/go.mod | 2 +- server/go.sum | 7 +++---- tests/go.mod | 2 +- tests/go.sum | 7 +++---- tools/mod/go.mod | 2 +- tools/mod/go.sum | 6 +++--- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 7 +++---- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 6 +++--- 18 files changed, 36 insertions(+), 43 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 9856ea54f018..accd0bec05de 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -9,7 +9,7 @@ require ( github.com/cheggaaa/pb/v3 v3.1.6 github.com/dustin/go-humanize v1.0.1 github.com/olekukonko/tablewriter v0.0.5 - github.com/spf13/cobra v1.8.1 + github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 685da65f1a84..8440b9ca5366 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -12,7 +12,7 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= @@ -75,9 +75,8 @@ github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUc github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 25fa3fc79158..2fc0834d0d0a 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -25,7 +25,7 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 github.com/olekukonko/tablewriter v0.0.5 - github.com/spf13/cobra v1.8.1 + github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 go.etcd.io/bbolt v1.4.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 diff --git a/etcdutl/go.sum b/etcdutl/go.sum index ea6995ba7229..03dfb5595f93 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -10,7 +10,7 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -84,9 +84,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= diff --git a/go.mod b/go.mod index ca4f2a0772ee..f0dccf875308 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/cheggaaa/pb/v3 v3.1.6 github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/spf13/cobra v1.8.1 + github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 go.etcd.io/bbolt v1.4.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 diff --git a/go.sum b/go.sum index 3fb73e7c5f6d..16757b0617a9 100644 --- a/go.sum +++ b/go.sum @@ -21,7 +21,7 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -124,9 +124,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= diff --git a/pkg/go.mod b/pkg/go.mod index 515c054ff1ea..99183aa2b884 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -7,7 +7,7 @@ toolchain go1.23.6 require ( github.com/creack/pty v1.1.18 github.com/dustin/go-humanize v1.0.1 - github.com/spf13/cobra v1.8.1 + github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 diff --git a/pkg/go.sum b/pkg/go.sum index 63cee0e19954..f697332bde0d 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -1,6 +1,6 @@ github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -29,9 +29,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= diff --git a/server/go.mod b/server/go.mod index cd0bcc29b487..da5ec276130c 100644 --- a/server/go.mod +++ b/server/go.mod @@ -21,7 +21,7 @@ require ( github.com/prometheus/client_golang v1.20.5 github.com/prometheus/client_model v0.6.1 github.com/soheilhy/cmux v0.1.5 - github.com/spf13/cobra v1.8.1 + github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 diff --git a/server/go.sum b/server/go.sum index b70330f79219..689fa71ed167 100644 --- a/server/go.sum +++ b/server/go.sum @@ -15,7 +15,7 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -104,9 +104,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= diff --git a/tests/go.mod b/tests/go.mod index 0f568fae20d0..d4a6cb22ae88 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -84,7 +84,7 @@ require ( github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/cobra v1.8.1 // indirect + github.com/spf13/cobra v1.9.1 // indirect github.com/spf13/pflag v1.0.6 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect diff --git a/tests/go.sum b/tests/go.sum index 17b1b8b4142b..78af21309cfc 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -23,7 +23,7 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -128,9 +128,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 0856e51fbc69..6267572adb5b 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -181,7 +181,7 @@ require ( github.com/sourcegraph/go-diff v0.7.0 // indirect github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/cobra v1.8.1 // indirect + github.com/spf13/cobra v1.9.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.6 // indirect github.com/spf13/viper v1.12.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 5f4a20648023..6ec44c20f8fb 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -89,7 +89,7 @@ github.com/cloudflare/cfssl v1.6.5 h1:46zpNkm6dlNkMZH/wMW22ejih6gIaJbzL2du6vD7Ze github.com/cloudflare/cfssl v1.6.5/go.mod h1:Bk1si7sq8h2+yVEDrFJiz3d7Aw+pfjjJSZVaD+Taky4= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs= github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88= github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c= @@ -421,8 +421,8 @@ github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 97e7120cfcf4..5bb6a46d6fb1 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -5,7 +5,7 @@ go 1.23 toolchain go1.23.6 require ( - github.com/spf13/cobra v1.8.1 + github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.6 gonum.org/v1/plot v0.14.0 ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 9e0e13676301..2face21be1cc 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -9,7 +9,7 @@ github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b h1:slYM766cy2nI3BwyR github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= github.com/campoy/embedmd v1.0.0 h1:V4kI2qTJJLf4J29RzI/MAt2c3Bl4dQSYPuflzwFH2hY= github.com/campoy/embedmd v1.0.0/go.mod h1:oxyr9RCiSXg0M3VJ3ks0UGfp98BpSSGr0kpiX3MzVl8= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/go-fonts/dejavu v0.1.0 h1:JSajPXURYqpr+Cu8U9bt8K+XcACIHWqWrvWCKyeFmVQ= github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= github.com/go-fonts/latin-modern v0.3.1 h1:/cT8A7uavYKvglYXvrdDw4oS5ZLkcOU22fa2HJ1/JVM= @@ -28,9 +28,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 27a2278c78e7..68222a5f2aa1 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -7,7 +7,7 @@ toolchain go1.23.6 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 github.com/google/go-github/v60 v60.0.0 - github.com/spf13/cobra v1.8.1 + github.com/spf13/cobra v1.9.1 google.golang.org/protobuf v1.36.5 ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 79f96a52d356..8b6770af13b5 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -809,7 +809,7 @@ github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -1140,8 +1140,8 @@ github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTd github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= From a46cafd2345b95f3603255db285666cd3cf95dec Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 22 Feb 2025 19:57:13 +0000 Subject: [PATCH 0010/1068] dependency: bump honnef.co/go/tools from 0.5.1 to 0.6.0 and bump golang.org/x/net from 0.34.0 to 0.35.0 Reference: - https://github.com/etcd-io/etcd/pull/19434 = https://github.com/etcd-io/etcd/pull/19437 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 8 ++++---- tools/mod/go.sum | 16 ++++++++-------- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 20 files changed, 39 insertions(+), 39 deletions(-) diff --git a/api/go.mod b/api/go.mod index bc5e202bc5b9..8db282bc0b71 100644 --- a/api/go.mod +++ b/api/go.mod @@ -21,7 +21,7 @@ require ( github.com/rogpeppe/go-internal v1.13.1 // indirect go.opentelemetry.io/otel v1.34.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect - golang.org/x/net v0.34.0 // indirect + golang.org/x/net v0.35.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect diff --git a/api/go.sum b/api/go.sum index 2b7a2fd60e6c..f8fdaab765bf 100644 --- a/api/go.sum +++ b/api/go.sum @@ -51,8 +51,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/client/v3/go.mod b/client/v3/go.mod index 2604a72c67f7..9e41a4a65cd2 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -35,7 +35,7 @@ require ( go.opentelemetry.io/otel/metric v1.34.0 // indirect go.opentelemetry.io/otel/trace v1.34.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.34.0 // indirect + golang.org/x/net v0.35.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index e8a7ed1f9f5f..cb8b4e72b2b5 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -85,8 +85,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index accd0bec05de..207d69513883 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -38,7 +38,7 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.34.0 // indirect + golang.org/x/net v0.35.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 8440b9ca5366..771d677305be 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -110,8 +110,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 2fc0834d0d0a..9eb037b085bf 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -83,7 +83,7 @@ require ( go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.33.0 // indirect - golang.org/x/net v0.34.0 // indirect + golang.org/x/net v0.35.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect golang.org/x/time v0.10.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 03dfb5595f93..e69b59a079a6 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -140,8 +140,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/go.mod b/go.mod index f0dccf875308..5fa0566d45f6 100644 --- a/go.mod +++ b/go.mod @@ -93,7 +93,7 @@ require ( go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.33.0 // indirect - golang.org/x/net v0.34.0 // indirect + golang.org/x/net v0.35.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 // indirect diff --git a/go.sum b/go.sum index 16757b0617a9..16752478e1aa 100644 --- a/go.sum +++ b/go.sum @@ -196,8 +196,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/pkg/go.mod b/pkg/go.mod index 99183aa2b884..83329929058e 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -23,7 +23,7 @@ require ( go.opentelemetry.io/otel v1.34.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.34.0 // indirect + golang.org/x/net v0.35.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index f697332bde0d..e28b1a7a803e 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -53,8 +53,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= diff --git a/server/go.mod b/server/go.mod index da5ec276130c..537bd4106e7f 100644 --- a/server/go.mod +++ b/server/go.mod @@ -38,7 +38,7 @@ require ( go.opentelemetry.io/otel/sdk v1.34.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.33.0 - golang.org/x/net v0.34.0 + golang.org/x/net v0.35.0 golang.org/x/time v0.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 google.golang.org/grpc v1.70.0 diff --git a/server/go.sum b/server/go.sum index 689fa71ed167..f0b0882e632c 100644 --- a/server/go.sum +++ b/server/go.sum @@ -174,8 +174,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tests/go.mod b/tests/go.mod index d4a6cb22ae88..d1df2c9468ba 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -94,7 +94,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect go.opentelemetry.io/otel/metric v1.34.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.34.0 // indirect + golang.org/x/net v0.35.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 // indirect diff --git a/tests/go.sum b/tests/go.sum index 78af21309cfc..a0c4f54ee6e8 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -200,8 +200,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 6267572adb5b..de5739e67bb0 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -19,7 +19,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 gotest.tools/gotestsum v1.12.0 gotest.tools/v3 v3.5.2 - honnef.co/go/tools v0.5.1 + honnef.co/go/tools v0.6.0 ) require ( @@ -217,13 +217,13 @@ require ( golang.org/x/crypto v0.33.0 // indirect golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f // indirect - golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.34.0 // indirect + golang.org/x/mod v0.23.0 // indirect + golang.org/x/net v0.35.0 // indirect golang.org/x/sync v0.11.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/term v0.29.0 // indirect golang.org/x/text v0.22.0 // indirect - golang.org/x/tools v0.29.0 // indirect + golang.org/x/tools v0.30.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect google.golang.org/grpc v1.70.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 6ec44c20f8fb..2c218e673464 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -568,8 +568,8 @@ golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= -golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= +golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -595,8 +595,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -701,8 +701,8 @@ golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8 golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= -golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= -golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= +golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY= +golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -733,8 +733,8 @@ gotest.tools/gotestsum v1.12.0/go.mod h1:fAvqkSptospfSbQw26CTYzNwnsE/ztqLeyhP0h6 gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= -honnef.co/go/tools v0.5.1 h1:4bH5o3b5ZULQ4UrBmP+63W9r7qIkqJClEA9ko5YKx+I= -honnef.co/go/tools v0.5.1/go.mod h1:e9irvo83WDG9/irijV44wr3tbhcFeRnfpVlRqVwpzMs= +honnef.co/go/tools v0.6.0 h1:TAODvD3knlq75WCp2nyGJtT4LeRV/o7NN9nYPeVJXf8= +honnef.co/go/tools v0.6.0/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= mvdan.cc/gofumpt v0.7.0 h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 68222a5f2aa1..98a7280d97e7 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -17,7 +17,7 @@ require ( github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/otel v1.34.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect - golang.org/x/net v0.34.0 // indirect + golang.org/x/net v0.35.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 8b6770af13b5..3ac63538ea92 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1336,8 +1336,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From 627d0fd127d9b21cb4db7e1121002c1e933fc306 Mon Sep 17 00:00:00 2001 From: Wenjia Date: Sun, 23 Feb 2025 22:05:26 -0800 Subject: [PATCH 0011/1068] Add release leads and additional team members. Thanks to @jmhbnz and @ivanvc 's long time leadership in the release team, adding them as official leads. Also adding @siyuanfoundation and @fuweid as additional team members. Thanks everyone for your contribution! --- Documentation/contributor-guide/release.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Documentation/contributor-guide/release.md b/Documentation/contributor-guide/release.md index 671bbfeadfb2..54f7f76468ea 100644 --- a/Documentation/contributor-guide/release.md +++ b/Documentation/contributor-guide/release.md @@ -6,16 +6,18 @@ The procedure includes some manual steps for sanity checking, but it can probabl ## Release management -The following pool of release candidates manages the release of each etcd major/minor version as well as manages patches +Under the leadership of **James Blair** [@jmhbnz](https://github.com/jmhbnz) and **Ivan Valdes Castillo** [@ivanvc](https://github.com/ivanvc), the following pool of release candidates manages the release of each etcd major/minor version as well as manages patches to each stable release branch. They are responsible for communicating the timelines and status of each release and for ensuring the stability of the release branch. - Benjamin Wang [@ahrtr](https://github.com/ahrtr) +- Fu Wei [@fuweid](https://github.com/fuweid) - James Blair [@jmhbnz](https://github.com/jmhbnz) +- Ivan Valdes Castillo [@ivanvc](https://github.com/ivanvc) - Marek Siarkowicz [@serathius](https://github.com/serathius) - Sahdev Zala [@spzala](https://github.com/spzala) +- Siyuan Zhang [@siyuanfoundation](https://github.com/siyuanfoundation) - Wenjia Zhang [@wenjiaswe](https://github.com/wenjiaswe) -- Ivan Valdes Castillo [@ivanvc](https://github.com/ivanvc) All release version numbers follow the format of [semantic versioning 2.0.0](http://semver.org/). From 5f9de53427b0f116a49c9b658bb57b009ed9675a Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 24 Feb 2025 21:30:53 +0000 Subject: [PATCH 0012/1068] Address issues reported by golangci-lint after bumping the version to v1.64.5 Signed-off-by: Chun-Hung Tseng --- .../clientv3/examples/example_cluster_test.go | 20 ++++---- .../clientv3/examples/example_kv_test.go | 46 +++++++++---------- .../clientv3/examples/example_lease_test.go | 16 +++---- .../examples/example_maintenance_test.go | 8 ++-- .../clientv3/examples/example_metrics_test.go | 4 +- .../clientv3/examples/example_test.go | 8 ++-- .../clientv3/examples/example_watch_test.go | 16 +++---- 7 files changed, 59 insertions(+), 59 deletions(-) diff --git a/tests/integration/clientv3/examples/example_cluster_test.go b/tests/integration/clientv3/examples/example_cluster_test.go index 1d2da78c777e..3a83e8a997fc 100644 --- a/tests/integration/clientv3/examples/example_cluster_test.go +++ b/tests/integration/clientv3/examples/example_cluster_test.go @@ -22,12 +22,12 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" ) -func mockCluster_memberList() { +func mockClusterMemberList() { fmt.Println("members: 3") } func ExampleCluster_memberList() { - forUnitTestsRunInMockedContext(mockCluster_memberList, func() { + forUnitTestsRunInMockedContext(mockClusterMemberList, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -46,13 +46,13 @@ func ExampleCluster_memberList() { // Output: members: 3 } -func mockCluster_memberAdd() { +func mockClusterMemberAdd() { fmt.Println("added member.PeerURLs: [http://localhost:32380]") fmt.Println("members count: 4") } func ExampleCluster_memberAdd() { - forUnitTestsRunInMockedContext(mockCluster_memberAdd, func() { + forUnitTestsRunInMockedContext(mockClusterMemberAdd, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -81,13 +81,13 @@ func ExampleCluster_memberAdd() { // members count: 4 } -func mockCluster_memberAddAsLearner() { +func mockClusterMemberAddAsLearner() { fmt.Println("members count: 4") fmt.Println("added member.IsLearner: true") } func ExampleCluster_memberAddAsLearner() { - forUnitTestsRunInMockedContext(mockCluster_memberAddAsLearner, func() { + forUnitTestsRunInMockedContext(mockClusterMemberAddAsLearner, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -116,10 +116,10 @@ func ExampleCluster_memberAddAsLearner() { // added member.IsLearner: true } -func mockCluster_memberRemove() {} +func mockClusterMemberRemove() {} func ExampleCluster_memberRemove() { - forUnitTestsRunInMockedContext(mockCluster_memberRemove, func() { + forUnitTestsRunInMockedContext(mockClusterMemberRemove, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -147,10 +147,10 @@ func ExampleCluster_memberRemove() { }) } -func mockCluster_memberUpdate() {} +func mockClusterMemberUpdate() {} func ExampleCluster_memberUpdate() { - forUnitTestsRunInMockedContext(mockCluster_memberUpdate, func() { + forUnitTestsRunInMockedContext(mockClusterMemberUpdate, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, diff --git a/tests/integration/clientv3/examples/example_kv_test.go b/tests/integration/clientv3/examples/example_kv_test.go index e4fa4bf5f441..235404b6753f 100644 --- a/tests/integration/clientv3/examples/example_kv_test.go +++ b/tests/integration/clientv3/examples/example_kv_test.go @@ -16,6 +16,7 @@ package clientv3_test import ( "context" + "errors" "fmt" "log" @@ -23,10 +24,10 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" ) -func mockKV_put() {} +func mockKVPut() {} func ExampleKV_put() { - forUnitTestsRunInMockedContext(mockKV_put, func() { + forUnitTestsRunInMockedContext(mockKVPut, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -46,12 +47,12 @@ func ExampleKV_put() { // Output: } -func mockKV_putErrorHandling() { +func mockKVPutErrorHandling() { fmt.Println("client-side error: etcdserver: key is not provided") } func ExampleKV_putErrorHandling() { - forUnitTestsRunInMockedContext(mockKV_putErrorHandling, func() { + forUnitTestsRunInMockedContext(mockKVPutErrorHandling, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -65,14 +66,13 @@ func ExampleKV_putErrorHandling() { _, err = cli.Put(ctx, "", "sample_value") cancel() if err != nil { - switch err { - case context.Canceled: + if errors.Is(err, context.Canceled) { fmt.Printf("ctx is canceled by another routine: %v\n", err) - case context.DeadlineExceeded: + } else if errors.Is(err, context.DeadlineExceeded) { fmt.Printf("ctx is attached with a deadline is exceeded: %v\n", err) - case rpctypes.ErrEmptyKey: + } else if errors.Is(err, rpctypes.ErrEmptyKey) { fmt.Printf("client-side error: %v\n", err) - default: + } else { fmt.Printf("bad cluster endpoints, which are not etcd servers: %v\n", err) } } @@ -80,12 +80,12 @@ func ExampleKV_putErrorHandling() { // Output: client-side error: etcdserver: key is not provided } -func mockKV_get() { +func mockKVGet() { fmt.Println("foo : bar") } func ExampleKV_get() { - forUnitTestsRunInMockedContext(mockKV_get, func() { + forUnitTestsRunInMockedContext(mockKVGet, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -113,12 +113,12 @@ func ExampleKV_get() { // Output: foo : bar } -func mockKV_getWithRev() { +func mockKVGetWithRev() { fmt.Println("foo : bar1") } func ExampleKV_getWithRev() { - forUnitTestsRunInMockedContext(mockKV_getWithRev, func() { + forUnitTestsRunInMockedContext(mockKVGetWithRev, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -150,14 +150,14 @@ func ExampleKV_getWithRev() { // Output: foo : bar1 } -func mockKV_getSortedPrefix() { +func mockKVGetSortedPrefix() { fmt.Println(`key_2 : value`) fmt.Println(`key_1 : value`) fmt.Println(`key_0 : value`) } func ExampleKV_getSortedPrefix() { - forUnitTestsRunInMockedContext(mockKV_getSortedPrefix, func() { + forUnitTestsRunInMockedContext(mockKVGetSortedPrefix, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -192,12 +192,12 @@ func ExampleKV_getSortedPrefix() { // key_0 : value } -func mockKV_delete() { +func mockKVDelete() { fmt.Println("Deleted all keys: true") } func ExampleKV_delete() { - forUnitTestsRunInMockedContext(mockKV_delete, func() { + forUnitTestsRunInMockedContext(mockKVDelete, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -228,10 +228,10 @@ func ExampleKV_delete() { // Deleted all keys: true } -func mockKV_compact() {} +func mockKVCompact() {} func ExampleKV_compact() { - forUnitTestsRunInMockedContext(mockKV_compact, func() { + forUnitTestsRunInMockedContext(mockKVCompact, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -259,12 +259,12 @@ func ExampleKV_compact() { // Output: } -func mockKV_txn() { +func mockKVTxn() { fmt.Println("key : XYZ") } func ExampleKV_txn() { - forUnitTestsRunInMockedContext(mockKV_txn, func() { + forUnitTestsRunInMockedContext(mockKVTxn, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -306,10 +306,10 @@ func ExampleKV_txn() { // Output: key : XYZ } -func mockKV_do() {} +func mockKVDo() {} func ExampleKV_do() { - forUnitTestsRunInMockedContext(mockKV_do, func() { + forUnitTestsRunInMockedContext(mockKVDo, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, diff --git a/tests/integration/clientv3/examples/example_lease_test.go b/tests/integration/clientv3/examples/example_lease_test.go index b0e6c5ef3668..f55e8314b2d3 100644 --- a/tests/integration/clientv3/examples/example_lease_test.go +++ b/tests/integration/clientv3/examples/example_lease_test.go @@ -22,11 +22,11 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" ) -func mockLease_grant() { +func mockLeaseGrant() { } func ExampleLease_grant() { - forUnitTestsRunInMockedContext(mockLease_grant, func() { + forUnitTestsRunInMockedContext(mockLeaseGrant, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -51,12 +51,12 @@ func ExampleLease_grant() { // Output: } -func mockLease_revoke() { +func mockLeaseRevoke() { fmt.Println("number of keys: 0") } func ExampleLease_revoke() { - forUnitTestsRunInMockedContext(mockLease_revoke, func() { + forUnitTestsRunInMockedContext(mockLeaseRevoke, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -91,12 +91,12 @@ func ExampleLease_revoke() { // Output: number of keys: 0 } -func mockLease_keepAlive() { +func mockLeaseKeepAlive() { fmt.Println("ttl: 5") } func ExampleLease_keepAlive() { - forUnitTestsRunInMockedContext(mockLease_keepAlive, func() { + forUnitTestsRunInMockedContext(mockLeaseKeepAlive, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -132,12 +132,12 @@ func ExampleLease_keepAlive() { // Output: ttl: 5 } -func mockLease_keepAliveOnce() { +func mockLeaseKeepAliveOnce() { fmt.Println("ttl: 5") } func ExampleLease_keepAliveOnce() { - forUnitTestsRunInMockedContext(mockLease_keepAliveOnce, func() { + forUnitTestsRunInMockedContext(mockLeaseKeepAliveOnce, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, diff --git a/tests/integration/clientv3/examples/example_maintenance_test.go b/tests/integration/clientv3/examples/example_maintenance_test.go index ff545e8de7d5..2c901475a7c0 100644 --- a/tests/integration/clientv3/examples/example_maintenance_test.go +++ b/tests/integration/clientv3/examples/example_maintenance_test.go @@ -21,10 +21,10 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" ) -func mockMaintenance_status() {} +func mockMaintenanceStatus() {} func ExampleMaintenance_status() { - forUnitTestsRunInMockedContext(mockMaintenance_status, func() { + forUnitTestsRunInMockedContext(mockMaintenanceStatus, func() { for _, ep := range exampleEndpoints() { cli, err := clientv3.New(clientv3.Config{ Endpoints: []string{ep}, @@ -44,10 +44,10 @@ func ExampleMaintenance_status() { // Output: } -func mockMaintenance_defragment() {} +func mockMaintenanceDefragment() {} func ExampleMaintenance_defragment() { - forUnitTestsRunInMockedContext(mockMaintenance_defragment, func() { + forUnitTestsRunInMockedContext(mockMaintenanceDefragment, func() { for _, ep := range exampleEndpoints() { cli, err := clientv3.New(clientv3.Config{ Endpoints: []string{ep}, diff --git a/tests/integration/clientv3/examples/example_metrics_test.go b/tests/integration/clientv3/examples/example_metrics_test.go index 75b47e53d23e..d467c8281333 100644 --- a/tests/integration/clientv3/examples/example_metrics_test.go +++ b/tests/integration/clientv3/examples/example_metrics_test.go @@ -31,12 +31,12 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" ) -func mockClient_metrics() { +func mockClientMetrics() { fmt.Println(`grpc_client_started_total{grpc_method="Range",grpc_service="etcdserverpb.KV",grpc_type="unary"} 1`) } func ExampleClient_metrics() { - forUnitTestsRunInMockedContext(mockClient_metrics, func() { + forUnitTestsRunInMockedContext(mockClientMetrics, func() { clientMetrics := grpcprom.NewClientMetrics() prometheus.Register(clientMetrics) cli, err := clientv3.New(clientv3.Config{ diff --git a/tests/integration/clientv3/examples/example_test.go b/tests/integration/clientv3/examples/example_test.go index b9b8be461e7c..166f4fbd2aa6 100644 --- a/tests/integration/clientv3/examples/example_test.go +++ b/tests/integration/clientv3/examples/example_test.go @@ -22,10 +22,10 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" ) -func mockConfig_insecure() {} +func mockConfigInsecure() {} func ExampleConfig_insecure() { - forUnitTestsRunInMockedContext(mockConfig_insecure, func() { + forUnitTestsRunInMockedContext(mockConfigInsecure, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -46,10 +46,10 @@ func ExampleConfig_insecure() { // Output: } -func mockConfig_withTLS() {} +func mockConfigWithTLS() {} func ExampleConfig_withTLS() { - forUnitTestsRunInMockedContext(mockConfig_withTLS, func() { + forUnitTestsRunInMockedContext(mockConfigWithTLS, func() { tlsInfo := transport.TLSInfo{ CertFile: "/tmp/test-certs/test-name-1.pem", KeyFile: "/tmp/test-certs/test-name-1-key.pem", diff --git a/tests/integration/clientv3/examples/example_watch_test.go b/tests/integration/clientv3/examples/example_watch_test.go index ac44f8ca38dd..c78d1e7f84e4 100644 --- a/tests/integration/clientv3/examples/example_watch_test.go +++ b/tests/integration/clientv3/examples/example_watch_test.go @@ -23,12 +23,12 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" ) -func mockWatcher_watch() { +func mockWatcherWatch() { fmt.Println(`PUT "foo" : "bar"`) } func ExampleWatcher_watch() { - forUnitTestsRunInMockedContext(mockWatcher_watch, func() { + forUnitTestsRunInMockedContext(mockWatcherWatch, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -48,12 +48,12 @@ func ExampleWatcher_watch() { // PUT "foo" : "bar" } -func mockWatcher_watchWithPrefix() { +func mockWatcherWatchWithPrefix() { fmt.Println(`PUT "foo1" : "bar"`) } func ExampleWatcher_watchWithPrefix() { - forUnitTestsRunInMockedContext(mockWatcher_watchWithPrefix, func() { + forUnitTestsRunInMockedContext(mockWatcherWatchWithPrefix, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -73,14 +73,14 @@ func ExampleWatcher_watchWithPrefix() { // PUT "foo1" : "bar" } -func mockWatcher_watchWithRange() { +func mockWatcherWatchWithRange() { fmt.Println(`PUT "foo1" : "bar1"`) fmt.Println(`PUT "foo2" : "bar2"`) fmt.Println(`PUT "foo3" : "bar3"`) } func ExampleWatcher_watchWithRange() { - forUnitTestsRunInMockedContext(mockWatcher_watchWithRange, func() { + forUnitTestsRunInMockedContext(mockWatcherWatchWithRange, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, @@ -121,12 +121,12 @@ func ExampleWatcher_watchWithRange() { // PUT "foo3" : "bar3" } -func mockWatcher_watchWithProgressNotify() { +func mockWatcherWatchWithProgressNotify() { fmt.Println(`wresp.IsProgressNotify: true`) } func ExampleWatcher_watchWithProgressNotify() { - forUnitTestsRunInMockedContext(mockWatcher_watchWithProgressNotify, func() { + forUnitTestsRunInMockedContext(mockWatcherWatchWithProgressNotify, func() { cli, err := clientv3.New(clientv3.Config{ Endpoints: exampleEndpoints(), DialTimeout: dialTimeout, From ec7f9cf89a55fd88c28634d62a3378abfe528ef0 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 22 Feb 2025 19:58:16 +0000 Subject: [PATCH 0013/1068] dependency: bump github.com/alexfalkowski/gocovmerge from 1.3.18 to 1.4.0 Reference: - https://github.com/etcd-io/etcd/pull/19436 Signed-off-by: Chun-Hung Tseng --- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index de5739e67bb0..e44a98d116ff 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -5,7 +5,7 @@ go 1.23 toolchain go1.23.6 require ( - github.com/alexfalkowski/gocovmerge v1.3.18 + github.com/alexfalkowski/gocovmerge v1.4.0 github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 github.com/cloudflare/cfssl v1.6.5 diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 2c218e673464..01ae615bfe1c 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -32,8 +32,8 @@ github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsr github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= -github.com/alexfalkowski/gocovmerge v1.3.18 h1:GRJz7uNUHuumvWQtS2zBjDkLdIiCcYE1rfxYYWwYvs8= -github.com/alexfalkowski/gocovmerge v1.3.18/go.mod h1:TnngCLiVe3kIrJ8v12zHP8aQkRWpjTomZm18uQrRDvE= +github.com/alexfalkowski/gocovmerge v1.4.0 h1:sKiQYXR4CYdKOxwcZbVVHka0Pv8qADVule33pxcMz0M= +github.com/alexfalkowski/gocovmerge v1.4.0/go.mod h1:v1ugjLQktGsqJ8WPOooeKvd6eJlucF/wmHBpPp+kals= github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU= github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= From 636b5633f4f985d344a0b43c5edef1ade8643b01 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 22 Feb 2025 19:59:21 +0000 Subject: [PATCH 0014/1068] dependency: bump github.com/golangci/golangci-lint from 1.63.4 to 1.64.5 Reference: - https://github.com/etcd-io/etcd/pull/19435 Signed-off-by: Chun-Hung Tseng --- tools/mod/go.mod | 55 ++++++++++----------- tools/mod/go.sum | 123 +++++++++++++++++++++-------------------------- 2 files changed, 82 insertions(+), 96 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index e44a98d116ff..2807bf97d7dd 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/tools/v3 -go 1.23 +go 1.23.0 toolchain go1.23.6 @@ -10,7 +10,7 @@ require ( github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint v1.63.4 + github.com/golangci/golangci-lint v1.64.5 github.com/google/addlicense v1.1.1 github.com/google/yamlfmt v0.16.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 @@ -24,14 +24,14 @@ require ( require ( 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect - 4d63.com/gochecknoglobals v0.2.1 // indirect + 4d63.com/gochecknoglobals v0.2.2 // indirect github.com/4meepo/tagalign v1.4.1 // indirect github.com/Abirdcfly/dupword v0.1.3 // indirect github.com/Antonboom/errname v1.0.0 // indirect github.com/Antonboom/nilnil v1.0.1 // indirect github.com/Antonboom/testifylint v1.5.2 // indirect github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect - github.com/Crocmagnon/fatcontext v0.5.3 // indirect + github.com/Crocmagnon/fatcontext v0.7.1 // indirect github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 // indirect github.com/Masterminds/semver/v3 v3.3.0 // indirect @@ -41,21 +41,21 @@ require ( github.com/alexkohler/nakedret/v2 v2.0.5 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect - github.com/alingse/nilnesserr v0.1.1 // indirect + github.com/alingse/nilnesserr v0.1.2 // indirect github.com/ashanbrown/forbidigo v1.6.0 // indirect github.com/ashanbrown/makezero v1.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bitfield/gotestdox v0.2.2 // indirect github.com/bkielbasa/cyclop v1.2.3 // indirect github.com/blizzy78/varnamelen v0.8.0 // indirect - github.com/bmatcuk/doublestar/v4 v4.7.1 // indirect + github.com/bmatcuk/doublestar/v4 v4.8.1 // indirect github.com/bombsimon/wsl/v4 v4.5.0 // indirect github.com/braydonk/yaml v0.9.0 // indirect github.com/breml/bidichk v0.3.2 // indirect github.com/breml/errchkjson v0.4.0 // indirect github.com/butuzov/ireturn v0.3.1 // indirect github.com/butuzov/mirror v1.3.0 // indirect - github.com/catenacyber/perfsprint v0.7.1 // indirect + github.com/catenacyber/perfsprint v0.8.1 // indirect github.com/ccojocar/zxcvbn-go v1.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charithe/durationcheck v0.0.10 // indirect @@ -72,8 +72,8 @@ require ( github.com/firefart/nonamedreturns v1.0.5 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect - github.com/ghostiam/protogetter v0.3.8 // indirect - github.com/go-critic/go-critic v0.11.5 // indirect + github.com/ghostiam/protogetter v0.3.9 // indirect + github.com/go-critic/go-critic v0.12.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-sql-driver/mysql v1.7.1 // indirect github.com/go-toolsmith/astcast v1.1.0 // indirect @@ -90,10 +90,10 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect github.com/golangci/go-printf-func-name v0.1.0 // indirect - github.com/golangci/gofmt v0.0.0-20241223200906-057b0627d9b9 // indirect + github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect github.com/golangci/misspell v0.6.0 // indirect github.com/golangci/plugin-module-register v0.1.1 // indirect - github.com/golangci/revgrep v0.5.3 // indirect + github.com/golangci/revgrep v0.8.0 // indirect github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect github.com/google/certificate-transparency-go v1.1.7 // indirect github.com/google/go-cmp v0.6.0 // indirect @@ -101,7 +101,7 @@ require ( github.com/gordonklaus/ineffassign v0.1.0 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect github.com/gostaticanalysis/comment v1.4.2 // indirect - github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect + github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect github.com/gostaticanalysis/nilerr v0.1.1 // indirect github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect @@ -115,17 +115,16 @@ require ( github.com/jmhodges/clock v1.2.0 // indirect github.com/jmoiron/sqlx v1.3.5 // indirect github.com/julz/importas v0.2.0 // indirect - github.com/karamaru-alpha/copyloopvar v1.1.0 // indirect + github.com/karamaru-alpha/copyloopvar v1.2.1 // indirect github.com/kisielk/errcheck v1.8.0 // indirect github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 // indirect github.com/kkHAIKE/contextcheck v1.1.5 // indirect github.com/kulti/thelper v0.6.3 // indirect github.com/kunwardeep/paralleltest v1.0.10 // indirect - github.com/kyoh86/exportloopref v0.1.11 // indirect github.com/lasiar/canonicalheader v1.1.2 // indirect - github.com/ldez/exptostd v0.3.1 // indirect - github.com/ldez/gomoddirectives v0.6.0 // indirect - github.com/ldez/grignotin v0.7.0 // indirect + github.com/ldez/exptostd v0.4.1 // indirect + github.com/ldez/gomoddirectives v0.6.1 // indirect + github.com/ldez/grignotin v0.9.0 // indirect github.com/ldez/tagliatelle v0.7.1 // indirect github.com/ldez/usetesting v0.4.2 // indirect github.com/leonklingele/grouper v1.1.2 // indirect @@ -134,12 +133,12 @@ require ( github.com/magiconair/properties v1.8.7 // indirect github.com/maratori/testableexamples v1.0.0 // indirect github.com/maratori/testpackage v1.1.1 // indirect - github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect + github.com/matoous/godox v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mattn/go-sqlite3 v1.14.22 // indirect - github.com/mgechev/revive v1.5.1 // indirect + github.com/mgechev/revive v1.6.1 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moricho/tparallel v0.3.2 // indirect @@ -147,12 +146,12 @@ require ( github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect - github.com/nunnatsa/ginkgolinter v0.18.4 // indirect + github.com/nunnatsa/ginkgolinter v0.19.0 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/polyfloyd/go-errorlint v1.7.0 // indirect + github.com/polyfloyd/go-errorlint v1.7.1 // indirect github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.62.0 // indirect @@ -172,14 +171,13 @@ require ( github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.28.0 // indirect - github.com/securego/gosec/v2 v2.21.4 // indirect - github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect + github.com/securego/gosec/v2 v2.22.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sivchari/containedctx v1.0.3 // indirect github.com/sivchari/tenv v1.12.1 // indirect github.com/sonatard/noctx v0.1.0 // indirect github.com/sourcegraph/go-diff v0.7.0 // indirect - github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/afero v1.12.0 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/cobra v1.9.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect @@ -190,7 +188,7 @@ require ( github.com/stretchr/objx v0.5.2 // indirect github.com/stretchr/testify v1.10.0 // indirect github.com/subosito/gotenv v1.4.1 // indirect - github.com/tdakkota/asciicheck v0.3.0 // indirect + github.com/tdakkota/asciicheck v0.4.0 // indirect github.com/tetafro/godot v1.4.20 // indirect github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 // indirect github.com/timonwong/loggercheck v0.10.1 // indirect @@ -200,7 +198,7 @@ require ( github.com/ultraware/funlen v0.2.0 // indirect github.com/ultraware/whitespace v0.2.0 // indirect github.com/uudashr/gocognit v1.2.0 // indirect - github.com/uudashr/iface v1.3.0 // indirect + github.com/uudashr/iface v1.3.1 // indirect github.com/weppos/publicsuffix-go v0.30.0 // indirect github.com/xen0n/gosmopolitan v1.2.2 // indirect github.com/yagipy/maintidx v1.0.0 // indirect @@ -210,13 +208,12 @@ require ( github.com/zmap/zlint/v3 v3.5.0 // indirect gitlab.com/bosi/decorder v0.4.2 // indirect go-simpler.org/musttag v0.13.0 // indirect - go-simpler.org/sloglint v0.7.2 // indirect + go-simpler.org/sloglint v0.9.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect golang.org/x/crypto v0.33.0 // indirect - golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect - golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f // indirect + golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect golang.org/x/mod v0.23.0 // indirect golang.org/x/net v0.35.0 // indirect golang.org/x/sync v0.11.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 01ae615bfe1c..9a5660659586 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -1,7 +1,7 @@ 4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA= 4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= -4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc= -4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU= +4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= +4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= github.com/4meepo/tagalign v1.4.1 h1:GYTu2FaPGOGb/xJalcqHeD4il5BiCywyEYZOA55P6J4= github.com/4meepo/tagalign v1.4.1/go.mod h1:2H9Yu6sZ67hmuraFgfZkNcg5Py9Ch/Om9l2K/2W1qS4= github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE= @@ -14,8 +14,8 @@ github.com/Antonboom/testifylint v1.5.2 h1:4s3Xhuv5AvdIgbd8wOOEeo0uZG7PbDKQyKY5l github.com/Antonboom/testifylint v1.5.2/go.mod h1:vxy8VJ0bc6NavlYqjZfmp6EfqXMtBgQ4+mhCojwC1P8= github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/Crocmagnon/fatcontext v0.5.3 h1:zCh/wjc9oyeF+Gmp+V60wetm8ph2tlsxocgg/J0hOps= -github.com/Crocmagnon/fatcontext v0.5.3/go.mod h1:XoCQYY1J+XTfyv74qLXvNw4xFunr3L1wkopIIKG7wGM= +github.com/Crocmagnon/fatcontext v0.7.1 h1:SC/VIbRRZQeQWj/TcQBS6JmrXcfA+BU4OGSVUt54PjM= +github.com/Crocmagnon/fatcontext v0.7.1/go.mod h1:1wMvv3NXEBJucFGfwOJBxSVWcoIO6emV215SMkW9MFU= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 h1:/fTUt5vmbkAcMBt4YQiuC23cV0kEsN1MVMNqeOW43cU= @@ -40,8 +40,8 @@ github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pO github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= -github.com/alingse/nilnesserr v0.1.1 h1:7cYuJewpy9jFNMEA72Q1+3Nm3zKHzg+Q28D5f2bBFUA= -github.com/alingse/nilnesserr v0.1.1/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= +github.com/alingse/nilnesserr v0.1.2 h1:Yf8Iwm3z2hUUrP4muWfW83DF4nE3r1xZ26fGWUKCZlo= +github.com/alingse/nilnesserr v0.1.2/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c h1:xv0ICJ4AO52aNZ+vI2KFUYZBMh7dHvROixZ1vzMMfu8= github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c/go.mod h1:Y5/1I+0gnnhHKyX4z65mgaGTJ08tnz9WUgkoymA/cws= github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= @@ -57,8 +57,8 @@ github.com/bkielbasa/cyclop v1.2.3/go.mod h1:kHTwA9Q0uZqOADdupvcFJQtp/ksSnytRMe8 github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= github.com/bmatcuk/doublestar/v4 v4.0.2/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= -github.com/bmatcuk/doublestar/v4 v4.7.1 h1:fdDeAqgT47acgwd9bd9HxJRDmc9UAmPpc+2m0CXv75Q= -github.com/bmatcuk/doublestar/v4 v4.7.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= +github.com/bmatcuk/doublestar/v4 v4.8.1 h1:54Bopc5c2cAvhLRAzqOGCYHYyhcDHsFF4wWIR5wKP38= +github.com/bmatcuk/doublestar/v4 v4.8.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bombsimon/wsl/v4 v4.5.0 h1:iZRsEvDdyhd2La0FVi5k6tYehpOR/R7qIUjmKk7N74A= github.com/bombsimon/wsl/v4 v4.5.0/go.mod h1:NOQ3aLF4nD7N5YPXMruR6ZXDOAqLoM0GEpLwTdvmOSc= github.com/braydonk/yaml v0.9.0 h1:ewGMrVmEVpsm3VwXQDR388sLg5+aQ8Yihp6/hc4m+h4= @@ -71,8 +71,8 @@ github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M= github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= -github.com/catenacyber/perfsprint v0.7.1 h1:PGW5G/Kxn+YrN04cRAZKC+ZuvlVwolYMrIyyTJ/rMmc= -github.com/catenacyber/perfsprint v0.7.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= +github.com/catenacyber/perfsprint v0.8.1 h1:bGOHuzHe0IkoGeY831RW4aSlt1lPRd3WRAScSWOaV7E= +github.com/catenacyber/perfsprint v0.8.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg= github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= @@ -119,10 +119,10 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= -github.com/ghostiam/protogetter v0.3.8 h1:LYcXbYvybUyTIxN2Mj9h6rHrDZBDwZloPoKctWrFyJY= -github.com/ghostiam/protogetter v0.3.8/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= -github.com/go-critic/go-critic v0.11.5 h1:TkDTOn5v7EEngMxu8KbuFqFR43USaaH8XRJLz1jhVYA= -github.com/go-critic/go-critic v0.11.5/go.mod h1:wu6U7ny9PiaHaZHcvMDmdysMqvDem162Rh3zWTrqk8M= +github.com/ghostiam/protogetter v0.3.9 h1:j+zlLLWzqLay22Cz/aYwTHKQ88GE2DQ6GkWSYFOI4lQ= +github.com/ghostiam/protogetter v0.3.9/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= +github.com/go-critic/go-critic v0.12.0 h1:iLosHZuye812wnkEz1Xu3aBwn5ocCPfc9yqmFG9pa6w= +github.com/go-critic/go-critic v0.12.0/go.mod h1:DpE0P6OVc6JzVYzmM5gq5jMU31zLr4am5mB/VfFK64w= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -168,16 +168,16 @@ github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9 github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUPPyAKJuzv8pEJU= github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= -github.com/golangci/gofmt v0.0.0-20241223200906-057b0627d9b9 h1:t5wybL6RtO83VwoMOb7U/Peqe3gGKQlPIC66wXmnkvM= -github.com/golangci/gofmt v0.0.0-20241223200906-057b0627d9b9/go.mod h1:Ag3L7sh7E28qAp/5xnpMMTuGYqxLZoSaEHZDkZB1RgU= -github.com/golangci/golangci-lint v1.63.4 h1:bJQFQ3hSfUto597dkL7ipDzOxsGEpiWdLiZ359OWOBI= -github.com/golangci/golangci-lint v1.63.4/go.mod h1:Hx0B7Lg5/NXbaOHem8+KU+ZUIzMI6zNj/7tFwdnn10I= +github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= +github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= +github.com/golangci/golangci-lint v1.64.5 h1:5omC86XFBKXZgCrVdUWU+WNHKd+CWCxNx717KXnzKZY= +github.com/golangci/golangci-lint v1.64.5/go.mod h1:WZnwq8TF0z61h3jLQ7Sk5trcP7b3kUFxLD6l1ivtdvU= github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= github.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc= -github.com/golangci/revgrep v0.5.3 h1:3tL7c1XBMtWHHqVpS5ChmiAAoe4PF/d5+ULzV9sLAzs= -github.com/golangci/revgrep v0.5.3/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= +github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s= +github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs= github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ= github.com/google/addlicense v1.1.1 h1:jpVf9qPbU8rz5MxKo7d+RMcNHkqxi4YJi/laauX4aAE= @@ -194,8 +194,8 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 h1:5iH8iuqE5apketRbSFBy+X1V0o+l+8NF1avt4HWl7cA= -github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/yamlfmt v0.16.0 h1:5auoxqdx2CxOb022XGBElFFVH8uE/lAJDCWKRMq4mT8= @@ -207,8 +207,8 @@ github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/o github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= -github.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70= -github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= +github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk= +github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY= github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= @@ -243,8 +243,8 @@ github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ= github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY= -github.com/karamaru-alpha/copyloopvar v1.1.0 h1:x7gNyKcC2vRBO1H2Mks5u1VxQtYvFiym7fCjIP8RPos= -github.com/karamaru-alpha/copyloopvar v1.1.0/go.mod h1:u7CIfztblY0jZLOQZgH3oYsJzpC2A7S6u/lfgSXHy0k= +github.com/karamaru-alpha/copyloopvar v1.2.1 h1:wmZaZYIjnJ0b5UoKDjUHrikcV0zuPyyxI4SVplLd2CI= +github.com/karamaru-alpha/copyloopvar v1.2.1/go.mod h1:nFmMlFNlClC2BPvNaHMdkirmTJxVCY0lhxBtlfOypMM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/errcheck v1.8.0 h1:ZX/URYa7ilESY19ik/vBmCn6zdGQLxACwjAcWbHlYlg= github.com/kisielk/errcheck v1.8.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ= @@ -268,16 +268,14 @@ github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= github.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCTdvWJ/lDDs= github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= -github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= -github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= -github.com/ldez/exptostd v0.3.1 h1:90yWWoAKMFHeovTK8uzBms9Ppp8Du/xQ20DRO26Ymrw= -github.com/ldez/exptostd v0.3.1/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ= -github.com/ldez/gomoddirectives v0.6.0 h1:Jyf1ZdTeiIB4dd+2n4qw+g4aI9IJ6JyfOZ8BityWvnA= -github.com/ldez/gomoddirectives v0.6.0/go.mod h1:TuwOGYoPAoENDWQpe8DMqEm5nIfjrxZXmxX/CExWyZ4= -github.com/ldez/grignotin v0.7.0 h1:vh0dI32WhHaq6LLPZ38g7WxXuZ1+RzyrJ7iPG9JMa8c= -github.com/ldez/grignotin v0.7.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk= +github.com/ldez/exptostd v0.4.1 h1:DIollgQ3LWZMp3HJbSXsdE2giJxMfjyHj3eX4oiD6JU= +github.com/ldez/exptostd v0.4.1/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ= +github.com/ldez/gomoddirectives v0.6.1 h1:Z+PxGAY+217f/bSGjNZr/b2KTXcyYLgiWI6geMBN2Qc= +github.com/ldez/gomoddirectives v0.6.1/go.mod h1:cVBiu3AHR9V31em9u2kwfMKD43ayN5/XDgr+cdaFaKs= +github.com/ldez/grignotin v0.9.0 h1:MgOEmjZIVNn6p5wPaGp/0OKWyvq42KnzAt/DAb8O4Ow= +github.com/ldez/grignotin v0.9.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk= github.com/ldez/tagliatelle v0.7.1 h1:bTgKjjc2sQcsgPiT902+aadvMjCeMHrY7ly2XKFORIk= github.com/ldez/tagliatelle v0.7.1/go.mod h1:3zjxUpsNB2aEZScWiZTHrAXOl1x25t3cRmzfK1mlo2I= github.com/ldez/usetesting v0.4.2 h1:J2WwbrFGk3wx4cZwSMiCQQ00kjGR0+tuuyW0Lqm4lwA= @@ -295,8 +293,8 @@ github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= -github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE= -github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4= +github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= @@ -313,8 +311,8 @@ github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/mgechev/revive v1.5.1 h1:hE+QPeq0/wIzJwOphdVyUJ82njdd8Khp4fUIHGZHW3M= -github.com/mgechev/revive v1.5.1/go.mod h1:lC9AhkJIBs5zwx8wkudyHrU+IJkrEKmpCmGMnIJPk4o= +github.com/mgechev/revive v1.6.1 h1:ncK0ZCMWtb8GXwVAmk+IeWF2ULIDsvRxSRfg5sTwQ2w= +github.com/mgechev/revive v1.6.1/go.mod h1:/2tfHWVO8UQi/hqJsIYNEKELi+DJy/e+PQpLgTB1v88= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -331,14 +329,14 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/nunnatsa/ginkgolinter v0.18.4 h1:zmX4KUR+6fk/vhUFt8DOP6KwznekhkmVSzzVJve2vyM= -github.com/nunnatsa/ginkgolinter v0.18.4/go.mod h1:AMEane4QQ6JwFz5GgjI5xLUM9S/CylO+UyM97fN2iBI= +github.com/nunnatsa/ginkgolinter v0.19.0 h1:CnHRFAeBS3LdLI9h+Jidbcc5KH71GKOmaBZQk8Srnto= +github.com/nunnatsa/ginkgolinter v0.19.0/go.mod h1:jkQ3naZDmxaZMXPWaS9rblH+i+GWXQCaS/JFIWcOH2s= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onsi/ginkgo/v2 v2.20.2 h1:7NVCeyIWROIAheY21RLS+3j2bb52W0W82tkberYytp4= -github.com/onsi/ginkgo/v2 v2.20.2/go.mod h1:K9gyxPIlb+aIvnZ8bd9Ak+YP18w3APlR+5coaZoE2ag= -github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8= -github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc= +github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= +github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= +github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= +github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= @@ -353,8 +351,8 @@ github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNH github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polyfloyd/go-errorlint v1.7.0 h1:Zp6lzCK4hpBDj8y8a237YK4EPrMXQWvOe3nGoH4pFrU= -github.com/polyfloyd/go-errorlint v1.7.0/go.mod h1:dGWKu85mGHnegQ2SWpEybFityCg3j7ZbwsVUxAOk9gY= +github.com/polyfloyd/go-errorlint v1.7.1 h1:RyLVXIbosq1gBdk/pChWA8zWYLsq9UEw7a1L5TVMCnA= +github.com/polyfloyd/go-errorlint v1.7.1/go.mod h1:aXjNb1x2TNhoLsk26iv1yl7a+zTnXPhwEMtEXukiLR8= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= @@ -398,10 +396,8 @@ github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tM github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= github.com/sashamelentyev/usestdlibvars v1.28.0 h1:jZnudE2zKCtYlGzLVreNp5pmCdOxXUzwsMDBkR21cyQ= github.com/sashamelentyev/usestdlibvars v1.28.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= -github.com/securego/gosec/v2 v2.21.4 h1:Le8MSj0PDmOnHJgUATjD96PaXRvCpKC+DGJvwyy0Mlk= -github.com/securego/gosec/v2 v2.21.4/go.mod h1:Jtb/MwRQfRxCXyCm1rfM1BEiiiTfUOdyzzAhlr6lUTA= -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= +github.com/securego/gosec/v2 v2.22.1 h1:IcBt3TpI5Y9VN1YlwjSpM2cHu0i3Iw52QM+PQeg7jN8= +github.com/securego/gosec/v2 v2.22.1/go.mod h1:4bb95X4Jz7VSEPdVjC0hD7C/yR6kdeUBvCPOy9gDQ0g= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -417,8 +413,8 @@ github.com/sonatard/noctx v0.1.0 h1:JjqOc2WN16ISWAjAk8M5ej0RfExEXtkEyExl2hLW+OM= github.com/sonatard/noctx v0.1.0/go.mod h1:0RvBxqY8D4j9cTTTWE8ylt2vqj2EPI8fHmrxHdsaZ2c= github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= +github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= @@ -453,8 +449,8 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/tdakkota/asciicheck v0.3.0 h1:LqDGgZdholxZMaJgpM6b0U9CFIjDCbFdUF00bDnBKOQ= -github.com/tdakkota/asciicheck v0.3.0/go.mod h1:KoJKXuX/Z/lt6XzLo8WMBfQGzak0SrAKZlvRr4tg8Ac= +github.com/tdakkota/asciicheck v0.4.0 h1:VZ13Itw4k1i7d+dpDSNS8Op645XgGHpkCEh/WHicgWw= +github.com/tdakkota/asciicheck v0.4.0/go.mod h1:0k7M3rCfRXb0Z6bwgvkEIMleKH3kXNz9UqJ9Xuqopr8= github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= @@ -477,8 +473,8 @@ github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSW github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= github.com/uudashr/gocognit v1.2.0 h1:3BU9aMr1xbhPlvJLSydKwdLN3tEUUrzPSSM8S4hDYRA= github.com/uudashr/gocognit v1.2.0/go.mod h1:k/DdKPI6XBZO1q7HgoV2juESI2/Ofj9AcHPZhBBdrTU= -github.com/uudashr/iface v1.3.0 h1:zwPch0fs9tdh9BmL5kcgSpvnObV+yHjO4JjVBl8IA10= -github.com/uudashr/iface v1.3.0/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= +github.com/uudashr/iface v1.3.1 h1:bA51vmVx1UIhiIsQFSNq6GZ6VPTk3WNMZgRiCe9R29U= +github.com/uudashr/iface v1.3.1/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= github.com/weppos/publicsuffix-go v0.12.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= github.com/weppos/publicsuffix-go v0.13.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= github.com/weppos/publicsuffix-go v0.30.0 h1:QHPZ2GRu/YE7cvejH9iyavPOkVCB4dNxp2ZvtT+vQLY= @@ -516,8 +512,8 @@ go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= go-simpler.org/musttag v0.13.0 h1:Q/YAW0AHvaoaIbsPj3bvEI5/QFP7w696IMUpnKXQfCE= go-simpler.org/musttag v0.13.0/go.mod h1:FTzIGeK6OkKlUDVpj0iQUXZLUO1Js9+mvykDQy9C5yM= -go-simpler.org/sloglint v0.7.2 h1:Wc9Em/Zeuu7JYpl+oKoYOsQSy2X560aVueCW/m6IijY= -go-simpler.org/sloglint v0.7.2/go.mod h1:US+9C80ppl7VsThQclkM7BkCHQAzuz8kHLsW3ppuluo= +go-simpler.org/sloglint v0.9.0 h1:/40NQtjRx9txvsB/RN022KsUJU+zaaSb/9q9BSefSrE= +go-simpler.org/sloglint v0.9.0/go.mod h1:G/OrAF6uxj48sHahCzrbarVMptL2kjWTaUeC8+fOGww= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 h1:QQiUXlqz+d96jyNG71NE+IGTgOK6Xlhdx+PzvfbLHlQ= @@ -552,8 +548,8 @@ golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWB golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f h1:WTyX8eCCyfdqiPYkRGm0MqElSfYFH3yR1+rl/mct9sA= -golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac h1:TSSpLIG4v+p0rPv1pNOQtl1I8knsO4S9trOxNMOLVP4= +golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -570,7 +566,6 @@ golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -585,7 +580,6 @@ golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= @@ -648,7 +642,6 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= @@ -666,7 +659,6 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= @@ -676,8 +668,6 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= @@ -694,7 +684,6 @@ golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= -golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= From 0eb35f30adaa50297f3db34a69cb8d853d8dce2d Mon Sep 17 00:00:00 2001 From: adeyemi Date: Tue, 4 Feb 2025 21:10:57 -0800 Subject: [PATCH 0015/1068] Create an StorageRecorder interface to fix unexported-return Signed-off-by: adeyemi --- server/mock/mockstorage/storage_recorder.go | 22 ++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/server/mock/mockstorage/storage_recorder.go b/server/mock/mockstorage/storage_recorder.go index 41d2952e8a12..7867bee494f0 100644 --- a/server/mock/mockstorage/storage_recorder.go +++ b/server/mock/mockstorage/storage_recorder.go @@ -22,42 +22,42 @@ import ( "go.etcd.io/raft/v3/raftpb" ) -type storageRecorder struct { +type StorageRecorder struct { testutil.Recorder dbPath string // must have '/' suffix if set } -func NewStorageRecorder(db string) *storageRecorder { - return &storageRecorder{&testutil.RecorderBuffered{}, db} +func NewStorageRecorder(db string) *StorageRecorder { + return &StorageRecorder{&testutil.RecorderBuffered{}, db} } -func NewStorageRecorderStream(db string) *storageRecorder { - return &storageRecorder{testutil.NewRecorderStream(), db} +func NewStorageRecorderStream(db string) *StorageRecorder { + return &StorageRecorder{testutil.NewRecorderStream(), db} } -func (p *storageRecorder) Save(st raftpb.HardState, ents []raftpb.Entry) error { +func (p *StorageRecorder) Save(st raftpb.HardState, ents []raftpb.Entry) error { p.Record(testutil.Action{Name: "Save"}) return nil } -func (p *storageRecorder) SaveSnap(st raftpb.Snapshot) error { +func (p *StorageRecorder) SaveSnap(st raftpb.Snapshot) error { if !raft.IsEmptySnap(st) { p.Record(testutil.Action{Name: "SaveSnap"}) } return nil } -func (p *storageRecorder) Release(st raftpb.Snapshot) error { +func (p *StorageRecorder) Release(st raftpb.Snapshot) error { if !raft.IsEmptySnap(st) { p.Record(testutil.Action{Name: "Release"}) } return nil } -func (p *storageRecorder) Sync() error { +func (p *StorageRecorder) Sync() error { p.Record(testutil.Action{Name: "Sync"}) return nil } -func (p *storageRecorder) Close() error { return nil } -func (p *storageRecorder) MinimalEtcdVersion() *semver.Version { return nil } +func (p *StorageRecorder) Close() error { return nil } +func (p *StorageRecorder) MinimalEtcdVersion() *semver.Version { return nil } From ca890bcb6515b3ebd5b19105e17dd49757fe6d26 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 14 Feb 2025 15:37:42 -0800 Subject: [PATCH 0016/1068] scripts: Use go mod instead of go list to get dependencies Replace `go list -m` with `go mod edit -json`, as the latter can return the same information. This will be helpful when the project migrates to using a Go workspace, as it will return the current module defined in go.mod rather than all the modules from the current directory (using a workspace, the top-level go.mod will return all the child modules from the repository). Signed-off-by: Ivan Valdes --- scripts/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test.sh b/scripts/test.sh index bedeabb9de5a..0f2364db61f5 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -508,7 +508,7 @@ function bom_pass { function dump_deps_of_module() { local module - if ! module=$(run go list -m); then + if ! module=$(run go mod edit -json | jq -r .Module.Path); then return 255 fi run go mod edit -json | jq -r '.Require[] | .Path+","+.Version+","+if .Indirect then " (indirect)" else "" end+",'"${module}"'"' From 2e94424fd0fb3dbbfc6334cdf058880b8db24f2d Mon Sep 17 00:00:00 2001 From: adeyemi Date: Tue, 4 Feb 2025 21:04:40 -0800 Subject: [PATCH 0017/1068] Rename applierMembership struct to fix unexported-return Signed-off-by: adeyemi --- server/etcdserver/apply/apply.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/etcdserver/apply/apply.go b/server/etcdserver/apply/apply.go index e45d53e17b12..661760880bd0 100644 --- a/server/etcdserver/apply/apply.go +++ b/server/etcdserver/apply/apply.go @@ -397,21 +397,21 @@ func (a *applierV3backend) RoleList(r *pb.AuthRoleListRequest) (*pb.AuthRoleList return resp, err } -type applierMembership struct { +type ApplierMembership struct { lg *zap.Logger cluster *membership.RaftCluster snapshotServer SnapshotServer } -func NewApplierMembership(lg *zap.Logger, cluster *membership.RaftCluster, snapshotServer SnapshotServer) *applierMembership { - return &applierMembership{ +func NewApplierMembership(lg *zap.Logger, cluster *membership.RaftCluster, snapshotServer SnapshotServer) *ApplierMembership { + return &ApplierMembership{ lg: lg, cluster: cluster, snapshotServer: snapshotServer, } } -func (a *applierMembership) ClusterVersionSet(r *membershippb.ClusterVersionSetRequest, shouldApplyV3 membership.ShouldApplyV3) { +func (a *ApplierMembership) ClusterVersionSet(r *membershippb.ClusterVersionSetRequest, shouldApplyV3 membership.ShouldApplyV3) { prevVersion := a.cluster.Version() newVersion := semver.Must(semver.NewVersion(r.Ver)) a.cluster.SetVersion(newVersion, api.UpdateCapability, shouldApplyV3) @@ -428,7 +428,7 @@ func (a *applierMembership) ClusterVersionSet(r *membershippb.ClusterVersionSetR } } -func (a *applierMembership) ClusterMemberAttrSet(r *membershippb.ClusterMemberAttrSetRequest, shouldApplyV3 membership.ShouldApplyV3) { +func (a *ApplierMembership) ClusterMemberAttrSet(r *membershippb.ClusterMemberAttrSetRequest, shouldApplyV3 membership.ShouldApplyV3) { a.cluster.UpdateAttributes( types.ID(r.Member_ID), membership.Attributes{ @@ -439,7 +439,7 @@ func (a *applierMembership) ClusterMemberAttrSet(r *membershippb.ClusterMemberAt ) } -func (a *applierMembership) DowngradeInfoSet(r *membershippb.DowngradeInfoSetRequest, shouldApplyV3 membership.ShouldApplyV3) { +func (a *ApplierMembership) DowngradeInfoSet(r *membershippb.DowngradeInfoSetRequest, shouldApplyV3 membership.ShouldApplyV3) { d := version.DowngradeInfo{Enabled: false} if r.Enabled { d = version.DowngradeInfo{Enabled: true, TargetVersion: r.Ver} From ac24008a58a1fdb000ba36fc2a4de16136f332a5 Mon Sep 17 00:00:00 2001 From: Ahmad Zolfaghari Date: Thu, 27 Feb 2025 20:15:19 +0330 Subject: [PATCH 0018/1068] Add UsageFunc to deprecation section in 3.7 changelog. Signed-off-by: Ahmad Zolfaghari --- CHANGELOG/CHANGELOG-3.7.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 CHANGELOG/CHANGELOG-3.7.md diff --git a/CHANGELOG/CHANGELOG-3.7.md b/CHANGELOG/CHANGELOG-3.7.md new file mode 100644 index 000000000000..ceb11e53ff04 --- /dev/null +++ b/CHANGELOG/CHANGELOG-3.7.md @@ -0,0 +1,11 @@ + + +Previous change logs can be found at [CHANGELOG-3.6](https://github.com/etcd-io/etcd/blob/main/CHANGELOG/CHANGELOG-3.6.md). + +
+ +## v3.7.0 (TBD) + +### Deprecations + +- Deprecated [UsageFunc in pkg/cobrautl](https://github.com/etcd-io/etcd/pull/18356). From 831a486667434f744bafe09b79b017d34dd42e1d Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 6 Feb 2025 10:30:45 -0800 Subject: [PATCH 0019/1068] github workflows: remove release tests This workflow has already been migrated to the prow infrastructure as a presubmit job. Signed-off-by: Ivan Valdes --- .github/workflows/release.yaml | 77 ---------------------------------- 1 file changed, 77 deletions(-) delete mode 100644 .github/workflows/release.yaml diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml deleted file mode 100644 index 2e1230951725..000000000000 --- a/.github/workflows/release.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -name: Release -on: [push, pull_request] -permissions: read-all -jobs: - main: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - id: goversion - run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 - with: - go-version: ${{ steps.goversion.outputs.goversion }} - - name: release - run: | - set -euo pipefail - - git config --global user.email "github-action@etcd.io" - git config --global user.name "Github Action" - gpg --batch --gen-key < Date: Mon, 3 Mar 2025 17:45:21 +0000 Subject: [PATCH 0020/1068] build(deps): bump actions/upload-artifact from 4.6.0 to 4.6.1 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.0 to 4.6.1. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08...4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index b0ac7e1e1c6a..fa4a6a1c0cdb 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -42,7 +42,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: SARIF file path: results.sarif From 26e5d0d3a197cbc14064e0c2d852b7090e36be4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 17:45:18 +0000 Subject: [PATCH 0021/1068] build(deps): bump ossf/scorecard-action from 2.4.0 to 2.4.1 Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.0 to 2.4.1. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/62b2cac7ed8198b15735ed49ab1e5cf35480ba46...f49aabe0b5af0936a0987cfb85d86b75731b0186) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index b0ac7e1e1c6a..61302443ef9c 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -28,7 +28,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0 + uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1 with: results_file: results.sarif results_format: sarif From e5f90de59a9fa7801983273f5f4026ecd5874fad Mon Sep 17 00:00:00 2001 From: ah8ad3 Date: Tue, 23 Jul 2024 11:38:31 +0330 Subject: [PATCH 0022/1068] Copy cobra helper of etcdctl from main pkg to etcdctl pkg and add a deprecation note for UsageFunc. Signed-off-by: ah8ad3 --- etcdctl/ctlv3/ctl.go | 3 +- etcdctl/util/help.go | 180 +++++++++++++++++++++++++++++++++++++++++++ pkg/cobrautl/help.go | 2 + 3 files changed, 184 insertions(+), 1 deletion(-) create mode 100644 etcdctl/util/help.go diff --git a/etcdctl/ctlv3/ctl.go b/etcdctl/ctlv3/ctl.go index 6686940cec7c..9925385030b0 100644 --- a/etcdctl/ctlv3/ctl.go +++ b/etcdctl/ctlv3/ctl.go @@ -23,6 +23,7 @@ import ( "go.etcd.io/etcd/api/v3/version" "go.etcd.io/etcd/etcdctl/v3/ctlv3/command" + "go.etcd.io/etcd/etcdctl/v3/util" "go.etcd.io/etcd/pkg/v3/cobrautl" ) @@ -102,7 +103,7 @@ func init() { } func usageFunc(c *cobra.Command) error { - return cobrautl.UsageFunc(c, version.Version, version.APIVersion) + return util.UsageFunc(c, version.Version, version.APIVersion) } func Start() error { diff --git a/etcdctl/util/help.go b/etcdctl/util/help.go new file mode 100644 index 000000000000..0e8035313571 --- /dev/null +++ b/etcdctl/util/help.go @@ -0,0 +1,180 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// copied from https://github.com/rkt/rkt/blob/master/rkt/help.go + +package util + +import ( + "fmt" + "io" + "os" + "strings" + "text/tabwriter" + "text/template" + + "github.com/spf13/cobra" + "github.com/spf13/pflag" +) + +var ( + commandUsageTemplate *template.Template + templFuncs = template.FuncMap{ + "descToLines": func(s string) []string { + // trim leading/trailing whitespace and split into slice of lines + return strings.Split(strings.Trim(s, "\n\t "), "\n") + }, + "cmdName": func(cmd *cobra.Command, startCmd *cobra.Command) string { + parts := []string{cmd.Name()} + for cmd.HasParent() && cmd.Parent().Name() != startCmd.Name() { + cmd = cmd.Parent() + parts = append([]string{cmd.Name()}, parts...) + } + return strings.Join(parts, " ") + }, + "indent": func(s string) string { + pad := strings.Repeat(" ", 2) + return pad + strings.Replace(s, "\n", "\n"+pad, -1) + }, + } +) + +func init() { + commandUsage := ` +{{ $cmd := .Cmd }}\ +{{ $cmdname := cmdName .Cmd .Cmd.Root }}\ +NAME: +{{if not .Cmd.HasParent}}\ +{{printf "%s - %s" .Cmd.Name .Cmd.Short | indent}} +{{else}}\ +{{printf "%s - %s" $cmdname .Cmd.Short | indent}} +{{end}}\ + +USAGE: +{{printf "%s" .Cmd.UseLine | indent}} +{{ if not .Cmd.HasParent }}\ + +VERSION: +{{printf "%s" .Version | indent}} +{{end}}\ +{{if .Cmd.HasSubCommands}}\ + +API VERSION: +{{.APIVersion | indent}} +{{end}}\ +{{if .Cmd.HasExample}}\ + +Examples: +{{.Cmd.Example}} +{{end}}\ +{{if .Cmd.HasSubCommands}}\ + +COMMANDS: +{{range .SubCommands}}\ +{{ $cmdname := cmdName . $cmd }}\ +{{ if .Runnable }}\ +{{printf "%s\t%s" $cmdname .Short | indent}} +{{end}}\ +{{end}}\ +{{end}}\ +{{ if .Cmd.Long }}\ + +DESCRIPTION: +{{range $line := descToLines .Cmd.Long}}{{printf "%s" $line | indent}} +{{end}}\ +{{end}}\ +{{if .Cmd.HasLocalFlags}}\ + +OPTIONS: +{{.LocalFlags}}\ +{{end}}\ +{{if .Cmd.HasInheritedFlags}}\ + +GLOBAL OPTIONS: +{{.GlobalFlags}}\ +{{end}} +`[1:] + + commandUsageTemplate = template.Must(template.New("command_usage").Funcs(templFuncs).Parse(strings.ReplaceAll(commandUsage, "\\\n", ""))) +} + +func etcdFlagUsages(flagSet *pflag.FlagSet) string { + x := new(strings.Builder) + + flagSet.VisitAll(func(flag *pflag.Flag) { + if len(flag.Deprecated) > 0 { + return + } + var format string + if len(flag.Shorthand) > 0 { + format = " -%s, --%s" + } else { + format = " %s --%s" + } + if len(flag.NoOptDefVal) > 0 { + format = format + "[" + } + if flag.Value.Type() == "string" { + // put quotes on the value + format = format + "=%q" + } else { + format = format + "=%s" + } + if len(flag.NoOptDefVal) > 0 { + format = format + "]" + } + format = format + "\t%s\n" + shorthand := flag.Shorthand + fmt.Fprintf(x, format, shorthand, flag.Name, flag.DefValue, flag.Usage) + }) + + return x.String() +} + +func getSubCommands(cmd *cobra.Command) []*cobra.Command { + var subCommands []*cobra.Command + for _, subCmd := range cmd.Commands() { + subCommands = append(subCommands, subCmd) + subCommands = append(subCommands, getSubCommands(subCmd)...) + } + return subCommands +} + +func UsageFunc(cmd *cobra.Command, version, APIVersion string) error { + subCommands := getSubCommands(cmd) + tabOut := getTabOutWithWriter(os.Stdout) + commandUsageTemplate.Execute(tabOut, struct { + Cmd *cobra.Command + LocalFlags string + GlobalFlags string + SubCommands []*cobra.Command + Version string + APIVersion string + }{ + cmd, + etcdFlagUsages(cmd.LocalFlags()), + etcdFlagUsages(cmd.InheritedFlags()), + subCommands, + version, + APIVersion, + }) + tabOut.Flush() + return nil +} + +func getTabOutWithWriter(writer io.Writer) *tabwriter.Writer { + aTabOut := new(tabwriter.Writer) + aTabOut.Init(writer, 0, 8, 1, '\t', 0) + return aTabOut +} diff --git a/pkg/cobrautl/help.go b/pkg/cobrautl/help.go index 574578199e70..d4c4896b3277 100644 --- a/pkg/cobrautl/help.go +++ b/pkg/cobrautl/help.go @@ -151,6 +151,8 @@ func getSubCommands(cmd *cobra.Command) []*cobra.Command { return subCommands } +// UsageFunc is the usage function for the cobra command. +// Deprecated: Please use go.etcd.io/etcd/etcdctl/v3/util instead. func UsageFunc(cmd *cobra.Command, version, APIVersion string) error { subCommands := getSubCommands(cmd) tabOut := getTabOutWithWriter(os.Stdout) From b504f40b760a385ec771f2f9997621ff66f89213 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 17:45:14 +0000 Subject: [PATCH 0023/1068] build(deps): bump github/codeql-action from 3.28.9 to 3.28.10 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.9 to 3.28.10. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0...b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 676a5a7da46c..b095950aca60 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 + uses: github/codeql-action/init@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 + uses: github/codeql-action/autobuild@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 + uses: github/codeql-action/analyze@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index b0ac7e1e1c6a..3d54338ee715 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 + uses: github/codeql-action/upload-sarif@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 with: sarif_file: results.sarif From 0096b89c9631365d4187055b50fe0b8ee9a561e8 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 5 Mar 2025 00:48:00 +0530 Subject: [PATCH 0024/1068] dependency: bump github.com/cheggaaa/pb/v3 from 3.1.6 to 3.1.7 This commit will bump dependency github.com/cheggaaa/pb/v3 from 3.1.6 to 3.1.7 Signed-off-by: ArkaSaha30 --- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 9a0ca5ee83fe..7ecf63d8f523 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -6,7 +6,7 @@ toolchain go1.23.6 require ( github.com/bgentry/speakeasy v0.2.0 - github.com/cheggaaa/pb/v3 v3.1.6 + github.com/cheggaaa/pb/v3 v3.1.7 github.com/dustin/go-humanize v1.0.1 github.com/olekukonko/tablewriter v0.0.5 github.com/spf13/cobra v1.9.1 diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 52df0a9f08c9..5e2f363ee158 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -6,8 +6,8 @@ github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE5 github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cheggaaa/pb/v3 v3.1.6 h1:h0x+vd7EiUohAJ29DJtJy+SNAc55t/elW3jCD086EXk= -github.com/cheggaaa/pb/v3 v3.1.6/go.mod h1:urxmfVtaxT+9aWk92DbsvXFZtNSWQSO5TRAp+MJ3l1s= +github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= +github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= diff --git a/go.mod b/go.mod index 592e88619fff..2c5111c93289 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ replace ( require ( github.com/bgentry/speakeasy v0.2.0 - github.com/cheggaaa/pb/v3 v3.1.6 + github.com/cheggaaa/pb/v3 v3.1.7 github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 github.com/spf13/cobra v1.9.1 diff --git a/go.sum b/go.sum index a0951324fc1f..3c93ce13566b 100644 --- a/go.sum +++ b/go.sum @@ -11,8 +11,8 @@ github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cheggaaa/pb/v3 v3.1.6 h1:h0x+vd7EiUohAJ29DJtJy+SNAc55t/elW3jCD086EXk= -github.com/cheggaaa/pb/v3 v3.1.6/go.mod h1:urxmfVtaxT+9aWk92DbsvXFZtNSWQSO5TRAp+MJ3l1s= +github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= +github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= diff --git a/tests/go.mod b/tests/go.mod index 6269b8e97fed..a16afbbca6ae 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -57,7 +57,7 @@ require ( github.com/bgentry/speakeasy v0.2.0 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cheggaaa/pb/v3 v3.1.6 // indirect + github.com/cheggaaa/pb/v3 v3.1.7 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/creack/pty v1.1.18 // indirect github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index 7ce9dc487bf9..2c8b7b50f7a9 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -13,8 +13,8 @@ github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cheggaaa/pb/v3 v3.1.6 h1:h0x+vd7EiUohAJ29DJtJy+SNAc55t/elW3jCD086EXk= -github.com/cheggaaa/pb/v3 v3.1.6/go.mod h1:urxmfVtaxT+9aWk92DbsvXFZtNSWQSO5TRAp+MJ3l1s= +github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= +github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= From 201191558f97864371bf3d21ac7dbf0eca246c22 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 5 Mar 2025 01:03:17 +0530 Subject: [PATCH 0025/1068] dependency: bump golang.org/x/crypto from 0.33.0 to 0.35.0 This commit will bump dependency golang.org/x/crypto from 0.33.0 to 0.35.0 Signed-off-by: ArkaSaha30 --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 13fa020a6721..ce0b5cfe7205 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -82,7 +82,7 @@ require ( go.opentelemetry.io/otel/trace v1.34.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.33.0 // indirect + golang.org/x/crypto v0.35.0 // indirect golang.org/x/net v0.35.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index d4fab287a304..af714630977c 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -131,8 +131,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= +golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= diff --git a/go.mod b/go.mod index 2c5111c93289..28e03b0c9d5d 100644 --- a/go.mod +++ b/go.mod @@ -92,7 +92,7 @@ require ( go.opentelemetry.io/otel/trace v1.34.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.33.0 // indirect + golang.org/x/crypto v0.35.0 // indirect golang.org/x/net v0.35.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect diff --git a/go.sum b/go.sum index 3c93ce13566b..bb52c720a416 100644 --- a/go.sum +++ b/go.sum @@ -179,8 +179,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= +golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= diff --git a/server/go.mod b/server/go.mod index c2f3882d89d1..9bb58c66a211 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,7 +37,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 go.opentelemetry.io/otel/sdk v1.34.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.33.0 + golang.org/x/crypto v0.35.0 golang.org/x/net v0.35.0 golang.org/x/time v0.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb diff --git a/server/go.sum b/server/go.sum index 0bf5f07e4f5f..fcbcb9ac4751 100644 --- a/server/go.sum +++ b/server/go.sum @@ -157,8 +157,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= +golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= diff --git a/tests/go.mod b/tests/go.mod index a16afbbca6ae..538d868964fb 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -44,7 +44,7 @@ require ( go.opentelemetry.io/otel/trace v1.34.0 go.opentelemetry.io/proto/otlp v1.5.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.33.0 + golang.org/x/crypto v0.35.0 golang.org/x/sync v0.11.0 golang.org/x/time v0.10.0 google.golang.org/grpc v1.70.0 diff --git a/tests/go.sum b/tests/go.sum index 2c8b7b50f7a9..f67219c1c299 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -183,8 +183,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= +golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 317a6047f3b0..f106d5aa69a6 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -212,7 +212,7 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.33.0 // indirect + golang.org/x/crypto v0.35.0 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect golang.org/x/mod v0.23.0 // indirect golang.org/x/net v0.35.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index f4e3bbbbfc5b..d3adfb0b7780 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -543,8 +543,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= +golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= From 882bedff2860e71205c3a499e8b986767ecdf493 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 5 Mar 2025 01:18:36 +0530 Subject: [PATCH 0026/1068] dependency: bump github.com/google/go-cmp from 0.6.0 to 0.7.0 This commit will bump dependency github.com/google/go-cmp from 0.6.0 to 0.7.0 Signed-off-by: ArkaSaha30 --- api/go.mod | 1 + pkg/go.mod | 1 + pkg/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 1 + tools/testgrid-analysis/go.sum | 4 ++-- 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/api/go.mod b/api/go.mod index 8babe0e0fda5..69826ec99d6f 100644 --- a/api/go.mod +++ b/api/go.mod @@ -17,6 +17,7 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect + github.com/google/go-cmp v0.7.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.13.1 // indirect go.opentelemetry.io/otel v1.34.0 // indirect diff --git a/pkg/go.mod b/pkg/go.mod index 08ee35db20c8..2475f23c6e36 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -18,6 +18,7 @@ require ( require ( github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/google/go-cmp v0.7.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect go.opentelemetry.io/otel v1.34.0 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index ec0d4f763f75..8dae46464567 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -14,8 +14,8 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 98bf2a2eb760..ee663a03e92e 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -12,6 +12,7 @@ require ( ) require ( + github.com/google/go-cmp v0.7.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.6 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index b48e24a2833c..b6c275abc3bb 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -935,8 +935,8 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-github/v60 v60.0.0 h1:oLG98PsLauFvvu4D/YPxq374jhSxFYdzQGNCyONLfn8= github.com/google/go-github/v60 v60.0.0/go.mod h1:ByhX2dP9XT9o/ll2yXAu2VD8l5eNVg8hD4Cr0S/LmQk= github.com/google/go-pkcs11 v0.2.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= From 75cb94bc77f78ad2010c2333982922fce94e756a Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 5 Mar 2025 01:30:32 +0530 Subject: [PATCH 0027/1068] dependency: bump github.com/klauspost/compress from 1.17.9 to 1.18.0 This commit will bump dependency github.com/klauspost/compress from 1.17.9 to 1.18.0 which is an indirect dependency of the direct dependency: github.com/prometheus/client_golang Signed-off-by: ArkaSaha30 --- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 1 + tools/mod/go.sum | 4 ++-- 13 files changed, 20 insertions(+), 19 deletions(-) diff --git a/client/v3/go.mod b/client/v3/go.mod index de1e3d6ddf91..9093b39de29b 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -26,7 +26,7 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.18.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 8132e7c02b88..7066a01fe891 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -32,8 +32,8 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5uk github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 5e2f363ee158..a218177a4e31 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -42,8 +42,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index ce0b5cfe7205..23fd1ec7017e 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -57,7 +57,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.18.0 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index af714630977c..9a68e4e68e09 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -49,8 +49,8 @@ github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbd github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= diff --git a/go.mod b/go.mod index 28e03b0c9d5d..c0c7a28639b2 100644 --- a/go.mod +++ b/go.mod @@ -64,7 +64,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.18.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect diff --git a/go.sum b/go.sum index bb52c720a416..847cd04c0960 100644 --- a/go.sum +++ b/go.sum @@ -79,8 +79,8 @@ github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbd github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= diff --git a/server/go.mod b/server/go.mod index 9bb58c66a211..8b1e66ef7b6b 100644 --- a/server/go.mod +++ b/server/go.mod @@ -58,7 +58,7 @@ require ( github.com/gorilla/websocket v1.4.2 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.18.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect diff --git a/server/go.sum b/server/go.sum index fcbcb9ac4751..2b8bd5612dad 100644 --- a/server/go.sum +++ b/server/go.sum @@ -71,8 +71,8 @@ github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbd github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= diff --git a/tests/go.mod b/tests/go.mod index 538d868964fb..a0f798519d41 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -74,7 +74,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.18.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect diff --git a/tests/go.sum b/tests/go.sum index f67219c1c299..e54b856a6199 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -83,8 +83,8 @@ github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbd github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index f106d5aa69a6..d63ef9c2cf4b 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -119,6 +119,7 @@ require ( github.com/kisielk/errcheck v1.8.0 // indirect github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 // indirect github.com/kkHAIKE/contextcheck v1.1.5 // indirect + github.com/klauspost/compress v1.18.0 // indirect github.com/kulti/thelper v0.6.3 // indirect github.com/kunwardeep/paralleltest v1.0.10 // indirect github.com/lasiar/canonicalheader v1.1.2 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index d3adfb0b7780..37c1246c0ad1 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -254,8 +254,8 @@ github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 h1:veS9QfglfvqAw github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= github.com/kkHAIKE/contextcheck v1.1.5 h1:CdnJh63tcDe53vG+RebdpdXJTc9atMgGqdx8LXxiilg= github.com/kkHAIKE/contextcheck v1.1.5/go.mod h1:O930cpht4xb1YQpK+1+AgoM3mFsvxr7uyFptcnWTYUA= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= From 474836019d1ba4ff79d2a1ac950dee3a888d39fa Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 5 Mar 2025 01:35:14 +0530 Subject: [PATCH 0028/1068] dependency: bump github.com/prometheus/client_golang from 1.20.5 to 1.21.0 This commit will bump dependency github.com/prometheus/client_golang from 1.20.5 to 1.21.0 Signed-off-by: ArkaSaha30 --- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 13 files changed, 20 insertions(+), 20 deletions(-) diff --git a/client/v3/go.mod b/client/v3/go.mod index 9093b39de29b..2efea61d1af9 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 - github.com/prometheus/client_golang v1.20.5 + github.com/prometheus/client_golang v1.21.0 github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 diff --git a/client/v3/go.sum b/client/v3/go.sum index 7066a01fe891..95562126b3f2 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -44,8 +44,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= +github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index a218177a4e31..53848694962e 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -61,8 +61,8 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= +github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 23fd1ec7017e..719818f3d1a9 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -61,7 +61,7 @@ require ( github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.20.5 // indirect + github.com/prometheus/client_golang v1.21.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.62.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 9a68e4e68e09..b4f75af333ac 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -66,8 +66,8 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= +github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= diff --git a/go.mod b/go.mod index c0c7a28639b2..67646b7a7720 100644 --- a/go.mod +++ b/go.mod @@ -71,7 +71,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.20.5 // indirect + github.com/prometheus/client_golang v1.21.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.62.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect diff --git a/go.sum b/go.sum index 847cd04c0960..1b589d228eb7 100644 --- a/go.sum +++ b/go.sum @@ -104,8 +104,8 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= +github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= diff --git a/server/go.mod b/server/go.mod index 8b1e66ef7b6b..31d34a61d39c 100644 --- a/server/go.mod +++ b/server/go.mod @@ -18,7 +18,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/jonboulle/clockwork v0.5.0 - github.com/prometheus/client_golang v1.20.5 + github.com/prometheus/client_golang v1.21.0 github.com/prometheus/client_model v0.6.1 github.com/soheilhy/cmux v0.1.5 github.com/spf13/cobra v1.9.1 diff --git a/server/go.sum b/server/go.sum index 2b8bd5612dad..0f68cc8b7395 100644 --- a/server/go.sum +++ b/server/go.sum @@ -87,8 +87,8 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= +github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= diff --git a/tests/go.mod b/tests/go.mod index a0f798519d41..d85abbd5a098 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -23,7 +23,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 - github.com/prometheus/client_golang v1.20.5 + github.com/prometheus/client_golang v1.21.0 github.com/prometheus/client_model v0.6.1 github.com/prometheus/common v0.62.0 github.com/soheilhy/cmux v0.1.5 diff --git a/tests/go.sum b/tests/go.sum index e54b856a6199..fd8198e1398b 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -108,8 +108,8 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= +github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index d63ef9c2cf4b..c0e53ae2b7da 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -153,7 +153,7 @@ require ( github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/polyfloyd/go-errorlint v1.7.1 // indirect - github.com/prometheus/client_golang v1.20.5 // indirect + github.com/prometheus/client_golang v1.21.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.62.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 37c1246c0ad1..3ff2fa7b280b 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -356,8 +356,8 @@ github.com/polyfloyd/go-errorlint v1.7.1 h1:RyLVXIbosq1gBdk/pChWA8zWYLsq9UEw7a1L github.com/polyfloyd/go-errorlint v1.7.1/go.mod h1:aXjNb1x2TNhoLsk26iv1yl7a+zTnXPhwEMtEXukiLR8= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= +github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= From bec5c6b9ae5920f47b7e632864eb060b05b87f2f Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 5 Mar 2025 01:46:56 +0530 Subject: [PATCH 0029/1068] dependency: bump github.com/golangci/golangci-lint from 1.64.5 to 1.64.6 This commit will bump dependency github.com/golangci/golangci-lint from 1.64.5 to 1.64.6 Signed-off-by: ArkaSaha30 --- tools/mod/go.mod | 28 ++++++++++++------------ tools/mod/go.sum | 55 ++++++++++++++++++++++++------------------------ 2 files changed, 42 insertions(+), 41 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index c0e53ae2b7da..ab791371fe81 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -10,7 +10,7 @@ require ( github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint v1.64.5 + github.com/golangci/golangci-lint v1.64.6 github.com/google/addlicense v1.1.1 github.com/google/yamlfmt v0.16.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 @@ -23,9 +23,9 @@ require ( ) require ( - 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect + 4d63.com/gocheckcompilerdirectives v1.3.0 // indirect 4d63.com/gochecknoglobals v0.2.2 // indirect - github.com/4meepo/tagalign v1.4.1 // indirect + github.com/4meepo/tagalign v1.4.2 // indirect github.com/Abirdcfly/dupword v0.1.3 // indirect github.com/Antonboom/errname v1.0.0 // indirect github.com/Antonboom/nilnil v1.0.1 // indirect @@ -33,7 +33,7 @@ require ( github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect github.com/Crocmagnon/fatcontext v0.7.1 // indirect github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect - github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 // indirect + github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 // indirect github.com/Masterminds/semver/v3 v3.3.0 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.0 // indirect github.com/akhenakh/hunspellgo v0.0.0-20160221122622-9db38fa26e19 // indirect @@ -55,7 +55,7 @@ require ( github.com/breml/errchkjson v0.4.0 // indirect github.com/butuzov/ireturn v0.3.1 // indirect github.com/butuzov/mirror v1.3.0 // indirect - github.com/catenacyber/perfsprint v0.8.1 // indirect + github.com/catenacyber/perfsprint v0.8.2 // indirect github.com/ccojocar/zxcvbn-go v1.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charithe/durationcheck v0.0.10 // indirect @@ -100,7 +100,7 @@ require ( github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/gordonklaus/ineffassign v0.1.0 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect - github.com/gostaticanalysis/comment v1.4.2 // indirect + github.com/gostaticanalysis/comment v1.5.0 // indirect github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect github.com/gostaticanalysis/nilerr v0.1.1 // indirect github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect @@ -116,14 +116,14 @@ require ( github.com/jmoiron/sqlx v1.3.5 // indirect github.com/julz/importas v0.2.0 // indirect github.com/karamaru-alpha/copyloopvar v1.2.1 // indirect - github.com/kisielk/errcheck v1.8.0 // indirect + github.com/kisielk/errcheck v1.9.0 // indirect github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 // indirect - github.com/kkHAIKE/contextcheck v1.1.5 // indirect + github.com/kkHAIKE/contextcheck v1.1.6 // indirect github.com/klauspost/compress v1.18.0 // indirect github.com/kulti/thelper v0.6.3 // indirect github.com/kunwardeep/paralleltest v1.0.10 // indirect github.com/lasiar/canonicalheader v1.1.2 // indirect - github.com/ldez/exptostd v0.4.1 // indirect + github.com/ldez/exptostd v0.4.2 // indirect github.com/ldez/gomoddirectives v0.6.1 // indirect github.com/ldez/grignotin v0.9.0 // indirect github.com/ldez/tagliatelle v0.7.1 // indirect @@ -139,7 +139,7 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mattn/go-sqlite3 v1.14.22 // indirect - github.com/mgechev/revive v1.6.1 // indirect + github.com/mgechev/revive v1.7.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moricho/tparallel v0.3.2 // indirect @@ -147,7 +147,7 @@ require ( github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect - github.com/nunnatsa/ginkgolinter v0.19.0 // indirect + github.com/nunnatsa/ginkgolinter v0.19.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect @@ -164,7 +164,7 @@ require ( github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect github.com/raeperd/recvcheck v0.2.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect - github.com/rogpeppe/go-internal v1.13.1 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/ryancurrah/gomodguard v1.3.5 // indirect github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect @@ -189,8 +189,8 @@ require ( github.com/stretchr/objx v0.5.2 // indirect github.com/stretchr/testify v1.10.0 // indirect github.com/subosito/gotenv v1.4.1 // indirect - github.com/tdakkota/asciicheck v0.4.0 // indirect - github.com/tetafro/godot v1.4.20 // indirect + github.com/tdakkota/asciicheck v0.4.1 // indirect + github.com/tetafro/godot v1.5.0 // indirect github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 // indirect github.com/timonwong/loggercheck v0.10.1 // indirect github.com/tomarrell/wrapcheck/v2 v2.10.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 3ff2fa7b280b..666208c23eb7 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -1,9 +1,9 @@ -4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA= -4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= +4d63.com/gocheckcompilerdirectives v1.3.0 h1:Ew5y5CtcAAQeTVKUVFrE7EwHMrTO6BggtEj8BZSjZ3A= +4d63.com/gocheckcompilerdirectives v1.3.0/go.mod h1:ofsJ4zx2QAuIP/NO/NAh1ig6R1Fb18/GI7RVMwz7kAY= 4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= 4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= -github.com/4meepo/tagalign v1.4.1 h1:GYTu2FaPGOGb/xJalcqHeD4il5BiCywyEYZOA55P6J4= -github.com/4meepo/tagalign v1.4.1/go.mod h1:2H9Yu6sZ67hmuraFgfZkNcg5Py9Ch/Om9l2K/2W1qS4= +github.com/4meepo/tagalign v1.4.2 h1:0hcLHPGMjDyM1gHG58cS73aQF8J4TdVR96TZViorO9E= +github.com/4meepo/tagalign v1.4.2/go.mod h1:+p4aMyFM+ra7nb41CnFG6aSDXqRxU/w1VQqScKqDARI= github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE= github.com/Abirdcfly/dupword v0.1.3/go.mod h1:8VbB2t7e10KRNdwTVoxdBaxla6avbhGzb8sCTygUMhw= github.com/Antonboom/errname v1.0.0 h1:oJOOWR07vS1kRusl6YRSlat7HFnb3mSfMl6sDMRoTBA= @@ -18,8 +18,8 @@ github.com/Crocmagnon/fatcontext v0.7.1 h1:SC/VIbRRZQeQWj/TcQBS6JmrXcfA+BU4OGSVU github.com/Crocmagnon/fatcontext v0.7.1/go.mod h1:1wMvv3NXEBJucFGfwOJBxSVWcoIO6emV215SMkW9MFU= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= -github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 h1:/fTUt5vmbkAcMBt4YQiuC23cV0kEsN1MVMNqeOW43cU= -github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0/go.mod h1:ONJg5sxcbsdQQ4pOW8TGdTidT2TMAUy/2Xhr8mrYaao= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 h1:Sz1JIXEcSfhz7fUi7xHnhpIE0thVASYjvosApmHuD2k= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1/go.mod h1:n/LSCXNuIYqVfBlVXyHfMQkZDdp1/mmxfSjADd3z1Zg= github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJPdp74zmpA= @@ -71,8 +71,8 @@ github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M= github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= -github.com/catenacyber/perfsprint v0.8.1 h1:bGOHuzHe0IkoGeY831RW4aSlt1lPRd3WRAScSWOaV7E= -github.com/catenacyber/perfsprint v0.8.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= +github.com/catenacyber/perfsprint v0.8.2 h1:+o9zVmCSVa7M4MvabsWvESEhpsMkhfE7k0sHNGL95yw= +github.com/catenacyber/perfsprint v0.8.2/go.mod h1:q//VWC2fWbcdSLEY1R3l8n0zQCDPdE4IjZwyY1HMunM= github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg= github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= @@ -170,8 +170,8 @@ github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUP github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint v1.64.5 h1:5omC86XFBKXZgCrVdUWU+WNHKd+CWCxNx717KXnzKZY= -github.com/golangci/golangci-lint v1.64.5/go.mod h1:WZnwq8TF0z61h3jLQ7Sk5trcP7b3kUFxLD6l1ivtdvU= +github.com/golangci/golangci-lint v1.64.6 h1:jOLaQN41IV7bMzXuNC4UnQGll7N1xY6eFDXkXEPGKAs= +github.com/golangci/golangci-lint v1.64.6/go.mod h1:Wz9q+6EVuqGQ94GQ96RB2mjpcZYTOGhBhbt4O7REPu4= github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= @@ -206,8 +206,9 @@ github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= -github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= +github.com/gostaticanalysis/comment v1.5.0 h1:X82FLl+TswsUMpMh17srGRuKaaXprTaytmEpgnKIDu8= +github.com/gostaticanalysis/comment v1.5.0/go.mod h1:V6eb3gpCv9GNVqb6amXzEUX3jXLVK/AdA+IrAMSqvEc= github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk= github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY= github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= @@ -247,13 +248,13 @@ github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx github.com/karamaru-alpha/copyloopvar v1.2.1 h1:wmZaZYIjnJ0b5UoKDjUHrikcV0zuPyyxI4SVplLd2CI= github.com/karamaru-alpha/copyloopvar v1.2.1/go.mod h1:nFmMlFNlClC2BPvNaHMdkirmTJxVCY0lhxBtlfOypMM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/errcheck v1.8.0 h1:ZX/URYa7ilESY19ik/vBmCn6zdGQLxACwjAcWbHlYlg= -github.com/kisielk/errcheck v1.8.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ= +github.com/kisielk/errcheck v1.9.0 h1:9xt1zI9EBfcYBvdU1nVrzMzzUPUtPKs9bVSIM3TAb3M= +github.com/kisielk/errcheck v1.9.0/go.mod h1:kQxWMMVZgIkDq7U8xtG/n2juOjbLgZtedi0D+/VL/i8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 h1:veS9QfglfvqAw2e+eeNT/SbGySq8ajECXJ9e4fPoLhY= github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= -github.com/kkHAIKE/contextcheck v1.1.5 h1:CdnJh63tcDe53vG+RebdpdXJTc9atMgGqdx8LXxiilg= -github.com/kkHAIKE/contextcheck v1.1.5/go.mod h1:O930cpht4xb1YQpK+1+AgoM3mFsvxr7uyFptcnWTYUA= +github.com/kkHAIKE/contextcheck v1.1.6 h1:7HIyRcnyzxL9Lz06NGhiKvenXq7Zw6Q0UQu/ttjfJCE= +github.com/kkHAIKE/contextcheck v1.1.6/go.mod h1:3dDbMRNBFaq8HFXWC1JyvDSPm43CmE6IuHam8Wr0rkg= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -271,8 +272,8 @@ github.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCT github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= -github.com/ldez/exptostd v0.4.1 h1:DIollgQ3LWZMp3HJbSXsdE2giJxMfjyHj3eX4oiD6JU= -github.com/ldez/exptostd v0.4.1/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ= +github.com/ldez/exptostd v0.4.2 h1:l5pOzHBz8mFOlbcifTxzfyYbgEmoUqjxLFHZkjlbHXs= +github.com/ldez/exptostd v0.4.2/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ= github.com/ldez/gomoddirectives v0.6.1 h1:Z+PxGAY+217f/bSGjNZr/b2KTXcyYLgiWI6geMBN2Qc= github.com/ldez/gomoddirectives v0.6.1/go.mod h1:cVBiu3AHR9V31em9u2kwfMKD43ayN5/XDgr+cdaFaKs= github.com/ldez/grignotin v0.9.0 h1:MgOEmjZIVNn6p5wPaGp/0OKWyvq42KnzAt/DAb8O4Ow= @@ -312,8 +313,8 @@ github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/mgechev/revive v1.6.1 h1:ncK0ZCMWtb8GXwVAmk+IeWF2ULIDsvRxSRfg5sTwQ2w= -github.com/mgechev/revive v1.6.1/go.mod h1:/2tfHWVO8UQi/hqJsIYNEKELi+DJy/e+PQpLgTB1v88= +github.com/mgechev/revive v1.7.0 h1:JyeQ4yO5K8aZhIKf5rec56u0376h8AlKNQEmjfkjKlY= +github.com/mgechev/revive v1.7.0/go.mod h1:qZnwcNhoguE58dfi96IJeSTPeZQejNeoMQLUZGi4SW4= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -330,8 +331,8 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/nunnatsa/ginkgolinter v0.19.0 h1:CnHRFAeBS3LdLI9h+Jidbcc5KH71GKOmaBZQk8Srnto= -github.com/nunnatsa/ginkgolinter v0.19.0/go.mod h1:jkQ3naZDmxaZMXPWaS9rblH+i+GWXQCaS/JFIWcOH2s= +github.com/nunnatsa/ginkgolinter v0.19.1 h1:mjwbOlDQxZi9Cal+KfbEJTCz327OLNfwNvoZ70NJ+c4= +github.com/nunnatsa/ginkgolinter v0.19.1/go.mod h1:jkQ3naZDmxaZMXPWaS9rblH+i+GWXQCaS/JFIWcOH2s= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= @@ -380,8 +381,8 @@ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryancurrah/gomodguard v1.3.5 h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV3oJmPU= github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkqr+wKjSxTdsNJE= @@ -450,14 +451,14 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/tdakkota/asciicheck v0.4.0 h1:VZ13Itw4k1i7d+dpDSNS8Op645XgGHpkCEh/WHicgWw= -github.com/tdakkota/asciicheck v0.4.0/go.mod h1:0k7M3rCfRXb0Z6bwgvkEIMleKH3kXNz9UqJ9Xuqopr8= +github.com/tdakkota/asciicheck v0.4.1 h1:bm0tbcmi0jezRA2b5kg4ozmMuGAFotKI3RZfrhfovg8= +github.com/tdakkota/asciicheck v0.4.1/go.mod h1:0k7M3rCfRXb0Z6bwgvkEIMleKH3kXNz9UqJ9Xuqopr8= github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= -github.com/tetafro/godot v1.4.20 h1:z/p8Ek55UdNvzt4TFn2zx2KscpW4rWqcnUrdmvWJj7E= -github.com/tetafro/godot v1.4.20/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= +github.com/tetafro/godot v1.5.0 h1:aNwfVI4I3+gdxjMgYPus9eHmoBeJIbnajOyqZYStzuw= +github.com/tetafro/godot v1.5.0/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 h1:y4mJRFlM6fUyPhoXuFg/Yu02fg/nIPFMOY8tOqppoFg= github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= github.com/timonwong/loggercheck v0.10.1 h1:uVZYClxQFpw55eh+PIoqM7uAOHMrhVcDoWDery9R8Lg= From d54bc19daf6f89971cab14bd007987cf84fe3432 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 4 Mar 2025 18:14:13 +0000 Subject: [PATCH 0030/1068] ensure google.golang.org/genproto/googleapis/rpc version consistent Signed-off-by: Benjamin Wang --- pkg/go.mod | 4 ++-- pkg/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 4 ++-- tools/testgrid-analysis/go.sum | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/go.mod b/pkg/go.mod index 83329929058e..08ee35db20c8 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/pkg/v3 -go 1.23 +go 1.23.0 toolchain go1.23.6 @@ -26,7 +26,7 @@ require ( golang.org/x/net v0.35.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/protobuf v1.36.5 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index e28b1a7a803e..ec0d4f763f75 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -59,8 +59,8 @@ golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 h1:5bKytslY8ViY0Cj/ewmRtrWHW64bNF03cAatUUFCdFI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 98a7280d97e7..98bf2a2eb760 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 -go 1.23 +go 1.23.0 toolchain go1.23.6 @@ -20,6 +20,6 @@ require ( golang.org/x/net v0.35.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/grpc v1.70.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 3ac63538ea92..b48e24a2833c 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1841,8 +1841,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 h1:5bKytslY8ViY0Cj/ewmRtrWHW64bNF03cAatUUFCdFI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= From 658bd405d317a48fd82fbe851a0ad9d6529c4c69 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 5 Mar 2025 12:37:11 +0530 Subject: [PATCH 0031/1068] dependency: bump golang.org/x/net from v0.35.0 to v0.36.0 This commit will bump dependency golang.org/x/net from v0.35.0 to v0.36.0 Signed-off-by: ArkaSaha30 --- api/go.mod | 5 ++--- api/go.sum | 8 ++++---- client/internal/v2/go.sum | 22 ++++++++++++++++++++++ client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 8 ++++---- etcdctl/go.mod | 2 +- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 2 +- etcdutl/go.sum | 8 ++++---- go.mod | 2 +- go.sum | 8 ++++---- pkg/go.mod | 2 +- pkg/go.sum | 8 ++++---- server/go.mod | 2 +- server/go.sum | 8 ++++---- tests/go.mod | 2 +- tests/go.sum | 8 ++++---- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 23 files changed, 72 insertions(+), 51 deletions(-) create mode 100644 client/internal/v2/go.sum diff --git a/api/go.mod b/api/go.mod index 69826ec99d6f..4372c1a44b7b 100644 --- a/api/go.mod +++ b/api/go.mod @@ -17,12 +17,11 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/google/go-cmp v0.7.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/rogpeppe/go-internal v1.13.1 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.34.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect - golang.org/x/net v0.35.0 // indirect + golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/api/go.sum b/api/go.sum index c23669e91fbc..5bc304426960 100644 --- a/api/go.sum +++ b/api/go.sum @@ -24,8 +24,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -51,8 +51,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/client/internal/v2/go.sum b/client/internal/v2/go.sum new file mode 100644 index 000000000000..51cbd9176b5a --- /dev/null +++ b/client/internal/v2/go.sum @@ -0,0 +1,22 @@ +github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= +github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 0976583d1f78..b71643faad86 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -15,7 +15,7 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/rogpeppe/go-internal v1.13.1 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect go.uber.org/multierr v1.11.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/client/pkg/go.sum b/client/pkg/go.sum index 9afaa25cf13b..5de2e9fdbaa2 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -15,8 +15,8 @@ github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsK github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/client/v3/go.mod b/client/v3/go.mod index 2efea61d1af9..951219c5637c 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -35,7 +35,7 @@ require ( go.opentelemetry.io/otel/metric v1.34.0 // indirect go.opentelemetry.io/otel/trace v1.34.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.35.0 // indirect + golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 95562126b3f2..84124bc68a7e 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -52,8 +52,8 @@ github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -85,8 +85,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 7ecf63d8f523..19c07688fb5f 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -38,7 +38,7 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.35.0 // indirect + golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 53848694962e..2966b4e18898 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -72,8 +72,8 @@ github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoG 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= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= @@ -110,8 +110,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 719818f3d1a9..010b900f3329 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -83,7 +83,7 @@ require ( go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.35.0 // indirect - golang.org/x/net v0.35.0 // indirect + golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect golang.org/x/time v0.10.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index b4f75af333ac..95d3a0f29c7e 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -77,8 +77,8 @@ github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoG 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= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= @@ -140,8 +140,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/go.mod b/go.mod index 67646b7a7720..c495d9a254de 100644 --- a/go.mod +++ b/go.mod @@ -93,7 +93,7 @@ require ( go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.35.0 // indirect - golang.org/x/net v0.35.0 // indirect + golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/go.sum b/go.sum index 1b589d228eb7..16e860331c96 100644 --- a/go.sum +++ b/go.sum @@ -116,8 +116,8 @@ github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoG 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= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= @@ -196,8 +196,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/pkg/go.mod b/pkg/go.mod index 2475f23c6e36..fa4bce4fea21 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -24,7 +24,7 @@ require ( go.opentelemetry.io/otel v1.34.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.35.0 // indirect + golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 8dae46464567..cee007e6d857 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -26,8 +26,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= @@ -53,8 +53,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= diff --git a/server/go.mod b/server/go.mod index 31d34a61d39c..48db5befddbe 100644 --- a/server/go.mod +++ b/server/go.mod @@ -38,7 +38,7 @@ require ( go.opentelemetry.io/otel/sdk v1.34.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.35.0 - golang.org/x/net v0.35.0 + golang.org/x/net v0.36.0 golang.org/x/time v0.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb google.golang.org/grpc v1.70.0 diff --git a/server/go.sum b/server/go.sum index 0f68cc8b7395..e99343d71211 100644 --- a/server/go.sum +++ b/server/go.sum @@ -96,8 +96,8 @@ github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= @@ -174,8 +174,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tests/go.mod b/tests/go.mod index d85abbd5a098..3b05b59017a8 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -94,7 +94,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect go.opentelemetry.io/otel/metric v1.34.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.35.0 // indirect + golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/tests/go.sum b/tests/go.sum index fd8198e1398b..0bb1c1773a1a 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -120,8 +120,8 @@ github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoG 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= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= @@ -200,8 +200,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index ab791371fe81..89cb5e87ab4f 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -216,7 +216,7 @@ require ( golang.org/x/crypto v0.35.0 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect golang.org/x/mod v0.23.0 // indirect - golang.org/x/net v0.35.0 // indirect + golang.org/x/net v0.36.0 // indirect golang.org/x/sync v0.11.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/term v0.29.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 666208c23eb7..abfc6ebd610a 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -591,8 +591,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index ee663a03e92e..0b5c873178a9 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -18,7 +18,7 @@ require ( github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/otel v1.34.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect - golang.org/x/net v0.35.0 // indirect + golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index b6c275abc3bb..70c5eed0c67c 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1336,8 +1336,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From ea4a1d1561727eebef7bdf2c231d90850b14019d Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 28 Feb 2025 20:51:14 -0800 Subject: [PATCH 0032/1068] Disable usetesting linter The linter fails with several warnings from new Go 1.24 functions. Due to the amount of changed lines, it will be better to address them in several follow-up pull requests. > 146 files changed, 1157 insertions(+), 1212 deletions(-) Signed-off-by: Ivan Valdes --- tools/.golangci.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/.golangci.yaml b/tools/.golangci.yaml index f8d602cc08fb..0cc4524e9fd8 100644 --- a/tools/.golangci.yaml +++ b/tools/.golangci.yaml @@ -35,7 +35,8 @@ linters: - unparam - unused - usestdlibvars - - usetesting + # Disabled in the meanwhile, it raises several issues with new Go 1.24 functions + # - usetesting - whitespace linters-settings: # please keep this alphabetized goimports: From 4f82b3f4df90944ca33e8cc45d9d36bb0c731977 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 14 Feb 2025 23:09:41 -0800 Subject: [PATCH 0033/1068] scripts/release: Use `go mod` instead of `go list` Replace `go list -m` with `go mod edit -json`, as the latter can return the same information. This will be helpful when the project migrates to using a Go workspace, as it will return the current module defined in go.mod rather than all the modules from the current directory (using a workspace, the top-level go.mod will return all the child modules from the repository). Signed-off-by: Ivan Valdes --- scripts/release_mod.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/release_mod.sh b/scripts/release_mod.sh index 70becdfd71d5..0495feba2452 100755 --- a/scripts/release_mod.sh +++ b/scripts/release_mod.sh @@ -30,7 +30,7 @@ function update_module_version() { local v3version="${1}" local modules run go mod tidy - modules=$(run go list -f '{{if not .Main}}{{if not .Indirect}}{{.Path}}{{end}}{{end}}' -m all) + modules=$(go mod edit -json | jq -r '.Require[] | select(.Indirect | not) | .Path') v3deps=$(echo "${modules}" | grep -E "${ROOT_MODULE}/.*/v3") for dep in ${v3deps}; do @@ -86,16 +86,16 @@ function push_mod_tags_cmd { # Any module ccan be used for this local main_version - main_version=$(go list -f '{{.Version}}' -m "${ROOT_MODULE}/api/v3") + main_version=$(go mod edit -json | jq -r '.Require[] | select(.Path == "'"${ROOT_MODULE}"'/api/v3") | .Version') local tags=() keyid=$(get_gpg_key) || return 2 for module in $(modules); do local version - version=$(go list -f '{{.Version}}' -m "${module}") + version=$(go mod edit -json | jq -r '.Require[] | select(.Path == "'"${module}"'") | .Version') local path - path=$(go list -f '{{.Path}}' -m "${module}") + path=$(go mod edit -json | jq -r '.Require[] | select(.Path == "'"${module}"'") | .Path') local subdir="${path//${ROOT_MODULE}\//}" local tag if [ -z "${version}" ]; then @@ -110,7 +110,7 @@ function push_mod_tags_cmd { # consider main-module's tag as the latest. run sleep 2 run git tag --local-user "${keyid}" --sign "${tag}" --message "${version}" - tags=("${tags[@]}" "${tag}") + tags+=("${tag}") done maybe_run git push -f "${REMOTE_REPO}" "${tags[@]}" } From 06a84eec0f145e1ec5b4f184018cc6ee14e18341 Mon Sep 17 00:00:00 2001 From: Joshua Zhang Date: Fri, 21 Feb 2025 03:25:23 +0000 Subject: [PATCH 0034/1068] fix: skip duplicated puts when calculating put return time Signed-off-by: Joshua Zhang --- tests/robustness/validate/patch_history.go | 15 ++++-- .../robustness/validate/patch_history_test.go | 52 +++++++++++++++++++ 2 files changed, 64 insertions(+), 3 deletions(-) diff --git a/tests/robustness/validate/patch_history.go b/tests/robustness/validate/patch_history.go index 5ec3bd2ae2ed..7a0658fabe47 100644 --- a/tests/robustness/validate/patch_history.go +++ b/tests/robustness/validate/patch_history.go @@ -26,9 +26,9 @@ import ( func patchLinearizableOperations(reports []report.ClientReport, persistedRequests []model.EtcdRequest) []porcupine.Operation { allOperations := relevantOperations(reports) putRevision := putRevision(reports) - putReturnTime := putReturnTime(allOperations, reports, persistedRequests) - clientPutCount := countClientPuts(reports) persistedPutCount := countPersistedPuts(persistedRequests) + putReturnTime := uniquePutReturnTime(allOperations, reports, persistedRequests, persistedPutCount) + clientPutCount := countClientPuts(reports) return patchOperations(allOperations, putRevision, putReturnTime, clientPutCount, persistedPutCount) } @@ -155,7 +155,7 @@ func hasUniqueWriteOperation(ops []model.EtcdOperation, clientRequestCount map[k return false } -func putReturnTime(allOperations []porcupine.Operation, reports []report.ClientReport, persistedRequests []model.EtcdRequest) map[keyValue]int64 { +func uniquePutReturnTime(allOperations []porcupine.Operation, reports []report.ClientReport, persistedRequests []model.EtcdRequest, clientPutCount map[keyValue]int64) map[keyValue]int64 { earliestReturnTime := map[keyValue]int64{} var lastReturnTime int64 for _, op := range allOperations { @@ -167,6 +167,9 @@ func putReturnTime(allOperations []porcupine.Operation, reports []report.ClientR continue } kv := keyValue{Key: etcdOp.Put.Key, Value: etcdOp.Put.Value} + if count := clientPutCount[kv]; count > 1 { + continue + } if returnTime, ok := earliestReturnTime[kv]; !ok || returnTime > op.Return { earliestReturnTime[kv] = op.Return } @@ -192,6 +195,9 @@ func putReturnTime(allOperations []porcupine.Operation, reports []report.ClientR case model.RangeOperation: case model.PutOperation: kv := keyValue{Key: event.Key, Value: event.Value} + if count := clientPutCount[kv]; count > 1 { + continue + } if t, ok := earliestReturnTime[kv]; !ok || t > resp.Time.Nanoseconds() { earliestReturnTime[kv] = resp.Time.Nanoseconds() } @@ -214,6 +220,9 @@ func putReturnTime(allOperations []porcupine.Operation, reports []report.ClientR continue } kv := keyValue{Key: op.Put.Key, Value: op.Put.Value} + if count := clientPutCount[kv]; count > 1 { + continue + } returnTime, ok := earliestReturnTime[kv] if ok { lastReturnTime = min(returnTime, lastReturnTime) diff --git a/tests/robustness/validate/patch_history_test.go b/tests/robustness/validate/patch_history_test.go index bb104b0125fe..b5611d602373 100644 --- a/tests/robustness/validate/patch_history_test.go +++ b/tests/robustness/validate/patch_history_test.go @@ -318,6 +318,58 @@ func TestPatchHistory(t *testing.T) { {Return: infinite + 99, Output: model.MaybeEtcdResponse{Persisted: true}}, }, }, + { + name: "failed put remains if there is a matching persisted request, uniqueness of this operation and following operation allows patching based on following operation", + historyFunc: func(h *model.AppendableHistory) { + h.AppendPut("key1", "value1", 300, infinite, nil, errors.New("failed")) + h.AppendPut("key2", "value2", 500, 600, &clientv3.PutResponse{}, nil) + }, + persistedRequest: []model.EtcdRequest{ + putRequest("key1", "value1"), + putRequest("key2", "value2"), + }, + expectedRemainingOperations: []porcupine.Operation{ + {Return: 599, Output: model.MaybeEtcdResponse{Persisted: true}}, + {Return: 600, Output: putResponse(model.EtcdOperationResult{})}, + }, + }, + { + name: "failed put remains if there is a matching persisted request, lack of uniqueness of this operation prevents patching based on following operation", + historyFunc: func(h *model.AppendableHistory) { + h.AppendPut("key1", "value1", 100, 200, &clientv3.PutResponse{}, nil) + h.AppendPut("key1", "value1", 300, infinite, nil, errors.New("failed")) + h.AppendPut("key2", "value2", 500, 600, &clientv3.PutResponse{}, nil) + }, + persistedRequest: []model.EtcdRequest{ + putRequest("key1", "value1"), + putRequest("key1", "value1"), + putRequest("key2", "value2"), + }, + expectedRemainingOperations: []porcupine.Operation{ + {Return: 200, Output: putResponse(model.EtcdOperationResult{})}, + {Return: infinite + 600, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: 600, Output: putResponse(model.EtcdOperationResult{})}, + }, + }, + { + name: "failed put remains if there is a matching persisted request, lack of uniqueness of following operation prevents patching based on following operation", + historyFunc: func(h *model.AppendableHistory) { + h.AppendPut("key2", "value2", 100, 200, &clientv3.PutResponse{}, nil) + h.AppendPut("key1", "value1", 300, infinite, nil, errors.New("failed")) + h.AppendPut("key2", "value2", 500, 600, &clientv3.PutResponse{}, nil) + }, + persistedRequest: []model.EtcdRequest{ + putRequest("key2", "value2"), + putRequest("key1", "value1"), + putRequest("key2", "value2"), + }, + expectedRemainingOperations: []porcupine.Operation{ + {Return: 200, Output: putResponse(model.EtcdOperationResult{})}, + // TODO: We can infer that failed operation finished before last operation matching following. + {Return: infinite + 598, Output: model.MaybeEtcdResponse{Persisted: true}}, + {Return: 600, Output: putResponse(model.EtcdOperationResult{})}, + }, + }, { name: "failed txn empty/delete remains", historyFunc: func(h *model.AppendableHistory) { From 341381927b55de90236a8240219e6165815867dc Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 11 Mar 2025 09:57:02 +0000 Subject: [PATCH 0035/1068] Nominate @fuweid as a new approver Signed-off-by: Benjamin Wang --- OWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OWNERS b/OWNERS index 393aea9670a9..30037eb01e49 100644 --- a/OWNERS +++ b/OWNERS @@ -2,11 +2,11 @@ approvers: - ahrtr # Benjamin Wang + - fuweid # Wei Fu - jmhbnz # James Blair - serathius # Marek Siarkowicz - spzala # Sahdev Zala - wenjiaswe # Wenjia Zhang reviewers: - - fuweid # Wei Fu - ivanvc # Ivan Valdes - siyuanfoundation # Siyuan Zhang From 336eb4355add684dcb22e5f2b9125eac0f0f9a78 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 18:02:53 +0000 Subject: [PATCH 0036/1068] build(deps): bump github/codeql-action from 3.28.10 to 3.28.11 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.10 to 3.28.11. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d...6bb031afdd8eb862ea3fc1848194185e076637e5) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index b095950aca60..d01f0c1a9a8c 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/init@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/autobuild@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/analyze@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 8e5ee16ebdf1..557a85229c1c 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/upload-sarif@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 with: sarif_file: results.sarif From d87fe8d3820425af8943cd94d28b1e1c8eac5838 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Tue, 11 Mar 2025 16:49:34 -0700 Subject: [PATCH 0037/1068] pkg: address Go 1.24 usetesting issues Replace Contexts with the one provided by the test package. Signed-off-by: Ivan Valdes --- pkg/expect/expect_test.go | 16 ++++++++-------- pkg/netutil/netutil_test.go | 6 +++--- pkg/proxy/server_test.go | 3 +-- pkg/traceutil/trace_test.go | 4 ++-- 4 files changed, 14 insertions(+), 15 deletions(-) diff --git a/pkg/expect/expect_test.go b/pkg/expect/expect_test.go index 3d621b9aacbd..95862ddc5500 100644 --- a/pkg/expect/expect_test.go +++ b/pkg/expect/expect_test.go @@ -31,7 +31,7 @@ func TestExpectFunc(t *testing.T) { ep, err := NewExpect("echo", "hello world") require.NoError(t, err) wstr := "hello world\r\n" - l, eerr := ep.ExpectFunc(context.Background(), func(a string) bool { return len(a) > 10 }) + l, eerr := ep.ExpectFunc(t.Context(), func(a string) bool { return len(a) > 10 }) require.NoError(t, eerr) require.Equalf(t, l, wstr, `got "%v", expected "%v"`, l, wstr) require.NoError(t, ep.Close()) @@ -49,7 +49,7 @@ func TestExpectFuncTimeout(t *testing.T) { } }() - ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond) + ctx, cancel := context.WithTimeout(t.Context(), 500*time.Millisecond) defer cancel() _, err = ep.ExpectFunc(ctx, func(a string) bool { return false }) @@ -66,7 +66,7 @@ func TestExpectFuncExitFailure(t *testing.T) { ep, err := NewExpect("tail", "-x") require.NoError(t, err) - ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond) + ctx, cancel := context.WithTimeout(t.Context(), 500*time.Millisecond) defer cancel() _, err = ep.ExpectFunc(ctx, func(s string) bool { @@ -81,7 +81,7 @@ func TestExpectFuncExitFailureStop(t *testing.T) { ep, err := NewExpect("tail", "-x") require.NoError(t, err) - ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond) + ctx, cancel := context.WithTimeout(t.Context(), 500*time.Millisecond) defer cancel() _, err = ep.ExpectFunc(ctx, func(s string) bool { @@ -101,7 +101,7 @@ func TestExpectFuncExitFailureStop(t *testing.T) { func TestEcho(t *testing.T) { ep, err := NewExpect("echo", "hello world") require.NoError(t, err) - ctx := context.Background() + ctx := t.Context() l, eerr := ep.ExpectWithContext(ctx, ExpectedResponse{Value: "world"}) require.NoError(t, eerr) wstr := "hello world" @@ -115,7 +115,7 @@ func TestLineCount(t *testing.T) { ep, err := NewExpect("printf", "1\n2\n3") require.NoError(t, err) wstr := "3" - l, eerr := ep.ExpectWithContext(context.Background(), ExpectedResponse{Value: wstr}) + l, eerr := ep.ExpectWithContext(t.Context(), ExpectedResponse{Value: wstr}) require.NoError(t, eerr) require.Equalf(t, l, wstr, `got "%v", expected "%v"`, l, wstr) require.Equalf(t, 3, ep.LineCount(), "got %d, expected 3", ep.LineCount()) @@ -127,7 +127,7 @@ func TestSend(t *testing.T) { require.NoError(t, err) err = ep.Send("a\r") require.NoError(t, err) - _, err = ep.ExpectWithContext(context.Background(), ExpectedResponse{Value: "b"}) + _, err = ep.ExpectWithContext(t.Context(), ExpectedResponse{Value: "b"}) require.NoError(t, err) require.NoError(t, ep.Stop()) } @@ -208,7 +208,7 @@ func TestResponseMatchRegularExpr(t *testing.T) { ep, err := NewExpect("echo", "-n", tc.mockOutput) require.NoError(t, err) - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) defer cancel() l, err := ep.ExpectWithContext(ctx, tc.expectedResp) diff --git a/pkg/netutil/netutil_test.go b/pkg/netutil/netutil_test.go index 47a9a4df0988..f3953caed94f 100644 --- a/pkg/netutil/netutil_test.go +++ b/pkg/netutil/netutil_test.go @@ -134,7 +134,7 @@ func TestResolveTCPAddrs(t *testing.T) { } return &net.TCPAddr{IP: net.ParseIP(tt.hostMap[host]), Port: i, Zone: ""}, nil } - ctx, cancel := context.WithTimeout(context.TODO(), time.Second) + ctx, cancel := context.WithTimeout(t.Context(), time.Second) urls, err := resolveTCPAddrs(ctx, zaptest.NewLogger(t), tt.urls) cancel() if tt.hasError { @@ -305,7 +305,7 @@ func TestURLsEqual(t *testing.T) { } for i, test := range tests { - result, err := urlsEqual(context.TODO(), zaptest.NewLogger(t), test.a, test.b) + result, err := urlsEqual(t.Context(), zaptest.NewLogger(t), test.a, test.b) assert.Equalf(t, result, test.expect, "idx=%d #%d: a:%v b:%v, expected %v but %v", i, test.n, test.a, test.b, test.expect, result) if test.err != nil { if err.Error() != test.err.Error() { @@ -342,7 +342,7 @@ func TestURLStringsEqual(t *testing.T) { for idx, c := range cases { t.Logf("TestURLStringsEqual, case #%d", idx) resolveTCPAddr = c.resolver - result, err := URLStringsEqual(context.TODO(), zaptest.NewLogger(t), c.urlsA, c.urlsB) + result, err := URLStringsEqual(t.Context(), zaptest.NewLogger(t), c.urlsA, c.urlsB) assert.Truef(t, result, "unexpected result %v", result) assert.NoErrorf(t, err, "unexpected error %v", err) } diff --git a/pkg/proxy/server_test.go b/pkg/proxy/server_test.go index 2739c76858c0..2a7e622a558f 100644 --- a/pkg/proxy/server_test.go +++ b/pkg/proxy/server_test.go @@ -16,7 +16,6 @@ package proxy import ( "bytes" - "context" "crypto/tls" "fmt" "io" @@ -613,7 +612,7 @@ func send(t *testing.T, data []byte, scheme, addr string, tlsInfo transport.TLSI if !tlsInfo.Empty() { tp, terr := transport.NewTransport(tlsInfo, 3*time.Second) require.NoError(t, terr) - out, err = tp.DialContext(context.Background(), scheme, addr) + out, err = tp.DialContext(t.Context(), scheme, addr) } else { out, err = net.Dial(scheme, addr) } diff --git a/pkg/traceutil/trace_test.go b/pkg/traceutil/trace_test.go index 7b4ae28e61ce..5080671977d5 100644 --- a/pkg/traceutil/trace_test.go +++ b/pkg/traceutil/trace_test.go @@ -38,12 +38,12 @@ func TestGet(t *testing.T) { }{ { name: "When the context does not have trace", - inputCtx: context.TODO(), + inputCtx: t.Context(), outputTrace: TODO(), }, { name: "When the context has trace", - inputCtx: context.WithValue(context.Background(), TraceKey{}, traceForTest), + inputCtx: context.WithValue(t.Context(), TraceKey{}, traceForTest), outputTrace: traceForTest, }, } From 7966208ea46d7c7db5fc88a3db46ffa5ea1f240b Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Thu, 13 Mar 2025 19:48:50 +0100 Subject: [PATCH 0038/1068] client: address Go 1.24 usetesting issues Signed-off-by: Matthieu MOREL --- client/v3/client_test.go | 26 +++++++-------- client/v3/credentials/credentials_test.go | 3 +- client/v3/ctx_test.go | 5 ++- client/v3/ordering/kv_test.go | 6 ++-- client/v3/txn_test.go | 13 ++++---- client/v3/watch_test.go | 8 ++--- server/internal/clientv2/client_test.go | 40 +++++++++++------------ server/internal/clientv2/keys_test.go | 29 ++++++++-------- server/internal/clientv2/members_test.go | 17 +++++----- 9 files changed, 71 insertions(+), 76 deletions(-) diff --git a/client/v3/client_test.go b/client/v3/client_test.go index cbe94a411b36..5841dc020237 100644 --- a/client/v3/client_test.go +++ b/client/v3/client_test.go @@ -196,18 +196,18 @@ func TestBackoffJitterFraction(t *testing.T) { func TestIsHaltErr(t *testing.T) { assert.Truef(t, - isHaltErr(context.TODO(), errors.New("etcdserver: some etcdserver error")), + isHaltErr(t.Context(), errors.New("etcdserver: some etcdserver error")), "error created by errors.New should be unavailable error", ) assert.Falsef(t, - isHaltErr(context.TODO(), rpctypes.ErrGRPCStopped), + isHaltErr(t.Context(), rpctypes.ErrGRPCStopped), `error "%v" should not be halt error`, rpctypes.ErrGRPCStopped, ) assert.Falsef(t, - isHaltErr(context.TODO(), rpctypes.ErrGRPCNoLeader), + isHaltErr(t.Context(), rpctypes.ErrGRPCNoLeader), `error "%v" should not be halt error`, rpctypes.ErrGRPCNoLeader, ) - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) assert.Falsef(t, isHaltErr(ctx, nil), "no error and active context should be halt error", @@ -221,18 +221,18 @@ func TestIsHaltErr(t *testing.T) { func TestIsUnavailableErr(t *testing.T) { assert.Falsef(t, - isUnavailableErr(context.TODO(), errors.New("etcdserver: some etcdserver error")), + isUnavailableErr(t.Context(), errors.New("etcdserver: some etcdserver error")), "error created by errors.New should not be unavailable error", ) assert.Truef(t, - isUnavailableErr(context.TODO(), rpctypes.ErrGRPCStopped), + isUnavailableErr(t.Context(), rpctypes.ErrGRPCStopped), `error "%v" should be unavailable error`, rpctypes.ErrGRPCStopped, ) assert.Falsef(t, - isUnavailableErr(context.TODO(), rpctypes.ErrGRPCNotCapable), + isUnavailableErr(t.Context(), rpctypes.ErrGRPCNotCapable), "error %v should not be unavailable error", rpctypes.ErrGRPCNotCapable, ) - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) assert.Falsef(t, isUnavailableErr(ctx, nil), "no error and active context should not be unavailable error", @@ -245,7 +245,7 @@ func TestIsUnavailableErr(t *testing.T) { } func TestCloseCtxClient(t *testing.T) { - ctx := context.Background() + ctx := t.Context() c := NewCtxClient(ctx) err := c.Close() // Close returns ctx.toErr, a nil error means an open Done channel @@ -255,7 +255,7 @@ func TestCloseCtxClient(t *testing.T) { } func TestWithLogger(t *testing.T) { - ctx := context.Background() + ctx := t.Context() c := NewCtxClient(ctx) if c.lg == nil { t.Errorf("unexpected nil in *zap.Logger") @@ -268,7 +268,7 @@ func TestWithLogger(t *testing.T) { } func TestZapWithLogger(t *testing.T) { - ctx := context.Background() + ctx := t.Context() lg := zap.NewNop() c := NewCtxClient(ctx, WithZapLogger(lg)) @@ -327,7 +327,7 @@ func TestSyncFiltersMembers(t *testing.T) { {ID: 2, Name: "isStartedAndNotLearner", ClientURLs: []string{"http://254.0.0.3:12345"}, IsLearner: false}, }, } - c.Sync(context.Background()) + c.Sync(t.Context()) endpoints := c.Endpoints() if len(endpoints) != 1 || endpoints[0] != "http://254.0.0.3:12345" { @@ -421,7 +421,7 @@ func TestClientRejectOldCluster(t *testing.T) { endpointToVersion[tt.endpoints[j]] = tt.versions[j] } c := &Client{ - ctx: context.Background(), + ctx: t.Context(), endpoints: tt.endpoints, epMu: new(sync.RWMutex), Maintenance: &mockMaintenance{ diff --git a/client/v3/credentials/credentials_test.go b/client/v3/credentials/credentials_test.go index 0db241e3c413..ca2bd0cbf1d1 100644 --- a/client/v3/credentials/credentials_test.go +++ b/client/v3/credentials/credentials_test.go @@ -15,7 +15,6 @@ package credentials import ( - "context" "testing" "github.com/stretchr/testify/assert" @@ -25,7 +24,7 @@ import ( func TestUpdateAuthToken(t *testing.T) { bundle := NewPerRPCCredentialBundle() - ctx := context.TODO() + ctx := t.Context() metadataBeforeUpdate, _ := bundle.PerRPCCredentials().GetRequestMetadata(ctx) assert.Empty(t, metadataBeforeUpdate) diff --git a/client/v3/ctx_test.go b/client/v3/ctx_test.go index 2df734e4ea2d..ea0870236481 100644 --- a/client/v3/ctx_test.go +++ b/client/v3/ctx_test.go @@ -15,7 +15,6 @@ package clientv3 import ( - "context" "reflect" "testing" @@ -27,7 +26,7 @@ import ( ) func TestMetadataWithRequireLeader(t *testing.T) { - ctx := context.TODO() + ctx := t.Context() _, ok := metadata.FromOutgoingContext(ctx) require.Falsef(t, ok, "expected no outgoing metadata ctx key") @@ -48,7 +47,7 @@ func TestMetadataWithRequireLeader(t *testing.T) { } func TestMetadataWithClientAPIVersion(t *testing.T) { - ctx := withVersion(WithRequireLeader(context.TODO())) + ctx := withVersion(WithRequireLeader(t.Context())) md, ok := metadata.FromOutgoingContext(ctx) require.Truef(t, ok, "expected outgoing metadata ctx key") diff --git a/client/v3/ordering/kv_test.go b/client/v3/ordering/kv_test.go index cb6d0d3909e4..679d74771ad0 100644 --- a/client/v3/ordering/kv_test.go +++ b/client/v3/ordering/kv_test.go @@ -76,7 +76,7 @@ func TestKvOrdering(t *testing.T) { tt.prevRev, sync.RWMutex{}, } - res, err := kv.Get(context.TODO(), "mockKey") + res, err := kv.Get(t.Context(), "mockKey") if err != nil { t.Errorf("#%d: expected response %+v, got error %+v", i, tt.response, err) } @@ -131,9 +131,9 @@ func TestTxnOrdering(t *testing.T) { sync.RWMutex{}, } txn := &txnOrdering{ - kv.Txn(context.Background()), + kv.Txn(t.Context()), kv, - context.Background(), + t.Context(), sync.Mutex{}, []clientv3.Cmp{}, []clientv3.Op{}, diff --git a/client/v3/txn_test.go b/client/v3/txn_test.go index de7aec3b8e98..60687219d600 100644 --- a/client/v3/txn_test.go +++ b/client/v3/txn_test.go @@ -15,7 +15,6 @@ package clientv3 import ( - "context" "testing" "time" @@ -44,7 +43,7 @@ func TestTxnPanics(t *testing.T) { { f: func(errc chan string) { defer df(errc) - kv.Txn(context.TODO()).If(cmp).If(cmp) + kv.Txn(t.Context()).If(cmp).If(cmp) }, err: "cannot call If twice!", @@ -52,7 +51,7 @@ func TestTxnPanics(t *testing.T) { { f: func(errc chan string) { defer df(errc) - kv.Txn(context.TODO()).Then(op).If(cmp) + kv.Txn(t.Context()).Then(op).If(cmp) }, err: "cannot call If after Then!", @@ -60,7 +59,7 @@ func TestTxnPanics(t *testing.T) { { f: func(errc chan string) { defer df(errc) - kv.Txn(context.TODO()).Else(op).If(cmp) + kv.Txn(t.Context()).Else(op).If(cmp) }, err: "cannot call If after Else!", @@ -68,7 +67,7 @@ func TestTxnPanics(t *testing.T) { { f: func(errc chan string) { defer df(errc) - kv.Txn(context.TODO()).Then(op).Then(op) + kv.Txn(t.Context()).Then(op).Then(op) }, err: "cannot call Then twice!", @@ -76,7 +75,7 @@ func TestTxnPanics(t *testing.T) { { f: func(errc chan string) { defer df(errc) - kv.Txn(context.TODO()).Else(op).Then(op) + kv.Txn(t.Context()).Else(op).Then(op) }, err: "cannot call Then after Else!", @@ -84,7 +83,7 @@ func TestTxnPanics(t *testing.T) { { f: func(errc chan string) { defer df(errc) - kv.Txn(context.TODO()).Else(op).Else(op) + kv.Txn(t.Context()).Else(op).Else(op) }, err: "cannot call Else twice!", diff --git a/client/v3/watch_test.go b/client/v3/watch_test.go index 721fc4a8a237..ca0b86d26107 100644 --- a/client/v3/watch_test.go +++ b/client/v3/watch_test.go @@ -72,7 +72,7 @@ func TestStreamKeyFromCtx(t *testing.T) { }{ { name: "multiple keys", - ctx: metadata.NewOutgoingContext(context.Background(), metadata.MD{ + ctx: metadata.NewOutgoingContext(t.Context(), metadata.MD{ "key1": []string{"value1"}, "key2": []string{"value2a", "value2b"}, }), @@ -80,19 +80,19 @@ func TestStreamKeyFromCtx(t *testing.T) { }, { name: "no keys", - ctx: metadata.NewOutgoingContext(context.Background(), metadata.MD{}), + ctx: metadata.NewOutgoingContext(t.Context(), metadata.MD{}), expected: "map[]", }, { name: "only one key", - ctx: metadata.NewOutgoingContext(context.Background(), metadata.MD{ + ctx: metadata.NewOutgoingContext(t.Context(), metadata.MD{ "key1": []string{"value1", "value1a"}, }), expected: "map[key1:[value1 value1a]]", }, { name: "no metadata", - ctx: context.Background(), + ctx: t.Context(), expected: "", }, } diff --git a/server/internal/clientv2/client_test.go b/server/internal/clientv2/client_test.go index 19374ec93624..66e5671a3f7b 100644 --- a/server/internal/clientv2/client_test.go +++ b/server/internal/clientv2/client_test.go @@ -131,7 +131,7 @@ func TestSimpleHTTPClientDoSuccess(t *testing.T) { Body: io.NopCloser(strings.NewReader("foo")), } - resp, body, err := c.Do(context.Background(), &fakeAction{}) + resp, body, err := c.Do(t.Context(), &fakeAction{}) require.NoErrorf(t, err, "incorrect error value") wantCode := http.StatusTeapot require.Equalf(t, wantCode, resp.StatusCode, "invalid response code: want=%d got=%d", wantCode, resp.StatusCode) @@ -146,7 +146,7 @@ func TestSimpleHTTPClientDoError(t *testing.T) { tr.errchan <- errors.New("fixture") - _, _, err := c.Do(context.Background(), &fakeAction{}) + _, _, err := c.Do(t.Context(), &fakeAction{}) assert.Errorf(t, err, "expected non-nil error, got nil") } @@ -162,7 +162,7 @@ func TestSimpleHTTPClientDoNilRequest(t *testing.T) { tr.errchan <- errors.New("fixture") - _, _, err := c.Do(context.Background(), &nilAction{}) + _, _, err := c.Do(t.Context(), &nilAction{}) require.ErrorIsf(t, err, ErrNoRequest, "expected non-nil error, got nil") } @@ -173,7 +173,7 @@ func TestSimpleHTTPClientDoCancelContext(t *testing.T) { tr.startCancel <- struct{}{} tr.finishCancel <- struct{}{} - _, _, err := c.Do(context.Background(), &fakeAction{}) + _, _, err := c.Do(t.Context(), &fakeAction{}) assert.Errorf(t, err, "expected non-nil error, got nil") } @@ -195,7 +195,7 @@ func TestSimpleHTTPClientDoCancelContextResponseBodyClosed(t *testing.T) { c := &simpleHTTPClient{transport: tr} // create an already-cancelled context - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) cancel() body := &checkableReadCloser{ReadCloser: io.NopCloser(strings.NewReader("foo"))} @@ -232,7 +232,7 @@ func TestSimpleHTTPClientDoCancelContextResponseBodyClosedWithBlockingBody(t *te tr := newFakeTransport() c := &simpleHTTPClient{transport: tr} - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) body := &checkableReadCloser{ReadCloser: &blockingBody{c: make(chan struct{})}} go func() { tr.respchan <- &http.Response{Body: body} @@ -252,7 +252,7 @@ func TestSimpleHTTPClientDoCancelContextWaitForRoundTrip(t *testing.T) { c := &simpleHTTPClient{transport: tr} donechan := make(chan struct{}) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) go func() { c.Do(ctx, &fakeAction{}) close(donechan) @@ -285,7 +285,7 @@ func TestSimpleHTTPClientDoHeaderTimeout(t *testing.T) { errc := make(chan error, 1) go func() { - _, _, err := c.Do(context.Background(), &fakeAction{}) + _, _, err := c.Do(t.Context(), &fakeAction{}) errc <- err }() @@ -407,7 +407,7 @@ func TestHTTPClusterClientDo(t *testing.T) { ), rand: rand.New(rand.NewSource(0)), }, - ctx: context.WithValue(context.Background(), &oneShotCtxValue, &oneShotCtxValue), + ctx: context.WithValue(t.Context(), &oneShotCtxValue, &oneShotCtxValue), wantErr: errors.New("client: etcd member returns server error [Bad Gateway]"), wantPinned: 1, }, @@ -415,7 +415,7 @@ func TestHTTPClusterClientDo(t *testing.T) { for i, tt := range tests { if tt.ctx == nil { - tt.ctx = context.Background() + tt.ctx = t.Context() } resp, _, err := tt.client.Do(tt.ctx, nil) if (tt.wantErr == nil && !errors.Is(err, tt.wantErr)) || (tt.wantErr != nil && tt.wantErr.Error() != err.Error()) { @@ -450,7 +450,7 @@ func TestHTTPClusterClientDoDeadlineExceedContext(t *testing.T) { errc := make(chan error, 1) go func() { - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) + ctx, cancel := context.WithTimeout(t.Context(), time.Millisecond) defer cancel() _, _, err := c.Do(ctx, &fakeAction{}) errc <- err @@ -722,7 +722,7 @@ func TestRedirectFollowingHTTPClient(t *testing.T) { for i, tt := range tests { client := &redirectFollowingHTTPClient{client: tt.client, checkRedirect: tt.checkRedirect} - resp, _, err := client.Do(context.Background(), nil) + resp, _, err := client.Do(t.Context(), nil) if (tt.wantErr == nil && !errors.Is(err, tt.wantErr)) || (tt.wantErr != nil && tt.wantErr.Error() != err.Error()) { t.Errorf("#%d: got err=%v, want=%v", i, err, tt.wantErr) continue @@ -781,7 +781,7 @@ func TestHTTPClusterClientSync(t *testing.T) { got := hc.Endpoints() require.Truef(t, reflect.DeepEqual(want, got), "incorrect endpoints: want=%#v got=%#v", want, got) - err = hc.Sync(context.Background()) + err = hc.Sync(t.Context()) require.NoErrorf(t, err, "unexpected error during Sync: %#v", err) want = []string{"http://127.0.0.1:2379", "http://127.0.0.1:4001", "http://127.0.0.1:4002", "http://127.0.0.1:4003"} @@ -813,7 +813,7 @@ func TestHTTPClusterClientSyncFail(t *testing.T) { got := hc.Endpoints() require.Truef(t, reflect.DeepEqual(want, got), "incorrect endpoints: want=%#v got=%#v", want, got) - err = hc.Sync(context.Background()) + err = hc.Sync(t.Context()) require.Errorf(t, err, "got nil error during Sync") got = hc.Endpoints() @@ -835,7 +835,7 @@ func TestHTTPClusterClientAutoSyncCancelContext(t *testing.T) { err := hc.SetEndpoints([]string{"http://127.0.0.1:2379"}) require.NoErrorf(t, err, "unexpected error during setup") - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) cancel() err = hc.AutoSync(ctx, time.Hour) @@ -854,7 +854,7 @@ func TestHTTPClusterClientAutoSyncFail(t *testing.T) { err := hc.SetEndpoints([]string{"http://127.0.0.1:2379"}) require.NoErrorf(t, err, "unexpected error during setup") - err = hc.AutoSync(context.Background(), time.Hour) + err = hc.AutoSync(t.Context(), time.Hour) require.Truef(t, strings.HasPrefix(err.Error(), ErrClusterUnavailable.Error()), "incorrect error value: want=%v got=%v", ErrClusterUnavailable, err) } @@ -874,7 +874,7 @@ func TestHTTPClusterClientGetVersion(t *testing.T) { err := hc.SetEndpoints([]string{"http://127.0.0.1:4003", "http://127.0.0.1:2379", "http://127.0.0.1:4001", "http://127.0.0.1:4002"}) require.NoErrorf(t, err, "unexpected error during setup") - actual, err := hc.GetVersion(context.Background()) + actual, err := hc.GetVersion(t.Context()) if err != nil { t.Errorf("non-nil error: %#v", err) } @@ -911,7 +911,7 @@ func TestHTTPClusterClientSyncPinEndpoint(t *testing.T) { pinnedEndpoint := hc.endpoints[hc.pinned] for i := 0; i < 3; i++ { - err = hc.Sync(context.Background()) + err = hc.Sync(t.Context()) require.NoErrorf(t, err, "#%d: unexpected error during Sync", i) if g := hc.endpoints[hc.pinned]; g != pinnedEndpoint { @@ -947,7 +947,7 @@ func TestHTTPClusterClientSyncUnpinEndpoint(t *testing.T) { wants := []string{"http://127.0.0.1:2379", "http://127.0.0.1:4001", "http://127.0.0.1:4002"} for i := 0; i < 3; i++ { - err = hc.Sync(context.Background()) + err = hc.Sync(t.Context()) require.NoErrorf(t, err, "#%d: unexpected error during Sync", i) if g := hc.endpoints[hc.pinned]; g.String() != wants[i] { @@ -988,7 +988,7 @@ func TestHTTPClusterClientSyncPinLeaderEndpoint(t *testing.T) { wants := []string{"http://127.0.0.1:4003", "http://127.0.0.1:4002"} for i, want := range wants { - err := hc.Sync(context.Background()) + err := hc.Sync(t.Context()) require.NoErrorf(t, err, "#%d: unexpected error during Sync", i) pinned := hc.endpoints[hc.pinned].String() diff --git a/server/internal/clientv2/keys_test.go b/server/internal/clientv2/keys_test.go index 1bc6927b68e8..7bc264a7b83f 100644 --- a/server/internal/clientv2/keys_test.go +++ b/server/internal/clientv2/keys_test.go @@ -15,7 +15,6 @@ package client import ( - "context" "errors" "fmt" "io" @@ -875,7 +874,7 @@ func TestHTTPWatcherNextWaitAction(t *testing.T) { nextWait: initAction, } - resp, err := watcher.Next(context.Background()) + resp, err := watcher.Next(t.Context()) if err != nil { t.Errorf("non-nil error: %#v", err) } @@ -925,7 +924,7 @@ func TestHTTPWatcherNextFail(t *testing.T) { nextWait: act, } - resp, err := watcher.Next(context.Background()) + resp, err := watcher.Next(t.Context()) if err == nil { t.Errorf("#%d: expected non-nil error", i) } @@ -1073,7 +1072,7 @@ func TestHTTPKeysAPISetAction(t *testing.T) { for i, tt := range tests { client := &actionAssertingHTTPClient{t: t, num: i, act: tt.wantAction} kAPI := httpKeysAPI{client: client} - kAPI.Set(context.Background(), tt.key, tt.value, tt.opts) + kAPI.Set(t.Context(), tt.key, tt.value, tt.opts) } } @@ -1102,7 +1101,7 @@ func TestHTTPKeysAPISetError(t *testing.T) { for i, tt := range tests { kAPI := httpKeysAPI{client: tt} - resp, err := kAPI.Set(context.Background(), "/foo", "bar", nil) + resp, err := kAPI.Set(t.Context(), "/foo", "bar", nil) if err == nil { t.Errorf("#%d: received nil error", i) } @@ -1129,7 +1128,7 @@ func TestHTTPKeysAPISetResponse(t *testing.T) { } kAPI := &httpKeysAPI{client: client, prefix: "/pants"} - resp, err := kAPI.Set(context.Background(), "/foo/bar/baz", "snarf", nil) + resp, err := kAPI.Set(t.Context(), "/foo/bar/baz", "snarf", nil) if err != nil { t.Errorf("non-nil error: %#v", err) } @@ -1184,7 +1183,7 @@ func TestHTTPKeysAPIGetAction(t *testing.T) { for i, tt := range tests { client := &actionAssertingHTTPClient{t: t, num: i, act: tt.wantAction} kAPI := httpKeysAPI{client: client} - kAPI.Get(context.Background(), tt.key, tt.opts) + kAPI.Get(t.Context(), tt.key, tt.opts) } } @@ -1213,7 +1212,7 @@ func TestHTTPKeysAPIGetError(t *testing.T) { for i, tt := range tests { kAPI := httpKeysAPI{client: tt} - resp, err := kAPI.Get(context.Background(), "/foo", nil) + resp, err := kAPI.Get(t.Context(), "/foo", nil) if err == nil { t.Errorf("#%d: received nil error", i) } @@ -1246,7 +1245,7 @@ func TestHTTPKeysAPIGetResponse(t *testing.T) { } kAPI := &httpKeysAPI{client: client, prefix: "/pants"} - resp, err := kAPI.Get(context.Background(), "/foo/bar", &GetOptions{Recursive: true}) + resp, err := kAPI.Get(t.Context(), "/foo/bar", &GetOptions{Recursive: true}) if err != nil { t.Errorf("non-nil error: %#v", err) } @@ -1303,7 +1302,7 @@ func TestHTTPKeysAPIDeleteAction(t *testing.T) { for i, tt := range tests { client := &actionAssertingHTTPClient{t: t, num: i, act: tt.wantAction} kAPI := httpKeysAPI{client: client} - kAPI.Delete(context.Background(), tt.key, tt.opts) + kAPI.Delete(t.Context(), tt.key, tt.opts) } } @@ -1332,7 +1331,7 @@ func TestHTTPKeysAPIDeleteError(t *testing.T) { for i, tt := range tests { kAPI := httpKeysAPI{client: tt} - resp, err := kAPI.Delete(context.Background(), "/foo", nil) + resp, err := kAPI.Delete(t.Context(), "/foo", nil) if err == nil { t.Errorf("#%d: received nil error", i) } @@ -1359,7 +1358,7 @@ func TestHTTPKeysAPIDeleteResponse(t *testing.T) { } kAPI := &httpKeysAPI{client: client, prefix: "/pants"} - resp, err := kAPI.Delete(context.Background(), "/foo/bar/baz", nil) + resp, err := kAPI.Delete(t.Context(), "/foo/bar/baz", nil) if err != nil { t.Errorf("non-nil error: %#v", err) } @@ -1379,7 +1378,7 @@ func TestHTTPKeysAPICreateAction(t *testing.T) { } kAPI := httpKeysAPI{client: &actionAssertingHTTPClient{t: t, act: act}} - kAPI.Create(context.Background(), "/foo", "bar") + kAPI.Create(t.Context(), "/foo", "bar") } func TestHTTPKeysAPICreateInOrderAction(t *testing.T) { @@ -1389,7 +1388,7 @@ func TestHTTPKeysAPICreateInOrderAction(t *testing.T) { TTL: 0, } kAPI := httpKeysAPI{client: &actionAssertingHTTPClient{t: t, act: act}} - kAPI.CreateInOrder(context.Background(), "/foo", "bar", nil) + kAPI.CreateInOrder(t.Context(), "/foo", "bar", nil) } func TestHTTPKeysAPIUpdateAction(t *testing.T) { @@ -1403,7 +1402,7 @@ func TestHTTPKeysAPIUpdateAction(t *testing.T) { } kAPI := httpKeysAPI{client: &actionAssertingHTTPClient{t: t, act: act}} - kAPI.Update(context.Background(), "/foo", "bar") + kAPI.Update(t.Context(), "/foo", "bar") } func TestNodeTTLDuration(t *testing.T) { diff --git a/server/internal/clientv2/members_test.go b/server/internal/clientv2/members_test.go index 4d3114a49097..e93b55c476f2 100644 --- a/server/internal/clientv2/members_test.go +++ b/server/internal/clientv2/members_test.go @@ -15,7 +15,6 @@ package client import ( - "context" "encoding/json" "errors" "net/http" @@ -340,7 +339,7 @@ func TestHTTPMembersAPIAddSuccess(t *testing.T) { PeerURLs: []string{"http://127.0.0.1:7002"}, } - m, err := mAPI.Add(context.Background(), "http://127.0.0.1:7002") + m, err := mAPI.Add(t.Context(), "http://127.0.0.1:7002") if err != nil { t.Errorf("got non-nil err: %#v", err) } @@ -415,7 +414,7 @@ func TestHTTPMembersAPIAddError(t *testing.T) { for i, tt := range tests { mAPI := &httpMembersAPI{client: tt.client} - m, err := mAPI.Add(context.Background(), tt.peerURL) + m, err := mAPI.Add(t.Context(), tt.peerURL) if err == nil { t.Errorf("#%d: got nil err", i) } @@ -443,7 +442,7 @@ func TestHTTPMembersAPIRemoveSuccess(t *testing.T) { }, } - if err := mAPI.Remove(context.Background(), "94088180e21eb87b"); err != nil { + if err := mAPI.Remove(t.Context(), "94088180e21eb87b"); err != nil { t.Errorf("got non-nil err: %#v", err) } } @@ -465,7 +464,7 @@ func TestHTTPMembersAPIRemoveFail(t *testing.T) { for i, tt := range tests { mAPI := &httpMembersAPI{client: tt} - if err := mAPI.Remove(context.Background(), "94088180e21eb87b"); err == nil { + if err := mAPI.Remove(t.Context(), "94088180e21eb87b"); err == nil { t.Errorf("#%d: got nil err", i) } } @@ -493,7 +492,7 @@ func TestHTTPMembersAPIListSuccess(t *testing.T) { }, } - m, err := mAPI.List(context.Background()) + m, err := mAPI.List(t.Context()) if err != nil { t.Errorf("got non-nil err: %#v", err) } @@ -523,7 +522,7 @@ func TestHTTPMembersAPIListError(t *testing.T) { for i, tt := range tests { mAPI := &httpMembersAPI{client: tt} - ms, err := mAPI.List(context.Background()) + ms, err := mAPI.List(t.Context()) if err == nil { t.Errorf("#%d: got nil err", i) } @@ -553,7 +552,7 @@ func TestHTTPMembersAPILeaderSuccess(t *testing.T) { ClientURLs: []string{"http://127.0.0.1:4002"}, } - m, err := mAPI.Leader(context.Background()) + m, err := mAPI.Leader(t.Context()) if err != nil { t.Errorf("err = %v, want %v", err, nil) } @@ -583,7 +582,7 @@ func TestHTTPMembersAPILeaderError(t *testing.T) { for i, tt := range tests { mAPI := &httpMembersAPI{client: tt} - m, err := mAPI.Leader(context.Background()) + m, err := mAPI.Leader(t.Context()) if err == nil { t.Errorf("#%d: err = nil, want not nil", i) } From 288a12fbfd05527d14bbb5a02bd882c11d747003 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 7 Mar 2025 10:51:28 +0100 Subject: [PATCH 0039/1068] Use clientPutCount instead of persistedPutCount as not all client requests are persisted Signed-off-by: Marek Siarkowicz --- tests/robustness/validate/patch_history.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/robustness/validate/patch_history.go b/tests/robustness/validate/patch_history.go index 7a0658fabe47..b4f6787db958 100644 --- a/tests/robustness/validate/patch_history.go +++ b/tests/robustness/validate/patch_history.go @@ -27,8 +27,8 @@ func patchLinearizableOperations(reports []report.ClientReport, persistedRequest allOperations := relevantOperations(reports) putRevision := putRevision(reports) persistedPutCount := countPersistedPuts(persistedRequests) - putReturnTime := uniquePutReturnTime(allOperations, reports, persistedRequests, persistedPutCount) clientPutCount := countClientPuts(reports) + putReturnTime := uniquePutReturnTime(allOperations, reports, persistedRequests, clientPutCount) return patchOperations(allOperations, putRevision, putReturnTime, clientPutCount, persistedPutCount) } From 541ebc96d1d8c330fea74dbae7c99ed0904b96ec Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Thu, 13 Mar 2025 19:57:56 +0100 Subject: [PATCH 0040/1068] etcdutl: address Go 1.24 usetesting issues Signed-off-by: Matthieu MOREL --- etcdutl/snapshot/v3_snapshot_test.go | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/etcdutl/snapshot/v3_snapshot_test.go b/etcdutl/snapshot/v3_snapshot_test.go index 1971eefe2fc2..50f14008cb92 100644 --- a/etcdutl/snapshot/v3_snapshot_test.go +++ b/etcdutl/snapshot/v3_snapshot_test.go @@ -15,7 +15,6 @@ package snapshot import ( - "context" "errors" "path/filepath" "strconv" @@ -136,7 +135,7 @@ func TestSnapshotStatusTotalKey(t *testing.T) { Key: []byte(key), Value: val, } - _, err := srv.Put(context.TODO(), &req) + _, err := srv.Put(t.Context(), &req) require.NoError(t, err) } } @@ -150,10 +149,10 @@ func TestSnapshotStatusTotalKey(t *testing.T) { key := []byte("key1") for i := 0; i < 3; i++ { if i < 2 { - _, err := srv.Put(context.TODO(), &etcdserverpb.PutRequest{Key: key, Value: []byte(strconv.Itoa(i))}) + _, err := srv.Put(t.Context(), &etcdserverpb.PutRequest{Key: key, Value: []byte(strconv.Itoa(i))}) require.NoError(t, err) } else { - _, err := srv.DeleteRange(context.TODO(), &etcdserverpb.DeleteRangeRequest{Key: key}) + _, err := srv.DeleteRange(t.Context(), &etcdserverpb.DeleteRangeRequest{Key: key}) require.NoError(t, err) } } @@ -166,9 +165,9 @@ func TestSnapshotStatusTotalKey(t *testing.T) { // key1: create -> delete -> re-create -> delete key := []byte("key1") for i := 0; i < 2; i++ { - _, err := srv.Put(context.TODO(), &etcdserverpb.PutRequest{Key: key, Value: make([]byte, 1)}) + _, err := srv.Put(t.Context(), &etcdserverpb.PutRequest{Key: key, Value: make([]byte, 1)}) require.NoError(t, err) - _, err = srv.DeleteRange(context.TODO(), &etcdserverpb.DeleteRangeRequest{Key: key}) + _, err = srv.DeleteRange(t.Context(), &etcdserverpb.DeleteRangeRequest{Key: key}) require.NoError(t, err) } }, @@ -181,10 +180,10 @@ func TestSnapshotStatusTotalKey(t *testing.T) { key := []byte("key1") for i := 0; i < 5; i++ { if i%2 == 0 { - _, err := srv.Put(context.TODO(), &etcdserverpb.PutRequest{Key: key, Value: make([]byte, 1)}) + _, err := srv.Put(t.Context(), &etcdserverpb.PutRequest{Key: key, Value: make([]byte, 1)}) require.NoError(t, err) } else { - _, err := srv.DeleteRange(context.TODO(), &etcdserverpb.DeleteRangeRequest{Key: key}) + _, err := srv.DeleteRange(t.Context(), &etcdserverpb.DeleteRangeRequest{Key: key}) require.NoError(t, err) } } @@ -195,11 +194,11 @@ func TestSnapshotStatusTotalKey(t *testing.T) { name: "mixed deletions", prepare: func(srv *etcdserver.EtcdServer) { // Put("key1") -> Put("key2")-> Delete("key1") - _, err := srv.Put(context.TODO(), &etcdserverpb.PutRequest{Key: []byte("key1"), Value: make([]byte, 1)}) + _, err := srv.Put(t.Context(), &etcdserverpb.PutRequest{Key: []byte("key1"), Value: make([]byte, 1)}) require.NoError(t, err) - _, err = srv.Put(context.TODO(), &etcdserverpb.PutRequest{Key: []byte("key2"), Value: make([]byte, 1)}) + _, err = srv.Put(t.Context(), &etcdserverpb.PutRequest{Key: []byte("key2"), Value: make([]byte, 1)}) require.NoError(t, err) - _, err = srv.DeleteRange(context.TODO(), &etcdserverpb.DeleteRangeRequest{Key: []byte("key1")}) + _, err = srv.DeleteRange(t.Context(), &etcdserverpb.DeleteRangeRequest{Key: []byte("key1")}) require.NoError(t, err) }, expected: 1, @@ -228,7 +227,7 @@ func insertKeys(t *testing.T, numKeys, valueSize int) func(*etcdserver.EtcdServe Key: []byte(strconv.Itoa(i)), Value: val, } - _, err := srv.Put(context.TODO(), &req) + _, err := srv.Put(t.Context(), &req) require.NoError(t, err) } } From 52fe805451658f9003ae1dfb515c861740af0959 Mon Sep 17 00:00:00 2001 From: Sekiranda Date: Fri, 7 Mar 2025 16:35:02 +0300 Subject: [PATCH 0041/1068] Add marckdowncli linting script, config file and makefile target to enable markdown linting Signed-off-by: Sekiranda --- Makefile | 5 + scripts/markdown_diff_lint.sh | 94 +++++++++++ tools/.markdownlint.jsonc | 310 ++++++++++++++++++++++++++++++++++ 3 files changed, 409 insertions(+) create mode 100755 scripts/markdown_diff_lint.sh create mode 100644 tools/.markdownlint.jsonc diff --git a/Makefile b/Makefile index 22ea1bcdf707..e12ba8fdec14 100644 --- a/Makefile +++ b/Makefile @@ -225,3 +225,8 @@ verify-go-versions: .PHONY: sync-toolchain-directive sync-toolchain-directive: ./scripts/sync_go_toolchain_directive.sh + +.PHONY: markdown-diff-lint +markdown-diff-lint: + ./scripts/markdown_diff_lint.sh + \ No newline at end of file diff --git a/scripts/markdown_diff_lint.sh b/scripts/markdown_diff_lint.sh new file mode 100755 index 000000000000..d864d3e7e1fc --- /dev/null +++ b/scripts/markdown_diff_lint.sh @@ -0,0 +1,94 @@ +#!/usr/bin/env bash +# This script runs markdownlint-cli2 on changed files. +# Usage: ./markdown_lint.sh + + +# We source ./scripts/test_lib.sh, it sets the log functions and color variables. +source ./scripts/test_lib.sh + +# When we source ./scripts/test_lib.sh, it has the line set -u which treats unset variables as errors. +# We need to unset the variable to avoid the error. +set +u -eo pipefail + +if ! command markdownlint-cli2 dummy.md &>/dev/null; then + log_error "markdownlint-cli2 needs to be installed." + log_error "Please refer to https://github.com/DavidAnson/markdownlint-cli2?tab=readme-ov-file#install for installation instructions." + exit 1 +fi + + +if [ -z "${PULL_BASE_SHA}" ]; then + echo "Empty base reference (\$PULL_BASE_SHA), assuming: main" + PULL_BASE_SHA=main +fi + +if [ -z "${PULL_PULL_SHA}" ]; then + PULL_PULL_SHA="$(git rev-parse HEAD)" + echo "Empty pull reference (\$PULL_PULL_SHA), assuming: ${PULL_PULL_SHA}" +fi + +MD_LINT_URL_PREFIX="https://github.com/DavidAnson/markdownlint/blob/main/doc/" + +mapfile -t changed_files < <(git diff "${PULL_BASE_SHA}" --name-only) +declare -A files_with_failures start_ranges end_ranges + +for file in "${changed_files[@]}"; do + if ! [[ "$file" =~ .md$ ]]; then + continue + fi + + # Find start and end ranges from changed files. + start_ranges=() + end_ranges=() + # From https://github.com/paleite/eslint-plugin-diff/blob/46c5bcf296e9928db19333288457bf2805aad3b9/src/git.ts#L8-L27 + ranges=$(git diff "${PULL_BASE_SHA}" \ + --diff-algorithm=histogram \ + --diff-filter=ACM \ + --find-renames=100% \ + --no-ext-diff \ + --relative \ + --unified=0 -- "${file}" | \ + gawk 'match($0, /^@@\s-[0-9,]+\s\+([0-9]+)(,([0-9]+))?/, m) { \ + print m[1] ":" m[1] + ((m[3] == "") ? "0" : m[3]) }') + i=0 + for range in ${ranges}; do + start_ranges["${i}"]=$(echo "${range}" | awk -F: '{print $1}') + end_ranges["${i}"]=$(echo "${range}" | awk -F: '{print $2}') + i=$((1 + i)) + done + if [ -z "${ranges}" ]; then + start_ranges[0]=0 + end_ranges[0]=0 + fi + + i=0 + # Run markdownlint-cli2 with the changed file and print only the summary (stdout). + markdownlint-cli2 "${file}" --config "${ETCD_ROOT_DIR}/tools/.markdownlint.jsonc" 2>/dev/null || true + while IFS= read -r line; do + line_number=$(echo "${line}" | awk -F: '{print $2}' | awk '{print $1}') + while [ "${i}" -lt "${#end_ranges[@]}" ] && [ "${line_number}" -gt "${end_ranges["${i}"]}" ]; do + i=$((1 + i)) + done + rule=$(echo "${line}" | gawk 'match($2, /([^\/]+)/, m) {print tolower(m[1])}') + lint_error="${line} (${MD_LINT_URL_PREFIX}${rule}.md)" + + if [ "${i}" -lt "${#start_ranges[@]}" ] && [ "${line_number}" -ge "${start_ranges["${i}"]}" ] && [ "${line_number}" -le "${end_ranges["${i}"]}" ]; then + # Inside range with changes, raise an error. + log_error "${lint_error}" + files_with_failures["${file}"]=1 + else + # Outside of range, raise a warning. + log_warning "${lint_error}" + fi + done < <(markdownlint-cli2 "${file}" --config "${ETCD_ROOT_DIR}/tools/.markdownlint.jsonc" 2>&1 >/dev/null || true) +done + +echo "Finished linting" + +for file in "${!files_with_failures[@]}"; do + log_error "${file} has linting issues" +done +if [ "${#files_with_failures[@]}" -gt "0" ]; then + exit 1 +fi + diff --git a/tools/.markdownlint.jsonc b/tools/.markdownlint.jsonc new file mode 100644 index 000000000000..0263558de6d6 --- /dev/null +++ b/tools/.markdownlint.jsonc @@ -0,0 +1,310 @@ +// Example markdownlint configuration with all properties set to their default value +{ + + // Default state for all rules + "default": true, + + // Path to configuration file to extend + "extends": null, + + // MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md001.md + "MD001": true, + + // MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md003.md + "MD003": { + // Heading style + "style": "consistent" + }, + + // MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md004.md + "MD004": { + // List style + "style": "consistent" + }, + + // MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md005.md + "MD005": true, + + // MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md007.md + "MD007": { + // Spaces for indent + "indent": 2, + // Whether to indent the first level of the list + "start_indented": false, + // Spaces for first level indent (when start_indented is set) + "start_indent": 2 + }, + + // MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md009.md + "MD009": { + // Spaces for line break + "br_spaces": 2, + // Allow spaces for empty lines in list items + "list_item_empty_lines": false, + // Include unnecessary breaks + "strict": false + }, + + // MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md010.md + "MD010": { + // Include code blocks + "code_blocks": true, + // Fenced code languages to ignore + "ignore_code_languages": [], + // Number of spaces for each hard tab + "spaces_per_tab": 1 + }, + + // MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md011.md + "MD011": true, + + // MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md012.md + "MD012": { + // Consecutive blank lines + "maximum": 1 + }, + + // MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md013.md + "MD013": { + // Number of characters + "line_length": 80, + // Number of characters for headings + "heading_line_length": 80, + // Number of characters for code blocks + "code_block_line_length": 80, + // Include code blocks + "code_blocks": true, + // Include tables + "tables": true, + // Include headings + "headings": true, + // Strict length checking + "strict": false, + // Stern length checking + "stern": false + }, + + // MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md014.md + "MD014": true, + + // MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md018.md + "MD018": true, + + // MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md019.md + "MD019": true, + + // MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md020.md + "MD020": true, + + // MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md021.md + "MD021": true, + + // MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md022.md + "MD022": { + // Blank lines above heading + "lines_above": 1, + // Blank lines below heading + "lines_below": 1 + }, + + // MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md023.md + "MD023": true, + + // MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md024.md + "MD024": { + // Only check sibling headings + "siblings_only": false + }, + + // MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md025.md + "MD025": { + // Heading level + "level": 1, + // RegExp for matching title in front matter + "front_matter_title": "^\\s*title\\s*[:=]" + }, + + // MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md026.md + "MD026": { + // Punctuation characters + "punctuation": ".,;:!。,;:!" + }, + + // MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md027.md + "MD027": true, + + // MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md028.md + "MD028": true, + + // MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md029.md + "MD029": { + // List style + "style": "one_or_ordered" + }, + + // MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md030.md + "MD030": { + // Spaces for single-line unordered list items + "ul_single": 1, + // Spaces for single-line ordered list items + "ol_single": 1, + // Spaces for multi-line unordered list items + "ul_multi": 1, + // Spaces for multi-line ordered list items + "ol_multi": 1 + }, + + // MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md031.md + "MD031": { + // Include list items + "list_items": true + }, + + // MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md032.md + "MD032": true, + + // MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md033.md + "MD033": { + // Allowed elements + "allowed_elements": [] + }, + + // MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md034.md + "MD034": true, + + // MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md035.md + "MD035": { + // Horizontal rule style + "style": "consistent" + }, + + // MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md036.md + "MD036": { + // Punctuation characters + "punctuation": ".,;:!?。,;:!?" + }, + + // MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md037.md + "MD037": true, + + // MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md038.md + "MD038": true, + + // MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md039.md + "MD039": true, + + // MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md040.md + "MD040": { + // List of languages + "allowed_languages": [], + // Require language only + "language_only": false + }, + + // MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md041.md + "MD041": { + // Heading level + "level": 1, + // RegExp for matching title in front matter + "front_matter_title": "^\\s*title\\s*[:=]" + }, + + // MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md042.md + "MD042": true, + + // MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md043.md + "MD043": { + // List of headings + "headings": [], + // Match case of headings + "match_case": false + }, + + // MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md044.md + "MD044": { + // List of proper names + "names": [], + // Include code blocks + "code_blocks": true, + // Include HTML elements + "html_elements": true + }, + + // MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md045.md + "MD045": true, + + // MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md046.md + "MD046": { + // Block style + "style": "consistent" + }, + + // MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md047.md + "MD047": true, + + // MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md048.md + "MD048": { + // Code fence style + "style": "consistent" + }, + + // MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md049.md + "MD049": { + // Emphasis style + "style": "consistent" + }, + + // MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md050.md + "MD050": { + // Strong style + "style": "consistent" + }, + + // MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md051.md + "MD051": { + // Ignore case of fragments + "ignore_case": false + }, + + // MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md052.md + "MD052": { + // Include shortcut syntax + "shortcut_syntax": false + }, + + // MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md053.md + "MD053": { + // Ignored definitions + "ignored_definitions": [ + "//" + ] + }, + + // MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md054.md + "MD054": { + // Allow autolinks + "autolink": true, + // Allow inline links and images + "inline": true, + // Allow full reference links and images + "full": true, + // Allow collapsed reference links and images + "collapsed": true, + // Allow shortcut reference links and images + "shortcut": true, + // Allow URLs as inline links + "url_inline": true + }, + + // MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md055.md + "MD055": { + // Table pipe style + "style": "consistent" + }, + + // MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md056.md + "MD056": true, + + // MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md058.md + "MD058": true + } \ No newline at end of file From 6139f3dbb9a7d492bc847815c263b317b0003853 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Tue, 11 Mar 2025 17:28:03 -0700 Subject: [PATCH 0042/1068] client/pkg: address Go 1.24 usetesting issues Use the test package's provided Chdir function. Therefore, it's not required to evaluate an error (it doesn't return one) or change directories at the end. Signed-off-by: Ivan Valdes --- client/pkg/testutil/before.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/client/pkg/testutil/before.go b/client/pkg/testutil/before.go index 155a491ad405..6259fccfca19 100644 --- a/client/pkg/testutil/before.go +++ b/client/pkg/testutil/before.go @@ -19,9 +19,6 @@ import ( "os" "testing" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "go.etcd.io/etcd/client/pkg/v3/verify" ) @@ -31,15 +28,12 @@ func BeforeTest(tb testing.TB) { revertVerifyFunc := verify.EnableAllVerifications() - path, err := os.Getwd() - require.NoError(tb, err) tempDir := tb.TempDir() - require.NoError(tb, os.Chdir(tempDir)) + tb.Chdir(tempDir) tb.Logf("Changing working directory to: %s", tempDir) tb.Cleanup(func() { revertVerifyFunc() - assert.NoError(tb, os.Chdir(path)) }) } From 181eab77732f1e351101fa86df266e2ed67dac4f Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Thu, 13 Mar 2025 20:07:54 +0100 Subject: [PATCH 0043/1068] tests/e2e: address Go 1.24 usetesting issues Signed-off-by: Matthieu MOREL --- tests/e2e/cluster_downgrade_test.go | 14 +++++----- tests/e2e/cmux_test.go | 2 +- tests/e2e/corrupt_test.go | 12 ++++----- tests/e2e/ctl_v3_auth_cluster_test.go | 2 +- tests/e2e/ctl_v3_auth_no_proxy_test.go | 2 +- tests/e2e/ctl_v3_grpc_test.go | 6 ++--- tests/e2e/ctl_v3_member_no_proxy_test.go | 4 +-- tests/e2e/ctl_v3_member_test.go | 5 ++-- tests/e2e/ctl_v3_move_leader_test.go | 4 +-- tests/e2e/ctl_v3_snapshot_test.go | 28 +++++++++---------- tests/e2e/ctl_v3_test.go | 5 ++-- tests/e2e/defrag_no_space_test.go | 11 ++++---- tests/e2e/discovery_test.go | 6 ++--- tests/e2e/discovery_v3_test.go | 5 ++-- tests/e2e/etcd_config_test.go | 30 ++++++++++----------- tests/e2e/etcd_grpcproxy_test.go | 4 +-- tests/e2e/etcd_mix_versions_test.go | 15 +++++------ tests/e2e/etcd_release_upgrade_test.go | 9 +++---- tests/e2e/failover_test.go | 8 +++--- tests/e2e/gateway_test.go | 3 +-- tests/e2e/graceful_shutdown_test.go | 2 +- tests/e2e/hashkv_test.go | 11 ++++---- tests/e2e/http_health_check_test.go | 6 ++--- tests/e2e/leader_snapshot_no_proxy_test.go | 2 +- tests/e2e/logging_test.go | 3 +-- tests/e2e/metrics_test.go | 2 +- tests/e2e/promote_experimental_flag_test.go | 11 ++++---- tests/e2e/reproduce_17780_test.go | 3 +-- tests/e2e/runtime_reconfiguration_test.go | 6 ++--- tests/e2e/utl_migrate_test.go | 3 +-- tests/e2e/v2store_deprecation_test.go | 12 ++++----- tests/e2e/v3_curl_maxstream_test.go | 2 +- tests/e2e/v3_curl_watch_test.go | 2 +- tests/e2e/v3_lease_no_proxy_test.go | 4 +-- tests/e2e/watch_test.go | 30 ++++++++++----------- tests/e2e/zap_logging_test.go | 7 +++-- 36 files changed, 134 insertions(+), 147 deletions(-) diff --git a/tests/e2e/cluster_downgrade_test.go b/tests/e2e/cluster_downgrade_test.go index 0d80f0c4b82d..511a9fe1f925 100644 --- a/tests/e2e/cluster_downgrade_test.go +++ b/tests/e2e/cluster_downgrade_test.go @@ -137,7 +137,7 @@ func testDowngradeUpgrade(t *testing.T, numberOfMembersToDowngrade int, clusterS e2e.ValidateDowngradeInfo(t, epc, &pb.DowngradeInfo{Enabled: false}) t.Log("Adding member to test membership, but a learner avoid breaking quorum") - resp, err := cc.MemberAddAsLearner(context.Background(), "fake1", []string{"http://127.0.0.1:1001"}) + resp, err := cc.MemberAddAsLearner(t.Context(), "fake1", []string{"http://127.0.0.1:1001"}) require.NoError(t, err) if triggerSnapshot { t.Logf("Generating snapshot") @@ -145,7 +145,7 @@ func testDowngradeUpgrade(t *testing.T, numberOfMembersToDowngrade int, clusterS verifySnapshot(t, epc) } t.Log("Removing learner to test membership") - _, err = cc.MemberRemove(context.Background(), resp.Member.ID) + _, err = cc.MemberRemove(t.Context(), resp.Member.ID) require.NoError(t, err) beforeMembers, beforeKV := getMembersAndKeys(t, cc) @@ -197,7 +197,7 @@ func testDowngradeUpgrade(t *testing.T, numberOfMembersToDowngrade int, clusterS } t.Log("Adding learner to test membership, but avoid breaking quorum") - resp, err = cc.MemberAddAsLearner(context.Background(), "fake2", []string{"http://127.0.0.1:1002"}) + resp, err = cc.MemberAddAsLearner(t.Context(), "fake2", []string{"http://127.0.0.1:1002"}) require.NoError(t, err) if triggerSnapshot { t.Logf("Generating snapshot") @@ -205,7 +205,7 @@ func testDowngradeUpgrade(t *testing.T, numberOfMembersToDowngrade int, clusterS verifySnapshot(t, epc) } t.Log("Removing learner to test membership") - _, err = cc.MemberRemove(context.Background(), resp.Member.ID) + _, err = cc.MemberRemove(t.Context(), resp.Member.ID) require.NoError(t, err) beforeMembers, beforeKV = getMembersAndKeys(t, cc) @@ -229,7 +229,7 @@ func testDowngradeUpgrade(t *testing.T, numberOfMembersToDowngrade int, clusterS } func newCluster(t *testing.T, clusterSize int, snapshotCount uint64) *e2e.EtcdProcessCluster { - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithClusterSize(clusterSize), e2e.WithSnapshotCount(snapshotCount), e2e.WithKeepDataDir(true), @@ -246,7 +246,7 @@ func newCluster(t *testing.T, clusterSize int, snapshotCount uint64) *e2e.EtcdPr } func generateSnapshot(t *testing.T, snapshotCount uint64, cc *e2e.EtcdctlV3) { - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() var i uint64 @@ -286,7 +286,7 @@ func verifySnapshotMembers(t *testing.T, epc *e2e.EtcdProcessCluster, expectedMe } func getMembersAndKeys(t *testing.T, cc *e2e.EtcdctlV3) (*clientv3.MemberListResponse, *clientv3.GetResponse) { - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() kvs, err := cc.Get(ctx, "", config.GetOptions{Prefix: true}) diff --git a/tests/e2e/cmux_test.go b/tests/e2e/cmux_test.go index 9281705ee049..7d9596dbe112 100644 --- a/tests/e2e/cmux_test.go +++ b/tests/e2e/cmux_test.go @@ -69,7 +69,7 @@ func TestConnectionMultiplexing(t *testing.T) { }, } { t.Run(tc.name, func(t *testing.T) { - ctx := context.Background() + ctx := t.Context() cfg := e2e.NewConfig(e2e.WithClusterSize(1)) cfg.Client.ConnectionType = tc.serverTLS cfg.ClientHTTPSeparate = tc.separateHTTPPort diff --git a/tests/e2e/corrupt_test.go b/tests/e2e/corrupt_test.go index 86535345e997..d9e7b07704f9 100644 --- a/tests/e2e/corrupt_test.go +++ b/tests/e2e/corrupt_test.go @@ -99,7 +99,7 @@ func corruptTest(cx ctlCtx) { func TestInPlaceRecovery(t *testing.T) { basePort := 20000 e2e.BeforeTest(t) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() // Initialize the cluster. @@ -198,7 +198,7 @@ func TestPeriodicCheckDetectsCorruptionWithExperimentalFlag(t *testing.T) { func testPeriodicCheckDetectsCorruption(t *testing.T, useExperimentalFlag bool) { checkTime := time.Second e2e.BeforeTest(t) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() var corruptCheckTime e2e.EPClusterOption if useExperimentalFlag { @@ -233,7 +233,7 @@ func testPeriodicCheckDetectsCorruption(t *testing.T, useExperimentalFlag bool) err = testutil.CorruptBBolt(datadir.ToBackendFileName(epc.Procs[0].Config().DataDirPath)) require.NoError(t, err) - err = epc.Procs[0].Restart(context.TODO()) + err = epc.Procs[0].Restart(t.Context()) require.NoError(t, err) time.Sleep(checkTime * 11 / 10) alarmResponse, err := cc.AlarmList(ctx) @@ -252,7 +252,7 @@ func TestCompactHashCheckDetectCorruptionWithFeatureGate(t *testing.T) { func testCompactHashCheckDetectCorruption(t *testing.T, useFeatureGate bool) { checkTime := time.Second e2e.BeforeTest(t) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() opts := []e2e.EPClusterOption{e2e.WithKeepDataDir(true), e2e.WithCompactHashCheckTime(checkTime)} if useFeatureGate { @@ -308,7 +308,7 @@ func TestCompactHashCheckDetectCorruptionInterruptWithExperimentalFlag(t *testin func testCompactHashCheckDetectCorruptionInterrupt(t *testing.T, useFeatureGate bool, useExperimentalFlag bool) { checkTime := time.Second e2e.BeforeTest(t) - ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 60*time.Second) defer cancel() slowCompactionNodeIndex := 1 @@ -407,7 +407,7 @@ func TestCtlV3LinearizableRead(t *testing.T) { func testCtlV3ReadAfterWrite(t *testing.T, ops ...clientv3.OpOption) { e2e.BeforeTest(t) - ctx := context.Background() + ctx := t.Context() epc, err := e2e.NewEtcdProcessCluster(ctx, t, e2e.WithClusterSize(1), diff --git a/tests/e2e/ctl_v3_auth_cluster_test.go b/tests/e2e/ctl_v3_auth_cluster_test.go index 35b7cd289bed..e758d6e9b5b4 100644 --- a/tests/e2e/ctl_v3_auth_cluster_test.go +++ b/tests/e2e/ctl_v3_auth_cluster_test.go @@ -30,7 +30,7 @@ import ( func TestAuthCluster(t *testing.T) { e2e.BeforeTest(t) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() epc, err := e2e.NewEtcdProcessCluster(ctx, t, diff --git a/tests/e2e/ctl_v3_auth_no_proxy_test.go b/tests/e2e/ctl_v3_auth_no_proxy_test.go index 8529ff38dc98..8b79cc0dde63 100644 --- a/tests/e2e/ctl_v3_auth_no_proxy_test.go +++ b/tests/e2e/ctl_v3_auth_no_proxy_test.go @@ -43,7 +43,7 @@ func TestCtlV3AuthCertCNAndUsernameNoPassword(t *testing.T) { func TestCtlV3AuthCertCNWithWithConcurrentOperation(t *testing.T) { e2e.BeforeTest(t) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() // apply the certificate which has `root` CommonName, diff --git a/tests/e2e/ctl_v3_grpc_test.go b/tests/e2e/ctl_v3_grpc_test.go index 78881f3ed056..58f2791e2b7f 100644 --- a/tests/e2e/ctl_v3_grpc_test.go +++ b/tests/e2e/ctl_v3_grpc_test.go @@ -110,7 +110,7 @@ func TestAuthority(t *testing.T) { for _, clusterSize := range []int{1, 3} { t.Run(fmt.Sprintf("Size: %d, Scenario: %q", clusterSize, tc.name), func(t *testing.T) { e2e.BeforeTest(t) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() cfg := e2e.NewConfigNoTLS() @@ -125,7 +125,7 @@ func TestAuthority(t *testing.T) { cfg.BaseClientScheme = "unix" } - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, e2e.WithConfig(cfg)) + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) if err != nil { t.Fatalf("could not start etcd process cluster (%v)", err) } @@ -159,7 +159,7 @@ func templateEndpoints(t *testing.T, pattern string, clus *e2e.EtcdProcessCluste func assertAuthority(t *testing.T, expectAuthorityPattern string, clus *e2e.EtcdProcessCluster) { for i := range clus.Procs { - line, _ := clus.Procs[i].Logs().ExpectWithContext(context.TODO(), expect.ExpectedResponse{Value: `http2: decoded hpack field header field ":authority"`}) + line, _ := clus.Procs[i].Logs().ExpectWithContext(t.Context(), expect.ExpectedResponse{Value: `http2: decoded hpack field header field ":authority"`}) line = strings.TrimSuffix(line, "\n") line = strings.TrimSuffix(line, "\r") diff --git a/tests/e2e/ctl_v3_member_no_proxy_test.go b/tests/e2e/ctl_v3_member_no_proxy_test.go index be492f6a4c8c..6f1aa28c4134 100644 --- a/tests/e2e/ctl_v3_member_no_proxy_test.go +++ b/tests/e2e/ctl_v3_member_no_proxy_test.go @@ -33,7 +33,7 @@ import ( func TestMemberReplace(t *testing.T) { e2e.BeforeTest(t) - ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 20*time.Second) defer cancel() epc, err := e2e.NewEtcdProcessCluster(ctx, t) @@ -100,7 +100,7 @@ func TestMemberReplace(t *testing.T) { func TestMemberReplaceWithLearner(t *testing.T) { e2e.BeforeTest(t) - ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 20*time.Second) defer cancel() epc, err := e2e.NewEtcdProcessCluster(ctx, t) diff --git a/tests/e2e/ctl_v3_member_test.go b/tests/e2e/ctl_v3_member_test.go index 5c784a8651a9..e16912722da2 100644 --- a/tests/e2e/ctl_v3_member_test.go +++ b/tests/e2e/ctl_v3_member_test.go @@ -15,7 +15,6 @@ package e2e import ( - "context" "encoding/json" "errors" "fmt" @@ -86,7 +85,7 @@ func TestCtlV3MemberUpdatePeerTLS(t *testing.T) { func TestCtlV3ConsistentMemberList(t *testing.T) { e2e.BeforeTest(t) - ctx := context.Background() + ctx := t.Context() epc, err := e2e.NewEtcdProcessCluster(ctx, t, e2e.WithClusterSize(1), @@ -350,7 +349,7 @@ func ctlV3MemberUpdate(cx ctlCtx, memberID, peerURL string) error { func TestRemoveNonExistingMember(t *testing.T) { e2e.BeforeTest(t) - ctx := context.Background() + ctx := t.Context() cfg := e2e.ConfigStandalone(*e2e.NewConfig()) epc, err := e2e.NewEtcdProcessCluster(ctx, t, e2e.WithConfig(cfg)) diff --git a/tests/e2e/ctl_v3_move_leader_test.go b/tests/e2e/ctl_v3_move_leader_test.go index cc3e80774434..c77beb2b8b8d 100644 --- a/tests/e2e/ctl_v3_move_leader_test.go +++ b/tests/e2e/ctl_v3_move_leader_test.go @@ -84,7 +84,7 @@ func testCtlV3MoveLeader(t *testing.T, cfg e2e.EtcdProcessClusterConfig, envVars TLS: tcfg, }) require.NoError(t, err) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) resp, err := cli.Status(ctx, ep) if err != nil { t.Fatalf("failed to get status from endpoint %s: %v", ep, err) @@ -145,7 +145,7 @@ func setupEtcdctlTest(t *testing.T, cfg *e2e.EtcdProcessClusterConfig, quorum bo if !quorum { cfg = e2e.ConfigStandalone(*cfg) } - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, e2e.WithConfig(cfg)) + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) if err != nil { t.Fatalf("could not start etcd process cluster (%v)", err) } diff --git a/tests/e2e/ctl_v3_snapshot_test.go b/tests/e2e/ctl_v3_snapshot_test.go index d66249a5441f..f793c320ed67 100644 --- a/tests/e2e/ctl_v3_snapshot_test.go +++ b/tests/e2e/ctl_v3_snapshot_test.go @@ -169,7 +169,7 @@ func testIssue6361(t *testing.T) { e2e.BeforeTest(t) - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithClusterSize(1), e2e.WithKeepDataDir(true), ) @@ -222,7 +222,7 @@ func testIssue6361(t *testing.T) { epc.Procs[0].Config().Args[i+1] = newDataDir } } - require.NoError(t, epc.Procs[0].Restart(context.TODO())) + require.NoError(t, epc.Procs[0].Restart(t.Context())) t.Log("Ensuring the restored member has the correct data...") for i := range kvs { @@ -294,7 +294,7 @@ func snapshotVersionTest(cx ctlCtx) { func TestRestoreCompactionRevBump(t *testing.T) { e2e.BeforeTest(t) - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithClusterSize(1), e2e.WithKeepDataDir(true), ) @@ -309,13 +309,13 @@ func TestRestoreCompactionRevBump(t *testing.T) { ctl := epc.Etcdctl() - watchCh := ctl.Watch(context.Background(), "foo", config.WatchOptions{Prefix: true}) + watchCh := ctl.Watch(t.Context(), "foo", config.WatchOptions{Prefix: true}) // flake-fix: the watch can sometimes miss the first put below causing test failure time.Sleep(100 * time.Millisecond) kvs := []testutils.KV{{Key: "foo1", Val: "val1"}, {Key: "foo2", Val: "val2"}, {Key: "foo3", Val: "val3"}} for i := range kvs { - require.NoError(t, ctl.Put(context.Background(), kvs[i].Key, kvs[i].Val, config.PutOptions{})) + require.NoError(t, ctl.Put(t.Context(), kvs[i].Key, kvs[i].Val, config.PutOptions{})) } watchTimeout := 1 * time.Second @@ -337,10 +337,10 @@ func TestRestoreCompactionRevBump(t *testing.T) { // add some more kvs that are not in the snapshot that will be lost after restore unsnappedKVs := []testutils.KV{{Key: "unsnapped1", Val: "one"}, {Key: "unsnapped2", Val: "two"}, {Key: "unsnapped3", Val: "three"}} for i := range unsnappedKVs { - require.NoError(t, ctl.Put(context.Background(), unsnappedKVs[i].Key, unsnappedKVs[i].Val, config.PutOptions{})) + require.NoError(t, ctl.Put(t.Context(), unsnappedKVs[i].Key, unsnappedKVs[i].Val, config.PutOptions{})) } - membersBefore, err := ctl.MemberList(context.Background(), false) + membersBefore, err := ctl.MemberList(t.Context(), false) require.NoError(t, err) t.Log("Stopping the original server...") @@ -374,12 +374,12 @@ func TestRestoreCompactionRevBump(t *testing.T) { // Verify that initial snapshot is created by the restore operation verifySnapshotMembers(t, epc, membersBefore) - require.NoError(t, epc.Restart(context.Background())) + require.NoError(t, epc.Restart(t.Context())) t.Log("Ensuring the restored member has the correct data...") hasKVs(t, ctl, kvs, currentRev, baseRev) for i := range unsnappedKVs { - v, gerr := ctl.Get(context.Background(), unsnappedKVs[i].Key, config.GetOptions{}) + v, gerr := ctl.Get(t.Context(), unsnappedKVs[i].Key, config.GetOptions{}) require.NoError(t, gerr) require.Equal(t, int64(0), v.Count) } @@ -395,7 +395,7 @@ func TestRestoreCompactionRevBump(t *testing.T) { // clients might restart the watch at the old base revision, that should not yield any new data // everything up until bumpAmount+currentRev should return "already compacted" for i := bumpAmount - 2; i < bumpAmount+currentRev; i++ { - watchCh = ctl.Watch(context.Background(), "foo", config.WatchOptions{Prefix: true, Revision: int64(i)}) + watchCh = ctl.Watch(t.Context(), "foo", config.WatchOptions{Prefix: true, Revision: int64(i)}) cancelResult := <-watchCh require.Equal(t, v3rpc.ErrCompacted, cancelResult.Err()) require.Truef(t, cancelResult.Canceled, "expected ongoing watch to be cancelled after restoring with --mark-compacted") @@ -403,10 +403,10 @@ func TestRestoreCompactionRevBump(t *testing.T) { } // a watch after that revision should yield successful results when a new put arrives - ctx, cancel := context.WithTimeout(context.Background(), watchTimeout*5) + ctx, cancel := context.WithTimeout(t.Context(), watchTimeout*5) defer cancel() watchCh = ctl.Watch(ctx, "foo", config.WatchOptions{Prefix: true, Revision: int64(bumpAmount + currentRev + 1)}) - require.NoError(t, ctl.Put(context.Background(), "foo4", "val4", config.PutOptions{})) + require.NoError(t, ctl.Put(t.Context(), "foo4", "val4", config.PutOptions{})) watchRes, err = testutils.KeyValuesFromWatchChan(watchCh, 1, watchTimeout) require.NoErrorf(t, err, "failed to get key-values from watch channel %s", err) require.Equal(t, []testutils.KV{{Key: "foo4", Val: "val4"}}, watchRes) @@ -414,7 +414,7 @@ func TestRestoreCompactionRevBump(t *testing.T) { func hasKVs(t *testing.T, ctl *e2e.EtcdctlV3, kvs []testutils.KV, currentRev int, baseRev int) { for i := range kvs { - v, err := ctl.Get(context.Background(), kvs[i].Key, config.GetOptions{}) + v, err := ctl.Get(t.Context(), kvs[i].Key, config.GetOptions{}) require.NoError(t, err) require.Equal(t, int64(1), v.Count) require.Equal(t, kvs[i].Val, string(v.Kvs[0].Value)) @@ -427,7 +427,7 @@ func hasKVs(t *testing.T, ctl *e2e.EtcdctlV3, kvs []testutils.KV, currentRev int func TestBreakConsistentIndexNewerThanSnapshot(t *testing.T) { e2e.BeforeTest(t) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() var snapshotCount uint64 = 50 diff --git a/tests/e2e/ctl_v3_test.go b/tests/e2e/ctl_v3_test.go index 2cd112dc6045..9c5c2c857cea 100644 --- a/tests/e2e/ctl_v3_test.go +++ b/tests/e2e/ctl_v3_test.go @@ -15,7 +15,6 @@ package e2e import ( - "context" "fmt" "os" "strings" @@ -60,7 +59,7 @@ func TestClusterVersion(t *testing.T) { e2e.WithRollingStart(tt.rollingStart), ) - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, e2e.WithConfig(cfg)) + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) if err != nil { t.Fatalf("could not start etcd process cluster (%v)", err) } @@ -232,7 +231,7 @@ func testCtlWithOffline(t *testing.T, testFunc func(ctlCtx), testOfflineFunc fun ret.cfg.KeepDataDir = true } - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, e2e.WithConfig(&ret.cfg)) + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(&ret.cfg)) if err != nil { t.Fatalf("could not start etcd process cluster (%v)", err) } diff --git a/tests/e2e/defrag_no_space_test.go b/tests/e2e/defrag_no_space_test.go index f6ceabe667b3..f3c70c744478 100644 --- a/tests/e2e/defrag_no_space_test.go +++ b/tests/e2e/defrag_no_space_test.go @@ -15,7 +15,6 @@ package e2e import ( - "context" "fmt" "testing" "time" @@ -48,7 +47,7 @@ func TestDefragNoSpace(t *testing.T) { t.Run(tc.name, func(t *testing.T) { e2e.BeforeTest(t) - clus, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + clus, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithClusterSize(1), e2e.WithGoFailEnabled(true), ) @@ -57,12 +56,12 @@ func TestDefragNoSpace(t *testing.T) { member := clus.Procs[0] - require.NoError(t, member.Failpoints().SetupHTTP(context.Background(), tc.failpoint, fmt.Sprintf(`return("%s")`, tc.err))) - require.ErrorContains(t, member.Etcdctl().Defragment(context.Background(), config.DefragOption{Timeout: time.Minute}), tc.err) + require.NoError(t, member.Failpoints().SetupHTTP(t.Context(), tc.failpoint, fmt.Sprintf(`return("%s")`, tc.err))) + require.ErrorContains(t, member.Etcdctl().Defragment(t.Context(), config.DefragOption{Timeout: time.Minute}), tc.err) // Make sure etcd continues to run even after the failed defrag attempt - require.NoError(t, member.Etcdctl().Put(context.Background(), "foo", "bar", config.PutOptions{})) - value, err := member.Etcdctl().Get(context.Background(), "foo", config.GetOptions{}) + require.NoError(t, member.Etcdctl().Put(t.Context(), "foo", "bar", config.PutOptions{})) + value, err := member.Etcdctl().Get(t.Context(), "foo", config.GetOptions{}) require.NoError(t, err) require.Len(t, value.Kvs, 1) require.Equal(t, "bar", string(value.Kvs[0].Value)) diff --git a/tests/e2e/discovery_test.go b/tests/e2e/discovery_test.go index 15f51a9572d6..5ecccc51b8a5 100644 --- a/tests/e2e/discovery_test.go +++ b/tests/e2e/discovery_test.go @@ -47,7 +47,7 @@ func testClusterUsingDiscovery(t *testing.T, size int, peerTLS bool) { t.Skipf("%q does not exist", e2e.BinPath.EtcdLastRelease) } - dc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + dc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithBasePort(2000), e2e.WithVersion(e2e.LastVersion), e2e.WithClusterSize(1), @@ -60,12 +60,12 @@ func testClusterUsingDiscovery(t *testing.T, size int, peerTLS bool) { dcc := MustNewHTTPClient(t, dc.EndpointsHTTP(), nil) dkapi := client.NewKeysAPI(dcc) - ctx, cancel := context.WithTimeout(context.Background(), integration.RequestTimeout) + ctx, cancel := context.WithTimeout(t.Context(), integration.RequestTimeout) _, err = dkapi.Create(ctx, "/_config/size", fmt.Sprintf("%d", size)) require.NoError(t, err) cancel() - c, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + c, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithBasePort(3000), e2e.WithClusterSize(size), e2e.WithIsPeerTLS(peerTLS), diff --git a/tests/e2e/discovery_v3_test.go b/tests/e2e/discovery_v3_test.go index f3c47dd34e59..384f294cbfe9 100644 --- a/tests/e2e/discovery_v3_test.go +++ b/tests/e2e/discovery_v3_test.go @@ -15,7 +15,6 @@ package e2e import ( - "context" "fmt" "strconv" "strings" @@ -55,7 +54,7 @@ func testClusterUsingV3Discovery(t *testing.T, discoveryClusterSize, targetClust e2e.BeforeTest(t) // step 1: start the discovery service - ds, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + ds, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithBasePort(2000), e2e.WithClusterSize(discoveryClusterSize), e2e.WithClientConnType(clientTLSType), @@ -122,5 +121,5 @@ func bootstrapEtcdClusterUsingV3Discovery(t *testing.T, discoveryEndpoints []str } // start the cluster - return e2e.StartEtcdProcessCluster(context.TODO(), t, epc, cfg) + return e2e.StartEtcdProcessCluster(t.Context(), t, epc, cfg) } diff --git a/tests/e2e/etcd_config_test.go b/tests/e2e/etcd_config_test.go index 229b2c5f60eb..3033b058a7bd 100644 --- a/tests/e2e/etcd_config_test.go +++ b/tests/e2e/etcd_config_test.go @@ -40,7 +40,7 @@ func TestEtcdExampleConfig(t *testing.T) { proc, err := e2e.SpawnCmd([]string{e2e.BinPath.Etcd, "--config-file", exampleConfigFile}, nil) require.NoError(t, err) - require.NoError(t, e2e.WaitReadyExpectProc(context.TODO(), proc, e2e.EtcdServerReadyLines)) + require.NoError(t, e2e.WaitReadyExpectProc(t.Context(), proc, e2e.EtcdServerReadyLines)) require.NoError(t, proc.Stop()) } @@ -80,7 +80,7 @@ func TestEtcdMultiPeer(t *testing.T) { } for _, p := range procs { - err := e2e.WaitReadyExpectProc(context.TODO(), p, e2e.EtcdServerReadyLines) + err := e2e.WaitReadyExpectProc(t.Context(), p, e2e.EtcdServerReadyLines) require.NoError(t, err) } } @@ -102,7 +102,7 @@ func TestEtcdUnixPeers(t *testing.T) { ) defer os.Remove("etcd.unix:1") require.NoError(t, err) - require.NoError(t, e2e.WaitReadyExpectProc(context.TODO(), proc, e2e.EtcdServerReadyLines)) + require.NoError(t, e2e.WaitReadyExpectProc(t.Context(), proc, e2e.EtcdServerReadyLines)) require.NoError(t, proc.Stop()) } @@ -150,7 +150,7 @@ func TestEtcdListenMetricsURLsWithMissingClientTLSInfo(t *testing.T) { _ = proc.Close() }() - require.NoError(t, e2e.WaitReadyExpectProc(context.TODO(), proc, []string{embed.ErrMissingClientTLSInfoForMetricsURL.Error()})) + require.NoError(t, e2e.WaitReadyExpectProc(t.Context(), proc, []string{embed.ErrMissingClientTLSInfoForMetricsURL.Error()})) } // TestEtcdPeerCNAuth checks that the inter peer auth based on CN of cert is working correctly. @@ -224,7 +224,7 @@ func TestEtcdPeerCNAuth(t *testing.T) { } else { expect = []string{"remote error: tls: bad certificate"} } - err := e2e.WaitReadyExpectProc(context.TODO(), p, expect) + err := e2e.WaitReadyExpectProc(t.Context(), p, expect) require.NoError(t, err) } } @@ -311,7 +311,7 @@ func TestEtcdPeerMultiCNAuth(t *testing.T) { } else { expect = []string{"remote error: tls: bad certificate"} } - err := e2e.WaitReadyExpectProc(context.TODO(), p, expect) + err := e2e.WaitReadyExpectProc(t.Context(), p, expect) require.NoError(t, err) } } @@ -384,7 +384,7 @@ func TestEtcdPeerNameAuth(t *testing.T) { } else { expect = []string{"client certificate authentication failed"} } - err := e2e.WaitReadyExpectProc(context.TODO(), p, expect) + err := e2e.WaitReadyExpectProc(t.Context(), p, expect) require.NoError(t, err) } } @@ -490,7 +490,7 @@ func TestEtcdPeerLocalAddr(t *testing.T) { } else { expect = []string{"x509: certificate is valid for 127.0.0.1, not "} } - err := e2e.WaitReadyExpectProc(context.TODO(), p, expect) + err := e2e.WaitReadyExpectProc(t.Context(), p, expect) require.NoError(t, err) } } @@ -570,7 +570,7 @@ func TestBootstrapDefragFlag(t *testing.T) { proc, err := e2e.SpawnCmd([]string{e2e.BinPath.Etcd, "--experimental-bootstrap-defrag-threshold-megabytes", "1000"}, nil) require.NoError(t, err) - require.NoError(t, e2e.WaitReadyExpectProc(context.TODO(), proc, []string{"Skipping defragmentation"})) + require.NoError(t, e2e.WaitReadyExpectProc(t.Context(), proc, []string{"Skipping defragmentation"})) require.NoError(t, proc.Stop()) // wait for the process to exit, otherwise test will have leaked goroutine @@ -582,7 +582,7 @@ func TestBootstrapDefragFlag(t *testing.T) { func TestSnapshotCatchupEntriesFlag(t *testing.T) { e2e.SkipInShortMode(t) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) defer cancel() proc, err := e2e.SpawnCmd([]string{e2e.BinPath.Etcd, "--experimental-snapshot-catchup-entries", "1000"}, nil) @@ -600,7 +600,7 @@ func TestSnapshotCatchupEntriesFlag(t *testing.T) { // TestEtcdHealthyWithTinySnapshotCatchupEntries ensures multi-node etcd cluster remains healthy with 1 snapshot catch up entry func TestEtcdHealthyWithTinySnapshotCatchupEntries(t *testing.T) { e2e.BeforeTest(t) - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithClusterSize(3), e2e.WithSnapshotCount(1), e2e.WithSnapshotCatchUpEntries(1), @@ -613,7 +613,7 @@ func TestEtcdHealthyWithTinySnapshotCatchupEntries(t *testing.T) { }) // simulate 10 clients keep writing to etcd in parallel with no error - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() g, ctx := errgroup.WithContext(ctx) for i := 0; i < 10; i++ { @@ -655,7 +655,7 @@ func TestEtcdTLSVersion(t *testing.T) { }, nil, ) assert.NoError(t, err) - assert.NoErrorf(t, e2e.WaitReadyExpectProc(context.TODO(), proc, e2e.EtcdServerReadyLines), "did not receive expected output from etcd process") + assert.NoErrorf(t, e2e.WaitReadyExpectProc(t.Context(), proc, e2e.EtcdServerReadyLines), "did not receive expected output from etcd process") assert.NoError(t, proc.Stop()) proc.Wait() // ensure the port has been released @@ -694,7 +694,7 @@ func TestEtcdDeprecatedFlags(t *testing.T) { tc.args, nil, ) require.NoError(t, err) - require.NoError(t, e2e.WaitReadyExpectProc(context.TODO(), proc, []string{tc.expectedMsg})) + require.NoError(t, e2e.WaitReadyExpectProc(t.Context(), proc, []string{tc.expectedMsg})) require.NoError(t, proc.Stop()) proc.Wait() // ensure the port has been released @@ -722,7 +722,7 @@ func TestV2DeprecationEnforceDefaultValue(t *testing.T) { append(commonArgs, "--v2-deprecation", optionLevel), nil, ) require.NoError(t, err) - require.NoError(t, e2e.WaitReadyExpectProc(context.TODO(), proc, []string{expectedDeprecationLevelMsg})) + require.NoError(t, e2e.WaitReadyExpectProc(t.Context(), proc, []string{expectedDeprecationLevelMsg})) require.NoError(t, proc.Stop()) proc.Wait() // ensure the port has been released diff --git a/tests/e2e/etcd_grpcproxy_test.go b/tests/e2e/etcd_grpcproxy_test.go index 83de9335f9be..856b110191c4 100644 --- a/tests/e2e/etcd_grpcproxy_test.go +++ b/tests/e2e/etcd_grpcproxy_test.go @@ -33,7 +33,7 @@ import ( func TestGrpcProxyAutoSync(t *testing.T) { e2e.SkipInShortMode(t) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() epc, err := e2e.NewEtcdProcessCluster(ctx, t, e2e.WithClusterSize(1)) @@ -93,7 +93,7 @@ func TestGrpcProxyAutoSync(t *testing.T) { func TestGrpcProxyTLSVersions(t *testing.T) { e2e.SkipInShortMode(t) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() epc, err := e2e.NewEtcdProcessCluster(ctx, t, e2e.WithClusterSize(1)) diff --git a/tests/e2e/etcd_mix_versions_test.go b/tests/e2e/etcd_mix_versions_test.go index 46dab60db71b..205a76168419 100644 --- a/tests/e2e/etcd_mix_versions_test.go +++ b/tests/e2e/etcd_mix_versions_test.go @@ -15,7 +15,6 @@ package e2e import ( - "context" "fmt" "testing" "time" @@ -89,7 +88,7 @@ func mixVersionsSnapshotTestByAddingMember(t *testing.T, cfg *e2e.EtcdProcessClu } t.Logf("Create an etcd cluster with %d member", cfg.ClusterSize) - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg), e2e.WithSnapshotCount(10), ) @@ -107,9 +106,9 @@ func mixVersionsSnapshotTestByAddingMember(t *testing.T, cfg *e2e.EtcdProcessClu newCfg.Version = newInstanceVersion newCfg.ServerConfig.SnapshotCatchUpEntries = 10 t.Log("Starting a new etcd instance") - _, err = epc.StartNewProc(context.TODO(), &newCfg, t, false /* addAsLearner */) + _, err = epc.StartNewProc(t.Context(), &newCfg, t, false /* addAsLearner */) require.NoErrorf(t, err, "failed to start the new etcd instance") - defer epc.CloseProc(context.TODO(), nil) + defer epc.CloseProc(t.Context(), nil) assertKVHash(t, epc) } @@ -136,7 +135,7 @@ func mixVersionsSnapshotTestByMockPartition(t *testing.T, cfg *e2e.EtcdProcessCl e2e.WithSnapshotCatchUpEntries(10), } t.Logf("Create an etcd cluster with %d member", cfg.ClusterSize) - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, clusterOptions...) + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, clusterOptions...) require.NoErrorf(t, err, "failed to start etcd cluster") defer func() { derr := epc.Close() @@ -156,7 +155,7 @@ func mixVersionsSnapshotTestByMockPartition(t *testing.T, cfg *e2e.EtcdProcessCl e2e.AssertProcessLogs(t, leaderEPC, "saved snapshot") t.Log("Restart the partitioned member") - err = toPartitionedMember.Restart(context.TODO()) + err = toPartitionedMember.Restart(t.Context()) require.NoError(t, err) assertKVHash(t, epc) @@ -170,7 +169,7 @@ func writeKVs(t *testing.T, etcdctl *e2e.EtcdctlV3, startIdx, endIdx int) { for i := startIdx; i < endIdx; i++ { key := fmt.Sprintf("key-%d", i) value := fmt.Sprintf("value-%d", i) - err := etcdctl.Put(context.TODO(), key, value, config.PutOptions{}) + err := etcdctl.Put(t.Context(), key, value, config.PutOptions{}) require.NoErrorf(t, err, "failed to put %q", key) } } @@ -182,7 +181,7 @@ func assertKVHash(t *testing.T, epc *e2e.EtcdProcessCluster) { } t.Log("Verify all nodes have exact same revision and hash") assert.Eventually(t, func() bool { - hashKvs, err := epc.Etcdctl().HashKV(context.TODO(), 0) + hashKvs, err := epc.Etcdctl().HashKV(t.Context(), 0) if err != nil { t.Logf("failed to get HashKV: %v", err) return false diff --git a/tests/e2e/etcd_release_upgrade_test.go b/tests/e2e/etcd_release_upgrade_test.go index b6448e0bcaae..111d908e49f3 100644 --- a/tests/e2e/etcd_release_upgrade_test.go +++ b/tests/e2e/etcd_release_upgrade_test.go @@ -15,7 +15,6 @@ package e2e import ( - "context" "fmt" "sync" "testing" @@ -40,7 +39,7 @@ func TestReleaseUpgrade(t *testing.T) { e2e.BeforeTest(t) - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithVersion(e2e.LastVersion), e2e.WithSnapshotCount(3), e2e.WithBasePeerScheme("unix"), // to avoid port conflict @@ -83,7 +82,7 @@ func TestReleaseUpgrade(t *testing.T) { epc.Procs[i].Config().KeepDataDir = true t.Logf("Restarting node in the new version: %v", i) - if err = epc.Procs[i].Restart(context.TODO()); err != nil { + if err = epc.Procs[i].Restart(t.Context()); err != nil { t.Fatalf("error restarting etcd process (%v)", err) } @@ -120,7 +119,7 @@ func TestReleaseUpgradeWithRestart(t *testing.T) { e2e.BeforeTest(t) - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithVersion(e2e.LastVersion), e2e.WithSnapshotCount(10), e2e.WithBasePeerScheme("unix"), @@ -159,7 +158,7 @@ func TestReleaseUpgradeWithRestart(t *testing.T) { go func(i int) { epc.Procs[i].Config().ExecPath = e2e.BinPath.Etcd epc.Procs[i].Config().KeepDataDir = true - assert.NoErrorf(t, epc.Procs[i].Restart(context.TODO()), "error restarting etcd process") + assert.NoErrorf(t, epc.Procs[i].Restart(t.Context()), "error restarting etcd process") wg.Done() }(i) } diff --git a/tests/e2e/failover_test.go b/tests/e2e/failover_test.go index 878603673485..58ee806cabd7 100644 --- a/tests/e2e/failover_test.go +++ b/tests/e2e/failover_test.go @@ -136,7 +136,7 @@ func TestFailoverOnDefrag(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { e2e.BeforeTest(t) - clus, cerr := e2e.NewEtcdProcessCluster(context.TODO(), t, tc.clusterOptions...) + clus, cerr := e2e.NewEtcdProcessCluster(t.Context(), t, tc.clusterOptions...) require.NoError(t, cerr) t.Cleanup(func() { clus.Stop() }) @@ -165,7 +165,7 @@ func TestFailoverOnDefrag(t *testing.T) { return lastErr default: } - getContext, cancel := context.WithTimeout(context.Background(), requestTimeout) + getContext, cancel := context.WithTimeout(t.Context(), requestTimeout) _, err := clusterClient.Get(getContext, "health") cancel() requestVolume++ @@ -199,6 +199,6 @@ func TestFailoverOnDefrag(t *testing.T) { } func triggerDefrag(t *testing.T, member e2e.EtcdProcess) { - require.NoError(t, member.Failpoints().SetupHTTP(context.Background(), "defragBeforeCopy", `sleep("10s")`)) - require.NoError(t, member.Etcdctl().Defragment(context.Background(), config.DefragOption{Timeout: time.Minute})) + require.NoError(t, member.Failpoints().SetupHTTP(t.Context(), "defragBeforeCopy", `sleep("10s")`)) + require.NoError(t, member.Etcdctl().Defragment(t.Context(), config.DefragOption{Timeout: time.Minute})) } diff --git a/tests/e2e/gateway_test.go b/tests/e2e/gateway_test.go index 600207610884..8d4f44221824 100644 --- a/tests/e2e/gateway_test.go +++ b/tests/e2e/gateway_test.go @@ -15,7 +15,6 @@ package e2e import ( - "context" "strings" "testing" @@ -28,7 +27,7 @@ import ( var defaultGatewayEndpoint = "127.0.0.1:23790" func TestGateway(t *testing.T) { - ec, err := e2e.NewEtcdProcessCluster(context.TODO(), t) + ec, err := e2e.NewEtcdProcessCluster(t.Context(), t) require.NoError(t, err) defer ec.Stop() diff --git a/tests/e2e/graceful_shutdown_test.go b/tests/e2e/graceful_shutdown_test.go index b612a5c1b6a0..d889bfa4ca76 100644 --- a/tests/e2e/graceful_shutdown_test.go +++ b/tests/e2e/graceful_shutdown_test.go @@ -47,7 +47,7 @@ func TestGracefulShutdown(t *testing.T) { t.Run(tc.name, func(t *testing.T) { testRunner := e2e.NewE2eRunner() testRunner.BeforeTest(t) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) defer cancel() clus := testRunner.NewCluster(ctx, t, config.WithClusterSize(tc.clusterSize)) // clean up orphaned resources like closing member client. diff --git a/tests/e2e/hashkv_test.go b/tests/e2e/hashkv_test.go index 6c81e1cc7dd9..e17ec3d6a787 100644 --- a/tests/e2e/hashkv_test.go +++ b/tests/e2e/hashkv_test.go @@ -17,7 +17,6 @@ package e2e import ( - "context" "fmt" "testing" @@ -63,7 +62,7 @@ func TestVerifyHashKVAfterCompact(t *testing.T) { } } - ctx := context.Background() + ctx := t.Context() cfg := e2e.NewConfigClientTLS() clus, err := e2e.NewEtcdProcessCluster(ctx, t, @@ -107,7 +106,7 @@ func TestVerifyHashKVAfterTwoCompactionsOnTombstone_MixVersions(t *testing.T) { t.Skipf("%q does not exist", e2e.BinPath.EtcdLastRelease) } - ctx := context.Background() + ctx := t.Context() cfg := e2e.NewConfigClientTLS() clus, err := e2e.NewEtcdProcessCluster(ctx, t, @@ -149,7 +148,7 @@ func TestVerifyHashKVAfterCompactionOnLastTombstone_MixVersions(t *testing.T) { {"key0", "key1"}, } { t.Run(fmt.Sprintf("#%v", keys), func(t *testing.T) { - ctx := context.Background() + ctx := t.Context() cfg := e2e.NewConfigClientTLS() clus, err := e2e.NewEtcdProcessCluster(ctx, t, @@ -182,7 +181,7 @@ func populateDataForHashKV(t *testing.T, clus *e2e.EtcdProcessCluster, clientCfg c := newClient(t, clus.EndpointsGRPC(), clientCfg) defer c.Close() - ctx := context.Background() + ctx := t.Context() totalOperations := 40 var ( @@ -218,7 +217,7 @@ func populateDataForHashKV(t *testing.T, clus *e2e.EtcdProcessCluster, clientCfg } func verifyConsistentHashKVAcrossAllMembers(t *testing.T, cli *e2e.EtcdctlV3, hashKVOnRev int64) { - ctx := context.Background() + ctx := t.Context() t.Logf("HashKV on rev=%d", hashKVOnRev) resp, err := cli.HashKV(ctx, hashKVOnRev) diff --git a/tests/e2e/http_health_check_test.go b/tests/e2e/http_health_check_test.go index 86b41bfd6544..883a115af0c6 100644 --- a/tests/e2e/http_health_check_test.go +++ b/tests/e2e/http_health_check_test.go @@ -150,7 +150,7 @@ func TestHTTPHealthHandler(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 20*time.Second) defer cancel() clus, err := e2e.NewEtcdProcessCluster(ctx, t, tc.clusterOptions...) require.NoError(t, err) @@ -313,7 +313,7 @@ func TestHTTPLivezReadyzHandler(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 20*time.Second) defer cancel() clus, err := e2e.NewEtcdProcessCluster(ctx, t, tc.clusterOptions...) require.NoError(t, err) @@ -336,7 +336,7 @@ func TestHTTPLivezReadyzHandler(t *testing.T) { } func doHealthCheckAndVerify(t *testing.T, client *http.Client, url string, expectTimeoutError bool, expectStatusCode int, expectRespSubStrings []string) { - ctx, cancel := context.WithTimeout(context.Background(), healthCheckTimeout) + ctx, cancel := context.WithTimeout(t.Context(), healthCheckTimeout) req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) require.NoErrorf(t, err, "failed to creat request %+v", err) resp, herr := client.Do(req) diff --git a/tests/e2e/leader_snapshot_no_proxy_test.go b/tests/e2e/leader_snapshot_no_proxy_test.go index 7b3c39270f39..b58d294cf1ab 100644 --- a/tests/e2e/leader_snapshot_no_proxy_test.go +++ b/tests/e2e/leader_snapshot_no_proxy_test.go @@ -35,7 +35,7 @@ import ( func TestRecoverSnapshotBackend(t *testing.T) { e2e.BeforeTest(t) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() epc, err := e2e.NewEtcdProcessCluster(ctx, t, diff --git a/tests/e2e/logging_test.go b/tests/e2e/logging_test.go index 9bcac2390b3b..3cea7ee0c68a 100644 --- a/tests/e2e/logging_test.go +++ b/tests/e2e/logging_test.go @@ -15,7 +15,6 @@ package e2e import ( - "context" "encoding/json" "testing" "time" @@ -109,7 +108,7 @@ func TestNoErrorLogsDuringNormalOperations(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { e2e.BeforeTest(t) - ctx := context.TODO() + ctx := t.Context() epc, err := e2e.NewEtcdProcessCluster(ctx, t, tc.options...) require.NoError(t, err) diff --git a/tests/e2e/metrics_test.go b/tests/e2e/metrics_test.go index c76de746df6c..bac4ef909987 100644 --- a/tests/e2e/metrics_test.go +++ b/tests/e2e/metrics_test.go @@ -306,7 +306,7 @@ func TestNoMetricsMissing(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { e2e.BeforeTest(t) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) defer cancel() epc, err := e2e.NewEtcdProcessCluster(ctx, t, tc.options...) diff --git a/tests/e2e/promote_experimental_flag_test.go b/tests/e2e/promote_experimental_flag_test.go index 13a8fcba4fb1..18fb0bd3bdf7 100644 --- a/tests/e2e/promote_experimental_flag_test.go +++ b/tests/e2e/promote_experimental_flag_test.go @@ -15,7 +15,6 @@ package e2e import ( - "context" "testing" "time" @@ -28,7 +27,7 @@ import ( func TestWarningApplyDuration(t *testing.T) { e2e.BeforeTest(t) - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithClusterSize(1), e2e.WithWarningUnaryRequestDuration(time.Microsecond), ) @@ -42,7 +41,7 @@ func TestWarningApplyDuration(t *testing.T) { }) cc := epc.Etcdctl() - err = cc.Put(context.TODO(), "foo", "bar", config.PutOptions{}) + err = cc.Put(t.Context(), "foo", "bar", config.PutOptions{}) require.NoErrorf(t, err, "error on put") // verify warning @@ -55,7 +54,7 @@ func TestWarningApplyDuration(t *testing.T) { func TestExperimentalWarningApplyDuration(t *testing.T) { e2e.BeforeTest(t) - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithClusterSize(1), e2e.WithExperimentalWarningUnaryRequestDuration(time.Microsecond), ) @@ -69,7 +68,7 @@ func TestExperimentalWarningApplyDuration(t *testing.T) { }) cc := epc.Etcdctl() - err = cc.Put(context.TODO(), "foo", "bar", config.PutOptions{}) + err = cc.Put(t.Context(), "foo", "bar", config.PutOptions{}) require.NoErrorf(t, err, "error on put") // verify warning @@ -79,7 +78,7 @@ func TestExperimentalWarningApplyDuration(t *testing.T) { func TestBothWarningApplyDurationFlagsFail(t *testing.T) { e2e.BeforeTest(t) - _, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + _, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithClusterSize(1), e2e.WithWarningUnaryRequestDuration(time.Second), e2e.WithExperimentalWarningUnaryRequestDuration(time.Second), diff --git a/tests/e2e/reproduce_17780_test.go b/tests/e2e/reproduce_17780_test.go index f5ef97b91a4b..fc54b8e8cc9a 100644 --- a/tests/e2e/reproduce_17780_test.go +++ b/tests/e2e/reproduce_17780_test.go @@ -15,7 +15,6 @@ package e2e import ( - "context" "fmt" "testing" "time" @@ -34,7 +33,7 @@ func TestReproduce17780(t *testing.T) { compactionBatchLimit := 10 - ctx := context.TODO() + ctx := t.Context() clus, cerr := e2e.NewEtcdProcessCluster(ctx, t, e2e.WithClusterSize(3), e2e.WithGoFailEnabled(true), diff --git a/tests/e2e/runtime_reconfiguration_test.go b/tests/e2e/runtime_reconfiguration_test.go index 1736126e6a6e..650e9358d2ba 100644 --- a/tests/e2e/runtime_reconfiguration_test.go +++ b/tests/e2e/runtime_reconfiguration_test.go @@ -60,7 +60,7 @@ func TestRuntimeReconfigGrowClusterSize(t *testing.T) { } for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() epc, err := e2e.NewEtcdProcessCluster(ctx, t, e2e.WithClusterSize(tc.clusterSize)) @@ -102,7 +102,7 @@ func TestRuntimeReconfigDecreaseClusterSize(t *testing.T) { } for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() epc, err := e2e.NewEtcdProcessCluster(ctx, t, e2e.WithClusterSize(tc.clusterSize)) @@ -140,7 +140,7 @@ func TestRuntimeReconfigRollingUpgrade(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() epc, err := e2e.NewEtcdProcessCluster(ctx, t, e2e.WithClusterSize(3)) diff --git a/tests/e2e/utl_migrate_test.go b/tests/e2e/utl_migrate_test.go index 5ee933f0ef28..d002d4ef7a73 100644 --- a/tests/e2e/utl_migrate_test.go +++ b/tests/e2e/utl_migrate_test.go @@ -17,7 +17,6 @@ package e2e import ( - "context" "fmt" "path/filepath" "strings" @@ -138,7 +137,7 @@ func TestEtctlutlMigrate(t *testing.T) { } dataDirPath := t.TempDir() - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithVersion(tc.clusterVersion), e2e.WithDataDirPath(dataDirPath), e2e.WithClusterSize(1), diff --git a/tests/e2e/v2store_deprecation_test.go b/tests/e2e/v2store_deprecation_test.go index b267ae240b8a..34225cb7bf87 100644 --- a/tests/e2e/v2store_deprecation_test.go +++ b/tests/e2e/v2store_deprecation_test.go @@ -72,7 +72,7 @@ func TestV2DeprecationWriteOnlyWAL(t *testing.T) { e2e.WithEnableV2(true), e2e.WithDataDirPath(dataDirPath), )) - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, e2e.WithConfig(cfg)) + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) require.NoError(t, err) memberDataDir := epc.Procs[0].Config().DataDirPath @@ -101,7 +101,7 @@ func TestV2DeprecationWriteOnlySnapshot(t *testing.T) { e2e.WithDataDirPath(dataDirPath), e2e.WithSnapshotCount(10), )) - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, e2e.WithConfig(cfg)) + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) require.NoError(t, err) memberDataDir := epc.Procs[0].Config().DataDirPath @@ -123,7 +123,7 @@ func TestV2DeprecationSnapshotMatches(t *testing.T) { e2e.BeforeTest(t) lastReleaseData := t.TempDir() currentReleaseData := t.TempDir() - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() if !fileutil.Exist(e2e.BinPath.EtcdLastRelease) { @@ -156,7 +156,7 @@ func TestV2DeprecationSnapshotMatches(t *testing.T) { func TestV2DeprecationSnapshotRecover(t *testing.T) { e2e.BeforeTest(t) dataDir := t.TempDir() - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() if !fileutil.Exist(e2e.BinPath.EtcdLastRelease) { @@ -176,7 +176,7 @@ func TestV2DeprecationSnapshotRecover(t *testing.T) { e2e.WithVersion(e2e.CurrentVersion), e2e.WithDataDirPath(dataDir), )) - epc, err = e2e.NewEtcdProcessCluster(context.TODO(), t, e2e.WithConfig(cfg)) + epc, err = e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) require.NoError(t, err) cc = epc.Etcdctl() @@ -198,7 +198,7 @@ func runEtcdAndCreateSnapshot(t testing.TB, serverVersion e2e.ClusterVersion, da e2e.WithSnapshotCount(snapshotCount), e2e.WithKeepDataDir(true), )) - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, e2e.WithConfig(cfg)) + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) assert.NoError(t, err) return epc } diff --git a/tests/e2e/v3_curl_maxstream_test.go b/tests/e2e/v3_curl_maxstream_test.go index 027a3b538e8c..0833fdbd36ed 100644 --- a/tests/e2e/v3_curl_maxstream_test.go +++ b/tests/e2e/v3_curl_maxstream_test.go @@ -88,7 +88,7 @@ func testCurlV3MaxStream(t *testing.T, reachLimit bool, opts ...ctlOption) { // Step 2: create the cluster t.Log("Creating an etcd cluster") - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, e2e.WithConfig(&cx.cfg)) + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(&cx.cfg)) require.NoErrorf(t, err, "Failed to start etcd cluster") cx.epc = epc cx.dataDir = epc.Procs[0].Config().DataDirPath diff --git a/tests/e2e/v3_curl_watch_test.go b/tests/e2e/v3_curl_watch_test.go index f6ced632cd88..f0c20b8575e4 100644 --- a/tests/e2e/v3_curl_watch_test.go +++ b/tests/e2e/v3_curl_watch_test.go @@ -54,7 +54,7 @@ func testCurlV3Watch(cx ctlCtx) { func TestCurlWatchIssue19509(t *testing.T) { e2e.BeforeTest(t) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) defer cancel() epc, err := e2e.NewEtcdProcessCluster(ctx, t, e2e.WithConfig(e2e.NewConfigClientTLS()), e2e.WithClusterSize(1)) require.NoError(t, err) diff --git a/tests/e2e/v3_lease_no_proxy_test.go b/tests/e2e/v3_lease_no_proxy_test.go index 0bb3939f3134..7e83ceab276e 100644 --- a/tests/e2e/v3_lease_no_proxy_test.go +++ b/tests/e2e/v3_lease_no_proxy_test.go @@ -57,7 +57,7 @@ func TestLeaseRevoke_ClientSwitchToOtherMember(t *testing.T) { func testLeaseRevokeIssue(t *testing.T, clusterSize int, connectToOneFollower bool) { e2e.BeforeTest(t) - ctx := context.Background() + ctx := t.Context() t.Log("Starting a new etcd cluster") epc, err := e2e.NewEtcdProcessCluster(ctx, t, @@ -127,7 +127,7 @@ func testLeaseRevokeIssue(t *testing.T, clusterSize int, connectToOneFollower bo err = epc.Procs[leaderIdx].Failpoints().SetupHTTP(ctx, "raftBeforeSave", `sleep("30s")`) require.NoError(t, err) - cctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + cctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) t.Logf("Waiting for a new leader to be elected, old leader index: %d, old leader ID: %d", leaderIdx, oldLeaderID) testutils.ExecuteUntil(cctx, t, func() { for { diff --git a/tests/e2e/watch_test.go b/tests/e2e/watch_test.go index 758177c64898..c628a0cc888c 100644 --- a/tests/e2e/watch_test.go +++ b/tests/e2e/watch_test.go @@ -95,13 +95,13 @@ func TestWatchDelayForPeriodicProgressNotification(t *testing.T) { cfg.Client = tc.client cfg.ClientHTTPSeparate = tc.clientHTTPSeparate t.Run(tc.name, func(t *testing.T) { - clus, err := e2e.NewEtcdProcessCluster(context.Background(), t, e2e.WithConfig(cfg)) + clus, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) require.NoError(t, err) defer clus.Close() c := newClient(t, clus.EndpointsGRPC(), tc.client) - require.NoError(t, fillEtcdWithData(context.Background(), c, tc.dbSizeBytes)) + require.NoError(t, fillEtcdWithData(t.Context(), c, tc.dbSizeBytes)) - ctx, cancel := context.WithTimeout(context.Background(), watchTestDuration) + ctx, cancel := context.WithTimeout(t.Context(), watchTestDuration) defer cancel() g := errgroup.Group{} continuouslyExecuteGetAll(ctx, t, &g, c) @@ -120,13 +120,13 @@ func TestWatchDelayForManualProgressNotification(t *testing.T) { cfg.Client = tc.client cfg.ClientHTTPSeparate = tc.clientHTTPSeparate t.Run(tc.name, func(t *testing.T) { - clus, err := e2e.NewEtcdProcessCluster(context.Background(), t, e2e.WithConfig(cfg)) + clus, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) require.NoError(t, err) defer clus.Close() c := newClient(t, clus.EndpointsGRPC(), tc.client) - require.NoError(t, fillEtcdWithData(context.Background(), c, tc.dbSizeBytes)) + require.NoError(t, fillEtcdWithData(t.Context(), c, tc.dbSizeBytes)) - ctx, cancel := context.WithTimeout(context.Background(), watchTestDuration) + ctx, cancel := context.WithTimeout(t.Context(), watchTestDuration) defer cancel() g := errgroup.Group{} continuouslyExecuteGetAll(ctx, t, &g, c) @@ -157,13 +157,13 @@ func TestWatchDelayForEvent(t *testing.T) { cfg.Client = tc.client cfg.ClientHTTPSeparate = tc.clientHTTPSeparate t.Run(tc.name, func(t *testing.T) { - clus, err := e2e.NewEtcdProcessCluster(context.Background(), t, e2e.WithConfig(cfg)) + clus, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) require.NoError(t, err) defer clus.Close() c := newClient(t, clus.EndpointsGRPC(), tc.client) - require.NoError(t, fillEtcdWithData(context.Background(), c, tc.dbSizeBytes)) + require.NoError(t, fillEtcdWithData(t.Context(), c, tc.dbSizeBytes)) - ctx, cancel := context.WithTimeout(context.Background(), watchTestDuration) + ctx, cancel := context.WithTimeout(t.Context(), watchTestDuration) defer cancel() g := errgroup.Group{} g.Go(func() error { @@ -270,14 +270,14 @@ func TestDeleteEventDrop_Issue18089(t *testing.T) { cfg := e2e.DefaultConfig() cfg.ClusterSize = 1 cfg.Client = e2e.ClientConfig{ConnectionType: e2e.ClientTLS} - clus, err := e2e.NewEtcdProcessCluster(context.Background(), t, e2e.WithConfig(cfg)) + clus, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) require.NoError(t, err) defer clus.Close() c := newClient(t, clus.EndpointsGRPC(), cfg.Client) defer c.Close() - ctx := context.Background() + ctx := t.Context() const ( key = "k" v2 = "v2" @@ -345,14 +345,14 @@ func testStartWatcherFromCompactedRevision(t *testing.T, performCompactOnTombsto e2e.BeforeTest(t) cfg := e2e.DefaultConfig() cfg.Client = e2e.ClientConfig{ConnectionType: e2e.ClientTLS} - clus, err := e2e.NewEtcdProcessCluster(context.Background(), t, e2e.WithConfig(cfg), e2e.WithClusterSize(1)) + clus, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg), e2e.WithClusterSize(1)) require.NoError(t, err) defer clus.Close() c := newClient(t, clus.EndpointsGRPC(), cfg.Client) defer c.Close() - ctx := context.Background() + ctx := t.Context() key := "foo" totalRev := 100 @@ -494,11 +494,11 @@ func testStartWatcherFromCompactedRevision(t *testing.T, performCompactOnTombsto func TestResumeCompactionOnTombstone(t *testing.T) { e2e.BeforeTest(t) - ctx := context.Background() + ctx := t.Context() compactBatchLimit := 5 cfg := e2e.DefaultConfig() - clus, err := e2e.NewEtcdProcessCluster(context.Background(), + clus, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg), e2e.WithClusterSize(1), diff --git a/tests/e2e/zap_logging_test.go b/tests/e2e/zap_logging_test.go index 6752a23cc2f5..0d7b7ffed501 100644 --- a/tests/e2e/zap_logging_test.go +++ b/tests/e2e/zap_logging_test.go @@ -15,7 +15,6 @@ package e2e import ( - "context" "encoding/json" "testing" "time" @@ -29,7 +28,7 @@ import ( func TestServerJsonLogging(t *testing.T) { e2e.BeforeTest(t) - epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithClusterSize(1), e2e.WithLogLevel("debug"), ) @@ -115,7 +114,7 @@ func TestConnectionRejectMessage(t *testing.T) { t.Log("Starting an etcd process and wait for it to get ready.") p, err := e2e.SpawnCmd(commonArgs, nil) require.NoError(t, err) - err = e2e.WaitReadyExpectProc(context.TODO(), p, e2e.EtcdServerReadyLines) + err = e2e.WaitReadyExpectProc(t.Context(), p, e2e.EtcdServerReadyLines) require.NoError(t, err) defer func() { p.Stop() @@ -127,7 +126,7 @@ func TestConnectionRejectMessage(t *testing.T) { doneCh := make(chan struct{}, 1) go func() { startedCh <- struct{}{} - verr := e2e.WaitReadyExpectProc(context.TODO(), p, []string{tc.expectedErrMsg}) + verr := e2e.WaitReadyExpectProc(t.Context(), p, []string{tc.expectedErrMsg}) assert.NoError(t, verr) doneCh <- struct{}{} }() From 5c377671c859071178195ee29e49f0b920b50a66 Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Thu, 13 Mar 2025 19:53:48 +0100 Subject: [PATCH 0044/1068] server: address Go 1.24 usetesting issues Signed-off-by: Matthieu MOREL --- server/auth/jwt_test.go | 5 ++- server/auth/simple_token_test.go | 6 ++-- server/auth/store_test.go | 32 +++++++++---------- server/embed/auth_test.go | 9 +++--- server/etcdserver/api/rafthttp/stream_test.go | 7 ++-- .../api/v3rpc/validationfuzz_test.go | 2 +- server/etcdserver/server_test.go | 16 +++++----- server/etcdserver/txn/txn_test.go | 10 +++--- server/etcdserver/version/version_test.go | 6 ++-- server/lease/leasehttp/http_test.go | 9 +++--- server/storage/backend/hooks_test.go | 2 +- server/storage/mvcc/hash_test.go | 2 +- server/storage/mvcc/kv_test.go | 22 ++++++------- server/storage/mvcc/kvstore_bench_test.go | 3 +- .../storage/mvcc/kvstore_compaction_test.go | 3 +- server/storage/mvcc/kvstore_test.go | 13 ++++---- 16 files changed, 70 insertions(+), 77 deletions(-) diff --git a/server/auth/jwt_test.go b/server/auth/jwt_test.go index e987b94ab4af..3ecb3328f0d9 100644 --- a/server/auth/jwt_test.go +++ b/server/auth/jwt_test.go @@ -15,7 +15,6 @@ package auth import ( - "context" "fmt" "maps" "testing" @@ -96,7 +95,7 @@ func testJWTInfo(t *testing.T, opts map[string]string) { t.Fatal(err) } - ctx := context.TODO() + ctx := t.Context() token, aerr := jwt.assign(ctx, "abc", 123) if aerr != nil { @@ -196,7 +195,7 @@ func TestJWTTokenWithMissingFields(t *testing.T) { // verify the token jwtProvider, err := newTokenProviderJWT(zap.NewNop(), optsMap) require.NoError(t, err) - ai, ok := jwtProvider.info(context.TODO(), token, 123) + ai, ok := jwtProvider.info(t.Context(), token, 123) require.Equal(t, tc.expectValid, ok) if ok { diff --git a/server/auth/simple_token_test.go b/server/auth/simple_token_test.go index 13db76efe4a3..8b8340764df7 100644 --- a/server/auth/simple_token_test.go +++ b/server/auth/simple_token_test.go @@ -31,7 +31,7 @@ func TestSimpleTokenDisabled(t *testing.T) { explicitlyDisabled.disable() for _, tp := range []*tokenSimple{initialState, explicitlyDisabled} { - ctx := context.WithValue(context.WithValue(context.TODO(), AuthenticateParamIndex{}, uint64(1)), AuthenticateParamSimpleTokenPrefix{}, "dummy") + ctx := context.WithValue(context.WithValue(t.Context(), AuthenticateParamIndex{}, uint64(1)), AuthenticateParamSimpleTokenPrefix{}, "dummy") token, err := tp.assign(ctx, "user1", 0) if err != nil { t.Fatal(err) @@ -51,7 +51,7 @@ func TestSimpleTokenAssign(t *testing.T) { tp := newTokenProviderSimple(zaptest.NewLogger(t), dummyIndexWaiter, simpleTokenTTLDefault) tp.enable() defer tp.disable() - ctx := context.WithValue(context.WithValue(context.TODO(), AuthenticateParamIndex{}, uint64(1)), AuthenticateParamSimpleTokenPrefix{}, "dummy") + ctx := context.WithValue(context.WithValue(t.Context(), AuthenticateParamIndex{}, uint64(1)), AuthenticateParamSimpleTokenPrefix{}, "dummy") token, err := tp.assign(ctx, "user1", 0) if err != nil { t.Fatal(err) @@ -63,7 +63,7 @@ func TestSimpleTokenAssign(t *testing.T) { tp.invalidateUser("user1") - _, ok = tp.info(context.TODO(), token, 0) + _, ok = tp.info(t.Context(), token, 0) if ok { t.Errorf("expected ok == false after user is invalidated") } diff --git a/server/auth/store_test.go b/server/auth/store_test.go index bf708805cd63..df13fbc297d0 100644 --- a/server/auth/store_test.go +++ b/server/auth/store_test.go @@ -280,7 +280,7 @@ func TestUserChangePassword(t *testing.T) { as, tearDown := setupAuthStore(t) defer tearDown(t) - ctx1 := context.WithValue(context.WithValue(context.TODO(), AuthenticateParamIndex{}, uint64(1)), AuthenticateParamSimpleTokenPrefix{}, "dummy") + ctx1 := context.WithValue(context.WithValue(t.Context(), AuthenticateParamIndex{}, uint64(1)), AuthenticateParamSimpleTokenPrefix{}, "dummy") _, err := as.Authenticate(ctx1, "foo", "bar") if err != nil { t.Fatal(err) @@ -291,7 +291,7 @@ func TestUserChangePassword(t *testing.T) { t.Fatal(err) } - ctx2 := context.WithValue(context.WithValue(context.TODO(), AuthenticateParamIndex{}, uint64(2)), AuthenticateParamSimpleTokenPrefix{}, "dummy") + ctx2 := context.WithValue(context.WithValue(t.Context(), AuthenticateParamIndex{}, uint64(2)), AuthenticateParamSimpleTokenPrefix{}, "dummy") _, err = as.Authenticate(ctx2, "foo", "baz") if err != nil { t.Fatal(err) @@ -811,38 +811,38 @@ func TestAuthInfoFromCtx(t *testing.T) { as, tearDown := setupAuthStore(t) defer tearDown(t) - ctx := context.Background() + ctx := t.Context() ai, err := as.AuthInfoFromCtx(ctx) if err != nil && ai != nil { t.Errorf("expected (nil, nil), got (%v, %v)", ai, err) } // as if it came from RPC - ctx = metadata.NewIncomingContext(context.Background(), metadata.New(map[string]string{"tokens": "dummy"})) + ctx = metadata.NewIncomingContext(t.Context(), metadata.New(map[string]string{"tokens": "dummy"})) ai, err = as.AuthInfoFromCtx(ctx) if err != nil && ai != nil { t.Errorf("expected (nil, nil), got (%v, %v)", ai, err) } - ctx = context.WithValue(context.WithValue(context.TODO(), AuthenticateParamIndex{}, uint64(1)), AuthenticateParamSimpleTokenPrefix{}, "dummy") + ctx = context.WithValue(context.WithValue(t.Context(), AuthenticateParamIndex{}, uint64(1)), AuthenticateParamSimpleTokenPrefix{}, "dummy") resp, err := as.Authenticate(ctx, "foo", "bar") if err != nil { t.Error(err) } - ctx = metadata.NewIncomingContext(context.Background(), metadata.New(map[string]string{rpctypes.TokenFieldNameGRPC: "Invalid Token"})) + ctx = metadata.NewIncomingContext(t.Context(), metadata.New(map[string]string{rpctypes.TokenFieldNameGRPC: "Invalid Token"})) _, err = as.AuthInfoFromCtx(ctx) if !errors.Is(err, ErrInvalidAuthToken) { t.Errorf("expected %v, got %v", ErrInvalidAuthToken, err) } - ctx = metadata.NewIncomingContext(context.Background(), metadata.New(map[string]string{rpctypes.TokenFieldNameGRPC: "Invalid.Token"})) + ctx = metadata.NewIncomingContext(t.Context(), metadata.New(map[string]string{rpctypes.TokenFieldNameGRPC: "Invalid.Token"})) _, err = as.AuthInfoFromCtx(ctx) if !errors.Is(err, ErrInvalidAuthToken) { t.Errorf("expected %v, got %v", ErrInvalidAuthToken, err) } - ctx = metadata.NewIncomingContext(context.Background(), metadata.New(map[string]string{rpctypes.TokenFieldNameGRPC: resp.Token})) + ctx = metadata.NewIncomingContext(t.Context(), metadata.New(map[string]string{rpctypes.TokenFieldNameGRPC: resp.Token})) ai, err = as.AuthInfoFromCtx(ctx) if err != nil { t.Error(err) @@ -857,7 +857,7 @@ func TestAuthDisable(t *testing.T) { defer tearDown(t) as.AuthDisable() - ctx := context.WithValue(context.WithValue(context.TODO(), AuthenticateParamIndex{}, uint64(2)), AuthenticateParamSimpleTokenPrefix{}, "dummy") + ctx := context.WithValue(context.WithValue(t.Context(), AuthenticateParamIndex{}, uint64(2)), AuthenticateParamSimpleTokenPrefix{}, "dummy") _, err := as.Authenticate(ctx, "foo", "bar") if !errors.Is(err, ErrAuthNotEnabled) { t.Errorf("expected %v, got %v", ErrAuthNotEnabled, err) @@ -879,7 +879,7 @@ func TestIsAuthEnabled(t *testing.T) { as.AuthEnable() status := as.IsAuthEnabled() - ctx := context.WithValue(context.WithValue(context.TODO(), AuthenticateParamIndex{}, uint64(2)), AuthenticateParamSimpleTokenPrefix{}, "dummy") + ctx := context.WithValue(context.WithValue(t.Context(), AuthenticateParamIndex{}, uint64(2)), AuthenticateParamSimpleTokenPrefix{}, "dummy") _, _ = as.Authenticate(ctx, "foo", "bar") if status != true { t.Errorf("expected %v, got %v", true, false) @@ -907,7 +907,7 @@ func TestAuthInfoFromCtxRace(t *testing.T) { donec := make(chan struct{}) go func() { defer close(donec) - ctx := metadata.NewIncomingContext(context.Background(), metadata.New(map[string]string{rpctypes.TokenFieldNameGRPC: "test"})) + ctx := metadata.NewIncomingContext(t.Context(), metadata.New(map[string]string{rpctypes.TokenFieldNameGRPC: "test"})) as.AuthInfoFromCtx(ctx) }() as.UserAdd(&pb.AuthUserAddRequest{Name: "test", Options: &authpb.UserAddOptions{NoPassword: false}}) @@ -1025,7 +1025,7 @@ func TestHammerSimpleAuthenticate(t *testing.T) { go func(user string) { defer wg.Done() token := fmt.Sprintf("%s(%d)", user, i) - ctx := context.WithValue(context.WithValue(context.TODO(), AuthenticateParamIndex{}, uint64(1)), AuthenticateParamSimpleTokenPrefix{}, token) + ctx := context.WithValue(context.WithValue(t.Context(), AuthenticateParamIndex{}, uint64(1)), AuthenticateParamSimpleTokenPrefix{}, token) if _, err := as.Authenticate(ctx, user, "123"); err != nil { t.Error(err) } @@ -1106,7 +1106,7 @@ func testAuthInfoFromCtxWithRoot(t *testing.T, opts string) { t.Fatal(err) } - ctx := context.Background() + ctx := t.Context() ctx = as.WithRoot(ctx) ai, aerr := as.AuthInfoFromCtx(ctx) @@ -1130,7 +1130,7 @@ func TestUserNoPasswordAdd(t *testing.T) { t.Fatal(err) } - ctx := context.WithValue(context.WithValue(context.TODO(), AuthenticateParamIndex{}, uint64(1)), AuthenticateParamSimpleTokenPrefix{}, "dummy") + ctx := context.WithValue(context.WithValue(t.Context(), AuthenticateParamIndex{}, uint64(1)), AuthenticateParamSimpleTokenPrefix{}, "dummy") _, err = as.Authenticate(ctx, username, "") require.ErrorIsf(t, err, ErrAuthFailed, "expected %v, got %v", ErrAuthFailed, err) } @@ -1150,7 +1150,7 @@ func TestUserChangePasswordWithOldLog(t *testing.T) { as, tearDown := setupAuthStore(t) defer tearDown(t) - ctx1 := context.WithValue(context.WithValue(context.TODO(), AuthenticateParamIndex{}, uint64(1)), AuthenticateParamSimpleTokenPrefix{}, "dummy") + ctx1 := context.WithValue(context.WithValue(t.Context(), AuthenticateParamIndex{}, uint64(1)), AuthenticateParamSimpleTokenPrefix{}, "dummy") _, err := as.Authenticate(ctx1, "foo", "bar") if err != nil { t.Fatal(err) @@ -1161,7 +1161,7 @@ func TestUserChangePasswordWithOldLog(t *testing.T) { t.Fatal(err) } - ctx2 := context.WithValue(context.WithValue(context.TODO(), AuthenticateParamIndex{}, uint64(2)), AuthenticateParamSimpleTokenPrefix{}, "dummy") + ctx2 := context.WithValue(context.WithValue(t.Context(), AuthenticateParamIndex{}, uint64(2)), AuthenticateParamSimpleTokenPrefix{}, "dummy") _, err = as.Authenticate(ctx2, "foo", "baz") if err != nil { t.Fatal(err) diff --git a/server/embed/auth_test.go b/server/embed/auth_test.go index a09e618f66c8..83a3ccfda1f9 100644 --- a/server/embed/auth_test.go +++ b/server/embed/auth_test.go @@ -15,7 +15,6 @@ package embed import ( - "context" "testing" "go.etcd.io/etcd/server/v3/etcdserver/api/v3client" @@ -33,19 +32,19 @@ func TestEnableAuth(t *testing.T) { client := v3client.New(e.Server) defer client.Close() - _, err = client.RoleAdd(context.TODO(), "root") + _, err = client.RoleAdd(t.Context(), "root") if err != nil { t.Fatal(err) } - _, err = client.UserAdd(context.TODO(), "root", "root") + _, err = client.UserAdd(t.Context(), "root", "root") if err != nil { t.Fatal(err) } - _, err = client.UserGrantRole(context.TODO(), "root", "root") + _, err = client.UserGrantRole(t.Context(), "root", "root") if err != nil { t.Fatal(err) } - _, err = client.AuthEnable(context.TODO()) + _, err = client.AuthEnable(t.Context()) if err != nil { t.Fatal(err) } diff --git a/server/etcdserver/api/rafthttp/stream_test.go b/server/etcdserver/api/rafthttp/stream_test.go index a50961b96f06..66dd057ee7a7 100644 --- a/server/etcdserver/api/rafthttp/stream_test.go +++ b/server/etcdserver/api/rafthttp/stream_test.go @@ -15,7 +15,6 @@ package rafthttp import ( - "context" "errors" "io" "net/http" @@ -116,7 +115,7 @@ func TestStreamReaderDialRequest(t *testing.T) { peerID: types.ID(2), tr: &Transport{streamRt: tr, ClusterID: types.ID(1), ID: types.ID(1)}, picker: mustNewURLPicker(t, []string{"http://localhost:2380"}), - ctx: context.Background(), + ctx: t.Context(), } sr.dial(tt) @@ -171,7 +170,7 @@ func TestStreamReaderDialResult(t *testing.T) { tr: &Transport{streamRt: tr, ClusterID: types.ID(1)}, picker: mustNewURLPicker(t, []string{"http://localhost:2380"}), errorc: make(chan error, 1), - ctx: context.Background(), + ctx: t.Context(), } _, err := sr.dial(streamTypeMessage) @@ -253,7 +252,7 @@ func TestStreamReaderDialDetectUnsupport(t *testing.T) { peerID: types.ID(2), tr: &Transport{streamRt: tr, ClusterID: types.ID(1)}, picker: mustNewURLPicker(t, []string{"http://localhost:2380"}), - ctx: context.Background(), + ctx: t.Context(), } _, err := sr.dial(typ) diff --git a/server/etcdserver/api/v3rpc/validationfuzz_test.go b/server/etcdserver/api/v3rpc/validationfuzz_test.go index d921c9602b73..fdb3727d76b2 100644 --- a/server/etcdserver/api/v3rpc/validationfuzz_test.go +++ b/server/etcdserver/api/v3rpc/validationfuzz_test.go @@ -168,7 +168,7 @@ func execTransaction(t *testing.T, req *pb.RequestOp) { defer s.Close() // setup cancelled context - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) cancel() request := &pb.TxnRequest{ diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index 2d7a647ac6f4..bb41200ed7ec 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -987,7 +987,7 @@ func TestAddMember(t *testing.T) { } s.start() m := membership.Member{ID: 1234, RaftAttributes: membership.RaftAttributes{PeerURLs: []string{"foo"}}} - _, err := s.AddMember(context.Background(), m) + _, err := s.AddMember(t.Context(), m) gaction := n.Action() s.Stop() @@ -1053,7 +1053,7 @@ func TestProcessIgnoreMismatchMessage(t *testing.T) { if types.ID(m.To) == s.MemberID() { t.Fatalf("m.To (%d) is expected to mismatch s.MemberID (%d)", m.To, s.MemberID()) } - err := s.Process(context.Background(), m) + err := s.Process(t.Context(), m) if err == nil { t.Fatalf("Must ignore the message and return an error") } @@ -1093,7 +1093,7 @@ func TestRemoveMember(t *testing.T) { beHooks: serverstorage.NewBackendHooks(lg, nil), } s.start() - _, err := s.RemoveMember(context.Background(), 1234) + _, err := s.RemoveMember(t.Context(), 1234) gaction := n.Action() s.Stop() @@ -1143,7 +1143,7 @@ func TestUpdateMember(t *testing.T) { } s.start() wm := membership.Member{ID: 1234, RaftAttributes: membership.RaftAttributes{PeerURLs: []string{"http://127.0.0.1:1"}}} - _, err := s.UpdateMember(context.Background(), wm) + _, err := s.UpdateMember(t.Context(), wm) gaction := n.Action() s.Stop() @@ -1167,7 +1167,7 @@ func TestPublishV3(t *testing.T) { // simulate that request has gone through consensus ch <- &apply2.Result{} w := wait.NewWithResponse(ch) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) lg := zaptest.NewLogger(t) be, _ := betesting.NewDefaultTmpBackend(t) defer betesting.Close(t, be) @@ -1209,7 +1209,7 @@ func TestPublishV3(t *testing.T) { // TestPublishV3Stopped tests that publish will be stopped if server is stopped. func TestPublishV3Stopped(t *testing.T) { - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) r := newRaftNode(raftNodeConfig{ lg: zaptest.NewLogger(t), Node: newNodeNop(), @@ -1237,7 +1237,7 @@ func TestPublishV3Stopped(t *testing.T) { // TestPublishV3Retry tests that publish will keep retry until success. func TestPublishV3Retry(t *testing.T) { - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) n := newNodeRecorderStream() lg := zaptest.NewLogger(t) @@ -1291,7 +1291,7 @@ func TestUpdateVersionV3(t *testing.T) { // simulate that request has gone through consensus ch <- &apply2.Result{} w := wait.NewWithResponse(ch) - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) lg := zaptest.NewLogger(t) be, _ := betesting.NewDefaultTmpBackend(t) defer betesting.Close(t, be) diff --git a/server/etcdserver/txn/txn_test.go b/server/etcdserver/txn/txn_test.go index a094830dd8fc..bf1ac21d39ba 100644 --- a/server/etcdserver/txn/txn_test.go +++ b/server/etcdserver/txn/txn_test.go @@ -226,7 +226,7 @@ func TestCheckTxn(t *testing.T) { t.Run(tc.name, func(t *testing.T) { s, lessor := setup(t, tc.setup) - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() _, _, err := Txn(ctx, zaptest.NewLogger(t), tc.txn, false, s, lessor) @@ -246,7 +246,7 @@ func TestCheckPut(t *testing.T) { t.Run(tc.name, func(t *testing.T) { s, lessor := setup(t, tc.setup) - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() _, _, err := Put(ctx, zaptest.NewLogger(t), lessor, s, tc.op.GetRequestPut()) @@ -266,7 +266,7 @@ func TestCheckRange(t *testing.T) { t.Run(tc.name, func(t *testing.T) { s, _ := setup(t, tc.setup) - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() _, _, err := Range(ctx, zaptest.NewLogger(t), s, tc.op.GetRequestRange()) @@ -314,7 +314,7 @@ func TestReadonlyTxnError(t *testing.T) { defer s.Close() // setup cancelled context - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) cancel() // put some data to prevent early termination in rangeKeys @@ -345,7 +345,7 @@ func TestWriteTxnPanicWithoutApply(t *testing.T) { defer s.Close() // setup cancelled context - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) cancel() // write txn that puts some data and then fails in range due to cancelled context diff --git a/server/etcdserver/version/version_test.go b/server/etcdserver/version/version_test.go index cae8e70a3b5b..3d5570352900 100644 --- a/server/etcdserver/version/version_test.go +++ b/server/etcdserver/version/version_test.go @@ -65,7 +65,7 @@ func TestDowngradeSingleNode(t *testing.T) { c.StepMonitors() assert.Equal(t, newCluster(lg, 1, version.V3_6), c) - require.NoError(t, c.Version().DowngradeEnable(context.Background(), &version.V3_5)) + require.NoError(t, c.Version().DowngradeEnable(t.Context(), &version.V3_5)) c.StepMonitors() assert.Equal(t, version.V3_5, c.clusterVersion) @@ -81,7 +81,7 @@ func TestDowngradeThreeNode(t *testing.T) { c.StepMonitors() assert.Equal(t, newCluster(lg, 3, version.V3_6), c) - require.NoError(t, c.Version().DowngradeEnable(context.Background(), &version.V3_5)) + require.NoError(t, c.Version().DowngradeEnable(t.Context(), &version.V3_5)) c.StepMonitors() assert.Equal(t, version.V3_5, c.clusterVersion) @@ -101,7 +101,7 @@ func TestNewerMemberCanReconnectDuringDowngrade(t *testing.T) { c.StepMonitors() assert.Equal(t, newCluster(lg, 3, version.V3_6), c) - require.NoError(t, c.Version().DowngradeEnable(context.Background(), &version.V3_5)) + require.NoError(t, c.Version().DowngradeEnable(t.Context(), &version.V3_5)) c.StepMonitors() assert.Equal(t, version.V3_5, c.clusterVersion) diff --git a/server/lease/leasehttp/http_test.go b/server/lease/leasehttp/http_test.go index 7fb284ff41f9..f606486b5bae 100644 --- a/server/lease/leasehttp/http_test.go +++ b/server/lease/leasehttp/http_test.go @@ -15,7 +15,6 @@ package leasehttp import ( - "context" "net/http" "net/http/httptest" "testing" @@ -42,7 +41,7 @@ func TestRenewHTTP(t *testing.T) { ts := httptest.NewServer(NewHandler(le, waitReady)) defer ts.Close() - ttl, err := RenewHTTP(context.TODO(), l.ID, ts.URL+LeasePrefix, http.DefaultTransport) + ttl, err := RenewHTTP(t.Context(), l.ID, ts.URL+LeasePrefix, http.DefaultTransport) if err != nil { t.Fatal(err) } @@ -66,7 +65,7 @@ func TestTimeToLiveHTTP(t *testing.T) { ts := httptest.NewServer(NewHandler(le, waitReady)) defer ts.Close() - resp, err := TimeToLiveHTTP(context.TODO(), l.ID, true, ts.URL+LeaseInternalPrefix, http.DefaultTransport) + resp, err := TimeToLiveHTTP(t.Context(), l.ID, true, ts.URL+LeaseInternalPrefix, http.DefaultTransport) if err != nil { t.Fatal(err) } @@ -80,14 +79,14 @@ func TestTimeToLiveHTTP(t *testing.T) { func TestRenewHTTPTimeout(t *testing.T) { testApplyTimeout(t, func(l *lease.Lease, serverURL string) error { - _, err := RenewHTTP(context.TODO(), l.ID, serverURL+LeasePrefix, http.DefaultTransport) + _, err := RenewHTTP(t.Context(), l.ID, serverURL+LeasePrefix, http.DefaultTransport) return err }) } func TestTimeToLiveHTTPTimeout(t *testing.T) { testApplyTimeout(t, func(l *lease.Lease, serverURL string) error { - _, err := TimeToLiveHTTP(context.TODO(), l.ID, true, serverURL+LeaseInternalPrefix, http.DefaultTransport) + _, err := TimeToLiveHTTP(t.Context(), l.ID, true, serverURL+LeaseInternalPrefix, http.DefaultTransport) return err }) } diff --git a/server/storage/backend/hooks_test.go b/server/storage/backend/hooks_test.go index 9a1d33d8253b..72bc26793ad0 100644 --- a/server/storage/backend/hooks_test.go +++ b/server/storage/backend/hooks_test.go @@ -69,7 +69,7 @@ func write(tx backend.BatchTx, k, v []byte) { } func TestBackendAutoCommitBatchIntervalHook(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), time.Minute) + ctx, cancel := context.WithTimeout(t.Context(), time.Minute) defer cancel() cfg := backend.DefaultBackendConfig(zaptest.NewLogger(t)) diff --git a/server/storage/mvcc/hash_test.go b/server/storage/mvcc/hash_test.go index d08b3ad19821..9555293aaa9d 100644 --- a/server/storage/mvcc/hash_test.go +++ b/server/storage/mvcc/hash_test.go @@ -138,7 +138,7 @@ func TestCompactionHash(t *testing.T) { s := NewStore(zaptest.NewLogger(t), b, &lease.FakeLessor{}, StoreConfig{}) defer cleanup(s, b) - testutil.TestCompactionHash(context.Background(), t, hashTestCase{s}, s.cfg.CompactionBatchLimit) + testutil.TestCompactionHash(t.Context(), t, hashTestCase{s}, s.cfg.CompactionBatchLimit) } type hashTestCase struct { diff --git a/server/storage/mvcc/kv_test.go b/server/storage/mvcc/kv_test.go index 790b534395b0..1b2bf6ae567b 100644 --- a/server/storage/mvcc/kv_test.go +++ b/server/storage/mvcc/kv_test.go @@ -273,7 +273,7 @@ func testKVPutMultipleTimes(t *testing.T, f putFunc) { t.Errorf("#%d: rev = %d, want %d", i, rev, base+1) } - r, err := s.Range(context.TODO(), []byte("foo"), nil, RangeOptions{}) + r, err := s.Range(t.Context(), []byte("foo"), nil, RangeOptions{}) if err != nil { t.Fatal(err) } @@ -384,7 +384,7 @@ func testKVPutWithSameLease(t *testing.T, f putFunc) { } // check leaseID - r, err := s.Range(context.TODO(), []byte("foo"), nil, RangeOptions{}) + r, err := s.Range(t.Context(), []byte("foo"), nil, RangeOptions{}) if err != nil { t.Fatal(err) } @@ -412,7 +412,7 @@ func TestKVOperationInSequence(t *testing.T) { t.Errorf("#%d: put rev = %d, want %d", i, rev, base+1) } - r, err := s.Range(context.TODO(), []byte("foo"), nil, RangeOptions{Rev: base + 1}) + r, err := s.Range(t.Context(), []byte("foo"), nil, RangeOptions{Rev: base + 1}) if err != nil { t.Fatal(err) } @@ -432,7 +432,7 @@ func TestKVOperationInSequence(t *testing.T) { t.Errorf("#%d: n = %d, rev = %d, want (%d, %d)", i, n, rev, 1, base+2) } - r, err = s.Range(context.TODO(), []byte("foo"), nil, RangeOptions{Rev: base + 2}) + r, err = s.Range(t.Context(), []byte("foo"), nil, RangeOptions{Rev: base + 2}) if err != nil { t.Fatal(err) } @@ -490,7 +490,7 @@ func TestKVTxnNonBlockRange(t *testing.T) { donec := make(chan struct{}) go func() { defer close(donec) - s.Range(context.TODO(), []byte("foo"), nil, RangeOptions{}) + s.Range(t.Context(), []byte("foo"), nil, RangeOptions{}) }() select { case <-donec: @@ -516,7 +516,7 @@ func TestKVTxnOperationInSequence(t *testing.T) { t.Errorf("#%d: put rev = %d, want %d", i, rev, base+1) } - r, err := txn.Range(context.TODO(), []byte("foo"), nil, RangeOptions{Rev: base + 1}) + r, err := txn.Range(t.Context(), []byte("foo"), nil, RangeOptions{Rev: base + 1}) if err != nil { t.Fatal(err) } @@ -536,7 +536,7 @@ func TestKVTxnOperationInSequence(t *testing.T) { t.Errorf("#%d: n = %d, rev = %d, want (%d, %d)", i, n, rev, 1, base+1) } - r, err = txn.Range(context.TODO(), []byte("foo"), nil, RangeOptions{Rev: base + 1}) + r, err = txn.Range(t.Context(), []byte("foo"), nil, RangeOptions{Rev: base + 1}) if err != nil { t.Errorf("#%d: range error (%v)", i, err) } @@ -595,7 +595,7 @@ func TestKVCompactReserveLastValue(t *testing.T) { if err != nil { t.Errorf("#%d: unexpect compact error %v", i, err) } - r, err := s.Range(context.TODO(), []byte("foo"), nil, RangeOptions{Rev: tt.rev + 1}) + r, err := s.Range(t.Context(), []byte("foo"), nil, RangeOptions{Rev: tt.rev + 1}) if err != nil { t.Errorf("#%d: unexpect range error %v", i, err) } @@ -697,7 +697,7 @@ func TestKVRestore(t *testing.T) { tt(s) var kvss [][]mvccpb.KeyValue for k := int64(0); k < 10; k++ { - r, _ := s.Range(context.TODO(), []byte("a"), []byte("z"), RangeOptions{Rev: k}) + r, _ := s.Range(t.Context(), []byte("a"), []byte("z"), RangeOptions{Rev: k}) kvss = append(kvss, r.KVs) } @@ -715,7 +715,7 @@ func TestKVRestore(t *testing.T) { testutil.WaitSchedule() var nkvss [][]mvccpb.KeyValue for k := int64(0); k < 10; k++ { - r, _ := ns.Range(context.TODO(), []byte("a"), []byte("z"), RangeOptions{Rev: k}) + r, _ := ns.Range(t.Context(), []byte("a"), []byte("z"), RangeOptions{Rev: k}) nkvss = append(nkvss, r.KVs) } cleanup(ns, b) @@ -759,7 +759,7 @@ func TestKVSnapshot(t *testing.T) { ns := NewStore(zaptest.NewLogger(t), b, &lease.FakeLessor{}, StoreConfig{}) defer ns.Close() - r, err := ns.Range(context.TODO(), []byte("a"), []byte("z"), RangeOptions{}) + r, err := ns.Range(t.Context(), []byte("a"), []byte("z"), RangeOptions{}) if err != nil { t.Errorf("unexpect range error (%v)", err) } diff --git a/server/storage/mvcc/kvstore_bench_test.go b/server/storage/mvcc/kvstore_bench_test.go index f7a9bd7296c3..024fc7dd10d8 100644 --- a/server/storage/mvcc/kvstore_bench_test.go +++ b/server/storage/mvcc/kvstore_bench_test.go @@ -15,7 +15,6 @@ package mvcc import ( - "context" "testing" "github.com/stretchr/testify/require" @@ -70,7 +69,7 @@ func benchmarkStoreRange(b *testing.B, n int) { b.ReportAllocs() b.ResetTimer() for i := 0; i < b.N; i++ { - s.Range(context.TODO(), begin, end, RangeOptions{}) + s.Range(b.Context(), begin, end, RangeOptions{}) } } diff --git a/server/storage/mvcc/kvstore_compaction_test.go b/server/storage/mvcc/kvstore_compaction_test.go index b4a7f41a3677..0b28c931ca7c 100644 --- a/server/storage/mvcc/kvstore_compaction_test.go +++ b/server/storage/mvcc/kvstore_compaction_test.go @@ -15,7 +15,6 @@ package mvcc import ( - "context" "reflect" "testing" "time" @@ -139,7 +138,7 @@ func TestCompactAllAndRestore(t *testing.T) { if s1.Rev() != rev { t.Errorf("rev = %v, want %v", s1.Rev(), rev) } - _, err = s1.Range(context.TODO(), []byte("foo"), nil, RangeOptions{}) + _, err = s1.Range(t.Context(), []byte("foo"), nil, RangeOptions{}) if err != nil { t.Errorf("unexpect range error %v", err) } diff --git a/server/storage/mvcc/kvstore_test.go b/server/storage/mvcc/kvstore_test.go index 65ad4f240ec7..c993b0d8ba00 100644 --- a/server/storage/mvcc/kvstore_test.go +++ b/server/storage/mvcc/kvstore_test.go @@ -16,7 +16,6 @@ package mvcc import ( "bytes" - "context" "crypto/rand" "encoding/binary" "errors" @@ -218,7 +217,7 @@ func TestStoreRange(t *testing.T) { b.tx.rangeRespc <- tt.r fi.indexRangeRespc <- tt.idxr - ret, err := s.Range(context.TODO(), []byte("foo"), []byte("goo"), ro) + ret, err := s.Range(t.Context(), []byte("foo"), []byte("goo"), ro) if err != nil { t.Errorf("#%d: err = %v, want nil", i, err) } @@ -469,7 +468,7 @@ func TestRestoreDelete(t *testing.T) { defer s.Close() for i := 0; i < 20; i++ { ks := fmt.Sprintf("foo-%d", i) - r, err := s.Range(context.TODO(), []byte(ks), nil, RangeOptions{}) + r, err := s.Range(t.Context(), []byte(ks), nil, RangeOptions{}) if err != nil { t.Fatal(err) } @@ -519,7 +518,7 @@ func TestRestoreContinueUnfinishedCompaction(t *testing.T) { // wait for scheduled compaction to be finished time.Sleep(100 * time.Millisecond) - if _, err := s.Range(context.TODO(), []byte("foo"), nil, RangeOptions{Rev: 1}); !errors.Is(err, ErrCompacted) { + if _, err := s.Range(t.Context(), []byte("foo"), nil, RangeOptions{Rev: 1}); !errors.Is(err, ErrCompacted) { t.Errorf("range on compacted rev error = %v, want %v", err, ErrCompacted) } // check the key in backend is deleted @@ -757,7 +756,7 @@ func TestConcurrentReadNotBlockingWrite(t *testing.T) { // readTx2 simulates a short read request readTx2 := s.Read(ConcurrentReadTxMode, traceutil.TODO()) ro := RangeOptions{Limit: 1, Rev: 0, Count: false} - ret, err := readTx2.Range(context.TODO(), []byte("foo"), nil, ro) + ret, err := readTx2.Range(t.Context(), []byte("foo"), nil, ro) if err != nil { t.Fatalf("failed to range: %v", err) } @@ -774,7 +773,7 @@ func TestConcurrentReadNotBlockingWrite(t *testing.T) { } readTx2.End() - ret, err = readTx1.Range(context.TODO(), []byte("foo"), nil, ro) + ret, err = readTx1.Range(t.Context(), []byte("foo"), nil, ro) if err != nil { t.Fatalf("failed to range: %v", err) } @@ -841,7 +840,7 @@ func TestConcurrentReadTxAndWrite(t *testing.T) { tx := s.Read(ConcurrentReadTxMode, traceutil.TODO()) mu.Unlock() // get all keys in backend store, and compare with wKVs - ret, err := tx.Range(context.TODO(), []byte("\x00000000"), []byte("\xffffffff"), RangeOptions{}) + ret, err := tx.Range(t.Context(), []byte("\x00000000"), []byte("\xffffffff"), RangeOptions{}) tx.End() if err != nil { t.Errorf("failed to range keys: %v", err) From e68c0bdb839991cbbb520cdcfe3f342c6d2fb156 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Thu, 13 Mar 2025 12:48:14 +0530 Subject: [PATCH 0045/1068] dependency: bump go.opentelemetry.io/otel from 1.34.0 to 1.35.0 This commit will bump go.opentelemetry.io/otel from 1.34.0 to 1.35.0 Also bumps, - go.opentelemetry.io/otel/trace from 1.34.0 to 1.35.0 - go.opentelemetry.io/otel/metric from 1.34.0 to 1.35.0 Signed-off-by: ArkaSaha30 --- api/go.mod | 2 +- api/go.sum | 12 ++++++------ client/v3/go.mod | 4 ++-- client/v3/go.sum | 12 ++++++------ etcdctl/go.sum | 12 ++++++------ etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 12 ++++++------ go.mod | 6 +++--- go.sum | 12 ++++++------ pkg/go.mod | 2 +- pkg/go.sum | 12 ++++++------ server/go.mod | 6 +++--- server/go.sum | 12 ++++++------ tests/go.mod | 6 +++--- tests/go.sum | 12 ++++++------ tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 12 ++++++------ 17 files changed, 71 insertions(+), 71 deletions(-) diff --git a/api/go.mod b/api/go.mod index 51967d0dfc23..73bd3d42aee9 100644 --- a/api/go.mod +++ b/api/go.mod @@ -19,7 +19,7 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.30.0 // indirect diff --git a/api/go.sum b/api/go.sum index 5bc304426960..8115cc7c01b6 100644 --- a/api/go.sum +++ b/api/go.sum @@ -32,16 +32,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= -go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= -go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= -go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= -go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= -go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= diff --git a/client/v3/go.mod b/client/v3/go.mod index 98b2640bad87..c14f93207663 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -32,8 +32,8 @@ require ( github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.62.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect - go.opentelemetry.io/otel/metric v1.34.0 // indirect - go.opentelemetry.io/otel/trace v1.34.0 // indirect + go.opentelemetry.io/otel/metric v1.35.0 // indirect + go.opentelemetry.io/otel/trace v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.30.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 84124bc68a7e..2339e05bd065 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -60,16 +60,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= -go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= -go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= -go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= -go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= -go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= 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= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 2966b4e18898..f5f0b3d06c24 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -85,16 +85,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= -go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= -go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= -go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= -go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= -go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= 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= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 2c4fb823ae17..dc3a3a55b3a6 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -74,12 +74,12 @@ require ( go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect - go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect - go.opentelemetry.io/otel/metric v1.34.0 // indirect + go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect - go.opentelemetry.io/otel/trace v1.34.0 // indirect + go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.35.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 95d3a0f29c7e..9f5228e1bb06 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -106,20 +106,20 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= -go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= -go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= -go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= -go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= -go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= -go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/go.mod b/go.mod index 357fc0cf214a..c9560e9d5450 100644 --- a/go.mod +++ b/go.mod @@ -84,12 +84,12 @@ require ( go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect - go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect - go.opentelemetry.io/otel/metric v1.34.0 // indirect + go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect - go.opentelemetry.io/otel/trace v1.34.0 // indirect + go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.35.0 // indirect diff --git a/go.sum b/go.sum index 16e860331c96..55d7ee635515 100644 --- a/go.sum +++ b/go.sum @@ -151,20 +151,20 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= -go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= -go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= -go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= -go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= -go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= -go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= diff --git a/pkg/go.mod b/pkg/go.mod index 84104eb9e20c..4c78bda1da6a 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -21,7 +21,7 @@ require ( github.com/google/go-cmp v0.7.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.36.0 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index cee007e6d857..268df5bde6cf 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -37,16 +37,16 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= -go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= -go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= -go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= -go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= -go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= 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= diff --git a/server/go.mod b/server/go.mod index 486f66eeac9a..7a9b1b106ad8 100644 --- a/server/go.mod +++ b/server/go.mod @@ -33,7 +33,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 - go.opentelemetry.io/otel v1.34.0 + go.opentelemetry.io/otel v1.35.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 go.opentelemetry.io/otel/sdk v1.34.0 go.uber.org/zap v1.27.0 @@ -68,8 +68,8 @@ require ( github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect - go.opentelemetry.io/otel/metric v1.34.0 // indirect - go.opentelemetry.io/otel/trace v1.34.0 // indirect + go.opentelemetry.io/otel/metric v1.35.0 // indirect + go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/sys v0.30.0 // indirect diff --git a/server/go.sum b/server/go.sum index e99343d71211..a00937df03fc 100644 --- a/server/go.sum +++ b/server/go.sum @@ -129,20 +129,20 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= -go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= -go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= -go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= -go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= -go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= -go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= diff --git a/tests/go.mod b/tests/go.mod index 88dabf481ae3..7cab96d153ea 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -39,9 +39,9 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 - go.opentelemetry.io/otel v1.34.0 + go.opentelemetry.io/otel v1.35.0 go.opentelemetry.io/otel/sdk v1.34.0 - go.opentelemetry.io/otel/trace v1.34.0 + go.opentelemetry.io/otel/trace v1.35.0 go.opentelemetry.io/proto/otlp v1.5.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.35.0 @@ -92,7 +92,7 @@ require ( go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect - go.opentelemetry.io/otel/metric v1.34.0 // indirect + go.opentelemetry.io/otel/metric v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.30.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 0bb1c1773a1a..186e9c24b22b 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -155,20 +155,20 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= -go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= -go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= -go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= -go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= -go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= -go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 078d8759f4e7..941286fa9695 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -16,7 +16,7 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.6 // indirect - go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.30.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 70c5eed0c67c..44c28d3b2533 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1180,16 +1180,16 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= -go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= -go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= -go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= -go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= -go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= From 97eee2bf5c2271eaaa664f7af9d390542c30d6fc Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Thu, 13 Mar 2025 12:57:30 +0530 Subject: [PATCH 0046/1068] dependency: bump golang.org/x/sys from 0.30.0 to 0.31.0 This commit will bump golang.org/x/sys from 0.30.0 to 0.31.0 Signed-off-by: ArkaSaha30 --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 22 files changed, 33 insertions(+), 33 deletions(-) diff --git a/api/go.mod b/api/go.mod index 73bd3d42aee9..6ce95a72b014 100644 --- a/api/go.mod +++ b/api/go.mod @@ -22,7 +22,7 @@ require ( go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect golang.org/x/net v0.36.0 // indirect - golang.org/x/sys v0.30.0 // indirect + golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/api/go.sum b/api/go.sum index 8115cc7c01b6..88f316e10325 100644 --- a/api/go.sum +++ b/api/go.sum @@ -59,8 +59,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index cfef8ade38fe..643a174dbb72 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.5.0 github.com/stretchr/testify v1.10.0 go.uber.org/zap v1.27.0 - golang.org/x/sys v0.30.0 + golang.org/x/sys v0.31.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index 5de2e9fdbaa2..d769fad4fc03 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -25,8 +25,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index c14f93207663..27a1dafb0750 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -36,7 +36,7 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.36.0 // indirect - golang.org/x/sys v0.30.0 // indirect + golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 2339e05bd065..141670c66589 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -93,8 +93,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 4dca248dfd5c..9f7e40a1f659 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -39,7 +39,7 @@ require ( go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.36.0 // indirect - golang.org/x/sys v0.30.0 // indirect + golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index f5f0b3d06c24..ac7faa9cea0f 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -119,8 +119,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index dc3a3a55b3a6..0860f5c41d1c 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -84,7 +84,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.35.0 // indirect golang.org/x/net v0.36.0 // indirect - golang.org/x/sys v0.30.0 // indirect + golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.22.0 // indirect golang.org/x/time v0.10.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 9f5228e1bb06..aa426e0ebc3e 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -151,8 +151,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= diff --git a/go.mod b/go.mod index c9560e9d5450..59656faa06f7 100644 --- a/go.mod +++ b/go.mod @@ -94,7 +94,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.35.0 // indirect golang.org/x/net v0.36.0 // indirect - golang.org/x/sys v0.30.0 // indirect + golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/go.sum b/go.sum index 55d7ee635515..b541c0bf470c 100644 --- a/go.sum +++ b/go.sum @@ -213,8 +213,8 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= diff --git a/pkg/go.mod b/pkg/go.mod index 4c78bda1da6a..cba6115a6939 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -25,7 +25,7 @@ require ( go.opentelemetry.io/otel/sdk v1.34.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.36.0 // indirect - golang.org/x/sys v0.30.0 // indirect + golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/protobuf v1.36.5 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 268df5bde6cf..730d0dfd5a4b 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -55,8 +55,8 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= diff --git a/server/go.mod b/server/go.mod index 7a9b1b106ad8..05843415a7da 100644 --- a/server/go.mod +++ b/server/go.mod @@ -72,7 +72,7 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/sys v0.30.0 // indirect + golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/server/go.sum b/server/go.sum index a00937df03fc..e5c709e30f5d 100644 --- a/server/go.sum +++ b/server/go.sum @@ -190,8 +190,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= diff --git a/tests/go.mod b/tests/go.mod index 7cab96d153ea..e22aff93a71a 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -95,7 +95,7 @@ require ( go.opentelemetry.io/otel/metric v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.36.0 // indirect - golang.org/x/sys v0.30.0 // indirect + golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/tests/go.sum b/tests/go.sum index 186e9c24b22b..a799a5855a2d 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -217,8 +217,8 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 1b790c2bd4a2..7bab9d6be6be 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -218,7 +218,7 @@ require ( golang.org/x/mod v0.23.0 // indirect golang.org/x/net v0.36.0 // indirect golang.org/x/sync v0.11.0 // indirect - golang.org/x/sys v0.30.0 // indirect + golang.org/x/sys v0.31.0 // indirect golang.org/x/term v0.29.0 // indirect golang.org/x/text v0.22.0 // indirect golang.org/x/tools v0.30.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index abfc6ebd610a..5e8a8dea99c0 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -636,8 +636,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 941286fa9695..08e72f35c3df 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -19,7 +19,7 @@ require ( go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect golang.org/x/net v0.36.0 // indirect - golang.org/x/sys v0.30.0 // indirect + golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/grpc v1.70.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 44c28d3b2533..04b188bab6d0 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1484,8 +1484,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From 244bb33fac7ed690db864ba9c3923827842475ab Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Thu, 13 Mar 2025 14:16:32 +0530 Subject: [PATCH 0047/1068] dependency: bump go.opentelemetry.io/otel/sdk from 1.34.0 to 1.35.0 This commit will bump go.opentelemetry.io/otel/sdk from 1.34.0 to 1.35.0 Signed-off-by: ArkaSaha30 --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/v3/go.sum | 4 ++-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 16 files changed, 25 insertions(+), 25 deletions(-) diff --git a/api/go.mod b/api/go.mod index 6ce95a72b014..896a893944d6 100644 --- a/api/go.mod +++ b/api/go.mod @@ -20,7 +20,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.35.0 // indirect golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.22.0 // indirect diff --git a/api/go.sum b/api/go.sum index 88f316e10325..77f68b4d965b 100644 --- a/api/go.sum +++ b/api/go.sum @@ -36,8 +36,8 @@ go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= -go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= diff --git a/client/v3/go.sum b/client/v3/go.sum index 141670c66589..1f8f13250088 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -64,8 +64,8 @@ go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= -go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index ac7faa9cea0f..7e13935def44 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -89,8 +89,8 @@ go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= -go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 0860f5c41d1c..633138ea2f9e 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -78,7 +78,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index aa426e0ebc3e..aef55a6b37de 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -114,8 +114,8 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0u go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= -go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= diff --git a/go.mod b/go.mod index 59656faa06f7..68bc69748add 100644 --- a/go.mod +++ b/go.mod @@ -88,7 +88,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/go.sum b/go.sum index b541c0bf470c..1d3d4e850383 100644 --- a/go.sum +++ b/go.sum @@ -159,8 +159,8 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0u go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= -go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= diff --git a/pkg/go.mod b/pkg/go.mod index cba6115a6939..d943558bd4d3 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -22,7 +22,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.31.0 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 730d0dfd5a4b..cfd7063aa78a 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -41,8 +41,8 @@ go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= -go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= diff --git a/server/go.mod b/server/go.mod index 05843415a7da..8ad9e6e39c14 100644 --- a/server/go.mod +++ b/server/go.mod @@ -35,7 +35,7 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 go.opentelemetry.io/otel v1.35.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 - go.opentelemetry.io/otel/sdk v1.34.0 + go.opentelemetry.io/otel/sdk v1.35.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.35.0 golang.org/x/net v0.36.0 diff --git a/server/go.sum b/server/go.sum index e5c709e30f5d..66101a3b1fd9 100644 --- a/server/go.sum +++ b/server/go.sum @@ -137,8 +137,8 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0u go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= -go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= diff --git a/tests/go.mod b/tests/go.mod index e22aff93a71a..fad4d22ef598 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -40,7 +40,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 go.opentelemetry.io/otel v1.35.0 - go.opentelemetry.io/otel/sdk v1.34.0 + go.opentelemetry.io/otel/sdk v1.35.0 go.opentelemetry.io/otel/trace v1.35.0 go.opentelemetry.io/proto/otlp v1.5.0 go.uber.org/zap v1.27.0 diff --git a/tests/go.sum b/tests/go.sum index a799a5855a2d..3cfef7a7afda 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -163,8 +163,8 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0u go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= -go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 08e72f35c3df..0920059926d8 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -17,7 +17,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.35.0 // indirect golang.org/x/net v0.36.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.22.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 04b188bab6d0..f2a1f6c26e94 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1184,8 +1184,8 @@ go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= -go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= From 66ead1f13127703fc57d17ffa68a3d4f51840386 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Thu, 13 Mar 2025 14:25:22 +0530 Subject: [PATCH 0048/1068] dependency: bump honnef.co/go/tools from 0.6.0 to 0.6.1 This commit will bump honnef.co/go/tools from 0.6.0 to 0.6.1 Signed-off-by: ArkaSaha30 --- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 7bab9d6be6be..89ea16615ae3 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -19,7 +19,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 gotest.tools/gotestsum v1.12.0 gotest.tools/v3 v3.5.2 - honnef.co/go/tools v0.6.0 + honnef.co/go/tools v0.6.1 ) require ( diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 5e8a8dea99c0..92b36a60bced 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -724,8 +724,8 @@ gotest.tools/gotestsum v1.12.0/go.mod h1:fAvqkSptospfSbQw26CTYzNwnsE/ztqLeyhP0h6 gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= -honnef.co/go/tools v0.6.0 h1:TAODvD3knlq75WCp2nyGJtT4LeRV/o7NN9nYPeVJXf8= -honnef.co/go/tools v0.6.0/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= +honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= +honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= mvdan.cc/gofumpt v0.7.0 h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU= From d7b6d8f3ba3308e5df0a4a1e72437c3c6f48d41e Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Thu, 13 Mar 2025 14:32:23 +0530 Subject: [PATCH 0049/1068] dependency: bump github.com/alexfalkowski/gocovmerge from 1.4.0 to 1.6.0 This commit will bump github.com/alexfalkowski/gocovmerge from 1.4.0 to 1.6.0 As an indirect dependency it also bumps, - golang.org/x/crypto from 0.35.0 to 0.36.0 - golang.org/x/net from 0.36.0 to 0.37.0 - golang.org/x/sync from 0.11.0 to 0.12.0 - golang.org/x/text from 0.22.0 to 0.23.0 - golang.org/x/mod from 0.23.0 to 0.24.0 - golang.org/x/term from 0.29.0 to 0.30.0 Signed-off-by: ArkaSaha30 --- api/go.mod | 4 ++-- api/go.sum | 8 ++++---- client/v3/go.mod | 4 ++-- client/v3/go.sum | 8 ++++---- etcdctl/go.mod | 4 ++-- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 16 ++++++++-------- go.mod | 6 +++--- go.sum | 16 ++++++++-------- pkg/go.mod | 4 ++-- pkg/go.sum | 8 ++++---- server/go.mod | 6 +++--- server/go.sum | 16 ++++++++-------- tests/go.mod | 8 ++++---- tests/go.sum | 16 ++++++++-------- tools/mod/go.mod | 16 ++++++++-------- tools/mod/go.sum | 32 ++++++++++++++++---------------- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 4 ++-- tools/testgrid-analysis/go.sum | 8 ++++---- 22 files changed, 102 insertions(+), 102 deletions(-) diff --git a/api/go.mod b/api/go.mod index 896a893944d6..ddc1e044392b 100644 --- a/api/go.mod +++ b/api/go.mod @@ -21,9 +21,9 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect - golang.org/x/net v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 77f68b4d965b..8cdf14106445 100644 --- a/api/go.sum +++ b/api/go.sum @@ -51,8 +51,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= -golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -63,8 +63,8 @@ golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/client/v3/go.mod b/client/v3/go.mod index 27a1dafb0750..d684a837f0b2 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -35,9 +35,9 @@ require ( go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/protobuf v1.36.5 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 1f8f13250088..4538cba97290 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -85,8 +85,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= -golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -97,8 +97,8 @@ golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 9f7e40a1f659..98b7adc21a05 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -38,9 +38,9 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/protobuf v1.36.5 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 7e13935def44..2365ddb2ffc8 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -110,8 +110,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= -golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -123,8 +123,8 @@ golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 633138ea2f9e..d434a3d858fb 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -82,10 +82,10 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.35.0 // indirect - golang.org/x/net v0.36.0 // indirect + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/text v0.23.0 // indirect golang.org/x/time v0.10.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index aef55a6b37de..577955b6c530 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -131,8 +131,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= -golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -140,13 +140,13 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= -golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -155,8 +155,8 @@ golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index 68bc69748add..07585ab90a2a 100644 --- a/go.mod +++ b/go.mod @@ -92,10 +92,10 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.35.0 // indirect - golang.org/x/net v0.36.0 // indirect + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index 1d3d4e850383..34e497638f7e 100644 --- a/go.sum +++ b/go.sum @@ -179,8 +179,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= -golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -196,16 +196,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= -golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -217,8 +217,8 @@ golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/pkg/go.mod b/pkg/go.mod index d943558bd4d3..60653b1e10ab 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -24,9 +24,9 @@ require ( go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/protobuf v1.36.5 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index cfd7063aa78a..cc1cc013aed6 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -53,12 +53,12 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= -golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= diff --git a/server/go.mod b/server/go.mod index 8ad9e6e39c14..7b47b834a1a7 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,8 +37,8 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 go.opentelemetry.io/otel/sdk v1.35.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.35.0 - golang.org/x/net v0.36.0 + golang.org/x/crypto v0.36.0 + golang.org/x/net v0.37.0 golang.org/x/time v0.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb google.golang.org/grpc v1.70.0 @@ -73,7 +73,7 @@ require ( go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect diff --git a/server/go.sum b/server/go.sum index 66101a3b1fd9..a3869b043ea4 100644 --- a/server/go.sum +++ b/server/go.sum @@ -157,8 +157,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= -golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -174,16 +174,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= -golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -194,8 +194,8 @@ golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index fad4d22ef598..539997f33138 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -44,8 +44,8 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 go.opentelemetry.io/proto/otlp v1.5.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.35.0 - golang.org/x/sync v0.11.0 + golang.org/x/crypto v0.36.0 + golang.org/x/sync v0.12.0 golang.org/x/time v0.10.0 google.golang.org/grpc v1.70.0 google.golang.org/protobuf v1.36.5 @@ -94,9 +94,9 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index 3cfef7a7afda..1f9393caa44d 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -183,8 +183,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= -golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -200,16 +200,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= -golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -221,8 +221,8 @@ golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 89ea16615ae3..cca0da252fac 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -5,7 +5,7 @@ go 1.24 toolchain go1.24.1 require ( - github.com/alexfalkowski/gocovmerge v1.4.0 + github.com/alexfalkowski/gocovmerge v1.6.0 github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 github.com/cloudflare/cfssl v1.6.5 @@ -213,15 +213,15 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.35.0 // indirect + golang.org/x/crypto v0.36.0 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect - golang.org/x/mod v0.23.0 // indirect - golang.org/x/net v0.36.0 // indirect - golang.org/x/sync v0.11.0 // indirect + golang.org/x/mod v0.24.0 // indirect + golang.org/x/net v0.37.0 // indirect + golang.org/x/sync v0.12.0 // indirect golang.org/x/sys v0.31.0 // indirect - golang.org/x/term v0.29.0 // indirect - golang.org/x/text v0.22.0 // indirect - golang.org/x/tools v0.30.0 // indirect + golang.org/x/term v0.30.0 // indirect + golang.org/x/text v0.23.0 // indirect + golang.org/x/tools v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/grpc v1.70.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 92b36a60bced..a76e2b37826d 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -32,8 +32,8 @@ github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsr github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= -github.com/alexfalkowski/gocovmerge v1.4.0 h1:sKiQYXR4CYdKOxwcZbVVHka0Pv8qADVule33pxcMz0M= -github.com/alexfalkowski/gocovmerge v1.4.0/go.mod h1:v1ugjLQktGsqJ8WPOooeKvd6eJlucF/wmHBpPp+kals= +github.com/alexfalkowski/gocovmerge v1.6.0 h1:ym50f/KroVYUKLUMI3GcnxBj77dxJP9G57Urrx63oO8= +github.com/alexfalkowski/gocovmerge v1.6.0/go.mod h1:whLxUVgIW64kj63uTPFgjlFHLa3bDrDpzBbitIjqRs4= github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU= github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= @@ -544,8 +544,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= -golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -566,8 +566,8 @@ golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= -golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= +golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -591,8 +591,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= -golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -603,8 +603,8 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -652,8 +652,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= -golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= +golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= +golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -667,8 +667,8 @@ golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= @@ -692,8 +692,8 @@ golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8 golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= -golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY= -golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= +golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= +golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 8d031cd04bd3..ef4fc7f83201 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -22,5 +22,5 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect golang.org/x/image v0.18.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/text v0.23.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 2face21be1cc..588a905dec1b 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -52,8 +52,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 0920059926d8..e6e0e350b84d 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -18,9 +18,9 @@ require ( github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect - golang.org/x/net v0.36.0 // indirect + golang.org/x/net v0.37.0 // indirect golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/grpc v1.70.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index f2a1f6c26e94..216b344735f6 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1336,8 +1336,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= -golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1516,8 +1516,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From e8e4914816029a3a1e174ddb182b4ac6e9ac2f13 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Thu, 13 Mar 2025 14:40:43 +0530 Subject: [PATCH 0050/1068] dependency: bump github.com/prometheus/client_golang from 1.21.0 to 1.21.1 This commit will bump github.com/prometheus/client_golang from 1.21.0 to 1.21.1 Signed-off-by: ArkaSaha30 --- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 13 files changed, 20 insertions(+), 20 deletions(-) diff --git a/client/v3/go.mod b/client/v3/go.mod index d684a837f0b2..13aa11486450 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 - github.com/prometheus/client_golang v1.21.0 + github.com/prometheus/client_golang v1.21.1 github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 diff --git a/client/v3/go.sum b/client/v3/go.sum index 4538cba97290..95743cc657f7 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -44,8 +44,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= -github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= +github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 2365ddb2ffc8..42823b7feaa2 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -61,8 +61,8 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= -github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= +github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index d434a3d858fb..73f1f97861ff 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -61,7 +61,7 @@ require ( github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.21.0 // indirect + github.com/prometheus/client_golang v1.21.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.62.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 577955b6c530..4c0991883f70 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -66,8 +66,8 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= -github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= +github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= diff --git a/go.mod b/go.mod index 07585ab90a2a..14a4123d653f 100644 --- a/go.mod +++ b/go.mod @@ -71,7 +71,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.21.0 // indirect + github.com/prometheus/client_golang v1.21.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.62.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect diff --git a/go.sum b/go.sum index 34e497638f7e..dc444fe7ded2 100644 --- a/go.sum +++ b/go.sum @@ -104,8 +104,8 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= -github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= +github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= diff --git a/server/go.mod b/server/go.mod index 7b47b834a1a7..22f0412d9d34 100644 --- a/server/go.mod +++ b/server/go.mod @@ -18,7 +18,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/jonboulle/clockwork v0.5.0 - github.com/prometheus/client_golang v1.21.0 + github.com/prometheus/client_golang v1.21.1 github.com/prometheus/client_model v0.6.1 github.com/soheilhy/cmux v0.1.5 github.com/spf13/cobra v1.9.1 diff --git a/server/go.sum b/server/go.sum index a3869b043ea4..e0bf0e052af1 100644 --- a/server/go.sum +++ b/server/go.sum @@ -87,8 +87,8 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= -github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= +github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= diff --git a/tests/go.mod b/tests/go.mod index 539997f33138..50c6abe69a6b 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -23,7 +23,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 - github.com/prometheus/client_golang v1.21.0 + github.com/prometheus/client_golang v1.21.1 github.com/prometheus/client_model v0.6.1 github.com/prometheus/common v0.62.0 github.com/soheilhy/cmux v0.1.5 diff --git a/tests/go.sum b/tests/go.sum index 1f9393caa44d..5799f529c8e3 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -108,8 +108,8 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= -github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= +github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index cca0da252fac..986bbaf94f7d 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -153,7 +153,7 @@ require ( github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/polyfloyd/go-errorlint v1.7.1 // indirect - github.com/prometheus/client_golang v1.21.0 // indirect + github.com/prometheus/client_golang v1.21.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.62.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index a76e2b37826d..ffff1e9ab40f 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -357,8 +357,8 @@ github.com/polyfloyd/go-errorlint v1.7.1 h1:RyLVXIbosq1gBdk/pChWA8zWYLsq9UEw7a1L github.com/polyfloyd/go-errorlint v1.7.1/go.mod h1:aXjNb1x2TNhoLsk26iv1yl7a+zTnXPhwEMtEXukiLR8= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= -github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= +github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= From 4a6c28c427c97a77c43781af1784bda453db9f5a Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 15 Mar 2025 10:42:03 +0100 Subject: [PATCH 0051/1068] Update the robustness test README - wordsmithing - fix broken links Signed-off-by: Chun-Hung Tseng --- tests/robustness/README.md | 55 +++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/tests/robustness/README.md b/tests/robustness/README.md index e47e61d158d6..b1ea6bae614a 100644 --- a/tests/robustness/README.md +++ b/tests/robustness/README.md @@ -39,7 +39,7 @@ The purpose of these tests is to rigorously validate that etcd maintains its [KV ## How Robustness Tests Work -Robustness tests compare etcd cluster behavior against a simplified model of its expected behavior. +Robustness tests compare the etcd cluster behavior against a simplified model of its expected behavior. These tests cover various scenarios, including: * **Different etcd cluster setups:** Cluster sizes, configurations, and deployment topologies. @@ -52,8 +52,8 @@ These tests cover various scenarios, including: 2. **Traffic and Failures:** Client traffic is generated and sent to the cluster while failures are injected. 3. **History Collection:** All client operations and their results are recorded. 4. **Validation:** The collected history is validated against the etcd model and a set of validators to ensure consistency and correctness. -5. **Report Generation:** If a failure is detected and a detailed report is generated to help diagnose the issue. - This report includes information about the client operations, etcd data directories. +5. **Report Generation:** If a failure is detected then a detailed report is generated to help diagnose the issue. + This report includes information about the client operations and etcd data directories. ## Key Concepts @@ -96,26 +96,25 @@ Etcd provides strict serializability for KV operations and eventual consistency make gofail-disable ``` 2. Run the tests - ```bash make test-robustness ``` - Optionally you can pass environment variables: + Optionally, you can pass environment variables: * `GO_TEST_FLAGS` - to pass additional arguments to `go test`. It is recommended to run tests multiple times with failfast enabled. this can be done by setting `GO_TEST_FLAGS='--count=100 --failfast'`. * `EXPECT_DEBUG=true` - to get logs from the cluster. - * `RESULTS_DIR` - to change location where results report will be saved. + * `RESULTS_DIR` - to change the location where the results report will be saved. * `PERSIST_RESULTS` - to persist the results report of the test. By default this will not be persisted in the case of a successful run. ## Re-evaluate existing report Robustness test validation is constantly changing and improving. -Errors in etcd model could be causing false positives, which makes the ability to re-evaluate the reports after we fix the issue important. +Errors in the etcd model could be causing false positives, which makes the ability to re-evaluate the reports after we fix the issue important. > Note: Robustness test report format is not stable, and it's expected that not all old reports can be re-evaluated using the newest version. -1. Identify location of the robustness test report. +1. Identify the location of the robustness test report. > Note: By default robustness test report is only generated for failed test. @@ -124,7 +123,7 @@ Errors in etcd model could be causing false positives, which makes the ability t logger.go:146: 2024-04-08T09:45:27.734+0200 INFO Saving robustness test report {"path": "/tmp/TestRobustnessExploratory_Etcd_HighTraffic_ClusterOfSize1"} ``` - * **For remote runs on CI:** you need to go to the [Prow Dashboard](https://prow.k8s.io/job-history/gs/kubernetes-jenkins/logs/ci-etcd-robustness-amd64), go to a build, download one of the Artifacts (`artifacts/results.zip`), and extract it locally. + * **For remote runs on CI:** you need to go to the [Prow Dashboard](https://testgrid.k8s.io/sig-etcd-robustness#Summary), go to a build, download one of the Artifacts (`artifacts/results.zip`), and extract it locally. ![Prow job run page](readme-images/prow_job.png) @@ -144,14 +143,14 @@ Errors in etcd model could be causing false positives, which makes the ability t The `testdata` directory can contain multiple robustness test reports. The name of the report directory doesn't matter, as long as it's unique to prevent clashing with reports already present in `testdata` directory. - For example path for `history.html` file could look like `$REPO_ROOT/tests/robustness/testdata/v3.5_failure_24_April/history.html`. + For example, the path for `history.html` file could look like `$REPO_ROOT/tests/robustness/testdata/v3.5_failure_24_April/history.html`. 3. Run `make test-robustness-reports` to validate all reports in the `testdata` directory. ## Analysing failure -If robustness tests fails we want to analyse the report to confirm if the issue is on etcd side. Location of the directory with the report -is mentioned `Saving robustness test report` log. Logs from report generation should look like: +If robustness tests fail, we want to analyse the report to confirm if the issue is on etcd side. The location of the directory with the report +is mentioned in the `Saving robustness test report` log. Logs from report generation should look like: ``` logger.go:146: 2024-05-08T10:42:54.429+0200 INFO Saving robustness test report {"path": "/tmp/TestRobustnessRegression_Issue14370/1715157774429416550"} logger.go:146: 2024-05-08T10:42:54.429+0200 INFO Saving member data dir {"member": "TestRobustnessRegressionIssue14370-test-0", "path": "/tmp/TestRobustnessRegression_Issue14370/1715157774429416550/server-TestRobustnessRegressionIssue14370-test-0"} @@ -178,21 +177,21 @@ is mentioned `Saving robustness test report` log. Logs from report generation sh logger.go:146: 2024-05-08T10:42:54.441+0200 INFO Saving visualization {"path": "/tmp/TestRobustnessRegression_Issue14370/1715157774429416550/history.html"} ``` -Report follows the hierarchy: +The report follows the hierarchy: * `server-*` - etcd server data directories, can be used to verify disk/memory corruption. * `member` * `wal` - Write Ahead Log (WAL) directory, that can be analysed using `etcd-dump-logs` command line tool available in `tools` directory. * `snap` - Snapshot directory, includes the bbolt database file `db`, that can be analysed using `etcd-dump-db` command line tool available in `tools` directory. * `client-*` - Client request and response dumps in json format. - * `watch.jon` - Watch requests and responses, can be used to validate [watch API guarantees]. + * `watch.json` - Watch requests and responses, can be used to validate [watch API guarantees]. * `operations.json` - KV operation history * `history.html` - Visualization of KV operation history, can be used to validate [KV API guarantees]. -### Example analysis of linearization issue +### Example analysis of a linearization issue Let's reproduce and analyse robustness test report for issue [#14370]. To reproduce the issue by yourself run `make test-robustness-issue14370`. -After a couple of tries robustness tests should fail with a log `Linearization failed` and save report locally. +After a couple of tries robustness tests should fail with a log `Linearization failed` and save the report locally. Example: ``` @@ -211,14 +210,14 @@ Jump to the error in linearization by clicking `[ jump to first error ]` on the You should see a graph similar to the one on the image below. ![issue14370](readme-images/issue14370.png) -Last correct request (connected with grey line) is a `Put` request that succeeded and got revision `168`. +The last correct request (connected with the grey line) is a `Put` request that succeeded and got revision `168`. All following requests are invalid (connected with red line) as they have revision `167`. -Etcd guarantee that revision is non-decreasing, so this shows a bug in etcd as there is no way revision should decrease. -This is consistent with the root cause of [#14370] as it was issue with process crash causing last write to be lost. +Etcd guarantees that revision is non-decreasing, so this shows a bug in etcd as there is no way revision should decrease. +This is consistent with the root cause of [#14370] as it was an issue with the process crash causing the last write to be lost. [#14370]: https://github.com/etcd-io/etcd/issues/14370 -### Example analysis of watch issue +### Example analysis of a watch issue Let's reproduce and analyse robustness test report for issue [#15271]. To reproduce the issue by yourself run `make test-robustness-issue15271`. @@ -236,22 +235,24 @@ Example: ``` Watch issues are easiest to analyse by reading the recorded watch history. -Watch history is recorded for each client separated in different subdirectory under `/tmp/TestRobustnessRegression_Issue15271/1715158215866033806` -Open `watch.json` for client mentioned in log `Broke watch guarantee`. + +Watch history is recorded for each client separated in different subdirectory under `/tmp/TestRobustnessRegression_Issue15271/1715158215866033806`. + +Open `watch.json` for the client mentioned in the log `Broke watch guarantee`. For client `4` that broke the watch guarantee open `/tmp/TestRobustnessRegression_Issue15271/1715158215866033806/client-4/watch.json`. -Each line consists of json blob corresponding to single watch request sent by client. -Look for events with `Revision` equal to revision mentioned in the first log with `Broke watch guarantee`, in this case look for `"Revision":3,`. +Each line consists of json blob corresponding to a single watch request sent by the client. +Look for events with `Revision` equal to revision mentioned in the first log with `Broke watch guarantee`, in this case, look for `"Revision":3,`. You should see watch responses where the `Revision` decreases like ones below: ``` {"Events":[{"Type":"put-operation","Key":"key5","Value":{"Value":"793","Hash":0},"Revision":799,"IsCreate":false,"PrevValue":null}],"IsProgressNotify":false,"Revision":799,"Time":3202907249,"Error":""} {"Events":[{"Type":"put-operation","Key":"key4","Value":{"Value":"1","Hash":0},"Revision":3,"IsCreate":true,"PrevValue":null}, ... ``` -Up to the first response the `Revision` of events only increased up to a value of `799`. +Up to the first response, the `Revision` of events only increased up to a value of `799`. However, the following line includes an event with `Revision` equal `3`. -If you follow the `revision` throughout the file you should notice that watch replayed revisions second time. +If you follow the `revision` throughout the file you should notice that watch replayed revisions for a second time. This is incorrect and breaks `Ordered` [watch API guarantees]. -This is consistent with the root cause of [#14370] where member reconnecting to cluster will resend revisions. +This is consistent with the root cause of [#14370] where the member reconnecting to cluster will resend revisions. [#15271]: https://github.com/etcd-io/etcd/issues/15271 From e29d75fea5c9888b0508a4dd6e32da918e7e5b73 Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Thu, 13 Mar 2025 20:11:57 +0100 Subject: [PATCH 0052/1068] tests/robustness: address Go 1.24 usetesting issues Signed-off-by: Matthieu MOREL --- tests/robustness/main_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index f88c49b3672f..0b3b57f18920 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -55,7 +55,7 @@ func TestRobustnessExploratory(t *testing.T) { t.Run(s.Name, func(t *testing.T) { lg := zaptest.NewLogger(t) s.Cluster.Logger = lg - ctx := context.Background() + ctx := t.Context() c, err := e2e.NewEtcdProcessCluster(ctx, t, e2e.WithConfig(&s.Cluster)) require.NoError(t, err) defer forcestopCluster(c) @@ -74,7 +74,7 @@ func TestRobustnessRegression(t *testing.T) { t.Run(s.Name, func(t *testing.T) { lg := zaptest.NewLogger(t) s.Cluster.Logger = lg - ctx := context.Background() + ctx := t.Context() c, err := e2e.NewEtcdProcessCluster(ctx, t, e2e.WithConfig(&s.Cluster)) require.NoError(t, err) defer forcestopCluster(c) From ba728fecdb886829364432eff755fffbc8086571 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 15 Mar 2025 13:22:16 +0100 Subject: [PATCH 0053/1068] Fix wrong error message in `loadKeyValueOperations` Signed-off-by: Chun-Hung Tseng --- tests/robustness/report/client.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/robustness/report/client.go b/tests/robustness/report/client.go index 48d29b8ae818..208da9f0c1a0 100644 --- a/tests/robustness/report/client.go +++ b/tests/robustness/report/client.go @@ -138,11 +138,11 @@ func loadKeyValueOperations(path string) (operations []porcupine.Operation, err if os.IsNotExist(err) { return nil, nil } - return nil, fmt.Errorf("failed to open watch operation file: %q, err: %w", path, err) + return nil, fmt.Errorf("failed to open KV operation file: %q, err: %w", path, err) } file, err := os.OpenFile(path, os.O_RDONLY, 0o755) if err != nil { - return nil, fmt.Errorf("failed to open watch operation file: %q, err: %w", path, err) + return nil, fmt.Errorf("failed to open KV operation file: %q, err: %w", path, err) } defer file.Close() decoder := json.NewDecoder(file) @@ -156,7 +156,7 @@ func loadKeyValueOperations(path string) (operations []porcupine.Operation, err } err = decoder.Decode(&operation) if err != nil { - return nil, fmt.Errorf("failed to decode watch operation, err: %w", err) + return nil, fmt.Errorf("failed to decode KV operation, err: %w", err) } operations = append(operations, porcupine.Operation{ ClientId: operation.ClientID, @@ -190,7 +190,7 @@ func persistKeyValueOperations(t *testing.T, lg *zap.Logger, path string, operat lg.Info("Saving operation history", zap.String("path", path)) file, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o755) if err != nil { - t.Errorf("Failed to save operation history: %v", err) + t.Errorf("Failed to save KV operation history: %v", err) return } defer file.Close() @@ -198,7 +198,7 @@ func persistKeyValueOperations(t *testing.T, lg *zap.Logger, path string, operat for _, op := range operations { err := encoder.Encode(op) if err != nil { - t.Errorf("Failed to encode operation: %v", err) + t.Errorf("Failed to encode KV operation: %v", err) } } } From 4463faee80bda945fa65ac0592df5218c9760e03 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Sat, 15 Mar 2025 13:32:25 +0530 Subject: [PATCH 0054/1068] dependency: bump github.com/anishathalye/porcupine from v1.0.0 to v1.0.2 This commit will bump github.com/anishathalye/porcupine from v1.0.0 to v1.0.2 Signed-off-by: ArkaSaha30 --- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/go.mod b/tests/go.mod index 50c6abe69a6b..b662abe5ba3f 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -16,7 +16,7 @@ replace ( ) require ( - github.com/anishathalye/porcupine v1.0.0 + github.com/anishathalye/porcupine v1.0.2 github.com/coreos/go-semver v0.3.1 github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 diff --git a/tests/go.sum b/tests/go.sum index 5799f529c8e3..9950c65854b6 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -2,8 +2,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= -github.com/anishathalye/porcupine v1.0.0 h1:93eF6d26IMDky+G4h8FcLuYp1oO+no8a//I7asq/oKI= -github.com/anishathalye/porcupine v1.0.0/go.mod h1:WM0SsFjWNl2Y4BqHr/E/ll2yY1GY1jqn+W7Z/84Zoog= +github.com/anishathalye/porcupine v1.0.2 h1:cXMWjnN95KYsbZVTi9VmXj0ePs1w3ZJ82zWoXDy6WPE= +github.com/anishathalye/porcupine v1.0.2/go.mod h1:WM0SsFjWNl2Y4BqHr/E/ll2yY1GY1jqn+W7Z/84Zoog= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= From 0d31d3c6a28a19354c530e7bc533ee2b719428f4 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 19 Mar 2025 22:30:05 +0530 Subject: [PATCH 0055/1068] dependency: bump google.golang.org/grpc from 1.70.0 to 1.71.0 This commit will bump google.golang.org/grpc from 1.70.0 to 1.71.0 Signed-off-by: ArkaSaha30 --- api/go.mod | 2 +- api/go.sum | 8 ++++---- client/v3/go.mod | 2 +- client/v3/go.sum | 8 ++++---- etcdctl/go.mod | 3 +-- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 2 +- etcdutl/go.sum | 8 ++++---- go.mod | 2 +- go.sum | 8 ++++---- pkg/go.mod | 2 +- pkg/go.sum | 8 ++++---- server/go.mod | 2 +- server/go.sum | 8 ++++---- tests/go.mod | 2 +- tests/go.sum | 8 ++++---- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 8 ++++---- 20 files changed, 48 insertions(+), 49 deletions(-) diff --git a/api/go.mod b/api/go.mod index ddc1e044392b..4be754c85e24 100644 --- a/api/go.mod +++ b/api/go.mod @@ -11,7 +11,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/stretchr/testify v1.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb - google.golang.org/grpc v1.70.0 + google.golang.org/grpc v1.71.0 google.golang.org/protobuf v1.36.5 ) diff --git a/api/go.sum b/api/go.sum index 8cdf14106445..3db58f46f971 100644 --- a/api/go.sum +++ b/api/go.sum @@ -38,8 +38,8 @@ go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/ go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= -go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -77,8 +77,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= -google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index 13aa11486450..36622349c519 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.70.0 + google.golang.org/grpc v1.71.0 sigs.k8s.io/yaml v1.4.0 ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 95743cc657f7..21c479dba40d 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -66,8 +66,8 @@ go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/ go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= -go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -111,8 +111,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= -google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 98b7adc21a05..7847a714bc63 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.10.0 - google.golang.org/grpc v1.70.0 + google.golang.org/grpc v1.71.0 ) require ( @@ -36,7 +36,6 @@ require ( github.com/mattn/go-runewidth v0.0.16 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.37.0 // indirect golang.org/x/sys v0.31.0 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 42823b7feaa2..2a924d7ce0d0 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -91,8 +91,8 @@ go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/ go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= -go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -139,8 +139,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= -google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 73f1f97861ff..eaebc87a4551 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -89,7 +89,7 @@ require ( golang.org/x/time v0.10.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/grpc v1.70.0 // indirect + google.golang.org/grpc v1.71.0 // indirect google.golang.org/protobuf v1.36.5 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 4c0991883f70..f966d199b9a9 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -116,8 +116,8 @@ go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/ go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= -go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= @@ -171,8 +171,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= -google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index 14a4123d653f..fbecd9308f41 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.10.0 - google.golang.org/grpc v1.70.0 + google.golang.org/grpc v1.71.0 google.golang.org/protobuf v1.36.5 ) diff --git a/go.sum b/go.sum index dc444fe7ded2..6c99ad74d1c6 100644 --- a/go.sum +++ b/go.sum @@ -161,8 +161,8 @@ go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/ go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= -go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= @@ -247,8 +247,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= -google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/go.mod b/pkg/go.mod index 60653b1e10ab..46dc7c961be6 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.70.0 + google.golang.org/grpc v1.71.0 ) require ( diff --git a/pkg/go.sum b/pkg/go.sum index cc1cc013aed6..4f48306f45ef 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -43,8 +43,8 @@ go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/ go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= -go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -61,8 +61,8 @@ golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= -google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index 22f0412d9d34..960da349b710 100644 --- a/server/go.mod +++ b/server/go.mod @@ -41,7 +41,7 @@ require ( golang.org/x/net v0.37.0 golang.org/x/time v0.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb - google.golang.org/grpc v1.70.0 + google.golang.org/grpc v1.71.0 google.golang.org/protobuf v1.36.5 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.4.0 diff --git a/server/go.sum b/server/go.sum index e0bf0e052af1..c76c4b27a835 100644 --- a/server/go.sum +++ b/server/go.sum @@ -139,8 +139,8 @@ go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/ go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= -go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= @@ -224,8 +224,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= -google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index b662abe5ba3f..2114c91be03b 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -47,7 +47,7 @@ require ( golang.org/x/crypto v0.36.0 golang.org/x/sync v0.12.0 golang.org/x/time v0.10.0 - google.golang.org/grpc v1.70.0 + google.golang.org/grpc v1.71.0 google.golang.org/protobuf v1.36.5 ) diff --git a/tests/go.sum b/tests/go.sum index 9950c65854b6..ebef424b0908 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -165,8 +165,8 @@ go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/ go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= -go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= @@ -251,8 +251,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= -google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 986bbaf94f7d..d2c7f0d10dc8 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -224,7 +224,7 @@ require ( golang.org/x/tools v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/grpc v1.70.0 // indirect + google.golang.org/grpc v1.71.0 // indirect google.golang.org/protobuf v1.36.5 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index ffff1e9ab40f..792ceeec68d2 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -702,8 +702,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= -google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index e6e0e350b84d..2d725bb83244 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -22,5 +22,5 @@ require ( golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/grpc v1.70.0 // indirect + google.golang.org/grpc v1.71.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 216b344735f6..269ca31fe734 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1186,8 +1186,8 @@ go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/ go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= -go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -1888,8 +1888,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= -google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 796fba43134296034cb04f8b3786551187b9a7b0 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 19 Mar 2025 22:42:14 +0530 Subject: [PATCH 0056/1068] dependency: bump golang.org/x/time from 0.10.0 to 0.11.0 This commit will bump golang.org/x/time from 0.10.0 to 0.11.0 Signed-off-by: ArkaSaha30 --- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 7847a714bc63..26d0f0bb3432 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -17,7 +17,7 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - golang.org/x/time v0.10.0 + golang.org/x/time v0.11.0 google.golang.org/grpc v1.71.0 ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 2a924d7ce0d0..eb4ed455548a 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -125,8 +125,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= -golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= -golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= +golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index eaebc87a4551..6c7938a51f8d 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -86,7 +86,7 @@ require ( golang.org/x/net v0.37.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.23.0 // indirect - golang.org/x/time v0.10.0 // indirect + golang.org/x/time v0.11.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/grpc v1.71.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index f966d199b9a9..b3ad18c774d6 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -157,8 +157,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= -golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= -golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= +golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/go.mod b/go.mod index fbecd9308f41..5477a3b56acb 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( go.etcd.io/etcd/tests/v3 v3.0.0-00010101000000-000000000000 go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 - golang.org/x/time v0.10.0 + golang.org/x/time v0.11.0 google.golang.org/grpc v1.71.0 google.golang.org/protobuf v1.36.5 ) diff --git a/go.sum b/go.sum index 6c99ad74d1c6..13e0a1ddbebe 100644 --- a/go.sum +++ b/go.sum @@ -219,8 +219,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= -golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= -golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= +golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= diff --git a/server/go.mod b/server/go.mod index 960da349b710..421b5b344e98 100644 --- a/server/go.mod +++ b/server/go.mod @@ -39,7 +39,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/crypto v0.36.0 golang.org/x/net v0.37.0 - golang.org/x/time v0.10.0 + golang.org/x/time v0.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb google.golang.org/grpc v1.71.0 google.golang.org/protobuf v1.36.5 diff --git a/server/go.sum b/server/go.sum index c76c4b27a835..6af7eed6de19 100644 --- a/server/go.sum +++ b/server/go.sum @@ -196,8 +196,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= -golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= -golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= +golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= diff --git a/tests/go.mod b/tests/go.mod index 2114c91be03b..4f0266c4bcde 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -46,7 +46,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/crypto v0.36.0 golang.org/x/sync v0.12.0 - golang.org/x/time v0.10.0 + golang.org/x/time v0.11.0 google.golang.org/grpc v1.71.0 google.golang.org/protobuf v1.36.5 ) diff --git a/tests/go.sum b/tests/go.sum index ebef424b0908..2bf75111a7d8 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -223,8 +223,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= -golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= -golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= +golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= From f855c438ce2fa62b4eed3a420bf9312f8feb62d4 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 19 Mar 2025 22:52:21 +0530 Subject: [PATCH 0057/1068] dependency: bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.34.0 to 1.35.0 This commit will bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.34.0 to 1.35.0 Also, it bumps indirect dependency: go.opentelemetry.io/otel/exporters/otlp/otlptrace from 1.34.0 to 1.35.0 Signed-off-by: ArkaSaha30 --- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- server/go.mod | 4 ++-- server/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 6c7938a51f8d..b705fba8d2cf 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -75,8 +75,8 @@ require ( go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index b3ad18c774d6..3a37396a313b 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -108,10 +108,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.5 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= diff --git a/go.mod b/go.mod index 5477a3b56acb..5ecae22672b9 100644 --- a/go.mod +++ b/go.mod @@ -85,8 +85,8 @@ require ( go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect diff --git a/go.sum b/go.sum index 13e0a1ddbebe..34c07def6655 100644 --- a/go.sum +++ b/go.sum @@ -153,10 +153,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.5 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= diff --git a/server/go.mod b/server/go.mod index 421b5b344e98..399716688707 100644 --- a/server/go.mod +++ b/server/go.mod @@ -34,7 +34,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 go.opentelemetry.io/otel v1.35.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 go.opentelemetry.io/otel/sdk v1.35.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.36.0 @@ -67,7 +67,7 @@ require ( github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect diff --git a/server/go.sum b/server/go.sum index 6af7eed6de19..562c637a9fa4 100644 --- a/server/go.sum +++ b/server/go.sum @@ -131,10 +131,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.5 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= diff --git a/tests/go.mod b/tests/go.mod index 4f0266c4bcde..e2105ed9b910 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -90,8 +90,8 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/bbolt v1.4.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.37.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 2bf75111a7d8..896965f199b2 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -157,10 +157,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.5 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= From 7c5a3ed6741383158e2e2ac2b03d570c3f63b9ed Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 19 Mar 2025 08:10:52 +0100 Subject: [PATCH 0058/1068] Use go:1.24-bookworm for devcontainer Signed-off-by: Chun-Hung Tseng --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 609757f962e8..0e1a770af1ed 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,7 +3,7 @@ { "name": "Go", // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - "image": "mcr.microsoft.com/devcontainers/go:dev-1.24-bookworm", + "image": "mcr.microsoft.com/devcontainers/go:1.24-bookworm", // Features to add to the dev container. More info: https://containers.dev/features. "features": { "ghcr.io/devcontainers/features/docker-in-docker:2": {}, From b74dd3b51b163d2d78598dc79906edc9675860e6 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 19 Mar 2025 23:01:04 +0530 Subject: [PATCH 0059/1068] dependency: bump github.com/golangci/golangci-lint from 1.64.6 to 1.64.7 This commit will bump github.com/golangci/golangci-lint from 1.64.6 to 1.64.7 Signed-off-by: ArkaSaha30 --- tools/mod/go.mod | 8 ++++---- tools/mod/go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index d2c7f0d10dc8..d35d9f6e943f 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -10,7 +10,7 @@ require ( github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint v1.64.6 + github.com/golangci/golangci-lint v1.64.7 github.com/google/addlicense v1.1.1 github.com/google/yamlfmt v0.16.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 @@ -35,7 +35,7 @@ require ( github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 // indirect github.com/Masterminds/semver/v3 v3.3.0 // indirect - github.com/OpenPeeDeeP/depguard/v2 v2.2.0 // indirect + github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect github.com/akhenakh/hunspellgo v0.0.0-20160221122622-9db38fa26e19 // indirect github.com/alecthomas/go-check-sumtype v0.3.1 // indirect github.com/alexkohler/nakedret/v2 v2.0.5 // indirect @@ -88,7 +88,7 @@ require ( github.com/gobwas/glob v0.2.3 // indirect github.com/gofrs/flock v0.12.1 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect + github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect github.com/golangci/go-printf-func-name v0.1.0 // indirect github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect github.com/golangci/misspell v0.6.0 // indirect @@ -172,7 +172,7 @@ require ( github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.28.0 // indirect - github.com/securego/gosec/v2 v2.22.1 // indirect + github.com/securego/gosec/v2 v2.22.2 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sivchari/containedctx v1.0.3 // indirect github.com/sivchari/tenv v1.12.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 792ceeec68d2..ff6e33da376b 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -22,8 +22,8 @@ github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 h1:Sz1JIXEcSfhz7fUi7xHnh github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1/go.mod h1:n/LSCXNuIYqVfBlVXyHfMQkZDdp1/mmxfSjADd3z1Zg= github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= -github.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJPdp74zmpA= -github.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ= +github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= +github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= github.com/akhenakh/hunspellgo v0.0.0-20160221122622-9db38fa26e19 h1:bYOD6QJnBJY79MJQR1i9cyQePG5oNDZXDKL2bhN/uvE= github.com/akhenakh/hunspellgo v0.0.0-20160221122622-9db38fa26e19/go.mod h1:HcqyLXmWoESd/vPSbCPqvgw5l5cMM5PtoqFOnXLjSeM= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= @@ -164,14 +164,14 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= +github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 h1:WUvBfQL6EW/40l6OmeSBYQJNSif4O11+bmWEz+C7FYw= +github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E= github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUPPyAKJuzv8pEJU= github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint v1.64.6 h1:jOLaQN41IV7bMzXuNC4UnQGll7N1xY6eFDXkXEPGKAs= -github.com/golangci/golangci-lint v1.64.6/go.mod h1:Wz9q+6EVuqGQ94GQ96RB2mjpcZYTOGhBhbt4O7REPu4= +github.com/golangci/golangci-lint v1.64.7 h1:Xk1EyxoXqZabn5b4vnjNKSjCx1whBK53NP+mzLfX7HA= +github.com/golangci/golangci-lint v1.64.7/go.mod h1:5cEsUQBSr6zi8XI8OjmcY2Xmliqc4iYL7YoPrL+zLJ4= github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= @@ -398,8 +398,8 @@ github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tM github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= github.com/sashamelentyev/usestdlibvars v1.28.0 h1:jZnudE2zKCtYlGzLVreNp5pmCdOxXUzwsMDBkR21cyQ= github.com/sashamelentyev/usestdlibvars v1.28.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= -github.com/securego/gosec/v2 v2.22.1 h1:IcBt3TpI5Y9VN1YlwjSpM2cHu0i3Iw52QM+PQeg7jN8= -github.com/securego/gosec/v2 v2.22.1/go.mod h1:4bb95X4Jz7VSEPdVjC0hD7C/yR6kdeUBvCPOy9gDQ0g= +github.com/securego/gosec/v2 v2.22.2 h1:IXbuI7cJninj0nRpZSLCUlotsj8jGusohfONMrHoF6g= +github.com/securego/gosec/v2 v2.22.2/go.mod h1:UEBGA+dSKb+VqM6TdehR7lnQtIIMorYJ4/9CW1KVQBE= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= From b3fddaf23004e9133981252302ff39d4c1c6bf0b Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 19 Mar 2025 23:05:57 +0530 Subject: [PATCH 0060/1068] dependency: bump gotest.tools/gotestsum from 1.12.0 to 1.12.1 This commit will bump gotest.tools/gotestsum from 1.12.0 to 1.12.1 Signed-off-by: ArkaSaha30 --- tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 47 ++++------------------------------------------- 2 files changed, 6 insertions(+), 45 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index d35d9f6e943f..75a37b27502c 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -17,7 +17,7 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 - gotest.tools/gotestsum v1.12.0 + gotest.tools/gotestsum v1.12.1 gotest.tools/v3 v3.5.2 honnef.co/go/tools v0.6.1 ) @@ -70,7 +70,7 @@ require ( github.com/fatih/color v1.18.0 // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/firefart/nonamedreturns v1.0.5 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect github.com/ghostiam/protogetter v0.3.9 // indirect github.com/go-critic/go-critic v0.12.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index ff6e33da376b..77f53b00614a 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -105,8 +105,6 @@ github.com/dnephin/pflag v1.0.7 h1:oxONGlWxhmUct0YzKTgrpQv9AUA1wtPBn7zuSjJqptk= github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= -github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= @@ -115,8 +113,8 @@ github.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6 github.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= +github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= github.com/ghostiam/protogetter v0.3.9 h1:j+zlLLWzqLay22Cz/aYwTHKQ88GE2DQ6GkWSYFOI4lQ= @@ -189,8 +187,6 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= @@ -299,12 +295,8 @@ github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4= github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= @@ -380,7 +372,6 @@ github.com/raeperd/recvcheck v0.2.0/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtz 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= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -537,13 +528,9 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= @@ -558,14 +545,11 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -580,17 +564,13 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -602,7 +582,6 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -623,35 +602,23 @@ golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -664,9 +631,7 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -684,14 +649,11 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= -golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -719,9 +681,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/gotestsum v1.12.0 h1:CmwtaGDkHxrZm4Ib0Vob89MTfpc3GrEFMJKovliPwGk= -gotest.tools/gotestsum v1.12.0/go.mod h1:fAvqkSptospfSbQw26CTYzNwnsE/ztqLeyhP0h67ARY= -gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +gotest.tools/gotestsum v1.12.1 h1:dvcxFBTFR1QsQmrCQa4k/vDXow9altdYz4CjdW+XeBE= +gotest.tools/gotestsum v1.12.1/go.mod h1:mwDmLbx9DIvr09dnAoGgQPLaSXszNpXpWo2bsQge5BE= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= From b1e9d94d00ad2dbc37e535e5e0a4bd0b97031fcd Mon Sep 17 00:00:00 2001 From: Siyuan Zhang Date: Mon, 17 Mar 2025 16:45:16 -0700 Subject: [PATCH 0061/1068] doc: update feature development guide. Signed-off-by: Siyuan Zhang --- Documentation/contributor-guide/features.md | 90 +++++++++++---------- 1 file changed, 47 insertions(+), 43 deletions(-) diff --git a/Documentation/contributor-guide/features.md b/Documentation/contributor-guide/features.md index 5f98391077b7..ed2d55accd36 100644 --- a/Documentation/contributor-guide/features.md +++ b/Documentation/contributor-guide/features.md @@ -4,80 +4,84 @@ This document provides an overview of etcd features and general development guid ## Overview -The etcd features fall into three stages, experimental, stable, and unsafe. +The etcd features fall into three stages: Alpha, Beta, and GA. -### Experimental +### Alpha -Any new feature is usually added as an experimental feature. An experimental feature is characterized as below: +Any new feature is usually added as an Alpha feature. An Alpha feature is characterized as below: - Might be buggy due to a lack of user testing. Enabling the feature may not work as expected. -- Disabled by default when added initially. +- Disabled by default. - Support for such a feature may be dropped at any time without notice - Feature-related issues may be given lower priorities. - - It can be removed in the next minor or major release without following the feature deprecation policy unless it graduates to a stable future. + - It can be removed in the next minor or major release without following the feature deprecation policy unless it graduates to a more stable stage. -### Stable +### Beta -A stable feature is characterized as below: +A Beta feature is characterized as below: - Supported as part of the supported releases of etcd. -- May be enabled by default. +- Enabled by default. - Discontinuation of support must follow the feature deprecation policy. -### Unsafe +### GA -Unsafe features are rare and listed under the `Unsafe feature:` section in the etcd usage documentation. By default, they are disabled. They should be used with caution following documentation. An unsafe feature can be removed in the next minor or major release without following the feature deprecation policy. +A GA feature is characterized as below: +- Supported as part of the supported releases of etcd. +- Always enabled; you cannot disable it. The corresponding feature gate is no longer needed. +- Discontinuation of support must follow the feature deprecation policy. ## Development Guidelines ### Adding a new feature -Any new enhancements to the etcd are typically added as an experimental feature. The general development requirements are listed below. They can be somewhat flexible depending on the scope of the feature and review discussions and will evolve over time. -- Open an issue +Any new enhancements to the etcd are typically added as an Alpha feature. + +etcd follows the Kubernetes [KEP process](https://github.com/kubernetes/enhancements/blob/master/keps/sig-architecture/0000-kep-process/README.md) for new enhancements. The general development requirements are listed below. They can be somewhat flexible depending on the scope of the feature and review discussions and will evolve over time. +- Open a [KEP](https://github.com/kubernetes/enhancements/issues) issue - It must provide a clear need for the proposed feature. - - It should list development work items as checkboxes. There must be one work item towards future graduation to a stable future. - - Label the issue with `type/feature` and `experimental`. + - It should list development work items as checkboxes. There must be one work item towards future graduation to Beta. + - Label the issue with `/sig etcd`. - Keep the issue open for tracking purposes until a decision is made on graduation. -- Open a Pull Request (PR) +- Open a [KEP](https://github.com/kubernetes/enhancements) Pull Request (PR). + - The KEP template can be simplified for etcd. + - It must provide clear graduation criteria for each stage. + - The KEP doc should reside in [keps/sig-etcd](https://github.com/kubernetes/enhancements/tree/master/keps/sig-etcd/) +- Open Pull Requests (PRs) in [etcd](https://github.com/etcd-io/etcd) - Provide unit tests. Integration tests are also recommended as possible. - Provide robust e2e test coverage. If the feature being added is complicated or quickly needed, maintainers can decide to go with e2e tests for basic coverage initially and have robust coverage added at a later time before the feature graduation to the stable feature. - Provide logs for proper debugging. - Provide metrics and benchmarks as needed. - - The Feature should be disabled by default. - - Any configuration flags related to the implementation of the feature must be prefixed with `experimental` e.g. `--experimental-feature-name`. + - Add an Alpha [feature gate](https://etcd.io/docs/v3.6/feature-gates/). + - Any code changes or configuration flags related to the implementation of the feature must be gated with the feature gate e.g. `if cfg.ServerFeatureGate.Enabled(features.FeatureName)`. - Add a CHANGELOG entry. -- At least two maintainers must approve feature requirements and related code changes. +- At least two maintainers must approve the KEP and related code changes. -### Graduating an Experimental feature to Stable +### Graduating a feature to the next stage -It is important that experimental features don't get stuck in that stage. They should be revisited and moved to the stable stage following the graduation steps as described here. - -#### Locate graduation candidate -Decide if an experimental feature is ready for graduation to the stable stage. -- Find the issue that was used to enable the experimental feature initially. One way to find such issues is to search for issues with `type/feature` and `experimental` labels. -- Fix any known open issues against the feature. -- Make sure the feature was enabled for at least one previous release. Check the PR(s) reference from the issue to see when the feature-related code changes were merged. +It is important that features don't get stuck in one stage. They should be revisited and moved to the next stage once they meet the graduation criteria listed in the KEP. A feature should stay at one stage for at least one release before being promoted. #### Provide implementation -If an experimental feature is found ready for graduation to the stable stage, open a Pull Request (PR) with the following changes. -- Add robust e2e tests if not already provided. -- Add a new stable feature flag identical to the experimental feature flag but without the `--experimental` prefix. -- Deprecate the experimental feature following the [feature deprecation policy](#Deprecating-a-feature). -- Implementation must ensure that both the graduated and deprecated experimental feature flags work as expected. Note that both these flags will co-exist for the timeframe described in the feature deprecation policy. -- Enable the graduated feature by default if needed. + +If a feature is found ready for graduation to the next stage, open a Pull Request (PR) with the following changes. +- Update the feature `PreRelease` stage in `server/features/etcd_features.go`. +- Update the status in the original KEP issue. At least two maintainers must approve the work. Patch releases should not be considered for graduation. ### Deprecating a feature -#### Experimental -An experimental feature deprecates when it graduates to the stable stage. -- Add a deprecation message in the documentation of the experimental feature with a recommendation to use a related stable feature. e.g. `DEPRECATED. Use instead.` -- Add a `deprecated` label in the issue that was initially used to enable the experimental feature. +#### Alpha +Alpha features can be removed without going through the deprecation process. +- Remove the feature gate in `server/features/etcd_features.go`, and clean up all relevant code. +- Close the original KEP issue with reasons to drop the feature. + +#### Beta and GA +As the project evolves, a Beta/GA feature may sometimes need to be deprecated and removed. Such a situation should be handled using the steps below: -#### Stable -As the project evolves, a stable feature may sometimes need to be deprecated and removed. Such a situation should be handled using the steps below: -- Create an issue for tracking purposes. -- Add a deprecation message in the feature usage documentation before a planned release for feature deprecation. e.g. `To be deprecated in .`. If a new feature replaces the `To be deprecated` feature, then also provide a message saying so. e.g. `Use instead.`. -- Deprecate the feature in the planned release with a message as part of the feature usage documentation. e.g. `DEPRECATED`. If a new feature replaces the deprecated feature, then also provide a message saying so. e.g. `DEPRECATED. Use instead.`. -- Add a `deprecated` label in the related issue. +- A Beta/GA feature can only be deprecated after at least 2 minor or major releases. +- Update original KEP issue if it has not been closed or create a new etcd issue with reasons and steps to deprecate the feature. +- Add the feature deprecation documentation in the release notes and feature gates documentation of the next minor/major release. +- In the next minor/major release, set the feature gate to `{Default: false, PreRelease: featuregate.Deprecated, LockedToDefault: false}` in `server/features/etcd_features.go`. Deprecated feature gates must respond with a warning when used. + - If the feature has GAed, and the original gated codes has been cleaned up, add the disablement codes back with the feature gate. +- In the minor/major release after the next, set the feature gate to `{Default: false, PreRelease: featuregate.Deprecated, LockedToDefault: true}` in `server/features/etcd_features.go`, and start cleaning the code. -Remove the deprecated feature in the following release. Close any related issue(s). At least two maintainers must approve the work. Patch releases should not be considered for deprecation. +At least two maintainers must approve the work. Patch releases should not be considered for deprecation. From 7199dde127a0ac7fc65de6327a69d90d2498edee Mon Sep 17 00:00:00 2001 From: joshjms Date: Thu, 20 Mar 2025 00:14:49 +0800 Subject: [PATCH 0062/1068] refactor: split test_lib.sh into test_utils.sh for basic functionalities and test_lib.sh Signed-off-by: joshjms fix shell scripts Signed-off-by: joshjms --- scripts/test_lib.sh | 92 +------------------------------------------ scripts/test_utils.sh | 92 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 90 deletions(-) create mode 100644 scripts/test_utils.sh diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index e3fe2de59a62..651e20f9a8d2 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -2,6 +2,8 @@ set -euo pipefail +source ./scripts/test_utils.sh + ROOT_MODULE="go.etcd.io/etcd" if [[ "$(go list)" != "${ROOT_MODULE}/v3" ]]; then @@ -15,96 +17,6 @@ function set_root_dir { set_root_dir -#### Convenient IO methods ##### - -COLOR_RED='\033[0;31m' -COLOR_ORANGE='\033[0;33m' -COLOR_GREEN='\033[0;32m' -COLOR_LIGHTCYAN='\033[0;36m' -COLOR_BLUE='\033[0;94m' -COLOR_MAGENTA='\033[95m' -COLOR_BOLD='\033[1m' -COLOR_NONE='\033[0m' # No Color - - -function log_error { - >&2 echo -n -e "${COLOR_BOLD}${COLOR_RED}" - >&2 echo "$@" - >&2 echo -n -e "${COLOR_NONE}" -} - -function log_warning { - >&2 echo -n -e "${COLOR_ORANGE}" - >&2 echo "$@" - >&2 echo -n -e "${COLOR_NONE}" -} - -function log_callout { - >&2 echo -n -e "${COLOR_LIGHTCYAN}" - >&2 echo "$@" - >&2 echo -n -e "${COLOR_NONE}" -} - -function log_cmd { - >&2 echo -n -e "${COLOR_BLUE}" - >&2 echo "$@" - >&2 echo -n -e "${COLOR_NONE}" -} - -function log_success { - >&2 echo -n -e "${COLOR_GREEN}" - >&2 echo "$@" - >&2 echo -n -e "${COLOR_NONE}" -} - -function log_info { - >&2 echo -n -e "${COLOR_NONE}" - >&2 echo "$@" - >&2 echo -n -e "${COLOR_NONE}" -} - -# From http://stackoverflow.com/a/12498485 -function relativePath { - # both $1 and $2 are absolute paths beginning with / - # returns relative path to $2 from $1 - local source=$1 - local target=$2 - - local commonPart=$source - local result="" - - while [[ "${target#"$commonPart"}" == "${target}" ]]; do - # no match, means that candidate common part is not correct - # go up one level (reduce common part) - commonPart="$(dirname "$commonPart")" - # and record that we went back, with correct / handling - if [[ -z $result ]]; then - result=".." - else - result="../$result" - fi - done - - if [[ $commonPart == "/" ]]; then - # special case for root (no common path) - result="$result/" - fi - - # since we now have identified the common part, - # compute the non-common part - local forwardPart="${target#"$commonPart"}" - - # and now stick all parts together - if [[ -n $result ]] && [[ -n $forwardPart ]]; then - result="$result$forwardPart" - elif [[ -n $forwardPart ]]; then - # extra slash removal - result="${forwardPart:1}" - fi - - echo "$result" -} - #### Discovery of files/packages within a go module ##### # go_srcs_in_module diff --git a/scripts/test_utils.sh b/scripts/test_utils.sh new file mode 100644 index 000000000000..5925fc7a09ea --- /dev/null +++ b/scripts/test_utils.sh @@ -0,0 +1,92 @@ +#!/usr/bin/env bash +set -euo pipefail + +#### Convenient IO methods ##### + +export COLOR_RED='\033[0;31m' +export COLOR_ORANGE='\033[0;33m' +export COLOR_GREEN='\033[0;32m' +export COLOR_LIGHTCYAN='\033[0;36m' +export COLOR_BLUE='\033[0;94m' +export COLOR_BOLD='\033[1m' +export COLOR_MAGENTA='\033[95m' +export COLOR_NONE='\033[0m' # No Color + + +function log_error { + >&2 echo -n -e "${COLOR_BOLD}${COLOR_RED}" + >&2 echo "$@" + >&2 echo -n -e "${COLOR_NONE}" +} + +function log_warning { + >&2 echo -n -e "${COLOR_ORANGE}" + >&2 echo "$@" + >&2 echo -n -e "${COLOR_NONE}" +} + +function log_callout { + >&2 echo -n -e "${COLOR_LIGHTCYAN}" + >&2 echo "$@" + >&2 echo -n -e "${COLOR_NONE}" +} + +function log_cmd { + >&2 echo -n -e "${COLOR_BLUE}" + >&2 echo "$@" + >&2 echo -n -e "${COLOR_NONE}" +} + +function log_success { + >&2 echo -n -e "${COLOR_GREEN}" + >&2 echo "$@" + >&2 echo -n -e "${COLOR_NONE}" +} + +function log_info { + >&2 echo -n -e "${COLOR_NONE}" + >&2 echo "$@" + >&2 echo -n -e "${COLOR_NONE}" +} + +# From http://stackoverflow.com/a/12498485 +function relativePath { + # both $1 and $2 are absolute paths beginning with / + # returns relative path to $2 from $1 + local source=$1 + local target=$2 + + local commonPart=$source + local result="" + + while [[ "${target#"$commonPart"}" == "${target}" ]]; do + # no match, means that candidate common part is not correct + # go up one level (reduce common part) + commonPart="$(dirname "$commonPart")" + # and record that we went back, with correct / handling + if [[ -z $result ]]; then + result=".." + else + result="../$result" + fi + done + + if [[ $commonPart == "/" ]]; then + # special case for root (no common path) + result="$result/" + fi + + # since we now have identified the common part, + # compute the non-common part + local forwardPart="${target#"$commonPart"}" + + # and now stick all parts together + if [[ -n $result ]] && [[ -n $forwardPart ]]; then + result="$result$forwardPart" + elif [[ -n $forwardPart ]]; then + # extra slash removal + result="${forwardPart:1}" + fi + + echo "$result" +} From 50e9f56876fd74a6acde126cbd7efbdaf1cacd15 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 21 Mar 2025 17:09:02 +0000 Subject: [PATCH 0063/1068] minor refactor DowngradeUpgradeMembersByID to not block on waiting for member to be ready Signed-off-by: Benjamin Wang --- tests/framework/e2e/downgrade.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tests/framework/e2e/downgrade.go b/tests/framework/e2e/downgrade.go index 1ccdcc765fdd..432a422f0431 100644 --- a/tests/framework/e2e/downgrade.go +++ b/tests/framework/e2e/downgrade.go @@ -25,6 +25,7 @@ import ( "github.com/coreos/go-semver/semver" "github.com/stretchr/testify/require" "go.uber.org/zap" + "golang.org/x/sync/errgroup" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/version" @@ -145,6 +146,8 @@ func DowngradeUpgradeMembersByID(t *testing.T, lg *zap.Logger, clus *EtcdProcess opString = "downgrading" newExecPath = BinPath.EtcdLastRelease } + + g := new(errgroup.Group) for _, memberID := range membersToChange { member := clus.Procs[memberID] if member.Config().ExecPath == newExecPath { @@ -156,10 +159,15 @@ func DowngradeUpgradeMembersByID(t *testing.T, lg *zap.Logger, clus *EtcdProcess } member.Config().ExecPath = newExecPath lg.Info("Restarting member", zap.String("member", member.Config().Name)) - err := member.Start(t.Context()) - if err != nil { - return err - } + // We shouldn't block on waiting for the member to be ready, + // otherwise it will be blocked forever if other members are + // not started yet. + g.Go(func() error { + return member.Start(t.Context()) + }) + } + if err := g.Wait(); err != nil { + return err } t.Log("Waiting health interval to make sure the leader propagates version to new processes") From dc2ac0e95b040b97eb1748e38bbacfcd9421465e Mon Sep 17 00:00:00 2001 From: joshjms Date: Thu, 20 Mar 2025 00:17:02 +0800 Subject: [PATCH 0064/1068] source test_utils.sh Signed-off-by: joshjms fix: update comments Signed-off-by: joshjms --- scripts/markdown_diff_lint.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/markdown_diff_lint.sh b/scripts/markdown_diff_lint.sh index d864d3e7e1fc..371ee7a0b5ea 100755 --- a/scripts/markdown_diff_lint.sh +++ b/scripts/markdown_diff_lint.sh @@ -3,10 +3,10 @@ # Usage: ./markdown_lint.sh -# We source ./scripts/test_lib.sh, it sets the log functions and color variables. -source ./scripts/test_lib.sh +# We source ./scripts/test_utils.sh, it sets the log functions and color variables. +source ./scripts/test_utils.sh -# When we source ./scripts/test_lib.sh, it has the line set -u which treats unset variables as errors. +# When we source ./scripts/test_utils.sh, it has the line set -u which treats unset variables as errors. # We need to unset the variable to avoid the error. set +u -eo pipefail From 7bb74c190ed34088811cc455d73c82fd46f91155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fa=C3=A7=20Eldenk?= Date: Tue, 11 Mar 2025 09:57:02 +0000 Subject: [PATCH 0065/1068] development: fix 'make validate' errors in OSX MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently local development workflow suggests running 'make verify' to verify all checks pass before comitting. However, currently this check fails in the main branch. Updated "scripts/test.sh" to download tools "crawford/marker" and "koalaman/shellcheck" for the host OS and architecture. Previously ARM MacOS devices were having errors while running make verify because downloaded version of shellcheck was for linux x86_64 architecture. Signed-off-by: Doğaç Eldenk --- scripts/test.sh | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index 0f2364db61f5..8419f5bf5d44 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -67,6 +67,18 @@ if [ -z "${GOARCH:-}" ]; then GOARCH=$(go env GOARCH); fi +if [ -z "${OS:-}" ]; then + OS=$(uname -s | tr '[:upper:]' '[:lower:]') +fi + +if [ -z "${ARCH:-}" ]; then + ARCH=$(uname -m) + + if [ "$ARCH" = "arm64" ]; then + ARCH="aarch64" + fi +fi + # determine whether target supports race detection if [ -z "${RACE:-}" ] ; then if [ "$GOARCH" == "amd64" ] || [ "$GOARCH" == "arm64" ]; then @@ -331,7 +343,7 @@ function shellcheck_pass { SHELLCHECK=shellcheck if ! tool_exists "shellcheck" "https://github.com/koalaman/shellcheck#installing"; then log_callout "Installing shellcheck $SHELLCHECK_VERSION" - wget -qO- "https://github.com/koalaman/shellcheck/releases/download/${SHELLCHECK_VERSION}/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" | tar -xJv -C /tmp/ --strip-components=1 + wget -qO- "https://github.com/koalaman/shellcheck/releases/download/${SHELLCHECK_VERSION}/shellcheck-${SHELLCHECK_VERSION}.${OS}.${ARCH}.tar.xz" | tar -xJv -C /tmp/ --strip-components=1 mkdir -p ./bin mv /tmp/shellcheck ./bin/ SHELLCHECK=./bin/shellcheck @@ -356,7 +368,14 @@ function markdown_marker_pass { # TODO: check other markdown files when marker handles headers with '[]' if ! tool_exists "$marker" "https://crates.io/crates/marker"; then log_callout "Installing markdown marker $MARKDOWN_MARKER_VERSION" - wget -qO- "https://github.com/crawford/marker/releases/download/${MARKDOWN_MARKER_VERSION}/marker-${MARKDOWN_MARKER_VERSION}-x86_64-unknown-linux-musl.tar.gz" | tar -xzv -C /tmp/ --strip-components=1 >/dev/null + MARKER_OS=$OS + if [ "$OS" = "darwin" ]; then + MARKER_OS="apple-darwin" + elif [ "$OS" = "linux" ]; then + MARKER_OS="unknown-linux-musl" + fi + + wget -qO- "https://github.com/crawford/marker/releases/download/${MARKDOWN_MARKER_VERSION}/marker-${MARKDOWN_MARKER_VERSION}-${ARCH}-${MARKER_OS}.tar.gz" | tar -xzv -C /tmp/ --strip-components=1 >/dev/null mkdir -p ./bin mv /tmp/marker ./bin/ marker=./bin/marker From 4f4d357511d88f0668e02ba7bd3278afde3dd46c Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 24 Mar 2025 14:45:09 +0100 Subject: [PATCH 0066/1068] Patch the return time with MaxInt64 in robustness test Reference: - https://github.com/etcd-io/etcd/issues/19579 Signed-off-by: Chun-Hung Tseng Co-authored-by: Marek Siarkowicz --- tests/robustness/model/history.go | 36 ++++--------------- tests/robustness/validate/patch_history.go | 5 ++- .../robustness/validate/patch_history_test.go | 29 +++++++-------- 3 files changed, 25 insertions(+), 45 deletions(-) diff --git a/tests/robustness/model/history.go b/tests/robustness/model/history.go index fc224a8afffe..627ef0bf56db 100644 --- a/tests/robustness/model/history.go +++ b/tests/robustness/model/history.go @@ -16,6 +16,7 @@ package model import ( "fmt" + "math" "strings" "time" @@ -291,7 +292,7 @@ func (h *AppendableHistory) appendFailed(request EtcdRequest, start, end time.Du isRead := request.IsRead() if !isRead { // Failed writes can still be persisted, setting -1 for now as don't know when request has took effect. - op.Return = -1 + op.Return = math.MaxInt64 // Operations of single client needs to be sequential. // As we don't know return time of failed operations, all new writes need to be done with new stream id. h.streamID = h.idProvider.NewStreamID() @@ -300,10 +301,11 @@ func (h *AppendableHistory) appendFailed(request EtcdRequest, start, end time.Du } func (h *AppendableHistory) append(op porcupine.Operation) { - if op.Return != -1 && op.Call >= op.Return { + if op.Return != math.MaxInt64 && op.Call >= op.Return { panic(fmt.Sprintf("Invalid operation, call(%d) >= return(%d)", op.Call, op.Return)) } - if len(h.operations) > 0 { + + if len(h.operations) > 0 && op.ClientId == h.operations[len(h.operations)-1].ClientId { prev := h.operations[len(h.operations)-1] if op.Call <= prev.Call { panic(fmt.Sprintf("Out of order append, new.call(%d) <= prev.call(%d)", op.Call, prev.Call)) @@ -488,34 +490,8 @@ func (h History) Len() int { func (h History) Operations() []porcupine.Operation { operations := make([]porcupine.Operation, 0, len(h.operations)) - maxTime := h.lastObservedTime() - for _, op := range h.operations { - // Failed requests don't have a known return time. - if op.Return == -1 { - // Simulate Infinity by using last observed time. - op.Return = maxTime + time.Second.Nanoseconds() - } - operations = append(operations, op) - } - return operations -} -func (h History) lastObservedTime() int64 { - var maxTime int64 - for _, op := range h.operations { - if op.Return == -1 { - // Collect call time from failed operations - if op.Call > maxTime { - maxTime = op.Call - } - } else { - // Collect return time from successful operations - if op.Return > maxTime { - maxTime = op.Return - } - } - } - return maxTime + return append(operations, h.operations...) } func (h History) MaxRevision() int64 { diff --git a/tests/robustness/validate/patch_history.go b/tests/robustness/validate/patch_history.go index b4f6787db958..218413cd8357 100644 --- a/tests/robustness/validate/patch_history.go +++ b/tests/robustness/validate/patch_history.go @@ -16,6 +16,7 @@ package validate import ( "fmt" + "math" "github.com/anishathalye/porcupine" @@ -214,7 +215,9 @@ func uniquePutReturnTime(allOperations []porcupine.Operation, reports []report.C request := persistedRequests[i] switch request.Type { case model.Txn: - lastReturnTime-- + if lastReturnTime != math.MaxInt64 { + lastReturnTime-- + } for _, op := range request.Txn.OperationsOnSuccess { if op.Type != model.PutOperation { continue diff --git a/tests/robustness/validate/patch_history_test.go b/tests/robustness/validate/patch_history_test.go index b5611d602373..9c1f8106b6bb 100644 --- a/tests/robustness/validate/patch_history_test.go +++ b/tests/robustness/validate/patch_history_test.go @@ -17,6 +17,7 @@ package validate import ( "errors" + "math" "testing" "time" @@ -30,7 +31,7 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/report" ) -const infinite = 1000000000 +const infinite = math.MaxInt64 func TestPatchHistory(t *testing.T) { for _, tc := range []struct { @@ -70,7 +71,7 @@ func TestPatchHistory(t *testing.T) { putRequest("key", "value"), }, expectedRemainingOperations: []porcupine.Operation{ - {Return: infinite + 99, Output: model.MaybeEtcdResponse{Persisted: true}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Persisted: true}}, }, }, { @@ -113,7 +114,7 @@ func TestPatchHistory(t *testing.T) { }, watchOperations: watchResponse(3, putEvent("key", "value", 2), putEvent("key", "value", 3)), expectedRemainingOperations: []porcupine.Operation{ - {Return: 1000000004, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, {Return: 4, Output: putResponse(model.EtcdOperationResult{})}, }, }, @@ -152,7 +153,7 @@ func TestPatchHistory(t *testing.T) { putRequestWithLease("key", "value", 123), }, expectedRemainingOperations: []porcupine.Operation{ - {Return: infinite + 99, Output: model.MaybeEtcdResponse{Persisted: true}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Persisted: true}}, }, }, { @@ -195,7 +196,7 @@ func TestPatchHistory(t *testing.T) { }, watchOperations: watchResponse(3, putEvent("key", "value", 2), putEvent("key", "value", 3)), expectedRemainingOperations: []porcupine.Operation{ - {Return: 1000000004, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, {Return: 4, Output: putResponse(model.EtcdOperationResult{})}, }, }, @@ -233,7 +234,7 @@ func TestPatchHistory(t *testing.T) { }, watchOperations: watchResponse(3, deleteEvent("key", 2)), expectedRemainingOperations: []porcupine.Operation{ - {Return: infinite + 400, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, {Return: 400, Output: putResponse(model.EtcdOperationResult{})}, }, }, @@ -260,7 +261,7 @@ func TestPatchHistory(t *testing.T) { putRequest("key", "value"), }, expectedRemainingOperations: []porcupine.Operation{ - {Return: infinite + 99, Output: model.MaybeEtcdResponse{Persisted: true}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Persisted: true}}, }, }, { @@ -269,7 +270,7 @@ func TestPatchHistory(t *testing.T) { h.AppendTxn(nil, []clientv3.Op{clientv3.OpDelete("key")}, []clientv3.Op{}, 100, infinite, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{ - {Return: infinite + 100, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, }, }, { @@ -287,7 +288,7 @@ func TestPatchHistory(t *testing.T) { h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value")}, []clientv3.Op{clientv3.OpDelete("key")}, 100, infinite, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{ - {Return: infinite + 100, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, }, }, { @@ -296,7 +297,7 @@ func TestPatchHistory(t *testing.T) { h.AppendTxn(nil, []clientv3.Op{clientv3.OpDelete("key")}, []clientv3.Op{clientv3.OpPut("key", "value")}, 100, infinite, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{ - {Return: infinite + 100, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, }, }, { @@ -315,7 +316,7 @@ func TestPatchHistory(t *testing.T) { putRequest("key", "value"), }, expectedRemainingOperations: []porcupine.Operation{ - {Return: infinite + 99, Output: model.MaybeEtcdResponse{Persisted: true}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Persisted: true}}, }, }, { @@ -347,7 +348,7 @@ func TestPatchHistory(t *testing.T) { }, expectedRemainingOperations: []porcupine.Operation{ {Return: 200, Output: putResponse(model.EtcdOperationResult{})}, - {Return: infinite + 600, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, {Return: 600, Output: putResponse(model.EtcdOperationResult{})}, }, }, @@ -366,7 +367,7 @@ func TestPatchHistory(t *testing.T) { expectedRemainingOperations: []porcupine.Operation{ {Return: 200, Output: putResponse(model.EtcdOperationResult{})}, // TODO: We can infer that failed operation finished before last operation matching following. - {Return: infinite + 598, Output: model.MaybeEtcdResponse{Persisted: true}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Persisted: true}}, {Return: 600, Output: putResponse(model.EtcdOperationResult{})}, }, }, @@ -376,7 +377,7 @@ func TestPatchHistory(t *testing.T) { h.AppendTxn(nil, []clientv3.Op{}, []clientv3.Op{clientv3.OpDelete("key")}, 100, infinite, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{ - {Return: infinite + 100, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, }, }, { From 2403f734abaccd45e82d722301259dd62f21614d Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 26 Mar 2025 15:25:30 -0700 Subject: [PATCH 0067/1068] codecov: set commit sha for merges This is required to upload a Codecov report in a Prow post submit job. Signed-off-by: Ivan Valdes --- scripts/codecov_upload.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/codecov_upload.sh b/scripts/codecov_upload.sh index da718775a1f3..7dbad265b92c 100755 --- a/scripts/codecov_upload.sh +++ b/scripts/codecov_upload.sh @@ -10,7 +10,7 @@ curl -sf -o ./bin/codecov.sh https://codecov.io/bash bash ./bin/codecov.sh -f "${COVERDIR}/all.coverprofile" \ -cF all \ - -C "${PULL_PULL_SHA}" \ + -C "${PULL_PULL_SHA:-${PULL_BASE_SHA}}" \ -r "${REPO_OWNER}/${REPO_NAME}" \ -P "${PULL_NUMBER}" \ -b "${BUILD_ID}" \ From df796c6a8e5a10089bf951fa7068e0b3fd0e316e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 18:39:28 +0000 Subject: [PATCH 0068/1068] build(deps): bump github/codeql-action from 3.28.11 to 3.28.13 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.11 to 3.28.13. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/6bb031afdd8eb862ea3fc1848194185e076637e5...1b549b9259bda1cb5ddde3b41741a82a2d15a841) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index d01f0c1a9a8c..c33ce8606c1b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 + uses: github/codeql-action/init@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 + uses: github/codeql-action/autobuild@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 + uses: github/codeql-action/analyze@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 557a85229c1c..bf60af2c0c5f 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 + uses: github/codeql-action/upload-sarif@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 with: sarif_file: results.sarif From 9149b8bb6b58eb203dc483fe2ce61bea20f04597 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 26 Mar 2025 10:18:08 +0100 Subject: [PATCH 0069/1068] [Robustness test] improve append history checks Reference: - https://github.com/etcd-io/etcd/pull/19651#discussion_r2011549432 Signed-off-by: Chun-Hung Tseng --- tests/robustness/model/history.go | 12 +- tests/robustness/model/history_test.go | 245 +++++++++++++++++++++++++ 2 files changed, 253 insertions(+), 4 deletions(-) create mode 100644 tests/robustness/model/history_test.go diff --git a/tests/robustness/model/history.go b/tests/robustness/model/history.go index 627ef0bf56db..b03fd6165ae6 100644 --- a/tests/robustness/model/history.go +++ b/tests/robustness/model/history.go @@ -42,14 +42,17 @@ type AppendableHistory struct { streamID int // If needed a new streamId is requested from idProvider. idProvider identity.Provider + // lastOperation holds the last operation of each stream. + lastOperation map[int]*porcupine.Operation History } func NewAppendableHistory(ids identity.Provider) *AppendableHistory { return &AppendableHistory{ - streamID: ids.NewStreamID(), - idProvider: ids, + streamID: ids.NewStreamID(), + idProvider: ids, + lastOperation: make(map[int]*porcupine.Operation), History: History{ operations: []porcupine.Operation{}, }, @@ -305,8 +308,7 @@ func (h *AppendableHistory) append(op porcupine.Operation) { panic(fmt.Sprintf("Invalid operation, call(%d) >= return(%d)", op.Call, op.Return)) } - if len(h.operations) > 0 && op.ClientId == h.operations[len(h.operations)-1].ClientId { - prev := h.operations[len(h.operations)-1] + if prev, ok := h.lastOperation[op.ClientId]; ok { if op.Call <= prev.Call { panic(fmt.Sprintf("Out of order append, new.call(%d) <= prev.call(%d)", op.Call, prev.Call)) } @@ -314,6 +316,8 @@ func (h *AppendableHistory) append(op porcupine.Operation) { panic(fmt.Sprintf("Overlapping operations, new.call(%d) <= prev.return(%d)", op.Call, prev.Return)) } } + h.lastOperation[op.ClientId] = &op + h.operations = append(h.operations, op) } diff --git a/tests/robustness/model/history_test.go b/tests/robustness/model/history_test.go new file mode 100644 index 000000000000..9b6d22f31553 --- /dev/null +++ b/tests/robustness/model/history_test.go @@ -0,0 +1,245 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package model + +import ( + "testing" + + "github.com/anishathalye/porcupine" + "github.com/stretchr/testify/assert" + + "go.etcd.io/etcd/tests/v3/robustness/identity" +) + +func TestHistoryAppendSuccess(t *testing.T) { + tcs := []struct { + name string + operations []porcupine.Operation + }{ + { + name: "append non-overlapping operations for the same clientId", + operations: []porcupine.Operation{ + { + ClientId: 1, + Input: nil, + Call: 100, + Output: nil, + Return: 200, + }, + { + ClientId: 2, + Input: nil, + Call: 1, + Output: nil, + Return: 2, + }, + }, + }, + { + name: "append overlapping operations in different ClientId", + operations: []porcupine.Operation{ + { + ClientId: 1, + Input: nil, + Call: 1, + Output: nil, + Return: 100, + }, + { + ClientId: 2, + Input: nil, + Call: 1, + Output: nil, + Return: 2, + }, + { + ClientId: 3, + Input: nil, + Call: 10, + Output: nil, + Return: 20, + }, + { + ClientId: 1, + Input: nil, + Call: 101, + Output: nil, + Return: 200, + }, + { + ClientId: 2, + Input: nil, + Call: 3, + Output: nil, + Return: 4, + }, + { + ClientId: 3, + Input: nil, + Call: 30, + Output: nil, + Return: 40, + }, + }, + }, + } + + for _, tc := range tcs { + h := NewAppendableHistory(identity.NewIDProvider()) + + for _, operation := range tc.operations[:len(tc.operations)-1] { + h.append(operation) + } + } +} + +func TestHistoryAppendFailure(t *testing.T) { + tcs := []struct { + name string + operations []porcupine.Operation + expectError string + }{ + { + name: "append operation with call time > return time", + operations: []porcupine.Operation{ + { + ClientId: 1, + Input: nil, + Call: 2, + Output: nil, + Return: 1, + }, + }, + expectError: "Invalid operation, call(2) >= return(1)", + }, + { + name: "out of order append in the same ClientId", + operations: []porcupine.Operation{ + { + ClientId: 1, + Input: nil, + Call: 10, + Output: nil, + Return: 100, + }, + { + ClientId: 1, + Input: nil, + Call: 1, + Output: nil, + Return: 10, + }, + }, + expectError: "Out of order append, new.call(1) <= prev.call(10)", + }, + { + name: "out of order append in one of the ClientIds", + operations: []porcupine.Operation{ + { + ClientId: 1, + Input: nil, + Call: 10, + Output: nil, + Return: 100, + }, + { + ClientId: 1, + Input: nil, + Call: 101, + Output: nil, + Return: 200, + }, + { + ClientId: 2, + Input: nil, + Call: 10, + Output: nil, + Return: 100, + }, + { + ClientId: 2, + Input: nil, + Call: 1, + Output: nil, + Return: 10, + }, + }, + expectError: "Out of order append, new.call(1) <= prev.call(10)", + }, + { + name: "append overlapping operations in the same ClientId", + operations: []porcupine.Operation{ + { + ClientId: 1, + Input: nil, + Call: 1, + Output: nil, + Return: 100, + }, + { + ClientId: 1, + Input: nil, + Call: 10, + Output: nil, + Return: 20, + }, + }, + expectError: "Overlapping operations, new.call(10) <= prev.return(100)", + }, + { + name: "append overlapping operations in one of the ClientIds", + operations: []porcupine.Operation{ + { + ClientId: 1, + Input: nil, + Call: 1, + Output: nil, + Return: 100, + }, + { + ClientId: 1, + Input: nil, + Call: 101, + Output: nil, + Return: 200, + }, + { + ClientId: 2, + Input: nil, + Call: 1, + Output: nil, + Return: 100, + }, + { + ClientId: 2, + Input: nil, + Call: 10, + Output: nil, + Return: 20, + }, + }, + expectError: "Overlapping operations, new.call(10) <= prev.return(100)", + }, + } + + for _, tc := range tcs { + h := NewAppendableHistory(identity.NewIDProvider()) + + for _, operation := range tc.operations[:len(tc.operations)-1] { + h.append(operation) + } + assert.PanicsWithValue(t, tc.expectError, func() { h.append(tc.operations[len(tc.operations)-1]) }) + } +} From a4de9623cacb13f21e647e7431749f0aecf96ad7 Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Thu, 6 Feb 2025 08:44:57 +0100 Subject: [PATCH 0070/1068] chore: use testify instead of testing in tests/integration Signed-off-by: Matthieu MOREL --- .../clientv3/concurrency/election_test.go | 22 +-- .../clientv3/connectivity/black_hole_test.go | 5 +- .../clientv3/connectivity/dial_test.go | 8 +- .../connectivity/network_partition_test.go | 8 +- .../experimental/recipes/v3_barrier_test.go | 14 +- .../recipes/v3_double_barrier_test.go | 4 +- .../experimental/recipes/v3_lock_test.go | 34 ++-- .../experimental/recipes/v3_queue_test.go | 27 ++-- .../integration/clientv3/lease/lease_test.go | 113 ++++--------- .../clientv3/lease/leasing_test.go | 138 +++++----------- .../clientv3/naming/endpoints_test.go | 44 ++--- .../clientv3/naming/resolver_test.go | 12 +- .../clientv3/ordering_util_test.go | 4 +- .../clientv3/snapshot/v3_snapshot_test.go | 12 +- tests/integration/clientv3/user_test.go | 27 ++-- .../clientv3/watch_fragment_test.go | 23 +-- tests/integration/clientv3/watch_test.go | 152 ++++++------------ tests/integration/cluster_test.go | 73 +++------ tests/integration/member_test.go | 8 +- tests/integration/metrics_test.go | 32 +--- tests/integration/network_partition_test.go | 6 +- .../proxy/grpcproxy/cluster_test.go | 41 ++--- tests/integration/proxy/grpcproxy/kv_test.go | 8 +- .../proxy/grpcproxy/register_test.go | 17 +- tests/integration/revision_test.go | 4 +- tests/integration/snapshot/member_test.go | 12 +- .../integration/snapshot/v3_snapshot_test.go | 15 +- tests/integration/v2store/store_test.go | 10 +- tests/integration/v3_alarm_test.go | 23 +-- tests/integration/v3_auth_test.go | 24 +-- tests/integration/v3_election_test.go | 27 +--- tests/integration/v3_failover_test.go | 12 +- tests/integration/v3_grpc_test.go | 43 ++--- 33 files changed, 292 insertions(+), 710 deletions(-) diff --git a/tests/integration/clientv3/concurrency/election_test.go b/tests/integration/clientv3/concurrency/election_test.go index 951c6a91fbf1..b597e9130aed 100644 --- a/tests/integration/clientv3/concurrency/election_test.go +++ b/tests/integration/clientv3/concurrency/election_test.go @@ -21,6 +21,8 @@ import ( "testing" "time" + "github.com/stretchr/testify/require" + clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/concurrency" integration2 "go.etcd.io/etcd/tests/v3/framework/integration" @@ -49,16 +51,12 @@ func TestResumeElection(t *testing.T) { defer cancel() // become leader - if err = e.Campaign(ctx, "candidate1"); err != nil { - t.Fatalf("Campaign() returned non nil err: %s", err) - } + require.NoErrorf(t, e.Campaign(ctx, "candidate1"), "Campaign() returned non nil err") // get the leadership details of the current election var leader *clientv3.GetResponse leader, err = e.Leader(ctx) - if err != nil { - t.Fatalf("Leader() returned non nil err: %s", err) - } + require.NoErrorf(t, err, "Leader() returned non nil err") // Recreate the election e = concurrency.ResumeElection(s, prefix, @@ -86,19 +84,13 @@ func TestResumeElection(t *testing.T) { // put some random data to generate a change event, this put should be // ignored by Observe() because it is not under the election prefix. _, err = cli.Put(ctx, "foo", "bar") - if err != nil { - t.Fatalf("Put('foo') returned non nil err: %s", err) - } + require.NoErrorf(t, err, "Put('foo') returned non nil err") // resign as leader - if err := e.Resign(ctx); err != nil { - t.Fatalf("Resign() returned non nil err: %s", err) - } + require.NoErrorf(t, e.Resign(ctx), "Resign() returned non nil err") // elect a different candidate - if err := e.Campaign(ctx, "candidate2"); err != nil { - t.Fatalf("Campaign() returned non nil err: %s", err) - } + require.NoErrorf(t, e.Campaign(ctx, "candidate2"), "Campaign() returned non nil err") // wait for observed leader change resp := <-respChan diff --git a/tests/integration/clientv3/connectivity/black_hole_test.go b/tests/integration/clientv3/connectivity/black_hole_test.go index 00b7849ea565..a484447149c8 100644 --- a/tests/integration/clientv3/connectivity/black_hole_test.go +++ b/tests/integration/clientv3/connectivity/black_hole_test.go @@ -67,9 +67,8 @@ func TestBalancerUnderBlackholeKeepAliveWatch(t *testing.T) { defer cli.Close() wch := cli.Watch(context.Background(), "foo", clientv3.WithCreatedNotify()) - if _, ok := <-wch; !ok { - t.Fatalf("watch failed on creation") - } + _, ok := <-wch + require.Truef(t, ok, "watch failed on creation") // endpoint can switch to eps[1] when it detects the failure of eps[0] cli.SetEndpoints(eps...) diff --git a/tests/integration/clientv3/connectivity/dial_test.go b/tests/integration/clientv3/connectivity/dial_test.go index 54556d0f8ddd..80a3cb90f7ab 100644 --- a/tests/integration/clientv3/connectivity/dial_test.go +++ b/tests/integration/clientv3/connectivity/dial_test.go @@ -63,9 +63,7 @@ func TestDialTLSExpired(t *testing.T) { DialOptions: []grpc.DialOption{grpc.WithBlock()}, TLS: tls, }) - if !clientv3test.IsClientTimeout(err) { - t.Fatalf("expected dial timeout error, got %v", err) - } + require.Truef(t, clientv3test.IsClientTimeout(err), "expected dial timeout error") } // TestDialTLSNoConfig ensures the client fails to dial / times out @@ -85,9 +83,7 @@ func TestDialTLSNoConfig(t *testing.T) { c.Close() } }() - if !clientv3test.IsClientTimeout(err) { - t.Fatalf("expected dial timeout error, got %v", err) - } + require.Truef(t, clientv3test.IsClientTimeout(err), "expected dial timeout error") } // TestDialSetEndpointsBeforeFail ensures SetEndpoints can replace unavailable diff --git a/tests/integration/clientv3/connectivity/network_partition_test.go b/tests/integration/clientv3/connectivity/network_partition_test.go index 557cdb0b31e8..eb14534e92da 100644 --- a/tests/integration/clientv3/connectivity/network_partition_test.go +++ b/tests/integration/clientv3/connectivity/network_partition_test.go @@ -260,9 +260,7 @@ func testBalancerUnderNetworkPartitionWatch(t *testing.T, isolateLeader bool) { if len(ev.Events) != 0 { t.Fatal("expected no event") } - if err = ev.Err(); !errors.Is(err, rpctypes.ErrNoLeader) { - t.Fatalf("expected %v, got %v", rpctypes.ErrNoLeader, err) - } + require.ErrorIs(t, ev.Err(), rpctypes.ErrNoLeader) case <-time.After(integration2.RequestWaitTimeout): // enough time to detect leader lost t.Fatal("took too long to detect leader lost") } @@ -302,9 +300,7 @@ func TestDropReadUnderNetworkPartition(t *testing.T) { ctx, cancel := context.WithTimeout(context.TODO(), 10*time.Second) _, err = kvc.Get(ctx, "a") cancel() - if !errors.Is(err, rpctypes.ErrLeaderChanged) { - t.Fatalf("expected %v, got %v", rpctypes.ErrLeaderChanged, err) - } + require.ErrorIsf(t, err, rpctypes.ErrLeaderChanged, "expected %v, got %v", rpctypes.ErrLeaderChanged, err) for i := 0; i < 5; i++ { ctx, cancel = context.WithTimeout(context.TODO(), 10*time.Second) diff --git a/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go b/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go index b6dfef385a7a..1fefd906d526 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go @@ -19,6 +19,8 @@ import ( "testing" "time" + "github.com/stretchr/testify/require" + clientv3 "go.etcd.io/etcd/client/v3" recipe "go.etcd.io/etcd/client/v3/experimental/recipes" integration2 "go.etcd.io/etcd/tests/v3/framework/integration" @@ -40,12 +42,8 @@ func TestBarrierMultiNode(t *testing.T) { func testBarrier(t *testing.T, waiters int, chooseClient func() *clientv3.Client) { b := recipe.NewBarrier(chooseClient(), "test-barrier") - if err := b.Hold(); err != nil { - t.Fatalf("could not hold barrier (%v)", err) - } - if err := b.Hold(); err == nil { - t.Fatalf("able to double-hold barrier") - } + require.NoErrorf(t, b.Hold(), "could not hold barrier") + require.Errorf(t, b.Hold(), "able to double-hold barrier") // put a random key to move the revision forward if _, err := chooseClient().Put(context.Background(), "x", ""); err != nil { @@ -75,9 +73,7 @@ func testBarrier(t *testing.T, waiters int, chooseClient func() *clientv3.Client default: } - if err := b.Release(); err != nil { - t.Fatalf("could not release barrier (%v)", err) - } + require.NoErrorf(t, b.Release(), "could not release barrier") timerC := time.After(time.Duration(waiters*100) * time.Millisecond) for i := 0; i < waiters; i++ { diff --git a/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go b/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go index d8f610e66c50..9dcc5530cf0b 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go @@ -73,9 +73,7 @@ func TestDoubleBarrier(t *testing.T) { default: } - if err := b.Enter(); err != nil { - t.Fatalf("could not enter last barrier (%v)", err) - } + require.NoErrorf(t, b.Enter(), "could not enter last barrier") timerC := time.After(time.Duration(waiters*100) * time.Millisecond) for i := 0; i < waiters-1; i++ { diff --git a/tests/integration/clientv3/experimental/recipes/v3_lock_test.go b/tests/integration/clientv3/experimental/recipes/v3_lock_test.go index 4a802f72cb47..50b571b15bcc 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_lock_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_lock_test.go @@ -93,9 +93,7 @@ func testMutexLock(t *testing.T, waiters int, chooseClient func() *clientv3.Clie t.Fatalf("lock %d followers did not wait", i) default: } - if err := m.Unlock(context.TODO()); err != nil { - t.Fatalf("could not release lock (%v)", err) - } + require.NoErrorf(t, m.Unlock(context.TODO()), "could not release lock") } } wg.Wait() @@ -233,9 +231,7 @@ func TestMutexWaitsOnCurrentHolder(t *testing.T) { t.Fatal("failed to receive watch response") } } - if putCounts != 2 { - t.Fatalf("expect 2 put events, but got %v", putCounts) - } + require.Equalf(t, 2, putCounts, "expect 2 put events, but got %v", putCounts) newOwnerSession, err := concurrency.NewSession(cli) if err != nil { @@ -250,12 +246,9 @@ func TestMutexWaitsOnCurrentHolder(t *testing.T) { select { case wrp := <-wch: - if len(wrp.Events) != 1 { - t.Fatalf("expect a event, but got %v events", len(wrp.Events)) - } - if e := wrp.Events[0]; e.Type != mvccpb.PUT { - t.Fatalf("expect a put event on prefix test-mutex, but got event type %v", e.Type) - } + require.Lenf(t, wrp.Events, 1, "expect a event, but got %v events", len(wrp.Events)) + e := wrp.Events[0] + require.Equalf(t, mvccpb.PUT, e.Type, "expect a put event on prefix test-mutex, but got event type %v", e.Type) case <-time.After(time.Second): t.Fatalf("failed to receive a watch response") } @@ -266,12 +259,9 @@ func TestMutexWaitsOnCurrentHolder(t *testing.T) { // ensures the deletion of victim waiter from server side. select { case wrp := <-wch: - if len(wrp.Events) != 1 { - t.Fatalf("expect a event, but got %v events", len(wrp.Events)) - } - if e := wrp.Events[0]; e.Type != mvccpb.DELETE { - t.Fatalf("expect a delete event on prefix test-mutex, but got event type %v", e.Type) - } + require.Lenf(t, wrp.Events, 1, "expect a event, but got %v events", len(wrp.Events)) + e := wrp.Events[0] + require.Equalf(t, mvccpb.DELETE, e.Type, "expect a delete event on prefix test-mutex, but got event type %v", e.Type) case <-time.After(time.Second): t.Fatal("failed to receive a watch response") } @@ -357,18 +347,14 @@ func testRWMutex(t *testing.T, waiters int, chooseClient func() *clientv3.Client t.Fatalf("rlock %d readers did not wait", i) default: } - if err := wl.Unlock(); err != nil { - t.Fatalf("could not release lock (%v)", err) - } + require.NoErrorf(t, wl.Unlock(), "could not release lock") case rl := <-rlockedC: select { case <-wlockedC: t.Fatalf("rlock %d writers did not wait", i) default: } - if err := rl.RUnlock(); err != nil { - t.Fatalf("could not release rlock (%v)", err) - } + require.NoErrorf(t, rl.RUnlock(), "could not release rlock") } } } diff --git a/tests/integration/clientv3/experimental/recipes/v3_queue_test.go b/tests/integration/clientv3/experimental/recipes/v3_queue_test.go index 73ed5552fe2a..89172dfec20b 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_queue_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_queue_test.go @@ -20,6 +20,8 @@ import ( "sync/atomic" "testing" + "github.com/stretchr/testify/require" + recipe "go.etcd.io/etcd/client/v3/experimental/recipes" integration2 "go.etcd.io/etcd/tests/v3/framework/integration" ) @@ -57,12 +59,8 @@ func TestQueueOneReaderOneWriter(t *testing.T) { q := recipe.NewQueue(etcdc, "testq") for i := 0; i < 5; i++ { s, err := q.Dequeue() - if err != nil { - t.Fatalf("error dequeueing (%v)", err) - } - if s != fmt.Sprintf("%d", i) { - t.Fatalf("expected dequeue value %v, got %v", s, i) - } + require.NoErrorf(t, err, "error dequeueing (%v)", err) + require.Equalf(t, s, fmt.Sprintf("%d", i), "expected dequeue value %v, got %v", s, i) } } @@ -103,25 +101,18 @@ func TestPrQueueOneReaderOneWriter(t *testing.T) { for i := 0; i < 5; i++ { // [0, 2] priority for priority collision to test seq keys pr := uint16(rand.Intn(3)) - if err := q.Enqueue(fmt.Sprintf("%d", pr), pr); err != nil { - t.Fatalf("error enqueuing (%v)", err) - } + require.NoErrorf(t, q.Enqueue(fmt.Sprintf("%d", pr), pr), "error enqueuing") } // read back items; confirm priority order is respected lastPr := -1 for i := 0; i < 5; i++ { s, err := q.Dequeue() - if err != nil { - t.Fatalf("error dequeueing (%v)", err) - } + require.NoErrorf(t, err, "error dequeueing (%v)", err) curPr := 0 - if _, err := fmt.Sscanf(s, "%d", &curPr); err != nil { - t.Fatalf(`error parsing item "%s" (%v)`, s, err) - } - if lastPr > curPr { - t.Fatalf("expected priority %v > %v", curPr, lastPr) - } + _, err = fmt.Sscanf(s, "%d", &curPr) + require.NoErrorf(t, err, `error parsing item "%s" (%v)`, s, err) + require.LessOrEqualf(t, lastPr, curPr, "expected priority %v > %v", curPr, lastPr) } } diff --git a/tests/integration/clientv3/lease/lease_test.go b/tests/integration/clientv3/lease/lease_test.go index eaf4a75ff591..083d45a3cd99 100644 --- a/tests/integration/clientv3/lease/lease_test.go +++ b/tests/integration/clientv3/lease/lease_test.go @@ -41,9 +41,7 @@ func TestLeaseNotFoundError(t *testing.T) { kv := clus.RandClient() _, err := kv.Put(context.TODO(), "foo", "bar", clientv3.WithLease(clientv3.LeaseID(500))) - if !errors.Is(err, rpctypes.ErrLeaseNotFound) { - t.Fatalf("expected %v, got %v", rpctypes.ErrLeaseNotFound, err) - } + require.ErrorIsf(t, err, rpctypes.ErrLeaseNotFound, "expected %v, got %v", rpctypes.ErrLeaseNotFound, err) } func TestLeaseGrant(t *testing.T) { @@ -57,9 +55,7 @@ func TestLeaseGrant(t *testing.T) { kv := clus.RandClient() _, merr := lapi.Grant(context.Background(), clientv3.MaxLeaseTTL+1) - if !errors.Is(merr, rpctypes.ErrLeaseTTLTooLarge) { - t.Fatalf("err = %v, want %v", merr, rpctypes.ErrLeaseTTLTooLarge) - } + require.ErrorIsf(t, merr, rpctypes.ErrLeaseTTLTooLarge, "err = %v, want %v", merr, rpctypes.ErrLeaseTTLTooLarge) resp, err := lapi.Grant(context.Background(), 10) if err != nil { @@ -67,9 +63,7 @@ func TestLeaseGrant(t *testing.T) { } _, err = kv.Put(context.TODO(), "foo", "bar", clientv3.WithLease(resp.ID)) - if err != nil { - t.Fatalf("failed to create key with lease %v", err) - } + require.NoErrorf(t, err, "failed to create key with lease %v", err) } func TestLeaseRevoke(t *testing.T) { @@ -93,9 +87,7 @@ func TestLeaseRevoke(t *testing.T) { } _, err = kv.Put(context.TODO(), "foo", "bar", clientv3.WithLease(resp.ID)) - if !errors.Is(err, rpctypes.ErrLeaseNotFound) { - t.Fatalf("err = %v, want %v", err, rpctypes.ErrLeaseNotFound) - } + require.ErrorIsf(t, err, rpctypes.ErrLeaseNotFound, "err = %v, want %v", err, rpctypes.ErrLeaseNotFound) } func TestLeaseKeepAliveOnce(t *testing.T) { @@ -153,9 +145,7 @@ func TestLeaseKeepAlive(t *testing.T) { t.Errorf("chan is closed, want not closed") } - if kresp == nil { - t.Fatalf("unexpected null response") - } + require.NotNilf(t, kresp, "unexpected null response") if kresp.ID != resp.ID { t.Errorf("ID = %x, want %x", kresp.ID, resp.ID) @@ -341,9 +331,7 @@ func TestLeaseKeepAliveFullResponseQueue(t *testing.T) { // expect lease keepalive every 10-second lresp, err := lapi.Grant(context.Background(), 30) - if err != nil { - t.Fatalf("failed to create lease %v", err) - } + require.NoErrorf(t, err, "failed to create lease %v", err) id := lresp.ID old := clientv3.LeaseResponseChSize @@ -354,18 +342,14 @@ func TestLeaseKeepAliveFullResponseQueue(t *testing.T) { // never fetch from response queue, and let it become full _, err = lapi.KeepAlive(context.Background(), id) - if err != nil { - t.Fatalf("failed to keepalive lease %v", err) - } + require.NoErrorf(t, err, "failed to keepalive lease %v", err) // TTL should not be refreshed after 3 seconds // expect keepalive to be triggered after TTL/3 time.Sleep(3 * time.Second) tr, terr := lapi.TimeToLive(context.Background(), id) - if terr != nil { - t.Fatalf("failed to get lease information %v", terr) - } + require.NoErrorf(t, terr, "failed to get lease information %v", terr) if tr.TTL >= 29 { t.Errorf("unexpected kept-alive lease TTL %d", tr.TTL) } @@ -423,9 +407,7 @@ func TestLeaseRevokeNewAfterClose(t *testing.T) { case <-time.After(integration2.RequestWaitTimeout): t.Fatal("le.Revoke took too long") case errMsg := <-errMsgCh: - if errMsg != "" { - t.Fatalf("%v", errMsg) - } + require.Empty(t, errMsg) } } @@ -445,9 +427,7 @@ func TestLeaseKeepAliveCloseAfterDisconnectRevoke(t *testing.T) { rc, kerr := cli.KeepAlive(context.Background(), resp.ID) require.NoError(t, kerr) kresp := <-rc - if kresp.ID != resp.ID { - t.Fatalf("ID = %x, want %x", kresp.ID, resp.ID) - } + require.Equalf(t, kresp.ID, resp.ID, "ID = %x, want %x", kresp.ID, resp.ID) // keep client disconnected clus.Members[0].Stop(t) @@ -489,9 +469,7 @@ func TestLeaseKeepAliveInitTimeout(t *testing.T) { require.NoError(t, kerr) select { case ka, ok := <-rc: - if ok { - t.Fatalf("unexpected keepalive %v, expected closed channel", ka) - } + require.Falsef(t, ok, "unexpected keepalive %v, expected closed channel", ka) case <-time.After(10 * time.Second): t.Fatalf("keepalive channel did not close") } @@ -514,17 +492,14 @@ func TestLeaseKeepAliveTTLTimeout(t *testing.T) { require.NoError(t, err) rc, kerr := cli.KeepAlive(context.Background(), resp.ID) require.NoError(t, kerr) - if kresp := <-rc; kresp.ID != resp.ID { - t.Fatalf("ID = %x, want %x", kresp.ID, resp.ID) - } + kresp := <-rc + require.Equalf(t, kresp.ID, resp.ID, "ID = %x, want %x", kresp.ID, resp.ID) // keep client disconnected clus.Members[0].Stop(t) select { case ka, ok := <-rc: - if ok { - t.Fatalf("unexpected keepalive %v, expected closed channel", ka) - } + require.Falsef(t, ok, "unexpected keepalive %v, expected closed channel", ka) case <-time.After(10 * time.Second): t.Fatalf("keepalive channel did not close") } @@ -559,12 +534,8 @@ func TestLeaseTimeToLive(t *testing.T) { lresp, lerr := lapi.TimeToLive(context.Background(), resp.ID, clientv3.WithAttachedKeys()) require.NoError(t, lerr) - if lresp.ID != resp.ID { - t.Fatalf("leaseID expected %d, got %d", resp.ID, lresp.ID) - } - if lresp.GrantedTTL != int64(10) { - t.Fatalf("GrantedTTL expected %d, got %d", 10, lresp.GrantedTTL) - } + require.Equalf(t, lresp.ID, resp.ID, "leaseID expected %d, got %d", resp.ID, lresp.ID) + require.Equalf(t, int64(10), lresp.GrantedTTL, "GrantedTTL expected %d, got %d", 10, lresp.GrantedTTL) if lresp.TTL == 0 || lresp.TTL > lresp.GrantedTTL { t.Fatalf("unexpected TTL %d (granted %d)", lresp.TTL, lresp.GrantedTTL) } @@ -573,15 +544,11 @@ func TestLeaseTimeToLive(t *testing.T) { ks[i] = string(lresp.Keys[i]) } sort.Strings(ks) - if !reflect.DeepEqual(ks, keys) { - t.Fatalf("keys expected %v, got %v", keys, ks) - } + require.Truef(t, reflect.DeepEqual(ks, keys), "keys expected %v, got %v", keys, ks) lresp, lerr = lapi.TimeToLive(context.Background(), resp.ID) require.NoError(t, lerr) - if len(lresp.Keys) != 0 { - t.Fatalf("unexpected keys %+v", lresp.Keys) - } + require.Emptyf(t, lresp.Keys, "unexpected keys %+v", lresp.Keys) } func TestLeaseTimeToLiveLeaseNotFound(t *testing.T) { @@ -602,21 +569,11 @@ func TestLeaseTimeToLiveLeaseNotFound(t *testing.T) { lresp, err := cli.TimeToLive(context.Background(), resp.ID) // TimeToLive() should return a response with TTL=-1. - if err != nil { - t.Fatalf("expected err to be nil") - } - if lresp == nil { - t.Fatalf("expected lresp not to be nil") - } - if lresp.ResponseHeader == nil { - t.Fatalf("expected ResponseHeader not to be nil") - } - if lresp.ID != resp.ID { - t.Fatalf("expected Lease ID %v, but got %v", resp.ID, lresp.ID) - } - if lresp.TTL != -1 { - t.Fatalf("expected TTL %v, but got %v", lresp.TTL, lresp.TTL) - } + require.NoErrorf(t, err, "expected err to be nil") + require.NotNilf(t, lresp, "expected lresp not to be nil") + require.NotNilf(t, lresp.ResponseHeader, "expected ResponseHeader not to be nil") + require.Equalf(t, lresp.ID, resp.ID, "expected Lease ID %v, but got %v", resp.ID, lresp.ID) + require.Equalf(t, lresp.TTL, int64(-1), "expected TTL %v, but got %v", lresp.TTL, lresp.TTL) } func TestLeaseLeases(t *testing.T) { @@ -638,13 +595,9 @@ func TestLeaseLeases(t *testing.T) { resp, err := cli.Leases(context.Background()) require.NoError(t, err) - if len(resp.Leases) != 5 { - t.Fatalf("len(resp.Leases) expected 5, got %d", len(resp.Leases)) - } + require.Lenf(t, resp.Leases, 5, "len(resp.Leases) expected 5, got %d", len(resp.Leases)) for i := range resp.Leases { - if ids[i] != resp.Leases[i].ID { - t.Fatalf("#%d: lease ID expected %d, got %d", i, ids[i], resp.Leases[i].ID) - } + require.Equalf(t, ids[i], resp.Leases[i].ID, "#%d: lease ID expected %d, got %d", i, ids[i], resp.Leases[i].ID) } } @@ -686,9 +639,7 @@ func TestLeaseRenewLostQuorum(t *testing.T) { select { case _, ok := <-ka: - if !ok { - t.Fatalf("keepalive closed") - } + require.Truef(t, ok, "keepalive closed") case <-time.After(time.Duration(r.TTL) * time.Second): t.Fatalf("timed out waiting for keepalive") } @@ -710,9 +661,7 @@ func TestLeaseKeepAliveLoopExit(t *testing.T) { _, err = cli.KeepAlive(ctx, resp.ID) var keepAliveHaltedErr clientv3.ErrKeepAliveHalted - if !errors.As(err, &keepAliveHaltedErr) { - t.Fatalf("expected %T, got %v(%T)", clientv3.ErrKeepAliveHalted{}, err, err) - } + require.ErrorAsf(t, err, &keepAliveHaltedErr, "expected %T, got %v(%T)", clientv3.ErrKeepAliveHalted{}, err, err) } // TestV3LeaseFailureOverlap issues Grant and KeepAlive requests to a cluster @@ -813,17 +762,13 @@ func TestLeaseWithRequireLeader(t *testing.T) { select { case resp, ok := <-kaReqLeader: - if ok { - t.Fatalf("expected closed require leader, got response %+v", resp) - } + require.Falsef(t, ok, "expected closed require leader, got response %+v", resp) case <-time.After(5 * time.Second): t.Fatal("keepalive with require leader took too long to close") } select { case _, ok := <-kaWait: - if !ok { - t.Fatalf("got closed channel with no require leader, expected non-closed") - } + require.Truef(t, ok, "got closed channel with no require leader, expected non-closed") case <-time.After(10 * time.Millisecond): // wait some to detect any closes happening soon after kaReqLeader closing } diff --git a/tests/integration/clientv3/lease/leasing_test.go b/tests/integration/clientv3/lease/leasing_test.go index 9d6d77b353f5..1751fdeb771e 100644 --- a/tests/integration/clientv3/lease/leasing_test.go +++ b/tests/integration/clientv3/lease/leasing_test.go @@ -102,9 +102,7 @@ func TestLeasingInterval(t *testing.T) { resp, err := lkv.Get(context.TODO(), "abc/", clientv3.WithPrefix()) require.NoError(t, err) - if len(resp.Kvs) != 3 { - t.Fatalf("expected keys %+v, got response keys %+v", keys, resp.Kvs) - } + require.Lenf(t, resp.Kvs, 3, "expected keys %+v, got response keys %+v", keys, resp.Kvs) // load into cache _, err = lkv.Get(context.TODO(), "abc/a") @@ -113,9 +111,7 @@ func TestLeasingInterval(t *testing.T) { // get when prefix is also a cached key resp, err = lkv.Get(context.TODO(), "abc/a", clientv3.WithPrefix()) require.NoError(t, err) - if len(resp.Kvs) != 2 { - t.Fatalf("expected keys %+v, got response keys %+v", keys, resp.Kvs) - } + require.Lenf(t, resp.Kvs, 2, "expected keys %+v, got response keys %+v", keys, resp.Kvs) } // TestLeasingPutInvalidateNew checks the leasing KV updates its cache on a Put to a new key. @@ -137,9 +133,7 @@ func TestLeasingPutInvalidateNew(t *testing.T) { require.NoError(t, err) cResp, cerr := clus.Client(0).Get(context.TODO(), "k") require.NoError(t, cerr) - if !reflect.DeepEqual(lkvResp, cResp) { - t.Fatalf(`expected %+v, got response %+v`, cResp, lkvResp) - } + require.Truef(t, reflect.DeepEqual(lkvResp, cResp), `expected %+v, got response %+v`, cResp, lkvResp) } // TestLeasingPutInvalidateExisting checks the leasing KV updates its cache on a Put to an existing key. @@ -164,9 +158,7 @@ func TestLeasingPutInvalidateExisting(t *testing.T) { require.NoError(t, err) cResp, cerr := clus.Client(0).Get(context.TODO(), "k") require.NoError(t, cerr) - if !reflect.DeepEqual(lkvResp, cResp) { - t.Fatalf(`expected %+v, got response %+v`, cResp, lkvResp) - } + require.Truef(t, reflect.DeepEqual(lkvResp, cResp), `expected %+v, got response %+v`, cResp, lkvResp) } // TestLeasingGetNoLeaseTTL checks a key with a TTL is not leased. @@ -218,9 +210,7 @@ func TestLeasingGetSerializable(t *testing.T) { // don't necessarily try to acquire leasing key ownership for new key resp, err := lkv.Get(context.TODO(), "uncached", clientv3.WithSerializable()) require.NoError(t, err) - if len(resp.Kvs) != 0 { - t.Fatalf(`expected no keys, got response %+v`, resp) - } + require.Emptyf(t, resp.Kvs, `expected no keys, got response %+v`, resp) clus.Members[0].Stop(t) @@ -414,9 +404,7 @@ func TestLeasingDeleteOwner(t *testing.T) { resp, err := lkv.Get(context.TODO(), "k") require.NoError(t, err) - if len(resp.Kvs) != 0 { - t.Fatalf(`expected "k" to be deleted, got response %+v`, resp) - } + require.Emptyf(t, resp.Kvs, `expected "k" to be deleted, got response %+v`, resp) // try to double delete _, err = lkv.Delete(context.TODO(), "k") require.NoError(t, err) @@ -447,9 +435,7 @@ func TestLeasingDeleteNonOwner(t *testing.T) { // key should be removed from lkv1 resp, err := lkv1.Get(context.TODO(), "k") require.NoError(t, err) - if len(resp.Kvs) != 0 { - t.Fatalf(`expected "k" to be deleted, got response %+v`, resp) - } + require.Emptyf(t, resp.Kvs, `expected "k" to be deleted, got response %+v`, resp) } func TestLeasingOverwriteResponse(t *testing.T) { @@ -532,9 +518,8 @@ func TestLeasingTxnOwnerGetRange(t *testing.T) { tresp, terr := lkv.Txn(context.TODO()).Then(clientv3.OpGet("k-", clientv3.WithPrefix())).Commit() require.NoError(t, terr) - if resp := tresp.Responses[0].GetResponseRange(); len(resp.Kvs) != keyCount { - t.Fatalf("expected %d keys, got response %+v", keyCount, resp.Kvs) - } + resp := tresp.Responses[0].GetResponseRange() + require.Equalf(t, len(resp.Kvs), keyCount, "expected %d keys, got response %+v", keyCount, resp.Kvs) } func TestLeasingTxnOwnerGet(t *testing.T) { @@ -596,22 +581,14 @@ func TestLeasingTxnOwnerGet(t *testing.T) { Else(elseOps...).Commit() require.NoError(t, terr) - if tresp.Succeeded != useThen { - t.Fatalf("expected succeeded=%v, got tresp=%+v", useThen, tresp) - } - if len(tresp.Responses) != len(ops) { - t.Fatalf("expected %d responses, got %d", len(ops), len(tresp.Responses)) - } + require.Equalf(t, tresp.Succeeded, useThen, "expected succeeded=%v, got tresp=%+v", useThen, tresp) + require.Lenf(t, ops, len(tresp.Responses), "expected %d responses, got %d", len(ops), len(tresp.Responses)) wrev := presps[len(presps)-1].Header.Revision - if tresp.Header.Revision < wrev { - t.Fatalf("expected header revision >= %d, got %d", wrev, tresp.Header.Revision) - } + require.GreaterOrEqualf(t, tresp.Header.Revision, wrev, "expected header revision >= %d, got %d", wrev, tresp.Header.Revision) for i := range ops { k := fmt.Sprintf("k-%d", i) rr := tresp.Responses[i].GetResponseRange() - if rr == nil { - t.Fatalf("expected get response, got %+v", tresp.Responses[i]) - } + require.NotNilf(t, rr, "expected get response, got %+v", tresp.Responses[i]) if string(rr.Kvs[0].Key) != k || string(rr.Kvs[0].Value) != k+k { t.Errorf(`expected key for %q, got %+v`, k, rr.Kvs) } @@ -637,18 +614,14 @@ func TestLeasingTxnOwnerDeleteRange(t *testing.T) { // cache in lkv resp, err := lkv.Get(context.TODO(), "k-", clientv3.WithPrefix()) require.NoError(t, err) - if len(resp.Kvs) != keyCount { - t.Fatalf("expected %d keys, got %d", keyCount, len(resp.Kvs)) - } + require.Equalf(t, len(resp.Kvs), keyCount, "expected %d keys, got %d", keyCount, len(resp.Kvs)) _, terr := lkv.Txn(context.TODO()).Then(clientv3.OpDelete("k-", clientv3.WithPrefix())).Commit() require.NoError(t, terr) resp, err = lkv.Get(context.TODO(), "k-", clientv3.WithPrefix()) require.NoError(t, err) - if len(resp.Kvs) != 0 { - t.Fatalf("expected no keys, got %d", len(resp.Kvs)) - } + require.Emptyf(t, resp.Kvs, "expected no keys, got %d", len(resp.Kvs)) } func TestLeasingTxnOwnerDelete(t *testing.T) { @@ -672,9 +645,7 @@ func TestLeasingTxnOwnerDelete(t *testing.T) { resp, err := lkv.Get(context.TODO(), "k") require.NoError(t, err) - if len(resp.Kvs) != 0 { - t.Fatalf("expected no keys, got %d", len(resp.Kvs)) - } + require.Emptyf(t, resp.Kvs, "expected no keys, got %d", len(resp.Kvs)) } func TestLeasingTxnOwnerIf(t *testing.T) { @@ -794,9 +765,8 @@ func TestLeasingTxnCancel(t *testing.T) { time.Sleep(100 * time.Millisecond) cancel() }() - if _, err := lkv2.Txn(ctx).Then(clientv3.OpPut("k", "v")).Commit(); !errors.Is(err, context.Canceled) { - t.Fatalf("expected %v, got %v", context.Canceled, err) - } + _, err = lkv2.Txn(ctx).Then(clientv3.OpPut("k", "v")).Commit() + require.ErrorIsf(t, err, context.Canceled, "expected %v, got %v", context.Canceled, err) } func TestLeasingTxnNonOwnerPut(t *testing.T) { @@ -860,9 +830,7 @@ func TestLeasingTxnNonOwnerPut(t *testing.T) { c++ } } - if c != 3 { - t.Fatalf("expected 3 put events, got %+v", evs) - } + require.Equalf(t, 3, c, "expected 3 put events, got %+v", evs) } // TestLeasingTxnRandIfThenOrElse randomly leases keys two separate clients, then @@ -946,9 +914,7 @@ func TestLeasingTxnRandIfThenOrElse(t *testing.T) { tresp, terr := lkv1.Txn(context.TODO()).If(cmps...).Then(thenOps...).Else(elseOps...).Commit() require.NoError(t, terr) // cmps always succeed - if tresp.Succeeded != useThen { - t.Fatalf("expected succeeded=%v, got tresp=%+v", useThen, tresp) - } + require.Equalf(t, tresp.Succeeded, useThen, "expected succeeded=%v, got tresp=%+v", useThen, tresp) // get should match what was put checkPuts := func(s string, kv clientv3.KV) { for _, op := range ops { @@ -982,9 +948,8 @@ func TestLeasingOwnerPutError(t *testing.T) { clus.Members[0].Stop(t) ctx, cancel := context.WithTimeout(context.TODO(), 100*time.Millisecond) defer cancel() - if resp, err := lkv.Put(ctx, "k", "v"); err == nil { - t.Fatalf("expected error, got response %+v", resp) - } + resp, err := lkv.Put(ctx, "k", "v") + require.Errorf(t, err, "expected error, got response %+v", resp) } func TestLeasingOwnerDeleteError(t *testing.T) { @@ -1002,9 +967,8 @@ func TestLeasingOwnerDeleteError(t *testing.T) { clus.Members[0].Stop(t) ctx, cancel := context.WithTimeout(context.TODO(), 100*time.Millisecond) defer cancel() - if resp, err := lkv.Delete(ctx, "k"); err == nil { - t.Fatalf("expected error, got response %+v", resp) - } + resp, err := lkv.Delete(ctx, "k") + require.Errorf(t, err, "expected error, got response %+v", resp) } func TestLeasingNonOwnerPutError(t *testing.T) { @@ -1019,9 +983,8 @@ func TestLeasingNonOwnerPutError(t *testing.T) { clus.Members[0].Stop(t) ctx, cancel := context.WithTimeout(context.TODO(), 100*time.Millisecond) defer cancel() - if resp, err := lkv.Put(ctx, "k", "v"); err == nil { - t.Fatalf("expected error, got response %+v", resp) - } + resp, err := lkv.Put(ctx, "k", "v") + require.Errorf(t, err, "expected error, got response %+v", resp) } func TestLeasingOwnerDeletePrefix(t *testing.T) { @@ -1057,9 +1020,7 @@ func testLeasingOwnerDelete(t *testing.T, del clientv3.Op) { for i := 0; i < 8; i++ { resp, err := lkv.Get(context.TODO(), fmt.Sprintf("key/%d", i)) require.NoError(t, err) - if len(resp.Kvs) != 0 { - t.Fatalf("expected no keys on key/%d, got %+v", i, resp) - } + require.Emptyf(t, resp.Kvs, "expected no keys on key/%d, got %+v", i, resp) } // confirm keys were deleted atomically @@ -1070,9 +1031,8 @@ func testLeasingOwnerDelete(t *testing.T, del clientv3.Op) { clientv3.WithRev(delResp.Header.Revision), clientv3.WithPrefix()) - if wresp := <-w; len(wresp.Events) != 8 { - t.Fatalf("expected %d delete events,got %d", 8, len(wresp.Events)) - } + wresp := <-w + require.Lenf(t, wresp.Events, 8, "expected %d delete events,got %d", 8, len(wresp.Events)) } func TestLeasingDeleteRangeBounds(t *testing.T) { @@ -1102,9 +1062,7 @@ func TestLeasingDeleteRangeBounds(t *testing.T) { for _, k := range []string{"j", "m"} { resp, geterr := clus.Client(0).Get(context.TODO(), "0/"+k, clientv3.WithPrefix()) require.NoError(t, geterr) - if len(resp.Kvs) != 1 { - t.Fatalf("expected leasing key, got %+v", resp) - } + require.Lenf(t, resp.Kvs, 1, "expected leasing key, got %+v", resp) } // j and m should still have leases registered since not under k* @@ -1220,15 +1178,11 @@ func TestLeasingPutGetDeleteConcurrent(t *testing.T) { resp, err := lkvs[0].Get(context.TODO(), "k") require.NoError(t, err) - if len(resp.Kvs) > 0 { - t.Fatalf("expected no kvs, got %+v", resp.Kvs) - } + require.Emptyf(t, resp.Kvs, "expected no kvs, got %+v", resp.Kvs) resp, err = clus.Client(0).Get(context.TODO(), "k") require.NoError(t, err) - if len(resp.Kvs) > 0 { - t.Fatalf("expected no kvs, got %+v", resp.Kvs) - } + require.Emptyf(t, resp.Kvs, "expected no kvs, got %+v", resp.Kvs) } // TestLeasingReconnectOwnerRevoke checks that revocation works if @@ -1330,9 +1284,7 @@ func TestLeasingReconnectOwnerRevokeCompact(t *testing.T) { require.NoError(t, err) resp, err := lkv1.Get(cctx, "k") require.NoError(t, err) - if string(resp.Kvs[0].Value) != "v" { - t.Fatalf(`expected "v" value, got %+v`, resp) - } + require.Equalf(t, "v", string(resp.Kvs[0].Value), `expected "v" value, got %+v`, resp) } // TestLeasingReconnectOwnerConsistency checks a write error on an owner will @@ -1399,9 +1351,7 @@ func TestLeasingReconnectOwnerConsistency(t *testing.T) { require.NoError(t, lerr) cresp, cerr := clus.Client(0).Get(context.TODO(), "k") require.NoError(t, cerr) - if !reflect.DeepEqual(lresp.Kvs, cresp.Kvs) { - t.Fatalf("expected %+v, got %+v", cresp, lresp) - } + require.Truef(t, reflect.DeepEqual(lresp.Kvs, cresp.Kvs), "expected %+v, got %+v", cresp, lresp) } func TestLeasingTxnAtomicCache(t *testing.T) { @@ -1561,9 +1511,7 @@ func TestLeasingReconnectNonOwnerGet(t *testing.T) { require.NoError(t, lerr) cresp, cerr := clus.Client(0).Get(context.TODO(), k) require.NoError(t, cerr) - if !reflect.DeepEqual(lresp.Kvs, cresp.Kvs) { - t.Fatalf("expected %+v, got %+v", cresp, lresp) - } + require.Truef(t, reflect.DeepEqual(lresp.Kvs, cresp.Kvs), "expected %+v, got %+v", cresp, lresp) } } @@ -1591,9 +1539,7 @@ func TestLeasingTxnRangeCmp(t *testing.T) { cmp := clientv3.Compare(clientv3.Version("k").WithPrefix(), "=", 1) tresp, terr := lkv.Txn(context.TODO()).If(cmp).Commit() require.NoError(t, terr) - if tresp.Succeeded { - t.Fatalf("expected Succeeded=false, got %+v", tresp) - } + require.Falsef(t, tresp.Succeeded, "expected Succeeded=false, got %+v", tresp) } func TestLeasingDo(t *testing.T) { @@ -1631,9 +1577,7 @@ func TestLeasingDo(t *testing.T) { gresp, err := clus.Client(0).Get(context.TODO(), "a", clientv3.WithPrefix()) require.NoError(t, err) - if len(gresp.Kvs) != 0 { - t.Fatalf("expected no keys, got %+v", gresp.Kvs) - } + require.Emptyf(t, gresp.Kvs, "expected no keys, got %+v", gresp.Kvs) } func TestLeasingTxnOwnerPutBranch(t *testing.T) { @@ -1667,9 +1611,7 @@ func TestLeasingTxnOwnerPutBranch(t *testing.T) { require.NoError(t, err) clusResp, err := clus.Client(1).Get(context.TODO(), k) require.NoError(t, err) - if !reflect.DeepEqual(clusResp.Kvs, lkvResp.Kvs) { - t.Fatalf("expected %+v, got %+v", clusResp.Kvs, lkvResp.Kvs) - } + require.Truef(t, reflect.DeepEqual(clusResp.Kvs, lkvResp.Kvs), "expected %+v, got %+v", clusResp.Kvs, lkvResp.Kvs) } } @@ -1751,9 +1693,7 @@ func TestLeasingSessionExpire(t *testing.T) { resp, err := lkv.Get(context.TODO(), "abc") require.NoError(t, err) - if v := string(resp.Kvs[0].Value); v != "def" { - t.Fatalf("expected %q, got %q", "v", v) - } + require.Equal(t, "def", string(resp.Kvs[0].Value)) } func TestLeasingSessionExpireCancel(t *testing.T) { diff --git a/tests/integration/clientv3/naming/endpoints_test.go b/tests/integration/clientv3/naming/endpoints_test.go index 3c93c6c7d191..649c0581348d 100644 --- a/tests/integration/clientv3/naming/endpoints_test.go +++ b/tests/integration/clientv3/naming/endpoints_test.go @@ -61,14 +61,10 @@ func TestEndpointManager(t *testing.T) { Endpoint: e1, } - if !reflect.DeepEqual(us[0], wu) { - t.Fatalf("up = %#v, want %#v", us[0], wu) - } + require.Truef(t, reflect.DeepEqual(us[0], wu), "up = %#v, want %#v", us[0], wu) err = em.DeleteEndpoint(context.TODO(), "foo/a1") - if err != nil { - t.Fatalf("failed to udpate %v", err) - } + require.NoErrorf(t, err, "failed to udpate %v", err) us = <-w if us == nil { @@ -80,9 +76,7 @@ func TestEndpointManager(t *testing.T) { Key: "foo/a1", } - if !reflect.DeepEqual(us[0], wu) { - t.Fatalf("up = %#v, want %#v", us[1], wu) - } + require.Truef(t, reflect.DeepEqual(us[0], wu), "up = %#v, want %#v", us[0], wu) } // TestEndpointManagerAtomicity ensures the resolver will initialize @@ -112,9 +106,7 @@ func TestEndpointManagerAtomicity(t *testing.T) { require.NoError(t, err) updates := <-w - if len(updates) != 2 { - t.Fatalf("expected two updates, got %+v", updates) - } + require.Lenf(t, updates, 2, "expected two updates, got %+v", updates) _, err = c.Txn(context.TODO()).Then(etcd.OpDelete("foo/host"), etcd.OpDelete("foo/host2")).Commit() require.NoError(t, err) @@ -155,15 +147,9 @@ func TestEndpointManagerCRUD(t *testing.T) { if err != nil { t.Fatal("failed to list foo") } - if len(eps) != 2 { - t.Fatalf("unexpected the number of endpoints: %d", len(eps)) - } - if !reflect.DeepEqual(eps[k1], e1) { - t.Fatalf("unexpected endpoints: %s", k1) - } - if !reflect.DeepEqual(eps[k2], e2) { - t.Fatalf("unexpected endpoints: %s", k2) - } + require.Lenf(t, eps, 2, "unexpected the number of endpoints: %d", len(eps)) + require.Truef(t, reflect.DeepEqual(eps[k1], e1), "unexpected endpoints: %s", k1) + require.Truef(t, reflect.DeepEqual(eps[k2], e2), "unexpected endpoints: %s", k2) // Delete err = em.DeleteEndpoint(context.TODO(), k1) @@ -175,12 +161,8 @@ func TestEndpointManagerCRUD(t *testing.T) { if err != nil { t.Fatal("failed to list foo") } - if len(eps) != 1 { - t.Fatalf("unexpected the number of endpoints: %d", len(eps)) - } - if !reflect.DeepEqual(eps[k2], e2) { - t.Fatalf("unexpected endpoints: %s", k2) - } + require.Lenf(t, eps, 1, "unexpected the number of endpoints: %d", len(eps)) + require.Truef(t, reflect.DeepEqual(eps[k2], e2), "unexpected endpoints: %s", k2) // Update k3 := "foo/a3" @@ -198,10 +180,6 @@ func TestEndpointManagerCRUD(t *testing.T) { if err != nil { t.Fatal("failed to list foo") } - if len(eps) != 1 { - t.Fatalf("unexpected the number of endpoints: %d", len(eps)) - } - if !reflect.DeepEqual(eps[k3], e3) { - t.Fatalf("unexpected endpoints: %s", k3) - } + require.Lenf(t, eps, 1, "unexpected the number of endpoints: %d", len(eps)) + require.Truef(t, reflect.DeepEqual(eps[k3], e3), "unexpected endpoints: %s", k3) } diff --git a/tests/integration/clientv3/naming/resolver_test.go b/tests/integration/clientv3/naming/resolver_test.go index f39dbb2c2341..40dc177214be 100644 --- a/tests/integration/clientv3/naming/resolver_test.go +++ b/tests/integration/clientv3/naming/resolver_test.go @@ -104,26 +104,20 @@ func testEtcdGRPCResolver(t *testing.T, lbPolicy string) { t.Logf("Response: %v", string(resp.GetPayload().GetBody())) - if resp.GetPayload() == nil { - t.Fatalf("unexpected response from foo: %s", resp.GetPayload().GetBody()) - } + require.NotNilf(t, resp.GetPayload(), "unexpected response from foo: %s", resp.GetPayload().GetBody()) lastResponse = resp.GetPayload().GetBody() } // If the load balancing policy is pick first then return payload should equal number of requests t.Logf("Last response: %v", string(lastResponse)) if lbPolicy == "pick_first" { - if string(lastResponse) != "3500" { - t.Fatalf("unexpected total responses from foo: %s", lastResponse) - } + require.Equalf(t, "3500", string(lastResponse), "unexpected total responses from foo: %s", lastResponse) } // If the load balancing policy is round robin we should see roughly half total requests served by each server if lbPolicy == "round_robin" { responses, err := strconv.Atoi(string(lastResponse)) - if err != nil { - t.Fatalf("couldn't convert to int: %s", lastResponse) - } + require.NoErrorf(t, err, "couldn't convert to int: %s", lastResponse) // Allow 25% tolerance as round robin is not perfect and we don't want the test to flake expected := float64(totalRequests) * 0.5 diff --git a/tests/integration/clientv3/ordering_util_test.go b/tests/integration/clientv3/ordering_util_test.go index bb46989e4798..f7513190d345 100644 --- a/tests/integration/clientv3/ordering_util_test.go +++ b/tests/integration/clientv3/ordering_util_test.go @@ -138,7 +138,5 @@ func TestUnresolvableOrderViolation(t *testing.T) { time.Sleep(1 * time.Second) // give enough time for operation _, err = OrderingKv.Get(ctx, "foo", clientv3.WithSerializable()) - if !errors.Is(err, ordering.ErrNoGreaterRev) { - t.Fatalf("expected %v, got %v", ordering.ErrNoGreaterRev, err) - } + require.ErrorIsf(t, err, ordering.ErrNoGreaterRev, "expected %v, got %v", ordering.ErrNoGreaterRev, err) } diff --git a/tests/integration/clientv3/snapshot/v3_snapshot_test.go b/tests/integration/clientv3/snapshot/v3_snapshot_test.go index c39b092e1cf6..1da423f5cfb2 100644 --- a/tests/integration/clientv3/snapshot/v3_snapshot_test.go +++ b/tests/integration/clientv3/snapshot/v3_snapshot_test.go @@ -44,14 +44,10 @@ func TestSaveSnapshotFilePermissions(t *testing.T) { defer os.RemoveAll(dbPath) dbInfo, err := os.Stat(dbPath) - if err != nil { - t.Fatalf("failed to get test snapshot file status: %v", err) - } + require.NoErrorf(t, err, "failed to get test snapshot file status: %v", err) actualFileMode := dbInfo.Mode() - if expectedFileMode != actualFileMode { - t.Fatalf("expected test snapshot file mode %s, got %s:", expectedFileMode, actualFileMode) - } + require.Equalf(t, expectedFileMode, actualFileMode, "expected test snapshot file mode %s, got %s:", expectedFileMode, actualFileMode) } // TestSaveSnapshotVersion ensures that the snapshot returns proper storage version. @@ -67,9 +63,7 @@ func TestSaveSnapshotVersion(t *testing.T) { ver, dbPath := createSnapshotFile(t, cfg, kvs) defer os.RemoveAll(dbPath) - if ver != "3.6.0" { - t.Fatalf("expected snapshot version %s, got %s:", "3.6.0", ver) - } + require.Equalf(t, "3.6.0", ver, "expected snapshot version %s, got %s:", "3.6.0", ver) } type kv struct { diff --git a/tests/integration/clientv3/user_test.go b/tests/integration/clientv3/user_test.go index 201740fefcfa..8f3ef838065a 100644 --- a/tests/integration/clientv3/user_test.go +++ b/tests/integration/clientv3/user_test.go @@ -40,19 +40,13 @@ func TestUserError(t *testing.T) { require.NoError(t, err) _, err = authapi.UserAdd(context.TODO(), "foo", "bar") - if !errors.Is(err, rpctypes.ErrUserAlreadyExist) { - t.Fatalf("expected %v, got %v", rpctypes.ErrUserAlreadyExist, err) - } + require.ErrorIsf(t, err, rpctypes.ErrUserAlreadyExist, "expected %v, got %v", rpctypes.ErrUserAlreadyExist, err) _, err = authapi.UserDelete(context.TODO(), "not-exist-user") - if !errors.Is(err, rpctypes.ErrUserNotFound) { - t.Fatalf("expected %v, got %v", rpctypes.ErrUserNotFound, err) - } + require.ErrorIsf(t, err, rpctypes.ErrUserNotFound, "expected %v, got %v", rpctypes.ErrUserNotFound, err) _, err = authapi.UserGrantRole(context.TODO(), "foo", "test-role-does-not-exist") - if !errors.Is(err, rpctypes.ErrRoleNotFound) { - t.Fatalf("expected %v, got %v", rpctypes.ErrRoleNotFound, err) - } + require.ErrorIsf(t, err, rpctypes.ErrRoleNotFound, "expected %v, got %v", rpctypes.ErrRoleNotFound, err) } func TestAddUserAfterDelete(t *testing.T) { @@ -115,9 +109,8 @@ func TestUserErrorAuth(t *testing.T) { authSetupRoot(t, authapi.Auth) // unauthenticated client - if _, err := authapi.UserAdd(context.TODO(), "foo", "bar"); !errors.Is(err, rpctypes.ErrUserEmpty) { - t.Fatalf("expected %v, got %v", rpctypes.ErrUserEmpty, err) - } + _, err := authapi.UserAdd(context.TODO(), "foo", "bar") + require.ErrorIsf(t, err, rpctypes.ErrUserEmpty, "expected %v, got %v", rpctypes.ErrUserEmpty, err) // wrong id or password cfg := clientv3.Config{ @@ -126,13 +119,11 @@ func TestUserErrorAuth(t *testing.T) { DialOptions: []grpc.DialOption{grpc.WithBlock()}, } cfg.Username, cfg.Password = "wrong-id", "123" - if _, err := integration2.NewClient(t, cfg); !errors.Is(err, rpctypes.ErrAuthFailed) { - t.Fatalf("expected %v, got %v", rpctypes.ErrAuthFailed, err) - } + _, err = integration2.NewClient(t, cfg) + require.ErrorIsf(t, err, rpctypes.ErrAuthFailed, "expected %v, got %v", rpctypes.ErrAuthFailed, err) cfg.Username, cfg.Password = "root", "wrong-pass" - if _, err := integration2.NewClient(t, cfg); !errors.Is(err, rpctypes.ErrAuthFailed) { - t.Fatalf("expected %v, got %v", rpctypes.ErrAuthFailed, err) - } + _, err = integration2.NewClient(t, cfg) + require.ErrorIsf(t, err, rpctypes.ErrAuthFailed, "expected %v, got %v", rpctypes.ErrAuthFailed, err) cfg.Username, cfg.Password = "root", "123" authed, err := integration2.NewClient(t, cfg) diff --git a/tests/integration/clientv3/watch_fragment_test.go b/tests/integration/clientv3/watch_fragment_test.go index 81450f5f9aa8..fd58fed8180e 100644 --- a/tests/integration/clientv3/watch_fragment_test.go +++ b/tests/integration/clientv3/watch_fragment_test.go @@ -23,6 +23,8 @@ import ( "testing" "time" + "github.com/stretchr/testify/require" + "go.etcd.io/etcd/client/pkg/v3/testutil" clientv3 "go.etcd.io/etcd/client/v3" integration2 "go.etcd.io/etcd/tests/v3/framework/integration" @@ -87,9 +89,8 @@ func testWatchFragment(t *testing.T, fragment, exceedRecvLimit bool) { }(i) } for i := 0; i < 10; i++ { - if err := <-errc; err != nil { - t.Fatalf("failed to put: %v", err) - } + err := <-errc + require.NoErrorf(t, err, "failed to put") } opts := []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithRev(1)} @@ -103,23 +104,15 @@ func testWatchFragment(t *testing.T, fragment, exceedRecvLimit bool) { case ws := <-wch: // without fragment, should exceed gRPC client receive limit if !fragment && exceedRecvLimit { - if len(ws.Events) != 0 { - t.Fatalf("expected 0 events with watch fragmentation, got %d", len(ws.Events)) - } + require.Emptyf(t, ws.Events, "expected 0 events with watch fragmentation") exp := "code = ResourceExhausted desc = grpc: received message larger than max (" - if !strings.Contains(ws.Err().Error(), exp) { - t.Fatalf("expected 'ResourceExhausted' error, got %v", ws.Err()) - } + require.Containsf(t, ws.Err().Error(), exp, "expected 'ResourceExhausted' error") return } // still expect merged watch events - if len(ws.Events) != 10 { - t.Fatalf("expected 10 events with watch fragmentation, got %d", len(ws.Events)) - } - if ws.Err() != nil { - t.Fatalf("unexpected error %v", ws.Err()) - } + require.Lenf(t, ws.Events, 10, "expected 10 events with watch fragmentation") + require.NoErrorf(t, ws.Err(), "unexpected error") case <-time.After(testutil.RequestTimeout): t.Fatalf("took too long to receive events") diff --git a/tests/integration/clientv3/watch_test.go b/tests/integration/clientv3/watch_test.go index b8481333382b..8cb9d53ec8e3 100644 --- a/tests/integration/clientv3/watch_test.go +++ b/tests/integration/clientv3/watch_test.go @@ -173,9 +173,8 @@ func TestWatchRange(t *testing.T) { } func testWatchRange(t *testing.T, wctx *watchctx) { - if wctx.ch = wctx.w.Watch(context.TODO(), "a", clientv3.WithRange("c")); wctx.ch == nil { - t.Fatalf("expected non-nil channel") - } + wctx.ch = wctx.w.Watch(context.TODO(), "a", clientv3.WithRange("c")) + require.NotNilf(t, wctx.ch, "expected non-nil channel") putAndWatch(t, wctx, "a", "a") putAndWatch(t, wctx, "b", "b") putAndWatch(t, wctx, "bar", "bar") @@ -205,9 +204,8 @@ func testWatchReconnRequest(t *testing.T, wctx *watchctx) { } }() // should reconnect when requesting watch - if wctx.ch = wctx.w.Watch(context.TODO(), "a"); wctx.ch == nil { - t.Fatalf("expected non-nil channel") - } + wctx.ch = wctx.w.Watch(context.TODO(), "a") + require.NotNilf(t, wctx.ch, "expected non-nil channel") // wait for disconnections to stop stopc <- struct{}{} @@ -231,9 +229,8 @@ func TestWatchReconnInit(t *testing.T) { } func testWatchReconnInit(t *testing.T, wctx *watchctx) { - if wctx.ch = wctx.w.Watch(context.TODO(), "a"); wctx.ch == nil { - t.Fatalf("expected non-nil channel") - } + wctx.ch = wctx.w.Watch(context.TODO(), "a") + require.NotNilf(t, wctx.ch, "expected non-nil channel") wctx.clus.Members[wctx.wclientMember].Bridge().DropConnections() // watcher should recover putAndWatch(t, wctx, "a", "a") @@ -246,9 +243,8 @@ func TestWatchReconnRunning(t *testing.T) { } func testWatchReconnRunning(t *testing.T, wctx *watchctx) { - if wctx.ch = wctx.w.Watch(context.TODO(), "a"); wctx.ch == nil { - t.Fatalf("expected non-nil channel") - } + wctx.ch = wctx.w.Watch(context.TODO(), "a") + require.NotNilf(t, wctx.ch, "expected non-nil channel") putAndWatch(t, wctx, "a", "a") // take down watcher connection wctx.clus.Members[wctx.wclientMember].Bridge().DropConnections() @@ -268,9 +264,7 @@ func testWatchCancelImmediate(t *testing.T, wctx *watchctx) { wch := wctx.w.Watch(ctx, "a") select { case wresp, ok := <-wch: - if ok { - t.Fatalf("read wch got %v; expected closed channel", wresp) - } + require.Falsef(t, ok, "read wch got %v; expected closed channel", wresp) default: t.Fatalf("closed watcher channel should not block") } @@ -283,17 +277,14 @@ func TestWatchCancelInit(t *testing.T) { func testWatchCancelInit(t *testing.T, wctx *watchctx) { ctx, cancel := context.WithCancel(context.Background()) - if wctx.ch = wctx.w.Watch(ctx, "a"); wctx.ch == nil { - t.Fatalf("expected non-nil watcher channel") - } + wctx.ch = wctx.w.Watch(ctx, "a") + require.NotNilf(t, wctx.ch, "expected non-nil watcher channel") cancel() select { case <-time.After(time.Second): t.Fatalf("took too long to cancel") case _, ok := <-wctx.ch: - if ok { - t.Fatalf("expected watcher channel to close") - } + require.Falsef(t, ok, "expected watcher channel to close") } } @@ -304,9 +295,8 @@ func TestWatchCancelRunning(t *testing.T) { func testWatchCancelRunning(t *testing.T, wctx *watchctx) { ctx, cancel := context.WithCancel(context.Background()) - if wctx.ch = wctx.w.Watch(ctx, "a"); wctx.ch == nil { - t.Fatalf("expected non-nil watcher channel") - } + wctx.ch = wctx.w.Watch(ctx, "a") + require.NotNilf(t, wctx.ch, "expected non-nil watcher channel") _, err := wctx.kv.Put(ctx, "a", "a") require.NoError(t, err) cancel() @@ -323,9 +313,7 @@ func testWatchCancelRunning(t *testing.T, wctx *watchctx) { case <-time.After(time.Second): t.Fatalf("took too long to close") case v, ok2 := <-wctx.ch: - if ok2 { - t.Fatalf("expected watcher channel to close, got %v", v) - } + require.Falsef(t, ok2, "expected watcher channel to close, got %v", v) } } } @@ -337,15 +325,10 @@ func putAndWatch(t *testing.T, wctx *watchctx, key, val string) { case <-time.After(5 * time.Second): t.Fatalf("watch timed out") case v, ok := <-wctx.ch: - if !ok { - t.Fatalf("unexpected watch close") - } - if err := v.Err(); err != nil { - t.Fatalf("unexpected watch response error: %v", err) - } - if string(v.Events[0].Kv.Value) != val { - t.Fatalf("bad value got %v, wanted %v", v.Events[0].Kv.Value, val) - } + require.Truef(t, ok, "unexpected watch close") + err := v.Err() + require.NoErrorf(t, err, "unexpected watch response error") + require.Equalf(t, string(v.Events[0].Kv.Value), val, "bad value got %v, wanted %v", v.Events[0].Kv.Value, val) } } @@ -394,12 +377,8 @@ func TestWatchResumeAfterDisconnect(t *testing.T) { if len(resp.Events) != 2 { t.Fatal("expected two events on watch") } - if string(resp.Events[0].Kv.Value) != "3" { - t.Fatalf("expected value=3, got event %+v", resp.Events[0]) - } - if string(resp.Events[1].Kv.Value) != "4" { - t.Fatalf("expected value=4, got event %+v", resp.Events[1]) - } + require.Equalf(t, "3", string(resp.Events[0].Kv.Value), "expected value=3, got event %+v", resp.Events[0]) + require.Equalf(t, "4", string(resp.Events[1].Kv.Value), "expected value=4, got event %+v", resp.Events[1]) case <-time.After(5 * time.Second): t.Fatal("watch timed out") } @@ -450,16 +429,12 @@ func TestWatchResumeCompacted(t *testing.T) { var ok bool select { case wresp, ok = <-wch: - if !ok { - t.Fatalf("expected wresp, but got closed channel") - } + require.Truef(t, ok, "expected wresp, but got closed channel") case <-time.After(5 * time.Second): t.Fatalf("compacted watch timed out") } for _, ev := range wresp.Events { - if ev.Kv.ModRevision != wRev { - t.Fatalf("expected modRev %v, got %+v", wRev, ev) - } + require.Equalf(t, ev.Kv.ModRevision, wRev, "expected modRev %v, got %+v", wRev, ev) wRev++ } if wresp.Err() == nil { @@ -644,9 +619,7 @@ func TestWatchRequestProgress(t *testing.T) { for _, rch := range watchChans { select { case resp := <-rch: // wait for notification - if len(resp.Events) != 1 { - t.Fatalf("resp.Events expected 1, got %d", len(resp.Events)) - } + require.Lenf(t, resp.Events, 1, "resp.Events expected 1, got %d", len(resp.Events)) case <-time.After(watchTimeout): t.Fatalf("watch response expected in %v, but timed out", watchTimeout) } @@ -662,12 +635,8 @@ func TestWatchRequestProgress(t *testing.T) { for _, rch := range watchChans { select { case resp := <-rch: - if !resp.IsProgressNotify() { - t.Fatalf("expected resp.IsProgressNotify() == true") - } - if resp.Header.Revision != 3 { - t.Fatalf("resp.Header.Revision expected 3, got %d", resp.Header.Revision) - } + require.Truef(t, resp.IsProgressNotify(), "expected resp.IsProgressNotify() == true") + require.Equalf(t, int64(3), resp.Header.Revision, "resp.Header.Revision expected 3, got %d", resp.Header.Revision) case <-time.After(watchTimeout): t.Fatalf("progress response expected in %v, but timed out", watchTimeout) } @@ -686,22 +655,16 @@ func TestWatchEventType(t *testing.T) { ctx := context.Background() watchChan := client.Watch(ctx, "/", clientv3.WithPrefix()) - if _, err := client.Put(ctx, "/toDelete", "foo"); err != nil { - t.Fatalf("Put failed: %v", err) - } - if _, err := client.Put(ctx, "/toDelete", "bar"); err != nil { - t.Fatalf("Put failed: %v", err) - } - if _, err := client.Delete(ctx, "/toDelete"); err != nil { - t.Fatalf("Delete failed: %v", err) - } + _, err := client.Put(ctx, "/toDelete", "foo") + require.NoErrorf(t, err, "Put failed: %v", err) + _, err = client.Put(ctx, "/toDelete", "bar") + require.NoErrorf(t, err, "Put failed: %v", err) + _, err = client.Delete(ctx, "/toDelete") + require.NoErrorf(t, err, "Delete failed: %v", err) lcr, err := client.Lease.Grant(ctx, 1) - if err != nil { - t.Fatalf("lease create failed: %v", err) - } - if _, err := client.Put(ctx, "/toExpire", "foo", clientv3.WithLease(lcr.ID)); err != nil { - t.Fatalf("Put failed: %v", err) - } + require.NoErrorf(t, err, "lease create failed: %v", err) + _, err = client.Put(ctx, "/toExpire", "foo", clientv3.WithLease(lcr.ID)) + require.NoErrorf(t, err, "Put failed: %v", err) tests := []struct { et mvccpb.Event_EventType @@ -836,28 +799,21 @@ func TestWatchWithRequireLeader(t *testing.T) { select { case resp, ok := <-chLeader: - if !ok { - t.Fatalf("expected %v watch channel, got closed channel", rpctypes.ErrNoLeader) - } - if !errors.Is(resp.Err(), rpctypes.ErrNoLeader) { - t.Fatalf("expected %v watch response error, got %+v", rpctypes.ErrNoLeader, resp) - } + require.Truef(t, ok, "expected %v watch channel, got closed channel", rpctypes.ErrNoLeader) + require.ErrorIsf(t, resp.Err(), rpctypes.ErrNoLeader, "expected %v watch response error, got %+v", rpctypes.ErrNoLeader, resp) case <-time.After(integration2.RequestWaitTimeout): t.Fatal("watch without leader took too long to close") } select { case resp, ok := <-chLeader: - if ok { - t.Fatalf("expected closed channel, got response %v", resp) - } + require.Falsef(t, ok, "expected closed channel, got response %v", resp) case <-time.After(integration2.RequestWaitTimeout): t.Fatal("waited too long for channel to close") } - if _, ok := <-chNoLeader; !ok { - t.Fatalf("expected response, got closed channel") - } + _, ok := <-chNoLeader + require.Truef(t, ok, "expected response, got closed channel") cnt, err := clus.Members[0].Metric( "etcd_server_client_requests_total", @@ -867,9 +823,7 @@ func TestWatchWithRequireLeader(t *testing.T) { require.NoError(t, err) cv, err := strconv.ParseInt(cnt, 10, 32) require.NoError(t, err) - if cv < 2 { // >2 when retried - t.Fatalf("expected at least 2, got %q", cnt) - } + require.GreaterOrEqualf(t, cv, int64(2), "expected at least 2, got %q", cnt) } // TestWatchWithFilter checks that watch filtering works. @@ -924,9 +878,7 @@ func TestWatchWithCreatedNotification(t *testing.T) { resp := <-createC - if !resp.Created { - t.Fatalf("expected created event, got %v", resp) - } + require.Truef(t, resp.Created, "expected created event, got %v", resp) } // TestWatchWithCreatedNotificationDropConn ensures that @@ -944,9 +896,7 @@ func TestWatchWithCreatedNotificationDropConn(t *testing.T) { resp := <-wch - if !resp.Created { - t.Fatalf("expected created event, got %v", resp) - } + require.Truef(t, resp.Created, "expected created event, got %v", resp) cluster.Members[0].Bridge().DropConnections() @@ -1013,9 +963,7 @@ func TestWatchCancelOnServer(t *testing.T) { t.Fatalf("expected n=2 and err=nil, got n=%d and err=%v", n, serr) } - if maxWatchV-minWatchV < numWatches { - t.Fatalf("expected %d canceled watchers, got %d", numWatches, maxWatchV-minWatchV) - } + require.GreaterOrEqualf(t, maxWatchV-minWatchV, numWatches, "expected %d canceled watchers, got %d", numWatches, maxWatchV-minWatchV) } // TestWatchOverlapContextCancel stresses the watcher stream teardown path by @@ -1181,16 +1129,10 @@ func testWatchClose(t *testing.T, wctx *watchctx) { ctx, cancel := context.WithCancel(context.Background()) wch := wctx.w.Watch(ctx, "a") cancel() - if wch == nil { - t.Fatalf("expected watcher channel, got nil") - } - if wctx.w.Close() != nil { - t.Fatalf("watch did not close successfully") - } + require.NotNilf(t, wch, "expected watcher channel, got nil") + require.NoErrorf(t, wctx.w.Close(), "watch did not close successfully") wresp, ok := <-wch - if ok { - t.Fatalf("read wch got %v; expected closed channel", wresp) - } + require.Falsef(t, ok, "read wch got %v; expected closed channel", wresp) } func TestWatch(t *testing.T) { diff --git a/tests/integration/cluster_test.go b/tests/integration/cluster_test.go index 732f5e2e19dc..9ba372bb8a4f 100644 --- a/tests/integration/cluster_test.go +++ b/tests/integration/cluster_test.go @@ -132,9 +132,7 @@ func TestForceNewCluster(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), integration.RequestTimeout) resp, err := c.Members[0].Client.Put(ctx, "/foo", "bar") - if err != nil { - t.Fatalf("unexpected create error: %v", err) - } + require.NoErrorf(t, err, "unexpected create error") cancel() // ensure create has been applied in this machine ctx, cancel = context.WithTimeout(context.Background(), integration.RequestTimeout) @@ -143,12 +141,8 @@ func TestForceNewCluster(t *testing.T) { if len(resp.Events) != 0 { break } - if resp.Err() != nil { - t.Fatalf("unexpected watch error: %q", resp.Err()) - } - if resp.Canceled { - t.Fatalf("watch cancelled") - } + require.NoErrorf(t, resp.Err(), "unexpected watch error") + require.Falsef(t, resp.Canceled, "watch cancelled") } cancel() @@ -157,9 +151,7 @@ func TestForceNewCluster(t *testing.T) { c.Members[2].Terminate(t) c.Members[0].ForceNewCluster = true err = c.Members[0].Restart(t) - if err != nil { - t.Fatalf("unexpected ForceRestart error: %v", err) - } + require.NoErrorf(t, err, "unexpected ForceRestart error") c.WaitMembersForLeader(t, c.Members[:1]) // use new http client to init new connection @@ -170,12 +162,8 @@ func TestForceNewCluster(t *testing.T) { if len(resp.Events) != 0 { break } - if resp.Err() != nil { - t.Fatalf("unexpected watch error: %q", resp.Err()) - } - if resp.Canceled { - t.Fatalf("watch cancelled") - } + require.NoErrorf(t, resp.Err(), "unexpected watch error") + require.Falsef(t, resp.Canceled, "watch cancelled") } cancel() clusterMustProgress(t, c.Members[:1]) @@ -325,9 +313,8 @@ func TestIssue3699(t *testing.T) { t.Logf("Expecting successful put...") // try to participate in Cluster ctx, cancel := context.WithTimeout(context.Background(), integration.RequestTimeout) - if _, err := c.Members[0].Client.Put(ctx, "/foo", "bar"); err != nil { - t.Fatalf("unexpected error on Put (%v)", err) - } + _, err := c.Members[0].Client.Put(ctx, "/foo", "bar") + require.NoErrorf(t, err, "unexpected error on Put") cancel() } @@ -344,9 +331,7 @@ func TestRejectUnhealthyAdd(t *testing.T) { // all attempts to add member should fail for i := 1; i < len(c.Members); i++ { err := c.AddMemberByURL(t, c.Members[i].Client, "unix://foo:12345") - if err == nil { - t.Fatalf("should have failed adding peer") - } + require.Errorf(t, err, "should have failed adding peer") // TODO: client should return descriptive error codes for internal errors if !strings.Contains(err.Error(), "unhealthy cluster") { t.Errorf("unexpected error (%v)", err) @@ -365,9 +350,7 @@ func TestRejectUnhealthyAdd(t *testing.T) { break } } - if err != nil { - t.Fatalf("should have added peer to healthy Cluster (%v)", err) - } + require.NoErrorf(t, err, "should have added peer to healthy Cluster (%v)", err) } // TestRejectUnhealthyRemove ensures an unhealthy cluster rejects removing members @@ -384,9 +367,7 @@ func TestRejectUnhealthyRemove(t *testing.T) { // reject remove active member since (3,2)-(1,0) => (2,2) lacks quorum err := c.RemoveMember(t, c.Members[leader].Client, uint64(c.Members[2].Server.MemberID())) - if err == nil { - t.Fatalf("should reject quorum breaking remove: %s", err) - } + require.Errorf(t, err, "should reject quorum breaking remove: %s", err) // TODO: client should return more descriptive error codes for internal errors if !strings.Contains(err.Error(), "unhealthy cluster") { t.Errorf("unexpected error (%v)", err) @@ -396,9 +377,8 @@ func TestRejectUnhealthyRemove(t *testing.T) { time.Sleep(time.Duration(integration.ElectionTicks * int(config.TickDuration))) // permit remove dead member since (3,2) - (0,1) => (3,1) has quorum - if err = c.RemoveMember(t, c.Members[2].Client, uint64(c.Members[0].Server.MemberID())); err != nil { - t.Fatalf("should accept removing down member: %s", err) - } + err = c.RemoveMember(t, c.Members[2].Client, uint64(c.Members[0].Server.MemberID())) + require.NoErrorf(t, err, "should accept removing down member") // bring cluster to (4,1) c.Members[0].Restart(t) @@ -407,9 +387,8 @@ func TestRejectUnhealthyRemove(t *testing.T) { time.Sleep((3 * etcdserver.HealthInterval) / 2) // accept remove member since (4,1)-(1,0) => (3,1) has quorum - if err = c.RemoveMember(t, c.Members[1].Client, uint64(c.Members[0].Server.MemberID())); err != nil { - t.Fatalf("expected to remove member, got error %v", err) - } + err = c.RemoveMember(t, c.Members[1].Client, uint64(c.Members[0].Server.MemberID())) + require.NoErrorf(t, err, "expected to remove member, got error") } // TestRestartRemoved ensures that restarting removed member must exit @@ -431,17 +410,15 @@ func TestRestartRemoved(t *testing.T) { firstMember.KeepDataDirTerminate = true // 3. remove first member, shut down without deleting data - if err := c.RemoveMember(t, c.Members[1].Client, uint64(firstMember.Server.MemberID())); err != nil { - t.Fatalf("expected to remove member, got error %v", err) - } + err := c.RemoveMember(t, c.Members[1].Client, uint64(firstMember.Server.MemberID())) + require.NoErrorf(t, err, "expected to remove member, got error") c.WaitLeader(t) // 4. restart first member with 'initial-cluster-state=new' // wrong config, expects exit within ReqTimeout firstMember.ServerConfig.NewCluster = false - if err := firstMember.Restart(t); err != nil { - t.Fatalf("unexpected ForceRestart error: %v", err) - } + err = firstMember.Restart(t) + require.NoErrorf(t, err, "unexpected ForceRestart error") defer func() { firstMember.Close() os.RemoveAll(firstMember.ServerConfig.DataDir) @@ -472,9 +449,7 @@ func clusterMustProgress(t *testing.T, members []*integration.Member) { } t.Logf("failed to create key on #0 (%v)", err) } - if err != nil { - t.Fatalf("create on #0 error: %v", err) - } + require.NoErrorf(t, err, "create on #0 error") for i, m := range members { mctx, mcancel := context.WithTimeout(context.Background(), integration.RequestTimeout) @@ -483,12 +458,8 @@ func clusterMustProgress(t *testing.T, members []*integration.Member) { if len(resp.Events) != 0 { break } - if resp.Err() != nil { - t.Fatalf("#%d: watch error: %q", i, resp.Err()) - } - if resp.Canceled { - t.Fatalf("#%d: watch: cancelled", i) - } + require.NoErrorf(t, resp.Err(), "#%d: watch error", i) + require.Falsef(t, resp.Canceled, "#%d: watch: cancelled", i) } mcancel() } diff --git a/tests/integration/member_test.go b/tests/integration/member_test.go index 4d8735d3d95b..cc7a0545c04b 100644 --- a/tests/integration/member_test.go +++ b/tests/integration/member_test.go @@ -94,9 +94,7 @@ func TestSnapshotAndRestartMember(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), integration.RequestTimeout) key := fmt.Sprintf("foo%d", i) _, err = m.Client.Put(ctx, "/"+key, "bar") - if err != nil { - t.Fatalf("#%d: create on %s error: %v", i, m.URL(), err) - } + require.NoErrorf(t, err, "#%d: create on %s error", i, m.URL()) cancel() } m.Stop(t) @@ -107,9 +105,7 @@ func TestSnapshotAndRestartMember(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), integration.RequestTimeout) key := fmt.Sprintf("foo%d", i) resp, err := m.Client.Get(ctx, "/"+key) - if err != nil { - t.Fatalf("#%d: get on %s error: %v", i, m.URL(), err) - } + require.NoErrorf(t, err, "#%d: get on %s error", i, m.URL()) cancel() if len(resp.Kvs) != 1 || string(resp.Kvs[0].Value) != "bar" { diff --git a/tests/integration/metrics_test.go b/tests/integration/metrics_test.go index 8212bb773eb1..1fc1117c52e5 100644 --- a/tests/integration/metrics_test.go +++ b/tests/integration/metrics_test.go @@ -40,9 +40,7 @@ func TestMetricDbSizeBoot(t *testing.T) { v, err := clus.Members[0].Metric("etcd_debugging_mvcc_db_total_size_in_bytes") require.NoError(t, err) - if v == "0" { - t.Fatalf("expected non-zero, got %q", v) - } + require.NotEqualf(t, "0", v, "expected non-zero, got %q", v) } func TestMetricDbSizeDefrag(t *testing.T) { @@ -75,16 +73,12 @@ func testMetricDbSizeDefrag(t *testing.T, name string) { require.NoError(t, err) bv, err := strconv.Atoi(beforeDefrag) require.NoError(t, err) - if bv < expected { - t.Fatalf("expected db size greater than %d, got %d", expected, bv) - } + require.GreaterOrEqualf(t, bv, expected, "expected db size greater than %d, got %d", expected, bv) beforeDefragInUse, err := clus.Members[0].Metric("etcd_mvcc_db_total_size_in_use_in_bytes") require.NoError(t, err) biu, err := strconv.Atoi(beforeDefragInUse) require.NoError(t, err) - if biu < expected { - t.Fatalf("expected db size in use is greater than %d, got %d", expected, biu) - } + require.GreaterOrEqualf(t, biu, expected, "expected db size in use is greater than %d, got %d", expected, biu) // clear out historical keys, in use bytes should free pages creq := &pb.CompactionRequest{Revision: int64(numPuts), Physical: true} @@ -116,9 +110,7 @@ func testMetricDbSizeDefrag(t *testing.T, name string) { break } retry++ - if retry >= maxRetry { - t.Fatalf("%v", err.Error()) - } + require.Lessf(t, retry, maxRetry, "%v", err.Error()) } // defrag should give freed space back to fs @@ -128,17 +120,13 @@ func testMetricDbSizeDefrag(t *testing.T, name string) { require.NoError(t, err) av, err := strconv.Atoi(afterDefrag) require.NoError(t, err) - if bv <= av { - t.Fatalf("expected less than %d, got %d after defrag", bv, av) - } + require.Greaterf(t, bv, av, "expected less than %d, got %d after defrag", bv, av) afterDefragInUse, err := clus.Members[0].Metric("etcd_mvcc_db_total_size_in_use_in_bytes") require.NoError(t, err) adiu, err := strconv.Atoi(afterDefragInUse) require.NoError(t, err) - if adiu > av { - t.Fatalf("db size in use (%d) is expected less than db size (%d) after defrag", adiu, av) - } + require.LessOrEqualf(t, adiu, av, "db size in use (%d) is expected less than db size (%d) after defrag", adiu, av) } func TestMetricQuotaBackendBytes(t *testing.T) { @@ -150,9 +138,7 @@ func TestMetricQuotaBackendBytes(t *testing.T) { require.NoError(t, err) qv, err := strconv.ParseFloat(qs, 64) require.NoError(t, err) - if int64(qv) != storage.DefaultQuotaBytes { - t.Fatalf("expected %d, got %f", storage.DefaultQuotaBytes, qv) - } + require.Equalf(t, storage.DefaultQuotaBytes, int64(qv), "expected %d, got %f", storage.DefaultQuotaBytes, qv) } func TestMetricsHealth(t *testing.T) { @@ -174,9 +160,7 @@ func TestMetricsHealth(t *testing.T) { hv, err := clus.Members[0].Metric("etcd_server_health_failures") require.NoError(t, err) - if hv != "0" { - t.Fatalf("expected '0' from etcd_server_health_failures, got %q", hv) - } + require.Equalf(t, "0", hv, "expected '0' from etcd_server_health_failures, got %q", hv) } func TestMetricsRangeDurationSeconds(t *testing.T) { diff --git a/tests/integration/network_partition_test.go b/tests/integration/network_partition_test.go index 059e93762667..8c24fce2f27a 100644 --- a/tests/integration/network_partition_test.go +++ b/tests/integration/network_partition_test.go @@ -19,6 +19,8 @@ import ( "testing" "time" + "github.com/stretchr/testify/require" + "go.etcd.io/etcd/tests/v3/framework/integration" ) @@ -65,9 +67,7 @@ func TestNetworkPartition5MembersLeaderInMajority(t *testing.T) { } t.Logf("[%d] got %v", i, err) } - if err != nil { - t.Fatalf("failed after 3 tries (%v)", err) - } + require.NoErrorf(t, err, "failed after 3 tries (%v)", err) } func testNetworkPartition5MembersLeaderInMajority(t *testing.T) error { diff --git a/tests/integration/proxy/grpcproxy/cluster_test.go b/tests/integration/proxy/grpcproxy/cluster_test.go index ca2fcb506b37..da0c58624f09 100644 --- a/tests/integration/proxy/grpcproxy/cluster_test.go +++ b/tests/integration/proxy/grpcproxy/cluster_test.go @@ -52,9 +52,7 @@ func TestClusterProxyMemberList(t *testing.T) { DialTimeout: 5 * time.Second, } client, err := integration2.NewClient(t, cfg) - if err != nil { - t.Fatalf("err %v, want nil", err) - } + require.NoErrorf(t, err, "err %v, want nil", err) defer client.Close() // wait some time for register-loop to write keys @@ -62,16 +60,10 @@ func TestClusterProxyMemberList(t *testing.T) { var mresp *clientv3.MemberListResponse mresp, err = client.Cluster.MemberList(context.Background()) - if err != nil { - t.Fatalf("err %v, want nil", err) - } + require.NoErrorf(t, err, "err %v, want nil", err) - if len(mresp.Members) != 1 { - t.Fatalf("len(mresp.Members) expected 1, got %d (%+v)", len(mresp.Members), mresp.Members) - } - if len(mresp.Members[0].ClientURLs) != 1 { - t.Fatalf("len(mresp.Members[0].ClientURLs) expected 1, got %d (%+v)", len(mresp.Members[0].ClientURLs), mresp.Members[0].ClientURLs[0]) - } + require.Lenf(t, mresp.Members, 1, "len(mresp.Members) expected 1, got %d (%+v)", len(mresp.Members), mresp.Members) + require.Lenf(t, mresp.Members[0].ClientURLs, 1, "len(mresp.Members[0].ClientURLs) expected 1, got %d (%+v)", len(mresp.Members[0].ClientURLs), mresp.Members[0].ClientURLs[0]) assert.Contains(t, mresp.Members, &pb.Member{Name: hostname, ClientURLs: []string{cts.caddr}}) // test proxy member add @@ -82,12 +74,8 @@ func TestClusterProxyMemberList(t *testing.T) { // check add member succ mresp, err = client.Cluster.MemberList(context.Background()) - if err != nil { - t.Fatalf("err %v, want nil", err) - } - if len(mresp.Members) != 2 { - t.Fatalf("len(mresp.Members) expected 2, got %d (%+v)", len(mresp.Members), mresp.Members) - } + require.NoErrorf(t, err, "err %v, want nil", err) + require.Lenf(t, mresp.Members, 2, "len(mresp.Members) expected 2, got %d (%+v)", len(mresp.Members), mresp.Members) assert.Contains(t, mresp.Members, &pb.Member{Name: hostname, ClientURLs: []string{newMemberAddr}}) // test proxy member delete @@ -97,12 +85,8 @@ func TestClusterProxyMemberList(t *testing.T) { // check delete member succ mresp, err = client.Cluster.MemberList(context.Background()) - if err != nil { - t.Fatalf("err %v, want nil", err) - } - if len(mresp.Members) != 1 { - t.Fatalf("len(mresp.Members) expected 1, got %d (%+v)", len(mresp.Members), mresp.Members) - } + require.NoErrorf(t, err, "err %v, want nil", err) + require.Lenf(t, mresp.Members, 1, "len(mresp.Members) expected 1, got %d (%+v)", len(mresp.Members), mresp.Members) assert.Contains(t, mresp.Members, &pb.Member{Name: hostname, ClientURLs: []string{cts.caddr}}) } @@ -162,10 +146,7 @@ func newClusterProxyServer(lg *zap.Logger, endpoints []string, prefix string, t func deregisterMember(c *clientv3.Client, prefix, addr string, t *testing.T) { em, err := endpoints.NewManager(c, prefix) - if err != nil { - t.Fatalf("new endpoint manager failed, err %v", err) - } - if err = em.DeleteEndpoint(c.Ctx(), prefix+"/"+addr); err != nil { - t.Fatalf("delete endpoint failed, err %v", err) - } + require.NoErrorf(t, err, "new endpoint manager failed, err") + err = em.DeleteEndpoint(c.Ctx(), prefix+"/"+addr) + require.NoErrorf(t, err, "delete endpoint failed, err") } diff --git a/tests/integration/proxy/grpcproxy/kv_test.go b/tests/integration/proxy/grpcproxy/kv_test.go index b871eca95ea8..00bb326ffb2a 100644 --- a/tests/integration/proxy/grpcproxy/kv_test.go +++ b/tests/integration/proxy/grpcproxy/kv_test.go @@ -44,13 +44,9 @@ func TestKVProxyRange(t *testing.T) { DialTimeout: 5 * time.Second, } client, err := integration2.NewClient(t, cfg) - if err != nil { - t.Fatalf("err = %v, want nil", err) - } + require.NoErrorf(t, err, "err = %v, want nil", err) _, err = client.Get(context.Background(), "foo") - if err != nil { - t.Fatalf("err = %v, want nil", err) - } + require.NoErrorf(t, err, "err = %v, want nil", err) client.Close() } diff --git a/tests/integration/proxy/grpcproxy/register_test.go b/tests/integration/proxy/grpcproxy/register_test.go index a0fb5272c52d..855975360802 100644 --- a/tests/integration/proxy/grpcproxy/register_test.go +++ b/tests/integration/proxy/grpcproxy/register_test.go @@ -18,6 +18,7 @@ import ( "testing" "time" + "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" clientv3 "go.etcd.io/etcd/client/v3" @@ -40,12 +41,8 @@ func TestRegister(t *testing.T) { donec := grpcproxy.Register(zaptest.NewLogger(t), cli, testPrefix, paddr, 5) ups := <-wa - if len(ups) != 1 { - t.Fatalf("len(ups) expected 1, got %d (%v)", len(ups), ups) - } - if ups[0].Endpoint.Addr != paddr { - t.Fatalf("ups[0].Addr expected %q, got %q", paddr, ups[0].Endpoint.Addr) - } + require.Lenf(t, ups, 1, "len(ups) expected 1, got %d (%v)", len(ups), ups) + require.Equalf(t, ups[0].Endpoint.Addr, paddr, "ups[0].Addr expected %q, got %q", paddr, ups[0].Endpoint.Addr) cli.Close() clus.TakeClient(0) @@ -58,12 +55,8 @@ func TestRegister(t *testing.T) { func mustCreateWatcher(t *testing.T, c *clientv3.Client, prefix string) endpoints.WatchChannel { em, err := endpoints.NewManager(c, prefix) - if err != nil { - t.Fatalf("failed to create endpoints.Manager: %v", err) - } + require.NoErrorf(t, err, "failed to create endpoints.Manager") wc, err := em.NewWatchChannel(c.Ctx()) - if err != nil { - t.Fatalf("failed to resolve %q (%v)", prefix, err) - } + require.NoErrorf(t, err, "failed to resolve %q", prefix) return wc } diff --git a/tests/integration/revision_test.go b/tests/integration/revision_test.go index fd53cfb37b41..49ce4d21468f 100644 --- a/tests/integration/revision_test.go +++ b/tests/integration/revision_test.go @@ -132,9 +132,7 @@ func getWorker(ctx context.Context, t *testing.T, clus *integration.Cluster) { if resp == nil { continue } - if prevRev > resp.Header.Revision { - t.Fatalf("rev is less than previously observed revision, rev: %d, prevRev: %d", resp.Header.Revision, prevRev) - } + require.LessOrEqualf(t, prevRev, resp.Header.Revision, "rev is less than previously observed revision, rev: %d, prevRev: %d", resp.Header.Revision, prevRev) prevRev = resp.Header.Revision } } diff --git a/tests/integration/snapshot/member_test.go b/tests/integration/snapshot/member_test.go index be419efdc27c..1c889df75436 100644 --- a/tests/integration/snapshot/member_test.go +++ b/tests/integration/snapshot/member_test.go @@ -93,9 +93,7 @@ func TestSnapshotV3RestoreMultiMemberAdd(t *testing.T) { mresp, err := cli2.MemberList(ctx) cancel() require.NoError(t, err) - if len(mresp.Members) != 4 { - t.Fatalf("expected 4 members, got %+v", mresp) - } + require.Lenf(t, mresp.Members, 4, "expected 4 members, got %+v", mresp) // make sure restored cluster has kept all data on recovery var gresp *clientv3.GetResponse @@ -104,11 +102,7 @@ func TestSnapshotV3RestoreMultiMemberAdd(t *testing.T) { cancel() require.NoError(t, err) for i := range gresp.Kvs { - if string(gresp.Kvs[i].Key) != kvs[i].k { - t.Fatalf("#%d: key expected %s, got %s", i, kvs[i].k, gresp.Kvs[i].Key) - } - if string(gresp.Kvs[i].Value) != kvs[i].v { - t.Fatalf("#%d: value expected %s, got %s", i, kvs[i].v, gresp.Kvs[i].Value) - } + require.Equalf(t, string(gresp.Kvs[i].Key), kvs[i].k, "#%d: key expected %s, got %s", i, kvs[i].k, gresp.Kvs[i].Key) + require.Equalf(t, string(gresp.Kvs[i].Value), kvs[i].v, "#%d: value expected %s, got %s", i, kvs[i].v, gresp.Kvs[i].Value) } } diff --git a/tests/integration/snapshot/v3_snapshot_test.go b/tests/integration/snapshot/v3_snapshot_test.go index 28b9e1a7a651..3db715919422 100644 --- a/tests/integration/snapshot/v3_snapshot_test.go +++ b/tests/integration/snapshot/v3_snapshot_test.go @@ -90,9 +90,7 @@ func TestSnapshotV3RestoreSingle(t *testing.T) { var gresp *clientv3.GetResponse gresp, err = cli.Get(context.Background(), kvs[i].k) require.NoError(t, err) - if string(gresp.Kvs[0].Value) != kvs[i].v { - t.Fatalf("#%d: value expected %s, got %s", i, kvs[i].v, gresp.Kvs[0].Value) - } + require.Equalf(t, string(gresp.Kvs[0].Value), kvs[i].v, "#%d: value expected %s, got %s", i, kvs[i].v, gresp.Kvs[0].Value) } } @@ -123,9 +121,7 @@ func TestSnapshotV3RestoreMulti(t *testing.T) { var gresp *clientv3.GetResponse gresp, err = cli.Get(context.Background(), kvs[i].k) require.NoError(t, err) - if string(gresp.Kvs[0].Value) != kvs[i].v { - t.Fatalf("#%d: value expected %s, got %s", i, kvs[i].v, gresp.Kvs[0].Value) - } + require.Equalf(t, string(gresp.Kvs[0].Value), kvs[i].v, "#%d: value expected %s, got %s", i, kvs[i].v, gresp.Kvs[0].Value) } } } @@ -137,12 +133,11 @@ func TestCorruptedBackupFileCheck(t *testing.T) { } dbPath := testutils.MustAbsPath("testdata/corrupted_backup.db") integration2.BeforeTest(t) - if _, err := os.Stat(dbPath); err != nil { - t.Fatalf("test file [%s] does not exist: %v", dbPath, err) - } + _, err := os.Stat(dbPath) + require.NoErrorf(t, err, "test file [%s] does not exist: %v", dbPath, err) sp := snapshot.NewV3(zaptest.NewLogger(t)) - _, err := sp.Status(dbPath) + _, err = sp.Status(dbPath) expectedErrKeywords := "snapshot file integrity check failed" /* example error message: snapshot file integrity check failed. 2 errors found. diff --git a/tests/integration/v2store/store_test.go b/tests/integration/v2store/store_test.go index 842b57deb62a..73f8fae83c8b 100644 --- a/tests/integration/v2store/store_test.go +++ b/tests/integration/v2store/store_test.go @@ -101,7 +101,7 @@ func TestSet(t *testing.T) { assert.Equal(t, "set", e.Action) assert.Equal(t, "/foo", e.Node.Key) assert.False(t, e.Node.Dir) - assert.Equal(t, "", *e.Node.Value) + assert.Empty(t, *e.Node.Value) assert.Nil(t, e.Node.Nodes) assert.Nil(t, e.Node.Expiration) assert.Equal(t, int64(0), e.Node.TTL) @@ -123,7 +123,7 @@ func TestSet(t *testing.T) { // check prevNode require.NotNil(t, e.PrevNode) assert.Equal(t, "/foo", e.PrevNode.Key) - assert.Equal(t, "", *e.PrevNode.Value) + assert.Empty(t, *e.PrevNode.Value) assert.Equal(t, uint64(1), e.PrevNode.ModifiedIndex) // Set /foo="baz" (for testing prevNode) eidx = 3 @@ -198,7 +198,7 @@ func TestStoreCreateValue(t *testing.T) { assert.Equal(t, "create", e.Action) assert.Equal(t, "/empty", e.Node.Key) assert.False(t, e.Node.Dir) - assert.Equal(t, "", *e.Node.Value) + assert.Empty(t, *e.Node.Value) assert.Nil(t, e.Node.Nodes) assert.Nil(t, e.Node.Expiration) assert.Equal(t, int64(0), e.Node.TTL) @@ -271,7 +271,7 @@ func TestStoreUpdateValue(t *testing.T) { assert.Equal(t, "update", e.Action) assert.Equal(t, "/foo", e.Node.Key) assert.False(t, e.Node.Dir) - assert.Equal(t, "", *e.Node.Value) + assert.Empty(t, *e.Node.Value) assert.Equal(t, int64(0), e.Node.TTL) assert.Equal(t, uint64(3), e.Node.ModifiedIndex) // check prevNode @@ -282,7 +282,7 @@ func TestStoreUpdateValue(t *testing.T) { e, _ = s.Get("/foo", false, false) assert.Equal(t, eidx, e.EtcdIndex) - assert.Equal(t, "", *e.Node.Value) + assert.Empty(t, *e.Node.Value) } // TestStoreUpdateFailsIfDirectory ensures that the store cannot update a directory. diff --git a/tests/integration/v3_alarm_test.go b/tests/integration/v3_alarm_test.go index 0f723b8f2c91..9c1f7f152d05 100644 --- a/tests/integration/v3_alarm_test.go +++ b/tests/integration/v3_alarm_test.go @@ -110,23 +110,20 @@ func TestV3StorageQuotaApply(t *testing.T) { defer cancel() // small quota machine should reject put - if _, err := kvc0.Put(ctx, &pb.PutRequest{Key: key, Value: smallbuf}); err == nil { - t.Fatalf("past-quota instance should reject put") - } + _, err = kvc0.Put(ctx, &pb.PutRequest{Key: key, Value: smallbuf}) + require.Errorf(t, err, "past-quota instance should reject put") // large quota machine should reject put - if _, err := kvc1.Put(ctx, &pb.PutRequest{Key: key, Value: smallbuf}); err == nil { - t.Fatalf("past-quota instance should reject put") - } + _, err = kvc1.Put(ctx, &pb.PutRequest{Key: key, Value: smallbuf}) + require.Errorf(t, err, "past-quota instance should reject put") // reset large quota node to ensure alarm persisted clus.Members[1].Stop(t) clus.Members[1].Restart(t) clus.WaitMembersForLeader(t, clus.Members) - if _, err := kvc1.Put(context.TODO(), &pb.PutRequest{Key: key, Value: smallbuf}); err == nil { - t.Fatalf("alarmed instance should reject put after reset") - } + _, err = kvc1.Put(context.TODO(), &pb.PutRequest{Key: key, Value: smallbuf}) + require.Errorf(t, err, "alarmed instance should reject put after reset") } // TestV3AlarmDeactivate ensures that space alarms can be deactivated so puts go through. @@ -221,9 +218,7 @@ func TestV3CorruptAlarm(t *testing.T) { resp1, err1 := clus.Client(1).Get(context.TODO(), "abc") require.NoError(t, err1) - if resp0.Kvs[0].ModRevision == resp1.Kvs[0].ModRevision { - t.Fatalf("matching ModRevision values") - } + require.NotEqualf(t, resp0.Kvs[0].ModRevision, resp1.Kvs[0].ModRevision, "matching ModRevision values") for i := 0; i < 5; i++ { presp, perr := clus.Client(0).Put(context.TODO(), "abc", "aaa") @@ -307,9 +302,7 @@ func TestV3CorruptAlarmWithLeaseCorrupted(t *testing.T) { resp1, err1 := clus.Members[2].Client.KV.Get(context.TODO(), "foo") require.NoError(t, err1) - if resp0.Header.Revision == resp1.Header.Revision { - t.Fatalf("matching Revision values") - } + require.NotEqualf(t, resp0.Header.Revision, resp1.Header.Revision, "matching Revision values") // Wait for CorruptCheckTime time.Sleep(time.Second) diff --git a/tests/integration/v3_auth_test.go b/tests/integration/v3_auth_test.go index 84175720e92a..0fc2a94eb9f0 100644 --- a/tests/integration/v3_auth_test.go +++ b/tests/integration/v3_auth_test.go @@ -44,9 +44,7 @@ func TestV3AuthEmptyUserGet(t *testing.T) { authSetupRoot(t, api.Auth) _, err := api.KV.Range(ctx, &pb.RangeRequest{Key: []byte("abc")}) - if !eqErrGRPC(err, rpctypes.ErrUserEmpty) { - t.Fatalf("got %v, expected %v", err, rpctypes.ErrUserEmpty) - } + require.Truef(t, eqErrGRPC(err, rpctypes.ErrUserEmpty), "got %v, expected %v", err, rpctypes.ErrUserEmpty) } // TestV3AuthEmptyUserPut ensures that a put with an empty user will return an empty user error, @@ -70,9 +68,7 @@ func TestV3AuthEmptyUserPut(t *testing.T) { // cluster terminating. for i := 0; i < 10; i++ { _, err := api.KV.Put(ctx, &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}) - if !eqErrGRPC(err, rpctypes.ErrUserEmpty) { - t.Fatalf("got %v, expected %v", err, rpctypes.ErrUserEmpty) - } + require.Truef(t, eqErrGRPC(err, rpctypes.ErrUserEmpty), "got %v, expected %v", err, rpctypes.ErrUserEmpty) } } @@ -124,9 +120,7 @@ func TestV3AuthRevision(t *testing.T) { aresp, aerr := api.Auth.UserAdd(ctx, &pb.AuthUserAddRequest{Name: "root", Password: "123", Options: &authpb.UserAddOptions{NoPassword: false}}) cancel() require.NoError(t, aerr) - if aresp.Header.Revision != rev { - t.Fatalf("revision expected %d, got %d", rev, aresp.Header.Revision) - } + require.Equalf(t, aresp.Header.Revision, rev, "revision expected %d, got %d", rev, aresp.Header.Revision) } // TestV3AuthWithLeaseRevokeWithRoot ensures that granted leases @@ -413,16 +407,12 @@ func TestV3AuthNonAuthorizedRPCs(t *testing.T) { key := "foo" val := "bar" _, err := nonAuthedKV.Put(context.TODO(), key, val) - if err != nil { - t.Fatalf("couldn't put key (%v)", err) - } + require.NoErrorf(t, err, "couldn't put key (%v)", err) authSetupRoot(t, integration.ToGRPC(clus.Client(0)).Auth) respput, err := nonAuthedKV.Put(context.TODO(), key, val) - if !eqErrGRPC(err, rpctypes.ErrGRPCUserEmpty) { - t.Fatalf("could put key (%v), it should cause an error of permission denied", respput) - } + require.Truef(t, eqErrGRPC(err, rpctypes.ErrGRPCUserEmpty), "could put key (%v), it should cause an error of permission denied", respput) } func TestV3AuthNestedTxnPermissionDenied(t *testing.T) { @@ -569,9 +559,7 @@ func TestV3AuthWatchErrorAndWatchId0(t *testing.T) { require.Error(t, watchResponse.Err()) // permission denied _, err := c.Put(ctx, "k1", "val") - if err != nil { - t.Fatalf("Unexpected error from Put: %v", err) - } + require.NoErrorf(t, err, "Unexpected error from Put: %v", err) <-watchEndCh } diff --git a/tests/integration/v3_election_test.go b/tests/integration/v3_election_test.go index 94665dca613a..d1d7e48d21a1 100644 --- a/tests/integration/v3_election_test.go +++ b/tests/integration/v3_election_test.go @@ -132,19 +132,14 @@ func TestElectionFailover(t *testing.T) { // first leader (elected) e := concurrency.NewElection(ss[0], "test-election") - if err := e.Campaign(context.TODO(), "foo"); err != nil { - t.Fatalf("failed volunteer (%v)", err) - } + err := e.Campaign(context.TODO(), "foo") + require.NoErrorf(t, err, "failed volunteer") // check first leader resp, ok := <-e.Observe(cctx) - if !ok { - t.Fatalf("could not wait for first election; channel closed") - } + require.Truef(t, ok, "could not wait for first election; channel closed") s := string(resp.Kvs[0].Value) - if s != "foo" { - t.Fatalf("wrong election result. got %s, wanted foo", s) - } + require.Equalf(t, "foo", s, "wrong election result. got %s, wanted foo", s) // next leader electedErrC := make(chan error, 1) @@ -155,19 +150,15 @@ func TestElectionFailover(t *testing.T) { }() // invoke leader failover - err := ss[0].Close() + err = ss[0].Close() require.NoError(t, err) // check new leader e = concurrency.NewElection(ss[2], "test-election") resp, ok = <-e.Observe(cctx) - if !ok { - t.Fatalf("could not wait for second election; channel closed") - } + require.Truef(t, ok, "could not wait for second election; channel closed") s = string(resp.Kvs[0].Value) - if s != "bar" { - t.Fatalf("wrong election result. got %s, wanted bar", s) - } + require.Equalf(t, "bar", s, "wrong election result. got %s, wanted bar", s) // leader must ack election (otherwise, Campaign may see closed conn) eer := <-electedErrC @@ -288,9 +279,7 @@ func TestElectionObserveCompacted(t *testing.T) { if !ok { t.Fatal("failed to observe on compacted revision") } - if string(v.Kvs[0].Value) != "abc" { - t.Fatalf(`expected leader value "abc", got %q`, string(v.Kvs[0].Value)) - } + require.Equalf(t, "abc", string(v.Kvs[0].Value), `expected leader value "abc", got %q`, string(v.Kvs[0].Value)) } // TestElectionWithAuthEnabled verifies the election interface when auth is enabled. diff --git a/tests/integration/v3_failover_test.go b/tests/integration/v3_failover_test.go index f9d71ffdaeef..03b829b74798 100644 --- a/tests/integration/v3_failover_test.go +++ b/tests/integration/v3_failover_test.go @@ -61,9 +61,7 @@ func TestFailover(t *testing.T) { // Create an etcd client before or after first server down t.Logf("Creating an etcd client [%s]", tc.name) cli, err := tc.testFunc(t, cc, clus) - if err != nil { - t.Fatalf("Failed to create client: %v", err) - } + require.NoErrorf(t, err, "Failed to create client") defer cli.Close() // Sanity test @@ -142,12 +140,8 @@ func getWithRetries(t *testing.T, cli *clientv3.Client, key, val string, retryCo t.Logf("Failed to get key (%v)", getErr) return getErr } - if len(resp.Kvs) != 1 { - t.Fatalf("Expected 1 key, got %d", len(resp.Kvs)) - } - if !bytes.Equal([]byte(val), resp.Kvs[0].Value) { - t.Fatalf("Unexpected value, expected: %s, got: %s", val, resp.Kvs[0].Value) - } + require.Lenf(t, resp.Kvs, 1, "Expected 1 key, got %d", len(resp.Kvs)) + require.Truef(t, bytes.Equal([]byte(val), resp.Kvs[0].Value), "Unexpected value, expected: %s, got: %s", val, resp.Kvs[0].Value) return nil }() if err != nil { diff --git a/tests/integration/v3_grpc_test.go b/tests/integration/v3_grpc_test.go index fdf4d14b7307..f7c331a5596a 100644 --- a/tests/integration/v3_grpc_test.go +++ b/tests/integration/v3_grpc_test.go @@ -52,32 +52,22 @@ func TestV3PutOverwrite(t *testing.T) { reqput := &pb.PutRequest{Key: key, Value: []byte("bar"), PrevKv: true} respput, err := kvc.Put(context.TODO(), reqput) - if err != nil { - t.Fatalf("couldn't put key (%v)", err) - } + require.NoErrorf(t, err, "couldn't put key") // overwrite reqput.Value = []byte("baz") respput2, err := kvc.Put(context.TODO(), reqput) - if err != nil { - t.Fatalf("couldn't put key (%v)", err) - } - if respput2.Header.Revision <= respput.Header.Revision { - t.Fatalf("expected newer revision on overwrite, got %v <= %v", - respput2.Header.Revision, respput.Header.Revision) - } + require.NoErrorf(t, err, "couldn't put key") + require.Greaterf(t, respput2.Header.Revision, respput.Header.Revision, "expected newer revision on overwrite, got %v <= %v", + respput2.Header.Revision, respput.Header.Revision) if pkv := respput2.PrevKv; pkv == nil || string(pkv.Value) != "bar" { t.Fatalf("expected PrevKv=bar, got response %+v", respput2) } reqrange := &pb.RangeRequest{Key: key} resprange, err := kvc.Range(context.TODO(), reqrange) - if err != nil { - t.Fatalf("couldn't get key (%v)", err) - } - if len(resprange.Kvs) != 1 { - t.Fatalf("expected 1 key, got %v", len(resprange.Kvs)) - } + require.NoErrorf(t, err, "couldn't get key") + require.Lenf(t, resprange.Kvs, 1, "expected 1 key, got %v", len(resprange.Kvs)) kv := resprange.Kvs[0] if kv.ModRevision <= kv.CreateRevision { @@ -107,9 +97,7 @@ func TestV3PutRestart(t *testing.T) { clus.Members[stopIdx].Stop(t) clus.Members[stopIdx].Restart(t) c, cerr := integration.NewClientV3(clus.Members[stopIdx]) - if cerr != nil { - t.Fatalf("cannot create client: %v", cerr) - } + require.NoErrorf(t, cerr, "cannot create client") clus.Members[stopIdx].ServerClient = c ctx, cancel := context.WithTimeout(context.TODO(), 10*time.Second) @@ -130,28 +118,21 @@ func TestV3CompactCurrentRev(t *testing.T) { kvc := integration.ToGRPC(clus.RandClient()).KV preq := &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")} for i := 0; i < 3; i++ { - if _, err := kvc.Put(context.Background(), preq); err != nil { - t.Fatalf("couldn't put key (%v)", err) - } + _, err := kvc.Put(context.Background(), preq) + require.NoErrorf(t, err, "couldn't put key") } // get key to add to proxy cache, if any _, err := kvc.Range(context.TODO(), &pb.RangeRequest{Key: []byte("foo")}) require.NoError(t, err) // compact on current revision _, err = kvc.Compact(context.Background(), &pb.CompactionRequest{Revision: 4}) - if err != nil { - t.Fatalf("couldn't compact kv space (%v)", err) - } + require.NoErrorf(t, err, "couldn't compact kv space") // key still exists when linearized? _, err = kvc.Range(context.Background(), &pb.RangeRequest{Key: []byte("foo")}) - if err != nil { - t.Fatalf("couldn't get key after compaction (%v)", err) - } + require.NoErrorf(t, err, "couldn't get key after compaction") // key still exists when serialized? _, err = kvc.Range(context.Background(), &pb.RangeRequest{Key: []byte("foo"), Serializable: true}) - if err != nil { - t.Fatalf("couldn't get serialized key after compaction (%v)", err) - } + require.NoErrorf(t, err, "couldn't get serialized key after compaction") } // TestV3HashKV ensures that multiple calls of HashKV on same node return same hash and compact rev. From 9484cf5a36c3cf5238c7953a6b61c0fc6cb685ba Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 27 Mar 2025 09:21:10 +0100 Subject: [PATCH 0071/1068] Pass a non-infinite returnTime in history patching tests Since we use MaxInt64 to represent infinite for failed transactions, there is no need to provide some infinite ourselves. We can just pass returnTime observed by client and expect it will be set to infinite during preparation step. Signed-off-by: Marek Siarkowicz --- .../robustness/validate/patch_history_test.go | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/tests/robustness/validate/patch_history_test.go b/tests/robustness/validate/patch_history_test.go index 9c1f8106b6bb..fa6c6ba6e5aa 100644 --- a/tests/robustness/validate/patch_history_test.go +++ b/tests/robustness/validate/patch_history_test.go @@ -65,7 +65,7 @@ func TestPatchHistory(t *testing.T) { { name: "failed put remains if there is a matching event, return time untouched", historyFunc: func(h *model.AppendableHistory) { - h.AppendPut("key", "value", 100, infinite, nil, errors.New("failed")) + h.AppendPut("key", "value", 100, 200, nil, errors.New("failed")) }, persistedRequest: []model.EtcdRequest{ putRequest("key", "value"), @@ -77,7 +77,7 @@ func TestPatchHistory(t *testing.T) { { name: "failed put remains if there is a matching event, uniqueness allows for return time to be based on next persisted request", historyFunc: func(h *model.AppendableHistory) { - h.AppendPut("key1", "value", 100, infinite, nil, errors.New("failed")) + h.AppendPut("key1", "value", 100, 200, nil, errors.New("failed")) h.AppendPut("key2", "value", 300, 400, &clientv3.PutResponse{}, nil) }, persistedRequest: []model.EtcdRequest{ @@ -92,7 +92,7 @@ func TestPatchHistory(t *testing.T) { { name: "failed put remains if there is a matching persisted request, uniqueness allows for revision and return time to be based on watch", historyFunc: func(h *model.AppendableHistory) { - h.AppendPut("key", "value", 100, infinite, nil, errors.New("failed")) + h.AppendPut("key", "value", 100, 200, nil, errors.New("failed")) }, persistedRequest: []model.EtcdRequest{ putRequest("key", "value"), @@ -122,7 +122,7 @@ func TestPatchHistory(t *testing.T) { name: "failed put is dropped if event has different key", historyFunc: func(h *model.AppendableHistory) { h.AppendPut("key2", "value", 100, 200, &clientv3.PutResponse{}, nil) - h.AppendPut("key1", "value", 300, infinite, nil, errors.New("failed")) + h.AppendPut("key1", "value", 300, 400, nil, errors.New("failed")) }, persistedRequest: []model.EtcdRequest{ putRequest("key2", "value"), @@ -135,7 +135,7 @@ func TestPatchHistory(t *testing.T) { name: "failed put is dropped if event has different value", historyFunc: func(h *model.AppendableHistory) { h.AppendPut("key", "value2", 100, 200, &clientv3.PutResponse{}, nil) - h.AppendPut("key", "value1", 300, infinite, nil, errors.New("failed")) + h.AppendPut("key", "value1", 300, 400, nil, errors.New("failed")) }, persistedRequest: []model.EtcdRequest{ putRequest("key", "value2"), @@ -147,7 +147,7 @@ func TestPatchHistory(t *testing.T) { { name: "failed put with lease remains if there is a matching event, return time untouched", historyFunc: func(h *model.AppendableHistory) { - h.AppendPutWithLease("key", "value", 123, 100, infinite, nil, errors.New("failed")) + h.AppendPutWithLease("key", "value", 123, 100, 200, nil, errors.New("failed")) }, persistedRequest: []model.EtcdRequest{ putRequestWithLease("key", "value", 123), @@ -159,7 +159,7 @@ func TestPatchHistory(t *testing.T) { { name: "failed put with lease remains if there is a matching event, uniqueness allows return time to be based on next persisted request", historyFunc: func(h *model.AppendableHistory) { - h.AppendPutWithLease("key1", "value", 123, 100, infinite, nil, errors.New("failed")) + h.AppendPutWithLease("key1", "value", 123, 100, 200, nil, errors.New("failed")) h.AppendPutWithLease("key2", "value", 234, 300, 400, &clientv3.PutResponse{}, nil) }, persistedRequest: []model.EtcdRequest{ @@ -203,14 +203,14 @@ func TestPatchHistory(t *testing.T) { { name: "failed put is dropped", historyFunc: func(h *model.AppendableHistory) { - h.AppendPut("key", "value", 100, infinite, nil, errors.New("failed")) + h.AppendPut("key", "value", 100, 200, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{}, }, { name: "failed put with lease is dropped", historyFunc: func(h *model.AppendableHistory) { - h.AppendPutWithLease("key", "value", 123, 100, infinite, nil, errors.New("failed")) + h.AppendPutWithLease("key", "value", 123, 100, 200, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{}, }, @@ -226,7 +226,7 @@ func TestPatchHistory(t *testing.T) { { name: "failed delete remains, time untouched regardless of persisted event and watch", historyFunc: func(h *model.AppendableHistory) { - h.AppendDelete("key", 100, infinite, nil, errors.New("failed")) + h.AppendDelete("key", 100, 200, nil, errors.New("failed")) h.AppendPut("key", "value", 300, 400, &clientv3.PutResponse{}, nil) }, persistedRequest: []model.EtcdRequest{ @@ -241,21 +241,21 @@ func TestPatchHistory(t *testing.T) { { name: "failed empty txn is dropped", historyFunc: func(h *model.AppendableHistory) { - h.AppendTxn(nil, []clientv3.Op{}, []clientv3.Op{}, 100, infinite, nil, errors.New("failed")) + h.AppendTxn(nil, []clientv3.Op{}, []clientv3.Op{}, 100, 200, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{}, }, { name: "failed txn put is dropped", historyFunc: func(h *model.AppendableHistory) { - h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value")}, []clientv3.Op{}, 100, infinite, nil, errors.New("failed")) + h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value")}, []clientv3.Op{}, 100, 200, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{}, }, { name: "failed txn put remains if there is a matching event", historyFunc: func(h *model.AppendableHistory) { - h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value")}, []clientv3.Op{}, 100, infinite, nil, errors.New("failed")) + h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value")}, []clientv3.Op{}, 100, 200, nil, errors.New("failed")) }, persistedRequest: []model.EtcdRequest{ putRequest("key", "value"), @@ -267,7 +267,7 @@ func TestPatchHistory(t *testing.T) { { name: "failed txn delete remains", historyFunc: func(h *model.AppendableHistory) { - h.AppendTxn(nil, []clientv3.Op{clientv3.OpDelete("key")}, []clientv3.Op{}, 100, infinite, nil, errors.New("failed")) + h.AppendTxn(nil, []clientv3.Op{clientv3.OpDelete("key")}, []clientv3.Op{}, 100, 200, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{ {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, @@ -285,7 +285,7 @@ func TestPatchHistory(t *testing.T) { { name: "failed txn put/delete remains", historyFunc: func(h *model.AppendableHistory) { - h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value")}, []clientv3.Op{clientv3.OpDelete("key")}, 100, infinite, nil, errors.New("failed")) + h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value")}, []clientv3.Op{clientv3.OpDelete("key")}, 100, 200, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{ {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, @@ -294,7 +294,7 @@ func TestPatchHistory(t *testing.T) { { name: "failed txn delete/put remains", historyFunc: func(h *model.AppendableHistory) { - h.AppendTxn(nil, []clientv3.Op{clientv3.OpDelete("key")}, []clientv3.Op{clientv3.OpPut("key", "value")}, 100, infinite, nil, errors.New("failed")) + h.AppendTxn(nil, []clientv3.Op{clientv3.OpDelete("key")}, []clientv3.Op{clientv3.OpPut("key", "value")}, 100, 200, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{ {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, @@ -303,14 +303,14 @@ func TestPatchHistory(t *testing.T) { { name: "failed txn empty/put is dropped", historyFunc: func(h *model.AppendableHistory) { - h.AppendTxn(nil, []clientv3.Op{}, []clientv3.Op{clientv3.OpPut("key", "value")}, 100, infinite, nil, errors.New("failed")) + h.AppendTxn(nil, []clientv3.Op{}, []clientv3.Op{clientv3.OpPut("key", "value")}, 100, 200, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{}, }, { name: "failed txn empty/put remains if there is a matching event", historyFunc: func(h *model.AppendableHistory) { - h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value")}, []clientv3.Op{}, 100, infinite, nil, errors.New("failed")) + h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value")}, []clientv3.Op{}, 100, 200, nil, errors.New("failed")) }, persistedRequest: []model.EtcdRequest{ putRequest("key", "value"), @@ -322,7 +322,7 @@ func TestPatchHistory(t *testing.T) { { name: "failed put remains if there is a matching persisted request, uniqueness of this operation and following operation allows patching based on following operation", historyFunc: func(h *model.AppendableHistory) { - h.AppendPut("key1", "value1", 300, infinite, nil, errors.New("failed")) + h.AppendPut("key1", "value1", 300, 400, nil, errors.New("failed")) h.AppendPut("key2", "value2", 500, 600, &clientv3.PutResponse{}, nil) }, persistedRequest: []model.EtcdRequest{ @@ -338,7 +338,7 @@ func TestPatchHistory(t *testing.T) { name: "failed put remains if there is a matching persisted request, lack of uniqueness of this operation prevents patching based on following operation", historyFunc: func(h *model.AppendableHistory) { h.AppendPut("key1", "value1", 100, 200, &clientv3.PutResponse{}, nil) - h.AppendPut("key1", "value1", 300, infinite, nil, errors.New("failed")) + h.AppendPut("key1", "value1", 300, 400, nil, errors.New("failed")) h.AppendPut("key2", "value2", 500, 600, &clientv3.PutResponse{}, nil) }, persistedRequest: []model.EtcdRequest{ @@ -356,7 +356,7 @@ func TestPatchHistory(t *testing.T) { name: "failed put remains if there is a matching persisted request, lack of uniqueness of following operation prevents patching based on following operation", historyFunc: func(h *model.AppendableHistory) { h.AppendPut("key2", "value2", 100, 200, &clientv3.PutResponse{}, nil) - h.AppendPut("key1", "value1", 300, infinite, nil, errors.New("failed")) + h.AppendPut("key1", "value1", 300, 400, nil, errors.New("failed")) h.AppendPut("key2", "value2", 500, 600, &clientv3.PutResponse{}, nil) }, persistedRequest: []model.EtcdRequest{ @@ -374,7 +374,7 @@ func TestPatchHistory(t *testing.T) { { name: "failed txn empty/delete remains", historyFunc: func(h *model.AppendableHistory) { - h.AppendTxn(nil, []clientv3.Op{}, []clientv3.Op{clientv3.OpDelete("key")}, 100, infinite, nil, errors.New("failed")) + h.AppendTxn(nil, []clientv3.Op{}, []clientv3.Op{clientv3.OpDelete("key")}, 100, 200, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{ {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, @@ -383,21 +383,21 @@ func TestPatchHistory(t *testing.T) { { name: "failed txn put&delete is dropped", historyFunc: func(h *model.AppendableHistory) { - h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value1"), clientv3.OpDelete("key")}, []clientv3.Op{}, 100, infinite, nil, errors.New("failed")) + h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value1"), clientv3.OpDelete("key")}, []clientv3.Op{}, 100, 200, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{}, }, { name: "failed txn empty/put&delete is dropped", historyFunc: func(h *model.AppendableHistory) { - h.AppendTxn(nil, []clientv3.Op{}, []clientv3.Op{clientv3.OpPut("key", "value1"), clientv3.OpDelete("key")}, 100, infinite, nil, errors.New("failed")) + h.AppendTxn(nil, []clientv3.Op{}, []clientv3.Op{clientv3.OpPut("key", "value1"), clientv3.OpDelete("key")}, 100, 200, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{}, }, { name: "failed txn put&delete/put&delete is dropped", historyFunc: func(h *model.AppendableHistory) { - h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value1"), clientv3.OpDelete("key")}, []clientv3.Op{clientv3.OpPut("key", "value2"), clientv3.OpDelete("key")}, 100, infinite, nil, errors.New("failed")) + h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value1"), clientv3.OpDelete("key")}, []clientv3.Op{clientv3.OpPut("key", "value2"), clientv3.OpDelete("key")}, 100, 200, nil, errors.New("failed")) }, expectedRemainingOperations: []porcupine.Operation{}, }, From eb0de0339e4b7eb02eca7d7ff8b3e3c8bf92d4ad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 18:40:17 +0000 Subject: [PATCH 0072/1068] build(deps): bump actions/setup-go from 5.3.0 to 5.4.0 Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.3.0 to 5.4.0. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/f111f3307d8850f501ac008e886eec1fd1932a34...0aaccfd150d50ccaeb58ebd88d36e91967a5f35b) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/measure-testgrid-flakiness.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/measure-testgrid-flakiness.yaml b/.github/workflows/measure-testgrid-flakiness.yaml index 67bdd68d39f0..b609620fa77f 100644 --- a/.github/workflows/measure-testgrid-flakiness.yaml +++ b/.github/workflows/measure-testgrid-flakiness.yaml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - id: goversion run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 + - uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 with: go-version: ${{ steps.goversion.outputs.goversion }} - env: From a60bb95d8d13d6317a89a236edc86936c52e2da1 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Thu, 27 Mar 2025 08:21:33 +0530 Subject: [PATCH 0073/1068] dependency: bump github.com/golangci/golangci-lint from 1.64.7 to 1.64.8 This commit will bump github.com/golangci/golangci-lint from 1.64.7 to 1.64.8 Signed-off-by: ArkaSaha30 --- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 75a37b27502c..100f7003ab4a 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -10,7 +10,7 @@ require ( github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint v1.64.7 + github.com/golangci/golangci-lint v1.64.8 github.com/google/addlicense v1.1.1 github.com/google/yamlfmt v0.16.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 77f53b00614a..643be7c8350e 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -168,8 +168,8 @@ github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUP github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint v1.64.7 h1:Xk1EyxoXqZabn5b4vnjNKSjCx1whBK53NP+mzLfX7HA= -github.com/golangci/golangci-lint v1.64.7/go.mod h1:5cEsUQBSr6zi8XI8OjmcY2Xmliqc4iYL7YoPrL+zLJ4= +github.com/golangci/golangci-lint v1.64.8 h1:y5TdeVidMtBGG32zgSC7ZXTFNHrsJkDnpO4ItB3Am+I= +github.com/golangci/golangci-lint v1.64.8/go.mod h1:5cEsUQBSr6zi8XI8OjmcY2Xmliqc4iYL7YoPrL+zLJ4= github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= From 5fe4744f032977cce523d7bf7c290cff16ea5458 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Thu, 27 Mar 2025 08:27:58 +0530 Subject: [PATCH 0074/1068] dependency: bump go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc from 0.59.0 to 0.60.0 This commit will bump go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc from 0.59.0 to 0.60.0 Signed-off-by: ArkaSaha30 --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index b705fba8d2cf..3cf99eca7b20 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -73,7 +73,7 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 3a37396a313b..d230a2573fe1 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -104,8 +104,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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= diff --git a/go.mod b/go.mod index 5ecae22672b9..66919a111dcc 100644 --- a/go.mod +++ b/go.mod @@ -83,7 +83,7 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect diff --git a/go.sum b/go.sum index 34c07def6655..b564ff8795ea 100644 --- a/go.sum +++ b/go.sum @@ -149,8 +149,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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= diff --git a/server/go.mod b/server/go.mod index 399716688707..5e933e0e4c64 100644 --- a/server/go.mod +++ b/server/go.mod @@ -32,7 +32,7 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 go.opentelemetry.io/otel v1.35.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 go.opentelemetry.io/otel/sdk v1.35.0 diff --git a/server/go.sum b/server/go.sum index 562c637a9fa4..b75617c417b0 100644 --- a/server/go.sum +++ b/server/go.sum @@ -127,8 +127,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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= diff --git a/tests/go.mod b/tests/go.mod index e2105ed9b910..683f06e911f1 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -38,7 +38,7 @@ require ( go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 go.opentelemetry.io/otel v1.35.0 go.opentelemetry.io/otel/sdk v1.35.0 go.opentelemetry.io/otel/trace v1.35.0 diff --git a/tests/go.sum b/tests/go.sum index 896965f199b2..7969d96de100 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -153,8 +153,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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= From 9786111c2a2a960ff4ecad2560feeb8ec36fd491 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 18:39:01 +0000 Subject: [PATCH 0075/1068] build(deps): bump actions/upload-artifact from 4.6.1 to 4.6.2 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.1 to 4.6.2. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1...ea165f8d65b6e75b540449e92b4886f43607fa02) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 557a85229c1c..e28170cae571 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -42,7 +42,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: SARIF file path: results.sarif From 494f6746c6a9ef26ebae544d6a4828651f50393a Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Thu, 27 Mar 2025 08:31:44 +0530 Subject: [PATCH 0076/1068] dependency: bump google.golang.org/protobuf from 1.36.5 to 1.36.6 This commit will bump google.golang.org/protobuf from 1.36.5 to 1.36.6 Signed-off-by: ArkaSaha30 --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 20 files changed, 30 insertions(+), 30 deletions(-) diff --git a/api/go.mod b/api/go.mod index 4be754c85e24..07efc223047f 100644 --- a/api/go.mod +++ b/api/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb google.golang.org/grpc v1.71.0 - google.golang.org/protobuf v1.36.5 + google.golang.org/protobuf v1.36.6 ) require ( diff --git a/api/go.sum b/api/go.sum index 3db58f46f971..4930d3e3f27d 100644 --- a/api/go.sum +++ b/api/go.sum @@ -79,8 +79,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index 36622349c519..ff35a0b1c67d 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -40,7 +40,7 @@ require ( golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/protobuf v1.36.5 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 21c479dba40d..6a58d339c6e6 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -113,8 +113,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 26d0f0bb3432..64104c4dd342 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -42,7 +42,7 @@ require ( golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/protobuf v1.36.5 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index eb4ed455548a..9dbdfe6e1ea8 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -141,8 +141,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 3cf99eca7b20..2351be760a56 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -90,7 +90,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/grpc v1.71.0 // indirect - google.golang.org/protobuf v1.36.5 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index d230a2573fe1..c3ad6ada5915 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -173,8 +173,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/go.mod b/go.mod index 66919a111dcc..0304391edfbf 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/time v0.11.0 google.golang.org/grpc v1.71.0 - google.golang.org/protobuf v1.36.5 + google.golang.org/protobuf v1.36.6 ) require ( diff --git a/go.sum b/go.sum index b564ff8795ea..828808a39a14 100644 --- a/go.sum +++ b/go.sum @@ -249,8 +249,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/go.mod b/pkg/go.mod index 46dc7c961be6..15e0efc2c8c1 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -28,7 +28,7 @@ require ( golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/protobuf v1.36.5 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index 4f48306f45ef..6d0124392651 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -63,8 +63,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/server/go.mod b/server/go.mod index 5e933e0e4c64..abf5d82f2d67 100644 --- a/server/go.mod +++ b/server/go.mod @@ -42,7 +42,7 @@ require ( golang.org/x/time v0.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb google.golang.org/grpc v1.71.0 - google.golang.org/protobuf v1.36.5 + google.golang.org/protobuf v1.36.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.4.0 ) diff --git a/server/go.sum b/server/go.sum index b75617c417b0..f6818177b1c0 100644 --- a/server/go.sum +++ b/server/go.sum @@ -226,8 +226,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tests/go.mod b/tests/go.mod index 683f06e911f1..04d7925884fa 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -48,7 +48,7 @@ require ( golang.org/x/sync v0.12.0 golang.org/x/time v0.11.0 google.golang.org/grpc v1.71.0 - google.golang.org/protobuf v1.36.5 + google.golang.org/protobuf v1.36.6 ) require ( diff --git a/tests/go.sum b/tests/go.sum index 7969d96de100..d914ca9dcb7c 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -253,8 +253,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 100f7003ab4a..a5f3bafacd0c 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -225,7 +225,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/grpc v1.71.0 // indirect - google.golang.org/protobuf v1.36.5 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 643be7c8350e..b1abc74d68ec 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -666,8 +666,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 2d725bb83244..63be9994cf08 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -8,7 +8,7 @@ require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 github.com/google/go-github/v60 v60.0.0 github.com/spf13/cobra v1.9.1 - google.golang.org/protobuf v1.36.5 + google.golang.org/protobuf v1.36.6 ) require ( diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 269ca31fe734..5472094c4c45 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1909,8 +1909,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From b7971fd072072362eb9dcb2424383f1eacfc4d0d Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Thu, 9 Jan 2025 22:42:53 +0100 Subject: [PATCH 0077/1068] chore: enable unnecessary-stmt rule from revive Signed-off-by: Matthieu MOREL --- client/pkg/types/urls.go | 1 - server/etcdmain/etcd.go | 3 +-- server/storage/wal/repair.go | 3 +-- tools/.golangci.yaml | 21 +-------------------- 4 files changed, 3 insertions(+), 25 deletions(-) diff --git a/client/pkg/types/urls.go b/client/pkg/types/urls.go index 49a38967e64d..7dca16c0482c 100644 --- a/client/pkg/types/urls.go +++ b/client/pkg/types/urls.go @@ -47,7 +47,6 @@ func NewURLs(strs []string) (URLs, error) { return nil, fmt.Errorf("URL must not contain a path: %s", in) } case "unix", "unixs": - break default: return nil, fmt.Errorf("URL scheme must be http, https, unix, or unixs: %s", in) } diff --git a/server/etcdmain/etcd.go b/server/etcdmain/etcd.go index 16bba3736fd2..cb633e7e5d05 100644 --- a/server/etcdmain/etcd.go +++ b/server/etcdmain/etcd.go @@ -64,8 +64,7 @@ func startEtcdOrProxyV2(args []string) { lg.Info("Running: ", zap.Strings("args", args)) if err != nil { lg.Warn("failed to verify flags", zap.Error(err)) - switch { - case errorspkg.Is(err, embed.ErrUnsetAdvertiseClientURLsFlag): + if errorspkg.Is(err, embed.ErrUnsetAdvertiseClientURLsFlag) { lg.Warn("advertise client URLs are not set", zap.Error(err)) } os.Exit(1) diff --git a/server/storage/wal/repair.go b/server/storage/wal/repair.go index 16277540f34d..f8f814f04497 100644 --- a/server/storage/wal/repair.go +++ b/server/storage/wal/repair.go @@ -49,8 +49,7 @@ func Repair(lg *zap.Logger, dirpath string) bool { switch { case err == nil: // update crc of the decoder when necessary - switch rec.Type { - case CrcType: + if rec.Type == CrcType { crc := decoder.LastCRC() // current crc of decoder must match the crc of the record. // do no need to match 0 crc, since the decoder is a new one at this case. diff --git a/tools/.golangci.yaml b/tools/.golangci.yaml index 0cc4524e9fd8..a296a5ac4c60 100644 --- a/tools/.golangci.yaml +++ b/tools/.golangci.yaml @@ -48,49 +48,30 @@ linters-settings: # please keep this alphabetized confidence: 0.8 rules: - name: blank-imports - disabled: false - name: context-as-argument - disabled: false - name: context-keys-type - disabled: false - name: dot-imports - disabled: false - name: early-return - disabled: false arguments: - "preserveScope" - name: error-return - disabled: false - name: error-naming - disabled: false - name: error-strings - disabled: false - name: errorf - disabled: false - name: if-return - disabled: false - name: increment-decrement - disabled: false - name: indent-error-flow - disabled: false - name: package-comments - disabled: false - name: range - disabled: false - name: receiver-naming - disabled: false - name: superfluous-else - disabled: false arguments: - "preserveScope" - name: time-naming - disabled: false + - name: unnecessary-stmt - name: use-any - disabled: false - name: var-declaration - disabled: false - name: var-naming - disabled: false arguments: # The following is the configuration for var-naming rule, the first element is the allow list and the second element is the deny list. - [] # AllowList: leave it empty to use the default (empty, too). This means that we're not relaxing the rule in any way, i.e. elementId will raise a violation, it should be elementID, refer to the next line to see the list of denied initialisms. From 521ffdb333103568f9b72805ef66c4d00d7e9fe7 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Thu, 27 Mar 2025 09:15:05 +0530 Subject: [PATCH 0078/1068] dependency: bump github.com/prometheus/common from 0.62.0 to 0.63.0 This commit will bump github.com/prometheus/common from 0.62.0 to 0.63.0 Signed-off-by: ArkaSaha30 --- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 13 files changed, 20 insertions(+), 20 deletions(-) diff --git a/client/v3/go.mod b/client/v3/go.mod index ff35a0b1c67d..0f23459d83f9 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -30,7 +30,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.62.0 // indirect + github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 6a58d339c6e6..e8aeb7c0f20c 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -48,8 +48,8 @@ github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGC github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 9dbdfe6e1ea8..87668c0d8d4a 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -65,8 +65,8 @@ github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGC github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 2351be760a56..95e65cb83411 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -63,7 +63,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.21.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.62.0 // indirect + github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index c3ad6ada5915..81023c6dce1a 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -70,8 +70,8 @@ github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGC github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/go.mod b/go.mod index 0304391edfbf..8fb4c35cc688 100644 --- a/go.mod +++ b/go.mod @@ -73,7 +73,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.21.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.62.0 // indirect + github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect diff --git a/go.sum b/go.sum index 828808a39a14..e9ebd45d9601 100644 --- a/go.sum +++ b/go.sum @@ -109,8 +109,8 @@ github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuF github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/server/go.mod b/server/go.mod index abf5d82f2d67..75ec8583e4fb 100644 --- a/server/go.mod +++ b/server/go.mod @@ -62,7 +62,7 @@ require ( github.com/kylelemons/godebug v1.1.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/common v0.62.0 // indirect + github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.6 // indirect diff --git a/server/go.sum b/server/go.sum index f6818177b1c0..9e0175ba27fb 100644 --- a/server/go.sum +++ b/server/go.sum @@ -92,8 +92,8 @@ github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuF github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/tests/go.mod b/tests/go.mod index 04d7925884fa..72199baf217c 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -25,7 +25,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/prometheus/client_golang v1.21.1 github.com/prometheus/client_model v0.6.1 - github.com/prometheus/common v0.62.0 + github.com/prometheus/common v0.63.0 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 diff --git a/tests/go.sum b/tests/go.sum index d914ca9dcb7c..6e5e312b22e1 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -113,8 +113,8 @@ github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuF github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index a5f3bafacd0c..d3b73b4a9c79 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -155,7 +155,7 @@ require ( github.com/polyfloyd/go-errorlint v1.7.1 // indirect github.com/prometheus/client_golang v1.21.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.62.0 // indirect + github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index b1abc74d68ec..b32041a27339 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -353,8 +353,8 @@ github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGC github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo= From 15ed479f27ffb066754e00e1d6c2d50d3861a9d2 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 26 Mar 2025 21:49:54 +0100 Subject: [PATCH 0079/1068] Add HashKV check to robustness test This PR adds only the end-of-test check only. Reference: - https://github.com/etcd-io/etcd/issues/18386 Signed-off-by: Chun-Hung Tseng --- tests/robustness/client/kvhash.go | 72 +++++++++++++++++++++++++++++++ tests/robustness/main_test.go | 5 +++ 2 files changed, 77 insertions(+) create mode 100644 tests/robustness/client/kvhash.go diff --git a/tests/robustness/client/kvhash.go b/tests/robustness/client/kvhash.go new file mode 100644 index 000000000000..765b5a9d17ce --- /dev/null +++ b/tests/robustness/client/kvhash.go @@ -0,0 +1,72 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package client + +import ( + "context" + "fmt" + "time" + + "go.uber.org/zap" + + clientv3 "go.etcd.io/etcd/client/v3" + "go.etcd.io/etcd/tests/v3/framework/e2e" +) + +func CheckHashKV(ctx context.Context, clus *e2e.EtcdProcessCluster) error { + c, err := clientv3.New(clientv3.Config{ + Endpoints: clus.EndpointsGRPC(), + Logger: zap.NewNop(), + DialKeepAliveTime: 10 * time.Second, + DialKeepAliveTimeout: 100 * time.Millisecond, + }) + if err != nil { + return err + } + defer c.Close() + + hashKV, err := c.HashKV(ctx, clus.EndpointsGRPC()[0], 0) + if err != nil { + return err + } + rev := hashKV.Header.Revision + + hashKVs := make([]*clientv3.HashKVResponse, 0) + hashKVs = append(hashKVs, hashKV) + + for _, member := range clus.Procs { + hashKV, err := c.HashKV(ctx, member.EndpointsGRPC()[0], rev) + if err != nil { + return err + } + if hashKV.Header.Revision != rev { + return fmt.Errorf("max revision between nodes should be the same. Want %v, get %v", rev, hashKV.Header.Revision) + } + hashKVs = append(hashKVs, hashKV) + } + + for i := 1; i < len(hashKVs); i++ { + if hashKVs[i-1].HashRevision != hashKVs[i].HashRevision { + return fmt.Errorf("hashRevision mismatch, node %v has %+v, node %v has %+v", hashKVs[i-1].Header.MemberId, hashKVs[i-1], hashKVs[i].Header.MemberId, hashKVs[i]) + } + if hashKVs[i-1].CompactRevision != hashKVs[i].CompactRevision { + return fmt.Errorf("compactRevision mismatch, node %v has %+v, node %v has %+v", hashKVs[i-1].Header.MemberId, hashKVs[i-1], hashKVs[i].Header.MemberId, hashKVs[i]) + } + if hashKVs[i-1].Hash != hashKVs[i].Hash { + return fmt.Errorf("hash mismatch, node %v has %+v, node %v has %+v", hashKVs[i-1].Header.MemberId, hashKVs[i-1], hashKVs[i].Header.MemberId, hashKVs[i]) + } + } + return nil +} diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index 0b3b57f18920..93f4e00326a7 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -144,6 +144,11 @@ func runScenario(ctx context.Context, t *testing.T, s scenarios.TestScenario, lg return nil }) g.Wait() + + err := client.CheckHashKV(ctx, clus) + if err != nil { + t.Error(err) + } return append(operationReport, append(failpointClientReport, watchReport...)...) } From 07eb29cd05b72fd960281d05d3ab10f373181e58 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 1 Apr 2025 01:18:50 +0200 Subject: [PATCH 0080/1068] Disable comparing hashRevision as it doesn't make sense and it's not implemented for etcd < 3.6 Signed-off-by: Marek Siarkowicz --- tests/robustness/client/kvhash.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/robustness/client/kvhash.go b/tests/robustness/client/kvhash.go index 765b5a9d17ce..f72ddcec5d41 100644 --- a/tests/robustness/client/kvhash.go +++ b/tests/robustness/client/kvhash.go @@ -58,9 +58,6 @@ func CheckHashKV(ctx context.Context, clus *e2e.EtcdProcessCluster) error { } for i := 1; i < len(hashKVs); i++ { - if hashKVs[i-1].HashRevision != hashKVs[i].HashRevision { - return fmt.Errorf("hashRevision mismatch, node %v has %+v, node %v has %+v", hashKVs[i-1].Header.MemberId, hashKVs[i-1], hashKVs[i].Header.MemberId, hashKVs[i]) - } if hashKVs[i-1].CompactRevision != hashKVs[i].CompactRevision { return fmt.Errorf("compactRevision mismatch, node %v has %+v, node %v has %+v", hashKVs[i-1].Header.MemberId, hashKVs[i-1], hashKVs[i].Header.MemberId, hashKVs[i]) } From df1a4975f22a64dacfeed56b041f171abee092f7 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 26 Mar 2025 10:29:52 +0100 Subject: [PATCH 0081/1068] [Robustness test] Preserve return time for failed requests Reference: - https://github.com/etcd-io/etcd/issues/19579 - https://github.com/etcd-io/etcd/pull/19651#discussion_r2011549432 - https://github.com/etcd-io/etcd/pull/19669#discussion_r2013777795 - https://github.com/etcd-io/etcd/pull/19669#discussion_r2014694994 Signed-off-by: Chun-Hung Tseng --- tests/robustness/model/history.go | 5 +- tests/robustness/validate/operations.go | 14 ----- tests/robustness/validate/patch_history.go | 22 ++------ .../robustness/validate/patch_history_test.go | 5 +- tests/robustness/validate/validate.go | 53 +++++++++++++++++-- 5 files changed, 57 insertions(+), 42 deletions(-) diff --git a/tests/robustness/model/history.go b/tests/robustness/model/history.go index b03fd6165ae6..f6119984f5e6 100644 --- a/tests/robustness/model/history.go +++ b/tests/robustness/model/history.go @@ -16,7 +16,6 @@ package model import ( "fmt" - "math" "strings" "time" @@ -294,8 +293,6 @@ func (h *AppendableHistory) appendFailed(request EtcdRequest, start, end time.Du } isRead := request.IsRead() if !isRead { - // Failed writes can still be persisted, setting -1 for now as don't know when request has took effect. - op.Return = math.MaxInt64 // Operations of single client needs to be sequential. // As we don't know return time of failed operations, all new writes need to be done with new stream id. h.streamID = h.idProvider.NewStreamID() @@ -304,7 +301,7 @@ func (h *AppendableHistory) appendFailed(request EtcdRequest, start, end time.Du } func (h *AppendableHistory) append(op porcupine.Operation) { - if op.Return != math.MaxInt64 && op.Call >= op.Return { + if op.Call >= op.Return { panic(fmt.Sprintf("Invalid operation, call(%d) >= return(%d)", op.Call, op.Return)) } diff --git a/tests/robustness/validate/operations.go b/tests/robustness/validate/operations.go index 605df732c617..e13382e84a30 100644 --- a/tests/robustness/validate/operations.go +++ b/tests/robustness/validate/operations.go @@ -24,7 +24,6 @@ import ( "go.uber.org/zap" "go.etcd.io/etcd/tests/v3/robustness/model" - "go.etcd.io/etcd/tests/v3/robustness/report" ) var ( @@ -88,19 +87,6 @@ func validateSerializableOperations(lg *zap.Logger, operations []porcupine.Opera return lastErr } -func filterSerializableOperations(clients []report.ClientReport) []porcupine.Operation { - resp := []porcupine.Operation{} - for _, client := range clients { - for _, op := range client.KeyValue { - request := op.Input.(model.EtcdRequest) - if request.Type == model.Range && request.Range.Revision != 0 { - resp = append(resp, op) - } - } - } - return resp -} - func validateSerializableRead(lg *zap.Logger, replay *model.EtcdReplay, request model.EtcdRequest, response model.MaybeEtcdResponse) error { if response.Persisted || response.Error != "" { return nil diff --git a/tests/robustness/validate/patch_history.go b/tests/robustness/validate/patch_history.go index 218413cd8357..0196369d827d 100644 --- a/tests/robustness/validate/patch_history.go +++ b/tests/robustness/validate/patch_history.go @@ -24,28 +24,12 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/report" ) -func patchLinearizableOperations(reports []report.ClientReport, persistedRequests []model.EtcdRequest) []porcupine.Operation { - allOperations := relevantOperations(reports) +func patchLinearizableOperations(operations []porcupine.Operation, reports []report.ClientReport, persistedRequests []model.EtcdRequest) []porcupine.Operation { putRevision := putRevision(reports) persistedPutCount := countPersistedPuts(persistedRequests) clientPutCount := countClientPuts(reports) - putReturnTime := uniquePutReturnTime(allOperations, reports, persistedRequests, clientPutCount) - return patchOperations(allOperations, putRevision, putReturnTime, clientPutCount, persistedPutCount) -} - -func relevantOperations(reports []report.ClientReport) []porcupine.Operation { - var ops []porcupine.Operation - for _, r := range reports { - for _, op := range r.KeyValue { - request := op.Input.(model.EtcdRequest) - resp := op.Output.(model.MaybeEtcdResponse) - // Remove failed read requests as they are not relevant for linearization. - if resp.Error == "" || !request.IsRead() { - ops = append(ops, op) - } - } - } - return ops + putReturnTime := uniquePutReturnTime(operations, reports, persistedRequests, clientPutCount) + return patchOperations(operations, putRevision, putReturnTime, clientPutCount, persistedPutCount) } func putRevision(reports []report.ClientReport) map[keyValue]int64 { diff --git a/tests/robustness/validate/patch_history_test.go b/tests/robustness/validate/patch_history_test.go index fa6c6ba6e5aa..cb8c3026cb70 100644 --- a/tests/robustness/validate/patch_history_test.go +++ b/tests/robustness/validate/patch_history_test.go @@ -405,13 +405,14 @@ func TestPatchHistory(t *testing.T) { t.Run(tc.name, func(t *testing.T) { history := model.NewAppendableHistory(identity.NewIDProvider()) tc.historyFunc(history) - operations := patchLinearizableOperations([]report.ClientReport{ + reports := []report.ClientReport{ { ClientID: 0, KeyValue: history.History.Operations(), Watch: tc.watchOperations, }, - }, tc.persistedRequest) + } + operations := patchLinearizableOperations(relevantOperations(patchFailedRequestWithInfiniteReturnTime(reports)), reports, tc.persistedRequest) if diff := cmp.Diff(tc.expectedRemainingOperations, operations, cmpopts.EquateEmpty(), cmpopts.IgnoreFields(porcupine.Operation{}, "Input", "Call", "ClientId"), diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index a23734953c50..5d9094d9ce54 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -17,6 +17,7 @@ package validate import ( "encoding/json" "fmt" + "math" "testing" "time" @@ -31,10 +32,13 @@ import ( func ValidateAndReturnVisualize(t *testing.T, lg *zap.Logger, cfg Config, reports []report.ClientReport, persistedRequests []model.EtcdRequest, timeout time.Duration) Results { err := checkValidationAssumptions(reports, persistedRequests) require.NoErrorf(t, err, "Broken validation assumptions") - linearizableOperations := patchLinearizableOperations(reports, persistedRequests) - serializableOperations := filterSerializableOperations(reports) + linearizableOperations, serializableOperations := prepareAndCategorizeOperations(reports) + // We are passing in the original reports and linearizableOperations with modified return time. + // The reason is that linearizableOperations are those dedicated for linearization, which requires them to have returnTime set to infinity as required by pourcupine. + // As for the report, the original report is used so the consumer doesn't need to track what patching was done or not. + patchedLinearizableOperations := patchLinearizableOperations(linearizableOperations, reports, persistedRequests) - results := validateLinearizableOperationsAndVisualize(lg, linearizableOperations, timeout) + results := validateLinearizableOperationsAndVisualize(lg, patchedLinearizableOperations, timeout) if results.Linearizable != porcupine.Ok { t.Error("Failed linearization, skipping further validation") return results @@ -58,6 +62,49 @@ type Config struct { ExpectRevisionUnique bool } +func prepareAndCategorizeOperations(reports []report.ClientReport) ([]porcupine.Operation, []porcupine.Operation) { + patchedOperations := patchFailedRequestWithInfiniteReturnTime(reports) + return relevantOperations(patchedOperations), filterSerializableOperations(patchedOperations) +} + +func relevantOperations(operations []porcupine.Operation) []porcupine.Operation { + var ops []porcupine.Operation + for _, op := range operations { + request := op.Input.(model.EtcdRequest) + resp := op.Output.(model.MaybeEtcdResponse) + // Remove failed read requests as they are not relevant for linearization. + if resp.Error == "" || !request.IsRead() { + ops = append(ops, op) + } + } + return ops +} + +func filterSerializableOperations(operations []porcupine.Operation) []porcupine.Operation { + resp := []porcupine.Operation{} + for _, op := range operations { + request := op.Input.(model.EtcdRequest) + if request.Type == model.Range && request.Range.Revision != 0 { + resp = append(resp, op) + } + } + return resp +} + +func patchFailedRequestWithInfiniteReturnTime(reports []report.ClientReport) []porcupine.Operation { + operations := make([]porcupine.Operation, 0) + for _, report := range reports { + for _, operation := range report.KeyValue { + // Failed writes can still be persisted, setting to infinite for now as we don't know when request has taken effect. + if operation.Output.(model.MaybeEtcdResponse).Error != "" { + operation.Return = math.MaxInt64 + } + operations = append(operations, operation) + } + } + return operations +} + func checkValidationAssumptions(reports []report.ClientReport, persistedRequests []model.EtcdRequest) error { err := validateEmptyDatabaseAtStart(reports) if err != nil { From d7cf6f36ab6c0750beca7fa832b4ca26033478e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fa=C3=A7=20Eldenk?= Date: Thu, 27 Mar 2025 11:44:19 -0500 Subject: [PATCH 0082/1068] Fix "make verify" failing in MacOS due to BOM file verification. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Doğaç Eldenk --- scripts/test.sh | 5 ++++- scripts/test_lib.sh | 2 +- scripts/updatebom.sh | 5 ++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index 8419f5bf5d44..1757d8a1788c 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -502,7 +502,10 @@ function bom_pass { run cp go.sum go.sum.tmp || return 2 run cp go.mod go.mod.tmp || return 2 - output=$(GOFLAGS=-mod=mod run_go_tool github.com/appscodelabs/license-bill-of-materials \ + # BOM file should be generated for linux. Otherwise running this command on other operating systems such as OSX + # results in certain dependencies being excluded from the BOM file, such as procfs. + # For more info, https://github.com/etcd-io/etcd/issues/19665 + output=$(GOOS=linux GOFLAGS=-mod=mod run_go_tool github.com/appscodelabs/license-bill-of-materials \ --override-file ./bill-of-materials.override.json \ "${modules[@]}") code="$?" diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index 651e20f9a8d2..43be3872358f 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -319,7 +319,7 @@ function tool_pkg_dir { # tool_get_bin [tool] function run_go_tool { local cmdbin - if ! cmdbin=$(GOARCH="" tool_get_bin "${1}"); then + if ! cmdbin=$(GOARCH="" GOOS="" tool_get_bin "${1}"); then log_warning "Failed to install tool '${1}'" return 2 fi diff --git a/scripts/updatebom.sh b/scripts/updatebom.sh index 2c6bf8720b0d..a1de4a8763b2 100755 --- a/scripts/updatebom.sh +++ b/scripts/updatebom.sh @@ -14,7 +14,10 @@ function bom_fixlet { # shellcheck disable=SC2207 modules=($(modules_for_bom)) - if GOFLAGS=-mod=mod run_go_tool "github.com/appscodelabs/license-bill-of-materials" \ + # BOM file should be generated for linux. Otherwise running this command on other operating systems such as OSX + # results in certain dependencies being excluded from the BOM file, such as procfs. + # For more info, https://github.com/etcd-io/etcd/issues/19665 + if GOOS=linux GOFLAGS=-mod=mod run_go_tool "github.com/appscodelabs/license-bill-of-materials" \ --override-file ./bill-of-materials.override.json \ "${modules[@]}" > ./bill-of-materials.json.tmp; then cp ./bill-of-materials.json.tmp ./bill-of-materials.json From c6085d35f0e85fc2dde9996ce5019bed0517c356 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Tue, 8 Apr 2025 08:54:00 +0200 Subject: [PATCH 0083/1068] bump golang.org/x/crypto from 0.36.0 to 0.37.0, bump golang.org/x/sys from 0.31.0 to 0.32.0, bump golang.org/x/text from 0.23.0 to 0.24.0, and bump golang.org/x/sys from 0.31.0 to 0.32.0 Because bumping golang.org/x/crypto will also bump golang.org/x/sys, golang.org/x/text, and golang.org/x/sys. Thus, these 4 are done in the same PR. Reference: - https://github.com/etcd-io/etcd/pull/19719 - https://github.com/etcd-io/etcd/pull/19721 - https://github.com/etcd-io/etcd/pull/19722 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 4 ++-- api/go.sum | 8 ++++---- client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 4 ++-- client/v3/go.sum | 8 ++++---- etcdctl/go.mod | 4 ++-- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 16 ++++++++-------- go.mod | 6 +++--- go.sum | 16 ++++++++-------- pkg/go.mod | 4 ++-- pkg/go.sum | 8 ++++---- server/go.mod | 6 +++--- server/go.sum | 16 ++++++++-------- tests/go.mod | 8 ++++---- tests/go.sum | 16 ++++++++-------- tools/mod/go.mod | 10 +++++----- tools/mod/go.sum | 20 ++++++++++---------- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 4 ++-- tools/testgrid-analysis/go.sum | 8 ++++---- 24 files changed, 96 insertions(+), 96 deletions(-) diff --git a/api/go.mod b/api/go.mod index 7fbd10d4d12e..8feec6cd1b7d 100644 --- a/api/go.mod +++ b/api/go.mod @@ -22,8 +22,8 @@ require ( go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect golang.org/x/net v0.38.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 5c3d2b67e236..07b7e0ce83fb 100644 --- a/api/go.sum +++ b/api/go.sum @@ -59,12 +59,12 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 7a3abf3b1a9d..efc0a5711582 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.5.0 github.com/stretchr/testify v1.10.0 go.uber.org/zap v1.27.0 - golang.org/x/sys v0.31.0 + golang.org/x/sys v0.32.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index d769fad4fc03..b4d99fb7f6bc 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -25,8 +25,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index 5478f95388da..324a8e65245d 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -36,8 +36,8 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.38.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 1616ee124e7c..4fd4c4212d04 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -93,12 +93,12 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index b4c1087a4610..c47829034415 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -38,8 +38,8 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.38.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 697f6115b6c3..f30fd80f8ab9 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -119,12 +119,12 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index bfe6acb920c2..1f9e3a7f73b5 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -82,10 +82,10 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.36.0 // indirect + golang.org/x/crypto v0.37.0 // indirect golang.org/x/net v0.38.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect golang.org/x/time v0.11.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 85911a1606a4..59466631fbff 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -131,8 +131,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -145,18 +145,18 @@ golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= -golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index 700ce997d437..9930824cfdc1 100644 --- a/go.mod +++ b/go.mod @@ -92,10 +92,10 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.36.0 // indirect + golang.org/x/crypto v0.37.0 // indirect golang.org/x/net v0.38.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index 6a739bab8dbc..c0f68556b542 100644 --- a/go.sum +++ b/go.sum @@ -179,8 +179,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -204,8 +204,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= -golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -213,12 +213,12 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/pkg/go.mod b/pkg/go.mod index 5f2843fbc4ed..9e0401286cf0 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -25,8 +25,8 @@ require ( go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.38.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 2591fece5d8b..3fb309c3dd73 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -55,10 +55,10 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= diff --git a/server/go.mod b/server/go.mod index 16b54c713545..1e2b92647a25 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,7 +37,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 go.opentelemetry.io/otel/sdk v1.35.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.36.0 + golang.org/x/crypto v0.37.0 golang.org/x/net v0.38.0 golang.org/x/time v0.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb @@ -72,8 +72,8 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect diff --git a/server/go.sum b/server/go.sum index 11249e836592..02fbdd693f8d 100644 --- a/server/go.sum +++ b/server/go.sum @@ -157,8 +157,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -182,20 +182,20 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= -golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index ec7b6282d195..e3c1e08a077b 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -44,8 +44,8 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 go.opentelemetry.io/proto/otlp v1.5.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.36.0 - golang.org/x/sync v0.12.0 + golang.org/x/crypto v0.37.0 + golang.org/x/sync v0.13.0 golang.org/x/time v0.11.0 google.golang.org/grpc v1.71.0 google.golang.org/protobuf v1.36.6 @@ -95,8 +95,8 @@ require ( go.opentelemetry.io/otel/metric v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.38.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index 1ec8cf3ae222..0f8bf3ebdf80 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -183,8 +183,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -208,8 +208,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= -golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -217,12 +217,12 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 9e8195830d21..7b219919e537 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -213,14 +213,14 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.36.0 // indirect + golang.org/x/crypto v0.37.0 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect golang.org/x/mod v0.24.0 // indirect golang.org/x/net v0.38.0 // indirect - golang.org/x/sync v0.12.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/term v0.30.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/sync v0.13.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/term v0.31.0 // indirect + golang.org/x/text v0.24.0 // indirect golang.org/x/tools v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index ecfbbf1c4d36..f76686cd09c6 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -531,8 +531,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -582,8 +582,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= -golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -608,8 +608,8 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -619,8 +619,8 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= -golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= +golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= +golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -632,8 +632,8 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 1884f77baf21..845e2ea80815 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -22,5 +22,5 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect golang.org/x/image v0.18.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/text v0.24.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 588a905dec1b..40f4a36acf5a 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -52,8 +52,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 7e9e761ca624..6baf5d9288f9 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -19,8 +19,8 @@ require ( go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect golang.org/x/net v0.38.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/grpc v1.71.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 11429929b344..b67551b540b8 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1484,8 +1484,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1516,8 +1516,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From fcea92a11f4d9fccd47d2584cc29ad974eb2d943 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 7 Apr 2025 22:14:46 +0200 Subject: [PATCH 0084/1068] [main] Bump Go to 1.24.2 Reference: - https://github.com/etcd-io/etcd/issues/19713 Signed-off-by: Chun-Hung Tseng --- .go-version | 2 +- api/go.mod | 2 +- client/internal/v2/go.mod | 2 +- client/pkg/go.mod | 2 +- client/v3/go.mod | 2 +- etcdctl/go.mod | 2 +- etcdutl/go.mod | 2 +- go.mod | 2 +- pkg/go.mod | 2 +- server/go.mod | 2 +- tests/go.mod | 2 +- tools/mod/go.mod | 2 +- tools/rw-heatmaps/go.mod | 2 +- tools/testgrid-analysis/go.mod | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.go-version b/.go-version index f9e8384bb6c7..e4a973f913f4 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.24.1 +1.24.2 diff --git a/api/go.mod b/api/go.mod index 86a985e75cc4..7fbd10d4d12e 100644 --- a/api/go.mod +++ b/api/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/api/v3 go 1.24 -toolchain go1.24.1 +toolchain go1.24.2 require ( github.com/coreos/go-semver v0.3.1 diff --git a/client/internal/v2/go.mod b/client/internal/v2/go.mod index 7b7e0a47317d..8cc9c1096085 100644 --- a/client/internal/v2/go.mod +++ b/client/internal/v2/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/v2 go 1.24 -toolchain go1.24.1 +toolchain go1.24.2 require ( github.com/stretchr/testify v1.10.0 diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 643a174dbb72..7a3abf3b1a9d 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/pkg/v3 go 1.24 -toolchain go1.24.1 +toolchain go1.24.2 require ( github.com/coreos/go-systemd/v22 v22.5.0 diff --git a/client/v3/go.mod b/client/v3/go.mod index 2df7deb7dbfb..5478f95388da 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/v3 go 1.24 -toolchain go1.24.1 +toolchain go1.24.2 require ( github.com/coreos/go-semver v0.3.1 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 427b2658d4fd..b4c1087a4610 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdctl/v3 go 1.24 -toolchain go1.24.1 +toolchain go1.24.2 require ( github.com/bgentry/speakeasy v0.2.0 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index e7f489ba64de..bfe6acb920c2 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdutl/v3 go 1.24 -toolchain go1.24.1 +toolchain go1.24.2 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/go.mod b/go.mod index 43224c43f3e1..700ce997d437 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/v3 go 1.24 -toolchain go1.24.1 +toolchain go1.24.2 replace ( go.etcd.io/etcd/api/v3 => ./api diff --git a/pkg/go.mod b/pkg/go.mod index 7a3f0d5f030d..5f2843fbc4ed 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/pkg/v3 go 1.24 -toolchain go1.24.1 +toolchain go1.24.2 require ( github.com/creack/pty v1.1.18 diff --git a/server/go.mod b/server/go.mod index c9a3360e9157..16b54c713545 100644 --- a/server/go.mod +++ b/server/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/server/v3 go 1.24 -toolchain go1.24.1 +toolchain go1.24.2 require ( github.com/coreos/go-semver v0.3.1 diff --git a/tests/go.mod b/tests/go.mod index 656b1b8485cb..ec7b6282d195 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tests/v3 go 1.24 -toolchain go1.24.1 +toolchain go1.24.2 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 527384619f34..9e8195830d21 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/v3 go 1.24 -toolchain go1.24.1 +toolchain go1.24.2 require ( github.com/alexfalkowski/gocovmerge v1.6.0 diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index ef4fc7f83201..1884f77baf21 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/rw-heatmaps/v3 go 1.24 -toolchain go1.24.1 +toolchain go1.24.2 require ( github.com/spf13/cobra v1.9.1 diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 09ba76e4be5e..7e9e761ca624 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 go 1.24 -toolchain go1.24.1 +toolchain go1.24.2 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 From ee088e20402f672076f321abbe42703165dab700 Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 25 Mar 2025 11:01:17 +0800 Subject: [PATCH 0085/1068] set ETCD_ROOT_DIR to root directory of git repository Signed-off-by: joshjms --- scripts/markdown_diff_lint.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/markdown_diff_lint.sh b/scripts/markdown_diff_lint.sh index 371ee7a0b5ea..4649593cae31 100755 --- a/scripts/markdown_diff_lint.sh +++ b/scripts/markdown_diff_lint.sh @@ -2,6 +2,7 @@ # This script runs markdownlint-cli2 on changed files. # Usage: ./markdown_lint.sh +ETCD_ROOT_DIR=$(git rev-parse --show-toplevel) # We source ./scripts/test_utils.sh, it sets the log functions and color variables. source ./scripts/test_utils.sh @@ -66,6 +67,7 @@ for file in "${changed_files[@]}"; do markdownlint-cli2 "${file}" --config "${ETCD_ROOT_DIR}/tools/.markdownlint.jsonc" 2>/dev/null || true while IFS= read -r line; do line_number=$(echo "${line}" | awk -F: '{print $2}' | awk '{print $1}') + while [ "${i}" -lt "${#end_ranges[@]}" ] && [ "${line_number}" -gt "${end_ranges["${i}"]}" ]; do i=$((1 + i)) done From f9d2dcf8dddc0f98c5315760f80d15f9250e149a Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 4 Apr 2025 07:06:26 +0100 Subject: [PATCH 0086/1068] dependency: golang.org/x/net from v0.37.0 to v0.38.0 Bumps dependency based on dependabot's pull request: https://github.com/etcd-io/etcd/pull/19696. Signed-off-by: Ivan Valdes --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 20 files changed, 30 insertions(+), 30 deletions(-) diff --git a/api/go.mod b/api/go.mod index 07efc223047f..86a985e75cc4 100644 --- a/api/go.mod +++ b/api/go.mod @@ -21,7 +21,7 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect - golang.org/x/net v0.37.0 // indirect + golang.org/x/net v0.38.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/api/go.sum b/api/go.sum index 4930d3e3f27d..5c3d2b67e236 100644 --- a/api/go.sum +++ b/api/go.sum @@ -51,8 +51,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/client/v3/go.mod b/client/v3/go.mod index 0f23459d83f9..2df7deb7dbfb 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -35,7 +35,7 @@ require ( go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.37.0 // indirect + golang.org/x/net v0.38.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index e8aeb7c0f20c..1616ee124e7c 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -85,8 +85,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 64104c4dd342..427b2658d4fd 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -37,7 +37,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.37.0 // indirect + golang.org/x/net v0.38.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 87668c0d8d4a..697f6115b6c3 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -110,8 +110,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 95e65cb83411..e7f489ba64de 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -83,7 +83,7 @@ require ( go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.36.0 // indirect - golang.org/x/net v0.37.0 // indirect + golang.org/x/net v0.38.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.23.0 // indirect golang.org/x/time v0.11.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 81023c6dce1a..85911a1606a4 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -140,8 +140,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/go.mod b/go.mod index 8fb4c35cc688..43224c43f3e1 100644 --- a/go.mod +++ b/go.mod @@ -93,7 +93,7 @@ require ( go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.36.0 // indirect - golang.org/x/net v0.37.0 // indirect + golang.org/x/net v0.38.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/go.sum b/go.sum index e9ebd45d9601..6a739bab8dbc 100644 --- a/go.sum +++ b/go.sum @@ -196,8 +196,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/pkg/go.mod b/pkg/go.mod index 15e0efc2c8c1..7a3f0d5f030d 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -24,7 +24,7 @@ require ( go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.37.0 // indirect + golang.org/x/net v0.38.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 6d0124392651..2591fece5d8b 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -53,8 +53,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= diff --git a/server/go.mod b/server/go.mod index 75ec8583e4fb..c9a3360e9157 100644 --- a/server/go.mod +++ b/server/go.mod @@ -38,7 +38,7 @@ require ( go.opentelemetry.io/otel/sdk v1.35.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.36.0 - golang.org/x/net v0.37.0 + golang.org/x/net v0.38.0 golang.org/x/time v0.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb google.golang.org/grpc v1.71.0 diff --git a/server/go.sum b/server/go.sum index 9e0175ba27fb..11249e836592 100644 --- a/server/go.sum +++ b/server/go.sum @@ -174,8 +174,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tests/go.mod b/tests/go.mod index 72199baf217c..656b1b8485cb 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -94,7 +94,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.37.0 // indirect + golang.org/x/net v0.38.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/tests/go.sum b/tests/go.sum index 6e5e312b22e1..1ec8cf3ae222 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -200,8 +200,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index d3b73b4a9c79..527384619f34 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -216,7 +216,7 @@ require ( golang.org/x/crypto v0.36.0 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect golang.org/x/mod v0.24.0 // indirect - golang.org/x/net v0.37.0 // indirect + golang.org/x/net v0.38.0 // indirect golang.org/x/sync v0.12.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/term v0.30.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index b32041a27339..ecfbbf1c4d36 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -571,8 +571,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 63be9994cf08..09ba76e4be5e 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -18,7 +18,7 @@ require ( github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect - golang.org/x/net v0.37.0 // indirect + golang.org/x/net v0.38.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 5472094c4c45..11429929b344 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1336,8 +1336,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From 1e826716debcd4c820df951dcff4cd2f7783d0c1 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Tue, 8 Apr 2025 08:55:19 +0200 Subject: [PATCH 0087/1068] bump google.golang.org/grpc from 1.71.0 to 1.71.1 Reference: - https://github.com/etcd-io/etcd/pull/19720 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 20 files changed, 30 insertions(+), 30 deletions(-) diff --git a/api/go.mod b/api/go.mod index 8feec6cd1b7d..18f795c5e4f4 100644 --- a/api/go.mod +++ b/api/go.mod @@ -11,7 +11,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/stretchr/testify v1.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb - google.golang.org/grpc v1.71.0 + google.golang.org/grpc v1.71.1 google.golang.org/protobuf v1.36.6 ) diff --git a/api/go.sum b/api/go.sum index 07b7e0ce83fb..c3012dff6110 100644 --- a/api/go.sum +++ b/api/go.sum @@ -77,8 +77,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= -google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= +google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index 324a8e65245d..d94b7d4df4f6 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.71.0 + google.golang.org/grpc v1.71.1 sigs.k8s.io/yaml v1.4.0 ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 4fd4c4212d04..e0d840e25831 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -111,8 +111,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= -google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= +google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index c47829034415..a4de5b84865c 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.11.0 - google.golang.org/grpc v1.71.0 + google.golang.org/grpc v1.71.1 ) require ( diff --git a/etcdctl/go.sum b/etcdctl/go.sum index f30fd80f8ab9..e70850016736 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -139,8 +139,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= -google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= +google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 1f9e3a7f73b5..9930bae8767a 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -89,7 +89,7 @@ require ( golang.org/x/time v0.11.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/grpc v1.71.0 // indirect + google.golang.org/grpc v1.71.1 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 59466631fbff..a395ca78cc2c 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -171,8 +171,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= -google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= +google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index 9930824cfdc1..e7edc96be559 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.11.0 - google.golang.org/grpc v1.71.0 + google.golang.org/grpc v1.71.1 google.golang.org/protobuf v1.36.6 ) diff --git a/go.sum b/go.sum index c0f68556b542..d944cc5d3945 100644 --- a/go.sum +++ b/go.sum @@ -247,8 +247,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= -google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= +google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/go.mod b/pkg/go.mod index 9e0401286cf0..ea78ef92f1e5 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.71.0 + google.golang.org/grpc v1.71.1 ) require ( diff --git a/pkg/go.sum b/pkg/go.sum index 3fb309c3dd73..b1082271f65e 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -61,8 +61,8 @@ golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= -google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= +google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index 1e2b92647a25..eea4c0985fed 100644 --- a/server/go.mod +++ b/server/go.mod @@ -41,7 +41,7 @@ require ( golang.org/x/net v0.38.0 golang.org/x/time v0.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb - google.golang.org/grpc v1.71.0 + google.golang.org/grpc v1.71.1 google.golang.org/protobuf v1.36.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.4.0 diff --git a/server/go.sum b/server/go.sum index 02fbdd693f8d..63eb5b58e5f2 100644 --- a/server/go.sum +++ b/server/go.sum @@ -224,8 +224,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= -google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= +google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index e3c1e08a077b..734bfbfc60a2 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -47,7 +47,7 @@ require ( golang.org/x/crypto v0.37.0 golang.org/x/sync v0.13.0 golang.org/x/time v0.11.0 - google.golang.org/grpc v1.71.0 + google.golang.org/grpc v1.71.1 google.golang.org/protobuf v1.36.6 ) diff --git a/tests/go.sum b/tests/go.sum index 0f8bf3ebdf80..9a848f463cb4 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -251,8 +251,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= -google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= +google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 7b219919e537..c90c5ca1fd33 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -224,7 +224,7 @@ require ( golang.org/x/tools v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/grpc v1.71.0 // indirect + google.golang.org/grpc v1.71.1 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index f76686cd09c6..cb8dccdc5f6e 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -664,8 +664,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= -google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= +google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 6baf5d9288f9..d3c1d412f697 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -22,5 +22,5 @@ require ( golang.org/x/sys v0.32.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/grpc v1.71.0 // indirect + google.golang.org/grpc v1.71.1 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index b67551b540b8..cdf143252aa8 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1888,8 +1888,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= -google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= +google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From ea0a0aeaefbb9e59f0e7388438c7f41ed14e803c Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 25 Mar 2025 21:10:10 +0800 Subject: [PATCH 0088/1068] markdown-lint: set line length checking to false Add newline at the end of file Signed-off-by: joshjms --- tools/.markdownlint.jsonc | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/tools/.markdownlint.jsonc b/tools/.markdownlint.jsonc index 0263558de6d6..e92b6f813b4c 100644 --- a/tools/.markdownlint.jsonc +++ b/tools/.markdownlint.jsonc @@ -64,25 +64,7 @@ "maximum": 1 }, - // MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md013.md - "MD013": { - // Number of characters - "line_length": 80, - // Number of characters for headings - "heading_line_length": 80, - // Number of characters for code blocks - "code_block_line_length": 80, - // Include code blocks - "code_blocks": true, - // Include tables - "tables": true, - // Include headings - "headings": true, - // Strict length checking - "strict": false, - // Stern length checking - "stern": false - }, + "MD013": false, // MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md014.md "MD014": true, @@ -307,4 +289,4 @@ // MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md058.md "MD058": true - } \ No newline at end of file + } From 2a4eb296a8e29a540e253cdd4b2737ee77cdda90 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 9 Apr 2025 10:38:03 +0200 Subject: [PATCH 0089/1068] [Robustness] Improve HashKV check comments Reference: - https://github.com/etcd-io/etcd/pull/19680 Signed-off-by: Chun-Hung Tseng --- tests/robustness/client/kvhash.go | 4 ++-- tests/robustness/main_test.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/robustness/client/kvhash.go b/tests/robustness/client/kvhash.go index f72ddcec5d41..e4fc2b482093 100644 --- a/tests/robustness/client/kvhash.go +++ b/tests/robustness/client/kvhash.go @@ -25,7 +25,7 @@ import ( "go.etcd.io/etcd/tests/v3/framework/e2e" ) -func CheckHashKV(ctx context.Context, clus *e2e.EtcdProcessCluster) error { +func CheckEndOfTestHashKV(ctx context.Context, clus *e2e.EtcdProcessCluster) error { c, err := clientv3.New(clientv3.Config{ Endpoints: clus.EndpointsGRPC(), Logger: zap.NewNop(), @@ -52,7 +52,7 @@ func CheckHashKV(ctx context.Context, clus *e2e.EtcdProcessCluster) error { return err } if hashKV.Header.Revision != rev { - return fmt.Errorf("max revision between nodes should be the same. Want %v, get %v", rev, hashKV.Header.Revision) + return fmt.Errorf("latest revision at the end of the test between nodes should be the same. Want %v, get %v", rev, hashKV.Header.Revision) } hashKVs = append(hashKVs, hashKV) } diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index 93f4e00326a7..885934df4cb6 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -145,7 +145,7 @@ func runScenario(ctx context.Context, t *testing.T, s scenarios.TestScenario, lg }) g.Wait() - err := client.CheckHashKV(ctx, clus) + err := client.CheckEndOfTestHashKV(ctx, clus) if err != nil { t.Error(err) } From 4feb0cbf095cfea170ef56939b94d981a459f669 Mon Sep 17 00:00:00 2001 From: Siyuan Zhang Date: Thu, 27 Mar 2025 09:03:28 -0700 Subject: [PATCH 0090/1068] Add option to dump a range of entries. Signed-off-by: Siyuan Zhang --- tools/etcd-dump-logs/README.md | 30 +++++++++++++++++++++---- tools/etcd-dump-logs/main.go | 40 +++++++++++++++++++++++++++------- 2 files changed, 58 insertions(+), 12 deletions(-) diff --git a/tools/etcd-dump-logs/README.md b/tools/etcd-dump-logs/README.md index 0922f2878fb1..58ed80df6d6c 100644 --- a/tools/etcd-dump-logs/README.md +++ b/tools/etcd-dump-logs/README.md @@ -52,7 +52,10 @@ Flags: IRRRange, IRRPut, IRRDeleteRange, IRRTxn, IRRCompaction, IRRLeaseGrant, IRRLeaseRevoke -start-index uint - The index to start dumping + The index to start dumping (inclusive) + If unspecified, dumps from the index of the last snapshot. + -end-index uint + The index to stop dumping (exclusive) -start-snap string The base name of snapshot file to start dumping -stream-decoder string @@ -146,11 +149,11 @@ Entry types () count is : 8 ``` #### etcd-dump-logs -start-index [data dir] -Only shows WAL log entries after the specified start-index number, exclusively. +Only shows WAL log entries after the specified start-index number, inclusively. ``` -$ etcd-dump-logs -start-index 30 /tmp/datadir -Start dumping log entries from index 30. +$ etcd-dump-logs -start-index 31 /tmp/datadir +Start dumping log entries from index 31. WAL metadata: nodeID=0 clusterID=0 term=0 commitIndex=0 vote=0 WAL entries: @@ -162,4 +165,23 @@ term index type data 27 34 norm ??? Entry types () count is : 4 ``` + +#### etcd-dump-logs -start-index -end-index [data dir] + +Only shows WAL log entries from the specified start-index number (inclusively) to the specified end-index number (exclusively). + +``` +$ etcd-dump-logs -start-index 930 -end-index 932 /tmp/datadir +Start dumping log entries from index 930. +WAL metadata: +nodeID=0 clusterID=0 term=5 commitIndex=2448 vote=0 +WAL entries: 2 +lastIndex=931 +term index type data + 3 930 norm header: put: + 3 931 norm header: put: + +Entry types (Normal,ConfigChange) count is : 2 +``` + [decoder_correctoutputformat.sh]: ./testdecoder/decoder_correctoutputformat.sh diff --git a/tools/etcd-dump-logs/main.go b/tools/etcd-dump-logs/main.go index f0bba446762a..f0d2a29c4ac7 100644 --- a/tools/etcd-dump-logs/main.go +++ b/tools/etcd-dump-logs/main.go @@ -23,6 +23,7 @@ import ( "fmt" "io" "log" + "math" "os" "os/exec" "path/filepath" @@ -51,7 +52,8 @@ const ( func main() { snapfile := flag.String("start-snap", "", "The base name of snapshot file to start dumping") waldir := flag.String("wal-dir", "", "If set, dumps WAL from the informed path, rather than following the standard 'data_dir/member/wal/' location") - index := flag.Uint64("start-index", 0, "The index to start dumping") + startIndex := flag.Uint64("start-index", 0, "The index to start dumping (inclusive). If unspecified, dumps from the index of the last snapshot.") + endIndex := flag.Uint64("end-index", math.MaxUint64, "The index to stop dumping (exclusive)") // Default entry types are Normal and ConfigChange entrytype := flag.String("entry-type", defaultEntryTypes, `If set, filters output by entry type. Must be one or more than one of: ConfigChange, Normal, Request, InternalRaftRequest, @@ -70,7 +72,7 @@ and output a hex encoded line of binary for each input line`) } dataDir := flag.Args()[0] - if *snapfile != "" && *index != 0 { + if *snapfile != "" && *startIndex != 0 { log.Fatal("start-snap and start-index flags cannot be used together.") } @@ -82,7 +84,7 @@ and output a hex encoded line of binary for each input line`) }) if !*raw { - ents := readUsingReadAll(lg, startFromIndex, index, snapfile, dataDir, waldir) + ents := readUsingReadAll(lg, startFromIndex, startIndex, endIndex, snapfile, dataDir, waldir) fmt.Printf("WAL entries: %d\n", len(ents)) if len(ents) > 0 { @@ -107,20 +109,25 @@ and output a hex encoded line of binary for each input line`) if wd == "" { wd = walDir(dataDir) } - readRaw(index, wd, os.Stdout) + readRaw(startIndex, wd, os.Stdout) } } -func readUsingReadAll(lg *zap.Logger, startFromIndex bool, index *uint64, snapfile *string, dataDir string, waldir *string) []raftpb.Entry { +func readUsingReadAll(lg *zap.Logger, startFromIndex bool, startIndex *uint64, endIndex *uint64, snapfile *string, dataDir string, waldir *string) []raftpb.Entry { var ( walsnap walpb.Snapshot snapshot *raftpb.Snapshot err error ) + endAtIndex := *endIndex < math.MaxUint64 if startFromIndex { - fmt.Printf("Start dumping log entries from index %d.\n", *index) - walsnap.Index = *index + fmt.Printf("Start dumping log entries from index %d.\n", *startIndex) + // ReadAll() reads entries from the index after walsnap.Index, so we need to move walsnap.Index back one. + if *startIndex > 0 { + *startIndex-- + } + walsnap.Index = *startIndex } else { if *snapfile == "" { ss := snap.New(lg, snapDir(dataDir)) @@ -160,12 +167,29 @@ func readUsingReadAll(lg *zap.Logger, startFromIndex bool, index *uint64, snapfi wmetadata, state, ents, err := w.ReadAll() w.Close() if err != nil && (!startFromIndex || !errors.Is(err, wal.ErrSnapshotNotFound)) { - log.Fatalf("Failed reading WAL: %v", err) + // ReadAll might return ErrSliceOutOfRange and the first series of entries if the server is offline for a while and receives a snapshot from leader. + // It is ok to ignore ErrSliceOutOfRange if just requesting a specific range of entries + if !endAtIndex || !errors.Is(err, wal.ErrSliceOutOfRange) { + log.Fatalf("Failed reading WAL: %v", err) + } + log.Printf("Failed reading all WAL: %v", err) } id, cid := parseWALMetadata(wmetadata) vid := types.ID(state.Vote) fmt.Printf("WAL metadata:\nnodeID=%s clusterID=%s term=%d commitIndex=%d vote=%s\n", id, cid, state.Term, state.Commit, vid) + if endAtIndex { + entries := make([]raftpb.Entry, 0) + for _, e := range ents { + // WAL might contain entries with e.Index >= *endIndex from prev term, then e.Index < *endIndex in the next term. + // We cannot break when e.Index >= *endIndex. + if e.Index >= *endIndex { + continue + } + entries = append(entries, e) + } + return entries + } return ents } From 6be74f7b30ac27ee77d3ddb2f4dc276d96102c28 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 27 Mar 2025 13:02:56 +0100 Subject: [PATCH 0091/1068] Merge operation categorization into one function Signed-off-by: Marek Siarkowicz --- .../robustness/validate/patch_history_test.go | 5 +- tests/robustness/validate/validate.go | 54 ++++++------------- 2 files changed, 20 insertions(+), 39 deletions(-) diff --git a/tests/robustness/validate/patch_history_test.go b/tests/robustness/validate/patch_history_test.go index cb8c3026cb70..472b9dc3aa34 100644 --- a/tests/robustness/validate/patch_history_test.go +++ b/tests/robustness/validate/patch_history_test.go @@ -412,8 +412,9 @@ func TestPatchHistory(t *testing.T) { Watch: tc.watchOperations, }, } - operations := patchLinearizableOperations(relevantOperations(patchFailedRequestWithInfiniteReturnTime(reports)), reports, tc.persistedRequest) - if diff := cmp.Diff(tc.expectedRemainingOperations, operations, + operations, _ := prepareAndCategorizeOperations(reports) + patched := patchLinearizableOperations(operations, reports, tc.persistedRequest) + if diff := cmp.Diff(tc.expectedRemainingOperations, patched, cmpopts.EquateEmpty(), cmpopts.IgnoreFields(porcupine.Operation{}, "Input", "Call", "ClientId"), ); diff != "" { diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index 5d9094d9ce54..a50d1cc92d1e 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -62,47 +62,27 @@ type Config struct { ExpectRevisionUnique bool } -func prepareAndCategorizeOperations(reports []report.ClientReport) ([]porcupine.Operation, []porcupine.Operation) { - patchedOperations := patchFailedRequestWithInfiniteReturnTime(reports) - return relevantOperations(patchedOperations), filterSerializableOperations(patchedOperations) -} - -func relevantOperations(operations []porcupine.Operation) []porcupine.Operation { - var ops []porcupine.Operation - for _, op := range operations { - request := op.Input.(model.EtcdRequest) - resp := op.Output.(model.MaybeEtcdResponse) - // Remove failed read requests as they are not relevant for linearization. - if resp.Error == "" || !request.IsRead() { - ops = append(ops, op) - } - } - return ops -} - -func filterSerializableOperations(operations []porcupine.Operation) []porcupine.Operation { - resp := []porcupine.Operation{} - for _, op := range operations { - request := op.Input.(model.EtcdRequest) - if request.Type == model.Range && request.Range.Revision != 0 { - resp = append(resp, op) - } - } - return resp -} - -func patchFailedRequestWithInfiniteReturnTime(reports []report.ClientReport) []porcupine.Operation { - operations := make([]porcupine.Operation, 0) +func prepareAndCategorizeOperations(reports []report.ClientReport) (linearizable []porcupine.Operation, serializable []porcupine.Operation) { for _, report := range reports { - for _, operation := range report.KeyValue { - // Failed writes can still be persisted, setting to infinite for now as we don't know when request has taken effect. - if operation.Output.(model.MaybeEtcdResponse).Error != "" { - operation.Return = math.MaxInt64 + for _, op := range report.KeyValue { + request := op.Input.(model.EtcdRequest) + response := op.Output.(model.MaybeEtcdResponse) + // serializable operations include only Range requests on non-zero revision + if request.Type == model.Range && request.Range.Revision != 0 { + serializable = append(serializable, op) + } + // Remove failed read requests as they are not relevant for linearization. + if response.Error == "" || !request.IsRead() { + // For linearization, we set the return time of failed requests to MaxInt64. + // Failed requests can still be persisted, however we don't know when request has taken effect. + if response.Error != "" { + op.Return = math.MaxInt64 + } + linearizable = append(linearizable, op) } - operations = append(operations, operation) } } - return operations + return linearizable, serializable } func checkValidationAssumptions(reports []report.ClientReport, persistedRequests []model.EtcdRequest) error { From 2135c1c7e6093eaf8d1c67f79d954af9bffb86ad Mon Sep 17 00:00:00 2001 From: joshjms Date: Fri, 11 Apr 2025 02:38:01 +0800 Subject: [PATCH 0092/1068] fix: remove required headings Signed-off-by: joshjms --- tools/.markdownlint.jsonc | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tools/.markdownlint.jsonc b/tools/.markdownlint.jsonc index e92b6f813b4c..9aae9cb7a846 100644 --- a/tools/.markdownlint.jsonc +++ b/tools/.markdownlint.jsonc @@ -195,12 +195,7 @@ "MD042": true, // MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md043.md - "MD043": { - // List of headings - "headings": [], - // Match case of headings - "match_case": false - }, + "MD043": false, // MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md044.md "MD044": { From f7883c7463397524aec4c0b1b63b4b05e1331ed2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Apr 2025 18:05:04 +0000 Subject: [PATCH 0093/1068] build(deps): bump github/codeql-action from 3.28.13 to 3.28.14 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.13 to 3.28.14. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/1b549b9259bda1cb5ddde3b41741a82a2d15a841...fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.28.14 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index c33ce8606c1b..b23aa7bd54e6 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 + uses: github/codeql-action/init@fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2 # v3.28.14 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 + uses: github/codeql-action/autobuild@fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2 # v3.28.14 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 + uses: github/codeql-action/analyze@fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2 # v3.28.14 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 05896058b33e..48da9abb8d71 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 + uses: github/codeql-action/upload-sarif@fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2 # v3.28.14 with: sarif_file: results.sarif From dce85f9a666988427e928ad25c4b2fac107b6fa3 Mon Sep 17 00:00:00 2001 From: joshjms Date: Mon, 7 Apr 2025 23:20:36 +0800 Subject: [PATCH 0094/1068] docs: Summarize steps to update etcd version in Kubernetes Signed-off-by: joshjms --- .../bump_etcd_version_k8s.md | 185 ++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 Documentation/contributor-guide/bump_etcd_version_k8s.md diff --git a/Documentation/contributor-guide/bump_etcd_version_k8s.md b/Documentation/contributor-guide/bump_etcd_version_k8s.md new file mode 100644 index 000000000000..e2ad7e8cb36f --- /dev/null +++ b/Documentation/contributor-guide/bump_etcd_version_k8s.md @@ -0,0 +1,185 @@ +# Bump etcd Version in Kubernetes + +This guide will walk through the update of etcd in Kubernetes to a new version (`kubernetes/kubernetes` repository). + +You can use this [issue](https://github.com/kubernetes/kubernetes/issues/131101) as a reference when updating the etcd version in Kubernetes. + +Bumping the etcd version in Kubernetes consists of two steps. + +* Bump etcd client SDK +* Bump etcd image + +> The commented lines in this document signifies the line to be changed + +## Bump etcd client SDK + +> Reference: [link](https://github.com/kubernetes/kubernetes/pull/131103) + +You can refer to the guide [here](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/vendor.md) under the **Adding or updating a dependency** section. + +1. Get all the etcd modules used in Kubernetes. + + ```bash + $ grep 'go.etcd.io/etcd/' go.mod | awk '{print $1}' + go.etcd.io/etcd/api/v3 + go.etcd.io/etcd/client/pkg/v3 + go.etcd.io/etcd/client/v3 + go.etcd.io/etcd/client/v2 + go.etcd.io/etcd/pkg/v3 + go.etcd.io/etcd/raft/v3 + go.etcd.io/etcd/server/v3 + ``` + +2. For each module, in the root directory of the `kubernetes/kubernetes` repository, fetch the new version in `go.mod` using the following command (using `client/v3` as an example): + + ```bash + hack/pin-dependency.sh go.etcd.io/etcd/client/v3 NEW_VERSION + ``` + +3. Rebuild the `vendor` directory and update the `go.mod` files for all staging repositories using the command below. This automatically updates the licenses. + + ```bash + hack/update-vendor.sh + ``` + +4. Check if the new dependency requires newer versions of existing dependencies we have pinned. You can check this by: + + * Running `hack/lint-dependencies.sh` against your branch and against `master` and comparing the results. + * Checking if any new `replace` directives were added to `go.mod` files of components inside the staging directory. + +## Bump etcd image + +### Build etcd image + +> Reference: [link 1](https://github.com/kubernetes/kubernetes/pull/131105) [link 2](https://github.com/kubernetes/kubernetes/pull/131126) + +1. In `build/dependencies.yaml`, update the `version` of `etcd-image` and `golang: etcd release version` to the new version. + + ```yaml + - name: "etcd-image" + # version: 3.5.17 + version: 3.5.21 + refPaths: + - path: cluster/images/etcd/Makefile + match: BUNDLED_ETCD_VERSIONS\?| + ``` + +2. In `cluster/images/etcd/Makefile`, include the new version in `BUNDLED_ETCD_VERSIONS` and update the `LATEST_ETCD_VERSION` as well (the image tag will be generated from the `LATEST_ETCD_VERSION`). Update `GOLANG_VERSION` if necessary. + + ```Makefile + # BUNDLED_ETCD_VERSIONS?=3.4.18 3.5.17 + BUNDLED_ETCD_VERSIONS?=3.4.18 3.5.21 + + # LATEST_ETCD_VERSION?=3.5.17 + LATEST_ETCD_VERSION?=3.5.21 + + # GOLANG_VERSION := 1.22.9 + GOLANG_VERSION := 1.23.7 + ``` + +3. In `cluster/images/etcd/migrate/options.go`, include the new version in the `supportedEtcdVersions` slice. + + ```go + var ( + // supportedEtcdVersions = []string{"3.4.18", "3.5.17"} + supportedEtcdVersions = []string{"3.4.18", "3.5.21"} + ) + ``` + +### Publish etcd image + +> Reference: [link](https://github.com/kubernetes/k8s.io/pull/7957) + +1. When the previous step is merged, a post-commit job will run to build the image. You can find the newly built image in the [registry](https://gcr.io/k8s-staging-etcd/etcd). + +2. Locate the newly built image and copy its SHA256 digest. + +3. Inside the `kubernetes/k8s.io` repository, in `registry.k8s.io/images/k8s-staging-etcd/images.yaml`, create a new entry for the desired version and copy the SHA256 digest. + + ```yaml + "sha256:b4a9e4a7e1cf08844c7c4db6a19cab380fbf0aad702b8c01e578e9543671b9f9": ["3.5.17-0"] + # ADD: + "sha256:d58c035df557080a27387d687092e3fc2b64c6d0e3162dc51453a115f847d121": ["3.5.21-0"] + ``` + +### Update to use the new etcd image + +> Reference: [link](https://github.com/kubernetes/kubernetes/pull/131144) + +1. In `build/dependencies.yaml`, change the `version` of `etcd` to the new version. + + ```yaml + # etcd + - name: "etcd" + # version: 3.5.17 + version: 3.5.21 + refPaths: + - path: cluster/gce/manifests/etcd.manifest + match: etcd_docker_tag|etcd_version + ``` + +2. In `cluster/gce/manifests/etcd.manifest`, change the image tag to the new image tag and `TARGET_VERSION` to the new version. + + ```manifest + // "image": "{{ pillar.get('etcd_docker_repository', 'registry.k8s.io/etcd') }}:{{ pillar.get('etcd_docker_tag', '3.5.17-0') }}", + + "image": "{{ pillar.get('etcd_docker_repository', 'registry.k8s.io/etcd') }}:{{ pillar.get('etcd_docker_tag', '3.5.21-0') }}", + + --- + + { "name": "TARGET_VERSION", + // "value": "{{ pillar.get('etcd_version', '3.5.17') }}" + "value": "{{ pillar.get('etcd_version', '3.5.21') }}" + }, + ``` + +3. In `cluster/gce/upgrade-aliases.sh`, update the exports for `ETCD_IMAGE` to the new image tag and `ETCD_VERSION` to the new version. + + ```sh + # export ETCD_IMAGE=3.5.17-0 + export ETCD_IMAGE=3.5.21-0 + # export ETCD_VERSION=3.5.17 + export ETCD_VERSION=3.5.21 + ``` + +4. In `cmd/kubeadm/app/constants/constants.go`, change the `DefaultEtcdVersion` to the new version. In the same file, update `SupportedEtcdVersion` accordingly. + + ```go + // DefaultEtcdVersion = "3.5.17-0" + DefaultEtcdVersion = "3.5.21-0" + + --- + + SupportedEtcdVersion = map[uint8]string{ + // 30: "3.5.17-0", + // 31: "3.5.17-0", + // 32: "3.5.17-0", + // 33: "3.5.17-0", + 30: "3.5.21-0", + 31: "3.5.21-0", + 32: "3.5.21-0", + 33: "3.5.21-0", + } + ``` + +5. In `hack/lib/etcd.sh`, update the `ETCD_VERSION`. + + ```sh + # ETCD_VERSION=${ETCD_VERSION:-3.5.17} + ETCD_VERSION=${ETCD_VERSION:-3.5.21} + ``` + +6. In `staging/src/k8s.io/sample-apiserver/artifacts/example/deployment.yaml`, update the etcd image used. + + ```yaml + - name: etcd + # image: gcr.io/etcd-development/etcd:v3.5.17 + image: gcr.io/etcd-development/etcd:v3.5.21 + ``` + +7. In `test/utils/image/manifest.go`, update the etcd image tag. + + ```go + // configs[Etcd] = Config{list.GcEtcdRegistry, "etcd", "3.5.17-0"} + configs[Etcd] = Config{list.GcEtcdRegistry, "etcd", "3.5.21-0"} + ``` From fe1d0766da055a6869ab2a5713cc88a8d5e454e4 Mon Sep 17 00:00:00 2001 From: joshjms Date: Fri, 11 Apr 2025 17:34:34 +0800 Subject: [PATCH 0095/1068] add current versioning rule Clarified according to https://github.com/etcd-io/etcd/pull/19717#issuecomment-2789183940 Signed-off-by: joshjms --- Documentation/contributor-guide/bump_etcd_version_k8s.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/contributor-guide/bump_etcd_version_k8s.md b/Documentation/contributor-guide/bump_etcd_version_k8s.md index e2ad7e8cb36f..f055ea981212 100644 --- a/Documentation/contributor-guide/bump_etcd_version_k8s.md +++ b/Documentation/contributor-guide/bump_etcd_version_k8s.md @@ -2,6 +2,8 @@ This guide will walk through the update of etcd in Kubernetes to a new version (`kubernetes/kubernetes` repository). +> Currently we bump etcd v3.5.x for K8s release-1.33 and lower versions, and we bump etcd v3.6.x for K8s release-1.34 and higher versions. + You can use this [issue](https://github.com/kubernetes/kubernetes/issues/131101) as a reference when updating the etcd version in Kubernetes. Bumping the etcd version in Kubernetes consists of two steps. From 52115a6f46779bbe802c7e39a1a1b036000fd3dc Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 16 Apr 2025 18:18:50 +0000 Subject: [PATCH 0096/1068] dependency: bump golang.org/x/net from 0.38.0 to 0.39.0 Reference: - https://github.com/etcd-io/etcd/pull/19743 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 20 files changed, 30 insertions(+), 30 deletions(-) diff --git a/api/go.mod b/api/go.mod index 18f795c5e4f4..64d33203531e 100644 --- a/api/go.mod +++ b/api/go.mod @@ -21,7 +21,7 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect - golang.org/x/net v0.38.0 // indirect + golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.32.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/api/go.sum b/api/go.sum index c3012dff6110..25ef8d4ab6be 100644 --- a/api/go.sum +++ b/api/go.sum @@ -51,8 +51,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/client/v3/go.mod b/client/v3/go.mod index d94b7d4df4f6..24e001b84e1b 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -35,7 +35,7 @@ require ( go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.38.0 // indirect + golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.32.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index e0d840e25831..3e42db56141b 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -85,8 +85,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index a4de5b84865c..97ad19c0eafb 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -37,7 +37,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.38.0 // indirect + golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.32.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index e70850016736..412d8fe83291 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -110,8 +110,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 9930bae8767a..ee5c6442ec93 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -83,7 +83,7 @@ require ( go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.37.0 // indirect - golang.org/x/net v0.38.0 // indirect + golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.32.0 // indirect golang.org/x/text v0.24.0 // indirect golang.org/x/time v0.11.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index a395ca78cc2c..bae7bdf4a87f 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -140,8 +140,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/go.mod b/go.mod index e7edc96be559..12032cb7c0be 100644 --- a/go.mod +++ b/go.mod @@ -93,7 +93,7 @@ require ( go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.37.0 // indirect - golang.org/x/net v0.38.0 // indirect + golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.32.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/go.sum b/go.sum index d944cc5d3945..ed3c1ae4b985 100644 --- a/go.sum +++ b/go.sum @@ -196,8 +196,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/pkg/go.mod b/pkg/go.mod index ea78ef92f1e5..6ea4d8e480e6 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -24,7 +24,7 @@ require ( go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.38.0 // indirect + golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.32.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/pkg/go.sum b/pkg/go.sum index b1082271f65e..a10bc296b2a5 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -53,8 +53,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= diff --git a/server/go.mod b/server/go.mod index eea4c0985fed..3ae306279efe 100644 --- a/server/go.mod +++ b/server/go.mod @@ -38,7 +38,7 @@ require ( go.opentelemetry.io/otel/sdk v1.35.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.37.0 - golang.org/x/net v0.38.0 + golang.org/x/net v0.39.0 golang.org/x/time v0.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb google.golang.org/grpc v1.71.1 diff --git a/server/go.sum b/server/go.sum index 63eb5b58e5f2..5024374d153f 100644 --- a/server/go.sum +++ b/server/go.sum @@ -174,8 +174,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tests/go.mod b/tests/go.mod index 734bfbfc60a2..d0cd3e08bbcd 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -94,7 +94,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.38.0 // indirect + golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.32.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/tests/go.sum b/tests/go.sum index 9a848f463cb4..00234ecededf 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -200,8 +200,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index c90c5ca1fd33..1946b10f908f 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -216,7 +216,7 @@ require ( golang.org/x/crypto v0.37.0 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect golang.org/x/mod v0.24.0 // indirect - golang.org/x/net v0.38.0 // indirect + golang.org/x/net v0.39.0 // indirect golang.org/x/sync v0.13.0 // indirect golang.org/x/sys v0.32.0 // indirect golang.org/x/term v0.31.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index cb8dccdc5f6e..2d504e3d2964 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -571,8 +571,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index d3c1d412f697..766b745728d4 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -18,7 +18,7 @@ require ( github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect - golang.org/x/net v0.38.0 // indirect + golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.32.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index cdf143252aa8..a5c2b8e5c0b6 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1336,8 +1336,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From e71819d4162de678862a9dc28ae93fb3915534e8 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 16 Apr 2025 18:20:04 +0000 Subject: [PATCH 0097/1068] dependency: bump github.com/alexfalkowski/gocovmerge from 1.6.0 to 1.7.0 Reference: - https://github.com/etcd-io/etcd/pull/19745 Signed-off-by: Chun-Hung Tseng --- tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 1946b10f908f..0b88aafacec9 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -5,7 +5,7 @@ go 1.24 toolchain go1.24.2 require ( - github.com/alexfalkowski/gocovmerge v1.6.0 + github.com/alexfalkowski/gocovmerge v1.7.0 github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 github.com/cloudflare/cfssl v1.6.5 @@ -221,7 +221,7 @@ require ( golang.org/x/sys v0.32.0 // indirect golang.org/x/term v0.31.0 // indirect golang.org/x/text v0.24.0 // indirect - golang.org/x/tools v0.31.0 // indirect + golang.org/x/tools v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/grpc v1.71.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 2d504e3d2964..bbe8d9614027 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -32,8 +32,8 @@ github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsr github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= -github.com/alexfalkowski/gocovmerge v1.6.0 h1:ym50f/KroVYUKLUMI3GcnxBj77dxJP9G57Urrx63oO8= -github.com/alexfalkowski/gocovmerge v1.6.0/go.mod h1:whLxUVgIW64kj63uTPFgjlFHLa3bDrDpzBbitIjqRs4= +github.com/alexfalkowski/gocovmerge v1.7.0 h1:R/zzCbFZ91WDea7UcoQdEflfv406ARu94eeLCYcuP+M= +github.com/alexfalkowski/gocovmerge v1.7.0/go.mod h1:pnseUyIoFOj8DWSE1n7lZyGceAf3Y/JM8KebVaQFAVA= github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU= github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= @@ -654,8 +654,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= -golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= +golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU= +golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 33f838d9eb169c5663011bbaec0d1f9604aa20e9 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 16 Apr 2025 18:22:38 +0000 Subject: [PATCH 0098/1068] dependency: bump github.com/prometheus/client_golang from 1.21.1 to 1.22.0 Reference: - https://github.com/etcd-io/etcd/pull/19744 Signed-off-by: Chun-Hung Tseng --- bill-of-materials.json | 27 --------------------------- client/v3/go.mod | 3 +-- client/v3/go.sum | 4 ++-- etcdctl/go.sum | 6 ++---- etcdutl/go.mod | 3 +-- etcdutl/go.sum | 4 ++-- go.mod | 3 +-- go.sum | 4 ++-- server/go.mod | 3 +-- server/go.sum | 4 ++-- tests/go.mod | 3 +-- tests/go.sum | 4 ++-- tools/mod/go.mod | 3 +-- tools/mod/go.sum | 6 ++---- 14 files changed, 20 insertions(+), 57 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index 4c7937cc9aaa..d2e68086ad07 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -260,33 +260,6 @@ } ] }, - { - "project": "github.com/klauspost/compress", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 0.9376299376299376 - } - ] - }, - { - "project": "github.com/klauspost/compress/internal/snapref", - "licenses": [ - { - "type": "BSD 3-clause \"New\" or \"Revised\" License", - "confidence": 0.9663865546218487 - } - ] - }, - { - "project": "github.com/klauspost/compress/zstd/internal/xxhash", - "licenses": [ - { - "type": "MIT License", - "confidence": 1 - } - ] - }, { "project": "github.com/mattn/go-colorable", "licenses": [ diff --git a/client/v3/go.mod b/client/v3/go.mod index 24e001b84e1b..eb1084309de8 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 - github.com/prometheus/client_golang v1.21.1 + github.com/prometheus/client_golang v1.22.0 github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 @@ -26,7 +26,6 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect - github.com/klauspost/compress v1.18.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 3e42db56141b..4a874afffb02 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -44,8 +44,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= -github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 412d8fe83291..1207124f7c7d 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -42,8 +42,6 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -61,8 +59,8 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= -github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index ee5c6442ec93..a8e7835e94db 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -57,11 +57,10 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect - github.com/klauspost/compress v1.18.0 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.21.1 // indirect + github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index bae7bdf4a87f..cae6fb661576 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -66,8 +66,8 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= -github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= diff --git a/go.mod b/go.mod index 12032cb7c0be..2de29e5a2372 100644 --- a/go.mod +++ b/go.mod @@ -64,14 +64,13 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect - github.com/klauspost/compress v1.18.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.21.1 // indirect + github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect diff --git a/go.sum b/go.sum index ed3c1ae4b985..331e7e0b207f 100644 --- a/go.sum +++ b/go.sum @@ -104,8 +104,8 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= -github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= diff --git a/server/go.mod b/server/go.mod index 3ae306279efe..c441b6f96d6d 100644 --- a/server/go.mod +++ b/server/go.mod @@ -18,7 +18,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/jonboulle/clockwork v0.5.0 - github.com/prometheus/client_golang v1.21.1 + github.com/prometheus/client_golang v1.22.0 github.com/prometheus/client_model v0.6.1 github.com/soheilhy/cmux v0.1.5 github.com/spf13/cobra v1.9.1 @@ -58,7 +58,6 @@ require ( github.com/gorilla/websocket v1.4.2 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/klauspost/compress v1.18.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect diff --git a/server/go.sum b/server/go.sum index 5024374d153f..747cb5401170 100644 --- a/server/go.sum +++ b/server/go.sum @@ -87,8 +87,8 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= -github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= diff --git a/tests/go.mod b/tests/go.mod index d0cd3e08bbcd..dbcc9362d76c 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -23,7 +23,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 - github.com/prometheus/client_golang v1.21.1 + github.com/prometheus/client_golang v1.22.0 github.com/prometheus/client_model v0.6.1 github.com/prometheus/common v0.63.0 github.com/soheilhy/cmux v0.1.5 @@ -74,7 +74,6 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect - github.com/klauspost/compress v1.18.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect diff --git a/tests/go.sum b/tests/go.sum index 00234ecededf..8b14366554b8 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -108,8 +108,8 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= -github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 0b88aafacec9..1744b0b6cc9d 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -119,7 +119,6 @@ require ( github.com/kisielk/errcheck v1.9.0 // indirect github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 // indirect github.com/kkHAIKE/contextcheck v1.1.6 // indirect - github.com/klauspost/compress v1.18.0 // indirect github.com/kulti/thelper v0.6.3 // indirect github.com/kunwardeep/paralleltest v1.0.10 // indirect github.com/lasiar/canonicalheader v1.1.2 // indirect @@ -153,7 +152,7 @@ require ( github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/polyfloyd/go-errorlint v1.7.1 // indirect - github.com/prometheus/client_golang v1.21.1 // indirect + github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index bbe8d9614027..542e66eed9a7 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -251,8 +251,6 @@ github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 h1:veS9QfglfvqAw github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= github.com/kkHAIKE/contextcheck v1.1.6 h1:7HIyRcnyzxL9Lz06NGhiKvenXq7Zw6Q0UQu/ttjfJCE= github.com/kkHAIKE/contextcheck v1.1.6/go.mod h1:3dDbMRNBFaq8HFXWC1JyvDSPm43CmE6IuHam8Wr0rkg= -github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -349,8 +347,8 @@ github.com/polyfloyd/go-errorlint v1.7.1 h1:RyLVXIbosq1gBdk/pChWA8zWYLsq9UEw7a1L github.com/polyfloyd/go-errorlint v1.7.1/go.mod h1:aXjNb1x2TNhoLsk26iv1yl7a+zTnXPhwEMtEXukiLR8= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= -github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= From 8dd3ae423a1dd36f59d8ec62079b481e2dc21abb Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 16 Apr 2025 18:24:29 +0000 Subject: [PATCH 0099/1068] dependency: bump github.com/prometheus/client_model from 0.6.1 to 0.6.2 Reference: - https://github.com/etcd-io/etcd/pull/19742 Signed-off-by: Chun-Hung Tseng --- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 13 files changed, 20 insertions(+), 20 deletions(-) diff --git a/client/v3/go.mod b/client/v3/go.mod index eb1084309de8..bb7a66fbd70a 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -28,7 +28,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 4a874afffb02..04f96c97d676 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -46,8 +46,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 1207124f7c7d..fd769b90d538 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -61,8 +61,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index a8e7835e94db..1c36a3ea63e1 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -61,7 +61,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.22.0 // indirect - github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index cae6fb661576..c63447411eb9 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -68,8 +68,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= diff --git a/go.mod b/go.mod index 2de29e5a2372..1b5cfd3fedc7 100644 --- a/go.mod +++ b/go.mod @@ -71,7 +71,7 @@ require ( github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.22.0 // indirect - github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect diff --git a/go.sum b/go.sum index 331e7e0b207f..e8d7a366b095 100644 --- a/go.sum +++ b/go.sum @@ -107,8 +107,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= diff --git a/server/go.mod b/server/go.mod index c441b6f96d6d..2d7dc1f6b176 100644 --- a/server/go.mod +++ b/server/go.mod @@ -19,7 +19,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.22.0 - github.com/prometheus/client_model v0.6.1 + github.com/prometheus/client_model v0.6.2 github.com/soheilhy/cmux v0.1.5 github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 diff --git a/server/go.sum b/server/go.sum index 747cb5401170..5101cecaf57b 100644 --- a/server/go.sum +++ b/server/go.sum @@ -90,8 +90,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= diff --git a/tests/go.mod b/tests/go.mod index dbcc9362d76c..623b7cf7d6f3 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -24,7 +24,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/prometheus/client_golang v1.22.0 - github.com/prometheus/client_model v0.6.1 + github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.63.0 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.10.0 diff --git a/tests/go.sum b/tests/go.sum index 8b14366554b8..b7b6a2c322f7 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -111,8 +111,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 1744b0b6cc9d..5e6e09f5f100 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -153,7 +153,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/polyfloyd/go-errorlint v1.7.1 // indirect github.com/prometheus/client_golang v1.22.0 // indirect - github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 542e66eed9a7..53d4c380cfb1 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -349,8 +349,8 @@ github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4 github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= From 40eee74517b72f4710c624d080ebf2769ef83892 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Tue, 15 Apr 2025 20:45:31 +0000 Subject: [PATCH 0100/1068] [Robustness Test] Add antithesis nightly workflow Reference: - https://github.com/etcd-io/etcd/issues/19299 Signed-off-by: Chun-Hung Tseng --- .github/workflows/antithesis-test.yml | 111 ++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 .github/workflows/antithesis-test.yml diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml new file mode 100644 index 000000000000..40b6a15b10c1 --- /dev/null +++ b/.github/workflows/antithesis-test.yml @@ -0,0 +1,111 @@ +--- +name: Build and trigger Antithesis exploration + +on: + # Disabled as discussed in https://github.com/etcd-io/etcd/pull/19750#issuecomment-2809840402 + # pull_request: + # branches: [main] + # schedule: + # - cron: "0 0 * * *" # run every day at midnight + workflow_dispatch: + inputs: + test: + description: 'Test name' + required: false + default: 'etcd nightly antithesis run' + type: string + config_image: + description: 'Config image' + required: true + default: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:latest + type: string + images: + description: 'System images (separate with ;)' + required: true + default: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-client:latest;gcr.io/etcd-development/etcd:v3.5.21 + type: string + duration: + description: 'Duration (exploration hours)' + required: true + type: int + default: 12 + description: + description: 'Description (avoid quotes, please!)' + required: true + type: string + default: "etcd nightly antithesis run" + email: + description: 'Additional email notification recipient (separate with ;)' + required: true + type: string + default: "" + +# Declare default permissions as read only. +permissions: read-all + +env: + REGISTRY: us-central1-docker.pkg.dev + REPOSITORY: molten-verve-216720/linuxfoundation-repository + +jobs: + build-and-push: + runs-on: ubuntu-latest + environment: Antithesis + steps: + - name: Checkout the code + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Login to Antithesis Docker Registry + uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 + with: + registry: ${{ env.REGISTRY }} + username: _json_key + password: ${{ secrets.ANTITHESIS_CONTAINER_REGISTRY_TOKEN }} + + - name: Build and push config image + uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0 + with: + context: ./tests/antithesis + file: ./tests/antithesis/Dockerfile.config + push: true + tags: | + ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:latest, + ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:${{ github.sha }} + + - name: Build and push client image + uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0 + with: + context: ./tests/antithesis/test-template + file: ./tests/antithesis/test-template/Dockerfile.client + push: true + tags: | + ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:latest, + ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:${{ github.sha }} + + run-antithesis: + runs-on: ubuntu-latest + environment: Antithesis + needs: build-and-push + + permissions: + contents: read + packages: write + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Run Antithesis Tests + uses: antithesishq/antithesis-trigger-action@b7d0c9d1d9316bd4de73a44144c56636ea3a64ba # main commit on Mar 13, 2025 + with: + notebook_name: etcd + tenant: linuxfoundation + username: ${{ secrets.ANTITHESIS_WEBHOOK_USERNAME }} + password: ${{ secrets.ANTITHESIS_WEBHOOK_PASSWORD }} + github_token: ${{ secrets.GH_PAT }} + config_image: ${{ inputs.config_image }} + images: ${{ inputs.images }} + description: ${{ inputs.description }} + email_recipients: ${{ inputs.email }} + test_name: ${{ inputs.test }} + additional_parameters: |- + custom.duration = ${{ inputs.duration }} From 3501f51e3b7a1742eb38b35ec0dae0dfde2cd185 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 18 Apr 2025 05:33:47 +0000 Subject: [PATCH 0101/1068] [Robustness Test] Fix Dockerfile.config Signed-off-by: Chun-Hung Tseng --- tests/antithesis/Dockerfile.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/antithesis/Dockerfile.config b/tests/antithesis/Dockerfile.config index e34c18321e06..c69192d92757 100644 --- a/tests/antithesis/Dockerfile.config +++ b/tests/antithesis/Dockerfile.config @@ -1,3 +1,3 @@ from scratch -COPY docker-compose.yml /docker-compose.yml +COPY docker-compose.yaml /docker-compose.yaml From 8dd8f95918b1daedc34b9223380230272497316c Mon Sep 17 00:00:00 2001 From: Abdur Rehman Date: Mon, 14 Apr 2025 19:29:57 +0500 Subject: [PATCH 0102/1068] Move Antithesis demo to etcd repo Signed-off-by: Abdur Rehman --- tests/antithesis/Dockerfile.config | 3 + tests/antithesis/README.md | 76 +++++++++++++++++++ tests/antithesis/docker-compose.yaml | 49 ++++++++++++ .../test-template/Dockerfile.client | 14 ++++ .../test-template/entrypoint/entrypoint.py | 46 +++++++++++ 5 files changed, 188 insertions(+) create mode 100644 tests/antithesis/Dockerfile.config create mode 100644 tests/antithesis/README.md create mode 100644 tests/antithesis/docker-compose.yaml create mode 100644 tests/antithesis/test-template/Dockerfile.client create mode 100755 tests/antithesis/test-template/entrypoint/entrypoint.py diff --git a/tests/antithesis/Dockerfile.config b/tests/antithesis/Dockerfile.config new file mode 100644 index 000000000000..e34c18321e06 --- /dev/null +++ b/tests/antithesis/Dockerfile.config @@ -0,0 +1,3 @@ +from scratch + +COPY docker-compose.yml /docker-compose.yml diff --git a/tests/antithesis/README.md b/tests/antithesis/README.md new file mode 100644 index 000000000000..1c75e39372bf --- /dev/null +++ b/tests/antithesis/README.md @@ -0,0 +1,76 @@ +This directory enables integration of Antithesis with etcd. There are 4 containers running in this system: 3 that make up an etcd cluster (etcd0, etcd1, etcd2) and one that "[makes the system go](https://antithesis.com/docs/getting_started/basic_test_hookup/)" (client). + +## Quickstart + +### 1. Build and Tag the Docker Image + +Run this command from the `antithesis/test-template` directory: + +```bash +docker build . -f Dockerfile.client -t etcd-client:latest +``` + +### 2. (Optional) Check the Image Locally + +You can verify your new image is built: + +```bash +docker images | grep etcd-client +``` + +It should show something like: + +``` +etcd-client latest +``` + +### 3. Use in Docker Compose + +Run the following command from the root directory for Antithesis tests (`tests/antithesis`): + +```bash +docker-compose up +``` + +The client will continuously check the health of the etcd nodes and print logs similar to: + +``` +[+] Running 4/4 + ✔ Container etcd0 Created 0.0s + ✔ Container etcd2 Created 0.0s + ✔ Container etcd1 Created 0.0s + ✔ Container client Recreated 0.1s +Attaching to client, etcd0, etcd1, etcd2 +etcd2 | {"level":"info","ts":"2025-04-14T07:23:25.134294Z","caller":"flags/flag.go:113","msg":"recognized and used environment variable","variable-name":"ETCD_ADVERTISE_CLIENT_URLS","variable-value":"http://etcd2.etcd:2379"} +etcd2 | {"level":"info","ts":"2025-04-14T07:23:25.138501Z","caller":"flags/flag.go:113","msg":"recognized and used environment variable","variable-name":"ETCD_INITIAL_ADVERTISE_PEER_URLS","variable-value":"http://etcd2:2380"} +etcd2 | {"level":"info","ts":"2025-04-14T07:23:25.138646Z","caller":"flags/flag.go:113","msg":"recognized and used environment variable","variable-name":"ETCD_INITIAL_CLUSTER","variable-value":"etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380"} +etcd0 | {"level":"info","ts":"2025-04-14T07:23:25.138434Z","caller":"flags/flag.go:113","msg":"recognized and used environment variable","variable-name":"ETCD_ADVERTISE_CLIENT_URLS","variable-value":"http://etcd0.etcd:2379"} +etcd0 | {"level":"info","ts":"2025-04-14T07:23:25.138582Z","caller":"flags/flag.go:113","msg":"recognized and used environment variable","variable-name":"ETCD_INITIAL_ADVERTISE_PEER_URLS","variable-value":"http://etcd0:2380"} +etcd0 | {"level":"info","ts":"2025-04-14T07:23:25.138592Z","caller":"flags/flag.go:113","msg":"recognized and used environment variable","variable-name":"ETCD_INITIAL_CLUSTER","variable-value":"etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380"} + +... +... +(skipping some repeated logs for brevity) +... +... + +etcd2 | {"level":"info","ts":"2025-04-14T07:23:25.484698Z","caller":"etcdmain/main.go:50","msg":"successfully notified init daemon"} +etcd1 | {"level":"info","ts":"2025-04-14T07:23:25.484092Z","caller":"embed/serve.go:210","msg":"serving client traffic insecurely; this is strongly discouraged!","traffic":"grpc+http","address":"[::]:2379"} +etcd0 | {"level":"info","ts":"2025-04-14T07:23:25.484563Z","caller":"etcdmain/main.go:50","msg":"successfully notified init daemon"} +etcd2 | {"level":"info","ts":"2025-04-14T07:23:25.485101Z","caller":"v3rpc/health.go:61","msg":"grpc service status changed","service":"","status":"SERVING"} +etcd1 | {"level":"info","ts":"2025-04-14T07:23:25.484130Z","caller":"etcdmain/main.go:44","msg":"notifying init daemon"} +etcd2 | {"level":"info","ts":"2025-04-14T07:23:25.485782Z","caller":"embed/serve.go:210","msg":"serving client traffic insecurely; this is strongly discouraged!","traffic":"grpc+http","address":"[::]:2379"} +etcd1 | {"level":"info","ts":"2025-04-14T07:23:25.484198Z","caller":"etcdmain/main.go:50","msg":"successfully notified init daemon"} +client | Client [entrypoint]: starting... +client | Client [entrypoint]: checking cluster health... +client | Client [entrypoint]: connection successful with etcd0 +client | Client [entrypoint]: connection successful with etcd1 +client | Client [entrypoint]: connection successful with etcd2 +client | Client [entrypoint]: cluster is healthy! +``` + +And it will stay running indefinitely. + +## Troubleshooting + +- **Image Pull Errors**: If Docker can’t pull `etcd-client:latest`, make sure you built it locally (see the “Build and Tag” step) or push it to a registry that Compose can access. diff --git a/tests/antithesis/docker-compose.yaml b/tests/antithesis/docker-compose.yaml new file mode 100644 index 000000000000..b0c7c018834b --- /dev/null +++ b/tests/antithesis/docker-compose.yaml @@ -0,0 +1,49 @@ +--- +services: + + etcd0: + image: 'gcr.io/etcd-development/etcd:v3.5.21' + container_name: etcd0 + hostname: etcd0 + environment: + ETCD_NAME: "etcd0" + ETCD_INITIAL_ADVERTISE_PEER_URLS: "http://etcd0:2380" + ETCD_LISTEN_PEER_URLS: "http://0.0.0.0:2380" + ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379" + ETCD_ADVERTISE_CLIENT_URLS: "http://etcd0.etcd:2379" + ETCD_INITIAL_CLUSTER_TOKEN: "etcd-cluster-1" + ETCD_INITIAL_CLUSTER: "etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380" + ETCD_INITIAL_CLUSTER_STATE: "new" + + etcd1: + image: 'gcr.io/etcd-development/etcd:v3.5.21' + container_name: etcd1 + hostname: etcd1 + environment: + ETCD_NAME: "etcd1" + ETCD_INITIAL_ADVERTISE_PEER_URLS: "http://etcd1:2380" + ETCD_LISTEN_PEER_URLS: "http://0.0.0.0:2380" + ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379" + ETCD_ADVERTISE_CLIENT_URLS: "http://etcd1.etcd:2379" + ETCD_INITIAL_CLUSTER_TOKEN: "etcd-cluster-1" + ETCD_INITIAL_CLUSTER: "etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380" + ETCD_INITIAL_CLUSTER_STATE: "new" + + etcd2: + image: 'gcr.io/etcd-development/etcd:v3.5.21' + container_name: etcd2 + hostname: etcd2 + environment: + ETCD_NAME: "etcd2" + ETCD_INITIAL_ADVERTISE_PEER_URLS: "http://etcd2:2380" + ETCD_LISTEN_PEER_URLS: "http://0.0.0.0:2380" + ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379" + ETCD_ADVERTISE_CLIENT_URLS: "http://etcd2.etcd:2379" + ETCD_INITIAL_CLUSTER_TOKEN: "etcd-cluster-1" + ETCD_INITIAL_CLUSTER: "etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380" + ETCD_INITIAL_CLUSTER_STATE: "new" + + client: + image: 'etcd-client:latest' + container_name: client + entrypoint: ["/entrypoint.py"] diff --git a/tests/antithesis/test-template/Dockerfile.client b/tests/antithesis/test-template/Dockerfile.client new file mode 100644 index 000000000000..1ec3fcc53d6e --- /dev/null +++ b/tests/antithesis/test-template/Dockerfile.client @@ -0,0 +1,14 @@ +FROM ubuntu:latest + +# Update package index first, then install Python +RUN apt-get update && \ + apt-get install -y python3 python3-pip + +# Then install additional Python packages +RUN apt-get install -y python3-etcd3 python3-numpy python3-protobuf python3-filelock + +# Install Antithesis Python SDK +RUN pip install antithesis cffi --break-system-packages + +# Copy your entrypoint script +COPY ./entrypoint/entrypoint.py /entrypoint.py diff --git a/tests/antithesis/test-template/entrypoint/entrypoint.py b/tests/antithesis/test-template/entrypoint/entrypoint.py new file mode 100755 index 000000000000..d2bb8b3426a0 --- /dev/null +++ b/tests/antithesis/test-template/entrypoint/entrypoint.py @@ -0,0 +1,46 @@ +#!/usr/bin/env -S python3 -u + +# This file serves as the client's entrypoint. It: +# 1. Confirms that all nodes in the cluster are available +# 2. Signals "setupComplete" using the Antithesis SDK + +import etcd3, time + +from antithesis.lifecycle import ( + setup_complete, +) + +SLEEP = 10 + +def check_health(): + + node_options = ["etcd0", "etcd1", "etcd2"] + + for i in range(0, len(node_options)): + try: + c = etcd3.client(host=node_options[i], port=2379) + c.get('setting-up') + print(f"Client [entrypoint]: connection successful with {node_options[i]}") + except Exception as e: + print(f"Client [entrypoint]: connection failed with {node_options[i]}") + print(f"Client [entrypoint]: error: {e}") + return False + return True + +print("Client [entrypoint]: starting...") + +while True: + print("Client [entrypoint]: checking cluster health...") + if check_health(): + print("Client [entrypoint]: cluster is healthy!") + break + else: + print(f"Client [entrypoint]: cluster is not healthy. retrying in {SLEEP} seconds...") + time.sleep(SLEEP) + + +# Here is the python format for setup_complete. At this point, our system is fully initialized and ready to test. +setup_complete({"Message":"ETCD cluster is healthy"}) + +# sleep infinity +time.sleep(31536000) From cb7b92dc9582474112b4b2482100802c3f1721b7 Mon Sep 17 00:00:00 2001 From: Abdur Rehman Date: Sun, 20 Apr 2025 14:16:29 +0500 Subject: [PATCH 0103/1068] Add Antithesis package imports Signed-off-by: Abdur Rehman --- .../test-template/go-delete-keys/go.mod | 1 + .../test-template/go-delete-keys/go.sum | 2 + .../serial_driver_delete_keys.go | 55 +++++++++++-------- 3 files changed, 34 insertions(+), 24 deletions(-) diff --git a/tests/antithesis/test-template/go-delete-keys/go.mod b/tests/antithesis/test-template/go-delete-keys/go.mod index 34f6f1ffb3c4..089d48370049 100644 --- a/tests/antithesis/test-template/go-delete-keys/go.mod +++ b/tests/antithesis/test-template/go-delete-keys/go.mod @@ -7,6 +7,7 @@ toolchain go1.24.2 require go.etcd.io/etcd/client/v3 v3.5.21 require ( + github.com/antithesishq/antithesis-sdk-go v0.4.3 github.com/coreos/go-semver v0.3.0 // indirect github.com/coreos/go-systemd/v22 v22.3.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/tests/antithesis/test-template/go-delete-keys/go.sum b/tests/antithesis/test-template/go-delete-keys/go.sum index 938c01540fca..5fdbc5360966 100644 --- a/tests/antithesis/test-template/go-delete-keys/go.sum +++ b/tests/antithesis/test-template/go-delete-keys/go.sum @@ -1,3 +1,5 @@ +github.com/antithesishq/antithesis-sdk-go v0.4.3 h1:a2hGdDogClzHzFu20r1z0tzD6zwSWUipiaerAjZVP90= +github.com/antithesishq/antithesis-sdk-go v0.4.3/go.mod h1:IUpT2DPAKh6i/YhSbt6Gl3v2yvUZjmKncl7U91fup7E= github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= diff --git a/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go b/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go index a13e4d4926ec..f9e274c39b10 100644 --- a/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go +++ b/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go @@ -6,47 +6,54 @@ import ( "os" "time" + "github.com/antithesishq/antithesis-sdk-go/assert" + "github.com/antithesishq/antithesis-sdk-go/random" clientv3 "go.etcd.io/etcd/client/v3" ) -// Connect to an etcd node func Connect() *clientv3.Client { - hosts := [][]string{[]string{"etcd0:2379"}, []string{"etcd1:2379"}, []string{"etcd2:2379"}} - - // Randomly choose one host to connect to (just for simplicity) - host := hosts[0] // You can implement a random choice function here if needed + // This function returns a client connection to an etcd node - // Create an etcd client + hosts := [][]string{[]string{"etcd0:2379"}, []string{"etcd1:2379"}, []string{"etcd2:2379"}} + host := random.RandomChoice(hosts) cli, err := clientv3.New(clientv3.Config{ Endpoints: host, DialTimeout: 5 * time.Second, }) if err != nil { log.Fatalf("Failed to connect to etcd: %v", err) + // Antithesis Assertion: client should always be able to connect to an etcd host + assert.Unreachable("Client failed to connect to an etcd host", map[string]interface{}{"host": host, "error": err}) os.Exit(1) } return cli } -// This function will: -// 1. Get all keys -// 2. Select half of the keys received -// 3. Attempt to delete the keys selected -// 4. Check that the keys were deleted func DeleteKeys() { + // This function will: + // 1. Get all keys + // 2. Select half of the keys received + // 3. Attempt to delete the keys selected + // 4. Check that the keys were deleted + ctx := context.Background() // Connect to an etcd node cli := Connect() - // Get all keys with the prefix + // Get all keys resp, err := cli.Get(ctx, "", clientv3.WithPrefix()) + + // Antithesis Assertion: sometimes get with prefix requests are successful. A failed request is OK since we expect them to happen. + assert.Sometimes(err == nil, "Client can make successful get all requests", map[string]interface{}{"error": err}) + cli.Close() + if err != nil { log.Printf("Client failed to get all keys: %v", err) os.Exit(0) } - // Choose half of the keys to delete + // Choose half of the keys var keys []string for _, k := range resp.Kvs { keys = append(keys, string(k.Key)) @@ -57,10 +64,12 @@ func DeleteKeys() { // Connect to a new etcd node cli = Connect() - // Delete half of the selected keys + // Delete half of the keys chosen var deletedKeys []string for _, k := range halfKeys { _, err := cli.Delete(ctx, k) + // Antithesis Assertion: sometimes delete requests are successful. A failed request is OK since we expect them to happen. + assert.Sometimes(err == nil, "Client can make successful delete requests", map[string]interface{}{"error": err}) if err != nil { log.Printf("Failed to delete key %s: %v", k, err) } else { @@ -73,26 +82,24 @@ func DeleteKeys() { // Connect to a new etcd node cli = Connect() - // Check if the deleted keys exist + // Check to see if those keys were deleted / exist for _, k := range deletedKeys { resp, err := cli.Get(ctx, k) + // Antithesis Assertion: sometimes get requests are successful. A failed request is OK since we expect them to happen. + assert.Sometimes(err == nil, "Client can make successful get requests", map[string]interface{}{"error": err}) if err != nil { log.Printf("Client failed to get key %s: %v", k, err) continue } - - // Assert that the key was deleted correctly (now simply check if the key count is 0) - if resp.Count != 0 { - log.Printf("Key %s was not deleted correctly", k) - } else { - log.Printf("Key %s was deleted correctly", k) - } + // Antithesis Assertion: if we deleted a key, we should not get a value + assert.Always(resp.Count == 0, "Key was deleted correctly", map[string]interface{}{"key": k}) } cli.Close() - log.Printf("Completion of key deleting check") + assert.Reachable("Completion of a key deleting check", nil) + log.Printf("Completion of a key deleting check") } func main() { DeleteKeys() -} +} \ No newline at end of file From ba63c5983daa184c5787dafd80d19afbb0fcde10 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 18 Apr 2025 08:55:55 +0000 Subject: [PATCH 0104/1068] [Rubustness Test] Rename suffix yaml to yml Signed-off-by: Chun-Hung Tseng --- tests/antithesis/Dockerfile.config | 2 +- tests/antithesis/{docker-compose.yaml => docker-compose.yml} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename tests/antithesis/{docker-compose.yaml => docker-compose.yml} (100%) diff --git a/tests/antithesis/Dockerfile.config b/tests/antithesis/Dockerfile.config index c69192d92757..e34c18321e06 100644 --- a/tests/antithesis/Dockerfile.config +++ b/tests/antithesis/Dockerfile.config @@ -1,3 +1,3 @@ from scratch -COPY docker-compose.yaml /docker-compose.yaml +COPY docker-compose.yml /docker-compose.yml diff --git a/tests/antithesis/docker-compose.yaml b/tests/antithesis/docker-compose.yml similarity index 100% rename from tests/antithesis/docker-compose.yaml rename to tests/antithesis/docker-compose.yml From c70970876b102f484aa81117256af66740cdc5b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 18:01:35 +0000 Subject: [PATCH 0105/1068] build(deps): bump github/codeql-action from 3.28.14 to 3.28.15 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.14 to 3.28.15. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2...45775bd8235c68ba998cffa5171334d58593da47) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.28.15 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index b23aa7bd54e6..7dd8bac3ea24 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2 # v3.28.14 + uses: github/codeql-action/init@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2 # v3.28.14 + uses: github/codeql-action/autobuild@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2 # v3.28.14 + uses: github/codeql-action/analyze@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 48da9abb8d71..5c78c9f18978 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2 # v3.28.14 + uses: github/codeql-action/upload-sarif@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 with: sarif_file: results.sarif From 4028ff7587e22a362089e480141ad0357116587b Mon Sep 17 00:00:00 2001 From: Abdur Rehman Date: Sat, 19 Apr 2025 13:58:22 +0500 Subject: [PATCH 0106/1068] Create Go client for robustness test foundation with etcd health checks Signed-off-by: Abdur Rehman --- .../test-template/Dockerfile.client | 23 ++++- .../test-template/go-delete-keys/go.mod | 27 +++++ .../test-template/go-delete-keys/go.sum | 88 +++++++++++++++++ .../serial_driver_delete_keys.go | 98 +++++++++++++++++++ 4 files changed, 234 insertions(+), 2 deletions(-) create mode 100644 tests/antithesis/test-template/go-delete-keys/go.mod create mode 100644 tests/antithesis/test-template/go-delete-keys/go.sum create mode 100644 tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go diff --git a/tests/antithesis/test-template/Dockerfile.client b/tests/antithesis/test-template/Dockerfile.client index 1ec3fcc53d6e..14422fbddbe2 100644 --- a/tests/antithesis/test-template/Dockerfile.client +++ b/tests/antithesis/test-template/Dockerfile.client @@ -1,8 +1,10 @@ FROM ubuntu:latest +# Install dependencies +RUN apt-get update -y && apt-get install -y pip wget + # Update package index first, then install Python -RUN apt-get update && \ - apt-get install -y python3 python3-pip +RUN apt-get install -y python3 python3-pip # Then install additional Python packages RUN apt-get install -y python3-etcd3 python3-numpy python3-protobuf python3-filelock @@ -12,3 +14,20 @@ RUN pip install antithesis cffi --break-system-packages # Copy your entrypoint script COPY ./entrypoint/entrypoint.py /entrypoint.py + +# GO: + +# Install go +RUN wget https://golang.org/dl/go1.22.5.linux-amd64.tar.gz +RUN tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz +ENV PATH=$PATH:/usr/local/go/bin + +# Copying go script and building an executable into Test Composer directory +WORKDIR /opt/antithesis/go-delete-keys + +COPY ./go-delete-keys/go.mod ./go.mod +COPY ./go-delete-keys/go.sum ./go.sum +COPY ./go-delete-keys/serial_driver_delete_keys.go ./serial_driver_delete_keys.go + +# Building go executable and putting it in Test Composer directory +RUN go build -o /opt/antithesis/test/v1/main/serial_driver_delete_keys -race \ No newline at end of file diff --git a/tests/antithesis/test-template/go-delete-keys/go.mod b/tests/antithesis/test-template/go-delete-keys/go.mod new file mode 100644 index 000000000000..34f6f1ffb3c4 --- /dev/null +++ b/tests/antithesis/test-template/go-delete-keys/go.mod @@ -0,0 +1,27 @@ +module main + +go 1.24 + +toolchain go1.24.2 + +require go.etcd.io/etcd/client/v3 v3.5.21 + +require ( + github.com/coreos/go-semver v0.3.0 // indirect + github.com/coreos/go-systemd/v22 v22.3.2 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.4 // indirect + go.etcd.io/etcd/api/v3 v3.5.21 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.21 // indirect + go.uber.org/atomic v1.7.0 // indirect + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.17.0 // indirect + golang.org/x/net v0.38.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect + google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/grpc v1.59.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect +) diff --git a/tests/antithesis/test-template/go-delete-keys/go.sum b/tests/antithesis/test-template/go-delete-keys/go.sum new file mode 100644 index 000000000000..938c01540fca --- /dev/null +++ b/tests/antithesis/test-template/go-delete-keys/go.sum @@ -0,0 +1,88 @@ +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.etcd.io/etcd/api/v3 v3.5.21 h1:A6O2/JDb3tvHhiIz3xf9nJ7REHvtEFJJ3veW3FbCnS8= +go.etcd.io/etcd/api/v3 v3.5.21/go.mod h1:c3aH5wcvXv/9dqIw2Y810LDXJfhSYdHQ0vxmP3CCHVY= +go.etcd.io/etcd/client/pkg/v3 v3.5.21 h1:lPBu71Y7osQmzlflM9OfeIV2JlmpBjqBNlLtcoBqUTc= +go.etcd.io/etcd/client/pkg/v3 v3.5.21/go.mod h1:BgqT/IXPjK9NkeSDjbzwsHySX3yIle2+ndz28nVsjUs= +go.etcd.io/etcd/client/v3 v3.5.21 h1:T6b1Ow6fNjOLOtM0xSoKNQt1ASPCLWrF9XMHcH9pEyY= +go.etcd.io/etcd/client/v3 v3.5.21/go.mod h1:mFYy67IOqmbRf/kRUvsHixzo3iG+1OF2W2+jVIQRAnU= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d h1:VBu5YqKPv6XiJ199exd8Br+Aetz+o08F+PLMnwJQHAY= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go b/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go new file mode 100644 index 000000000000..a13e4d4926ec --- /dev/null +++ b/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go @@ -0,0 +1,98 @@ +package main + +import ( + "context" + "log" + "os" + "time" + + clientv3 "go.etcd.io/etcd/client/v3" +) + +// Connect to an etcd node +func Connect() *clientv3.Client { + hosts := [][]string{[]string{"etcd0:2379"}, []string{"etcd1:2379"}, []string{"etcd2:2379"}} + + // Randomly choose one host to connect to (just for simplicity) + host := hosts[0] // You can implement a random choice function here if needed + + // Create an etcd client + cli, err := clientv3.New(clientv3.Config{ + Endpoints: host, + DialTimeout: 5 * time.Second, + }) + if err != nil { + log.Fatalf("Failed to connect to etcd: %v", err) + os.Exit(1) + } + return cli +} + +// This function will: +// 1. Get all keys +// 2. Select half of the keys received +// 3. Attempt to delete the keys selected +// 4. Check that the keys were deleted +func DeleteKeys() { + ctx := context.Background() + + // Connect to an etcd node + cli := Connect() + + // Get all keys with the prefix + resp, err := cli.Get(ctx, "", clientv3.WithPrefix()) + if err != nil { + log.Printf("Client failed to get all keys: %v", err) + os.Exit(0) + } + + // Choose half of the keys to delete + var keys []string + for _, k := range resp.Kvs { + keys = append(keys, string(k.Key)) + } + half := len(keys) / 2 + halfKeys := keys[:half] + + // Connect to a new etcd node + cli = Connect() + + // Delete half of the selected keys + var deletedKeys []string + for _, k := range halfKeys { + _, err := cli.Delete(ctx, k) + if err != nil { + log.Printf("Failed to delete key %s: %v", k, err) + } else { + log.Printf("Successfully deleted key %v", k) + deletedKeys = append(deletedKeys, k) + } + } + cli.Close() + + // Connect to a new etcd node + cli = Connect() + + // Check if the deleted keys exist + for _, k := range deletedKeys { + resp, err := cli.Get(ctx, k) + if err != nil { + log.Printf("Client failed to get key %s: %v", k, err) + continue + } + + // Assert that the key was deleted correctly (now simply check if the key count is 0) + if resp.Count != 0 { + log.Printf("Key %s was not deleted correctly", k) + } else { + log.Printf("Key %s was deleted correctly", k) + } + } + cli.Close() + + log.Printf("Completion of key deleting check") +} + +func main() { + DeleteKeys() +} From 9e7fe83f4e39de59ddedf90e9e05cccf1f78e1b7 Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Thu, 17 Apr 2025 07:40:53 +0200 Subject: [PATCH 0107/1068] chore: fix testifylint new issues Signed-off-by: Matthieu MOREL --- server/etcdserver/api/v2store/store_ttl_test.go | 2 +- tests/e2e/v2store_deprecation_test.go | 2 +- tools/etcd-dump-logs/etcd-dump-log_test.go | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/server/etcdserver/api/v2store/store_ttl_test.go b/server/etcdserver/api/v2store/store_ttl_test.go index a4569cc3114b..aa98b4505e7b 100644 --- a/server/etcdserver/api/v2store/store_ttl_test.go +++ b/server/etcdserver/api/v2store/store_ttl_test.go @@ -132,7 +132,7 @@ func TestStoreUpdateDirTTL(t *testing.T) { assert.False(t, e.Node.Dir) assert.Equal(t, eidx, e.EtcdIndex) e, _ = s.Get("/foo/bar", false, false) - assert.Equal(t, "", *e.Node.Value) + assert.Empty(t, *e.Node.Value) assert.Equal(t, eidx, e.EtcdIndex) fc.Advance(600 * time.Millisecond) diff --git a/tests/e2e/v2store_deprecation_test.go b/tests/e2e/v2store_deprecation_test.go index 34225cb7bf87..927479db1fcc 100644 --- a/tests/e2e/v2store_deprecation_test.go +++ b/tests/e2e/v2store_deprecation_test.go @@ -248,7 +248,7 @@ func assertSnapshotsMatch(t testing.TB, firstDataDir, secondDataDir string, patc require.NoError(t, err) assert.NotEmpty(t, firstFiles) assert.NotEmpty(t, secondFiles) - assert.Equal(t, len(firstFiles), len(secondFiles)) + assert.Len(t, secondFiles, len(firstFiles)) sort.Strings(firstFiles) sort.Strings(secondFiles) for i := 0; i < len(firstFiles); i++ { diff --git a/tools/etcd-dump-logs/etcd-dump-log_test.go b/tools/etcd-dump-logs/etcd-dump-log_test.go index bb08ec11403e..c2581cebb78e 100644 --- a/tools/etcd-dump-logs/etcd-dump-log_test.go +++ b/tools/etcd-dump-logs/etcd-dump-log_test.go @@ -82,10 +82,10 @@ func TestEtcdDumpLogEntryType(t *testing.T) { expected, err := os.ReadFile(path.Join(binDir, argtest.fileExpected)) require.NoError(t, err) - assert.EqualValues(t, string(expected), string(actual)) + assert.Equal(t, string(expected), string(actual)) // The output files contains a lot of trailing whitespaces... difficult to diagnose without printing them explicitly. // TODO(ptabor): Get rid of the whitespaces both in code and the test-files. - assert.EqualValues(t, strings.ReplaceAll(string(expected), " ", "_"), strings.ReplaceAll(string(actual), " ", "_")) + assert.Equal(t, strings.ReplaceAll(string(expected), " ", "_"), strings.ReplaceAll(string(actual), " ", "_")) }) } } From 411b0a53f2e1d19b8749571393b241fcc28f7506 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 10 Apr 2024 23:25:40 -0700 Subject: [PATCH 0108/1068] tools: Implement rw-benchmark line charts Add a new line chart to plot the results from the rw-benchmarks. Signed-off-by: Ivan Valdes --- tools/rw-heatmaps/cmd/root.go | 14 ++ tools/rw-heatmaps/pkg/chart/line_chart.go | 226 ++++++++++++++++++++++ 2 files changed, 240 insertions(+) create mode 100644 tools/rw-heatmaps/pkg/chart/line_chart.go diff --git a/tools/rw-heatmaps/cmd/root.go b/tools/rw-heatmaps/cmd/root.go index 49b98a9fca29..722bddb20806 100644 --- a/tools/rw-heatmaps/cmd/root.go +++ b/tools/rw-heatmaps/cmd/root.go @@ -33,6 +33,8 @@ var ( ErrMissingInputFileArg = fmt.Errorf("missing input file argument") // ErrInvalidOutputFormat is returned when the output format is invalid. ErrInvalidOutputFormat = fmt.Errorf("invalid output format, must be one of png, jpg, jpeg, tiff") + // ErrInvalidChartTYpe is returned when the chart type is invalid. + ErrInvalidChartType = fmt.Errorf("invalid chart type, must be one of line, heatmap") ) // NewRootCommand returns the root command for the rw-heatmaps tool. @@ -56,6 +58,10 @@ func NewRootCommand() *cobra.Command { } } + if o.chartType == "line" { + return chart.PlotLineCharts(datasets, o.title, o.outputImageFile, o.outputFormat) + } + return chart.PlotHeatMaps(datasets, o.title, o.outputImageFile, o.outputFormat, o.zeroCentered) }, } @@ -70,6 +76,7 @@ type options struct { outputImageFile string outputFormat string zeroCentered bool + chartType string } // newOptions returns a new options for the command with the default values applied. @@ -77,6 +84,7 @@ func newOptions() options { return options{ outputFormat: "jpg", zeroCentered: true, + chartType: "heatmap", } } @@ -86,6 +94,7 @@ func (o *options) AddFlags(fs *pflag.FlagSet) { fs.StringVarP(&o.outputImageFile, "output-image-file", "o", o.outputImageFile, "output image filename (required)") fs.StringVarP(&o.outputFormat, "output-format", "f", o.outputFormat, "output image file format") fs.BoolVar(&o.zeroCentered, "zero-centered", o.zeroCentered, "plot the improvement graph with white color represents 0.0") + fs.StringVarP(&o.chartType, "chart-type", "c", o.chartType, `type of chart to plot ["line", or "heatmap"]`) } // Validate returns an error if the options are invalid. @@ -101,5 +110,10 @@ func (o *options) Validate() error { default: return ErrInvalidOutputFormat } + switch o.chartType { + case "line", "heatmap": + default: + return ErrInvalidChartType + } return nil } diff --git a/tools/rw-heatmaps/pkg/chart/line_chart.go b/tools/rw-heatmaps/pkg/chart/line_chart.go new file mode 100644 index 000000000000..b7421433cc61 --- /dev/null +++ b/tools/rw-heatmaps/pkg/chart/line_chart.go @@ -0,0 +1,226 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package chart + +import ( + "cmp" + "fmt" + "image/color" + "slices" + "sort" + + "gonum.org/v1/plot" + "gonum.org/v1/plot/font" + "gonum.org/v1/plot/plotter" + "gonum.org/v1/plot/plotutil" + "gonum.org/v1/plot/vg" + "gonum.org/v1/plot/vg/draw" + "gonum.org/v1/plot/vg/vgimg" + + "go.etcd.io/etcd/tools/rw-heatmaps/v3/pkg/dataset" +) + +// PlotLineCharts creates a new line chart. +func PlotLineCharts(datasets []*dataset.DataSet, title, outputImageFile, outputFormat string) error { + plot.DefaultFont = font.Font{ + Typeface: "Liberation", + Variant: "Sans", + } + + canvas := plotLineChart(datasets, title) + return saveCanvas(canvas, "readwrite", outputImageFile, outputFormat) +} + +func plotLineChart(datasets []*dataset.DataSet, title string) *vgimg.Canvas { + ratiosLength := func() int { + max := slices.MaxFunc(datasets, func(a, b *dataset.DataSet) int { + return cmp.Compare(len(a.GetSortedRatios()), len(b.GetSortedRatios())) + }) + return len(max.GetSortedRatios()) + }() + + // Make a nx1 grid of line charts. + const cols = 1 + rows := ratiosLength + + // Set the width and height of the canvas. + width, height := 30*vg.Centimeter, 15*font.Length(ratiosLength)*vg.Centimeter + + canvas := vgimg.New(width, height) + dc := draw.New(canvas) + + // Create a tiled layout for the plots. + t := draw.Tiles{ + Rows: rows, + Cols: cols, + PadX: vg.Millimeter * 4, + PadY: vg.Millimeter * 4, + PadTop: vg.Millimeter * 15, + PadBottom: vg.Millimeter * 2, + PadLeft: vg.Millimeter * 2, + PadRight: vg.Millimeter * 2, + } + + plots := make([][]*plot.Plot, rows) + legends := make([]plot.Legend, rows) + for i := range plots { + plots[i] = make([]*plot.Plot, cols) + } + + // Load records into the grid. + ratios := slices.MaxFunc(datasets, func(a, b *dataset.DataSet) int { + return cmp.Compare(len(a.GetSortedRatios()), len(b.GetSortedRatios())) + }).GetSortedRatios() + + for row, ratio := range ratios { + var records [][]dataset.DataRecord + var fileNames []string + for _, d := range datasets { + records = append(records, d.Records[ratio]) + fileNames = append(fileNames, d.FileName) + } + p, l := plotIndividualLineChart(fmt.Sprintf("R/W Ratio %0.04f", ratio), records, fileNames) + plots[row] = []*plot.Plot{p} + legends[row] = l + } + + // Fill the canvas with the plots and legends. + canvases := plot.Align(plots, t, dc) + for i := 0; i < rows; i++ { + // Continue if there is no plot in the current cell (incomplete data). + if plots[i][0] == nil { + continue + } + + l := legends[i] + r := l.Rectangle(canvases[i][0]) + legendWidth := r.Max.X - r.Min.X + // Adjust the legend down a little. + l.YOffs = plots[i][0].Title.TextStyle.FontExtents().Height * 3 + l.Draw(canvases[i][0]) + + c := draw.Crop(canvases[i][0], 0, -legendWidth-vg.Millimeter, 0, 0) + plots[i][0].Draw(c) + } + + // Add the title and parameter legend. + l := plot.NewLegend() + l.Add(title) + for _, d := range datasets { + l.Add(fmt.Sprintf("%s: %s", d.FileName, d.Param)) + } + l.Top = true + l.Left = true + l.Draw(dc) + + return canvas +} + +func plotIndividualLineChart(title string, records [][]dataset.DataRecord, fileNames []string) (*plot.Plot, plot.Legend) { + p := plot.New() + p.Title.Text = title + p.X.Label.Text = "Connections Amount" + p.X.Scale = plot.LogScale{} + p.X.Tick.Marker = pow2Ticks{} + p.Y.Label.Text = "QPS (Requests/sec)" + p.Y.Scale = plot.LogScale{} + p.Y.Tick.Marker = pow2Ticks{} + + legend := plot.NewLegend() + + values := getSortedValueSizes(records...) + for i, rs := range records { + rec := make(map[int64][]dataset.DataRecord) + for _, r := range rs { + rec[r.ValueSize] = append(rec[r.ValueSize], r) + } + if len(records) > 1 { + addValues(p, &legend, values, rec, i, fileNames[i]) + } else { + addValues(p, &legend, values, rec, i, "") + } + } + + return p, legend +} + +func getSortedValueSizes(records ...[]dataset.DataRecord) []int { + valueMap := make(map[int64]struct{}) + for _, rs := range records { + for _, r := range rs { + valueMap[r.ValueSize] = struct{}{} + } + } + + var values []int + for v := range valueMap { + values = append(values, int(v)) + } + sort.Ints(values) + + return values +} + +func addValues(p *plot.Plot, legend *plot.Legend, values []int, rec map[int64][]dataset.DataRecord, index int, fileName string) { + for i, value := range values { + r := rec[int64(value)] + readPts := make(plotter.XYs, len(r)) + writePts := make(plotter.XYs, len(r)) + for i, record := range r { + writePts[i].X = float64(record.ConnSize) + readPts[i].X = writePts[i].X + readPts[i].Y = record.AvgRead + writePts[i].Y = record.AvgWrite + } + + readLine, s, err := plotter.NewLinePoints(readPts) + if err != nil { + panic(err) + } + if index == 0 { + readLine.Color = plotutil.Color(0) + } else { + readLine.Color = plotutil.Color(2) + } + readLine.Width = vg.Length(vg.Millimeter * 0.15 * vg.Length(i+1)) + readLine.Dashes = []vg.Length{vg.Points(6), vg.Points(2)} + s.Color = readLine.Color + p.Add(readLine, s) + + writeLine, s, err := plotter.NewLinePoints(writePts) + if err != nil { + panic(err) + } + if index == 0 { + writeLine.Color = plotutil.Color(0) + } else { + writeLine.Color = plotutil.Color(2) + } + writeLine.Width = vg.Length(vg.Millimeter * 0.15 * vg.Length(i+1)) + s.Color = writeLine.Color + p.Add(writeLine, s) + + if index == 0 { + l, _, _ := plotter.NewLinePoints(writePts) + l.Color = color.RGBA{0, 0, 0, 255} + l.Width = vg.Length(vg.Millimeter * 0.15 * vg.Length(i+1)) + legend.Add(fmt.Sprintf("%d", value), plot.Thumbnailer(l)) + } + if i == len(values)-1 { + legend.Add(fmt.Sprintf("read %s", fileName), plot.Thumbnailer(readLine)) + legend.Add(fmt.Sprintf("write %s", fileName), plot.Thumbnailer(writeLine)) + } + } +} From cac91485e98766fc674dd341b52302841aa9f1da Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 23 Apr 2025 22:23:57 +0200 Subject: [PATCH 0109/1068] [Robustness test] Merge Antithesis Github workflows Signed-off-by: Chun-Hung Tseng --- .github/workflows/antithesis-test.yml | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 40b6a15b10c1..fd2ff48e4fb4 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -48,7 +48,7 @@ env: REPOSITORY: molten-verve-216720/linuxfoundation-repository jobs: - build-and-push: + build-and-push-and-test: runs-on: ubuntu-latest environment: Antithesis steps: @@ -82,18 +82,6 @@ jobs: ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:latest, ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:${{ github.sha }} - run-antithesis: - runs-on: ubuntu-latest - environment: Antithesis - needs: build-and-push - - permissions: - contents: read - packages: write - - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - name: Run Antithesis Tests uses: antithesishq/antithesis-trigger-action@b7d0c9d1d9316bd4de73a44144c56636ea3a64ba # main commit on Mar 13, 2025 with: From 392e9e4f85ae299266058b1fa0127afa5fabdf88 Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 22 Apr 2025 19:47:24 +0800 Subject: [PATCH 0110/1068] Catch ErrSliceOutOfRange error Signed-off-by: joshjms --- tests/robustness/report/wal.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index 077ddc8896aa..bb9b56e9bf2a 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -114,10 +114,13 @@ func ReadWAL(lg *zap.Logger, dataDir string) (state raftpb.HardState, ents []raf _, state, ents, err = w.ReadAll() w.Close() if err != nil { - if errors.Is(err, wal.ErrSnapshotNotFound) || errors.Is(err, wal.ErrSliceOutOfRange) { + if errors.Is(err, wal.ErrSnapshotNotFound) { lg.Info("Error occurred when reading WAL entries", zap.Error(err)) return state, ents, nil } + if errors.Is(err, wal.ErrSliceOutOfRange) { + return state, nil, fmt.Errorf("failed to read WAL, err: %w", err) + } // we can only repair ErrUnexpectedEOF and we never repair twice. if repaired || !errors.Is(err, io.ErrUnexpectedEOF) { return state, nil, fmt.Errorf("failed to read WAL, cannot be repaired, err: %w", err) From a6f1ecb4791bfea7e59391bd3ce0f7a382eccf3e Mon Sep 17 00:00:00 2001 From: joshjms Date: Thu, 24 Apr 2025 18:06:56 +0800 Subject: [PATCH 0111/1068] Disable MD041 Signed-off-by: joshjms --- tools/.markdownlint.jsonc | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tools/.markdownlint.jsonc b/tools/.markdownlint.jsonc index 9aae9cb7a846..d6b36639cfc1 100644 --- a/tools/.markdownlint.jsonc +++ b/tools/.markdownlint.jsonc @@ -184,12 +184,7 @@ }, // MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md041.md - "MD041": { - // Heading level - "level": 1, - // RegExp for matching title in front matter - "front_matter_title": "^\\s*title\\s*[:=]" - }, + "MD041": false, // MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.4/doc/md042.md "MD042": true, From 21edc959c97a095cb69733272a68bc38ee730e84 Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Sat, 25 Jan 2025 10:32:31 +0100 Subject: [PATCH 0112/1068] chore: enable thelper linter Signed-off-by: Matthieu MOREL --- .../etcdserver/api/membership/cluster_test.go | 4 +- server/etcdserver/server_test.go | 8 +-- server/lease/lessor_bench_test.go | 4 +- server/storage/backend/batch_tx_test.go | 6 +- server/storage/backend/hooks_test.go | 22 +++---- server/storage/backend/testing/betesting.go | 20 +++---- server/storage/wal/testing/waltesting.go | 30 +++++----- tests/e2e/utils.go | 4 +- tests/e2e/v2store_deprecation_test.go | 56 ++++++++--------- tests/framework/e2e/cluster.go | 60 +++++++++---------- tests/framework/e2e/cluster_direct.go | 4 +- tests/framework/e2e/e2e.go | 16 ++--- tests/framework/e2e/etcd_process.go | 4 +- tests/framework/e2e/testing.go | 6 +- tests/framework/e2e/util.go | 4 +- tests/framework/integration/cluster.go | 30 +++++----- tests/framework/integration/integration.go | 22 +++---- tests/framework/integration/testing.go | 10 ++-- tests/framework/unit/unit.go | 6 +- tests/integration/v3_leadership_test.go | 6 +- tools/.golangci.yaml | 14 +++++ 21 files changed, 175 insertions(+), 161 deletions(-) diff --git a/server/etcdserver/api/membership/cluster_test.go b/server/etcdserver/api/membership/cluster_test.go index 62f0619f2aac..5609754bf05f 100644 --- a/server/etcdserver/api/membership/cluster_test.go +++ b/server/etcdserver/api/membership/cluster_test.go @@ -661,8 +661,8 @@ func TestNodeToMember(t *testing.T) { } } -func newTestCluster(t testing.TB, membs []*Member) *RaftCluster { - c := &RaftCluster{lg: zaptest.NewLogger(t), members: make(map[types.ID]*Member), removed: make(map[types.ID]bool)} +func newTestCluster(tb testing.TB, membs []*Member) *RaftCluster { + c := &RaftCluster{lg: zaptest.NewLogger(tb), members: make(map[types.ID]*Member), removed: make(map[types.ID]bool)} for _, m := range membs { c.members[m.ID] = m } diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index bb41200ed7ec..f78b09bc8706 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -1515,12 +1515,12 @@ func (n *nodeConfChangeCommitterRecorder) ApplyConfChange(conf raftpb.ConfChange return &raftpb.ConfState{} } -func newTestCluster(t testing.TB) *membership.RaftCluster { - return membership.NewCluster(zaptest.NewLogger(t)) +func newTestCluster(tb testing.TB) *membership.RaftCluster { + return membership.NewCluster(zaptest.NewLogger(tb)) } -func newTestClusterWithBackend(t testing.TB, membs []*membership.Member, be backend.Backend) *membership.RaftCluster { - lg := zaptest.NewLogger(t) +func newTestClusterWithBackend(tb testing.TB, membs []*membership.Member, be backend.Backend) *membership.RaftCluster { + lg := zaptest.NewLogger(tb) c := membership.NewCluster(lg) c.SetBackend(schema.NewMembershipBackend(lg, be)) for _, m := range membs { diff --git a/server/lease/lessor_bench_test.go b/server/lease/lessor_bench_test.go index 8e6ff791b193..b28ba45c8e87 100644 --- a/server/lease/lessor_bench_test.go +++ b/server/lease/lessor_bench_test.go @@ -60,9 +60,9 @@ func demote(le *lessor) { } // return new lessor and tearDown to release resource -func setUp(t testing.TB) (le *lessor, tearDown func()) { +func setUp(tb testing.TB) (le *lessor, tearDown func()) { lg := zap.NewNop() - be, _ := betesting.NewDefaultTmpBackend(t) + be, _ := betesting.NewDefaultTmpBackend(tb) // MinLeaseTTL is negative, so we can grant expired lease in benchmark. // ExpiredLeasesRetryInterval should small, so benchmark of findExpired will recheck expired lease. le = newLessor(lg, be, nil, LessorConfig{MinLeaseTTL: -1000, ExpiredLeasesRetryInterval: 10 * time.Microsecond}) diff --git a/server/storage/backend/batch_tx_test.go b/server/storage/backend/batch_tx_test.go index 279f199a5dbd..25af69f11e02 100644 --- a/server/storage/backend/batch_tx_test.go +++ b/server/storage/backend/batch_tx_test.go @@ -393,9 +393,9 @@ func checkUnsafeForEach(t *testing.T, tx backend.UnsafeReader, expectedKeys, exp // runWriteback is used test the txWriteBuffer.writeback function, which is called inside tx.Unlock(). // The parameters are chosen based on defaultBatchLimit = 10000 -func runWriteback(t testing.TB, kss, vss [][]string, isSeq bool) { - b, _ := betesting.NewTmpBackend(t, time.Hour, 10000) - defer betesting.Close(t, b) +func runWriteback(tb testing.TB, kss, vss [][]string, isSeq bool) { + b, _ := betesting.NewTmpBackend(tb, time.Hour, 10000) + defer betesting.Close(tb, b) tx := b.BatchTx() diff --git a/server/storage/backend/hooks_test.go b/server/storage/backend/hooks_test.go index 72bc26793ad0..52b3ed8ec33a 100644 --- a/server/storage/backend/hooks_test.go +++ b/server/storage/backend/hooks_test.go @@ -94,11 +94,11 @@ func TestBackendAutoCommitBatchIntervalHook(t *testing.T) { waitUntil(ctx, t, func() bool { return getCommitsKey(t, be) == ">ccc" }) } -func waitUntil(ctx context.Context, t testing.TB, f func() bool) { +func waitUntil(ctx context.Context, tb testing.TB, f func() bool) { for !f() { select { case <-ctx.Done(): - t.Fatalf("Context cancelled/timedout without condition met: %v", ctx.Err()) + tb.Fatalf("Context cancelled/timedout without condition met: %v", ctx.Err()) default: } time.Sleep(10 * time.Millisecond) @@ -112,28 +112,28 @@ func prepareBuckenAndKey(tx backend.BatchTx) { tx.UnsafePut(bucket, key, []byte(">")) } -func newTestHooksBackend(t testing.TB, baseConfig backend.BackendConfig) backend.Backend { +func newTestHooksBackend(tb testing.TB, baseConfig backend.BackendConfig) backend.Backend { cfg := baseConfig cfg.Hooks = backend.NewHooks(func(tx backend.UnsafeReadWriter) { k, v := tx.UnsafeRange(bucket, key, nil, 1) - t.Logf("OnPreCommit executed: %v %v", string(k[0]), string(v[0])) - assert.Len(t, k, 1) - assert.Len(t, v, 1) + tb.Logf("OnPreCommit executed: %v %v", string(k[0]), string(v[0])) + assert.Len(tb, k, 1) + assert.Len(tb, v, 1) tx.UnsafePut(bucket, key, append(v[0], byte('c'))) }) - be, _ := betesting.NewTmpBackendFromCfg(t, cfg) - t.Cleanup(func() { - betesting.Close(t, be) + be, _ := betesting.NewTmpBackendFromCfg(tb, cfg) + tb.Cleanup(func() { + betesting.Close(tb, be) }) return be } -func getCommitsKey(t testing.TB, be backend.Backend) string { +func getCommitsKey(tb testing.TB, be backend.Backend) string { rtx := be.BatchTx() rtx.Lock() defer rtx.Unlock() _, v := rtx.UnsafeRange(bucket, key, nil, 1) - assert.Len(t, v, 1) + assert.Len(tb, v, 1) return string(v[0]) } diff --git a/server/storage/backend/testing/betesting.go b/server/storage/backend/testing/betesting.go index e42908f9365d..eae54de9af81 100644 --- a/server/storage/backend/testing/betesting.go +++ b/server/storage/backend/testing/betesting.go @@ -26,28 +26,28 @@ import ( "go.etcd.io/etcd/server/v3/storage/backend" ) -func NewTmpBackendFromCfg(t testing.TB, bcfg backend.BackendConfig) (backend.Backend, string) { - dir, err := os.MkdirTemp(t.TempDir(), "etcd_backend_test") +func NewTmpBackendFromCfg(tb testing.TB, bcfg backend.BackendConfig) (backend.Backend, string) { + dir, err := os.MkdirTemp(tb.TempDir(), "etcd_backend_test") if err != nil { panic(err) } tmpPath := filepath.Join(dir, "database") bcfg.Path = tmpPath - bcfg.Logger = zaptest.NewLogger(t) + bcfg.Logger = zaptest.NewLogger(tb) return backend.New(bcfg), tmpPath } // NewTmpBackend creates a backend implementation for testing. -func NewTmpBackend(t testing.TB, batchInterval time.Duration, batchLimit int) (backend.Backend, string) { - bcfg := backend.DefaultBackendConfig(zaptest.NewLogger(t)) +func NewTmpBackend(tb testing.TB, batchInterval time.Duration, batchLimit int) (backend.Backend, string) { + bcfg := backend.DefaultBackendConfig(zaptest.NewLogger(tb)) bcfg.BatchInterval, bcfg.BatchLimit = batchInterval, batchLimit - return NewTmpBackendFromCfg(t, bcfg) + return NewTmpBackendFromCfg(tb, bcfg) } -func NewDefaultTmpBackend(t testing.TB) (backend.Backend, string) { - return NewTmpBackendFromCfg(t, backend.DefaultBackendConfig(zaptest.NewLogger(t))) +func NewDefaultTmpBackend(tb testing.TB) (backend.Backend, string) { + return NewTmpBackendFromCfg(tb, backend.DefaultBackendConfig(zaptest.NewLogger(tb))) } -func Close(t testing.TB, b backend.Backend) { - assert.NoError(t, b.Close()) +func Close(tb testing.TB, b backend.Backend) { + assert.NoError(tb, b.Close()) } diff --git a/server/storage/wal/testing/waltesting.go b/server/storage/wal/testing/waltesting.go index bd1dbaade636..7613a3f7107f 100644 --- a/server/storage/wal/testing/waltesting.go +++ b/server/storage/wal/testing/waltesting.go @@ -28,32 +28,32 @@ import ( "go.etcd.io/raft/v3/raftpb" ) -func NewTmpWAL(t testing.TB, reqs []etcdserverpb.InternalRaftRequest) (*wal.WAL, string) { - t.Helper() - dir, err := os.MkdirTemp(t.TempDir(), "etcd_wal_test") +func NewTmpWAL(tb testing.TB, reqs []etcdserverpb.InternalRaftRequest) (*wal.WAL, string) { + tb.Helper() + dir, err := os.MkdirTemp(tb.TempDir(), "etcd_wal_test") if err != nil { panic(err) } tmpPath := filepath.Join(dir, "wal") - lg := zaptest.NewLogger(t) + lg := zaptest.NewLogger(tb) w, err := wal.Create(lg, tmpPath, nil) if err != nil { - t.Fatalf("Failed to create WAL: %v", err) + tb.Fatalf("Failed to create WAL: %v", err) } err = w.Close() if err != nil { - t.Fatalf("Failed to close WAL: %v", err) + tb.Fatalf("Failed to close WAL: %v", err) } if len(reqs) != 0 { w, err = wal.Open(lg, tmpPath, walpb.Snapshot{}) if err != nil { - t.Fatalf("Failed to open WAL: %v", err) + tb.Fatalf("Failed to open WAL: %v", err) } var state raftpb.HardState _, state, _, err = w.ReadAll() if err != nil { - t.Fatalf("Failed to read WAL: %v", err) + tb.Fatalf("Failed to read WAL: %v", err) } var entries []raftpb.Entry for _, req := range reqs { @@ -66,27 +66,27 @@ func NewTmpWAL(t testing.TB, reqs []etcdserverpb.InternalRaftRequest) (*wal.WAL, } err = w.Save(state, entries) if err != nil { - t.Fatalf("Failed to save WAL: %v", err) + tb.Fatalf("Failed to save WAL: %v", err) } err = w.Close() if err != nil { - t.Fatalf("Failed to close WAL: %v", err) + tb.Fatalf("Failed to close WAL: %v", err) } } w, err = wal.OpenForRead(lg, tmpPath, walpb.Snapshot{}) if err != nil { - t.Fatalf("Failed to open WAL: %v", err) + tb.Fatalf("Failed to open WAL: %v", err) } return w, tmpPath } -func Reopen(t testing.TB, walPath string) *wal.WAL { - t.Helper() - lg := zaptest.NewLogger(t) +func Reopen(tb testing.TB, walPath string) *wal.WAL { + tb.Helper() + lg := zaptest.NewLogger(tb) w, err := wal.OpenForRead(lg, walPath, walpb.Snapshot{}) if err != nil { - t.Fatalf("Failed to open WAL: %v", err) + tb.Fatalf("Failed to open WAL: %v", err) } return w } diff --git a/tests/e2e/utils.go b/tests/e2e/utils.go index 8917bd8072ad..3f4ca015bc75 100644 --- a/tests/e2e/utils.go +++ b/tests/e2e/utils.go @@ -69,13 +69,13 @@ func newClient(t *testing.T, entpoints []string, cfg e2e.ClientConfig) *clientv3 } // tlsInfo follows the Client-to-server communication in https://etcd.io/docs/v3.6/op-guide/security/#basic-setup -func tlsInfo(t testing.TB, cfg e2e.ClientConfig) (*transport.TLSInfo, error) { +func tlsInfo(tb testing.TB, cfg e2e.ClientConfig) (*transport.TLSInfo, error) { switch cfg.ConnectionType { case e2e.ClientNonTLS, e2e.ClientTLSAndNonTLS: return nil, nil case e2e.ClientTLS: if cfg.AutoTLS { - tls, err := transport.SelfCert(zap.NewNop(), t.TempDir(), []string{"localhost"}, 1) + tls, err := transport.SelfCert(zap.NewNop(), tb.TempDir(), []string{"localhost"}, 1) if err != nil { return nil, fmt.Errorf("failed to generate cert: %w", err) } diff --git a/tests/e2e/v2store_deprecation_test.go b/tests/e2e/v2store_deprecation_test.go index 927479db1fcc..e65b75bf68f8 100644 --- a/tests/e2e/v2store_deprecation_test.go +++ b/tests/e2e/v2store_deprecation_test.go @@ -39,13 +39,13 @@ import ( "go.etcd.io/etcd/tests/v3/framework/e2e" ) -func writeCustomV2Data(t testing.TB, epc *e2e.EtcdProcessCluster, count int) { +func writeCustomV2Data(tb testing.TB, epc *e2e.EtcdProcessCluster, count int) { for i := 0; i < count; i++ { if err := e2e.CURLPut(epc, e2e.CURLReq{ Endpoint: "/v2/keys/foo", Value: "bar" + fmt.Sprint(i), Expected: expect.ExpectedResponse{Value: `{"action":"set","node":{"key":"/foo","value":"bar` + fmt.Sprint(i)}, }); err != nil { - t.Fatalf("failed put with curl (%v)", err) + tb.Fatalf("failed put with curl (%v)", err) } } } @@ -191,47 +191,47 @@ func TestV2DeprecationSnapshotRecover(t *testing.T) { assert.NoError(t, epc.Close()) } -func runEtcdAndCreateSnapshot(t testing.TB, serverVersion e2e.ClusterVersion, dataDir string, snapshotCount uint64) *e2e.EtcdProcessCluster { +func runEtcdAndCreateSnapshot(tb testing.TB, serverVersion e2e.ClusterVersion, dataDir string, snapshotCount uint64) *e2e.EtcdProcessCluster { cfg := e2e.ConfigStandalone(*e2e.NewConfig( e2e.WithVersion(serverVersion), e2e.WithDataDirPath(dataDir), e2e.WithSnapshotCount(snapshotCount), e2e.WithKeepDataDir(true), )) - epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) - assert.NoError(t, err) + epc, err := e2e.NewEtcdProcessCluster(tb.Context(), tb, e2e.WithConfig(cfg)) + assert.NoError(tb, err) return epc } -func addAndRemoveKeysAndMembers(ctx context.Context, t testing.TB, cc *e2e.EtcdctlV3, snapshotCount uint64) (members []uint64) { +func addAndRemoveKeysAndMembers(ctx context.Context, tb testing.TB, cc *e2e.EtcdctlV3, snapshotCount uint64) (members []uint64) { // Execute some non-trivial key&member operation var i uint64 for i = 0; i < snapshotCount*3; i++ { err := cc.Put(ctx, fmt.Sprintf("%d", i), "1", config.PutOptions{}) - require.NoError(t, err) + require.NoError(tb, err) } member1, err := cc.MemberAddAsLearner(ctx, "member1", []string{"http://127.0.0.1:2000"}) - require.NoError(t, err) + require.NoError(tb, err) members = append(members, member1.Member.ID) for i = 0; i < snapshotCount*2; i++ { _, err = cc.Delete(ctx, fmt.Sprintf("%d", i), config.DeleteOptions{}) - require.NoError(t, err) + require.NoError(tb, err) } _, err = cc.MemberRemove(ctx, member1.Member.ID) - require.NoError(t, err) + require.NoError(tb, err) for i = 0; i < snapshotCount; i++ { err = cc.Put(ctx, fmt.Sprintf("%d", i), "2", config.PutOptions{}) - require.NoError(t, err) + require.NoError(tb, err) } member2, err := cc.MemberAddAsLearner(ctx, "member2", []string{"http://127.0.0.1:2001"}) - require.NoError(t, err) + require.NoError(tb, err) members = append(members, member2.Member.ID) for i = 0; i < snapshotCount/2; i++ { err = cc.Put(ctx, fmt.Sprintf("%d", i), "3", config.PutOptions{}) - assert.NoError(t, err) + assert.NoError(tb, err) } return members } @@ -240,39 +240,39 @@ func filterSnapshotFiles(path string) bool { return strings.HasSuffix(path, ".snap") } -func assertSnapshotsMatch(t testing.TB, firstDataDir, secondDataDir string, patch func([]byte) []byte) { - lg := zaptest.NewLogger(t) +func assertSnapshotsMatch(tb testing.TB, firstDataDir, secondDataDir string, patch func([]byte) []byte) { + lg := zaptest.NewLogger(tb) firstFiles, err := fileutil.ListFiles(firstDataDir, filterSnapshotFiles) - require.NoError(t, err) + require.NoError(tb, err) secondFiles, err := fileutil.ListFiles(secondDataDir, filterSnapshotFiles) - require.NoError(t, err) - assert.NotEmpty(t, firstFiles) - assert.NotEmpty(t, secondFiles) - assert.Len(t, secondFiles, len(firstFiles)) + require.NoError(tb, err) + assert.NotEmpty(tb, firstFiles) + assert.NotEmpty(tb, secondFiles) + assert.Len(tb, secondFiles, len(firstFiles)) sort.Strings(firstFiles) sort.Strings(secondFiles) for i := 0; i < len(firstFiles); i++ { firstSnapshot, err := snap.Read(lg, firstFiles[i]) - require.NoError(t, err) + require.NoError(tb, err) secondSnapshot, err := snap.Read(lg, secondFiles[i]) - require.NoError(t, err) - assertMembershipEqual(t, openSnap(patch(firstSnapshot.Data)), openSnap(patch(secondSnapshot.Data))) + require.NoError(tb, err) + assertMembershipEqual(tb, openSnap(patch(firstSnapshot.Data)), openSnap(patch(secondSnapshot.Data))) } } -func assertMembershipEqual(t testing.TB, firstStore v2store.Store, secondStore v2store.Store) { - rc1 := membership.NewCluster(zaptest.NewLogger(t)) +func assertMembershipEqual(tb testing.TB, firstStore v2store.Store, secondStore v2store.Store) { + rc1 := membership.NewCluster(zaptest.NewLogger(tb)) rc1.SetStore(firstStore) rc1.Recover(func(lg *zap.Logger, v *semver.Version) {}) - rc2 := membership.NewCluster(zaptest.NewLogger(t)) + rc2 := membership.NewCluster(zaptest.NewLogger(tb)) rc2.SetStore(secondStore) rc2.Recover(func(lg *zap.Logger, v *semver.Version) {}) // membership should match if !reflect.DeepEqual(rc1.Members(), rc2.Members()) { - t.Logf("memberids_from_last_version = %+v, member_ids_from_current_version = %+v", rc1.MemberIDs(), rc2.MemberIDs()) - t.Errorf("members_from_last_version_snapshot = %+v, members_from_current_version_snapshot %+v", rc1.Members(), rc2.Members()) + tb.Logf("memberids_from_last_version = %+v, member_ids_from_current_version = %+v", rc1.MemberIDs(), rc2.MemberIDs()) + tb.Errorf("members_from_last_version_snapshot = %+v, members_from_current_version_snapshot %+v", rc1.Members(), rc2.Members()) } } diff --git a/tests/framework/e2e/cluster.go b/tests/framework/e2e/cluster.go index 3beb6be9eda9..d1500834ce31 100644 --- a/tests/framework/e2e/cluster.go +++ b/tests/framework/e2e/cluster.go @@ -425,23 +425,23 @@ func WithExtensiveMetrics() EPClusterOption { // NewEtcdProcessCluster launches a new cluster from etcd processes, returning // a new EtcdProcessCluster once all nodes are ready to accept client requests. -func NewEtcdProcessCluster(ctx context.Context, t testing.TB, opts ...EPClusterOption) (*EtcdProcessCluster, error) { +func NewEtcdProcessCluster(ctx context.Context, tb testing.TB, opts ...EPClusterOption) (*EtcdProcessCluster, error) { cfg := NewConfig(opts...) - epc, err := InitEtcdProcessCluster(t, cfg) + epc, err := InitEtcdProcessCluster(tb, cfg) if err != nil { return nil, err } - return StartEtcdProcessCluster(ctx, t, epc, cfg) + return StartEtcdProcessCluster(ctx, tb, epc, cfg) } // InitEtcdProcessCluster initializes a new cluster based on the given config. // It doesn't start the cluster. -func InitEtcdProcessCluster(t testing.TB, cfg *EtcdProcessClusterConfig) (*EtcdProcessCluster, error) { - SkipInShortMode(t) +func InitEtcdProcessCluster(tb testing.TB, cfg *EtcdProcessClusterConfig) (*EtcdProcessCluster, error) { + SkipInShortMode(tb) if cfg.Logger == nil { - cfg.Logger = zaptest.NewLogger(t) + cfg.Logger = zaptest.NewLogger(tb) } if cfg.BasePort == 0 { cfg.BasePort = EtcdProcessBasePort @@ -460,17 +460,17 @@ func InitEtcdProcessCluster(t testing.TB, cfg *EtcdProcessClusterConfig) (*EtcdP } } - etcdCfgs := cfg.EtcdAllServerProcessConfigs(t) + etcdCfgs := cfg.EtcdAllServerProcessConfigs(tb) epc := &EtcdProcessCluster{ Cfg: cfg, - lg: zaptest.NewLogger(t), + lg: zaptest.NewLogger(tb), Procs: make([]EtcdProcess, cfg.ClusterSize), nextSeq: cfg.ClusterSize, } // launch etcd processes for i := range etcdCfgs { - proc, err := NewEtcdProcess(t, etcdCfgs[i]) + proc, err := NewEtcdProcess(tb, etcdCfgs[i]) if err != nil { epc.Close() return nil, fmt.Errorf("cannot configure: %w", err) @@ -482,7 +482,7 @@ func InitEtcdProcessCluster(t testing.TB, cfg *EtcdProcessClusterConfig) (*EtcdP } // StartEtcdProcessCluster launches a new cluster from etcd processes. -func StartEtcdProcessCluster(ctx context.Context, t testing.TB, epc *EtcdProcessCluster, cfg *EtcdProcessClusterConfig) (*EtcdProcessCluster, error) { +func StartEtcdProcessCluster(ctx context.Context, tb testing.TB, epc *EtcdProcessCluster, cfg *EtcdProcessClusterConfig) (*EtcdProcessCluster, error) { if cfg.RollingStart { if err := epc.RollingStart(ctx); err != nil { return nil, fmt.Errorf("cannot rolling-start: %w", err) @@ -496,11 +496,11 @@ func StartEtcdProcessCluster(ctx context.Context, t testing.TB, epc *EtcdProcess for _, proc := range epc.Procs { if cfg.GoFailEnabled && !proc.Failpoints().Enabled() { epc.Close() - t.Skip("please run 'make gofail-enable && make build' before running the test") + tb.Skip("please run 'make gofail-enable && make build' before running the test") } } if cfg.InitialLeaderIndex >= 0 { - if err := epc.MoveLeader(ctx, t, cfg.InitialLeaderIndex); err != nil { + if err := epc.MoveLeader(ctx, tb, cfg.InitialLeaderIndex); err != nil { return nil, fmt.Errorf("failed to move leader: %w", err) } } @@ -1110,29 +1110,29 @@ func findMemberIDByEndpoint(members []*etcdserverpb.Member, endpoint string) (ui // WaitLeader returns index of the member in c.Members() that is leader // or fails the test (if not established in 30s). -func (epc *EtcdProcessCluster) WaitLeader(t testing.TB) int { - ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) +func (epc *EtcdProcessCluster) WaitLeader(tb testing.TB) int { + ctx, cancel := context.WithTimeout(tb.Context(), 30*time.Second) defer cancel() - return epc.WaitMembersForLeader(ctx, t, epc.Procs) + return epc.WaitMembersForLeader(ctx, tb, epc.Procs) } // WaitMembersForLeader waits until given members agree on the same leader, // and returns its 'index' in the 'membs' list -func (epc *EtcdProcessCluster) WaitMembersForLeader(ctx context.Context, t testing.TB, membs []EtcdProcess) int { +func (epc *EtcdProcessCluster) WaitMembersForLeader(ctx context.Context, tb testing.TB, membs []EtcdProcess) int { cc := epc.Etcdctl() // ensure leader is up via linearizable get for { select { case <-ctx.Done(): - t.Fatal("WaitMembersForLeader timeout") + tb.Fatal("WaitMembersForLeader timeout") default: } _, err := cc.Get(ctx, "0", config.GetOptions{Timeout: 10*config.TickDuration + time.Second}) if err == nil || strings.Contains(err.Error(), "Key not found") { break } - t.Logf("WaitMembersForLeader Get err: %v", err) + tb.Logf("WaitMembersForLeader Get err: %v", err) } leaders := make(map[uint64]struct{}) @@ -1140,7 +1140,7 @@ func (epc *EtcdProcessCluster) WaitMembersForLeader(ctx context.Context, t testi for { select { case <-ctx.Done(): - t.Fatal("WaitMembersForLeader timeout") + tb.Fatal("WaitMembersForLeader timeout") default: } for i := range membs { @@ -1150,7 +1150,7 @@ func (epc *EtcdProcessCluster) WaitMembersForLeader(ctx context.Context, t testi // if member[i] has stopped continue } - t.Fatal(err) + tb.Fatal(err) } members[resp[0].Header.MemberId] = i leaders[resp[0].Leader] = struct{}{} @@ -1165,24 +1165,24 @@ func (epc *EtcdProcessCluster) WaitMembersForLeader(ctx context.Context, t testi } for l := range leaders { if index, ok := members[l]; ok { - t.Logf("members agree on a leader, members:%v , leader:%v", members, l) + tb.Logf("members agree on a leader, members:%v , leader:%v", members, l) return index } - t.Fatalf("members agree on a leader which is not one of members, members:%v , leader:%v", members, l) + tb.Fatalf("members agree on a leader which is not one of members, members:%v , leader:%v", members, l) } - t.Fatal("impossible path of execution") + tb.Fatal("impossible path of execution") return -1 } // MoveLeader moves the leader to the ith process. -func (epc *EtcdProcessCluster) MoveLeader(ctx context.Context, t testing.TB, i int) error { +func (epc *EtcdProcessCluster) MoveLeader(ctx context.Context, tb testing.TB, i int) error { if i < 0 || i >= len(epc.Procs) { return fmt.Errorf("invalid index: %d, must between 0 and %d", i, len(epc.Procs)-1) } - t.Logf("moving leader to Procs[%d]", i) - oldLeader := epc.WaitMembersForLeader(ctx, t, epc.Procs) + tb.Logf("moving leader to Procs[%d]", i) + oldLeader := epc.WaitMembersForLeader(ctx, tb, epc.Procs) if oldLeader == i { - t.Logf("Procs[%d] is already the leader", i) + tb.Logf("Procs[%d] is already the leader", i) return nil } resp, err := epc.Procs[i].Etcdctl().Status(ctx) @@ -1194,10 +1194,10 @@ func (epc *EtcdProcessCluster) MoveLeader(ctx context.Context, t testing.TB, i i if err != nil { return err } - newLeader := epc.WaitMembersForLeader(ctx, t, epc.Procs) + newLeader := epc.WaitMembersForLeader(ctx, tb, epc.Procs) if newLeader != i { - t.Fatalf("expect new leader to be Procs[%d] but got Procs[%d]", i, newLeader) + tb.Fatalf("expect new leader to be Procs[%d] but got Procs[%d]", i, newLeader) } - t.Logf("moved leader from Procs[%d] to Procs[%d]", oldLeader, i) + tb.Logf("moved leader from Procs[%d] to Procs[%d]", oldLeader, i) return nil } diff --git a/tests/framework/e2e/cluster_direct.go b/tests/framework/e2e/cluster_direct.go index 70c60dbf4c0a..ea46ea31d010 100644 --- a/tests/framework/e2e/cluster_direct.go +++ b/tests/framework/e2e/cluster_direct.go @@ -18,6 +18,6 @@ package e2e import "testing" -func NewEtcdProcess(t testing.TB, cfg *EtcdServerProcessConfig) (EtcdProcess, error) { - return NewEtcdServerProcess(t, cfg) +func NewEtcdProcess(tb testing.TB, cfg *EtcdServerProcessConfig) (EtcdProcess, error) { + return NewEtcdServerProcess(tb, cfg) } diff --git a/tests/framework/e2e/e2e.go b/tests/framework/e2e/e2e.go index f78df57926ea..6f3954d5da7d 100644 --- a/tests/framework/e2e/e2e.go +++ b/tests/framework/e2e/e2e.go @@ -39,11 +39,11 @@ func (e e2eRunner) TestMain(m *testing.M) { os.Exit(v) } -func (e e2eRunner) BeforeTest(t testing.TB) { - BeforeTest(t) +func (e e2eRunner) BeforeTest(tb testing.TB) { + BeforeTest(tb) } -func (e e2eRunner) NewCluster(ctx context.Context, t testing.TB, opts ...config.ClusterOption) intf.Cluster { +func (e e2eRunner) NewCluster(ctx context.Context, tb testing.TB, opts ...config.ClusterOption) intf.Cluster { cfg := config.NewClusterConfig(opts...) e2eConfig := NewConfig( WithClusterSize(cfg.ClusterSize), @@ -68,7 +68,7 @@ func (e e2eRunner) NewCluster(ctx context.Context, t testing.TB, opts ...config. e2eConfig.Client.AutoTLS = false e2eConfig.Client.ConnectionType = ClientTLS default: - t.Fatalf("ClientTLS config %q not supported", cfg.ClientTLS) + tb.Fatalf("ClientTLS config %q not supported", cfg.ClientTLS) } switch cfg.PeerTLS { case config.NoTLS: @@ -81,13 +81,13 @@ func (e e2eRunner) NewCluster(ctx context.Context, t testing.TB, opts ...config. e2eConfig.IsPeerTLS = true e2eConfig.IsPeerAutoTLS = false default: - t.Fatalf("PeerTLS config %q not supported", cfg.PeerTLS) + tb.Fatalf("PeerTLS config %q not supported", cfg.PeerTLS) } - epc, err := NewEtcdProcessCluster(ctx, t, WithConfig(e2eConfig)) + epc, err := NewEtcdProcessCluster(ctx, tb, WithConfig(e2eConfig)) if err != nil { - t.Fatalf("could not start etcd integrationCluster: %s", err) + tb.Fatalf("could not start etcd integrationCluster: %s", err) } - return &e2eCluster{t, *epc} + return &e2eCluster{tb, *epc} } type e2eCluster struct { diff --git a/tests/framework/e2e/etcd_process.go b/tests/framework/e2e/etcd_process.go index 64b8f73eeef0..fa1610bd6d94 100644 --- a/tests/framework/e2e/etcd_process.go +++ b/tests/framework/e2e/etcd_process.go @@ -105,7 +105,7 @@ type EtcdServerProcessConfig struct { Proxy *proxy.ServerConfig } -func NewEtcdServerProcess(t testing.TB, cfg *EtcdServerProcessConfig) (*EtcdServerProcess, error) { +func NewEtcdServerProcess(tb testing.TB, cfg *EtcdServerProcessConfig) (*EtcdServerProcess, error) { if !fileutil.Exist(cfg.ExecPath) { return nil, fmt.Errorf("could not find etcd binary: %s", cfg.ExecPath) } @@ -125,7 +125,7 @@ func NewEtcdServerProcess(t testing.TB, cfg *EtcdServerProcessConfig) (*EtcdServ } } if cfg.LazyFSEnabled { - ep.lazyfs = newLazyFS(cfg.lg, cfg.DataDirPath, t) + ep.lazyfs = newLazyFS(cfg.lg, cfg.DataDirPath, tb) } return ep, nil } diff --git a/tests/framework/e2e/testing.go b/tests/framework/e2e/testing.go index 7d7de27fdddf..99aa8dac6d65 100644 --- a/tests/framework/e2e/testing.go +++ b/tests/framework/e2e/testing.go @@ -20,7 +20,7 @@ import ( "go.etcd.io/etcd/client/pkg/v3/testutil" ) -func BeforeTest(t testing.TB) { - SkipInShortMode(t) - testutil.BeforeTest(t) +func BeforeTest(tb testing.TB) { + SkipInShortMode(tb) + testutil.BeforeTest(tb) } diff --git a/tests/framework/e2e/util.go b/tests/framework/e2e/util.go index d72f2d4939d0..94e1cd6a84ab 100644 --- a/tests/framework/e2e/util.go +++ b/tests/framework/e2e/util.go @@ -150,8 +150,8 @@ func ToTLS(s string) string { return s } -func SkipInShortMode(t testing.TB) { - testutil.SkipTestIfShortMode(t, "e2e tests are not running in --short mode") +func SkipInShortMode(tb testing.TB) { + testutil.SkipTestIfShortMode(tb, "e2e tests are not running in --short mode") } func mergeEnvVariables(envVars map[string]string) []string { diff --git a/tests/framework/integration/cluster.go b/tests/framework/integration/cluster.go index 1570fdc1946a..5cd6321b0f16 100644 --- a/tests/framework/integration/cluster.go +++ b/tests/framework/integration/cluster.go @@ -412,23 +412,23 @@ func (c *Cluster) WaitMembersMatch(t testutil.TB, membs []*pb.Member) { // WaitLeader returns index of the member in c.Members that is leader // or fails the test (if not established in 30s). -func (c *Cluster) WaitLeader(t testing.TB) int { - return c.WaitMembersForLeader(t, c.Members) +func (c *Cluster) WaitLeader(tb testing.TB) int { + return c.WaitMembersForLeader(tb, c.Members) } // WaitMembersForLeader waits until given members agree on the same leader, // and returns its 'index' in the 'membs' list -func (c *Cluster) WaitMembersForLeader(t testing.TB, membs []*Member) int { - t.Logf("WaitMembersForLeader") - ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) +func (c *Cluster) WaitMembersForLeader(tb testing.TB, membs []*Member) int { + tb.Logf("WaitMembersForLeader") + ctx, cancel := context.WithTimeout(tb.Context(), 30*time.Second) defer cancel() l := 0 - for l = c.waitMembersForLeader(ctx, t, membs); l < 0; { + for l = c.waitMembersForLeader(ctx, tb, membs); l < 0; { if ctx.Err() != nil { - t.Fatalf("WaitLeader FAILED: %v", ctx.Err()) + tb.Fatalf("WaitLeader FAILED: %v", ctx.Err()) } } - t.Logf("WaitMembersForLeader succeeded. Cluster leader index: %v", l) + tb.Logf("WaitMembersForLeader succeeded. Cluster leader index: %v", l) // TODO: Consider second pass check as sometimes leadership is lost // soon after election: @@ -444,15 +444,15 @@ func (c *Cluster) WaitMembersForLeader(t testing.TB, membs []*Member) int { // WaitMembersForLeader waits until given members agree on the same leader, // and returns its 'index' in the 'membs' list -func (c *Cluster) waitMembersForLeader(ctx context.Context, t testing.TB, membs []*Member) int { +func (c *Cluster) waitMembersForLeader(ctx context.Context, tb testing.TB, membs []*Member) int { possibleLead := make(map[uint64]bool) var lead uint64 for _, m := range membs { possibleLead[uint64(m.Server.MemberID())] = true } - cc, err := c.ClusterClient(t) + cc, err := c.ClusterClient(tb) if err != nil { - t.Fatal(err) + tb.Fatal(err) } // ensure leader is up via linearizable get for { @@ -483,12 +483,12 @@ func (c *Cluster) waitMembersForLeader(ctx context.Context, t testing.TB, membs for i, m := range membs { if uint64(m.Server.MemberID()) == lead { - t.Logf("waitMembersForLeader found leader. Member: %v lead: %x", i, lead) + tb.Logf("waitMembersForLeader found leader. Member: %v lead: %x", i, lead) return i } } - t.Logf("waitMembersForLeader failed (-1)") + tb.Logf("waitMembersForLeader failed (-1)") return -1 } @@ -1457,7 +1457,7 @@ func (c *Cluster) Endpoints() []string { return endpoints } -func (c *Cluster) ClusterClient(t testing.TB, opts ...framecfg.ClientOption) (client *clientv3.Client, err error) { +func (c *Cluster) ClusterClient(tb testing.TB, opts ...framecfg.ClientOption) (client *clientv3.Client, err error) { cfg, err := c.newClientCfg() if err != nil { return nil, err @@ -1469,7 +1469,7 @@ func (c *Cluster) ClusterClient(t testing.TB, opts ...framecfg.ClientOption) (cl if err != nil { return nil, err } - t.Cleanup(func() { + tb.Cleanup(func() { client.Close() }) return client, nil diff --git a/tests/framework/integration/integration.go b/tests/framework/integration/integration.go index 6e5de0cd5281..6152ca705435 100644 --- a/tests/framework/integration/integration.go +++ b/tests/framework/integration/integration.go @@ -41,11 +41,11 @@ func (e integrationRunner) TestMain(m *testing.M) { testutil.MustTestMainWithLeakDetection(m) } -func (e integrationRunner) BeforeTest(t testing.TB) { - BeforeTest(t) +func (e integrationRunner) BeforeTest(tb testing.TB) { + BeforeTest(tb) } -func (e integrationRunner) NewCluster(ctx context.Context, t testing.TB, opts ...config.ClusterOption) intf.Cluster { +func (e integrationRunner) NewCluster(ctx context.Context, tb testing.TB, opts ...config.ClusterOption) intf.Cluster { var err error cfg := config.NewClusterConfig(opts...) integrationCfg := ClusterConfig{ @@ -55,27 +55,27 @@ func (e integrationRunner) NewCluster(ctx context.Context, t testing.TB, opts .. AuthToken: cfg.AuthToken, SnapshotCount: cfg.SnapshotCount, } - integrationCfg.ClientTLS, err = tlsInfo(t, cfg.ClientTLS) + integrationCfg.ClientTLS, err = tlsInfo(tb, cfg.ClientTLS) if err != nil { - t.Fatalf("ClientTLS: %s", err) + tb.Fatalf("ClientTLS: %s", err) } - integrationCfg.PeerTLS, err = tlsInfo(t, cfg.PeerTLS) + integrationCfg.PeerTLS, err = tlsInfo(tb, cfg.PeerTLS) if err != nil { - t.Fatalf("PeerTLS: %s", err) + tb.Fatalf("PeerTLS: %s", err) } return &integrationCluster{ - Cluster: NewCluster(t, &integrationCfg), - t: t, + Cluster: NewCluster(tb, &integrationCfg), + t: tb, ctx: ctx, } } -func tlsInfo(t testing.TB, cfg config.TLSConfig) (*transport.TLSInfo, error) { +func tlsInfo(tb testing.TB, cfg config.TLSConfig) (*transport.TLSInfo, error) { switch cfg { case config.NoTLS: return nil, nil case config.AutoTLS: - tls, err := transport.SelfCert(zap.NewNop(), t.TempDir(), []string{"localhost"}, 1) + tls, err := transport.SelfCert(zap.NewNop(), tb.TempDir(), []string{"localhost"}, 1) if err != nil { return nil, fmt.Errorf("failed to generate cert: %w", err) } diff --git a/tests/framework/integration/testing.go b/tests/framework/integration/testing.go index a4d03c532123..7e0dd38d4df2 100644 --- a/tests/framework/integration/testing.go +++ b/tests/framework/integration/testing.go @@ -138,18 +138,18 @@ func assertInTestContext(t testutil.TB) { } } -func NewEmbedConfig(t testing.TB, name string) *embed.Config { +func NewEmbedConfig(tb testing.TB, name string) *embed.Config { cfg := embed.NewConfig() cfg.Name = name - lg := zaptest.NewLogger(t, zaptest.Level(zapcore.InfoLevel)).Named(cfg.Name) + lg := zaptest.NewLogger(tb, zaptest.Level(zapcore.InfoLevel)).Named(cfg.Name) cfg.ZapLoggerBuilder = embed.NewZapLoggerBuilder(lg) - cfg.Dir = t.TempDir() + cfg.Dir = tb.TempDir() return cfg } -func NewClient(t testing.TB, cfg clientv3.Config) (*clientv3.Client, error) { +func NewClient(tb testing.TB, cfg clientv3.Config) (*clientv3.Client, error) { if cfg.Logger == nil { - cfg.Logger = zaptest.NewLogger(t).Named("client") + cfg.Logger = zaptest.NewLogger(tb).Named("client") } return clientv3.New(cfg) } diff --git a/tests/framework/unit/unit.go b/tests/framework/unit/unit.go index f822b7dd1f92..d09ef0bdd2be 100644 --- a/tests/framework/unit/unit.go +++ b/tests/framework/unit/unit.go @@ -42,10 +42,10 @@ func (e unitRunner) TestMain(m *testing.M) { } } -func (e unitRunner) BeforeTest(t testing.TB) { +func (e unitRunner) BeforeTest(tb testing.TB) { } -func (e unitRunner) NewCluster(ctx context.Context, t testing.TB, opts ...config.ClusterOption) intf.Cluster { - testutil.SkipTestIfShortMode(t, "Cannot create clusters in --short tests") +func (e unitRunner) NewCluster(ctx context.Context, tb testing.TB, opts ...config.ClusterOption) intf.Cluster { + testutil.SkipTestIfShortMode(tb, "Cannot create clusters in --short tests") return nil } diff --git a/tests/integration/v3_leadership_test.go b/tests/integration/v3_leadership_test.go index ea2b730c6189..148c2edf8591 100644 --- a/tests/integration/v3_leadership_test.go +++ b/tests/integration/v3_leadership_test.go @@ -236,14 +236,14 @@ func TestFirstCommitNotification(t *testing.T) { func checkFirstCommitNotification( ctx context.Context, - t testing.TB, + tb testing.TB, member *integration.Member, leaderAppliedIndex uint64, notifier <-chan struct{}, ) error { // wait until server applies all the changes of leader for member.Server.AppliedIndex() < leaderAppliedIndex { - t.Logf("member.Server.AppliedIndex():%v <= leaderAppliedIndex:%v", member.Server.AppliedIndex(), leaderAppliedIndex) + tb.Logf("member.Server.AppliedIndex():%v <= leaderAppliedIndex:%v", member.Server.AppliedIndex(), leaderAppliedIndex) select { case <-ctx.Done(): return ctx.Err() @@ -261,7 +261,7 @@ func checkFirstCommitNotification( ) } default: - t.Logf("member.Server.AppliedIndex():%v >= leaderAppliedIndex:%v", member.Server.AppliedIndex(), leaderAppliedIndex) + tb.Logf("member.Server.AppliedIndex():%v >= leaderAppliedIndex:%v", member.Server.AppliedIndex(), leaderAppliedIndex) return fmt.Errorf( "notification was not triggered, member ID: %d", member.ID(), diff --git a/tools/.golangci.yaml b/tools/.golangci.yaml index a296a5ac4c60..d5a87964ef7c 100644 --- a/tools/.golangci.yaml +++ b/tools/.golangci.yaml @@ -31,6 +31,7 @@ linters: - staticcheck - stylecheck - testifylint + - thelper - unconvert # Remove unnecessary type conversions - unparam - unused @@ -102,5 +103,18 @@ linters-settings: # please keep this alphabetized # to always require f-functions for stretchr/testify, but not for golang standard lib. # Also refer to https://github.com/etcd-io/etcd/pull/18741#issuecomment-2422395914 require-f-funcs: true + thelper: + test: + first: false + begin: false + benchmark: + first: false + begin: false + tb: + first: false + begin: false + fuzz: + first: false + begin: false usetesting: os-mkdir-temp: false From ba550c222d168f5517994b538b4de4641b810b79 Mon Sep 17 00:00:00 2001 From: Abdur Rehman Date: Thu, 24 Apr 2025 17:15:24 +0500 Subject: [PATCH 0113/1068] Convert entrypoint from python to Go Signed-off-by: Abdur Rehman --- tests/antithesis/docker-compose.yml | 2 +- .../test-template/Dockerfile.client | 26 +++--- .../test-template/entrypoint/entrypoint.go | 74 +++++++++++++++ .../test-template/entrypoint/entrypoint.py | 46 ---------- .../test-template/entrypoint/go.mod | 30 +++++++ .../test-template/entrypoint/go.sum | 90 +++++++++++++++++++ 6 files changed, 209 insertions(+), 59 deletions(-) create mode 100644 tests/antithesis/test-template/entrypoint/entrypoint.go delete mode 100755 tests/antithesis/test-template/entrypoint/entrypoint.py create mode 100644 tests/antithesis/test-template/entrypoint/go.mod create mode 100644 tests/antithesis/test-template/entrypoint/go.sum diff --git a/tests/antithesis/docker-compose.yml b/tests/antithesis/docker-compose.yml index b0c7c018834b..6cbcbfaf33ad 100644 --- a/tests/antithesis/docker-compose.yml +++ b/tests/antithesis/docker-compose.yml @@ -46,4 +46,4 @@ services: client: image: 'etcd-client:latest' container_name: client - entrypoint: ["/entrypoint.py"] + entrypoint: ["/opt/antithesis/entrypoint/entrypoint"] diff --git a/tests/antithesis/test-template/Dockerfile.client b/tests/antithesis/test-template/Dockerfile.client index 14422fbddbe2..25998eefd668 100644 --- a/tests/antithesis/test-template/Dockerfile.client +++ b/tests/antithesis/test-template/Dockerfile.client @@ -3,18 +3,6 @@ FROM ubuntu:latest # Install dependencies RUN apt-get update -y && apt-get install -y pip wget -# Update package index first, then install Python -RUN apt-get install -y python3 python3-pip - -# Then install additional Python packages -RUN apt-get install -y python3-etcd3 python3-numpy python3-protobuf python3-filelock - -# Install Antithesis Python SDK -RUN pip install antithesis cffi --break-system-packages - -# Copy your entrypoint script -COPY ./entrypoint/entrypoint.py /entrypoint.py - # GO: # Install go @@ -22,6 +10,20 @@ RUN wget https://golang.org/dl/go1.22.5.linux-amd64.tar.gz RUN tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz ENV PATH=$PATH:/usr/local/go/bin +# Set working directory +WORKDIR /opt/antithesis/entrypoint + +# Copy your entrypoint script +COPY ./entrypoint/go.mod ./go.mod +COPY ./entrypoint/go.sum ./go.sum +COPY ./entrypoint/entrypoint.go ./entrypoint.go + +# Run go mod tidy to ensure the dependencies are correct +RUN go mod tidy + +# Building go executable and putting it in Test Composer directory +RUN go build -o ./entrypoint -race + # Copying go script and building an executable into Test Composer directory WORKDIR /opt/antithesis/go-delete-keys diff --git a/tests/antithesis/test-template/entrypoint/entrypoint.go b/tests/antithesis/test-template/entrypoint/entrypoint.go new file mode 100644 index 000000000000..a59783d023f2 --- /dev/null +++ b/tests/antithesis/test-template/entrypoint/entrypoint.go @@ -0,0 +1,74 @@ +package main + +import ( + "context" + "fmt" + "time" + + "github.com/antithesishq/antithesis-sdk-go/lifecycle" + + clientv3 "go.etcd.io/etcd/client/v3" +) + +// Sleep duration +const SLEEP = 10 + +// check health of all etcd nodes +func CheckHealth() bool { + nodeOptions := []string{"etcd0", "etcd1", "etcd2"} + + // iterate over each node and check health + for _, node := range nodeOptions { + cli, err := clientv3.New(clientv3.Config{ + Endpoints: []string{fmt.Sprintf("http://%s:2379", node)}, + DialTimeout: 5 * time.Second, + }) + if err != nil { + fmt.Printf("Client [entrypoint]: connection failed with %s\n", node) + fmt.Printf("Client [entrypoint]: error: %v\n", err) + return false + } + + defer func() { + if err := cli.Close(); err != nil { + fmt.Printf("Client [entrypoint]: error closing connection: %v\n", err) + } + }() + + // fetch the key setting-up to confirm that the node is available + _, err = cli.Get(context.Background(), "setting-up") + if err != nil { + fmt.Printf("Client [entrypoint]: connection failed with %s\n", node) + fmt.Printf("Client [entrypoint]: error: %v\n", err) + return false + } + + fmt.Printf("Client [entrypoint]: connection successful with %s\n", node) + } + + return true +} + +func main() { + fmt.Println("Client [entrypoint]: starting...") + + // run loop until all nodes are healthy + for { + fmt.Println("Client [entrypoint]: checking cluster health...") + if CheckHealth() { + fmt.Println("Client [entrypoint]: cluster is healthy!") + break + } + fmt.Printf("Client [entrypoint]: cluster is not healthy. retrying in %d seconds...\n", SLEEP) + time.Sleep(SLEEP * time.Second) + } + + // signal that the setup looks complete + lifecycle.SetupComplete( + map[string]string{ + "Message": "ETCD cluster is healthy", + }, + ) + + select {} +} diff --git a/tests/antithesis/test-template/entrypoint/entrypoint.py b/tests/antithesis/test-template/entrypoint/entrypoint.py deleted file mode 100755 index d2bb8b3426a0..000000000000 --- a/tests/antithesis/test-template/entrypoint/entrypoint.py +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env -S python3 -u - -# This file serves as the client's entrypoint. It: -# 1. Confirms that all nodes in the cluster are available -# 2. Signals "setupComplete" using the Antithesis SDK - -import etcd3, time - -from antithesis.lifecycle import ( - setup_complete, -) - -SLEEP = 10 - -def check_health(): - - node_options = ["etcd0", "etcd1", "etcd2"] - - for i in range(0, len(node_options)): - try: - c = etcd3.client(host=node_options[i], port=2379) - c.get('setting-up') - print(f"Client [entrypoint]: connection successful with {node_options[i]}") - except Exception as e: - print(f"Client [entrypoint]: connection failed with {node_options[i]}") - print(f"Client [entrypoint]: error: {e}") - return False - return True - -print("Client [entrypoint]: starting...") - -while True: - print("Client [entrypoint]: checking cluster health...") - if check_health(): - print("Client [entrypoint]: cluster is healthy!") - break - else: - print(f"Client [entrypoint]: cluster is not healthy. retrying in {SLEEP} seconds...") - time.sleep(SLEEP) - - -# Here is the python format for setup_complete. At this point, our system is fully initialized and ready to test. -setup_complete({"Message":"ETCD cluster is healthy"}) - -# sleep infinity -time.sleep(31536000) diff --git a/tests/antithesis/test-template/entrypoint/go.mod b/tests/antithesis/test-template/entrypoint/go.mod new file mode 100644 index 000000000000..ed0393cbeb3e --- /dev/null +++ b/tests/antithesis/test-template/entrypoint/go.mod @@ -0,0 +1,30 @@ +module main + +go 1.24 + +toolchain go1.24.2 + +require ( + github.com/antithesishq/antithesis-sdk-go v0.4.3 + go.etcd.io/etcd/client/v3 v3.5.21 +) + +require ( + github.com/coreos/go-semver v0.3.0 // indirect + github.com/coreos/go-systemd/v22 v22.3.2 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.4 // indirect + go.etcd.io/etcd/api/v3 v3.5.21 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.21 // indirect + go.uber.org/atomic v1.7.0 // indirect + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.17.0 // indirect + golang.org/x/net v0.38.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect + google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/grpc v1.59.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect +) diff --git a/tests/antithesis/test-template/entrypoint/go.sum b/tests/antithesis/test-template/entrypoint/go.sum new file mode 100644 index 000000000000..5fdbc5360966 --- /dev/null +++ b/tests/antithesis/test-template/entrypoint/go.sum @@ -0,0 +1,90 @@ +github.com/antithesishq/antithesis-sdk-go v0.4.3 h1:a2hGdDogClzHzFu20r1z0tzD6zwSWUipiaerAjZVP90= +github.com/antithesishq/antithesis-sdk-go v0.4.3/go.mod h1:IUpT2DPAKh6i/YhSbt6Gl3v2yvUZjmKncl7U91fup7E= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.etcd.io/etcd/api/v3 v3.5.21 h1:A6O2/JDb3tvHhiIz3xf9nJ7REHvtEFJJ3veW3FbCnS8= +go.etcd.io/etcd/api/v3 v3.5.21/go.mod h1:c3aH5wcvXv/9dqIw2Y810LDXJfhSYdHQ0vxmP3CCHVY= +go.etcd.io/etcd/client/pkg/v3 v3.5.21 h1:lPBu71Y7osQmzlflM9OfeIV2JlmpBjqBNlLtcoBqUTc= +go.etcd.io/etcd/client/pkg/v3 v3.5.21/go.mod h1:BgqT/IXPjK9NkeSDjbzwsHySX3yIle2+ndz28nVsjUs= +go.etcd.io/etcd/client/v3 v3.5.21 h1:T6b1Ow6fNjOLOtM0xSoKNQt1ASPCLWrF9XMHcH9pEyY= +go.etcd.io/etcd/client/v3 v3.5.21/go.mod h1:mFYy67IOqmbRf/kRUvsHixzo3iG+1OF2W2+jVIQRAnU= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d h1:VBu5YqKPv6XiJ199exd8Br+Aetz+o08F+PLMnwJQHAY= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From fbe4cf2dca08bb3ebf689c2ec1624920cd78fe2d Mon Sep 17 00:00:00 2001 From: Miancheng Lin Date: Fri, 14 Mar 2025 17:04:01 -0700 Subject: [PATCH 0114/1068] Add e2e test to reproduce issue #19406 Signed-off-by: Miancheng Lin --- server/storage/mvcc/kvstore_compaction.go | 1 + tests/e2e/metrics_test.go | 24 +---- tests/e2e/reproduce_19406_test.go | 113 ++++++++++++++++++++++ tests/framework/e2e/metrics.go | 41 ++++++++ 4 files changed, 156 insertions(+), 23 deletions(-) create mode 100644 tests/e2e/reproduce_19406_test.go create mode 100644 tests/framework/e2e/metrics.go diff --git a/server/storage/mvcc/kvstore_compaction.go b/server/storage/mvcc/kvstore_compaction.go index a052c93943e0..9c555fce52b5 100644 --- a/server/storage/mvcc/kvstore_compaction.go +++ b/server/storage/mvcc/kvstore_compaction.go @@ -49,6 +49,7 @@ func (s *store) scheduleCompaction(compactMainRev, prevCompactRev int64) (KeyVal tx := s.b.BatchTx() tx.LockOutsideApply() + // gofail: var compactAfterAcquiredBatchTxLock struct{} keys, values := tx.UnsafeRange(schema.Key, last, end, int64(batchNum)) for i := range keys { rev = BytesToRev(keys[i]) diff --git a/tests/e2e/metrics_test.go b/tests/e2e/metrics_test.go index bac4ef909987..9d730ed3aa3a 100644 --- a/tests/e2e/metrics_test.go +++ b/tests/e2e/metrics_test.go @@ -15,17 +15,12 @@ package e2e import ( - "bytes" "context" "fmt" - "io" - "net/http" "net/url" "testing" "time" - dto "github.com/prometheus/client_model/go" - "github.com/prometheus/common/expfmt" "github.com/stretchr/testify/require" "go.etcd.io/etcd/api/v3/version" @@ -324,7 +319,7 @@ func TestNoMetricsMissing(t *testing.T) { metricsURL, err := url.JoinPath(epc.Procs[0].Config().ClientURL, "metrics") require.NoError(t, err) - mfs, err := getMetrics(metricsURL) + mfs, err := e2e.GetMetrics(metricsURL) require.NoError(t, err) var missingMetrics []string @@ -341,23 +336,6 @@ func TestNoMetricsMissing(t *testing.T) { } } -func getMetrics(metricsURL string) (map[string]*dto.MetricFamily, error) { - httpClient := http.Client{Transport: &http.Transport{}} - resp, err := httpClient.Get(metricsURL) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - data, err := io.ReadAll(resp.Body) - if err != nil { - return nil, err - } - - var parser expfmt.TextParser - return parser.TextToMetricFamilies(bytes.NewReader(data)) -} - // formatMetrics is only for test purpose /*func formatMetrics(metrics []string) string { quoted := make([]string, len(metrics)) diff --git a/tests/e2e/reproduce_19406_test.go b/tests/e2e/reproduce_19406_test.go new file mode 100644 index 000000000000..be942aaba719 --- /dev/null +++ b/tests/e2e/reproduce_19406_test.go @@ -0,0 +1,113 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package e2e + +import ( + "context" + "fmt" + "net/url" + "testing" + "time" + + clientv3 "go.etcd.io/etcd/client/v3" + "go.etcd.io/etcd/pkg/v3/stringutil" + "go.etcd.io/etcd/tests/v3/framework/e2e" + + "github.com/stretchr/testify/require" +) + +// TestReproduce19406 reproduces the issue: https://github.com/etcd-io/etcd/issues/19406 +func TestReproduce19406(t *testing.T) { + e2e.BeforeTest(t) + + compactionSleepInterval := 100 * time.Millisecond + ctx := context.TODO() + + clus, cerr := e2e.NewEtcdProcessCluster(ctx, t, + e2e.WithClusterSize(1), + e2e.WithGoFailEnabled(true), + e2e.WithCompactionBatchLimit(1), + e2e.WithCompactionSleepInterval(compactionSleepInterval), + ) + require.NoError(t, cerr) + t.Cleanup(func() { require.NoError(t, clus.Stop()) }) + + // Produce some data + cli := newClient(t, clus.EndpointsGRPC(), e2e.ClientConfig{}) + valueSize := 10 + var latestRevision int64 + + produceKeyNum := 20 + for i := 0; i <= produceKeyNum; i++ { + resp, err := cli.Put(ctx, fmt.Sprintf("%d", i), stringutil.RandString(uint(valueSize))) + require.NoError(t, err) + latestRevision = resp.Header.Revision + } + + // Sleep for PerCompactionInterationInterval to simulate a single iteration of compaction lasting at least this duration. + PerCompactionInterationInterval := compactionSleepInterval + require.NoError(t, clus.Procs[0].Failpoints().SetupHTTP(ctx, "compactAfterAcquiredBatchTxLock", + fmt.Sprintf(`sleep("%s")`, PerCompactionInterationInterval))) + + // start compaction + t.Log("start compaction...") + _, err := cli.Compact(ctx, latestRevision, clientv3.WithCompactPhysical()) + require.NoError(t, err) + t.Log("finished compaction...") + + // Validate that total compaction sleep interval + // Compaction runs in batches. During each batch, it acquires a lock, releases it at the end, + // and then waits for a compactionSleepInterval before starting the next batch. This pause + // allows PUT requests to be processed. + // Therefore, the total compaction sleep interval larger or equal to + // (compaction iteration number - 1) * compactionSleepInterval + httpEndpoint := clus.EndpointsHTTP()[0] + totalKeys := produceKeyNum + 1 + pauseDuration, totalDuration := getEtcdCompactionMetrics(t, httpEndpoint) + require.NoError(t, err) + actualSleepInterval := time.Duration(totalDuration-pauseDuration) * time.Millisecond + expectSleepInterval := compactionSleepInterval * time.Duration(totalKeys) + t.Logf("db_compaction_pause_duration: %.2f db_compaction_total_duration: %.2f, totalKeys: %d", + pauseDuration, totalDuration, totalKeys) + require.GreaterOrEqualf(t, actualSleepInterval, expectSleepInterval, + "expect total compact sleep interval larger than (%v) but got (%v)", + expectSleepInterval, actualSleepInterval) +} + +func getEtcdCompactionMetrics(t *testing.T, httpEndpoint string) (pauseDuration, totalDuration float64) { + metricsURL, err := url.JoinPath(httpEndpoint, "metrics") + require.NoError(t, err) + + // Fetch metrics from the endpoint + metricFamilies, err := e2e.GetMetrics(metricsURL) + require.NoError(t, err) + + // Extract sum from histogram metric + getHistogramSum := func(name string) float64 { + mf, ok := metricFamilies[name] + require.Truef(t, ok, "metric %q not found", name) + require.NotEmptyf(t, mf.Metric, "metric %q has no data", name) + + hist := mf.Metric[0].GetHistogram() + require.NotEmptyf(t, hist, "metric %q is not a histogram", name) + + return hist.GetSampleSum() + } + + pauseDuration = getHistogramSum("etcd_debugging_mvcc_db_compaction_pause_duration_milliseconds") + totalDuration = getHistogramSum("etcd_debugging_mvcc_db_compaction_total_duration_milliseconds") + + return pauseDuration, totalDuration +} diff --git a/tests/framework/e2e/metrics.go b/tests/framework/e2e/metrics.go new file mode 100644 index 000000000000..e28661206049 --- /dev/null +++ b/tests/framework/e2e/metrics.go @@ -0,0 +1,41 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package e2e + +import ( + "bytes" + "io" + "net/http" + + dto "github.com/prometheus/client_model/go" + "github.com/prometheus/common/expfmt" +) + +func GetMetrics(metricsURL string) (map[string]*dto.MetricFamily, error) { + httpClient := http.Client{Transport: &http.Transport{}} + resp, err := httpClient.Get(metricsURL) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + data, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + var parser expfmt.TextParser + return parser.TextToMetricFamilies(bytes.NewReader(data)) +} From 1940625e606b5b0b220e9539860684b6e0dff45a Mon Sep 17 00:00:00 2001 From: joshjms Date: Thu, 24 Apr 2025 16:44:17 +0800 Subject: [PATCH 0115/1068] dependency: bump google.golang.org/grpc from 1.71.1 to 1.72.0 Signed-off-by: joshjms --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 20 files changed, 30 insertions(+), 30 deletions(-) diff --git a/api/go.mod b/api/go.mod index 64d33203531e..f9b1237680d3 100644 --- a/api/go.mod +++ b/api/go.mod @@ -11,7 +11,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/stretchr/testify v1.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb - google.golang.org/grpc v1.71.1 + google.golang.org/grpc v1.72.0 google.golang.org/protobuf v1.36.6 ) diff --git a/api/go.sum b/api/go.sum index 25ef8d4ab6be..c341fdd1265e 100644 --- a/api/go.sum +++ b/api/go.sum @@ -77,8 +77,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= -google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index bb7a66fbd70a..0b155cf31173 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.71.1 + google.golang.org/grpc v1.72.0 sigs.k8s.io/yaml v1.4.0 ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 04f96c97d676..923fa810c8e4 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -111,8 +111,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= -google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 97ad19c0eafb..7b1660cec0ca 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.11.0 - google.golang.org/grpc v1.71.1 + google.golang.org/grpc v1.72.0 ) require ( diff --git a/etcdctl/go.sum b/etcdctl/go.sum index fd769b90d538..6e14c88f7266 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -137,8 +137,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= -google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 1c36a3ea63e1..fd09e98f730c 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -88,7 +88,7 @@ require ( golang.org/x/time v0.11.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/grpc v1.71.1 // indirect + google.golang.org/grpc v1.72.0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index c63447411eb9..7b6b4c9642e2 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -171,8 +171,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= -google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index 1b5cfd3fedc7..74ca5abe89ae 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.11.0 - google.golang.org/grpc v1.71.1 + google.golang.org/grpc v1.72.0 google.golang.org/protobuf v1.36.6 ) diff --git a/go.sum b/go.sum index e8d7a366b095..6b63c3dabda2 100644 --- a/go.sum +++ b/go.sum @@ -247,8 +247,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= -google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/go.mod b/pkg/go.mod index 6ea4d8e480e6..3a3e3c3e4b6c 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.71.1 + google.golang.org/grpc v1.72.0 ) require ( diff --git a/pkg/go.sum b/pkg/go.sum index a10bc296b2a5..8a914e749af3 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -61,8 +61,8 @@ golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= -google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index 2d7dc1f6b176..0eb4649a3a7b 100644 --- a/server/go.mod +++ b/server/go.mod @@ -41,7 +41,7 @@ require ( golang.org/x/net v0.39.0 golang.org/x/time v0.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb - google.golang.org/grpc v1.71.1 + google.golang.org/grpc v1.72.0 google.golang.org/protobuf v1.36.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.4.0 diff --git a/server/go.sum b/server/go.sum index 5101cecaf57b..ab716f667c7f 100644 --- a/server/go.sum +++ b/server/go.sum @@ -224,8 +224,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= -google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index 623b7cf7d6f3..9abf9ed65390 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -47,7 +47,7 @@ require ( golang.org/x/crypto v0.37.0 golang.org/x/sync v0.13.0 golang.org/x/time v0.11.0 - google.golang.org/grpc v1.71.1 + google.golang.org/grpc v1.72.0 google.golang.org/protobuf v1.36.6 ) diff --git a/tests/go.sum b/tests/go.sum index b7b6a2c322f7..f4cf97613d80 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -251,8 +251,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= -google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 5e6e09f5f100..e75bdd02c31b 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -223,7 +223,7 @@ require ( golang.org/x/tools v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/grpc v1.71.1 // indirect + google.golang.org/grpc v1.72.0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 53d4c380cfb1..bdd7dd9ec043 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -662,8 +662,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1: google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= -google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 766b745728d4..8c017f3a8b5e 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -22,5 +22,5 @@ require ( golang.org/x/sys v0.32.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/grpc v1.71.1 // indirect + google.golang.org/grpc v1.72.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index a5c2b8e5c0b6..12d2bc8e6b41 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1888,8 +1888,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI= -google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 93ad23845acba1be1b3e94f487003f69eb3517b7 Mon Sep 17 00:00:00 2001 From: adeyemi Date: Tue, 4 Feb 2025 21:14:59 -0800 Subject: [PATCH 0116/1068] Disable revive for NewMembershipBackend to fix unexported-return Signed-off-by: adeyemi --- server/storage/schema/membership.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/storage/schema/membership.go b/server/storage/schema/membership.go index 8307a318b915..76428cf33ffe 100644 --- a/server/storage/schema/membership.go +++ b/server/storage/schema/membership.go @@ -37,6 +37,9 @@ type membershipBackend struct { be backend.Backend } +// NewMembershipBackend returns a new membership backend +// Refer to https://github.com/etcd-io/etcd/pull/19343#discussion_r1958056718 +// revive:disable-next-line:unexported-return func NewMembershipBackend(lg *zap.Logger, be backend.Backend) *membershipBackend { return &membershipBackend{ lg: lg, From 4da6a1a29905e4a3d4b44f692a5a12f379c8606d Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 26 Apr 2025 15:00:25 +0200 Subject: [PATCH 0117/1068] Extract ensureTrace function Signed-off-by: Marek Siarkowicz --- server/etcdserver/txn/txn.go | 58 ++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 33 deletions(-) diff --git a/server/etcdserver/txn/txn.go b/server/etcdserver/txn/txn.go index 783cfdd151b3..647f2f1b17b5 100644 --- a/server/etcdserver/txn/txn.go +++ b/server/etcdserver/txn/txn.go @@ -33,16 +33,10 @@ import ( ) func Put(ctx context.Context, lg *zap.Logger, lessor lease.Lessor, kv mvcc.KV, p *pb.PutRequest) (resp *pb.PutResponse, trace *traceutil.Trace, err error) { - trace = traceutil.Get(ctx) - // create put tracing if the trace in context is empty - if trace.IsEmpty() { - trace = traceutil.New("put", - lg, - traceutil.Field{Key: "key", Value: string(p.Key)}, - traceutil.Field{Key: "req_size", Value: p.Size()}, - ) - ctx = context.WithValue(ctx, traceutil.TraceKey{}, trace) - } + ctx, trace = ensureTrace(ctx, lg, "put", + traceutil.Field{Key: "key", Value: string(p.Key)}, + traceutil.Field{Key: "req_size", Value: p.Size()}, + ) leaseID := lease.LeaseID(p.Lease) if leaseID != lease.NoLease { if l := lessor.Lookup(leaseID); l == nil { @@ -95,16 +89,10 @@ func put(ctx context.Context, txnWrite mvcc.TxnWrite, p *pb.PutRequest) (resp *p } func DeleteRange(ctx context.Context, lg *zap.Logger, kv mvcc.KV, dr *pb.DeleteRangeRequest) (resp *pb.DeleteRangeResponse, trace *traceutil.Trace, err error) { - trace = traceutil.Get(ctx) - // create delete tracing if the trace in context is empty - if trace.IsEmpty() { - trace = traceutil.New("delete_range", - lg, - traceutil.Field{Key: "key", Value: string(dr.Key)}, - traceutil.Field{Key: "range_end", Value: string(dr.RangeEnd)}, - ) - ctx = context.WithValue(ctx, traceutil.TraceKey{}, trace) - } + ctx, trace = ensureTrace(ctx, lg, "delete_range", + traceutil.Field{Key: "key", Value: string(dr.Key)}, + traceutil.Field{Key: "range_end", Value: string(dr.RangeEnd)}, + ) txnWrite := kv.Write(trace) defer txnWrite.End() resp, err = deleteRange(ctx, txnWrite, dr) @@ -134,11 +122,7 @@ func deleteRange(ctx context.Context, txnWrite mvcc.TxnWrite, dr *pb.DeleteRange } func Range(ctx context.Context, lg *zap.Logger, kv mvcc.KV, r *pb.RangeRequest) (resp *pb.RangeResponse, trace *traceutil.Trace, err error) { - trace = traceutil.Get(ctx) - if trace.IsEmpty() { - trace = traceutil.New("range", lg) - ctx = context.WithValue(ctx, traceutil.TraceKey{}, trace) - } + ctx, trace = ensureTrace(ctx, lg, "range") defer func(start time.Time) { success := err == nil RangeSecObserve(success, time.Since(start)) @@ -249,12 +233,8 @@ func executeRange(ctx context.Context, lg *zap.Logger, txnRead mvcc.TxnRead, r * return resp, nil } -func Txn(ctx context.Context, lg *zap.Logger, rt *pb.TxnRequest, txnModeWriteWithSharedBuffer bool, kv mvcc.KV, lessor lease.Lessor) (*pb.TxnResponse, *traceutil.Trace, error) { - trace := traceutil.Get(ctx) - if trace.IsEmpty() { - trace = traceutil.New("transaction", lg) - ctx = context.WithValue(ctx, traceutil.TraceKey{}, trace) - } +func Txn(ctx context.Context, lg *zap.Logger, rt *pb.TxnRequest, txnModeWriteWithSharedBuffer bool, kv mvcc.KV, lessor lease.Lessor) (txnResp *pb.TxnResponse, trace *traceutil.Trace, err error) { + ctx, trace = ensureTrace(ctx, lg, "transaction") isWrite := !IsTxnReadonly(rt) // When the transaction contains write operations, we use ReadTx instead of // ConcurrentReadTx to avoid extra overhead of copying buffer. @@ -275,7 +255,7 @@ func Txn(ctx context.Context, lg *zap.Logger, rt *pb.TxnRequest, txnModeWriteWit if isWrite { trace.AddField(traceutil.Field{Key: "read_only", Value: false}) } - _, err := checkTxn(txnRead, rt, lessor, txnPath) + _, err = checkTxn(txnRead, rt, lessor, txnPath) if err != nil { txnRead.End() return nil, nil, err @@ -292,7 +272,7 @@ func Txn(ctx context.Context, lg *zap.Logger, rt *pb.TxnRequest, txnModeWriteWit } else { txnWrite = mvcc.NewReadOnlyTxnWrite(txnRead) } - txnResp, err := txn(ctx, lg, txnWrite, rt, isWrite, txnPath) + txnResp, err = txn(ctx, lg, txnWrite, rt, isWrite, txnPath) txnWrite.End() trace.AddField( @@ -734,3 +714,15 @@ func checkTxnReqsPermission(as auth.AuthStore, ai *auth.AuthInfo, reqs []*pb.Req return nil } + +func ensureTrace(ctx context.Context, lg *zap.Logger, operation string, fields ...traceutil.Field) (context.Context, *traceutil.Trace) { + trace := traceutil.Get(ctx) + if trace.IsEmpty() { + trace = traceutil.New(operation, + lg, + fields..., + ) + ctx = context.WithValue(ctx, traceutil.TraceKey{}, trace) + } + return ctx, trace +} From 4504fe44cf2b324fba118d839fd28b398bb6983f Mon Sep 17 00:00:00 2001 From: redwrasse Date: Fri, 25 Apr 2025 14:18:35 -0700 Subject: [PATCH 0118/1068] adt: add tests for IntervalTree.Find() Signed-off-by: redwrasse --- pkg/adt/interval_tree_test.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pkg/adt/interval_tree_test.go b/pkg/adt/interval_tree_test.go index 8eb0246ad971..a8b14164629a 100644 --- a/pkg/adt/interval_tree_test.go +++ b/pkg/adt/interval_tree_test.go @@ -269,6 +269,16 @@ func TestIntervalTreeDelete(t *testing.T) { require.Truef(t, reflect.DeepEqual(expectedAfterDelete11, visitsAfterDelete11), "level order after deleting '11' expected %v, got %v", expectedAfterDelete11, visitsAfterDelete11) } +func TestIntervalTreeFind(t *testing.T) { + ivt := NewIntervalTree() + ivl1 := NewInt64Interval(3, 6) + assert.Nilf(t, ivt.Find(ivl1), "find expected nil on empty tree") + ivt.Insert(ivl1, 123) + assert.Equalf(t, ivl1, ivt.Find(ivl1).Ivl, "find expected to return exact-matched interval") + ivl2 := NewInt64Interval(3, 7) + assert.Nilf(t, ivt.Find(ivl2), "find expected nil on single-matched endpoint") +} + func TestIntervalTreeIntersects(t *testing.T) { ivt := NewIntervalTree() ivt.Insert(NewStringInterval("1", "3"), 123) @@ -341,7 +351,11 @@ func TestIntervalTreeRandom(t *testing.T) { require.NotEmptyf(t, ivt.Stab(NewInt64Point(v)), "expected %v stab non-zero for [%+v)", v, xy) require.Truef(t, ivt.Intersects(NewInt64Point(v)), "did not get %d as expected for [%+v)", v, xy) } - assert.Truef(t, ivt.Delete(NewInt64Interval(ab.x, ab.y)), "did not delete %v as expected", ab) + ivl := NewInt64Interval(ab.x, ab.y) + iv := ivt.Find(ivl) + assert.NotNilf(t, iv, "expected find non-nil on %v", ab) + assert.Equalf(t, ivl, iv.Ivl, "find did not get matched interval %v", ab) + assert.Truef(t, ivt.Delete(ivl), "did not delete %v as expected", ab) delete(ivs, ab) } From 6fc9c8af419e4e57778fb9e07d158be93eb06bd6 Mon Sep 17 00:00:00 2001 From: Nont Date: Mon, 28 Apr 2025 21:29:08 -0500 Subject: [PATCH 0119/1068] [Antithesis] Fix lint and rename Dockerfile Signed-off-by: Nont --- tests/antithesis/README.md | 2 +- .../{Dockerfile.client => Dockerfile} | 0 .../test-template/entrypoint/entrypoint.go | 18 +++++++++++++++++- .../serial_driver_delete_keys.go | 19 ++++++++++++++++++- 4 files changed, 36 insertions(+), 3 deletions(-) rename tests/antithesis/test-template/{Dockerfile.client => Dockerfile} (100%) diff --git a/tests/antithesis/README.md b/tests/antithesis/README.md index 1c75e39372bf..c25b23fc3fa7 100644 --- a/tests/antithesis/README.md +++ b/tests/antithesis/README.md @@ -7,7 +7,7 @@ This directory enables integration of Antithesis with etcd. There are 4 containe Run this command from the `antithesis/test-template` directory: ```bash -docker build . -f Dockerfile.client -t etcd-client:latest +docker build . -f Dockerfile -t etcd-client:latest ``` ### 2. (Optional) Check the Image Locally diff --git a/tests/antithesis/test-template/Dockerfile.client b/tests/antithesis/test-template/Dockerfile similarity index 100% rename from tests/antithesis/test-template/Dockerfile.client rename to tests/antithesis/test-template/Dockerfile diff --git a/tests/antithesis/test-template/entrypoint/entrypoint.go b/tests/antithesis/test-template/entrypoint/entrypoint.go index a59783d023f2..f95c276c2eea 100644 --- a/tests/antithesis/test-template/entrypoint/entrypoint.go +++ b/tests/antithesis/test-template/entrypoint/entrypoint.go @@ -1,3 +1,19 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build cgo && amd64 + package main import ( @@ -13,7 +29,7 @@ import ( // Sleep duration const SLEEP = 10 -// check health of all etcd nodes +// CheckHealth checks health of all etcd nodes func CheckHealth() bool { nodeOptions := []string{"etcd0", "etcd1", "etcd2"} diff --git a/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go b/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go index f9e274c39b10..918fe7d40cba 100644 --- a/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go +++ b/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go @@ -1,3 +1,19 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build cgo && amd64 + package main import ( @@ -102,4 +118,5 @@ func DeleteKeys() { func main() { DeleteKeys() -} \ No newline at end of file +} + From 6eb252a305afe050cbe189516a72112aeb4a7fa9 Mon Sep 17 00:00:00 2001 From: redwrasse Date: Mon, 28 Apr 2025 16:47:36 -0700 Subject: [PATCH 0120/1068] adt: more comprehensive tests for IntervalTree.Find Signed-off-by: redwrasse --- pkg/adt/interval_tree_test.go | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/pkg/adt/interval_tree_test.go b/pkg/adt/interval_tree_test.go index a8b14164629a..012e044e0e40 100644 --- a/pkg/adt/interval_tree_test.go +++ b/pkg/adt/interval_tree_test.go @@ -272,11 +272,31 @@ func TestIntervalTreeDelete(t *testing.T) { func TestIntervalTreeFind(t *testing.T) { ivt := NewIntervalTree() ivl1 := NewInt64Interval(3, 6) - assert.Nilf(t, ivt.Find(ivl1), "find expected nil on empty tree") - ivt.Insert(ivl1, 123) - assert.Equalf(t, ivl1, ivt.Find(ivl1).Ivl, "find expected to return exact-matched interval") + val := 123 + assert.Nilf(t, ivt.Find(ivl1), "find for %v expected nil on empty tree", ivl1) + // insert interval [3, 6) into tree + ivt.Insert(ivl1, val) + // check cases of expected find matches and non-matches + assert.NotNilf(t, ivt.Find(ivl1), "find expected not-nil on exact-matched interval %v", ivl1) + assert.Equalf(t, ivl1, ivt.Find(ivl1).Ivl, "find expected to return exact-matched interval %v", ivl1) ivl2 := NewInt64Interval(3, 7) - assert.Nilf(t, ivt.Find(ivl2), "find expected nil on single-matched endpoint") + assert.Nilf(t, ivt.Find(ivl2), "find expected nil on matched start, different end %v", ivl2) + ivl3 := NewInt64Interval(2, 6) + assert.Nilf(t, ivt.Find(ivl3), "find expected nil on different start, matched end %v", ivl3) + ivl4 := NewInt64Interval(10, 20) + assert.Nilf(t, ivt.Find(ivl4), "find expected nil on different start, different end %v", ivl4) + // insert the additional intervals into the tree, and check they can each be found. + ivls := []Interval{ivl2, ivl3, ivl4} + for _, ivl := range ivls { + ivt.Insert(ivl, val) + assert.NotNilf(t, ivt.Find(ivl), "find expected not-nil on exact-matched interval %v", ivl) + assert.Equalf(t, ivl, ivt.Find(ivl).Ivl, "find expected to return exact-matched interval %v", ivl) + } + // check additional intervals no longer found after deletion + for _, ivl := range ivls { + assert.Truef(t, ivt.Delete(ivl), "expected successful delete on %v", ivl) + assert.Nilf(t, ivt.Find(ivl), "find expected nil after deleted interval %v", ivl) + } } func TestIntervalTreeIntersects(t *testing.T) { @@ -357,6 +377,8 @@ func TestIntervalTreeRandom(t *testing.T) { assert.Equalf(t, ivl, iv.Ivl, "find did not get matched interval %v", ab) assert.Truef(t, ivt.Delete(ivl), "did not delete %v as expected", ab) delete(ivs, ab) + ivAfterDel := ivt.Find(ivl) + assert.Nilf(t, ivAfterDel, "expected find nil after deletion on %v", ab) } assert.Equalf(t, 0, ivt.Len(), "got ivt.Len() = %v, expected 0", ivt.Len()) From e9fb0230c802557a538fdc387e2b38047d95046c Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 26 Apr 2025 18:06:36 +0200 Subject: [PATCH 0121/1068] Extract applier options to simplify passing arguments Signed-off-by: Marek Siarkowicz --- server/etcdserver/apply/apply.go | 129 +++++++++---------- server/etcdserver/apply/apply_auth_test.go | 24 ++-- server/etcdserver/apply/uber_applier.go | 52 ++------ server/etcdserver/apply/uber_applier_test.go | 31 ++--- server/etcdserver/server.go | 18 ++- 5 files changed, 112 insertions(+), 142 deletions(-) diff --git a/server/etcdserver/apply/apply.go b/server/etcdserver/apply/apply.go index 661760880bd0..71b747bf755d 100644 --- a/server/etcdserver/apply/apply.go +++ b/server/etcdserver/apply/apply.go @@ -16,6 +16,7 @@ package apply import ( "context" + "time" "github.com/coreos/go-semver/semver" "github.com/gogo/protobuf/proto" @@ -104,47 +105,33 @@ type applierV3 interface { RoleList(ua *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error) } +type ApplierOptions struct { + Logger *zap.Logger + KV mvcc.KV + AlarmStore *v3alarm.AlarmStore + AuthStore auth.AuthStore + Lessor lease.Lessor + Cluster *membership.RaftCluster + RaftStatus RaftStatusGetter + SnapshotServer SnapshotServer + ConsistentIndex cindex.ConsistentIndexer + TxnModeWriteWithSharedBuffer bool + Backend backend.Backend + QuotaBackendBytesCfg int64 + WarningApplyDuration time.Duration +} + type SnapshotServer interface { ForceSnapshot() } type applierV3backend struct { - lg *zap.Logger - kv mvcc.KV - alarmStore *v3alarm.AlarmStore - authStore auth.AuthStore - lessor lease.Lessor - cluster *membership.RaftCluster - raftStatus RaftStatusGetter - snapshotServer SnapshotServer - consistentIndex cindex.ConsistentIndexer - - txnModeWriteWithSharedBuffer bool -} - -func newApplierV3Backend( - lg *zap.Logger, - kv mvcc.KV, - alarmStore *v3alarm.AlarmStore, - authStore auth.AuthStore, - lessor lease.Lessor, - cluster *membership.RaftCluster, - raftStatus RaftStatusGetter, - snapshotServer SnapshotServer, - consistentIndex cindex.ConsistentIndexer, - txnModeWriteWithSharedBuffer bool, -) applierV3 { + options ApplierOptions +} + +func newApplierV3Backend(opts ApplierOptions) applierV3 { return &applierV3backend{ - lg: lg, - kv: kv, - alarmStore: alarmStore, - authStore: authStore, - lessor: lessor, - cluster: cluster, - raftStatus: raftStatus, - snapshotServer: snapshotServer, - consistentIndex: consistentIndex, - txnModeWriteWithSharedBuffer: txnModeWriteWithSharedBuffer, + options: opts, } } @@ -153,41 +140,41 @@ func (a *applierV3backend) Apply(r *pb.InternalRaftRequest, applyFunc applyFunc) } func (a *applierV3backend) Put(p *pb.PutRequest) (resp *pb.PutResponse, trace *traceutil.Trace, err error) { - return mvcctxn.Put(context.TODO(), a.lg, a.lessor, a.kv, p) + return mvcctxn.Put(context.TODO(), a.options.Logger, a.options.Lessor, a.options.KV, p) } func (a *applierV3backend) DeleteRange(dr *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, *traceutil.Trace, error) { - return mvcctxn.DeleteRange(context.TODO(), a.lg, a.kv, dr) + return mvcctxn.DeleteRange(context.TODO(), a.options.Logger, a.options.KV, dr) } func (a *applierV3backend) Range(r *pb.RangeRequest) (*pb.RangeResponse, *traceutil.Trace, error) { - return mvcctxn.Range(context.TODO(), a.lg, a.kv, r) + return mvcctxn.Range(context.TODO(), a.options.Logger, a.options.KV, r) } func (a *applierV3backend) Txn(rt *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) { - return mvcctxn.Txn(context.TODO(), a.lg, rt, a.txnModeWriteWithSharedBuffer, a.kv, a.lessor) + return mvcctxn.Txn(context.TODO(), a.options.Logger, rt, a.options.TxnModeWriteWithSharedBuffer, a.options.KV, a.options.Lessor) } func (a *applierV3backend) Compaction(compaction *pb.CompactionRequest) (*pb.CompactionResponse, <-chan struct{}, *traceutil.Trace, error) { resp := &pb.CompactionResponse{} resp.Header = &pb.ResponseHeader{} trace := traceutil.New("compact", - a.lg, + a.options.Logger, traceutil.Field{Key: "revision", Value: compaction.Revision}, ) - ch, err := a.kv.Compact(trace, compaction.Revision) + ch, err := a.options.KV.Compact(trace, compaction.Revision) if err != nil { return nil, ch, nil, err } // get the current revision. which key to get is not important. - rr, _ := a.kv.Range(context.TODO(), []byte("compaction"), nil, mvcc.RangeOptions{}) + rr, _ := a.options.KV.Range(context.TODO(), []byte("compaction"), nil, mvcc.RangeOptions{}) resp.Header.Revision = rr.Rev return resp, ch, trace, err } func (a *applierV3backend) LeaseGrant(lc *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error) { - l, err := a.lessor.Grant(lease.LeaseID(lc.ID), lc.TTL) + l, err := a.options.Lessor.Grant(lease.LeaseID(lc.ID), lc.TTL) resp := &pb.LeaseGrantResponse{} if err == nil { resp.ID = int64(l.ID) @@ -198,13 +185,13 @@ func (a *applierV3backend) LeaseGrant(lc *pb.LeaseGrantRequest) (*pb.LeaseGrantR } func (a *applierV3backend) LeaseRevoke(lc *pb.LeaseRevokeRequest) (*pb.LeaseRevokeResponse, error) { - err := a.lessor.Revoke(lease.LeaseID(lc.ID)) + err := a.options.Lessor.Revoke(lease.LeaseID(lc.ID)) return &pb.LeaseRevokeResponse{Header: a.newHeader()}, err } func (a *applierV3backend) LeaseCheckpoint(lc *pb.LeaseCheckpointRequest) (*pb.LeaseCheckpointResponse, error) { for _, c := range lc.Checkpoints { - err := a.lessor.Checkpoint(lease.LeaseID(c.ID), c.Remaining_TTL) + err := a.options.Lessor.Checkpoint(lease.LeaseID(c.ID), c.Remaining_TTL) if err != nil { return &pb.LeaseCheckpointResponse{Header: a.newHeader()}, err } @@ -217,19 +204,19 @@ func (a *applierV3backend) Alarm(ar *pb.AlarmRequest) (*pb.AlarmResponse, error) switch ar.Action { case pb.AlarmRequest_GET: - resp.Alarms = a.alarmStore.Get(ar.Alarm) + resp.Alarms = a.options.AlarmStore.Get(ar.Alarm) case pb.AlarmRequest_ACTIVATE: if ar.Alarm == pb.AlarmType_NONE { break } - m := a.alarmStore.Activate(types.ID(ar.MemberID), ar.Alarm) + m := a.options.AlarmStore.Activate(types.ID(ar.MemberID), ar.Alarm) if m == nil { break } resp.Alarms = append(resp.Alarms, m) alarms.WithLabelValues(types.ID(ar.MemberID).String(), m.Alarm.String()).Inc() case pb.AlarmRequest_DEACTIVATE: - m := a.alarmStore.Deactivate(types.ID(ar.MemberID), ar.Alarm) + m := a.options.AlarmStore.Deactivate(types.ID(ar.MemberID), ar.Alarm) if m == nil { break } @@ -266,7 +253,7 @@ func (a *applierV3Capped) LeaseGrant(_ *pb.LeaseGrantRequest) (*pb.LeaseGrantRes } func (a *applierV3backend) AuthEnable() (*pb.AuthEnableResponse, error) { - err := a.authStore.AuthEnable() + err := a.options.AuthStore.AuthEnable() if err != nil { return nil, err } @@ -274,19 +261,19 @@ func (a *applierV3backend) AuthEnable() (*pb.AuthEnableResponse, error) { } func (a *applierV3backend) AuthDisable() (*pb.AuthDisableResponse, error) { - a.authStore.AuthDisable() + a.options.AuthStore.AuthDisable() return &pb.AuthDisableResponse{Header: a.newHeader()}, nil } func (a *applierV3backend) AuthStatus() (*pb.AuthStatusResponse, error) { - enabled := a.authStore.IsAuthEnabled() - authRevision := a.authStore.Revision() + enabled := a.options.AuthStore.IsAuthEnabled() + authRevision := a.options.AuthStore.Revision() return &pb.AuthStatusResponse{Header: a.newHeader(), Enabled: enabled, AuthRevision: authRevision}, nil } func (a *applierV3backend) Authenticate(r *pb.InternalAuthenticateRequest) (*pb.AuthenticateResponse, error) { - ctx := context.WithValue(context.WithValue(context.Background(), auth.AuthenticateParamIndex{}, a.consistentIndex.ConsistentIndex()), auth.AuthenticateParamSimpleTokenPrefix{}, r.SimpleToken) - resp, err := a.authStore.Authenticate(ctx, r.Name, r.Password) + ctx := context.WithValue(context.WithValue(context.Background(), auth.AuthenticateParamIndex{}, a.options.ConsistentIndex.ConsistentIndex()), auth.AuthenticateParamSimpleTokenPrefix{}, r.SimpleToken) + resp, err := a.options.AuthStore.Authenticate(ctx, r.Name, r.Password) if resp != nil { resp.Header = a.newHeader() } @@ -294,7 +281,7 @@ func (a *applierV3backend) Authenticate(r *pb.InternalAuthenticateRequest) (*pb. } func (a *applierV3backend) UserAdd(r *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse, error) { - resp, err := a.authStore.UserAdd(r) + resp, err := a.options.AuthStore.UserAdd(r) if resp != nil { resp.Header = a.newHeader() } @@ -302,7 +289,7 @@ func (a *applierV3backend) UserAdd(r *pb.AuthUserAddRequest) (*pb.AuthUserAddRes } func (a *applierV3backend) UserDelete(r *pb.AuthUserDeleteRequest) (*pb.AuthUserDeleteResponse, error) { - resp, err := a.authStore.UserDelete(r) + resp, err := a.options.AuthStore.UserDelete(r) if resp != nil { resp.Header = a.newHeader() } @@ -310,7 +297,7 @@ func (a *applierV3backend) UserDelete(r *pb.AuthUserDeleteRequest) (*pb.AuthUser } func (a *applierV3backend) UserChangePassword(r *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error) { - resp, err := a.authStore.UserChangePassword(r) + resp, err := a.options.AuthStore.UserChangePassword(r) if resp != nil { resp.Header = a.newHeader() } @@ -318,7 +305,7 @@ func (a *applierV3backend) UserChangePassword(r *pb.AuthUserChangePasswordReques } func (a *applierV3backend) UserGrantRole(r *pb.AuthUserGrantRoleRequest) (*pb.AuthUserGrantRoleResponse, error) { - resp, err := a.authStore.UserGrantRole(r) + resp, err := a.options.AuthStore.UserGrantRole(r) if resp != nil { resp.Header = a.newHeader() } @@ -326,7 +313,7 @@ func (a *applierV3backend) UserGrantRole(r *pb.AuthUserGrantRoleRequest) (*pb.Au } func (a *applierV3backend) UserGet(r *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error) { - resp, err := a.authStore.UserGet(r) + resp, err := a.options.AuthStore.UserGet(r) if resp != nil { resp.Header = a.newHeader() } @@ -334,7 +321,7 @@ func (a *applierV3backend) UserGet(r *pb.AuthUserGetRequest) (*pb.AuthUserGetRes } func (a *applierV3backend) UserRevokeRole(r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error) { - resp, err := a.authStore.UserRevokeRole(r) + resp, err := a.options.AuthStore.UserRevokeRole(r) if resp != nil { resp.Header = a.newHeader() } @@ -342,7 +329,7 @@ func (a *applierV3backend) UserRevokeRole(r *pb.AuthUserRevokeRoleRequest) (*pb. } func (a *applierV3backend) RoleAdd(r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error) { - resp, err := a.authStore.RoleAdd(r) + resp, err := a.options.AuthStore.RoleAdd(r) if resp != nil { resp.Header = a.newHeader() } @@ -350,7 +337,7 @@ func (a *applierV3backend) RoleAdd(r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddRes } func (a *applierV3backend) RoleGrantPermission(r *pb.AuthRoleGrantPermissionRequest) (*pb.AuthRoleGrantPermissionResponse, error) { - resp, err := a.authStore.RoleGrantPermission(r) + resp, err := a.options.AuthStore.RoleGrantPermission(r) if resp != nil { resp.Header = a.newHeader() } @@ -358,7 +345,7 @@ func (a *applierV3backend) RoleGrantPermission(r *pb.AuthRoleGrantPermissionRequ } func (a *applierV3backend) RoleGet(r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error) { - resp, err := a.authStore.RoleGet(r) + resp, err := a.options.AuthStore.RoleGet(r) if resp != nil { resp.Header = a.newHeader() } @@ -366,7 +353,7 @@ func (a *applierV3backend) RoleGet(r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetRes } func (a *applierV3backend) RoleRevokePermission(r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error) { - resp, err := a.authStore.RoleRevokePermission(r) + resp, err := a.options.AuthStore.RoleRevokePermission(r) if resp != nil { resp.Header = a.newHeader() } @@ -374,7 +361,7 @@ func (a *applierV3backend) RoleRevokePermission(r *pb.AuthRoleRevokePermissionRe } func (a *applierV3backend) RoleDelete(r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error) { - resp, err := a.authStore.RoleDelete(r) + resp, err := a.options.AuthStore.RoleDelete(r) if resp != nil { resp.Header = a.newHeader() } @@ -382,7 +369,7 @@ func (a *applierV3backend) RoleDelete(r *pb.AuthRoleDeleteRequest) (*pb.AuthRole } func (a *applierV3backend) UserList(r *pb.AuthUserListRequest) (*pb.AuthUserListResponse, error) { - resp, err := a.authStore.UserList(r) + resp, err := a.options.AuthStore.UserList(r) if resp != nil { resp.Header = a.newHeader() } @@ -390,7 +377,7 @@ func (a *applierV3backend) UserList(r *pb.AuthUserListRequest) (*pb.AuthUserList } func (a *applierV3backend) RoleList(r *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error) { - resp, err := a.authStore.RoleList(r) + resp, err := a.options.AuthStore.RoleList(r) if resp != nil { resp.Header = a.newHeader() } @@ -485,9 +472,9 @@ func (a *quotaApplierV3) LeaseGrant(lc *pb.LeaseGrantRequest) (*pb.LeaseGrantRes func (a *applierV3backend) newHeader() *pb.ResponseHeader { return &pb.ResponseHeader{ - ClusterId: uint64(a.cluster.ID()), - MemberId: uint64(a.raftStatus.MemberID()), - Revision: a.kv.Rev(), - RaftTerm: a.raftStatus.Term(), + ClusterId: uint64(a.options.Cluster.ID()), + MemberId: uint64(a.options.RaftStatus.MemberID()), + Revision: a.options.KV.Rev(), + RaftTerm: a.options.RaftStatus.Term(), } } diff --git a/server/etcdserver/apply/apply_auth_test.go b/server/etcdserver/apply/apply_auth_test.go index cbd1893266c5..356826db271b 100644 --- a/server/etcdserver/apply/apply_auth_test.go +++ b/server/etcdserver/apply/apply_auth_test.go @@ -98,18 +98,18 @@ func defaultAuthApplierV3(t *testing.T) *authApplierV3 { consistentIndex := cindex.NewConsistentIndex(be) return newAuthApplierV3( authStore, - newApplierV3Backend( - lg, - kv, - alarmStore, - authStore, - lessor, - cluster, - &fakeRaftStatusGetter{}, - &fakeSnapshotServer{}, - consistentIndex, - false, - ), + newApplierV3Backend(ApplierOptions{ + Logger: lg, + KV: kv, + AlarmStore: alarmStore, + ConsistentIndex: consistentIndex, + AuthStore: authStore, + Lessor: lessor, + Cluster: cluster, + RaftStatus: &fakeRaftStatusGetter{}, + SnapshotServer: &fakeSnapshotServer{}, + TxnModeWriteWithSharedBuffer: false, + }), lessor) } diff --git a/server/etcdserver/apply/uber_applier.go b/server/etcdserver/apply/uber_applier.go index ec7e2aae6632..3d68cfce01b6 100644 --- a/server/etcdserver/apply/uber_applier.go +++ b/server/etcdserver/apply/uber_applier.go @@ -21,13 +21,8 @@ import ( "go.uber.org/zap" pb "go.etcd.io/etcd/api/v3/etcdserverpb" - "go.etcd.io/etcd/server/v3/auth" - "go.etcd.io/etcd/server/v3/etcdserver/api/membership" "go.etcd.io/etcd/server/v3/etcdserver/api/v3alarm" - "go.etcd.io/etcd/server/v3/etcdserver/cindex" "go.etcd.io/etcd/server/v3/etcdserver/txn" - "go.etcd.io/etcd/server/v3/lease" - "go.etcd.io/etcd/server/v3/storage/backend" "go.etcd.io/etcd/server/v3/storage/mvcc" ) @@ -48,27 +43,13 @@ type uberApplier struct { applyV3base applierV3 } -func NewUberApplier( - lg *zap.Logger, - be backend.Backend, - kv mvcc.KV, - alarmStore *v3alarm.AlarmStore, - authStore auth.AuthStore, - lessor lease.Lessor, - cluster *membership.RaftCluster, - raftStatus RaftStatusGetter, - snapshotServer SnapshotServer, - consistentIndex cindex.ConsistentIndexer, - warningApplyDuration time.Duration, - txnModeWriteWithSharedBuffer bool, - quotaBackendBytesCfg int64, -) UberApplier { - applyV3base := newApplierV3(lg, be, kv, alarmStore, authStore, lessor, cluster, raftStatus, snapshotServer, consistentIndex, txnModeWriteWithSharedBuffer, quotaBackendBytesCfg) +func NewUberApplier(opts ApplierOptions) UberApplier { + applyV3base := newApplierV3(opts) ua := &uberApplier{ - lg: lg, - alarmStore: alarmStore, - warningApplyDuration: warningApplyDuration, + lg: opts.Logger, + alarmStore: opts.AlarmStore, + warningApplyDuration: opts.WarningApplyDuration, applyV3: applyV3base, applyV3base: applyV3base, } @@ -76,25 +57,12 @@ func NewUberApplier( return ua } -func newApplierV3( - lg *zap.Logger, - be backend.Backend, - kv mvcc.KV, - alarmStore *v3alarm.AlarmStore, - authStore auth.AuthStore, - lessor lease.Lessor, - cluster *membership.RaftCluster, - raftStatus RaftStatusGetter, - snapshotServer SnapshotServer, - consistentIndex cindex.ConsistentIndexer, - txnModeWriteWithSharedBuffer bool, - quotaBackendBytesCfg int64, -) applierV3 { - applierBackend := newApplierV3Backend(lg, kv, alarmStore, authStore, lessor, cluster, raftStatus, snapshotServer, consistentIndex, txnModeWriteWithSharedBuffer) +func newApplierV3(opts ApplierOptions) applierV3 { + applierBackend := newApplierV3Backend(opts) return newAuthApplierV3( - authStore, - newQuotaApplierV3(lg, quotaBackendBytesCfg, be, applierBackend), - lessor, + opts.AuthStore, + newQuotaApplierV3(opts.Logger, opts.QuotaBackendBytesCfg, opts.Backend, applierBackend), + opts.Lessor, ) } diff --git a/server/etcdserver/apply/uber_applier_test.go b/server/etcdserver/apply/uber_applier_test.go index 086db23c6cfd..b915e6c20258 100644 --- a/server/etcdserver/apply/uber_applier_test.go +++ b/server/etcdserver/apply/uber_applier_test.go @@ -60,21 +60,22 @@ func defaultUberApplier(t *testing.T) UberApplier { bcrypt.DefaultCost, ) consistentIndex := cindex.NewConsistentIndex(be) - return NewUberApplier( - lg, - be, - kv, - alarmStore, - authStore, - lessor, - cluster, - &fakeRaftStatusGetter{}, - &fakeSnapshotServer{}, - consistentIndex, - 1*time.Hour, - false, - 16*1024*1024, // 16MB - ) + opts := ApplierOptions{ + Logger: lg, + KV: kv, + AlarmStore: alarmStore, + AuthStore: authStore, + Lessor: lessor, + Cluster: cluster, + RaftStatus: &fakeRaftStatusGetter{}, + SnapshotServer: &fakeSnapshotServer{}, + ConsistentIndex: consistentIndex, + TxnModeWriteWithSharedBuffer: false, + Backend: be, + QuotaBackendBytesCfg: 16 * 1024 * 1024, // 16MB + WarningApplyDuration: time.Hour, + } + return NewUberApplier(opts) } // TestUberApplier_Alarm_Corrupt tests the applier returns ErrCorrupt after alarm CORRUPT is activated diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index 8f43b54f1470..4f4d5eb8c79b 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -1166,8 +1166,22 @@ func (s *EtcdServer) applySnapshot(ep *etcdProgress, toApply *toApply) { } func (s *EtcdServer) NewUberApplier() apply.UberApplier { - return apply.NewUberApplier(s.lg, s.be, s.KV(), s.alarmStore, s.authStore, s.lessor, s.cluster, s, s, s.consistIndex, - s.Cfg.WarningApplyDuration, s.Cfg.ServerFeatureGate.Enabled(features.TxnModeWriteWithSharedBuffer), s.Cfg.QuotaBackendBytes) + opts := apply.ApplierOptions{ + Logger: s.lg, + KV: s.KV(), + AlarmStore: s.alarmStore, + AuthStore: s.authStore, + Lessor: s.lessor, + Cluster: s.cluster, + RaftStatus: s, + SnapshotServer: s, + ConsistentIndex: s.consistIndex, + TxnModeWriteWithSharedBuffer: s.Cfg.ServerFeatureGate.Enabled(features.TxnModeWriteWithSharedBuffer), + Backend: s.be, + QuotaBackendBytesCfg: s.Cfg.QuotaBackendBytes, + WarningApplyDuration: s.Cfg.WarningApplyDuration, + } + return apply.NewUberApplier(opts) } func verifySnapshotIndex(snapshot raftpb.Snapshot, cindex uint64) { From aa7b4dfa5b0f54de5c96841afa594eccb850a803 Mon Sep 17 00:00:00 2001 From: amosehiguese Date: Tue, 15 Apr 2025 15:54:11 +0000 Subject: [PATCH 0122/1068] fix(server/etcdserver/api/v3compactor): fix flaky TestPeriodicHourly with retry mechanism This commit fixes the flaky TestPeriodicHourly test (issue #19499) and similar test cases by introducing an exponential backoff retry mechanism for waiting on actions rather than relying on a fixed timeout. The root cause of the flakiness was timing inconsistencies in CI environments, where actions sometimes take slightly longer than the expected 10ms timeout set when creating a compactable object. The new waitWithRetry function attempts to get the expected actions multiple times with exponentially increasing wait periods (10ms, 20ms, 40ms, etc.) before ultimately failing. The solution was verified by reproducing the issue with an artificial delay and stress-testing the fix with 1000 consecutive runs. The following test functions were updated to use the new retry mechanism: - TestPeriodicHourly - TestPeriodicMinutes - TestPeriodicPause - TestPeriodicSkipRevNotChange Fixes #19499 Signed-off-by: amosehiguese --- .../api/v3compactor/periodic_test.go | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/server/etcdserver/api/v3compactor/periodic_test.go b/server/etcdserver/api/v3compactor/periodic_test.go index 5604dabc5ef9..e8658f420fa2 100644 --- a/server/etcdserver/api/v3compactor/periodic_test.go +++ b/server/etcdserver/api/v3compactor/periodic_test.go @@ -16,6 +16,7 @@ package v3compactor import ( "errors" + "fmt" "reflect" "testing" "time" @@ -49,7 +50,7 @@ func TestPeriodicHourly(t *testing.T) { } // very first compaction - a, err := compactable.Wait(1) + a, err := waitWithRetry(t, compactable) if err != nil { t.Fatal(err) } @@ -67,7 +68,7 @@ func TestPeriodicHourly(t *testing.T) { fc.Advance(tb.getRetryInterval()) } - a, err = compactable.Wait(1) + a, err = waitWithRetry(t, compactable) if err != nil { t.Fatal(err) } @@ -100,7 +101,7 @@ func TestPeriodicMinutes(t *testing.T) { } // very first compaction - a, err := compactable.Wait(1) + a, err := waitWithRetry(t, compactable) if err != nil { t.Fatal(err) } @@ -117,7 +118,7 @@ func TestPeriodicMinutes(t *testing.T) { fc.Advance(tb.getRetryInterval()) } - a, err := compactable.Wait(1) + a, err := waitWithRetry(t, compactable) if err != nil { t.Fatal(err) } @@ -162,7 +163,7 @@ func TestPeriodicPause(t *testing.T) { fc.Advance(tb.getRetryInterval()) // T=3h6m - a, err := compactable.Wait(1) + a, err := waitWithRetry(t, compactable) if err != nil { t.Fatal(err) } @@ -197,7 +198,7 @@ func TestPeriodicSkipRevNotChange(t *testing.T) { } // very first compaction - a, err := compactable.Wait(1) + a, err := waitWithRetry(t, compactable) if err != nil { t.Fatal(err) } @@ -228,7 +229,7 @@ func TestPeriodicSkipRevNotChange(t *testing.T) { fc.Advance(tb.getRetryInterval()) } - a, err = compactable.Wait(1) + a, err = waitWithRetry(t, compactable) if err != nil { t.Fatal(err) } @@ -244,3 +245,23 @@ func waitOneAction(t *testing.T, r testutil.Recorder) { t.Errorf("expect 1 action, got %v instead", len(actions)) } } + +func waitWithRetry(t *testing.T, compactable *fakeCompactable) ([]testutil.Action, error) { + t.Helper() + + var lastErr error + var actions []testutil.Action + + expectedActions, maxRetries := 1, 5 + for retry := 0; retry < maxRetries; retry++ { + actions, lastErr = compactable.Wait(expectedActions) + if lastErr == nil || len(actions) >= expectedActions { + return actions, nil + } + // Exponential backoff + backoffTime := time.Duration(10*(1< Date: Mon, 28 Apr 2025 18:10:35 +0000 Subject: [PATCH 0123/1068] build(deps): bump github/codeql-action from 3.28.15 to 3.28.16 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.15 to 3.28.16. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/45775bd8235c68ba998cffa5171334d58593da47...28deaeda66b76a05916b6923827895f2b14ab387) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.28.16 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 7dd8bac3ea24..996bd149e3b8 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 + uses: github/codeql-action/init@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 + uses: github/codeql-action/autobuild@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 + uses: github/codeql-action/analyze@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 5c78c9f18978..2cf1c2344aea 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 + uses: github/codeql-action/upload-sarif@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 with: sarif_file: results.sarif From c3016d355f12f0861b8227b39804a36d211c8805 Mon Sep 17 00:00:00 2001 From: Nont Date: Thu, 24 Apr 2025 22:34:18 -0500 Subject: [PATCH 0124/1068] Consolidate to tests's go.mod Also adjust the dockerfile and create a Makefile. The dockerfile assumes project root as its build context. Signed-off-by: Nont --- .github/workflows/antithesis-test.yml | 4 +- bill-of-materials.json | 9 ++ tests/antithesis/Makefile | 5 ++ tests/antithesis/test-template/Dockerfile | 43 +++------ .../test-template/entrypoint/entrypoint.go | 5 +- .../test-template/entrypoint/go.mod | 30 ------- .../test-template/entrypoint/go.sum | 90 ------------------- .../test-template/go-delete-keys/go.mod | 28 ------ .../test-template/go-delete-keys/go.sum | 90 ------------------- .../serial_driver_delete_keys.go | 14 +-- tests/go.mod | 1 + tests/go.sum | 2 + 12 files changed, 40 insertions(+), 281 deletions(-) create mode 100644 tests/antithesis/Makefile delete mode 100644 tests/antithesis/test-template/entrypoint/go.mod delete mode 100644 tests/antithesis/test-template/entrypoint/go.sum delete mode 100644 tests/antithesis/test-template/go-delete-keys/go.mod delete mode 100644 tests/antithesis/test-template/go-delete-keys/go.sum diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index fd2ff48e4fb4..da8ee446e87b 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -75,8 +75,8 @@ jobs: - name: Build and push client image uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0 with: - context: ./tests/antithesis/test-template - file: ./tests/antithesis/test-template/Dockerfile.client + context: . + file: ./tests/antithesis/test-template/Dockerfile push: true tags: | ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:latest, diff --git a/bill-of-materials.json b/bill-of-materials.json index d2e68086ad07..42738da1851b 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -17,6 +17,15 @@ } ] }, + { + "project": "github.com/antithesishq/antithesis-sdk-go", + "licenses": [ + { + "type": "MIT License", + "confidence": 1 + } + ] + }, { "project": "github.com/beorn7/perks/quantile", "licenses": [ diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile new file mode 100644 index 000000000000..1627dc53ae68 --- /dev/null +++ b/tests/antithesis/Makefile @@ -0,0 +1,5 @@ +REPOSITORY_ROOT := $(shell git rev-parse --show-toplevel) + +.PHONY: antithesis-build-client-docker-image +antithesis-build-client-docker-image: + docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) -f $(REPOSITORY_ROOT)/tests/antithesis/test-template/Dockerfile $(REPOSITORY_ROOT) diff --git a/tests/antithesis/test-template/Dockerfile b/tests/antithesis/test-template/Dockerfile index 25998eefd668..27f526e9dfc7 100644 --- a/tests/antithesis/test-template/Dockerfile +++ b/tests/antithesis/test-template/Dockerfile @@ -1,35 +1,14 @@ -FROM ubuntu:latest +ARG GO_VERSION=1.24.2 +ARG ARCH=amd64 -# Install dependencies -RUN apt-get update -y && apt-get install -y pip wget +FROM golang:$GO_VERSION AS builder +WORKDIR /build +COPY . . -# GO: +WORKDIR /build/tests +RUN go build -o /opt/entrypoint -race ./antithesis/test-template/entrypoint/entrypoint.go +RUN go build -o /opt/serial_driver_delete_keys -race ./antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go -# Install go -RUN wget https://golang.org/dl/go1.22.5.linux-amd64.tar.gz -RUN tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz -ENV PATH=$PATH:/usr/local/go/bin - -# Set working directory -WORKDIR /opt/antithesis/entrypoint - -# Copy your entrypoint script -COPY ./entrypoint/go.mod ./go.mod -COPY ./entrypoint/go.sum ./go.sum -COPY ./entrypoint/entrypoint.go ./entrypoint.go - -# Run go mod tidy to ensure the dependencies are correct -RUN go mod tidy - -# Building go executable and putting it in Test Composer directory -RUN go build -o ./entrypoint -race - -# Copying go script and building an executable into Test Composer directory -WORKDIR /opt/antithesis/go-delete-keys - -COPY ./go-delete-keys/go.mod ./go.mod -COPY ./go-delete-keys/go.sum ./go.sum -COPY ./go-delete-keys/serial_driver_delete_keys.go ./serial_driver_delete_keys.go - -# Building go executable and putting it in Test Composer directory -RUN go build -o /opt/antithesis/test/v1/main/serial_driver_delete_keys -race \ No newline at end of file +FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:3d0f463de06b7ddff27684ec3bfd0b54a425149d0f8685308b1fdf297b0265e9 +COPY --from=builder /opt/entrypoint /opt/antithesis/entrypoint/entrypoint +COPY --from=builder /opt/serial_driver_delete_keys /opt/antithesis/test/v1/main/serial_driver_delete_keys diff --git a/tests/antithesis/test-template/entrypoint/entrypoint.go b/tests/antithesis/test-template/entrypoint/entrypoint.go index f95c276c2eea..cf2f46f75f28 100644 --- a/tests/antithesis/test-template/entrypoint/entrypoint.go +++ b/tests/antithesis/test-template/entrypoint/entrypoint.go @@ -46,8 +46,9 @@ func CheckHealth() bool { } defer func() { - if err := cli.Close(); err != nil { - fmt.Printf("Client [entrypoint]: error closing connection: %v\n", err) + cErr := cli.Close() + if cErr != nil { + fmt.Printf("Client [entrypoint]: error closing connection: %v\n", cErr) } }() diff --git a/tests/antithesis/test-template/entrypoint/go.mod b/tests/antithesis/test-template/entrypoint/go.mod deleted file mode 100644 index ed0393cbeb3e..000000000000 --- a/tests/antithesis/test-template/entrypoint/go.mod +++ /dev/null @@ -1,30 +0,0 @@ -module main - -go 1.24 - -toolchain go1.24.2 - -require ( - github.com/antithesishq/antithesis-sdk-go v0.4.3 - go.etcd.io/etcd/client/v3 v3.5.21 -) - -require ( - github.com/coreos/go-semver v0.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.3.2 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.4 // indirect - go.etcd.io/etcd/api/v3 v3.5.21 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.5.21 // indirect - go.uber.org/atomic v1.7.0 // indirect - go.uber.org/multierr v1.6.0 // indirect - go.uber.org/zap v1.17.0 // indirect - golang.org/x/net v0.38.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.23.0 // indirect - google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.33.0 // indirect -) diff --git a/tests/antithesis/test-template/entrypoint/go.sum b/tests/antithesis/test-template/entrypoint/go.sum deleted file mode 100644 index 5fdbc5360966..000000000000 --- a/tests/antithesis/test-template/entrypoint/go.sum +++ /dev/null @@ -1,90 +0,0 @@ -github.com/antithesishq/antithesis-sdk-go v0.4.3 h1:a2hGdDogClzHzFu20r1z0tzD6zwSWUipiaerAjZVP90= -github.com/antithesishq/antithesis-sdk-go v0.4.3/go.mod h1:IUpT2DPAKh6i/YhSbt6Gl3v2yvUZjmKncl7U91fup7E= -github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/etcd/api/v3 v3.5.21 h1:A6O2/JDb3tvHhiIz3xf9nJ7REHvtEFJJ3veW3FbCnS8= -go.etcd.io/etcd/api/v3 v3.5.21/go.mod h1:c3aH5wcvXv/9dqIw2Y810LDXJfhSYdHQ0vxmP3CCHVY= -go.etcd.io/etcd/client/pkg/v3 v3.5.21 h1:lPBu71Y7osQmzlflM9OfeIV2JlmpBjqBNlLtcoBqUTc= -go.etcd.io/etcd/client/pkg/v3 v3.5.21/go.mod h1:BgqT/IXPjK9NkeSDjbzwsHySX3yIle2+ndz28nVsjUs= -go.etcd.io/etcd/client/v3 v3.5.21 h1:T6b1Ow6fNjOLOtM0xSoKNQt1ASPCLWrF9XMHcH9pEyY= -go.etcd.io/etcd/client/v3 v3.5.21/go.mod h1:mFYy67IOqmbRf/kRUvsHixzo3iG+1OF2W2+jVIQRAnU= -go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d h1:VBu5YqKPv6XiJ199exd8Br+Aetz+o08F+PLMnwJQHAY= -google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= -google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/tests/antithesis/test-template/go-delete-keys/go.mod b/tests/antithesis/test-template/go-delete-keys/go.mod deleted file mode 100644 index 089d48370049..000000000000 --- a/tests/antithesis/test-template/go-delete-keys/go.mod +++ /dev/null @@ -1,28 +0,0 @@ -module main - -go 1.24 - -toolchain go1.24.2 - -require go.etcd.io/etcd/client/v3 v3.5.21 - -require ( - github.com/antithesishq/antithesis-sdk-go v0.4.3 - github.com/coreos/go-semver v0.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.3.2 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.4 // indirect - go.etcd.io/etcd/api/v3 v3.5.21 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.5.21 // indirect - go.uber.org/atomic v1.7.0 // indirect - go.uber.org/multierr v1.6.0 // indirect - go.uber.org/zap v1.17.0 // indirect - golang.org/x/net v0.38.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.23.0 // indirect - google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.33.0 // indirect -) diff --git a/tests/antithesis/test-template/go-delete-keys/go.sum b/tests/antithesis/test-template/go-delete-keys/go.sum deleted file mode 100644 index 5fdbc5360966..000000000000 --- a/tests/antithesis/test-template/go-delete-keys/go.sum +++ /dev/null @@ -1,90 +0,0 @@ -github.com/antithesishq/antithesis-sdk-go v0.4.3 h1:a2hGdDogClzHzFu20r1z0tzD6zwSWUipiaerAjZVP90= -github.com/antithesishq/antithesis-sdk-go v0.4.3/go.mod h1:IUpT2DPAKh6i/YhSbt6Gl3v2yvUZjmKncl7U91fup7E= -github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/etcd/api/v3 v3.5.21 h1:A6O2/JDb3tvHhiIz3xf9nJ7REHvtEFJJ3veW3FbCnS8= -go.etcd.io/etcd/api/v3 v3.5.21/go.mod h1:c3aH5wcvXv/9dqIw2Y810LDXJfhSYdHQ0vxmP3CCHVY= -go.etcd.io/etcd/client/pkg/v3 v3.5.21 h1:lPBu71Y7osQmzlflM9OfeIV2JlmpBjqBNlLtcoBqUTc= -go.etcd.io/etcd/client/pkg/v3 v3.5.21/go.mod h1:BgqT/IXPjK9NkeSDjbzwsHySX3yIle2+ndz28nVsjUs= -go.etcd.io/etcd/client/v3 v3.5.21 h1:T6b1Ow6fNjOLOtM0xSoKNQt1ASPCLWrF9XMHcH9pEyY= -go.etcd.io/etcd/client/v3 v3.5.21/go.mod h1:mFYy67IOqmbRf/kRUvsHixzo3iG+1OF2W2+jVIQRAnU= -go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d h1:VBu5YqKPv6XiJ199exd8Br+Aetz+o08F+PLMnwJQHAY= -google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= -google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go b/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go index 918fe7d40cba..4c6900624f80 100644 --- a/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go +++ b/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go @@ -24,13 +24,14 @@ import ( "github.com/antithesishq/antithesis-sdk-go/assert" "github.com/antithesishq/antithesis-sdk-go/random" + clientv3 "go.etcd.io/etcd/client/v3" ) func Connect() *clientv3.Client { // This function returns a client connection to an etcd node - hosts := [][]string{[]string{"etcd0:2379"}, []string{"etcd1:2379"}, []string{"etcd2:2379"}} + hosts := [][]string{{"etcd0:2379"}, {"etcd1:2379"}, {"etcd2:2379"}} host := random.RandomChoice(hosts) cli, err := clientv3.New(clientv3.Config{ Endpoints: host, @@ -39,7 +40,7 @@ func Connect() *clientv3.Client { if err != nil { log.Fatalf("Failed to connect to etcd: %v", err) // Antithesis Assertion: client should always be able to connect to an etcd host - assert.Unreachable("Client failed to connect to an etcd host", map[string]interface{}{"host": host, "error": err}) + assert.Unreachable("Client failed to connect to an etcd host", map[string]any{"host": host, "error": err}) os.Exit(1) } return cli @@ -61,7 +62,7 @@ func DeleteKeys() { resp, err := cli.Get(ctx, "", clientv3.WithPrefix()) // Antithesis Assertion: sometimes get with prefix requests are successful. A failed request is OK since we expect them to happen. - assert.Sometimes(err == nil, "Client can make successful get all requests", map[string]interface{}{"error": err}) + assert.Sometimes(err == nil, "Client can make successful get all requests", map[string]any{"error": err}) cli.Close() if err != nil { @@ -85,7 +86,7 @@ func DeleteKeys() { for _, k := range halfKeys { _, err := cli.Delete(ctx, k) // Antithesis Assertion: sometimes delete requests are successful. A failed request is OK since we expect them to happen. - assert.Sometimes(err == nil, "Client can make successful delete requests", map[string]interface{}{"error": err}) + assert.Sometimes(err == nil, "Client can make successful delete requests", map[string]any{"error": err}) if err != nil { log.Printf("Failed to delete key %s: %v", k, err) } else { @@ -102,13 +103,13 @@ func DeleteKeys() { for _, k := range deletedKeys { resp, err := cli.Get(ctx, k) // Antithesis Assertion: sometimes get requests are successful. A failed request is OK since we expect them to happen. - assert.Sometimes(err == nil, "Client can make successful get requests", map[string]interface{}{"error": err}) + assert.Sometimes(err == nil, "Client can make successful get requests", map[string]any{"error": err}) if err != nil { log.Printf("Client failed to get key %s: %v", k, err) continue } // Antithesis Assertion: if we deleted a key, we should not get a value - assert.Always(resp.Count == 0, "Key was deleted correctly", map[string]interface{}{"key": k}) + assert.Always(resp.Count == 0, "Key was deleted correctly", map[string]any{"key": k}) } cli.Close() @@ -119,4 +120,3 @@ func DeleteKeys() { func main() { DeleteKeys() } - diff --git a/tests/go.mod b/tests/go.mod index 9abf9ed65390..8f1919dddcd5 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -17,6 +17,7 @@ replace ( require ( github.com/anishathalye/porcupine v1.0.2 + github.com/antithesishq/antithesis-sdk-go v0.4.3 github.com/coreos/go-semver v0.3.1 github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 diff --git a/tests/go.sum b/tests/go.sum index f4cf97613d80..9b19106ab975 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -4,6 +4,8 @@ github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1o github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= github.com/anishathalye/porcupine v1.0.2 h1:cXMWjnN95KYsbZVTi9VmXj0ePs1w3ZJ82zWoXDy6WPE= github.com/anishathalye/porcupine v1.0.2/go.mod h1:WM0SsFjWNl2Y4BqHr/E/ll2yY1GY1jqn+W7Z/84Zoog= +github.com/antithesishq/antithesis-sdk-go v0.4.3 h1:a2hGdDogClzHzFu20r1z0tzD6zwSWUipiaerAjZVP90= +github.com/antithesishq/antithesis-sdk-go v0.4.3/go.mod h1:IUpT2DPAKh6i/YhSbt6Gl3v2yvUZjmKncl7U91fup7E= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= From 368e897214aabb5b48cd395c0de54449115d1c8a Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 29 Apr 2025 12:38:02 +0200 Subject: [PATCH 0125/1068] Fix antithesis docker file removing distroless image. As antithesis requires CGO we cannot compile binary staticly. Signed-off-by: Marek Siarkowicz --- tests/antithesis/Makefile | 2 +- tests/antithesis/README.md | 2 +- tests/antithesis/test-template/Dockerfile | 10 +++------- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 1627dc53ae68..47b4d13bf554 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -2,4 +2,4 @@ REPOSITORY_ROOT := $(shell git rev-parse --show-toplevel) .PHONY: antithesis-build-client-docker-image antithesis-build-client-docker-image: - docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) -f $(REPOSITORY_ROOT)/tests/antithesis/test-template/Dockerfile $(REPOSITORY_ROOT) + docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) -f $(REPOSITORY_ROOT)/tests/antithesis/test-template/Dockerfile $(REPOSITORY_ROOT) -t etcd-client:latest diff --git a/tests/antithesis/README.md b/tests/antithesis/README.md index c25b23fc3fa7..b16d52b17476 100644 --- a/tests/antithesis/README.md +++ b/tests/antithesis/README.md @@ -7,7 +7,7 @@ This directory enables integration of Antithesis with etcd. There are 4 containe Run this command from the `antithesis/test-template` directory: ```bash -docker build . -f Dockerfile -t etcd-client:latest +make antithesis-build-client-docker-image ``` ### 2. (Optional) Check the Image Locally diff --git a/tests/antithesis/test-template/Dockerfile b/tests/antithesis/test-template/Dockerfile index 27f526e9dfc7..53ad71958057 100644 --- a/tests/antithesis/test-template/Dockerfile +++ b/tests/antithesis/test-template/Dockerfile @@ -1,14 +1,10 @@ ARG GO_VERSION=1.24.2 ARG ARCH=amd64 -FROM golang:$GO_VERSION AS builder +FROM golang:$GO_VERSION WORKDIR /build COPY . . WORKDIR /build/tests -RUN go build -o /opt/entrypoint -race ./antithesis/test-template/entrypoint/entrypoint.go -RUN go build -o /opt/serial_driver_delete_keys -race ./antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go - -FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:3d0f463de06b7ddff27684ec3bfd0b54a425149d0f8685308b1fdf297b0265e9 -COPY --from=builder /opt/entrypoint /opt/antithesis/entrypoint/entrypoint -COPY --from=builder /opt/serial_driver_delete_keys /opt/antithesis/test/v1/main/serial_driver_delete_keys +RUN go build -o /opt/antithesis/entrypoint/entrypoint -race ./antithesis/test-template/entrypoint/entrypoint.go +RUN go build -o /opt/antithesis/test/v1/main/serial_driver_delete_keys -race ./antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go From 6a365a1beee229f43438cab781cda12368ed0e59 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 26 Apr 2025 16:50:30 +0200 Subject: [PATCH 0126/1068] Refactor checking put request Signed-off-by: Marek Siarkowicz --- server/etcdserver/txn/txn.go | 109 ++++++++++++++++++++--------------- 1 file changed, 61 insertions(+), 48 deletions(-) diff --git a/server/etcdserver/txn/txn.go b/server/etcdserver/txn/txn.go index 647f2f1b17b5..e1b25ebc7118 100644 --- a/server/etcdserver/txn/txn.go +++ b/server/etcdserver/txn/txn.go @@ -37,55 +37,40 @@ func Put(ctx context.Context, lg *zap.Logger, lessor lease.Lessor, kv mvcc.KV, p traceutil.Field{Key: "key", Value: string(p.Key)}, traceutil.Field{Key: "req_size", Value: p.Size()}, ) - leaseID := lease.LeaseID(p.Lease) - if leaseID != lease.NoLease { - if l := lessor.Lookup(leaseID); l == nil { - return nil, nil, lease.ErrLeaseNotFound - } + err = checkLease(lessor, p) + if err != nil { + return nil, trace, err } txnWrite := kv.Write(trace) defer txnWrite.End() - resp, err = put(ctx, txnWrite, p) - return resp, trace, err + prevKV, err := checkAndGetPrevKV(trace, txnWrite, p) + if err != nil { + return nil, trace, err + } + return put(ctx, txnWrite, p, prevKV), trace, nil } -func put(ctx context.Context, txnWrite mvcc.TxnWrite, p *pb.PutRequest) (resp *pb.PutResponse, err error) { +func put(ctx context.Context, txnWrite mvcc.TxnWrite, p *pb.PutRequest, prevKV *mvcc.RangeResult) *pb.PutResponse { trace := traceutil.Get(ctx) - resp = &pb.PutResponse{} + resp := &pb.PutResponse{} resp.Header = &pb.ResponseHeader{} val, leaseID := p.Value, lease.LeaseID(p.Lease) - var rr *mvcc.RangeResult - if p.IgnoreValue || p.IgnoreLease || p.PrevKv { - trace.StepWithFunction(func() { - rr, err = txnWrite.Range(context.TODO(), p.Key, nil, mvcc.RangeOptions{}) - }, "get previous kv pair") - - if err != nil { - return nil, err - } - } - if p.IgnoreValue || p.IgnoreLease { - if rr == nil || len(rr.KVs) == 0 { - // ignore_{lease,value} flag expects previous key-value pair - return nil, errors.ErrKeyNotFound - } - } if p.IgnoreValue { - val = rr.KVs[0].Value + val = prevKV.KVs[0].Value } if p.IgnoreLease { - leaseID = lease.LeaseID(rr.KVs[0].Lease) + leaseID = lease.LeaseID(prevKV.KVs[0].Lease) } if p.PrevKv { - if rr != nil && len(rr.KVs) != 0 { - resp.PrevKv = &rr.KVs[0] + if prevKV != nil && len(prevKV.KVs) != 0 { + resp.PrevKv = &prevKV.KVs[0] } } resp.Header.Revision = txnWrite.Put(p.Key, val, leaseID) trace.AddField(traceutil.Field{Key: "response_revision", Value: resp.Header.Revision}) - return resp, nil + return resp } func DeleteRange(ctx context.Context, lg *zap.Logger, kv mvcc.KV, dr *pb.DeleteRangeRequest) (resp *pb.DeleteRangeResponse, trace *traceutil.Trace, err error) { @@ -255,7 +240,7 @@ func Txn(ctx context.Context, lg *zap.Logger, rt *pb.TxnRequest, txnModeWriteWit if isWrite { trace.AddField(traceutil.Field{Key: "read_only", Value: false}) } - _, err = checkTxn(txnRead, rt, lessor, txnPath) + _, err = checkTxn(trace, txnRead, rt, lessor, txnPath) if err != nil { txnRead.End() return nil, nil, err @@ -362,10 +347,11 @@ func executeTxn(ctx context.Context, lg *zap.Logger, txnWrite mvcc.TxnWrite, rt traceutil.Field{Key: "req_type", Value: "put"}, traceutil.Field{Key: "key", Value: string(tv.RequestPut.Key)}, traceutil.Field{Key: "req_size", Value: tv.RequestPut.Size()}) - resp, err := put(ctx, txnWrite, tv.RequestPut) + prevKV, err := getPrevKV(trace, txnWrite, tv.RequestPut) if err != nil { - return 0, fmt.Errorf("applyTxn: failed Put: %w", err) + return 0, fmt.Errorf("applyTxn: failed to get prevKV on put: %w", err) } + resp := put(ctx, txnWrite, tv.RequestPut, prevKV) respi.(*pb.ResponseOp_ResponsePut).ResponsePut = resp trace.StopSubTrace() case *pb.RequestOp_RequestDeleteRange: @@ -390,25 +376,52 @@ func executeTxn(ctx context.Context, lg *zap.Logger, txnWrite mvcc.TxnWrite, rt return txns, nil } -func checkPut(rv mvcc.ReadView, lessor lease.Lessor, req *pb.PutRequest) error { - if req.IgnoreValue || req.IgnoreLease { - // expects previous key-value, error if not exist - rr, err := rv.Range(context.TODO(), req.Key, nil, mvcc.RangeOptions{}) - if err != nil { - return err - } - if rr == nil || len(rr.KVs) == 0 { - return errors.ErrKeyNotFound - } +func checkPut(trace *traceutil.Trace, txnWrite mvcc.ReadView, lessor lease.Lessor, p *pb.PutRequest) error { + err := checkLease(lessor, p) + if err != nil { + return err } - if lease.LeaseID(req.Lease) != lease.NoLease { - if l := lessor.Lookup(lease.LeaseID(req.Lease)); l == nil { + _, err = checkAndGetPrevKV(trace, txnWrite, p) + return err +} + +func checkLease(lessor lease.Lessor, p *pb.PutRequest) error { + leaseID := lease.LeaseID(p.Lease) + if leaseID != lease.NoLease { + if l := lessor.Lookup(leaseID); l == nil { return lease.ErrLeaseNotFound } } return nil } +func checkAndGetPrevKV(trace *traceutil.Trace, txnWrite mvcc.ReadView, p *pb.PutRequest) (prevKV *mvcc.RangeResult, err error) { + prevKV, err = getPrevKV(trace, txnWrite, p) + if err != nil { + return nil, err + } + if p.IgnoreValue || p.IgnoreLease { + if prevKV == nil || len(prevKV.KVs) == 0 { + // ignore_{lease,value} flag expects previous key-value pair + return nil, errors.ErrKeyNotFound + } + } + return prevKV, nil +} + +func getPrevKV(trace *traceutil.Trace, txnWrite mvcc.ReadView, p *pb.PutRequest) (prevKV *mvcc.RangeResult, err error) { + if p.IgnoreValue || p.IgnoreLease || p.PrevKv { + trace.StepWithFunction(func() { + prevKV, err = txnWrite.Range(context.TODO(), p.Key, nil, mvcc.RangeOptions{}) + }, "get previous kv pair") + + if err != nil { + return nil, err + } + } + return prevKV, nil +} + func checkRange(rv mvcc.ReadView, req *pb.RangeRequest) error { switch { case req.Revision == 0: @@ -421,7 +434,7 @@ func checkRange(rv mvcc.ReadView, req *pb.RangeRequest) error { return nil } -func checkTxn(rv mvcc.ReadView, rt *pb.TxnRequest, lessor lease.Lessor, txnPath []bool) (int, error) { +func checkTxn(trace *traceutil.Trace, rv mvcc.ReadView, rt *pb.TxnRequest, lessor lease.Lessor, txnPath []bool) (int, error) { txnCount := 0 reqs := rt.Success if !txnPath[0] { @@ -434,10 +447,10 @@ func checkTxn(rv mvcc.ReadView, rt *pb.TxnRequest, lessor lease.Lessor, txnPath case *pb.RequestOp_RequestRange: err = checkRange(rv, tv.RequestRange) case *pb.RequestOp_RequestPut: - err = checkPut(rv, lessor, tv.RequestPut) + err = checkPut(trace, rv, lessor, tv.RequestPut) case *pb.RequestOp_RequestDeleteRange: case *pb.RequestOp_RequestTxn: - txns, err = checkTxn(rv, tv.RequestTxn, lessor, txnPath[1:]) + txns, err = checkTxn(trace, rv, tv.RequestTxn, lessor, txnPath[1:]) txnCount += txns + 1 txnPath = txnPath[txns+1:] default: From 68dbfa8cecfb4c09c4d527984de55f9a238c4229 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Apr 2025 09:18:36 +0000 Subject: [PATCH 0127/1068] build(deps): bump docker/build-push-action from 6.15.0 to 6.16.0 Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.15.0 to 6.16.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/471d1dc4e07e5cdedd4c2171150001c434f0b7a4...14487ce63c7a62a4a324b0bfb37086795e31c6c1) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-version: 6.16.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index da8ee446e87b..a8c6ae5d96f9 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -63,7 +63,7 @@ jobs: password: ${{ secrets.ANTITHESIS_CONTAINER_REGISTRY_TOKEN }} - name: Build and push config image - uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0 + uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0 with: context: ./tests/antithesis file: ./tests/antithesis/Dockerfile.config @@ -73,7 +73,7 @@ jobs: ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:${{ github.sha }} - name: Build and push client image - uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0 + uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0 with: context: . file: ./tests/antithesis/test-template/Dockerfile From c84ffb0624d212ed0da6a63577ad374bdaff70e5 Mon Sep 17 00:00:00 2001 From: hwdef Date: Mon, 28 Apr 2025 16:25:30 +0800 Subject: [PATCH 0128/1068] update v3.6.0 roadmap Signed-off-by: hwdef --- Documentation/contributor-guide/roadmap.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/contributor-guide/roadmap.md b/Documentation/contributor-guide/roadmap.md index c036e2eb45c4..d443ea0a4f54 100644 --- a/Documentation/contributor-guide/roadmap.md +++ b/Documentation/contributor-guide/roadmap.md @@ -16,9 +16,9 @@ For a full list of tasks in `v3.6.0`, please see [milestone etcd-v3.6](https://g |--------------------------------------------------------------------------------------------------------------------|----------|-------------|--------------------------------------------------------------------------------------------------------------| | [Support downgrade](https://github.com/etcd-io/etcd/issues/11716) | priority/important-soon | In progress | etcd will support downgrade starting from 3.6.0. But it will also support offline downgrade from 3.5 to 3.4. | | [StoreV2 deprecation](https://github.com/etcd-io/etcd/issues/12913) | priority/important-soon | In progress | This task will be covered in both 3.6 and 3.7. | -| [Release raft 3.6.0](https://github.com/etcd-io/raft/issues/89) | priority/important-soon | Not started | etcd 3.6.0 will depends on raft 3.6.0 | -| [Release bbolt 1.4.0](https://github.com/etcd-io/bbolt/issues/553) | priority/important-soon | Not started | etcd 3.6.0 will depends on bbolt 1.4.0 | -| [Support /livez and /readyz endpoints](https://github.com/etcd-io/etcd/issues/16007) | priority/important-longterm | In progress | It provides clearer APIs, and can also work around the stalled writes issue | +| [Release raft 3.6.0](https://github.com/etcd-io/raft/issues/89) | priority/important-soon | Completed | etcd 3.6.0 will depends on raft 3.6.0 | +| [Release bbolt 1.4.0](https://github.com/etcd-io/bbolt/issues/553) | priority/important-soon | Completed | etcd 3.6.0 will depends on bbolt 1.4.0 | +| [Support /livez and /readyz endpoints](https://github.com/etcd-io/etcd/issues/16007) | priority/important-longterm | Completed | It provides clearer APIs, and can also work around the stalled writes issue | | [Bump gRPC](https://github.com/etcd-io/etcd/issues/16290) | priority/important-longterm | Completed | It isn't guaranteed to be resolved in 3.6, and might be postponed to 3.7 depending on the effort and risk. | | [Deprecate grpc-gateway or bump it](https://github.com/etcd-io/etcd/issues/14499) | priority/important-longterm | Completed | It isn't guaranteed to be resolved in 3.6, and might be postponed to 3.7 depending on the effort and risk. | | [bbolt: Add logger into bbolt](https://github.com/etcd-io/bbolt/issues/509) | priority/important-longterm | Completed | It's important to diagnose bbolt issues | From 6947e2c627b7d03f4f7476e12af7dd8633cf9410 Mon Sep 17 00:00:00 2001 From: Abdur Rehman Date: Wed, 30 Apr 2025 03:28:26 +0500 Subject: [PATCH 0129/1068] Use RecordingClient from robustness tests Signed-off-by: Abdur Rehman --- .../go-delete-keys/serial_driver_delete_keys.go | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go b/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go index 4c6900624f80..f2895b0d1cc9 100644 --- a/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go +++ b/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go @@ -26,20 +26,19 @@ import ( "github.com/antithesishq/antithesis-sdk-go/random" clientv3 "go.etcd.io/etcd/client/v3" + "go.etcd.io/etcd/tests/v3/robustness/client" + "go.etcd.io/etcd/tests/v3/robustness/identity" ) -func Connect() *clientv3.Client { +func Connect() *client.RecordingClient { // This function returns a client connection to an etcd node - hosts := [][]string{{"etcd0:2379"}, {"etcd1:2379"}, {"etcd2:2379"}} - host := random.RandomChoice(hosts) - cli, err := clientv3.New(clientv3.Config{ - Endpoints: host, - DialTimeout: 5 * time.Second, - }) + hosts := []string{"etcd0:2379", "etcd1:2379", "etcd2:2379"} + cli, err := client.NewRecordingClient(hosts, identity.NewIDProvider(), time.Now()) if err != nil { log.Fatalf("Failed to connect to etcd: %v", err) // Antithesis Assertion: client should always be able to connect to an etcd host + host := random.RandomChoice(hosts) assert.Unreachable("Client failed to connect to an etcd host", map[string]any{"host": host, "error": err}) os.Exit(1) } From ba62a9ed380e2ca91de163b579d1bd853ef91433 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 26 Apr 2025 18:47:52 +0200 Subject: [PATCH 0130/1068] Simplify apply by handling membership apply through the same applyV3 stack Signed-off-by: Marek Siarkowicz --- server/etcdserver/apply/apply.go | 43 ++++++++------------ server/etcdserver/apply/apply_auth.go | 5 ++- server/etcdserver/apply/apply_auth_test.go | 6 +-- server/etcdserver/apply/uber_applier.go | 34 ++++++++++++++-- server/etcdserver/apply/uber_applier_test.go | 16 ++++---- server/etcdserver/server.go | 39 +----------------- server/etcdserver/server_test.go | 2 +- 7 files changed, 62 insertions(+), 83 deletions(-) diff --git a/server/etcdserver/apply/apply.go b/server/etcdserver/apply/apply.go index 71b747bf755d..ff454973dccb 100644 --- a/server/etcdserver/apply/apply.go +++ b/server/etcdserver/apply/apply.go @@ -63,13 +63,13 @@ type Result struct { Trace *traceutil.Trace } -type applyFunc func(r *pb.InternalRaftRequest) *Result +type applyFunc func(*pb.InternalRaftRequest, membership.ShouldApplyV3) *Result // applierV3 is the interface for processing V3 raft messages type applierV3 interface { // Apply executes the generic portion of application logic for the current applier, but // delegates the actual execution to the applyFunc method. - Apply(r *pb.InternalRaftRequest, applyFunc applyFunc) *Result + Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3, applyFunc applyFunc) *Result Put(p *pb.PutRequest) (*pb.PutResponse, *traceutil.Trace, error) Range(r *pb.RangeRequest) (*pb.RangeResponse, *traceutil.Trace, error) @@ -103,6 +103,9 @@ type applierV3 interface { RoleDelete(ua *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error) UserList(ua *pb.AuthUserListRequest) (*pb.AuthUserListResponse, error) RoleList(ua *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error) + ClusterVersionSet(r *membershippb.ClusterVersionSetRequest, shouldApplyV3 membership.ShouldApplyV3) + ClusterMemberAttrSet(r *membershippb.ClusterMemberAttrSetRequest, shouldApplyV3 membership.ShouldApplyV3) + DowngradeInfoSet(r *membershippb.DowngradeInfoSetRequest, shouldApplyV3 membership.ShouldApplyV3) } type ApplierOptions struct { @@ -135,8 +138,8 @@ func newApplierV3Backend(opts ApplierOptions) applierV3 { } } -func (a *applierV3backend) Apply(r *pb.InternalRaftRequest, applyFunc applyFunc) *Result { - return applyFunc(r) +func (a *applierV3backend) Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3, applyFunc applyFunc) *Result { + return applyFunc(r, shouldApplyV3) } func (a *applierV3backend) Put(p *pb.PutRequest) (resp *pb.PutResponse, trace *traceutil.Trace, err error) { @@ -384,39 +387,25 @@ func (a *applierV3backend) RoleList(r *pb.AuthRoleListRequest) (*pb.AuthRoleList return resp, err } -type ApplierMembership struct { - lg *zap.Logger - cluster *membership.RaftCluster - snapshotServer SnapshotServer -} - -func NewApplierMembership(lg *zap.Logger, cluster *membership.RaftCluster, snapshotServer SnapshotServer) *ApplierMembership { - return &ApplierMembership{ - lg: lg, - cluster: cluster, - snapshotServer: snapshotServer, - } -} - -func (a *ApplierMembership) ClusterVersionSet(r *membershippb.ClusterVersionSetRequest, shouldApplyV3 membership.ShouldApplyV3) { - prevVersion := a.cluster.Version() +func (a *applierV3backend) ClusterVersionSet(r *membershippb.ClusterVersionSetRequest, shouldApplyV3 membership.ShouldApplyV3) { + prevVersion := a.options.Cluster.Version() newVersion := semver.Must(semver.NewVersion(r.Ver)) - a.cluster.SetVersion(newVersion, api.UpdateCapability, shouldApplyV3) + a.options.Cluster.SetVersion(newVersion, api.UpdateCapability, shouldApplyV3) // Force snapshot after cluster version downgrade. if prevVersion != nil && newVersion.LessThan(*prevVersion) { - lg := a.lg + lg := a.options.Logger if lg != nil { lg.Info("Cluster version downgrade detected, forcing snapshot", zap.String("prev-cluster-version", prevVersion.String()), zap.String("new-cluster-version", newVersion.String()), ) } - a.snapshotServer.ForceSnapshot() + a.options.SnapshotServer.ForceSnapshot() } } -func (a *ApplierMembership) ClusterMemberAttrSet(r *membershippb.ClusterMemberAttrSetRequest, shouldApplyV3 membership.ShouldApplyV3) { - a.cluster.UpdateAttributes( +func (a *applierV3backend) ClusterMemberAttrSet(r *membershippb.ClusterMemberAttrSetRequest, shouldApplyV3 membership.ShouldApplyV3) { + a.options.Cluster.UpdateAttributes( types.ID(r.Member_ID), membership.Attributes{ Name: r.MemberAttributes.Name, @@ -426,12 +415,12 @@ func (a *ApplierMembership) ClusterMemberAttrSet(r *membershippb.ClusterMemberAt ) } -func (a *ApplierMembership) DowngradeInfoSet(r *membershippb.DowngradeInfoSetRequest, shouldApplyV3 membership.ShouldApplyV3) { +func (a *applierV3backend) DowngradeInfoSet(r *membershippb.DowngradeInfoSetRequest, shouldApplyV3 membership.ShouldApplyV3) { d := version.DowngradeInfo{Enabled: false} if r.Enabled { d = version.DowngradeInfo{Enabled: true, TargetVersion: r.Ver} } - a.cluster.SetDowngradeInfo(&d, shouldApplyV3) + a.options.Cluster.SetDowngradeInfo(&d, shouldApplyV3) } type quotaApplierV3 struct { diff --git a/server/etcdserver/apply/apply_auth.go b/server/etcdserver/apply/apply_auth.go index 3922deebd012..d8fd2bca8d8c 100644 --- a/server/etcdserver/apply/apply_auth.go +++ b/server/etcdserver/apply/apply_auth.go @@ -20,6 +20,7 @@ import ( pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/pkg/v3/traceutil" "go.etcd.io/etcd/server/v3/auth" + "go.etcd.io/etcd/server/v3/etcdserver/api/membership" "go.etcd.io/etcd/server/v3/etcdserver/txn" "go.etcd.io/etcd/server/v3/lease" ) @@ -40,7 +41,7 @@ func newAuthApplierV3(as auth.AuthStore, base applierV3, lessor lease.Lessor) *a return &authApplierV3{applierV3: base, as: as, lessor: lessor} } -func (aa *authApplierV3) Apply(r *pb.InternalRaftRequest, applyFunc applyFunc) *Result { +func (aa *authApplierV3) Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3, applyFunc applyFunc) *Result { aa.mu.Lock() defer aa.mu.Unlock() if r.Header != nil { @@ -56,7 +57,7 @@ func (aa *authApplierV3) Apply(r *pb.InternalRaftRequest, applyFunc applyFunc) * return &Result{Err: err} } } - ret := aa.applierV3.Apply(r, applyFunc) + ret := aa.applierV3.Apply(r, shouldApplyV3, applyFunc) aa.authInfo.Username = "" aa.authInfo.Revision = 0 return ret diff --git a/server/etcdserver/apply/apply_auth_test.go b/server/etcdserver/apply/apply_auth_test.go index 356826db271b..fc87aaec886a 100644 --- a/server/etcdserver/apply/apply_auth_test.go +++ b/server/etcdserver/apply/apply_auth_test.go @@ -44,7 +44,7 @@ func dummyIndexWaiter(_ uint64) <-chan struct{} { return ch } -func dummyApplyFunc(_ *pb.InternalRaftRequest) *Result { +func dummyApplyFunc(_ *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3) *Result { return &Result{} } @@ -217,7 +217,7 @@ func TestAuthApplierV3_Apply(t *testing.T) { mustCreateRolesAndEnableAuth(t, authApplier) for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - result := authApplier.Apply(tc.request, dummyApplyFunc) + result := authApplier.Apply(tc.request, membership.ApplyBoth, dummyApplyFunc) require.Equalf(t, result, tc.expectResult, "Apply: got %v, expect: %v", result, tc.expectResult) }) } @@ -384,7 +384,7 @@ func TestAuthApplierV3_AdminPermission(t *testing.T) { if tc.adminPermissionNeeded { tc.request.Header = &pb.RequestHeader{Username: userReadOnly} } - result := authApplier.Apply(tc.request, dummyApplyFunc) + result := authApplier.Apply(tc.request, membership.ApplyBoth, dummyApplyFunc) require.Equalf(t, errors.Is(result.Err, auth.ErrPermissionDenied), tc.adminPermissionNeeded, "Admin permission needed") }) } diff --git a/server/etcdserver/apply/uber_applier.go b/server/etcdserver/apply/uber_applier.go index 3d68cfce01b6..2da2019d1901 100644 --- a/server/etcdserver/apply/uber_applier.go +++ b/server/etcdserver/apply/uber_applier.go @@ -21,13 +21,14 @@ import ( "go.uber.org/zap" pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/server/v3/etcdserver/api/membership" "go.etcd.io/etcd/server/v3/etcdserver/api/v3alarm" "go.etcd.io/etcd/server/v3/etcdserver/txn" "go.etcd.io/etcd/server/v3/storage/mvcc" ) type UberApplier interface { - Apply(r *pb.InternalRaftRequest) *Result + Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3) *Result } type uberApplier struct { @@ -78,18 +79,18 @@ func (a *uberApplier) restoreAlarms() { } } -func (a *uberApplier) Apply(r *pb.InternalRaftRequest) *Result { +func (a *uberApplier) Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3) *Result { // We first execute chain of Apply() calls down the hierarchy: // (i.e. CorruptApplier -> CappedApplier -> Auth -> Quota -> Backend), // then dispatch() unpacks the request to a specific method (like Put), // that gets executed down the hierarchy again: // i.e. CorruptApplier.Put(CappedApplier.Put(...(BackendApplier.Put(...)))). - return a.applyV3.Apply(r, a.dispatch) + return a.applyV3.Apply(r, shouldApplyV3, a.dispatch) } // dispatch translates the request (r) into appropriate call (like Put) on // the underlying applyV3 object. -func (a *uberApplier) dispatch(r *pb.InternalRaftRequest) *Result { +func (a *uberApplier) dispatch(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3) *Result { op := "unknown" ar := &Result{} defer func(start time.Time) { @@ -101,6 +102,31 @@ func (a *uberApplier) dispatch(r *pb.InternalRaftRequest) *Result { } }(time.Now()) + switch { + case r.ClusterVersionSet != nil: + op = "ClusterVersionSet" // Implemented in 3.5.x + a.applyV3.ClusterVersionSet(r.ClusterVersionSet, shouldApplyV3) + return ar + case r.ClusterMemberAttrSet != nil: + op = "ClusterMemberAttrSet" // Implemented in 3.5.x + a.applyV3.ClusterMemberAttrSet(r.ClusterMemberAttrSet, shouldApplyV3) + return ar + case r.DowngradeInfoSet != nil: + op = "DowngradeInfoSet" // Implemented in 3.5.x + a.applyV3.DowngradeInfoSet(r.DowngradeInfoSet, shouldApplyV3) + return ar + case r.DowngradeVersionTest != nil: + op = "DowngradeVersionTest" // Implemented in 3.6 for test only + // do nothing, we are just to ensure etcdserver don't panic in case + // users(test cases) intentionally inject DowngradeVersionTestRequest + // into the WAL files. + return ar + default: + } + if !shouldApplyV3 { + return nil + } + switch { case r.Range != nil: op = "Range" diff --git a/server/etcdserver/apply/uber_applier_test.go b/server/etcdserver/apply/uber_applier_test.go index b915e6c20258..b2e321edbeb5 100644 --- a/server/etcdserver/apply/uber_applier_test.go +++ b/server/etcdserver/apply/uber_applier_test.go @@ -130,13 +130,13 @@ func TestUberApplier_Alarm_Corrupt(t *testing.T) { MemberID: memberID, Alarm: pb.AlarmType_CORRUPT, }, - }) + }, membership.ApplyBoth) require.NotNil(t, result) require.NoError(t, result.Err) for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - result = ua.Apply(tc.request) + result = ua.Apply(tc.request, membership.ApplyBoth) require.NotNil(t, result) require.Equalf(t, tc.expectError, result.Err, "Apply: got %v, expect: %v", result.Err, tc.expectError) }) @@ -232,13 +232,13 @@ func TestUberApplier_Alarm_Quota(t *testing.T) { MemberID: memberID, Alarm: pb.AlarmType_NOSPACE, }, - }) + }, membership.ApplyBoth) require.NotNil(t, result) require.NoError(t, result.Err) for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - result = ua.Apply(tc.request) + result = ua.Apply(tc.request, membership.ApplyBoth) require.NotNil(t, result) require.Equalf(t, tc.expectError, result.Err, "Apply: got %v, expect: %v", result.Err, tc.expectError) }) @@ -255,11 +255,11 @@ func TestUberApplier_Alarm_Deactivate(t *testing.T) { MemberID: memberID, Alarm: pb.AlarmType_NOSPACE, }, - }) + }, membership.ApplyBoth) require.NotNil(t, result) require.NoError(t, result.Err) - result = ua.Apply(&pb.InternalRaftRequest{Put: &pb.PutRequest{Key: []byte(key)}}) + result = ua.Apply(&pb.InternalRaftRequest{Put: &pb.PutRequest{Key: []byte(key)}}, membership.ApplyBoth) require.NotNil(t, result) require.Equalf(t, errors.ErrNoSpace, result.Err, "Apply: got %v, expect: %v", result.Err, errors.ErrNoSpace) @@ -270,11 +270,11 @@ func TestUberApplier_Alarm_Deactivate(t *testing.T) { MemberID: memberID, Alarm: pb.AlarmType_NOSPACE, }, - }) + }, membership.ApplyBoth) require.NotNil(t, result) require.NoError(t, result.Err) - result = ua.Apply(&pb.InternalRaftRequest{Put: &pb.PutRequest{Key: []byte(key)}}) + result = ua.Apply(&pb.InternalRaftRequest{Put: &pb.PutRequest{Key: []byte(key)}}, membership.ApplyBoth) require.NotNil(t, result) assert.NoError(t, result.Err) } diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index 4f4d5eb8c79b..fa24cd7a3dc4 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -63,7 +63,6 @@ import ( "go.etcd.io/etcd/server/v3/etcdserver/apply" "go.etcd.io/etcd/server/v3/etcdserver/cindex" "go.etcd.io/etcd/server/v3/etcdserver/errors" - "go.etcd.io/etcd/server/v3/etcdserver/txn" serverversion "go.etcd.io/etcd/server/v3/etcdserver/version" "go.etcd.io/etcd/server/v3/features" "go.etcd.io/etcd/server/v3/lease" @@ -2015,7 +2014,7 @@ func (s *EtcdServer) applyEntryNormal(e *raftpb.Entry, shouldApplyV3 membership. if !needResult && raftReq.Txn != nil { removeNeedlessRangeReqs(raftReq.Txn) } - ar = s.applyInternalRaftRequest(&raftReq, shouldApplyV3) + ar = s.uberApply.Apply(&raftReq, shouldApplyV3) } // do not re-toApply applied entries. @@ -2051,42 +2050,6 @@ func (s *EtcdServer) applyEntryNormal(e *raftpb.Entry, shouldApplyV3 membership. }) } -func (s *EtcdServer) applyInternalRaftRequest(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3) *apply.Result { - if r.ClusterVersionSet == nil && r.ClusterMemberAttrSet == nil && r.DowngradeInfoSet == nil && r.DowngradeVersionTest == nil { - if !shouldApplyV3 { - return nil - } - return s.uberApply.Apply(r) - } - membershipApplier := apply.NewApplierMembership(s.lg, s.cluster, s) - op := "unknown" - defer func(start time.Time) { - txn.ApplySecObserve("v3", op, true, time.Since(start)) - txn.WarnOfExpensiveRequest(s.lg, s.Cfg.WarningApplyDuration, start, &pb.InternalRaftStringer{Request: r}, nil, nil) - }(time.Now()) - switch { - case r.ClusterVersionSet != nil: - op = "ClusterVersionSet" // Implemented in 3.5.x - membershipApplier.ClusterVersionSet(r.ClusterVersionSet, shouldApplyV3) - return &apply.Result{} - case r.ClusterMemberAttrSet != nil: - op = "ClusterMemberAttrSet" // Implemented in 3.5.x - membershipApplier.ClusterMemberAttrSet(r.ClusterMemberAttrSet, shouldApplyV3) - case r.DowngradeInfoSet != nil: - op = "DowngradeInfoSet" // Implemented in 3.5.x - membershipApplier.DowngradeInfoSet(r.DowngradeInfoSet, shouldApplyV3) - case r.DowngradeVersionTest != nil: - op = "DowngradeVersionTest" // Implemented in 3.6 for test only - // do nothing, we are just to ensure etcdserver don't panic in case - // users(test cases) intentionally inject DowngradeVersionTestRequest - // into the WAL files. - default: - s.lg.Panic("not implemented apply", zap.Stringer("raft-request", r)) - return nil - } - return &apply.Result{} -} - func noSideEffect(r *pb.InternalRaftRequest) bool { return r.Range != nil || r.AuthUserGet != nil || r.AuthRoleGet != nil || r.AuthStatus != nil } diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index f78b09bc8706..7ea6cb09556a 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -150,7 +150,7 @@ func TestApplyRepeat(t *testing.T) { type uberApplierMock struct{} -func (uberApplierMock) Apply(r *pb.InternalRaftRequest) *apply2.Result { +func (uberApplierMock) Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3) *apply2.Result { return &apply2.Result{} } From 6459d982a52f95dae6b834b369c033a4458662ef Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 29 Apr 2025 17:28:39 +0200 Subject: [PATCH 0131/1068] Split other methods in txn into separate files Signed-off-by: Marek Siarkowicz --- server/etcdserver/txn/delete.go | 70 ++++++++ server/etcdserver/txn/put.go | 114 ++++++++++++ server/etcdserver/txn/range.go | 203 +++++++++++++++++++++ server/etcdserver/txn/txn.go | 308 -------------------------------- 4 files changed, 387 insertions(+), 308 deletions(-) create mode 100644 server/etcdserver/txn/delete.go create mode 100644 server/etcdserver/txn/put.go create mode 100644 server/etcdserver/txn/range.go diff --git a/server/etcdserver/txn/delete.go b/server/etcdserver/txn/delete.go new file mode 100644 index 000000000000..7d1218e8ce18 --- /dev/null +++ b/server/etcdserver/txn/delete.go @@ -0,0 +1,70 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package txn + +import ( + "context" + + "go.uber.org/zap" + + pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/api/v3/mvccpb" + "go.etcd.io/etcd/pkg/v3/traceutil" + "go.etcd.io/etcd/server/v3/storage/mvcc" +) + +func DeleteRange(ctx context.Context, lg *zap.Logger, kv mvcc.KV, dr *pb.DeleteRangeRequest) (resp *pb.DeleteRangeResponse, trace *traceutil.Trace, err error) { + ctx, trace = ensureTrace(ctx, lg, "delete_range", + traceutil.Field{Key: "key", Value: string(dr.Key)}, + traceutil.Field{Key: "range_end", Value: string(dr.RangeEnd)}, + ) + txnWrite := kv.Write(trace) + defer txnWrite.End() + resp, err = deleteRange(ctx, txnWrite, dr) + return resp, trace, err +} + +func deleteRange(ctx context.Context, txnWrite mvcc.TxnWrite, dr *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error) { + resp := &pb.DeleteRangeResponse{} + resp.Header = &pb.ResponseHeader{} + end := mkGteRange(dr.RangeEnd) + + if dr.PrevKv { + rr, err := txnWrite.Range(ctx, dr.Key, end, mvcc.RangeOptions{}) + if err != nil { + return nil, err + } + if rr != nil { + resp.PrevKvs = make([]*mvccpb.KeyValue, len(rr.KVs)) + for i := range rr.KVs { + resp.PrevKvs[i] = &rr.KVs[i] + } + } + } + + resp.Deleted, resp.Header.Revision = txnWrite.DeleteRange(dr.Key, end) + return resp, nil +} + +// mkGteRange determines if the range end is a >= range. This works around grpc +// sending empty byte strings as nil; >= is encoded in the range end as '\0'. +// If it is a GTE range, then []byte{} is returned to indicate the empty byte +// string (vs nil being no byte string). +func mkGteRange(rangeEnd []byte) []byte { + if len(rangeEnd) == 1 && rangeEnd[0] == 0 { + return []byte{} + } + return rangeEnd +} diff --git a/server/etcdserver/txn/put.go b/server/etcdserver/txn/put.go new file mode 100644 index 000000000000..8c304cc59293 --- /dev/null +++ b/server/etcdserver/txn/put.go @@ -0,0 +1,114 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package txn + +import ( + "context" + + "go.uber.org/zap" + + pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/pkg/v3/traceutil" + "go.etcd.io/etcd/server/v3/etcdserver/errors" + "go.etcd.io/etcd/server/v3/lease" + "go.etcd.io/etcd/server/v3/storage/mvcc" +) + +func Put(ctx context.Context, lg *zap.Logger, lessor lease.Lessor, kv mvcc.KV, p *pb.PutRequest) (resp *pb.PutResponse, trace *traceutil.Trace, err error) { + ctx, trace = ensureTrace(ctx, lg, "put", + traceutil.Field{Key: "key", Value: string(p.Key)}, + traceutil.Field{Key: "req_size", Value: p.Size()}, + ) + err = checkLease(lessor, p) + if err != nil { + return nil, trace, err + } + txnWrite := kv.Write(trace) + defer txnWrite.End() + prevKV, err := checkAndGetPrevKV(trace, txnWrite, p) + if err != nil { + return nil, trace, err + } + return put(ctx, txnWrite, p, prevKV), trace, nil +} + +func put(ctx context.Context, txnWrite mvcc.TxnWrite, p *pb.PutRequest, prevKV *mvcc.RangeResult) *pb.PutResponse { + trace := traceutil.Get(ctx) + resp := &pb.PutResponse{} + resp.Header = &pb.ResponseHeader{} + val, leaseID := p.Value, lease.LeaseID(p.Lease) + + if p.IgnoreValue { + val = prevKV.KVs[0].Value + } + if p.IgnoreLease { + leaseID = lease.LeaseID(prevKV.KVs[0].Lease) + } + if p.PrevKv { + if prevKV != nil && len(prevKV.KVs) != 0 { + resp.PrevKv = &prevKV.KVs[0] + } + } + + resp.Header.Revision = txnWrite.Put(p.Key, val, leaseID) + trace.AddField(traceutil.Field{Key: "response_revision", Value: resp.Header.Revision}) + return resp +} + +func checkPut(trace *traceutil.Trace, txnWrite mvcc.ReadView, lessor lease.Lessor, p *pb.PutRequest) error { + err := checkLease(lessor, p) + if err != nil { + return err + } + _, err = checkAndGetPrevKV(trace, txnWrite, p) + return err +} + +func checkLease(lessor lease.Lessor, p *pb.PutRequest) error { + leaseID := lease.LeaseID(p.Lease) + if leaseID != lease.NoLease { + if l := lessor.Lookup(leaseID); l == nil { + return lease.ErrLeaseNotFound + } + } + return nil +} + +func checkAndGetPrevKV(trace *traceutil.Trace, txnWrite mvcc.ReadView, p *pb.PutRequest) (prevKV *mvcc.RangeResult, err error) { + prevKV, err = getPrevKV(trace, txnWrite, p) + if err != nil { + return nil, err + } + if p.IgnoreValue || p.IgnoreLease { + if prevKV == nil || len(prevKV.KVs) == 0 { + // ignore_{lease,value} flag expects previous key-value pair + return nil, errors.ErrKeyNotFound + } + } + return prevKV, nil +} + +func getPrevKV(trace *traceutil.Trace, txnWrite mvcc.ReadView, p *pb.PutRequest) (prevKV *mvcc.RangeResult, err error) { + if p.IgnoreValue || p.IgnoreLease || p.PrevKv { + trace.StepWithFunction(func() { + prevKV, err = txnWrite.Range(context.TODO(), p.Key, nil, mvcc.RangeOptions{}) + }, "get previous kv pair") + + if err != nil { + return nil, err + } + } + return prevKV, nil +} diff --git a/server/etcdserver/txn/range.go b/server/etcdserver/txn/range.go new file mode 100644 index 000000000000..8e9fef34ad7b --- /dev/null +++ b/server/etcdserver/txn/range.go @@ -0,0 +1,203 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package txn + +import ( + "bytes" + "context" + "sort" + "time" + + "go.uber.org/zap" + + pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/api/v3/mvccpb" + "go.etcd.io/etcd/pkg/v3/traceutil" + "go.etcd.io/etcd/server/v3/storage/mvcc" +) + +func Range(ctx context.Context, lg *zap.Logger, kv mvcc.KV, r *pb.RangeRequest) (resp *pb.RangeResponse, trace *traceutil.Trace, err error) { + ctx, trace = ensureTrace(ctx, lg, "range") + defer func(start time.Time) { + success := err == nil + RangeSecObserve(success, time.Since(start)) + }(time.Now()) + txnRead := kv.Read(mvcc.ConcurrentReadTxMode, trace) + defer txnRead.End() + resp, err = executeRange(ctx, lg, txnRead, r) + return resp, trace, err +} + +func executeRange(ctx context.Context, lg *zap.Logger, txnRead mvcc.TxnRead, r *pb.RangeRequest) (*pb.RangeResponse, error) { + trace := traceutil.Get(ctx) + + resp := &pb.RangeResponse{} + resp.Header = &pb.ResponseHeader{} + + limit := r.Limit + if r.SortOrder != pb.RangeRequest_NONE || + r.MinModRevision != 0 || r.MaxModRevision != 0 || + r.MinCreateRevision != 0 || r.MaxCreateRevision != 0 { + // fetch everything; sort and truncate afterwards + limit = 0 + } + if limit > 0 { + // fetch one extra for 'more' flag + limit = limit + 1 + } + + ro := mvcc.RangeOptions{ + Limit: limit, + Rev: r.Revision, + Count: r.CountOnly, + } + + rr, err := txnRead.Range(ctx, r.Key, mkGteRange(r.RangeEnd), ro) + if err != nil { + return nil, err + } + + if r.MaxModRevision != 0 { + f := func(kv *mvccpb.KeyValue) bool { return kv.ModRevision > r.MaxModRevision } + pruneKVs(rr, f) + } + if r.MinModRevision != 0 { + f := func(kv *mvccpb.KeyValue) bool { return kv.ModRevision < r.MinModRevision } + pruneKVs(rr, f) + } + if r.MaxCreateRevision != 0 { + f := func(kv *mvccpb.KeyValue) bool { return kv.CreateRevision > r.MaxCreateRevision } + pruneKVs(rr, f) + } + if r.MinCreateRevision != 0 { + f := func(kv *mvccpb.KeyValue) bool { return kv.CreateRevision < r.MinCreateRevision } + pruneKVs(rr, f) + } + + sortOrder := r.SortOrder + if r.SortTarget != pb.RangeRequest_KEY && sortOrder == pb.RangeRequest_NONE { + // Since current mvcc.Range implementation returns results + // sorted by keys in lexiographically ascending order, + // sort ASCEND by default only when target is not 'KEY' + sortOrder = pb.RangeRequest_ASCEND + } else if r.SortTarget == pb.RangeRequest_KEY && sortOrder == pb.RangeRequest_ASCEND { + // Since current mvcc.Range implementation returns results + // sorted by keys in lexiographically ascending order, + // don't re-sort when target is 'KEY' and order is ASCEND + sortOrder = pb.RangeRequest_NONE + } + if sortOrder != pb.RangeRequest_NONE { + var sorter sort.Interface + switch { + case r.SortTarget == pb.RangeRequest_KEY: + sorter = &kvSortByKey{&kvSort{rr.KVs}} + case r.SortTarget == pb.RangeRequest_VERSION: + sorter = &kvSortByVersion{&kvSort{rr.KVs}} + case r.SortTarget == pb.RangeRequest_CREATE: + sorter = &kvSortByCreate{&kvSort{rr.KVs}} + case r.SortTarget == pb.RangeRequest_MOD: + sorter = &kvSortByMod{&kvSort{rr.KVs}} + case r.SortTarget == pb.RangeRequest_VALUE: + sorter = &kvSortByValue{&kvSort{rr.KVs}} + default: + lg.Panic("unexpected sort target", zap.Int32("sort-target", int32(r.SortTarget))) + } + switch { + case sortOrder == pb.RangeRequest_ASCEND: + sort.Sort(sorter) + case sortOrder == pb.RangeRequest_DESCEND: + sort.Sort(sort.Reverse(sorter)) + } + } + + if r.Limit > 0 && len(rr.KVs) > int(r.Limit) { + rr.KVs = rr.KVs[:r.Limit] + resp.More = true + } + trace.Step("filter and sort the key-value pairs") + resp.Header.Revision = rr.Rev + resp.Count = int64(rr.Count) + resp.Kvs = make([]*mvccpb.KeyValue, len(rr.KVs)) + for i := range rr.KVs { + if r.KeysOnly { + rr.KVs[i].Value = nil + } + resp.Kvs[i] = &rr.KVs[i] + } + trace.Step("assemble the response") + return resp, nil +} + +func checkRange(rv mvcc.ReadView, req *pb.RangeRequest) error { + switch { + case req.Revision == 0: + return nil + case req.Revision > rv.Rev(): + return mvcc.ErrFutureRev + case req.Revision < rv.FirstRev(): + return mvcc.ErrCompacted + } + return nil +} + +func pruneKVs(rr *mvcc.RangeResult, isPrunable func(*mvccpb.KeyValue) bool) { + j := 0 + for i := range rr.KVs { + rr.KVs[j] = rr.KVs[i] + if !isPrunable(&rr.KVs[i]) { + j++ + } + } + rr.KVs = rr.KVs[:j] +} + +type kvSort struct{ kvs []mvccpb.KeyValue } + +func (s *kvSort) Swap(i, j int) { + t := s.kvs[i] + s.kvs[i] = s.kvs[j] + s.kvs[j] = t +} +func (s *kvSort) Len() int { return len(s.kvs) } + +type kvSortByKey struct{ *kvSort } + +func (s *kvSortByKey) Less(i, j int) bool { + return bytes.Compare(s.kvs[i].Key, s.kvs[j].Key) < 0 +} + +type kvSortByVersion struct{ *kvSort } + +func (s *kvSortByVersion) Less(i, j int) bool { + return (s.kvs[i].Version - s.kvs[j].Version) < 0 +} + +type kvSortByCreate struct{ *kvSort } + +func (s *kvSortByCreate) Less(i, j int) bool { + return (s.kvs[i].CreateRevision - s.kvs[j].CreateRevision) < 0 +} + +type kvSortByMod struct{ *kvSort } + +func (s *kvSortByMod) Less(i, j int) bool { + return (s.kvs[i].ModRevision - s.kvs[j].ModRevision) < 0 +} + +type kvSortByValue struct{ *kvSort } + +func (s *kvSortByValue) Less(i, j int) bool { + return bytes.Compare(s.kvs[i].Value, s.kvs[j].Value) < 0 +} diff --git a/server/etcdserver/txn/txn.go b/server/etcdserver/txn/txn.go index e1b25ebc7118..9519d94d7bc2 100644 --- a/server/etcdserver/txn/txn.go +++ b/server/etcdserver/txn/txn.go @@ -18,8 +18,6 @@ import ( "bytes" "context" "fmt" - "sort" - "time" "go.uber.org/zap" @@ -27,197 +25,10 @@ import ( "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/pkg/v3/traceutil" "go.etcd.io/etcd/server/v3/auth" - "go.etcd.io/etcd/server/v3/etcdserver/errors" "go.etcd.io/etcd/server/v3/lease" "go.etcd.io/etcd/server/v3/storage/mvcc" ) -func Put(ctx context.Context, lg *zap.Logger, lessor lease.Lessor, kv mvcc.KV, p *pb.PutRequest) (resp *pb.PutResponse, trace *traceutil.Trace, err error) { - ctx, trace = ensureTrace(ctx, lg, "put", - traceutil.Field{Key: "key", Value: string(p.Key)}, - traceutil.Field{Key: "req_size", Value: p.Size()}, - ) - err = checkLease(lessor, p) - if err != nil { - return nil, trace, err - } - txnWrite := kv.Write(trace) - defer txnWrite.End() - prevKV, err := checkAndGetPrevKV(trace, txnWrite, p) - if err != nil { - return nil, trace, err - } - return put(ctx, txnWrite, p, prevKV), trace, nil -} - -func put(ctx context.Context, txnWrite mvcc.TxnWrite, p *pb.PutRequest, prevKV *mvcc.RangeResult) *pb.PutResponse { - trace := traceutil.Get(ctx) - resp := &pb.PutResponse{} - resp.Header = &pb.ResponseHeader{} - val, leaseID := p.Value, lease.LeaseID(p.Lease) - - if p.IgnoreValue { - val = prevKV.KVs[0].Value - } - if p.IgnoreLease { - leaseID = lease.LeaseID(prevKV.KVs[0].Lease) - } - if p.PrevKv { - if prevKV != nil && len(prevKV.KVs) != 0 { - resp.PrevKv = &prevKV.KVs[0] - } - } - - resp.Header.Revision = txnWrite.Put(p.Key, val, leaseID) - trace.AddField(traceutil.Field{Key: "response_revision", Value: resp.Header.Revision}) - return resp -} - -func DeleteRange(ctx context.Context, lg *zap.Logger, kv mvcc.KV, dr *pb.DeleteRangeRequest) (resp *pb.DeleteRangeResponse, trace *traceutil.Trace, err error) { - ctx, trace = ensureTrace(ctx, lg, "delete_range", - traceutil.Field{Key: "key", Value: string(dr.Key)}, - traceutil.Field{Key: "range_end", Value: string(dr.RangeEnd)}, - ) - txnWrite := kv.Write(trace) - defer txnWrite.End() - resp, err = deleteRange(ctx, txnWrite, dr) - return resp, trace, err -} - -func deleteRange(ctx context.Context, txnWrite mvcc.TxnWrite, dr *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error) { - resp := &pb.DeleteRangeResponse{} - resp.Header = &pb.ResponseHeader{} - end := mkGteRange(dr.RangeEnd) - - if dr.PrevKv { - rr, err := txnWrite.Range(ctx, dr.Key, end, mvcc.RangeOptions{}) - if err != nil { - return nil, err - } - if rr != nil { - resp.PrevKvs = make([]*mvccpb.KeyValue, len(rr.KVs)) - for i := range rr.KVs { - resp.PrevKvs[i] = &rr.KVs[i] - } - } - } - - resp.Deleted, resp.Header.Revision = txnWrite.DeleteRange(dr.Key, end) - return resp, nil -} - -func Range(ctx context.Context, lg *zap.Logger, kv mvcc.KV, r *pb.RangeRequest) (resp *pb.RangeResponse, trace *traceutil.Trace, err error) { - ctx, trace = ensureTrace(ctx, lg, "range") - defer func(start time.Time) { - success := err == nil - RangeSecObserve(success, time.Since(start)) - }(time.Now()) - txnRead := kv.Read(mvcc.ConcurrentReadTxMode, trace) - defer txnRead.End() - resp, err = executeRange(ctx, lg, txnRead, r) - return resp, trace, err -} - -func executeRange(ctx context.Context, lg *zap.Logger, txnRead mvcc.TxnRead, r *pb.RangeRequest) (*pb.RangeResponse, error) { - trace := traceutil.Get(ctx) - - resp := &pb.RangeResponse{} - resp.Header = &pb.ResponseHeader{} - - limit := r.Limit - if r.SortOrder != pb.RangeRequest_NONE || - r.MinModRevision != 0 || r.MaxModRevision != 0 || - r.MinCreateRevision != 0 || r.MaxCreateRevision != 0 { - // fetch everything; sort and truncate afterwards - limit = 0 - } - if limit > 0 { - // fetch one extra for 'more' flag - limit = limit + 1 - } - - ro := mvcc.RangeOptions{ - Limit: limit, - Rev: r.Revision, - Count: r.CountOnly, - } - - rr, err := txnRead.Range(ctx, r.Key, mkGteRange(r.RangeEnd), ro) - if err != nil { - return nil, err - } - - if r.MaxModRevision != 0 { - f := func(kv *mvccpb.KeyValue) bool { return kv.ModRevision > r.MaxModRevision } - pruneKVs(rr, f) - } - if r.MinModRevision != 0 { - f := func(kv *mvccpb.KeyValue) bool { return kv.ModRevision < r.MinModRevision } - pruneKVs(rr, f) - } - if r.MaxCreateRevision != 0 { - f := func(kv *mvccpb.KeyValue) bool { return kv.CreateRevision > r.MaxCreateRevision } - pruneKVs(rr, f) - } - if r.MinCreateRevision != 0 { - f := func(kv *mvccpb.KeyValue) bool { return kv.CreateRevision < r.MinCreateRevision } - pruneKVs(rr, f) - } - - sortOrder := r.SortOrder - if r.SortTarget != pb.RangeRequest_KEY && sortOrder == pb.RangeRequest_NONE { - // Since current mvcc.Range implementation returns results - // sorted by keys in lexiographically ascending order, - // sort ASCEND by default only when target is not 'KEY' - sortOrder = pb.RangeRequest_ASCEND - } else if r.SortTarget == pb.RangeRequest_KEY && sortOrder == pb.RangeRequest_ASCEND { - // Since current mvcc.Range implementation returns results - // sorted by keys in lexiographically ascending order, - // don't re-sort when target is 'KEY' and order is ASCEND - sortOrder = pb.RangeRequest_NONE - } - if sortOrder != pb.RangeRequest_NONE { - var sorter sort.Interface - switch { - case r.SortTarget == pb.RangeRequest_KEY: - sorter = &kvSortByKey{&kvSort{rr.KVs}} - case r.SortTarget == pb.RangeRequest_VERSION: - sorter = &kvSortByVersion{&kvSort{rr.KVs}} - case r.SortTarget == pb.RangeRequest_CREATE: - sorter = &kvSortByCreate{&kvSort{rr.KVs}} - case r.SortTarget == pb.RangeRequest_MOD: - sorter = &kvSortByMod{&kvSort{rr.KVs}} - case r.SortTarget == pb.RangeRequest_VALUE: - sorter = &kvSortByValue{&kvSort{rr.KVs}} - default: - lg.Panic("unexpected sort target", zap.Int32("sort-target", int32(r.SortTarget))) - } - switch { - case sortOrder == pb.RangeRequest_ASCEND: - sort.Sort(sorter) - case sortOrder == pb.RangeRequest_DESCEND: - sort.Sort(sort.Reverse(sorter)) - } - } - - if r.Limit > 0 && len(rr.KVs) > int(r.Limit) { - rr.KVs = rr.KVs[:r.Limit] - resp.More = true - } - trace.Step("filter and sort the key-value pairs") - resp.Header.Revision = rr.Rev - resp.Count = int64(rr.Count) - resp.Kvs = make([]*mvccpb.KeyValue, len(rr.KVs)) - for i := range rr.KVs { - if r.KeysOnly { - rr.KVs[i].Value = nil - } - resp.Kvs[i] = &rr.KVs[i] - } - trace.Step("assemble the response") - return resp, nil -} - func Txn(ctx context.Context, lg *zap.Logger, rt *pb.TxnRequest, txnModeWriteWithSharedBuffer bool, kv mvcc.KV, lessor lease.Lessor) (txnResp *pb.TxnResponse, trace *traceutil.Trace, err error) { ctx, trace = ensureTrace(ctx, lg, "transaction") isWrite := !IsTxnReadonly(rt) @@ -376,64 +187,6 @@ func executeTxn(ctx context.Context, lg *zap.Logger, txnWrite mvcc.TxnWrite, rt return txns, nil } -func checkPut(trace *traceutil.Trace, txnWrite mvcc.ReadView, lessor lease.Lessor, p *pb.PutRequest) error { - err := checkLease(lessor, p) - if err != nil { - return err - } - _, err = checkAndGetPrevKV(trace, txnWrite, p) - return err -} - -func checkLease(lessor lease.Lessor, p *pb.PutRequest) error { - leaseID := lease.LeaseID(p.Lease) - if leaseID != lease.NoLease { - if l := lessor.Lookup(leaseID); l == nil { - return lease.ErrLeaseNotFound - } - } - return nil -} - -func checkAndGetPrevKV(trace *traceutil.Trace, txnWrite mvcc.ReadView, p *pb.PutRequest) (prevKV *mvcc.RangeResult, err error) { - prevKV, err = getPrevKV(trace, txnWrite, p) - if err != nil { - return nil, err - } - if p.IgnoreValue || p.IgnoreLease { - if prevKV == nil || len(prevKV.KVs) == 0 { - // ignore_{lease,value} flag expects previous key-value pair - return nil, errors.ErrKeyNotFound - } - } - return prevKV, nil -} - -func getPrevKV(trace *traceutil.Trace, txnWrite mvcc.ReadView, p *pb.PutRequest) (prevKV *mvcc.RangeResult, err error) { - if p.IgnoreValue || p.IgnoreLease || p.PrevKv { - trace.StepWithFunction(func() { - prevKV, err = txnWrite.Range(context.TODO(), p.Key, nil, mvcc.RangeOptions{}) - }, "get previous kv pair") - - if err != nil { - return nil, err - } - } - return prevKV, nil -} - -func checkRange(rv mvcc.ReadView, req *pb.RangeRequest) error { - switch { - case req.Revision == 0: - return nil - case req.Revision > rv.Rev(): - return mvcc.ErrFutureRev - case req.Revision < rv.FirstRev(): - return mvcc.ErrCompacted - } - return nil -} - func checkTxn(trace *traceutil.Trace, rv mvcc.ReadView, rt *pb.TxnRequest, lessor lease.Lessor, txnPath []bool) (int, error) { txnCount := 0 reqs := rt.Success @@ -463,67 +216,6 @@ func checkTxn(trace *traceutil.Trace, rv mvcc.ReadView, rt *pb.TxnRequest, lesso return txnCount, nil } -// mkGteRange determines if the range end is a >= range. This works around grpc -// sending empty byte strings as nil; >= is encoded in the range end as '\0'. -// If it is a GTE range, then []byte{} is returned to indicate the empty byte -// string (vs nil being no byte string). -func mkGteRange(rangeEnd []byte) []byte { - if len(rangeEnd) == 1 && rangeEnd[0] == 0 { - return []byte{} - } - return rangeEnd -} - -func pruneKVs(rr *mvcc.RangeResult, isPrunable func(*mvccpb.KeyValue) bool) { - j := 0 - for i := range rr.KVs { - rr.KVs[j] = rr.KVs[i] - if !isPrunable(&rr.KVs[i]) { - j++ - } - } - rr.KVs = rr.KVs[:j] -} - -type kvSort struct{ kvs []mvccpb.KeyValue } - -func (s *kvSort) Swap(i, j int) { - t := s.kvs[i] - s.kvs[i] = s.kvs[j] - s.kvs[j] = t -} -func (s *kvSort) Len() int { return len(s.kvs) } - -type kvSortByKey struct{ *kvSort } - -func (s *kvSortByKey) Less(i, j int) bool { - return bytes.Compare(s.kvs[i].Key, s.kvs[j].Key) < 0 -} - -type kvSortByVersion struct{ *kvSort } - -func (s *kvSortByVersion) Less(i, j int) bool { - return (s.kvs[i].Version - s.kvs[j].Version) < 0 -} - -type kvSortByCreate struct{ *kvSort } - -func (s *kvSortByCreate) Less(i, j int) bool { - return (s.kvs[i].CreateRevision - s.kvs[j].CreateRevision) < 0 -} - -type kvSortByMod struct{ *kvSort } - -func (s *kvSortByMod) Less(i, j int) bool { - return (s.kvs[i].ModRevision - s.kvs[j].ModRevision) < 0 -} - -type kvSortByValue struct{ *kvSort } - -func (s *kvSortByValue) Less(i, j int) bool { - return bytes.Compare(s.kvs[i].Value, s.kvs[j].Value) < 0 -} - func compareInt64(a, b int64) int { switch { case a < b: From 0965af07b2a183c37e30f6c20f5c1cb472213676 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Tue, 29 Apr 2025 15:06:38 -0400 Subject: [PATCH 0132/1068] tests/integration: deflaky TestMaintenanceSnapshotTimeout Signed-off-by: Wei Fu --- .../integration/clientv3/maintenance_test.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tests/integration/clientv3/maintenance_test.go b/tests/integration/clientv3/maintenance_test.go index 33dabfdc87b3..50619ae127bb 100644 --- a/tests/integration/clientv3/maintenance_test.go +++ b/tests/integration/clientv3/maintenance_test.go @@ -31,6 +31,8 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" "go.etcd.io/etcd/api/v3/version" @@ -230,9 +232,22 @@ func testMaintenanceSnapshotTimeout(t *testing.T, snapshot func(context.Context, time.Sleep(2 * time.Second) _, err = io.Copy(io.Discard, rc2) - if err != nil && !IsClientTimeout(err) { - t.Errorf("expected client timeout, got %v", err) + if IsClientTimeout(err) { + return } + // Assumes the client receives a single message header and then + // waits for the payload body. If the context is canceled before + // the payload arrives, the client will read io.EOF. However, the + // grpc-go client converts this into io.ErrUnexpectedEOF with an + // internal error code. Ideally, grpc-go might return context.Canceled + // instead, but it's unclear if that's feasible. Let's explicitly + // check for this error in the test code. + // + // REF: https://github.com/grpc/grpc-go/blob/6821606f351799b026fda1e6ba143315e6c1e620/rpc_util.go#L644 + // + // Once https://github.com/grpc/grpc-go/issues/8281 is fixed, we should + // revert this change. See more discussion in https://github.com/etcd-io/etcd/pull/19833. + assert.ErrorIs(t, status.Error(codes.Internal, io.ErrUnexpectedEOF.Error()), err) } // TestMaintenanceSnapshotWithVersionErrorInflight ensures that ReaderCloser returned by SnapshotWithVersion function From 7a85043b4c42c6a0c37dbbe0ddbda057a48e91e5 Mon Sep 17 00:00:00 2001 From: joshjms Date: Wed, 16 Apr 2025 21:33:11 +0800 Subject: [PATCH 0133/1068] docs: add example to change golang version Signed-off-by: joshjms --- .../contributor-guide/bump_etcd_version_k8s.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Documentation/contributor-guide/bump_etcd_version_k8s.md b/Documentation/contributor-guide/bump_etcd_version_k8s.md index f055ea981212..7b157ef6ed4a 100644 --- a/Documentation/contributor-guide/bump_etcd_version_k8s.md +++ b/Documentation/contributor-guide/bump_etcd_version_k8s.md @@ -55,18 +55,22 @@ You can refer to the guide [here](https://github.com/kubernetes/community/blob/m > Reference: [link 1](https://github.com/kubernetes/kubernetes/pull/131105) [link 2](https://github.com/kubernetes/kubernetes/pull/131126) -1. In `build/dependencies.yaml`, update the `version` of `etcd-image` and `golang: etcd release version` to the new version. +1. In `build/dependencies.yaml`, update the `version` of `etcd-image` to the new version. Update `golang: etcd release version` if necessary. ```yaml - name: "etcd-image" - # version: 3.5.17 - version: 3.5.21 - refPaths: - - path: cluster/images/etcd/Makefile - match: BUNDLED_ETCD_VERSIONS\?| + # version: 3.5.17 + version: 3.5.21 + refPaths: + - path: cluster/images/etcd/Makefile + match: BUNDLED_ETCD_VERSIONS\?| + --- + - name: "golang: etcd release version" + # version: 1.22.9 + version: 1.23.7 # https://github.com/etcd-io/etcd/blob/main/CHANGELOG/CHANGELOG-3.6.md ``` -2. In `cluster/images/etcd/Makefile`, include the new version in `BUNDLED_ETCD_VERSIONS` and update the `LATEST_ETCD_VERSION` as well (the image tag will be generated from the `LATEST_ETCD_VERSION`). Update `GOLANG_VERSION` if necessary. +2. In `cluster/images/etcd/Makefile`, include the new version in `BUNDLED_ETCD_VERSIONS` and update the `LATEST_ETCD_VERSION` as well (the image tag will be generated from the `LATEST_ETCD_VERSION`). Update `GOLANG_VERSION` according to the version used to compile that release version (`"golang: etcd release version"` in step 1). ```Makefile # BUNDLED_ETCD_VERSIONS?=3.4.18 3.5.17 From 6def3e73d124b73eed8a1f43466f5ae67969f49f Mon Sep 17 00:00:00 2001 From: Nont Date: Wed, 30 Apr 2025 22:33:31 -0500 Subject: [PATCH 0134/1068] Use robustness traffic generation Signed-off-by: Nont --- .../test-template/robustness/main.go | 129 ++++++++---------- tests/robustness/traffic/etcd.go | 10 ++ 2 files changed, 69 insertions(+), 70 deletions(-) diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index f2895b0d1cc9..3abdceed1546 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -20,21 +20,38 @@ import ( "context" "log" "os" + "sync" "time" "github.com/antithesishq/antithesis-sdk-go/assert" "github.com/antithesishq/antithesis-sdk-go/random" + "golang.org/x/time/rate" - clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/tests/v3/robustness/client" "go.etcd.io/etcd/tests/v3/robustness/identity" + robustnessrand "go.etcd.io/etcd/tests/v3/robustness/random" + "go.etcd.io/etcd/tests/v3/robustness/report" + "go.etcd.io/etcd/tests/v3/robustness/traffic" ) -func Connect() *client.RecordingClient { - // This function returns a client connection to an etcd node +var ( + // Please keep the sum of weights equal 100. + profile = traffic.Profile{ + MinimalQPS: 100, + MaximalQPS: 1000, + BurstableQPS: 1000, + ClientCount: 3, + MaxNonUniqueRequestConcurrency: 3, + } + IDProvider = identity.NewIDProvider() + LeaseIDStorage = identity.NewLeaseIDStorage() + ConcurrencyLimiter = traffic.NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) +) +// Connect returns a client connection to an etcd node +func Connect() *client.RecordingClient { hosts := []string{"etcd0:2379", "etcd1:2379", "etcd2:2379"} - cli, err := client.NewRecordingClient(hosts, identity.NewIDProvider(), time.Now()) + cli, err := client.NewRecordingClient(hosts, IDProvider, time.Now()) if err != nil { log.Fatalf("Failed to connect to etcd: %v", err) // Antithesis Assertion: client should always be able to connect to an etcd host @@ -45,77 +62,49 @@ func Connect() *client.RecordingClient { return cli } -func DeleteKeys() { - // This function will: - // 1. Get all keys - // 2. Select half of the keys received - // 3. Attempt to delete the keys selected - // 4. Check that the keys were deleted - +func testRobustness() { ctx := context.Background() - - // Connect to an etcd node - cli := Connect() - - // Get all keys - resp, err := cli.Get(ctx, "", clientv3.WithPrefix()) - - // Antithesis Assertion: sometimes get with prefix requests are successful. A failed request is OK since we expect them to happen. - assert.Sometimes(err == nil, "Client can make successful get all requests", map[string]any{"error": err}) - cli.Close() - - if err != nil { - log.Printf("Client failed to get all keys: %v", err) - os.Exit(0) + var wg sync.WaitGroup + var mux sync.Mutex + runfor := time.Duration(robustnessrand.RandRange(5, 60) * int64(time.Second)) + limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), profile.BurstableQPS) + finish := wrap(time.After(runfor)) + reports := []report.ClientReport{} + + for range profile.ClientCount { + wg.Add(1) + c := Connect() + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + + traffic.EtcdAntithesis.RunTrafficLoop(ctx, c, limiter, + IDProvider, + LeaseIDStorage, + ConcurrencyLimiter, + finish, + ) + mux.Lock() + reports = append(reports, c.Report()) + mux.Unlock() + }(c) } + wg.Wait() + assert.Reachable("Completion robustness traffic generation", nil) +} - // Choose half of the keys - var keys []string - for _, k := range resp.Kvs { - keys = append(keys, string(k.Key)) - } - half := len(keys) / 2 - halfKeys := keys[:half] - - // Connect to a new etcd node - cli = Connect() - - // Delete half of the keys chosen - var deletedKeys []string - for _, k := range halfKeys { - _, err := cli.Delete(ctx, k) - // Antithesis Assertion: sometimes delete requests are successful. A failed request is OK since we expect them to happen. - assert.Sometimes(err == nil, "Client can make successful delete requests", map[string]any{"error": err}) - if err != nil { - log.Printf("Failed to delete key %s: %v", k, err) - } else { - log.Printf("Successfully deleted key %v", k) - deletedKeys = append(deletedKeys, k) - } - } - cli.Close() - - // Connect to a new etcd node - cli = Connect() - - // Check to see if those keys were deleted / exist - for _, k := range deletedKeys { - resp, err := cli.Get(ctx, k) - // Antithesis Assertion: sometimes get requests are successful. A failed request is OK since we expect them to happen. - assert.Sometimes(err == nil, "Client can make successful get requests", map[string]any{"error": err}) - if err != nil { - log.Printf("Client failed to get key %s: %v", k, err) - continue +// wrap converts a receive-only channel to receive-only struct{} channel +func wrap[T any](from <-chan T) <-chan struct{} { + out := make(chan struct{}) + go func() { + for { + <-from + out <- struct{}{} } - // Antithesis Assertion: if we deleted a key, we should not get a value - assert.Always(resp.Count == 0, "Key was deleted correctly", map[string]any{"key": k}) - } - cli.Close() - - assert.Reachable("Completion of a key deleting check", nil) - log.Printf("Completion of a key deleting check") + }() + return out } func main() { - DeleteKeys() + testRobustness() } diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index 906f3d2cb465..5e631f7ff9f4 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -75,6 +75,16 @@ var ( {Choice: Delete, Weight: 50}, }, } + EtcdAntithesis Traffic = etcdTraffic{ + keyCount: 10, + largePutSize: 32769, + leaseTTL: DefaultLeaseTTL, + // Please keep the sum of weights equal 100. + requests: []random.ChoiceWeight[etcdRequestType]{ + {Choice: Get, Weight: 50}, + {Choice: Put, Weight: 50}, + }, + } ) type etcdTraffic struct { From f92bca8b2f4c6aea9948f04461051b5f6cc0f227 Mon Sep 17 00:00:00 2001 From: Nont Date: Wed, 30 Apr 2025 22:08:06 -0500 Subject: [PATCH 0135/1068] Rename delete_keys to robustness also rename main package go files to main.go Signed-off-by: Nont --- tests/antithesis/test-template/Dockerfile | 4 ++-- .../test-template/entrypoint/{entrypoint.go => main.go} | 0 .../serial_driver_delete_keys.go => robustness/main.go} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename tests/antithesis/test-template/entrypoint/{entrypoint.go => main.go} (100%) rename tests/antithesis/test-template/{go-delete-keys/serial_driver_delete_keys.go => robustness/main.go} (100%) diff --git a/tests/antithesis/test-template/Dockerfile b/tests/antithesis/test-template/Dockerfile index 53ad71958057..614405cb9e8e 100644 --- a/tests/antithesis/test-template/Dockerfile +++ b/tests/antithesis/test-template/Dockerfile @@ -6,5 +6,5 @@ WORKDIR /build COPY . . WORKDIR /build/tests -RUN go build -o /opt/antithesis/entrypoint/entrypoint -race ./antithesis/test-template/entrypoint/entrypoint.go -RUN go build -o /opt/antithesis/test/v1/main/serial_driver_delete_keys -race ./antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go +RUN go build -o /opt/antithesis/entrypoint/entrypoint -race ./antithesis/test-template/entrypoint/main.go +RUN go build -o /opt/antithesis/test/v1/main/robustness -race ./antithesis/test-template/robustness/main.go diff --git a/tests/antithesis/test-template/entrypoint/entrypoint.go b/tests/antithesis/test-template/entrypoint/main.go similarity index 100% rename from tests/antithesis/test-template/entrypoint/entrypoint.go rename to tests/antithesis/test-template/entrypoint/main.go diff --git a/tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go b/tests/antithesis/test-template/robustness/main.go similarity index 100% rename from tests/antithesis/test-template/go-delete-keys/serial_driver_delete_keys.go rename to tests/antithesis/test-template/robustness/main.go From 9387b0e46359481a9f872d70230ff13af7cc84f4 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 5 May 2025 10:38:36 +0200 Subject: [PATCH 0136/1068] Refactor antithesis robustness main Signed-off-by: Marek Siarkowicz --- .../test-template/robustness/main.go | 93 +++++++++---------- 1 file changed, 45 insertions(+), 48 deletions(-) diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index 3abdceed1546..49be36dfed28 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -18,13 +18,12 @@ package main import ( "context" - "log" + "fmt" "os" "sync" "time" "github.com/antithesishq/antithesis-sdk-go/assert" - "github.com/antithesishq/antithesis-sdk-go/random" "golang.org/x/time/rate" "go.etcd.io/etcd/tests/v3/robustness/client" @@ -34,54 +33,43 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/traffic" ) -var ( - // Please keep the sum of weights equal 100. - profile = traffic.Profile{ - MinimalQPS: 100, - MaximalQPS: 1000, - BurstableQPS: 1000, - ClientCount: 3, - MaxNonUniqueRequestConcurrency: 3, - } - IDProvider = identity.NewIDProvider() - LeaseIDStorage = identity.NewLeaseIDStorage() - ConcurrencyLimiter = traffic.NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) -) - -// Connect returns a client connection to an etcd node -func Connect() *client.RecordingClient { - hosts := []string{"etcd0:2379", "etcd1:2379", "etcd2:2379"} - cli, err := client.NewRecordingClient(hosts, IDProvider, time.Now()) - if err != nil { - log.Fatalf("Failed to connect to etcd: %v", err) - // Antithesis Assertion: client should always be able to connect to an etcd host - host := random.RandomChoice(hosts) - assert.Unreachable("Client failed to connect to an etcd host", map[string]any{"host": host, "error": err}) - os.Exit(1) - } - return cli +var profile = traffic.Profile{ + MinimalQPS: 100, + MaximalQPS: 1000, + BurstableQPS: 1000, + ClientCount: 3, + MaxNonUniqueRequestConcurrency: 3, } -func testRobustness() { +func main() { ctx := context.Background() - var wg sync.WaitGroup - var mux sync.Mutex - runfor := time.Duration(robustnessrand.RandRange(5, 60) * int64(time.Second)) + baseTime := time.Now() + duration := time.Duration(robustnessrand.RandRange(5, 60) * int64(time.Second)) + testRobustness(ctx, baseTime, duration) +} + +func testRobustness(ctx context.Context, baseTime time.Time, duration time.Duration) { limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), profile.BurstableQPS) - finish := wrap(time.After(runfor)) - reports := []report.ClientReport{} + finish := closeAfter(ctx, duration) + ids := identity.NewIDProvider() + storage := identity.NewLeaseIDStorage() + concurrencyLimiter := traffic.NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) + hosts := []string{"etcd0:2379", "etcd1:2379", "etcd2:2379"} - for range profile.ClientCount { + reports := []report.ClientReport{} + var mux sync.Mutex + var wg sync.WaitGroup + for i := 0; i < profile.ClientCount; i++ { + c := connect(hosts[i%len(hosts)], ids, baseTime) wg.Add(1) - c := Connect() go func(c *client.RecordingClient) { defer wg.Done() defer c.Close() traffic.EtcdAntithesis.RunTrafficLoop(ctx, c, limiter, - IDProvider, - LeaseIDStorage, - ConcurrencyLimiter, + ids, + storage, + concurrencyLimiter, finish, ) mux.Lock() @@ -90,21 +78,30 @@ func testRobustness() { }(c) } wg.Wait() - assert.Reachable("Completion robustness traffic generation", nil) + fmt.Println("Completed robustness traffic generation") + assert.Reachable("Completed robustness traffic generation", nil) +} + +func connect(endpoint string, ids identity.Provider, baseTime time.Time) *client.RecordingClient { + cli, err := client.NewRecordingClient([]string{endpoint}, ids, baseTime) + if err != nil { + // Antithesis Assertion: client should always be able to connect to an etcd host + assert.Unreachable("Client failed to connect to an etcd host", map[string]any{"host": endpoint, "error": err}) + os.Exit(1) + } + return cli } -// wrap converts a receive-only channel to receive-only struct{} channel -func wrap[T any](from <-chan T) <-chan struct{} { +func closeAfter(ctx context.Context, t time.Duration) <-chan struct{} { out := make(chan struct{}) go func() { for { - <-from - out <- struct{}{} + select { + case <-time.After(t): + case <-ctx.Done(): + } + close(out) } }() return out } - -func main() { - testRobustness() -} From 63025cc19ccf8d08cbaa7b6a730904d95604546c Mon Sep 17 00:00:00 2001 From: Mike Crute Date: Sat, 21 Oct 2023 12:52:27 -0700 Subject: [PATCH 0137/1068] clientv3: allow setting JWT directly etcd supports using signed JWTs in a verify-only mode where the server has access to only a public key and therefore can not create tokens but can validate them. For this to work a client must not call Authenticate and must instead submit a pre-signed JWT with their request. The server will validate this token, extract the username from it, and may allow the client access. This change allows setting the JWT directly and not setting a username and password. If a JWT is provided the client will no longer call Authenticate, which would not work anyhow. It also provides a public method UpdateAuthToken to allow a user of the client to update their auth token, for example, if it expires. In this flow all token lifecycle management is handled outside of the client as a concern of the client user. Signed-off-by: Mike Crute --- client/v3/client.go | 20 ++++++++++- client/v3/client_test.go | 77 ++++++++++++++++++++++++++++++++++++++++ client/v3/config.go | 7 +++- client/v3/config_test.go | 19 ++++++++++ 4 files changed, 121 insertions(+), 2 deletions(-) diff --git a/client/v3/client.go b/client/v3/client.go index 24f5988986d3..30269cfac39d 100644 --- a/client/v3/client.go +++ b/client/v3/client.go @@ -69,7 +69,10 @@ type Client struct { // Username is a user name for authentication. Username string // Password is a password for authentication. - Password string + Password string + // Token is a JWT used for authentication instead of a password. + Token string + authTokenBundle credentials.PerRPCCredentialsBundle callOpts []grpc.CallOption @@ -288,6 +291,11 @@ func (c *Client) Dial(ep string) (*grpc.ClientConn, error) { func (c *Client) getToken(ctx context.Context) error { var err error // return last error in a case of fail + if c.Token != "" { + c.authTokenBundle.UpdateAuthToken(c.Token) + return nil + } + if c.Username == "" || c.Password == "" { return nil } @@ -376,6 +384,10 @@ func newClient(cfg *Config) (*Client, error) { creds = credentials.NewTransportCredential(cfg.TLS) } + if cfg.Token != "" && (cfg.Username != "" || cfg.Password != "") { + return nil, errors.New("Username/Password and Token configurations are mutually exclusive") + } + // use a temporary skeleton client to bootstrap first connection baseCtx := context.TODO() if cfg.Context != nil { @@ -414,6 +426,12 @@ func newClient(cfg *Config) (*Client, error) { client.Password = cfg.Password client.authTokenBundle = credentials.NewPerRPCCredentialBundle() } + + if cfg.Token != "" { + client.Token = cfg.Token + client.authTokenBundle = credentials.NewPerRPCCredentialBundle() + } + if cfg.MaxCallSendMsgSize > 0 || cfg.MaxCallRecvMsgSize > 0 { if cfg.MaxCallRecvMsgSize > 0 && cfg.MaxCallSendMsgSize > cfg.MaxCallRecvMsgSize { return nil, fmt.Errorf("gRPC message recv limit (%d bytes) must be greater than send limit (%d bytes)", cfg.MaxCallRecvMsgSize, cfg.MaxCallSendMsgSize) diff --git a/client/v3/client_test.go b/client/v3/client_test.go index 5841dc020237..c26c14097648 100644 --- a/client/v3/client_test.go +++ b/client/v3/client_test.go @@ -317,6 +317,75 @@ func TestAuthTokenBundleNoOverwrite(t *testing.T) { } } +func TestNewWithOnlyJWT(t *testing.T) { + // This call in particular changes working directory to the tmp dir of + // the test. The `etcd-auth-test:1` can be created in local directory, + // not exceeding the longest allowed path on OsX. + testutil.BeforeTest(t) + + // Create a mock AuthServer to handle Authenticate RPCs. + lis, err := net.Listen("unix", "etcd-auth-test:1") + if err != nil { + t.Fatal(err) + } + defer lis.Close() + addr := "unix://" + lis.Addr().String() + srv := grpc.NewServer() + // Having a token removes the need to ever call Authenticate on the + // server. If that happens then this will cause a connection failure. + etcdserverpb.RegisterAuthServer(srv, mockFailingAuthServer{}) + go srv.Serve(lis) + defer srv.Stop() + + c, err := NewClient(t, Config{ + DialTimeout: 5 * time.Second, + Endpoints: []string{addr}, + Token: "foo", + }) + if err != nil { + t.Fatal(err) + } + defer c.Close() + + meta, err := c.authTokenBundle.PerRPCCredentials().GetRequestMetadata(context.Background(), "") + if err != nil { + t.Errorf("Error building request metadata: %s", err) + } + + if tok, ok := meta[rpctypes.TokenFieldNameGRPC]; !ok { + t.Error("Token was not successfuly set in the auth bundle") + } else if tok != "foo" { + t.Errorf("Incorrect token set in auth bundle, got '%s', expected 'foo'", tok) + } +} + +func TestNewOnlyJWTExclusivity(t *testing.T) { + testutil.BeforeTest(t) + + // Create a mock AuthServer to handle Authenticate RPCs. + lis, err := net.Listen("unix", "etcd-auth-test:1") + if err != nil { + t.Fatal(err) + } + defer lis.Close() + addr := "unix://" + lis.Addr().String() + srv := grpc.NewServer() + // Having a token removes the need to ever call Authenticate on the + // server. If that happens then this will cause a connection failure. + etcdserverpb.RegisterAuthServer(srv, mockFailingAuthServer{}) + go srv.Serve(lis) + defer srv.Stop() + + _, err = NewClient(t, Config{ + DialTimeout: 5 * time.Second, + Endpoints: []string{addr}, + Token: "foo", + Username: "user", + Password: "pass", + }) + require.Errorf(t, err, "Username/Password and Token configurations are mutually exclusive") +} + func TestSyncFiltersMembers(t *testing.T) { c, _ := NewClient(t, Config{Endpoints: []string{"http://254.0.0.1:12345"}}) defer c.Close() @@ -476,6 +545,14 @@ func (mm mockMaintenance) Downgrade(ctx context.Context, action DowngradeAction, return nil, nil } +type mockFailingAuthServer struct { + *etcdserverpb.UnimplementedAuthServer +} + +func (mockFailingAuthServer) Authenticate(context.Context, *etcdserverpb.AuthenticateRequest) (*etcdserverpb.AuthenticateResponse, error) { + return nil, errors.New("this auth server always fails") +} + type mockAuthServer struct { *etcdserverpb.UnimplementedAuthServer } diff --git a/client/v3/config.go b/client/v3/config.go index 8351828d2f90..61d093760749 100644 --- a/client/v3/config.go +++ b/client/v3/config.go @@ -66,6 +66,9 @@ type Config struct { // Password is a password for authentication. Password string `json:"password"` + // Token is a JWT used for authentication instead of a password. + Token string `json:"token"` + // RejectOldCluster when set will refuse to create a client against an outdated cluster. RejectOldCluster bool `json:"reject-old-cluster"` @@ -130,6 +133,7 @@ type SecureConfig struct { type AuthConfig struct { Username string `json:"username"` Password string `json:"password"` + Token string `json:"token"` } func (cs *ConfigSpec) Clone() *ConfigSpec { @@ -157,7 +161,7 @@ func (cs *ConfigSpec) Clone() *ConfigSpec { } func (cfg AuthConfig) Empty() bool { - return cfg.Username == "" && cfg.Password == "" + return cfg.Username == "" && cfg.Password == "" && cfg.Token == "" } // NewClientConfig creates a Config based on the provided ConfigSpec. @@ -180,6 +184,7 @@ func NewClientConfig(confSpec *ConfigSpec, lg *zap.Logger) (*Config, error) { if confSpec.Auth != nil { cfg.Username = confSpec.Auth.Username cfg.Password = confSpec.Auth.Password + cfg.Token = confSpec.Auth.Token } return cfg, nil diff --git a/client/v3/config_test.go b/client/v3/config_test.go index 1fe2fb2d391e..eb3c8bcaacd0 100644 --- a/client/v3/config_test.go +++ b/client/v3/config_test.go @@ -71,6 +71,25 @@ func TestNewClientConfig(t *testing.T) { Password: "changeme", }, }, + { + name: "JWT specified", + spec: ConfigSpec{ + Endpoints: []string{"http://192.168.0.12:2379"}, + DialTimeout: 1 * time.Second, + KeepAliveTime: 4 * time.Second, + KeepAliveTimeout: 6 * time.Second, + Auth: &AuthConfig{ + Token: "test", + }, + }, + expectedConf: Config{ + Endpoints: []string{"http://192.168.0.12:2379"}, + DialTimeout: 1 * time.Second, + DialKeepAliveTime: 4 * time.Second, + DialKeepAliveTimeout: 6 * time.Second, + Token: "test", + }, + }, { name: "default secure transport", spec: ConfigSpec{ From 05af487c6f060a5f4abd244777a5c745d36fcdfc Mon Sep 17 00:00:00 2001 From: Mike Crute Date: Sat, 21 Oct 2023 14:30:59 -0700 Subject: [PATCH 0138/1068] etcdclt: support passing JWT auth token Signed-off-by: Mike Crute --- etcdctl/ctlv3/command/global.go | 12 +++++++++++- etcdctl/ctlv3/ctl.go | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/etcdctl/ctlv3/command/global.go b/etcdctl/ctlv3/command/global.go index 019b638d3940..602f2776d2d0 100644 --- a/etcdctl/ctlv3/command/global.go +++ b/etcdctl/ctlv3/command/global.go @@ -58,6 +58,7 @@ type GlobalFlags struct { User string Password string + Token string Debug bool } @@ -290,13 +291,22 @@ func authCfgFromCmd(cmd *cobra.Command) *clientv3.AuthConfig { if err != nil { cobrautl.ExitWithError(cobrautl.ExitBadArgs, err) } + tokenFlag, err := cmd.Flags().GetString("auth-jwt-token") + if err != nil { + cobrautl.ExitWithError(cobrautl.ExitBadArgs, err) + } - if userFlag == "" { + if userFlag == "" && tokenFlag == "" { return nil } var cfg clientv3.AuthConfig + if tokenFlag != "" { + cfg.Token = tokenFlag + return &cfg + } + if passwordFlag == "" { splitted := strings.SplitN(userFlag, ":", 2) if len(splitted) < 2 { diff --git a/etcdctl/ctlv3/ctl.go b/etcdctl/ctlv3/ctl.go index 9925385030b0..e992fa4fa0c8 100644 --- a/etcdctl/ctlv3/ctl.go +++ b/etcdctl/ctlv3/ctl.go @@ -70,6 +70,7 @@ func init() { rootCmd.PersistentFlags().StringVar(&globalFlags.TLS.CertFile, "cert", "", "identify secure client using this TLS certificate file") rootCmd.PersistentFlags().StringVar(&globalFlags.TLS.KeyFile, "key", "", "identify secure client using this TLS key file") rootCmd.PersistentFlags().StringVar(&globalFlags.TLS.TrustedCAFile, "cacert", "", "verify certificates of TLS-enabled secure servers using this CA bundle") + rootCmd.PersistentFlags().StringVar(&globalFlags.Token, "auth-jwt-token", "", "JWT token used for authentication (if this option is used, --user and --password should not be set)") rootCmd.PersistentFlags().StringVar(&globalFlags.User, "user", "", "username[:password] for authentication (prompt if password is not supplied)") rootCmd.PersistentFlags().StringVar(&globalFlags.Password, "password", "", "password for authentication (if this option is used, --user option shouldn't include password)") rootCmd.PersistentFlags().StringVarP(&globalFlags.TLS.ServerName, "discovery-srv", "d", "", "domain name to query for SRV records describing cluster endpoints") From 32fc5a664c2bcbfda2a04e483e3319537ee9ad65 Mon Sep 17 00:00:00 2001 From: Mike Crute Date: Tue, 23 Jul 2024 10:53:23 -0700 Subject: [PATCH 0139/1068] test: validate direct JWT passing and acceptance Signed-off-by: Mike Crute --- tests/common/auth_test.go | 22 ++++++++++++ tests/common/auth_util.go | 49 ++++++++++++++++++++++++++ tests/common/e2e_test.go | 4 +++ tests/common/integration_test.go | 4 +++ tests/common/unit_test.go | 4 +++ tests/framework/e2e/etcdctl.go | 12 ++++++- tests/framework/integration/cluster.go | 7 ++++ tests/go.mod | 2 +- 8 files changed, 102 insertions(+), 2 deletions(-) diff --git a/tests/common/auth_test.go b/tests/common/auth_test.go index 491fecfb30c9..05bae0757d29 100644 --- a/tests/common/auth_test.go +++ b/tests/common/auth_test.go @@ -36,6 +36,9 @@ var ( tokenTTL = time.Second * 3 defaultAuthToken = fmt.Sprintf("jwt,pub-key=%s,priv-key=%s,sign-method=RS256,ttl=%s", mustAbsPath("../fixtures/server.crt"), mustAbsPath("../fixtures/server.key.insecure"), tokenTTL) + defaultKeyPath = mustAbsPath("../fixtures/server.key.insecure") + verifyJWTOnlyAuth = fmt.Sprintf("jwt,pub-key=%s,sign-method=RS256,ttl=%s", + mustAbsPath("../fixtures/server.crt"), tokenTTL) ) const ( @@ -883,6 +886,25 @@ func TestAuthJWTExpire(t *testing.T) { }) } +func TestAuthJWTOnly(t *testing.T) { + testRunner.BeforeTest(t) + ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + defer cancel() + clus := testRunner.NewCluster(ctx, t, config.WithClusterConfig(config.ClusterConfig{ClusterSize: 1, AuthToken: verifyJWTOnlyAuth})) + defer clus.Close() + cc := testutils.MustClient(clus.Client()) + testutils.ExecuteUntil(ctx, t, func() { + authRev, err := setupAuthAndGetRevision(cc, []authRole{testRole}, []authUser{rootUser, testUser}) + require.NoErrorf(t, err, "failed to enable auth") + + token, err := createSignedJWT(defaultKeyPath, "RS256", testUserName, authRev) + require.NoErrorf(t, err, "failed to create test user JWT") + + testUserAuthClient := testutils.MustClient(clus.Client(WithAuthToken(token))) + require.NoError(t, testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{})) + }) +} + // TestAuthRevisionConsistency ensures auth revision is the same after member restarts func TestAuthRevisionConsistency(t *testing.T) { testRunner.BeforeTest(t) diff --git a/tests/common/auth_util.go b/tests/common/auth_util.go index b157ef4fc83b..6b347f9799de 100644 --- a/tests/common/auth_util.go +++ b/tests/common/auth_util.go @@ -17,8 +17,11 @@ package common import ( "context" "fmt" + "os" "testing" + "time" + "github.com/golang-jwt/jwt/v5" "github.com/stretchr/testify/require" "go.etcd.io/etcd/api/v3/authpb" @@ -93,6 +96,29 @@ func createUsers(c interfaces.Client, users []authUser) error { return nil } +func createSignedJWT(keyPath, alg, username string, authRevision uint64) (string, error) { + signMethod := jwt.GetSigningMethod(alg) + + keyBytes, err := os.ReadFile(keyPath) + if err != nil { + return "", err + } + + key, err := jwt.ParseRSAPrivateKeyFromPEM(keyBytes) + if err != nil { + return "", err + } + + tk := jwt.NewWithClaims(signMethod, + jwt.MapClaims{ + "username": username, + "revision": authRevision, + "exp": time.Now().Add(time.Minute).Unix(), + }) + + return tk.SignedString(key) +} + func setupAuth(c interfaces.Client, roles []authRole, users []authUser) error { // create roles if err := createRoles(c, roles); err != nil { @@ -107,6 +133,29 @@ func setupAuth(c interfaces.Client, roles []authRole, users []authUser) error { return c.AuthEnable(context.TODO()) } +func setupAuthAndGetRevision(c interfaces.Client, roles []authRole, users []authUser) (uint64, error) { + // create roles + if err := createRoles(c, roles); err != nil { + return 0, err + } + + if err := createUsers(c, users); err != nil { + return 0, err + } + + // This needs to happen before enabling auth for the TestAuthJWTOnly + // test case because once auth is enabled we can no longer mint a valid + // auth token without the revision, which we won't be able to obtain + // without a valid auth token. + authrev, err := c.AuthStatus(context.TODO()) + if err != nil { + return 0, err + } + + // enable auth + return authrev.AuthRevision, c.AuthEnable(context.TODO()) +} + func requireRolePermissionEqual(t *testing.T, expectRole authRole, actual []*authpb.Permission) { require.Len(t, actual, 1) require.Equal(t, expectRole.permission, clientv3.PermissionType(actual[0].PermType)) diff --git a/tests/common/e2e_test.go b/tests/common/e2e_test.go index 11c4f94a335b..e9e2f19215bb 100644 --- a/tests/common/e2e_test.go +++ b/tests/common/e2e_test.go @@ -78,6 +78,10 @@ func WithAuth(userName, password string) config.ClientOption { return e2e.WithAuth(userName, password) } +func WithAuthToken(token string) config.ClientOption { + return e2e.WithAuthToken(token) +} + func WithEndpoints(endpoints []string) config.ClientOption { return e2e.WithEndpoints(endpoints) } diff --git a/tests/common/integration_test.go b/tests/common/integration_test.go index c4cabeeb1f98..f41055c44287 100644 --- a/tests/common/integration_test.go +++ b/tests/common/integration_test.go @@ -56,6 +56,10 @@ func WithAuth(userName, password string) config.ClientOption { return integration.WithAuth(userName, password) } +func WithAuthToken(token string) config.ClientOption { + return integration.WithAuthToken(token) +} + func WithEndpoints(endpoints []string) config.ClientOption { return integration.WithEndpoints(endpoints) } diff --git a/tests/common/unit_test.go b/tests/common/unit_test.go index 4b172e7a3cb4..48e3a51cda17 100644 --- a/tests/common/unit_test.go +++ b/tests/common/unit_test.go @@ -37,6 +37,10 @@ func WithAuth(userName, password string) config.ClientOption { return func(any) {} } +func WithAuthToken(token string) config.ClientOption { + return func(any) {} +} + func WithEndpoints(endpoints []string) config.ClientOption { return func(any) {} } diff --git a/tests/framework/e2e/etcdctl.go b/tests/framework/e2e/etcdctl.go index 970b67d39d50..29e07139668b 100644 --- a/tests/framework/e2e/etcdctl.go +++ b/tests/framework/e2e/etcdctl.go @@ -56,6 +56,7 @@ func NewEtcdctl(cfg ClientConfig, endpoints []string, opts ...config.ClientOptio DialOptions: []grpc.DialOption{grpc.WithBlock()}, Username: ctl.authConfig.Username, Password: ctl.authConfig.Password, + Token: ctl.authConfig.Token, }) if err != nil { return nil, err @@ -74,6 +75,13 @@ func WithAuth(userName, password string) config.ClientOption { } } +func WithAuthToken(token string) config.ClientOption { + return func(c any) { + ctl := c.(*EtcdctlV3) + ctl.authConfig.Token = token + } +} + func WithEndpoints(endpoints []string) config.ClientOption { return func(c any) { ctl := c.(*EtcdctlV3) @@ -350,7 +358,9 @@ func (ctl *EtcdctlV3) flags() map[string]string { } } fmap["endpoints"] = strings.Join(ctl.endpoints, ",") - if !ctl.authConfig.Empty() { + if ctl.authConfig.Token != "" { + fmap["auth-jwt-token"] = ctl.authConfig.Token + } else if !ctl.authConfig.Empty() { fmap["user"] = ctl.authConfig.Username + ":" + ctl.authConfig.Password } return fmap diff --git a/tests/framework/integration/cluster.go b/tests/framework/integration/cluster.go index 5cd6321b0f16..4ff6d83edd5a 100644 --- a/tests/framework/integration/cluster.go +++ b/tests/framework/integration/cluster.go @@ -1483,6 +1483,13 @@ func WithAuth(userName, password string) framecfg.ClientOption { } } +func WithAuthToken(token string) framecfg.ClientOption { + return func(c any) { + cfg := c.(*clientv3.Config) + cfg.Token = token + } +} + func WithEndpoints(endpoints []string) framecfg.ClientOption { return func(c any) { cfg := c.(*clientv3.Config) diff --git a/tests/go.mod b/tests/go.mod index f8300233862a..ed42b70771d8 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -19,6 +19,7 @@ require ( github.com/anishathalye/porcupine v1.0.2 github.com/antithesishq/antithesis-sdk-go v0.4.3 github.com/coreos/go-semver v0.3.1 + github.com/golang-jwt/jwt/v5 v5.2.2 github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 @@ -67,7 +68,6 @@ require ( github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/google/btree v1.1.3 // indirect github.com/google/uuid v1.6.0 // indirect From c2dcdde5351ad3925370e7f2fd98a2fc79a780db Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 6 May 2025 15:38:21 +0100 Subject: [PATCH 0140/1068] Update roadmap to add range stream stream feature in v3.7 Signed-off-by: Benjamin Wang --- Documentation/contributor-guide/roadmap.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Documentation/contributor-guide/roadmap.md b/Documentation/contributor-guide/roadmap.md index d443ea0a4f54..f683490e7193 100644 --- a/Documentation/contributor-guide/roadmap.md +++ b/Documentation/contributor-guide/roadmap.md @@ -12,18 +12,18 @@ Each item has an assigned priority. Refer to [priority definitions](https://gith For a full list of tasks in `v3.6.0`, please see [milestone etcd-v3.6](https://github.com/etcd-io/etcd/milestone/38). -| Title | Priority | Status | Note | -|--------------------------------------------------------------------------------------------------------------------|----------|-------------|--------------------------------------------------------------------------------------------------------------| -| [Support downgrade](https://github.com/etcd-io/etcd/issues/11716) | priority/important-soon | In progress | etcd will support downgrade starting from 3.6.0. But it will also support offline downgrade from 3.5 to 3.4. | -| [StoreV2 deprecation](https://github.com/etcd-io/etcd/issues/12913) | priority/important-soon | In progress | This task will be covered in both 3.6 and 3.7. | -| [Release raft 3.6.0](https://github.com/etcd-io/raft/issues/89) | priority/important-soon | Completed | etcd 3.6.0 will depends on raft 3.6.0 | -| [Release bbolt 1.4.0](https://github.com/etcd-io/bbolt/issues/553) | priority/important-soon | Completed | etcd 3.6.0 will depends on bbolt 1.4.0 | -| [Support /livez and /readyz endpoints](https://github.com/etcd-io/etcd/issues/16007) | priority/important-longterm | Completed | It provides clearer APIs, and can also work around the stalled writes issue | +| Title | Priority | Status | Note | +|--------------------------------------------------------------------------------------------------------------------|-----------------------------|-------------|--------------------------------------------------------------------------------------------------------------| +| [Support downgrade](https://github.com/etcd-io/etcd/issues/11716) | priority/important-soon | In progress | etcd will support downgrade starting from 3.6.0. But it will also support offline downgrade from 3.5 to 3.4. | +| [StoreV2 deprecation](https://github.com/etcd-io/etcd/issues/12913) | priority/important-soon | In progress | This task will be covered in both 3.6 and 3.7. | +| [Release raft 3.6.0](https://github.com/etcd-io/raft/issues/89) | priority/important-soon | Completed | etcd 3.6.0 will depends on raft 3.6.0 | +| [Release bbolt 1.4.0](https://github.com/etcd-io/bbolt/issues/553) | priority/important-soon | Completed | etcd 3.6.0 will depends on bbolt 1.4.0 | +| [Support /livez and /readyz endpoints](https://github.com/etcd-io/etcd/issues/16007) | priority/important-longterm | Completed | It provides clearer APIs, and can also work around the stalled writes issue | | [Bump gRPC](https://github.com/etcd-io/etcd/issues/16290) | priority/important-longterm | Completed | It isn't guaranteed to be resolved in 3.6, and might be postponed to 3.7 depending on the effort and risk. | | [Deprecate grpc-gateway or bump it](https://github.com/etcd-io/etcd/issues/14499) | priority/important-longterm | Completed | It isn't guaranteed to be resolved in 3.6, and might be postponed to 3.7 depending on the effort and risk. | | [bbolt: Add logger into bbolt](https://github.com/etcd-io/bbolt/issues/509) | priority/important-longterm | Completed | It's important to diagnose bbolt issues | | [bbolt: Add surgery commands](https://github.com/etcd-io/bbolt/issues/370) | priority/important-longterm | Completed | Surgery commands are important for fixing corrupted db files | -| [Evaluate and (Gradulate or deprecate/remove) experimental features](https://github.com/etcd-io/etcd/issues/16292) | priority/backlog | Not started | This task will be covered in both 3.6 and 3.7. | +| [Evaluate and (Gradulate or deprecate/remove) experimental features](https://github.com/etcd-io/etcd/issues/16292) | priority/backlog | Not started | This task will be covered in both 3.6 and 3.7. | ## v3.7.0 @@ -32,8 +32,9 @@ For a full list of tasks in `v3.7.0`, please see [milestone etcd-v3.7](https://g | Title | Priority | Note | |-------------------------------------------------------------------------------------------------------------------|----------|-----------------------------------------------------------------------------------| | [StoreV2 deprecation](https://github.com/etcd-io/etcd/issues/12913) | P0 | Finish the remaining tasks 3.7. | +| [Support range stream](https://github.com/etcd-io/etcd/issues/12342) | P0 | to be investigated & discussed. | | [Refactor lease: Lease might be revoked by mistake by old leader](https://github.com/etcd-io/etcd/issues/15247) | P1 | to be investigated & discussed | -| [Integrate raft's new feature (async write) into etcd](https://github.com/etcd-io/etcd/issues/16291) | P1 | It should improve the performance | +| [Integrate raft's new feature (async write) into etcd](https://github.com/etcd-io/etcd/issues/16291) | P1 | It should improve the performance | | [bbolt: Support customizing the bbolt rebalance threshold](https://github.com/etcd-io/bbolt/issues/422) | P2 | It may get rid of etcd's defragmentation. Both bbolt and etcd need to be changed. | | [Evaluate and (graduate or deprecate/remove) experimental features](https://github.com/etcd-io/etcd/issues/16292) | P2 | Finish the remaining tasks 3.7. | From 81bbfc22ed64da1bab10ab046b8b145fcd2ffb9a Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Mon, 5 May 2025 14:52:30 +0100 Subject: [PATCH 0141/1068] Update dependency management guide Signed-off-by: Benjamin Wang --- Documentation/contributor-guide/dependency_management.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/contributor-guide/dependency_management.md b/Documentation/contributor-guide/dependency_management.md index 8b022b424f8f..5299677bad7c 100644 --- a/Documentation/contributor-guide/dependency_management.md +++ b/Documentation/contributor-guide/dependency_management.md @@ -147,11 +147,11 @@ References: [bbolt](https://github.com/etcd-io/bbolt) and [raft](https://github.com/etcd-io/raft) are two core dependencies of etcd. -Both etcd 3.4.x and 3.5.x depend on bbolt 1.3.x, and etcd 3.6.x (`main` branch) depends on bbolt 1.4.x. +Both etcd 3.4.x and 3.5.x depend on bbolt 1.3.x, and etcd 3.6.x depends on bbolt 1.4.x. raft is included in the etcd repository for release-3.4 and release-3.5 branches, so etcd 3.4.x and 3.5.x do not depend on any -external raft module. We moved raft into [a separate repository](https://github.com/etcd-io/raft) starting from 3.6 (`main` branch), and the first raft -release will be v3.6.0, so etcd 3.6.x will depend on raft 3.6.x. +external raft module. We moved raft into [a separate repository](https://github.com/etcd-io/raft) starting from 3.6, and the first raft +release is v3.6.0, so etcd 3.6.0 depends on raft v3.6.0. Please see the table below: From 4647ab47e131199c8ad1b699db4c8a524df55667 Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 6 May 2025 17:01:17 +0800 Subject: [PATCH 0142/1068] dependency: bump golang.org/x/sys from 0.32.0 to 0.33.0 PR: https://github.com/etcd-io/etcd/pull/19861 Signed-off-by: joshjms --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 22 files changed, 33 insertions(+), 33 deletions(-) diff --git a/api/go.mod b/api/go.mod index 48b4a3074689..35f05b9340b0 100644 --- a/api/go.mod +++ b/api/go.mod @@ -22,7 +22,7 @@ require ( go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect golang.org/x/net v0.39.0 // indirect - golang.org/x/sys v0.32.0 // indirect + golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/api/go.sum b/api/go.sum index 8e6574026f39..12d8313b010d 100644 --- a/api/go.sum +++ b/api/go.sum @@ -59,8 +59,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index da293517f7b5..73a134777225 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.5.0 github.com/stretchr/testify v1.10.0 go.uber.org/zap v1.27.0 - golang.org/x/sys v0.32.0 + golang.org/x/sys v0.33.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index b46c98cceb09..b7f7b48973e3 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -25,8 +25,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index ceaacef4de68..2f3aa81fd483 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -35,7 +35,7 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.39.0 // indirect - golang.org/x/sys v0.32.0 // indirect + golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 4c61092ccfb6..50530a608ec4 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -93,8 +93,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index b2963cc191e5..121abd6a8d28 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -38,7 +38,7 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.39.0 // indirect - golang.org/x/sys v0.32.0 // indirect + golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 6e9e3203e983..5218eed1d8b0 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -117,8 +117,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 28e411efefa4..788fa7efb00b 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -83,7 +83,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.37.0 // indirect golang.org/x/net v0.39.0 // indirect - golang.org/x/sys v0.32.0 // indirect + golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect golang.org/x/time v0.11.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index f8d1075b703b..5771f509d103 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -153,8 +153,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= diff --git a/go.mod b/go.mod index 9260b84afa08..2268a6729b40 100644 --- a/go.mod +++ b/go.mod @@ -93,7 +93,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.37.0 // indirect golang.org/x/net v0.39.0 // indirect - golang.org/x/sys v0.32.0 // indirect + golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/go.sum b/go.sum index 5a78a708db0b..f0a51902bbda 100644 --- a/go.sum +++ b/go.sum @@ -215,8 +215,8 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= diff --git a/pkg/go.mod b/pkg/go.mod index ab0c35adc55e..c2d69fd1e59a 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -25,7 +25,7 @@ require ( go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.39.0 // indirect - golang.org/x/sys v0.32.0 // indirect + golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 9d912d4f8c29..ee451d06d8b2 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -55,8 +55,8 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= diff --git a/server/go.mod b/server/go.mod index 063a5538fd81..9887f36aba47 100644 --- a/server/go.mod +++ b/server/go.mod @@ -71,7 +71,7 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/sys v0.32.0 // indirect + golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/server/go.sum b/server/go.sum index 65c6aaabf3c7..06520d281767 100644 --- a/server/go.sum +++ b/server/go.sum @@ -192,8 +192,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= diff --git a/tests/go.mod b/tests/go.mod index ed42b70771d8..c895a1b8cc5a 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -95,7 +95,7 @@ require ( go.opentelemetry.io/otel/metric v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.39.0 // indirect - golang.org/x/sys v0.32.0 // indirect + golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect diff --git a/tests/go.sum b/tests/go.sum index 619adf3f1cf1..ad959ee8bb39 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -221,8 +221,8 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index fb743ea962fc..6beafeaa1958 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -218,7 +218,7 @@ require ( golang.org/x/mod v0.24.0 // indirect golang.org/x/net v0.39.0 // indirect golang.org/x/sync v0.13.0 // indirect - golang.org/x/sys v0.32.0 // indirect + golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.31.0 // indirect golang.org/x/text v0.24.0 // indirect golang.org/x/tools v0.32.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index f1b3188c62a7..878ee1f471f9 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -624,8 +624,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 8c017f3a8b5e..8d518eea6582 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -19,7 +19,7 @@ require ( go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect golang.org/x/net v0.39.0 // indirect - golang.org/x/sys v0.32.0 // indirect + golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect google.golang.org/grpc v1.72.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 12d2bc8e6b41..2fed66364f74 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1484,8 +1484,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From ff53bfd349daf34209bc2570289940c778abe425 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 May 2025 17:57:34 +0000 Subject: [PATCH 0143/1068] build(deps): bump github/codeql-action from 3.28.16 to 3.28.17 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.16 to 3.28.17. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/28deaeda66b76a05916b6923827895f2b14ab387...60168efe1c415ce0f5521ea06d5c2062adbeed1b) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.28.17 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 996bd149e3b8..fbe9c42a4b33 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 + uses: github/codeql-action/init@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 + uses: github/codeql-action/autobuild@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 + uses: github/codeql-action/analyze@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 2cf1c2344aea..a14cd3962e2b 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16 + uses: github/codeql-action/upload-sarif@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 with: sarif_file: results.sarif From 8d96ee52aee3f2fba00301b59520c2b1ff80b34e Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 6 May 2025 17:08:50 +0800 Subject: [PATCH 0144/1068] dependency: bump go.opentelemetry.io/proto/otlp from 1.5.0 to 1.6.0 PR: https://github.com/etcd-io/etcd/pull/19858 Signed-off-by: joshjms --- api/go.mod | 4 ++-- api/go.sum | 8 ++++---- client/v3/go.mod | 4 ++-- client/v3/go.sum | 8 ++++---- etcdctl/go.mod | 4 ++-- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 12 ++++++------ go.mod | 6 +++--- go.sum | 12 ++++++------ pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 6 +++--- server/go.sum | 12 ++++++------ tests/go.mod | 6 +++--- tests/go.sum | 12 ++++++------ tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 8 ++++---- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 20 files changed, 66 insertions(+), 66 deletions(-) diff --git a/api/go.mod b/api/go.mod index 35f05b9340b0..eb14d58e9062 100644 --- a/api/go.mod +++ b/api/go.mod @@ -10,7 +10,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/stretchr/testify v1.10.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb + google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 google.golang.org/grpc v1.72.0 google.golang.org/protobuf v1.36.6 ) @@ -24,7 +24,7 @@ require ( golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 12d8313b010d..fc48f215f1d8 100644 --- a/api/go.sum +++ b/api/go.sum @@ -73,10 +73,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/client/v3/go.mod b/client/v3/go.mod index 2f3aa81fd483..672bb43d878a 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -37,8 +37,8 @@ require ( golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 50530a608ec4..1daaf247e15f 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -107,10 +107,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 121abd6a8d28..c8298511b83c 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -40,8 +40,8 @@ require ( golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 5218eed1d8b0..fa6ac53fd2d6 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -133,10 +133,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 788fa7efb00b..4470d237b36c 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -79,15 +79,15 @@ require ( go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect - go.opentelemetry.io/proto/otlp v1.5.0 // indirect + go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.37.0 // indirect golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect golang.org/x/time v0.11.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/grpc v1.72.0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 5771f509d103..76d95a22d098 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -122,8 +122,8 @@ go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= -go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= -go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= +go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= +go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= 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= @@ -169,10 +169,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/go.mod b/go.mod index 2268a6729b40..c60db7b3b9d9 100644 --- a/go.mod +++ b/go.mod @@ -89,14 +89,14 @@ require ( go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect - go.opentelemetry.io/proto/otlp v1.5.0 // indirect + go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.37.0 // indirect golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect diff --git a/go.sum b/go.sum index f0a51902bbda..25a72e45411b 100644 --- a/go.sum +++ b/go.sum @@ -167,8 +167,8 @@ go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= -go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= -go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= +go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= +go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= @@ -240,10 +240,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/pkg/go.mod b/pkg/go.mod index c2d69fd1e59a..185720bd5518 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -27,7 +27,7 @@ require ( golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index ee451d06d8b2..4eb0b74e5b9a 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -59,8 +59,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/server/go.mod b/server/go.mod index 9887f36aba47..ed0ab05f05f5 100644 --- a/server/go.mod +++ b/server/go.mod @@ -40,7 +40,7 @@ require ( golang.org/x/crypto v0.37.0 golang.org/x/net v0.39.0 golang.org/x/time v0.11.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb + google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 google.golang.org/grpc v1.72.0 google.golang.org/protobuf v1.36.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 @@ -69,11 +69,11 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect - go.opentelemetry.io/proto/otlp v1.5.0 // indirect + go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect ) diff --git a/server/go.sum b/server/go.sum index 06520d281767..7ad5116c947f 100644 --- a/server/go.sum +++ b/server/go.sum @@ -145,8 +145,8 @@ go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= -go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= -go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= +go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= +go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= @@ -217,10 +217,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/tests/go.mod b/tests/go.mod index c895a1b8cc5a..c7c26bde70ae 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -44,7 +44,7 @@ require ( go.opentelemetry.io/otel v1.35.0 go.opentelemetry.io/otel/sdk v1.35.0 go.opentelemetry.io/otel/trace v1.35.0 - go.opentelemetry.io/proto/otlp v1.5.0 + go.opentelemetry.io/proto/otlp v1.6.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.37.0 golang.org/x/sync v0.13.0 @@ -97,8 +97,8 @@ require ( golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect diff --git a/tests/go.sum b/tests/go.sum index ad959ee8bb39..be93cd575834 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -173,8 +173,8 @@ go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= -go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= -go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= +go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= +go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= @@ -246,10 +246,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 6beafeaa1958..63628ca872ea 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -222,8 +222,8 @@ require ( golang.org/x/term v0.31.0 // indirect golang.org/x/text v0.24.0 // indirect golang.org/x/tools v0.32.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/grpc v1.72.0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 878ee1f471f9..35e24ec7fefc 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -684,10 +684,10 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 8d518eea6582..0a31690378ba 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -21,6 +21,6 @@ require ( golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.24.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/grpc v1.72.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 2fed66364f74..9d0e4133f988 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1841,8 +1841,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= From e559c5fcbf1a2e94703af60c2eb252536c543309 Mon Sep 17 00:00:00 2001 From: Abdur Rehman Date: Wed, 7 May 2025 05:40:44 +0500 Subject: [PATCH 0145/1068] validate history collected by recording client Signed-off-by: Abdur Rehman --- .../test-template/robustness/main.go | 30 ++++- tests/robustness/main_test.go | 6 +- tests/robustness/report/report.go | 4 +- tests/robustness/validate/operations.go | 17 ++- .../robustness/validate/patch_history_test.go | 34 ++--- tests/robustness/validate/validate.go | 51 +++---- tests/robustness/validate/validate_test.go | 124 +++++++++++++++++- 7 files changed, 211 insertions(+), 55 deletions(-) diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index 49be36dfed28..a4bf86553a87 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -18,12 +18,12 @@ package main import ( "context" - "fmt" "os" "sync" "time" "github.com/antithesishq/antithesis-sdk-go/assert" + "go.uber.org/zap" "golang.org/x/time/rate" "go.etcd.io/etcd/tests/v3/robustness/client" @@ -31,6 +31,7 @@ import ( robustnessrand "go.etcd.io/etcd/tests/v3/robustness/random" "go.etcd.io/etcd/tests/v3/robustness/report" "go.etcd.io/etcd/tests/v3/robustness/traffic" + "go.etcd.io/etcd/tests/v3/robustness/validate" ) var profile = traffic.Profile{ @@ -49,6 +50,30 @@ func main() { } func testRobustness(ctx context.Context, baseTime time.Time, duration time.Duration) { + lg, err := zap.NewProduction() + if err != nil { + panic(err) + } + reports := runTraffic(ctx, baseTime, duration) + lg.Info("Completed robustness traffic generation") + assert.Reachable("Completed robustness traffic generation", nil) + + validateConfig := validate.Config{ExpectRevisionUnique: traffic.EtcdAntithesis.ExpectUniqueRevision()} + result := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, nil, 5*time.Minute) + err = result.Linearization.Visualize(lg, "history.html") + if err != nil { + lg.Error("Failed to save visualization", zap.Error(result.Error)) + } + if result.Error != nil { + lg.Error("Robustness validation failed", zap.Error(result.Error)) + assert.Unreachable("Robustness validation failed", map[string]any{"error": result.Error}) + return + } + lg.Info("Completed robustness validation") + assert.Reachable("Completed robustness validation", nil) +} + +func runTraffic(ctx context.Context, baseTime time.Time, duration time.Duration) []report.ClientReport { limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), profile.BurstableQPS) finish := closeAfter(ctx, duration) ids := identity.NewIDProvider() @@ -78,8 +103,7 @@ func testRobustness(ctx context.Context, baseTime time.Time, duration time.Durat }(c) } wg.Wait() - fmt.Println("Completed robustness traffic generation") - assert.Reachable("Completed robustness traffic generation", nil) + return reports } func connect(endpoint string, ids identity.Provider, baseTime time.Time) *client.RecordingClient { diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index 885934df4cb6..abcec701f355 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -97,7 +97,11 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s scenari require.NoError(t, err) validateConfig := validate.Config{ExpectRevisionUnique: s.Traffic.ExpectUniqueRevision()} - r.Visualize = validate.ValidateAndReturnVisualize(t, lg, validateConfig, r.Client, persistedRequests, 5*time.Minute).Visualize + result := validate.ValidateAndReturnVisualize(lg, validateConfig, r.Client, persistedRequests, 5*time.Minute) + r.Visualize = result.Linearization.Visualize + if result.Error != nil { + t.Error(err) + } panicked = false } diff --git a/tests/robustness/report/report.go b/tests/robustness/report/report.go index b3d3d5a5e32c..4b3780c5de24 100644 --- a/tests/robustness/report/report.go +++ b/tests/robustness/report/report.go @@ -32,7 +32,7 @@ type TestReport struct { Logger *zap.Logger Cluster *e2e.EtcdProcessCluster Client []ClientReport - Visualize func(path string) error + Visualize func(lg *zap.Logger, path string) error } func testResultsDirectory(t *testing.T) string { @@ -69,7 +69,7 @@ func (r *TestReport) Report(t *testing.T, force bool) { persistClientReports(t, r.Logger, path, r.Client) } if r.Visualize != nil { - err := r.Visualize(filepath.Join(path, "history.html")) + err := r.Visualize(r.Logger, filepath.Join(path, "history.html")) if err != nil { t.Error(err) } diff --git a/tests/robustness/validate/operations.go b/tests/robustness/validate/operations.go index e13382e84a30..3d6e0d93d377 100644 --- a/tests/robustness/validate/operations.go +++ b/tests/robustness/validate/operations.go @@ -31,15 +31,19 @@ var ( errFutureRevRespRequested = errors.New("request about a future rev with response") ) -type Results struct { +type Result struct { + Linearization LinearizationResult + Error error +} + +type LinearizationResult struct { Info porcupine.LinearizationInfo Model porcupine.Model Linearizable porcupine.CheckResult - Lg *zap.Logger // TODO: Remove logger from struct and instead of making it an argument for Visualize } -func (r Results) Visualize(path string) error { - r.Lg.Info("Saving visualization", zap.String("path", path)) +func (r LinearizationResult) Visualize(lg *zap.Logger, path string) error { + lg.Info("Saving visualization", zap.String("path", path)) err := porcupine.VisualizePath(r.Model, r.Info, path) if err != nil { return fmt.Errorf("failed to visualize, err: %w", err) @@ -51,7 +55,7 @@ func validateLinearizableOperationsAndVisualize( lg *zap.Logger, operations []porcupine.Operation, timeout time.Duration, -) (results Results) { +) (results LinearizationResult) { lg.Info("Validating linearizable operations", zap.Duration("timeout", timeout)) start := time.Now() result, info := porcupine.CheckOperationsVerbose(model.NonDeterministicModel, operations, timeout) @@ -66,11 +70,10 @@ func validateLinearizableOperationsAndVisualize( default: panic(fmt.Sprintf("Unknown Linearization result %s", result)) } - return Results{ + return LinearizationResult{ Info: info, Model: model.NonDeterministicModel, Linearizable: result, - Lg: lg, } } diff --git a/tests/robustness/validate/patch_history_test.go b/tests/robustness/validate/patch_history_test.go index 472b9dc3aa34..2fa6a5fbb830 100644 --- a/tests/robustness/validate/patch_history_test.go +++ b/tests/robustness/validate/patch_history_test.go @@ -59,7 +59,7 @@ func TestPatchHistory(t *testing.T) { putRequest("key", "value"), }, expectedRemainingOperations: []porcupine.Operation{ - {Return: 200, Output: putResponse(model.EtcdOperationResult{})}, + {Return: 200, Output: putResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -86,7 +86,7 @@ func TestPatchHistory(t *testing.T) { }, expectedRemainingOperations: []porcupine.Operation{ {Return: 399, Output: model.MaybeEtcdResponse{Persisted: true}}, - {Return: 400, Output: putResponse(model.EtcdOperationResult{})}, + {Return: 400, Output: putResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -115,7 +115,7 @@ func TestPatchHistory(t *testing.T) { watchOperations: watchResponse(3, putEvent("key", "value", 2), putEvent("key", "value", 3)), expectedRemainingOperations: []porcupine.Operation{ {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, - {Return: 4, Output: putResponse(model.EtcdOperationResult{})}, + {Return: 4, Output: putResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -128,7 +128,7 @@ func TestPatchHistory(t *testing.T) { putRequest("key2", "value"), }, expectedRemainingOperations: []porcupine.Operation{ - {Return: 200, Output: putResponse(model.EtcdOperationResult{})}, + {Return: 200, Output: putResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -141,7 +141,7 @@ func TestPatchHistory(t *testing.T) { putRequest("key", "value2"), }, expectedRemainingOperations: []porcupine.Operation{ - {Return: 200, Output: putResponse(model.EtcdOperationResult{})}, + {Return: 200, Output: putResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -168,7 +168,7 @@ func TestPatchHistory(t *testing.T) { }, expectedRemainingOperations: []porcupine.Operation{ {Return: 399, Output: model.MaybeEtcdResponse{Persisted: true}}, - {Return: 400, Output: putResponse(model.EtcdOperationResult{})}, + {Return: 400, Output: putResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -197,7 +197,7 @@ func TestPatchHistory(t *testing.T) { watchOperations: watchResponse(3, putEvent("key", "value", 2), putEvent("key", "value", 3)), expectedRemainingOperations: []porcupine.Operation{ {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, - {Return: 4, Output: putResponse(model.EtcdOperationResult{})}, + {Return: 4, Output: putResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -220,7 +220,7 @@ func TestPatchHistory(t *testing.T) { h.AppendDelete("key", 100, 200, &clientv3.DeleteResponse{}, nil) }, expectedRemainingOperations: []porcupine.Operation{ - {Return: 200, Output: putResponse(model.EtcdOperationResult{})}, + {Return: 200, Output: putResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -235,7 +235,7 @@ func TestPatchHistory(t *testing.T) { watchOperations: watchResponse(3, deleteEvent("key", 2)), expectedRemainingOperations: []porcupine.Operation{ {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, - {Return: 400, Output: putResponse(model.EtcdOperationResult{})}, + {Return: 400, Output: putResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -279,7 +279,7 @@ func TestPatchHistory(t *testing.T) { h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value")}, []clientv3.Op{clientv3.OpDelete("key")}, 100, 200, &clientv3.TxnResponse{Succeeded: true}, nil) }, expectedRemainingOperations: []porcupine.Operation{ - {Return: 200, Output: putResponse()}, + {Return: 200, Output: putResponse(0)}, }, }, { @@ -331,7 +331,7 @@ func TestPatchHistory(t *testing.T) { }, expectedRemainingOperations: []porcupine.Operation{ {Return: 599, Output: model.MaybeEtcdResponse{Persisted: true}}, - {Return: 600, Output: putResponse(model.EtcdOperationResult{})}, + {Return: 600, Output: putResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -347,9 +347,9 @@ func TestPatchHistory(t *testing.T) { putRequest("key2", "value2"), }, expectedRemainingOperations: []porcupine.Operation{ - {Return: 200, Output: putResponse(model.EtcdOperationResult{})}, + {Return: 200, Output: putResponse(0, model.EtcdOperationResult{})}, {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, - {Return: 600, Output: putResponse(model.EtcdOperationResult{})}, + {Return: 600, Output: putResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -365,10 +365,10 @@ func TestPatchHistory(t *testing.T) { putRequest("key2", "value2"), }, expectedRemainingOperations: []porcupine.Operation{ - {Return: 200, Output: putResponse(model.EtcdOperationResult{})}, + {Return: 200, Output: putResponse(0, model.EtcdOperationResult{})}, // TODO: We can infer that failed operation finished before last operation matching following. {Return: infinite, Output: model.MaybeEtcdResponse{Persisted: true}}, - {Return: 600, Output: putResponse(model.EtcdOperationResult{})}, + {Return: 600, Output: putResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -424,8 +424,8 @@ func TestPatchHistory(t *testing.T) { } } -func putResponse(result ...model.EtcdOperationResult) model.MaybeEtcdResponse { - return model.MaybeEtcdResponse{EtcdResponse: model.EtcdResponse{Txn: &model.TxnResponse{Results: result}}} +func putResponse(rev int64, result ...model.EtcdOperationResult) model.MaybeEtcdResponse { + return model.MaybeEtcdResponse{EtcdResponse: model.EtcdResponse{Revision: rev, Txn: &model.TxnResponse{Results: result}}} } func watchResponse(responseTime int64, events ...model.WatchEvent) []model.WatchOperation { diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index a50d1cc92d1e..ecf547ce87c6 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -18,44 +18,47 @@ import ( "encoding/json" "fmt" "math" - "testing" "time" "github.com/anishathalye/porcupine" - "github.com/stretchr/testify/require" "go.uber.org/zap" "go.etcd.io/etcd/tests/v3/robustness/model" "go.etcd.io/etcd/tests/v3/robustness/report" ) -func ValidateAndReturnVisualize(t *testing.T, lg *zap.Logger, cfg Config, reports []report.ClientReport, persistedRequests []model.EtcdRequest, timeout time.Duration) Results { +func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.ClientReport, persistedRequests []model.EtcdRequest, timeout time.Duration) Result { err := checkValidationAssumptions(reports, persistedRequests) - require.NoErrorf(t, err, "Broken validation assumptions") + if err != nil { + return Result{Error: err} + } linearizableOperations, serializableOperations := prepareAndCategorizeOperations(reports) // We are passing in the original reports and linearizableOperations with modified return time. // The reason is that linearizableOperations are those dedicated for linearization, which requires them to have returnTime set to infinity as required by pourcupine. // As for the report, the original report is used so the consumer doesn't need to track what patching was done or not. - patchedLinearizableOperations := patchLinearizableOperations(linearizableOperations, reports, persistedRequests) - - results := validateLinearizableOperationsAndVisualize(lg, patchedLinearizableOperations, timeout) - if results.Linearizable != porcupine.Ok { - t.Error("Failed linearization, skipping further validation") - return results + if persistedRequests != nil { + linearizableOperations = patchLinearizableOperations(linearizableOperations, reports, persistedRequests) } - // TODO: Use requests from linearization for replay. - replay := model.NewReplay(persistedRequests) - - err = validateWatch(lg, cfg, reports, replay) - if err != nil { - t.Errorf("Failed validating watch history, err: %s", err) + linearization := validateLinearizableOperationsAndVisualize(lg, linearizableOperations, timeout) + if linearization.Linearizable != porcupine.Ok { + return Result{Error: fmt.Errorf("Failed linearization"), Linearization: linearization} } - err = validateSerializableOperations(lg, serializableOperations, replay) - if err != nil { - t.Errorf("Failed validating serializable operations, err: %s", err) + if persistedRequests != nil { + // TODO: Use requests from linearization for replay. + replay := model.NewReplay(persistedRequests) + + err = validateWatch(lg, cfg, reports, replay) + if err != nil { + return Result{Error: fmt.Errorf("Failed validating watch history: %w", err), Linearization: linearization} + } + err = validateSerializableOperations(lg, serializableOperations, replay) + if err != nil { + return Result{Error: fmt.Errorf("Failed validating serializable operations: %w", err), Linearization: linearization} + } } - return results + + return Result{Linearization: linearization} } type Config struct { @@ -91,9 +94,11 @@ func checkValidationAssumptions(reports []report.ClientReport, persistedRequests return err } - err = validatePersistedRequestMatchClientRequests(reports, persistedRequests) - if err != nil { - return err + if persistedRequests != nil { + err = validatePersistedRequestMatchClientRequests(reports, persistedRequests) + if err != nil { + return err + } } err = validateNonConcurrentClientRequests(reports) if err != nil { diff --git a/tests/robustness/validate/validate_test.go b/tests/robustness/validate/validate_test.go index bd6709af97ee..ca9e3b590289 100644 --- a/tests/robustness/validate/validate_test.go +++ b/tests/robustness/validate/validate_test.go @@ -21,6 +21,7 @@ import ( "testing" "time" + "github.com/anishathalye/porcupine" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" @@ -45,14 +46,133 @@ func TestDataReports(t *testing.T) { persistedRequests, err := report.LoadClusterPersistedRequests(lg, path) require.NoError(t, err) - visualize := ValidateAndReturnVisualize(t, zaptest.NewLogger(t), Config{}, reports, persistedRequests, 5*time.Minute).Visualize + result := ValidateAndReturnVisualize(zaptest.NewLogger(t), Config{}, reports, persistedRequests, 5*time.Minute) - err = visualize(filepath.Join(path, "history.html")) + err = result.Linearization.Visualize(lg, filepath.Join(path, "history.html")) require.NoError(t, err) }) } } +func TestValidateAndReturnVisualize(t *testing.T) { + tcs := []struct { + name string + reports []report.ClientReport + persistedRequests []model.EtcdRequest + config Config + expectError string + }{ + { + name: "Empty", + expectError: "non empty database at start or first write didn't succeed, required by model implementation", + }, + { + name: "Success with no persisted requests", + reports: []report.ClientReport{ + { + KeyValue: []porcupine.Operation{ + { + ClientId: 0, + Input: putRequest("key", "value"), + Call: 100, + Output: putResponse(2, model.EtcdOperationResult{}), + Return: 200, + }, + }, + }, + }, + expectError: "", + }, + { + name: "Failure with no persisted requests", + reports: []report.ClientReport{ + { + KeyValue: []porcupine.Operation{ + { + ClientId: 0, + Input: putRequest("key", "value"), + Call: 100, + // First write should return revision 2 + Output: putResponse(3, model.EtcdOperationResult{}), + Return: 200, + }, + }, + }, + }, + expectError: "non empty database at start or first write didn't succeed, required by model implementation", + }, + { + name: "Success", + reports: []report.ClientReport{ + { + KeyValue: []porcupine.Operation{ + { + ClientId: 0, + Input: putRequest("key", "value"), + Call: 100, + Output: putResponse(2, model.EtcdOperationResult{}), + Return: 200, + }, + }, + Watch: []model.WatchOperation{ + { + Request: model.WatchRequest{Key: "key"}, + Responses: []model.WatchResponse{ + {Events: []model.WatchEvent{watchEvent(2, true, model.PutOperation, "key", "value")}}, + }, + }, + }, + }, + }, + persistedRequests: []model.EtcdRequest{putRequest("key", "value")}, + expectError: "", + }, + { + name: "Failure of watch", + reports: []report.ClientReport{ + { + KeyValue: []porcupine.Operation{ + { + ClientId: 0, + Input: putRequest("key", "value"), + Call: 100, + Output: putResponse(2, model.EtcdOperationResult{}), + Return: 200, + }, + }, + Watch: []model.WatchOperation{ + { + Request: model.WatchRequest{Key: "key"}, + Responses: []model.WatchResponse{ + {Events: []model.WatchEvent{watchEvent(2, true, model.PutOperation, "bad-key", "value")}}, + }, + }, + }, + }, + }, + persistedRequests: []model.EtcdRequest{putRequest("key", "value")}, + expectError: "Failed validating watch history", + }, + } + for _, tc := range tcs { + t.Run(tc.name, func(t *testing.T) { + lg := zaptest.NewLogger(t) + result := ValidateAndReturnVisualize(lg, Config{}, tc.reports, tc.persistedRequests, 5*time.Second) + if tc.expectError != "" { + require.ErrorContains(t, result.Error, tc.expectError) + } else { + require.NoError(t, result.Error) + } + err := result.Linearization.Visualize(lg, filepath.Join(t.TempDir(), "history.html")) + require.NoError(t, err) + }) + } +} + +func watchEvent(rev int64, isCreate bool, eventType model.OperationType, key, value string) model.WatchEvent { + return model.WatchEvent{PersistedEvent: model.PersistedEvent{Revision: rev, IsCreate: isCreate, Event: model.Event{Type: eventType, Key: key, Value: model.ToValueOrHash(value)}}} +} + func TestValidateWatch(t *testing.T) { tcs := []struct { name string From f892db946b4ad4c04060384e764e67b58b094497 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Wed, 7 May 2025 16:49:01 +0200 Subject: [PATCH 0146/1068] Fix antithesis driver command type Signed-off-by: Marek Siarkowicz --- tests/antithesis/test-template/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/antithesis/test-template/Dockerfile b/tests/antithesis/test-template/Dockerfile index 614405cb9e8e..e9b92b996382 100644 --- a/tests/antithesis/test-template/Dockerfile +++ b/tests/antithesis/test-template/Dockerfile @@ -7,4 +7,4 @@ COPY . . WORKDIR /build/tests RUN go build -o /opt/antithesis/entrypoint/entrypoint -race ./antithesis/test-template/entrypoint/main.go -RUN go build -o /opt/antithesis/test/v1/main/robustness -race ./antithesis/test-template/robustness/main.go +RUN go build -o /opt/antithesis/test/v1/robustness/singleton_driver_main -race ./antithesis/test-template/robustness/main.go From 92f9eb455571042450998232e5565b5fed8f3f80 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Wed, 7 May 2025 18:48:07 +0200 Subject: [PATCH 0147/1068] Use first_ command type to ensure antithesis runs robustness tests only once Signed-off-by: Marek Siarkowicz --- tests/antithesis/test-template/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/antithesis/test-template/Dockerfile b/tests/antithesis/test-template/Dockerfile index e9b92b996382..553060510a37 100644 --- a/tests/antithesis/test-template/Dockerfile +++ b/tests/antithesis/test-template/Dockerfile @@ -7,4 +7,4 @@ COPY . . WORKDIR /build/tests RUN go build -o /opt/antithesis/entrypoint/entrypoint -race ./antithesis/test-template/entrypoint/main.go -RUN go build -o /opt/antithesis/test/v1/robustness/singleton_driver_main -race ./antithesis/test-template/robustness/main.go +RUN go build -o /opt/antithesis/test/v1/robustness/first_main -race ./antithesis/test-template/robustness/main.go From 683c968ab83699362886906d0e3269826f688c35 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Wed, 7 May 2025 19:45:01 +0200 Subject: [PATCH 0148/1068] Fix repeated closure of channel Signed-off-by: Marek Siarkowicz --- tests/antithesis/test-template/robustness/main.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index a4bf86553a87..90a569e4f040 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -119,13 +119,11 @@ func connect(endpoint string, ids identity.Provider, baseTime time.Time) *client func closeAfter(ctx context.Context, t time.Duration) <-chan struct{} { out := make(chan struct{}) go func() { - for { - select { - case <-time.After(t): - case <-ctx.Done(): - } - close(out) + select { + case <-time.After(t): + case <-ctx.Done(): } + close(out) }() return out } From 49cd4bffdf3edeb0fbcbf32b498a6eb604dd6e82 Mon Sep 17 00:00:00 2001 From: Siyuan Zhang Date: Wed, 7 May 2025 15:31:41 -0700 Subject: [PATCH 0149/1068] doc: add example PR of kubernetes/org for release. Signed-off-by: Siyuan Zhang --- Documentation/contributor-guide/release.md | 44 ++++++++++++---------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/Documentation/contributor-guide/release.md b/Documentation/contributor-guide/release.md index 54f7f76468ea..081c0ac96b2d 100644 --- a/Documentation/contributor-guide/release.md +++ b/Documentation/contributor-guide/release.md @@ -71,9 +71,14 @@ which don't need to be executed before releasing each version. ### Release steps +At least one day before the release: + 1. Raise an issue to publish the release plan, e.g. [issues/17350](https://github.com/etcd-io/etcd/issues/17350). -2. Raise a `kubernetes/org` pull request to ensure members of the release team are added to the [release github team](https://github.com/orgs/etcd-io/teams/release-etcd). -3. Verify you can pass the authentication to the image registries, +2. Raise a `kubernetes/org` pull request ([example PR](https://github.com/kubernetes/org/pull/5582)) to ensure members of the release team are added to the [release github team](https://github.com/orgs/etcd-io/teams/release-etcd). + +On the day of the release: + +1. Verify you can pass the authentication to the image registries, - `docker login gcr.io` - `docker login quay.io` - If the release person doesn't have access to 1password, one of the owners (@ahrtr, @ivanvc, @jmhbnz, @serathius) needs to share the password with them per [this guide](https://support.1password.com/share-items/). See rough steps below, @@ -82,45 +87,46 @@ which don't need to be executed before releasing each version. - Select `Password of quay.io`. - Click `Share` on the top right, and set expiration as `1 hour` and only available to the release person using his/her email. - Click `Copy Link` then send the link to the release person via slack or email. -4. Clone the etcd repository and checkout the target branch, +2. Clone the etcd repository and checkout the target branch, - `git clone --branch release-3.X git@github.com:etcd-io/etcd.git` -5. Run the release script under the repository's root directory, replacing `${VERSION}` with a value without the `v` prefix, i.e. `3.5.13`. +3. Run the release script under the repository's root directory, replacing `${VERSION}` with a value without the `v` prefix, i.e. `3.5.13`. - `DRY_RUN=false ./scripts/release.sh ${VERSION}` - **NOTE:** When doing a pre-release (i.e., a version from the main branch, 3.6.0-alpha.2), you will need to explicitly set the branch to main: - ``` + + ```bash DRY_RUN=false BRANCH=main ./scripts/release.sh ${VERSION} ``` It generates all release binaries under the directory `/tmp/etcd-release-${VERSION}/etcd/release/` and images. Binaries are pushed to the Google Cloud bucket under project `etcd-development`, and images are pushed to `quay.io` and `gcr.io`. -6. Publish the release page on GitHub +4. Publish the release page on GitHub - Open the **draft** release URL shown by the release script - Click the pen button at the top right to edit the release - Review that it looks correct, reviewing that the bottom checkboxes are checked depending on the release version (v3.4 no checkboxes, v3.5 has the set as latest release checkbox checked, v3.6 has the set as pre-release checkbox checked) - Then, publish the release -7. Announce to the etcd-dev googlegroup +5. Announce to the etcd-dev googlegroup Follow the format of previous release emails sent to etcd-dev@googlegroups.com, see an example below. After sending out the email, ask one of the mailing list maintainers to approve the email from the pending list. Additionally, label the release email as `Release`. -```text -Hello, + ```text + Hello, -etcd v3.4.30 is now public! + etcd v3.4.30 is now public! -https://github.com/etcd-io/etcd/releases/tag/v3.4.30 + https://github.com/etcd-io/etcd/releases/tag/v3.4.30 -Thanks to everyone who contributed to the release! + Thanks to everyone who contributed to the release! -etcd team -``` + etcd team + ``` -8. Update the changelog to reflect the correct release date. -9. Paste the release link to the issue raised in Step 1 and close the issue. -10. Raise a follow-up `kubernetes/org` pull request to return the GitHub release team to empty, least privilege state. -11. Crease a new stable branch through `git push origin release-${VERSION_MAJOR}.${VERSION_MINOR}` if this is a new major or minor stable release. -12. Re-generate a new password for quay.io if needed (e.g. shared to a contributor who isn't in the release team, and we should rotate the password at least once every 3 months). +6. Update the changelog to reflect the correct release date. +7. Paste the release link to the issue raised in Step 1 and close the issue. +8. Raise a follow-up `kubernetes/org` pull request to return the GitHub release team to empty, least privilege state. +9. Crease a new stable branch through `git push origin release-${VERSION_MAJOR}.${VERSION_MINOR}` if this is a new major or minor stable release. +10. Re-generate a new password for quay.io if needed (e.g. shared to a contributor who isn't in the release team, and we should rotate the password at least once every 3 months). #### Release known issues From ac113e4367722d116d5f90a8b472b7319064a576 Mon Sep 17 00:00:00 2001 From: Nont Date: Wed, 7 May 2025 19:56:21 -0500 Subject: [PATCH 0150/1068] Allow running antithesis tests locally Signed-off-by: Nont --- tests/antithesis/docker-compose.yml | 6 +++++ .../test-template/robustness/main.go | 27 +++++++++++++++---- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/tests/antithesis/docker-compose.yml b/tests/antithesis/docker-compose.yml index 6cbcbfaf33ad..d650c45c54c8 100644 --- a/tests/antithesis/docker-compose.yml +++ b/tests/antithesis/docker-compose.yml @@ -14,6 +14,8 @@ services: ETCD_INITIAL_CLUSTER_TOKEN: "etcd-cluster-1" ETCD_INITIAL_CLUSTER: "etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380" ETCD_INITIAL_CLUSTER_STATE: "new" + ports: + - 12379:2379 etcd1: image: 'gcr.io/etcd-development/etcd:v3.5.21' @@ -28,6 +30,8 @@ services: ETCD_INITIAL_CLUSTER_TOKEN: "etcd-cluster-1" ETCD_INITIAL_CLUSTER: "etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380" ETCD_INITIAL_CLUSTER_STATE: "new" + ports: + - 22379:2379 etcd2: image: 'gcr.io/etcd-development/etcd:v3.5.21' @@ -42,6 +46,8 @@ services: ETCD_INITIAL_CLUSTER_TOKEN: "etcd-cluster-1" ETCD_INITIAL_CLUSTER: "etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380" ETCD_INITIAL_CLUSTER_STATE: "new" + ports: + - 32379:2379 client: image: 'etcd-client:latest' diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index 90a569e4f040..81fad30a8163 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -18,6 +18,7 @@ package main import ( "context" + "flag" "os" "sync" "time" @@ -42,19 +43,36 @@ var profile = traffic.Profile{ MaxNonUniqueRequestConcurrency: 3, } +const ( + defaultetcd0 = "etcd0:2379" + defaultetcd1 = "etcd1:2379" + defaultetcd2 = "etcd0:2379" + + localetcd0 = "127.0.0.1:12379" + localetcd1 = "127.0.0.1:22379" + localetcd2 = "127.0.0.1:32379" +) + func main() { + local := flag.Bool("local", false, "run tests locally and connect to etcd instances via localhost") + flag.Parse() + hosts := []string{defaultetcd0, defaultetcd1, defaultetcd2} + if *local { + hosts = []string{localetcd0, localetcd1, localetcd2} + } + ctx := context.Background() baseTime := time.Now() duration := time.Duration(robustnessrand.RandRange(5, 60) * int64(time.Second)) - testRobustness(ctx, baseTime, duration) + testRobustness(ctx, hosts, baseTime, duration) } -func testRobustness(ctx context.Context, baseTime time.Time, duration time.Duration) { +func testRobustness(ctx context.Context, hosts []string, baseTime time.Time, duration time.Duration) { lg, err := zap.NewProduction() if err != nil { panic(err) } - reports := runTraffic(ctx, baseTime, duration) + reports := runTraffic(ctx, hosts, baseTime, duration) lg.Info("Completed robustness traffic generation") assert.Reachable("Completed robustness traffic generation", nil) @@ -73,13 +91,12 @@ func testRobustness(ctx context.Context, baseTime time.Time, duration time.Durat assert.Reachable("Completed robustness validation", nil) } -func runTraffic(ctx context.Context, baseTime time.Time, duration time.Duration) []report.ClientReport { +func runTraffic(ctx context.Context, hosts []string, baseTime time.Time, duration time.Duration) []report.ClientReport { limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), profile.BurstableQPS) finish := closeAfter(ctx, duration) ids := identity.NewIDProvider() storage := identity.NewLeaseIDStorage() concurrencyLimiter := traffic.NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) - hosts := []string{"etcd0:2379", "etcd1:2379", "etcd2:2379"} reports := []report.ClientReport{} var mux sync.Mutex From aec38673869209fb1eab4cd5c1ec1b2b31da0855 Mon Sep 17 00:00:00 2001 From: Nont Date: Wed, 7 May 2025 20:11:43 -0500 Subject: [PATCH 0151/1068] [Antithesis] Document running validation Signed-off-by: Nont --- tests/antithesis/README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/antithesis/README.md b/tests/antithesis/README.md index b16d52b17476..da5bafa6a334 100644 --- a/tests/antithesis/README.md +++ b/tests/antithesis/README.md @@ -71,6 +71,18 @@ client | Client [entrypoint]: cluster is healthy! And it will stay running indefinitely. +### 4. Running the tests + +```bash +docker-compose exec client /opt/antithesis/test/v1/main/robustness` +``` + +Alternatively, with the etcd cluster from step 3, to run the tests locally without rebuilding the client image: + +```bash +go run ./test-template/robustness/main.go --local +``` + ## Troubleshooting - **Image Pull Errors**: If Docker can’t pull `etcd-client:latest`, make sure you built it locally (see the “Build and Tag” step) or push it to a registry that Compose can access. From 855eec92182fcaf5c3866bc3cca71c9476c6d46d Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 8 May 2025 20:12:26 +0200 Subject: [PATCH 0152/1068] Allow retryable check of database empty and enable failure injection in Antithesis In Antithesis we don't have control of failure injection. So we don't have guarantee that the first request will pass. Changing first request to read fixes the issue of first request not being retryable. Changing the test name prefix to "singleton_driver_" enables antithesis fault injection. Signed-off-by: Marek Siarkowicz --- tests/antithesis/README.md | 2 +- tests/antithesis/test-template/Dockerfile | 2 +- .../test-template/robustness/main.go | 24 +++++--- tests/robustness/main_test.go | 2 +- tests/robustness/traffic/traffic.go | 35 ++++++++++-- tests/robustness/validate/validate.go | 10 +++- tests/robustness/validate/validate_test.go | 55 ++++++++++++++----- 7 files changed, 95 insertions(+), 35 deletions(-) diff --git a/tests/antithesis/README.md b/tests/antithesis/README.md index da5bafa6a334..ff1ed88950bf 100644 --- a/tests/antithesis/README.md +++ b/tests/antithesis/README.md @@ -74,7 +74,7 @@ And it will stay running indefinitely. ### 4. Running the tests ```bash -docker-compose exec client /opt/antithesis/test/v1/main/robustness` +docker-compose exec client /opt/antithesis/test/v1/robustness/singleton_driver_main` ``` Alternatively, with the etcd cluster from step 3, to run the tests locally without rebuilding the client image: diff --git a/tests/antithesis/test-template/Dockerfile b/tests/antithesis/test-template/Dockerfile index 553060510a37..e9b92b996382 100644 --- a/tests/antithesis/test-template/Dockerfile +++ b/tests/antithesis/test-template/Dockerfile @@ -7,4 +7,4 @@ COPY . . WORKDIR /build/tests RUN go build -o /opt/antithesis/entrypoint/entrypoint -race ./antithesis/test-template/entrypoint/main.go -RUN go build -o /opt/antithesis/test/v1/robustness/first_main -race ./antithesis/test-template/robustness/main.go +RUN go build -o /opt/antithesis/test/v1/robustness/singleton_driver_main -race ./antithesis/test-template/robustness/main.go diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index 81fad30a8163..fcfdb7264664 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -72,9 +72,9 @@ func testRobustness(ctx context.Context, hosts []string, baseTime time.Time, dur if err != nil { panic(err) } - reports := runTraffic(ctx, hosts, baseTime, duration) - lg.Info("Completed robustness traffic generation") - assert.Reachable("Completed robustness traffic generation", nil) + lg.Info("Start traffic generation") + reports := runTraffic(ctx, lg, hosts, baseTime, duration) + lg.Info("Completed traffic generation") validateConfig := validate.Config{ExpectRevisionUnique: traffic.EtcdAntithesis.ExpectUniqueRevision()} result := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, nil, 5*time.Minute) @@ -91,18 +91,24 @@ func testRobustness(ctx context.Context, hosts []string, baseTime time.Time, dur assert.Reachable("Completed robustness validation", nil) } -func runTraffic(ctx context.Context, hosts []string, baseTime time.Time, duration time.Duration) []report.ClientReport { +func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime time.Time, duration time.Duration) []report.ClientReport { limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), profile.BurstableQPS) finish := closeAfter(ctx, duration) ids := identity.NewIDProvider() storage := identity.NewLeaseIDStorage() concurrencyLimiter := traffic.NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) - reports := []report.ClientReport{} + r, err := traffic.CheckEmptyDatabaseAtStart(ctx, lg, hosts, ids, baseTime) + if err != nil { + lg.Fatal("Failed empty database at start check", zap.Error(err)) + } + + reports := []report.ClientReport{r} var mux sync.Mutex var wg sync.WaitGroup for i := 0; i < profile.ClientCount; i++ { - c := connect(hosts[i%len(hosts)], ids, baseTime) + c := connect([]string{hosts[i%len(hosts)]}, ids, baseTime) + defer c.Close() wg.Add(1) go func(c *client.RecordingClient) { defer wg.Done() @@ -123,11 +129,11 @@ func runTraffic(ctx context.Context, hosts []string, baseTime time.Time, duratio return reports } -func connect(endpoint string, ids identity.Provider, baseTime time.Time) *client.RecordingClient { - cli, err := client.NewRecordingClient([]string{endpoint}, ids, baseTime) +func connect(endpoints []string, ids identity.Provider, baseTime time.Time) *client.RecordingClient { + cli, err := client.NewRecordingClient(endpoints, ids, baseTime) if err != nil { // Antithesis Assertion: client should always be able to connect to an etcd host - assert.Unreachable("Client failed to connect to an etcd host", map[string]any{"host": endpoint, "error": err}) + assert.Unreachable("Client failed to connect to an etcd host", map[string]any{"endpoints": endpoints, "error": err}) os.Exit(1) } return cli diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index abcec701f355..af535cb3e7f7 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -100,7 +100,7 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s scenari result := validate.ValidateAndReturnVisualize(lg, validateConfig, r.Client, persistedRequests, 5*time.Minute) r.Visualize = result.Linearization.Visualize if result.Error != nil { - t.Error(err) + t.Error(result.Error) } panicked = false diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index c66aa4543620..43ea6ddc27ce 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -29,6 +29,7 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/identity" "go.etcd.io/etcd/tests/v3/robustness/model" "go.etcd.io/etcd/tests/v3/robustness/report" + "go.etcd.io/etcd/tests/v3/robustness/validate" ) var ( @@ -59,16 +60,13 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 endpoints := clus.EndpointsGRPC() lm := identity.NewLeaseIDStorage() - reports := []report.ClientReport{} // Use the highest MaximalQPS of all traffic profiles as burst otherwise actual traffic may be accidentally limited limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), profile.BurstableQPS) - cc, err := client.NewRecordingClient(endpoints, ids, baseTime) + r, err := CheckEmptyDatabaseAtStart(ctx, lg, endpoints, ids, baseTime) require.NoError(t, err) - defer cc.Close() - // Ensure that first operation succeeds - _, err = cc.Put(ctx, "start", "true") - require.NoErrorf(t, err, "First operation failed, validation requires first operation to succeed") + reports := []report.ClientReport{r} + wg := sync.WaitGroup{} nonUniqueWriteLimiter := NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) finish := make(chan struct{}) @@ -124,6 +122,9 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 time.Sleep(time.Second) // Ensure that last operation succeeds + cc, err := client.NewRecordingClient(endpoints, ids, baseTime) + require.NoError(t, err) + defer cc.Close() _, err = cc.Put(ctx, "tombstone", "true") require.NoErrorf(t, err, "Last operation failed, validation requires last operation to succeed") reports = append(reports, cc.Report()) @@ -202,3 +203,25 @@ type Traffic interface { RunCompactLoop(ctx context.Context, c *client.RecordingClient, period time.Duration, finish <-chan struct{}) ExpectUniqueRevision() bool } + +func CheckEmptyDatabaseAtStart(ctx context.Context, lg *zap.Logger, endpoints []string, ids identity.Provider, baseTime time.Time) (report.ClientReport, error) { + c, err := client.NewRecordingClient(endpoints, ids, baseTime) + if err != nil { + return report.ClientReport{}, err + } + defer c.Close() + for { + rCtx, cancel := context.WithTimeout(ctx, RequestTimeout) + resp, err := c.Get(rCtx, "key") + cancel() + if err != nil { + lg.Warn("Failed to check if database empty at start, retrying", zap.Error(err)) + continue + } + if resp.Header.Revision != 1 { + return report.ClientReport{}, validate.ErrNotEmptyDatabase + } + break + } + return c.Report(), nil +} diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index ecf547ce87c6..9d9f18eb2886 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -16,6 +16,7 @@ package validate import ( "encoding/json" + "errors" "fmt" "math" "time" @@ -27,6 +28,8 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/report" ) +var ErrNotEmptyDatabase = errors.New("non empty database at start, required by model used for linearizability validation") + func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.ClientReport, persistedRequests []model.EtcdRequest, timeout time.Duration) Result { err := checkValidationAssumptions(reports, persistedRequests) if err != nil { @@ -108,16 +111,19 @@ func checkValidationAssumptions(reports []report.ClientReport, persistedRequests } func validateEmptyDatabaseAtStart(reports []report.ClientReport) error { + if len(reports) == 0 { + return nil + } for _, r := range reports { for _, op := range r.KeyValue { request := op.Input.(model.EtcdRequest) response := op.Output.(model.MaybeEtcdResponse) - if response.Revision == 2 && !request.IsRead() { + if response.Revision == 1 && request.IsRead() { return nil } } } - return fmt.Errorf("non empty database at start or first write didn't succeed, required by model implementation") + return ErrNotEmptyDatabase } func validatePersistedRequestMatchClientRequests(reports []report.ClientReport, persistedRequests []model.EtcdRequest) error { diff --git a/tests/robustness/validate/validate_test.go b/tests/robustness/validate/validate_test.go index ca9e3b590289..33327915e160 100644 --- a/tests/robustness/validate/validate_test.go +++ b/tests/robustness/validate/validate_test.go @@ -62,10 +62,6 @@ func TestValidateAndReturnVisualize(t *testing.T) { config Config expectError string }{ - { - name: "Empty", - expectError: "non empty database at start or first write didn't succeed, required by model implementation", - }, { name: "Success with no persisted requests", reports: []report.ClientReport{ @@ -73,9 +69,9 @@ func TestValidateAndReturnVisualize(t *testing.T) { KeyValue: []porcupine.Operation{ { ClientId: 0, - Input: putRequest("key", "value"), + Input: getRequest("key"), Call: 100, - Output: putResponse(2, model.EtcdOperationResult{}), + Output: getResponse(1), Return: 200, }, }, @@ -84,22 +80,22 @@ func TestValidateAndReturnVisualize(t *testing.T) { expectError: "", }, { - name: "Failure with no persisted requests", + name: "Failure with not empty database", reports: []report.ClientReport{ { KeyValue: []porcupine.Operation{ { ClientId: 0, - Input: putRequest("key", "value"), + Input: getRequest("key"), Call: 100, - // First write should return revision 2 - Output: putResponse(3, model.EtcdOperationResult{}), + // Empty database should have revision 1 + Output: getResponse(2), Return: 200, }, }, }, }, - expectError: "non empty database at start or first write didn't succeed, required by model implementation", + expectError: "non empty database at start, required by model used for linearizability validation", }, { name: "Success", @@ -108,11 +104,18 @@ func TestValidateAndReturnVisualize(t *testing.T) { KeyValue: []porcupine.Operation{ { ClientId: 0, - Input: putRequest("key", "value"), + Input: getRequest("key"), Call: 100, - Output: putResponse(2, model.EtcdOperationResult{}), + Output: getResponse(1), Return: 200, }, + { + ClientId: 0, + Input: putRequest("key", "value"), + Call: 300, + Output: putResponse(2, model.EtcdOperationResult{}), + Return: 400, + }, }, Watch: []model.WatchOperation{ { @@ -134,11 +137,18 @@ func TestValidateAndReturnVisualize(t *testing.T) { KeyValue: []porcupine.Operation{ { ClientId: 0, - Input: putRequest("key", "value"), + Input: getRequest("key"), Call: 100, - Output: putResponse(2, model.EtcdOperationResult{}), + Output: getResponse(1), Return: 200, }, + { + ClientId: 0, + Input: putRequest("key", "value"), + Call: 300, + Output: putResponse(2, model.EtcdOperationResult{}), + Return: 400, + }, }, Watch: []model.WatchOperation{ { @@ -2035,6 +2045,21 @@ func deletePersistedEvent(key string, rev int64) model.PersistedEvent { } } +func getRequest(key string) model.EtcdRequest { + return model.EtcdRequest{ + Type: model.Range, + Range: &model.RangeRequest{ + RangeOptions: model.RangeOptions{ + Start: "key", + }, + }, + } +} + +func getResponse(rev int64) model.MaybeEtcdResponse { + return model.MaybeEtcdResponse{EtcdResponse: model.EtcdResponse{Revision: rev, Range: &model.RangeResponse{KVs: []model.KeyValue{}}}} +} + func putRequest(key, value string) model.EtcdRequest { return model.EtcdRequest{ Type: model.Txn, From 0ebb3e7345714c8bf163884bb603f35790578251 Mon Sep 17 00:00:00 2001 From: Nont Date: Thu, 8 May 2025 11:36:09 -0500 Subject: [PATCH 0153/1068] [Antithesis] Get access to etcd data directory Signed-off-by: Nont --- tests/antithesis/Makefile | 14 ++++++ tests/antithesis/README.md | 6 +-- tests/antithesis/docker-compose.yml | 46 +++++++++++++++++++ .../test-template/robustness/main.go | 30 ++++++++++-- 4 files changed, 90 insertions(+), 6 deletions(-) diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 47b4d13bf554..04a1cef85d1c 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -1,5 +1,19 @@ REPOSITORY_ROOT := $(shell git rev-parse --show-toplevel) +USER_ID := $(shell id -u) +GROUP_ID := $(shell id -g) .PHONY: antithesis-build-client-docker-image antithesis-build-client-docker-image: docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) -f $(REPOSITORY_ROOT)/tests/antithesis/test-template/Dockerfile $(REPOSITORY_ROOT) -t etcd-client:latest + +.PHONY: antithesis-docker-compose-up +antithesis-docker-compose-up: antithesis-build-client-docker-image + export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose up + +.PHONY: antithesis-run-container-tests +antithesis-run-container-tests: + export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose exec client /opt/antithesis/test/v1/robustness/singleton_driver_main + +.PHONY: antithesis-run-local-tests +antithesis-run-local-tests: + go run ./test-template/robustness/main.go --local diff --git a/tests/antithesis/README.md b/tests/antithesis/README.md index ff1ed88950bf..30a11935d117 100644 --- a/tests/antithesis/README.md +++ b/tests/antithesis/README.md @@ -29,7 +29,7 @@ etcd-client latest Run the following command from the root directory for Antithesis tests (`tests/antithesis`): ```bash -docker-compose up +make antithesis-docker-compose-up ``` The client will continuously check the health of the etcd nodes and print logs similar to: @@ -74,13 +74,13 @@ And it will stay running indefinitely. ### 4. Running the tests ```bash -docker-compose exec client /opt/antithesis/test/v1/robustness/singleton_driver_main` +make antithesis-run-container-tests ``` Alternatively, with the etcd cluster from step 3, to run the tests locally without rebuilding the client image: ```bash -go run ./test-template/robustness/main.go --local +make antithesis-run-local-tests ``` ## Troubleshooting diff --git a/tests/antithesis/docker-compose.yml b/tests/antithesis/docker-compose.yml index d650c45c54c8..84a9f49b6bfd 100644 --- a/tests/antithesis/docker-compose.yml +++ b/tests/antithesis/docker-compose.yml @@ -1,5 +1,18 @@ --- services: + # This is needed for creating non-root data folders on host. + # By default, if the folders don't exist when mounting, compose creates them with root as owner. + # With root owner, accessing the WAL files from local tests will fail due to an unauthorized access error. + init: + image: 'ubuntu:latest' + user: root + group_add: + - '${GROUP_ID:-root}' + volumes: + - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcddata0 + - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}1:/var/etcddata1 + - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}2:/var/etcddata2 + command: chown -R ${USER_ID:-root}:${GROUP_ID:-root} /var/etcddata0 /var/etcddata1 /var/etcddata2 etcd0: image: 'gcr.io/etcd-development/etcd:v3.5.21' @@ -14,8 +27,15 @@ services: ETCD_INITIAL_CLUSTER_TOKEN: "etcd-cluster-1" ETCD_INITIAL_CLUSTER: "etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380" ETCD_INITIAL_CLUSTER_STATE: "new" + ETCD_DATA_DIR: "/var/etcd/data" + user: "${USER_ID:-root}:${GROUP_ID:-root}" + depends_on: + init: + condition: service_completed_successfully ports: - 12379:2379 + volumes: + - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcd/data etcd1: image: 'gcr.io/etcd-development/etcd:v3.5.21' @@ -30,8 +50,15 @@ services: ETCD_INITIAL_CLUSTER_TOKEN: "etcd-cluster-1" ETCD_INITIAL_CLUSTER: "etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380" ETCD_INITIAL_CLUSTER_STATE: "new" + ETCD_DATA_DIR: "/var/etcd/data" + user: "${USER_ID:-root}:${GROUP_ID:-root}" + depends_on: + init: + condition: service_completed_successfully ports: - 22379:2379 + volumes: + - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}1:/var/etcd/data etcd2: image: 'gcr.io/etcd-development/etcd:v3.5.21' @@ -46,10 +73,29 @@ services: ETCD_INITIAL_CLUSTER_TOKEN: "etcd-cluster-1" ETCD_INITIAL_CLUSTER: "etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380" ETCD_INITIAL_CLUSTER_STATE: "new" + ETCD_DATA_DIR: "/var/etcd/data" + user: "${USER_ID:-root}:${GROUP_ID:-root}" + depends_on: + init: + condition: service_completed_successfully ports: - 32379:2379 + volumes: + - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}2:/var/etcd/data client: image: 'etcd-client:latest' container_name: client entrypoint: ["/opt/antithesis/entrypoint/entrypoint"] + user: "${USER_ID:-root}:${GROUP_ID:-root}" + depends_on: + etcd0: + condition: service_started + etcd1: + condition: service_started + etcd2: + condition: service_started + volumes: + - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcddata0 + - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}1:/var/etcddata1 + - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}2:/var/etcddata2 diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index f4afccaff9aa..d14c2978ec1c 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -19,6 +19,7 @@ package main import ( "context" "flag" + "fmt" "os" "sync" "time" @@ -51,23 +52,41 @@ const ( localetcd0 = "127.0.0.1:12379" localetcd1 = "127.0.0.1:22379" localetcd2 = "127.0.0.1:32379" + // mounted by the client in docker compose + defaultEtcdDataPath = "/var/etcddata%d" + // used by default when running the client locally + defaultLocalEtcdDataPath = "/tmp/etcddata%d" + localEtcdDataPathEnv = "ETCD_ROBUSTNESS_DATA_PATH" ) func main() { local := flag.Bool("local", false, "run tests locally and connect to etcd instances via localhost") flag.Parse() + + etcdDataPath := defaultEtcdDataPath hosts := []string{defaultetcd0, defaultetcd1, defaultetcd2} if *local { hosts = []string{localetcd0, localetcd1, localetcd2} + etcdDataPath = defaultLocalEtcdDataPath + localpath := os.Getenv(localEtcdDataPathEnv) + if localpath != "" { + etcdDataPath = localpath + } + } + + persistedRequestdirs := []string{ + fmt.Sprintf(etcdDataPath, 0), + fmt.Sprintf(etcdDataPath, 1), + fmt.Sprintf(etcdDataPath, 2), } ctx := context.Background() baseTime := time.Now() duration := time.Duration(robustnessrand.RandRange(5, 60) * int64(time.Second)) - testRobustness(ctx, hosts, baseTime, duration) + testRobustness(ctx, hosts, persistedRequestdirs, baseTime, duration) } -func testRobustness(ctx context.Context, hosts []string, baseTime time.Time, duration time.Duration) { +func testRobustness(ctx context.Context, hosts, persistedRequestdirs []string, baseTime time.Time, duration time.Duration) { lg, err := zap.NewProduction() if err != nil { panic(err) @@ -76,8 +95,13 @@ func testRobustness(ctx context.Context, hosts []string, baseTime time.Time, dur reports := runTraffic(ctx, lg, hosts, baseTime, duration) lg.Info("Completed traffic generation") + etcdDataDirs, err := report.PersistedRequestsDirs(lg, persistedRequestdirs) + if err != nil { + lg.Error("Failed to create PersistedRequestdirs to access etcd WAL files") + panic(err) + } validateConfig := validate.Config{ExpectRevisionUnique: traffic.EtcdAntithesis.ExpectUniqueRevision()} - result := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, nil, 5*time.Minute) + result := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, etcdDataDirs, 5*time.Minute) err = result.Linearization.Visualize(lg, "history.html") if err != nil { lg.Error("Failed to save visualization", zap.Error(err)) From b9b55a260f54f44dafa20c2c438dc5de5fa829e4 Mon Sep 17 00:00:00 2001 From: subrajeet-maharana Date: Fri, 9 May 2025 14:40:03 +0530 Subject: [PATCH 0154/1068] antithesis: replaced Reachable/Unreachable assertion with Always Signed-off-by: subrajeet-maharana Update tests/antithesis/test-template/robustness/main.go Co-authored-by: Marek Siarkowicz Update tests/antithesis/test-template/robustness/main.go Co-authored-by: Marek Siarkowicz Signed-off-by: subrajeet-maharana --- tests/antithesis/test-template/robustness/main.go | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index fcfdb7264664..2c9d513d5903 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -80,15 +80,10 @@ func testRobustness(ctx context.Context, hosts []string, baseTime time.Time, dur result := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, nil, 5*time.Minute) err = result.Linearization.Visualize(lg, "history.html") if err != nil { - lg.Error("Failed to save visualization", zap.Error(result.Error)) + lg.Error("Failed to save visualization", zap.Error(err)) } - if result.Error != nil { - lg.Error("Robustness validation failed", zap.Error(result.Error)) - assert.Unreachable("Robustness validation failed", map[string]any{"error": result.Error}) - return - } - lg.Info("Completed robustness validation") - assert.Reachable("Completed robustness validation", nil) + assert.Always(result.Error == nil, "Robustness validation passes", map[string]any{"error": result.Error}) + lg.Info("Completed robustness validation", zap.Error(result.Error)) } func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime time.Time, duration time.Duration) []report.ClientReport { From a49f1806dfc1f9ca454029a3005462b645ac8550 Mon Sep 17 00:00:00 2001 From: Nont Date: Thu, 8 May 2025 22:16:32 -0500 Subject: [PATCH 0155/1068] [Antithesis] store validation on host volume Signed-off-by: Nont --- tests/antithesis/docker-compose.yml | 4 +++- tests/antithesis/test-template/robustness/main.go | 11 ++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/tests/antithesis/docker-compose.yml b/tests/antithesis/docker-compose.yml index 84a9f49b6bfd..13f28080e35b 100644 --- a/tests/antithesis/docker-compose.yml +++ b/tests/antithesis/docker-compose.yml @@ -12,7 +12,8 @@ services: - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcddata0 - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}1:/var/etcddata1 - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}2:/var/etcddata2 - command: chown -R ${USER_ID:-root}:${GROUP_ID:-root} /var/etcddata0 /var/etcddata1 /var/etcddata2 + - ${ETCD_ROBUSTNESS_REPORT_PATH:-/tmp/etcdreport}:/var/report + command: chown -R ${USER_ID:-root}:${GROUP_ID:-root} /var/etcddata0 /var/etcddata1 /var/etcddata2 /var/report etcd0: image: 'gcr.io/etcd-development/etcd:v3.5.21' @@ -99,3 +100,4 @@ services: - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcddata0 - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}1:/var/etcddata1 - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}2:/var/etcddata2 + - ${ETCD_ROBUSTNESS_REPORT_PATH:-/tmp/etcdreport}:/var/report diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index d14c2978ec1c..7ac1ad4b6902 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -57,6 +57,9 @@ const ( // used by default when running the client locally defaultLocalEtcdDataPath = "/tmp/etcddata%d" localEtcdDataPathEnv = "ETCD_ROBUSTNESS_DATA_PATH" + + defaultReportPath = "/var/report/history.html" + localReportPath = "history.html" ) func main() { @@ -65,6 +68,7 @@ func main() { etcdDataPath := defaultEtcdDataPath hosts := []string{defaultetcd0, defaultetcd1, defaultetcd2} + reportPath := defaultReportPath if *local { hosts = []string{localetcd0, localetcd1, localetcd2} etcdDataPath = defaultLocalEtcdDataPath @@ -72,6 +76,7 @@ func main() { if localpath != "" { etcdDataPath = localpath } + reportPath = localReportPath } persistedRequestdirs := []string{ @@ -83,10 +88,10 @@ func main() { ctx := context.Background() baseTime := time.Now() duration := time.Duration(robustnessrand.RandRange(5, 60) * int64(time.Second)) - testRobustness(ctx, hosts, persistedRequestdirs, baseTime, duration) + testRobustness(ctx, hosts, persistedRequestdirs, reportPath, baseTime, duration) } -func testRobustness(ctx context.Context, hosts, persistedRequestdirs []string, baseTime time.Time, duration time.Duration) { +func testRobustness(ctx context.Context, hosts, persistedRequestdirs []string, reportPath string, baseTime time.Time, duration time.Duration) { lg, err := zap.NewProduction() if err != nil { panic(err) @@ -102,7 +107,7 @@ func testRobustness(ctx context.Context, hosts, persistedRequestdirs []string, b } validateConfig := validate.Config{ExpectRevisionUnique: traffic.EtcdAntithesis.ExpectUniqueRevision()} result := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, etcdDataDirs, 5*time.Minute) - err = result.Linearization.Visualize(lg, "history.html") + err = result.Linearization.Visualize(lg, reportPath) if err != nil { lg.Error("Failed to save visualization", zap.Error(err)) } From 0210a78008243f00244958fa14c91555f0a67b56 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 9 May 2025 19:48:47 +0200 Subject: [PATCH 0156/1068] Move counting time after we confirm that database is empty Signed-off-by: Marek Siarkowicz --- tests/antithesis/test-template/robustness/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index 2c9d513d5903..f4afccaff9aa 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -88,7 +88,6 @@ func testRobustness(ctx context.Context, hosts []string, baseTime time.Time, dur func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime time.Time, duration time.Duration) []report.ClientReport { limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), profile.BurstableQPS) - finish := closeAfter(ctx, duration) ids := identity.NewIDProvider() storage := identity.NewLeaseIDStorage() concurrencyLimiter := traffic.NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) @@ -98,6 +97,7 @@ func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime ti lg.Fatal("Failed empty database at start check", zap.Error(err)) } + finish := closeAfter(ctx, duration) reports := []report.ClientReport{r} var mux sync.Mutex var wg sync.WaitGroup From 969493a2fbd0ce092bbbdb6a45866756b280997a Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 9 May 2025 18:51:27 +0200 Subject: [PATCH 0157/1068] Reduce runtime of antithesis tests to 15s Signed-off-by: Marek Siarkowicz --- tests/antithesis/test-template/robustness/main.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index 7ac1ad4b6902..96ebdf175060 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -87,7 +87,7 @@ func main() { ctx := context.Background() baseTime := time.Now() - duration := time.Duration(robustnessrand.RandRange(5, 60) * int64(time.Second)) + duration := time.Duration(robustnessrand.RandRange(5, 15) * int64(time.Second)) testRobustness(ctx, hosts, persistedRequestdirs, reportPath, baseTime, duration) } @@ -96,7 +96,7 @@ func testRobustness(ctx context.Context, hosts, persistedRequestdirs []string, r if err != nil { panic(err) } - lg.Info("Start traffic generation") + lg.Info("Start traffic generation", zap.Duration("duration", duration)) reports := runTraffic(ctx, lg, hosts, baseTime, duration) lg.Info("Completed traffic generation") From d210f053eb941e897edba6b31ded7c3ae45d771c Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 9 May 2025 22:02:36 +0200 Subject: [PATCH 0158/1068] Add clean command to allow running the test multiple times Signed-off-by: Marek Siarkowicz --- tests/antithesis/Makefile | 7 ++++++- tests/antithesis/README.md | 9 +++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 04a1cef85d1c..36ad8b19bf13 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -7,7 +7,7 @@ antithesis-build-client-docker-image: docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) -f $(REPOSITORY_ROOT)/tests/antithesis/test-template/Dockerfile $(REPOSITORY_ROOT) -t etcd-client:latest .PHONY: antithesis-docker-compose-up -antithesis-docker-compose-up: antithesis-build-client-docker-image +antithesis-docker-compose-up: export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose up .PHONY: antithesis-run-container-tests @@ -17,3 +17,8 @@ antithesis-run-container-tests: .PHONY: antithesis-run-local-tests antithesis-run-local-tests: go run ./test-template/robustness/main.go --local + +.PHONY: antithesis-clean +antithesis-clean: + export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose down + rm -rf /tmp/etcddata0 /tmp/etcddata1 /tmp/etcddata2 /tmp/etcdreport diff --git a/tests/antithesis/README.md b/tests/antithesis/README.md index 30a11935d117..5834b7db3508 100644 --- a/tests/antithesis/README.md +++ b/tests/antithesis/README.md @@ -83,6 +83,15 @@ Alternatively, with the etcd cluster from step 3, to run the tests locally witho make antithesis-run-local-tests ``` +### 5. Prepare for next run + +Unfortunatelly robustness tests don't support running on non empty database. +So for now you need to cleanup the storage before repeating the run or you will get "non empty database at start, required by model used for linearizability validation" error. + +```bash +make antithesis-clean +``` + ## Troubleshooting - **Image Pull Errors**: If Docker can’t pull `etcd-client:latest`, make sure you built it locally (see the “Build and Tag” step) or push it to a registry that Compose can access. From 230b396ff07357255c21dab64b82425f5634c21b Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Thu, 8 May 2025 13:03:17 +0200 Subject: [PATCH 0159/1068] fix: export username/password error Signed-off-by: Mustafa Elbehery --- client/v3/client.go | 3 ++- client/v3/client_test.go | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/client/v3/client.go b/client/v3/client.go index 30269cfac39d..998f5ae03f75 100644 --- a/client/v3/client.go +++ b/client/v3/client.go @@ -43,6 +43,7 @@ import ( var ( ErrNoAvailableEndpoints = errors.New("etcdclient: no available endpoints") ErrOldCluster = errors.New("etcdclient: old cluster version") + ErrMutuallyExclusiveCfg = errors.New("Username/Password and Token configurations are mutually exclusive") ) // Client provides and manages an etcd v3 client session. @@ -385,7 +386,7 @@ func newClient(cfg *Config) (*Client, error) { } if cfg.Token != "" && (cfg.Username != "" || cfg.Password != "") { - return nil, errors.New("Username/Password and Token configurations are mutually exclusive") + return nil, ErrMutuallyExclusiveCfg } // use a temporary skeleton client to bootstrap first connection diff --git a/client/v3/client_test.go b/client/v3/client_test.go index c26c14097648..474a48203691 100644 --- a/client/v3/client_test.go +++ b/client/v3/client_test.go @@ -383,7 +383,7 @@ func TestNewOnlyJWTExclusivity(t *testing.T) { Username: "user", Password: "pass", }) - require.Errorf(t, err, "Username/Password and Token configurations are mutually exclusive") + require.ErrorIs(t, ErrMutuallyExclusiveCfg, err) } func TestSyncFiltersMembers(t *testing.T) { From 3be18cf0941904c7d7fcaa0f685f5570e45a8a52 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 11 May 2025 11:55:21 +0200 Subject: [PATCH 0160/1068] Add benchmark for linearization Signed-off-by: Marek Siarkowicz --- tests/robustness/validate/operations_test.go | 107 +++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/tests/robustness/validate/operations_test.go b/tests/robustness/validate/operations_test.go index a244d9f75339..c3481dd8b87f 100644 --- a/tests/robustness/validate/operations_test.go +++ b/tests/robustness/validate/operations_test.go @@ -17,9 +17,12 @@ package validate import ( "fmt" + "math/rand/v2" "testing" + "time" "github.com/anishathalye/porcupine" + "go.uber.org/zap" "go.uber.org/zap/zaptest" "go.etcd.io/etcd/tests/v3/robustness/model" @@ -294,3 +297,107 @@ func keyValueRevision(key, value string, rev int64) model.KeyValue { }, } } + +func BenchmarkValidateLinearizableOperations(b *testing.B) { + lg := zap.NewNop() + b.Run("Successes", func(b *testing.B) { + history := allPutSuccesses(1000) + shuffles := shuffleHistory(history, b.N) + b.ResetTimer() + validateShuffles(b, lg, shuffles, time.Second) + }) + b.Run("AllFailures", func(b *testing.B) { + history := allPutFailures(10) + shuffles := shuffleHistory(history, b.N) + b.ResetTimer() + validateShuffles(b, lg, shuffles, time.Second) + }) + b.Run("PutFailuresWithRead", func(b *testing.B) { + history := putFailuresWithRead(b, 8) + shuffles := shuffleHistory(history, b.N) + b.ResetTimer() + validateShuffles(b, lg, shuffles, time.Second) + }) +} + +func allPutSuccesses(concurrencyCount int) []porcupine.Operation { + ops := []porcupine.Operation{} + for i := 0; i < concurrencyCount; i++ { + ops = append(ops, porcupine.Operation{ + ClientId: i, + Input: putRequest("key", "value"), + Output: putResponse(int64(i)+2, model.EtcdOperationResult{}), + Call: int64(i), + Return: int64(i) + int64(concurrencyCount), + }) + } + return ops +} + +func putFailuresWithRead(b *testing.B, concurrencyCount int) []porcupine.Operation { + ops := []porcupine.Operation{} + for i := 0; i < concurrencyCount; i++ { + ops = append(ops, porcupine.Operation{ + ClientId: i, + Input: putRequest(fmt.Sprintf("key%d", i), "value"), + Output: errorResponse(fmt.Errorf("timeout")), + Call: int64(i), + Return: int64(i) + int64(concurrencyCount), + }) + } + requests := []model.EtcdRequest{} + for _, op := range ops { + requests = append(requests, op.Input.(model.EtcdRequest)) + } + replay := model.NewReplay(requests) + state, err := replay.StateForRevision(int64(concurrencyCount) + 1) + if err != nil { + b.Fatal(err) + } + request := rangeRequest("key", "kez", 0, 0) + _, resp := state.Step(request) + ops = append(ops, porcupine.Operation{ + ClientId: 0, + Input: request, + Output: resp, + Call: int64(concurrencyCount) + 1, + Return: int64(concurrencyCount) + 2, + }) + return ops +} + +func allPutFailures(concurrencyCount int) []porcupine.Operation { + ops := []porcupine.Operation{} + for i := 0; i < concurrencyCount; i++ { + ops = append(ops, porcupine.Operation{ + ClientId: i, + Input: putRequest("key", "value"), + Output: errorResponse(fmt.Errorf("timeout")), + Call: int64(i), + Return: int64(i) + int64(concurrencyCount), + }) + } + return ops +} + +func shuffleHistory(history []porcupine.Operation, shuffleCount int) [][]porcupine.Operation { + shuffles := make([][]porcupine.Operation, shuffleCount) + for i := 0; i < shuffleCount; i++ { + historyCopy := make([]porcupine.Operation, len(history)) + copy(historyCopy, history) + rand.Shuffle(len(historyCopy), func(i, j int) { + historyCopy[i], historyCopy[j] = historyCopy[j], historyCopy[i] + }) + shuffles[i] = historyCopy + } + return shuffles +} + +func validateShuffles(b *testing.B, lg *zap.Logger, shuffles [][]porcupine.Operation, duration time.Duration) { + for i := 0; i < len(shuffles); i++ { + result := validateLinearizableOperationsAndVisualize(lg, shuffles[i], duration) + if result.Linearizable != porcupine.Ok { + b.Fatalf("Not linearizable: %v", result.Linearizable) + } + } +} From 19127cbc5b92096bb6e55a13a9c0a6c62b790897 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 10 May 2025 00:22:36 +0200 Subject: [PATCH 0161/1068] Add ubuntu image to antithesis configuration Signed-off-by: Marek Siarkowicz --- .github/workflows/antithesis-test.yml | 2 +- tests/antithesis/docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index a8c6ae5d96f9..3e1b74192723 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -22,7 +22,7 @@ on: images: description: 'System images (separate with ;)' required: true - default: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-client:latest;gcr.io/etcd-development/etcd:v3.5.21 + default: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-client:latest;gcr.io/etcd-development/etcd:v3.5.21;docker.io/library/ubuntu:latest type: string duration: description: 'Duration (exploration hours)' diff --git a/tests/antithesis/docker-compose.yml b/tests/antithesis/docker-compose.yml index 13f28080e35b..9b8eb0628a13 100644 --- a/tests/antithesis/docker-compose.yml +++ b/tests/antithesis/docker-compose.yml @@ -4,7 +4,7 @@ services: # By default, if the folders don't exist when mounting, compose creates them with root as owner. # With root owner, accessing the WAL files from local tests will fail due to an unauthorized access error. init: - image: 'ubuntu:latest' + image: 'docker.io/library/ubuntu:latest' user: root group_add: - '${GROUP_ID:-root}' From 6368eeee9a9db3435e845e0e6cdd0d47c584c1ed Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 10 May 2025 19:31:06 +0200 Subject: [PATCH 0162/1068] Avoid encoding to Json to reduce overhead MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit │ old.bench │ new.bench │ │ sec/op │ sec/op vs base │ ValidateLinearizableOperations/Successes-14 13.493m ± 4% 3.658m ± 3% -72.89% (p=0.000 n=10) ValidateLinearizableOperations/AllFailures-14 10.663m ± 1% 1.539m ± 6% -85.57% (p=0.000 n=10) ValidateLinearizableOperations/PutFailuresWithRead-14 9.742m ± 2% 1.365m ± 1% -85.99% (p=0.000 n=10) geomean 11.19m 1.973m -82.37% Signed-off-by: Marek Siarkowicz --- tests/robustness/model/deterministic.go | 44 +++++++++++------- tests/robustness/model/non_deterministic.go | 50 ++++++++++++++------- 2 files changed, 62 insertions(+), 32 deletions(-) diff --git a/tests/robustness/model/deterministic.go b/tests/robustness/model/deterministic.go index 9b61d13afd0c..2b35b1b6007a 100644 --- a/tests/robustness/model/deterministic.go +++ b/tests/robustness/model/deterministic.go @@ -42,28 +42,24 @@ import ( // whole change history as real etcd does. var DeterministicModel = porcupine.Model{ Init: func() any { - data, err := json.Marshal(freshEtcdState()) - if err != nil { - panic(err) - } - return string(data) + return freshEtcdState() }, Step: func(st any, in any, out any) (bool, any) { - var s EtcdState - err := json.Unmarshal([]byte(st.(string)), &s) - if err != nil { - panic(err) - } - ok, s := s.apply(in.(EtcdRequest), out.(EtcdResponse)) - data, err := json.Marshal(s) - if err != nil { - panic(err) - } - return ok, string(data) + return st.(EtcdState).apply(in.(EtcdRequest), out.(EtcdResponse)) + }, + Equal: func(st1, st2 any) bool { + return st1.(EtcdState).Equal(st2.(EtcdState)) }, DescribeOperation: func(in, out any) string { return fmt.Sprintf("%s -> %s", describeEtcdRequest(in.(EtcdRequest)), describeEtcdResponse(in.(EtcdRequest), MaybeEtcdResponse{EtcdResponse: out.(EtcdResponse)})) }, + DescribeState: func(st any) string { + data, err := json.Marshal(st) + if err != nil { + panic(err) + } + return string(data) + }, } type EtcdState struct { @@ -74,6 +70,22 @@ type EtcdState struct { Leases map[int64]EtcdLease } +func (s EtcdState) Equal(other EtcdState) bool { + if s.Revision != other.Revision { + return false + } + if s.CompactRevision != other.CompactRevision { + return false + } + if !reflect.DeepEqual(s.KeyValues, other.KeyValues) { + return false + } + if !reflect.DeepEqual(s.KeyLeases, other.KeyLeases) { + return false + } + return reflect.DeepEqual(s.Leases, other.Leases) +} + func (s EtcdState) apply(request EtcdRequest, response EtcdResponse) (bool, EtcdState) { newState, modelResponse := s.Step(request) return Match(MaybeEtcdResponse{EtcdResponse: response}, modelResponse), newState diff --git a/tests/robustness/model/non_deterministic.go b/tests/robustness/model/non_deterministic.go index 3167e340fd16..e48a815aa806 100644 --- a/tests/robustness/model/non_deterministic.go +++ b/tests/robustness/model/non_deterministic.go @@ -28,32 +28,50 @@ import ( // Failed requests fork the possible states, while successful requests merge and filter them. var NonDeterministicModel = porcupine.Model{ Init: func() any { - data, err := json.Marshal(nonDeterministicState{freshEtcdState()}) - if err != nil { - panic(err) - } - return string(data) + return nonDeterministicState{freshEtcdState()} }, Step: func(st any, in any, out any) (bool, any) { - var states nonDeterministicState - err := json.Unmarshal([]byte(st.(string)), &states) - if err != nil { - panic(err) - } - ok, states := states.apply(in.(EtcdRequest), out.(MaybeEtcdResponse)) - data, err := json.Marshal(states) - if err != nil { - panic(err) - } - return ok, string(data) + return st.(nonDeterministicState).apply(in.(EtcdRequest), out.(MaybeEtcdResponse)) + }, + Equal: func(st1, st2 any) bool { + return st1.(nonDeterministicState).Equal(st2.(nonDeterministicState)) }, DescribeOperation: func(in, out any) string { return fmt.Sprintf("%s -> %s", describeEtcdRequest(in.(EtcdRequest)), describeEtcdResponse(in.(EtcdRequest), out.(MaybeEtcdResponse))) }, + DescribeState: func(st any) string { + data, err := json.Marshal(st) + if err != nil { + panic(err) + } + return string(data) + }, } type nonDeterministicState []EtcdState +func (states nonDeterministicState) Equal(other nonDeterministicState) bool { + if len(states) != len(other) { + return false + } + + otherMatched := make([]bool, len(other)) + for _, sItem := range states { + foundMatchInOther := false + for j, otherItem := range other { + if !otherMatched[j] && sItem.Equal(otherItem) { + otherMatched[j] = true + foundMatchInOther = true + break + } + } + if !foundMatchInOther { + return false + } + } + return true +} + func (states nonDeterministicState) apply(request EtcdRequest, response MaybeEtcdResponse) (bool, nonDeterministicState) { var newStates nonDeterministicState switch { From f0c1bdd98fd19ba188cb0c638655ebd14e3e302c Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 10 May 2025 00:49:56 +0200 Subject: [PATCH 0163/1068] Disable validation of assumption for persisted requests With Antithesis tests we no longer have guarantee of any requests passing. Signed-off-by: Marek Siarkowicz --- tests/robustness/validate/validate.go | 79 +-------------------------- 1 file changed, 2 insertions(+), 77 deletions(-) diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index 9d9f18eb2886..b622cddc922f 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -15,7 +15,6 @@ package validate import ( - "encoding/json" "errors" "fmt" "math" @@ -31,7 +30,7 @@ import ( var ErrNotEmptyDatabase = errors.New("non empty database at start, required by model used for linearizability validation") func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.ClientReport, persistedRequests []model.EtcdRequest, timeout time.Duration) Result { - err := checkValidationAssumptions(reports, persistedRequests) + err := checkValidationAssumptions(reports) if err != nil { return Result{Error: err} } @@ -91,18 +90,12 @@ func prepareAndCategorizeOperations(reports []report.ClientReport) (linearizable return linearizable, serializable } -func checkValidationAssumptions(reports []report.ClientReport, persistedRequests []model.EtcdRequest) error { +func checkValidationAssumptions(reports []report.ClientReport) error { err := validateEmptyDatabaseAtStart(reports) if err != nil { return err } - if persistedRequests != nil { - err = validatePersistedRequestMatchClientRequests(reports, persistedRequests) - if err != nil { - return err - } - } err = validateNonConcurrentClientRequests(reports) if err != nil { return err @@ -126,74 +119,6 @@ func validateEmptyDatabaseAtStart(reports []report.ClientReport) error { return ErrNotEmptyDatabase } -func validatePersistedRequestMatchClientRequests(reports []report.ClientReport, persistedRequests []model.EtcdRequest) error { - persistedRequestSet := map[string]model.EtcdRequest{} - for _, request := range persistedRequests { - data, err := json.Marshal(request) - if err != nil { - return err - } - persistedRequestSet[string(data)] = request - } - clientRequests := map[string]porcupine.Operation{} - for _, r := range reports { - for _, op := range r.KeyValue { - request := op.Input.(model.EtcdRequest) - data, err := json.Marshal(request) - if err != nil { - return err - } - clientRequests[string(data)] = op - } - } - - for requestDump, request := range persistedRequestSet { - _, found := clientRequests[requestDump] - // We cannot validate if persisted leaseGrant was sent by client as failed leaseGrant will not return LeaseID to clients. - if request.Type == model.LeaseGrant { - continue - } - - if !found { - return fmt.Errorf("request %+v was not sent by client, required to validate", requestDump) - } - } - - var firstOp, lastOp porcupine.Operation - for _, r := range reports { - for _, op := range r.KeyValue { - request := op.Input.(model.EtcdRequest) - response := op.Output.(model.MaybeEtcdResponse) - if response.Error != "" || request.IsRead() { - continue - } - if firstOp.Call == 0 || op.Call < firstOp.Call { - firstOp = op - } - if lastOp.Call == 0 || op.Call > lastOp.Call { - lastOp = op - } - } - } - firstOpData, err := json.Marshal(firstOp.Input.(model.EtcdRequest)) - if err != nil { - return err - } - _, found := persistedRequestSet[string(firstOpData)] - if !found { - return fmt.Errorf("first succesful client write %s was not persisted, required to validate", firstOpData) - } - lastOpData, err := json.Marshal(lastOp.Input.(model.EtcdRequest)) - if err != nil { - return err - } - _, found = persistedRequestSet[string(lastOpData)] - if !found { - return fmt.Errorf("last succesful client write %s was not persisted, required to validate", lastOpData) - } - return nil -} - func validateNonConcurrentClientRequests(reports []report.ClientReport) error { lastClientRequestReturn := map[int]int64{} for _, r := range reports { From f99cbfed2de17d9e347a7208ceae2b8bbb289713 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 11 May 2025 10:07:59 +0200 Subject: [PATCH 0164/1068] After failed request fallback to LIST This should help revovery from failed Put requests. LIST will read all keys allowing us identify if requests previous write succeeded, thus making linearization cheaper. Signed-off-by: Marek Siarkowicz --- tests/robustness/traffic/etcd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index 5e631f7ff9f4..e00b0701867b 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -149,7 +149,7 @@ func (t etcdTraffic) RunTrafficLoop(ctx context.Context, c *client.RecordingClie } requestType = random.PickRandom(choices) } else { - requestType = Get + requestType = List } rev, err := client.Request(ctx, requestType, lastRev) if shouldReturn { From ba048ea1c54e39d475146b46a81aa26676d8fa9e Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 11 May 2025 12:59:10 +0200 Subject: [PATCH 0165/1068] Avoid copying state for read requests Signed-off-by: Marek Siarkowicz --- tests/robustness/model/deterministic.go | 26 +++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/tests/robustness/model/deterministic.go b/tests/robustness/model/deterministic.go index 9b61d13afd0c..21cdcf563a5d 100644 --- a/tests/robustness/model/deterministic.go +++ b/tests/robustness/model/deterministic.go @@ -109,21 +109,23 @@ func freshEtcdState() EtcdState { // Step handles a successful request, returning updated state and response it would generate. func (s EtcdState) Step(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { - newState := s.DeepCopy() - - switch request.Type { - case Range: - if request.Range.Revision == 0 || request.Range.Revision == newState.Revision { - resp := newState.getRange(request.Range.RangeOptions) - return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Range: &resp, Revision: newState.Revision}} + // TODO: Avoid copying when TXN only has read operations + if request.Type == Range { + if request.Range.Revision == 0 || request.Range.Revision == s.Revision { + resp := s.getRange(request.Range.RangeOptions) + return s, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Range: &resp, Revision: s.Revision}} } - if request.Range.Revision > newState.Revision { - return newState, MaybeEtcdResponse{Error: ErrEtcdFutureRev.Error()} + if request.Range.Revision > s.Revision { + return s, MaybeEtcdResponse{Error: ErrEtcdFutureRev.Error()} } - if request.Range.Revision < newState.CompactRevision { - return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{ClientError: mvcc.ErrCompacted.Error()}} + if request.Range.Revision < s.CompactRevision { + return s, MaybeEtcdResponse{EtcdResponse: EtcdResponse{ClientError: mvcc.ErrCompacted.Error()}} } - return newState, MaybeEtcdResponse{Persisted: true, PersistedRevision: newState.Revision} + return s, MaybeEtcdResponse{Persisted: true, PersistedRevision: s.Revision} + } + + newState := s.DeepCopy() + switch request.Type { case Txn: failure := false for _, cond := range request.Txn.Conditions { From e6f89f079d109d819fcd6d82ac4fbbe0bf9d2f9f Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Sat, 10 May 2025 08:47:40 +0200 Subject: [PATCH 0166/1068] chore(main): Bump Go to 1.24.3 Signed-off-by: Mustafa Elbehery --- .go-version | 2 +- api/go.mod | 2 +- client/internal/v2/go.mod | 2 +- client/pkg/go.mod | 2 +- client/v3/go.mod | 2 +- etcdctl/go.mod | 2 +- etcdutl/go.mod | 2 +- go.mod | 2 +- pkg/go.mod | 2 +- server/go.mod | 2 +- tests/antithesis/test-template/Dockerfile | 2 +- tests/go.mod | 2 +- tools/mod/go.mod | 2 +- tools/rw-heatmaps/go.mod | 2 +- tools/testgrid-analysis/go.mod | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.go-version b/.go-version index e4a973f913f4..ae96cc7310aa 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.24.2 +1.24.3 diff --git a/api/go.mod b/api/go.mod index eb14d58e9062..e5ca9cc5ca7c 100644 --- a/api/go.mod +++ b/api/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/api/v3 go 1.24 -toolchain go1.24.2 +toolchain go1.24.3 require ( github.com/coreos/go-semver v0.3.1 diff --git a/client/internal/v2/go.mod b/client/internal/v2/go.mod index 7634ef0dbfbb..c7013cf1f6cb 100644 --- a/client/internal/v2/go.mod +++ b/client/internal/v2/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/v2 go 1.24 -toolchain go1.24.2 +toolchain go1.24.3 require ( github.com/stretchr/testify v1.10.0 diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 73a134777225..634655bdae06 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/pkg/v3 go 1.24 -toolchain go1.24.2 +toolchain go1.24.3 require ( github.com/coreos/go-systemd/v22 v22.5.0 diff --git a/client/v3/go.mod b/client/v3/go.mod index 672bb43d878a..2f732e07fd02 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/v3 go 1.24 -toolchain go1.24.2 +toolchain go1.24.3 require ( github.com/coreos/go-semver v0.3.1 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index c8298511b83c..98e6f8fa5231 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdctl/v3 go 1.24 -toolchain go1.24.2 +toolchain go1.24.3 require ( github.com/bgentry/speakeasy v0.2.0 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 4470d237b36c..05f7806b7dd6 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdutl/v3 go 1.24 -toolchain go1.24.2 +toolchain go1.24.3 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/go.mod b/go.mod index c60db7b3b9d9..2e496d521360 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/v3 go 1.24 -toolchain go1.24.2 +toolchain go1.24.3 replace ( go.etcd.io/etcd/api/v3 => ./api diff --git a/pkg/go.mod b/pkg/go.mod index 185720bd5518..5b5ce7d2ae53 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/pkg/v3 go 1.24 -toolchain go1.24.2 +toolchain go1.24.3 require ( github.com/creack/pty v1.1.18 diff --git a/server/go.mod b/server/go.mod index ed0ab05f05f5..b30c64634382 100644 --- a/server/go.mod +++ b/server/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/server/v3 go 1.24 -toolchain go1.24.2 +toolchain go1.24.3 require ( github.com/coreos/go-semver v0.3.1 diff --git a/tests/antithesis/test-template/Dockerfile b/tests/antithesis/test-template/Dockerfile index e9b92b996382..a5a4a3d58953 100644 --- a/tests/antithesis/test-template/Dockerfile +++ b/tests/antithesis/test-template/Dockerfile @@ -1,4 +1,4 @@ -ARG GO_VERSION=1.24.2 +ARG GO_VERSION=1.24.3 ARG ARCH=amd64 FROM golang:$GO_VERSION diff --git a/tests/go.mod b/tests/go.mod index c7c26bde70ae..2cd8d042c54f 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tests/v3 go 1.24 -toolchain go1.24.2 +toolchain go1.24.3 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 63628ca872ea..6e8cf4f67560 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/v3 go 1.24 -toolchain go1.24.2 +toolchain go1.24.3 require ( github.com/alexfalkowski/gocovmerge v1.7.0 diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 737163c29c99..e09195c46c92 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/rw-heatmaps/v3 go 1.24 -toolchain go1.24.2 +toolchain go1.24.3 require ( github.com/spf13/cobra v1.9.1 diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 0a31690378ba..773b0545f214 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 go 1.24 -toolchain go1.24.2 +toolchain go1.24.3 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 From 2c773517b5cb01736ef64d3d9503bd9c1b2c18aa Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 12 May 2025 20:20:11 +0200 Subject: [PATCH 0167/1068] Move linearization timeout and other validations to separate assertions Signed-off-by: Marek Siarkowicz --- .../test-template/robustness/main.go | 18 ++++++-- tests/robustness/main_test.go | 11 +++-- tests/robustness/validate/operations.go | 39 +++++++++------- tests/robustness/validate/operations_test.go | 2 +- tests/robustness/validate/validate.go | 46 +++++++++++++------ tests/robustness/validate/validate_test.go | 21 ++++++--- tests/robustness/validate/watch.go | 1 - 7 files changed, 91 insertions(+), 47 deletions(-) diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index 96ebdf175060..8d3edde03df6 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -24,6 +24,7 @@ import ( "sync" "time" + "github.com/anishathalye/porcupine" "github.com/antithesishq/antithesis-sdk-go/assert" "go.uber.org/zap" "golang.org/x/time/rate" @@ -106,13 +107,24 @@ func testRobustness(ctx context.Context, hosts, persistedRequestdirs []string, r panic(err) } validateConfig := validate.Config{ExpectRevisionUnique: traffic.EtcdAntithesis.ExpectUniqueRevision()} - result := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, etcdDataDirs, 5*time.Minute) + result, err := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, etcdDataDirs, 5*time.Minute) + if err != nil { + lg.Info("Validation error", zap.Error(err)) + assert.Unreachable("Validation error", map[string]any{"error": err}) + return + } + if result.Linearization.Linearizable == porcupine.Unknown { + assert.Unreachable("Linearization timeout", nil) + } else { + assert.Always(result.Linearization.Linearizable == porcupine.Ok, "Linearization validation passes", nil) + } err = result.Linearization.Visualize(lg, reportPath) if err != nil { lg.Error("Failed to save visualization", zap.Error(err)) } - assert.Always(result.Error == nil, "Robustness validation passes", map[string]any{"error": result.Error}) - lg.Info("Completed robustness validation", zap.Error(result.Error)) + assert.Always(result.WatchError == nil, "Watch validation passes", map[string]any{"error": result.WatchError}) + assert.Always(result.SerializableError == nil, "Serializable validation passes", map[string]any{"error": result.WatchError}) + lg.Info("Completed robustness validation") } func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime time.Time, duration time.Duration) []report.ClientReport { diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index af535cb3e7f7..097c30ac57ca 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -97,12 +97,15 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s scenari require.NoError(t, err) validateConfig := validate.Config{ExpectRevisionUnique: s.Traffic.ExpectUniqueRevision()} - result := validate.ValidateAndReturnVisualize(lg, validateConfig, r.Client, persistedRequests, 5*time.Minute) + result, err := validate.ValidateAndReturnVisualize(lg, validateConfig, r.Client, persistedRequests, 5*time.Minute) + if err != nil { + t.Errorf("Validation error: %v", err) + } r.Visualize = result.Linearization.Visualize - if result.Error != nil { - t.Error(result.Error) + err = result.Error() + if err != nil { + t.Error(err) } - panicked = false } diff --git a/tests/robustness/validate/operations.go b/tests/robustness/validate/operations.go index 3d6e0d93d377..c738aae8a82a 100644 --- a/tests/robustness/validate/operations.go +++ b/tests/robustness/validate/operations.go @@ -32,8 +32,28 @@ var ( ) type Result struct { - Linearization LinearizationResult - Error error + Linearization LinearizationResult + WatchError error + SerializableError error +} + +func (r Result) Error() error { + switch r.Linearization.Linearizable { + case porcupine.Illegal: + return errors.New("linearization failed") + case porcupine.Unknown: + return errors.New("linearization timed out") + case porcupine.Ok: + default: + return fmt.Errorf("unknown linearization result %q", r.Linearization.Linearizable) + } + if r.WatchError != nil { + return fmt.Errorf("watch validation failed: %w", r.WatchError) + } + if r.SerializableError != nil { + return fmt.Errorf("serializable validation failed: %w", r.SerializableError) + } + return nil } type LinearizationResult struct { @@ -52,24 +72,10 @@ func (r LinearizationResult) Visualize(lg *zap.Logger, path string) error { } func validateLinearizableOperationsAndVisualize( - lg *zap.Logger, operations []porcupine.Operation, timeout time.Duration, ) (results LinearizationResult) { - lg.Info("Validating linearizable operations", zap.Duration("timeout", timeout)) - start := time.Now() result, info := porcupine.CheckOperationsVerbose(model.NonDeterministicModel, operations, timeout) - - switch result { - case porcupine.Illegal: - lg.Error("Linearization failed", zap.Duration("duration", time.Since(start))) - case porcupine.Unknown: - lg.Error("Linearization has timed out", zap.Duration("duration", time.Since(start))) - case porcupine.Ok: - lg.Info("Linearization success", zap.Duration("duration", time.Since(start))) - default: - panic(fmt.Sprintf("Unknown Linearization result %s", result)) - } return LinearizationResult{ Info: info, Model: model.NonDeterministicModel, @@ -78,7 +84,6 @@ func validateLinearizableOperationsAndVisualize( } func validateSerializableOperations(lg *zap.Logger, operations []porcupine.Operation, replay *model.EtcdReplay) (lastErr error) { - lg.Info("Validating serializable operations") for _, read := range operations { request := read.Input.(model.EtcdRequest) response := read.Output.(model.MaybeEtcdResponse) diff --git a/tests/robustness/validate/operations_test.go b/tests/robustness/validate/operations_test.go index c3481dd8b87f..d096be6f1c69 100644 --- a/tests/robustness/validate/operations_test.go +++ b/tests/robustness/validate/operations_test.go @@ -395,7 +395,7 @@ func shuffleHistory(history []porcupine.Operation, shuffleCount int) [][]porcupi func validateShuffles(b *testing.B, lg *zap.Logger, shuffles [][]porcupine.Operation, duration time.Duration) { for i := 0; i < len(shuffles); i++ { - result := validateLinearizableOperationsAndVisualize(lg, shuffles[i], duration) + result := validateLinearizableOperationsAndVisualize(shuffles[i], duration) if result.Linearizable != porcupine.Ok { b.Fatalf("Not linearizable: %v", result.Linearizable) } diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index b622cddc922f..944c2f21f48f 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -29,10 +29,10 @@ import ( var ErrNotEmptyDatabase = errors.New("non empty database at start, required by model used for linearizability validation") -func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.ClientReport, persistedRequests []model.EtcdRequest, timeout time.Duration) Result { - err := checkValidationAssumptions(reports) +func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.ClientReport, persistedRequests []model.EtcdRequest, timeout time.Duration) (result Result, err error) { + err = checkValidationAssumptions(reports) if err != nil { - return Result{Error: err} + return result, err } linearizableOperations, serializableOperations := prepareAndCategorizeOperations(reports) // We are passing in the original reports and linearizableOperations with modified return time. @@ -42,25 +42,43 @@ func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.Cli linearizableOperations = patchLinearizableOperations(linearizableOperations, reports, persistedRequests) } - linearization := validateLinearizableOperationsAndVisualize(lg, linearizableOperations, timeout) - if linearization.Linearizable != porcupine.Ok { - return Result{Error: fmt.Errorf("Failed linearization"), Linearization: linearization} + lg.Info("Validating linearizable operations", zap.Duration("timeout", timeout)) + start := time.Now() + result.Linearization = validateLinearizableOperationsAndVisualize(linearizableOperations, timeout) + switch result.Linearization.Linearizable { + case porcupine.Illegal: + lg.Error("Linearization failed", zap.Duration("duration", time.Since(start))) + case porcupine.Unknown: + lg.Error("Linearization has timed out", zap.Duration("duration", time.Since(start))) + case porcupine.Ok: + lg.Info("Linearization success", zap.Duration("duration", time.Since(start))) + default: + panic(fmt.Sprintf("Unknown Linearization result %s", result.Linearization.Linearizable)) } + if persistedRequests != nil { - // TODO: Use requests from linearization for replay. replay := model.NewReplay(persistedRequests) - err = validateWatch(lg, cfg, reports, replay) - if err != nil { - return Result{Error: fmt.Errorf("Failed validating watch history: %w", err), Linearization: linearization} + lg.Info("Validating watch") + start = time.Now() + result.WatchError = validateWatch(lg, cfg, reports, replay) + if result.WatchError == nil { + lg.Info("Watch validation success", zap.Duration("duration", time.Since(start))) + } else { + lg.Error("Watch validation failed", zap.Duration("duration", time.Since(start)), zap.Error(result.WatchError)) } - err = validateSerializableOperations(lg, serializableOperations, replay) - if err != nil { - return Result{Error: fmt.Errorf("Failed validating serializable operations: %w", err), Linearization: linearization} + + lg.Info("Validating serializable operations") + start = time.Now() + result.SerializableError = validateSerializableOperations(lg, serializableOperations, replay) + if result.SerializableError == nil { + lg.Info("Serializable validation success", zap.Duration("duration", time.Since(start))) + } else { + lg.Error("Serializable validation failed", zap.Duration("duration", time.Since(start)), zap.Error(result.SerializableError)) } } - return Result{Linearization: linearization} + return result, nil } type Config struct { diff --git a/tests/robustness/validate/validate_test.go b/tests/robustness/validate/validate_test.go index 33327915e160..2af78b915890 100644 --- a/tests/robustness/validate/validate_test.go +++ b/tests/robustness/validate/validate_test.go @@ -46,7 +46,8 @@ func TestDataReports(t *testing.T) { persistedRequests, err := report.LoadClusterPersistedRequests(lg, path) require.NoError(t, err) - result := ValidateAndReturnVisualize(zaptest.NewLogger(t), Config{}, reports, persistedRequests, 5*time.Minute) + result, err := ValidateAndReturnVisualize(zaptest.NewLogger(t), Config{}, reports, persistedRequests, 5*time.Minute) + require.NoError(t, err) err = result.Linearization.Visualize(lg, filepath.Join(path, "history.html")) require.NoError(t, err) @@ -154,26 +155,32 @@ func TestValidateAndReturnVisualize(t *testing.T) { { Request: model.WatchRequest{Key: "key"}, Responses: []model.WatchResponse{ - {Events: []model.WatchEvent{watchEvent(2, true, model.PutOperation, "bad-key", "value")}}, + {Events: []model.WatchEvent{watchEvent(2, true, model.PutOperation, "key", "value2")}}, }, }, }, }, }, persistedRequests: []model.EtcdRequest{putRequest("key", "value")}, - expectError: "Failed validating watch history", + expectError: "watch validation failed", }, } for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { lg := zaptest.NewLogger(t) - result := ValidateAndReturnVisualize(lg, Config{}, tc.reports, tc.persistedRequests, 5*time.Second) + result, err := ValidateAndReturnVisualize(lg, Config{}, tc.reports, tc.persistedRequests, 5*time.Second) + if tc.expectError != "" { - require.ErrorContains(t, result.Error, tc.expectError) + if err != nil { + require.ErrorContains(t, err, tc.expectError) + } else { + require.ErrorContains(t, result.Error(), tc.expectError) + } } else { - require.NoError(t, result.Error) + require.NoError(t, err) + require.NoError(t, result.Error()) } - err := result.Linearization.Visualize(lg, filepath.Join(t.TempDir(), "history.html")) + err = result.Linearization.Visualize(lg, filepath.Join(t.TempDir(), "history.html")) require.NoError(t, err) }) } diff --git a/tests/robustness/validate/watch.go b/tests/robustness/validate/watch.go index 506cbeca431f..bba43c66eb19 100644 --- a/tests/robustness/validate/watch.go +++ b/tests/robustness/validate/watch.go @@ -38,7 +38,6 @@ var ( ) func validateWatch(lg *zap.Logger, cfg Config, reports []report.ClientReport, replay *model.EtcdReplay) error { - lg.Info("Validating watch") // Validate etcd watch properties defined in https://etcd.io/docs/v3.6/learning/api_guarantees/#watch-apis for _, r := range reports { err := validateFilter(lg, r) From 5bb16a60b45596cb47576ad86efbbcf80476521f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 17:52:59 +0000 Subject: [PATCH 0168/1068] build(deps): bump actions/setup-go from 5.4.0 to 5.5.0 Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.4.0 to 5.5.0. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/0aaccfd150d50ccaeb58ebd88d36e91967a5f35b...d35c59abb061a4a6fb18e82ac0862c26744d6ab5) --- updated-dependencies: - dependency-name: actions/setup-go dependency-version: 5.5.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/measure-testgrid-flakiness.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/measure-testgrid-flakiness.yaml b/.github/workflows/measure-testgrid-flakiness.yaml index b609620fa77f..8c5a8fd73a0d 100644 --- a/.github/workflows/measure-testgrid-flakiness.yaml +++ b/.github/workflows/measure-testgrid-flakiness.yaml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - id: goversion run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - - uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 + - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: ${{ steps.goversion.outputs.goversion }} - env: From 8580e496c7c3cbaf8e3995bc06dfbbc221959bc4 Mon Sep 17 00:00:00 2001 From: joshjms Date: Wed, 14 May 2025 11:10:00 +0800 Subject: [PATCH 0169/1068] dependency: bump golang.org/x/crypto from 0.37.0 to 0.38.0 PR: https://github.com/etcd-io/etcd/pull/19925 Signed-off-by: joshjms --- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 12 ++++++------ go.mod | 4 ++-- go.sum | 12 ++++++------ server/go.mod | 4 ++-- server/go.sum | 12 ++++++------ tests/go.mod | 6 +++--- tests/go.sum | 12 ++++++------ 8 files changed, 33 insertions(+), 33 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 05f7806b7dd6..a8cc2851038f 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -81,10 +81,10 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.37.0 // indirect + golang.org/x/crypto v0.38.0 // indirect golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/text v0.25.0 // indirect golang.org/x/time v0.11.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 76d95a22d098..875fa09c0114 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -133,8 +133,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= -golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= +golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= +golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -147,8 +147,8 @@ golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= -golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= +golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -157,8 +157,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index 2e496d521360..d77a3c76339e 100644 --- a/go.mod +++ b/go.mod @@ -91,10 +91,10 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.37.0 // indirect + golang.org/x/crypto v0.38.0 // indirect golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index 25a72e45411b..93e5ce2e582f 100644 --- a/go.sum +++ b/go.sum @@ -181,8 +181,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= -golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= +golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= +golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -206,8 +206,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= -golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= +golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -219,8 +219,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/server/go.mod b/server/go.mod index b30c64634382..1bda44839712 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,7 +37,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 go.opentelemetry.io/otel/sdk v1.35.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.37.0 + golang.org/x/crypto v0.38.0 golang.org/x/net v0.39.0 golang.org/x/time v0.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 @@ -72,7 +72,7 @@ require ( go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect diff --git a/server/go.sum b/server/go.sum index 7ad5116c947f..6fae1dcb88a2 100644 --- a/server/go.sum +++ b/server/go.sum @@ -159,8 +159,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= -golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= +golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= +golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -184,8 +184,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= -golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= +golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -196,8 +196,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index 2cd8d042c54f..5010550ed376 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -46,8 +46,8 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 go.opentelemetry.io/proto/otlp v1.6.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.37.0 - golang.org/x/sync v0.13.0 + golang.org/x/crypto v0.38.0 + golang.org/x/sync v0.14.0 golang.org/x/time v0.11.0 google.golang.org/grpc v1.72.0 google.golang.org/protobuf v1.36.6 @@ -96,7 +96,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index be93cd575834..9c68c7ea1f1d 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -187,8 +187,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= -golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= +golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= +golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -212,8 +212,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= -golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= +golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -225,8 +225,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= From d34724ea0c2b501af952b13b827797b64e0ca96b Mon Sep 17 00:00:00 2001 From: hwdef Date: Tue, 13 May 2025 11:38:21 +0800 Subject: [PATCH 0170/1068] remove stale probot, and replace it with stale action Signed-off-by: hwdef --- .github/stale.yml | 56 ------------------------------------ .github/workflows/stale.yaml | 30 +++++++++++++++++++ 2 files changed, 30 insertions(+), 56 deletions(-) delete mode 100644 .github/stale.yml create mode 100644 .github/workflows/stale.yaml diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index 1c04a756b9ab..000000000000 --- a/.github/stale.yml +++ /dev/null @@ -1,56 +0,0 @@ ---- -# Configuration for probot-stale - https://github.com/probot/stale - -# Number of days of inactivity before an Issue or Pull Request becomes stale -daysUntilStale: 90 - -# Number of days of inactivity before an Issue or Pull Request with the stale label is closed. -# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. -daysUntilClose: 21 - -# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled) -onlyLabels: [] - -# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable -exemptLabels: - - "stage/tracked" - -# Set to true to ignore issues in a project (defaults to false) -exemptProjects: false - -# Set to true to ignore issues in a milestone (defaults to false) -exemptMilestones: false - -# Set to true to ignore issues with an assignee (defaults to false) -exemptAssignees: false - -# Label to use when marking as stale -staleLabel: stale - -# Comment to post when marking as stale. Set to `false` to disable -markComment: This issue has been automatically marked as stale because it has not had recent activity. It will be closed after 21 days if no further activity occurs. Thank you for your contributions. -# Comment to post when removing the stale label. -# unmarkComment: > -# Your comment here. - -# Comment to post when closing a stale Issue or Pull Request. -# closeComment: > -# Your comment here. - -# Limit the number of actions per hour, from 1-30. Default is 30 -limitPerRun: 30 - -# Limit to only `issues` or `pulls` -# only: issues - -# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': -# pulls: -# daysUntilStale: 30 -# markComment: > -# This pull request has been automatically marked as stale because it has not had -# recent activity. It will be closed if no further activity occurs. Thank you -# for your contributions. - -# issues: -# exemptLabels: -# - confirmed diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml new file mode 100644 index 000000000000..240f9f362fbd --- /dev/null +++ b/.github/workflows/stale.yaml @@ -0,0 +1,30 @@ +--- +name: Mark and close stale issues and PRs + +on: + schedule: + - cron: '0 0 * * *' + +permissions: + issues: write + pull-requests: write + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 #v9.1.0 + with: + days-until-stale: 90 + days-until-close: 21 + stale-issue-label: 'stale' + stale-pr-label: 'stale' + exempt-labels: 'stage/tracked' + exempt-projects: false + exempt-milestones: false + exempt-assignees: false + stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed after 21 days if no further activity occurs. Thank you for your contributions.' + stale-pr-message: 'This pull request has been automatically marked as stale because it has not had recent activity. It will be closed after 21 days if no further activity occurs. Thank you for your contributions.' + close-issue-message: '' + close-pr-message: '' + operations-per-run: 30 From 91f10b5a87571a6082644add826803fa898ab7ca Mon Sep 17 00:00:00 2001 From: joshjms Date: Wed, 14 May 2025 11:16:04 +0800 Subject: [PATCH 0171/1068] dependency: bump golang.org/x/net from 0.39.0 to 0.40.0 PR: https://github.com/etcd-io/etcd/pull/19927 Signed-off-by: joshjms --- api/go.mod | 4 ++-- api/go.sum | 8 ++++---- client/v3/go.mod | 4 ++-- client/v3/go.sum | 8 ++++---- etcdctl/go.mod | 4 ++-- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 4 ++-- pkg/go.sum | 8 ++++---- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 10 +++++----- tools/mod/go.sum | 20 ++++++++++---------- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 4 ++-- tools/testgrid-analysis/go.sum | 8 ++++---- 22 files changed, 60 insertions(+), 60 deletions(-) diff --git a/api/go.mod b/api/go.mod index e5ca9cc5ca7c..e898556240c9 100644 --- a/api/go.mod +++ b/api/go.mod @@ -21,9 +21,9 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect - golang.org/x/net v0.39.0 // indirect + golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index fc48f215f1d8..be8505091968 100644 --- a/api/go.sum +++ b/api/go.sum @@ -51,8 +51,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= -golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -63,8 +63,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/client/v3/go.mod b/client/v3/go.mod index 2f732e07fd02..992ade18a1ec 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -34,9 +34,9 @@ require ( go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.39.0 // indirect + golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 1daaf247e15f..cf47dc85eca9 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -85,8 +85,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= -golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -97,8 +97,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 98e6f8fa5231..cd206c46ef8d 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -37,9 +37,9 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.39.0 // indirect + golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index fa6ac53fd2d6..59d9c676e3a7 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -108,8 +108,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= -golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -121,8 +121,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index a8cc2851038f..33f63824a2b2 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -82,7 +82,7 @@ require ( go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.38.0 // indirect - golang.org/x/net v0.39.0 // indirect + golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect golang.org/x/time v0.11.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 875fa09c0114..45e25113382b 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -142,8 +142,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= -golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/go.mod b/go.mod index d77a3c76339e..d6c9f1cb6bde 100644 --- a/go.mod +++ b/go.mod @@ -92,7 +92,7 @@ require ( go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.38.0 // indirect - golang.org/x/net v0.39.0 // indirect + golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect diff --git a/go.sum b/go.sum index 93e5ce2e582f..a8e8e110a9aa 100644 --- a/go.sum +++ b/go.sum @@ -198,8 +198,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= -golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/pkg/go.mod b/pkg/go.mod index 5b5ce7d2ae53..f584b70e9d89 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -24,9 +24,9 @@ require ( go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.39.0 // indirect + golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 4eb0b74e5b9a..76768ea315b5 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -53,12 +53,12 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= -golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= diff --git a/server/go.mod b/server/go.mod index 1bda44839712..05cd3dada2be 100644 --- a/server/go.mod +++ b/server/go.mod @@ -38,7 +38,7 @@ require ( go.opentelemetry.io/otel/sdk v1.35.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.38.0 - golang.org/x/net v0.39.0 + golang.org/x/net v0.40.0 golang.org/x/time v0.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 google.golang.org/grpc v1.72.0 diff --git a/server/go.sum b/server/go.sum index 6fae1dcb88a2..74ca4f612e36 100644 --- a/server/go.sum +++ b/server/go.sum @@ -176,8 +176,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= -golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tests/go.mod b/tests/go.mod index 5010550ed376..a5705ccb960c 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -94,7 +94,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.39.0 // indirect + golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect diff --git a/tests/go.sum b/tests/go.sum index 9c68c7ea1f1d..30dfad66ef19 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -204,8 +204,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= -golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 6e8cf4f67560..6c942b7fef1d 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -212,15 +212,15 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.37.0 // indirect + golang.org/x/crypto v0.38.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect golang.org/x/mod v0.24.0 // indirect - golang.org/x/net v0.39.0 // indirect - golang.org/x/sync v0.13.0 // indirect + golang.org/x/net v0.40.0 // indirect + golang.org/x/sync v0.14.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/term v0.31.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/term v0.32.0 // indirect + golang.org/x/text v0.25.0 // indirect golang.org/x/tools v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 35e24ec7fefc..d9d01bd2f6ac 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -539,8 +539,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= -golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= +golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= +golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -581,8 +581,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= -golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -593,8 +593,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= -golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= +golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -639,8 +639,8 @@ golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= -golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= +golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= +golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -655,8 +655,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index e09195c46c92..70d03fdc3235 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -22,5 +22,5 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/image v0.18.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/text v0.25.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index b0a31597a315..3256affc31b9 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -53,8 +53,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 773b0545f214..c7be573cad41 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -18,9 +18,9 @@ require ( github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect - golang.org/x/net v0.39.0 // indirect + golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/grpc v1.72.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 9d0e4133f988..d28b3449647a 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1336,8 +1336,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= -golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1516,8 +1516,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 153ba08ff360461429c7b725a29977daf9fa264c Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 13 May 2025 17:34:26 +0800 Subject: [PATCH 0172/1068] robustness: improved visualization for EtcdState and WatchOperation Signed-off-by: joshjms --- tests/robustness/model/deterministic.go | 25 +++++++++++---------- tests/robustness/model/non_deterministic.go | 5 +++-- tests/robustness/model/replay.go | 16 ++++++------- tests/robustness/model/watch.go | 14 ++++++------ tests/robustness/report/client.go | 10 +++++---- 5 files changed, 37 insertions(+), 33 deletions(-) diff --git a/tests/robustness/model/deterministic.go b/tests/robustness/model/deterministic.go index 29f8d7f6361b..70aaa581959b 100644 --- a/tests/robustness/model/deterministic.go +++ b/tests/robustness/model/deterministic.go @@ -19,6 +19,7 @@ import ( "errors" "fmt" "hash/fnv" + "html" "maps" "reflect" "sort" @@ -54,20 +55,20 @@ var DeterministicModel = porcupine.Model{ return fmt.Sprintf("%s -> %s", describeEtcdRequest(in.(EtcdRequest)), describeEtcdResponse(in.(EtcdRequest), MaybeEtcdResponse{EtcdResponse: out.(EtcdResponse)})) }, DescribeState: func(st any) string { - data, err := json.Marshal(st) + data, err := json.MarshalIndent(st, "", " ") if err != nil { panic(err) } - return string(data) + return "
" + html.EscapeString(string(data)) + "
" }, } type EtcdState struct { - Revision int64 - CompactRevision int64 - KeyValues map[string]ValueRevision - KeyLeases map[string]int64 - Leases map[int64]EtcdLease + Revision int64 `json:",omitempty"` + CompactRevision int64 `json:",omitempty"` + KeyValues map[string]ValueRevision `json:",omitempty"` + KeyLeases map[string]int64 `json:",omitempty"` + Leases map[int64]EtcdLease `json:",omitempty"` } func (s EtcdState) Equal(other EtcdState) bool { @@ -458,14 +459,14 @@ func (el EtcdLease) DeepCopy() EtcdLease { } type ValueRevision struct { - Value ValueOrHash - ModRevision int64 - Version int64 + Value ValueOrHash `json:",omitempty"` + ModRevision int64 `json:",omitempty"` + Version int64 `json:",omitempty"` } type ValueOrHash struct { - Value string - Hash uint32 + Value string `json:",omitempty"` + Hash uint32 `json:",omitempty"` } func ToValueOrHash(value string) ValueOrHash { diff --git a/tests/robustness/model/non_deterministic.go b/tests/robustness/model/non_deterministic.go index e48a815aa806..1bdbe87cd95e 100644 --- a/tests/robustness/model/non_deterministic.go +++ b/tests/robustness/model/non_deterministic.go @@ -17,6 +17,7 @@ package model import ( "encoding/json" "fmt" + "html" "reflect" "github.com/anishathalye/porcupine" @@ -40,11 +41,11 @@ var NonDeterministicModel = porcupine.Model{ return fmt.Sprintf("%s -> %s", describeEtcdRequest(in.(EtcdRequest)), describeEtcdResponse(in.(EtcdRequest), out.(MaybeEtcdResponse))) }, DescribeState: func(st any) string { - data, err := json.Marshal(st) + data, err := json.MarshalIndent(st, "", " ") if err != nil { panic(err) } - return string(data) + return "
" + html.EscapeString(string(data)) + "
" }, } diff --git a/tests/robustness/model/replay.go b/tests/robustness/model/replay.go index 7f2be26e8ed2..bed69d12f745 100644 --- a/tests/robustness/model/replay.go +++ b/tests/robustness/model/replay.go @@ -134,20 +134,20 @@ func toWatchEvents(prevState *EtcdState, request EtcdRequest, response MaybeEtcd } type WatchEvent struct { - PersistedEvent - PrevValue *ValueRevision + PersistedEvent `json:",omitempty"` + PrevValue *ValueRevision `json:",omitempty"` } type PersistedEvent struct { - Event - Revision int64 - IsCreate bool + Event `json:",omitempty"` + Revision int64 `json:",omitempty"` + IsCreate bool `json:",omitempty"` } type Event struct { - Type OperationType - Key string - Value ValueOrHash + Type OperationType `json:",omitempty"` + Key string `json:",omitempty"` + Value ValueOrHash `json:",omitempty"` } func (e Event) Match(request WatchRequest) bool { diff --git a/tests/robustness/model/watch.go b/tests/robustness/model/watch.go index fc880e30ede6..de2c54d1cc44 100644 --- a/tests/robustness/model/watch.go +++ b/tests/robustness/model/watch.go @@ -17,14 +17,14 @@ package model import "time" type WatchOperation struct { - Request WatchRequest - Responses []WatchResponse + Request WatchRequest `json:",omitempty"` + Responses []WatchResponse `json:",omitempty"` } type WatchResponse struct { - Events []WatchEvent - IsProgressNotify bool - Revision int64 - Time time.Duration - Error string + Events []WatchEvent `json:",omitempty"` + IsProgressNotify bool `json:",omitempty"` + Revision int64 `json:",omitempty"` + Time time.Duration `json:",omitempty"` + Error string `json:",omitempty"` } diff --git a/tests/robustness/report/client.go b/tests/robustness/report/client.go index 208da9f0c1a0..9bfc7cbc6881 100644 --- a/tests/robustness/report/client.go +++ b/tests/robustness/report/client.go @@ -177,12 +177,13 @@ func persistWatchOperations(t *testing.T, lg *zap.Logger, path string, responses return } defer file.Close() - encoder := json.NewEncoder(file) for _, resp := range responses { - err := encoder.Encode(resp) + data, err := json.MarshalIndent(resp, "", " ") if err != nil { t.Errorf("Failed to encode operation: %v", err) } + file.Write(data) + file.WriteString("\n") } } @@ -194,11 +195,12 @@ func persistKeyValueOperations(t *testing.T, lg *zap.Logger, path string, operat return } defer file.Close() - encoder := json.NewEncoder(file) for _, op := range operations { - err := encoder.Encode(op) + data, err := json.MarshalIndent(op, "", " ") if err != nil { t.Errorf("Failed to encode KV operation: %v", err) } + file.Write(data) + file.WriteString("\n") } } From c22a162af717d4c19c1dd2c5cd6dcf640f66bad9 Mon Sep 17 00:00:00 2001 From: joshjms Date: Wed, 14 May 2025 11:22:22 +0800 Subject: [PATCH 0173/1068] dependency: bump gotest.tools/gotestsum from 1.12.1 to 1.12.2 in /tools/mod PR: https://github.com/etcd-io/etcd/pull/19929 Signed-off-by: joshjms --- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 6c942b7fef1d..15a89cdde849 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -17,7 +17,7 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 - gotest.tools/gotestsum v1.12.1 + gotest.tools/gotestsum v1.12.2 gotest.tools/v3 v3.5.2 honnef.co/go/tools v0.6.1 ) diff --git a/tools/mod/go.sum b/tools/mod/go.sum index d9d01bd2f6ac..5e1ca7352ed1 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -707,8 +707,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/gotestsum v1.12.1 h1:dvcxFBTFR1QsQmrCQa4k/vDXow9altdYz4CjdW+XeBE= -gotest.tools/gotestsum v1.12.1/go.mod h1:mwDmLbx9DIvr09dnAoGgQPLaSXszNpXpWo2bsQge5BE= +gotest.tools/gotestsum v1.12.2 h1:eli4tu9Q2D/ogDsEGSr8XfQfl7mT0JsGOG6DFtUiZ/Q= +gotest.tools/gotestsum v1.12.2/go.mod h1:kjRtCglPZVsSU0hFHX3M5VWBM6Y63emHuB14ER1/sow= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= From 54bcc720f612c7fdd28da076118037f4eb60354c Mon Sep 17 00:00:00 2001 From: Nont Date: Tue, 13 May 2025 22:25:49 -0500 Subject: [PATCH 0174/1068] [Antithesis] Remove Go version from Dockerfile This ensure we use the latest, same version of Go as the etcd project Signed-off-by: Nont --- tests/antithesis/README.md | 2 ++ tests/antithesis/test-template/Dockerfile | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/antithesis/README.md b/tests/antithesis/README.md index 5834b7db3508..fe2593d24559 100644 --- a/tests/antithesis/README.md +++ b/tests/antithesis/README.md @@ -10,6 +10,8 @@ Run this command from the `antithesis/test-template` directory: make antithesis-build-client-docker-image ``` +This makes sure we use the same version of Go as the etcd project + ### 2. (Optional) Check the Image Locally You can verify your new image is built: diff --git a/tests/antithesis/test-template/Dockerfile b/tests/antithesis/test-template/Dockerfile index a5a4a3d58953..a12cdcd4f438 100644 --- a/tests/antithesis/test-template/Dockerfile +++ b/tests/antithesis/test-template/Dockerfile @@ -1,4 +1,4 @@ -ARG GO_VERSION=1.24.3 +ARG GO_VERSION ARG ARCH=amd64 FROM golang:$GO_VERSION From 1959a224216074d1c54b86b294e3f5d687c20ee0 Mon Sep 17 00:00:00 2001 From: Nont Date: Sat, 10 May 2025 21:36:19 -0500 Subject: [PATCH 0175/1068] [Antithesis] dump result to robustness report Signed-off-by: Nont --- tests/antithesis/docker-compose.yml | 7 +- .../test-template/robustness/main.go | 26 +++++-- tests/robustness/main_test.go | 35 +++++++++- tests/robustness/report/client.go | 35 ++++++---- tests/robustness/report/client_test.go | 3 +- tests/robustness/report/report.go | 69 +++++++------------ 6 files changed, 105 insertions(+), 70 deletions(-) diff --git a/tests/antithesis/docker-compose.yml b/tests/antithesis/docker-compose.yml index 9b8eb0628a13..32f9d82d9579 100644 --- a/tests/antithesis/docker-compose.yml +++ b/tests/antithesis/docker-compose.yml @@ -13,7 +13,12 @@ services: - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}1:/var/etcddata1 - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}2:/var/etcddata2 - ${ETCD_ROBUSTNESS_REPORT_PATH:-/tmp/etcdreport}:/var/report - command: chown -R ${USER_ID:-root}:${GROUP_ID:-root} /var/etcddata0 /var/etcddata1 /var/etcddata2 /var/report + command: + - /bin/sh + - -c + - | + rm -rf /var/etcddata0/* /var/etcddata1/* /var/etcddata2/* /var/report/* + chown -R ${USER_ID:-root}:${GROUP_ID:-root} /var/etcddata0 /var/etcddata1 /var/etcddata2 /var/report etcd0: image: 'gcr.io/etcd-development/etcd:v3.5.21' diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index 8d3edde03df6..8c2bb6162d63 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -59,8 +59,8 @@ const ( defaultLocalEtcdDataPath = "/tmp/etcddata%d" localEtcdDataPathEnv = "ETCD_ROBUSTNESS_DATA_PATH" - defaultReportPath = "/var/report/history.html" - localReportPath = "history.html" + defaultReportPath = "/var/report/" + localReportPath = "report" ) func main() { @@ -86,6 +86,13 @@ func main() { fmt.Sprintf(etcdDataPath, 2), } + if err := os.RemoveAll(reportPath); err != nil { + panic(err) + } + if err := os.MkdirAll(reportPath, 0o700); err != nil { + panic(err) + } + ctx := context.Background() baseTime := time.Now() duration := time.Duration(robustnessrand.RandRange(5, 15) * int64(time.Second)) @@ -97,8 +104,13 @@ func testRobustness(ctx context.Context, hosts, persistedRequestdirs []string, r if err != nil { panic(err) } + serverDataPaths := make(map[string]string) + for i := range len(persistedRequestdirs) { + serverDataPaths[fmt.Sprintf("etcd%d", i)] = persistedRequestdirs[i] + } lg.Info("Start traffic generation", zap.Duration("duration", duration)) - reports := runTraffic(ctx, lg, hosts, baseTime, duration) + r := report.TestReport{Logger: lg} + r.Client = runTraffic(ctx, lg, hosts, baseTime, duration) lg.Info("Completed traffic generation") etcdDataDirs, err := report.PersistedRequestsDirs(lg, persistedRequestdirs) @@ -107,7 +119,7 @@ func testRobustness(ctx context.Context, hosts, persistedRequestdirs []string, r panic(err) } validateConfig := validate.Config{ExpectRevisionUnique: traffic.EtcdAntithesis.ExpectUniqueRevision()} - result, err := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, etcdDataDirs, 5*time.Minute) + result, err := validate.ValidateAndReturnVisualize(lg, validateConfig, r.Client, etcdDataDirs, 5*time.Minute) if err != nil { lg.Info("Validation error", zap.Error(err)) assert.Unreachable("Validation error", map[string]any{"error": err}) @@ -118,9 +130,9 @@ func testRobustness(ctx context.Context, hosts, persistedRequestdirs []string, r } else { assert.Always(result.Linearization.Linearizable == porcupine.Ok, "Linearization validation passes", nil) } - err = result.Linearization.Visualize(lg, reportPath) - if err != nil { - lg.Error("Failed to save visualization", zap.Error(err)) + r.Visualize = result.Linearization.Visualize + if err := r.Report(reportPath); err != nil { + lg.Error("Failed to save validation report", zap.Error(err)) } assert.Always(result.WatchError == nil, "Watch validation passes", map[string]any{"error": result.WatchError}) assert.Always(result.SerializableError == nil, "Serializable validation passes", map[string]any{"error": result.WatchError}) diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index 097c30ac57ca..14b70639215b 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -16,7 +16,11 @@ package robustness import ( "context" + "fmt" "math/rand" + "os" + "path/filepath" + "strings" "testing" "time" @@ -84,13 +88,21 @@ func TestRobustnessRegression(t *testing.T) { } func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s scenarios.TestScenario, c *e2e.EtcdProcessCluster) { - r := report.TestReport{Logger: lg, Cluster: c} + serverDataPaths := report.ServerDataPaths(c) + r := report.TestReport{Logger: lg, ServersDataPath: serverDataPaths} // t.Failed() returns false during panicking. We need to forcibly // save data on panicking. // Refer to: https://github.com/golang/go/issues/49929 panicked := true defer func() { - r.Report(t, panicked) + _, persistResults := os.LookupEnv("PERSIST_RESULTS") + shouldReport := t.Failed() || panicked || persistResults + path := testResultsDirectory(t) + if shouldReport { + if err := r.Report(path); err != nil { + t.Error(err) + } + } }() r.Client = runScenario(ctx, t, s, lg, c) persistedRequests, err := report.PersistedRequestsCluster(lg, c) @@ -183,3 +195,22 @@ func forcestopCluster(clus *e2e.EtcdProcessCluster) error { } return clus.ConcurrentStop() } + +func testResultsDirectory(t *testing.T) string { + resultsDirectory, ok := os.LookupEnv("RESULTS_DIR") + if !ok { + resultsDirectory = "/tmp/" + } + resultsDirectory, err := filepath.Abs(resultsDirectory) + if err != nil { + panic(err) + } + path, err := filepath.Abs(filepath.Join( + resultsDirectory, strings.ReplaceAll(t.Name(), "/", "_"), fmt.Sprintf("%v", time.Now().UnixNano()))) + require.NoError(t, err) + err = os.RemoveAll(path) + require.NoError(t, err) + err = os.MkdirAll(path, 0o700) + require.NoError(t, err) + return path +} diff --git a/tests/robustness/report/client.go b/tests/robustness/report/client.go index 208da9f0c1a0..572c68484472 100644 --- a/tests/robustness/report/client.go +++ b/tests/robustness/report/client.go @@ -22,10 +22,8 @@ import ( "sort" "strconv" "strings" - "testing" "github.com/anishathalye/porcupine" - "github.com/stretchr/testify/require" "go.uber.org/zap" "go.etcd.io/etcd/tests/v3/robustness/model" @@ -47,25 +45,32 @@ func (r ClientReport) WatchEventCount() int { return count } -func persistClientReports(t *testing.T, lg *zap.Logger, path string, reports []ClientReport) { +func persistClientReports(lg *zap.Logger, path string, reports []ClientReport) error { sort.Slice(reports, func(i, j int) bool { return reports[i].ClientID < reports[j].ClientID }) for _, r := range reports { clientDir := filepath.Join(path, fmt.Sprintf("client-%d", r.ClientID)) - err := os.MkdirAll(clientDir, 0o700) - require.NoError(t, err) + if err := os.MkdirAll(clientDir, 0o700); err != nil { + return err + } + if len(r.Watch) != 0 { - persistWatchOperations(t, lg, filepath.Join(clientDir, "watch.json"), r.Watch) + if err := persistWatchOperations(lg, filepath.Join(clientDir, "watch.json"), r.Watch); err != nil { + return err + } } else { lg.Info("no watch operations for client, skip persisting", zap.Int("client-id", r.ClientID)) } if len(r.KeyValue) != 0 { - persistKeyValueOperations(t, lg, filepath.Join(clientDir, "operations.json"), r.KeyValue) + if err := persistKeyValueOperations(lg, filepath.Join(clientDir, "operations.json"), r.KeyValue); err != nil { + return err + } } else { lg.Info("no KV operations for client, skip persisting", zap.Int("client-id", r.ClientID)) } } + return nil } func LoadClientReports(path string) ([]ClientReport, error) { @@ -169,36 +174,36 @@ func loadKeyValueOperations(path string) (operations []porcupine.Operation, err return operations, nil } -func persistWatchOperations(t *testing.T, lg *zap.Logger, path string, responses []model.WatchOperation) { +func persistWatchOperations(lg *zap.Logger, path string, responses []model.WatchOperation) error { lg.Info("Saving watch operations", zap.String("path", path)) file, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o755) if err != nil { - t.Errorf("Failed to save watch operations: %v", err) - return + return fmt.Errorf("failed to save watch operations: %w", err) } defer file.Close() encoder := json.NewEncoder(file) for _, resp := range responses { err := encoder.Encode(resp) if err != nil { - t.Errorf("Failed to encode operation: %v", err) + return fmt.Errorf("failed to encode operation: %w", err) } } + return nil } -func persistKeyValueOperations(t *testing.T, lg *zap.Logger, path string, operations []porcupine.Operation) { +func persistKeyValueOperations(lg *zap.Logger, path string, operations []porcupine.Operation) error { lg.Info("Saving operation history", zap.String("path", path)) file, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o755) if err != nil { - t.Errorf("Failed to save KV operation history: %v", err) - return + return fmt.Errorf("Failed to save KV operation history: %w", err) } defer file.Close() encoder := json.NewEncoder(file) for _, op := range operations { err := encoder.Encode(op) if err != nil { - t.Errorf("Failed to encode KV operation: %v", err) + return fmt.Errorf("Failed to encode KV operation: %w", err) } } + return nil } diff --git a/tests/robustness/report/client_test.go b/tests/robustness/report/client_test.go index 07da049c74ea..ce14da9472bd 100644 --- a/tests/robustness/report/client_test.go +++ b/tests/robustness/report/client_test.go @@ -133,7 +133,8 @@ func TestPersistLoadClientReports(t *testing.T) { }, } path := t.TempDir() - persistClientReports(t, zaptest.NewLogger(t), path, reports) + err := persistClientReports(zaptest.NewLogger(t), path, reports) + require.NoError(t, err) got, err := LoadClientReports(path) require.NoError(t, err) if diff := cmp.Diff(reports, got, cmpopts.EquateEmpty()); diff != "" { diff --git a/tests/robustness/report/report.go b/tests/robustness/report/report.go index 4b3780c5de24..915d9346e45a 100644 --- a/tests/robustness/report/report.go +++ b/tests/robustness/report/report.go @@ -18,68 +18,49 @@ import ( "fmt" "os" "path/filepath" - "strings" - "testing" - "time" - "github.com/stretchr/testify/require" "go.uber.org/zap" "go.etcd.io/etcd/tests/v3/framework/e2e" ) type TestReport struct { - Logger *zap.Logger - Cluster *e2e.EtcdProcessCluster - Client []ClientReport - Visualize func(lg *zap.Logger, path string) error + Logger *zap.Logger + Cluster *e2e.EtcdProcessCluster + ServersDataPath map[string]string + Client []ClientReport + Visualize func(lg *zap.Logger, path string) error } -func testResultsDirectory(t *testing.T) string { - resultsDirectory, ok := os.LookupEnv("RESULTS_DIR") - if !ok { - resultsDirectory = "/tmp/" - } - resultsDirectory, err := filepath.Abs(resultsDirectory) - if err != nil { - panic(err) - } - path, err := filepath.Abs(filepath.Join( - resultsDirectory, strings.ReplaceAll(t.Name(), "/", "_"), fmt.Sprintf("%v", time.Now().UnixNano()))) - require.NoError(t, err) - err = os.RemoveAll(path) - require.NoError(t, err) - err = os.MkdirAll(path, 0o700) - require.NoError(t, err) - return path -} - -func (r *TestReport) Report(t *testing.T, force bool) { - _, persistResultsEnvSet := os.LookupEnv("PERSIST_RESULTS") - if !t.Failed() && !force && !persistResultsEnvSet { - return - } - path := testResultsDirectory(t) +func (r *TestReport) Report(path string) error { r.Logger.Info("Saving robustness test report", zap.String("path", path)) - for _, member := range r.Cluster.Procs { - memberDataDir := filepath.Join(path, fmt.Sprintf("server-%s", member.Config().Name)) - persistMemberDataDir(t, r.Logger, member, memberDataDir) + for server, dataPath := range r.ServersDataPath { + serverReportPath := filepath.Join(path, fmt.Sprintf("server-%s", server)) + r.Logger.Info("Saving member data dir", zap.String("member", server), zap.String("path", dataPath)) + if err := os.Rename(dataPath, serverReportPath); err != nil { + return err + } } if r.Client != nil { - persistClientReports(t, r.Logger, path, r.Client) + if err := persistClientReports(r.Logger, path, r.Client); err != nil { + return err + } } if r.Visualize != nil { - err := r.Visualize(r.Logger, filepath.Join(path, "history.html")) - if err != nil { - t.Error(err) + if err := r.Visualize(r.Logger, filepath.Join(path, "history.html")); err != nil { + return err } } + return nil } -func persistMemberDataDir(t *testing.T, lg *zap.Logger, member e2e.EtcdProcess, path string) { - lg.Info("Saving member data dir", zap.String("member", member.Config().Name), zap.String("path", path)) - err := os.Rename(memberDataDir(member), path) - require.NoError(t, err) +func ServerDataPaths(c *e2e.EtcdProcessCluster) map[string]string { + dataPaths := make(map[string]string) + for _, member := range c.Procs { + dataPaths[member.Config().Name] = memberDataDir(member) + } + + return dataPaths } func memberDataDir(member e2e.EtcdProcess) string { From d2434c17219aaaec20ef85b81616c1fc86c36cca Mon Sep 17 00:00:00 2001 From: joshjms Date: Wed, 14 May 2025 11:24:00 +0800 Subject: [PATCH 0176/1068] dependency: bump github.com/alexfalkowski/gocovmerge from 1.7.0 to 1.8.0 in /tools/mod PR: https://github.com/etcd-io/etcd/pull/19930 Signed-off-by: joshjms --- tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 15a89cdde849..6580f41c27c7 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -5,7 +5,7 @@ go 1.24 toolchain go1.24.3 require ( - github.com/alexfalkowski/gocovmerge v1.7.0 + github.com/alexfalkowski/gocovmerge v1.8.0 github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 github.com/cloudflare/cfssl v1.6.5 @@ -221,7 +221,7 @@ require ( golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect golang.org/x/text v0.25.0 // indirect - golang.org/x/tools v0.32.0 // indirect + golang.org/x/tools v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/grpc v1.72.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 5e1ca7352ed1..ad52111b4cdc 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -36,8 +36,8 @@ github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsr github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= -github.com/alexfalkowski/gocovmerge v1.7.0 h1:R/zzCbFZ91WDea7UcoQdEflfv406ARu94eeLCYcuP+M= -github.com/alexfalkowski/gocovmerge v1.7.0/go.mod h1:pnseUyIoFOj8DWSE1n7lZyGceAf3Y/JM8KebVaQFAVA= +github.com/alexfalkowski/gocovmerge v1.8.0 h1:N5e33J3oMAweMBsJTOv0GwOuAoD3CdR5NhNOt7aJSVs= +github.com/alexfalkowski/gocovmerge v1.8.0/go.mod h1:RaTPWgDVJlySp1sgyUz5w+ZLh17fIptLDZD5100epAI= github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU= github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= @@ -677,8 +677,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU= -golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s= +golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= +golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 1ea8146e7409581f1925690a5b7da59c65f7c87d Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Wed, 14 May 2025 14:05:30 +0200 Subject: [PATCH 0177/1068] Revert "[Antithesis] Remove Go version from Dockerfile" This reverts commit be233371215da4574bfcd60d0e265832b010f9c9. Signed-off-by: Marek Siarkowicz --- tests/antithesis/README.md | 2 -- tests/antithesis/test-template/Dockerfile | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/antithesis/README.md b/tests/antithesis/README.md index fe2593d24559..5834b7db3508 100644 --- a/tests/antithesis/README.md +++ b/tests/antithesis/README.md @@ -10,8 +10,6 @@ Run this command from the `antithesis/test-template` directory: make antithesis-build-client-docker-image ``` -This makes sure we use the same version of Go as the etcd project - ### 2. (Optional) Check the Image Locally You can verify your new image is built: diff --git a/tests/antithesis/test-template/Dockerfile b/tests/antithesis/test-template/Dockerfile index a12cdcd4f438..a5a4a3d58953 100644 --- a/tests/antithesis/test-template/Dockerfile +++ b/tests/antithesis/test-template/Dockerfile @@ -1,4 +1,4 @@ -ARG GO_VERSION +ARG GO_VERSION=1.24.3 ARG ARCH=amd64 FROM golang:$GO_VERSION From f4cfb989b01310f02bb2a79cd6a92a92f1f89174 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Wed, 14 May 2025 13:09:07 +0200 Subject: [PATCH 0178/1068] Small fixes in creating, copying and removing data directory Signed-off-by: Marek Siarkowicz --- .../test-template/robustness/main.go | 31 +++++++++---------- tests/robustness/report/report.go | 8 +++-- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index 8c2bb6162d63..dcf9d8f88d90 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -20,7 +20,9 @@ import ( "context" "flag" "fmt" + "maps" "os" + "slices" "sync" "time" @@ -86,34 +88,32 @@ func main() { fmt.Sprintf(etcdDataPath, 2), } - if err := os.RemoveAll(reportPath); err != nil { - panic(err) - } - if err := os.MkdirAll(reportPath, 0o700); err != nil { - panic(err) - } - ctx := context.Background() baseTime := time.Now() duration := time.Duration(robustnessrand.RandRange(5, 15) * int64(time.Second)) - testRobustness(ctx, hosts, persistedRequestdirs, reportPath, baseTime, duration) -} -func testRobustness(ctx context.Context, hosts, persistedRequestdirs []string, reportPath string, baseTime time.Time, duration time.Duration) { lg, err := zap.NewProduction() if err != nil { panic(err) } - serverDataPaths := make(map[string]string) + r := report.TestReport{Logger: lg, ServersDataPath: map[string]string{}} for i := range len(persistedRequestdirs) { - serverDataPaths[fmt.Sprintf("etcd%d", i)] = persistedRequestdirs[i] + r.ServersDataPath[fmt.Sprintf("etcd%d", i)] = persistedRequestdirs[i] } + defer func() { + if err := r.Report(reportPath); err != nil { + lg.Error("Failed to save validation report", zap.Error(err)) + } + }() + testRobustness(ctx, lg, &r, hosts, baseTime, duration) +} + +func testRobustness(ctx context.Context, lg *zap.Logger, r *report.TestReport, hosts []string, baseTime time.Time, duration time.Duration) { lg.Info("Start traffic generation", zap.Duration("duration", duration)) - r := report.TestReport{Logger: lg} r.Client = runTraffic(ctx, lg, hosts, baseTime, duration) lg.Info("Completed traffic generation") - etcdDataDirs, err := report.PersistedRequestsDirs(lg, persistedRequestdirs) + etcdDataDirs, err := report.PersistedRequestsDirs(lg, slices.Collect(maps.Values(r.ServersDataPath))) if err != nil { lg.Error("Failed to create PersistedRequestdirs to access etcd WAL files") panic(err) @@ -131,9 +131,6 @@ func testRobustness(ctx context.Context, hosts, persistedRequestdirs []string, r assert.Always(result.Linearization.Linearizable == porcupine.Ok, "Linearization validation passes", nil) } r.Visualize = result.Linearization.Visualize - if err := r.Report(reportPath); err != nil { - lg.Error("Failed to save validation report", zap.Error(err)) - } assert.Always(result.WatchError == nil, "Watch validation passes", map[string]any{"error": result.WatchError}) assert.Always(result.SerializableError == nil, "Serializable validation passes", map[string]any{"error": result.WatchError}) lg.Info("Completed robustness validation") diff --git a/tests/robustness/report/report.go b/tests/robustness/report/report.go index 915d9346e45a..daf488f7100e 100644 --- a/tests/robustness/report/report.go +++ b/tests/robustness/report/report.go @@ -34,10 +34,14 @@ type TestReport struct { func (r *TestReport) Report(path string) error { r.Logger.Info("Saving robustness test report", zap.String("path", path)) + err := os.RemoveAll(path) + if err != nil { + r.Logger.Error("Failed to remove report dir", zap.Error(err)) + } for server, dataPath := range r.ServersDataPath { serverReportPath := filepath.Join(path, fmt.Sprintf("server-%s", server)) - r.Logger.Info("Saving member data dir", zap.String("member", server), zap.String("path", dataPath)) - if err := os.Rename(dataPath, serverReportPath); err != nil { + r.Logger.Info("Saving member data dir", zap.String("member", server), zap.String("data-dir", dataPath), zap.String("path", serverReportPath)) + if err := os.CopyFS(serverReportPath, os.DirFS(dataPath)); err != nil { return err } } From 721a53236ce49dd4287b7984b5302a13805a819a Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Wed, 14 May 2025 14:10:10 +0200 Subject: [PATCH 0179/1068] Disable other validations when linearization failed Signed-off-by: Marek Siarkowicz --- tests/robustness/validate/validate.go | 45 ++++++++++++++++----------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index 944c2f21f48f..39f6b28c4926 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -56,26 +56,33 @@ func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.Cli panic(fmt.Sprintf("Unknown Linearization result %s", result.Linearization.Linearizable)) } - if persistedRequests != nil { - replay := model.NewReplay(persistedRequests) - - lg.Info("Validating watch") - start = time.Now() - result.WatchError = validateWatch(lg, cfg, reports, replay) - if result.WatchError == nil { - lg.Info("Watch validation success", zap.Duration("duration", time.Since(start))) - } else { - lg.Error("Watch validation failed", zap.Duration("duration", time.Since(start)), zap.Error(result.WatchError)) - } + // Skip other validations if model is not linearizable, as they are expected to fail too and obfuscate the logs. + if result.Linearization.Linearizable != porcupine.Ok { + lg.Info("Skipping other validations as linearization failed") + return result, nil + } + if persistedRequests == nil { + lg.Info("Skipping other validations as persisted requests were not passed") + return result, nil + } + replay := model.NewReplay(persistedRequests) + + lg.Info("Validating watch") + start = time.Now() + result.WatchError = validateWatch(lg, cfg, reports, replay) + if result.WatchError == nil { + lg.Info("Watch validation success", zap.Duration("duration", time.Since(start))) + } else { + lg.Error("Watch validation failed", zap.Duration("duration", time.Since(start)), zap.Error(result.WatchError)) + } - lg.Info("Validating serializable operations") - start = time.Now() - result.SerializableError = validateSerializableOperations(lg, serializableOperations, replay) - if result.SerializableError == nil { - lg.Info("Serializable validation success", zap.Duration("duration", time.Since(start))) - } else { - lg.Error("Serializable validation failed", zap.Duration("duration", time.Since(start)), zap.Error(result.SerializableError)) - } + lg.Info("Validating serializable operations") + start = time.Now() + result.SerializableError = validateSerializableOperations(lg, serializableOperations, replay) + if result.SerializableError == nil { + lg.Info("Serializable validation success", zap.Duration("duration", time.Since(start))) + } else { + lg.Error("Serializable validation failed", zap.Duration("duration", time.Since(start)), zap.Error(result.SerializableError)) } return result, nil From c6873739f99f2044725aabed96868020b04bfdb5 Mon Sep 17 00:00:00 2001 From: huangzw Date: Fri, 21 Feb 2025 15:50:11 +0800 Subject: [PATCH 0180/1068] chore: remove unused and deprecated func `GetEffectiveNodeIdsFromWalEntries` Signed-off-by: huangzw --- server/storage/util.go | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/server/storage/util.go b/server/storage/util.go index b6ca2ac88e5c..210cea8c6188 100644 --- a/server/storage/util.go +++ b/server/storage/util.go @@ -21,12 +21,13 @@ import ( "go.uber.org/zap" + "go.etcd.io/raft/v3/raftpb" + "go.etcd.io/etcd/client/pkg/v3/types" "go.etcd.io/etcd/pkg/v3/pbutil" "go.etcd.io/etcd/server/v3/config" "go.etcd.io/etcd/server/v3/etcdserver/api/membership" "go.etcd.io/etcd/server/v3/etcdserver/api/v2store" - "go.etcd.io/raft/v3/raftpb" ) // AssertNoV2StoreContent -> depending on the deprecation stage, warns or report an error @@ -109,16 +110,6 @@ func CreateConfigChangeEnts(lg *zap.Logger, ids []uint64, self uint64, term, ind return ents } -// GetEffectiveNodeIdsFromWalEntries returns an ordered set of IDs included in the given snapshot and -// the entries. -// -// Deprecated: use GetEffectiveNodeIDsFromWALEntries instead. -// -//revive:disable-next-line:var-naming -func GetEffectiveNodeIdsFromWalEntries(lg *zap.Logger, snap *raftpb.Snapshot, ents []raftpb.Entry) []uint64 { - return GetEffectiveNodeIDsFromWALEntries(lg, snap, ents) -} - // GetEffectiveNodeIDsFromWALEntries returns an ordered set of IDs included in the given snapshot and // the entries. The given snapshot/entries can contain three kinds of // ID-related entry: From a35290b10c2af9a99f2e95270c8dbc6d1d0f1c30 Mon Sep 17 00:00:00 2001 From: huangzw Date: Fri, 21 Feb 2025 15:52:48 +0800 Subject: [PATCH 0181/1068] chore: adjust import order Signed-off-by: huangzw --- server/storage/util.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/storage/util.go b/server/storage/util.go index 210cea8c6188..e03e3ffaf081 100644 --- a/server/storage/util.go +++ b/server/storage/util.go @@ -19,9 +19,8 @@ import ( "fmt" "sort" - "go.uber.org/zap" - "go.etcd.io/raft/v3/raftpb" + "go.uber.org/zap" "go.etcd.io/etcd/client/pkg/v3/types" "go.etcd.io/etcd/pkg/v3/pbutil" From 26106f40da646c2bc2c401641cc29e13614f8328 Mon Sep 17 00:00:00 2001 From: huangzw Date: Fri, 21 Feb 2025 17:07:17 +0800 Subject: [PATCH 0182/1068] chore: adjust import order Signed-off-by: huangzw --- server/storage/util.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/storage/util.go b/server/storage/util.go index e03e3ffaf081..5852362f724a 100644 --- a/server/storage/util.go +++ b/server/storage/util.go @@ -19,7 +19,6 @@ import ( "fmt" "sort" - "go.etcd.io/raft/v3/raftpb" "go.uber.org/zap" "go.etcd.io/etcd/client/pkg/v3/types" @@ -27,6 +26,7 @@ import ( "go.etcd.io/etcd/server/v3/config" "go.etcd.io/etcd/server/v3/etcdserver/api/membership" "go.etcd.io/etcd/server/v3/etcdserver/api/v2store" + "go.etcd.io/raft/v3/raftpb" ) // AssertNoV2StoreContent -> depending on the deprecation stage, warns or report an error From d5162f1f4d1fdf50b7cd77d8ce9ce2ae8b46a529 Mon Sep 17 00:00:00 2001 From: joshjms Date: Thu, 15 May 2025 10:40:03 +0800 Subject: [PATCH 0183/1068] Add test-robustness-release-3.6 Makefile target Signed-off-by: joshjms --- tests/robustness/Makefile | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/tests/robustness/Makefile b/tests/robustness/Makefile index 787b7c8cf8f7..0c60688038fc 100644 --- a/tests/robustness/Makefile +++ b/tests/robustness/Makefile @@ -13,8 +13,12 @@ test-robustness-reports: TOPLEVEL_MAKE := $(MAKE) --directory=$(REPOSITORY_ROOT) .PHONY: test-robustness-main -test-robustness-main: /tmp/etcd-main-failpoints/bin /tmp/etcd-release-3.5-failpoints/bin - GO_TEST_FLAGS="$${GO_TEST_FLAGS} --bin-dir=/tmp/etcd-main-failpoints/bin --bin-last-release=/tmp/etcd-release-3.5-failpoints/bin/etcd" $(TOPLEVEL_MAKE) test-robustness +test-robustness-main: /tmp/etcd-main-failpoints/bin /tmp/etcd-release-3.6-failpoints/bin + GO_TEST_FLAGS="$${GO_TEST_FLAGS} --bin-dir=/tmp/etcd-main-failpoints/bin --bin-last-release=/tmp/etcd-release-3.6-failpoints/bin/etcd" $(TOPLEVEL_MAKE) test-robustness + +.PHONY: test-robustness-release-3.6 +test-robustness-release-3.6: /tmp/etcd-release-3.6-failpoints/bin /tmp/etcd-release-3.5-failpoints/bin + GO_TEST_FLAGS="$${GO_TEST_FLAGS} --bin-dir=/tmp/etcd-release-3.6-failpoints/bin --bin-last-release=/tmp/etcd-release-3.5-failpoints/bin/etcd" $(TOPLEVEL_MAKE) test-robustness .PHONY: test-robustness-release-3.5 test-robustness-release-3.5: /tmp/etcd-release-3.5-failpoints/bin /tmp/etcd-release-3.4-failpoints/bin @@ -112,6 +116,14 @@ $(GOPATH)/bin/gofail: $(REPOSITORY_ROOT)/tools/mod/go.mod $(REPOSITORY_ROOT)/too $(MAKE) gofail-enable; \ $(MAKE) build; +/tmp/etcd-release-3.6-failpoints/bin: $(GOPATH)/bin/gofail + rm -rf /tmp/etcd-release-3.6-failpoints/ + mkdir -p /tmp/etcd-release-3.6-failpoints/ + cd /tmp/etcd-release-3.6-failpoints/; \ + git clone --depth 1 --branch release-3.6 https://github.com/etcd-io/etcd.git .; \ + $(MAKE) gofail-enable; \ + $(MAKE) build; + /tmp/etcd-v3.5.2-failpoints/bin: /tmp/etcd-v3.5.4-failpoints/bin: /tmp/etcd-v3.5.5-failpoints/bin: From 639f8325f8228634bc5043490ff49dc47cb556c2 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 15 May 2025 16:37:13 +0200 Subject: [PATCH 0184/1068] Don't panic if could not read the persisted requests Validation works without persisted requests, it will just take longer. Signed-off-by: Marek Siarkowicz --- .../test-template/robustness/main.go | 17 ++++--------- tests/robustness/main_test.go | 9 +++---- tests/robustness/report/wal.go | 10 +++++--- tests/robustness/validate/operations.go | 4 +++ tests/robustness/validate/validate.go | 20 +++++++-------- tests/robustness/validate/validate_test.go | 25 ++++++++++--------- 6 files changed, 42 insertions(+), 43 deletions(-) diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index dcf9d8f88d90..0871166c1117 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -113,18 +113,11 @@ func testRobustness(ctx context.Context, lg *zap.Logger, r *report.TestReport, h r.Client = runTraffic(ctx, lg, hosts, baseTime, duration) lg.Info("Completed traffic generation") - etcdDataDirs, err := report.PersistedRequestsDirs(lg, slices.Collect(maps.Values(r.ServersDataPath))) - if err != nil { - lg.Error("Failed to create PersistedRequestdirs to access etcd WAL files") - panic(err) - } + persistedRequests, err := report.PersistedRequests(lg, slices.Collect(maps.Values(r.ServersDataPath))) + assert.Always(err == nil, "Loaded persisted requests", map[string]any{"error": err}) validateConfig := validate.Config{ExpectRevisionUnique: traffic.EtcdAntithesis.ExpectUniqueRevision()} - result, err := validate.ValidateAndReturnVisualize(lg, validateConfig, r.Client, etcdDataDirs, 5*time.Minute) - if err != nil { - lg.Info("Validation error", zap.Error(err)) - assert.Unreachable("Validation error", map[string]any{"error": err}) - return - } + result := validate.ValidateAndReturnVisualize(lg, validateConfig, r.Client, persistedRequests, 5*time.Minute) + assert.Always(result.Assumptions == nil, "Validation assumptions fulfilled", map[string]any{"error": result.Assumptions}) if result.Linearization.Linearizable == porcupine.Unknown { assert.Unreachable("Linearization timeout", nil) } else { @@ -132,7 +125,7 @@ func testRobustness(ctx context.Context, lg *zap.Logger, r *report.TestReport, h } r.Visualize = result.Linearization.Visualize assert.Always(result.WatchError == nil, "Watch validation passes", map[string]any{"error": result.WatchError}) - assert.Always(result.SerializableError == nil, "Serializable validation passes", map[string]any{"error": result.WatchError}) + assert.Always(result.SerializableError == nil, "Serializable validation passes", map[string]any{"error": result.SerializableError}) lg.Info("Completed robustness validation") } diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index 14b70639215b..d92a909a704a 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -106,13 +106,12 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s scenari }() r.Client = runScenario(ctx, t, s, lg, c) persistedRequests, err := report.PersistedRequestsCluster(lg, c) - require.NoError(t, err) - - validateConfig := validate.Config{ExpectRevisionUnique: s.Traffic.ExpectUniqueRevision()} - result, err := validate.ValidateAndReturnVisualize(lg, validateConfig, r.Client, persistedRequests, 5*time.Minute) if err != nil { - t.Errorf("Validation error: %v", err) + t.Error(err) } + + validateConfig := validate.Config{ExpectRevisionUnique: s.Traffic.ExpectUniqueRevision()} + result := validate.ValidateAndReturnVisualize(lg, validateConfig, r.Client, persistedRequests, 5*time.Minute) r.Visualize = result.Linearization.Visualize err = result.Error() if err != nil { diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index bb9b56e9bf2a..7f653ba32346 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -46,7 +46,7 @@ func LoadClusterPersistedRequests(lg *zap.Logger, path string) ([]model.EtcdRequ dataDirs = append(dataDirs, filepath.Join(path, file.Name())) } } - return PersistedRequestsDirs(lg, dataDirs) + return PersistedRequests(lg, dataDirs) } func PersistedRequestsCluster(lg *zap.Logger, cluster *e2e.EtcdProcessCluster) ([]model.EtcdRequest, error) { @@ -54,10 +54,10 @@ func PersistedRequestsCluster(lg *zap.Logger, cluster *e2e.EtcdProcessCluster) ( for _, proc := range cluster.Procs { dataDirs = append(dataDirs, memberDataDir(proc)) } - return PersistedRequestsDirs(lg, dataDirs) + return PersistedRequests(lg, dataDirs) } -func PersistedRequestsDirs(lg *zap.Logger, dataDirs []string) ([]model.EtcdRequest, error) { +func PersistedRequests(lg *zap.Logger, dataDirs []string) ([]model.EtcdRequest, error) { persistedRequests := []model.EtcdRequest{} // Allow failure in minority of etcd cluster. // 0 failures in 1 node cluster, 1 failure in 3 node cluster @@ -73,7 +73,9 @@ func PersistedRequestsDirs(lg *zap.Logger, dataDirs []string) ([]model.EtcdReque } minLength := min(len(persistedRequests), len(memberRequests)) if diff := cmp.Diff(memberRequests[:minLength], persistedRequests[:minLength]); diff != "" { - return nil, fmt.Errorf("unexpected differences between wal entries, diff:\n%s", diff) + lg.Error("unexpected differences between wal entries") + fmt.Print(diff) // zap doesn't nicely writes multiline strings like diff + return nil, errors.New("unexpected differences between wal entries") } if len(memberRequests) > len(persistedRequests) { persistedRequests = memberRequests diff --git a/tests/robustness/validate/operations.go b/tests/robustness/validate/operations.go index c738aae8a82a..2d5597d5757a 100644 --- a/tests/robustness/validate/operations.go +++ b/tests/robustness/validate/operations.go @@ -32,12 +32,16 @@ var ( ) type Result struct { + Assumptions error Linearization LinearizationResult WatchError error SerializableError error } func (r Result) Error() error { + if r.Assumptions != nil { + return fmt.Errorf("validation assumptions failed: %w", r.Assumptions) + } switch r.Linearization.Linearizable { case porcupine.Illegal: return errors.New("linearization failed") diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index 39f6b28c4926..1b9ed77908bd 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -29,16 +29,16 @@ import ( var ErrNotEmptyDatabase = errors.New("non empty database at start, required by model used for linearizability validation") -func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.ClientReport, persistedRequests []model.EtcdRequest, timeout time.Duration) (result Result, err error) { - err = checkValidationAssumptions(reports) - if err != nil { - return result, err +func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.ClientReport, persistedRequests []model.EtcdRequest, timeout time.Duration) (result Result) { + result.Assumptions = checkValidationAssumptions(reports) + if result.Assumptions != nil { + return result } linearizableOperations, serializableOperations := prepareAndCategorizeOperations(reports) // We are passing in the original reports and linearizableOperations with modified return time. // The reason is that linearizableOperations are those dedicated for linearization, which requires them to have returnTime set to infinity as required by pourcupine. // As for the report, the original report is used so the consumer doesn't need to track what patching was done or not. - if persistedRequests != nil { + if len(persistedRequests) != 0 { linearizableOperations = patchLinearizableOperations(linearizableOperations, reports, persistedRequests) } @@ -59,11 +59,11 @@ func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.Cli // Skip other validations if model is not linearizable, as they are expected to fail too and obfuscate the logs. if result.Linearization.Linearizable != porcupine.Ok { lg.Info("Skipping other validations as linearization failed") - return result, nil + return result } - if persistedRequests == nil { - lg.Info("Skipping other validations as persisted requests were not passed") - return result, nil + if len(persistedRequests) == 0 { + lg.Info("Skipping other validations as persisted requests were empty") + return result } replay := model.NewReplay(persistedRequests) @@ -85,7 +85,7 @@ func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.Cli lg.Error("Serializable validation failed", zap.Duration("duration", time.Since(start)), zap.Error(result.SerializableError)) } - return result, nil + return result } type Config struct { diff --git a/tests/robustness/validate/validate_test.go b/tests/robustness/validate/validate_test.go index 2af78b915890..73391712457a 100644 --- a/tests/robustness/validate/validate_test.go +++ b/tests/robustness/validate/validate_test.go @@ -45,12 +45,18 @@ func TestDataReports(t *testing.T) { require.NoError(t, err) persistedRequests, err := report.LoadClusterPersistedRequests(lg, path) - require.NoError(t, err) - result, err := ValidateAndReturnVisualize(zaptest.NewLogger(t), Config{}, reports, persistedRequests, 5*time.Minute) - require.NoError(t, err) + if err != nil { + t.Error(err) + } + result := ValidateAndReturnVisualize(zaptest.NewLogger(t), Config{}, reports, persistedRequests, 5*time.Minute) + if err != nil { + t.Error(err) + } err = result.Linearization.Visualize(lg, filepath.Join(path, "history.html")) - require.NoError(t, err) + if err != nil { + t.Error(err) + } }) } } @@ -168,19 +174,14 @@ func TestValidateAndReturnVisualize(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { lg := zaptest.NewLogger(t) - result, err := ValidateAndReturnVisualize(lg, Config{}, tc.reports, tc.persistedRequests, 5*time.Second) + result := ValidateAndReturnVisualize(lg, Config{}, tc.reports, tc.persistedRequests, 5*time.Second) if tc.expectError != "" { - if err != nil { - require.ErrorContains(t, err, tc.expectError) - } else { - require.ErrorContains(t, result.Error(), tc.expectError) - } + require.ErrorContains(t, result.Error(), tc.expectError) } else { - require.NoError(t, err) require.NoError(t, result.Error()) } - err = result.Linearization.Visualize(lg, filepath.Join(t.TempDir(), "history.html")) + err := result.Linearization.Visualize(lg, filepath.Join(t.TempDir(), "history.html")) require.NoError(t, err) }) } From 06dd9e81a01f9b7fcee14977b852a9873a73dd14 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 16 May 2025 10:36:35 +0200 Subject: [PATCH 0185/1068] Fix etcd endpoint in antithesis testing Signed-off-by: Marek Siarkowicz --- tests/antithesis/test-template/robustness/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index dcf9d8f88d90..4aa18370bbaa 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -50,7 +50,7 @@ var profile = traffic.Profile{ const ( defaultetcd0 = "etcd0:2379" defaultetcd1 = "etcd1:2379" - defaultetcd2 = "etcd0:2379" + defaultetcd2 = "etcd2:2379" localetcd0 = "127.0.0.1:12379" localetcd1 = "127.0.0.1:22379" From 528a9ba43ef17d1cd8057282f4d3e5e75e2a2837 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 16 May 2025 15:22:08 +0200 Subject: [PATCH 0186/1068] Test persistent request creation based on merging WAL Signed-off-by: Marek Siarkowicz --- tests/robustness/report/wal.go | 8 +- tests/robustness/report/wal_test.go | 300 ++++++++++++++++++++++++++++ 2 files changed, 307 insertions(+), 1 deletion(-) create mode 100644 tests/robustness/report/wal_test.go diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index 7f653ba32346..a7e3d16f9194 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -58,12 +58,16 @@ func PersistedRequestsCluster(lg *zap.Logger, cluster *e2e.EtcdProcessCluster) ( } func PersistedRequests(lg *zap.Logger, dataDirs []string) ([]model.EtcdRequest, error) { + return persistedRequests(lg, dataDirs, requestsPersistedInWAL) +} + +func persistedRequests(lg *zap.Logger, dataDirs []string, reader persistedRequestReaderFunc) ([]model.EtcdRequest, error) { persistedRequests := []model.EtcdRequest{} // Allow failure in minority of etcd cluster. // 0 failures in 1 node cluster, 1 failure in 3 node cluster allowedFailures := len(dataDirs) / 2 for _, dir := range dataDirs { - memberRequests, err := requestsPersistedInWAL(lg, dir) + memberRequests, err := reader(lg, dir) if err != nil { if allowedFailures < 1 { return nil, err @@ -84,6 +88,8 @@ func PersistedRequests(lg *zap.Logger, dataDirs []string) ([]model.EtcdRequest, return persistedRequests, nil } +type persistedRequestReaderFunc = func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) + func requestsPersistedInWAL(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { _, ents, err := ReadWAL(lg, dataDir) if err != nil { diff --git a/tests/robustness/report/wal_test.go b/tests/robustness/report/wal_test.go new file mode 100644 index 000000000000..0bd05b5de60b --- /dev/null +++ b/tests/robustness/report/wal_test.go @@ -0,0 +1,300 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package report + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/require" + "go.uber.org/zap" + "go.uber.org/zap/zaptest" + + "go.etcd.io/etcd/tests/v3/robustness/model" +) + +func TestPersistedRequests(t *testing.T) { + lg := zaptest.NewLogger(t) + + tcs := []struct { + name string + dataDirs []string + readerFunc func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) + expectErr string + expectRequests []model.EtcdRequest + }{ + { + name: "Success when empty data dir", + dataDirs: []string{}, + expectRequests: []model.EtcdRequest{}, + }, + { + name: "Success when no entries", + dataDirs: []string{"etcd0"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + return []model.EtcdRequest{}, nil + }, + expectRequests: []model.EtcdRequest{}, + }, + { + name: "Error when error on single node cluster", + dataDirs: []string{"etcd0"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + return []model.EtcdRequest{}, errors.New("error reading") + }, + expectErr: "error reading", + }, + { + name: "Success when one member cluster", + dataDirs: []string{"etcd0"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, nil + }, + expectRequests: []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, + }, + { + name: "Success when three members agree on entries", + dataDirs: []string{"etcd0", "etcd1", "etcd2"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, nil + }, + expectRequests: []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, + }, + { + name: "Success when one member returned error in three node cluster", + dataDirs: []string{"etcd0", "etcd1", "etcd2"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + switch dataDir { + case "etcd1": + return []model.EtcdRequest{}, errors.New("error reading") + default: + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, nil + } + }, + expectRequests: []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, + }, + { + name: "Success when one member returned empty in three node cluster", + dataDirs: []string{"etcd0", "etcd1", "etcd2"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + switch dataDir { + case "etcd1": + return []model.EtcdRequest{}, nil + default: + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, nil + } + }, + expectRequests: []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, + }, + { + name: "Error when two members returned error in three node cluster", + dataDirs: []string{"etcd0", "etcd1", "etcd2"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + switch dataDir { + case "etcd1", "etcd2": + return []model.EtcdRequest{}, errors.New("error reading") + default: + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, nil + } + }, + expectErr: "error reading", + }, + { + name: "Success if members didn't observe whole history", + dataDirs: []string{"etcd0", "etcd1", "etcd2"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + switch dataDir { + case "etcd0": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, nil + case "etcd1": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + }, nil + case "etcd2": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + }, nil + default: + panic("unexpected") + } + }, + expectRequests: []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, + }, + { + name: "Error when one member observed different last entry", + dataDirs: []string{"etcd0", "etcd1", "etcd2"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + switch dataDir { + case "etcd0": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, nil + case "etcd1": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, nil + case "etcd2": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 4}}, + }, nil + default: + panic("unexpected") + } + }, + expectErr: "unexpected differences between wal entries", + }, + { + name: "Error when three members observed different last entry", + dataDirs: []string{"etcd0", "etcd1", "etcd2"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + switch dataDir { + case "etcd0": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, nil + case "etcd1": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 4}}, + }, nil + case "etcd2": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 5}}, + }, nil + default: + panic("unexpected") + } + }, + expectErr: "unexpected differences between wal entries", + }, + { + name: "Error when one member returned error and others differ on last entry", + dataDirs: []string{"etcd0", "etcd1", "etcd2"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + switch dataDir { + case "etcd0": + return []model.EtcdRequest{}, errors.New("error reading") + case "etcd1": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, nil + case "etcd2": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 4}}, + }, nil + default: + panic("unexpected") + } + }, + expectErr: "unexpected differences between wal entries", + }, + { + name: "Error when one member observed empty history and others differ on last entry", + dataDirs: []string{"etcd0", "etcd1", "etcd2"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + switch dataDir { + case "etcd0": + return []model.EtcdRequest{}, nil + case "etcd1": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, nil + case "etcd2": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 4}}, + }, nil + default: + panic("unexpected") + } + }, + expectErr: "unexpected differences between wal entries", + }, + } + for _, tc := range tcs { + t.Run(tc.name, func(t *testing.T) { + requests, err := persistedRequests(lg, tc.dataDirs, tc.readerFunc) + if tc.expectErr == "" { + require.NoError(t, err) + } else { + require.ErrorContains(t, err, tc.expectErr) + } + require.Equal(t, tc.expectRequests, requests) + }) + } +} From f6c4b98b4463921404630386f811b5a42cf04412 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 16 May 2025 18:07:26 +0200 Subject: [PATCH 0187/1068] Allow observing inconsistent WAL entries on one of the members Signed-off-by: Marek Siarkowicz --- tests/robustness/report/wal.go | 69 +++++++++++++++++++++++------ tests/robustness/report/wal_test.go | 14 +++--- 2 files changed, 65 insertions(+), 18 deletions(-) diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index a7e3d16f9194..8350b1e0caa9 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -62,30 +62,73 @@ func PersistedRequests(lg *zap.Logger, dataDirs []string) ([]model.EtcdRequest, } func persistedRequests(lg *zap.Logger, dataDirs []string, reader persistedRequestReaderFunc) ([]model.EtcdRequest, error) { - persistedRequests := []model.EtcdRequest{} + if len(dataDirs) == 0 { + return nil, errors.New("no data dirs") + } // Allow failure in minority of etcd cluster. - // 0 failures in 1 node cluster, 1 failure in 3 node cluster allowedFailures := len(dataDirs) / 2 - for _, dir := range dataDirs { - memberRequests, err := reader(lg, dir) + memberRequestHistories := make([][]model.EtcdRequest, len(dataDirs)) + for i, dir := range dataDirs { + requests, err := reader(lg, dir) if err != nil { if allowedFailures < 1 { return nil, err } allowedFailures-- - continue } - minLength := min(len(persistedRequests), len(memberRequests)) - if diff := cmp.Diff(memberRequests[:minLength], persistedRequests[:minLength]); diff != "" { - lg.Error("unexpected differences between wal entries") - fmt.Print(diff) // zap doesn't nicely writes multiline strings like diff - return nil, errors.New("unexpected differences between wal entries") + memberRequestHistories[i] = requests + } + // Each history collects votes from each history that it matches. + votes := make([]int, len(memberRequestHistories)) + reportedDifference := make([]int, len(memberRequestHistories)) + for i := 0; i < len(memberRequestHistories); i++ { + for j := 0; j < len(memberRequestHistories); j++ { + if i == j { + // history votes for itself + votes[i]++ + continue + } + if i > j { + // avoid comparing things twice + continue + } + first := memberRequestHistories[i] + second := memberRequestHistories[j] + minLength := min(len(first), len(second)) + // empty history cannot vote + if minLength == 0 { + continue + } + if diff := cmp.Diff(first[:minLength], second[:minLength]); diff == "" { + votes[i]++ + votes[j]++ + } else { + // Avoid reporting same difference to different WAL + if reportedDifference[i] == 0 && reportedDifference[j] == 0 { + fmt.Printf("Difference between WAL in %q and %q:\n%s", dataDirs[i], dataDirs[j], diff) // zap doesn't nicely writes multiline strings like diff + reportedDifference[i]++ + reportedDifference[j]++ + } + } } - if len(memberRequests) > len(persistedRequests) { - persistedRequests = memberRequests + } + // Select longest history that has votes from quorum. + longestHistory := []model.EtcdRequest{} + quorum := len(dataDirs)/2 + 1 + foundQuorum := false + for i := 0; i < len(memberRequestHistories); i++ { + if votes[i] < quorum { + continue } + foundQuorum = true + if len(memberRequestHistories[i]) > len(longestHistory) { + longestHistory = memberRequestHistories[i] + } + } + if !foundQuorum { + return nil, errors.New("unexpected differences between wal entries") } - return persistedRequests, nil + return longestHistory, nil } type persistedRequestReaderFunc = func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) diff --git a/tests/robustness/report/wal_test.go b/tests/robustness/report/wal_test.go index 0bd05b5de60b..6e014004f8ea 100644 --- a/tests/robustness/report/wal_test.go +++ b/tests/robustness/report/wal_test.go @@ -36,9 +36,9 @@ func TestPersistedRequests(t *testing.T) { expectRequests []model.EtcdRequest }{ { - name: "Success when empty data dir", - dataDirs: []string{}, - expectRequests: []model.EtcdRequest{}, + name: "Error when empty data dir", + dataDirs: []string{}, + expectErr: "no data dirs", }, { name: "Success when no entries", @@ -178,7 +178,7 @@ func TestPersistedRequests(t *testing.T) { }, }, { - name: "Error when one member observed different last entry", + name: "Success when one member observed different last entry", dataDirs: []string{"etcd0", "etcd1", "etcd2"}, readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { switch dataDir { @@ -204,7 +204,11 @@ func TestPersistedRequests(t *testing.T) { panic("unexpected") } }, - expectErr: "unexpected differences between wal entries", + expectRequests: []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, }, { name: "Error when three members observed different last entry", From ac0af0be48336e2802f90e868c0692d153d4a891 Mon Sep 17 00:00:00 2001 From: Nont Date: Thu, 15 May 2025 23:12:43 -0500 Subject: [PATCH 0188/1068] Build dedicated etcd image for antithesis Signed-off-by: Nont --- .github/workflows/antithesis-test.yml | 10 ++++++++++ tests/antithesis/Makefile | 11 +++++++++++ tests/antithesis/README.md | 1 + tests/antithesis/docker-compose.yml | 6 +++--- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 3e1b74192723..0d6a351fec26 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -82,6 +82,16 @@ jobs: ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:latest, ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:${{ github.sha }} + - name: Build and push etcd image + run: | + make antithesis-build-etcd-image + export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:latest" + docker tag etcd-server:latest $TAG + docker push $TAG + export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:${{ github.sha }}" + docker tag etcd-server:latest $TAG + docker push $TAG + - name: Run Antithesis Tests uses: antithesishq/antithesis-trigger-action@b7d0c9d1d9316bd4de73a44144c56636ea3a64ba # main commit on Mar 13, 2025 with: diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 36ad8b19bf13..585940da4127 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -1,11 +1,22 @@ REPOSITORY_ROOT := $(shell git rev-parse --show-toplevel) USER_ID := $(shell id -u) GROUP_ID := $(shell id -g) +ARCH ?= $(shell go env GOARCH) .PHONY: antithesis-build-client-docker-image antithesis-build-client-docker-image: docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) -f $(REPOSITORY_ROOT)/tests/antithesis/test-template/Dockerfile $(REPOSITORY_ROOT) -t etcd-client:latest +.PHONY: antithesis-build-etcd-image +antithesis-build-etcd-image: + git worktree add /tmp/etcd3.5 origin/release-3.5 + cd /tmp/etcd3.5 && make build + cd /tmp/etcd3.5 && cp ./Dockerfile-release.$(ARCH) ./bin/Dockerfile + cd /tmp/etcd3.5 && docker build \ + --tag etcd-server:latest \ + ./bin + git worktree remove -f /tmp/etcd3.5 + .PHONY: antithesis-docker-compose-up antithesis-docker-compose-up: export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose up diff --git a/tests/antithesis/README.md b/tests/antithesis/README.md index 5834b7db3508..05db2c5b7ccb 100644 --- a/tests/antithesis/README.md +++ b/tests/antithesis/README.md @@ -8,6 +8,7 @@ Run this command from the `antithesis/test-template` directory: ```bash make antithesis-build-client-docker-image +make antithesis-build-etcd-image ``` ### 2. (Optional) Check the Image Locally diff --git a/tests/antithesis/docker-compose.yml b/tests/antithesis/docker-compose.yml index 32f9d82d9579..ec03689e7533 100644 --- a/tests/antithesis/docker-compose.yml +++ b/tests/antithesis/docker-compose.yml @@ -21,7 +21,7 @@ services: chown -R ${USER_ID:-root}:${GROUP_ID:-root} /var/etcddata0 /var/etcddata1 /var/etcddata2 /var/report etcd0: - image: 'gcr.io/etcd-development/etcd:v3.5.21' + image: 'etcd-server:latest' container_name: etcd0 hostname: etcd0 environment: @@ -44,7 +44,7 @@ services: - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcd/data etcd1: - image: 'gcr.io/etcd-development/etcd:v3.5.21' + image: 'etcd-server:latest' container_name: etcd1 hostname: etcd1 environment: @@ -67,7 +67,7 @@ services: - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}1:/var/etcd/data etcd2: - image: 'gcr.io/etcd-development/etcd:v3.5.21' + image: 'etcd-server:latest' container_name: etcd2 hostname: etcd2 environment: From 335c0ffcfd790554942094f24bc2bfc0147af1c9 Mon Sep 17 00:00:00 2001 From: Nont Date: Wed, 14 May 2025 22:54:56 -0500 Subject: [PATCH 0189/1068] [Antithesis] Add support for watch requests Signed-off-by: Nont --- .../test-template/robustness/main.go | 48 +++++++++++++++---- tests/robustness/client/watch.go | 39 ++++++++------- tests/robustness/main_test.go | 33 ++++++------- tests/robustness/report/client.go | 13 +++++ 4 files changed, 93 insertions(+), 40 deletions(-) diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index dcf9d8f88d90..fcc22c570cbd 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -29,6 +29,7 @@ import ( "github.com/anishathalye/porcupine" "github.com/antithesishq/antithesis-sdk-go/assert" "go.uber.org/zap" + "golang.org/x/sync/errgroup" "golang.org/x/time/rate" "go.etcd.io/etcd/tests/v3/robustness/client" @@ -110,7 +111,12 @@ func main() { func testRobustness(ctx context.Context, lg *zap.Logger, r *report.TestReport, hosts []string, baseTime time.Time, duration time.Duration) { lg.Info("Start traffic generation", zap.Duration("duration", duration)) - r.Client = runTraffic(ctx, lg, hosts, baseTime, duration) + var err error + r.Client, err = runTraffic(ctx, lg, hosts, baseTime, duration) + if err != nil { + lg.Error("Failed to generate traffic") + panic(err) + } lg.Info("Completed traffic generation") etcdDataDirs, err := report.PersistedRequestsDirs(lg, slices.Collect(maps.Values(r.ServersDataPath))) @@ -136,21 +142,47 @@ func testRobustness(ctx context.Context, lg *zap.Logger, r *report.TestReport, h lg.Info("Completed robustness validation") } -func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime time.Time, duration time.Duration) []report.ClientReport { - limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), profile.BurstableQPS) +func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime time.Time, duration time.Duration) ([]report.ClientReport, error) { ids := identity.NewIDProvider() - storage := identity.NewLeaseIDStorage() - concurrencyLimiter := traffic.NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) - r, err := traffic.CheckEmptyDatabaseAtStart(ctx, lg, hosts, ids, baseTime) if err != nil { lg.Fatal("Failed empty database at start check", zap.Error(err)) } - - finish := closeAfter(ctx, duration) reports := []report.ClientReport{r} + watchReport := []report.ClientReport{} + maxRevisionChan := make(chan int64, 1) + watchConfig := client.WatchConfig{ + RequestProgress: true, + } + g := errgroup.Group{} + g.Go(func() error { + defer close(maxRevisionChan) + reports := slices.Concat(reports, simulateTraffic(ctx, hosts, ids, baseTime, duration)) + maxRevision := report.OperationsMaxRevision(reports) + maxRevisionChan <- maxRevision + lg.Info("Finished simulating Traffic", zap.Int64("max-revision", maxRevision)) + return nil + }) + g.Go(func() error { + var watchErr error + watchReport, _, watchErr = client.CollectClusterWatchEvents(ctx, lg, hosts, maxRevisionChan, watchConfig, baseTime, ids) + return watchErr + }) + if err := g.Wait(); err != nil { + return nil, err + } + + return slices.Concat(reports, watchReport), nil +} + +func simulateTraffic(ctx context.Context, hosts []string, ids identity.Provider, baseTime time.Time, duration time.Duration) []report.ClientReport { var mux sync.Mutex var wg sync.WaitGroup + storage := identity.NewLeaseIDStorage() + limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), profile.BurstableQPS) + concurrencyLimiter := traffic.NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) + finish := closeAfter(ctx, duration) + reports := []report.ClientReport{} for i := 0; i < profile.ClientCount; i++ { c := connect([]string{hosts[i%len(hosts)]}, ids, baseTime) defer c.Close() diff --git a/tests/robustness/client/watch.go b/tests/robustness/client/watch.go index a9cdbbf0f940..eda9e2bfda02 100644 --- a/tests/robustness/client/watch.go +++ b/tests/robustness/client/watch.go @@ -20,29 +20,32 @@ import ( "testing" "time" - "github.com/stretchr/testify/require" + "go.uber.org/zap" - "go.etcd.io/etcd/tests/v3/framework/e2e" "go.etcd.io/etcd/tests/v3/robustness/identity" "go.etcd.io/etcd/tests/v3/robustness/report" ) -func CollectClusterWatchEvents(ctx context.Context, t *testing.T, clus *e2e.EtcdProcessCluster, maxRevisionChan <-chan int64, cfg WatchConfig, baseTime time.Time, ids identity.Provider) []report.ClientReport { +func CollectClusterWatchEvents(ctx context.Context, lg *zap.Logger, endpoints []string, maxRevisionChan <-chan int64, cfg WatchConfig, baseTime time.Time, ids identity.Provider) ([]report.ClientReport, bool, error) { mux := sync.Mutex{} var wg sync.WaitGroup - reports := make([]report.ClientReport, len(clus.Procs)) - memberMaxRevisionChans := make([]chan int64, len(clus.Procs)) - for i, member := range clus.Procs { - c, err := NewRecordingClient(member.EndpointsGRPC(), ids, baseTime) - require.NoError(t, err) + neverFailed := true + reports := make([]report.ClientReport, len(endpoints)) + memberMaxRevisionChans := make([]chan int64, len(endpoints)) + for i, endpoint := range endpoints { + c, err := NewRecordingClient([]string{endpoint}, ids, baseTime) + if err != nil { + return nil, false, err + } memberMaxRevisionChan := make(chan int64, 1) memberMaxRevisionChans[i] = memberMaxRevisionChan wg.Add(1) go func(i int, c *RecordingClient) { defer wg.Done() defer c.Close() - watchUntilRevision(ctx, t, c, memberMaxRevisionChan, cfg) + watchSuccessful := watchUntilRevision(ctx, lg, c, memberMaxRevisionChan, cfg) mux.Lock() + neverFailed = neverFailed && watchSuccessful reports[i] = c.Report() mux.Unlock() }(i, c) @@ -56,7 +59,7 @@ func CollectClusterWatchEvents(ctx context.Context, t *testing.T, clus *e2e.Etcd } }() wg.Wait() - return reports + return reports, neverFailed, nil } type WatchConfig struct { @@ -64,9 +67,10 @@ type WatchConfig struct { } // watchUntilRevision watches all changes until context is cancelled, it has observed revision provided via maxRevisionChan or maxRevisionChan was closed. -func watchUntilRevision(ctx context.Context, t *testing.T, c *RecordingClient, maxRevisionChan <-chan int64, cfg WatchConfig) { +func watchUntilRevision(ctx context.Context, lg *zap.Logger, c *RecordingClient, maxRevisionChan <-chan int64, cfg WatchConfig) bool { var maxRevision int64 var lastRevision int64 = 1 + var success = true ctx, cancel := context.WithCancel(ctx) defer cancel() resetWatch: @@ -76,12 +80,14 @@ resetWatch: select { case <-ctx.Done(): if maxRevision == 0 { - t.Errorf("Client didn't collect all events, max revision not set") + lg.Error("Client didn't collect all events, max revision not set") + success = false } if lastRevision < maxRevision { - t.Errorf("Client didn't collect all events, revision got %d, expected: %d", lastRevision, maxRevision) + lg.Error("Client didn't collect all events", zap.Int64("revision-got", lastRevision), zap.Int64("revision-expected", maxRevision)) + success = false } - return + return success case revision, ok := <-maxRevisionChan: if ok { maxRevision = revision @@ -96,7 +102,7 @@ resetWatch: } case resp, ok := <-watch: if !ok { - t.Logf("Watch channel closed") + lg.Info("Watch channel closed") continue resetWatch } if cfg.RequestProgress { @@ -110,7 +116,8 @@ resetWatch: } continue resetWatch } - t.Errorf("Watch stream received error, err %v", resp.Err()) + lg.Error("Watch stream received error", zap.Error(resp.Err())) + success = false } if len(resp.Events) > 0 { lastRevision = resp.Events[len(resp.Events)-1].Kv.ModRevision diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index 14b70639215b..6544377a76c1 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -34,7 +34,6 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/client" "go.etcd.io/etcd/tests/v3/robustness/failpoint" "go.etcd.io/etcd/tests/v3/robustness/identity" - "go.etcd.io/etcd/tests/v3/robustness/model" "go.etcd.io/etcd/tests/v3/robustness/report" "go.etcd.io/etcd/tests/v3/robustness/scenarios" "go.etcd.io/etcd/tests/v3/robustness/traffic" @@ -153,13 +152,20 @@ func runScenario(ctx context.Context, t *testing.T, s scenarios.TestScenario, lg g.Go(func() error { defer close(maxRevisionChan) operationReport = traffic.SimulateTraffic(ctx, t, lg, clus, s.Profile, s.Traffic, failpointInjected, baseTime, ids) - maxRevision := operationsMaxRevision(operationReport) + maxRevision := report.OperationsMaxRevision(operationReport) maxRevisionChan <- maxRevision lg.Info("Finished simulating Traffic", zap.Int64("max-revision", maxRevision)) return nil }) g.Go(func() error { - watchReport = client.CollectClusterWatchEvents(ctx, t, clus, maxRevisionChan, s.Watch, baseTime, ids) + var failed bool + var err error + endpoints := processEndpoints(clus) + watchReport, failed, err = client.CollectClusterWatchEvents(ctx, lg, endpoints, maxRevisionChan, s.Watch, baseTime, ids) + require.NoError(t, err) + if failed { + t.Fail() + } return nil }) g.Wait() @@ -175,19 +181,6 @@ func randomizeTime(base time.Duration, jitter time.Duration) time.Duration { return base - jitter + time.Duration(rand.Int63n(int64(jitter)*2)) } -func operationsMaxRevision(reports []report.ClientReport) int64 { - var maxRevision int64 - for _, r := range reports { - for _, op := range r.KeyValue { - resp := op.Output.(model.MaybeEtcdResponse) - if resp.Revision > maxRevision { - maxRevision = resp.Revision - } - } - } - return maxRevision -} - // forcestopCluster stops the etcd member with signal kill. func forcestopCluster(clus *e2e.EtcdProcessCluster) error { for _, member := range clus.Procs { @@ -214,3 +207,11 @@ func testResultsDirectory(t *testing.T) string { require.NoError(t, err) return path } + +func processEndpoints(clus *e2e.EtcdProcessCluster) []string { + endpoints := make([]string, len(clus.Procs)) + for _, proc := range clus.Procs { + endpoints = append(endpoints, proc.EndpointsGRPC()[0]) + } + return endpoints +} diff --git a/tests/robustness/report/client.go b/tests/robustness/report/client.go index d9e8276bf84e..f604c4f22351 100644 --- a/tests/robustness/report/client.go +++ b/tests/robustness/report/client.go @@ -209,3 +209,16 @@ func persistKeyValueOperations(lg *zap.Logger, path string, operations []porcupi } return nil } + +func OperationsMaxRevision(reports []ClientReport) int64 { + var maxRevision int64 + for _, r := range reports { + for _, op := range r.KeyValue { + resp := op.Output.(model.MaybeEtcdResponse) + if resp.Revision > maxRevision { + maxRevision = resp.Revision + } + } + } + return maxRevision +} From e0936fda8c3c711bdf524acd2d24494a668c227c Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 17 May 2025 10:14:21 +0200 Subject: [PATCH 0190/1068] Fix building antithesis etcd image Signed-off-by: Marek Siarkowicz --- .github/workflows/antithesis-test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 0d6a351fec26..6a11d26b48ba 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -22,7 +22,7 @@ on: images: description: 'System images (separate with ;)' required: true - default: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-client:latest;gcr.io/etcd-development/etcd:v3.5.21;docker.io/library/ubuntu:latest + default: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-client:latest;us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-server:latest;docker.io/library/ubuntu:latest type: string duration: description: 'Duration (exploration hours)' @@ -83,6 +83,7 @@ jobs: ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:${{ github.sha }} - name: Build and push etcd image + working-directory: ./tests/antithesis run: | make antithesis-build-etcd-image export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:latest" From 174a5eb0c025afd1592852307c872007e521c72d Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 17 May 2025 10:27:41 +0200 Subject: [PATCH 0191/1068] Fetch branch when building antithesis image Signed-off-by: Marek Siarkowicz --- tests/antithesis/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 585940da4127..36c5108c634c 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -9,6 +9,8 @@ antithesis-build-client-docker-image: .PHONY: antithesis-build-etcd-image antithesis-build-etcd-image: + git fetch origin release-3.5 + git worktree remove -f /tmp/etcd3.5 || true git worktree add /tmp/etcd3.5 origin/release-3.5 cd /tmp/etcd3.5 && make build cd /tmp/etcd3.5 && cp ./Dockerfile-release.$(ARCH) ./bin/Dockerfile From 308232bc61f93bdc54bf91d96ef93faef36b11b8 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 17 May 2025 12:20:39 +0200 Subject: [PATCH 0192/1068] Fix missing KV reports in antithesis Signed-off-by: Marek Siarkowicz --- tests/antithesis/test-template/robustness/main.go | 2 +- tests/robustness/client/watch.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index a5ece39044dc..448aeb10795f 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -150,7 +150,7 @@ func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime ti g := errgroup.Group{} g.Go(func() error { defer close(maxRevisionChan) - reports := slices.Concat(reports, simulateTraffic(ctx, hosts, ids, baseTime, duration)) + reports = slices.Concat(reports, simulateTraffic(ctx, hosts, ids, baseTime, duration)) maxRevision := report.OperationsMaxRevision(reports) maxRevisionChan <- maxRevision lg.Info("Finished simulating Traffic", zap.Int64("max-revision", maxRevision)) diff --git a/tests/robustness/client/watch.go b/tests/robustness/client/watch.go index eda9e2bfda02..85696b96a280 100644 --- a/tests/robustness/client/watch.go +++ b/tests/robustness/client/watch.go @@ -70,7 +70,7 @@ type WatchConfig struct { func watchUntilRevision(ctx context.Context, lg *zap.Logger, c *RecordingClient, maxRevisionChan <-chan int64, cfg WatchConfig) bool { var maxRevision int64 var lastRevision int64 = 1 - var success = true + success := true ctx, cancel := context.WithCancel(ctx) defer cancel() resetWatch: From b34a334006655b617fd380ef0964a44a5f10d946 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 17 May 2025 13:53:34 +0200 Subject: [PATCH 0193/1068] Fix error handling in watch Signed-off-by: Marek Siarkowicz --- .../test-template/robustness/main.go | 6 +- tests/robustness/client/watch.go | 55 ++++++++----------- tests/robustness/main_test.go | 18 +++--- 3 files changed, 34 insertions(+), 45 deletions(-) diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/main.go index 448aeb10795f..9750c345713e 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/main.go @@ -157,9 +157,9 @@ func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime ti return nil }) g.Go(func() error { - var watchErr error - watchReport, _, watchErr = client.CollectClusterWatchEvents(ctx, lg, hosts, maxRevisionChan, watchConfig, baseTime, ids) - return watchErr + var err error + watchReport, err = client.CollectClusterWatchEvents(ctx, lg, hosts, maxRevisionChan, watchConfig, baseTime, ids) + return err }) if err := g.Wait(); err != nil { return nil, err diff --git a/tests/robustness/client/watch.go b/tests/robustness/client/watch.go index 85696b96a280..f0a94d15435f 100644 --- a/tests/robustness/client/watch.go +++ b/tests/robustness/client/watch.go @@ -16,50 +16,45 @@ package client import ( "context" - "sync" + "errors" + "fmt" "testing" "time" "go.uber.org/zap" + "golang.org/x/sync/errgroup" "go.etcd.io/etcd/tests/v3/robustness/identity" "go.etcd.io/etcd/tests/v3/robustness/report" ) -func CollectClusterWatchEvents(ctx context.Context, lg *zap.Logger, endpoints []string, maxRevisionChan <-chan int64, cfg WatchConfig, baseTime time.Time, ids identity.Provider) ([]report.ClientReport, bool, error) { - mux := sync.Mutex{} - var wg sync.WaitGroup - neverFailed := true +func CollectClusterWatchEvents(ctx context.Context, lg *zap.Logger, endpoints []string, maxRevisionChan <-chan int64, cfg WatchConfig, baseTime time.Time, ids identity.Provider) ([]report.ClientReport, error) { + var g errgroup.Group reports := make([]report.ClientReport, len(endpoints)) memberMaxRevisionChans := make([]chan int64, len(endpoints)) for i, endpoint := range endpoints { - c, err := NewRecordingClient([]string{endpoint}, ids, baseTime) - if err != nil { - return nil, false, err - } memberMaxRevisionChan := make(chan int64, 1) memberMaxRevisionChans[i] = memberMaxRevisionChan - wg.Add(1) - go func(i int, c *RecordingClient) { - defer wg.Done() + g.Go(func() error { + c, err := NewRecordingClient([]string{endpoint}, ids, baseTime) + if err != nil { + return err + } defer c.Close() - watchSuccessful := watchUntilRevision(ctx, lg, c, memberMaxRevisionChan, cfg) - mux.Lock() - neverFailed = neverFailed && watchSuccessful + err = watchUntilRevision(ctx, lg, c, memberMaxRevisionChan, cfg) reports[i] = c.Report() - mux.Unlock() - }(i, c) + return err + }) } - wg.Add(1) - go func() { - defer wg.Done() + + g.Go(func() error { maxRevision := <-maxRevisionChan for _, memberChan := range memberMaxRevisionChans { memberChan <- maxRevision } - }() - wg.Wait() - return reports, neverFailed, nil + return nil + }) + return reports, g.Wait() } type WatchConfig struct { @@ -67,10 +62,9 @@ type WatchConfig struct { } // watchUntilRevision watches all changes until context is cancelled, it has observed revision provided via maxRevisionChan or maxRevisionChan was closed. -func watchUntilRevision(ctx context.Context, lg *zap.Logger, c *RecordingClient, maxRevisionChan <-chan int64, cfg WatchConfig) bool { +func watchUntilRevision(ctx context.Context, lg *zap.Logger, c *RecordingClient, maxRevisionChan <-chan int64, cfg WatchConfig) error { var maxRevision int64 var lastRevision int64 = 1 - success := true ctx, cancel := context.WithCancel(ctx) defer cancel() resetWatch: @@ -80,14 +74,12 @@ resetWatch: select { case <-ctx.Done(): if maxRevision == 0 { - lg.Error("Client didn't collect all events, max revision not set") - success = false + return errors.New("Client didn't collect all events, max revision not set") } if lastRevision < maxRevision { - lg.Error("Client didn't collect all events", zap.Int64("revision-got", lastRevision), zap.Int64("revision-expected", maxRevision)) - success = false + return fmt.Errorf("Client didn't collect all events, got: %d, expected: %d", lastRevision, maxRevision) } - return success + return nil case revision, ok := <-maxRevisionChan: if ok { maxRevision = revision @@ -116,8 +108,7 @@ resetWatch: } continue resetWatch } - lg.Error("Watch stream received error", zap.Error(resp.Err())) - success = false + return fmt.Errorf("watch stream received error: %w", resp.Err()) } if len(resp.Events) > 0 { lastRevision = resp.Events[len(resp.Events)-1].Kv.ModRevision diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index a354c978f8a7..3101f313a850 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -157,19 +157,17 @@ func runScenario(ctx context.Context, t *testing.T, s scenarios.TestScenario, lg return nil }) g.Go(func() error { - var failed bool var err error endpoints := processEndpoints(clus) - watchReport, failed, err = client.CollectClusterWatchEvents(ctx, lg, endpoints, maxRevisionChan, s.Watch, baseTime, ids) - require.NoError(t, err) - if failed { - t.Fail() - } - return nil + watchReport, err = client.CollectClusterWatchEvents(ctx, lg, endpoints, maxRevisionChan, s.Watch, baseTime, ids) + return err }) - g.Wait() + err := g.Wait() + if err != nil { + t.Error(err) + } - err := client.CheckEndOfTestHashKV(ctx, clus) + err = client.CheckEndOfTestHashKV(ctx, clus) if err != nil { t.Error(err) } @@ -208,7 +206,7 @@ func testResultsDirectory(t *testing.T) string { } func processEndpoints(clus *e2e.EtcdProcessCluster) []string { - endpoints := make([]string, len(clus.Procs)) + endpoints := make([]string, 0, len(clus.Procs)) for _, proc := range clus.Procs { endpoints = append(endpoints, proc.EndpointsGRPC()[0]) } From 76e504b944723a0d5947c754d73512f880fe11b6 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 17 May 2025 11:48:04 +0200 Subject: [PATCH 0194/1068] Prevent exiting before watch closes Signed-off-by: Marek Siarkowicz --- tests/antithesis/Makefile | 2 +- tests/robustness/client/watch.go | 21 +++++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 36c5108c634c..5d6b9197cb17 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -29,7 +29,7 @@ antithesis-run-container-tests: .PHONY: antithesis-run-local-tests antithesis-run-local-tests: - go run ./test-template/robustness/main.go --local + go run --race ./test-template/robustness/main.go --local .PHONY: antithesis-clean antithesis-clean: diff --git a/tests/robustness/client/watch.go b/tests/robustness/client/watch.go index f0a94d15435f..47d55ad34bc5 100644 --- a/tests/robustness/client/watch.go +++ b/tests/robustness/client/watch.go @@ -65,30 +65,34 @@ type WatchConfig struct { func watchUntilRevision(ctx context.Context, lg *zap.Logger, c *RecordingClient, maxRevisionChan <-chan int64, cfg WatchConfig) error { var maxRevision int64 var lastRevision int64 = 1 + var closing bool ctx, cancel := context.WithCancel(ctx) defer cancel() resetWatch: for { + if closing { + if maxRevision == 0 { + return errors.New("Client didn't collect all events, max revision not set") + } + if lastRevision < maxRevision { + return fmt.Errorf("Client didn't collect all events, got: %d, expected: %d", lastRevision, maxRevision) + } + return nil + } watch := c.Watch(ctx, "", lastRevision+1, true, true, false) for { select { - case <-ctx.Done(): - if maxRevision == 0 { - return errors.New("Client didn't collect all events, max revision not set") - } - if lastRevision < maxRevision { - return fmt.Errorf("Client didn't collect all events, got: %d, expected: %d", lastRevision, maxRevision) - } - return nil case revision, ok := <-maxRevisionChan: if ok { maxRevision = revision if lastRevision >= maxRevision { + closing = true cancel() } } else { // Only cancel if maxRevision was never set. if maxRevision == 0 { + closing = true cancel() } } @@ -114,6 +118,7 @@ resetWatch: lastRevision = resp.Events[len(resp.Events)-1].Kv.ModRevision } if maxRevision != 0 && lastRevision >= maxRevision { + closing = true cancel() } } From 4d64e9e039cb9aea1b854b916e042f55329bd4e1 Mon Sep 17 00:00:00 2001 From: joshjms Date: Mon, 19 May 2025 23:12:23 +0800 Subject: [PATCH 0195/1068] Make visualization more compact Signed-off-by: joshjms --- tests/robustness/model/describe.go | 31 +++++++++++++++++++++ tests/robustness/model/non_deterministic.go | 14 ++++++---- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/tests/robustness/model/describe.go b/tests/robustness/model/describe.go index 43eb58c06bdc..3d73257f6ed6 100644 --- a/tests/robustness/model/describe.go +++ b/tests/robustness/model/describe.go @@ -82,6 +82,37 @@ func describeEtcdRequest(request EtcdRequest) string { } } +func describeEtcdState(state EtcdState) string { + descHTML := make([]string, 0) + + descHTML = append(descHTML, fmt.Sprintf("

Revision: %d, CompactRevision: %d

", state.Revision, state.CompactRevision)) + + if len(state.KeyValues) > 0 { + descHTML = append(descHTML, "
    ") + + for k, v := range state.KeyValues { + keyValDesc := make([]string, 0) + + keyValDesc = append(keyValDesc, fmt.Sprintf("
  • %s: ", k)) + + if v.Value.Value != "" { + keyValDesc = append(keyValDesc, fmt.Sprintf("Value: %q, ", v.Value.Value)) + } + if v.Value.Hash != 0 { + keyValDesc = append(keyValDesc, fmt.Sprintf("Hash: %d, ", v.Value.Hash)) + } + + keyValDesc = append(keyValDesc, fmt.Sprintf("ModRevision: %d, Version: %d
  • ", v.ModRevision, v.Version)) + + descHTML = append(descHTML, strings.Join(keyValDesc, "")) + } + + descHTML = append(descHTML, "
") + } + + return strings.Join(descHTML, "") +} + func describeGuaranteedTxn(txn *TxnRequest) string { if len(txn.Conditions) != 1 || len(txn.OperationsOnSuccess) != 1 || len(txn.OperationsOnFailure) > 1 { return "" diff --git a/tests/robustness/model/non_deterministic.go b/tests/robustness/model/non_deterministic.go index 1bdbe87cd95e..68e18002ca73 100644 --- a/tests/robustness/model/non_deterministic.go +++ b/tests/robustness/model/non_deterministic.go @@ -15,10 +15,9 @@ package model import ( - "encoding/json" "fmt" - "html" "reflect" + "strings" "github.com/anishathalye/porcupine" ) @@ -41,11 +40,14 @@ var NonDeterministicModel = porcupine.Model{ return fmt.Sprintf("%s -> %s", describeEtcdRequest(in.(EtcdRequest)), describeEtcdResponse(in.(EtcdRequest), out.(MaybeEtcdResponse))) }, DescribeState: func(st any) string { - data, err := json.MarshalIndent(st, "", " ") - if err != nil { - panic(err) + etcdStates := st.(nonDeterministicState) + desc := make([]string, len(etcdStates)) + + for _, s := range etcdStates { + desc = append(desc, describeEtcdState(s)) } - return "
" + html.EscapeString(string(data)) + "
" + + return strings.Join(desc, "\n") }, } From 55e76ac4f46b600aae481b309ed935faef7cdbb9 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 17 May 2025 11:21:09 +0200 Subject: [PATCH 0196/1068] Allow empty member histories from all three members Signed-off-by: Marek Siarkowicz --- tests/robustness/report/wal.go | 28 ++++++++++++++-------------- tests/robustness/report/wal_test.go | 8 ++++++++ 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index 8350b1e0caa9..4a2047d623f3 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -67,20 +67,28 @@ func persistedRequests(lg *zap.Logger, dataDirs []string, reader persistedReques } // Allow failure in minority of etcd cluster. allowedFailures := len(dataDirs) / 2 - memberRequestHistories := make([][]model.EtcdRequest, len(dataDirs)) - for i, dir := range dataDirs { + memberRequestHistories := make([][]model.EtcdRequest, 0, len(dataDirs)) + for _, dir := range dataDirs { requests, err := reader(lg, dir) if err != nil { if allowedFailures < 1 { return nil, err } allowedFailures-- + continue + } + // Empty history should not vote + if len(requests) != 0 { + memberRequestHistories = append(memberRequestHistories, requests) } - memberRequestHistories[i] = requests + } + // Return empty history if all histories were empty/failed to read. + if len(memberRequestHistories) == 0 { + return []model.EtcdRequest{}, nil } // Each history collects votes from each history that it matches. votes := make([]int, len(memberRequestHistories)) - reportedDifference := make([]int, len(memberRequestHistories)) + lastDiff := "" for i := 0; i < len(memberRequestHistories); i++ { for j := 0; j < len(memberRequestHistories); j++ { if i == j { @@ -95,20 +103,11 @@ func persistedRequests(lg *zap.Logger, dataDirs []string, reader persistedReques first := memberRequestHistories[i] second := memberRequestHistories[j] minLength := min(len(first), len(second)) - // empty history cannot vote - if minLength == 0 { - continue - } if diff := cmp.Diff(first[:minLength], second[:minLength]); diff == "" { votes[i]++ votes[j]++ } else { - // Avoid reporting same difference to different WAL - if reportedDifference[i] == 0 && reportedDifference[j] == 0 { - fmt.Printf("Difference between WAL in %q and %q:\n%s", dataDirs[i], dataDirs[j], diff) // zap doesn't nicely writes multiline strings like diff - reportedDifference[i]++ - reportedDifference[j]++ - } + lastDiff = diff } } } @@ -126,6 +125,7 @@ func persistedRequests(lg *zap.Logger, dataDirs []string, reader persistedReques } } if !foundQuorum { + fmt.Printf("Difference between WAL:\n%s", lastDiff) // zap doesn't nicely writes multiline strings like diff return nil, errors.New("unexpected differences between wal entries") } return longestHistory, nil diff --git a/tests/robustness/report/wal_test.go b/tests/robustness/report/wal_test.go index 6e014004f8ea..88f112000cc5 100644 --- a/tests/robustness/report/wal_test.go +++ b/tests/robustness/report/wal_test.go @@ -88,6 +88,14 @@ func TestPersistedRequests(t *testing.T) { {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, }, }, + { + name: "Success when three member have no entries", + dataDirs: []string{"etcd0", "etcd1", "etcd2"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + return []model.EtcdRequest{}, nil + }, + expectRequests: []model.EtcdRequest{}, + }, { name: "Success when one member returned error in three node cluster", dataDirs: []string{"etcd0", "etcd1", "etcd2"}, From a447900daac4607d8b5e31f3499878d9f5914cd5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 May 2025 18:06:52 +0000 Subject: [PATCH 0197/1068] build(deps): bump github/codeql-action from 3.28.17 to 3.28.18 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.17 to 3.28.18. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/60168efe1c415ce0f5521ea06d5c2062adbeed1b...ff0a06e83cb2de871e5a09832bc6a81e7276941f) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.28.18 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index fbe9c42a4b33..4dc86ea59f65 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 + uses: github/codeql-action/init@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 + uses: github/codeql-action/autobuild@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 + uses: github/codeql-action/analyze@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index a14cd3962e2b..03c04d8d7905 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 + uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 with: sarif_file: results.sarif From 3002ac1fc507b2839dba97355fd3420106696154 Mon Sep 17 00:00:00 2001 From: Nont Date: Sat, 17 May 2025 21:40:21 -0500 Subject: [PATCH 0198/1068] Add StaleGet traffic for antithesis Signed-off-by: Nont --- tests/robustness/traffic/etcd.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index e00b0701867b..fd994a7efa07 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -81,8 +81,9 @@ var ( leaseTTL: DefaultLeaseTTL, // Please keep the sum of weights equal 100. requests: []random.ChoiceWeight[etcdRequestType]{ - {Choice: Get, Weight: 50}, - {Choice: Put, Weight: 50}, + {Choice: Get, Weight: 45}, + {Choice: Put, Weight: 45}, + {Choice: StaleGet, Weight: 10}, }, } ) From 3397713f7594898a9447e9589335b8fe9def80fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 May 2025 17:40:15 +0000 Subject: [PATCH 0199/1068] build(deps): bump distroless/static-debian12 from `3d0f463` to `d9f9472` Bumps distroless/static-debian12 from `3d0f463` to `d9f9472`. --- updated-dependencies: - dependency-name: distroless/static-debian12 dependency-version: d9f9472a8f4541368192d714a995eb1a99bab1f7071fc8bde261d7eda3b667d8 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 47b28ff5ca13..66818aa5988a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG ARCH=amd64 -FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:3d0f463de06b7ddff27684ec3bfd0b54a425149d0f8685308b1fdf297b0265e9 +FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:d9f9472a8f4541368192d714a995eb1a99bab1f7071fc8bde261d7eda3b667d8 ADD etcd /usr/local/bin/ ADD etcdctl /usr/local/bin/ From 6eb1e075b8737cbf0e86249b76ff3bc8a9ded610 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 17 May 2025 21:13:07 +0200 Subject: [PATCH 0200/1068] Allow case where only one member observed all requests Signed-off-by: Marek Siarkowicz --- tests/robustness/report/wal.go | 16 ++++++--- tests/robustness/report/wal_test.go | 51 +++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 5 deletions(-) diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index 4a2047d623f3..83ad793f7e51 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -77,10 +77,7 @@ func persistedRequests(lg *zap.Logger, dataDirs []string, reader persistedReques allowedFailures-- continue } - // Empty history should not vote - if len(requests) != 0 { - memberRequestHistories = append(memberRequestHistories, requests) - } + memberRequestHistories = append(memberRequestHistories, requests) } // Return empty history if all histories were empty/failed to read. if len(memberRequestHistories) == 0 { @@ -119,13 +116,22 @@ func persistedRequests(lg *zap.Logger, dataDirs []string, reader persistedReques if votes[i] < quorum { continue } + // There cannot be incompabible histories supported by quorum + minLength := min(len(memberRequestHistories[i]), len(longestHistory)) + if diff := cmp.Diff(memberRequestHistories[i][:minLength], longestHistory[:minLength]); diff != "" { + lastDiff = diff + foundQuorum = false + break + } foundQuorum = true if len(memberRequestHistories[i]) > len(longestHistory) { longestHistory = memberRequestHistories[i] } } if !foundQuorum { - fmt.Printf("Difference between WAL:\n%s", lastDiff) // zap doesn't nicely writes multiline strings like diff + if lastDiff != "" { + fmt.Printf("Difference between WAL:\n%s", lastDiff) // zap doesn't nicely writes multiline strings like diff + } return nil, errors.New("unexpected differences between wal entries") } return longestHistory, nil diff --git a/tests/robustness/report/wal_test.go b/tests/robustness/report/wal_test.go index 88f112000cc5..e047f9076ff4 100644 --- a/tests/robustness/report/wal_test.go +++ b/tests/robustness/report/wal_test.go @@ -185,6 +185,29 @@ func TestPersistedRequests(t *testing.T) { {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, }, }, + { + name: "Success if only one member observed history", + dataDirs: []string{"etcd0", "etcd1", "etcd2"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + switch dataDir { + case "etcd0": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, nil + case "etcd1", "etcd2": + return []model.EtcdRequest{}, nil + default: + panic("unexpected") + } + }, + expectRequests: []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, + }, { name: "Success when one member observed different last entry", dataDirs: []string{"etcd0", "etcd1", "etcd2"}, @@ -218,6 +241,34 @@ func TestPersistedRequests(t *testing.T) { {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, }, }, + { + name: "Error when one member didn't observe whole history and others observed different last entry", + dataDirs: []string{"etcd0", "etcd1", "etcd2"}, + readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { + switch dataDir { + case "etcd0": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + }, nil + case "etcd1": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + }, nil + case "etcd2": + return []model.EtcdRequest{ + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, + {Type: model.Compact, Compact: &model.CompactRequest{Revision: 4}}, + }, nil + default: + panic("unexpected") + } + }, + expectErr: "unexpected differences between wal entries", + }, { name: "Error when three members observed different last entry", dataDirs: []string{"etcd0", "etcd1", "etcd2"}, From c9d3f09fd382c4478dbaef9e1c85aad5807ba18a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 May 2025 18:06:10 +0000 Subject: [PATCH 0201/1068] build(deps): bump docker/build-push-action from 6.16.0 to 6.17.0 Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/14487ce63c7a62a4a324b0bfb37086795e31c6c1...1dc73863535b631f98b2378be8619f83b136f4a0) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-version: 6.17.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 6a11d26b48ba..ae378df46088 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -63,7 +63,7 @@ jobs: password: ${{ secrets.ANTITHESIS_CONTAINER_REGISTRY_TOKEN }} - name: Build and push config image - uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0 + uses: docker/build-push-action@1dc73863535b631f98b2378be8619f83b136f4a0 # v6.17.0 with: context: ./tests/antithesis file: ./tests/antithesis/Dockerfile.config @@ -73,7 +73,7 @@ jobs: ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:${{ github.sha }} - name: Build and push client image - uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0 + uses: docker/build-push-action@1dc73863535b631f98b2378be8619f83b136f4a0 # v6.17.0 with: context: . file: ./tests/antithesis/test-template/Dockerfile From f47dd6a628bc4acbf49064e6f7c2366c6861195a Mon Sep 17 00:00:00 2001 From: Nont Date: Mon, 19 May 2025 18:03:35 -0500 Subject: [PATCH 0202/1068] Add Stale List traffic for antithesis Signed-off-by: Nont --- tests/robustness/traffic/etcd.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index fd994a7efa07..d6f2d7f50f5d 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -81,9 +81,10 @@ var ( leaseTTL: DefaultLeaseTTL, // Please keep the sum of weights equal 100. requests: []random.ChoiceWeight[etcdRequestType]{ - {Choice: Get, Weight: 45}, - {Choice: Put, Weight: 45}, + {Choice: Get, Weight: 40}, + {Choice: Put, Weight: 40}, {Choice: StaleGet, Weight: 10}, + {Choice: StaleList, Weight: 10}, }, } ) From 33e986eef55c9d5900d5f47fb7becdd9b6d6fa1a Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Mon, 19 May 2025 15:47:52 +0100 Subject: [PATCH 0203/1068] Fix unit test failures Signed-off-by: Benjamin Wang --- etcdutl/snapshot/v3_snapshot_test.go | 2 +- server/etcdserver/api/rafthttp/stream.go | 1 + server/etcdserver/bootstrap_test.go | 2 +- server/storage/schema/migration_test.go | 13 ++++--- server/storage/schema/schema_test.go | 45 +++++++++++++++++------- 5 files changed, 45 insertions(+), 18 deletions(-) diff --git a/etcdutl/snapshot/v3_snapshot_test.go b/etcdutl/snapshot/v3_snapshot_test.go index 50f14008cb92..0fcc3540bd70 100644 --- a/etcdutl/snapshot/v3_snapshot_test.go +++ b/etcdutl/snapshot/v3_snapshot_test.go @@ -43,7 +43,7 @@ func TestSnapshotStatus(t *testing.T) { status, err := NewV3(zap.NewNop()).Status(dbpath) require.NoError(t, err) - assert.Equal(t, uint32(0x62132b4d), status.Hash) + assert.Equal(t, uint32(0xe7a6e44b), status.Hash) assert.Equal(t, int64(11), status.Revision) } diff --git a/server/etcdserver/api/rafthttp/stream.go b/server/etcdserver/api/rafthttp/stream.go index fa02f42b9b9c..23eb9c9a9db2 100644 --- a/server/etcdserver/api/rafthttp/stream.go +++ b/server/etcdserver/api/rafthttp/stream.go @@ -60,6 +60,7 @@ var ( "3.4.0": {streamTypeMsgAppV2, streamTypeMessage}, "3.5.0": {streamTypeMsgAppV2, streamTypeMessage}, "3.6.0": {streamTypeMsgAppV2, streamTypeMessage}, + "3.7.0": {streamTypeMsgAppV2, streamTypeMessage}, } ) diff --git a/server/etcdserver/bootstrap_test.go b/server/etcdserver/bootstrap_test.go index ca16c5887b6b..823b9b7210bd 100644 --- a/server/etcdserver/bootstrap_test.go +++ b/server/etcdserver/bootstrap_test.go @@ -133,7 +133,7 @@ func mockBootstrapRoundTrip(members []etcdserverpb.Member) roundTripFunc { case strings.Contains(r.URL.String(), DowngradeEnabledPath): return &http.Response{ StatusCode: http.StatusOK, - Body: io.NopCloser(strings.NewReader(`true`)), + Body: io.NopCloser(strings.NewReader(`false`)), }, nil } return nil, nil diff --git a/server/storage/schema/migration_test.go b/server/storage/schema/migration_test.go index 2b1d563864de..0f762c406f28 100644 --- a/server/storage/schema/migration_test.go +++ b/server/storage/schema/migration_test.go @@ -51,11 +51,16 @@ func TestNewPlan(t *testing.T) { target: version.V3_5, }, { - name: "Upgrade v3.6 to v3.7 should fail as v3.7 is unknown", - current: version.V3_6, - target: version.V3_7, + name: "Upgrade v3.6 to v3.7 should work", + current: version.V3_6, + target: version.V3_7, + }, + { + name: "Upgrade v3.7 to v3.8 should fail as v3.8 is unknown", + current: version.V3_7, + target: version.V3_8, expectError: true, - expectErrorMsg: `version "3.7.0" is not supported`, + expectErrorMsg: `version "3.8.0" is not supported`, }, { name: "Upgrade v3.6 to v4.0 as major version changes are unsupported", diff --git a/server/storage/schema/schema_test.go b/server/storage/schema/schema_test.go index b3df6d7cd7cc..4f6f25c0b154 100644 --- a/server/storage/schema/schema_test.go +++ b/server/storage/schema/schema_test.go @@ -73,10 +73,14 @@ func TestValidate(t *testing.T) { version: version.V3_6, }, { - name: `V3.7 schema is unknown and should return error`, - version: version.V3_7, + name: `V3.7 is correct`, + version: version.V3_7, + }, + { + name: `V3.8 schema is unknown and should return error`, + version: version.V3_8, expectError: true, - expectErrorMsg: `version "3.7.0" is not supported`, + expectErrorMsg: `version "3.8.0" is not supported`, }, } for _, tc := range tcs { @@ -148,20 +152,32 @@ func TestMigrate(t *testing.T) { expectVersion: &version.V3_7, }, { - name: "Upgrading 3.6 to v3.7 is not supported", - version: version.V3_6, - targetVersion: version.V3_7, - expectVersion: &version.V3_6, - expectError: true, - expectErrorMsg: `cannot create migration plan: version "3.7.0" is not supported`, + name: "Upgrading 3.6 to v3.7 should work", + version: version.V3_6, + targetVersion: version.V3_7, + expectVersion: &version.V3_7, }, { - name: "Downgrading v3.7 to v3.6 is not supported", + name: "Upgrading 3.7 to v3.8 is not supported", version: version.V3_7, - targetVersion: version.V3_6, + targetVersion: version.V3_8, expectVersion: &version.V3_7, expectError: true, - expectErrorMsg: `cannot create migration plan: version "3.7.0" is not supported`, + expectErrorMsg: `cannot create migration plan: version "3.8.0" is not supported`, + }, + { + name: "Downgrading v3.7 to v3.6 should work", + version: version.V3_7, + targetVersion: version.V3_6, + expectVersion: &version.V3_6, + }, + { + name: "Downgrading v3.8 to v3.7 is not supported", + version: version.V3_8, + targetVersion: version.V3_7, + expectVersion: &version.V3_8, + expectError: true, + expectErrorMsg: `cannot create migration plan: version "3.8.0" is not supported`, }, { name: "Downgrading v3.6 to v3.5 works as there are no v3.6 wal entries", @@ -310,6 +326,11 @@ func setupBackendData(t *testing.T, ver semver.Version, overrideKeys func(tx bac UnsafeUpdateConsistentIndex(tx, 1, 1) UnsafeSetStorageVersion(tx, &version.V3_7) tx.UnsafePut(Meta, []byte("future-key"), []byte("")) + case version.V3_8: + MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{}) + UnsafeUpdateConsistentIndex(tx, 1, 1) + UnsafeSetStorageVersion(tx, &version.V3_8) + tx.UnsafePut(Meta, []byte("future-key"), []byte("")) default: t.Fatalf("Unsupported storage version") } From a135ee6133acb86199f71e6b4f3ae1f830b6dc4f Mon Sep 17 00:00:00 2001 From: Nont Date: Sun, 18 May 2025 12:55:31 -0500 Subject: [PATCH 0204/1068] Move validation to separate finally driver Signed-off-by: Nont --- tests/antithesis/Makefile | 20 +++-- tests/antithesis/README.md | 6 +- tests/antithesis/test-template/Dockerfile | 3 +- .../test-template/robustness/common/path.go | 66 ++++++++++++++++ .../test-template/robustness/finally/main.go | 77 +++++++++++++++++++ .../robustness/{ => traffic}/main.go | 69 ++--------------- 6 files changed, 169 insertions(+), 72 deletions(-) create mode 100644 tests/antithesis/test-template/robustness/common/path.go create mode 100644 tests/antithesis/test-template/robustness/finally/main.go rename tests/antithesis/test-template/robustness/{ => traffic}/main.go (63%) diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 5d6b9197cb17..590fe5eb6acd 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -23,13 +23,21 @@ antithesis-build-etcd-image: antithesis-docker-compose-up: export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose up -.PHONY: antithesis-run-container-tests -antithesis-run-container-tests: - export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose exec client /opt/antithesis/test/v1/robustness/singleton_driver_main +.PHONY: antithesis-run-container-traffic +antithesis-run-container-traffic: + export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose exec client /opt/antithesis/test/v1/robustness/singleton_driver_traffic -.PHONY: antithesis-run-local-tests -antithesis-run-local-tests: - go run --race ./test-template/robustness/main.go --local +.PHONY: antithesis-run-container-validation +antithesis-run-container-validation: + export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose exec client /opt/antithesis/test/v1/robustness/finally_validation + +.PHONY: antithesis-run-local-traffic +antithesis-run-local-traffic: + go run --race ./test-template/robustness/traffic/main.go --local + +.PHONY: antithesis-run-local-validation +antithesis-run-local-validation: + go run --race ./test-template/robustness/finally/main.go --local .PHONY: antithesis-clean antithesis-clean: diff --git a/tests/antithesis/README.md b/tests/antithesis/README.md index 05db2c5b7ccb..3927ff9a004b 100644 --- a/tests/antithesis/README.md +++ b/tests/antithesis/README.md @@ -75,13 +75,15 @@ And it will stay running indefinitely. ### 4. Running the tests ```bash -make antithesis-run-container-tests +make antithesis-run-container-traffic +make antithesis-run-container-validation ``` Alternatively, with the etcd cluster from step 3, to run the tests locally without rebuilding the client image: ```bash -make antithesis-run-local-tests +make antithesis-run-local-traffic +make antithesis-run-local-validation ``` ### 5. Prepare for next run diff --git a/tests/antithesis/test-template/Dockerfile b/tests/antithesis/test-template/Dockerfile index a5a4a3d58953..850857a7925b 100644 --- a/tests/antithesis/test-template/Dockerfile +++ b/tests/antithesis/test-template/Dockerfile @@ -7,4 +7,5 @@ COPY . . WORKDIR /build/tests RUN go build -o /opt/antithesis/entrypoint/entrypoint -race ./antithesis/test-template/entrypoint/main.go -RUN go build -o /opt/antithesis/test/v1/robustness/singleton_driver_main -race ./antithesis/test-template/robustness/main.go +RUN go build -o /opt/antithesis/test/v1/robustness/singleton_driver_traffic -race ./antithesis/test-template/robustness/traffic/main.go +RUN go build -o /opt/antithesis/test/v1/robustness/finally_validation -race ./antithesis/test-template/robustness/finally/main.go diff --git a/tests/antithesis/test-template/robustness/common/path.go b/tests/antithesis/test-template/robustness/common/path.go new file mode 100644 index 000000000000..7c0e9e02a80b --- /dev/null +++ b/tests/antithesis/test-template/robustness/common/path.go @@ -0,0 +1,66 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build cgo && amd64 + +package common + +import ( + "fmt" + "os" +) + +const ( + defaultetcd0 = "etcd0:2379" + defaultetcd1 = "etcd1:2379" + defaultetcd2 = "etcd2:2379" + // mounted by the client in docker compose + defaultetcdDataPath = "/var/etcddata%d" + defaultReportPath = "/var/report/" + + localetcd0 = "127.0.0.1:12379" + localetcd1 = "127.0.0.1:22379" + localetcd2 = "127.0.0.1:32379" + // used by default when running the client locally + defaultetcdLocalDataPath = "/tmp/etcddata%d" + localetcdDataPathEnv = "ETCD_ROBUSTNESS_DATA_PATH" + localReportPath = "report" +) + +func DefaultPaths() (string, []string, map[string]string) { + hosts := []string{defaultetcd0, defaultetcd1, defaultetcd2} + reportPath := defaultReportPath + dataPaths := etcdDataPaths(defaultetcdDataPath, len(hosts)) + return reportPath, hosts, dataPaths +} + +func LocalPaths() (string, []string, map[string]string) { + hosts := []string{localetcd0, localetcd1, localetcd2} + reportPath := localReportPath + etcdDataPath := defaultetcdLocalDataPath + envPath := os.Getenv(localetcdDataPathEnv) + if envPath != "" { + etcdDataPath = envPath + "%d" + } + dataPaths := etcdDataPaths(etcdDataPath, len(hosts)) + return reportPath, hosts, dataPaths +} + +func etcdDataPaths(dir string, amount int) map[string]string { + dataPaths := make(map[string]string) + for i := range amount { + dataPaths[fmt.Sprintf("etcd%d", i)] = fmt.Sprintf(dir, i) + } + return dataPaths +} diff --git a/tests/antithesis/test-template/robustness/finally/main.go b/tests/antithesis/test-template/robustness/finally/main.go new file mode 100644 index 000000000000..852820bfbdde --- /dev/null +++ b/tests/antithesis/test-template/robustness/finally/main.go @@ -0,0 +1,77 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build cgo && amd64 + +package main + +import ( + "flag" + "maps" + "path/filepath" + "slices" + "time" + + "github.com/anishathalye/porcupine" + "github.com/antithesishq/antithesis-sdk-go/assert" + "go.uber.org/zap" + + "go.etcd.io/etcd/tests/v3/antithesis/test-template/robustness/common" + "go.etcd.io/etcd/tests/v3/robustness/report" + "go.etcd.io/etcd/tests/v3/robustness/traffic" + "go.etcd.io/etcd/tests/v3/robustness/validate" +) + +const ( + reportFileName = "history.html" +) + +func main() { + local := flag.Bool("local", false, "run finally locally and connect to etcd instances via localhost") + flag.Parse() + + reportPath, _, dirs := common.DefaultPaths() + if *local { + reportPath, _, dirs = common.LocalPaths() + } + + lg, err := zap.NewProduction() + if err != nil { + panic(err) + } + reports, err := report.LoadClientReports(reportPath) + assert.Always(err == nil, "Loaded client reports", map[string]any{"error": err}) + result := validateReports(lg, dirs, reports) + if err := result.Linearization.Visualize(lg, filepath.Join(reportPath, reportFileName)); err != nil { + panic(err) + } +} + +func validateReports(lg *zap.Logger, serversDataPath map[string]string, reports []report.ClientReport) validate.Result { + persistedRequests, err := report.PersistedRequests(lg, slices.Collect(maps.Values(serversDataPath))) + assert.Always(err == nil, "Loaded persisted requests", map[string]any{"error": err}) + + validateConfig := validate.Config{ExpectRevisionUnique: traffic.EtcdAntithesis.ExpectUniqueRevision()} + result := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, persistedRequests, 5*time.Minute) + assert.Always(result.Assumptions == nil, "Validation assumptions fulfilled", map[string]any{"error": result.Assumptions}) + if result.Linearization.Linearizable == porcupine.Unknown { + assert.Unreachable("Linearization timeout", nil) + } else { + assert.Always(result.Linearization.Linearizable == porcupine.Ok, "Linearization validation passes", nil) + } + assert.Always(result.WatchError == nil, "Watch validation passes", map[string]any{"error": result.WatchError}) + assert.Always(result.SerializableError == nil, "Serializable validation passes", map[string]any{"error": result.SerializableError}) + lg.Info("Completed robustness validation") + return result +} diff --git a/tests/antithesis/test-template/robustness/main.go b/tests/antithesis/test-template/robustness/traffic/main.go similarity index 63% rename from tests/antithesis/test-template/robustness/main.go rename to tests/antithesis/test-template/robustness/traffic/main.go index 9750c345713e..0ef96ac20249 100644 --- a/tests/antithesis/test-template/robustness/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -19,25 +19,22 @@ package main import ( "context" "flag" - "fmt" - "maps" "os" "slices" "sync" "time" - "github.com/anishathalye/porcupine" "github.com/antithesishq/antithesis-sdk-go/assert" "go.uber.org/zap" "golang.org/x/sync/errgroup" "golang.org/x/time/rate" + "go.etcd.io/etcd/tests/v3/antithesis/test-template/robustness/common" "go.etcd.io/etcd/tests/v3/robustness/client" "go.etcd.io/etcd/tests/v3/robustness/identity" robustnessrand "go.etcd.io/etcd/tests/v3/robustness/random" "go.etcd.io/etcd/tests/v3/robustness/report" "go.etcd.io/etcd/tests/v3/robustness/traffic" - "go.etcd.io/etcd/tests/v3/robustness/validate" ) var profile = traffic.Profile{ @@ -48,45 +45,13 @@ var profile = traffic.Profile{ MaxNonUniqueRequestConcurrency: 3, } -const ( - defaultetcd0 = "etcd0:2379" - defaultetcd1 = "etcd1:2379" - defaultetcd2 = "etcd2:2379" - - localetcd0 = "127.0.0.1:12379" - localetcd1 = "127.0.0.1:22379" - localetcd2 = "127.0.0.1:32379" - // mounted by the client in docker compose - defaultEtcdDataPath = "/var/etcddata%d" - // used by default when running the client locally - defaultLocalEtcdDataPath = "/tmp/etcddata%d" - localEtcdDataPathEnv = "ETCD_ROBUSTNESS_DATA_PATH" - - defaultReportPath = "/var/report/" - localReportPath = "report" -) - func main() { local := flag.Bool("local", false, "run tests locally and connect to etcd instances via localhost") flag.Parse() - etcdDataPath := defaultEtcdDataPath - hosts := []string{defaultetcd0, defaultetcd1, defaultetcd2} - reportPath := defaultReportPath + reportPath, hosts, etcdetcdDataPaths := common.DefaultPaths() if *local { - hosts = []string{localetcd0, localetcd1, localetcd2} - etcdDataPath = defaultLocalEtcdDataPath - localpath := os.Getenv(localEtcdDataPathEnv) - if localpath != "" { - etcdDataPath = localpath - } - reportPath = localReportPath - } - - persistedRequestdirs := []string{ - fmt.Sprintf(etcdDataPath, 0), - fmt.Sprintf(etcdDataPath, 1), - fmt.Sprintf(etcdDataPath, 2), + reportPath, hosts, etcdetcdDataPaths = common.LocalPaths() } ctx := context.Background() @@ -97,42 +62,20 @@ func main() { if err != nil { panic(err) } - r := report.TestReport{Logger: lg, ServersDataPath: map[string]string{}} - for i := range len(persistedRequestdirs) { - r.ServersDataPath[fmt.Sprintf("etcd%d", i)] = persistedRequestdirs[i] - } + r := report.TestReport{Logger: lg, ServersDataPath: etcdetcdDataPaths} defer func() { - if err := r.Report(reportPath); err != nil { - lg.Error("Failed to save validation report", zap.Error(err)) + if err = r.Report(reportPath); err != nil { + lg.Error("Failed to save traffic generation report", zap.Error(err)) } }() - testRobustness(ctx, lg, &r, hosts, baseTime, duration) -} -func testRobustness(ctx context.Context, lg *zap.Logger, r *report.TestReport, hosts []string, baseTime time.Time, duration time.Duration) { lg.Info("Start traffic generation", zap.Duration("duration", duration)) - var err error r.Client, err = runTraffic(ctx, lg, hosts, baseTime, duration) if err != nil { lg.Error("Failed to generate traffic") panic(err) } lg.Info("Completed traffic generation") - - persistedRequests, err := report.PersistedRequests(lg, slices.Collect(maps.Values(r.ServersDataPath))) - assert.Always(err == nil, "Loaded persisted requests", map[string]any{"error": err}) - validateConfig := validate.Config{ExpectRevisionUnique: traffic.EtcdAntithesis.ExpectUniqueRevision()} - result := validate.ValidateAndReturnVisualize(lg, validateConfig, r.Client, persistedRequests, 5*time.Minute) - assert.Always(result.Assumptions == nil, "Validation assumptions fulfilled", map[string]any{"error": result.Assumptions}) - if result.Linearization.Linearizable == porcupine.Unknown { - assert.Unreachable("Linearization timeout", nil) - } else { - assert.Always(result.Linearization.Linearizable == porcupine.Ok, "Linearization validation passes", nil) - } - r.Visualize = result.Linearization.Visualize - assert.Always(result.WatchError == nil, "Watch validation passes", map[string]any{"error": result.WatchError}) - assert.Always(result.SerializableError == nil, "Serializable validation passes", map[string]any{"error": result.SerializableError}) - lg.Info("Completed robustness validation") } func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime time.Time, duration time.Duration) ([]report.ClientReport, error) { From 20471e5fa07d363783280f96081d215722a7e345 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Mon, 19 May 2025 16:04:21 +0100 Subject: [PATCH 0205/1068] Fix integration & e2e test failures Signed-off-by: Benjamin Wang --- tests/e2e/ctl_v3_snapshot_test.go | 4 +- tests/e2e/discovery_test.go | 100 ------------------ tests/e2e/utl_migrate_test.go | 57 +++++----- tests/e2e/v2store_deprecation_test.go | 71 ------------- tests/framework/e2e/cluster.go | 13 +-- tests/framework/e2e/cluster_test.go | 19 ++-- tests/go.mod | 2 +- .../integration/clientv3/maintenance_test.go | 2 +- .../clientv3/snapshot/v3_snapshot_test.go | 2 +- 9 files changed, 43 insertions(+), 227 deletions(-) delete mode 100644 tests/e2e/discovery_test.go diff --git a/tests/e2e/ctl_v3_snapshot_test.go b/tests/e2e/ctl_v3_snapshot_test.go index f793c320ed67..cbf6dee5e57b 100644 --- a/tests/e2e/ctl_v3_snapshot_test.go +++ b/tests/e2e/ctl_v3_snapshot_test.go @@ -286,8 +286,8 @@ func snapshotVersionTest(cx ctlCtx) { if err != nil { cx.t.Fatalf("snapshotVersionTest getSnapshotStatus error (%v)", err) } - if st.Version != "3.6.0" { - cx.t.Fatalf("expected %q, got %q", "3.6.0", st.Version) + if st.Version != "3.7.0" { + cx.t.Fatalf("expected %q, got %q", "3.7.0", st.Version) } } diff --git a/tests/e2e/discovery_test.go b/tests/e2e/discovery_test.go deleted file mode 100644 index 5ecccc51b8a5..000000000000 --- a/tests/e2e/discovery_test.go +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2022 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//go:build !cluster_proxy - -package e2e - -import ( - "context" - "fmt" - "net/http" - "strings" - "testing" - "time" - - "github.com/stretchr/testify/require" - - "go.etcd.io/etcd/client/pkg/v3/fileutil" - "go.etcd.io/etcd/client/pkg/v3/testutil" - "go.etcd.io/etcd/client/pkg/v3/transport" - "go.etcd.io/etcd/client/v2" - "go.etcd.io/etcd/pkg/v3/expect" - "go.etcd.io/etcd/server/v3/etcdserver/api/rafthttp" - "go.etcd.io/etcd/tests/v3/framework/e2e" - "go.etcd.io/etcd/tests/v3/framework/integration" -) - -func TestClusterOf1UsingDiscovery(t *testing.T) { testClusterUsingDiscovery(t, 1, false) } -func TestClusterOf3UsingDiscovery(t *testing.T) { testClusterUsingDiscovery(t, 3, false) } -func TestTLSClusterOf3UsingDiscovery(t *testing.T) { testClusterUsingDiscovery(t, 3, true) } - -func testClusterUsingDiscovery(t *testing.T, size int, peerTLS bool) { - e2e.BeforeTest(t) - - if !fileutil.Exist(e2e.BinPath.EtcdLastRelease) { - t.Skipf("%q does not exist", e2e.BinPath.EtcdLastRelease) - } - - dc, err := e2e.NewEtcdProcessCluster(t.Context(), t, - e2e.WithBasePort(2000), - e2e.WithVersion(e2e.LastVersion), - e2e.WithClusterSize(1), - e2e.WithEnableV2(true), - ) - if err != nil { - t.Fatalf("could not start etcd process cluster (%v)", err) - } - defer dc.Close() - - dcc := MustNewHTTPClient(t, dc.EndpointsHTTP(), nil) - dkapi := client.NewKeysAPI(dcc) - ctx, cancel := context.WithTimeout(t.Context(), integration.RequestTimeout) - _, err = dkapi.Create(ctx, "/_config/size", fmt.Sprintf("%d", size)) - require.NoError(t, err) - cancel() - - c, err := e2e.NewEtcdProcessCluster(t.Context(), t, - e2e.WithBasePort(3000), - e2e.WithClusterSize(size), - e2e.WithIsPeerTLS(peerTLS), - e2e.WithDiscovery(dc.EndpointsHTTP()[0]+"/v2/keys"), - ) - if err != nil { - t.Fatalf("could not start etcd process cluster (%v)", err) - } - defer c.Close() - - kubectl := []string{e2e.BinPath.Etcdctl, "--endpoints", strings.Join(c.EndpointsGRPC(), ",")} - require.NoError(t, e2e.SpawnWithExpect(append(kubectl, "put", "key", "value"), expect.ExpectedResponse{Value: "OK"})) - require.NoError(t, e2e.SpawnWithExpect(append(kubectl, "get", "key"), expect.ExpectedResponse{Value: "value"})) -} - -func MustNewHTTPClient(t testutil.TB, eps []string, tls *transport.TLSInfo) client.Client { - cfgtls := transport.TLSInfo{} - if tls != nil { - cfgtls = *tls - } - cfg := client.Config{Transport: mustNewTransport(t, cfgtls), Endpoints: eps} - c, err := client.New(cfg) - require.NoError(t, err) - return c -} - -func mustNewTransport(t testutil.TB, tlsInfo transport.TLSInfo) *http.Transport { - // tick in integration test is short, so 1s dial timeout could play well. - tr, err := transport.NewTimeoutTransport(tlsInfo, time.Second, rafthttp.ConnReadTimeout, rafthttp.ConnWriteTimeout) - require.NoError(t, err) - return tr -} diff --git a/tests/e2e/utl_migrate_test.go b/tests/e2e/utl_migrate_test.go index d002d4ef7a73..b6f887319c02 100644 --- a/tests/e2e/utl_migrate_test.go +++ b/tests/e2e/utl_migrate_test.go @@ -54,78 +54,79 @@ func TestEtctlutlMigrate(t *testing.T) { targetVersion: "abc", clusterSize: 1, expectLogsSubString: `Error: wrong target version format, expected "X.Y", got "abc"`, - expectStorageVersion: &version.V3_6, + expectStorageVersion: &version.V3_7, }, { name: "Invalid target version", targetVersion: "3.a", clusterSize: 1, expectLogsSubString: `Error: failed to parse target version: strconv.ParseInt: parsing "a": invalid syntax`, - expectStorageVersion: &version.V3_6, + expectStorageVersion: &version.V3_7, }, { name: "Target with only major version is invalid", targetVersion: "3", clusterSize: 1, expectLogsSubString: `Error: wrong target version format, expected "X.Y", got "3"`, - expectStorageVersion: &version.V3_6, + expectStorageVersion: &version.V3_7, }, { name: "Target with patch version is invalid", targetVersion: "3.6.0", clusterSize: 1, expectLogsSubString: `Error: wrong target version format, expected "X.Y", got "3.6.0"`, - expectStorageVersion: &version.V3_6, + expectStorageVersion: &version.V3_7, }, { - name: "Migrate v3.5 to v3.5 is no-op", - clusterVersion: e2e.LastVersion, - clusterSize: 1, - targetVersion: "3.5", - expectLogsSubString: "storage version up-to-date\t" + `{"storage-version": "3.5"}`, + name: "Migrate v3.6 to v3.6 is no-op", + clusterVersion: e2e.LastVersion, + clusterSize: 1, + targetVersion: "3.6", + expectStorageVersion: &version.V3_6, + expectLogsSubString: "storage version up-to-date\t" + `{"storage-version": "3.6"}`, }, { name: "Upgrade 1 member cluster from v3.5 to v3.6 should work", clusterVersion: e2e.LastVersion, clusterSize: 1, - targetVersion: "3.6", - expectStorageVersion: &version.V3_6, + targetVersion: "3.7", + expectStorageVersion: &version.V3_7, }, { - name: "Upgrade 3 member cluster from v3.5 to v3.6 should work", + name: "Upgrade 3 member cluster from v3.6 to v3.7 should work", clusterVersion: e2e.LastVersion, clusterSize: 3, - targetVersion: "3.6", - expectStorageVersion: &version.V3_6, + targetVersion: "3.7", + expectStorageVersion: &version.V3_7, }, { - name: "Migrate v3.6 to v3.6 is no-op", - targetVersion: "3.6", + name: "Migrate v3.7 to v3.7 is no-op", + targetVersion: "3.7", clusterSize: 1, - expectLogsSubString: "storage version up-to-date\t" + `{"storage-version": "3.6"}`, - expectStorageVersion: &version.V3_6, + expectLogsSubString: "storage version up-to-date\t" + `{"storage-version": "3.7"}`, + expectStorageVersion: &version.V3_7, }, { - name: "Downgrade 1 member cluster from v3.6 to v3.5 should work", - targetVersion: "3.5", + name: "Downgrade 1 member cluster from v3.7 to v3.6 should work", + targetVersion: "3.6", clusterSize: 1, expectLogsSubString: "updated storage version", - expectStorageVersion: nil, // 3.5 doesn't have the field `storageVersion`, so it returns nil. + expectStorageVersion: &version.V3_6, }, { - name: "Downgrade 3 member cluster from v3.6 to v3.5 should work", - targetVersion: "3.5", + name: "Downgrade 3 member cluster from v3.7 to v3.6 should work", + targetVersion: "3.6", clusterSize: 3, expectLogsSubString: "updated storage version", - expectStorageVersion: nil, // 3.5 doesn't have the field `storageVersion`, so it returns nil. + expectStorageVersion: &version.V3_6, }, { - name: "Upgrade v3.6 to v3.7 with force should work", - targetVersion: "3.7", + name: "Upgrade v3.7 to v3.8 with force should work", + targetVersion: "3.8", clusterSize: 1, force: true, - expectLogsSubString: "forcefully set storage version\t" + `{"storage-version": "3.7"}`, - expectStorageVersion: &semver.Version{Major: 3, Minor: 7}, + expectLogsSubString: "forcefully set storage version\t" + `{"storage-version": "3.8"}`, + expectStorageVersion: &semver.Version{Major: 3, Minor: 8}, }, } for _, tc := range tcs { diff --git a/tests/e2e/v2store_deprecation_test.go b/tests/e2e/v2store_deprecation_test.go index bc91e93b00f1..77a59a365889 100644 --- a/tests/e2e/v2store_deprecation_test.go +++ b/tests/e2e/v2store_deprecation_test.go @@ -30,7 +30,6 @@ import ( "go.uber.org/zap/zaptest" "go.etcd.io/etcd/client/pkg/v3/fileutil" - "go.etcd.io/etcd/pkg/v3/expect" "go.etcd.io/etcd/server/v3/etcdserver" "go.etcd.io/etcd/server/v3/etcdserver/api/membership" "go.etcd.io/etcd/server/v3/etcdserver/api/snap" @@ -41,17 +40,6 @@ import ( "go.etcd.io/etcd/tests/v3/framework/e2e" ) -func writeCustomV2Data(tb testing.TB, epc *e2e.EtcdProcessCluster, count int) { - for i := 0; i < count; i++ { - if err := e2e.CURLPut(epc, e2e.CURLReq{ - Endpoint: "/v2/keys/foo", Value: "bar" + fmt.Sprint(i), - Expected: expect.ExpectedResponse{Value: `{"action":"set","node":{"key":"/foo","value":"bar` + fmt.Sprint(i)}, - }); err != nil { - tb.Fatalf("failed put with curl (%v)", err) - } - } -} - func TestV2DeprecationNotYet(t *testing.T) { e2e.BeforeTest(t) t.Log("Verify its infeasible to start etcd with --v2-deprecation=not-yet mode") @@ -62,65 +50,6 @@ func TestV2DeprecationNotYet(t *testing.T) { assert.NoError(t, err) } -func TestV2DeprecationWriteOnlyWAL(t *testing.T) { - e2e.BeforeTest(t) - dataDirPath := t.TempDir() - - if !fileutil.Exist(e2e.BinPath.EtcdLastRelease) { - t.Skipf("%q does not exist", e2e.BinPath.EtcdLastRelease) - } - cfg := e2e.ConfigStandalone(*e2e.NewConfig( - e2e.WithVersion(e2e.LastVersion), - e2e.WithEnableV2(true), - e2e.WithDataDirPath(dataDirPath), - )) - epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) - require.NoError(t, err) - memberDataDir := epc.Procs[0].Config().DataDirPath - - writeCustomV2Data(t, epc, 1) - - require.NoError(t, epc.Stop()) - - t.Log("Verify its infeasible to start etcd with --v2-deprecation=write-only mode") - proc, err := e2e.SpawnCmd([]string{e2e.BinPath.Etcd, "--v2-deprecation=write-only", "--data-dir=" + memberDataDir}, nil) - require.NoError(t, err) - - _, err = proc.Expect("detected disallowed v2 WAL for stage --v2-deprecation=write-only") - assert.NoError(t, err) -} - -func TestV2DeprecationWriteOnlySnapshot(t *testing.T) { - e2e.BeforeTest(t) - dataDirPath := t.TempDir() - - if !fileutil.Exist(e2e.BinPath.EtcdLastRelease) { - t.Skipf("%q does not exist", e2e.BinPath.EtcdLastRelease) - } - cfg := e2e.ConfigStandalone(*e2e.NewConfig( - e2e.WithVersion(e2e.LastVersion), - e2e.WithEnableV2(true), - e2e.WithDataDirPath(dataDirPath), - e2e.WithSnapshotCount(10), - )) - epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) - require.NoError(t, err) - memberDataDir := epc.Procs[0].Config().DataDirPath - - // We need to exceed 'SnapshotCount' such that v2 snapshot is dumped. - writeCustomV2Data(t, epc, 10) - - require.NoError(t, epc.Stop()) - - t.Log("Verify its infeasible to start etcd with --v2-deprecation=write-only mode") - proc, err := e2e.SpawnCmd([]string{e2e.BinPath.Etcd, "--v2-deprecation=write-only", "--data-dir=" + memberDataDir}, nil) - require.NoError(t, err) - defer proc.Close() - - _, err = proc.Expect("detected disallowed custom content in v2store for stage --v2-deprecation=write-only") - assert.NoError(t, err) -} - func TestV2DeprecationSnapshotMatches(t *testing.T) { e2e.BeforeTest(t) lastReleaseData := t.TempDir() diff --git a/tests/framework/e2e/cluster.go b/tests/framework/e2e/cluster.go index d1500834ce31..da08bc8f4c80 100644 --- a/tests/framework/e2e/cluster.go +++ b/tests/framework/e2e/cluster.go @@ -178,10 +178,9 @@ type EtcdProcessClusterConfig struct { IsPeerAutoTLS bool CN bool - // Removed in v3.6 - + // Discovery is for v2discovery + // Note: remove this field when we remove the v2discovery Discovery string // v2 discovery - EnableV2 bool } func DefaultConfig() *EtcdProcessClusterConfig { @@ -287,10 +286,6 @@ func WithStrictReconfigCheck(strict bool) EPClusterOption { return func(c *EtcdProcessClusterConfig) { c.ServerConfig.StrictReconfigCheck = strict } } -func WithEnableV2(enable bool) EPClusterOption { - return func(c *EtcdProcessClusterConfig) { c.EnableV2 = enable } -} - func WithAuthTokenOpts(token string) EPClusterOption { return func(c *EtcdProcessClusterConfig) { c.ServerConfig.AuthToken = token } } @@ -618,9 +613,7 @@ func (cfg *EtcdProcessClusterConfig) EtcdServerProcessConfig(tb testing.TB, i in if !cfg.ServerConfig.StrictReconfigCheck { args = append(args, "--strict-reconfig-check=false") } - if cfg.EnableV2 { - args = append(args, "--enable-v2=true") - } + var murl string if cfg.MetricsURLScheme != "" { murl = (&url.URL{ diff --git a/tests/framework/e2e/cluster_test.go b/tests/framework/e2e/cluster_test.go index 24fa8a91bc6c..f5ff967203ae 100644 --- a/tests/framework/e2e/cluster_test.go +++ b/tests/framework/e2e/cluster_test.go @@ -23,8 +23,8 @@ import ( ) func TestEtcdServerProcessConfig(t *testing.T) { - v3_5_12 := semver.Version{Major: 3, Minor: 5, Patch: 12} - v3_5_14 := semver.Version{Major: 3, Minor: 5, Patch: 14} + v3_6_0 := semver.Version{Major: 3, Minor: 6, Patch: 0} + v3_7_0 := semver.Version{Major: 3, Minor: 7, Patch: 0} tcs := []struct { name string config *EtcdProcessClusterConfig @@ -81,9 +81,9 @@ func TestEtcdServerProcessConfig(t *testing.T) { name: "CatchUpEntries", config: NewConfig(WithSnapshotCatchUpEntries(100)), expectArgsContain: []string{ - "--experimental-snapshot-catchup-entries=100", + "--snapshot-catchup-entries=100", }, - mockBinaryVersion: &v3_5_14, + mockBinaryVersion: &v3_7_0, }, { name: "CatchUpEntriesNoVersion", @@ -95,10 +95,10 @@ func TestEtcdServerProcessConfig(t *testing.T) { { name: "CatchUpEntriesOldVersion", config: NewConfig(WithSnapshotCatchUpEntries(100), WithVersion(LastVersion)), - expectArgsNotContain: []string{ + expectArgsContain: []string{ "--snapshot-catchup-entries=100", }, - mockBinaryVersion: &v3_5_12, + mockBinaryVersion: &v3_6_0, }, { name: "ClientHTTPSeparate", @@ -114,13 +114,6 @@ func TestEtcdServerProcessConfig(t *testing.T) { "--force-new-cluster=true", }, }, - { - name: "EnableV2", - config: NewConfig(WithEnableV2(true)), - expectArgsContain: []string{ - "--enable-v2=true", - }, - }, { name: "MetricsURL", config: NewConfig(WithMetricsURLScheme("http")), diff --git a/tests/go.mod b/tests/go.mod index a5705ccb960c..b3f144bda8c7 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -32,7 +32,6 @@ require ( github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/etcdctl/v3 v3.6.0-alpha.0 go.etcd.io/etcd/etcdutl/v3 v3.6.0-alpha.0 @@ -89,6 +88,7 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/bbolt v1.4.0 // indirect + go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect diff --git a/tests/integration/clientv3/maintenance_test.go b/tests/integration/clientv3/maintenance_test.go index 50619ae127bb..7a64b2ed84f9 100644 --- a/tests/integration/clientv3/maintenance_test.go +++ b/tests/integration/clientv3/maintenance_test.go @@ -342,7 +342,7 @@ func TestMaintenanceSnapshotWithVersionVersion(t *testing.T) { resp, err := clus.RandClient().SnapshotWithVersion(context.Background()) require.NoError(t, err) defer resp.Snapshot.Close() - if resp.Version != "3.6.0" { + if resp.Version != "3.7.0" { t.Errorf("unexpected version, expected %q, got %q", version.Version, resp.Version) } } diff --git a/tests/integration/clientv3/snapshot/v3_snapshot_test.go b/tests/integration/clientv3/snapshot/v3_snapshot_test.go index 1da423f5cfb2..a306718839ea 100644 --- a/tests/integration/clientv3/snapshot/v3_snapshot_test.go +++ b/tests/integration/clientv3/snapshot/v3_snapshot_test.go @@ -63,7 +63,7 @@ func TestSaveSnapshotVersion(t *testing.T) { ver, dbPath := createSnapshotFile(t, cfg, kvs) defer os.RemoveAll(dbPath) - require.Equalf(t, "3.6.0", ver, "expected snapshot version %s, got %s:", "3.6.0", ver) + require.Equalf(t, "3.7.0", ver, "expected snapshot version %s, got %s:", "3.7.0", ver) } type kv struct { From a5bb9431858310e7dac6fa5a78e49be28f052d09 Mon Sep 17 00:00:00 2001 From: hwdef Date: Tue, 20 May 2025 10:42:03 +0800 Subject: [PATCH 0206/1068] exempt help wanted label for stale action Signed-off-by: hwdef --- .github/workflows/stale.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index 240f9f362fbd..84dfec4476a4 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -19,7 +19,7 @@ jobs: days-until-close: 21 stale-issue-label: 'stale' stale-pr-label: 'stale' - exempt-labels: 'stage/tracked' + exempt-labels: 'stage/tracked,help wanted' exempt-projects: false exempt-milestones: false exempt-assignees: false From c61b09774dbdd661f374407dc13c8b59df760abf Mon Sep 17 00:00:00 2001 From: Nont Date: Tue, 20 May 2025 07:58:57 -0500 Subject: [PATCH 0207/1068] Add delete traffic for antithesis Signed-off-by: Nont --- tests/robustness/traffic/etcd.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index d6f2d7f50f5d..d9e1ffae3b49 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -81,10 +81,11 @@ var ( leaseTTL: DefaultLeaseTTL, // Please keep the sum of weights equal 100. requests: []random.ChoiceWeight[etcdRequestType]{ - {Choice: Get, Weight: 40}, + {Choice: Get, Weight: 35}, {Choice: Put, Weight: 40}, {Choice: StaleGet, Weight: 10}, {Choice: StaleList, Weight: 10}, + {Choice: Delete, Weight: 5}, }, } ) From bd0d54d88c00e4ff75dc4b7f72a9bfb4b4fb09b3 Mon Sep 17 00:00:00 2001 From: Nont Date: Tue, 20 May 2025 22:05:17 -0500 Subject: [PATCH 0208/1068] Measure traffic during test Signed-off-by: Nont --- .../test-template/robustness/traffic/main.go | 21 ++++++++---- tests/robustness/traffic/traffic.go | 34 +++++++++---------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 0ef96ac20249..8a9f5bb3de22 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -75,7 +75,6 @@ func main() { lg.Error("Failed to generate traffic") panic(err) } - lg.Info("Completed traffic generation") } func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime time.Time, duration time.Duration) ([]report.ClientReport, error) { @@ -84,17 +83,18 @@ func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime ti if err != nil { lg.Fatal("Failed empty database at start check", zap.Error(err)) } - reports := []report.ClientReport{r} + trafficReports := []report.ClientReport{r} watchReport := []report.ClientReport{} maxRevisionChan := make(chan int64, 1) watchConfig := client.WatchConfig{ RequestProgress: true, } g := errgroup.Group{} + startTime := time.Since(baseTime) g.Go(func() error { defer close(maxRevisionChan) - reports = slices.Concat(reports, simulateTraffic(ctx, hosts, ids, baseTime, duration)) - maxRevision := report.OperationsMaxRevision(reports) + trafficReports = slices.Concat(trafficReports, simulateTraffic(ctx, hosts, ids, baseTime, duration)) + maxRevision := report.OperationsMaxRevision(trafficReports) maxRevisionChan <- maxRevision lg.Info("Finished simulating Traffic", zap.Int64("max-revision", maxRevision)) return nil @@ -107,8 +107,17 @@ func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime ti if err := g.Wait(); err != nil { return nil, err } - - return slices.Concat(reports, watchReport), nil + endTime := time.Since(baseTime) + reports := slices.Concat(trafficReports, watchReport) + totalStats := traffic.CalculateStats(reports, startTime, endTime) + lg.Info("Completed traffic generation", + zap.Int("successes", totalStats.Successes), + zap.Int("failures", totalStats.Failures), + zap.Float64("successRate", totalStats.SuccessRate()), + zap.Duration("period", totalStats.Period), + zap.Float64("qps", totalStats.QPS()), + ) + return reports, nil } func simulateTraffic(ctx context.Context, hosts []string, ids identity.Provider, baseTime time.Time, duration time.Duration) []report.ClientReport { diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index 43ea6ddc27ce..102a2b3801cc 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -129,15 +129,15 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 require.NoErrorf(t, err, "Last operation failed, validation requires last operation to succeed") reports = append(reports, cc.Report()) - totalStats := calculateStats(reports, startTime, endTime) - beforeFailpointStats := calculateStats(reports, startTime, fr.Start) - duringFailpointStats := calculateStats(reports, fr.Start, fr.End) - afterFailpointStats := calculateStats(reports, fr.End, endTime) + totalStats := CalculateStats(reports, startTime, endTime) + beforeFailpointStats := CalculateStats(reports, startTime, fr.Start) + duringFailpointStats := CalculateStats(reports, fr.Start, fr.End) + afterFailpointStats := CalculateStats(reports, fr.End, endTime) - lg.Info("Reporting complete traffic", zap.Int("successes", totalStats.successes), zap.Int("failures", totalStats.failures), zap.Float64("successRate", totalStats.successRate()), zap.Duration("period", totalStats.period), zap.Float64("qps", totalStats.QPS())) - lg.Info("Reporting traffic before failure injection", zap.Int("successes", beforeFailpointStats.successes), zap.Int("failures", beforeFailpointStats.failures), zap.Float64("successRate", beforeFailpointStats.successRate()), zap.Duration("period", beforeFailpointStats.period), zap.Float64("qps", beforeFailpointStats.QPS())) - lg.Info("Reporting traffic during failure injection", zap.Int("successes", duringFailpointStats.successes), zap.Int("failures", duringFailpointStats.failures), zap.Float64("successRate", duringFailpointStats.successRate()), zap.Duration("period", duringFailpointStats.period), zap.Float64("qps", duringFailpointStats.QPS())) - lg.Info("Reporting traffic after failure injection", zap.Int("successes", afterFailpointStats.successes), zap.Int("failures", afterFailpointStats.failures), zap.Float64("successRate", afterFailpointStats.successRate()), zap.Duration("period", afterFailpointStats.period), zap.Float64("qps", afterFailpointStats.QPS())) + lg.Info("Reporting complete traffic", zap.Int("successes", totalStats.Successes), zap.Int("failures", totalStats.Failures), zap.Float64("successRate", totalStats.SuccessRate()), zap.Duration("period", totalStats.Period), zap.Float64("qps", totalStats.QPS())) + lg.Info("Reporting traffic before failure injection", zap.Int("successes", beforeFailpointStats.Successes), zap.Int("failures", beforeFailpointStats.Failures), zap.Float64("successRate", beforeFailpointStats.SuccessRate()), zap.Duration("period", beforeFailpointStats.Period), zap.Float64("qps", beforeFailpointStats.QPS())) + lg.Info("Reporting traffic during failure injection", zap.Int("successes", duringFailpointStats.Successes), zap.Int("failures", duringFailpointStats.Failures), zap.Float64("successRate", duringFailpointStats.SuccessRate()), zap.Duration("period", duringFailpointStats.Period), zap.Float64("qps", duringFailpointStats.QPS())) + lg.Info("Reporting traffic after failure injection", zap.Int("successes", afterFailpointStats.Successes), zap.Int("failures", afterFailpointStats.Failures), zap.Float64("successRate", afterFailpointStats.SuccessRate()), zap.Duration("period", afterFailpointStats.Period), zap.Float64("qps", afterFailpointStats.QPS())) if beforeFailpointStats.QPS() < profile.MinimalQPS { t.Errorf("Requiring minimal %f qps before failpoint injection for test results to be reliable, got %f qps", profile.MinimalQPS, beforeFailpointStats.QPS()) @@ -146,8 +146,8 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 return reports } -func calculateStats(reports []report.ClientReport, start, end time.Duration) (ts trafficStats) { - ts.period = end - start +func CalculateStats(reports []report.ClientReport, start, end time.Duration) (ts trafficStats) { + ts.Period = end - start for _, r := range reports { for _, op := range r.KeyValue { @@ -156,9 +156,9 @@ func calculateStats(reports []report.ClientReport, start, end time.Duration) (ts } resp := op.Output.(model.MaybeEtcdResponse) if resp.Error == "" { - ts.successes++ + ts.Successes++ } else { - ts.failures++ + ts.Failures++ } } } @@ -166,16 +166,16 @@ func calculateStats(reports []report.ClientReport, start, end time.Duration) (ts } type trafficStats struct { - successes, failures int - period time.Duration + Successes, Failures int + Period time.Duration } -func (ts *trafficStats) successRate() float64 { - return float64(ts.successes) / float64(ts.successes+ts.failures) +func (ts *trafficStats) SuccessRate() float64 { + return float64(ts.Successes) / float64(ts.Successes+ts.Failures) } func (ts *trafficStats) QPS() float64 { - return float64(ts.successes) / ts.period.Seconds() + return float64(ts.Successes) / ts.Period.Seconds() } type Profile struct { From d85bcf94d279cbac298e31353c53a116594aadc5 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 20 May 2025 19:04:10 +0100 Subject: [PATCH 0209/1068] Update test-release target Signed-off-by: Benjamin Wang --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 86d42ca2a791..ac41a0d8cdae 100644 --- a/Makefile +++ b/Makefile @@ -56,9 +56,10 @@ test-grpcproxy-e2e: build test-e2e-release: build PASSES="release e2e" ./scripts/test.sh $(GO_TEST_FLAGS) +# When we release the first 3.7.0-alpha.0, we can remove `VERSION="3.7.99"` below. .PHONY: test-release test-release: - PASSES="release_tests" ./scripts/test.sh $(GO_TEST_FLAGS) + PASSES="release_tests" VERSION="3.7.99" ./scripts/test.sh $(GO_TEST_FLAGS) .PHONY: test-robustness test-robustness: From 049164065c9d115a37d02b074e1ede8a403b2248 Mon Sep 17 00:00:00 2001 From: redwrasse Date: Sun, 20 Apr 2025 08:50:31 -0700 Subject: [PATCH 0210/1068] adt: further split interval tree by right endpoint on matched left endpoints, to improve find() performance Signed-off-by: redwrasse --- pkg/adt/interval_tree.go | 48 +++++++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/pkg/adt/interval_tree.go b/pkg/adt/interval_tree.go index 3c1c3ea8322a..4de7ca480593 100644 --- a/pkg/adt/interval_tree.go +++ b/pkg/adt/interval_tree.go @@ -472,8 +472,16 @@ func (ivt *intervalTree) Insert(ivl Interval, val any) { x := ivt.root for x != ivt.sentinel { y = x - if z.iv.Ivl.Begin.Compare(x.iv.Ivl.Begin) < 0 { + // Split on left endpoint. If left endpoints match, instead split on right endpoint. + beginCompare := z.iv.Ivl.Begin.Compare(x.iv.Ivl.Begin) + if beginCompare < 0 { x = x.left + } else if beginCompare == 0 { + if z.iv.Ivl.End.Compare(x.iv.Ivl.End) < 0 { + x = x.left + } else { + x = x.right + } } else { x = x.right } @@ -483,8 +491,15 @@ func (ivt *intervalTree) Insert(ivl Interval, val any) { if y == ivt.sentinel { ivt.root = z } else { - if z.iv.Ivl.Begin.Compare(y.iv.Ivl.Begin) < 0 { + beginCompare := z.iv.Ivl.Begin.Compare(y.iv.Ivl.Begin) + if beginCompare < 0 { y.left = z + } else if beginCompare == 0 { + if z.iv.Ivl.End.Compare(y.iv.Ivl.End) < 0 { + y.left = z + } else { + y.right = z + } } else { y.right = z } @@ -701,16 +716,29 @@ func (ivt *intervalTree) Visit(ivl Interval, ivv IntervalVisitor) { // find the exact node for a given interval func (ivt *intervalTree) find(ivl Interval) *intervalNode { - ret := ivt.sentinel - f := func(n *intervalNode) bool { - if n.iv.Ivl != ivl { - return true + x := ivt.root + // Search until hit sentinel or exact match. + for x != ivt.sentinel { + beginCompare := ivl.Begin.Compare(x.iv.Ivl.Begin) + endCompare := ivl.End.Compare(x.iv.Ivl.End) + if beginCompare == 0 && endCompare == 0 { + return x + } + // Split on left endpoint. If left endpoints match, + // instead split on right endpoints. + if beginCompare < 0 { + x = x.left + } else if beginCompare == 0 { + if endCompare < 0 { + x = x.left + } else { + x = x.right + } + } else { + x = x.right } - ret = n - return false } - ivt.root.visit(&ivl, ivt.sentinel, f) - return ret + return x } // Find gets the IntervalValue for the node matching the given interval From 972c78fb69a6d821f1e019020bd885801631abb0 Mon Sep 17 00:00:00 2001 From: joshjms Date: Wed, 21 May 2025 11:07:48 +0800 Subject: [PATCH 0211/1068] dependency: bump google.golang.org/grpc from 1.72.0 to 1.72.1 Signed-off-by: joshjms --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 20 files changed, 30 insertions(+), 30 deletions(-) diff --git a/api/go.mod b/api/go.mod index e898556240c9..d3af6bf2d4eb 100644 --- a/api/go.mod +++ b/api/go.mod @@ -11,7 +11,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/stretchr/testify v1.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 - google.golang.org/grpc v1.72.0 + google.golang.org/grpc v1.72.1 google.golang.org/protobuf v1.36.6 ) diff --git a/api/go.sum b/api/go.sum index be8505091968..c3ba2478205d 100644 --- a/api/go.sum +++ b/api/go.sum @@ -77,8 +77,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= -google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index 992ade18a1ec..82c4e53b97a6 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.72.0 + google.golang.org/grpc v1.72.1 sigs.k8s.io/yaml v1.4.0 ) diff --git a/client/v3/go.sum b/client/v3/go.sum index cf47dc85eca9..04ee92a631bd 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -111,8 +111,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= -google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index cd206c46ef8d..e64be6ff00f1 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.11.0 - google.golang.org/grpc v1.72.0 + google.golang.org/grpc v1.72.1 ) require ( diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 59d9c676e3a7..040686a8cd9b 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -137,8 +137,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= -google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 33f63824a2b2..c9c29df8daf1 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -88,7 +88,7 @@ require ( golang.org/x/time v0.11.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect - google.golang.org/grpc v1.72.0 // indirect + google.golang.org/grpc v1.72.1 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 45e25113382b..4c8635d386b3 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -173,8 +173,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= -google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index d6c9f1cb6bde..e46f4ced7a3c 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.11.0 - google.golang.org/grpc v1.72.0 + google.golang.org/grpc v1.72.1 google.golang.org/protobuf v1.36.6 ) diff --git a/go.sum b/go.sum index a8e8e110a9aa..97be36a76fb3 100644 --- a/go.sum +++ b/go.sum @@ -249,8 +249,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= -google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/go.mod b/pkg/go.mod index f584b70e9d89..2b7a2560485c 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.72.0 + google.golang.org/grpc v1.72.1 ) require ( diff --git a/pkg/go.sum b/pkg/go.sum index 76768ea315b5..326a21867de5 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -61,8 +61,8 @@ golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= -google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index 05cd3dada2be..00dfbd8f1916 100644 --- a/server/go.mod +++ b/server/go.mod @@ -41,7 +41,7 @@ require ( golang.org/x/net v0.40.0 golang.org/x/time v0.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 - google.golang.org/grpc v1.72.0 + google.golang.org/grpc v1.72.1 google.golang.org/protobuf v1.36.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.4.0 diff --git a/server/go.sum b/server/go.sum index 74ca4f612e36..67d3e97be7e1 100644 --- a/server/go.sum +++ b/server/go.sum @@ -226,8 +226,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= -google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index b3f144bda8c7..f0d6637423d4 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -48,7 +48,7 @@ require ( golang.org/x/crypto v0.38.0 golang.org/x/sync v0.14.0 golang.org/x/time v0.11.0 - google.golang.org/grpc v1.72.0 + google.golang.org/grpc v1.72.1 google.golang.org/protobuf v1.36.6 ) diff --git a/tests/go.sum b/tests/go.sum index 30dfad66ef19..d11f0718d014 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -255,8 +255,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= -google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 6580f41c27c7..2f257093750c 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -224,7 +224,7 @@ require ( golang.org/x/tools v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect - google.golang.org/grpc v1.72.0 // indirect + google.golang.org/grpc v1.72.1 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index ad52111b4cdc..2d8038629dec 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -688,8 +688,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= -google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index c7be573cad41..4ac797991852 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -22,5 +22,5 @@ require ( golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect - google.golang.org/grpc v1.72.0 // indirect + google.golang.org/grpc v1.72.1 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index d28b3449647a..0aeacd1fbd08 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1888,8 +1888,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= -google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 4eb3c212284ce8ef0c22f0828470d8dd788b11e7 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Wed, 21 May 2025 13:17:00 +0200 Subject: [PATCH 0212/1068] Stop using watch for determining response end time Signed-off-by: Marek Siarkowicz --- tests/robustness/validate/patch_history.go | 27 ++----------------- .../robustness/validate/patch_history_test.go | 8 +++--- tests/robustness/validate/validate_test.go | 1 + 3 files changed, 7 insertions(+), 29 deletions(-) diff --git a/tests/robustness/validate/patch_history.go b/tests/robustness/validate/patch_history.go index 0196369d827d..da75212b83e2 100644 --- a/tests/robustness/validate/patch_history.go +++ b/tests/robustness/validate/patch_history.go @@ -28,7 +28,7 @@ func patchLinearizableOperations(operations []porcupine.Operation, reports []rep putRevision := putRevision(reports) persistedPutCount := countPersistedPuts(persistedRequests) clientPutCount := countClientPuts(reports) - putReturnTime := uniquePutReturnTime(operations, reports, persistedRequests, clientPutCount) + putReturnTime := uniquePutReturnTime(operations, persistedRequests, clientPutCount) return patchOperations(operations, putRevision, putReturnTime, clientPutCount, persistedPutCount) } @@ -140,7 +140,7 @@ func hasUniqueWriteOperation(ops []model.EtcdOperation, clientRequestCount map[k return false } -func uniquePutReturnTime(allOperations []porcupine.Operation, reports []report.ClientReport, persistedRequests []model.EtcdRequest, clientPutCount map[keyValue]int64) map[keyValue]int64 { +func uniquePutReturnTime(allOperations []porcupine.Operation, persistedRequests []model.EtcdRequest, clientPutCount map[keyValue]int64) map[keyValue]int64 { earliestReturnTime := map[keyValue]int64{} var lastReturnTime int64 for _, op := range allOperations { @@ -172,29 +172,6 @@ func uniquePutReturnTime(allOperations []porcupine.Operation, reports []report.C } } - for _, client := range reports { - for _, watch := range client.Watch { - for _, resp := range watch.Responses { - for _, event := range resp.Events { - switch event.Type { - case model.RangeOperation: - case model.PutOperation: - kv := keyValue{Key: event.Key, Value: event.Value} - if count := clientPutCount[kv]; count > 1 { - continue - } - if t, ok := earliestReturnTime[kv]; !ok || t > resp.Time.Nanoseconds() { - earliestReturnTime[kv] = resp.Time.Nanoseconds() - } - case model.DeleteOperation: - default: - panic(fmt.Sprintf("unknown event type %q", event.Type)) - } - } - } - } - } - for i := len(persistedRequests) - 1; i >= 0; i-- { request := persistedRequests[i] switch request.Type { diff --git a/tests/robustness/validate/patch_history_test.go b/tests/robustness/validate/patch_history_test.go index 2fa6a5fbb830..0ab448ea0f9d 100644 --- a/tests/robustness/validate/patch_history_test.go +++ b/tests/robustness/validate/patch_history_test.go @@ -90,7 +90,7 @@ func TestPatchHistory(t *testing.T) { }, }, { - name: "failed put remains if there is a matching persisted request, uniqueness allows for revision and return time to be based on watch", + name: "failed put remains if there is a matching persisted request, uniqueness allows for revision to be based on watch", historyFunc: func(h *model.AppendableHistory) { h.AppendPut("key", "value", 100, 200, nil, errors.New("failed")) }, @@ -99,7 +99,7 @@ func TestPatchHistory(t *testing.T) { }, watchOperations: watchResponse(300, putEvent("key", "value", 2)), expectedRemainingOperations: []porcupine.Operation{ - {Return: 300, Output: model.MaybeEtcdResponse{Persisted: true, PersistedRevision: 2}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Persisted: true, PersistedRevision: 2}}, }, }, { @@ -172,7 +172,7 @@ func TestPatchHistory(t *testing.T) { }, }, { - name: "failed put with lease remains if there is a matching event, uniqueness allows for revision and return time to be based on watch", + name: "failed put with lease remains if there is a matching event, uniqueness allows for revision to be based on watch", historyFunc: func(h *model.AppendableHistory) { h.AppendPutWithLease("key", "value", 123, 1, 2, nil, errors.New("failed")) }, @@ -181,7 +181,7 @@ func TestPatchHistory(t *testing.T) { }, watchOperations: watchResponse(3, putEvent("key", "value", 2)), expectedRemainingOperations: []porcupine.Operation{ - {Return: 3, Output: model.MaybeEtcdResponse{Persisted: true, PersistedRevision: 2}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Persisted: true, PersistedRevision: 2}}, }, }, { diff --git a/tests/robustness/validate/validate_test.go b/tests/robustness/validate/validate_test.go index 73391712457a..22ff3509ac1e 100644 --- a/tests/robustness/validate/validate_test.go +++ b/tests/robustness/validate/validate_test.go @@ -49,6 +49,7 @@ func TestDataReports(t *testing.T) { t.Error(err) } result := ValidateAndReturnVisualize(zaptest.NewLogger(t), Config{}, reports, persistedRequests, 5*time.Minute) + err = result.Error() if err != nil { t.Error(err) } From a73e2fa9bfb3694eb29d9cd1f5a7a40e1578ed74 Mon Sep 17 00:00:00 2001 From: joshjms Date: Wed, 21 May 2025 11:10:56 +0800 Subject: [PATCH 0213/1068] dependency: bump github.com/prometheus/common from 0.63.0 to 0.64.0 Signed-off-by: joshjms --- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 13 files changed, 20 insertions(+), 20 deletions(-) diff --git a/client/v3/go.mod b/client/v3/go.mod index 82c4e53b97a6..5a7d68c9829e 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -29,7 +29,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.63.0 // indirect + github.com/prometheus/common v0.64.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 04ee92a631bd..dee69b948894 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -48,8 +48,8 @@ github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= -github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= +github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 040686a8cd9b..6444f2fc2aa5 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -63,8 +63,8 @@ github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= -github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= +github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index c9c29df8daf1..c681ed46e0fc 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -62,7 +62,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.63.0 // indirect + github.com/prometheus/common v0.64.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 4c8635d386b3..13b0e61937c5 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -72,8 +72,8 @@ github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= -github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= +github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/go.mod b/go.mod index e46f4ced7a3c..8dbe4877a0a2 100644 --- a/go.mod +++ b/go.mod @@ -72,7 +72,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.63.0 // indirect + github.com/prometheus/common v0.64.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect diff --git a/go.sum b/go.sum index 97be36a76fb3..62a4a8d4077d 100644 --- a/go.sum +++ b/go.sum @@ -111,8 +111,8 @@ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= -github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= +github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/server/go.mod b/server/go.mod index 00dfbd8f1916..8f161e957b02 100644 --- a/server/go.mod +++ b/server/go.mod @@ -61,7 +61,7 @@ require ( github.com/kylelemons/godebug v1.1.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/common v0.63.0 // indirect + github.com/prometheus/common v0.64.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.6 // indirect diff --git a/server/go.sum b/server/go.sum index 67d3e97be7e1..5d719b7cdb40 100644 --- a/server/go.sum +++ b/server/go.sum @@ -94,8 +94,8 @@ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= -github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= +github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/tests/go.mod b/tests/go.mod index f0d6637423d4..91dd6690eca3 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -27,7 +27,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/prometheus/client_golang v1.22.0 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.63.0 + github.com/prometheus/common v0.64.0 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 diff --git a/tests/go.sum b/tests/go.sum index d11f0718d014..2fb27a7fa1b2 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -117,8 +117,8 @@ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= -github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= +github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 2f257093750c..2a43fce42606 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -153,7 +153,7 @@ require ( github.com/polyfloyd/go-errorlint v1.7.1 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.63.0 // indirect + github.com/prometheus/common v0.64.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 2d8038629dec..a7ca568d5de9 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -356,8 +356,8 @@ github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= -github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= +github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo= From 44afa6eb2aa27453a97a839dd0d2473b80ae529e Mon Sep 17 00:00:00 2001 From: Nont Date: Tue, 20 May 2025 21:45:36 -0500 Subject: [PATCH 0214/1068] Add MultiOpTxn traffic Signed-off-by: Nont --- tests/robustness/traffic/etcd.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index d9e1ffae3b49..94277c1f6055 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -82,10 +82,11 @@ var ( // Please keep the sum of weights equal 100. requests: []random.ChoiceWeight[etcdRequestType]{ {Choice: Get, Weight: 35}, - {Choice: Put, Weight: 40}, + {Choice: Put, Weight: 35}, {Choice: StaleGet, Weight: 10}, {Choice: StaleList, Weight: 10}, {Choice: Delete, Weight: 5}, + {Choice: MultiOpTxn, Weight: 5}, }, } ) From 4359176d25cd8fbb0abeb68ddec4589701073db0 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 30 Mar 2025 20:28:31 +0200 Subject: [PATCH 0215/1068] Assume v2 store is always not nil Signed-off-by: Marek Siarkowicz --- server/etcdserver/api/membership/cluster.go | 35 +++++++------------ .../etcdserver/api/membership/cluster_test.go | 1 + .../api/membership/membership_test.go | 4 --- server/etcdserver/server_test.go | 1 + 4 files changed, 15 insertions(+), 26 deletions(-) diff --git a/server/etcdserver/api/membership/cluster.go b/server/etcdserver/api/membership/cluster.go index 15cb40672234..93db0c78a9b1 100644 --- a/server/etcdserver/api/membership/cluster.go +++ b/server/etcdserver/api/membership/cluster.go @@ -116,6 +116,7 @@ func NewCluster(lg *zap.Logger, opts ...ClusterOption) *RaftCluster { removed: make(map[types.ID]bool), downgradeInfo: &serverversion.DowngradeInfo{Enabled: false}, maxLearners: clOpts.maxLearners, + v2store: v2store.New(), } } @@ -399,9 +400,7 @@ func (c *RaftCluster) ValidateConfigurationChange(cc raftpb.ConfChange, shouldAp func (c *RaftCluster) AddMember(m *Member, shouldApplyV3 ShouldApplyV3) { c.Lock() defer c.Unlock() - if c.v2store != nil { - mustSaveMemberToStore(c.lg, c.v2store, m) - } + mustSaveMemberToStore(c.lg, c.v2store, m) if m.ID == c.localID { setIsLearnerMetric(m) @@ -437,9 +436,7 @@ func (c *RaftCluster) AddMember(m *Member, shouldApplyV3 ShouldApplyV3) { func (c *RaftCluster) RemoveMember(id types.ID, shouldApplyV3 ShouldApplyV3) { c.Lock() defer c.Unlock() - if c.v2store != nil { - mustDeleteMemberFromStore(c.lg, c.v2store, id) - } + mustDeleteMemberFromStore(c.lg, c.v2store, id) if shouldApplyV3 { c.be.MustDeleteMemberFromBackend(id) @@ -481,9 +478,7 @@ func (c *RaftCluster) UpdateAttributes(id types.ID, attr Attributes, shouldApply if m, ok := c.members[id]; ok { m.Attributes = attr - if c.v2store != nil { - mustUpdateMemberAttrInStore(c.lg, c.v2store, m) - } + mustUpdateMemberAttrInStore(c.lg, c.v2store, m) if shouldApplyV3 { c.be.MustSaveMemberToBackend(m) } @@ -513,11 +508,9 @@ func (c *RaftCluster) PromoteMember(id types.ID, shouldApplyV3 ShouldApplyV3) { c.Lock() defer c.Unlock() - if c.v2store != nil { - m := *(c.members[id]) - m.RaftAttributes.IsLearner = false - mustUpdateMemberInStore(c.lg, c.v2store, &m) - } + m := *(c.members[id]) + m.RaftAttributes.IsLearner = false + mustUpdateMemberInStore(c.lg, c.v2store, &m) if id == c.localID { isLearner.Set(0) @@ -547,11 +540,10 @@ func (c *RaftCluster) UpdateRaftAttributes(id types.ID, raftAttr RaftAttributes, c.Lock() defer c.Unlock() - if c.v2store != nil { - m := *(c.members[id]) - m.RaftAttributes = raftAttr - mustUpdateMemberInStore(c.lg, c.v2store, &m) - } + m := *(c.members[id]) + m.RaftAttributes = raftAttr + mustUpdateMemberInStore(c.lg, c.v2store, &m) + if shouldApplyV3 { c.members[id].RaftAttributes = raftAttr c.be.MustSaveMemberToBackend(c.members[id]) @@ -608,9 +600,8 @@ func (c *RaftCluster) SetVersion(ver *semver.Version, onSet func(*zap.Logger, *s c.version = ver sv := semver.Must(semver.NewVersion(version.Version)) serverversion.MustDetectDowngrade(c.lg, sv, c.version) - if c.v2store != nil { - mustSaveClusterVersionToStore(c.lg, c.v2store, ver) - } + mustSaveClusterVersionToStore(c.lg, c.v2store, ver) + if shouldApplyV3 { c.be.MustSaveClusterVersionToBackend(ver) } diff --git a/server/etcdserver/api/membership/cluster_test.go b/server/etcdserver/api/membership/cluster_test.go index ce05c79508b4..8e70cc08291b 100644 --- a/server/etcdserver/api/membership/cluster_test.go +++ b/server/etcdserver/api/membership/cluster_test.go @@ -667,6 +667,7 @@ func newTestCluster(tb testing.TB, membs []*Member) *RaftCluster { members: make(map[types.ID]*Member), removed: make(map[types.ID]bool), be: newMembershipBackend(), + v2store: v2store.New(), } for _, m := range membs { c.members[m.ID] = m diff --git a/server/etcdserver/api/membership/membership_test.go b/server/etcdserver/api/membership/membership_test.go index 4921ffa42ea6..3eb0d066af03 100644 --- a/server/etcdserver/api/membership/membership_test.go +++ b/server/etcdserver/api/membership/membership_test.go @@ -34,10 +34,6 @@ func TestAddRemoveMember(t *testing.T) { c.AddMember(newTestMember(18, nil, "node18", nil), true) c.RemoveMember(18, true) - // Skipping removal of already removed member - c.RemoveMember(17, true) - c.RemoveMember(18, true) - c.AddMember(newTestMember(19, nil, "node19", nil), true) // Recover from backend diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index 2a567ec6a937..f9753154a51a 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -1511,6 +1511,7 @@ func newTestCluster(tb testing.TB) *membership.RaftCluster { func newTestClusterWithBackend(tb testing.TB, membs []*membership.Member, be backend.Backend) *membership.RaftCluster { lg := zaptest.NewLogger(tb) c := membership.NewCluster(lg) + c.SetStore(v2store.New()) c.SetBackend(schema.NewMembershipBackend(lg, be)) for _, m := range membs { c.AddMember(m, true) From 0be7522272077efb7514be30e30c461e905aa49f Mon Sep 17 00:00:00 2001 From: redwrasse Date: Fri, 23 May 2025 09:57:17 -0700 Subject: [PATCH 0216/1068] adt: update docstrings for IntervalTree.Insert and IntervalTree.find to reflect modified algorithms. Signed-off-by: redwrasse --- pkg/adt/interval_tree.go | 40 ++++++++-------------------------------- 1 file changed, 8 insertions(+), 32 deletions(-) diff --git a/pkg/adt/interval_tree.go b/pkg/adt/interval_tree.go index 4de7ca480593..85542020f592 100644 --- a/pkg/adt/interval_tree.go +++ b/pkg/adt/interval_tree.go @@ -434,38 +434,11 @@ func (ivt *intervalTree) createIntervalNode(ivl Interval, val any) *intervalNode } } -// TODO: make this consistent with textbook implementation -// -// "Introduction to Algorithms" (Cormen et al, 3rd ed.), chapter 13.3, p315 -// -// RB-INSERT(T, z) -// -// y = T.nil -// x = T.root -// -// while x ≠ T.nil -// y = x -// if z.key < x.key -// x = x.left -// else -// x = x.right -// -// z.p = y -// -// if y == T.nil -// T.root = z -// else if z.key < y.key -// y.left = z -// else -// y.right = z -// -// z.left = T.nil -// z.right = T.nil -// z.color = RED -// -// RB-INSERT-FIXUP(T, z) - // Insert adds a node with the given interval into the tree. +// +// Cormen "Introduction to Algorithms", Chapter 14 Exercise 14.3.5. +// The algorithm follows Cormen "Introduction to Algorithms", Chapter 14 Exercise 14.3.5. +// for modifying an interval tree structure to support exact interval matching. func (ivt *intervalTree) Insert(ivl Interval, val any) { y := ivt.sentinel z := ivt.createIntervalNode(ivl, val) @@ -714,7 +687,10 @@ func (ivt *intervalTree) Visit(ivl Interval, ivv IntervalVisitor) { ivt.root.visit(&ivl, ivt.sentinel, func(n *intervalNode) bool { return ivv(&n.iv) }) } -// find the exact node for a given interval +// find the exact node for a given interval. The implementation follows +// Cormen "Introduction to Algorithms", Chapter 14 Exercise 14.3.5. for +// exact interval matching. The search runs in O(log n) time on an n-node +// interval tree. func (ivt *intervalTree) find(ivl Interval) *intervalNode { x := ivt.root // Search until hit sentinel or exact match. From 95e5bfe1c3243f9e8864f3e1bea8010005e9b5cd Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Sat, 24 May 2025 19:29:31 +0100 Subject: [PATCH 0217/1068] Remove the prefix '--experimental-' instead of '--experimental' from flag Signed-off-by: Benjamin Wang --- tests/framework/e2e/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/framework/e2e/config.go b/tests/framework/e2e/config.go index 5fb4c0fb5eb5..3cdc3f692b73 100644 --- a/tests/framework/e2e/config.go +++ b/tests/framework/e2e/config.go @@ -92,7 +92,7 @@ func convertFlags(args []string, ver *semver.Version) []string { } name := strings.TrimPrefix(kv[0], "--") - name = strings.TrimPrefix(name, "experimental") + name = strings.TrimPrefix(name, "experimental-") retArgs = append(retArgs, convertFlag(name, kv[1], ver)) } From 3d49a6644d68c2fcaef654e8752162be1e33a377 Mon Sep 17 00:00:00 2001 From: Nont Date: Thu, 22 May 2025 22:16:57 -0500 Subject: [PATCH 0218/1068] Add PutWithLease traffic Signed-off-by: Nont --- tests/robustness/traffic/etcd.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index 94277c1f6055..b2e753fe9943 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -81,12 +81,13 @@ var ( leaseTTL: DefaultLeaseTTL, // Please keep the sum of weights equal 100. requests: []random.ChoiceWeight[etcdRequestType]{ - {Choice: Get, Weight: 35}, + {Choice: Get, Weight: 30}, {Choice: Put, Weight: 35}, {Choice: StaleGet, Weight: 10}, {Choice: StaleList, Weight: 10}, {Choice: Delete, Weight: 5}, {Choice: MultiOpTxn, Weight: 5}, + {Choice: PutWithLease, Weight: 5}, }, } ) From 444150898ebb4f6a6a0deb9e902f22850d3a1914 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 23 May 2025 11:36:10 +0100 Subject: [PATCH 0219/1068] convert the flags in downgrade & upgrade e2e test Signed-off-by: Benjamin Wang --- tests/framework/e2e/cluster.go | 12 +++++- tests/framework/e2e/config.go | 66 ++++++++++++++++++++++++++++++++ tests/framework/e2e/downgrade.go | 10 +++++ 3 files changed, 87 insertions(+), 1 deletion(-) diff --git a/tests/framework/e2e/cluster.go b/tests/framework/e2e/cluster.go index 5ab95af1a4ee..52bd3c178a81 100644 --- a/tests/framework/e2e/cluster.go +++ b/tests/framework/e2e/cluster.go @@ -617,6 +617,16 @@ func (cfg *EtcdProcessClusterConfig) EtcdServerProcessConfig(tb testing.TB, i in } } + var ( + binaryVersion *semver.Version + err error + ) + if execPath != "" { + binaryVersion, err = GetVersionFromBinary(execPath) + if err != nil { + tb.Logf("Failed to get binary version from %s: %v", execPath, err) + } + } defaultValues := values(*embed.NewConfig()) overrideValues := values(cfg.ServerConfig) for flag, value := range overrideValues { @@ -626,7 +636,7 @@ func (cfg *EtcdProcessClusterConfig) EtcdServerProcessConfig(tb testing.TB, i in if strings.HasSuffix(flag, "snapshot-catchup-entries") && !CouldSetSnapshotCatchupEntries(execPath) { continue } - args = append(args, fmt.Sprintf("--%s=%s", flag, value)) + args = append(args, convertFlag(flag, value, binaryVersion)) } envVars := map[string]string{} maps.Copy(envVars, cfg.EnvVars) diff --git a/tests/framework/e2e/config.go b/tests/framework/e2e/config.go index 646a868e9ef3..5fb4c0fb5eb5 100644 --- a/tests/framework/e2e/config.go +++ b/tests/framework/e2e/config.go @@ -14,6 +14,15 @@ package e2e +import ( + "fmt" + "strings" + + "github.com/coreos/go-semver/semver" + + "go.etcd.io/etcd/api/v3/version" +) + type ClusterVersion string const ( @@ -33,3 +42,60 @@ func (cv ClusterVersion) String() string { type ClusterContext struct { Version ClusterVersion } + +var experimentalFlags = map[string]struct{}{ + "compact-hash-check-time": {}, + "corrupt-check-time": {}, + "compaction-batch-limit": {}, + "watch-progress-notify-interval": {}, + "warning-apply-duration": {}, + "bootstrap-defrag-threshold-megabytes": {}, + "memory-mlock": {}, + "snapshot-catchup-entries": {}, + "compaction-sleep-interval": {}, + "downgrade-check-time": {}, + "peer-skip-client-san-verification": {}, + "enable-distributed-tracing": {}, + "distributed-tracing-address": {}, + "distributed-tracing-service-name": {}, + "distributed-tracing-instance-id": {}, + "distributed-tracing-sampling-rate": {}, +} + +// convertFlag converts between experimental and non-experimental flags. +// All experimental flags have been removed in version 3.7, but versions prior +// to 3.6 only support experimental flags. The robustness tests use the same +// code from the main branch to test all previously supported releases, so we +// need to convert flags accordingly based on the binary version. +func convertFlag(name, value string, ver *semver.Version) string { + // For versions >= 3.6, use the normal (non-experimental) flag. + if ver == nil || !ver.LessThan(version.V3_6) { + return fmt.Sprintf("--%s=%s", name, value) + } + + // For versions < 3.6, use the experimental flag if it exists in `experimentalFlags` + if _, ok := experimentalFlags[name]; ok { + return fmt.Sprintf("--experimental-%s=%s", name, value) + } + + return fmt.Sprintf("--%s=%s", name, value) +} + +func convertFlags(args []string, ver *semver.Version) []string { + var retArgs []string + + for _, arg := range args { + kv := strings.Split(arg, "=") + if len(kv) != 2 { + retArgs = append(retArgs, arg) + continue + } + + name := strings.TrimPrefix(kv[0], "--") + name = strings.TrimPrefix(name, "experimental") + + retArgs = append(retArgs, convertFlag(name, kv[1], ver)) + } + + return retArgs +} diff --git a/tests/framework/e2e/downgrade.go b/tests/framework/e2e/downgrade.go index 432a422f0431..ecc22d591847 100644 --- a/tests/framework/e2e/downgrade.go +++ b/tests/framework/e2e/downgrade.go @@ -147,6 +147,11 @@ func DowngradeUpgradeMembersByID(t *testing.T, lg *zap.Logger, clus *EtcdProcess newExecPath = BinPath.EtcdLastRelease } + binaryVersion, err := GetVersionFromBinary(newExecPath) + if err != nil { + return fmt.Errorf("failed to get binary version from %s: %w", newExecPath, err) + } + g := new(errgroup.Group) for _, memberID := range membersToChange { member := clus.Procs[memberID] @@ -157,6 +162,11 @@ func DowngradeUpgradeMembersByID(t *testing.T, lg *zap.Logger, clus *EtcdProcess if err := member.Stop(); err != nil { return err } + + // When we downgrade or upgrade a member, we need to re-generate the flags, to convert some non-experimental + // flags to experimental flags, or vice verse. + member.Config().Args = convertFlags(member.Config().Args, binaryVersion) + member.Config().ExecPath = newExecPath lg.Info("Restarting member", zap.String("member", member.Config().Name)) // We shouldn't block on waiting for the member to be ready, From 64f3951bf0ec69213dbe232de995dbd2d60a59e3 Mon Sep 17 00:00:00 2001 From: joshjms Date: Thu, 22 May 2025 01:42:32 +0800 Subject: [PATCH 0220/1068] robustness: Add key store to achieve unique keys for delete operations The issue is that the same keys are often reused for delete operations (i.e. key0-key9). This slows down linearization. The key store allows the clients to maintain a pool of keys which can be rotated probabilistically during delete operations. Signed-off-by: joshjms --- .../test-template/robustness/traffic/main.go | 2 + tests/robustness/traffic/etcd.go | 41 +++---- tests/robustness/traffic/key_store.go | 106 ++++++++++++++++++ tests/robustness/traffic/kubernetes.go | 2 +- tests/robustness/traffic/traffic.go | 7 +- 5 files changed, 131 insertions(+), 27 deletions(-) create mode 100644 tests/robustness/traffic/key_store.go diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 0ef96ac20249..b1d9d8fa4e43 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -119,6 +119,7 @@ func simulateTraffic(ctx context.Context, hosts []string, ids identity.Provider, concurrencyLimiter := traffic.NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) finish := closeAfter(ctx, duration) reports := []report.ClientReport{} + keyStore := traffic.NewKeyStore(profile.ClientCount, "key") for i := 0; i < profile.ClientCount; i++ { c := connect([]string{hosts[i%len(hosts)]}, ids, baseTime) defer c.Close() @@ -131,6 +132,7 @@ func simulateTraffic(ctx context.Context, hosts []string, ids identity.Provider, ids, storage, concurrencyLimiter, + keyStore, finish, ) mux.Lock() diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index d6f2d7f50f5d..be2c6d750e64 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -121,13 +121,13 @@ func (t etcdTraffic) Name() string { return "Etcd" } -func (t etcdTraffic) RunTrafficLoop(ctx context.Context, c *client.RecordingClient, limiter *rate.Limiter, ids identity.Provider, lm identity.LeaseIDStorage, nonUniqueWriteLimiter ConcurrencyLimiter, finish <-chan struct{}) { +func (t etcdTraffic) RunTrafficLoop(ctx context.Context, c *client.RecordingClient, limiter *rate.Limiter, ids identity.Provider, lm identity.LeaseIDStorage, nonUniqueWriteLimiter ConcurrencyLimiter, keyStore *keyStore, finish <-chan struct{}) { lastOperationSucceeded := true var lastRev int64 var requestType etcdRequestType client := etcdTrafficClient{ etcdTraffic: t, - keyPrefix: "key", + keyStore: keyStore, client: c, limiter: limiter, idProvider: ids, @@ -208,7 +208,7 @@ func filterOutNonUniqueEtcdWrites(choices []random.ChoiceWeight[etcdRequestType] type etcdTrafficClient struct { etcdTraffic - keyPrefix string + keyStore *keyStore client *client.RecordingClient limiter *rate.Limiter idProvider identity.Provider @@ -223,57 +223,57 @@ func (c etcdTrafficClient) Request(ctx context.Context, request etcdRequestType, switch request { case StaleGet: var resp *clientv3.GetResponse - resp, err = c.client.Get(opCtx, c.randomKey(), clientv3.WithRev(lastRev)) + resp, err = c.client.Get(opCtx, c.keyStore.GetKey(), clientv3.WithRev(lastRev)) if err == nil { rev = resp.Header.Revision } case Get: var resp *clientv3.GetResponse - resp, err = c.client.Get(opCtx, c.randomKey(), clientv3.WithRev(0)) + resp, err = c.client.Get(opCtx, c.keyStore.GetKey(), clientv3.WithRev(0)) if err == nil { rev = resp.Header.Revision } case List: var resp *clientv3.GetResponse - resp, err = c.client.Range(ctx, c.keyPrefix, clientv3.GetPrefixRangeEnd(c.keyPrefix), 0, limit) + resp, err = c.client.Range(ctx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), 0, limit) if resp != nil { rev = resp.Header.Revision } case StaleList: var resp *clientv3.GetResponse - resp, err = c.client.Range(ctx, c.keyPrefix, clientv3.GetPrefixRangeEnd(c.keyPrefix), lastRev, limit) + resp, err = c.client.Range(ctx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), lastRev, limit) if resp != nil { rev = resp.Header.Revision } case Put: var resp *clientv3.PutResponse - resp, err = c.client.Put(opCtx, c.randomKey(), fmt.Sprintf("%d", c.idProvider.NewRequestID())) + resp, err = c.client.Put(opCtx, c.keyStore.GetKey(), fmt.Sprintf("%d", c.idProvider.NewRequestID())) if resp != nil { rev = resp.Header.Revision } case LargePut: var resp *clientv3.PutResponse - resp, err = c.client.Put(opCtx, c.randomKey(), random.RandString(c.largePutSize)) + resp, err = c.client.Put(opCtx, c.keyStore.GetKey(), random.RandString(c.largePutSize)) if resp != nil { rev = resp.Header.Revision } case Delete: var resp *clientv3.DeleteResponse - resp, err = c.client.Delete(opCtx, c.randomKey()) + resp, err = c.client.Delete(opCtx, c.keyStore.GetKeyForDelete()) if resp != nil { rev = resp.Header.Revision } case MultiOpTxn: var resp *clientv3.TxnResponse resp, err = c.client.Txn(opCtx).Then( - c.pickMultiTxnOps()..., + c.pickMultiTxnOps(c.keyStore)..., ).Commit() if resp != nil { rev = resp.Header.Revision } case CompareAndSet: var kv *mvccpb.KeyValue - key := c.randomKey() + key := c.keyStore.GetKey() var resp *clientv3.GetResponse resp, err = c.client.Get(opCtx, key, clientv3.WithRev(0)) if err == nil { @@ -315,7 +315,7 @@ func (c etcdTrafficClient) Request(ctx context.Context, request etcdRequestType, if leaseID != 0 { putCtx, putCancel := context.WithTimeout(ctx, RequestTimeout) var resp *clientv3.PutResponse - resp, err = c.client.PutWithLease(putCtx, c.randomKey(), fmt.Sprintf("%d", c.idProvider.NewRequestID()), leaseID) + resp, err = c.client.PutWithLease(putCtx, c.keyStore.GetKey(), fmt.Sprintf("%d", c.idProvider.NewRequestID()), leaseID) putCancel() if resp != nil { rev = resp.Header.Revision @@ -346,8 +346,7 @@ func (c etcdTrafficClient) Request(ctx context.Context, request etcdRequestType, return rev, err } -func (c etcdTrafficClient) pickMultiTxnOps() (ops []clientv3.Op) { - keys := rand.Perm(c.keyCount) +func (c etcdTrafficClient) pickMultiTxnOps(keyStore *keyStore) (ops []clientv3.Op) { opTypes := make([]model.OperationType, 4) atLeastOnePut := false @@ -362,8 +361,10 @@ func (c etcdTrafficClient) pickMultiTxnOps() (ops []clientv3.Op) { opTypes[0] = model.PutOperation } + keys := keyStore.GetKeysForMultiTxnOps(opTypes) + for i, opType := range opTypes { - key := c.key(keys[i]) + key := keys[i] switch opType { case model.RangeOperation: ops = append(ops, clientv3.OpGet(key)) @@ -379,14 +380,6 @@ func (c etcdTrafficClient) pickMultiTxnOps() (ops []clientv3.Op) { return ops } -func (c etcdTrafficClient) randomKey() string { - return c.key(rand.Int()) -} - -func (c etcdTrafficClient) key(i int) string { - return fmt.Sprintf("%s%d", c.keyPrefix, i%c.keyCount) -} - func (t etcdTraffic) pickOperationType() model.OperationType { roll := rand.Int() % 100 if roll < 10 { diff --git a/tests/robustness/traffic/key_store.go b/tests/robustness/traffic/key_store.go new file mode 100644 index 000000000000..19cd8cc189e9 --- /dev/null +++ b/tests/robustness/traffic/key_store.go @@ -0,0 +1,106 @@ +// Copyright 2023 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package traffic + +import ( + "fmt" + "math/rand" + "sync" + + "go.etcd.io/etcd/tests/v3/robustness/model" +) + +// Stores the key pool to use for operations. This allows keys used in Put and Delete operations to be more unique by probabilistically swapping out used keys. +type keyStore struct { + mu sync.Mutex + + counter int + keys []string + keyPrefix string +} + +func NewKeyStore(size int, keyPrefix string) *keyStore { + k := &keyStore{ + keys: make([]string, size), + counter: 0, + keyPrefix: keyPrefix, + } + + // Fill with default values i.e. key0-key9 + for ; k.counter < len(k.keys); k.counter++ { + k.keys[k.counter] = fmt.Sprintf("%s%d", k.keyPrefix, k.counter) + } + + return k +} + +func (k *keyStore) GetKey() string { + k.mu.Lock() + defer k.mu.Unlock() + + useKey := k.keys[rand.Intn(len(k.keys))] + + return useKey +} + +func (k *keyStore) GetKeyForDelete() string { + k.mu.Lock() + defer k.mu.Unlock() + + useKeyIndex := rand.Intn(len(k.keys)) + useKey := k.keys[useKeyIndex] + + k.replaceKey(useKeyIndex) + + return useKey +} + +func (k *keyStore) GetKeysForMultiTxnOps(ops []model.OperationType) []string { + k.mu.Lock() + defer k.mu.Unlock() + + numOps := len(ops) + + if numOps > len(k.keys) { + panic("GetKeysForMultiTxnOps: number of operations is more than the key pool size") + } + + keys := make([]string, numOps) + + permutedKeyIndexes := rand.Perm(len(k.keys)) + for i, op := range ops { + keys[i] = k.keys[permutedKeyIndexes[i]] + + if op == model.DeleteOperation { + k.replaceKey(permutedKeyIndexes[i]) + } + } + + return keys +} + +func (k *keyStore) GetPrefix() string { + k.mu.Lock() + defer k.mu.Unlock() + + return k.keyPrefix +} + +func (k *keyStore) replaceKey(index int) { + if rand.Intn(100) < 90 { + k.keys[index] = fmt.Sprintf("%s%d", k.keyPrefix, k.counter) + k.counter++ + } +} diff --git a/tests/robustness/traffic/kubernetes.go b/tests/robustness/traffic/kubernetes.go index fe1386fa243c..8d0373919a79 100644 --- a/tests/robustness/traffic/kubernetes.go +++ b/tests/robustness/traffic/kubernetes.go @@ -71,7 +71,7 @@ func (t kubernetesTraffic) ExpectUniqueRevision() bool { return true } -func (t kubernetesTraffic) RunTrafficLoop(ctx context.Context, c *client.RecordingClient, limiter *rate.Limiter, ids identity.Provider, lm identity.LeaseIDStorage, nonUniqueWriteLimiter ConcurrencyLimiter, finish <-chan struct{}) { +func (t kubernetesTraffic) RunTrafficLoop(ctx context.Context, c *client.RecordingClient, limiter *rate.Limiter, ids identity.Provider, lm identity.LeaseIDStorage, nonUniqueWriteLimiter ConcurrencyLimiter, keyStore *keyStore, finish <-chan struct{}) { kc := kubernetes.Client{Client: &clientv3.Client{KV: c}} s := newStorage() keyPrefix := "/registry/" + t.resource + "/" diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index 43ea6ddc27ce..96a67ee25380 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -70,6 +70,9 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 wg := sync.WaitGroup{} nonUniqueWriteLimiter := NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) finish := make(chan struct{}) + + keyStore := NewKeyStore(10, "key") + lg.Info("Start traffic") startTime := time.Since(baseTime) for i := 0; i < profile.ClientCount; i++ { @@ -80,7 +83,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 defer wg.Done() defer c.Close() - traffic.RunTrafficLoop(ctx, c, limiter, ids, lm, nonUniqueWriteLimiter, finish) + traffic.RunTrafficLoop(ctx, c, limiter, ids, lm, nonUniqueWriteLimiter, keyStore, finish) mux.Lock() reports = append(reports, c.Report()) mux.Unlock() @@ -199,7 +202,7 @@ func (p Profile) WithCompactionPeriod(cp time.Duration) Profile { } type Traffic interface { - RunTrafficLoop(ctx context.Context, c *client.RecordingClient, qpsLimiter *rate.Limiter, ids identity.Provider, lm identity.LeaseIDStorage, nonUniqueWriteLimiter ConcurrencyLimiter, finish <-chan struct{}) + RunTrafficLoop(ctx context.Context, c *client.RecordingClient, qpsLimiter *rate.Limiter, ids identity.Provider, lm identity.LeaseIDStorage, nonUniqueWriteLimiter ConcurrencyLimiter, keyStore *keyStore, finish <-chan struct{}) RunCompactLoop(ctx context.Context, c *client.RecordingClient, period time.Duration, finish <-chan struct{}) ExpectUniqueRevision() bool } From 5bb6af995c28e2849a30436c8015b10a80f033a5 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Thu, 22 May 2025 19:19:15 +0800 Subject: [PATCH 0221/1068] remove deprecated SyncTicker in EtcdServer Signed-off-by: shenmu.wy --- server/etcdserver/raft_test.go | 9 ++++---- server/etcdserver/server.go | 4 ---- server/etcdserver/server_test.go | 31 +++++++++----------------- tests/framework/integration/cluster.go | 1 - 4 files changed, 14 insertions(+), 31 deletions(-) diff --git a/server/etcdserver/raft_test.go b/server/etcdserver/raft_test.go index 2cfa4816232b..e604a88a02f4 100644 --- a/server/etcdserver/raft_test.go +++ b/server/etcdserver/raft_test.go @@ -278,11 +278,10 @@ func TestProcessDuplicatedAppRespMessage(t *testing.T) { }) s := &EtcdServer{ - lgMu: new(sync.RWMutex), - lg: zaptest.NewLogger(t), - r: *r, - cluster: cl, - SyncTicker: &time.Ticker{}, + lgMu: new(sync.RWMutex), + lg: zaptest.NewLogger(t), + r: *r, + cluster: cl, } s.start() diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index fa24cd7a3dc4..34aa56d81140 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -267,7 +267,6 @@ type EtcdServer struct { stats *stats.ServerStats lstats *stats.LeaderStats - SyncTicker *time.Ticker // compactor is used to auto-compact the KV. compactor v3compactor.Compactor @@ -334,7 +333,6 @@ func NewServer(cfg config.ServerConfig) (srv *EtcdServer, err error) { cluster: b.cluster.cl, stats: sstats, lstats: lstats, - SyncTicker: time.NewTicker(500 * time.Millisecond), peerRt: b.prt, reqIDGen: idutil.NewGenerator(uint16(b.cluster.nodeID), time.Now()), AccessController: &AccessController{CORS: cfg.CORS, HostWhitelist: cfg.HostWhitelist}, @@ -832,8 +830,6 @@ func (s *EtcdServer) run() { // wait for goroutines before closing raft so wal stays open s.wg.Wait() - s.SyncTicker.Stop() - // must stop raft after scheduler-- etcdserver can leak rafthttp pipelines // by adding a peer after raft stops the transport s.r.stop() diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index 7ea6cb09556a..2a567ec6a937 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -105,7 +105,6 @@ func TestApplyRepeat(t *testing.T) { v2store: st, cluster: cl, reqIDGen: idutil.NewGenerator(0, time.Time{}), - SyncTicker: &time.Ticker{}, consistIndex: cindex.NewFakeConsistentIndex(0), uberApply: uberApplierMock{}, } @@ -791,7 +790,6 @@ func TestSnapshotOrdering(t *testing.T) { v2store: st, snapshotter: snap.New(lg, snapdir), cluster: cl, - SyncTicker: &time.Ticker{}, consistIndex: ci, beHooks: serverstorage.NewBackendHooks(lg, ci), } @@ -886,7 +884,6 @@ func TestConcurrentApplyAndSnapshotV3(t *testing.T) { v2store: st, snapshotter: snap.New(lg, testdir), cluster: cl, - SyncTicker: &time.Ticker{}, consistIndex: ci, beHooks: serverstorage.NewBackendHooks(lg, ci), firstCommitInTerm: notify.NewNotifier(), @@ -981,7 +978,6 @@ func TestAddMember(t *testing.T) { v2store: st, cluster: cl, reqIDGen: idutil.NewGenerator(0, time.Time{}), - SyncTicker: &time.Ticker{}, consistIndex: cindex.NewFakeConsistentIndex(0), beHooks: serverstorage.NewBackendHooks(lg, nil), } @@ -1038,7 +1034,6 @@ func TestProcessIgnoreMismatchMessage(t *testing.T) { v2store: st, cluster: cl, reqIDGen: idutil.NewGenerator(0, time.Time{}), - SyncTicker: &time.Ticker{}, consistIndex: cindex.NewFakeConsistentIndex(0), beHooks: serverstorage.NewBackendHooks(lg, nil), } @@ -1088,7 +1083,6 @@ func TestRemoveMember(t *testing.T) { v2store: st, cluster: cl, reqIDGen: idutil.NewGenerator(0, time.Time{}), - SyncTicker: &time.Ticker{}, consistIndex: cindex.NewFakeConsistentIndex(0), beHooks: serverstorage.NewBackendHooks(lg, nil), } @@ -1137,7 +1131,6 @@ func TestUpdateMember(t *testing.T) { v2store: st, cluster: cl, reqIDGen: idutil.NewGenerator(0, time.Time{}), - SyncTicker: &time.Ticker{}, consistIndex: cindex.NewFakeConsistentIndex(0), beHooks: serverstorage.NewBackendHooks(lg, nil), } @@ -1182,7 +1175,6 @@ func TestPublishV3(t *testing.T) { cluster: &membership.RaftCluster{}, w: w, reqIDGen: idutil.NewGenerator(0, time.Time{}), - SyncTicker: &time.Ticker{}, authStore: auth.NewAuthStore(lg, schema.NewAuthBackend(lg, be), nil, 0), be: be, ctx: ctx, @@ -1216,17 +1208,16 @@ func TestPublishV3Stopped(t *testing.T) { transport: newNopTransporter(), }) srv := &EtcdServer{ - lgMu: new(sync.RWMutex), - lg: zaptest.NewLogger(t), - Cfg: config.ServerConfig{Logger: zaptest.NewLogger(t), TickMs: 1, SnapshotCatchUpEntries: DefaultSnapshotCatchUpEntries}, - r: *r, - cluster: &membership.RaftCluster{}, - w: mockwait.NewNop(), - done: make(chan struct{}), - stopping: make(chan struct{}), - stop: make(chan struct{}), - reqIDGen: idutil.NewGenerator(0, time.Time{}), - SyncTicker: &time.Ticker{}, + lgMu: new(sync.RWMutex), + lg: zaptest.NewLogger(t), + Cfg: config.ServerConfig{Logger: zaptest.NewLogger(t), TickMs: 1, SnapshotCatchUpEntries: DefaultSnapshotCatchUpEntries}, + r: *r, + cluster: &membership.RaftCluster{}, + w: mockwait.NewNop(), + done: make(chan struct{}), + stopping: make(chan struct{}), + stop: make(chan struct{}), + reqIDGen: idutil.NewGenerator(0, time.Time{}), ctx: ctx, cancel: cancel, @@ -1255,7 +1246,6 @@ func TestPublishV3Retry(t *testing.T) { attributes: membership.Attributes{Name: "node1", ClientURLs: []string{"http://a", "http://b"}}, cluster: &membership.RaftCluster{}, reqIDGen: idutil.NewGenerator(0, time.Time{}), - SyncTicker: &time.Ticker{}, authStore: auth.NewAuthStore(lg, schema.NewAuthBackend(lg, be), nil, 0), be: be, ctx: ctx, @@ -1305,7 +1295,6 @@ func TestUpdateVersionV3(t *testing.T) { cluster: &membership.RaftCluster{}, w: w, reqIDGen: idutil.NewGenerator(0, time.Time{}), - SyncTicker: &time.Ticker{}, authStore: auth.NewAuthStore(lg, schema.NewAuthBackend(lg, be), nil, 0), be: be, diff --git a/tests/framework/integration/cluster.go b/tests/framework/integration/cluster.go index 4ff6d83edd5a..e4d7620ac4a5 100644 --- a/tests/framework/integration/cluster.go +++ b/tests/framework/integration/cluster.go @@ -971,7 +971,6 @@ func (m *Member) Launch() error { if m.Server, err = etcdserver.NewServer(m.ServerConfig); err != nil { return fmt.Errorf("failed to initialize the etcd server: %w", err) } - m.Server.SyncTicker = time.NewTicker(500 * time.Millisecond) m.Server.Start() var peerTLScfg *tls.Config From 9276e2fc37079dc666ac32f2009d742a6abff886 Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Fri, 23 May 2025 08:53:53 -0700 Subject: [PATCH 0222/1068] update go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc to v0.61.0 Signed-off-by: Davanum Srinivas --- api/go.mod | 6 +++--- api/go.sum | 20 ++++++++++---------- client/v3/go.mod | 6 +++--- client/v3/go.sum | 20 ++++++++++---------- etcdctl/go.mod | 2 +- etcdctl/go.sum | 20 ++++++++++---------- etcdutl/go.mod | 12 ++++++------ etcdutl/go.sum | 24 ++++++++++++------------ go.mod | 12 ++++++------ go.sum | 24 ++++++++++++------------ pkg/go.mod | 6 +++--- pkg/go.sum | 20 ++++++++++---------- server/go.mod | 12 ++++++------ server/go.sum | 24 ++++++++++++------------ tests/go.mod | 12 ++++++------ tests/go.sum | 24 ++++++++++++------------ tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 6 +++--- tools/testgrid-analysis/go.sum | 20 ++++++++++---------- 20 files changed, 138 insertions(+), 138 deletions(-) diff --git a/api/go.mod b/api/go.mod index d3af6bf2d4eb..4efb08d7b09d 100644 --- a/api/go.mod +++ b/api/go.mod @@ -19,12 +19,12 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.35.0 // indirect + go.opentelemetry.io/otel v1.36.0 // indirect + go.opentelemetry.io/otel/sdk v1.36.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index c3ba2478205d..e330112aeaf7 100644 --- a/api/go.sum +++ b/api/go.sum @@ -32,16 +32,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -75,8 +75,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/client/v3/go.mod b/client/v3/go.mod index 5a7d68c9829e..ba10784d23f4 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -31,14 +31,14 @@ require ( github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.64.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect + go.opentelemetry.io/otel/metric v1.36.0 // indirect + go.opentelemetry.io/otel/trace v1.36.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index dee69b948894..c6cfe2b38d53 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -60,16 +60,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= 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= @@ -109,8 +109,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index e64be6ff00f1..4eb7964139f3 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -41,7 +41,7 @@ require ( golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 6444f2fc2aa5..02f58d41b8f8 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -83,16 +83,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= 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= @@ -135,8 +135,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index c681ed46e0fc..7153ff1097c4 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -72,13 +72,13 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect + go.opentelemetry.io/otel v1.36.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect + go.opentelemetry.io/otel/metric v1.36.0 // indirect + go.opentelemetry.io/otel/sdk v1.36.0 // indirect + go.opentelemetry.io/otel/trace v1.36.0 // indirect go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.38.0 // indirect @@ -87,7 +87,7 @@ require ( golang.org/x/text v0.25.0 // indirect golang.org/x/time v0.11.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/grpc v1.72.1 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 13b0e61937c5..1a0594c6e2c5 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -106,22 +106,22 @@ 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -171,8 +171,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/go.mod b/go.mod index 8dbe4877a0a2..2b450ff9ce48 100644 --- a/go.mod +++ b/go.mod @@ -82,13 +82,13 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect + go.opentelemetry.io/otel v1.36.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect + go.opentelemetry.io/otel/metric v1.36.0 // indirect + go.opentelemetry.io/otel/sdk v1.36.0 // indirect + go.opentelemetry.io/otel/trace v1.36.0 // indirect go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.38.0 // indirect @@ -96,7 +96,7 @@ require ( golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect diff --git a/go.sum b/go.sum index 62a4a8d4077d..6b6d5e3b81ee 100644 --- a/go.sum +++ b/go.sum @@ -151,22 +151,22 @@ 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -242,8 +242,8 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/pkg/go.mod b/pkg/go.mod index 2b7a2560485c..ed27778fbfe5 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -21,13 +21,13 @@ require ( github.com/google/go-cmp v0.7.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.35.0 // indirect + go.opentelemetry.io/otel v1.36.0 // indirect + go.opentelemetry.io/otel/sdk v1.36.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index 326a21867de5..a74117318d4d 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -37,16 +37,16 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= 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= @@ -59,8 +59,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/server/go.mod b/server/go.mod index 8f161e957b02..47e309639896 100644 --- a/server/go.mod +++ b/server/go.mod @@ -32,10 +32,10 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 - go.opentelemetry.io/otel v1.35.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 + go.opentelemetry.io/otel v1.36.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 - go.opentelemetry.io/otel/sdk v1.35.0 + go.opentelemetry.io/otel/sdk v1.36.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.38.0 golang.org/x/net v0.40.0 @@ -67,13 +67,13 @@ require ( github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect + go.opentelemetry.io/otel/metric v1.36.0 // indirect + go.opentelemetry.io/otel/trace v1.36.0 // indirect go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect ) diff --git a/server/go.sum b/server/go.sum index 5d719b7cdb40..a5f3d5c0130f 100644 --- a/server/go.sum +++ b/server/go.sum @@ -129,22 +129,22 @@ 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -219,8 +219,8 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/tests/go.mod b/tests/go.mod index 91dd6690eca3..c0e90f1d36b8 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -39,10 +39,10 @@ require ( go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 - go.opentelemetry.io/otel v1.35.0 - go.opentelemetry.io/otel/sdk v1.35.0 - go.opentelemetry.io/otel/trace v1.35.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 + go.opentelemetry.io/otel v1.36.0 + go.opentelemetry.io/otel/sdk v1.36.0 + go.opentelemetry.io/otel/trace v1.36.0 go.opentelemetry.io/proto/otlp v1.6.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.38.0 @@ -92,13 +92,13 @@ require ( go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect + go.opentelemetry.io/otel/metric v1.36.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect diff --git a/tests/go.sum b/tests/go.sum index 2fb27a7fa1b2..514bf0111126 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -157,22 +157,22 @@ 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -248,8 +248,8 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 2a43fce42606..823fb2b07b07 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -223,7 +223,7 @@ require ( golang.org/x/text v0.25.0 // indirect golang.org/x/tools v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/grpc v1.72.1 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index a7ca568d5de9..8a8e2b25808d 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -686,8 +686,8 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 4ac797991852..cadbdac10ad8 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -16,11 +16,11 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.6 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.35.0 // indirect + go.opentelemetry.io/otel v1.36.0 // indirect + go.opentelemetry.io/otel/sdk v1.36.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/grpc v1.72.1 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 0aeacd1fbd08..b50f4fd9f1b8 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1180,16 +1180,16 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -1841,8 +1841,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= From 5b00ae51a63acc1adfafe55efd71ec7858eb4b3d Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 23 May 2025 10:40:59 +0100 Subject: [PATCH 0223/1068] Move parseArgs into e2e framework Signed-off-by: Benjamin Wang --- tests/e2e/ctl_v3_member_no_proxy_test.go | 4 ++-- tests/e2e/ctl_v3_snapshot_test.go | 7 ++----- tests/e2e/utils.go | 10 ---------- tests/framework/e2e/cluster.go | 12 +++++++++++- tests/framework/e2e/cluster_test.go | 3 +-- 5 files changed, 16 insertions(+), 20 deletions(-) diff --git a/tests/e2e/ctl_v3_member_no_proxy_test.go b/tests/e2e/ctl_v3_member_no_proxy_test.go index 6f1aa28c4134..983d4b356d9f 100644 --- a/tests/e2e/ctl_v3_member_no_proxy_test.go +++ b/tests/e2e/ctl_v3_member_no_proxy_test.go @@ -78,7 +78,7 @@ func TestMemberReplace(t *testing.T) { removedMemberPeerURL := member.Config().PeerURL.String() _, err = cc.MemberAdd(ctx, memberName, []string{removedMemberPeerURL}) require.NoError(t, err) - err = patchArgs(member.Config().Args, "initial-cluster-state", "existing") + err = e2e.PatchArgs(member.Config().Args, "initial-cluster-state", "existing") require.NoError(t, err) // Sleep 100ms to bypass the known issue https://github.com/etcd-io/etcd/issues/16687. @@ -146,7 +146,7 @@ func TestMemberReplaceWithLearner(t *testing.T) { _, err = cc.MemberAddAsLearner(ctx, memberName, []string{removedMemberPeerURL}) require.NoError(t, err) - err = patchArgs(member.Config().Args, "initial-cluster-state", "existing") + err = e2e.PatchArgs(member.Config().Args, "initial-cluster-state", "existing") require.NoError(t, err) // Sleep 100ms to bypass the known issue https://github.com/etcd-io/etcd/issues/16687. diff --git a/tests/e2e/ctl_v3_snapshot_test.go b/tests/e2e/ctl_v3_snapshot_test.go index cbf6dee5e57b..c5346fc595ca 100644 --- a/tests/e2e/ctl_v3_snapshot_test.go +++ b/tests/e2e/ctl_v3_snapshot_test.go @@ -365,11 +365,8 @@ func TestRestoreCompactionRevBump(t *testing.T) { t.Log("(Re)starting the etcd member using the restored snapshot...") epc.Procs[0].Config().DataDirPath = newDataDir - for i := range epc.Procs[0].Config().Args { - if epc.Procs[0].Config().Args[i] == "--data-dir" { - epc.Procs[0].Config().Args[i+1] = newDataDir - } - } + err = e2e.PatchArgs(epc.Procs[0].Config().Args, "data-dir", newDataDir) + require.NoError(t, err) // Verify that initial snapshot is created by the restore operation verifySnapshotMembers(t, epc, membersBefore) diff --git a/tests/e2e/utils.go b/tests/e2e/utils.go index 3f4ca015bc75..9eb7e0ec2c30 100644 --- a/tests/e2e/utils.go +++ b/tests/e2e/utils.go @@ -145,16 +145,6 @@ func getMemberIDByName(ctx context.Context, c *e2e.EtcdctlV3, name string) (id u return 0, false, nil } -func patchArgs(args []string, flag, newValue string) error { - for i, arg := range args { - if strings.Contains(arg, flag) { - args[i] = fmt.Sprintf("--%s=%s", flag, newValue) - return nil - } - } - return fmt.Errorf("--%s flag not found", flag) -} - func generateCertsForIPs(tempDir string, ips []net.IP) (caFile string, certFiles []string, keyFiles []string, err error) { ca := &x509.Certificate{ SerialNumber: big.NewInt(1001), diff --git a/tests/framework/e2e/cluster.go b/tests/framework/e2e/cluster.go index a4705d6acd22..5ab95af1a4ee 100644 --- a/tests/framework/e2e/cluster.go +++ b/tests/framework/e2e/cluster.go @@ -573,7 +573,7 @@ func (cfg *EtcdProcessClusterConfig) EtcdServerProcessConfig(tb testing.TB, i in "--listen-peer-urls=" + peerListenURL.String(), "--initial-advertise-peer-urls=" + peerAdvertiseURL.String(), "--initial-cluster-token=" + cfg.ServerConfig.InitialClusterToken, - "--data-dir", dataDirPath, + "--data-dir=" + dataDirPath, "--snapshot-count=" + fmt.Sprintf("%d", cfg.ServerConfig.SnapshotCount), } var clientHTTPURL string @@ -932,6 +932,16 @@ func (epc *EtcdProcessCluster) UpdateProcOptions(i int, tb testing.TB, opts ...E return nil } +func PatchArgs(args []string, flag, newValue string) error { + for i, arg := range args { + if strings.Contains(arg, flag) { + args[i] = fmt.Sprintf("--%s=%s", flag, newValue) + return nil + } + } + return fmt.Errorf("--%s flag not found", flag) +} + func (epc *EtcdProcessCluster) Start(ctx context.Context) error { return epc.start(func(ep EtcdProcess) error { return ep.Start(ctx) }) } diff --git a/tests/framework/e2e/cluster_test.go b/tests/framework/e2e/cluster_test.go index 5880bd38726e..1b45c0b06c16 100644 --- a/tests/framework/e2e/cluster_test.go +++ b/tests/framework/e2e/cluster_test.go @@ -43,8 +43,7 @@ func TestEtcdServerProcessConfig(t *testing.T) { "--listen-peer-urls=http://localhost:1", "--initial-advertise-peer-urls=http://localhost:1", "--initial-cluster-token=new", - "--data-dir", - "/tmp/a/member-0", + "--data-dir=/tmp/a/member-0", "--snapshot-count=10000", "--initial-cluster-token=new", }, From 9058ee6e3d8dbdfc5be8a88c6349414bd41648b3 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 24 May 2025 21:08:01 +0200 Subject: [PATCH 0224/1068] Handle duplicate key delete in one TXN Signed-off-by: Marek Siarkowicz --- tests/robustness/model/replay.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/robustness/model/replay.go b/tests/robustness/model/replay.go index bed69d12f745..ab2ca79ebbb7 100644 --- a/tests/robustness/model/replay.go +++ b/tests/robustness/model/replay.go @@ -74,7 +74,7 @@ func toWatchEvents(prevState *EtcdState, request EtcdRequest, response MaybeEtcd } else { ops = request.Txn.OperationsOnSuccess } - for _, op := range ops { + for i, op := range ops { switch op.Type { case RangeOperation: case DeleteOperation: @@ -85,7 +85,7 @@ func toWatchEvents(prevState *EtcdState, request EtcdRequest, response MaybeEtcd }, Revision: response.Revision, } - if _, ok := prevState.KeyValues[op.Delete.Key]; ok { + if response.Txn.Results[i].Deleted != 0 { events = append(events, e) } case PutOperation: From ed0939443f201227faf932685b6fb8ae28d36485 Mon Sep 17 00:00:00 2001 From: Nont Date: Thu, 22 May 2025 22:08:41 -0500 Subject: [PATCH 0225/1068] Allow testing multiple etcd releases Signed-off-by: Nont --- .github/workflows/antithesis-test.yml | 7 ++- tests/antithesis/Makefile | 71 +++++++++++++++++++++++---- tests/antithesis/README.md | 8 +++ 3 files changed, 76 insertions(+), 10 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index ae378df46088..914829c22a9d 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -34,6 +34,11 @@ on: required: true type: string default: "etcd nightly antithesis run" + etcd_ref: + description: 'etcd version to build etcd-server from' + required: false + type: string + default: 'release-3.5' email: description: 'Additional email notification recipient (separate with ;)' required: true @@ -85,7 +90,7 @@ jobs: - name: Build and push etcd image working-directory: ./tests/antithesis run: | - make antithesis-build-etcd-image + make antithesis-build-etcd-image-${{ inputs.etcd_ref }} export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:latest" docker tag etcd-server:latest $TAG docker push $TAG diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 590fe5eb6acd..b40173345248 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -2,22 +2,51 @@ REPOSITORY_ROOT := $(shell git rev-parse --show-toplevel) USER_ID := $(shell id -u) GROUP_ID := $(shell id -g) ARCH ?= $(shell go env GOARCH) +REF = HEAD +DOCKERFILE = ./Dockerfile +REMOTE = origin .PHONY: antithesis-build-client-docker-image antithesis-build-client-docker-image: docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) -f $(REPOSITORY_ROOT)/tests/antithesis/test-template/Dockerfile $(REPOSITORY_ROOT) -t etcd-client:latest -.PHONY: antithesis-build-etcd-image -antithesis-build-etcd-image: - git fetch origin release-3.5 - git worktree remove -f /tmp/etcd3.5 || true - git worktree add /tmp/etcd3.5 origin/release-3.5 - cd /tmp/etcd3.5 && make build - cd /tmp/etcd3.5 && cp ./Dockerfile-release.$(ARCH) ./bin/Dockerfile - cd /tmp/etcd3.5 && docker build \ +.PHONY: antithesis-build-etcd-create-worktree +antithesis-build-etcd-create-worktree: + git fetch $(REMOTE) $(REF) + git worktree remove -f /tmp/etcd$(REF) || true + git worktree add /tmp/etcd$(REF) $(REMOTE)/$(REF) + $(eval BUILDDIR=/tmp/etcd$(REF)) + +.PHONY: antithesis-build-etcd +antithesis-build-etcd: + cd $(BUILDDIR) && make build + cd $(BUILDDIR) && cp $(DOCKERFILE) ./bin/Dockerfile + cd $(BUILDDIR) && docker build \ --tag etcd-server:latest \ ./bin - git worktree remove -f /tmp/etcd3.5 + rm $(BUILDDIR)/bin/Dockerfile + +.PHONY: antithesis-build-etcd-remove-worktree +antithesis-build-etcd-remove-worktree: + git worktree remove -f $(BUILDDIR) + +.PHONY: antithesis-build-etcd-image +antithesis-build-etcd-image: antithesis-build-etcd-create-worktree antithesis-build-etcd antithesis-build-etcd-remove-worktree + +.PHONY: antithesis-build-etcd-image-release-3.4 +antithesis-build-etcd-image-release-3.4: set-version-3.4 antithesis-build-etcd-image + +.PHONY: antithesis-build-etcd-image-release-3.5 +antithesis-build-etcd-image-release-3.5: set-version-3.5 antithesis-build-etcd-image + +.PHONY: antithesis-build-etcd-image-release-3.6 +antithesis-build-etcd-image-release-3.6: set-version-3.6 antithesis-build-etcd-image + +.PHONY: antithesis-build-etcd-image-release-main +antithesis-build-etcd-image-release-main: set-version-main antithesis-build-etcd-image + +.PHONY: antithesis-build-etcd-image-local +antithesis-build-etcd-image-local: set-local antithesis-build-etcd .PHONY: antithesis-docker-compose-up antithesis-docker-compose-up: @@ -43,3 +72,27 @@ antithesis-run-local-validation: antithesis-clean: export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose down rm -rf /tmp/etcddata0 /tmp/etcddata1 /tmp/etcddata2 /tmp/etcdreport + +.PHONY: set-version-3.4 +set-version-3.4: + $(eval REF=release-3.4) + $(eval DOCKERFILE=./Dockerfile-release) + +.PHONY: set-version-3.5 +set-version-3.5: + $(eval REF=release-3.5) + $(eval DOCKERFILE=./Dockerfile-release.amd64) + +.PHONY: set-version-3.6 +set-version-3.6: + $(eval REF=release-3.6) + $(eval DOCKERFILE=./Dockerfile) + +.PHONY: set-version-main +set-version-main: + $(eval REF=main) + $(eval DOCKERFILE=./Dockerfile) + +.PHONY: set-local +set-local: + $(eval BUILDDIR=$(REPOSITORY_ROOT)) diff --git a/tests/antithesis/README.md b/tests/antithesis/README.md index 3927ff9a004b..fb69b576ab1b 100644 --- a/tests/antithesis/README.md +++ b/tests/antithesis/README.md @@ -11,6 +11,12 @@ make antithesis-build-client-docker-image make antithesis-build-etcd-image ``` +Both commands build etcd-server and etcd-client from the current branch. To build a different version of etcd you can use: + +```bash +make antithesis-build-etcd-image REF=${GIT_REF} +``` + ### 2. (Optional) Check the Image Locally You can verify your new image is built: @@ -33,6 +39,8 @@ Run the following command from the root directory for Antithesis tests (`tests/a make antithesis-docker-compose-up ``` +The command uses the etcd client and server images built from step 1. + The client will continuously check the health of the etcd nodes and print logs similar to: ``` From 77ffc98ba536d085d147beab003fbad2793775c4 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 28 May 2025 07:34:42 +0200 Subject: [PATCH 0226/1068] dependency: bump github.com/google/yamlfmt from 0.16.0 to 0.17.0 Reference: - https://github.com/etcd-io/etcd/pull/20030 Signed-off-by: Chun-Hung Tseng --- tools/mod/go.mod | 3 +-- tools/mod/go.sum | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 69f541026377..8c80fffe1f59 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -12,7 +12,7 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint v1.64.8 github.com/google/addlicense v1.1.1 - github.com/google/yamlfmt v0.16.0 + github.com/google/yamlfmt v0.17.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 @@ -51,7 +51,6 @@ require ( github.com/blizzy78/varnamelen v0.8.0 // indirect github.com/bmatcuk/doublestar/v4 v4.8.1 // indirect github.com/bombsimon/wsl/v4 v4.5.0 // indirect - github.com/braydonk/yaml v0.9.0 // indirect github.com/breml/bidichk v0.3.2 // indirect github.com/breml/errchkjson v0.4.0 // indirect github.com/butuzov/ireturn v0.3.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 0ca85958b6c5..570041ab9950 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -65,8 +65,6 @@ github.com/bmatcuk/doublestar/v4 v4.8.1 h1:54Bopc5c2cAvhLRAzqOGCYHYyhcDHsFF4wWIR github.com/bmatcuk/doublestar/v4 v4.8.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bombsimon/wsl/v4 v4.5.0 h1:iZRsEvDdyhd2La0FVi5k6tYehpOR/R7qIUjmKk7N74A= github.com/bombsimon/wsl/v4 v4.5.0/go.mod h1:NOQ3aLF4nD7N5YPXMruR6ZXDOAqLoM0GEpLwTdvmOSc= -github.com/braydonk/yaml v0.9.0 h1:ewGMrVmEVpsm3VwXQDR388sLg5+aQ8Yihp6/hc4m+h4= -github.com/braydonk/yaml v0.9.0/go.mod h1:hcm3h581tudlirk8XEUPDBAimBPbmnL0Y45hCRl47N4= github.com/breml/bidichk v0.3.2 h1:xV4flJ9V5xWTqxL+/PMFF6dtJPvZLPsyixAoPe8BGJs= github.com/breml/bidichk v0.3.2/go.mod h1:VzFLBxuYtT23z5+iVkamXO386OB+/sVwZOpIj6zXGos= github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAdk= @@ -205,8 +203,8 @@ github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/Z github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/yamlfmt v0.16.0 h1:5auoxqdx2CxOb022XGBElFFVH8uE/lAJDCWKRMq4mT8= -github.com/google/yamlfmt v0.16.0/go.mod h1:/fF8jQmFopG3InQoWYG3gTORPXqLwNkcBqAT4UA4ab0= +github.com/google/yamlfmt v0.17.0 h1:/tdp01rIlvLz3LgJ2NtMLnqgAadZm33P7GcPU680b+w= +github.com/google/yamlfmt v0.17.0/go.mod h1:gs0UEklJOYkUJ+OOCG0hg9n+DzucKDPlJElTUasVNK8= github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s= github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= From 8aebc2519b0e04ed777517037781029530fe590f Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 27 May 2025 10:18:00 +0200 Subject: [PATCH 0227/1068] Fix name of main target for antithesis testing Signed-off-by: Marek Siarkowicz --- tests/antithesis/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index b40173345248..0efaa84a1120 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -42,8 +42,8 @@ antithesis-build-etcd-image-release-3.5: set-version-3.5 antithesis-build-etcd-i .PHONY: antithesis-build-etcd-image-release-3.6 antithesis-build-etcd-image-release-3.6: set-version-3.6 antithesis-build-etcd-image -.PHONY: antithesis-build-etcd-image-release-main -antithesis-build-etcd-image-release-main: set-version-main antithesis-build-etcd-image +.PHONY: antithesis-build-etcd-image-main +antithesis-build-etcd-image-main: set-version-main antithesis-build-etcd-image .PHONY: antithesis-build-etcd-image-local antithesis-build-etcd-image-local: set-local antithesis-build-etcd From e82222d86c302cc703adfecfcfccf5f3f89443ae Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 28 May 2025 07:36:15 +0200 Subject: [PATCH 0228/1068] dependency: bump go.opentelemetry.io/otel/exporters/otlp/otlptrace from 1.35.0 to 1.36.0 Reference: - https://github.com/etcd-io/etcd/pull/20029 Signed-off-by: Chun-Hung Tseng --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index be4efc65cec7..73720a6adaed 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -79,7 +79,7 @@ require ( go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect go.opentelemetry.io/otel v1.36.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.36.0 // indirect go.opentelemetry.io/otel/sdk v1.36.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index c338296905c2..3bbe7bf3b4bf 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -119,8 +119,8 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= diff --git a/go.mod b/go.mod index 2d14dd0139ef..db89f3892064 100644 --- a/go.mod +++ b/go.mod @@ -86,7 +86,7 @@ require ( go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect go.opentelemetry.io/otel v1.36.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.36.0 // indirect go.opentelemetry.io/otel/sdk v1.36.0 // indirect diff --git a/go.sum b/go.sum index 9c3e74c98059..8fd9961d102f 100644 --- a/go.sum +++ b/go.sum @@ -158,8 +158,8 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= diff --git a/server/go.mod b/server/go.mod index 47e309639896..4af1a8033d44 100644 --- a/server/go.mod +++ b/server/go.mod @@ -66,7 +66,7 @@ require ( github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect go.opentelemetry.io/otel/metric v1.36.0 // indirect go.opentelemetry.io/otel/trace v1.36.0 // indirect go.opentelemetry.io/proto/otlp v1.6.0 // indirect diff --git a/server/go.sum b/server/go.sum index a5f3d5c0130f..36776696e58e 100644 --- a/server/go.sum +++ b/server/go.sum @@ -133,8 +133,8 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= diff --git a/tests/go.mod b/tests/go.mod index 7020c5920454..287c977b6b51 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -92,7 +92,7 @@ require ( go.etcd.io/bbolt v1.4.0 // indirect go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.36.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 07c4e804b910..d6529903fd8c 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -164,8 +164,8 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= From 8ce4bd626fca86de962b878e0716871913e32cb0 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 27 May 2025 11:40:13 +0200 Subject: [PATCH 0229/1068] Fix number of operations is more than the key pool size Signed-off-by: Marek Siarkowicz --- tests/antithesis/test-template/robustness/traffic/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index b463983c8df5..9e51afe9b0be 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -128,7 +128,7 @@ func simulateTraffic(ctx context.Context, hosts []string, ids identity.Provider, concurrencyLimiter := traffic.NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) finish := closeAfter(ctx, duration) reports := []report.ClientReport{} - keyStore := traffic.NewKeyStore(profile.ClientCount, "key") + keyStore := traffic.NewKeyStore(10, "key") for i := 0; i < profile.ClientCount; i++ { c := connect([]string{hosts[i%len(hosts)]}, ids, baseTime) defer c.Close() From 4a0a8eb6af2da01a0bcf989117e2282c0e79e7a1 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 28 May 2025 07:38:58 +0200 Subject: [PATCH 0230/1068] dependency: bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.35.0 to 1.36.0 and google.golang.org/genproto/googleapis/api from 0.0.0-20250428153025-10db94c68c34 to 0.0.0-20250519155744-55703ea1f237 Reference: - https://github.com/etcd-io/etcd/pull/20028 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 ++-- bill-of-materials.json | 2 +- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 12 ++++++------ go.mod | 6 +++--- go.sum | 12 ++++++------ server/go.mod | 6 +++--- server/go.sum | 12 ++++++------ tests/go.mod | 6 +++--- tests/go.sum | 12 ++++++------ tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 17 files changed, 49 insertions(+), 49 deletions(-) diff --git a/api/go.mod b/api/go.mod index 4efb08d7b09d..95250d2abc0b 100644 --- a/api/go.mod +++ b/api/go.mod @@ -10,7 +10,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/stretchr/testify v1.10.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 + google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 google.golang.org/grpc v1.72.1 google.golang.org/protobuf v1.36.6 ) diff --git a/api/go.sum b/api/go.sum index e330112aeaf7..f64dc991b2f7 100644 --- a/api/go.sum +++ b/api/go.sum @@ -73,8 +73,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= diff --git a/bill-of-materials.json b/bill-of-materials.json index 09442fb81c4a..43a5c0646779 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -45,7 +45,7 @@ ] }, { - "project": "github.com/cenkalti/backoff/v4", + "project": "github.com/cenkalti/backoff/v5", "licenses": [ { "type": "MIT License", diff --git a/client/v3/go.mod b/client/v3/go.mod index ba10784d23f4..d6ea44d490d1 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -37,7 +37,7 @@ require ( golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index c6cfe2b38d53..c535e1e06996 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -107,8 +107,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index ae42a20937c4..e4e958472b19 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -42,7 +42,7 @@ require ( golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 123a9c681929..7c4aab0e79ec 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -136,8 +136,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 73720a6adaed..9edd3b96bb7d 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -39,7 +39,7 @@ require ( require ( github.com/beorn7/perks v1.0.1 // indirect - github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/cenkalti/backoff/v5 v5.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -80,7 +80,7 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect go.opentelemetry.io/otel v1.36.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect go.opentelemetry.io/otel/metric v1.36.0 // indirect go.opentelemetry.io/otel/sdk v1.36.0 // indirect go.opentelemetry.io/otel/trace v1.36.0 // indirect @@ -91,7 +91,7 @@ require ( golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect golang.org/x/time v0.11.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/grpc v1.72.1 // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 3bbe7bf3b4bf..ace0a4790d6c 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -1,7 +1,7 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= -github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= +github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= @@ -121,8 +121,8 @@ go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= @@ -179,8 +179,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= diff --git a/go.mod b/go.mod index db89f3892064..bc9ccb1d7a17 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( require ( github.com/VividCortex/ewma v1.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/cenkalti/backoff/v5 v5.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -87,7 +87,7 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect go.opentelemetry.io/otel v1.36.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect go.opentelemetry.io/otel/metric v1.36.0 // indirect go.opentelemetry.io/otel/sdk v1.36.0 // indirect go.opentelemetry.io/otel/trace v1.36.0 // indirect @@ -97,7 +97,7 @@ require ( golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 8fd9961d102f..fd708875b43f 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= -github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= +github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -160,8 +160,8 @@ go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= @@ -243,8 +243,8 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= diff --git a/server/go.mod b/server/go.mod index 4af1a8033d44..02999ba872ba 100644 --- a/server/go.mod +++ b/server/go.mod @@ -34,13 +34,13 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 go.opentelemetry.io/otel v1.36.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 go.opentelemetry.io/otel/sdk v1.36.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.38.0 golang.org/x/net v0.40.0 golang.org/x/time v0.11.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 + google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 google.golang.org/grpc v1.72.1 google.golang.org/protobuf v1.36.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 @@ -49,7 +49,7 @@ require ( require ( github.com/beorn7/perks v1.0.1 // indirect - github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/cenkalti/backoff/v5 v5.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/go-logr/logr v1.4.2 // indirect diff --git a/server/go.sum b/server/go.sum index 36776696e58e..4bbf746b04bc 100644 --- a/server/go.sum +++ b/server/go.sum @@ -2,8 +2,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= -github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= +github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -135,8 +135,8 @@ go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= @@ -217,8 +217,8 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= diff --git a/tests/go.mod b/tests/go.mod index 287c977b6b51..dd37f7519d53 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -56,7 +56,7 @@ require ( github.com/VividCortex/ewma v1.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/speakeasy v0.2.0 // indirect - github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/cenkalti/backoff/v5 v5.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cheggaaa/pb/v3 v3.1.7 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect @@ -93,13 +93,13 @@ require ( go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect go.opentelemetry.io/otel/metric v1.36.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index d6529903fd8c..fa717c9e6c45 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -10,8 +10,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= -github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= +github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -166,8 +166,8 @@ go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= @@ -249,8 +249,8 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 8c80fffe1f59..f11e9662bc89 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -223,7 +223,7 @@ require ( golang.org/x/term v0.32.0 // indirect golang.org/x/text v0.25.0 // indirect golang.org/x/tools v0.33.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/grpc v1.72.1 // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 570041ab9950..0552c9ad57a6 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -685,8 +685,8 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= From bdb43ff86cb2d8fb6b9de394486ac8ec050aa6d3 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 21 May 2025 23:29:39 -0700 Subject: [PATCH 0231/1068] dependency: bump github.com/olekukonko/tablewriter from 0.0.5 to 1.0.6 * Updates changes to version 1.0.x API to build tables. * Updates the bill of materials. Dependabot pull request: https://github.com/etcd-io/etcd/pull/19978 Signed-off-by: Ivan Valdes --- bill-of-materials.json | 18 ++++++++++++++++++ etcdctl/ctlv3/command/printer_table.go | 25 +++++++++++++------------ etcdctl/go.mod | 4 +++- etcdctl/go.sum | 9 ++++++--- etcdutl/etcdutl/printer_table.go | 13 +++++++------ etcdutl/go.mod | 7 ++++++- etcdutl/go.sum | 16 +++++++++++++--- go.mod | 4 +++- go.sum | 9 ++++++--- tests/go.mod | 4 +++- tests/go.sum | 9 ++++++--- tools/mod/go.mod | 4 +++- tools/mod/go.sum | 9 ++++++--- 13 files changed, 93 insertions(+), 38 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index 42738da1851b..09442fb81c4a 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -305,6 +305,24 @@ } ] }, + { + "project": "github.com/olekukonko/errors", + "licenses": [ + { + "type": "MIT License", + "confidence": 1 + } + ] + }, + { + "project": "github.com/olekukonko/ll", + "licenses": [ + { + "type": "MIT License", + "confidence": 1 + } + ] + }, { "project": "github.com/olekukonko/tablewriter", "licenses": [ diff --git a/etcdctl/ctlv3/command/printer_table.go b/etcdctl/ctlv3/command/printer_table.go index c576231ed5b0..fcab69fb0639 100644 --- a/etcdctl/ctlv3/command/printer_table.go +++ b/etcdctl/ctlv3/command/printer_table.go @@ -18,6 +18,7 @@ import ( "os" "github.com/olekukonko/tablewriter" + "github.com/olekukonko/tablewriter/tw" v3 "go.etcd.io/etcd/client/v3" ) @@ -26,44 +27,44 @@ type tablePrinter struct{ printer } func (tp *tablePrinter) MemberList(r v3.MemberListResponse) { hdr, rows := makeMemberListTable(r) - table := tablewriter.NewWriter(os.Stdout) - table.SetHeader(hdr) + cfgBuilder := tablewriter.NewConfigBuilder().WithRowAlignment(tw.AlignRight) + table := tablewriter.NewTable(os.Stdout, tablewriter.WithConfig(cfgBuilder.Build())) + table.Header(hdr) for _, row := range rows { table.Append(row) } - table.SetAlignment(tablewriter.ALIGN_RIGHT) table.Render() } func (tp *tablePrinter) EndpointHealth(r []epHealth) { hdr, rows := makeEndpointHealthTable(r) - table := tablewriter.NewWriter(os.Stdout) - table.SetHeader(hdr) + cfgBuilder := tablewriter.NewConfigBuilder().WithRowAlignment(tw.AlignRight) + table := tablewriter.NewTable(os.Stdout, tablewriter.WithConfig(cfgBuilder.Build())) + table.Header(hdr) for _, row := range rows { table.Append(row) } - table.SetAlignment(tablewriter.ALIGN_RIGHT) table.Render() } func (tp *tablePrinter) EndpointStatus(r []epStatus) { hdr, rows := makeEndpointStatusTable(r) - table := tablewriter.NewWriter(os.Stdout) - table.SetHeader(hdr) + cfgBuilder := tablewriter.NewConfigBuilder().WithRowAlignment(tw.AlignRight) + table := tablewriter.NewTable(os.Stdout, tablewriter.WithConfig(cfgBuilder.Build())) + table.Header(hdr) for _, row := range rows { table.Append(row) } - table.SetAlignment(tablewriter.ALIGN_RIGHT) table.Render() } func (tp *tablePrinter) EndpointHashKV(r []epHashKV) { hdr, rows := makeEndpointHashKVTable(r) - table := tablewriter.NewWriter(os.Stdout) - table.SetHeader(hdr) + cfgBuilder := tablewriter.NewConfigBuilder().WithRowAlignment(tw.AlignRight) + table := tablewriter.NewTable(os.Stdout, tablewriter.WithConfig(cfgBuilder.Build())) + table.Header(hdr) for _, row := range rows { table.Append(row) } - table.SetAlignment(tablewriter.ALIGN_RIGHT) table.Render() } diff --git a/etcdctl/go.mod b/etcdctl/go.mod index cd206c46ef8d..34c781b054db 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -8,7 +8,7 @@ require ( github.com/bgentry/speakeasy v0.2.0 github.com/cheggaaa/pb/v3 v3.1.7 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v0.0.5 + github.com/olekukonko/tablewriter v1.0.6 github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 @@ -34,6 +34,8 @@ require ( github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect + github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 59d9c676e3a7..b1e3d0fe36f9 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -50,13 +50,16 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= +github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 h1:V2wKiwjwAfRJRtUP6pC7wt4opeF14enO0du2dRV6Llo= +github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.6 h1:/T45mIHc5hcEvibgzBzvMy7ruT+RjgoQRvkHbnl6OWA= +github.com/olekukonko/tablewriter v1.0.6/go.mod h1:SJ0MV1aHb/89fLcsBMXMp30Xg3g5eGoOUu0RptEk4AU= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= diff --git a/etcdutl/etcdutl/printer_table.go b/etcdutl/etcdutl/printer_table.go index ec66ea38f767..8558d5a0bea2 100644 --- a/etcdutl/etcdutl/printer_table.go +++ b/etcdutl/etcdutl/printer_table.go @@ -18,6 +18,7 @@ import ( "os" "github.com/olekukonko/tablewriter" + "github.com/olekukonko/tablewriter/tw" "go.etcd.io/etcd/etcdutl/v3/snapshot" ) @@ -26,22 +27,22 @@ type tablePrinter struct{ printer } func (tp *tablePrinter) DBStatus(r snapshot.Status) { hdr, rows := makeDBStatusTable(r) - table := tablewriter.NewWriter(os.Stdout) - table.SetHeader(hdr) + cfgBuilder := tablewriter.NewConfigBuilder().WithRowAlignment(tw.AlignRight) + table := tablewriter.NewTable(os.Stdout, tablewriter.WithConfig(cfgBuilder.Build())) + table.Header(hdr) for _, row := range rows { table.Append(row) } - table.SetAlignment(tablewriter.ALIGN_RIGHT) table.Render() } func (tp *tablePrinter) DBHashKV(r HashKV) { hdr, rows := makeDBHashKVTable(r) - table := tablewriter.NewWriter(os.Stdout) - table.SetHeader(hdr) + cfgBuilder := tablewriter.NewConfigBuilder().WithRowAlignment(tw.AlignRight) + table := tablewriter.NewTable(os.Stdout, tablewriter.WithConfig(cfgBuilder.Build())) + table.Header(hdr) for _, row := range rows { table.Append(row) } - table.SetAlignment(tablewriter.ALIGN_RIGHT) table.Render() } diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 33f63824a2b2..110fcd74fa6a 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -24,7 +24,7 @@ replace ( require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v0.0.5 + github.com/olekukonko/tablewriter v1.0.6 github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 go.etcd.io/bbolt v1.4.0 @@ -43,6 +43,7 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/fatih/color v1.18.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect @@ -57,8 +58,12 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect + github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 45e25113382b..315d7c24a59b 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -17,6 +17,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -58,13 +60,20 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= +github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 h1:V2wKiwjwAfRJRtUP6pC7wt4opeF14enO0du2dRV6Llo= +github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.6 h1:/T45mIHc5hcEvibgzBzvMy7ruT+RjgoQRvkHbnl6OWA= +github.com/olekukonko/tablewriter v1.0.6/go.mod h1:SJ0MV1aHb/89fLcsBMXMp30Xg3g5eGoOUu0RptEk4AU= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -153,6 +162,7 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/go.mod b/go.mod index d6c9f1cb6bde..b992940e934e 100644 --- a/go.mod +++ b/go.mod @@ -68,7 +68,9 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/olekukonko/tablewriter v0.0.5 // indirect + github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect + github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 // indirect + github.com/olekukonko/tablewriter v1.0.6 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/go.sum b/go.sum index a8e8e110a9aa..c11c0a41f1ba 100644 --- a/go.sum +++ b/go.sum @@ -94,13 +94,16 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= +github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 h1:V2wKiwjwAfRJRtUP6pC7wt4opeF14enO0du2dRV6Llo= +github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.6 h1:/T45mIHc5hcEvibgzBzvMy7ruT+RjgoQRvkHbnl6OWA= +github.com/olekukonko/tablewriter v1.0.6/go.mod h1:SJ0MV1aHb/89fLcsBMXMp30Xg3g5eGoOUu0RptEk4AU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/tests/go.mod b/tests/go.mod index b3f144bda8c7..d37c09e882af 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -78,7 +78,9 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/olekukonko/tablewriter v0.0.5 // indirect + github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect + github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 // indirect + github.com/olekukonko/tablewriter v1.0.6 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect diff --git a/tests/go.sum b/tests/go.sum index 30dfad66ef19..1637a9700899 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -100,13 +100,16 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= +github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 h1:V2wKiwjwAfRJRtUP6pC7wt4opeF14enO0du2dRV6Llo= +github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.6 h1:/T45mIHc5hcEvibgzBzvMy7ruT+RjgoQRvkHbnl6OWA= +github.com/olekukonko/tablewriter v1.0.6/go.mod h1:SJ0MV1aHb/89fLcsBMXMp30Xg3g5eGoOUu0RptEk4AU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 6580f41c27c7..d805585d8e63 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -146,7 +146,9 @@ require ( github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect github.com/nunnatsa/ginkgolinter v0.19.1 // indirect - github.com/olekukonko/tablewriter v0.0.5 // indirect + github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect + github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 // indirect + github.com/olekukonko/tablewriter v1.0.6 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index ad52111b4cdc..049d00dd2c31 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -301,7 +301,6 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= @@ -327,8 +326,12 @@ github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= github.com/nunnatsa/ginkgolinter v0.19.1 h1:mjwbOlDQxZi9Cal+KfbEJTCz327OLNfwNvoZ70NJ+c4= github.com/nunnatsa/ginkgolinter v0.19.1/go.mod h1:jkQ3naZDmxaZMXPWaS9rblH+i+GWXQCaS/JFIWcOH2s= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= +github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 h1:V2wKiwjwAfRJRtUP6pC7wt4opeF14enO0du2dRV6Llo= +github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.6 h1:/T45mIHc5hcEvibgzBzvMy7ruT+RjgoQRvkHbnl6OWA= +github.com/olekukonko/tablewriter v1.0.6/go.mod h1:SJ0MV1aHb/89fLcsBMXMp30Xg3g5eGoOUu0RptEk4AU= github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= From fb73f680b0d481f4c6bd68638e688d3e0e91cfcc Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 28 May 2025 07:40:52 +0200 Subject: [PATCH 0232/1068] dependency: bump google.golang.org/grpc from 1.72.1 to 1.72.2 Reference: - https://github.com/etcd-io/etcd/pull/20027 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 20 files changed, 30 insertions(+), 30 deletions(-) diff --git a/api/go.mod b/api/go.mod index 95250d2abc0b..492b6f145534 100644 --- a/api/go.mod +++ b/api/go.mod @@ -11,7 +11,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/stretchr/testify v1.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 - google.golang.org/grpc v1.72.1 + google.golang.org/grpc v1.72.2 google.golang.org/protobuf v1.36.6 ) diff --git a/api/go.sum b/api/go.sum index f64dc991b2f7..40f931532542 100644 --- a/api/go.sum +++ b/api/go.sum @@ -77,8 +77,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= +google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index d6ea44d490d1..e3ff6912919a 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.72.1 + google.golang.org/grpc v1.72.2 sigs.k8s.io/yaml v1.4.0 ) diff --git a/client/v3/go.sum b/client/v3/go.sum index c535e1e06996..b27f9d5ef829 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -111,8 +111,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= +google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index e4e958472b19..d91f852c4862 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.11.0 - google.golang.org/grpc v1.72.1 + google.golang.org/grpc v1.72.2 ) require ( diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 7c4aab0e79ec..8df757018e3f 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -140,8 +140,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= +google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 9edd3b96bb7d..7c0fbd70baa9 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -93,7 +93,7 @@ require ( golang.org/x/time v0.11.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect - google.golang.org/grpc v1.72.1 // indirect + google.golang.org/grpc v1.72.2 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index ace0a4790d6c..fc1f11d6c3f6 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -183,8 +183,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= +google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index bc9ccb1d7a17..37f5b62949bd 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.11.0 - google.golang.org/grpc v1.72.1 + google.golang.org/grpc v1.72.2 google.golang.org/protobuf v1.36.6 ) diff --git a/go.sum b/go.sum index fd708875b43f..610b8473295c 100644 --- a/go.sum +++ b/go.sum @@ -252,8 +252,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= +google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/go.mod b/pkg/go.mod index ed27778fbfe5..581d95fe2899 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.72.1 + google.golang.org/grpc v1.72.2 ) require ( diff --git a/pkg/go.sum b/pkg/go.sum index a74117318d4d..ec6fe47cbab8 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -61,8 +61,8 @@ golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= +google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index 02999ba872ba..f6a82f95c83b 100644 --- a/server/go.mod +++ b/server/go.mod @@ -41,7 +41,7 @@ require ( golang.org/x/net v0.40.0 golang.org/x/time v0.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 - google.golang.org/grpc v1.72.1 + google.golang.org/grpc v1.72.2 google.golang.org/protobuf v1.36.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.4.0 diff --git a/server/go.sum b/server/go.sum index 4bbf746b04bc..d9d9f6709a13 100644 --- a/server/go.sum +++ b/server/go.sum @@ -226,8 +226,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= +google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index dd37f7519d53..d0806abfe97d 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -48,7 +48,7 @@ require ( golang.org/x/crypto v0.38.0 golang.org/x/sync v0.14.0 golang.org/x/time v0.11.0 - google.golang.org/grpc v1.72.1 + google.golang.org/grpc v1.72.2 google.golang.org/protobuf v1.36.6 ) diff --git a/tests/go.sum b/tests/go.sum index fa717c9e6c45..7ca625262bc5 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -258,8 +258,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= +google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index f11e9662bc89..0d868bb42efd 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -225,7 +225,7 @@ require ( golang.org/x/tools v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect - google.golang.org/grpc v1.72.1 // indirect + google.golang.org/grpc v1.72.2 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 0552c9ad57a6..acdfe37bce1b 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -689,8 +689,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= +google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index cadbdac10ad8..7f0fb2f1a053 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -22,5 +22,5 @@ require ( golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect - google.golang.org/grpc v1.72.1 // indirect + google.golang.org/grpc v1.72.2 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index b50f4fd9f1b8..7686bdf98dba 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1888,8 +1888,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= +google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 1df9b97614375274bbec3b0627099cdb7dc876dc Mon Sep 17 00:00:00 2001 From: Nont Date: Thu, 29 May 2025 23:18:40 -0500 Subject: [PATCH 0233/1068] Add test compaction Signed-off-by: Nont --- .../test-template/robustness/traffic/main.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 9e51afe9b0be..748c87d89bf4 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -149,6 +149,16 @@ func simulateTraffic(ctx context.Context, hosts []string, ids identity.Provider, mux.Unlock() }(c) } + wg.Add(1) + compactClient := connect(hosts, ids, baseTime) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + traffic.EtcdAntithesis.RunCompactLoop(ctx, c, traffic.DefaultCompactionPeriod, finish) + mux.Lock() + reports = append(reports, c.Report()) + mux.Unlock() + }(compactClient) wg.Wait() return reports } From a3f4d6e1d22ccd42975d36e754f88f198f2fd9f1 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 29 May 2025 22:12:15 -0700 Subject: [PATCH 0234/1068] tests/e2e: address usetesting issues Signed-off-by: Ivan Valdes --- tests/e2e/etcd_release_upgrade_test.go | 8 ++++---- tests/e2e/reproduce_19406_test.go | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/tests/e2e/etcd_release_upgrade_test.go b/tests/e2e/etcd_release_upgrade_test.go index 18e08f7d3a03..3a057b68d6b9 100644 --- a/tests/e2e/etcd_release_upgrade_test.go +++ b/tests/e2e/etcd_release_upgrade_test.go @@ -199,7 +199,7 @@ func TestClusterUpgradeAfterPromotingMembers(t *testing.T) { }, } { t.Run(tc.name, func(t *testing.T) { - ctx := context.Background() + ctx := t.Context() epc, _ := mustCreateNewClusterByPromotingMembers(t, e2e.LastVersion, clusterSize, e2e.WithSnapshotCount(uint64(tc.snapshot))) @@ -220,7 +220,7 @@ func TestClusterUpgradeAfterPromotingMembers(t *testing.T) { t.Logf("Checking all members are ready to serve client requests") for i := 0; i < clusterSize; i++ { - err = epc.Procs[i].Etcdctl().Put(context.Background(), "foo", "bar", config.PutOptions{}) + err = epc.Procs[i].Etcdctl().Put(t.Context(), "foo", "bar", config.PutOptions{}) require.NoError(t, err) } }) @@ -230,7 +230,7 @@ func TestClusterUpgradeAfterPromotingMembers(t *testing.T) { func mustCreateNewClusterByPromotingMembers(t *testing.T, clusterVersion e2e.ClusterVersion, clusterSize int, opts ...e2e.EPClusterOption) (*e2e.EtcdProcessCluster, []*etcdserverpb.Member) { require.GreaterOrEqualf(t, clusterSize, 1, "clusterSize must be at least 1") - ctx := context.Background() + ctx := t.Context() t.Logf("Creating new etcd cluster - version: %s, clusterSize: %v", clusterVersion, clusterSize) opts = append(opts, e2e.WithVersion(clusterVersion), e2e.WithClusterSize(1)) @@ -284,7 +284,7 @@ func mustCreateNewClusterByPromotingMembers(t *testing.T, clusterVersion e2e.Clu } func ensureAllMembersAreVotingMembers(t *testing.T, epc *e2e.EtcdProcessCluster) { - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) defer cancel() resp, err := epc.Etcdctl().MemberList(ctx, false) diff --git a/tests/e2e/reproduce_19406_test.go b/tests/e2e/reproduce_19406_test.go index be942aaba719..ddc241aa4f35 100644 --- a/tests/e2e/reproduce_19406_test.go +++ b/tests/e2e/reproduce_19406_test.go @@ -15,7 +15,6 @@ package e2e import ( - "context" "fmt" "net/url" "testing" @@ -33,7 +32,7 @@ func TestReproduce19406(t *testing.T) { e2e.BeforeTest(t) compactionSleepInterval := 100 * time.Millisecond - ctx := context.TODO() + ctx := t.Context() clus, cerr := e2e.NewEtcdProcessCluster(ctx, t, e2e.WithClusterSize(1), From 8f386417f6ce8f4559b5a9a90ed7ef0d2ced95a2 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 28 May 2025 08:04:30 +0200 Subject: [PATCH 0235/1068] [Antithesis] Enable Antithesis Instrumentor for etcd server Reference: - https://github.com/etcd-io/etcd/issues/19786 Signed-off-by: Chun-Hung Tseng --- tests/antithesis/Makefile | 38 +++--------------------------- tests/antithesis/server/Dockerfile | 32 +++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 35 deletions(-) create mode 100644 tests/antithesis/server/Dockerfile diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 0efaa84a1120..41ad92f5adc3 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -2,36 +2,15 @@ REPOSITORY_ROOT := $(shell git rev-parse --show-toplevel) USER_ID := $(shell id -u) GROUP_ID := $(shell id -g) ARCH ?= $(shell go env GOARCH) -REF = HEAD -DOCKERFILE = ./Dockerfile -REMOTE = origin +REF = main .PHONY: antithesis-build-client-docker-image antithesis-build-client-docker-image: docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) -f $(REPOSITORY_ROOT)/tests/antithesis/test-template/Dockerfile $(REPOSITORY_ROOT) -t etcd-client:latest -.PHONY: antithesis-build-etcd-create-worktree -antithesis-build-etcd-create-worktree: - git fetch $(REMOTE) $(REF) - git worktree remove -f /tmp/etcd$(REF) || true - git worktree add /tmp/etcd$(REF) $(REMOTE)/$(REF) - $(eval BUILDDIR=/tmp/etcd$(REF)) - -.PHONY: antithesis-build-etcd -antithesis-build-etcd: - cd $(BUILDDIR) && make build - cd $(BUILDDIR) && cp $(DOCKERFILE) ./bin/Dockerfile - cd $(BUILDDIR) && docker build \ - --tag etcd-server:latest \ - ./bin - rm $(BUILDDIR)/bin/Dockerfile - -.PHONY: antithesis-build-etcd-remove-worktree -antithesis-build-etcd-remove-worktree: - git worktree remove -f $(BUILDDIR) - .PHONY: antithesis-build-etcd-image -antithesis-build-etcd-image: antithesis-build-etcd-create-worktree antithesis-build-etcd antithesis-build-etcd-remove-worktree +antithesis-build-etcd-image: + docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) --build-arg REF=${REF} $(REPOSITORY_ROOT)/tests/antithesis/server/ -t etcd-server:latest .PHONY: antithesis-build-etcd-image-release-3.4 antithesis-build-etcd-image-release-3.4: set-version-3.4 antithesis-build-etcd-image @@ -45,9 +24,6 @@ antithesis-build-etcd-image-release-3.6: set-version-3.6 antithesis-build-etcd-i .PHONY: antithesis-build-etcd-image-main antithesis-build-etcd-image-main: set-version-main antithesis-build-etcd-image -.PHONY: antithesis-build-etcd-image-local -antithesis-build-etcd-image-local: set-local antithesis-build-etcd - .PHONY: antithesis-docker-compose-up antithesis-docker-compose-up: export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose up @@ -76,23 +52,15 @@ antithesis-clean: .PHONY: set-version-3.4 set-version-3.4: $(eval REF=release-3.4) - $(eval DOCKERFILE=./Dockerfile-release) .PHONY: set-version-3.5 set-version-3.5: $(eval REF=release-3.5) - $(eval DOCKERFILE=./Dockerfile-release.amd64) .PHONY: set-version-3.6 set-version-3.6: $(eval REF=release-3.6) - $(eval DOCKERFILE=./Dockerfile) .PHONY: set-version-main set-version-main: $(eval REF=main) - $(eval DOCKERFILE=./Dockerfile) - -.PHONY: set-local -set-local: - $(eval BUILDDIR=$(REPOSITORY_ROOT)) diff --git a/tests/antithesis/server/Dockerfile b/tests/antithesis/server/Dockerfile new file mode 100644 index 000000000000..c299c51447fd --- /dev/null +++ b/tests/antithesis/server/Dockerfile @@ -0,0 +1,32 @@ +ARG GO_VERSION=1.24.3 +ARG ARCH=amd64 + +FROM golang:$GO_VERSION + +# cloning etcd +ARG REF=main +RUN git clone --depth=1 https://github.com/etcd-io/etcd.git --branch=${REF} /etcd +WORKDIR /etcd + +# setup go mod +RUN go mod download + +# install instrumentor +RUN go get github.com/antithesishq/antithesis-sdk-go@a802e8810442e01d16b3e9df77d7ce3875e36e55 # v0.4.3 +RUN go install github.com/antithesishq/antithesis-sdk-go/tools/antithesis-go-instrumentor@a802e8810442e01d16b3e9df77d7ce3875e36e55 # v0.4.3 +RUN go mod tidy + +# compile etcd server with instrumentor +RUN mkdir /etcd_instrumented +RUN `go env GOPATH`/bin/antithesis-go-instrumentor /etcd /etcd_instrumented +RUN rm -rf /etcd +RUN mkdir -p /symbols +RUN cp -r /etcd_instrumented/symbols/* /symbols + +EXPOSE 2379 2380 + +# start etcd server +WORKDIR /etcd_instrumented/customer/server +RUN go mod tidy +RUN CGO_ENABLED=1 go build -race +CMD ["./server"] From 7b7c42efc22daa54e45a5d04dd7085b58b1ff2d4 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 29 May 2025 15:27:00 +0200 Subject: [PATCH 0236/1068] Set antithesis source to keep separate failure history for runs from different branches Signed-off-by: Marek Siarkowicz --- .github/workflows/antithesis-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 25afe3fa0cc3..24b29555c6cd 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -113,3 +113,4 @@ jobs: test_name: ${{ inputs.test }} additional_parameters: |- custom.duration = ${{ inputs.duration }} + antithesis.source = ${{ inputs.etcd_ref }} From ab4c4765e43a1661eb0d4eb86ce5132cf1b6cec5 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Wed, 28 May 2025 23:05:47 +0200 Subject: [PATCH 0237/1068] Simplify Makefile by removing set-version-* targets Signed-off-by: Marek Siarkowicz --- .github/workflows/antithesis-test.yml | 2 +- tests/antithesis/Makefile | 28 ++++++++------------------- 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 914829c22a9d..25afe3fa0cc3 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -90,7 +90,7 @@ jobs: - name: Build and push etcd image working-directory: ./tests/antithesis run: | - make antithesis-build-etcd-image-${{ inputs.etcd_ref }} + make antithesis-build-etcd-image REF=${{ inputs.etcd_ref }} export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:latest" docker tag etcd-server:latest $TAG docker push $TAG diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 41ad92f5adc3..3cf00d68ebc3 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -13,16 +13,20 @@ antithesis-build-etcd-image: docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) --build-arg REF=${REF} $(REPOSITORY_ROOT)/tests/antithesis/server/ -t etcd-server:latest .PHONY: antithesis-build-etcd-image-release-3.4 -antithesis-build-etcd-image-release-3.4: set-version-3.4 antithesis-build-etcd-image +antithesis-build-etcd-image-release-3.4: REF=release-3.4 +antithesis-build-etcd-image-release-3.4: antithesis-build-etcd-image .PHONY: antithesis-build-etcd-image-release-3.5 -antithesis-build-etcd-image-release-3.5: set-version-3.5 antithesis-build-etcd-image +antithesis-build-etcd-image-release-3.5: REF=release-3.5 +antithesis-build-etcd-image-release-3.5: antithesis-build-etcd-image .PHONY: antithesis-build-etcd-image-release-3.6 -antithesis-build-etcd-image-release-3.6: set-version-3.6 antithesis-build-etcd-image +antithesis-build-etcd-image-release-3.6: REF=release-3.6 +antithesis-build-etcd-image-release-3.6: antithesis-build-etcd-image .PHONY: antithesis-build-etcd-image-main -antithesis-build-etcd-image-main: set-version-main antithesis-build-etcd-image +antithesis-build-etcd-image-main: REF=main +antithesis-build-etcd-image-main: antithesis-build-etcd-image .PHONY: antithesis-docker-compose-up antithesis-docker-compose-up: @@ -48,19 +52,3 @@ antithesis-run-local-validation: antithesis-clean: export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose down rm -rf /tmp/etcddata0 /tmp/etcddata1 /tmp/etcddata2 /tmp/etcdreport - -.PHONY: set-version-3.4 -set-version-3.4: - $(eval REF=release-3.4) - -.PHONY: set-version-3.5 -set-version-3.5: - $(eval REF=release-3.5) - -.PHONY: set-version-3.6 -set-version-3.6: - $(eval REF=release-3.6) - -.PHONY: set-version-main -set-version-main: - $(eval REF=main) From f6b87d9bf2fa82ddea08a58c5b6714938965c1fd Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Mon, 26 May 2025 17:37:41 +0100 Subject: [PATCH 0238/1068] Add protection on PromoteMember and UpdateRaftAttributes Signed-off-by: Benjamin Wang --- server/etcdserver/api/membership/cluster.go | 30 ++++++++++++++++----- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/server/etcdserver/api/membership/cluster.go b/server/etcdserver/api/membership/cluster.go index 93db0c78a9b1..68369f60c449 100644 --- a/server/etcdserver/api/membership/cluster.go +++ b/server/etcdserver/api/membership/cluster.go @@ -508,9 +508,17 @@ func (c *RaftCluster) PromoteMember(id types.ID, shouldApplyV3 ShouldApplyV3) { c.Lock() defer c.Unlock() - m := *(c.members[id]) - m.RaftAttributes.IsLearner = false - mustUpdateMemberInStore(c.lg, c.v2store, &m) + if _, ok := c.members[id]; ok { + m := *(c.members[id]) + m.RaftAttributes.IsLearner = false + mustUpdateMemberInStore(c.lg, c.v2store, &m) + } else { + c.lg.Info("Skipped promoting non-existent member in v2store", + zap.String("cluster-id", c.cid.String()), + zap.String("local-member-id", c.localID.String()), + zap.String("promoted-member-id", id.String()), + ) + } if id == c.localID { isLearner.Set(0) @@ -540,9 +548,19 @@ func (c *RaftCluster) UpdateRaftAttributes(id types.ID, raftAttr RaftAttributes, c.Lock() defer c.Unlock() - m := *(c.members[id]) - m.RaftAttributes = raftAttr - mustUpdateMemberInStore(c.lg, c.v2store, &m) + if _, ok := c.members[id]; ok { + m := *(c.members[id]) + m.RaftAttributes = raftAttr + mustUpdateMemberInStore(c.lg, c.v2store, &m) + } else { + c.lg.Info("Skipped updating non-existent member in v2store", + zap.String("cluster-id", c.cid.String()), + zap.String("local-member-id", c.localID.String()), + zap.String("updated-remote-peer-id", id.String()), + zap.Strings("updated-remote-peer-urls", raftAttr.PeerURLs), + zap.Bool("updated-remote-peer-is-learner", raftAttr.IsLearner), + ) + } if shouldApplyV3 { c.members[id].RaftAttributes = raftAttr From 868e9e9cee2ef7c9524938da2d6b23c5478749c8 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 26 Apr 2025 15:15:58 +0200 Subject: [PATCH 0239/1068] Split executeRange function Signed-off-by: Marek Siarkowicz --- server/etcdserver/txn/range.go | 47 ++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/server/etcdserver/txn/range.go b/server/etcdserver/txn/range.go index 8e9fef34ad7b..5988691aac59 100644 --- a/server/etcdserver/txn/range.go +++ b/server/etcdserver/txn/range.go @@ -43,9 +43,29 @@ func Range(ctx context.Context, lg *zap.Logger, kv mvcc.KV, r *pb.RangeRequest) func executeRange(ctx context.Context, lg *zap.Logger, txnRead mvcc.TxnRead, r *pb.RangeRequest) (*pb.RangeResponse, error) { trace := traceutil.Get(ctx) - resp := &pb.RangeResponse{} - resp.Header = &pb.ResponseHeader{} + limit := rangeLimit(r) + ro := mvcc.RangeOptions{ + Limit: limit, + Rev: r.Revision, + Count: r.CountOnly, + } + + rr, err := txnRead.Range(ctx, r.Key, mkGteRange(r.RangeEnd), ro) + if err != nil { + return nil, err + } + + filterRangeResults(rr, r) + sortRangeResults(rr, r, lg) + trace.Step("filter and sort the key-value pairs") + + resp := asembleRangeResponse(rr, r) + trace.Step("assemble the response") + + return resp, nil +} +func rangeLimit(r *pb.RangeRequest) int64 { limit := r.Limit if r.SortOrder != pb.RangeRequest_NONE || r.MinModRevision != 0 || r.MaxModRevision != 0 || @@ -57,18 +77,10 @@ func executeRange(ctx context.Context, lg *zap.Logger, txnRead mvcc.TxnRead, r * // fetch one extra for 'more' flag limit = limit + 1 } + return limit +} - ro := mvcc.RangeOptions{ - Limit: limit, - Rev: r.Revision, - Count: r.CountOnly, - } - - rr, err := txnRead.Range(ctx, r.Key, mkGteRange(r.RangeEnd), ro) - if err != nil { - return nil, err - } - +func filterRangeResults(rr *mvcc.RangeResult, r *pb.RangeRequest) { if r.MaxModRevision != 0 { f := func(kv *mvccpb.KeyValue) bool { return kv.ModRevision > r.MaxModRevision } pruneKVs(rr, f) @@ -85,7 +97,9 @@ func executeRange(ctx context.Context, lg *zap.Logger, txnRead mvcc.TxnRead, r * f := func(kv *mvccpb.KeyValue) bool { return kv.CreateRevision < r.MinCreateRevision } pruneKVs(rr, f) } +} +func sortRangeResults(rr *mvcc.RangeResult, r *pb.RangeRequest, lg *zap.Logger) { sortOrder := r.SortOrder if r.SortTarget != pb.RangeRequest_KEY && sortOrder == pb.RangeRequest_NONE { // Since current mvcc.Range implementation returns results @@ -121,12 +135,14 @@ func executeRange(ctx context.Context, lg *zap.Logger, txnRead mvcc.TxnRead, r * sort.Sort(sort.Reverse(sorter)) } } +} +func asembleRangeResponse(rr *mvcc.RangeResult, r *pb.RangeRequest) *pb.RangeResponse { + resp := &pb.RangeResponse{Header: &pb.ResponseHeader{}} if r.Limit > 0 && len(rr.KVs) > int(r.Limit) { rr.KVs = rr.KVs[:r.Limit] resp.More = true } - trace.Step("filter and sort the key-value pairs") resp.Header.Revision = rr.Rev resp.Count = int64(rr.Count) resp.Kvs = make([]*mvccpb.KeyValue, len(rr.KVs)) @@ -136,8 +152,7 @@ func executeRange(ctx context.Context, lg *zap.Logger, txnRead mvcc.TxnRead, r * } resp.Kvs[i] = &rr.KVs[i] } - trace.Step("assemble the response") - return resp, nil + return resp } func checkRange(rv mvcc.ReadView, req *pb.RangeRequest) error { From 730b67ff3d0856a3b1a5728830a36fa0524243fd Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 30 May 2025 10:01:44 -0700 Subject: [PATCH 0240/1068] tests/common: address Go 1.24 usetesting issues Signed-off-by: Ivan Valdes --- tests/common/auth_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/common/auth_test.go b/tests/common/auth_test.go index 05bae0757d29..7ce235ad96b8 100644 --- a/tests/common/auth_test.go +++ b/tests/common/auth_test.go @@ -888,7 +888,7 @@ func TestAuthJWTExpire(t *testing.T) { func TestAuthJWTOnly(t *testing.T) { testRunner.BeforeTest(t) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() clus := testRunner.NewCluster(ctx, t, config.WithClusterConfig(config.ClusterConfig{ClusterSize: 1, AuthToken: verifyJWTOnlyAuth})) defer clus.Close() From 8eb1cf892b177e01bd14468999650cde23448f2b Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Thu, 29 May 2025 15:04:10 +0100 Subject: [PATCH 0241/1068] Add an e2e test to reproduce the issue that --force-new-cluster can't remove all members in a corner case Signed-off-by: Benjamin Wang --- tests/e2e/force_new_cluster_test.go | 66 +++++++++++++++++++++++++++++ tests/go.mod | 2 +- 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/tests/e2e/force_new_cluster_test.go b/tests/e2e/force_new_cluster_test.go index de26a5004e18..b62d2651010c 100644 --- a/tests/e2e/force_new_cluster_test.go +++ b/tests/e2e/force_new_cluster_test.go @@ -12,13 +12,21 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build !cluster_proxy + package e2e import ( + "encoding/json" "testing" + "time" "github.com/stretchr/testify/require" + "go.etcd.io/bbolt" + "go.etcd.io/etcd/server/v3/etcdserver/api/membership" + "go.etcd.io/etcd/server/v3/storage/datadir" + "go.etcd.io/etcd/server/v3/storage/schema" "go.etcd.io/etcd/tests/v3/framework/config" "go.etcd.io/etcd/tests/v3/framework/e2e" ) @@ -68,3 +76,61 @@ func TestForceNewCluster(t *testing.T) { }) } } + +func TestForceNewCluster_MemberCount(t *testing.T) { + e2e.BeforeTest(t) + + epc, promotedMembers := mustCreateNewClusterByPromotingMembers(t, e2e.CurrentVersion, 3, e2e.WithKeepDataDir(true)) + require.Len(t, promotedMembers, 2) + + // Wait for the backend TXN to sync/commit the data to disk, to ensure + // the consistent-index is persisted. Another way is to issue a snapshot + // command to forcibly commit the backend TXN. + time.Sleep(time.Second) + + t.Log("Killing all the members") + require.NoError(t, epc.Kill()) + require.NoError(t, epc.Wait(t.Context())) + + m := epc.Procs[0] + t.Logf("Forcibly create a one-member cluster with member: %s", m.Config().Name) + m.Config().Args = append(m.Config().Args, "--force-new-cluster") + require.NoError(t, m.Start(t.Context())) + + t.Log("Online checking the member count") + mresp, merr := m.Etcdctl().MemberList(t.Context(), false) + require.NoError(t, merr) + require.Len(t, mresp.Members, 1) + + t.Log("Closing the member") + require.NoError(t, m.Close()) + require.NoError(t, m.Wait(t.Context())) + + t.Log("Offline checking the member count") + members := mustReadMembersFromBoltDB(t, m.Config().DataDirPath) + require.Len(t, members, 1) +} + +func mustReadMembersFromBoltDB(t *testing.T, dataDir string) []*membership.Member { + dbPath := datadir.ToBackendFileName(dataDir) + db, err := bbolt.Open(dbPath, 0o400, &bbolt.Options{ReadOnly: true}) + require.NoError(t, err) + defer func() { + require.NoError(t, db.Close()) + }() + + var members []*membership.Member + _ = db.View(func(tx *bbolt.Tx) error { + b := tx.Bucket(schema.Members.Name()) + _ = b.ForEach(func(k, v []byte) error { + m := membership.Member{} + err := json.Unmarshal(v, &m) + require.NoError(t, err) + members = append(members, &m) + return nil + }) + return nil + }) + + return members +} diff --git a/tests/go.mod b/tests/go.mod index d0806abfe97d..00bb995ea8e5 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -30,6 +30,7 @@ require ( github.com/prometheus/common v0.64.0 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.10.0 + go.etcd.io/bbolt v1.4.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 @@ -89,7 +90,6 @@ require ( github.com/spf13/pflag v1.0.6 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect - go.etcd.io/bbolt v1.4.0 // indirect go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect From 9faef8281b8cb32f7dd028b61bec28965f5f616c Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Sat, 31 May 2025 00:54:41 +0200 Subject: [PATCH 0242/1068] chore(test): address Go usetesting for `experimental` Signed-off-by: Mustafa Elbehery --- .../clientv3/experimental/recipes/v3_barrier_test.go | 3 +-- .../experimental/recipes/v3_double_barrier_test.go | 3 +-- .../clientv3/experimental/recipes/v3_lock_test.go | 12 ++++++------ 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go b/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go index 1fefd906d526..70f30ea3df7c 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go @@ -15,7 +15,6 @@ package recipes_test import ( - "context" "testing" "time" @@ -46,7 +45,7 @@ func testBarrier(t *testing.T, waiters int, chooseClient func() *clientv3.Client require.Errorf(t, b.Hold(), "able to double-hold barrier") // put a random key to move the revision forward - if _, err := chooseClient().Put(context.Background(), "x", ""); err != nil { + if _, err := chooseClient().Put(t.Context(), "x", ""); err != nil { t.Errorf("could not put x (%v)", err) } diff --git a/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go b/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go index 9dcc5530cf0b..85bf219c04ac 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go @@ -15,7 +15,6 @@ package recipes_test import ( - "context" "errors" "sync" "testing" @@ -153,7 +152,7 @@ func TestDoubleBarrierTooManyClients(t *testing.T) { t.Errorf("Unexcepted error, expected: ErrTooManyClients, got: %v", err) } - resp, err := clus.RandClient().Get(context.TODO(), "test-barrier/waiters", clientv3.WithPrefix()) + resp, err := clus.RandClient().Get(t.Context(), "test-barrier/waiters", clientv3.WithPrefix()) if err != nil { t.Errorf("Unexpected error: %v", err) } diff --git a/tests/integration/clientv3/experimental/recipes/v3_lock_test.go b/tests/integration/clientv3/experimental/recipes/v3_lock_test.go index 50b571b15bcc..4bf2d8249ecb 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_lock_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_lock_test.go @@ -71,7 +71,7 @@ func testMutexLock(t *testing.T, waiters int, chooseClient func() *clientv3.Clie return } m := concurrency.NewMutex(session, "test-mutex") - if err := m.Lock(context.TODO()); err != nil { + if err := m.Lock(t.Context()); err != nil { errC <- fmt.Errorf("#%d: failed to wait on lock: %w", i, err) return } @@ -93,7 +93,7 @@ func testMutexLock(t *testing.T, waiters int, chooseClient func() *clientv3.Clie t.Fatalf("lock %d followers did not wait", i) default: } - require.NoErrorf(t, m.Unlock(context.TODO()), "could not release lock") + require.NoErrorf(t, m.Unlock(t.Context()), "could not release lock") } } wg.Wait() @@ -120,7 +120,7 @@ func TestMutexTryLockMultiNode(t *testing.T) { } func testMutexTryLock(t *testing.T, lockers int, chooseClient func() *clientv3.Client) { - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() lockedC := make(chan *concurrency.Mutex) @@ -182,10 +182,10 @@ func TestMutexSessionRelock(t *testing.T) { } m := concurrency.NewMutex(session, "test-mutex") - require.NoError(t, m.Lock(context.TODO())) + require.NoError(t, m.Lock(t.Context())) m2 := concurrency.NewMutex(session, "test-mutex") - require.NoError(t, m2.Lock(context.TODO())) + require.NoError(t, m2.Lock(t.Context())) } // TestMutexWaitsOnCurrentHolder ensures a mutex is only acquired once all @@ -197,7 +197,7 @@ func TestMutexWaitsOnCurrentHolder(t *testing.T) { clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) defer clus.Terminate(t) - cctx := context.Background() + cctx := t.Context() cli := clus.Client(0) From a9812fd2846416aec67d2944e5d0c30680421085 Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Sat, 31 May 2025 00:41:52 +0200 Subject: [PATCH 0243/1068] chore(test): address Go usetesting for `concurrency` Signed-off-by: Mustafa Elbehery --- .../clientv3/concurrency/election_test.go | 2 +- .../clientv3/concurrency/mutex_test.go | 15 +++++++-------- .../clientv3/concurrency/session_test.go | 6 +++--- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/tests/integration/clientv3/concurrency/election_test.go b/tests/integration/clientv3/concurrency/election_test.go index b597e9130aed..1dc00e6b838b 100644 --- a/tests/integration/clientv3/concurrency/election_test.go +++ b/tests/integration/clientv3/concurrency/election_test.go @@ -47,7 +47,7 @@ func TestResumeElection(t *testing.T) { e := concurrency.NewElection(s, prefix) // entire test should never take more than 10 seconds - ctx, cancel := context.WithTimeout(context.Background(), time.Second*10) + ctx, cancel := context.WithTimeout(t.Context(), time.Second*10) defer cancel() // become leader diff --git a/tests/integration/clientv3/concurrency/mutex_test.go b/tests/integration/clientv3/concurrency/mutex_test.go index c9a3b7aaecb5..3d8ea858c7d7 100644 --- a/tests/integration/clientv3/concurrency/mutex_test.go +++ b/tests/integration/clientv3/concurrency/mutex_test.go @@ -15,7 +15,6 @@ package concurrency_test import ( - "context" "errors" "testing" @@ -42,21 +41,21 @@ func TestMutexLockSessionExpired(t *testing.T) { m2 := concurrency.NewMutex(s2, "/my-lock/") // acquire lock for s1 - require.NoError(t, m1.Lock(context.TODO())) + require.NoError(t, m1.Lock(t.Context())) m2Locked := make(chan struct{}) var err2 error go func() { defer close(m2Locked) // m2 blocks since m1 already acquired lock /my-lock/ - if err2 = m2.Lock(context.TODO()); err2 == nil { + if err2 = m2.Lock(t.Context()); err2 == nil { t.Error("expect session expired error") } }() // revoke the session of m2 before unlock m1 require.NoError(t, s2.Close()) - require.NoError(t, m1.Unlock(context.TODO())) + require.NoError(t, m1.Unlock(t.Context())) <-m2Locked } @@ -71,17 +70,17 @@ func TestMutexUnlock(t *testing.T) { defer s1.Close() m1 := concurrency.NewMutex(s1, "/my-lock/") - err = m1.Unlock(context.TODO()) + err = m1.Unlock(t.Context()) require.Errorf(t, err, "expect lock released error") if !errors.Is(err, concurrency.ErrLockReleased) { t.Fatal(err) } - require.NoError(t, m1.Lock(context.TODO())) + require.NoError(t, m1.Lock(t.Context())) - require.NoError(t, m1.Unlock(context.TODO())) + require.NoError(t, m1.Unlock(t.Context())) - err = m1.Unlock(context.TODO()) + err = m1.Unlock(t.Context()) if err == nil { t.Fatal("expect lock released error") } diff --git a/tests/integration/clientv3/concurrency/session_test.go b/tests/integration/clientv3/concurrency/session_test.go index e7bcc563889e..21691bdf188d 100644 --- a/tests/integration/clientv3/concurrency/session_test.go +++ b/tests/integration/clientv3/concurrency/session_test.go @@ -31,7 +31,7 @@ func TestSessionOptions(t *testing.T) { cli, err := integration2.NewClient(t, clientv3.Config{Endpoints: exampleEndpoints()}) require.NoError(t, err) defer cli.Close() - lease, err := cli.Grant(context.Background(), 100) + lease, err := cli.Grant(t.Context(), 100) require.NoError(t, err) s, err := concurrency.NewSession(cli, concurrency.WithLease(lease.ID)) require.NoError(t, err) @@ -58,7 +58,7 @@ func TestSessionTTLOptions(t *testing.T) { leaseID := s.Lease() // TTL retrieved should be less than the set TTL, but not equal to default:60 or exprired:-1 - resp, err := cli.Lease.TimeToLive(context.Background(), leaseID) + resp, err := cli.Lease.TimeToLive(t.Context(), leaseID) if err != nil { t.Log(err) } @@ -77,7 +77,7 @@ func TestSessionCtx(t *testing.T) { cli, err := integration2.NewClient(t, clientv3.Config{Endpoints: exampleEndpoints()}) require.NoError(t, err) defer cli.Close() - lease, err := cli.Grant(context.Background(), 100) + lease, err := cli.Grant(t.Context(), 100) require.NoError(t, err) s, err := concurrency.NewSession(cli, concurrency.WithLease(lease.ID)) require.NoError(t, err) From 41098a43fb0fcbdd456905524c496bde8f71262c Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Sat, 31 May 2025 00:44:58 +0200 Subject: [PATCH 0244/1068] chore(test): address Go usetesting for `connectivity`. Signed-off-by: Mustafa Elbehery --- .../clientv3/connectivity/black_hole_test.go | 10 +++++----- tests/integration/clientv3/connectivity/dial_test.go | 8 ++++---- .../clientv3/connectivity/network_partition_test.go | 10 +++++----- .../clientv3/connectivity/server_shutdown_test.go | 10 +++++----- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/tests/integration/clientv3/connectivity/black_hole_test.go b/tests/integration/clientv3/connectivity/black_hole_test.go index a484447149c8..38c463126231 100644 --- a/tests/integration/clientv3/connectivity/black_hole_test.go +++ b/tests/integration/clientv3/connectivity/black_hole_test.go @@ -66,7 +66,7 @@ func TestBalancerUnderBlackholeKeepAliveWatch(t *testing.T) { require.NoError(t, err) defer cli.Close() - wch := cli.Watch(context.Background(), "foo", clientv3.WithCreatedNotify()) + wch := cli.Watch(t.Context(), "foo", clientv3.WithCreatedNotify()) _, ok := <-wch require.Truef(t, ok, "watch failed on creation") @@ -78,7 +78,7 @@ func TestBalancerUnderBlackholeKeepAliveWatch(t *testing.T) { clus.Members[0].Bridge().Blackhole() - _, err = clus.Client(1).Put(context.TODO(), "foo", "bar") + _, err = clus.Client(1).Put(t.Context(), "foo", "bar") require.NoError(t, err) select { case <-wch: @@ -94,9 +94,9 @@ func TestBalancerUnderBlackholeKeepAliveWatch(t *testing.T) { clus.Members[1].Bridge().Blackhole() // make sure client[0] can connect to eps[0] after remove the blackhole. - _, err = clus.Client(0).Get(context.TODO(), "foo") + _, err = clus.Client(0).Get(t.Context(), "foo") require.NoError(t, err) - _, err = clus.Client(0).Put(context.TODO(), "foo", "bar1") + _, err = clus.Client(0).Put(t.Context(), "foo", "bar1") require.NoError(t, err) select { @@ -196,7 +196,7 @@ func testBalancerUnderBlackholeNoKeepAlive(t *testing.T, op func(*clientv3.Clien // TODO: first operation can succeed // when gRPC supports better retry on non-delivered request for i := 0; i < 5; i++ { - ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) + ctx, cancel := context.WithTimeout(t.Context(), time.Second*5) err = op(cli, ctx) cancel() if err == nil { diff --git a/tests/integration/clientv3/connectivity/dial_test.go b/tests/integration/clientv3/connectivity/dial_test.go index 80a3cb90f7ab..527d50096666 100644 --- a/tests/integration/clientv3/connectivity/dial_test.go +++ b/tests/integration/clientv3/connectivity/dial_test.go @@ -129,7 +129,7 @@ func testDialSetEndpoints(t *testing.T, setBefore bool) { cli.SetEndpoints(eps[toKill%3], eps[(toKill+1)%3]) } time.Sleep(time.Second * 2) - ctx, cancel := context.WithTimeout(context.Background(), integration2.RequestWaitTimeout) + ctx, cancel := context.WithTimeout(t.Context(), integration2.RequestWaitTimeout) _, err = cli.Get(ctx, "foo", clientv3.WithSerializable()) require.NoError(t, err) cancel() @@ -150,7 +150,7 @@ func TestSwitchSetEndpoints(t *testing.T) { cli.SetEndpoints(eps...) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) defer cancel() _, err := cli.Get(ctx, "foo") require.NoError(t, err) @@ -187,7 +187,7 @@ func TestDialForeignEndpoint(t *testing.T) { // grpc can return a lazy connection that's not connected yet; confirm // that it can communicate with the cluster. kvc := clientv3.NewKVFromKVClient(pb.NewKVClient(conn), clus.Client(0)) - ctx, cancel := context.WithTimeout(context.TODO(), 5*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) defer cancel() _, gerr := kvc.Get(ctx, "abc") require.NoError(t, gerr) @@ -201,7 +201,7 @@ func TestSetEndpointAndPut(t *testing.T) { defer clus.Terminate(t) clus.Client(1).SetEndpoints(clus.Members[0].GRPCURL) - _, err := clus.Client(1).Put(context.TODO(), "foo", "bar") + _, err := clus.Client(1).Put(t.Context(), "foo", "bar") if err != nil && !strings.Contains(err.Error(), "closing") { t.Fatal(err) } diff --git a/tests/integration/clientv3/connectivity/network_partition_test.go b/tests/integration/clientv3/connectivity/network_partition_test.go index eb14534e92da..c5f034ecb2a9 100644 --- a/tests/integration/clientv3/connectivity/network_partition_test.go +++ b/tests/integration/clientv3/connectivity/network_partition_test.go @@ -136,7 +136,7 @@ func testBalancerUnderNetworkPartition(t *testing.T, op func(*clientv3.Client, c clus.Members[0].InjectPartition(t, clus.Members[1:]...) for i := 0; i < 5; i++ { - ctx, cancel := context.WithTimeout(context.Background(), timeout) + ctx, cancel := context.WithTimeout(t.Context(), timeout) err = op(cli, ctx) t.Logf("Op returned error: %v", err) t.Log("Cancelling...") @@ -191,7 +191,7 @@ func TestBalancerUnderNetworkPartitionLinearizableGetLeaderElection(t *testing.T // expects balancer to round robin to leader within two attempts for i := 0; i < 2; i++ { - ctx, cancel := context.WithTimeout(context.TODO(), timeout) + ctx, cancel := context.WithTimeout(t.Context(), timeout) _, err = cli.Get(ctx, "a") cancel() if err == nil { @@ -240,7 +240,7 @@ func testBalancerUnderNetworkPartitionWatch(t *testing.T, isolateLeader bool) { // under the cover to other available eps, but expose the failure to the // caller (test assertion). - wch := watchCli.Watch(clientv3.WithRequireLeader(context.Background()), "foo", clientv3.WithCreatedNotify()) + wch := watchCli.Watch(clientv3.WithRequireLeader(t.Context()), "foo", clientv3.WithCreatedNotify()) select { case <-wch: case <-time.After(integration2.RequestWaitTimeout): @@ -297,13 +297,13 @@ func TestDropReadUnderNetworkPartition(t *testing.T) { clus.Members[leaderIndex].InjectPartition(t, clus.Members[(leaderIndex+1)%3], clus.Members[(leaderIndex+2)%3]) kvc := clientv3.NewKVFromKVClient(pb.NewKVClient(conn), nil) - ctx, cancel := context.WithTimeout(context.TODO(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) _, err = kvc.Get(ctx, "a") cancel() require.ErrorIsf(t, err, rpctypes.ErrLeaderChanged, "expected %v, got %v", rpctypes.ErrLeaderChanged, err) for i := 0; i < 5; i++ { - ctx, cancel = context.WithTimeout(context.TODO(), 10*time.Second) + ctx, cancel = context.WithTimeout(t.Context(), 10*time.Second) _, err = kvc.Get(ctx, "a") cancel() if err != nil { diff --git a/tests/integration/clientv3/connectivity/server_shutdown_test.go b/tests/integration/clientv3/connectivity/server_shutdown_test.go index 9e44ea9f9068..bb053ac10dbc 100644 --- a/tests/integration/clientv3/connectivity/server_shutdown_test.go +++ b/tests/integration/clientv3/connectivity/server_shutdown_test.go @@ -58,7 +58,7 @@ func TestBalancerUnderServerShutdownWatch(t *testing.T) { watchCli.SetEndpoints(eps...) key, val := "foo", "bar" - wch := watchCli.Watch(context.Background(), key, clientv3.WithCreatedNotify()) + wch := watchCli.Watch(t.Context(), key, clientv3.WithCreatedNotify()) select { case <-wch: case <-time.After(integration2.RequestWaitTimeout): @@ -94,7 +94,7 @@ func TestBalancerUnderServerShutdownWatch(t *testing.T) { require.NoError(t, err) defer putCli.Close() for { - ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 2*time.Second) _, err = putCli.Put(ctx, key, val) cancel() if err == nil { @@ -170,7 +170,7 @@ func testBalancerUnderServerShutdownMutable(t *testing.T, op func(*clientv3.Clie // TODO: remove this (expose client connection state?) time.Sleep(time.Second) - cctx, ccancel := context.WithTimeout(context.Background(), time.Second) + cctx, ccancel := context.WithTimeout(t.Context(), time.Second) err = op(cli, cctx) ccancel() require.NoError(t, err) @@ -222,7 +222,7 @@ func testBalancerUnderServerShutdownImmutable(t *testing.T, op func(*clientv3.Cl // switched to others when eps[0] was explicitly shut down // and following request should succeed - cctx, ccancel := context.WithTimeout(context.Background(), timeout) + cctx, ccancel := context.WithTimeout(t.Context(), timeout) err = op(cli, cctx) ccancel() if err != nil { @@ -329,7 +329,7 @@ func testBalancerUnderServerStopInflightRangeOnRestart(t *testing.T, linearizabl donec, readyc := make(chan struct{}), make(chan struct{}, 1) go func() { defer close(donec) - ctx, cancel := context.WithTimeout(context.TODO(), clientTimeout) + ctx, cancel := context.WithTimeout(t.Context(), clientTimeout) readyc <- struct{}{} // TODO: The new grpc load balancer will not pin to an endpoint From 76bf6b353c8684f35696a562042c227fcd343037 Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Sat, 31 May 2025 01:16:13 +0200 Subject: [PATCH 0245/1068] chore(test): address Go usetesting for `lease_test` Signed-off-by: Mustafa Elbehery --- .../integration/clientv3/lease/lease_test.go | 102 +++++++++--------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/tests/integration/clientv3/lease/lease_test.go b/tests/integration/clientv3/lease/lease_test.go index 083d45a3cd99..0cdd96ab7bcf 100644 --- a/tests/integration/clientv3/lease/lease_test.go +++ b/tests/integration/clientv3/lease/lease_test.go @@ -40,7 +40,7 @@ func TestLeaseNotFoundError(t *testing.T) { kv := clus.RandClient() - _, err := kv.Put(context.TODO(), "foo", "bar", clientv3.WithLease(clientv3.LeaseID(500))) + _, err := kv.Put(t.Context(), "foo", "bar", clientv3.WithLease(clientv3.LeaseID(500))) require.ErrorIsf(t, err, rpctypes.ErrLeaseNotFound, "expected %v, got %v", rpctypes.ErrLeaseNotFound, err) } @@ -54,15 +54,15 @@ func TestLeaseGrant(t *testing.T) { kv := clus.RandClient() - _, merr := lapi.Grant(context.Background(), clientv3.MaxLeaseTTL+1) + _, merr := lapi.Grant(t.Context(), clientv3.MaxLeaseTTL+1) require.ErrorIsf(t, merr, rpctypes.ErrLeaseTTLTooLarge, "err = %v, want %v", merr, rpctypes.ErrLeaseTTLTooLarge) - resp, err := lapi.Grant(context.Background(), 10) + resp, err := lapi.Grant(t.Context(), 10) if err != nil { t.Errorf("failed to create lease %v", err) } - _, err = kv.Put(context.TODO(), "foo", "bar", clientv3.WithLease(resp.ID)) + _, err = kv.Put(t.Context(), "foo", "bar", clientv3.WithLease(resp.ID)) require.NoErrorf(t, err, "failed to create key with lease %v", err) } @@ -76,17 +76,17 @@ func TestLeaseRevoke(t *testing.T) { kv := clus.RandClient() - resp, err := lapi.Grant(context.Background(), 10) + resp, err := lapi.Grant(t.Context(), 10) if err != nil { t.Errorf("failed to create lease %v", err) } - _, err = lapi.Revoke(context.Background(), resp.ID) + _, err = lapi.Revoke(t.Context(), resp.ID) if err != nil { t.Errorf("failed to revoke lease %v", err) } - _, err = kv.Put(context.TODO(), "foo", "bar", clientv3.WithLease(resp.ID)) + _, err = kv.Put(t.Context(), "foo", "bar", clientv3.WithLease(resp.ID)) require.ErrorIsf(t, err, rpctypes.ErrLeaseNotFound, "err = %v, want %v", err, rpctypes.ErrLeaseNotFound) } @@ -98,17 +98,17 @@ func TestLeaseKeepAliveOnce(t *testing.T) { lapi := clus.RandClient() - resp, err := lapi.Grant(context.Background(), 10) + resp, err := lapi.Grant(t.Context(), 10) if err != nil { t.Errorf("failed to create lease %v", err) } - _, err = lapi.KeepAliveOnce(context.Background(), resp.ID) + _, err = lapi.KeepAliveOnce(t.Context(), resp.ID) if err != nil { t.Errorf("failed to keepalive lease %v", err) } - _, err = lapi.KeepAliveOnce(context.Background(), clientv3.LeaseID(0)) + _, err = lapi.KeepAliveOnce(t.Context(), clientv3.LeaseID(0)) if !errors.Is(err, rpctypes.ErrLeaseNotFound) { t.Errorf("expected %v, got %v", rpctypes.ErrLeaseNotFound, err) } @@ -123,7 +123,7 @@ func TestLeaseKeepAlive(t *testing.T) { lapi := clus.Client(0) clus.TakeClient(0) - resp, err := lapi.Grant(context.Background(), 10) + resp, err := lapi.Grant(t.Context(), 10) if err != nil { t.Errorf("failed to create lease %v", err) } @@ -133,7 +133,7 @@ func TestLeaseKeepAlive(t *testing.T) { _ func() } - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() rc, kerr := lapi.KeepAlive(uncomparableCtx{Context: ctx}, resp.ID) if kerr != nil { @@ -151,7 +151,7 @@ func TestLeaseKeepAlive(t *testing.T) { t.Errorf("ID = %x, want %x", kresp.ID, resp.ID) } - ctx2, cancel2 := context.WithCancel(context.Background()) + ctx2, cancel2 := context.WithCancel(t.Context()) rc2, kerr2 := lapi.KeepAlive(uncomparableCtx{Context: ctx2}, resp.ID) if kerr2 != nil { t.Errorf("failed to keepalive lease %v", kerr2) @@ -187,11 +187,11 @@ func TestLeaseKeepAliveSeconds(t *testing.T) { cli := clus.Client(0) - resp, err := cli.Grant(context.Background(), 3) + resp, err := cli.Grant(t.Context(), 3) if err != nil { t.Errorf("failed to create lease %v", err) } - rc, kerr := cli.KeepAlive(context.Background(), resp.ID) + rc, kerr := cli.KeepAlive(t.Context(), resp.ID) if kerr != nil { t.Errorf("failed to keepalive lease %v", kerr) } @@ -217,12 +217,12 @@ func TestLeaseKeepAliveHandleFailure(t *testing.T) { // TODO: change this line to get a cluster client lapi := clus.RandClient() - resp, err := lapi.Grant(context.Background(), 10) + resp, err := lapi.Grant(t.Context(), 10) if err != nil { t.Errorf("failed to create lease %v", err) } - rc, kerr := lapi.KeepAlive(context.Background(), resp.ID) + rc, kerr := lapi.KeepAlive(t.Context(), resp.ID) if kerr != nil { t.Errorf("failed to keepalive lease %v", kerr) } @@ -272,14 +272,14 @@ func TestLeaseKeepAliveNotFound(t *testing.T) { cli := clus.RandClient() var lchs []leaseCh for i := 0; i < 3; i++ { - resp, rerr := cli.Grant(context.TODO(), 5) + resp, rerr := cli.Grant(t.Context(), 5) require.NoError(t, rerr) - kach, kaerr := cli.KeepAlive(context.Background(), resp.ID) + kach, kaerr := cli.KeepAlive(t.Context(), resp.ID) require.NoError(t, kaerr) lchs = append(lchs, leaseCh{resp.ID, kach}) } - _, err := cli.Revoke(context.TODO(), lchs[1].lid) + _, err := cli.Revoke(t.Context(), lchs[1].lid) require.NoError(t, err) <-lchs[0].ch @@ -304,7 +304,7 @@ func TestLeaseGrantErrConnClosed(t *testing.T) { donec := make(chan struct{}) go func() { defer close(donec) - _, err := cli.Grant(context.TODO(), 5) + _, err := cli.Grant(t.Context(), 5) if !clientv3.IsConnCanceled(err) { // context.Canceled if grpc-go balancer calls 'Get' with an inflight client.Close. t.Errorf("expected %v, or server unavailable, got %v", context.Canceled, err) @@ -330,7 +330,7 @@ func TestLeaseKeepAliveFullResponseQueue(t *testing.T) { lapi := clus.Client(0) // expect lease keepalive every 10-second - lresp, err := lapi.Grant(context.Background(), 30) + lresp, err := lapi.Grant(t.Context(), 30) require.NoErrorf(t, err, "failed to create lease %v", err) id := lresp.ID @@ -341,14 +341,14 @@ func TestLeaseKeepAliveFullResponseQueue(t *testing.T) { clientv3.LeaseResponseChSize = 0 // never fetch from response queue, and let it become full - _, err = lapi.KeepAlive(context.Background(), id) + _, err = lapi.KeepAlive(t.Context(), id) require.NoErrorf(t, err, "failed to keepalive lease %v", err) // TTL should not be refreshed after 3 seconds // expect keepalive to be triggered after TTL/3 time.Sleep(3 * time.Second) - tr, terr := lapi.TimeToLive(context.Background(), id) + tr, terr := lapi.TimeToLive(t.Context(), id) require.NoErrorf(t, terr, "failed to get lease information %v", terr) if tr.TTL >= 29 { t.Errorf("unexpected kept-alive lease TTL %d", tr.TTL) @@ -367,7 +367,7 @@ func TestLeaseGrantNewAfterClose(t *testing.T) { donec := make(chan struct{}) go func() { - _, err := cli.Grant(context.TODO(), 5) + _, err := cli.Grant(t.Context(), 5) if !clientv3.IsConnCanceled(err) { t.Errorf("expected %v or server unavailable, got %v", context.Canceled, err) } @@ -387,7 +387,7 @@ func TestLeaseRevokeNewAfterClose(t *testing.T) { defer clus.Terminate(t) cli := clus.Client(0) - resp, err := cli.Grant(context.TODO(), 5) + resp, err := cli.Grant(t.Context(), 5) require.NoError(t, err) leaseID := resp.ID @@ -396,7 +396,7 @@ func TestLeaseRevokeNewAfterClose(t *testing.T) { errMsgCh := make(chan string, 1) go func() { - _, err := cli.Revoke(context.TODO(), leaseID) + _, err := cli.Revoke(t.Context(), leaseID) if !clientv3.IsConnCanceled(err) { errMsgCh <- fmt.Sprintf("expected %v or server unavailable, got %v", context.Canceled, err) } else { @@ -422,9 +422,9 @@ func TestLeaseKeepAliveCloseAfterDisconnectRevoke(t *testing.T) { cli := clus.Client(0) // setup lease and do a keepalive - resp, err := cli.Grant(context.Background(), 10) + resp, err := cli.Grant(t.Context(), 10) require.NoError(t, err) - rc, kerr := cli.KeepAlive(context.Background(), resp.ID) + rc, kerr := cli.KeepAlive(t.Context(), resp.ID) require.NoError(t, kerr) kresp := <-rc require.Equalf(t, kresp.ID, resp.ID, "ID = %x, want %x", kresp.ID, resp.ID) @@ -434,7 +434,7 @@ func TestLeaseKeepAliveCloseAfterDisconnectRevoke(t *testing.T) { time.Sleep(time.Second) clus.WaitLeader(t) - _, err = clus.Client(1).Revoke(context.TODO(), resp.ID) + _, err = clus.Client(1).Revoke(t.Context(), resp.ID) require.NoError(t, err) clus.Members[0].Restart(t) @@ -461,11 +461,11 @@ func TestLeaseKeepAliveInitTimeout(t *testing.T) { cli := clus.Client(0) // setup lease and do a keepalive - resp, err := cli.Grant(context.Background(), 5) + resp, err := cli.Grant(t.Context(), 5) require.NoError(t, err) // keep client disconnected clus.Members[0].Stop(t) - rc, kerr := cli.KeepAlive(context.Background(), resp.ID) + rc, kerr := cli.KeepAlive(t.Context(), resp.ID) require.NoError(t, kerr) select { case ka, ok := <-rc: @@ -488,9 +488,9 @@ func TestLeaseKeepAliveTTLTimeout(t *testing.T) { cli := clus.Client(0) // setup lease and do a keepalive - resp, err := cli.Grant(context.Background(), 5) + resp, err := cli.Grant(t.Context(), 5) require.NoError(t, err) - rc, kerr := cli.KeepAlive(context.Background(), resp.ID) + rc, kerr := cli.KeepAlive(t.Context(), resp.ID) require.NoError(t, kerr) kresp := <-rc require.Equalf(t, kresp.ID, resp.ID, "ID = %x, want %x", kresp.ID, resp.ID) @@ -516,7 +516,7 @@ func TestLeaseTimeToLive(t *testing.T) { c := clus.RandClient() lapi := c - resp, err := lapi.Grant(context.Background(), 10) + resp, err := lapi.Grant(t.Context(), 10) if err != nil { t.Errorf("failed to create lease %v", err) } @@ -524,15 +524,15 @@ func TestLeaseTimeToLive(t *testing.T) { kv := clus.RandClient() keys := []string{"foo1", "foo2"} for i := range keys { - _, err = kv.Put(context.TODO(), keys[i], "bar", clientv3.WithLease(resp.ID)) + _, err = kv.Put(t.Context(), keys[i], "bar", clientv3.WithLease(resp.ID)) require.NoError(t, err) } // linearized read to ensure Puts propagated to server backing lapi - _, err = c.Get(context.TODO(), "abc") + _, err = c.Get(t.Context(), "abc") require.NoError(t, err) - lresp, lerr := lapi.TimeToLive(context.Background(), resp.ID, clientv3.WithAttachedKeys()) + lresp, lerr := lapi.TimeToLive(t.Context(), resp.ID, clientv3.WithAttachedKeys()) require.NoError(t, lerr) require.Equalf(t, lresp.ID, resp.ID, "leaseID expected %d, got %d", resp.ID, lresp.ID) require.Equalf(t, int64(10), lresp.GrantedTTL, "GrantedTTL expected %d, got %d", 10, lresp.GrantedTTL) @@ -546,7 +546,7 @@ func TestLeaseTimeToLive(t *testing.T) { sort.Strings(ks) require.Truef(t, reflect.DeepEqual(ks, keys), "keys expected %v, got %v", keys, ks) - lresp, lerr = lapi.TimeToLive(context.Background(), resp.ID) + lresp, lerr = lapi.TimeToLive(t.Context(), resp.ID) require.NoError(t, lerr) require.Emptyf(t, lresp.Keys, "unexpected keys %+v", lresp.Keys) } @@ -558,16 +558,16 @@ func TestLeaseTimeToLiveLeaseNotFound(t *testing.T) { defer clus.Terminate(t) cli := clus.RandClient() - resp, err := cli.Grant(context.Background(), 10) + resp, err := cli.Grant(t.Context(), 10) if err != nil { t.Errorf("failed to create lease %v", err) } - _, err = cli.Revoke(context.Background(), resp.ID) + _, err = cli.Revoke(t.Context(), resp.ID) if err != nil { t.Errorf("failed to Revoke lease %v", err) } - lresp, err := cli.TimeToLive(context.Background(), resp.ID) + lresp, err := cli.TimeToLive(t.Context(), resp.ID) // TimeToLive() should return a response with TTL=-1. require.NoErrorf(t, err, "expected err to be nil") require.NotNilf(t, lresp, "expected lresp not to be nil") @@ -586,14 +586,14 @@ func TestLeaseLeases(t *testing.T) { var ids []clientv3.LeaseID for i := 0; i < 5; i++ { - resp, err := cli.Grant(context.Background(), 10) + resp, err := cli.Grant(t.Context(), 10) if err != nil { t.Errorf("failed to create lease %v", err) } ids = append(ids, resp.ID) } - resp, err := cli.Leases(context.Background()) + resp, err := cli.Leases(t.Context()) require.NoError(t, err) require.Lenf(t, resp.Leases, 5, "len(resp.Leases) expected 5, got %d", len(resp.Leases)) for i := range resp.Leases { @@ -610,10 +610,10 @@ func TestLeaseRenewLostQuorum(t *testing.T) { defer clus.Terminate(t) cli := clus.Client(0) - r, err := cli.Grant(context.TODO(), 4) + r, err := cli.Grant(t.Context(), 4) require.NoError(t, err) - kctx, kcancel := context.WithCancel(context.Background()) + kctx, kcancel := context.WithCancel(t.Context()) defer kcancel() ka, err := cli.KeepAlive(kctx, r.ID) require.NoError(t, err) @@ -651,7 +651,7 @@ func TestLeaseKeepAliveLoopExit(t *testing.T) { clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) defer clus.Terminate(t) - ctx := context.Background() + ctx := t.Context() cli := clus.Client(0) clus.TakeClient(0) @@ -727,15 +727,15 @@ func TestLeaseWithRequireLeader(t *testing.T) { defer clus.Terminate(t) c := clus.Client(0) - lid1, err1 := c.Grant(context.TODO(), 60) + lid1, err1 := c.Grant(t.Context(), 60) require.NoError(t, err1) - lid2, err2 := c.Grant(context.TODO(), 60) + lid2, err2 := c.Grant(t.Context(), 60) require.NoError(t, err2) // kaReqLeader close if the leader is lost - kaReqLeader, kerr1 := c.KeepAlive(clientv3.WithRequireLeader(context.TODO()), lid1.ID) + kaReqLeader, kerr1 := c.KeepAlive(clientv3.WithRequireLeader(t.Context()), lid1.ID) require.NoError(t, kerr1) // kaWait will wait even if the leader is lost - kaWait, kerr2 := c.KeepAlive(context.TODO(), lid2.ID) + kaWait, kerr2 := c.KeepAlive(t.Context(), lid2.ID) require.NoError(t, kerr2) select { From 2dc5c6bc78422aa830bdebc26a1eaec054522a50 Mon Sep 17 00:00:00 2001 From: joshjms Date: Thu, 29 May 2025 15:12:33 +0800 Subject: [PATCH 0246/1068] robustness: Sync keys in keystore on list request response Signed-off-by: joshjms --- tests/robustness/traffic/etcd.go | 1 + tests/robustness/traffic/key_store.go | 64 +++++++++++++++++++++++++-- 2 files changed, 62 insertions(+), 3 deletions(-) diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index 47119646537a..7bf941d0f079 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -240,6 +240,7 @@ func (c etcdTrafficClient) Request(ctx context.Context, request etcdRequestType, var resp *clientv3.GetResponse resp, err = c.client.Range(ctx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), 0, limit) if resp != nil { + c.keyStore.SyncKeys(resp) rev = resp.Header.Revision } case StaleList: diff --git a/tests/robustness/traffic/key_store.go b/tests/robustness/traffic/key_store.go index 19cd8cc189e9..95b6769d0e66 100644 --- a/tests/robustness/traffic/key_store.go +++ b/tests/robustness/traffic/key_store.go @@ -17,8 +17,12 @@ package traffic import ( "fmt" "math/rand" + "slices" + "sort" + "strconv" "sync" + clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/tests/v3/robustness/model" ) @@ -26,9 +30,10 @@ import ( type keyStore struct { mu sync.Mutex - counter int - keys []string - keyPrefix string + counter int + keys []string + keyPrefix string + latestRevision int64 } func NewKeyStore(size int, keyPrefix string) *keyStore { @@ -98,6 +103,59 @@ func (k *keyStore) GetPrefix() string { return k.keyPrefix } +// SyncKeys reconciles our local key store with the keys currently in etcd. +// +// SyncKeys resolves this by: +// 1. Getting the list request result of all the keys. +// 2. Adding any keys that exist in etcd but are missing in the key store. +// 3. Maintaining the key store size by removing the higher numbered keys. +// +// Notice that higher numbered keys will eventually be added +// again into the keystore, so it is safe to temporarily remove them from the. +// key store. +func (k *keyStore) SyncKeys(resp *clientv3.GetResponse) { + k.mu.Lock() + defer k.mu.Unlock() + + if resp.Header.GetRevision() < k.latestRevision { + return + } + + k.latestRevision = resp.Header.GetRevision() + + listKeys := make([]string, len(resp.Kvs)) + for i, kv := range resp.Kvs { + listKeys[i] = string(kv.Key) + } + + for _, key := range k.keys { + if !slices.Contains(listKeys, key) { + listKeys = append(listKeys, key) + } + } + + sort.Slice(listKeys, func(i, j int) bool { + keyNumI := k.getKeyNum(listKeys[i]) + keyNumJ := k.getKeyNum(listKeys[j]) + return keyNumI < keyNumJ + }) + + k.keys = listKeys[:len(k.keys)] + + lastKeyNum := k.getKeyNum(k.keys[len(k.keys)-1]) + k.counter = lastKeyNum + 1 +} + +func (k *keyStore) getKeyNum(key string) int { + if len(key) < len(k.keyPrefix) { + return 0 + } + + numStr := key[len(k.keyPrefix):] + num, _ := strconv.Atoi(numStr) + return num +} + func (k *keyStore) replaceKey(index int) { if rand.Intn(100) < 90 { k.keys[index] = fmt.Sprintf("%s%d", k.keyPrefix, k.counter) From be45cba1a7b36e33589974cf8672d1bc09f9327b Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Sat, 31 May 2025 01:33:38 +0200 Subject: [PATCH 0247/1068] chore(test): address Go usetesting for `v3_auth_test` Signed-off-by: Mustafa Elbehery --- tests/integration/v3_auth_test.go | 60 +++++++++++++++---------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/tests/integration/v3_auth_test.go b/tests/integration/v3_auth_test.go index 0fc2a94eb9f0..582c9108337a 100644 --- a/tests/integration/v3_auth_test.go +++ b/tests/integration/v3_auth_test.go @@ -37,7 +37,7 @@ func TestV3AuthEmptyUserGet(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) - ctx, cancel := context.WithTimeout(context.TODO(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() api := integration.ToGRPC(clus.Client(0)) @@ -57,7 +57,7 @@ func TestV3AuthEmptyUserPut(t *testing.T) { }) defer clus.Terminate(t) - ctx, cancel := context.WithTimeout(context.TODO(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() api := integration.ToGRPC(clus.Client(0)) @@ -85,7 +85,7 @@ func TestV3AuthTokenWithDisable(t *testing.T) { require.NoError(t, cerr) defer c.Close() - rctx, cancel := context.WithCancel(context.TODO()) + rctx, cancel := context.WithCancel(t.Context()) donec := make(chan struct{}) go func() { defer close(donec) @@ -95,7 +95,7 @@ func TestV3AuthTokenWithDisable(t *testing.T) { }() time.Sleep(10 * time.Millisecond) - _, err := c.AuthDisable(context.TODO()) + _, err := c.AuthDisable(t.Context()) require.NoError(t, err) time.Sleep(10 * time.Millisecond) @@ -110,13 +110,13 @@ func TestV3AuthRevision(t *testing.T) { api := integration.ToGRPC(clus.Client(0)) - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) presp, perr := api.KV.Put(ctx, &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}) cancel() require.NoError(t, perr) rev := presp.Header.Revision - ctx, cancel = context.WithTimeout(context.Background(), 5*time.Second) + ctx, cancel = context.WithTimeout(t.Context(), 5*time.Second) aresp, aerr := api.Auth.UserAdd(ctx, &pb.AuthUserAddRequest{Name: "root", Password: "123", Options: &authpb.UserAddOptions{NoPassword: false}}) cancel() require.NoError(t, aerr) @@ -152,18 +152,18 @@ func testV3AuthWithLeaseRevokeWithRoot(t *testing.T, ccfg integration.ClusterCon require.NoError(t, cerr) defer rootc.Close() - leaseResp, err := rootc.Grant(context.TODO(), 2) + leaseResp, err := rootc.Grant(t.Context(), 2) require.NoError(t, err) leaseID := leaseResp.ID - _, err = rootc.Put(context.TODO(), "foo", "bar", clientv3.WithLease(leaseID)) + _, err = rootc.Put(t.Context(), "foo", "bar", clientv3.WithLease(leaseID)) require.NoError(t, err) // wait for lease expire time.Sleep(3 * time.Second) tresp, terr := rootc.TimeToLive( - context.TODO(), + t.Context(), leaseID, clientv3.WithAttachedKeys(), ) @@ -208,17 +208,17 @@ func TestV3AuthWithLeaseRevoke(t *testing.T) { require.NoError(t, cerr) defer rootc.Close() - leaseResp, err := rootc.Grant(context.TODO(), 90) + leaseResp, err := rootc.Grant(t.Context(), 90) require.NoError(t, err) leaseID := leaseResp.ID // permission of k3 isn't granted to user1 - _, err = rootc.Put(context.TODO(), "k3", "val", clientv3.WithLease(leaseID)) + _, err = rootc.Put(t.Context(), "k3", "val", clientv3.WithLease(leaseID)) require.NoError(t, err) userc, cerr := integration.NewClient(t, clientv3.Config{Endpoints: clus.Client(0).Endpoints(), Username: "user1", Password: "user1-123"}) require.NoError(t, cerr) defer userc.Close() - _, err = userc.Revoke(context.TODO(), leaseID) + _, err = userc.Revoke(t.Context(), leaseID) if err == nil { t.Fatal("revoking from user1 should be failed with permission denied") } @@ -337,24 +337,24 @@ func TestV3AuthWithLeaseAttach(t *testing.T) { require.NoError(t, cerr) defer user2c.Close() - leaseResp, err := user1c.Grant(context.TODO(), 90) + leaseResp, err := user1c.Grant(t.Context(), 90) require.NoError(t, err) leaseID := leaseResp.ID // permission of k2 is also granted to user2 - _, err = user1c.Put(context.TODO(), "k2", "val", clientv3.WithLease(leaseID)) + _, err = user1c.Put(t.Context(), "k2", "val", clientv3.WithLease(leaseID)) require.NoError(t, err) - _, err = user2c.Revoke(context.TODO(), leaseID) + _, err = user2c.Revoke(t.Context(), leaseID) require.NoError(t, err) - leaseResp, err = user1c.Grant(context.TODO(), 90) + leaseResp, err = user1c.Grant(t.Context(), 90) require.NoError(t, err) leaseID = leaseResp.ID // permission of k1 isn't granted to user2 - _, err = user1c.Put(context.TODO(), "k1", "val", clientv3.WithLease(leaseID)) + _, err = user1c.Put(t.Context(), "k1", "val", clientv3.WithLease(leaseID)) require.NoError(t, err) - _, err = user2c.Revoke(context.TODO(), leaseID) + _, err = user2c.Revoke(t.Context(), leaseID) if err == nil { t.Fatal("revoking from user2 should be failed with permission denied") } @@ -362,11 +362,11 @@ func TestV3AuthWithLeaseAttach(t *testing.T) { func authSetupUsers(t *testing.T, auth pb.AuthClient, users []user) { for _, user := range users { - _, err := auth.UserAdd(context.TODO(), &pb.AuthUserAddRequest{Name: user.name, Password: user.password, Options: &authpb.UserAddOptions{NoPassword: false}}) + _, err := auth.UserAdd(t.Context(), &pb.AuthUserAddRequest{Name: user.name, Password: user.password, Options: &authpb.UserAddOptions{NoPassword: false}}) require.NoError(t, err) - _, err = auth.RoleAdd(context.TODO(), &pb.AuthRoleAddRequest{Name: user.role}) + _, err = auth.RoleAdd(t.Context(), &pb.AuthRoleAddRequest{Name: user.role}) require.NoError(t, err) - _, err = auth.UserGrantRole(context.TODO(), &pb.AuthUserGrantRoleRequest{User: user.name, Role: user.role}) + _, err = auth.UserGrantRole(t.Context(), &pb.AuthUserGrantRoleRequest{User: user.name, Role: user.role}) require.NoError(t, err) if len(user.key) == 0 { @@ -378,7 +378,7 @@ func authSetupUsers(t *testing.T, auth pb.AuthClient, users []user) { Key: []byte(user.key), RangeEnd: []byte(user.end), } - _, err = auth.RoleGrantPermission(context.TODO(), &pb.AuthRoleGrantPermissionRequest{Name: user.role, Perm: perm}) + _, err = auth.RoleGrantPermission(t.Context(), &pb.AuthRoleGrantPermissionRequest{Name: user.role, Perm: perm}) require.NoError(t, err) } } @@ -393,7 +393,7 @@ func authSetupRoot(t *testing.T, auth pb.AuthClient) { }, } authSetupUsers(t, auth, root) - _, err := auth.AuthEnable(context.TODO(), &pb.AuthEnableRequest{}) + _, err := auth.AuthEnable(t.Context(), &pb.AuthEnableRequest{}) require.NoError(t, err) } @@ -406,12 +406,12 @@ func TestV3AuthNonAuthorizedRPCs(t *testing.T) { key := "foo" val := "bar" - _, err := nonAuthedKV.Put(context.TODO(), key, val) + _, err := nonAuthedKV.Put(t.Context(), key, val) require.NoErrorf(t, err, "couldn't put key (%v)", err) authSetupRoot(t, integration.ToGRPC(clus.Client(0)).Auth) - respput, err := nonAuthedKV.Put(context.TODO(), key, val) + respput, err := nonAuthedKV.Put(t.Context(), key, val) require.Truef(t, eqErrGRPC(err, rpctypes.ErrGRPCUserEmpty), "could put key (%v), it should cause an error of permission denied", respput) } @@ -496,13 +496,13 @@ func TestV3AuthOldRevConcurrent(t *testing.T) { f := func(i int) { defer wg.Done() role, user := fmt.Sprintf("test-role-%d", i), fmt.Sprintf("test-user-%d", i) - _, err := c.RoleAdd(context.TODO(), role) + _, err := c.RoleAdd(t.Context(), role) require.NoError(t, err) - _, err = c.RoleGrantPermission(context.TODO(), role, "\x00", clientv3.GetPrefixRangeEnd(""), clientv3.PermissionType(clientv3.PermReadWrite)) + _, err = c.RoleGrantPermission(t.Context(), role, "\x00", clientv3.GetPrefixRangeEnd(""), clientv3.PermissionType(clientv3.PermReadWrite)) require.NoError(t, err) - _, err = c.UserAdd(context.TODO(), user, "123") + _, err = c.UserAdd(t.Context(), user, "123") require.NoError(t, err) - _, err = c.Put(context.TODO(), "a", "b") + _, err = c.Put(t.Context(), "a", "b") assert.NoError(t, err) } // needs concurrency to trigger @@ -519,7 +519,7 @@ func TestV3AuthWatchErrorAndWatchId0(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) - ctx, cancel := context.WithTimeout(context.TODO(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) defer cancel() users := []user{ From ca6057aa85d40cf5bb848dbd7e8e242e11870900 Mon Sep 17 00:00:00 2001 From: Nont Date: Wed, 28 May 2025 22:49:33 -0500 Subject: [PATCH 0248/1068] Fix multi-version concurrent tests Signed-off-by: Nont --- .github/workflows/antithesis-test.yml | 33 ++++++++++----------------- tests/antithesis/Dockerfile.config | 12 ++++++++-- tests/antithesis/Makefile | 6 ++++- tests/antithesis/docker-compose.yml | 6 ++--- 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 25afe3fa0cc3..c776acb1255f 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -14,16 +14,6 @@ on: required: false default: 'etcd nightly antithesis run' type: string - config_image: - description: 'Config image' - required: true - default: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:latest - type: string - images: - description: 'System images (separate with ;)' - required: true - default: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-client:latest;us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-server:latest;docker.io/library/ubuntu:latest - type: string duration: description: 'Duration (exploration hours)' required: true @@ -68,14 +58,15 @@ jobs: password: ${{ secrets.ANTITHESIS_CONTAINER_REGISTRY_TOKEN }} - name: Build and push config image - uses: docker/build-push-action@1dc73863535b631f98b2378be8619f83b136f4a0 # v6.17.0 - with: - context: ./tests/antithesis - file: ./tests/antithesis/Dockerfile.config - push: true - tags: | - ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:latest, - ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:${{ github.sha }} + working-directory: ./tests/antithesis + run: | + make antithesis-build-antithesis-config-image REF=${{ inputs.etcd_ref }} + export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:${{ inputs.etcd_ref }}_${{ github.sha }}" + docker tag etcd-config:latest $TAG + docker push $TAG + export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:${{ github.sha }}" + docker tag etcd-config:latest $TAG + docker push $TAG - name: Build and push client image uses: docker/build-push-action@1dc73863535b631f98b2378be8619f83b136f4a0 # v6.17.0 @@ -91,7 +82,7 @@ jobs: working-directory: ./tests/antithesis run: | make antithesis-build-etcd-image REF=${{ inputs.etcd_ref }} - export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:latest" + export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:${{ inputs.etcd_ref }}_${{ github.sha }}" docker tag etcd-server:latest $TAG docker push $TAG export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:${{ github.sha }}" @@ -106,8 +97,8 @@ jobs: username: ${{ secrets.ANTITHESIS_WEBHOOK_USERNAME }} password: ${{ secrets.ANTITHESIS_WEBHOOK_PASSWORD }} github_token: ${{ secrets.GH_PAT }} - config_image: ${{ inputs.config_image }} - images: ${{ inputs.images }} + config_image: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:${{ inputs.etcd_ref }}_${{ github.sha }} + images: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-client:latest;us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-server:${{ inputs.etcd_ref }}_${{ github.sha }};docker.io/library/ubuntu:latest;us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:${{ inputs.etcd_ref }}_${{ github.sha }} description: ${{ inputs.description }} email_recipients: ${{ inputs.email }} test_name: ${{ inputs.test }} diff --git a/tests/antithesis/Dockerfile.config b/tests/antithesis/Dockerfile.config index e34c18321e06..2e6978d9dd2c 100644 --- a/tests/antithesis/Dockerfile.config +++ b/tests/antithesis/Dockerfile.config @@ -1,3 +1,11 @@ -from scratch +ARG GO_VERSION=1.24.3 -COPY docker-compose.yml /docker-compose.yml +FROM golang:$GO_VERSION AS build +RUN go install github.com/a8m/envsubst/cmd/envsubst@v1.4.3 + +ARG REF +COPY docker-compose.yml /docker-compose.yml.template +RUN REF=${REF} cat /docker-compose.yml.template | envsubst > /docker-compose.yml + +FROM scratch +COPY --from=build /docker-compose.yml /docker-compose.yml diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 3cf00d68ebc3..22625613833a 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -10,7 +10,7 @@ antithesis-build-client-docker-image: .PHONY: antithesis-build-etcd-image antithesis-build-etcd-image: - docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) --build-arg REF=${REF} $(REPOSITORY_ROOT)/tests/antithesis/server/ -t etcd-server:latest + docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) --build-arg REF=$(REF) $(REPOSITORY_ROOT)/tests/antithesis/server/ -t etcd-server:latest -t etcd-server:$(REF) .PHONY: antithesis-build-etcd-image-release-3.4 antithesis-build-etcd-image-release-3.4: REF=release-3.4 @@ -28,6 +28,10 @@ antithesis-build-etcd-image-release-3.6: antithesis-build-etcd-image antithesis-build-etcd-image-main: REF=main antithesis-build-etcd-image-main: antithesis-build-etcd-image +.PHONY: antithesis-build-config-image +antithesis-build-config-image: + docker build -f ./Dockerfile.config . -t etcd-config:latest -t etcd-config:$(REF) --build-arg REF=$(REF) + .PHONY: antithesis-docker-compose-up antithesis-docker-compose-up: export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose up diff --git a/tests/antithesis/docker-compose.yml b/tests/antithesis/docker-compose.yml index ec03689e7533..8f345c1aae35 100644 --- a/tests/antithesis/docker-compose.yml +++ b/tests/antithesis/docker-compose.yml @@ -21,7 +21,7 @@ services: chown -R ${USER_ID:-root}:${GROUP_ID:-root} /var/etcddata0 /var/etcddata1 /var/etcddata2 /var/report etcd0: - image: 'etcd-server:latest' + image: 'etcd-server:${REF:-latest}' container_name: etcd0 hostname: etcd0 environment: @@ -44,7 +44,7 @@ services: - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcd/data etcd1: - image: 'etcd-server:latest' + image: 'etcd-server:${REF:-latest}' container_name: etcd1 hostname: etcd1 environment: @@ -67,7 +67,7 @@ services: - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}1:/var/etcd/data etcd2: - image: 'etcd-server:latest' + image: 'etcd-server:${REF:-latest}' container_name: etcd2 hostname: etcd2 environment: From 138104c756c933b0e1bffa5353e18fdc8b08448d Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Sat, 31 May 2025 01:24:55 +0200 Subject: [PATCH 0249/1068] chore(test): address Go usetesting for `leasing_test` Signed-off-by: Mustafa Elbehery --- .../clientv3/lease/leasing_test.go | 332 +++++++++--------- 1 file changed, 166 insertions(+), 166 deletions(-) diff --git a/tests/integration/clientv3/lease/leasing_test.go b/tests/integration/clientv3/lease/leasing_test.go index 1751fdeb771e..09dd1cf44fb8 100644 --- a/tests/integration/clientv3/lease/leasing_test.go +++ b/tests/integration/clientv3/lease/leasing_test.go @@ -51,15 +51,15 @@ func TestLeasingPutGet(t *testing.T) { require.NoError(t, err) defer closeLKV3() - resp, err := lKV1.Get(context.TODO(), "abc") + resp, err := lKV1.Get(t.Context(), "abc") require.NoError(t, err) if len(resp.Kvs) != 0 { t.Errorf("expected nil, got %q", resp.Kvs[0].Key) } - _, err = lKV1.Put(context.TODO(), "abc", "def") + _, err = lKV1.Put(t.Context(), "abc", "def") require.NoError(t, err) - resp, err = lKV2.Get(context.TODO(), "abc") + resp, err = lKV2.Get(t.Context(), "abc") require.NoError(t, err) if string(resp.Kvs[0].Key) != "abc" { t.Errorf("expected key=%q, got key=%q", "abc", resp.Kvs[0].Key) @@ -68,12 +68,12 @@ func TestLeasingPutGet(t *testing.T) { t.Errorf("expected value=%q, got value=%q", "bar", resp.Kvs[0].Value) } - _, err = lKV3.Get(context.TODO(), "abc") + _, err = lKV3.Get(t.Context(), "abc") require.NoError(t, err) - _, err = lKV2.Put(context.TODO(), "abc", "ghi") + _, err = lKV2.Put(t.Context(), "abc", "ghi") require.NoError(t, err) - resp, err = lKV3.Get(context.TODO(), "abc") + resp, err = lKV3.Get(t.Context(), "abc") require.NoError(t, err) if string(resp.Kvs[0].Key) != "abc" { t.Errorf("expected key=%q, got key=%q", "abc", resp.Kvs[0].Key) @@ -96,20 +96,20 @@ func TestLeasingInterval(t *testing.T) { keys := []string{"abc/a", "abc/b", "abc/a/a"} for _, k := range keys { - _, err = clus.Client(0).Put(context.TODO(), k, "v") + _, err = clus.Client(0).Put(t.Context(), k, "v") require.NoError(t, err) } - resp, err := lkv.Get(context.TODO(), "abc/", clientv3.WithPrefix()) + resp, err := lkv.Get(t.Context(), "abc/", clientv3.WithPrefix()) require.NoError(t, err) require.Lenf(t, resp.Kvs, 3, "expected keys %+v, got response keys %+v", keys, resp.Kvs) // load into cache - _, err = lkv.Get(context.TODO(), "abc/a") + _, err = lkv.Get(t.Context(), "abc/a") require.NoError(t, err) // get when prefix is also a cached key - resp, err = lkv.Get(context.TODO(), "abc/a", clientv3.WithPrefix()) + resp, err = lkv.Get(t.Context(), "abc/a", clientv3.WithPrefix()) require.NoError(t, err) require.Lenf(t, resp.Kvs, 2, "expected keys %+v, got response keys %+v", keys, resp.Kvs) } @@ -124,14 +124,14 @@ func TestLeasingPutInvalidateNew(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = lkv.Get(context.TODO(), "k") + _, err = lkv.Get(t.Context(), "k") require.NoError(t, err) - _, err = lkv.Put(context.TODO(), "k", "v") + _, err = lkv.Put(t.Context(), "k", "v") require.NoError(t, err) - lkvResp, err := lkv.Get(context.TODO(), "k") + lkvResp, err := lkv.Get(t.Context(), "k") require.NoError(t, err) - cResp, cerr := clus.Client(0).Get(context.TODO(), "k") + cResp, cerr := clus.Client(0).Get(t.Context(), "k") require.NoError(t, cerr) require.Truef(t, reflect.DeepEqual(lkvResp, cResp), `expected %+v, got response %+v`, cResp, lkvResp) } @@ -142,21 +142,21 @@ func TestLeasingPutInvalidateExisting(t *testing.T) { clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) defer clus.Terminate(t) - _, err := clus.Client(0).Put(context.TODO(), "k", "abc") + _, err := clus.Client(0).Put(t.Context(), "k", "abc") require.NoError(t, err) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") require.NoError(t, err) defer closeLKV() - _, err = lkv.Get(context.TODO(), "k") + _, err = lkv.Get(t.Context(), "k") require.NoError(t, err) - _, err = lkv.Put(context.TODO(), "k", "v") + _, err = lkv.Put(t.Context(), "k", "v") require.NoError(t, err) - lkvResp, err := lkv.Get(context.TODO(), "k") + lkvResp, err := lkv.Get(t.Context(), "k") require.NoError(t, err) - cResp, cerr := clus.Client(0).Get(context.TODO(), "k") + cResp, cerr := clus.Client(0).Get(t.Context(), "k") require.NoError(t, cerr) require.Truef(t, reflect.DeepEqual(lkvResp, cResp), `expected %+v, got response %+v`, cResp, lkvResp) } @@ -171,19 +171,19 @@ func TestLeasingGetNoLeaseTTL(t *testing.T) { require.NoError(t, err) defer closeLKV() - lresp, err := clus.Client(0).Grant(context.TODO(), 60) + lresp, err := clus.Client(0).Grant(t.Context(), 60) require.NoError(t, err) - _, err = clus.Client(0).Put(context.TODO(), "k", "v", clientv3.WithLease(lresp.ID)) + _, err = clus.Client(0).Put(t.Context(), "k", "v", clientv3.WithLease(lresp.ID)) require.NoError(t, err) - gresp, err := lkv.Get(context.TODO(), "k") + gresp, err := lkv.Get(t.Context(), "k") require.NoError(t, err) assert.Len(t, gresp.Kvs, 1) clus.Members[0].Stop(t) - ctx, cancel := context.WithTimeout(context.TODO(), time.Second) + ctx, cancel := context.WithTimeout(t.Context(), time.Second) _, err = lkv.Get(ctx, "k") cancel() assert.Equal(t, err, ctx.Err()) @@ -200,22 +200,22 @@ func TestLeasingGetSerializable(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = clus.Client(0).Put(context.TODO(), "cached", "abc") + _, err = clus.Client(0).Put(t.Context(), "cached", "abc") require.NoError(t, err) - _, err = lkv.Get(context.TODO(), "cached") + _, err = lkv.Get(t.Context(), "cached") require.NoError(t, err) clus.Members[1].Stop(t) // don't necessarily try to acquire leasing key ownership for new key - resp, err := lkv.Get(context.TODO(), "uncached", clientv3.WithSerializable()) + resp, err := lkv.Get(t.Context(), "uncached", clientv3.WithSerializable()) require.NoError(t, err) require.Emptyf(t, resp.Kvs, `expected no keys, got response %+v`, resp) clus.Members[0].Stop(t) // leasing key ownership should have "cached" locally served - cachedResp, err := lkv.Get(context.TODO(), "cached", clientv3.WithSerializable()) + cachedResp, err := lkv.Get(t.Context(), "cached", clientv3.WithSerializable()) require.NoError(t, err) if len(cachedResp.Kvs) != 1 || string(cachedResp.Kvs[0].Value) != "abc" { t.Fatalf(`expected "cached"->"abc", got response %+v`, cachedResp) @@ -232,12 +232,12 @@ func TestLeasingPrevKey(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = clus.Client(0).Put(context.TODO(), "k", "abc") + _, err = clus.Client(0).Put(t.Context(), "k", "abc") require.NoError(t, err) // acquire leasing key - _, err = lkv.Get(context.TODO(), "k") + _, err = lkv.Get(t.Context(), "k") require.NoError(t, err) - resp, err := lkv.Put(context.TODO(), "k", "def", clientv3.WithPrevKV()) + resp, err := lkv.Put(t.Context(), "k", "def", clientv3.WithPrevKV()) require.NoError(t, err) if resp.PrevKv == nil || string(resp.PrevKv.Value) != "abc" { t.Fatalf(`expected PrevKV.Value="abc", got response %+v`, resp) @@ -254,19 +254,19 @@ func TestLeasingRevGet(t *testing.T) { require.NoError(t, err) defer closeLKV() - putResp, err := clus.Client(0).Put(context.TODO(), "k", "abc") + putResp, err := clus.Client(0).Put(t.Context(), "k", "abc") require.NoError(t, err) - _, err = clus.Client(0).Put(context.TODO(), "k", "def") + _, err = clus.Client(0).Put(t.Context(), "k", "def") require.NoError(t, err) // check historic revision - getResp, gerr := lkv.Get(context.TODO(), "k", clientv3.WithRev(putResp.Header.Revision)) + getResp, gerr := lkv.Get(t.Context(), "k", clientv3.WithRev(putResp.Header.Revision)) require.NoError(t, gerr) if len(getResp.Kvs) != 1 || string(getResp.Kvs[0].Value) != "abc" { t.Fatalf(`expected "k"->"abc" at rev=%d, got response %+v`, putResp.Header.Revision, getResp) } // check current revision - getResp, gerr = lkv.Get(context.TODO(), "k") + getResp, gerr = lkv.Get(t.Context(), "k") require.NoError(t, gerr) if len(getResp.Kvs) != 1 || string(getResp.Kvs[0].Value) != "def" { t.Fatalf(`expected "k"->"def" at rev=%d, got response %+v`, putResp.Header.Revision, getResp) @@ -283,10 +283,10 @@ func TestLeasingGetWithOpts(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = clus.Client(0).Put(context.TODO(), "k", "abc") + _, err = clus.Client(0).Put(t.Context(), "k", "abc") require.NoError(t, err) // in cache - _, err = lkv.Get(context.TODO(), "k", clientv3.WithKeysOnly()) + _, err = lkv.Get(t.Context(), "k", clientv3.WithKeysOnly()) require.NoError(t, err) clus.Members[0].Stop(t) @@ -300,7 +300,7 @@ func TestLeasingGetWithOpts(t *testing.T) { clientv3.WithSerializable(), } for _, opt := range opts { - _, err = lkv.Get(context.TODO(), "k", opt) + _, err = lkv.Get(t.Context(), "k", opt) require.NoError(t, err) } @@ -309,7 +309,7 @@ func TestLeasingGetWithOpts(t *testing.T) { getOpts = append(getOpts, opts[rand.Intn(len(opts))]) } getOpts = getOpts[:rand.Intn(len(opts))] - _, err = lkv.Get(context.TODO(), "k", getOpts...) + _, err = lkv.Get(t.Context(), "k", getOpts...) require.NoError(t, err) } @@ -325,7 +325,7 @@ func TestLeasingConcurrentPut(t *testing.T) { defer closeLKV() // force key into leasing key cache - _, err = lkv.Get(context.TODO(), "k") + _, err = lkv.Get(t.Context(), "k") require.NoError(t, err) // concurrently put through leasing client @@ -333,7 +333,7 @@ func TestLeasingConcurrentPut(t *testing.T) { putc := make(chan *clientv3.PutResponse, numPuts) for i := 0; i < numPuts; i++ { go func() { - resp, perr := lkv.Put(context.TODO(), "k", "abc") + resp, perr := lkv.Put(t.Context(), "k", "abc") if perr != nil { t.Error(perr) } @@ -349,7 +349,7 @@ func TestLeasingConcurrentPut(t *testing.T) { } // confirm Get gives most recently put revisions - getResp, gerr := lkv.Get(context.TODO(), "k") + getResp, gerr := lkv.Get(t.Context(), "k") require.NoError(t, gerr) if mr := getResp.Kvs[0].ModRevision; mr != maxRev { t.Errorf("expected ModRevision %d, got %d", maxRev, mr) @@ -368,16 +368,16 @@ func TestLeasingDisconnectedGet(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = clus.Client(0).Put(context.TODO(), "cached", "abc") + _, err = clus.Client(0).Put(t.Context(), "cached", "abc") require.NoError(t, err) // get key so it's cached - _, err = lkv.Get(context.TODO(), "cached") + _, err = lkv.Get(t.Context(), "cached") require.NoError(t, err) clus.Members[0].Stop(t) // leasing key ownership should have "cached" locally served - cachedResp, err := lkv.Get(context.TODO(), "cached") + cachedResp, err := lkv.Get(t.Context(), "cached") require.NoError(t, err) if len(cachedResp.Kvs) != 1 || string(cachedResp.Kvs[0].Value) != "abc" { t.Fatalf(`expected "cached"->"abc", got response %+v`, cachedResp) @@ -393,20 +393,20 @@ func TestLeasingDeleteOwner(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = clus.Client(0).Put(context.TODO(), "k", "abc") + _, err = clus.Client(0).Put(t.Context(), "k", "abc") require.NoError(t, err) // get+own / delete / get - _, err = lkv.Get(context.TODO(), "k") + _, err = lkv.Get(t.Context(), "k") require.NoError(t, err) - _, err = lkv.Delete(context.TODO(), "k") + _, err = lkv.Delete(t.Context(), "k") require.NoError(t, err) - resp, err := lkv.Get(context.TODO(), "k") + resp, err := lkv.Get(t.Context(), "k") require.NoError(t, err) require.Emptyf(t, resp.Kvs, `expected "k" to be deleted, got response %+v`, resp) // try to double delete - _, err = lkv.Delete(context.TODO(), "k") + _, err = lkv.Delete(t.Context(), "k") require.NoError(t, err) } @@ -423,17 +423,17 @@ func TestLeasingDeleteNonOwner(t *testing.T) { require.NoError(t, err) defer closeLKV2() - _, err = clus.Client(0).Put(context.TODO(), "k", "abc") + _, err = clus.Client(0).Put(t.Context(), "k", "abc") require.NoError(t, err) // acquire ownership - _, err = lkv1.Get(context.TODO(), "k") + _, err = lkv1.Get(t.Context(), "k") require.NoError(t, err) // delete via non-owner - _, err = lkv2.Delete(context.TODO(), "k") + _, err = lkv2.Delete(t.Context(), "k") require.NoError(t, err) // key should be removed from lkv1 - resp, err := lkv1.Get(context.TODO(), "k") + resp, err := lkv1.Get(t.Context(), "k") require.NoError(t, err) require.Emptyf(t, resp.Kvs, `expected "k" to be deleted, got response %+v`, resp) } @@ -447,16 +447,16 @@ func TestLeasingOverwriteResponse(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = clus.Client(0).Put(context.TODO(), "k", "abc") + _, err = clus.Client(0).Put(t.Context(), "k", "abc") require.NoError(t, err) - resp, err := lkv.Get(context.TODO(), "k") + resp, err := lkv.Get(t.Context(), "k") require.NoError(t, err) resp.Kvs[0].Key[0] = 'z' resp.Kvs[0].Value[0] = 'z' - resp, err = lkv.Get(context.TODO(), "k") + resp, err = lkv.Get(t.Context(), "k") require.NoError(t, err) if string(resp.Kvs[0].Key) != "k" { @@ -476,11 +476,11 @@ func TestLeasingOwnerPutResponse(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = clus.Client(0).Put(context.TODO(), "k", "abc") + _, err = clus.Client(0).Put(t.Context(), "k", "abc") require.NoError(t, err) - _, gerr := lkv.Get(context.TODO(), "k") + _, gerr := lkv.Get(t.Context(), "k") require.NoError(t, gerr) - presp, err := lkv.Put(context.TODO(), "k", "def") + presp, err := lkv.Put(t.Context(), "k", "def") require.NoError(t, err) if presp == nil { t.Fatal("expected put response, got nil") @@ -488,7 +488,7 @@ func TestLeasingOwnerPutResponse(t *testing.T) { clus.Members[0].Stop(t) - gresp, gerr := lkv.Get(context.TODO(), "k") + gresp, gerr := lkv.Get(t.Context(), "k") require.NoError(t, gerr) if gresp.Kvs[0].ModRevision != presp.Header.Revision { t.Errorf("expected mod revision %d, got %d", presp.Header.Revision, gresp.Kvs[0].ModRevision) @@ -510,13 +510,13 @@ func TestLeasingTxnOwnerGetRange(t *testing.T) { keyCount := rand.Intn(10) + 1 for i := 0; i < keyCount; i++ { k := fmt.Sprintf("k-%d", i) - _, err = clus.Client(0).Put(context.TODO(), k, k+k) + _, err = clus.Client(0).Put(t.Context(), k, k+k) require.NoError(t, err) } - _, err = lkv.Get(context.TODO(), "k-") + _, err = lkv.Get(t.Context(), "k-") require.NoError(t, err) - tresp, terr := lkv.Txn(context.TODO()).Then(clientv3.OpGet("k-", clientv3.WithPrefix())).Commit() + tresp, terr := lkv.Txn(t.Context()).Then(clientv3.OpGet("k-", clientv3.WithPrefix())).Commit() require.NoError(t, terr) resp := tresp.Responses[0].GetResponseRange() require.Equalf(t, len(resp.Kvs), keyCount, "expected %d keys, got response %+v", keyCount, resp.Kvs) @@ -549,11 +549,11 @@ func TestLeasingTxnOwnerGet(t *testing.T) { presps := make([]*clientv3.PutResponse, keyCount) for i := range presps { k := fmt.Sprintf("k-%d", i) - presp, err := client.Put(context.TODO(), k, k+k) + presp, err := client.Put(t.Context(), k, k+k) require.NoError(t, err) presps[i] = presp - _, err = lkv.Get(context.TODO(), k) + _, err = lkv.Get(t.Context(), k) require.NoError(t, err) ops = append(ops, clientv3.OpGet(k)) } @@ -575,7 +575,7 @@ func TestLeasingTxnOwnerGet(t *testing.T) { elseOps = ops } - tresp, terr := lkv.Txn(context.TODO()). + tresp, terr := lkv.Txn(t.Context()). If(cmps...). Then(thenOps...). Else(elseOps...).Commit() @@ -607,19 +607,19 @@ func TestLeasingTxnOwnerDeleteRange(t *testing.T) { keyCount := rand.Intn(10) + 1 for i := 0; i < keyCount; i++ { k := fmt.Sprintf("k-%d", i) - _, perr := clus.Client(0).Put(context.TODO(), k, k+k) + _, perr := clus.Client(0).Put(t.Context(), k, k+k) require.NoError(t, perr) } // cache in lkv - resp, err := lkv.Get(context.TODO(), "k-", clientv3.WithPrefix()) + resp, err := lkv.Get(t.Context(), "k-", clientv3.WithPrefix()) require.NoError(t, err) require.Equalf(t, len(resp.Kvs), keyCount, "expected %d keys, got %d", keyCount, len(resp.Kvs)) - _, terr := lkv.Txn(context.TODO()).Then(clientv3.OpDelete("k-", clientv3.WithPrefix())).Commit() + _, terr := lkv.Txn(t.Context()).Then(clientv3.OpDelete("k-", clientv3.WithPrefix())).Commit() require.NoError(t, terr) - resp, err = lkv.Get(context.TODO(), "k-", clientv3.WithPrefix()) + resp, err = lkv.Get(t.Context(), "k-", clientv3.WithPrefix()) require.NoError(t, err) require.Emptyf(t, resp.Kvs, "expected no keys, got %d", len(resp.Kvs)) } @@ -633,17 +633,17 @@ func TestLeasingTxnOwnerDelete(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = clus.Client(0).Put(context.TODO(), "k", "abc") + _, err = clus.Client(0).Put(t.Context(), "k", "abc") require.NoError(t, err) // cache in lkv - _, gerr := lkv.Get(context.TODO(), "k") + _, gerr := lkv.Get(t.Context(), "k") require.NoError(t, gerr) - _, terr := lkv.Txn(context.TODO()).Then(clientv3.OpDelete("k")).Commit() + _, terr := lkv.Txn(t.Context()).Then(clientv3.OpDelete("k")).Commit() require.NoError(t, terr) - resp, err := lkv.Get(context.TODO(), "k") + resp, err := lkv.Get(t.Context(), "k") require.NoError(t, err) require.Emptyf(t, resp.Kvs, "expected no keys, got %d", len(resp.Kvs)) } @@ -657,9 +657,9 @@ func TestLeasingTxnOwnerIf(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = clus.Client(0).Put(context.TODO(), "k", "abc") + _, err = clus.Client(0).Put(t.Context(), "k", "abc") require.NoError(t, err) - _, err = lkv.Get(context.TODO(), "k") + _, err = lkv.Get(t.Context(), "k") require.NoError(t, err) // served through cache @@ -727,7 +727,7 @@ func TestLeasingTxnOwnerIf(t *testing.T) { } for i, tt := range tests { - tresp, terr := lkv.Txn(context.TODO()).If(tt.cmps...).Then(clientv3.OpGet("k")).Commit() + tresp, terr := lkv.Txn(t.Context()).If(tt.cmps...).Then(clientv3.OpGet("k")).Commit() require.NoError(t, terr) if tresp.Succeeded != tt.wSucceeded { t.Errorf("#%d: expected succeeded %v, got %v", i, tt.wSucceeded, tresp.Succeeded) @@ -752,15 +752,15 @@ func TestLeasingTxnCancel(t *testing.T) { defer closeLKV2() // acquire lease but disconnect so no revoke in time - _, err = lkv1.Get(context.TODO(), "k") + _, err = lkv1.Get(t.Context(), "k") require.NoError(t, err) clus.Members[0].Stop(t) // wait for leader election, if any - _, err = clus.Client(1).Get(context.TODO(), "abc") + _, err = clus.Client(1).Get(t.Context(), "abc") require.NoError(t, err) - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) go func() { time.Sleep(100 * time.Millisecond) cancel() @@ -782,19 +782,19 @@ func TestLeasingTxnNonOwnerPut(t *testing.T) { require.NoError(t, err) defer closeLKV2() - _, err = clus.Client(0).Put(context.TODO(), "k", "abc") + _, err = clus.Client(0).Put(t.Context(), "k", "abc") require.NoError(t, err) - _, err = clus.Client(0).Put(context.TODO(), "k2", "123") + _, err = clus.Client(0).Put(t.Context(), "k2", "123") require.NoError(t, err) // cache in lkv - _, err = lkv.Get(context.TODO(), "k") + _, err = lkv.Get(t.Context(), "k") require.NoError(t, err) - _, err = lkv.Get(context.TODO(), "k2") + _, err = lkv.Get(t.Context(), "k2") require.NoError(t, err) // invalidate via lkv2 txn opArray := make([]clientv3.Op, 0) opArray = append(opArray, clientv3.OpPut("k2", "456")) - tresp, terr := lkv2.Txn(context.TODO()).Then( + tresp, terr := lkv2.Txn(t.Context()).Then( clientv3.OpTxn(nil, opArray, nil), clientv3.OpPut("k", "def"), clientv3.OpPut("k3", "999"), // + a key not in any cache @@ -804,12 +804,12 @@ func TestLeasingTxnNonOwnerPut(t *testing.T) { t.Fatalf("expected txn success, got %+v", tresp) } // check cache was invalidated - gresp, gerr := lkv.Get(context.TODO(), "k") + gresp, gerr := lkv.Get(t.Context(), "k") require.NoError(t, gerr) if len(gresp.Kvs) != 1 || string(gresp.Kvs[0].Value) != "def" { t.Errorf(`expected value "def", got %+v`, gresp) } - gresp, gerr = lkv.Get(context.TODO(), "k2") + gresp, gerr = lkv.Get(t.Context(), "k2") require.NoError(t, gerr) if len(gresp.Kvs) != 1 || string(gresp.Kvs[0].Value) != "456" { t.Errorf(`expected value "def", got %+v`, gresp) @@ -852,7 +852,7 @@ func TestLeasingTxnRandIfThenOrElse(t *testing.T) { dat := make([]*clientv3.PutResponse, keyCount) for i := 0; i < keyCount; i++ { k, v := fmt.Sprintf("k-%d", i), fmt.Sprintf("%d", i) - dat[i], err1 = clus.Client(0).Put(context.TODO(), k, v) + dat[i], err1 = clus.Client(0).Put(t.Context(), k, v) require.NoError(t, err1) } @@ -863,7 +863,7 @@ func TestLeasingTxnRandIfThenOrElse(t *testing.T) { defer wg.Done() for i := 0; i < keyCount/2; i++ { k := fmt.Sprintf("k-%d", rand.Intn(keyCount)) - if _, err := kv.Get(context.TODO(), k); err != nil { + if _, err := kv.Get(t.Context(), k); err != nil { t.Error(err) } getc <- struct{}{} @@ -911,7 +911,7 @@ func TestLeasingTxnRandIfThenOrElse(t *testing.T) { elseOps = ops } - tresp, terr := lkv1.Txn(context.TODO()).If(cmps...).Then(thenOps...).Else(elseOps...).Commit() + tresp, terr := lkv1.Txn(t.Context()).If(cmps...).Then(thenOps...).Else(elseOps...).Commit() require.NoError(t, terr) // cmps always succeed require.Equalf(t, tresp.Succeeded, useThen, "expected succeeded=%v, got tresp=%+v", useThen, tresp) @@ -921,7 +921,7 @@ func TestLeasingTxnRandIfThenOrElse(t *testing.T) { if !op.IsPut() { continue } - resp, rerr := kv.Get(context.TODO(), string(op.KeyBytes())) + resp, rerr := kv.Get(t.Context(), string(op.KeyBytes())) require.NoError(t, rerr) if len(resp.Kvs) != 1 || string(resp.Kvs[0].Value) != "a" { t.Fatalf(`%s: expected value="a", got %+v`, s, resp.Kvs) @@ -942,11 +942,11 @@ func TestLeasingOwnerPutError(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = lkv.Get(context.TODO(), "k") + _, err = lkv.Get(t.Context(), "k") require.NoError(t, err) clus.Members[0].Stop(t) - ctx, cancel := context.WithTimeout(context.TODO(), 100*time.Millisecond) + ctx, cancel := context.WithTimeout(t.Context(), 100*time.Millisecond) defer cancel() resp, err := lkv.Put(ctx, "k", "v") require.Errorf(t, err, "expected error, got response %+v", resp) @@ -961,11 +961,11 @@ func TestLeasingOwnerDeleteError(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = lkv.Get(context.TODO(), "k") + _, err = lkv.Get(t.Context(), "k") require.NoError(t, err) clus.Members[0].Stop(t) - ctx, cancel := context.WithTimeout(context.TODO(), 100*time.Millisecond) + ctx, cancel := context.WithTimeout(t.Context(), 100*time.Millisecond) defer cancel() resp, err := lkv.Delete(ctx, "k") require.Errorf(t, err, "expected error, got response %+v", resp) @@ -981,7 +981,7 @@ func TestLeasingNonOwnerPutError(t *testing.T) { defer closeLKV() clus.Members[0].Stop(t) - ctx, cancel := context.WithTimeout(context.TODO(), 100*time.Millisecond) + ctx, cancel := context.WithTimeout(t.Context(), 100*time.Millisecond) defer cancel() resp, err := lkv.Put(ctx, "k", "v") require.Errorf(t, err, "expected error, got response %+v", resp) @@ -1005,20 +1005,20 @@ func testLeasingOwnerDelete(t *testing.T, del clientv3.Op) { defer closeLKV() for i := 0; i < 8; i++ { - _, err = clus.Client(0).Put(context.TODO(), fmt.Sprintf("key/%d", i), "123") + _, err = clus.Client(0).Put(t.Context(), fmt.Sprintf("key/%d", i), "123") require.NoError(t, err) } - _, err = lkv.Get(context.TODO(), "key/1") + _, err = lkv.Get(t.Context(), "key/1") require.NoError(t, err) - opResp, delErr := lkv.Do(context.TODO(), del) + opResp, delErr := lkv.Do(t.Context(), del) require.NoError(t, delErr) delResp := opResp.Del() // confirm keys are invalidated from cache and deleted on etcd for i := 0; i < 8; i++ { - resp, err := lkv.Get(context.TODO(), fmt.Sprintf("key/%d", i)) + resp, err := lkv.Get(t.Context(), fmt.Sprintf("key/%d", i)) require.NoError(t, err) require.Emptyf(t, resp.Kvs, "expected no keys on key/%d, got %+v", i, resp) } @@ -1049,18 +1049,18 @@ func TestLeasingDeleteRangeBounds(t *testing.T) { defer closeGetKv() for _, k := range []string{"j", "m"} { - _, err = clus.Client(0).Put(context.TODO(), k, "123") + _, err = clus.Client(0).Put(t.Context(), k, "123") require.NoError(t, err) - _, err = getkv.Get(context.TODO(), k) + _, err = getkv.Get(t.Context(), k) require.NoError(t, err) } - _, err = delkv.Delete(context.TODO(), "k", clientv3.WithPrefix()) + _, err = delkv.Delete(t.Context(), "k", clientv3.WithPrefix()) require.NoError(t, err) // leases still on server? for _, k := range []string{"j", "m"} { - resp, geterr := clus.Client(0).Get(context.TODO(), "0/"+k, clientv3.WithPrefix()) + resp, geterr := clus.Client(0).Get(t.Context(), "0/"+k, clientv3.WithPrefix()) require.NoError(t, geterr) require.Lenf(t, resp.Kvs, 1, "expected leasing key, got %+v", resp) } @@ -1068,9 +1068,9 @@ func TestLeasingDeleteRangeBounds(t *testing.T) { // j and m should still have leases registered since not under k* clus.Members[0].Stop(t) - _, err = getkv.Get(context.TODO(), "j") + _, err = getkv.Get(t.Context(), "j") require.NoError(t, err) - _, err = getkv.Get(context.TODO(), "m") + _, err = getkv.Get(t.Context(), "m") require.NoError(t, err) } @@ -1100,28 +1100,28 @@ func testLeasingDeleteRangeContend(t *testing.T, op clientv3.Op) { const maxKey = 8 for i := 0; i < maxKey; i++ { key := fmt.Sprintf("key/%d", i) - _, err = clus.Client(0).Put(context.TODO(), key, "123") + _, err = clus.Client(0).Put(t.Context(), key, "123") require.NoError(t, err) - _, err = putkv.Get(context.TODO(), key) + _, err = putkv.Get(t.Context(), key) require.NoError(t, err) } - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) donec := make(chan struct{}) go func(t *testing.T) { defer close(donec) for i := 0; ctx.Err() == nil; i++ { key := fmt.Sprintf("key/%d", i%maxKey) - if _, err = putkv.Put(context.TODO(), key, "123"); err != nil { + if _, err = putkv.Put(t.Context(), key, "123"); err != nil { t.Errorf("fail putting key %s: %v", key, err) } - if _, err = putkv.Get(context.TODO(), key); err != nil { + if _, err = putkv.Get(t.Context(), key); err != nil { t.Errorf("fail getting key %s: %v", key, err) } } }(t) - _, delErr := delkv.Do(context.TODO(), op) + _, delErr := delkv.Do(t.Context(), op) cancel() <-donec require.NoError(t, delErr) @@ -1129,9 +1129,9 @@ func testLeasingDeleteRangeContend(t *testing.T, op clientv3.Op) { // confirm keys on non-deleter match etcd for i := 0; i < maxKey; i++ { key := fmt.Sprintf("key/%d", i) - resp, err := putkv.Get(context.TODO(), key) + resp, err := putkv.Get(t.Context(), key) require.NoError(t, err) - servResp, err := clus.Client(0).Get(context.TODO(), key) + servResp, err := clus.Client(0).Get(t.Context(), key) require.NoError(t, err) if !reflect.DeepEqual(resp.Kvs, servResp.Kvs) { t.Errorf("#%d: expected %+v, got %+v", i, servResp.Kvs, resp.Kvs) @@ -1153,12 +1153,12 @@ func TestLeasingPutGetDeleteConcurrent(t *testing.T) { } getdel := func(kv clientv3.KV) { - _, err := kv.Put(context.TODO(), "k", "abc") + _, err := kv.Put(t.Context(), "k", "abc") require.NoError(t, err) time.Sleep(time.Millisecond) - _, err = kv.Get(context.TODO(), "k") + _, err = kv.Get(t.Context(), "k") require.NoError(t, err) - _, err = kv.Delete(context.TODO(), "k") + _, err = kv.Delete(t.Context(), "k") require.NoError(t, err) time.Sleep(2 * time.Millisecond) } @@ -1175,12 +1175,12 @@ func TestLeasingPutGetDeleteConcurrent(t *testing.T) { } wg.Wait() - resp, err := lkvs[0].Get(context.TODO(), "k") + resp, err := lkvs[0].Get(t.Context(), "k") require.NoError(t, err) require.Emptyf(t, resp.Kvs, "expected no kvs, got %+v", resp.Kvs) - resp, err = clus.Client(0).Get(context.TODO(), "k") + resp, err = clus.Client(0).Get(t.Context(), "k") require.NoError(t, err) require.Emptyf(t, resp.Kvs, "expected no kvs, got %+v", resp.Kvs) } @@ -1200,7 +1200,7 @@ func TestLeasingReconnectOwnerRevoke(t *testing.T) { require.NoError(t, err2) defer closeLKV2() - _, err := lkv1.Get(context.TODO(), "k") + _, err := lkv1.Get(t.Context(), "k") require.NoError(t, err) // force leader away from member 0 @@ -1208,7 +1208,7 @@ func TestLeasingReconnectOwnerRevoke(t *testing.T) { clus.WaitLeader(t) clus.Members[0].Restart(t) - cctx, cancel := context.WithCancel(context.TODO()) + cctx, cancel := context.WithCancel(t.Context()) sdonec, pdonec := make(chan struct{}), make(chan struct{}) // make lkv1 connection choppy so Txn fails go func() { @@ -1260,25 +1260,25 @@ func TestLeasingReconnectOwnerRevokeCompact(t *testing.T) { require.NoError(t, err2) defer closeLKV2() - _, err := lkv1.Get(context.TODO(), "k") + _, err := lkv1.Get(t.Context(), "k") require.NoError(t, err) clus.Members[0].Stop(t) clus.WaitLeader(t) // put some more revisions for compaction - _, err = clus.Client(1).Put(context.TODO(), "a", "123") + _, err = clus.Client(1).Put(t.Context(), "a", "123") require.NoError(t, err) - presp, err := clus.Client(1).Put(context.TODO(), "a", "123") + presp, err := clus.Client(1).Put(t.Context(), "a", "123") require.NoError(t, err) // compact while lkv1 is disconnected rev := presp.Header.Revision - _, err = clus.Client(1).Compact(context.TODO(), rev) + _, err = clus.Client(1).Compact(t.Context(), rev) require.NoError(t, err) clus.Members[0].Restart(t) - cctx, cancel := context.WithTimeout(context.TODO(), 5*time.Second) + cctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) defer cancel() _, err = lkv2.Put(cctx, "k", "v") require.NoError(t, err) @@ -1298,11 +1298,11 @@ func TestLeasingReconnectOwnerConsistency(t *testing.T) { defer closeLKV() require.NoError(t, err) - _, err = lkv.Put(context.TODO(), "k", "x") + _, err = lkv.Put(t.Context(), "k", "x") require.NoError(t, err) - _, err = lkv.Put(context.TODO(), "kk", "y") + _, err = lkv.Put(t.Context(), "kk", "y") require.NoError(t, err) - _, err = lkv.Get(context.TODO(), "k") + _, err = lkv.Get(t.Context(), "k") require.NoError(t, err) for i := 0; i < 10; i++ { @@ -1318,27 +1318,27 @@ func TestLeasingReconnectOwnerConsistency(t *testing.T) { }() switch rand.Intn(7) { case 0: - _, err = lkv.Put(context.TODO(), "k", v) + _, err = lkv.Put(t.Context(), "k", v) case 1: - _, err = lkv.Delete(context.TODO(), "k") + _, err = lkv.Delete(t.Context(), "k") case 2: - txn := lkv.Txn(context.TODO()).Then( + txn := lkv.Txn(t.Context()).Then( clientv3.OpGet("k"), clientv3.OpDelete("k"), ) _, err = txn.Commit() case 3: - txn := lkv.Txn(context.TODO()).Then( + txn := lkv.Txn(t.Context()).Then( clientv3.OpGet("k"), clientv3.OpPut("k", v), ) _, err = txn.Commit() case 4: - _, err = lkv.Do(context.TODO(), clientv3.OpPut("k", v)) + _, err = lkv.Do(t.Context(), clientv3.OpPut("k", v)) case 5: - _, err = lkv.Do(context.TODO(), clientv3.OpDelete("k")) + _, err = lkv.Do(t.Context(), clientv3.OpDelete("k")) case 6: - _, err = lkv.Delete(context.TODO(), "k", clientv3.WithPrefix()) + _, err = lkv.Delete(t.Context(), "k", clientv3.WithPrefix()) } <-donec if err != nil { @@ -1347,9 +1347,9 @@ func TestLeasingReconnectOwnerConsistency(t *testing.T) { } } - lresp, lerr := lkv.Get(context.TODO(), "k") + lresp, lerr := lkv.Get(t.Context(), "k") require.NoError(t, lerr) - cresp, cerr := clus.Client(0).Get(context.TODO(), "k") + cresp, cerr := clus.Client(0).Get(t.Context(), "k") require.NoError(t, cerr) require.Truef(t, reflect.DeepEqual(lresp.Kvs, cresp.Kvs), "expected %+v, got %+v", cresp, lresp) } @@ -1368,10 +1368,10 @@ func TestLeasingTxnAtomicCache(t *testing.T) { k := fmt.Sprintf("k-%d", i) puts[i], gets[i] = clientv3.OpPut(k, k), clientv3.OpGet(k) } - _, err = clus.Client(0).Txn(context.TODO()).Then(puts...).Commit() + _, err = clus.Client(0).Txn(t.Context()).Then(puts...).Commit() require.NoError(t, err) for i := range gets { - _, err = lkv.Do(context.TODO(), gets[i]) + _, err = lkv.Do(t.Context(), gets[i]) require.NoError(t, err) } @@ -1385,7 +1385,7 @@ func TestLeasingTxnAtomicCache(t *testing.T) { f := func() { defer wgPutters.Done() for i := 0; i < 10; i++ { - if _, txnerr := lkv.Txn(context.TODO()).Then(puts...).Commit(); txnerr != nil { + if _, txnerr := lkv.Txn(t.Context()).Then(puts...).Commit(); txnerr != nil { select { case txnerrCh <- txnerr: default: @@ -1403,7 +1403,7 @@ func TestLeasingTxnAtomicCache(t *testing.T) { return default: } - tresp, err := lkv.Txn(context.TODO()).Then(gets...).Commit() + tresp, err := lkv.Txn(t.Context()).Then(gets...).Commit() if err != nil { t.Error(err) } @@ -1447,7 +1447,7 @@ func TestLeasingReconnectTxn(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = lkv.Get(context.TODO(), "k") + _, err = lkv.Get(t.Context(), "k") require.NoError(t, err) donec := make(chan struct{}) @@ -1461,7 +1461,7 @@ func TestLeasingReconnectTxn(t *testing.T) { time.Sleep(10 * time.Millisecond) }() - _, lerr := lkv.Txn(context.TODO()). + _, lerr := lkv.Txn(t.Context()). If(clientv3.Compare(clientv3.Version("k"), "=", 0)). Then(clientv3.OpGet("k")). Commit() @@ -1483,7 +1483,7 @@ func TestLeasingReconnectNonOwnerGet(t *testing.T) { // populate a few keys so some leasing gets have keys for i := 0; i < 4; i++ { k := fmt.Sprintf("k-%d", i*2) - _, err = lkv.Put(context.TODO(), k, k[2:]) + _, err = lkv.Put(t.Context(), k, k[2:]) require.NoError(t, err) } @@ -1498,7 +1498,7 @@ func TestLeasingReconnectNonOwnerGet(t *testing.T) { time.Sleep(time.Millisecond) } }() - _, err = lkv.Get(context.TODO(), fmt.Sprintf("k-%d", i)) + _, err = lkv.Get(t.Context(), fmt.Sprintf("k-%d", i)) <-donec n++ if err != nil { @@ -1507,9 +1507,9 @@ func TestLeasingReconnectNonOwnerGet(t *testing.T) { } for i := 0; i < n; i++ { k := fmt.Sprintf("k-%d", i) - lresp, lerr := lkv.Get(context.TODO(), k) + lresp, lerr := lkv.Get(t.Context(), k) require.NoError(t, lerr) - cresp, cerr := clus.Client(0).Get(context.TODO(), k) + cresp, cerr := clus.Client(0).Get(t.Context(), k) require.NoError(t, cerr) require.Truef(t, reflect.DeepEqual(lresp.Kvs, cresp.Kvs), "expected %+v, got %+v", cresp, lresp) } @@ -1524,20 +1524,20 @@ func TestLeasingTxnRangeCmp(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = clus.Client(0).Put(context.TODO(), "k", "a") + _, err = clus.Client(0).Put(t.Context(), "k", "a") require.NoError(t, err) // k2 version = 2 - _, err = clus.Client(0).Put(context.TODO(), "k2", "a") + _, err = clus.Client(0).Put(t.Context(), "k2", "a") require.NoError(t, err) - _, err = clus.Client(0).Put(context.TODO(), "k2", "a") + _, err = clus.Client(0).Put(t.Context(), "k2", "a") require.NoError(t, err) // cache k - _, err = lkv.Get(context.TODO(), "k") + _, err = lkv.Get(t.Context(), "k") require.NoError(t, err) cmp := clientv3.Compare(clientv3.Version("k").WithPrefix(), "=", 1) - tresp, terr := lkv.Txn(context.TODO()).If(cmp).Commit() + tresp, terr := lkv.Txn(t.Context()).If(cmp).Commit() require.NoError(t, terr) require.Falsef(t, tresp.Succeeded, "expected Succeeded=false, got %+v", tresp) } @@ -1559,7 +1559,7 @@ func TestLeasingDo(t *testing.T) { clientv3.OpTxn(nil, nil, nil), } for i, op := range ops { - resp, resperr := lkv.Do(context.TODO(), op) + resp, resperr := lkv.Do(t.Context(), op) if resperr != nil { t.Errorf("#%d: failed (%v)", i, resperr) } @@ -1575,7 +1575,7 @@ func TestLeasingDo(t *testing.T) { } } - gresp, err := clus.Client(0).Get(context.TODO(), "a", clientv3.WithPrefix()) + gresp, err := clus.Client(0).Get(t.Context(), "a", clientv3.WithPrefix()) require.NoError(t, err) require.Emptyf(t, gresp.Kvs, "expected no keys, got %+v", gresp.Kvs) } @@ -1593,13 +1593,13 @@ func TestLeasingTxnOwnerPutBranch(t *testing.T) { treeOp := makePutTreeOp("tree", &n, 4) for i := 0; i < n; i++ { k := fmt.Sprintf("tree/%d", i) - _, err = clus.Client(0).Put(context.TODO(), k, "a") + _, err = clus.Client(0).Put(t.Context(), k, "a") require.NoError(t, err) - _, err = lkv.Get(context.TODO(), k) + _, err = lkv.Get(t.Context(), k) require.NoError(t, err) } - _, err = lkv.Do(context.TODO(), treeOp) + _, err = lkv.Do(t.Context(), treeOp) require.NoError(t, err) // lkv shouldn't need to call out to server for updated leased keys @@ -1607,9 +1607,9 @@ func TestLeasingTxnOwnerPutBranch(t *testing.T) { for i := 0; i < n; i++ { k := fmt.Sprintf("tree/%d", i) - lkvResp, err := lkv.Get(context.TODO(), k) + lkvResp, err := lkv.Get(t.Context(), k) require.NoError(t, err) - clusResp, err := clus.Client(1).Get(context.TODO(), k) + clusResp, err := clus.Client(1).Get(t.Context(), k) require.NoError(t, err) require.Truef(t, reflect.DeepEqual(clusResp.Kvs, lkvResp.Kvs), "expected %+v, got %+v", clusResp.Kvs, lkvResp.Kvs) } @@ -1678,7 +1678,7 @@ func TestLeasingSessionExpire(t *testing.T) { defer closeLKV2() // acquire lease on abc - _, err = lkv.Get(context.TODO(), "abc") + _, err = lkv.Get(t.Context(), "abc") require.NoError(t, err) // down endpoint lkv uses for keepalives @@ -1688,10 +1688,10 @@ func TestLeasingSessionExpire(t *testing.T) { waitForExpireAck(t, lkv) clus.Members[0].Restart(t) integration2.WaitClientV3(t, lkv2) - _, err = lkv2.Put(context.TODO(), "abc", "def") + _, err = lkv2.Put(t.Context(), "abc", "def") require.NoError(t, err) - resp, err := lkv.Get(context.TODO(), "abc") + resp, err := lkv.Get(t.Context(), "abc") require.NoError(t, err) require.Equal(t, "def", string(resp.Kvs[0].Value)) } @@ -1742,7 +1742,7 @@ func TestLeasingSessionExpireCancel(t *testing.T) { require.NoError(t, err) defer closeLKV() - _, err = lkv.Get(context.TODO(), "abc") + _, err = lkv.Get(t.Context(), "abc") require.NoError(t, err) // down endpoint lkv uses for keepalives @@ -1751,7 +1751,7 @@ func TestLeasingSessionExpireCancel(t *testing.T) { require.NoError(t, err) waitForExpireAck(t, lkv) - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) errc := make(chan error, 1) go func() { errc <- tests[i](ctx, lkv) }() // some delay to get past for ctx.Err() != nil {} loops @@ -1788,7 +1788,7 @@ func waitForLeasingExpire(kv clientv3.KV, lkey string) error { func waitForExpireAck(t *testing.T, kv clientv3.KV) { // wait for leasing client to acknowledge lost lease for i := 0; i < 10; i++ { - ctx, cancel := context.WithTimeout(context.TODO(), time.Second) + ctx, cancel := context.WithTimeout(t.Context(), time.Second) _, err := kv.Get(ctx, "abc") cancel() if errors.Is(err, ctx.Err()) { From c2a30e1714e7cd3e985e74e123e54e242475d1f2 Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Sat, 31 May 2025 01:28:38 +0200 Subject: [PATCH 0250/1068] chore(test): address Go usetesting for `watch_test` Signed-off-by: Mustafa Elbehery --- tests/integration/clientv3/watch_test.go | 94 ++++++++++++------------ 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/tests/integration/clientv3/watch_test.go b/tests/integration/clientv3/watch_test.go index 8cb9d53ec8e3..1e35f5dc305f 100644 --- a/tests/integration/clientv3/watch_test.go +++ b/tests/integration/clientv3/watch_test.go @@ -88,7 +88,7 @@ func testWatchMultiWatcher(t *testing.T, wctx *watchctx) { for _, k := range keys { // key watcher go func(key string) { - ch := wctx.w.Watch(context.TODO(), key) + ch := wctx.w.Watch(t.Context(), key) if ch == nil { t.Errorf("expected watcher channel, got nil") } @@ -109,7 +109,7 @@ func testWatchMultiWatcher(t *testing.T, wctx *watchctx) { } // prefix watcher on "b" (bar and baz) go func() { - prefixc := wctx.w.Watch(context.TODO(), "b", clientv3.WithPrefix()) + prefixc := wctx.w.Watch(t.Context(), "b", clientv3.WithPrefix()) if prefixc == nil { t.Errorf("expected watcher channel, got nil") } @@ -157,7 +157,7 @@ func testWatchMultiWatcher(t *testing.T, wctx *watchctx) { <-readyc } // generate events - ctx := context.TODO() + ctx := t.Context() for i := 0; i < numKeyUpdates; i++ { for _, k := range keys { v := fmt.Sprintf("%s-%d", k, i) @@ -173,7 +173,7 @@ func TestWatchRange(t *testing.T) { } func testWatchRange(t *testing.T, wctx *watchctx) { - wctx.ch = wctx.w.Watch(context.TODO(), "a", clientv3.WithRange("c")) + wctx.ch = wctx.w.Watch(t.Context(), "a", clientv3.WithRange("c")) require.NotNilf(t, wctx.ch, "expected non-nil channel") putAndWatch(t, wctx, "a", "a") putAndWatch(t, wctx, "b", "b") @@ -204,7 +204,7 @@ func testWatchReconnRequest(t *testing.T, wctx *watchctx) { } }() // should reconnect when requesting watch - wctx.ch = wctx.w.Watch(context.TODO(), "a") + wctx.ch = wctx.w.Watch(t.Context(), "a") require.NotNilf(t, wctx.ch, "expected non-nil channel") // wait for disconnections to stop @@ -213,7 +213,7 @@ func testWatchReconnRequest(t *testing.T, wctx *watchctx) { // spinning on dropping connections may trigger a leader election // due to resource starvation; l-read to ensure the cluster is stable - ctx, cancel := context.WithTimeout(context.TODO(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) _, err := wctx.kv.Get(ctx, "_") require.NoError(t, err) cancel() @@ -229,7 +229,7 @@ func TestWatchReconnInit(t *testing.T) { } func testWatchReconnInit(t *testing.T, wctx *watchctx) { - wctx.ch = wctx.w.Watch(context.TODO(), "a") + wctx.ch = wctx.w.Watch(t.Context(), "a") require.NotNilf(t, wctx.ch, "expected non-nil channel") wctx.clus.Members[wctx.wclientMember].Bridge().DropConnections() // watcher should recover @@ -243,7 +243,7 @@ func TestWatchReconnRunning(t *testing.T) { } func testWatchReconnRunning(t *testing.T, wctx *watchctx) { - wctx.ch = wctx.w.Watch(context.TODO(), "a") + wctx.ch = wctx.w.Watch(t.Context(), "a") require.NotNilf(t, wctx.ch, "expected non-nil channel") putAndWatch(t, wctx, "a", "a") // take down watcher connection @@ -259,7 +259,7 @@ func TestWatchCancelImmediate(t *testing.T) { } func testWatchCancelImmediate(t *testing.T, wctx *watchctx) { - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) cancel() wch := wctx.w.Watch(ctx, "a") select { @@ -276,7 +276,7 @@ func TestWatchCancelInit(t *testing.T) { } func testWatchCancelInit(t *testing.T, wctx *watchctx) { - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) wctx.ch = wctx.w.Watch(ctx, "a") require.NotNilf(t, wctx.ch, "expected non-nil watcher channel") cancel() @@ -294,7 +294,7 @@ func TestWatchCancelRunning(t *testing.T) { } func testWatchCancelRunning(t *testing.T, wctx *watchctx) { - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) wctx.ch = wctx.w.Watch(ctx, "a") require.NotNilf(t, wctx.ch, "expected non-nil watcher channel") _, err := wctx.kv.Put(ctx, "a", "a") @@ -319,7 +319,7 @@ func testWatchCancelRunning(t *testing.T, wctx *watchctx) { } func putAndWatch(t *testing.T, wctx *watchctx, key, val string) { - _, err := wctx.kv.Put(context.TODO(), key, val) + _, err := wctx.kv.Put(t.Context(), key, val) require.NoError(t, err) select { case <-time.After(5 * time.Second): @@ -340,16 +340,16 @@ func TestWatchResumeAfterDisconnect(t *testing.T) { defer clus.Terminate(t) cli := clus.Client(0) - _, err := cli.Put(context.TODO(), "b", "2") + _, err := cli.Put(t.Context(), "b", "2") require.NoError(t, err) - _, err = cli.Put(context.TODO(), "a", "3") + _, err = cli.Put(t.Context(), "a", "3") require.NoError(t, err) // if resume is broken, it'll pick up this key first instead of a=3 - _, err = cli.Put(context.TODO(), "a", "4") + _, err = cli.Put(t.Context(), "a", "4") require.NoError(t, err) // watch from revision 1 - wch := clus.Client(0).Watch(context.Background(), "a", clientv3.WithRev(1), clientv3.WithCreatedNotify()) + wch := clus.Client(0).Watch(t.Context(), "a", clientv3.WithRev(1), clientv3.WithCreatedNotify()) // response for the create watch request, no events are in this response // the current revision of etcd should be 4 if resp, ok := <-wch; !ok || resp.Header.Revision != 4 { @@ -397,7 +397,7 @@ func TestWatchResumeCompacted(t *testing.T) { // create a waiting watcher at rev 1 w := clus.Client(0) - wch := w.Watch(context.Background(), "foo", clientv3.WithRev(1)) + wch := w.Watch(t.Context(), "foo", clientv3.WithRev(1)) select { case w := <-wch: t.Errorf("unexpected message from wch %v", w) @@ -411,10 +411,10 @@ func TestWatchResumeCompacted(t *testing.T) { numPuts := 5 kv := clus.Client(1) for i := 0; i < numPuts; i++ { - _, err := kv.Put(context.TODO(), "foo", "bar") + _, err := kv.Put(t.Context(), "foo", "bar") require.NoError(t, err) } - _, err := kv.Compact(context.TODO(), 3) + _, err := kv.Compact(t.Context(), 3) require.NoError(t, err) clus.Members[0].Restart(t) @@ -471,15 +471,15 @@ func TestWatchCompactRevision(t *testing.T) { // set some keys kv := clus.RandClient() for i := 0; i < 5; i++ { - _, err := kv.Put(context.TODO(), "foo", "bar") + _, err := kv.Put(t.Context(), "foo", "bar") require.NoError(t, err) } w := clus.RandClient() - _, err := kv.Compact(context.TODO(), 4) + _, err := kv.Compact(t.Context(), 4) require.NoError(t, err) - wch := w.Watch(context.Background(), "foo", clientv3.WithRev(2)) + wch := w.Watch(t.Context(), "foo", clientv3.WithRev(2)) // get compacted error message wresp, ok := <-wch @@ -521,7 +521,7 @@ func testWatchWithProgressNotify(t *testing.T, watchOnPut bool) { if watchOnPut { opts = append(opts, clientv3.WithPrefix()) } - rch := wc.Watch(context.Background(), "foo", opts...) + rch := wc.Watch(t.Context(), "foo", opts...) select { case resp := <-rch: // wait for notification @@ -533,7 +533,7 @@ func testWatchWithProgressNotify(t *testing.T, watchOnPut bool) { } kvc := clus.RandClient() - _, err := kvc.Put(context.TODO(), "foox", "bar") + _, err := kvc.Put(t.Context(), "foox", "bar") require.NoError(t, err) select { @@ -569,7 +569,7 @@ func TestConfigurableWatchProgressNotifyInterval(t *testing.T) { defer clus.Terminate(t) opts := []clientv3.OpOption{clientv3.WithProgressNotify()} - rch := clus.RandClient().Watch(context.Background(), "foo", opts...) + rch := clus.RandClient().Watch(t.Context(), "foo", opts...) timeout := 1 * time.Second // we expect to receive watch progress notify in 2 * progressInterval, // but for CPU-starved situation it may take longer. So we use 1 second here for timeout. @@ -610,10 +610,10 @@ func TestWatchRequestProgress(t *testing.T) { var watchChans []clientv3.WatchChan for _, prefix := range c.watchers { - watchChans = append(watchChans, wc.Watch(context.Background(), prefix, clientv3.WithPrefix())) + watchChans = append(watchChans, wc.Watch(t.Context(), prefix, clientv3.WithPrefix())) } - _, err := wc.Put(context.Background(), "/a", "1") + _, err := wc.Put(t.Context(), "/a", "1") require.NoError(t, err) for _, rch := range watchChans { @@ -626,10 +626,10 @@ func TestWatchRequestProgress(t *testing.T) { } // put a value not being watched to increment revision - _, err = wc.Put(context.Background(), "x", "1") + _, err = wc.Put(t.Context(), "x", "1") require.NoError(t, err) - require.NoError(t, wc.RequestProgress(context.Background())) + require.NoError(t, wc.RequestProgress(t.Context())) // verify all watch channels receive a progress notify for _, rch := range watchChans { @@ -652,7 +652,7 @@ func TestWatchEventType(t *testing.T) { defer cluster.Terminate(t) client := cluster.RandClient() - ctx := context.Background() + ctx := t.Context() watchChan := client.Watch(ctx, "/", clientv3.WithPrefix()) _, err := client.Put(ctx, "/toDelete", "foo") @@ -724,7 +724,7 @@ func TestWatchErrConnClosed(t *testing.T) { donec := make(chan struct{}) go func() { defer close(donec) - ch := cli.Watch(context.TODO(), "foo") + ch := cli.Watch(t.Context(), "foo") if wr := <-ch; !IsCanceled(wr.Err()) { t.Errorf("expected context canceled, got %v", wr.Err()) @@ -753,7 +753,7 @@ func TestWatchAfterClose(t *testing.T) { donec := make(chan struct{}) go func() { - cli.Watch(context.TODO(), "foo") + cli.Watch(t.Context(), "foo") if err := cli.Close(); err != nil && !errors.Is(err, context.Canceled) { t.Errorf("expected %v, got %v", context.Canceled, err) } @@ -778,7 +778,7 @@ func TestWatchWithRequireLeader(t *testing.T) { // ensure that it receives the update so watching after killing quorum // is guaranteed to have the key. liveClient := clus.Client(0) - _, err := liveClient.Put(context.TODO(), "foo", "bar") + _, err := liveClient.Put(t.Context(), "foo", "bar") require.NoError(t, err) clus.Members[1].Stop(t) @@ -794,8 +794,8 @@ func TestWatchWithRequireLeader(t *testing.T) { // so proxy tests receive a leader loss event on its existing watch before creating a new watch. time.Sleep(time.Duration(5*clus.Members[0].ElectionTicks) * tickDuration) - chLeader := liveClient.Watch(clientv3.WithRequireLeader(context.TODO()), "foo", clientv3.WithRev(1)) - chNoLeader := liveClient.Watch(context.TODO(), "foo", clientv3.WithRev(1)) + chLeader := liveClient.Watch(clientv3.WithRequireLeader(t.Context()), "foo", clientv3.WithRev(1)) + chNoLeader := liveClient.Watch(t.Context(), "foo", clientv3.WithRev(1)) select { case resp, ok := <-chLeader: @@ -834,7 +834,7 @@ func TestWatchWithFilter(t *testing.T) { defer cluster.Terminate(t) client := cluster.RandClient() - ctx := context.Background() + ctx := t.Context() wcNoPut := client.Watch(ctx, "a", clientv3.WithFilterPut()) wcNoDel := client.Watch(ctx, "a", clientv3.WithFilterDelete()) @@ -872,7 +872,7 @@ func TestWatchWithCreatedNotification(t *testing.T) { client := cluster.RandClient() - ctx := context.Background() + ctx := t.Context() createC := client.Watch(ctx, "a", clientv3.WithCreatedNotify()) @@ -892,7 +892,7 @@ func TestWatchWithCreatedNotificationDropConn(t *testing.T) { client := cluster.RandClient() - wch := client.Watch(context.Background(), "a", clientv3.WithCreatedNotify()) + wch := client.Watch(t.Context(), "a", clientv3.WithCreatedNotify()) resp := <-wch @@ -925,7 +925,7 @@ func TestWatchCancelOnServer(t *testing.T) { // until require leader watches get create responses to ensure the leadership // watches have started. for { - ctx, cancel := context.WithCancel(clientv3.WithRequireLeader(context.TODO())) + ctx, cancel := context.WithCancel(clientv3.WithRequireLeader(t.Context())) ww := client.Watch(ctx, "a", clientv3.WithCreatedNotify()) wresp := <-ww cancel() @@ -938,7 +938,7 @@ func TestWatchCancelOnServer(t *testing.T) { for i := 0; i < numWatches; i++ { // force separate streams in client md := metadata.Pairs("some-key", fmt.Sprintf("%d", i)) - mctx := metadata.NewOutgoingContext(context.Background(), md) + mctx := metadata.NewOutgoingContext(t.Context(), md) ctx, cancel := context.WithCancel(mctx) cancels[i] = cancel w := client.Watch(ctx, fmt.Sprintf("%d", i), clientv3.WithCreatedNotify()) @@ -997,17 +997,17 @@ func testWatchOverlapContextCancel(t *testing.T, f func(*integration2.Cluster)) for i := range ctxs { // make unique stream md := metadata.Pairs("some-key", fmt.Sprintf("%d", i)) - ctxs[i] = metadata.NewOutgoingContext(context.Background(), md) + ctxs[i] = metadata.NewOutgoingContext(t.Context(), md) // limits the maximum number of outstanding watchers per stream ctxc[i] = make(chan struct{}, 2) } // issue concurrent watches on "abc" with cancel cli := clus.RandClient() - _, err := cli.Put(context.TODO(), "abc", "def") + _, err := cli.Put(t.Context(), "abc", "def") require.NoError(t, err) ch := make(chan struct{}, n) - tCtx, cancelFunc := context.WithCancel(context.Background()) + tCtx, cancelFunc := context.WithCancel(t.Context()) defer cancelFunc() for i := 0; i < n; i++ { go func() { @@ -1060,7 +1060,7 @@ func TestWatchCancelAndCloseClient(t *testing.T) { clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) wch := cli.Watch(ctx, "abc") donec := make(chan struct{}) go func() { @@ -1089,7 +1089,7 @@ func TestWatchStressResumeClose(t *testing.T) { defer clus.Terminate(t) cli := clus.Client(0) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) // add more watches than can be resumed before the cancel wchs := make([]clientv3.WatchChan, 2000) for i := range wchs { @@ -1108,7 +1108,7 @@ func TestWatchCancelDisconnected(t *testing.T) { clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) // add more watches than can be resumed before the cancel wch := cli.Watch(ctx, "abc") clus.Members[0].Stop(t) @@ -1126,7 +1126,7 @@ func TestWatchClose(t *testing.T) { } func testWatchClose(t *testing.T, wctx *watchctx) { - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) wch := wctx.w.Watch(ctx, "a") cancel() require.NotNilf(t, wch, "expected watcher channel, got nil") From f31948b73f85973e3475ae315568dc6b90fe7006 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 31 May 2025 14:13:59 +0200 Subject: [PATCH 0251/1068] Fix antithesis makefile target Signed-off-by: Marek Siarkowicz --- .github/workflows/antithesis-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index b38909233c6b..9e30c2cf036b 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -60,7 +60,7 @@ jobs: - name: Build and push config image working-directory: ./tests/antithesis run: | - make antithesis-build-antithesis-config-image REF=${{ inputs.etcd_ref }} + make antithesis-build-config-image REF=${{ inputs.etcd_ref }} export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:${{ inputs.etcd_ref }}_${{ github.sha }}" docker tag etcd-config:latest $TAG docker push $TAG From ee1f16a1acf3f4779c9984d0381b76c10f9616df Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Sat, 31 May 2025 01:35:50 +0200 Subject: [PATCH 0252/1068] chore(test): address Go usetesting for `v3_grpc_test` Signed-off-by: Mustafa Elbehery --- tests/integration/v3_grpc_test.go | 144 +++++++++++++++--------------- 1 file changed, 72 insertions(+), 72 deletions(-) diff --git a/tests/integration/v3_grpc_test.go b/tests/integration/v3_grpc_test.go index f7c331a5596a..ef7026763a4e 100644 --- a/tests/integration/v3_grpc_test.go +++ b/tests/integration/v3_grpc_test.go @@ -51,12 +51,12 @@ func TestV3PutOverwrite(t *testing.T) { key := []byte("foo") reqput := &pb.PutRequest{Key: key, Value: []byte("bar"), PrevKv: true} - respput, err := kvc.Put(context.TODO(), reqput) + respput, err := kvc.Put(t.Context(), reqput) require.NoErrorf(t, err, "couldn't put key") // overwrite reqput.Value = []byte("baz") - respput2, err := kvc.Put(context.TODO(), reqput) + respput2, err := kvc.Put(t.Context(), reqput) require.NoErrorf(t, err, "couldn't put key") require.Greaterf(t, respput2.Header.Revision, respput.Header.Revision, "expected newer revision on overwrite, got %v <= %v", respput2.Header.Revision, respput.Header.Revision) @@ -65,7 +65,7 @@ func TestV3PutOverwrite(t *testing.T) { } reqrange := &pb.RangeRequest{Key: key} - resprange, err := kvc.Range(context.TODO(), reqrange) + resprange, err := kvc.Range(t.Context(), reqrange) require.NoErrorf(t, err, "couldn't get key") require.Lenf(t, resprange.Kvs, 1, "expected 1 key, got %v", len(resprange.Kvs)) @@ -100,7 +100,7 @@ func TestV3PutRestart(t *testing.T) { require.NoErrorf(t, cerr, "cannot create client") clus.Members[stopIdx].ServerClient = c - ctx, cancel := context.WithTimeout(context.TODO(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) defer cancel() reqput := &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")} _, err := kvc.Put(ctx, reqput) @@ -118,20 +118,20 @@ func TestV3CompactCurrentRev(t *testing.T) { kvc := integration.ToGRPC(clus.RandClient()).KV preq := &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")} for i := 0; i < 3; i++ { - _, err := kvc.Put(context.Background(), preq) + _, err := kvc.Put(t.Context(), preq) require.NoErrorf(t, err, "couldn't put key") } // get key to add to proxy cache, if any - _, err := kvc.Range(context.TODO(), &pb.RangeRequest{Key: []byte("foo")}) + _, err := kvc.Range(t.Context(), &pb.RangeRequest{Key: []byte("foo")}) require.NoError(t, err) // compact on current revision - _, err = kvc.Compact(context.Background(), &pb.CompactionRequest{Revision: 4}) + _, err = kvc.Compact(t.Context(), &pb.CompactionRequest{Revision: 4}) require.NoErrorf(t, err, "couldn't compact kv space") // key still exists when linearized? - _, err = kvc.Range(context.Background(), &pb.RangeRequest{Key: []byte("foo")}) + _, err = kvc.Range(t.Context(), &pb.RangeRequest{Key: []byte("foo")}) require.NoErrorf(t, err, "couldn't get key after compaction") // key still exists when serialized? - _, err = kvc.Range(context.Background(), &pb.RangeRequest{Key: []byte("foo"), Serializable: true}) + _, err = kvc.Range(t.Context(), &pb.RangeRequest{Key: []byte("foo"), Serializable: true}) require.NoErrorf(t, err, "couldn't get serialized key after compaction") } @@ -145,11 +145,11 @@ func TestV3HashKV(t *testing.T) { mvc := integration.ToGRPC(clus.RandClient()).Maintenance for i := 0; i < 10; i++ { - resp, err := kvc.Put(context.Background(), &pb.PutRequest{Key: []byte("foo"), Value: []byte(fmt.Sprintf("bar%d", i))}) + resp, err := kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo"), Value: []byte(fmt.Sprintf("bar%d", i))}) require.NoError(t, err) rev := resp.Header.Revision - hresp, err := mvc.HashKV(context.Background(), &pb.HashKVRequest{Revision: 0}) + hresp, err := mvc.HashKV(t.Context(), &pb.HashKVRequest{Revision: 0}) require.NoError(t, err) if rev != hresp.Header.Revision { t.Fatalf("Put rev %v != HashKV rev %v", rev, hresp.Header.Revision) @@ -158,7 +158,7 @@ func TestV3HashKV(t *testing.T) { prevHash := hresp.Hash prevCompactRev := hresp.CompactRevision for i := 0; i < 10; i++ { - hresp, err := mvc.HashKV(context.Background(), &pb.HashKVRequest{Revision: 0}) + hresp, err := mvc.HashKV(t.Context(), &pb.HashKVRequest{Revision: 0}) require.NoError(t, err) if rev != hresp.Header.Revision { t.Fatalf("Put rev %v != HashKV rev %v", rev, hresp.Header.Revision) @@ -248,7 +248,7 @@ func TestV3TxnTooManyOps(t *testing.T) { tt(txn) } - _, err := kvc.Txn(context.Background(), txn) + _, err := kvc.Txn(t.Context(), txn) if !eqErrGRPC(err, rpctypes.ErrGRPCTooManyOps) { t.Errorf("#%d: err = %v, want %v", i, err, rpctypes.ErrGRPCTooManyOps) } @@ -374,7 +374,7 @@ func TestV3TxnDuplicateKeys(t *testing.T) { } for i, tt := range tests { txn := &pb.TxnRequest{Success: tt.txnSuccess} - _, err := kvc.Txn(context.Background(), txn) + _, err := kvc.Txn(t.Context(), txn) if !eqErrGRPC(err, tt.werr) { t.Errorf("#%d: err = %v, want %v", i, err, tt.werr) } @@ -389,12 +389,12 @@ func TestV3TxnRevision(t *testing.T) { kvc := integration.ToGRPC(clus.RandClient()).KV pr := &pb.PutRequest{Key: []byte("abc"), Value: []byte("def")} - presp, err := kvc.Put(context.TODO(), pr) + presp, err := kvc.Put(t.Context(), pr) require.NoError(t, err) txnget := &pb.RequestOp{Request: &pb.RequestOp_RequestRange{RequestRange: &pb.RangeRequest{Key: []byte("abc")}}} txn := &pb.TxnRequest{Success: []*pb.RequestOp{txnget}} - tresp, err := kvc.Txn(context.TODO(), txn) + tresp, err := kvc.Txn(t.Context(), txn) require.NoError(t, err) // did not update revision @@ -404,7 +404,7 @@ func TestV3TxnRevision(t *testing.T) { txndr := &pb.RequestOp{Request: &pb.RequestOp_RequestDeleteRange{RequestDeleteRange: &pb.DeleteRangeRequest{Key: []byte("def")}}} txn = &pb.TxnRequest{Success: []*pb.RequestOp{txndr}} - tresp, err = kvc.Txn(context.TODO(), txn) + tresp, err = kvc.Txn(t.Context(), txn) require.NoError(t, err) // did not update revision @@ -414,7 +414,7 @@ func TestV3TxnRevision(t *testing.T) { txnput := &pb.RequestOp{Request: &pb.RequestOp_RequestPut{RequestPut: &pb.PutRequest{Key: []byte("abc"), Value: []byte("123")}}} txn = &pb.TxnRequest{Success: []*pb.RequestOp{txnput}} - tresp, err = kvc.Txn(context.TODO(), txn) + tresp, err = kvc.Txn(t.Context(), txn) require.NoError(t, err) // updated revision @@ -439,7 +439,7 @@ func TestV3TxnCmpHeaderRev(t *testing.T) { go func() { defer close(revc) pr := &pb.PutRequest{Key: []byte("k"), Value: []byte("v")} - presp, err := kvc.Put(context.TODO(), pr) + presp, err := kvc.Put(t.Context(), pr) errCh <- err if err != nil { return @@ -461,7 +461,7 @@ func TestV3TxnCmpHeaderRev(t *testing.T) { } txn.Compare = append(txn.Compare, cmp) - tresp, err := kvc.Txn(context.TODO(), txn) + tresp, err := kvc.Txn(t.Context(), txn) require.NoError(t, err) prev := <-revc @@ -486,7 +486,7 @@ func TestV3TxnRangeCompare(t *testing.T) { // put keys, named by expected revision for _, k := range []string{"/a/2", "/a/3", "/a/4", "/f/5"} { - _, err := clus.Client(0).Put(context.TODO(), k, "x") + _, err := clus.Client(0).Put(t.Context(), k, "x") require.NoError(t, err) } @@ -578,7 +578,7 @@ func TestV3TxnRangeCompare(t *testing.T) { for i, tt := range tests { txn := &pb.TxnRequest{} txn.Compare = append(txn.Compare, &tt.cmp) - tresp, err := kvc.Txn(context.TODO(), txn) + tresp, err := kvc.Txn(t.Context(), txn) require.NoError(t, err) if tt.wSuccess != tresp.Succeeded { t.Errorf("#%d: expected %v, got %v", i, tt.wSuccess, tresp.Succeeded) @@ -625,7 +625,7 @@ func TestV3TxnNestedPath(t *testing.T) { txn = nextTxn } - tresp, err := kvc.Txn(context.TODO(), topTxn) + tresp, err := kvc.Txn(t.Context(), topTxn) require.NoError(t, err) curTxnResp := tresp @@ -650,7 +650,7 @@ func TestV3PutIgnoreValue(t *testing.T) { // create lease lc := integration.ToGRPC(clus.RandClient()).Lease - lresp, err := lc.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: 30}) + lresp, err := lc.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) require.NoError(t, err) require.Empty(t, lresp.Error) @@ -663,7 +663,7 @@ func TestV3PutIgnoreValue(t *testing.T) { func() error { preq := putReq preq.IgnoreValue = true - _, err := kvc.Put(context.TODO(), &preq) + _, err := kvc.Put(t.Context(), &preq) return err }, rpctypes.ErrGRPCKeyNotFound, @@ -678,7 +678,7 @@ func TestV3PutIgnoreValue(t *testing.T) { txn.Success = append(txn.Success, &pb.RequestOp{ Request: &pb.RequestOp_RequestPut{RequestPut: &preq}, }) - _, err := kvc.Txn(context.TODO(), txn) + _, err := kvc.Txn(t.Context(), txn) return err }, rpctypes.ErrGRPCKeyNotFound, @@ -686,7 +686,7 @@ func TestV3PutIgnoreValue(t *testing.T) { }, { // put success func() error { - _, err := kvc.Put(context.TODO(), &putReq) + _, err := kvc.Put(t.Context(), &putReq) return err }, nil, @@ -702,7 +702,7 @@ func TestV3PutIgnoreValue(t *testing.T) { txn.Success = append(txn.Success, &pb.RequestOp{ Request: &pb.RequestOp_RequestPut{RequestPut: &preq}, }) - _, err := kvc.Txn(context.TODO(), txn) + _, err := kvc.Txn(t.Context(), txn) return err }, nil, @@ -712,7 +712,7 @@ func TestV3PutIgnoreValue(t *testing.T) { func() error { preq := putReq preq.IgnoreValue = true - _, err := kvc.Put(context.TODO(), &preq) + _, err := kvc.Put(t.Context(), &preq) return err }, rpctypes.ErrGRPCValueProvided, @@ -723,7 +723,7 @@ func TestV3PutIgnoreValue(t *testing.T) { preq := putReq preq.Value = nil preq.IgnoreValue = true - presp, err := kvc.Put(context.TODO(), &preq) + presp, err := kvc.Put(t.Context(), &preq) if err != nil { return err } @@ -737,7 +737,7 @@ func TestV3PutIgnoreValue(t *testing.T) { }, { // revoke lease, ensure detached key doesn't get deleted func() error { - _, err := lc.LeaseRevoke(context.TODO(), &pb.LeaseRevokeRequest{ID: lresp.ID}) + _, err := lc.LeaseRevoke(t.Context(), &pb.LeaseRevokeRequest{ID: lresp.ID}) return err }, nil, @@ -752,7 +752,7 @@ func TestV3PutIgnoreValue(t *testing.T) { if tt.putErr != nil { continue } - rr, err := kvc.Range(context.TODO(), &pb.RangeRequest{Key: key}) + rr, err := kvc.Range(t.Context(), &pb.RangeRequest{Key: key}) if err != nil { t.Fatalf("#%d: %v", i, err) } @@ -779,7 +779,7 @@ func TestV3PutIgnoreLease(t *testing.T) { // create lease lc := integration.ToGRPC(clus.RandClient()).Lease - lresp, err := lc.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: 30}) + lresp, err := lc.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) require.NoError(t, err) require.Empty(t, lresp.Error) @@ -796,7 +796,7 @@ func TestV3PutIgnoreLease(t *testing.T) { func() error { preq := putReq preq.IgnoreLease = true - _, err := kvc.Put(context.TODO(), &preq) + _, err := kvc.Put(t.Context(), &preq) return err }, rpctypes.ErrGRPCKeyNotFound, @@ -811,7 +811,7 @@ func TestV3PutIgnoreLease(t *testing.T) { txn.Success = append(txn.Success, &pb.RequestOp{ Request: &pb.RequestOp_RequestPut{RequestPut: &preq}, }) - _, err := kvc.Txn(context.TODO(), txn) + _, err := kvc.Txn(t.Context(), txn) return err }, rpctypes.ErrGRPCKeyNotFound, @@ -822,7 +822,7 @@ func TestV3PutIgnoreLease(t *testing.T) { func() error { preq := putReq preq.Lease = lresp.ID - _, err := kvc.Put(context.TODO(), &preq) + _, err := kvc.Put(t.Context(), &preq) return err }, nil, @@ -838,7 +838,7 @@ func TestV3PutIgnoreLease(t *testing.T) { txn.Success = append(txn.Success, &pb.RequestOp{ Request: &pb.RequestOp_RequestPut{RequestPut: &preq}, }) - _, err := kvc.Txn(context.TODO(), txn) + _, err := kvc.Txn(t.Context(), txn) return err }, nil, @@ -850,7 +850,7 @@ func TestV3PutIgnoreLease(t *testing.T) { preq := putReq preq.Lease = lresp.ID preq.IgnoreLease = true - _, err := kvc.Put(context.TODO(), &preq) + _, err := kvc.Put(t.Context(), &preq) return err }, rpctypes.ErrGRPCLeaseProvided, @@ -859,7 +859,7 @@ func TestV3PutIgnoreLease(t *testing.T) { }, { // overwrite with previous value, ensure no prev-kv is returned and lease is detached func() error { - presp, err := kvc.Put(context.TODO(), &putReq) + presp, err := kvc.Put(t.Context(), &putReq) if err != nil { return err } @@ -874,7 +874,7 @@ func TestV3PutIgnoreLease(t *testing.T) { }, { // revoke lease, ensure detached key doesn't get deleted func() error { - _, err := lc.LeaseRevoke(context.TODO(), &pb.LeaseRevokeRequest{ID: lresp.ID}) + _, err := lc.LeaseRevoke(t.Context(), &pb.LeaseRevokeRequest{ID: lresp.ID}) return err }, nil, @@ -890,7 +890,7 @@ func TestV3PutIgnoreLease(t *testing.T) { if tt.putErr != nil { continue } - rr, err := kvc.Range(context.TODO(), &pb.RangeRequest{Key: key}) + rr, err := kvc.Range(t.Context(), &pb.RangeRequest{Key: key}) if err != nil { t.Fatalf("#%d: %v", i, err) } @@ -918,7 +918,7 @@ func TestV3PutMissingLease(t *testing.T) { tests := []func(){ // put case func() { - if presp, err := kvc.Put(context.TODO(), preq); err == nil { + if presp, err := kvc.Put(t.Context(), preq); err == nil { t.Errorf("succeeded put key. req: %v. resp: %v", preq, presp) } }, @@ -930,7 +930,7 @@ func TestV3PutMissingLease(t *testing.T) { RequestPut: preq, }, }) - if tresp, err := kvc.Txn(context.TODO(), txn); err == nil { + if tresp, err := kvc.Txn(t.Context(), txn); err == nil { t.Errorf("succeeded txn success. req: %v. resp: %v", txn, tresp) } }, @@ -948,7 +948,7 @@ func TestV3PutMissingLease(t *testing.T) { Key: []byte("bar"), } txn.Compare = append(txn.Compare, cmp) - if tresp, err := kvc.Txn(context.TODO(), txn); err == nil { + if tresp, err := kvc.Txn(t.Context(), txn); err == nil { t.Errorf("succeeded txn failure. req: %v. resp: %v", txn, tresp) } }, @@ -966,7 +966,7 @@ func TestV3PutMissingLease(t *testing.T) { RequestPut: preq, }, }) - if tresp, err := kvc.Txn(context.TODO(), txn); err != nil { + if tresp, err := kvc.Txn(t.Context(), txn); err != nil { t.Errorf("failed good txn. req: %v. resp: %v", txn, tresp) } }, @@ -976,7 +976,7 @@ func TestV3PutMissingLease(t *testing.T) { f() // key shouldn't have been stored rreq := &pb.RangeRequest{Key: key} - rresp, err := kvc.Range(context.TODO(), rreq) + rresp, err := kvc.Range(t.Context(), rreq) if err != nil { t.Errorf("#%d. could not rangereq (%v)", i, err) } else if len(rresp.Kvs) != 0 { @@ -1059,7 +1059,7 @@ func TestV3DeleteRange(t *testing.T) { ks := tt.keySet for j := range ks { reqput := &pb.PutRequest{Key: []byte(ks[j]), Value: []byte{}} - _, err := kvc.Put(context.TODO(), reqput) + _, err := kvc.Put(t.Context(), reqput) if err != nil { t.Fatalf("couldn't put key (%v)", err) } @@ -1070,7 +1070,7 @@ func TestV3DeleteRange(t *testing.T) { RangeEnd: []byte(tt.end), PrevKv: tt.prevKV, } - dresp, err := kvc.DeleteRange(context.TODO(), dreq) + dresp, err := kvc.DeleteRange(t.Context(), dreq) if err != nil { t.Fatalf("couldn't delete range on test %d (%v)", i, err) } @@ -1084,7 +1084,7 @@ func TestV3DeleteRange(t *testing.T) { } rreq := &pb.RangeRequest{Key: []byte{0x0}, RangeEnd: []byte{0xff}} - rresp, err := kvc.Range(context.TODO(), rreq) + rresp, err := kvc.Range(t.Context(), rreq) if err != nil { t.Errorf("couldn't get range on test %v (%v)", i, err) } @@ -1114,13 +1114,13 @@ func TestV3TxnInvalidRange(t *testing.T) { preq := &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")} for i := 0; i < 3; i++ { - _, err := kvc.Put(context.Background(), preq) + _, err := kvc.Put(t.Context(), preq) if err != nil { t.Fatalf("couldn't put key (%v)", err) } } - _, err := kvc.Compact(context.Background(), &pb.CompactionRequest{Revision: 2}) + _, err := kvc.Compact(t.Context(), &pb.CompactionRequest{Revision: 2}) if err != nil { t.Fatalf("couldn't compact kv space (%v)", err) } @@ -1140,14 +1140,14 @@ func TestV3TxnInvalidRange(t *testing.T) { }, }) - if _, err := kvc.Txn(context.TODO(), txn); !eqErrGRPC(err, rpctypes.ErrGRPCFutureRev) { + if _, err := kvc.Txn(t.Context(), txn); !eqErrGRPC(err, rpctypes.ErrGRPCFutureRev) { t.Errorf("err = %v, want %v", err, rpctypes.ErrGRPCFutureRev) } // compacted rev tv, _ := txn.Success[1].Request.(*pb.RequestOp_RequestRange) tv.RequestRange.Revision = 1 - if _, err := kvc.Txn(context.TODO(), txn); !eqErrGRPC(err, rpctypes.ErrGRPCCompacted) { + if _, err := kvc.Txn(t.Context(), txn); !eqErrGRPC(err, rpctypes.ErrGRPCCompacted) { t.Errorf("err = %v, want %v", err, rpctypes.ErrGRPCCompacted) } } @@ -1164,7 +1164,7 @@ func TestV3TooLargeRequest(t *testing.T) { largeV := make([]byte, 2*1024*1024) preq := &pb.PutRequest{Key: []byte("foo"), Value: largeV} - _, err := kvc.Put(context.Background(), preq) + _, err := kvc.Put(t.Context(), preq) if !eqErrGRPC(err, rpctypes.ErrGRPCRequestTooLarge) { t.Errorf("err = %v, want %v", err, rpctypes.ErrGRPCRequestTooLarge) } @@ -1183,13 +1183,13 @@ func TestV3Hash(t *testing.T) { preq := &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")} for i := 0; i < 3; i++ { - _, err := kvc.Put(context.Background(), preq) + _, err := kvc.Put(t.Context(), preq) if err != nil { t.Fatalf("couldn't put key (%v)", err) } } - resp, err := m.Hash(context.Background(), &pb.HashRequest{}) + resp, err := m.Hash(t.Context(), &pb.HashRequest{}) if err != nil || resp.Hash == 0 { t.Fatalf("couldn't hash (%v, hash %d)", err, resp.Hash) } @@ -1202,7 +1202,7 @@ func TestV3HashRestart(t *testing.T) { defer clus.Terminate(t) cli := clus.RandClient() - resp, err := integration.ToGRPC(cli).Maintenance.Hash(context.Background(), &pb.HashRequest{}) + resp, err := integration.ToGRPC(cli).Maintenance.Hash(t.Context(), &pb.HashRequest{}) if err != nil || resp.Hash == 0 { t.Fatalf("couldn't hash (%v, hash %d)", err, resp.Hash) } @@ -1215,7 +1215,7 @@ func TestV3HashRestart(t *testing.T) { waitForRestart(t, kvc) cli = clus.RandClient() - resp, err = integration.ToGRPC(cli).Maintenance.Hash(context.Background(), &pb.HashRequest{}) + resp, err = integration.ToGRPC(cli).Maintenance.Hash(t.Context(), &pb.HashRequest{}) if err != nil || resp.Hash == 0 { t.Fatalf("couldn't hash (%v, hash %d)", err, resp.Hash) } @@ -1246,12 +1246,12 @@ func TestV3StorageQuotaAPI(t *testing.T) { // test small put that fits in quota smallbuf := make([]byte, 512) - _, err := kvc.Put(context.TODO(), &pb.PutRequest{Key: key, Value: smallbuf}) + _, err := kvc.Put(t.Context(), &pb.PutRequest{Key: key, Value: smallbuf}) require.NoError(t, err) // test big put bigbuf := make([]byte, quotasize) - _, err = kvc.Put(context.TODO(), &pb.PutRequest{Key: key, Value: bigbuf}) + _, err = kvc.Put(t.Context(), &pb.PutRequest{Key: key, Value: bigbuf}) if !eqErrGRPC(err, rpctypes.ErrGRPCNoSpace) { t.Fatalf("big put got %v, expected %v", err, rpctypes.ErrGRPCNoSpace) } @@ -1267,7 +1267,7 @@ func TestV3StorageQuotaAPI(t *testing.T) { } txnreq := &pb.TxnRequest{} txnreq.Success = append(txnreq.Success, puttxn) - _, txnerr := kvc.Txn(context.TODO(), txnreq) + _, txnerr := kvc.Txn(t.Context(), txnreq) if !eqErrGRPC(txnerr, rpctypes.ErrGRPCNoSpace) { t.Fatalf("big txn got %v, expected %v", err, rpctypes.ErrGRPCNoSpace) } @@ -1499,14 +1499,14 @@ func TestV3RangeRequest(t *testing.T) { for _, k := range tt.putKeys { kvc := integration.ToGRPC(clus.RandClient()).KV req := &pb.PutRequest{Key: []byte(k), Value: []byte("bar")} - if _, err := kvc.Put(context.TODO(), req); err != nil { + if _, err := kvc.Put(t.Context(), req); err != nil { t.Fatalf("#%d: couldn't put key (%v)", i, err) } } for j, req := range tt.reqs { kvc := integration.ToGRPC(clus.RandClient()).KV - resp, err := kvc.Range(context.TODO(), &req) + resp, err := kvc.Range(t.Context(), &req) if err != nil { t.Errorf("#%d.%d: Range error: %v", i, j, err) continue @@ -1558,7 +1558,7 @@ func TestTLSGRPCRejectInsecureClient(t *testing.T) { donec := make(chan error, 1) go func() { - ctx, cancel := context.WithTimeout(context.TODO(), 5*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) reqput := &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")} _, perr := integration.ToGRPC(client).KV.Put(ctx, reqput) cancel() @@ -1603,7 +1603,7 @@ func TestTLSGRPCAcceptSecureAll(t *testing.T) { defer client.Close() reqput := &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")} - if _, err := integration.ToGRPC(client).KV.Put(context.TODO(), reqput); err != nil { + if _, err := integration.ToGRPC(client).KV.Put(t.Context(), reqput); err != nil { t.Fatalf("unexpected error on put over tls (%v)", err) } } @@ -1789,7 +1789,7 @@ func TestGRPCRequireLeader(t *testing.T) { time.Sleep(time.Duration(3*integration.ElectionTicks) * config.TickDuration) md := metadata.Pairs(rpctypes.MetadataRequireLeaderKey, rpctypes.MetadataHasLeader) - ctx := metadata.NewOutgoingContext(context.Background(), md) + ctx := metadata.NewOutgoingContext(t.Context(), md) reqput := &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")} if _, err := integration.ToGRPC(client).KV.Put(ctx, reqput); rpctypes.ErrorDesc(err) != rpctypes.ErrNoLeader.Error() { t.Errorf("err = %v, want %v", err, rpctypes.ErrNoLeader) @@ -1810,7 +1810,7 @@ func TestGRPCStreamRequireLeader(t *testing.T) { wAPI := integration.ToGRPC(client).Watch md := metadata.Pairs(rpctypes.MetadataRequireLeaderKey, rpctypes.MetadataHasLeader) - ctx := metadata.NewOutgoingContext(context.Background(), md) + ctx := metadata.NewOutgoingContext(t.Context(), md) wStream, err := wAPI.Watch(ctx) if err != nil { t.Fatalf("wAPI.Watch error: %v", err) @@ -1877,7 +1877,7 @@ func TestV3LargeRequests(t *testing.T) { defer clus.Terminate(t) kvcli := integration.ToGRPC(clus.Client(0)).KV reqput := &pb.PutRequest{Key: []byte("foo"), Value: make([]byte, test.valueSize)} - _, err := kvcli.Put(context.TODO(), reqput) + _, err := kvcli.Put(t.Context(), reqput) if !eqErrGRPC(err, test.expectError) { t.Errorf("#%d: expected error %v, got %v", i, test.expectError, err) } @@ -1886,7 +1886,7 @@ func TestV3LargeRequests(t *testing.T) { if test.expectError == nil { reqget := &pb.RangeRequest{Key: []byte("foo")} // limit receive call size with original value + gRPC overhead bytes - _, err = kvcli.Range(context.TODO(), reqget, grpc.MaxCallRecvMsgSize(test.valueSize+512*1024)) + _, err = kvcli.Range(t.Context(), reqget, grpc.MaxCallRecvMsgSize(test.valueSize+512*1024)) if err != nil { t.Errorf("#%d: range expected no error, got %v", i, err) } @@ -1938,7 +1938,7 @@ func TestV3AdditionalGRPCOptions(t *testing.T) { defer clus.Terminate(t) kvcli := integration.ToGRPC(clus.Client(0)).KV reqput := &pb.PutRequest{Key: []byte("foo"), Value: make([]byte, test.valueSize)} - if _, err := kvcli.Put(context.TODO(), reqput); err != nil { + if _, err := kvcli.Put(t.Context(), reqput); err != nil { var etcdErr rpctypes.EtcdError if errors.As(err, &etcdErr) { if err.Error() != status.Convert(test.expectError).Message() { @@ -1952,7 +1952,7 @@ func TestV3AdditionalGRPCOptions(t *testing.T) { if test.expectError == nil { reqget := &pb.RangeRequest{Key: []byte("foo")} // limit receive call size with original value + gRPC overhead bytes - _, err := kvcli.Range(context.TODO(), reqget, grpc.MaxCallRecvMsgSize(test.valueSize+512*1024)) + _, err := kvcli.Range(t.Context(), reqget, grpc.MaxCallRecvMsgSize(test.valueSize+512*1024)) if err != nil { t.Errorf("range expected no error, got %v", err) } @@ -1974,7 +1974,7 @@ func waitForRestart(t *testing.T, kvc pb.KVClient) { // TODO: Remove retry loop once the new grpc load balancer provides retry. var err error for i := 0; i < 10; i++ { - if _, err = kvc.Range(context.TODO(), req, grpc.WaitForReady(true)); err != nil { + if _, err = kvc.Range(t.Context(), req, grpc.WaitForReady(true)); err != nil { if status, ok := status.FromError(err); ok && status.Code() == codes.Unavailable { time.Sleep(time.Millisecond * 250) } else { From 7db97ce17c64b22fd7ab38d43e0c8e0d822f0ee3 Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Sat, 31 May 2025 01:37:44 +0200 Subject: [PATCH 0253/1068] chore(test): address Go usetesting for `v3_lease_test` Signed-off-by: Mustafa Elbehery --- tests/integration/v3_lease_test.go | 92 +++++++++++++++--------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/tests/integration/v3_lease_test.go b/tests/integration/v3_lease_test.go index 532e94f3166e..61cdb3d3e860 100644 --- a/tests/integration/v3_lease_test.go +++ b/tests/integration/v3_lease_test.go @@ -48,7 +48,7 @@ func TestV3LeasePromote(t *testing.T) { defer clus.Terminate(t) // create lease - lresp, err := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: 3}) + lresp, err := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 3}) ttl := time.Duration(lresp.TTL) * time.Second afterGrant := time.Now() require.NoError(t, err) @@ -103,7 +103,7 @@ func TestV3LeaseRevoke(t *testing.T) { integration.BeforeTest(t) testLeaseRemoveLeasedKey(t, func(clus *integration.Cluster, leaseID int64) error { lc := integration.ToGRPC(clus.RandClient()).Lease - _, err := lc.LeaseRevoke(context.TODO(), &pb.LeaseRevokeRequest{ID: leaseID}) + _, err := lc.LeaseRevoke(t.Context(), &pb.LeaseRevokeRequest{ID: leaseID}) return err }) } @@ -116,7 +116,7 @@ func TestV3LeaseGrantByID(t *testing.T) { // create fixed lease lresp, err := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant( - context.TODO(), + t.Context(), &pb.LeaseGrantRequest{ID: 1, TTL: 1}) if err != nil { t.Errorf("could not create lease 1 (%v)", err) @@ -127,7 +127,7 @@ func TestV3LeaseGrantByID(t *testing.T) { // create duplicate fixed lease _, err = integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant( - context.TODO(), + t.Context(), &pb.LeaseGrantRequest{ID: 1, TTL: 1}) if !eqErrGRPC(err, rpctypes.ErrGRPCLeaseExist) { t.Error(err) @@ -135,7 +135,7 @@ func TestV3LeaseGrantByID(t *testing.T) { // create fresh fixed lease lresp, err = integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant( - context.TODO(), + t.Context(), &pb.LeaseGrantRequest{ID: 2, TTL: 1}) if err != nil { t.Errorf("could not create lease 2 (%v)", err) @@ -179,7 +179,7 @@ func TestV3LeaseNegativeID(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() cc := clus.RandClient() lresp, err := integration.ToGRPC(cc).Lease.LeaseGrant(ctx, &pb.LeaseGrantRequest{ID: tc.leaseID, TTL: 300}) @@ -233,7 +233,7 @@ func TestV3LeaseExpire(t *testing.T) { testLeaseRemoveLeasedKey(t, func(clus *integration.Cluster, leaseID int64) error { // let lease lapse; wait for deleted key - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() wStream, err := integration.ToGRPC(clus.RandClient()).Watch.Watch(ctx) if err != nil { @@ -287,7 +287,7 @@ func TestV3LeaseKeepAlive(t *testing.T) { testLeaseRemoveLeasedKey(t, func(clus *integration.Cluster, leaseID int64) error { lc := integration.ToGRPC(clus.RandClient()).Lease lreq := &pb.LeaseKeepAliveRequest{ID: leaseID} - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() lac, err := lc.LeaseKeepAlive(ctx) if err != nil { @@ -309,7 +309,7 @@ func TestV3LeaseKeepAlive(t *testing.T) { } time.Sleep(time.Duration(lresp.TTL/2) * time.Second) } - _, err = lc.LeaseRevoke(context.TODO(), &pb.LeaseRevokeRequest{ID: leaseID}) + _, err = lc.LeaseRevoke(t.Context(), &pb.LeaseRevokeRequest{ID: leaseID}) return err }) } @@ -375,7 +375,7 @@ func TestV3LeaseCheckpoint(t *testing.T) { defer clus.Terminate(t) // create lease - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() c := integration.ToGRPC(clus.RandClient()) lresp, err := c.Lease.LeaseGrant(ctx, &pb.LeaseGrantRequest{TTL: int64(tc.ttl.Seconds())}) @@ -428,7 +428,7 @@ func TestV3LeaseExists(t *testing.T) { defer clus.Terminate(t) // create lease - ctx0, cancel0 := context.WithCancel(context.Background()) + ctx0, cancel0 := context.WithCancel(t.Context()) defer cancel0() lresp, err := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant( ctx0, @@ -447,7 +447,7 @@ func TestV3LeaseLeases(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) - ctx0, cancel0 := context.WithCancel(context.Background()) + ctx0, cancel0 := context.WithCancel(t.Context()) defer cancel0() // create leases @@ -462,7 +462,7 @@ func TestV3LeaseLeases(t *testing.T) { } lresp, err := integration.ToGRPC(clus.RandClient()).Lease.LeaseLeases( - context.Background(), + t.Context(), &pb.LeaseLeasesRequest{}) require.NoError(t, err) for i := range lresp.Leases { @@ -505,7 +505,7 @@ func testLeaseStress(t *testing.T, stresser func(context.Context, pb.LeaseClient clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) defer cancel() errc := make(chan error) @@ -583,7 +583,7 @@ func TestV3PutOnNonExistLease(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() badLeaseID := int64(0x12345678) @@ -601,14 +601,14 @@ func TestV3GetNonExistLease(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() lc := integration.ToGRPC(clus.RandClient()).Lease lresp, err := lc.LeaseGrant(ctx, &pb.LeaseGrantRequest{TTL: 10}) if err != nil { t.Errorf("failed to create lease %v", err) } - _, err = lc.LeaseRevoke(context.TODO(), &pb.LeaseRevokeRequest{ID: lresp.ID}) + _, err = lc.LeaseRevoke(t.Context(), &pb.LeaseRevokeRequest{ID: lresp.ID}) require.NoError(t, err) leaseTTLr := &pb.LeaseTimeToLiveRequest{ @@ -639,7 +639,7 @@ func TestV3LeaseSwitch(t *testing.T) { key := "foo" // create lease - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() lresp1, err1 := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(ctx, &pb.LeaseGrantRequest{TTL: 30}) require.NoError(t, err1) @@ -658,7 +658,7 @@ func TestV3LeaseSwitch(t *testing.T) { _, err = integration.ToGRPC(clus.RandClient()).Lease.LeaseRevoke(ctx, &pb.LeaseRevokeRequest{ID: lresp1.ID}) require.NoError(t, err) rreq := &pb.RangeRequest{Key: []byte("foo")} - rresp, err := integration.ToGRPC(clus.RandClient()).KV.Range(context.TODO(), rreq) + rresp, err := integration.ToGRPC(clus.RandClient()).KV.Range(t.Context(), rreq) require.NoError(t, err) if len(rresp.Kvs) != 1 { t.Fatalf("unexpect removal of key") @@ -667,7 +667,7 @@ func TestV3LeaseSwitch(t *testing.T) { // revoke lease2 should remove key _, err = integration.ToGRPC(clus.RandClient()).Lease.LeaseRevoke(ctx, &pb.LeaseRevokeRequest{ID: lresp2.ID}) require.NoError(t, err) - rresp, err = integration.ToGRPC(clus.RandClient()).KV.Range(context.TODO(), rreq) + rresp, err = integration.ToGRPC(clus.RandClient()).KV.Range(t.Context(), rreq) require.NoError(t, err) if len(rresp.Kvs) != 0 { t.Fatalf("lease removed but key remains") @@ -688,7 +688,7 @@ func TestV3LeaseFailover(t *testing.T) { lc := integration.ToGRPC(clus.Client(toIsolate)).Lease // create lease - lresp, err := lc.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: 5}) + lresp, err := lc.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 5}) require.NoError(t, err) require.Empty(t, lresp.Error) @@ -698,7 +698,7 @@ func TestV3LeaseFailover(t *testing.T) { lreq := &pb.LeaseKeepAliveRequest{ID: lresp.ID} md := metadata.Pairs(rpctypes.MetadataRequireLeaderKey, rpctypes.MetadataHasLeader) - mctx := metadata.NewOutgoingContext(context.Background(), md) + mctx := metadata.NewOutgoingContext(t.Context(), md) ctx, cancel := context.WithCancel(mctx) defer cancel() lac, err := lc.LeaseKeepAlive(ctx) @@ -743,7 +743,7 @@ func TestV3LeaseRequireLeader(t *testing.T) { clus.Members[2].Stop(t) md := metadata.Pairs(rpctypes.MetadataRequireLeaderKey, rpctypes.MetadataHasLeader) - mctx := metadata.NewOutgoingContext(context.Background(), md) + mctx := metadata.NewOutgoingContext(t.Context(), md) ctx, cancel := context.WithCancel(mctx) defer cancel() lac, err := lc.LeaseKeepAlive(ctx) @@ -779,10 +779,10 @@ func TestV3LeaseRecoverAndRevoke(t *testing.T) { kvc := integration.ToGRPC(clus.Client(0)).KV lsc := integration.ToGRPC(clus.Client(0)).Lease - lresp, err := lsc.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: fiveMinTTL}) + lresp, err := lsc.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: fiveMinTTL}) require.NoError(t, err) require.Empty(t, lresp.Error) - _, err = kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar"), Lease: lresp.ID}) + _, err = kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar"), Lease: lresp.ID}) require.NoError(t, err) // restart server and ensure lease still exists @@ -799,9 +799,9 @@ func TestV3LeaseRecoverAndRevoke(t *testing.T) { defer nc.Close() // revoke should delete the key - _, err = lsc.LeaseRevoke(context.TODO(), &pb.LeaseRevokeRequest{ID: lresp.ID}) + _, err = lsc.LeaseRevoke(t.Context(), &pb.LeaseRevokeRequest{ID: lresp.ID}) require.NoError(t, err) - rresp, err := kvc.Range(context.TODO(), &pb.RangeRequest{Key: []byte("foo")}) + rresp, err := kvc.Range(t.Context(), &pb.RangeRequest{Key: []byte("foo")}) require.NoError(t, err) if len(rresp.Kvs) != 0 { t.Fatalf("lease removed but key remains") @@ -818,14 +818,14 @@ func TestV3LeaseRevokeAndRecover(t *testing.T) { kvc := integration.ToGRPC(clus.Client(0)).KV lsc := integration.ToGRPC(clus.Client(0)).Lease - lresp, err := lsc.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: fiveMinTTL}) + lresp, err := lsc.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: fiveMinTTL}) require.NoError(t, err) require.Empty(t, lresp.Error) - _, err = kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar"), Lease: lresp.ID}) + _, err = kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar"), Lease: lresp.ID}) require.NoError(t, err) // revoke should delete the key - _, err = lsc.LeaseRevoke(context.TODO(), &pb.LeaseRevokeRequest{ID: lresp.ID}) + _, err = lsc.LeaseRevoke(t.Context(), &pb.LeaseRevokeRequest{ID: lresp.ID}) require.NoError(t, err) // restart server and ensure revoked key doesn't exist @@ -840,7 +840,7 @@ func TestV3LeaseRevokeAndRecover(t *testing.T) { kvc = integration.ToGRPC(nc).KV defer nc.Close() - rresp, err := kvc.Range(context.TODO(), &pb.RangeRequest{Key: []byte("foo")}) + rresp, err := kvc.Range(t.Context(), &pb.RangeRequest{Key: []byte("foo")}) require.NoError(t, err) if len(rresp.Kvs) != 0 { t.Fatalf("lease removed but key remains") @@ -858,14 +858,14 @@ func TestV3LeaseRecoverKeyWithDetachedLease(t *testing.T) { kvc := integration.ToGRPC(clus.Client(0)).KV lsc := integration.ToGRPC(clus.Client(0)).Lease - lresp, err := lsc.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: fiveMinTTL}) + lresp, err := lsc.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: fiveMinTTL}) require.NoError(t, err) require.Empty(t, lresp.Error) - _, err = kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar"), Lease: lresp.ID}) + _, err = kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar"), Lease: lresp.ID}) require.NoError(t, err) // overwrite lease with none - _, err = kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}) + _, err = kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}) require.NoError(t, err) // restart server and ensure lease still exists @@ -882,9 +882,9 @@ func TestV3LeaseRecoverKeyWithDetachedLease(t *testing.T) { defer nc.Close() // revoke the detached lease - _, err = lsc.LeaseRevoke(context.TODO(), &pb.LeaseRevokeRequest{ID: lresp.ID}) + _, err = lsc.LeaseRevoke(t.Context(), &pb.LeaseRevokeRequest{ID: lresp.ID}) require.NoError(t, err) - rresp, err := kvc.Range(context.TODO(), &pb.RangeRequest{Key: []byte("foo")}) + rresp, err := kvc.Range(t.Context(), &pb.RangeRequest{Key: []byte("foo")}) require.NoError(t, err) if len(rresp.Kvs) != 1 { t.Fatalf("only detached lease removed, key should remain") @@ -902,12 +902,12 @@ func TestV3LeaseRecoverKeyWithMutipleLease(t *testing.T) { var leaseIDs []int64 for i := 0; i < 2; i++ { - lresp, err := lsc.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: fiveMinTTL}) + lresp, err := lsc.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: fiveMinTTL}) require.NoError(t, err) require.Empty(t, lresp.Error) leaseIDs = append(leaseIDs, lresp.ID) - _, err = kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar"), Lease: lresp.ID}) + _, err = kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar"), Lease: lresp.ID}) require.NoError(t, err) } @@ -930,19 +930,19 @@ func TestV3LeaseRecoverKeyWithMutipleLease(t *testing.T) { defer nc.Close() // revoke the old lease - _, err = lsc.LeaseRevoke(context.TODO(), &pb.LeaseRevokeRequest{ID: leaseIDs[0]}) + _, err = lsc.LeaseRevoke(t.Context(), &pb.LeaseRevokeRequest{ID: leaseIDs[0]}) require.NoError(t, err) // key should still exist - rresp, err := kvc.Range(context.TODO(), &pb.RangeRequest{Key: []byte("foo")}) + rresp, err := kvc.Range(t.Context(), &pb.RangeRequest{Key: []byte("foo")}) require.NoError(t, err) if len(rresp.Kvs) != 1 { t.Fatalf("only detached lease removed, key should remain") } // revoke the latest lease - _, err = lsc.LeaseRevoke(context.TODO(), &pb.LeaseRevokeRequest{ID: leaseIDs[1]}) + _, err = lsc.LeaseRevoke(t.Context(), &pb.LeaseRevokeRequest{ID: leaseIDs[1]}) require.NoError(t, err) - rresp, err = kvc.Range(context.TODO(), &pb.RangeRequest{Key: []byte("foo")}) + rresp, err = kvc.Range(t.Context(), &pb.RangeRequest{Key: []byte("foo")}) require.NoError(t, err) if len(rresp.Kvs) != 0 { t.Fatalf("lease removed but key remains") @@ -969,7 +969,7 @@ func testV3LeaseTimeToLiveWithLeaderChanged(t *testing.T, fpName string) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() oldLeadIdx := clus.WaitLeader(t) @@ -1055,7 +1055,7 @@ func testLeaseRemoveLeasedKey(t *testing.T, act func(*integration.Cluster, int64 // confirm no key rreq := &pb.RangeRequest{Key: []byte("foo")} - rresp, err := integration.ToGRPC(clus.RandClient()).KV.Range(context.TODO(), rreq) + rresp, err := integration.ToGRPC(clus.RandClient()).KV.Range(t.Context(), rreq) require.NoError(t, err) if len(rresp.Kvs) != 0 { t.Fatalf("lease removed but key remains") @@ -1065,9 +1065,9 @@ func testLeaseRemoveLeasedKey(t *testing.T, act func(*integration.Cluster, int64 func leaseExist(t *testing.T, clus *integration.Cluster, leaseID int64) bool { l := integration.ToGRPC(clus.RandClient()).Lease - _, err := l.LeaseGrant(context.Background(), &pb.LeaseGrantRequest{ID: leaseID, TTL: 5}) + _, err := l.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{ID: leaseID, TTL: 5}) if err == nil { - _, err = l.LeaseRevoke(context.Background(), &pb.LeaseRevokeRequest{ID: leaseID}) + _, err = l.LeaseRevoke(t.Context(), &pb.LeaseRevokeRequest{ID: leaseID}) if err != nil { t.Fatalf("failed to check lease %v", err) } From 0cfeac9b9061bb961a3898387b828fb9b343178c Mon Sep 17 00:00:00 2001 From: joshjms Date: Thu, 29 May 2025 15:14:11 +0800 Subject: [PATCH 0254/1068] robustness: Add list requests to antithesis traffic Signed-off-by: joshjms --- tests/robustness/traffic/etcd.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index 47119646537a..40567e9542ef 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -81,7 +81,8 @@ var ( leaseTTL: DefaultLeaseTTL, // Please keep the sum of weights equal 100. requests: []random.ChoiceWeight[etcdRequestType]{ - {Choice: Get, Weight: 30}, + {Choice: Get, Weight: 15}, + {Choice: List, Weight: 15}, {Choice: Put, Weight: 35}, {Choice: StaleGet, Weight: 10}, {Choice: StaleList, Weight: 10}, From 9cece7242fb7baa7d822c9a273915c9bea582975 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Sun, 1 Jun 2025 07:15:56 -0700 Subject: [PATCH 0255/1068] tests/integration: address usetesting issues Signed-off-by: Ivan Valdes --- tests/integration/cluster_test.go | 26 +++---- tests/integration/corrupt_test.go | 10 +-- tests/integration/embed/embed_test.go | 3 +- tests/integration/grpc_test.go | 3 +- tests/integration/hashkv_test.go | 2 +- tests/integration/member_test.go | 8 +- tests/integration/metrics_test.go | 13 ++-- .../proxy/grpcproxy/cluster_test.go | 7 +- tests/integration/proxy/grpcproxy/kv_test.go | 3 +- tests/integration/revision_test.go | 4 +- tests/integration/snapshot/member_test.go | 6 +- .../integration/snapshot/v3_snapshot_test.go | 8 +- tests/integration/tracing_test.go | 8 +- tests/integration/utl_wal_version_test.go | 2 +- tests/integration/v3_alarm_test.go | 44 +++++------ tests/integration/v3_election_test.go | 40 +++++----- tests/integration/v3_failover_test.go | 4 +- tests/integration/v3_grpc_inflight_test.go | 10 +-- tests/integration/v3_kv_test.go | 15 ++-- tests/integration/v3_leadership_test.go | 10 +-- tests/integration/v3_stm_test.go | 22 +++--- tests/integration/v3_watch_restore_test.go | 6 +- tests/integration/v3_watch_test.go | 74 +++++++++---------- tests/integration/v3election_grpc_test.go | 29 ++++---- tests/integration/v3lock_grpc_test.go | 11 ++- 25 files changed, 180 insertions(+), 188 deletions(-) diff --git a/tests/integration/cluster_test.go b/tests/integration/cluster_test.go index 9ba372bb8a4f..8b98efd6cf9e 100644 --- a/tests/integration/cluster_test.go +++ b/tests/integration/cluster_test.go @@ -130,12 +130,12 @@ func TestForceNewCluster(t *testing.T) { c := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer c.Terminate(t) - ctx, cancel := context.WithTimeout(context.Background(), integration.RequestTimeout) + ctx, cancel := context.WithTimeout(t.Context(), integration.RequestTimeout) resp, err := c.Members[0].Client.Put(ctx, "/foo", "bar") require.NoErrorf(t, err, "unexpected create error") cancel() // ensure create has been applied in this machine - ctx, cancel = context.WithTimeout(context.Background(), integration.RequestTimeout) + ctx, cancel = context.WithTimeout(t.Context(), integration.RequestTimeout) watch := c.Members[0].Client.Watcher.Watch(ctx, "/foo", clientv3.WithRev(resp.Header.Revision-1)) for resp := range watch { if len(resp.Events) != 0 { @@ -156,7 +156,7 @@ func TestForceNewCluster(t *testing.T) { // use new http client to init new connection // ensure force restart keep the old data, and new Cluster can make progress - ctx, cancel = context.WithTimeout(context.Background(), integration.RequestTimeout) + ctx, cancel = context.WithTimeout(t.Context(), integration.RequestTimeout) watch = c.Members[0].Client.Watcher.Watch(ctx, "/foo", clientv3.WithRev(resp.Header.Revision-1)) for resp := range watch { if len(resp.Events) != 0 { @@ -240,7 +240,7 @@ func TestIssue2904(t *testing.T) { c.Members[2].Stop(t) // send remove member-1 request to the Cluster. - ctx, cancel := context.WithTimeout(context.Background(), integration.RequestTimeout) + ctx, cancel := context.WithTimeout(t.Context(), integration.RequestTimeout) // the proposal is not committed because member 1 is stopped, but the // proposal is appended to leader'Server raft log. c.Members[0].Client.MemberRemove(ctx, uint64(c.Members[2].Server.MemberID())) @@ -312,7 +312,7 @@ func TestIssue3699(t *testing.T) { t.Logf("Expecting successful put...") // try to participate in Cluster - ctx, cancel := context.WithTimeout(context.Background(), integration.RequestTimeout) + ctx, cancel := context.WithTimeout(t.Context(), integration.RequestTimeout) _, err := c.Members[0].Client.Put(ctx, "/foo", "bar") require.NoErrorf(t, err, "unexpected error on Put") cancel() @@ -441,7 +441,7 @@ func clusterMustProgress(t *testing.T, members []*integration.Member) { ) // retry in case of leader loss induced by slow CI for i := 0; i < 3; i++ { - ctx, cancel := context.WithTimeout(context.Background(), integration.RequestTimeout) + ctx, cancel := context.WithTimeout(t.Context(), integration.RequestTimeout) resp, err = members[0].Client.Put(ctx, key, "bar") cancel() if err == nil { @@ -452,7 +452,7 @@ func clusterMustProgress(t *testing.T, members []*integration.Member) { require.NoErrorf(t, err, "create on #0 error") for i, m := range members { - mctx, mcancel := context.WithTimeout(context.Background(), integration.RequestTimeout) + mctx, mcancel := context.WithTimeout(t.Context(), integration.RequestTimeout) watch := m.Client.Watcher.Watch(mctx, key, clientv3.WithRev(resp.Header.Revision-1)) for resp := range watch { if len(resp.Events) != 0 { @@ -494,16 +494,16 @@ func TestConcurrentRemoveMember(t *testing.T) { c := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer c.Terminate(t) - addResp, err := c.Members[0].Client.MemberAddAsLearner(context.Background(), []string{"http://localhost:123"}) + addResp, err := c.Members[0].Client.MemberAddAsLearner(t.Context(), []string{"http://localhost:123"}) require.NoError(t, err) removeID := addResp.Member.ID done := make(chan struct{}) go func() { time.Sleep(time.Second / 2) - c.Members[0].Client.MemberRemove(context.Background(), removeID) + c.Members[0].Client.MemberRemove(t.Context(), removeID) close(done) }() - _, err = c.Members[0].Client.MemberRemove(context.Background(), removeID) + _, err = c.Members[0].Client.MemberRemove(t.Context(), removeID) require.NoError(t, err) <-done } @@ -513,16 +513,16 @@ func TestConcurrentMoveLeader(t *testing.T) { c := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer c.Terminate(t) - addResp, err := c.Members[0].Client.MemberAddAsLearner(context.Background(), []string{"http://localhost:123"}) + addResp, err := c.Members[0].Client.MemberAddAsLearner(t.Context(), []string{"http://localhost:123"}) require.NoError(t, err) removeID := addResp.Member.ID done := make(chan struct{}) go func() { time.Sleep(time.Second / 2) - c.Members[0].Client.MoveLeader(context.Background(), removeID) + c.Members[0].Client.MoveLeader(t.Context(), removeID) close(done) }() - _, err = c.Members[0].Client.MemberRemove(context.Background(), removeID) + _, err = c.Members[0].Client.MemberRemove(t.Context(), removeID) require.NoError(t, err) <-done } diff --git a/tests/integration/corrupt_test.go b/tests/integration/corrupt_test.go index ddd7234e2d15..ddbf2d3e6d9f 100644 --- a/tests/integration/corrupt_test.go +++ b/tests/integration/corrupt_test.go @@ -38,7 +38,7 @@ func TestPeriodicCheck(t *testing.T) { cc, err := clus.ClusterClient(t) require.NoError(t, err) - ctx := context.Background() + ctx := t.Context() var totalRevisions int64 = 1210 var rev int64 @@ -74,7 +74,7 @@ func TestPeriodicCheckDetectsCorruption(t *testing.T) { cc, err := clus.ClusterClient(t) require.NoError(t, err) - ctx := context.Background() + ctx := t.Context() for i := 0; i < 10; i++ { _, err = cc.Put(ctx, testutil.PickKey(int64(i)), fmt.Sprint(i)) @@ -112,7 +112,7 @@ func TestCompactHashCheck(t *testing.T) { cc, err := clus.ClusterClient(t) require.NoError(t, err) - ctx := context.Background() + ctx := t.Context() var totalRevisions int64 = 1210 var rev int64 @@ -149,7 +149,7 @@ func TestCompactHashCheckDetectCorruption(t *testing.T) { cc, err := clus.ClusterClient(t) require.NoError(t, err) - ctx := context.Background() + ctx := t.Context() for i := 0; i < 10; i++ { _, err = cc.Put(ctx, testutil.PickKey(int64(i)), fmt.Sprint(i)) @@ -186,7 +186,7 @@ func TestCompactHashCheckDetectMultipleCorruption(t *testing.T) { cc, err := clus.ClusterClient(t) require.NoError(t, err) - ctx := context.Background() + ctx := t.Context() for i := 0; i < 10; i++ { _, err = cc.Put(ctx, testutil.PickKey(int64(i)), fmt.Sprint(i)) diff --git a/tests/integration/embed/embed_test.go b/tests/integration/embed/embed_test.go index 242f2b6a7cad..3140d6bad71e 100644 --- a/tests/integration/embed/embed_test.go +++ b/tests/integration/embed/embed_test.go @@ -20,7 +20,6 @@ package embed_test import ( - "context" "fmt" "net/url" "os" @@ -162,7 +161,7 @@ func testEmbedEtcdGracefulStop(t *testing.T, secure bool) { defer cli.Close() // open watch connection - cli.Watch(context.Background(), "foo") + cli.Watch(t.Context(), "foo") donec := make(chan struct{}) go func() { diff --git a/tests/integration/grpc_test.go b/tests/integration/grpc_test.go index e3b762c31efc..606262942e95 100644 --- a/tests/integration/grpc_test.go +++ b/tests/integration/grpc_test.go @@ -15,7 +15,6 @@ package integration import ( - "context" tls "crypto/tls" "fmt" "strings" @@ -105,7 +104,7 @@ func TestAuthority(t *testing.T) { putRequestMethod := "/etcdserverpb.KV/Put" for i := 0; i < 100; i++ { - _, err := kv.Put(context.TODO(), "foo", "bar") + _, err := kv.Put(t.Context(), "foo", "bar") require.NoError(t, err) } diff --git a/tests/integration/hashkv_test.go b/tests/integration/hashkv_test.go index 2aa8cc69e058..a62625bf896e 100644 --- a/tests/integration/hashkv_test.go +++ b/tests/integration/hashkv_test.go @@ -46,7 +46,7 @@ func TestCompactionHash(t *testing.T) { }, } - testutil.TestCompactionHash(context.Background(), t, hashTestCase{cc, clus.Members[0].GRPCURL, client, clus.Members[0].Server}, 1000) + testutil.TestCompactionHash(t.Context(), t, hashTestCase{cc, clus.Members[0].GRPCURL, client, clus.Members[0].Server}, 1000) } type hashTestCase struct { diff --git a/tests/integration/member_test.go b/tests/integration/member_test.go index cc7a0545c04b..57a114989ed6 100644 --- a/tests/integration/member_test.go +++ b/tests/integration/member_test.go @@ -91,7 +91,7 @@ func TestSnapshotAndRestartMember(t *testing.T) { var err error for i := 0; i < 120; i++ { - ctx, cancel := context.WithTimeout(context.Background(), integration.RequestTimeout) + ctx, cancel := context.WithTimeout(t.Context(), integration.RequestTimeout) key := fmt.Sprintf("foo%d", i) _, err = m.Client.Put(ctx, "/"+key, "bar") require.NoErrorf(t, err, "#%d: create on %s error", i, m.URL()) @@ -102,7 +102,7 @@ func TestSnapshotAndRestartMember(t *testing.T) { m.WaitOK(t) for i := 0; i < 120; i++ { - ctx, cancel := context.WithTimeout(context.Background(), integration.RequestTimeout) + ctx, cancel := context.WithTimeout(t.Context(), integration.RequestTimeout) key := fmt.Sprintf("foo%d", i) resp, err := m.Client.Get(ctx, "/"+key) require.NoErrorf(t, err, "#%d: get on %s error", i, m.URL()) @@ -145,7 +145,7 @@ func TestRemoveMemberAndWALReplay(t *testing.T) { // Add some k/v to trigger snapshot for i := 0; i < 15; i++ { - ctx, cancel := context.WithTimeout(context.Background(), integration.RequestTimeout) + ctx, cancel := context.WithTimeout(t.Context(), integration.RequestTimeout) _, err := c.Members[0].Client.Put(ctx, fmt.Sprintf("k%d", i), fmt.Sprintf("v%d", i)) cancel() require.NoErrorf(t, err, "failed to put key-value") @@ -174,7 +174,7 @@ func checkMemberCount(t *testing.T, m *integration.Member, expectedMemberCount i if len(membersFromBackend) != expectedMemberCount { t.Errorf("Expect member count read from backend=%d, got %d", expectedMemberCount, len(membersFromBackend)) } - membersResp, err := m.Client.MemberList(context.Background()) + membersResp, err := m.Client.MemberList(t.Context()) require.NoError(t, err) if len(membersResp.Members) != expectedMemberCount { t.Errorf("Expect len(MemberList)=%d, got %d", expectedMemberCount, len(membersResp.Members)) diff --git a/tests/integration/metrics_test.go b/tests/integration/metrics_test.go index 1fc1117c52e5..29e04f412f25 100644 --- a/tests/integration/metrics_test.go +++ b/tests/integration/metrics_test.go @@ -15,7 +15,6 @@ package integration import ( - "context" "fmt" "net/http" "strconv" @@ -61,7 +60,7 @@ func testMetricDbSizeDefrag(t *testing.T, name string) { putreq := &pb.PutRequest{Key: []byte("k"), Value: make([]byte, 4096)} for i := 0; i < numPuts; i++ { time.Sleep(10 * time.Millisecond) // to execute multiple backend txn - _, err := kvc.Put(context.TODO(), putreq) + _, err := kvc.Put(t.Context(), putreq) require.NoError(t, err) } @@ -82,12 +81,12 @@ func testMetricDbSizeDefrag(t *testing.T, name string) { // clear out historical keys, in use bytes should free pages creq := &pb.CompactionRequest{Revision: int64(numPuts), Physical: true} - _, kerr := kvc.Compact(context.TODO(), creq) + _, kerr := kvc.Compact(t.Context(), creq) require.NoError(t, kerr) validateAfterCompactionInUse := func() error { // Put to move PendingPages to FreePages - _, verr := kvc.Put(context.TODO(), putreq) + _, verr := kvc.Put(t.Context(), putreq) require.NoError(t, verr) time.Sleep(500 * time.Millisecond) @@ -114,7 +113,7 @@ func testMetricDbSizeDefrag(t *testing.T, name string) { } // defrag should give freed space back to fs - mc.Defragment(context.TODO(), &pb.DefragmentRequest{}) + mc.Defragment(t.Context(), &pb.DefragmentRequest{}) afterDefrag, err := clus.Members[0].Metric(name + "_mvcc_db_total_size_in_bytes") require.NoError(t, err) @@ -174,11 +173,11 @@ func TestMetricsRangeDurationSeconds(t *testing.T) { "my-namespace/foobar", "my-namespace/foobar1", "namespace/foobar1", } for _, key := range keys { - _, err := client.Put(context.Background(), key, "data") + _, err := client.Put(t.Context(), key, "data") require.NoError(t, err) } - _, err := client.Get(context.Background(), "", clientv3.WithFromKey()) + _, err := client.Get(t.Context(), "", clientv3.WithFromKey()) require.NoError(t, err) rangeDurationSeconds, err := clus.Members[0].Metric("etcd_server_range_duration_seconds") diff --git a/tests/integration/proxy/grpcproxy/cluster_test.go b/tests/integration/proxy/grpcproxy/cluster_test.go index da0c58624f09..b7276c78f383 100644 --- a/tests/integration/proxy/grpcproxy/cluster_test.go +++ b/tests/integration/proxy/grpcproxy/cluster_test.go @@ -15,7 +15,6 @@ package grpcproxy import ( - "context" "net" "os" "testing" @@ -59,7 +58,7 @@ func TestClusterProxyMemberList(t *testing.T) { time.Sleep(200 * time.Millisecond) var mresp *clientv3.MemberListResponse - mresp, err = client.Cluster.MemberList(context.Background()) + mresp, err = client.Cluster.MemberList(t.Context()) require.NoErrorf(t, err, "err %v, want nil", err) require.Lenf(t, mresp.Members, 1, "len(mresp.Members) expected 1, got %d (%+v)", len(mresp.Members), mresp.Members) @@ -73,7 +72,7 @@ func TestClusterProxyMemberList(t *testing.T) { time.Sleep(200 * time.Millisecond) // check add member succ - mresp, err = client.Cluster.MemberList(context.Background()) + mresp, err = client.Cluster.MemberList(t.Context()) require.NoErrorf(t, err, "err %v, want nil", err) require.Lenf(t, mresp.Members, 2, "len(mresp.Members) expected 2, got %d (%+v)", len(mresp.Members), mresp.Members) assert.Contains(t, mresp.Members, &pb.Member{Name: hostname, ClientURLs: []string{newMemberAddr}}) @@ -84,7 +83,7 @@ func TestClusterProxyMemberList(t *testing.T) { time.Sleep(200 * time.Millisecond) // check delete member succ - mresp, err = client.Cluster.MemberList(context.Background()) + mresp, err = client.Cluster.MemberList(t.Context()) require.NoErrorf(t, err, "err %v, want nil", err) require.Lenf(t, mresp.Members, 1, "len(mresp.Members) expected 1, got %d (%+v)", len(mresp.Members), mresp.Members) assert.Contains(t, mresp.Members, &pb.Member{Name: hostname, ClientURLs: []string{cts.caddr}}) diff --git a/tests/integration/proxy/grpcproxy/kv_test.go b/tests/integration/proxy/grpcproxy/kv_test.go index 00bb326ffb2a..8fd274f149a9 100644 --- a/tests/integration/proxy/grpcproxy/kv_test.go +++ b/tests/integration/proxy/grpcproxy/kv_test.go @@ -15,7 +15,6 @@ package grpcproxy import ( - "context" "net" "testing" "time" @@ -45,7 +44,7 @@ func TestKVProxyRange(t *testing.T) { } client, err := integration2.NewClient(t, cfg) require.NoErrorf(t, err, "err = %v, want nil", err) - _, err = client.Get(context.Background(), "foo") + _, err = client.Get(t.Context(), "foo") require.NoErrorf(t, err, "err = %v, want nil", err) client.Close() } diff --git a/tests/integration/revision_test.go b/tests/integration/revision_test.go index 49ce4d21468f..6d40adc587ac 100644 --- a/tests/integration/revision_test.go +++ b/tests/integration/revision_test.go @@ -81,7 +81,7 @@ func testRevisionMonotonicWithFailures(t *testing.T, testDuration time.Duration, clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) - ctx, cancel := context.WithTimeout(context.Background(), testDuration) + ctx, cancel := context.WithTimeout(t.Context(), testDuration) defer cancel() wg := sync.WaitGroup{} @@ -104,7 +104,7 @@ func testRevisionMonotonicWithFailures(t *testing.T, testDuration time.Duration, injectFailures(clus) wg.Wait() kv := clus.Client(0) - resp, err := kv.Get(context.Background(), "foo") + resp, err := kv.Get(t.Context(), "foo") require.NoError(t, err) t.Logf("Revision %d", resp.Header.Revision) } diff --git a/tests/integration/snapshot/member_test.go b/tests/integration/snapshot/member_test.go index 1c889df75436..e25ab885311a 100644 --- a/tests/integration/snapshot/member_test.go +++ b/tests/integration/snapshot/member_test.go @@ -56,7 +56,7 @@ func TestSnapshotV3RestoreMultiMemberAdd(t *testing.T) { urls := newEmbedURLs(t, 2) newCURLs, newPURLs := urls[:1], urls[1:] - _, err = cli.MemberAdd(context.Background(), []string{newPURLs[0].String()}) + _, err = cli.MemberAdd(t.Context(), []string{newPURLs[0].String()}) require.NoError(t, err) // wait for membership reconfiguration apply @@ -89,7 +89,7 @@ func TestSnapshotV3RestoreMultiMemberAdd(t *testing.T) { require.NoError(t, err) defer cli2.Close() - ctx, cancel := context.WithTimeout(context.Background(), testutil.RequestTimeout) + ctx, cancel := context.WithTimeout(t.Context(), testutil.RequestTimeout) mresp, err := cli2.MemberList(ctx) cancel() require.NoError(t, err) @@ -97,7 +97,7 @@ func TestSnapshotV3RestoreMultiMemberAdd(t *testing.T) { // make sure restored cluster has kept all data on recovery var gresp *clientv3.GetResponse - ctx, cancel = context.WithTimeout(context.Background(), testutil.RequestTimeout) + ctx, cancel = context.WithTimeout(t.Context(), testutil.RequestTimeout) gresp, err = cli2.Get(ctx, "foo", clientv3.WithPrefix()) cancel() require.NoError(t, err) diff --git a/tests/integration/snapshot/v3_snapshot_test.go b/tests/integration/snapshot/v3_snapshot_test.go index 3db715919422..edbf20e9861e 100644 --- a/tests/integration/snapshot/v3_snapshot_test.go +++ b/tests/integration/snapshot/v3_snapshot_test.go @@ -88,7 +88,7 @@ func TestSnapshotV3RestoreSingle(t *testing.T) { defer cli.Close() for i := range kvs { var gresp *clientv3.GetResponse - gresp, err = cli.Get(context.Background(), kvs[i].k) + gresp, err = cli.Get(t.Context(), kvs[i].k) require.NoError(t, err) require.Equalf(t, string(gresp.Kvs[0].Value), kvs[i].v, "#%d: value expected %s, got %s", i, kvs[i].v, gresp.Kvs[0].Value) } @@ -119,7 +119,7 @@ func TestSnapshotV3RestoreMulti(t *testing.T) { defer cli.Close() for i := range kvs { var gresp *clientv3.GetResponse - gresp, err = cli.Get(context.Background(), kvs[i].k) + gresp, err = cli.Get(t.Context(), kvs[i].k) require.NoError(t, err) require.Equalf(t, string(gresp.Kvs[0].Value), kvs[i].v, "#%d: value expected %s, got %s", i, kvs[i].v, gresp.Kvs[0].Value) } @@ -187,7 +187,7 @@ func createSnapshotFile(t *testing.T, kvs []kv) string { require.NoError(t, err) defer cli.Close() for i := range kvs { - ctx, cancel := context.WithTimeout(context.Background(), testutil.RequestTimeout) + ctx, cancel := context.WithTimeout(t.Context(), testutil.RequestTimeout) _, err = cli.Put(ctx, kvs[i].k, kvs[i].v) cancel() require.NoError(t, err) @@ -195,7 +195,7 @@ func createSnapshotFile(t *testing.T, kvs []kv) string { sp := snapshot.NewV3(zaptest.NewLogger(t)) dpPath := filepath.Join(t.TempDir(), fmt.Sprintf("snapshot%d.db", time.Now().Nanosecond())) - _, err = sp.Save(context.Background(), ccfg, dpPath) + _, err = sp.Save(t.Context(), ccfg, dpPath) require.NoError(t, err) return dpPath } diff --git a/tests/integration/tracing_test.go b/tests/integration/tracing_test.go index 5ecfc12a5b9d..503c224ace44 100644 --- a/tests/integration/tracing_test.go +++ b/tests/integration/tracing_test.go @@ -43,7 +43,7 @@ func TestTracing(t *testing.T) { t.Run("UnaryRPC", func(t *testing.T) { testRPCTracing(t, "UnaryRPC", containsUnaryRPCSpan, func(cli *clientv3.Client) error { // make a request with the instrumented client - resp, err := cli.Get(context.TODO(), "key") + resp, err := cli.Get(t.Context(), "key") require.NoError(t, err) require.Empty(t, resp.Kvs) return nil @@ -54,14 +54,14 @@ func TestTracing(t *testing.T) { t.Run("StreamRPC", func(t *testing.T) { testRPCTracing(t, "StreamRPC", containsStreamRPCSpan, func(cli *clientv3.Client) error { // Create a context with a reasonable timeout - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) defer cancel() // Create a watch channel watchChan := cli.Watch(ctx, "watch-key") // Put a value to trigger the watch - _, err := cli.Put(context.TODO(), "watch-key", "watch-value") + _, err := cli.Put(t.Context(), "watch-key", "watch-value") require.NoError(t, err) // Wait for watch event @@ -118,7 +118,7 @@ func testRPCTracing(t *testing.T, testName string, filterFunc func(*traceservice // create a client that has tracing enabled tracer := sdktrace.NewTracerProvider(sdktrace.WithSampler(sdktrace.AlwaysSample())) - defer tracer.Shutdown(context.TODO()) + defer tracer.Shutdown(t.Context()) tp := trace.TracerProvider(tracer) tracingOpts := []otelgrpc.Option{ diff --git a/tests/integration/utl_wal_version_test.go b/tests/integration/utl_wal_version_test.go index 4eb4226151b8..b376f50f5aa4 100644 --- a/tests/integration/utl_wal_version_test.go +++ b/tests/integration/utl_wal_version_test.go @@ -63,7 +63,7 @@ func TestEtcdVersionFromWAL(t *testing.T) { // Once the cluster version has been updated, any entity's storage // version should be align with cluster version. - ctx, cancel := context.WithTimeout(context.Background(), testutil.RequestTimeout) + ctx, cancel := context.WithTimeout(t.Context(), testutil.RequestTimeout) _, err = cli.AuthStatus(ctx) cancel() if err != nil { diff --git a/tests/integration/v3_alarm_test.go b/tests/integration/v3_alarm_test.go index 9c1f7f152d05..35ea115ec93b 100644 --- a/tests/integration/v3_alarm_test.go +++ b/tests/integration/v3_alarm_test.go @@ -56,23 +56,23 @@ func TestV3StorageQuotaApply(t *testing.T) { // test small put still works smallbuf := make([]byte, 1024) - _, serr := kvc0.Put(context.TODO(), &pb.PutRequest{Key: key, Value: smallbuf}) + _, serr := kvc0.Put(t.Context(), &pb.PutRequest{Key: key, Value: smallbuf}) require.NoError(t, serr) // test big put bigbuf := make([]byte, quotasize) - _, err := kvc1.Put(context.TODO(), &pb.PutRequest{Key: key, Value: bigbuf}) + _, err := kvc1.Put(t.Context(), &pb.PutRequest{Key: key, Value: bigbuf}) require.NoError(t, err) // quorum get should work regardless of whether alarm is raised - _, err = kvc0.Range(context.TODO(), &pb.RangeRequest{Key: []byte("foo")}) + _, err = kvc0.Range(t.Context(), &pb.RangeRequest{Key: []byte("foo")}) require.NoError(t, err) // wait until alarm is raised for sure-- poll the alarms stopc := time.After(5 * time.Second) for { req := &pb.AlarmRequest{Action: pb.AlarmRequest_GET} - resp, aerr := clus.Members[0].Server.Alarm(context.TODO(), req) + resp, aerr := clus.Members[0].Server.Alarm(t.Context(), req) require.NoError(t, aerr) if len(resp.Alarms) != 0 { break @@ -85,7 +85,7 @@ func TestV3StorageQuotaApply(t *testing.T) { } // txn with non-mutating Ops should go through when NOSPACE alarm is raised - _, err = kvc0.Txn(context.TODO(), &pb.TxnRequest{ + _, err = kvc0.Txn(t.Context(), &pb.TxnRequest{ Compare: []*pb.Compare{ { Key: key, @@ -106,7 +106,7 @@ func TestV3StorageQuotaApply(t *testing.T) { }) require.NoError(t, err) - ctx, cancel := context.WithTimeout(context.TODO(), integration.RequestWaitTimeout) + ctx, cancel := context.WithTimeout(t.Context(), integration.RequestWaitTimeout) defer cancel() // small quota machine should reject put @@ -122,7 +122,7 @@ func TestV3StorageQuotaApply(t *testing.T) { clus.Members[1].Restart(t) clus.WaitMembersForLeader(t, clus.Members) - _, err = kvc1.Put(context.TODO(), &pb.PutRequest{Key: key, Value: smallbuf}) + _, err = kvc1.Put(t.Context(), &pb.PutRequest{Key: key, Value: smallbuf}) require.Errorf(t, err, "alarmed instance should reject put after reset") } @@ -140,21 +140,21 @@ func TestV3AlarmDeactivate(t *testing.T) { Action: pb.AlarmRequest_ACTIVATE, Alarm: pb.AlarmType_NOSPACE, } - _, err := mt.Alarm(context.TODO(), alarmReq) + _, err := mt.Alarm(t.Context(), alarmReq) require.NoError(t, err) key := []byte("abc") smallbuf := make([]byte, 512) - _, err = kvc.Put(context.TODO(), &pb.PutRequest{Key: key, Value: smallbuf}) + _, err = kvc.Put(t.Context(), &pb.PutRequest{Key: key, Value: smallbuf}) if err == nil && !eqErrGRPC(err, rpctypes.ErrGRPCNoSpace) { t.Fatalf("put got %v, expected %v", err, rpctypes.ErrGRPCNoSpace) } alarmReq.Action = pb.AlarmRequest_DEACTIVATE - _, err = mt.Alarm(context.TODO(), alarmReq) + _, err = mt.Alarm(t.Context(), alarmReq) require.NoError(t, err) - _, err = kvc.Put(context.TODO(), &pb.PutRequest{Key: key, Value: smallbuf}) + _, err = kvc.Put(t.Context(), &pb.PutRequest{Key: key, Value: smallbuf}) require.NoError(t, err) } @@ -169,7 +169,7 @@ func TestV3CorruptAlarm(t *testing.T) { for i := 0; i < 10; i++ { go func() { defer wg.Done() - if _, err := clus.Client(0).Put(context.TODO(), "k", "v"); err != nil { + if _, err := clus.Client(0).Put(t.Context(), "k", "v"); err != nil { t.Error(err) } }() @@ -194,11 +194,11 @@ func TestV3CorruptAlarm(t *testing.T) { time.Sleep(time.Second * 2) // Wait for cluster so Puts succeed in case member 0 was the leader. - _, err := clus.Client(1).Get(context.TODO(), "k") + _, err := clus.Client(1).Get(t.Context(), "k") require.NoError(t, err) - _, err = clus.Client(1).Put(context.TODO(), "xyz", "321") + _, err = clus.Client(1).Put(t.Context(), "xyz", "321") require.NoError(t, err) - _, err = clus.Client(1).Put(context.TODO(), "abc", "fed") + _, err = clus.Client(1).Put(t.Context(), "abc", "fed") require.NoError(t, err) // Restart with corruption checking enabled. @@ -212,16 +212,16 @@ func TestV3CorruptAlarm(t *testing.T) { time.Sleep(time.Second * 2) clus.Members[0].WaitStarted(t) - resp0, err0 := clus.Client(0).Get(context.TODO(), "abc") + resp0, err0 := clus.Client(0).Get(t.Context(), "abc") require.NoError(t, err0) clus.Members[1].WaitStarted(t) - resp1, err1 := clus.Client(1).Get(context.TODO(), "abc") + resp1, err1 := clus.Client(1).Get(t.Context(), "abc") require.NoError(t, err1) require.NotEqualf(t, resp0.Kvs[0].ModRevision, resp1.Kvs[0].ModRevision, "matching ModRevision values") for i := 0; i < 5; i++ { - presp, perr := clus.Client(0).Put(context.TODO(), "abc", "aaa") + presp, perr := clus.Client(0).Put(t.Context(), "abc", "aaa") if perr != nil { if eqErrGRPC(perr, rpctypes.ErrCorrupt) { return @@ -245,7 +245,7 @@ func TestV3CorruptAlarmWithLeaseCorrupted(t *testing.T) { }) defer clus.Terminate(t) - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() lresp, err := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(ctx, &pb.LeaseGrantRequest{ID: 1, TTL: 60}) @@ -297,16 +297,16 @@ func TestV3CorruptAlarmWithLeaseCorrupted(t *testing.T) { // Revoke lease should remove key except the member with corruption _, err = integration.ToGRPC(clus.Members[0].Client).Lease.LeaseRevoke(ctx, &pb.LeaseRevokeRequest{ID: lresp.ID}) require.NoError(t, err) - resp0, err0 := clus.Members[1].Client.KV.Get(context.TODO(), "foo") + resp0, err0 := clus.Members[1].Client.KV.Get(t.Context(), "foo") require.NoError(t, err0) - resp1, err1 := clus.Members[2].Client.KV.Get(context.TODO(), "foo") + resp1, err1 := clus.Members[2].Client.KV.Get(t.Context(), "foo") require.NoError(t, err1) require.NotEqualf(t, resp0.Header.Revision, resp1.Header.Revision, "matching Revision values") // Wait for CorruptCheckTime time.Sleep(time.Second) - presp, perr := clus.Client(0).Put(context.TODO(), "abc", "aaa") + presp, perr := clus.Client(0).Put(t.Context(), "abc", "aaa") if perr != nil { if eqErrGRPC(perr, rpctypes.ErrCorrupt) { return diff --git a/tests/integration/v3_election_test.go b/tests/integration/v3_election_test.go index d1d7e48d21a1..8bae7b0e0903 100644 --- a/tests/integration/v3_election_test.go +++ b/tests/integration/v3_election_test.go @@ -57,7 +57,7 @@ func TestElectionWait(t *testing.T) { } b := concurrency.NewElection(session, "test-election") - cctx, cancel := context.WithCancel(context.TODO()) + cctx, cancel := context.WithCancel(t.Context()) defer cancel() s, ok := <-b.Observe(cctx) if !ok { @@ -83,7 +83,7 @@ func TestElectionWait(t *testing.T) { e := concurrency.NewElection(session, "test-election") ev := fmt.Sprintf("electval-%v", time.Now().UnixNano()) - if err := e.Campaign(context.TODO(), ev); err != nil { + if err := e.Campaign(t.Context(), ev); err != nil { t.Errorf("failed volunteer (%v)", err) } // wait for followers to accept leadership @@ -94,7 +94,7 @@ func TestElectionWait(t *testing.T) { } } // let next leader take over - if err := e.Resign(context.TODO()); err != nil { + if err := e.Resign(t.Context()); err != nil { t.Errorf("failed resign (%v)", err) } // tell followers to start listening for next leader @@ -116,7 +116,7 @@ func TestElectionFailover(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) - cctx, cancel := context.WithCancel(context.TODO()) + cctx, cancel := context.WithCancel(t.Context()) defer cancel() ss := make([]*concurrency.Session, 3) @@ -132,7 +132,7 @@ func TestElectionFailover(t *testing.T) { // first leader (elected) e := concurrency.NewElection(ss[0], "test-election") - err := e.Campaign(context.TODO(), "foo") + err := e.Campaign(t.Context(), "foo") require.NoErrorf(t, err, "failed volunteer") // check first leader @@ -145,7 +145,7 @@ func TestElectionFailover(t *testing.T) { electedErrC := make(chan error, 1) go func() { ee := concurrency.NewElection(ss[1], "test-election") - eer := ee.Campaign(context.TODO(), "bar") + eer := ee.Campaign(t.Context(), "bar") electedErrC <- eer // If eer != nil, the test will fail by calling t.Fatal(eer) }() @@ -180,13 +180,13 @@ func TestElectionSessionRecampaign(t *testing.T) { defer session.Orphan() e := concurrency.NewElection(session, "test-elect") - err = e.Campaign(context.TODO(), "abc") + err = e.Campaign(t.Context(), "abc") require.NoError(t, err) e2 := concurrency.NewElection(session, "test-elect") - err = e2.Campaign(context.TODO(), "def") + err = e2.Campaign(t.Context(), "def") require.NoError(t, err) - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) defer cancel() if resp := <-e.Observe(ctx); len(resp.Kvs) == 0 || string(resp.Kvs[0].Value) != "def" { t.Fatalf("expected value=%q, got response %v", "def", resp) @@ -203,12 +203,12 @@ func TestElectionOnPrefixOfExistingKey(t *testing.T) { defer clus.Terminate(t) cli := clus.RandClient() - _, err := cli.Put(context.TODO(), "testa", "value") + _, err := cli.Put(t.Context(), "testa", "value") require.NoError(t, err) s, serr := concurrency.NewSession(cli) require.NoError(t, serr) e := concurrency.NewElection(s, "test") - ctx, cancel := context.WithTimeout(context.TODO(), 5*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) err = e.Campaign(ctx, "abc") cancel() // after 5 seconds, deadlock results in @@ -229,13 +229,13 @@ func TestElectionOnSessionRestart(t *testing.T) { require.NoError(t, err) e := concurrency.NewElection(session, "test-elect") - require.NoError(t, e.Campaign(context.TODO(), "abc")) + require.NoError(t, e.Campaign(t.Context(), "abc")) // ensure leader is not lost to waiter on fail-over waitSession, werr := concurrency.NewSession(cli) require.NoError(t, werr) defer waitSession.Orphan() - waitCtx, waitCancel := context.WithTimeout(context.TODO(), 5*time.Second) + waitCtx, waitCancel := context.WithTimeout(t.Context(), 5*time.Second) defer waitCancel() go concurrency.NewElection(waitSession, "test-elect").Campaign(waitCtx, "123") @@ -245,9 +245,9 @@ func TestElectionOnSessionRestart(t *testing.T) { defer newSession.Orphan() newElection := concurrency.NewElection(newSession, "test-elect") - require.NoError(t, newElection.Campaign(context.TODO(), "def")) + require.NoError(t, newElection.Campaign(t.Context(), "def")) - ctx, cancel := context.WithTimeout(context.TODO(), 5*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) defer cancel() if resp := <-newElection.Observe(ctx); len(resp.Kvs) == 0 || string(resp.Kvs[0].Value) != "def" { t.Errorf("expected value=%q, got response %v", "def", resp) @@ -268,14 +268,14 @@ func TestElectionObserveCompacted(t *testing.T) { defer session.Orphan() e := concurrency.NewElection(session, "test-elect") - require.NoError(t, e.Campaign(context.TODO(), "abc")) + require.NoError(t, e.Campaign(t.Context(), "abc")) - presp, perr := cli.Put(context.TODO(), "foo", "bar") + presp, perr := cli.Put(t.Context(), "foo", "bar") require.NoError(t, perr) - _, cerr := cli.Compact(context.TODO(), presp.Header.Revision) + _, cerr := cli.Compact(t.Context(), presp.Header.Revision) require.NoError(t, cerr) - v, ok := <-e.Observe(context.TODO()) + v, ok := <-e.Observe(t.Context()) if !ok { t.Fatal("failed to observe on compacted revision") } @@ -368,7 +368,7 @@ func TestElectionWithAuthEnabled(t *testing.T) { s.Orphan() e := concurrency.NewElection(s, campaign.pfx) - eerr := e.Campaign(context.Background(), "whatever") + eerr := e.Campaign(t.Context(), "whatever") if eerr != nil { errC <- fmt.Errorf("[Campaign] %s: %w", campaign.name, eerr) } diff --git a/tests/integration/v3_failover_test.go b/tests/integration/v3_failover_test.go index 03b829b74798..f6daef67b0b6 100644 --- a/tests/integration/v3_failover_test.go +++ b/tests/integration/v3_failover_test.go @@ -108,7 +108,7 @@ func putWithRetries(t *testing.T, cli *clientv3.Client, key, val string, retryCo // put data test err := func() error { t.Log("Sanity test, putting data") - ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 2*time.Second) defer cancel() if _, putErr := cli.Put(ctx, key, val); putErr != nil { @@ -133,7 +133,7 @@ func getWithRetries(t *testing.T, cli *clientv3.Client, key, val string, retryCo // get data test err := func() error { t.Log("Sanity test, getting data") - ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 2*time.Second) defer cancel() resp, getErr := cli.Get(ctx, key) if getErr != nil { diff --git a/tests/integration/v3_grpc_inflight_test.go b/tests/integration/v3_grpc_inflight_test.go index 3d8b446e59bc..35a9ec1fd6b0 100644 --- a/tests/integration/v3_grpc_inflight_test.go +++ b/tests/integration/v3_grpc_inflight_test.go @@ -39,10 +39,10 @@ func TestV3MaintenanceDefragmentInflightRange(t *testing.T) { cli := clus.RandClient() kvc := integration.ToGRPC(cli).KV - _, err := kvc.Put(context.Background(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}) + _, err := kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}) require.NoError(t, err) - ctx, cancel := context.WithTimeout(context.Background(), time.Second) + ctx, cancel := context.WithTimeout(t.Context(), time.Second) donec := make(chan struct{}) go func() { @@ -51,7 +51,7 @@ func TestV3MaintenanceDefragmentInflightRange(t *testing.T) { }() mvc := integration.ToGRPC(cli).Maintenance - mvc.Defragment(context.Background(), &pb.DefragmentRequest{}) + mvc.Defragment(t.Context(), &pb.DefragmentRequest{}) cancel() <-donec @@ -69,10 +69,10 @@ func TestV3KVInflightRangeRequests(t *testing.T) { cli := clus.RandClient() kvc := integration.ToGRPC(cli).KV - _, err := kvc.Put(context.Background(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}) + _, err := kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}) require.NoError(t, err) - ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 2*time.Second) reqN := 10 // use 500+ for fast machine var wg sync.WaitGroup diff --git a/tests/integration/v3_kv_test.go b/tests/integration/v3_kv_test.go index 1a5e7ce5ea2d..7b6b9644e1b6 100644 --- a/tests/integration/v3_kv_test.go +++ b/tests/integration/v3_kv_test.go @@ -15,7 +15,6 @@ package integration import ( - "context" "testing" "github.com/stretchr/testify/require" @@ -34,15 +33,15 @@ func TestKVWithEmptyValue(t *testing.T) { client := clus.RandClient() - _, err := client.Put(context.Background(), "my-namespace/foobar", "data") + _, err := client.Put(t.Context(), "my-namespace/foobar", "data") require.NoError(t, err) - _, err = client.Put(context.Background(), "my-namespace/foobar1", "data") + _, err = client.Put(t.Context(), "my-namespace/foobar1", "data") require.NoError(t, err) - _, err = client.Put(context.Background(), "namespace/foobar1", "data") + _, err = client.Put(t.Context(), "namespace/foobar1", "data") require.NoError(t, err) // Range over all keys. - resp, err := client.Get(context.Background(), "", clientv3.WithFromKey()) + resp, err := client.Get(t.Context(), "", clientv3.WithFromKey()) require.NoError(t, err) for _, kv := range resp.Kvs { t.Log(string(kv.Key), "=", string(kv.Value)) @@ -50,18 +49,18 @@ func TestKVWithEmptyValue(t *testing.T) { // Range over all keys in a namespace. client.KV = namespace.NewKV(client.KV, "my-namespace/") - resp, err = client.Get(context.Background(), "", clientv3.WithFromKey()) + resp, err = client.Get(t.Context(), "", clientv3.WithFromKey()) require.NoError(t, err) for _, kv := range resp.Kvs { t.Log(string(kv.Key), "=", string(kv.Value)) } // Remove all keys without WithFromKey/WithPrefix func - _, err = client.Delete(context.Background(), "") + _, err = client.Delete(t.Context(), "") // fatal error duo to without WithFromKey/WithPrefix func called. require.Error(t, err) - respDel, err := client.Delete(context.Background(), "", clientv3.WithFromKey()) + respDel, err := client.Delete(t.Context(), "", clientv3.WithFromKey()) // fatal error duo to with WithFromKey/WithPrefix func called. require.NoError(t, err) t.Logf("delete keys:%d", respDel.Deleted) diff --git a/tests/integration/v3_leadership_test.go b/tests/integration/v3_leadership_test.go index 148c2edf8591..9e996e787ed7 100644 --- a/tests/integration/v3_leadership_test.go +++ b/tests/integration/v3_leadership_test.go @@ -63,7 +63,7 @@ func testMoveLeader(t *testing.T, auto bool) { require.NoError(t, err) } else { mvc := integration.ToGRPC(clus.Client(oldLeadIdx)).Maintenance - _, err := mvc.MoveLeader(context.TODO(), &pb.MoveLeaderRequest{TargetID: target}) + _, err := mvc.MoveLeader(t.Context(), &pb.MoveLeaderRequest{TargetID: target}) require.NoError(t, err) } @@ -108,7 +108,7 @@ func TestMoveLeaderError(t *testing.T) { target := uint64(clus.Members[(oldLeadIdx+2)%3].Server.MemberID()) mvc := integration.ToGRPC(clus.Client(followerIdx)).Maintenance - _, err := mvc.MoveLeader(context.TODO(), &pb.MoveLeaderRequest{TargetID: target}) + _, err := mvc.MoveLeader(t.Context(), &pb.MoveLeaderRequest{TargetID: target}) if !eqErrGRPC(err, rpctypes.ErrGRPCNotLeader) { t.Errorf("err = %v, want %v", err, rpctypes.ErrGRPCNotLeader) } @@ -136,7 +136,7 @@ func TestMoveLeaderToLearnerError(t *testing.T) { learnerID := learners[0].ID leaderIdx := clus.WaitLeader(t) cli := clus.Client(leaderIdx) - _, err = cli.MoveLeader(context.Background(), learnerID) + _, err = cli.MoveLeader(t.Context(), learnerID) if err == nil { t.Fatalf("expecting leader transfer to learner to fail, got no error") } @@ -183,7 +183,7 @@ func TestTransferLeadershipWithLearner(t *testing.T) { func TestFirstCommitNotification(t *testing.T) { integration.BeforeTest(t) - ctx := context.Background() + ctx := t.Context() clusterSize := 3 cluster := integration.NewCluster(t, &integration.ClusterConfig{Size: clusterSize}) defer cluster.Terminate(t) @@ -199,7 +199,7 @@ func TestFirstCommitNotification(t *testing.T) { notifiers[i] = clusterMember.Server.FirstCommitInTermNotify() } - _, err := oldLeaderClient.MoveLeader(context.Background(), newLeaderID) + _, err := oldLeaderClient.MoveLeader(t.Context(), newLeaderID) if err != nil { t.Errorf("got error during leadership transfer: %v", err) } diff --git a/tests/integration/v3_stm_test.go b/tests/integration/v3_stm_test.go index a7c0781f0ded..a5df7fae08c5 100644 --- a/tests/integration/v3_stm_test.go +++ b/tests/integration/v3_stm_test.go @@ -40,7 +40,7 @@ func TestSTMConflict(t *testing.T) { keys := make([]string, 5) for i := 0; i < len(keys); i++ { keys[i] = fmt.Sprintf("foo-%d", i) - if _, err := etcdc.Put(context.TODO(), keys[i], "100"); err != nil { + if _, err := etcdc.Put(t.Context(), keys[i], "100"); err != nil { t.Fatalf("could not make key (%v)", err) } } @@ -90,7 +90,7 @@ func TestSTMConflict(t *testing.T) { // ensure sum matches initial sum sum := 0 for _, oldkey := range keys { - rk, err := etcdc.Get(context.TODO(), oldkey) + rk, err := etcdc.Get(t.Context(), oldkey) if err != nil { t.Fatalf("couldn't fetch key %s (%v)", oldkey, err) } @@ -120,7 +120,7 @@ func TestSTMPutNewKey(t *testing.T) { t.Fatalf("error on stm txn (%v)", err) } - resp, err := etcdc.Get(context.TODO(), "foo") + resp, err := etcdc.Get(t.Context(), "foo") if err != nil { t.Fatalf("error fetching key (%v)", err) } @@ -137,7 +137,7 @@ func TestSTMAbort(t *testing.T) { defer clus.Terminate(t) etcdc := clus.RandClient() - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) applyf := func(stm concurrency.STM) error { stm.Put("foo", "baz") cancel() @@ -151,7 +151,7 @@ func TestSTMAbort(t *testing.T) { t.Fatalf("no error on stm txn") } - resp, err := etcdc.Get(context.TODO(), "foo") + resp, err := etcdc.Get(t.Context(), "foo") if err != nil { t.Fatalf("error fetching key (%v)", err) } @@ -185,7 +185,7 @@ func TestSTMSerialize(t *testing.T) { for _, k := range keys { ops = append(ops, v3.OpPut(k, s)) } - if _, err := etcdc.Txn(context.TODO()).Then(ops...).Commit(); err != nil { + if _, err := etcdc.Txn(t.Context()).Then(ops...).Commit(); err != nil { t.Errorf("couldn't put keys (%v)", err) } updatec <- struct{}{} @@ -231,12 +231,12 @@ func TestSTMApplyOnConcurrentDeletion(t *testing.T) { defer clus.Terminate(t) etcdc := clus.RandClient() - _, err := etcdc.Put(context.TODO(), "foo", "bar") + _, err := etcdc.Put(t.Context(), "foo", "bar") require.NoError(t, err) donec, readyc := make(chan struct{}), make(chan struct{}) go func() { <-readyc - _, derr := etcdc.Delete(context.TODO(), "foo") + _, derr := etcdc.Delete(t.Context(), "foo") assert.NoError(t, derr) close(donec) }() @@ -262,7 +262,7 @@ func TestSTMApplyOnConcurrentDeletion(t *testing.T) { t.Fatalf("STM apply expected to run twice, got %d", try) } - resp, err := etcdc.Get(context.TODO(), "foo2") + resp, err := etcdc.Get(t.Context(), "foo2") if err != nil { t.Fatalf("error fetching key (%v)", err) } @@ -279,7 +279,7 @@ func TestSTMSerializableSnapshotPut(t *testing.T) { cli := clus.Client(0) // key with lower create/mod revision than keys being updated - _, err := cli.Put(context.TODO(), "a", "0") + _, err := cli.Put(t.Context(), "a", "0") require.NoError(t, err) tries := 0 @@ -299,7 +299,7 @@ func TestSTMSerializableSnapshotPut(t *testing.T) { _, err = concurrency.NewSTM(cli, applyf, iso) require.NoError(t, err) - resp, err := cli.Get(context.TODO(), "b") + resp, err := cli.Get(t.Context(), "b") require.NoError(t, err) if resp.Kvs[0].Version != 2 { t.Fatalf("bad version. got %+v, expected version 2", resp) diff --git a/tests/integration/v3_watch_restore_test.go b/tests/integration/v3_watch_restore_test.go index 9d98cb8dcef4..7ce49c0001f7 100644 --- a/tests/integration/v3_watch_restore_test.go +++ b/tests/integration/v3_watch_restore_test.go @@ -64,7 +64,7 @@ func TestV3WatchRestoreSnapshotUnsync(t *testing.T) { defer clus.Terminate(t) // spawn a watcher before shutdown, and put it in synced watcher - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() wStream, errW := integration.ToGRPC(clus.Client(0)).Watch.Watch(ctx) require.NoError(t, errW) @@ -92,7 +92,7 @@ func TestV3WatchRestoreSnapshotUnsync(t *testing.T) { // to trigger snapshot from the leader to the stopped follower for i := 0; i < 15; i++ { - _, err := kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}) + _, err := kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}) if err != nil { t.Errorf("#%d: couldn't put key (%v)", i, err) } @@ -177,7 +177,7 @@ func TestV3WatchRestoreSnapshotUnsync(t *testing.T) { } func expectMemberLog(t *testing.T, m *integration.Member, timeout time.Duration, s string, count int) { - ctx, cancel := context.WithTimeout(context.TODO(), timeout) + ctx, cancel := context.WithTimeout(t.Context(), timeout) defer cancel() lines, err := m.LogObserver.Expect(ctx, s, count) diff --git a/tests/integration/v3_watch_test.go b/tests/integration/v3_watch_test.go index 21140da097b3..362b08dcc543 100644 --- a/tests/integration/v3_watch_test.go +++ b/tests/integration/v3_watch_test.go @@ -233,7 +233,7 @@ func TestV3WatchFromCurrentRevision(t *testing.T) { defer clus.Terminate(t) wAPI := integration.ToGRPC(clus.RandClient()).Watch - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() wStream, err := wAPI.Watch(ctx) if err != nil { @@ -268,7 +268,7 @@ func TestV3WatchFromCurrentRevision(t *testing.T) { for _, k := range tt.putKeys { kvc := integration.ToGRPC(clus.RandClient()).KV req := &pb.PutRequest{Key: []byte(k), Value: []byte("bar")} - if _, err := kvc.Put(context.TODO(), req); err != nil { + if _, err := kvc.Put(t.Context(), req); err != nil { t.Errorf("#%d: couldn't put key (%v)", i, err) } } @@ -320,7 +320,7 @@ func TestV3WatchFutureRevision(t *testing.T) { defer clus.Terminate(t) wAPI := integration.ToGRPC(clus.RandClient()).Watch - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() wStream, err := wAPI.Watch(ctx) if err != nil { @@ -349,7 +349,7 @@ func TestV3WatchFutureRevision(t *testing.T) { kvc := integration.ToGRPC(clus.RandClient()).KV for { req := &pb.PutRequest{Key: wkey, Value: []byte("bar")} - resp, rerr := kvc.Put(context.TODO(), req) + resp, rerr := kvc.Put(t.Context(), req) if rerr != nil { t.Fatalf("couldn't put key (%v)", rerr) } @@ -382,7 +382,7 @@ func TestV3WatchWrongRange(t *testing.T) { defer clus.Terminate(t) wAPI := integration.ToGRPC(clus.RandClient()).Watch - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() wStream, err := wAPI.Watch(ctx) if err != nil { @@ -436,7 +436,7 @@ func testV3WatchCancel(t *testing.T, startRev int64) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() wStream, errW := integration.ToGRPC(clus.RandClient()).Watch.Watch(ctx) if errW != nil { @@ -478,7 +478,7 @@ func testV3WatchCancel(t *testing.T, startRev int64) { } kvc := integration.ToGRPC(clus.RandClient()).KV - if _, err := kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}); err != nil { + if _, err := kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}); err != nil { t.Errorf("couldn't put key (%v)", err) } @@ -496,7 +496,7 @@ func TestV3WatchCurrentPutOverlap(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() wStream, wErr := integration.ToGRPC(clus.RandClient()).Watch.Watch(ctx) if wErr != nil { @@ -513,7 +513,7 @@ func TestV3WatchCurrentPutOverlap(t *testing.T) { defer wg.Done() kvc := integration.ToGRPC(clus.RandClient()).KV req := &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")} - if _, err := kvc.Put(context.TODO(), req); err != nil { + if _, err := kvc.Put(t.Context(), req); err != nil { t.Errorf("couldn't put key (%v)", err) } }() @@ -582,7 +582,7 @@ func TestV3WatchEmptyKey(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() ws, werr := integration.ToGRPC(clus.RandClient()).Watch.Watch(ctx) @@ -599,7 +599,7 @@ func TestV3WatchEmptyKey(t *testing.T) { // put a key with empty value kvc := integration.ToGRPC(clus.RandClient()).KV preq := &pb.PutRequest{Key: []byte("foo")} - _, err = kvc.Put(context.TODO(), preq) + _, err = kvc.Put(t.Context(), preq) require.NoError(t, err) // check received PUT @@ -636,7 +636,7 @@ func testV3WatchMultipleWatchers(t *testing.T, startRev int64) { kvc := integration.ToGRPC(clus.RandClient()).KV - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() wStream, errW := integration.ToGRPC(clus.RandClient()).Watch.Watch(ctx) if errW != nil { @@ -676,7 +676,7 @@ func testV3WatchMultipleWatchers(t *testing.T, startRev int64) { ids[wresp.WatchId] = struct{}{} } - if _, err := kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}); err != nil { + if _, err := kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}); err != nil { t.Fatalf("couldn't put key (%v)", err) } @@ -704,7 +704,7 @@ func testV3WatchMultipleWatchers(t *testing.T, startRev int64) { } // now put one key that has only one matching watcher - if _, err := kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("fo"), Value: []byte("bar")}); err != nil { + if _, err := kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("fo"), Value: []byte("bar")}); err != nil { t.Fatalf("couldn't put key (%v)", err) } wresp, err := wStream.Recv() @@ -740,7 +740,7 @@ func testV3WatchMultipleEventsTxn(t *testing.T, startRev int64) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() wStream, wErr := integration.ToGRPC(clus.RandClient()).Watch.Watch(ctx) if wErr != nil { @@ -771,7 +771,7 @@ func testV3WatchMultipleEventsTxn(t *testing.T, startRev int64) { txn.Success = append(txn.Success, ru) } - tresp, err := kvc.Txn(context.Background(), &txn) + tresp, err := kvc.Txn(t.Context(), &txn) if err != nil { t.Fatalf("kvc.Txn error: %v", err) } @@ -829,14 +829,14 @@ func TestV3WatchMultipleEventsPutUnsynced(t *testing.T) { kvc := integration.ToGRPC(clus.RandClient()).KV - if _, err := kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo0"), Value: []byte("bar")}); err != nil { + if _, err := kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo0"), Value: []byte("bar")}); err != nil { t.Fatalf("couldn't put key (%v)", err) } - if _, err := kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo1"), Value: []byte("bar")}); err != nil { + if _, err := kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo1"), Value: []byte("bar")}); err != nil { t.Fatalf("couldn't put key (%v)", err) } - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() wStream, wErr := integration.ToGRPC(clus.RandClient()).Watch.Watch(ctx) if wErr != nil { @@ -852,10 +852,10 @@ func TestV3WatchMultipleEventsPutUnsynced(t *testing.T) { t.Fatalf("wStream.Send error: %v", err) } - if _, err := kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo0"), Value: []byte("bar")}); err != nil { + if _, err := kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo0"), Value: []byte("bar")}); err != nil { t.Fatalf("couldn't put key (%v)", err) } - if _, err := kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo1"), Value: []byte("bar")}); err != nil { + if _, err := kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo1"), Value: []byte("bar")}); err != nil { t.Fatalf("couldn't put key (%v)", err) } @@ -916,7 +916,7 @@ func TestV3WatchProgressOnMemberRestart(t *testing.T) { defer clus.Terminate(t) client := clus.RandClient() - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) defer cancel() errC := make(chan error, 1) @@ -1029,7 +1029,7 @@ func testV3WatchMultipleStreams(t *testing.T, startRev int64) { streams := make([]pb.Watch_WatchClient, 5) for i := range streams { - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() wStream, errW := wAPI.Watch(ctx) if errW != nil { @@ -1056,7 +1056,7 @@ func testV3WatchMultipleStreams(t *testing.T, startRev int64) { } } - if _, err := kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}); err != nil { + if _, err := kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}); err != nil { t.Fatalf("couldn't put key (%v)", err) } @@ -1129,7 +1129,7 @@ func TestWatchWithProgressNotify(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() wStream, wErr := integration.ToGRPC(clus.RandClient()).Watch.Watch(ctx) if wErr != nil { @@ -1188,7 +1188,7 @@ func TestV3WatchClose(t *testing.T) { wg.Add(100) for i := 0; i < 100; i++ { go func() { - ctx, cancel := context.WithCancel(context.TODO()) + ctx, cancel := context.WithCancel(t.Context()) defer func() { wg.Done() cancel() @@ -1219,7 +1219,7 @@ func TestV3WatchWithFilter(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() ws, werr := integration.ToGRPC(clus.RandClient()).Watch.Watch(ctx) @@ -1247,7 +1247,7 @@ func TestV3WatchWithFilter(t *testing.T) { // put a key with empty value kvc := integration.ToGRPC(clus.RandClient()).KV preq := &pb.PutRequest{Key: []byte("foo")} - _, err = kvc.Put(context.TODO(), preq) + _, err = kvc.Put(t.Context(), preq) require.NoError(t, err) select { @@ -1257,7 +1257,7 @@ func TestV3WatchWithFilter(t *testing.T) { } dreq := &pb.DeleteRangeRequest{Key: []byte("foo")} - _, err = kvc.DeleteRange(context.TODO(), dreq) + _, err = kvc.DeleteRange(t.Context(), dreq) require.NoError(t, err) select { @@ -1281,7 +1281,7 @@ func TestV3WatchWithPrevKV(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) - wctx, wcancel := context.WithCancel(context.Background()) + wctx, wcancel := context.WithCancel(t.Context()) defer wcancel() tests := []struct { @@ -1299,7 +1299,7 @@ func TestV3WatchWithPrevKV(t *testing.T) { }} for i, tt := range tests { kvc := integration.ToGRPC(clus.RandClient()).KV - _, err := kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte(tt.key), Value: []byte(tt.vals[0])}) + _, err := kvc.Put(t.Context(), &pb.PutRequest{Key: []byte(tt.key), Value: []byte(tt.vals[0])}) require.NoError(t, err) ws, werr := integration.ToGRPC(clus.RandClient()).Watch.Watch(wctx) @@ -1317,7 +1317,7 @@ func TestV3WatchWithPrevKV(t *testing.T) { _, err = ws.Recv() require.NoError(t, err) - _, err = kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte(tt.key), Value: []byte(tt.vals[1])}) + _, err = kvc.Put(t.Context(), &pb.PutRequest{Key: []byte(tt.key), Value: []byte(tt.vals[1])}) require.NoError(t, err) recv := make(chan *pb.WatchResponse, 1) @@ -1351,7 +1351,7 @@ func TestV3WatchCancellation(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() cli := clus.RandClient() @@ -1391,7 +1391,7 @@ func TestV3WatchCloseCancelRace(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() cli := clus.RandClient() @@ -1436,7 +1436,7 @@ func TestV3WatchProgressWaitsForSync(t *testing.T) { defer clus.Terminate(t) client := clus.RandClient() - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) defer cancel() // Write a couple values into key to make sure there's a @@ -1499,7 +1499,7 @@ func TestV3WatchProgressWaitsForSyncNoEvents(t *testing.T) { defer clus.Terminate(t) client := clus.RandClient() - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) defer cancel() resp, err := client.Put(ctx, "bar", "1") @@ -1547,7 +1547,7 @@ func TestV3NoEventsLostOnCompact(t *testing.T) { defer clus.Terminate(t) client := clus.RandClient() - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) defer cancel() // sendLoop throughput is rate-limited to 1 event per second diff --git a/tests/integration/v3election_grpc_test.go b/tests/integration/v3election_grpc_test.go index 25c7f846a9d7..94e27e71da53 100644 --- a/tests/integration/v3election_grpc_test.go +++ b/tests/integration/v3election_grpc_test.go @@ -15,7 +15,6 @@ package integration import ( - "context" "fmt" "testing" "time" @@ -34,21 +33,21 @@ func TestV3ElectionCampaign(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) - lease1, err1 := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: 30}) + lease1, err1 := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) require.NoError(t, err1) - lease2, err2 := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: 30}) + lease2, err2 := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) require.NoError(t, err2) lc := integration.ToGRPC(clus.Client(0)).Election req1 := &epb.CampaignRequest{Name: []byte("foo"), Lease: lease1.ID, Value: []byte("abc")} - l1, lerr1 := lc.Campaign(context.TODO(), req1) + l1, lerr1 := lc.Campaign(t.Context(), req1) require.NoError(t, lerr1) campaignc := make(chan struct{}) go func() { defer close(campaignc) req2 := &epb.CampaignRequest{Name: []byte("foo"), Lease: lease2.ID, Value: []byte("def")} - l2, lerr2 := lc.Campaign(context.TODO(), req2) + l2, lerr2 := lc.Campaign(t.Context(), req2) if lerr2 != nil { t.Error(lerr2) } @@ -63,7 +62,7 @@ func TestV3ElectionCampaign(t *testing.T) { t.Fatalf("got leadership before resign") } - _, uerr := lc.Resign(context.TODO(), &epb.ResignRequest{Leader: l1.Leader}) + _, uerr := lc.Resign(t.Context(), &epb.ResignRequest{Leader: l1.Leader}) require.NoError(t, uerr) select { @@ -72,7 +71,7 @@ func TestV3ElectionCampaign(t *testing.T) { case <-campaignc: } - lval, lverr := lc.Leader(context.TODO(), &epb.LeaderRequest{Name: []byte("foo")}) + lval, lverr := lc.Leader(t.Context(), &epb.LeaderRequest{Name: []byte("foo")}) require.NoError(t, lverr) if string(lval.Kv.Value) != "def" { @@ -93,7 +92,7 @@ func TestV3ElectionObserve(t *testing.T) { observec := make(chan struct{}, 1) go func() { defer close(observec) - s, err := lc.Observe(context.Background(), &epb.LeaderRequest{Name: []byte("foo")}) + s, err := lc.Observe(t.Context(), &epb.LeaderRequest{Name: []byte("foo")}) observec <- struct{}{} if err != nil { t.Error(err) @@ -119,9 +118,9 @@ func TestV3ElectionObserve(t *testing.T) { t.Fatalf("observe stream took too long to start") } - lease1, err1 := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: 30}) + lease1, err1 := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) require.NoError(t, err1) - c1, cerr1 := lc.Campaign(context.TODO(), &epb.CampaignRequest{Name: []byte("foo"), Lease: lease1.ID, Value: []byte("0")}) + c1, cerr1 := lc.Campaign(t.Context(), &epb.CampaignRequest{Name: []byte("foo"), Lease: lease1.ID, Value: []byte("0")}) require.NoError(t, cerr1) // overlap other leader so it waits on resign @@ -129,18 +128,18 @@ func TestV3ElectionObserve(t *testing.T) { go func() { defer close(leader2c) - lease2, err2 := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: 30}) + lease2, err2 := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) if err2 != nil { t.Error(err2) } - c2, cerr2 := lc.Campaign(context.TODO(), &epb.CampaignRequest{Name: []byte("foo"), Lease: lease2.ID, Value: []byte("5")}) + c2, cerr2 := lc.Campaign(t.Context(), &epb.CampaignRequest{Name: []byte("foo"), Lease: lease2.ID, Value: []byte("5")}) if cerr2 != nil { t.Error(cerr2) } for i := 6; i < 10; i++ { v := []byte(fmt.Sprintf("%d", i)) req := &epb.ProclaimRequest{Leader: c2.Leader, Value: v} - if _, err := lc.Proclaim(context.TODO(), req); err != nil { + if _, err := lc.Proclaim(t.Context(), req); err != nil { t.Error(err) } } @@ -149,11 +148,11 @@ func TestV3ElectionObserve(t *testing.T) { for i := 1; i < 5; i++ { v := []byte(fmt.Sprintf("%d", i)) req := &epb.ProclaimRequest{Leader: c1.Leader, Value: v} - _, err := lc.Proclaim(context.TODO(), req) + _, err := lc.Proclaim(t.Context(), req) require.NoError(t, err) } // start second leader - lc.Resign(context.TODO(), &epb.ResignRequest{Leader: c1.Leader}) + lc.Resign(t.Context(), &epb.ResignRequest{Leader: c1.Leader}) select { case <-observec: diff --git a/tests/integration/v3lock_grpc_test.go b/tests/integration/v3lock_grpc_test.go index f79e455f22b2..575c86567d98 100644 --- a/tests/integration/v3lock_grpc_test.go +++ b/tests/integration/v3lock_grpc_test.go @@ -15,7 +15,6 @@ package integration import ( - "context" "testing" "time" @@ -33,18 +32,18 @@ func TestV3LockLockWaiter(t *testing.T) { clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) - lease1, err1 := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: 30}) + lease1, err1 := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) require.NoError(t, err1) - lease2, err2 := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: 30}) + lease2, err2 := integration.ToGRPC(clus.RandClient()).Lease.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) require.NoError(t, err2) lc := integration.ToGRPC(clus.Client(0)).Lock - l1, lerr1 := lc.Lock(context.TODO(), &lockpb.LockRequest{Name: []byte("foo"), Lease: lease1.ID}) + l1, lerr1 := lc.Lock(t.Context(), &lockpb.LockRequest{Name: []byte("foo"), Lease: lease1.ID}) require.NoError(t, lerr1) lockc := make(chan struct{}) go func() { - l2, lerr2 := lc.Lock(context.TODO(), &lockpb.LockRequest{Name: []byte("foo"), Lease: lease2.ID}) + l2, lerr2 := lc.Lock(t.Context(), &lockpb.LockRequest{Name: []byte("foo"), Lease: lease2.ID}) if lerr2 != nil { t.Error(lerr2) } @@ -60,7 +59,7 @@ func TestV3LockLockWaiter(t *testing.T) { t.Fatalf("locked before unlock") } - _, uerr := lc.Unlock(context.TODO(), &lockpb.UnlockRequest{Key: l1.Key}) + _, uerr := lc.Unlock(t.Context(), &lockpb.UnlockRequest{Key: l1.Key}) require.NoError(t, uerr) select { From c96d714f82c19bb02d4fae59b34f310773e5b305 Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Sat, 31 May 2025 01:49:35 +0200 Subject: [PATCH 0256/1068] chore(clientV3): address Go usetesting for clientV3 Signed-off-by: Mustafa Elbehery --- client/v3/client_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/v3/client_test.go b/client/v3/client_test.go index 474a48203691..14b4af2df0bd 100644 --- a/client/v3/client_test.go +++ b/client/v3/client_test.go @@ -347,7 +347,7 @@ func TestNewWithOnlyJWT(t *testing.T) { } defer c.Close() - meta, err := c.authTokenBundle.PerRPCCredentials().GetRequestMetadata(context.Background(), "") + meta, err := c.authTokenBundle.PerRPCCredentials().GetRequestMetadata(t.Context(), "") if err != nil { t.Errorf("Error building request metadata: %s", err) } From b5fe9c6b138f3c39934b77a0699b07faeea8ba8e Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Sat, 31 May 2025 01:49:35 +0200 Subject: [PATCH 0257/1068] chore(test): Re-enable usetesting linter Signed-off-by: Mustafa Elbehery --- tools/.golangci.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/.golangci.yaml b/tools/.golangci.yaml index d5a87964ef7c..24af2b16e936 100644 --- a/tools/.golangci.yaml +++ b/tools/.golangci.yaml @@ -36,8 +36,7 @@ linters: - unparam - unused - usestdlibvars - # Disabled in the meanwhile, it raises several issues with new Go 1.24 functions - # - usetesting + - usetesting - whitespace linters-settings: # please keep this alphabetized goimports: From aab2b5f76c27307c94706a21c8bccf8961e6905d Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 1 Jun 2025 12:45:40 +0200 Subject: [PATCH 0258/1068] Fix templating docker-compose to reference the correct tags Signed-off-by: Marek Siarkowicz --- .github/workflows/antithesis-test.yml | 25 +++++++++---------------- tests/antithesis/Dockerfile.config | 4 ++-- tests/antithesis/Makefile | 5 +++-- tests/antithesis/docker-compose.yml | 8 ++++---- 4 files changed, 18 insertions(+), 24 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 9e30c2cf036b..e03b1a793a37 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -60,13 +60,10 @@ jobs: - name: Build and push config image working-directory: ./tests/antithesis run: | - make antithesis-build-config-image REF=${{ inputs.etcd_ref }} - export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:${{ inputs.etcd_ref }}_${{ github.sha }}" - docker tag etcd-config:latest $TAG - docker push $TAG - export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:${{ github.sha }}" - docker tag etcd-config:latest $TAG - docker push $TAG + make antithesis-build-config-image IMAGE_TAG=${{ inputs.etcd_ref }}_${{ github.sha }} + export IMAGE="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:${{ inputs.etcd_ref }}_${{ github.sha }}" + docker tag etcd-config:latest $IMAGE + docker push $IMAGE - name: Build and push client image uses: docker/build-push-action@1dc73863535b631f98b2378be8619f83b136f4a0 # v6.17.0 @@ -75,19 +72,15 @@ jobs: file: ./tests/antithesis/test-template/Dockerfile push: true tags: | - ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:latest, - ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:${{ github.sha }} + ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:${{ inputs.etcd_ref }}_${{ github.sha }} - name: Build and push etcd image working-directory: ./tests/antithesis run: | make antithesis-build-etcd-image REF=${{ inputs.etcd_ref }} - export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:${{ inputs.etcd_ref }}_${{ github.sha }}" - docker tag etcd-server:latest $TAG - docker push $TAG - export TAG="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:${{ github.sha }}" - docker tag etcd-server:latest $TAG - docker push $TAG + export IMAGE="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:${{ inputs.etcd_ref }}_${{ github.sha }}" + docker tag etcd-server:latest $IMAGE + docker push $IMAGE - name: Run Antithesis Tests uses: antithesishq/antithesis-trigger-action@b7d0c9d1d9316bd4de73a44144c56636ea3a64ba # main commit on Mar 13, 2025 @@ -98,7 +91,7 @@ jobs: password: ${{ secrets.ANTITHESIS_WEBHOOK_PASSWORD }} github_token: ${{ secrets.GH_PAT }} config_image: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:${{ inputs.etcd_ref }}_${{ github.sha }} - images: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-client:latest;us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-server:${{ inputs.etcd_ref }}_${{ github.sha }};docker.io/library/ubuntu:latest;us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:${{ inputs.etcd_ref }}_${{ github.sha }} + images: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-client:${{ inputs.etcd_ref }}_${{ github.sha }};us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-server:${{ inputs.etcd_ref }}_${{ github.sha }};docker.io/library/ubuntu:latest;us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:${{ inputs.etcd_ref }}_${{ github.sha }} description: ${{ inputs.description }} email_recipients: ${{ inputs.email }} test_name: ${{ inputs.test }} diff --git a/tests/antithesis/Dockerfile.config b/tests/antithesis/Dockerfile.config index 2e6978d9dd2c..4ac0ea37384c 100644 --- a/tests/antithesis/Dockerfile.config +++ b/tests/antithesis/Dockerfile.config @@ -3,9 +3,9 @@ ARG GO_VERSION=1.24.3 FROM golang:$GO_VERSION AS build RUN go install github.com/a8m/envsubst/cmd/envsubst@v1.4.3 -ARG REF +ARG IMAGE_TAG COPY docker-compose.yml /docker-compose.yml.template -RUN REF=${REF} cat /docker-compose.yml.template | envsubst > /docker-compose.yml +RUN IMAGE_TAG=${IMAGE_TAG} cat /docker-compose.yml.template | envsubst > /docker-compose.yml FROM scratch COPY --from=build /docker-compose.yml /docker-compose.yml diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 22625613833a..23308872ae43 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -3,6 +3,7 @@ USER_ID := $(shell id -u) GROUP_ID := $(shell id -g) ARCH ?= $(shell go env GOARCH) REF = main +IMAGE_TAG = latest .PHONY: antithesis-build-client-docker-image antithesis-build-client-docker-image: @@ -10,7 +11,7 @@ antithesis-build-client-docker-image: .PHONY: antithesis-build-etcd-image antithesis-build-etcd-image: - docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) --build-arg REF=$(REF) $(REPOSITORY_ROOT)/tests/antithesis/server/ -t etcd-server:latest -t etcd-server:$(REF) + docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) --build-arg REF=$(REF) $(REPOSITORY_ROOT)/tests/antithesis/server/ -t etcd-server:latest .PHONY: antithesis-build-etcd-image-release-3.4 antithesis-build-etcd-image-release-3.4: REF=release-3.4 @@ -30,7 +31,7 @@ antithesis-build-etcd-image-main: antithesis-build-etcd-image .PHONY: antithesis-build-config-image antithesis-build-config-image: - docker build -f ./Dockerfile.config . -t etcd-config:latest -t etcd-config:$(REF) --build-arg REF=$(REF) + docker build -f ./Dockerfile.config . -t etcd-config:latest --build-arg IMAGE_TAG=$(IMAGE_TAG) .PHONY: antithesis-docker-compose-up antithesis-docker-compose-up: diff --git a/tests/antithesis/docker-compose.yml b/tests/antithesis/docker-compose.yml index 8f345c1aae35..e3ea9df8f766 100644 --- a/tests/antithesis/docker-compose.yml +++ b/tests/antithesis/docker-compose.yml @@ -21,7 +21,7 @@ services: chown -R ${USER_ID:-root}:${GROUP_ID:-root} /var/etcddata0 /var/etcddata1 /var/etcddata2 /var/report etcd0: - image: 'etcd-server:${REF:-latest}' + image: 'etcd-server:${IMAGE_TAG:-latest}' container_name: etcd0 hostname: etcd0 environment: @@ -44,7 +44,7 @@ services: - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcd/data etcd1: - image: 'etcd-server:${REF:-latest}' + image: 'etcd-server:${IMAGE_TAG:-latest}' container_name: etcd1 hostname: etcd1 environment: @@ -67,7 +67,7 @@ services: - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}1:/var/etcd/data etcd2: - image: 'etcd-server:${REF:-latest}' + image: 'etcd-server:${IMAGE_TAG:-latest}' container_name: etcd2 hostname: etcd2 environment: @@ -90,7 +90,7 @@ services: - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}2:/var/etcd/data client: - image: 'etcd-client:latest' + image: 'etcd-client:${IMAGE_TAG:-latest}' container_name: client entrypoint: ["/opt/antithesis/entrypoint/entrypoint"] user: "${USER_ID:-root}:${GROUP_ID:-root}" From e091db45fc24e3759e1fbdfde74e5be724b65932 Mon Sep 17 00:00:00 2001 From: Nont Date: Fri, 30 May 2025 23:59:25 -0500 Subject: [PATCH 0259/1068] Use official build process for instrumentation Signed-off-by: Nont --- tests/antithesis/server/Dockerfile | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/tests/antithesis/server/Dockerfile b/tests/antithesis/server/Dockerfile index c299c51447fd..c9f435776342 100644 --- a/tests/antithesis/server/Dockerfile +++ b/tests/antithesis/server/Dockerfile @@ -26,7 +26,18 @@ RUN cp -r /etcd_instrumented/symbols/* /symbols EXPOSE 2379 2380 # start etcd server -WORKDIR /etcd_instrumented/customer/server -RUN go mod tidy -RUN CGO_ENABLED=1 go build -race -CMD ["./server"] +WORKDIR /etcd_instrumented/customer + +# Some previous versions hardcode CGO_ENABLED=0 +RUN find . -type f -exec sed -i 's/CGO_ENABLED=0/CGO_ENABLED=${CGO_ENABLED}/' {} + +# Some previous versions explicitly need gobin, which could no longer be installed with go get +RUN go install github.com/myitcv/gobin@v0.0.14 +# 3.4.0 has vendoring. need to do this after instrumentation or else build fails +RUN if [ -d "vendor" ]; then go mod vendor; fi + +# The instrumentation adds code and packages. Need go mod tidy for all modules before building +RUN for d in server etcdutl etcdctl; do (cd ${d} && go mod tidy || true); done +# The instrumentation also adds a new main file which clashes with dummy.go found in non release-3.4 branches +RUN if [ -f "dummy.go" ]; then sed -i 's/package main_test/package main/' dummy.go; fi +RUN CGO_ENABLED=1 make build +CMD ["./bin/etcd"] From e3db064def388b59562fa62e82a35877fff9640e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 17:42:18 +0000 Subject: [PATCH 0260/1068] build(deps): bump ossf/scorecard-action from 2.4.1 to 2.4.2 Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.1 to 2.4.2. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/f49aabe0b5af0936a0987cfb85d86b75731b0186...05b42c624433fc40578a4040d5cf5e36ddca8cde) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-version: 2.4.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 03c04d8d7905..51dc3c19c890 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -28,7 +28,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1 + uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2 with: results_file: results.sarif results_format: sarif From 9da8fa4e9db5912fa334e38840dff90f3616378d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 17:59:35 +0000 Subject: [PATCH 0261/1068] build(deps): bump docker/build-push-action from 6.17.0 to 6.18.0 Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.17.0 to 6.18.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/1dc73863535b631f98b2378be8619f83b136f4a0...263435318d21b8e681c14492fe198d362a7d2c83) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-version: 6.18.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index e03b1a793a37..49d711d318fe 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -66,7 +66,7 @@ jobs: docker push $IMAGE - name: Build and push client image - uses: docker/build-push-action@1dc73863535b631f98b2378be8619f83b136f4a0 # v6.17.0 + uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 with: context: . file: ./tests/antithesis/test-template/Dockerfile From 5e4d25b88ac97b8e7e0b5589a4086c695bc7b516 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Mon, 2 Jun 2025 17:32:15 +0100 Subject: [PATCH 0262/1068] Update -discovery related test cases to use v3discovery flags Signed-off-by: Benjamin Wang --- server/etcdmain/config_test.go | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/server/etcdmain/config_test.go b/server/etcdmain/config_test.go index 60722fb929bb..5008762c40b3 100644 --- a/server/etcdmain/config_test.go +++ b/server/etcdmain/config_test.go @@ -207,21 +207,21 @@ func TestConfigFileClusteringFlags(t *testing.T) { func TestConfigParsingConflictClusteringFlags(t *testing.T) { conflictArgs := [][]string{ { - "-initial-cluster=0=localhost:8000", - "-discovery=http://example.com/abc", + "--initial-cluster=0=localhost:8000", + "--discovery-endpoints=http://example.com/abc", }, { - "-discovery-srv=example.com", - "-discovery=http://example.com/abc", + "--discovery-srv=example.com", + "--discovery-endpoints=http://example.com/abc", }, { - "-initial-cluster=0=localhost:8000", - "-discovery-srv=example.com", + "--initial-cluster=0=localhost:8000", + "--discovery-srv=example.com", }, { - "-initial-cluster=0=localhost:8000", - "-discovery=http://example.com/abc", - "-discovery-srv=example.com", + "--initial-cluster=0=localhost:8000", + "--discovery-endpoints=http://example.com/abc", + "--discovery-srv=example.com", }, } @@ -283,29 +283,28 @@ func TestConfigParsingMissedAdvertiseClientURLsFlag(t *testing.T) { }{ { []string{ - "-initial-cluster=infra1=http://127.0.0.1:2380", - "-listen-client-urls=http://127.0.0.1:2379", + "--initial-cluster=infra1=http://127.0.0.1:2380", + "--listen-client-urls=http://127.0.0.1:2379", }, embed.ErrUnsetAdvertiseClientURLsFlag, }, { []string{ - "-discovery-srv=example.com", - "-listen-client-urls=http://127.0.0.1:2379", + "--discovery-srv=example.com", + "--listen-client-urls=http://127.0.0.1:2379", }, embed.ErrUnsetAdvertiseClientURLsFlag, }, { []string{ - "-discovery=http://example.com/abc", - "-discovery-fallback=exit", - "-listen-client-urls=http://127.0.0.1:2379", + "--discovery-fallback=exit", + "--listen-client-urls=http://127.0.0.1:2379", }, embed.ErrUnsetAdvertiseClientURLsFlag, }, { []string{ - "-listen-client-urls=http://127.0.0.1:2379", + "--listen-client-urls=http://127.0.0.1:2379", }, embed.ErrUnsetAdvertiseClientURLsFlag, }, From 760aa68e6686337351ca4a1da9666156515b7aae Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 3 Jun 2025 14:29:14 +0100 Subject: [PATCH 0263/1068] Verify that the discovery endpoint isn't empty Signed-off-by: Benjamin Wang --- server/embed/config_test.go | 48 +++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/server/embed/config_test.go b/server/embed/config_test.go index 52216b8664a7..7ae26d776f24 100644 --- a/server/embed/config_test.go +++ b/server/embed/config_test.go @@ -834,3 +834,51 @@ func TestDiscoveryCfg(t *testing.T) { }) } } + +func TestDiscoveryCfg(t *testing.T) { + testCases := []struct { + name string + discoveryCfg v3discovery.DiscoveryConfig + wantErr bool + }{ + { + name: "Valid discovery config", + discoveryCfg: v3discovery.DiscoveryConfig{ + ConfigSpec: clientv3.ConfigSpec{ + Endpoints: []string{"http://10.0.0.100:2379", "http://10.0.0.101:2379"}, + }, + }, + wantErr: false, + }, + { + name: "Partial empty discovery endpoints", + discoveryCfg: v3discovery.DiscoveryConfig{ + ConfigSpec: clientv3.ConfigSpec{ + Endpoints: []string{"http://10.0.0.100:2379", ""}, + }, + }, + wantErr: true, + }, + { + name: "Empty discovery endpoint", + discoveryCfg: v3discovery.DiscoveryConfig{ + ConfigSpec: clientv3.ConfigSpec{ + Endpoints: []string{"", ""}, + }, + }, + wantErr: true, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + cfg := NewConfig() + cfg.InitialCluster = "" + cfg.DiscoveryCfg = tc.discoveryCfg + cfg.DiscoveryCfg.Token = "foo" + err := cfg.Validate() + + require.Equal(t, tc.wantErr, err != nil) + }) + } +} From 2a0d01f004701e7dce106919120b14cdee1c10a9 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 3 Jun 2025 12:45:11 +0530 Subject: [PATCH 0264/1068] dependency: bump go.opentelemetry.io/proto/otlp from 1.6.0 to 1.7.0 This commit will bump go.opentelemetry.io/proto/otlp from 1.6.0 to 1.7.0 Signed-off-by: ArkaSaha30 --- api/go.mod | 4 ++-- api/go.sum | 8 ++++---- client/v3/go.mod | 4 ++-- client/v3/go.sum | 8 ++++---- etcdctl/go.mod | 4 ++-- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 12 ++++++------ go.mod | 6 +++--- go.sum | 12 ++++++------ pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 6 +++--- server/go.sum | 12 ++++++------ tests/go.mod | 6 +++--- tests/go.sum | 12 ++++++------ tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 8 ++++---- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 20 files changed, 66 insertions(+), 66 deletions(-) diff --git a/api/go.mod b/api/go.mod index 492b6f145534..3f2af94c4424 100644 --- a/api/go.mod +++ b/api/go.mod @@ -10,7 +10,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/stretchr/testify v1.10.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 + google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a google.golang.org/grpc v1.72.2 google.golang.org/protobuf v1.36.6 ) @@ -24,7 +24,7 @@ require ( golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 40f931532542..beb63c939975 100644 --- a/api/go.sum +++ b/api/go.sum @@ -73,10 +73,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/client/v3/go.mod b/client/v3/go.mod index e3ff6912919a..5ad486a7bf3f 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -37,8 +37,8 @@ require ( golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index b27f9d5ef829..0308960c6447 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -107,10 +107,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index d91f852c4862..d8db8263e1a9 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -42,8 +42,8 @@ require ( golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 8df757018e3f..e1f0321660fe 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -136,10 +136,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 7c0fbd70baa9..c18d59227c75 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -84,15 +84,15 @@ require ( go.opentelemetry.io/otel/metric v1.36.0 // indirect go.opentelemetry.io/otel/sdk v1.36.0 // indirect go.opentelemetry.io/otel/trace v1.36.0 // indirect - go.opentelemetry.io/proto/otlp v1.6.0 // indirect + go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.38.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect golang.org/x/time v0.11.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/grpc v1.72.2 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index fc1f11d6c3f6..7fbf53a0af5f 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -131,8 +131,8 @@ go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= -go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= -go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= +go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= +go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= 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= @@ -179,10 +179,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/go.mod b/go.mod index 37f5b62949bd..0ef2666e2868 100644 --- a/go.mod +++ b/go.mod @@ -91,14 +91,14 @@ require ( go.opentelemetry.io/otel/metric v1.36.0 // indirect go.opentelemetry.io/otel/sdk v1.36.0 // indirect go.opentelemetry.io/otel/trace v1.36.0 // indirect - go.opentelemetry.io/proto/otlp v1.6.0 // indirect + go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.38.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect diff --git a/go.sum b/go.sum index 610b8473295c..19764c646004 100644 --- a/go.sum +++ b/go.sum @@ -170,8 +170,8 @@ go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= -go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= -go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= +go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= +go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= @@ -243,10 +243,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/pkg/go.mod b/pkg/go.mod index 581d95fe2899..b32911b2e4a4 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -27,7 +27,7 @@ require ( golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index ec6fe47cbab8..090442f9f05b 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -59,8 +59,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/server/go.mod b/server/go.mod index f6a82f95c83b..9257210f630a 100644 --- a/server/go.mod +++ b/server/go.mod @@ -40,7 +40,7 @@ require ( golang.org/x/crypto v0.38.0 golang.org/x/net v0.40.0 golang.org/x/time v0.11.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 + google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a google.golang.org/grpc v1.72.2 google.golang.org/protobuf v1.36.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 @@ -69,11 +69,11 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect go.opentelemetry.io/otel/metric v1.36.0 // indirect go.opentelemetry.io/otel/trace v1.36.0 // indirect - go.opentelemetry.io/proto/otlp v1.6.0 // indirect + go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect ) diff --git a/server/go.sum b/server/go.sum index d9d9f6709a13..ecac5c95b2c9 100644 --- a/server/go.sum +++ b/server/go.sum @@ -145,8 +145,8 @@ go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= -go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= -go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= +go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= +go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= @@ -217,10 +217,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/tests/go.mod b/tests/go.mod index 00bb995ea8e5..c5c5f6cdc6f1 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -44,7 +44,7 @@ require ( go.opentelemetry.io/otel v1.36.0 go.opentelemetry.io/otel/sdk v1.36.0 go.opentelemetry.io/otel/trace v1.36.0 - go.opentelemetry.io/proto/otlp v1.6.0 + go.opentelemetry.io/proto/otlp v1.7.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.38.0 golang.org/x/sync v0.14.0 @@ -99,8 +99,8 @@ require ( golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect diff --git a/tests/go.sum b/tests/go.sum index 7ca625262bc5..6771ee488a91 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -176,8 +176,8 @@ go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= -go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= -go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= +go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= +go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= @@ -249,10 +249,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 0d868bb42efd..0baa3dab6dc0 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -223,8 +223,8 @@ require ( golang.org/x/term v0.32.0 // indirect golang.org/x/text v0.25.0 // indirect golang.org/x/tools v0.33.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/grpc v1.72.2 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index acdfe37bce1b..41acd995b82d 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -685,10 +685,10 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 7f0fb2f1a053..3abca6e9d836 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -21,6 +21,6 @@ require ( golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/grpc v1.72.2 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 7686bdf98dba..a5b6aeae474d 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1841,8 +1841,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= From 116394bd90d2203776b3c67dfcf34f19659100e4 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 3 Jun 2025 12:47:41 +0530 Subject: [PATCH 0265/1068] dependency: bump github.com/olekukonko/tablewriter from 1.0.6 to 1.0.7 This commit will bump github.com/olekukonko/tablewriter from 1.0.6 to 1.0.7 Signed-off-by: ArkaSaha30 --- etcdctl/go.mod | 4 ++-- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 8 ++++---- 10 files changed, 30 insertions(+), 30 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index d8db8263e1a9..221f48710b9c 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -8,7 +8,7 @@ require ( github.com/bgentry/speakeasy v0.2.0 github.com/cheggaaa/pb/v3 v3.1.7 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.0.6 + github.com/olekukonko/tablewriter v1.0.7 github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 @@ -35,7 +35,7 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect - github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 // indirect + github.com/olekukonko/ll v0.0.8 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index e1f0321660fe..73eaf538af1c 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -56,10 +56,10 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 h1:V2wKiwjwAfRJRtUP6pC7wt4opeF14enO0du2dRV6Llo= -github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.6 h1:/T45mIHc5hcEvibgzBzvMy7ruT+RjgoQRvkHbnl6OWA= -github.com/olekukonko/tablewriter v1.0.6/go.mod h1:SJ0MV1aHb/89fLcsBMXMp30Xg3g5eGoOUu0RptEk4AU= +github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= +github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.7 h1:HCC2e3MM+2g72M81ZcJU11uciw6z/p82aEnm4/ySDGw= +github.com/olekukonko/tablewriter v1.0.7/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index c18d59227c75..10fd49924bfb 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -24,7 +24,7 @@ replace ( require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.0.6 + github.com/olekukonko/tablewriter v1.0.7 github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 go.etcd.io/bbolt v1.4.0 @@ -63,7 +63,7 @@ require ( github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect - github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 // indirect + github.com/olekukonko/ll v0.0.8 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 7fbf53a0af5f..1c6333c23f30 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -70,10 +70,10 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 h1:V2wKiwjwAfRJRtUP6pC7wt4opeF14enO0du2dRV6Llo= -github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.6 h1:/T45mIHc5hcEvibgzBzvMy7ruT+RjgoQRvkHbnl6OWA= -github.com/olekukonko/tablewriter v1.0.6/go.mod h1:SJ0MV1aHb/89fLcsBMXMp30Xg3g5eGoOUu0RptEk4AU= +github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= +github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.7 h1:HCC2e3MM+2g72M81ZcJU11uciw6z/p82aEnm4/ySDGw= +github.com/olekukonko/tablewriter v1.0.7/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/go.mod b/go.mod index 0ef2666e2868..fbefe399e5dc 100644 --- a/go.mod +++ b/go.mod @@ -69,8 +69,8 @@ require ( github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect - github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 // indirect - github.com/olekukonko/tablewriter v1.0.6 // indirect + github.com/olekukonko/ll v0.0.8 // indirect + github.com/olekukonko/tablewriter v1.0.7 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/go.sum b/go.sum index 19764c646004..27e117b8c018 100644 --- a/go.sum +++ b/go.sum @@ -100,10 +100,10 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 h1:V2wKiwjwAfRJRtUP6pC7wt4opeF14enO0du2dRV6Llo= -github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.6 h1:/T45mIHc5hcEvibgzBzvMy7ruT+RjgoQRvkHbnl6OWA= -github.com/olekukonko/tablewriter v1.0.6/go.mod h1:SJ0MV1aHb/89fLcsBMXMp30Xg3g5eGoOUu0RptEk4AU= +github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= +github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.7 h1:HCC2e3MM+2g72M81ZcJU11uciw6z/p82aEnm4/ySDGw= +github.com/olekukonko/tablewriter v1.0.7/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/tests/go.mod b/tests/go.mod index c5c5f6cdc6f1..29e8afc88edb 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -80,8 +80,8 @@ require ( github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect - github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 // indirect - github.com/olekukonko/tablewriter v1.0.6 // indirect + github.com/olekukonko/ll v0.0.8 // indirect + github.com/olekukonko/tablewriter v1.0.7 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect diff --git a/tests/go.sum b/tests/go.sum index 6771ee488a91..f4ec8dc115ec 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -106,10 +106,10 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 h1:V2wKiwjwAfRJRtUP6pC7wt4opeF14enO0du2dRV6Llo= -github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.6 h1:/T45mIHc5hcEvibgzBzvMy7ruT+RjgoQRvkHbnl6OWA= -github.com/olekukonko/tablewriter v1.0.6/go.mod h1:SJ0MV1aHb/89fLcsBMXMp30Xg3g5eGoOUu0RptEk4AU= +github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= +github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.7 h1:HCC2e3MM+2g72M81ZcJU11uciw6z/p82aEnm4/ySDGw= +github.com/olekukonko/tablewriter v1.0.7/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 0baa3dab6dc0..97820e460afe 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -146,8 +146,8 @@ require ( github.com/nishanths/predeclared v0.2.2 // indirect github.com/nunnatsa/ginkgolinter v0.19.1 // indirect github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect - github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 // indirect - github.com/olekukonko/tablewriter v1.0.6 // indirect + github.com/olekukonko/ll v0.0.8 // indirect + github.com/olekukonko/tablewriter v1.0.7 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 41acd995b82d..eee6d4c1914b 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -326,10 +326,10 @@ github.com/nunnatsa/ginkgolinter v0.19.1 h1:mjwbOlDQxZi9Cal+KfbEJTCz327OLNfwNvoZ github.com/nunnatsa/ginkgolinter v0.19.1/go.mod h1:jkQ3naZDmxaZMXPWaS9rblH+i+GWXQCaS/JFIWcOH2s= github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985 h1:V2wKiwjwAfRJRtUP6pC7wt4opeF14enO0du2dRV6Llo= -github.com/olekukonko/ll v0.0.8-0.20250516010636-22ea57d81985/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.6 h1:/T45mIHc5hcEvibgzBzvMy7ruT+RjgoQRvkHbnl6OWA= -github.com/olekukonko/tablewriter v1.0.6/go.mod h1:SJ0MV1aHb/89fLcsBMXMp30Xg3g5eGoOUu0RptEk4AU= +github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= +github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.7 h1:HCC2e3MM+2g72M81ZcJU11uciw6z/p82aEnm4/ySDGw= +github.com/olekukonko/tablewriter v1.0.7/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= From f393e6fe5ec1b7fd1d72b2ea9751a2ccaf0098e7 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Wed, 4 Jun 2025 13:31:24 +0100 Subject: [PATCH 0266/1068] Cleanup client/internal/v2 from scripts, go.mod/go.sum files, bom and codecov.yml Signed-off-by: Benjamin Wang --- bill-of-materials.json | 18 ------------------ etcdutl/go.mod | 1 - go.mod | 3 --- go.sum | 2 -- scripts/test_lib.sh | 3 +-- server/go.mod | 1 - tests/go.mod | 1 - 7 files changed, 1 insertion(+), 28 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index 16b668e45a68..0fbec32c2fda 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -485,15 +485,6 @@ } ] }, - { - "project": "go.etcd.io/etcd/client/v2", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 0.9988925802879292 - } - ] - }, { "project": "go.etcd.io/etcd/client/v3", "licenses": [ @@ -782,15 +773,6 @@ } ] }, - { - "project": "sigs.k8s.io/json", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 0.9617021276595744 - } - ] - }, { "project": "sigs.k8s.io/yaml", "licenses": [ diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 0529526abeee..715cb598fc7d 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -7,7 +7,6 @@ toolchain go1.24.3 replace ( go.etcd.io/etcd/api/v3 => ../api go.etcd.io/etcd/client/pkg/v3 => ../client/pkg - go.etcd.io/etcd/client/v2 => ./../client/internal/v2 go.etcd.io/etcd/client/v3 => ../client/v3 go.etcd.io/etcd/pkg/v3 => ../pkg go.etcd.io/etcd/server/v3 => ../server diff --git a/go.mod b/go.mod index fbefe399e5dc..260dab18477b 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,6 @@ toolchain go1.24.3 replace ( go.etcd.io/etcd/api/v3 => ./api go.etcd.io/etcd/client/pkg/v3 => ./client/pkg - go.etcd.io/etcd/client/v2 => ./client/internal/v2 go.etcd.io/etcd/client/v3 => ./client/v3 go.etcd.io/etcd/etcdctl/v3 => ./etcdctl go.etcd.io/etcd/etcdutl/v3 => ./etcdutl @@ -26,7 +25,6 @@ require ( go.etcd.io/bbolt v1.4.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/etcdctl/v3 v3.6.0-alpha.0 go.etcd.io/etcd/etcdutl/v3 v3.6.0-alpha.0 @@ -101,6 +99,5 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/go.sum b/go.sum index 27e117b8c018..a938b249366a 100644 --- a/go.sum +++ b/go.sum @@ -267,7 +267,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index 9b78e3f0d9e6..0c5c2d28cd89 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -78,7 +78,7 @@ function run_for_module { } function module_dirs() { - echo "api pkg client/pkg client/internal/v2 client/v3 server etcdutl etcdctl tests tools/mod tools/rw-heatmaps tools/testgrid-analysis cache ." + echo "api pkg client/pkg client/v3 server etcdutl etcdctl tests tools/mod tools/rw-heatmaps tools/testgrid-analysis cache ." } # maybe_run [cmd...] runs given command depending on the DRY_RUN flag. @@ -98,7 +98,6 @@ function modules() { "${ROOT_MODULE}/api/v3" "${ROOT_MODULE}/pkg/v3" "${ROOT_MODULE}/client/pkg/v3" - "${ROOT_MODULE}/client/v2" "${ROOT_MODULE}/client/v3" "${ROOT_MODULE}/server/v3" "${ROOT_MODULE}/etcdutl/v3" diff --git a/server/go.mod b/server/go.mod index 83792706e34b..386a1c2ead2e 100644 --- a/server/go.mod +++ b/server/go.mod @@ -79,7 +79,6 @@ require ( replace ( go.etcd.io/etcd/api/v3 => ../api go.etcd.io/etcd/client/pkg/v3 => ../client/pkg - go.etcd.io/etcd/client/v2 => ./../client/internal/v2 go.etcd.io/etcd/client/v3 => ../client/v3 go.etcd.io/etcd/pkg/v3 => ../pkg ) diff --git a/tests/go.mod b/tests/go.mod index 4aed4f1a7365..3f1f56a4e635 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -7,7 +7,6 @@ toolchain go1.24.3 replace ( go.etcd.io/etcd/api/v3 => ../api go.etcd.io/etcd/client/pkg/v3 => ../client/pkg - go.etcd.io/etcd/client/v2 => ./../client/internal/v2 go.etcd.io/etcd/client/v3 => ../client/v3 go.etcd.io/etcd/etcdctl/v3 => ../etcdctl go.etcd.io/etcd/etcdutl/v3 => ../etcdutl From 05ff21c8299e8166446fb4460e9d0a89ecfa46c6 Mon Sep 17 00:00:00 2001 From: Nont Date: Thu, 5 Jun 2025 07:41:10 -0500 Subject: [PATCH 0267/1068] Add the rest of the traffic to antithesis Signed-off-by: Nont --- .../test-template/robustness/finally/main.go | 2 +- .../test-template/robustness/traffic/main.go | 4 ++-- tests/robustness/traffic/etcd.go | 16 ---------------- 3 files changed, 3 insertions(+), 19 deletions(-) diff --git a/tests/antithesis/test-template/robustness/finally/main.go b/tests/antithesis/test-template/robustness/finally/main.go index 852820bfbdde..1f62adc30a01 100644 --- a/tests/antithesis/test-template/robustness/finally/main.go +++ b/tests/antithesis/test-template/robustness/finally/main.go @@ -62,7 +62,7 @@ func validateReports(lg *zap.Logger, serversDataPath map[string]string, reports persistedRequests, err := report.PersistedRequests(lg, slices.Collect(maps.Values(serversDataPath))) assert.Always(err == nil, "Loaded persisted requests", map[string]any{"error": err}) - validateConfig := validate.Config{ExpectRevisionUnique: traffic.EtcdAntithesis.ExpectUniqueRevision()} + validateConfig := validate.Config{ExpectRevisionUnique: traffic.EtcdPutDeleteLease.ExpectUniqueRevision()} result := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, persistedRequests, 5*time.Minute) assert.Always(result.Assumptions == nil, "Validation assumptions fulfilled", map[string]any{"error": result.Assumptions}) if result.Linearization.Linearizable == porcupine.Unknown { diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 748c87d89bf4..4a68b5ee63d4 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -137,7 +137,7 @@ func simulateTraffic(ctx context.Context, hosts []string, ids identity.Provider, defer wg.Done() defer c.Close() - traffic.EtcdAntithesis.RunTrafficLoop(ctx, c, limiter, + traffic.EtcdPutDeleteLease.RunTrafficLoop(ctx, c, limiter, ids, storage, concurrencyLimiter, @@ -154,7 +154,7 @@ func simulateTraffic(ctx context.Context, hosts []string, ids identity.Provider, go func(c *client.RecordingClient) { defer wg.Done() defer c.Close() - traffic.EtcdAntithesis.RunCompactLoop(ctx, c, traffic.DefaultCompactionPeriod, finish) + traffic.EtcdPutDeleteLease.RunCompactLoop(ctx, c, traffic.DefaultCompactionPeriod, finish) mux.Lock() reports = append(reports, c.Report()) mux.Unlock() diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index b9bb2e72ddb4..5483e48bb2a5 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -75,22 +75,6 @@ var ( {Choice: Delete, Weight: 50}, }, } - EtcdAntithesis Traffic = etcdTraffic{ - keyCount: 10, - largePutSize: 32769, - leaseTTL: DefaultLeaseTTL, - // Please keep the sum of weights equal 100. - requests: []random.ChoiceWeight[etcdRequestType]{ - {Choice: Get, Weight: 15}, - {Choice: List, Weight: 15}, - {Choice: Put, Weight: 35}, - {Choice: StaleGet, Weight: 10}, - {Choice: StaleList, Weight: 10}, - {Choice: Delete, Weight: 5}, - {Choice: MultiOpTxn, Weight: 5}, - {Choice: PutWithLease, Weight: 5}, - }, - } ) type etcdTraffic struct { From 8a1347bc40d2c2c0b3bf6445ff7bd88726fe78ff Mon Sep 17 00:00:00 2001 From: James Shubin Date: Thu, 5 Jun 2025 14:53:50 -0400 Subject: [PATCH 0268/1068] readme: Fix broken docs link and add new ones The current links point to the old v3.3 docs which aren't relevant anymore. This also adds simple links to the current docs. This fixes https://github.com/etcd-io/etcd/issues/19645 Signed-off-by: James Shubin --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f3bd97da460..3927cd6227f5 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![Tests](https://github.com/etcd-io/etcd/actions/workflows/tests.yaml/badge.svg)](https://github.com/etcd-io/etcd/actions/workflows/tests.yaml) [![codeql-analysis](https://github.com/etcd-io/etcd/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/etcd-io/etcd/actions/workflows/codeql-analysis.yml) [![Docs](https://img.shields.io/badge/docs-latest-green.svg)](https://etcd.io/docs) -[![Godoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://godoc.org/github.com/etcd-io/etcd) +[![Godoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://godocs.io/go.etcd.io/etcd/v3) [![Releases](https://img.shields.io/github/release/etcd-io/etcd/all.svg?style=flat-square)](https://github.com/etcd-io/etcd/releases) [![LICENSE](https://img.shields.io/github/license/etcd-io/etcd.svg?style=flat-square)](https://github.com/etcd-io/etcd/blob/main/LICENSE) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/etcd-io/etcd/badge)](https://scorecard.dev/viewer/?uri=github.com/etcd-io/etcd) @@ -42,6 +42,18 @@ See [etcdctl][etcdctl] for a simple command line client. [vulcand]: https://github.com/vulcand/vulcand [etcdctl]: https://github.com/etcd-io/etcd/tree/main/etcdctl +## Documentation + +The most common API documentation you'll need can be found here: + +* [go.etcd.io/etcd/api/v3](https://godocs.io/go.etcd.io/etcd/api/v3) +* [go.etcd.io/etcd/client/pkg/v3](https://godocs.io/go.etcd.io/etcd/client/pkg/v3) +* [go.etcd.io/etcd/client/v3](https://godocs.io/go.etcd.io/etcd/client/v3) +* [go.etcd.io/etcd/etcdctl/v3](https://godocs.io/go.etcd.io/etcd/etcdctl/v3) +* [go.etcd.io/etcd/pkg/v3](https://godocs.io/go.etcd.io/etcd/pkg/v3) +* [go.etcd.io/etcd/raft/v3](https://godocs.io/go.etcd.io/etcd/raft/v3) +* [go.etcd.io/etcd/server/v3](https://godocs.io/go.etcd.io/etcd/server/v3) + ## Maintainers [Maintainers](OWNERS) strive to shape an inclusive open source project culture where users are heard and contributors feel respected and empowered. Maintainers aim to build productive relationships across different companies and disciplines. Read more about [Maintainers role and responsibilities](Documentation/contributor-guide/community-membership.md#maintainers). From ab46188008ad3a632f9cbceb3ecb282857aa78d4 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 5 Jun 2025 12:00:50 -0700 Subject: [PATCH 0269/1068] Improve latest version log message Signed-off-by: Ivan Valdes --- scripts/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test.sh b/scripts/test.sh index eb112c9bb955..22b7eea5230b 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -592,7 +592,7 @@ function release_pass { UPGRADE_VER=$(git ls-remote --tags https://github.com/etcd-io/etcd.git \ | grep --only-matching --perl-regexp "(?<=v)${binary_major}.${previous_minor}.[\d]+?(?=[\^])" \ | sort --numeric-sort --key 1.5 | tail -1 | sed 's/^/v/') - log_callout "Found latest release: ${UPGRADE_VER}." + log_callout "Found previous minor version (v${binary_major}.${previous_minor}) latest release: ${UPGRADE_VER}." if [ -n "${MANUAL_VER:-}" ]; then # in case, we need to test against different version From abbe4d3c6e60a1dc914ea95b6beb90469686422a Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 5 Jun 2025 19:58:22 +0200 Subject: [PATCH 0270/1068] Introduce Result struct to represent ternary result: success, failure, unknown This allows to properly pass error message to antithesis assertion, and allows to avoid marking assertion success if the validation didn't run. Signed-off-by: Marek Siarkowicz --- .../test-template/robustness/finally/main.go | 25 +++-- tests/robustness/validate/operations.go | 78 ++++++--------- tests/robustness/validate/operations_test.go | 16 ++- tests/robustness/validate/result.go | 97 +++++++++++++++++++ tests/robustness/validate/validate.go | 44 ++------- tests/robustness/validate/validate_test.go | 12 +-- tests/robustness/validate/watch.go | 14 ++- 7 files changed, 174 insertions(+), 112 deletions(-) create mode 100644 tests/robustness/validate/result.go diff --git a/tests/antithesis/test-template/robustness/finally/main.go b/tests/antithesis/test-template/robustness/finally/main.go index 1f62adc30a01..499c1e1ad806 100644 --- a/tests/antithesis/test-template/robustness/finally/main.go +++ b/tests/antithesis/test-template/robustness/finally/main.go @@ -23,7 +23,6 @@ import ( "slices" "time" - "github.com/anishathalye/porcupine" "github.com/antithesishq/antithesis-sdk-go/assert" "go.uber.org/zap" @@ -58,20 +57,30 @@ func main() { } } -func validateReports(lg *zap.Logger, serversDataPath map[string]string, reports []report.ClientReport) validate.Result { +func validateReports(lg *zap.Logger, serversDataPath map[string]string, reports []report.ClientReport) validate.RobustnessResult { persistedRequests, err := report.PersistedRequests(lg, slices.Collect(maps.Values(serversDataPath))) - assert.Always(err == nil, "Loaded persisted requests", map[string]any{"error": err}) + assertResult(validate.ResultFromError(err), "Loaded persisted requests") validateConfig := validate.Config{ExpectRevisionUnique: traffic.EtcdPutDeleteLease.ExpectUniqueRevision()} result := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, persistedRequests, 5*time.Minute) - assert.Always(result.Assumptions == nil, "Validation assumptions fulfilled", map[string]any{"error": result.Assumptions}) - if result.Linearization.Linearizable == porcupine.Unknown { + assertResult(result.Assumptions, "Validation assumptions fulfilled") + if result.Linearization.Timeout { assert.Unreachable("Linearization timeout", nil) } else { - assert.Always(result.Linearization.Linearizable == porcupine.Ok, "Linearization validation passes", nil) + assertResult(result.Linearization.Result, "Linearization validation passes") } - assert.Always(result.WatchError == nil, "Watch validation passes", map[string]any{"error": result.WatchError}) - assert.Always(result.SerializableError == nil, "Serializable validation passes", map[string]any{"error": result.SerializableError}) + assertResult(result.Watch, "Watch validation passes") + assertResult(result.Serializable, "Serializable validation passes") lg.Info("Completed robustness validation") return result } + +func assertResult(result validate.Result, name string) { + switch result.Status { + case validate.Success, validate.Failure: + assert.Always(result.Status == validate.Success, name, map[string]any{"msg": result.Message}) + case validate.Unknown: + default: + assert.Unreachable(name, map[string]any{"msg": result.Message}) + } +} diff --git a/tests/robustness/validate/operations.go b/tests/robustness/validate/operations.go index 2d5597d5757a..79de6b48f6e3 100644 --- a/tests/robustness/validate/operations.go +++ b/tests/robustness/validate/operations.go @@ -16,7 +16,6 @@ package validate import ( "errors" - "fmt" "time" "github.com/anishathalye/porcupine" @@ -31,63 +30,46 @@ var ( errFutureRevRespRequested = errors.New("request about a future rev with response") ) -type Result struct { - Assumptions error - Linearization LinearizationResult - WatchError error - SerializableError error -} - -func (r Result) Error() error { - if r.Assumptions != nil { - return fmt.Errorf("validation assumptions failed: %w", r.Assumptions) +func validateLinearizableOperationsAndVisualize(lg *zap.Logger, operations []porcupine.Operation, timeout time.Duration) LinearizationResult { + lg.Info("Validating linearizable operations", zap.Duration("timeout", timeout)) + start := time.Now() + check, info := porcupine.CheckOperationsVerbose(model.NonDeterministicModel, operations, timeout) + result := LinearizationResult{ + Info: info, + Model: model.NonDeterministicModel, } - switch r.Linearization.Linearizable { - case porcupine.Illegal: - return errors.New("linearization failed") - case porcupine.Unknown: - return errors.New("linearization timed out") + switch check { case porcupine.Ok: + result.Status = Success + lg.Info("Linearization success", zap.Duration("duration", time.Since(start))) + case porcupine.Unknown: + result.Status = Failure + result.Message = "timed out" + result.Timeout = true + lg.Error("Linearization timed out", zap.Duration("duration", time.Since(start))) + case porcupine.Illegal: + result.Status = Failure + result.Message = "illegal" + lg.Error("Linearization illegal", zap.Duration("duration", time.Since(start))) default: - return fmt.Errorf("unknown linearization result %q", r.Linearization.Linearizable) - } - if r.WatchError != nil { - return fmt.Errorf("watch validation failed: %w", r.WatchError) - } - if r.SerializableError != nil { - return fmt.Errorf("serializable validation failed: %w", r.SerializableError) + result.Status = Failure + result.Message = "unknown" } - return nil -} - -type LinearizationResult struct { - Info porcupine.LinearizationInfo - Model porcupine.Model - Linearizable porcupine.CheckResult + return result } -func (r LinearizationResult) Visualize(lg *zap.Logger, path string) error { - lg.Info("Saving visualization", zap.String("path", path)) - err := porcupine.VisualizePath(r.Model, r.Info, path) +func validateSerializableOperations(lg *zap.Logger, operations []porcupine.Operation, replay *model.EtcdReplay) Result { + lg.Info("Validating serializable operations") + start := time.Now() + err := validateSerializableOperationsError(lg, operations, replay) if err != nil { - return fmt.Errorf("failed to visualize, err: %w", err) - } - return nil -} - -func validateLinearizableOperationsAndVisualize( - operations []porcupine.Operation, - timeout time.Duration, -) (results LinearizationResult) { - result, info := porcupine.CheckOperationsVerbose(model.NonDeterministicModel, operations, timeout) - return LinearizationResult{ - Info: info, - Model: model.NonDeterministicModel, - Linearizable: result, + lg.Error("Serializable validation failed", zap.Duration("duration", time.Since(start)), zap.Error(err)) } + lg.Info("Serializable validation success", zap.Duration("duration", time.Since(start))) + return ResultFromError(err) } -func validateSerializableOperations(lg *zap.Logger, operations []porcupine.Operation, replay *model.EtcdReplay) (lastErr error) { +func validateSerializableOperationsError(lg *zap.Logger, operations []porcupine.Operation, replay *model.EtcdReplay) (lastErr error) { for _, read := range operations { request := read.Input.(model.EtcdRequest) response := read.Output.(model.MaybeEtcdResponse) diff --git a/tests/robustness/validate/operations_test.go b/tests/robustness/validate/operations_test.go index d096be6f1c69..e5f8cbe28f39 100644 --- a/tests/robustness/validate/operations_test.go +++ b/tests/robustness/validate/operations_test.go @@ -241,13 +241,9 @@ func TestValidateSerializableOperations(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { replay := model.NewReplay(tc.persistedRequests) - err := validateSerializableOperations(zaptest.NewLogger(t), tc.operations, replay) - var errStr string - if err != nil { - errStr = err.Error() - } - if errStr != tc.expectError { - t.Errorf("validateSerializableOperations(...), got: %q, want: %q", err, tc.expectError) + result := validateSerializableOperations(zaptest.NewLogger(t), tc.operations, replay) + if result.Message != tc.expectError { + t.Errorf("validateSerializableOperations(...), got: %q, want: %q", result.Message, tc.expectError) } }) } @@ -395,9 +391,9 @@ func shuffleHistory(history []porcupine.Operation, shuffleCount int) [][]porcupi func validateShuffles(b *testing.B, lg *zap.Logger, shuffles [][]porcupine.Operation, duration time.Duration) { for i := 0; i < len(shuffles); i++ { - result := validateLinearizableOperationsAndVisualize(shuffles[i], duration) - if result.Linearizable != porcupine.Ok { - b.Fatalf("Not linearizable: %v", result.Linearizable) + result := validateLinearizableOperationsAndVisualize(lg, shuffles[i], duration) + if err := result.Error(); err != nil { + b.Fatalf("Not linearizable: %v", err) } } } diff --git a/tests/robustness/validate/result.go b/tests/robustness/validate/result.go new file mode 100644 index 000000000000..16d721c99e1a --- /dev/null +++ b/tests/robustness/validate/result.go @@ -0,0 +1,97 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package validate + +import ( + "errors" + "fmt" + + "github.com/anishathalye/porcupine" + "go.uber.org/zap" +) + +type RobustnessResult struct { + Assumptions Result + Linearization LinearizationResult + Watch Result + Serializable Result +} + +type Result struct { + Status ResultStatus + Message string +} + +type ResultStatus string + +var ( + Unknown ResultStatus + Success ResultStatus = "Success" + Failure ResultStatus = "Failure" +) + +func (r RobustnessResult) Error() error { + if err := r.Assumptions.Error(); err != nil { + return fmt.Errorf("assumptions: %w", err) + } + if err := r.Linearization.Error(); err != nil { + return fmt.Errorf("linearization: %w", err) + } + if err := r.Watch.Error(); err != nil { + return fmt.Errorf("watch: %w", err) + } + if err := r.Serializable.Error(); err != nil { + return fmt.Errorf("serializable: %w", err) + } + return nil +} + +func ResultFromError(err error) Result { + if err != nil { + return Result{ + Status: Failure, + Message: err.Error(), + } + } + return Result{ + Status: Success, + } +} + +func (r Result) Error() error { + if r.Status == Failure { + if r.Message != "" { + return errors.New(r.Message) + } + return errors.New("failure") + } + return nil +} + +type LinearizationResult struct { + Info porcupine.LinearizationInfo + Model porcupine.Model + Result + Timeout bool +} + +func (r LinearizationResult) Visualize(lg *zap.Logger, path string) error { + lg.Info("Saving visualization", zap.String("path", path)) + err := porcupine.VisualizePath(r.Model, r.Info, path) + if err != nil { + return fmt.Errorf("failed to visualize, err: %w", err) + } + return nil +} diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index 1b9ed77908bd..8d7492ae72ce 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -29,9 +29,9 @@ import ( var ErrNotEmptyDatabase = errors.New("non empty database at start, required by model used for linearizability validation") -func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.ClientReport, persistedRequests []model.EtcdRequest, timeout time.Duration) (result Result) { - result.Assumptions = checkValidationAssumptions(reports) - if result.Assumptions != nil { +func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.ClientReport, persistedRequests []model.EtcdRequest, timeout time.Duration) (result RobustnessResult) { + result.Assumptions = ResultFromError(checkValidationAssumptions(reports)) + if result.Assumptions.Error() != nil { return result } linearizableOperations, serializableOperations := prepareAndCategorizeOperations(reports) @@ -42,22 +42,9 @@ func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.Cli linearizableOperations = patchLinearizableOperations(linearizableOperations, reports, persistedRequests) } - lg.Info("Validating linearizable operations", zap.Duration("timeout", timeout)) - start := time.Now() - result.Linearization = validateLinearizableOperationsAndVisualize(linearizableOperations, timeout) - switch result.Linearization.Linearizable { - case porcupine.Illegal: - lg.Error("Linearization failed", zap.Duration("duration", time.Since(start))) - case porcupine.Unknown: - lg.Error("Linearization has timed out", zap.Duration("duration", time.Since(start))) - case porcupine.Ok: - lg.Info("Linearization success", zap.Duration("duration", time.Since(start))) - default: - panic(fmt.Sprintf("Unknown Linearization result %s", result.Linearization.Linearizable)) - } - + result.Linearization = validateLinearizableOperationsAndVisualize(lg, linearizableOperations, timeout) // Skip other validations if model is not linearizable, as they are expected to fail too and obfuscate the logs. - if result.Linearization.Linearizable != porcupine.Ok { + if result.Linearization.Error() != nil { lg.Info("Skipping other validations as linearization failed") return result } @@ -66,25 +53,8 @@ func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.Cli return result } replay := model.NewReplay(persistedRequests) - - lg.Info("Validating watch") - start = time.Now() - result.WatchError = validateWatch(lg, cfg, reports, replay) - if result.WatchError == nil { - lg.Info("Watch validation success", zap.Duration("duration", time.Since(start))) - } else { - lg.Error("Watch validation failed", zap.Duration("duration", time.Since(start)), zap.Error(result.WatchError)) - } - - lg.Info("Validating serializable operations") - start = time.Now() - result.SerializableError = validateSerializableOperations(lg, serializableOperations, replay) - if result.SerializableError == nil { - lg.Info("Serializable validation success", zap.Duration("duration", time.Since(start))) - } else { - lg.Error("Serializable validation failed", zap.Duration("duration", time.Since(start)), zap.Error(result.SerializableError)) - } - + result.Watch = validateWatch(lg, cfg, reports, replay) + result.Serializable = validateSerializableOperations(lg, serializableOperations, replay) return result } diff --git a/tests/robustness/validate/validate_test.go b/tests/robustness/validate/validate_test.go index 22ff3509ac1e..70b15959029b 100644 --- a/tests/robustness/validate/validate_test.go +++ b/tests/robustness/validate/validate_test.go @@ -169,7 +169,7 @@ func TestValidateAndReturnVisualize(t *testing.T) { }, }, persistedRequests: []model.EtcdRequest{putRequest("key", "value")}, - expectError: "watch validation failed", + expectError: "watch: broke Reliable", }, } for _, tc := range tcs { @@ -1978,13 +1978,9 @@ func TestValidateWatch(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { replay := model.NewReplay(tc.persistedRequests) - err := validateWatch(zaptest.NewLogger(t), tc.config, tc.reports, replay) - var errStr string - if err != nil { - errStr = err.Error() - } - if errStr != tc.expectError { - t.Errorf("validateWatch(...), got: %q, want: %q", err, tc.expectError) + result := validateWatch(zaptest.NewLogger(t), tc.config, tc.reports, replay) + if result.Message != tc.expectError { + t.Errorf("validateWatch(...), got: %q, want: %q", result.Message, tc.expectError) } }) } diff --git a/tests/robustness/validate/watch.go b/tests/robustness/validate/watch.go index bba43c66eb19..5f8e8b77cb85 100644 --- a/tests/robustness/validate/watch.go +++ b/tests/robustness/validate/watch.go @@ -16,6 +16,7 @@ package validate import ( "errors" + "time" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" @@ -37,7 +38,18 @@ var ( errBrokeFilter = errors.New("event not matching watch filter") ) -func validateWatch(lg *zap.Logger, cfg Config, reports []report.ClientReport, replay *model.EtcdReplay) error { +func validateWatch(lg *zap.Logger, cfg Config, reports []report.ClientReport, replay *model.EtcdReplay) Result { + lg.Info("Validating watch") + start := time.Now() + err := validateWatchError(lg, cfg, reports, replay) + if err != nil { + lg.Error("Watch validation failed", zap.Duration("duration", time.Since(start)), zap.Error(err)) + } + lg.Info("Watch validation success", zap.Duration("duration", time.Since(start))) + return ResultFromError(err) +} + +func validateWatchError(lg *zap.Logger, cfg Config, reports []report.ClientReport, replay *model.EtcdReplay) error { // Validate etcd watch properties defined in https://etcd.io/docs/v3.6/learning/api_guarantees/#watch-apis for _, r := range reports { err := validateFilter(lg, r) From e79ee3d0e972380edc024bed9b68adfbca9fae24 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 6 Jun 2025 10:47:55 +0200 Subject: [PATCH 0271/1068] Ignore leases from failed requests greatly reducing linearization search space Signed-off-by: Marek Siarkowicz --- tests/robustness/model/deterministic.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/robustness/model/deterministic.go b/tests/robustness/model/deterministic.go index 70aaa581959b..6efc700c1ac1 100644 --- a/tests/robustness/model/deterministic.go +++ b/tests/robustness/model/deterministic.go @@ -200,6 +200,10 @@ func (s EtcdState) Step(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { } return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Failure: failure, Results: opResp}, Revision: newState.Revision}} case LeaseGrant: + // Empty LeaseID means the request failed and client didn't get response. Ignore it as client cannot use lease without knowing its id. + if request.LeaseGrant.LeaseID == 0 { + return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Revision: newState.Revision, LeaseGrant: &LeaseGrantReponse{}}} + } lease := EtcdLease{ LeaseID: request.LeaseGrant.LeaseID, Keys: map[string]struct{}{}, From 21f820c342bc48efafec06eda1fceefff6fc63be Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 6 Jun 2025 10:42:38 +0200 Subject: [PATCH 0272/1068] Describe should sort and truncate after 3 to avoid huge files Signed-off-by: Marek Siarkowicz --- tests/robustness/model/describe.go | 42 ++++++++++++++------- tests/robustness/model/non_deterministic.go | 18 ++++++++- 2 files changed, 45 insertions(+), 15 deletions(-) diff --git a/tests/robustness/model/describe.go b/tests/robustness/model/describe.go index 3d73257f6ed6..6696334f2516 100644 --- a/tests/robustness/model/describe.go +++ b/tests/robustness/model/describe.go @@ -16,6 +16,9 @@ package model import ( "fmt" + "maps" + "slices" + "sort" "strings" clientv3 "go.etcd.io/etcd/client/v3" @@ -85,31 +88,44 @@ func describeEtcdRequest(request EtcdRequest) string { func describeEtcdState(state EtcdState) string { descHTML := make([]string, 0) - descHTML = append(descHTML, fmt.Sprintf("

Revision: %d, CompactRevision: %d

", state.Revision, state.CompactRevision)) + descHTML = append(descHTML, fmt.Sprintf("

state, rev: %d, compactRev: %d

", state.Revision, state.CompactRevision)) if len(state.KeyValues) > 0 { - descHTML = append(descHTML, "
    ") + descHTML = append(descHTML, "keys:
      ") - for k, v := range state.KeyValues { - keyValDesc := make([]string, 0) + keys := slices.Collect(maps.Keys(state.KeyValues)) + sort.Strings(keys) + for _, key := range keys { + descHTML = append(descHTML, fmt.Sprintf("
    • %s - ", key)) - keyValDesc = append(keyValDesc, fmt.Sprintf("
    • %s: ", k)) - - if v.Value.Value != "" { - keyValDesc = append(keyValDesc, fmt.Sprintf("Value: %q, ", v.Value.Value)) + value := state.KeyValues[key] + if value.Value.Value != "" { + descHTML = append(descHTML, fmt.Sprintf("val: %q, ", value.Value.Value)) } - if v.Value.Hash != 0 { - keyValDesc = append(keyValDesc, fmt.Sprintf("Hash: %d, ", v.Value.Hash)) + if value.Value.Hash != 0 { + descHTML = append(descHTML, fmt.Sprintf("hash: %d, ", value.Value.Hash)) + } + lease := state.KeyLeases[key] + if lease != 0 { + descHTML = append(descHTML, fmt.Sprintf("lease: %d, ", lease)) } - keyValDesc = append(keyValDesc, fmt.Sprintf("ModRevision: %d, Version: %d
    • ", v.ModRevision, v.Version)) - - descHTML = append(descHTML, strings.Join(keyValDesc, "")) + descHTML = append(descHTML, fmt.Sprintf("mod: %d, ver: %d", value.ModRevision, value.Version)) } descHTML = append(descHTML, "
    ") } + if len(state.Leases) > 0 { + descHTML = append(descHTML, "leases:
      ") + leases := slices.Collect(maps.Keys(state.Leases)) + slices.Sort(leases) + for _, lease := range leases { + descHTML = append(descHTML, fmt.Sprintf("
    • %d
    • ", lease)) + } + descHTML = append(descHTML, "
    ") + } + return strings.Join(descHTML, "") } diff --git a/tests/robustness/model/non_deterministic.go b/tests/robustness/model/non_deterministic.go index 68e18002ca73..b9516342c4f7 100644 --- a/tests/robustness/model/non_deterministic.go +++ b/tests/robustness/model/non_deterministic.go @@ -15,8 +15,10 @@ package model import ( + "cmp" "fmt" "reflect" + "slices" "strings" "github.com/anishathalye/porcupine" @@ -41,9 +43,21 @@ var NonDeterministicModel = porcupine.Model{ }, DescribeState: func(st any) string { etcdStates := st.(nonDeterministicState) - desc := make([]string, len(etcdStates)) + desc := make([]string, 0, len(etcdStates)) - for _, s := range etcdStates { + slices.SortFunc(etcdStates, func(i, j EtcdState) int { + if c := cmp.Compare(i.Revision, j.Revision); c != 0 { + return c + } + return cmp.Compare(i.CompactRevision, j.CompactRevision) + }) + + for i, s := range etcdStates { + // Describe just 3 first states before truncating + if i >= 3 { + desc = append(desc, "...truncated...") + break + } desc = append(desc, describeEtcdState(s)) } From 976e98f6b6a45b4391d1dbbdfd1628e8fc627bbd Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 10 Jun 2025 11:34:40 +0200 Subject: [PATCH 0273/1068] Fix handling defrag in antithesis tests Signed-off-by: Marek Siarkowicz --- tests/robustness/model/describe.go | 7 ++----- tests/robustness/model/describe_test.go | 4 ++-- tests/robustness/model/deterministic.go | 11 +++++++---- tests/robustness/model/deterministic_test.go | 18 +++++++++--------- tests/robustness/model/history.go | 18 ++++++------------ tests/robustness/validate/patch_history.go | 1 + 6 files changed, 27 insertions(+), 32 deletions(-) diff --git a/tests/robustness/model/describe.go b/tests/robustness/model/describe.go index 6696334f2516..1ffdc563f26a 100644 --- a/tests/robustness/model/describe.go +++ b/tests/robustness/model/describe.go @@ -42,12 +42,9 @@ func describeEtcdResponse(request EtcdRequest, response MaybeEtcdResponse) strin return fmt.Sprintf("%s, rev: %d", describeRangeResponse(request.Range.RangeOptions, *response.Range), response.Revision) case Txn: return fmt.Sprintf("%s, rev: %d", describeTxnResponse(request.Txn, response.Txn), response.Revision) - case LeaseGrant, LeaseRevoke, Defragment: - if response.Revision == 0 { - return "ok" - } + case LeaseGrant, LeaseRevoke: return fmt.Sprintf("ok, rev: %d", response.Revision) - case Compact: + case Compact, Defragment: return "ok" default: return fmt.Sprintf("", request.Type) diff --git a/tests/robustness/model/describe_test.go b/tests/robustness/model/describe_test.go index 8ef2439ad8d7..c86a1fa5272d 100644 --- a/tests/robustness/model/describe_test.go +++ b/tests/robustness/model/describe_test.go @@ -126,8 +126,8 @@ func TestModelDescribe(t *testing.T) { }, { req: defragmentRequest(), - resp: defragmentResponse(10), - expectDescribe: `defragment() -> ok, rev: 10`, + resp: defragmentResponse(), + expectDescribe: `defragment() -> ok`, }, { req: listRequest("key11", 0), diff --git a/tests/robustness/model/deterministic.go b/tests/robustness/model/deterministic.go index 6efc700c1ac1..287f9a1ffb6a 100644 --- a/tests/robustness/model/deterministic.go +++ b/tests/robustness/model/deterministic.go @@ -29,6 +29,11 @@ import ( "go.etcd.io/etcd/server/v3/storage/mvcc" ) +// RevisionForNonLinearizableResponse is a fake revision value used to +// separate responses for requests that are not linearizable, +// thus we need to ignore it in model when checking linearization. +const RevisionForNonLinearizableResponse = -1 + // DeterministicModel assumes a deterministic execution of etcd requests. All // requests that client called were executed and persisted by etcd. This // assumption is good for simulating etcd behavior (aka writing a fake), but not @@ -230,15 +235,13 @@ func (s EtcdState) Step(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { } return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Revision: newState.Revision, LeaseRevoke: &LeaseRevokeResponse{}}} case Defragment: - return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Defragment: &DefragmentResponse{}, Revision: newState.Revision}} + return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Defragment: &DefragmentResponse{}, Revision: RevisionForNonLinearizableResponse}} case Compact: if request.Compact.Revision <= newState.CompactRevision { return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{ClientError: mvcc.ErrCompacted.Error()}} } newState.CompactRevision = request.Compact.Revision - // Set fake revision as compaction returns non-linearizable revision. - // TODO: Model non-linearizable response revision in model. - return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Compact: &CompactResponse{}, Revision: -1}} + return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Compact: &CompactResponse{}, Revision: RevisionForNonLinearizableResponse}} default: panic(fmt.Sprintf("Unknown request type: %v", request.Type)) } diff --git a/tests/robustness/model/deterministic_test.go b/tests/robustness/model/deterministic_test.go index 6e75126239db..ea7980c7d56b 100644 --- a/tests/robustness/model/deterministic_test.go +++ b/tests/robustness/model/deterministic_test.go @@ -381,27 +381,27 @@ var commonTestScenarios = []modelTestCase{ {req: getRequest("key"), resp: getResponse("key", "4", 4, 4)}, {req: compareRevisionAndPutRequest("key", 4, "5"), resp: compareRevisionAndPutResponse(true, 5)}, {req: deleteRequest("key"), resp: deleteResponse(1, 6)}, - {req: defragmentRequest(), resp: defragmentResponse(6)}, + {req: defragmentRequest(), resp: defragmentResponse()}, }, }, { name: "Defragment success between all other request types", operations: []testOperation{ - {req: defragmentRequest(), resp: defragmentResponse(1)}, + {req: defragmentRequest(), resp: defragmentResponse()}, {req: leaseGrantRequest(1), resp: leaseGrantResponse(1)}, - {req: defragmentRequest(), resp: defragmentResponse(1)}, + {req: defragmentRequest(), resp: defragmentResponse()}, {req: putWithLeaseRequest("key", "1", 1), resp: putResponse(2)}, - {req: defragmentRequest(), resp: defragmentResponse(2)}, + {req: defragmentRequest(), resp: defragmentResponse()}, {req: leaseRevokeRequest(1), resp: leaseRevokeResponse(3)}, - {req: defragmentRequest(), resp: defragmentResponse(3)}, + {req: defragmentRequest(), resp: defragmentResponse()}, {req: putRequest("key", "4"), resp: putResponse(4)}, - {req: defragmentRequest(), resp: defragmentResponse(4)}, + {req: defragmentRequest(), resp: defragmentResponse()}, {req: getRequest("key"), resp: getResponse("key", "4", 4, 4)}, - {req: defragmentRequest(), resp: defragmentResponse(4)}, + {req: defragmentRequest(), resp: defragmentResponse()}, {req: compareRevisionAndPutRequest("key", 4, "5"), resp: compareRevisionAndPutResponse(true, 5)}, - {req: defragmentRequest(), resp: defragmentResponse(5)}, + {req: defragmentRequest(), resp: defragmentResponse()}, {req: deleteRequest("key"), resp: deleteResponse(1, 6)}, - {req: defragmentRequest(), resp: defragmentResponse(6)}, + {req: defragmentRequest(), resp: defragmentResponse()}, }, }, } diff --git a/tests/robustness/model/history.go b/tests/robustness/model/history.go index f6119984f5e6..e6735bca995e 100644 --- a/tests/robustness/model/history.go +++ b/tests/robustness/model/history.go @@ -259,11 +259,7 @@ func (h *AppendableHistory) AppendDefragment(start, end time.Duration, resp *cli h.appendFailed(request, start, end, err) return } - var revision int64 - if resp != nil && resp.Header != nil { - revision = resp.Header.Revision - } - h.appendSuccessful(request, start, end, defragmentResponse(revision)) + h.appendSuccessful(request, start, end, defragmentResponse()) } func (h *AppendableHistory) AppendCompact(rev int64, start, end time.Duration, resp *clientv3.CompactResponse, err error) { @@ -278,9 +274,7 @@ func (h *AppendableHistory) AppendCompact(rev int64, start, end time.Duration, r h.appendFailed(request, start, end, err) return } - // Set fake revision as compaction returns non-linearizable revision. - // TODO: Model non-linearizable response revision in model. - h.appendSuccessful(request, start, end, compactResponse(-1)) + h.appendSuccessful(request, start, end, compactResponse()) } func (h *AppendableHistory) appendFailed(request EtcdRequest, start, end time.Duration, err error) { @@ -469,16 +463,16 @@ func defragmentRequest() EtcdRequest { return EtcdRequest{Type: Defragment, Defragment: &DefragmentRequest{}} } -func defragmentResponse(revision int64) MaybeEtcdResponse { - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Defragment: &DefragmentResponse{}, Revision: revision}} +func defragmentResponse() MaybeEtcdResponse { + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Defragment: &DefragmentResponse{}, Revision: RevisionForNonLinearizableResponse}} } func compactRequest(rev int64) EtcdRequest { return EtcdRequest{Type: Compact, Compact: &CompactRequest{Revision: rev}} } -func compactResponse(revision int64) MaybeEtcdResponse { - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Compact: &CompactResponse{}, Revision: revision}} +func compactResponse() MaybeEtcdResponse { + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Compact: &CompactResponse{}, Revision: RevisionForNonLinearizableResponse}} } type History struct { diff --git a/tests/robustness/validate/patch_history.go b/tests/robustness/validate/patch_history.go index da75212b83e2..ac5df56c2d62 100644 --- a/tests/robustness/validate/patch_history.go +++ b/tests/robustness/validate/patch_history.go @@ -164,6 +164,7 @@ func uniquePutReturnTime(allOperations []porcupine.Operation, persistedRequests case model.LeaseGrant: case model.LeaseRevoke: case model.Compact: + case model.Defragment: default: panic(fmt.Sprintf("Unknown request type: %q", request.Type)) } From 8e4ef4a772c94dcae87e8ca3b4103bd922369529 Mon Sep 17 00:00:00 2001 From: varunu28 Date: Sat, 7 Jun 2025 08:57:33 -0700 Subject: [PATCH 0274/1068] client: Cleanup unnecessary null check from watcher Signed-off-by: varunu28 --- client/v3/watch.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/v3/watch.go b/client/v3/watch.go index a46f98b8e287..335aa3a35991 100644 --- a/client/v3/watch.go +++ b/client/v3/watch.go @@ -580,7 +580,7 @@ func (w *watchGRPCStream) run() { case pbresp := <-w.respc: if cur == nil || pbresp.Created || pbresp.Canceled { cur = pbresp - } else if cur != nil && cur.WatchId == pbresp.WatchId { + } else if cur.WatchId == pbresp.WatchId { // merge new events cur.Events = append(cur.Events, pbresp.Events...) // update "Fragment" field; last response with "Fragment" == false From de9041f9496a0d60a2879b5b8f86771f49b2db9d Mon Sep 17 00:00:00 2001 From: Nont Date: Sat, 7 Jun 2025 22:38:56 -0500 Subject: [PATCH 0275/1068] Add defragment support Signed-off-by: Nont --- .../test-template/robustness/traffic/main.go | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 4a68b5ee63d4..2888e4932621 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -131,7 +131,6 @@ func simulateTraffic(ctx context.Context, hosts []string, ids identity.Provider, keyStore := traffic.NewKeyStore(10, "key") for i := 0; i < profile.ClientCount; i++ { c := connect([]string{hosts[i%len(hosts)]}, ids, baseTime) - defer c.Close() wg.Add(1) go func(c *client.RecordingClient) { defer wg.Done() @@ -159,10 +158,44 @@ func simulateTraffic(ctx context.Context, hosts []string, ids identity.Provider, reports = append(reports, c.Report()) mux.Unlock() }(compactClient) + defragPeriod := traffic.DefaultCompactionPeriod * time.Duration(len(hosts)) + for _, h := range hosts { + c := connect([]string{h}, ids, baseTime) + wg.Add(1) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + runDefragLoop(ctx, c, defragPeriod, finish) + mux.Lock() + reports = append(reports, c.Report()) + mux.Unlock() + }(c) + } wg.Wait() return reports } +func runDefragLoop(ctx context.Context, c *client.RecordingClient, period time.Duration, finish <-chan struct{}) { + jittered := time.Duration(robustnessrand.RandRange(int64(period-period/2), int64(period+period/2))) + ticker := time.NewTicker(jittered) + defer ticker.Stop() + for { + select { + case <-ctx.Done(): + return + case <-finish: + return + case <-ticker.C: + } + dctx, cancel := context.WithTimeout(ctx, traffic.RequestTimeout) + _, err := c.Defragment(dctx) + cancel() + if err != nil { + continue + } + } +} + func connect(endpoints []string, ids identity.Provider, baseTime time.Time) *client.RecordingClient { cli, err := client.NewRecordingClient(endpoints, ids, baseTime) if err != nil { From 6b3d0d3a5c8b325803f26e196c5d391acd0e041c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 17:38:28 +0000 Subject: [PATCH 0276/1068] build(deps): bump github/codeql-action from 3.28.18 to 3.28.19 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.18 to 3.28.19. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/ff0a06e83cb2de871e5a09832bc6a81e7276941f...fca7ace96b7d713c7035871441bd52efbe39e27e) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.28.19 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 4dc86ea59f65..72d102b508ce 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 + uses: github/codeql-action/init@fca7ace96b7d713c7035871441bd52efbe39e27e # v3.28.19 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 + uses: github/codeql-action/autobuild@fca7ace96b7d713c7035871441bd52efbe39e27e # v3.28.19 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 + uses: github/codeql-action/analyze@fca7ace96b7d713c7035871441bd52efbe39e27e # v3.28.19 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 51dc3c19c890..7b079024fd3d 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 + uses: github/codeql-action/upload-sarif@fca7ace96b7d713c7035871441bd52efbe39e27e # v3.28.19 with: sarif_file: results.sarif From d72abe7d062791bd880881eee2993571dcd8efa8 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 10 Jun 2025 14:27:17 +0530 Subject: [PATCH 0277/1068] dependency: bump golang.org/x/crypto from 0.38.0 to 0.39.0 This commit will bump golang.org/x/crypto from 0.38.0 to 0.39.0 Also bumps golang.org/x/text from 0.25.0 to 0.26.0 as a dependent of golang.org/x/crypto Signed-off-by: ArkaSaha30 --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 12 ++++++------ go.mod | 4 ++-- go.sum | 12 ++++++------ pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 4 ++-- server/go.sum | 12 ++++++------ tests/go.mod | 6 +++--- tests/go.sum | 12 ++++++------ tools/mod/go.mod | 8 ++++---- tools/mod/go.sum | 16 ++++++++-------- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 22 files changed, 63 insertions(+), 63 deletions(-) diff --git a/api/go.mod b/api/go.mod index 3f2af94c4424..23e711dcea5d 100644 --- a/api/go.mod +++ b/api/go.mod @@ -23,7 +23,7 @@ require ( go.opentelemetry.io/otel/sdk v1.36.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index beb63c939975..f07da5674a17 100644 --- a/api/go.sum +++ b/api/go.sum @@ -63,8 +63,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/client/v3/go.mod b/client/v3/go.mod index 5ad486a7bf3f..9d15484723bd 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -36,7 +36,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 0308960c6447..06da00075daa 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -97,8 +97,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 221f48710b9c..12c17ef50391 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -41,7 +41,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 73eaf538af1c..24fa7c0a167a 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -124,8 +124,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 715cb598fc7d..77c2c965a29f 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -84,10 +84,10 @@ require ( go.opentelemetry.io/otel/trace v1.36.0 // indirect go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.38.0 // indirect + golang.org/x/crypto v0.39.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect golang.org/x/time v0.11.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 4b934709a706..f4f9dc8927e9 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -142,8 +142,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -156,8 +156,8 @@ golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -167,8 +167,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index 260dab18477b..b95f328ffdf8 100644 --- a/go.mod +++ b/go.mod @@ -91,10 +91,10 @@ require ( go.opentelemetry.io/otel/trace v1.36.0 // indirect go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.38.0 // indirect + golang.org/x/crypto v0.39.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index a938b249366a..4d2ef2deea13 100644 --- a/go.sum +++ b/go.sum @@ -184,8 +184,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -209,8 +209,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -222,8 +222,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/pkg/go.mod b/pkg/go.mod index b32911b2e4a4..aa879eb2cba6 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -26,7 +26,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 090442f9f05b..3d42b46f21b1 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -57,8 +57,8 @@ golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= diff --git a/server/go.mod b/server/go.mod index 386a1c2ead2e..5e3cb4f5a0c4 100644 --- a/server/go.mod +++ b/server/go.mod @@ -36,7 +36,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 go.opentelemetry.io/otel/sdk v1.36.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.38.0 + golang.org/x/crypto v0.39.0 golang.org/x/net v0.40.0 golang.org/x/time v0.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a @@ -71,7 +71,7 @@ require ( go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index 801a63518d16..a5236ed09362 100644 --- a/server/go.sum +++ b/server/go.sum @@ -159,8 +159,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -184,8 +184,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -196,8 +196,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index 3f1f56a4e635..841618755eab 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -45,8 +45,8 @@ require ( go.opentelemetry.io/otel/trace v1.36.0 go.opentelemetry.io/proto/otlp v1.7.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.38.0 - golang.org/x/sync v0.14.0 + golang.org/x/crypto v0.39.0 + golang.org/x/sync v0.15.0 golang.org/x/time v0.11.0 google.golang.org/grpc v1.72.2 google.golang.org/protobuf v1.36.6 @@ -96,7 +96,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index d8257126c420..ad78a2da11ab 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -190,8 +190,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -215,8 +215,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -228,8 +228,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 97820e460afe..bffc5210e786 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -213,15 +213,15 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.38.0 // indirect + golang.org/x/crypto v0.39.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect - golang.org/x/mod v0.24.0 // indirect + golang.org/x/mod v0.25.0 // indirect golang.org/x/net v0.40.0 // indirect - golang.org/x/sync v0.14.0 // indirect + golang.org/x/sync v0.15.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect golang.org/x/tools v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index eee6d4c1914b..ba69354f02bf 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -540,8 +540,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -559,8 +559,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -594,8 +594,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -656,8 +656,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 70d03fdc3235..641bf1a0c907 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -22,5 +22,5 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/image v0.18.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 3256affc31b9..a94e9aba2c02 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -53,8 +53,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 3abca6e9d836..077e65cea437 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -20,7 +20,7 @@ require ( go.opentelemetry.io/otel/sdk v1.36.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/grpc v1.72.2 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index a5b6aeae474d..09dee8ce025b 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1516,8 +1516,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 73d58a072cfcc927f91d7f89115758fbdca4b43f Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 10 Jun 2025 14:59:14 +0530 Subject: [PATCH 0278/1068] dependency: bump golang.org/x/time from 0.11.0 to 0.12.0 This commit will bump golang.org/x/time from 0.11.0 to 0.12.0 Signed-off-by: ArkaSaha30 --- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 12c17ef50391..a984fb375bb2 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -17,7 +17,7 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - golang.org/x/time v0.11.0 + golang.org/x/time v0.12.0 google.golang.org/grpc v1.72.2 ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 24fa7c0a167a..09cfd040d253 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -126,8 +126,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= -golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= -golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 77c2c965a29f..d47a4733dff8 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -88,7 +88,7 @@ require ( golang.org/x/net v0.40.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect - golang.org/x/time v0.11.0 // indirect + golang.org/x/time v0.12.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/grpc v1.72.2 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index f4f9dc8927e9..5a472ec1cc1b 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -169,8 +169,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= -golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= -golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/go.mod b/go.mod index b95f328ffdf8..06fcf3bfac2d 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( go.etcd.io/etcd/tests/v3 v3.0.0-00010101000000-000000000000 go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 - golang.org/x/time v0.11.0 + golang.org/x/time v0.12.0 google.golang.org/grpc v1.72.2 google.golang.org/protobuf v1.36.6 ) diff --git a/go.sum b/go.sum index 4d2ef2deea13..9cb2982b5d7b 100644 --- a/go.sum +++ b/go.sum @@ -224,8 +224,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= -golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= -golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= diff --git a/server/go.mod b/server/go.mod index 5e3cb4f5a0c4..f195998cbfe6 100644 --- a/server/go.mod +++ b/server/go.mod @@ -38,7 +38,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/crypto v0.39.0 golang.org/x/net v0.40.0 - golang.org/x/time v0.11.0 + golang.org/x/time v0.12.0 google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a google.golang.org/grpc v1.72.2 google.golang.org/protobuf v1.36.6 diff --git a/server/go.sum b/server/go.sum index a5236ed09362..fac7387ea6ff 100644 --- a/server/go.sum +++ b/server/go.sum @@ -198,8 +198,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= -golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= -golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= diff --git a/tests/go.mod b/tests/go.mod index 841618755eab..968c5d1c3489 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -47,7 +47,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/crypto v0.39.0 golang.org/x/sync v0.15.0 - golang.org/x/time v0.11.0 + golang.org/x/time v0.12.0 google.golang.org/grpc v1.72.2 google.golang.org/protobuf v1.36.6 ) diff --git a/tests/go.sum b/tests/go.sum index ad78a2da11ab..6618ceb04aaa 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -230,8 +230,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= -golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= -golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= From 30f207ed8a00740ad51145f1c8bd8c3943aeb771 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 10 Jun 2025 15:38:11 +0530 Subject: [PATCH 0279/1068] dependency: bump google.golang.org/grpc from 1.72.2 to 1.73.0 This commit will bump google.golang.org/grpc from 1.72.2 to 1.73.0 Signed-off-by: ArkaSaha30 --- api/go.mod | 2 +- api/go.sum | 8 ++++---- client/v3/go.mod | 2 +- client/v3/go.sum | 8 ++++---- etcdctl/go.mod | 2 +- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 2 +- etcdutl/go.sum | 8 ++++---- go.mod | 2 +- go.sum | 8 ++++---- pkg/go.mod | 3 +-- pkg/go.sum | 8 ++++---- server/go.mod | 2 +- server/go.sum | 8 ++++---- tests/go.mod | 2 +- tests/go.sum | 8 ++++---- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 3 +-- tools/testgrid-analysis/go.sum | 8 ++++---- 20 files changed, 48 insertions(+), 50 deletions(-) diff --git a/api/go.mod b/api/go.mod index 23e711dcea5d..66ff93ed782b 100644 --- a/api/go.mod +++ b/api/go.mod @@ -11,7 +11,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 github.com/stretchr/testify v1.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a - google.golang.org/grpc v1.72.2 + google.golang.org/grpc v1.73.0 google.golang.org/protobuf v1.36.6 ) diff --git a/api/go.sum b/api/go.sum index f07da5674a17..2b326de677fc 100644 --- a/api/go.sum +++ b/api/go.sum @@ -38,8 +38,8 @@ go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCRE go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= -go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -77,8 +77,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1: google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index 9d15484723bd..bae7a374a79a 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.72.2 + google.golang.org/grpc v1.73.0 sigs.k8s.io/yaml v1.4.0 ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 06da00075daa..9c96a521e700 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -66,8 +66,8 @@ go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCRE go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= -go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -111,8 +111,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1: google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index a984fb375bb2..aaabb68ebc5e 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.12.0 - google.golang.org/grpc v1.72.2 + google.golang.org/grpc v1.73.0 ) require ( diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 09cfd040d253..e5729005d1cd 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -92,8 +92,8 @@ go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCRE go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= -go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -140,8 +140,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1: google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index d47a4733dff8..d954dd9d4738 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -91,7 +91,7 @@ require ( golang.org/x/time v0.12.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect - google.golang.org/grpc v1.72.2 // indirect + google.golang.org/grpc v1.73.0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 5a472ec1cc1b..fc95873ca533 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -127,8 +127,8 @@ go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCRE go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= -go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= @@ -183,8 +183,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1: google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index 06fcf3bfac2d..0adf4c0cd141 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.12.0 - google.golang.org/grpc v1.72.2 + google.golang.org/grpc v1.73.0 google.golang.org/protobuf v1.36.6 ) diff --git a/go.sum b/go.sum index 9cb2982b5d7b..260d836f0161 100644 --- a/go.sum +++ b/go.sum @@ -166,8 +166,8 @@ go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCRE go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= -go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= @@ -252,8 +252,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/go.mod b/pkg/go.mod index aa879eb2cba6..e21cd76779bf 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -12,13 +12,12 @@ require ( github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.72.2 + google.golang.org/grpc v1.73.0 ) require ( github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/google/go-cmp v0.7.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.opentelemetry.io/otel v1.36.0 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 3d42b46f21b1..03859c6ff8be 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -43,8 +43,8 @@ go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCRE go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= -go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -61,8 +61,8 @@ golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index f195998cbfe6..b14cf9057090 100644 --- a/server/go.mod +++ b/server/go.mod @@ -40,7 +40,7 @@ require ( golang.org/x/net v0.40.0 golang.org/x/time v0.12.0 google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a - google.golang.org/grpc v1.72.2 + google.golang.org/grpc v1.73.0 google.golang.org/protobuf v1.36.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.4.0 diff --git a/server/go.sum b/server/go.sum index fac7387ea6ff..610c1bc35307 100644 --- a/server/go.sum +++ b/server/go.sum @@ -141,8 +141,8 @@ go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCRE go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= -go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= @@ -226,8 +226,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index 968c5d1c3489..3a4f9ec20d74 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -48,7 +48,7 @@ require ( golang.org/x/crypto v0.39.0 golang.org/x/sync v0.15.0 golang.org/x/time v0.12.0 - google.golang.org/grpc v1.72.2 + google.golang.org/grpc v1.73.0 google.golang.org/protobuf v1.36.6 ) diff --git a/tests/go.sum b/tests/go.sum index 6618ceb04aaa..c7202f744610 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -172,8 +172,8 @@ go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCRE go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= -go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= @@ -258,8 +258,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index bffc5210e786..3bd9a5109580 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -225,7 +225,7 @@ require ( golang.org/x/tools v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect - google.golang.org/grpc v1.72.2 // indirect + google.golang.org/grpc v1.73.0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index ba69354f02bf..6373e9c38b3d 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -689,8 +689,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1: google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 077e65cea437..6141371f68c4 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -12,7 +12,6 @@ require ( ) require ( - github.com/google/go-cmp v0.7.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.6 // indirect @@ -22,5 +21,5 @@ require ( golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect - google.golang.org/grpc v1.72.2 // indirect + google.golang.org/grpc v1.73.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 09dee8ce025b..42cb9125d903 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1186,8 +1186,8 @@ go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCRE go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= -go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -1888,8 +1888,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From d32a31f9d0a5f072f40e178092c094bd3e31d737 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 10 Jun 2025 15:09:02 +0100 Subject: [PATCH 0280/1068] Bump bbolt to v1.4.1 Signed-off-by: Benjamin Wang --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 715cb598fc7d..4c9606d9ccfc 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -26,7 +26,7 @@ require ( github.com/olekukonko/tablewriter v1.0.7 github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 - go.etcd.io/bbolt v1.4.0 + go.etcd.io/bbolt v1.4.1 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 4b934709a706..50b676f714d0 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -109,8 +109,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.0 h1:TU77id3TnN/zKr7CO/uk+fBCwF2jGcMuw2B/FMAzYIk= -go.etcd.io/bbolt v1.4.0/go.mod h1:AsD+OCi/qPN1giOX1aiLAha3o1U8rAz65bvN4j0sRuk= +go.etcd.io/bbolt v1.4.1 h1:5mOV+HWjIPLEAlUGMsveaUvK2+byZMFOzojoi7bh7uI= +go.etcd.io/bbolt v1.4.1/go.mod h1:c8zu2BnXWTu2XM4XcICtbGSl9cFwsXtcf9zLt2OncM8= 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/go.mod b/go.mod index 260dab18477b..4d7a684c5d7a 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/dustin/go-humanize v1.0.1 github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 - go.etcd.io/bbolt v1.4.0 + go.etcd.io/bbolt v1.4.1 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 diff --git a/go.sum b/go.sum index a938b249366a..e5a1c09f06f5 100644 --- a/go.sum +++ b/go.sum @@ -146,8 +146,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.0 h1:TU77id3TnN/zKr7CO/uk+fBCwF2jGcMuw2B/FMAzYIk= -go.etcd.io/bbolt v1.4.0/go.mod h1:AsD+OCi/qPN1giOX1aiLAha3o1U8rAz65bvN4j0sRuk= +go.etcd.io/bbolt v1.4.1 h1:5mOV+HWjIPLEAlUGMsveaUvK2+byZMFOzojoi7bh7uI= +go.etcd.io/bbolt v1.4.1/go.mod h1:c8zu2BnXWTu2XM4XcICtbGSl9cFwsXtcf9zLt2OncM8= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= diff --git a/server/go.mod b/server/go.mod index 386a1c2ead2e..fbdcf9853e23 100644 --- a/server/go.mod +++ b/server/go.mod @@ -25,7 +25,7 @@ require ( github.com/stretchr/testify v1.10.0 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 - go.etcd.io/bbolt v1.4.0 + go.etcd.io/bbolt v1.4.1 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 diff --git a/server/go.sum b/server/go.sum index 801a63518d16..1f1c795b02e5 100644 --- a/server/go.sum +++ b/server/go.sum @@ -123,8 +123,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.0 h1:TU77id3TnN/zKr7CO/uk+fBCwF2jGcMuw2B/FMAzYIk= -go.etcd.io/bbolt v1.4.0/go.mod h1:AsD+OCi/qPN1giOX1aiLAha3o1U8rAz65bvN4j0sRuk= +go.etcd.io/bbolt v1.4.1 h1:5mOV+HWjIPLEAlUGMsveaUvK2+byZMFOzojoi7bh7uI= +go.etcd.io/bbolt v1.4.1/go.mod h1:c8zu2BnXWTu2XM4XcICtbGSl9cFwsXtcf9zLt2OncM8= 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/tests/go.mod b/tests/go.mod index 3f1f56a4e635..a332ddd898bf 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -29,7 +29,7 @@ require ( github.com/prometheus/common v0.64.0 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.10.0 - go.etcd.io/bbolt v1.4.0 + go.etcd.io/bbolt v1.4.1 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 diff --git a/tests/go.sum b/tests/go.sum index d8257126c420..27e7498df6ff 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -152,8 +152,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.0 h1:TU77id3TnN/zKr7CO/uk+fBCwF2jGcMuw2B/FMAzYIk= -go.etcd.io/bbolt v1.4.0/go.mod h1:AsD+OCi/qPN1giOX1aiLAha3o1U8rAz65bvN4j0sRuk= +go.etcd.io/bbolt v1.4.1 h1:5mOV+HWjIPLEAlUGMsveaUvK2+byZMFOzojoi7bh7uI= +go.etcd.io/bbolt v1.4.1/go.mod h1:c8zu2BnXWTu2XM4XcICtbGSl9cFwsXtcf9zLt2OncM8= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= From cb913de59eb4f98c3c8f57f5faf0f5099888deb7 Mon Sep 17 00:00:00 2001 From: Nont Date: Thu, 12 Jun 2025 21:54:08 -0500 Subject: [PATCH 0281/1068] Make Report Persist Traffic Detail Signed-off-by: Nont --- .../test-template/robustness/finally/main.go | 12 +++++-- .../test-template/robustness/traffic/main.go | 2 +- tests/robustness/main_test.go | 6 +++- tests/robustness/report/report.go | 33 +++++++++++++++++++ 4 files changed, 48 insertions(+), 5 deletions(-) diff --git a/tests/antithesis/test-template/robustness/finally/main.go b/tests/antithesis/test-template/robustness/finally/main.go index 8f2bcac48f35..fc03ac6849cb 100644 --- a/tests/antithesis/test-template/robustness/finally/main.go +++ b/tests/antithesis/test-template/robustness/finally/main.go @@ -19,6 +19,7 @@ package main import ( "flag" "maps" + "os" "path/filepath" "slices" "time" @@ -50,17 +51,22 @@ func main() { } reports, err := report.LoadClientReports(reportPath) assert.Always(err == nil, "Loaded client reports", map[string]any{"error": err}) - result := validateReports(lg, dirs, reports) + tf, err := report.LoadTrafficDetail(reportPath) + if err != nil && !os.IsNotExist(err) { + panic(err) + } + + result := validateReports(lg, dirs, reports, tf) if err := result.Linearization.Visualize(lg, filepath.Join(reportPath, reportFileName)); err != nil { panic(err) } } -func validateReports(lg *zap.Logger, serversDataPath map[string]string, reports []report.ClientReport) validate.RobustnessResult { +func validateReports(lg *zap.Logger, serversDataPath map[string]string, reports []report.ClientReport, tf report.TrafficDetail) validate.RobustnessResult { persistedRequests, err := report.PersistedRequests(lg, slices.Collect(maps.Values(serversDataPath))) assertResult(validate.ResultFromError(err), "Loaded persisted requests") - validateConfig := validate.Config{ExpectRevisionUnique: false} + validateConfig := validate.Config{ExpectRevisionUnique: tf.ExpectUniqueRevision} result := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, persistedRequests, 5*time.Minute) assertResult(result.Assumptions, "Validation assumptions fulfilled") if result.Linearization.Timeout { diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index de7f18de175b..276013ef0b7b 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -76,7 +76,7 @@ func main() { choice := rand.IntN(len(traffics)) tf := traffics[choice] lg.Info("Traffic", zap.String("Type", trafficNames[choice])) - r := report.TestReport{Logger: lg, ServersDataPath: etcdetcdDataPaths} + r := report.TestReport{Logger: lg, ServersDataPath: etcdetcdDataPaths, Traffic: &report.TrafficDetail{ExpectUniqueRevision: tf.ExpectUniqueRevision()}} defer func() { if err = r.Report(reportPath); err != nil { lg.Error("Failed to save traffic generation report", zap.Error(err)) diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index 55879cabe9af..70bbb58a776a 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -88,7 +88,11 @@ func TestRobustnessRegression(t *testing.T) { func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s scenarios.TestScenario, c *e2e.EtcdProcessCluster) { serverDataPaths := report.ServerDataPaths(c) - r := report.TestReport{Logger: lg, ServersDataPath: serverDataPaths} + r := report.TestReport{ + Logger: lg, + ServersDataPath: serverDataPaths, + Traffic: &report.TrafficDetail{ExpectUniqueRevision: s.Traffic.ExpectUniqueRevision()}, + } // t.Failed() returns false during panicking. We need to forcibly // save data on panicking. // Refer to: https://github.com/golang/go/issues/49929 diff --git a/tests/robustness/report/report.go b/tests/robustness/report/report.go index daf488f7100e..e02a8b9e19e4 100644 --- a/tests/robustness/report/report.go +++ b/tests/robustness/report/report.go @@ -15,8 +15,10 @@ package report import ( + "encoding/json" "fmt" "os" + "path" "path/filepath" "go.uber.org/zap" @@ -30,6 +32,7 @@ type TestReport struct { ServersDataPath map[string]string Client []ClientReport Visualize func(lg *zap.Logger, path string) error + Traffic *TrafficDetail } func (r *TestReport) Report(path string) error { @@ -50,6 +53,11 @@ func (r *TestReport) Report(path string) error { return err } } + if r.Traffic != nil { + if err := persistTrafficDetail(r.Logger, path, *r.Traffic); err != nil { + return err + } + } if r.Visualize != nil { if err := r.Visualize(r.Logger, filepath.Join(path, "history.html")); err != nil { return err @@ -74,3 +82,28 @@ func memberDataDir(member e2e.EtcdProcess) string { } return member.Config().DataDirPath } + +type TrafficDetail struct { + ExpectUniqueRevision bool `json:"expectuniquerevision,omitempty"` +} + +const trafficDetailFileName = "traffic.json" + +func persistTrafficDetail(lg *zap.Logger, p string, td TrafficDetail) error { + lg.Info("Saving traffic configuration details", zap.String("path", path.Join(p, trafficDetailFileName))) + b, err := json.Marshal(td) + if err != nil { + return nil + } + return os.WriteFile(filepath.Join(p, trafficDetailFileName), b, 0o644) +} + +func LoadTrafficDetail(p string) (TrafficDetail, error) { + var detail TrafficDetail + b, err := os.ReadFile(filepath.Join(p, trafficDetailFileName)) + if err != nil { + return TrafficDetail{}, err + } + err = json.Unmarshal(b, &detail) + return detail, err +} From 338f35613cd3d6a54220aa4963e7ec094ead49ea Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 10 Jun 2025 22:16:22 +0530 Subject: [PATCH 0282/1068] dependency: bump github.com/alexfalkowski/gocovmerge from 1.8.0 to 1.9.0 This commit will bump bump github.com/alexfalkowski/gocovmerge from 1.8.0 to 1.9.0 also bumps golang.org/x/net from 0.40.0 to 0.41.0 as a dependency of github.com/alexfalkowski/gocovmerge Signed-off-by: ArkaSaha30 --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 6 +++--- tools/mod/go.sum | 12 ++++++------ tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 20 files changed, 36 insertions(+), 36 deletions(-) diff --git a/api/go.mod b/api/go.mod index 66ff93ed782b..343091c27aec 100644 --- a/api/go.mod +++ b/api/go.mod @@ -21,7 +21,7 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.36.0 // indirect go.opentelemetry.io/otel/sdk v1.36.0 // indirect - golang.org/x/net v0.40.0 // indirect + golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect diff --git a/api/go.sum b/api/go.sum index 2b326de677fc..7a9abb298abc 100644 --- a/api/go.sum +++ b/api/go.sum @@ -51,8 +51,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/client/v3/go.mod b/client/v3/go.mod index bae7a374a79a..ea190dacc1bb 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -34,7 +34,7 @@ require ( go.opentelemetry.io/otel/metric v1.36.0 // indirect go.opentelemetry.io/otel/trace v1.36.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.40.0 // indirect + golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 9c96a521e700..251ab1e94dd3 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -85,8 +85,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index aaabb68ebc5e..615291f5775b 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -39,7 +39,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.40.0 // indirect + golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index e5729005d1cd..f0b331b49031 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -111,8 +111,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index d954dd9d4738..c1d63a685cc0 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -85,7 +85,7 @@ require ( go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.39.0 // indirect - golang.org/x/net v0.40.0 // indirect + golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect golang.org/x/time v0.12.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index fc95873ca533..dd31ba834eee 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -151,8 +151,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/go.mod b/go.mod index 0adf4c0cd141..f167620b71dd 100644 --- a/go.mod +++ b/go.mod @@ -92,7 +92,7 @@ require ( go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.39.0 // indirect - golang.org/x/net v0.40.0 // indirect + golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect diff --git a/go.sum b/go.sum index 260d836f0161..5f4b52232b54 100644 --- a/go.sum +++ b/go.sum @@ -201,8 +201,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/pkg/go.mod b/pkg/go.mod index e21cd76779bf..094ee3638ca0 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -23,7 +23,7 @@ require ( go.opentelemetry.io/otel v1.36.0 // indirect go.opentelemetry.io/otel/sdk v1.36.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.40.0 // indirect + golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 03859c6ff8be..99e2c9ce6f51 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -53,8 +53,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= diff --git a/server/go.mod b/server/go.mod index b14cf9057090..5df6e9cd3ff3 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,7 +37,7 @@ require ( go.opentelemetry.io/otel/sdk v1.36.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.39.0 - golang.org/x/net v0.40.0 + golang.org/x/net v0.41.0 golang.org/x/time v0.12.0 google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a google.golang.org/grpc v1.73.0 diff --git a/server/go.sum b/server/go.sum index 610c1bc35307..fbea89774bd3 100644 --- a/server/go.sum +++ b/server/go.sum @@ -176,8 +176,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tests/go.mod b/tests/go.mod index 3a4f9ec20d74..f660e0de936f 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -94,7 +94,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect go.opentelemetry.io/otel/metric v1.36.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.40.0 // indirect + golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect diff --git a/tests/go.sum b/tests/go.sum index c7202f744610..cfb3a22dac01 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -207,8 +207,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 3bd9a5109580..2c2cd5d4ef4e 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -5,7 +5,7 @@ go 1.24 toolchain go1.24.3 require ( - github.com/alexfalkowski/gocovmerge v1.8.0 + github.com/alexfalkowski/gocovmerge v1.9.0 github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 github.com/cloudflare/cfssl v1.6.5 @@ -217,12 +217,12 @@ require ( golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect golang.org/x/mod v0.25.0 // indirect - golang.org/x/net v0.40.0 // indirect + golang.org/x/net v0.41.0 // indirect golang.org/x/sync v0.15.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect golang.org/x/text v0.26.0 // indirect - golang.org/x/tools v0.33.0 // indirect + golang.org/x/tools v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/grpc v1.73.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 6373e9c38b3d..74ddd77c8358 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -36,8 +36,8 @@ github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsr github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= -github.com/alexfalkowski/gocovmerge v1.8.0 h1:N5e33J3oMAweMBsJTOv0GwOuAoD3CdR5NhNOt7aJSVs= -github.com/alexfalkowski/gocovmerge v1.8.0/go.mod h1:RaTPWgDVJlySp1sgyUz5w+ZLh17fIptLDZD5100epAI= +github.com/alexfalkowski/gocovmerge v1.9.0 h1:ozu15S3V+muHM72WOi+/lXgJZ/zSzjB6CRfBV7HnJDc= +github.com/alexfalkowski/gocovmerge v1.9.0/go.mod h1:gkfERgPiozeXq7FlJBQDmTeXo8FnrNxZwabB4uSGZ3M= github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU= github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= @@ -582,8 +582,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -678,8 +678,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 6141371f68c4..88f33d8e8cf9 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -17,7 +17,7 @@ require ( github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/otel v1.36.0 // indirect go.opentelemetry.io/otel/sdk v1.36.0 // indirect - golang.org/x/net v0.40.0 // indirect + golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 42cb9125d903..72eab19cb310 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1336,8 +1336,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From d25d902a8d5158d9023370362763c411e3058986 Mon Sep 17 00:00:00 2001 From: Nont Date: Mon, 9 Jun 2025 22:07:27 -0500 Subject: [PATCH 0283/1068] Add Kubernetes Traffic Type Signed-off-by: Nont --- .../test-template/robustness/finally/main.go | 3 +- .../test-template/robustness/traffic/main.go | 40 +++++++++++++------ 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/tests/antithesis/test-template/robustness/finally/main.go b/tests/antithesis/test-template/robustness/finally/main.go index 499c1e1ad806..8f2bcac48f35 100644 --- a/tests/antithesis/test-template/robustness/finally/main.go +++ b/tests/antithesis/test-template/robustness/finally/main.go @@ -28,7 +28,6 @@ import ( "go.etcd.io/etcd/tests/v3/antithesis/test-template/robustness/common" "go.etcd.io/etcd/tests/v3/robustness/report" - "go.etcd.io/etcd/tests/v3/robustness/traffic" "go.etcd.io/etcd/tests/v3/robustness/validate" ) @@ -61,7 +60,7 @@ func validateReports(lg *zap.Logger, serversDataPath map[string]string, reports persistedRequests, err := report.PersistedRequests(lg, slices.Collect(maps.Values(serversDataPath))) assertResult(validate.ResultFromError(err), "Loaded persisted requests") - validateConfig := validate.Config{ExpectRevisionUnique: traffic.EtcdPutDeleteLease.ExpectUniqueRevision()} + validateConfig := validate.Config{ExpectRevisionUnique: false} result := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, persistedRequests, 5*time.Minute) assertResult(result.Assumptions, "Validation assumptions fulfilled") if result.Linearization.Timeout { diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 4a68b5ee63d4..5c70c2d9f438 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -19,6 +19,7 @@ package main import ( "context" "flag" + "math/rand/v2" "os" "slices" "sync" @@ -37,13 +38,23 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/traffic" ) -var profile = traffic.Profile{ - MinimalQPS: 100, - MaximalQPS: 1000, - BurstableQPS: 1000, - ClientCount: 3, - MaxNonUniqueRequestConcurrency: 3, -} +var ( + profile = traffic.Profile{ + MinimalQPS: 100, + MaximalQPS: 1000, + BurstableQPS: 1000, + ClientCount: 3, + MaxNonUniqueRequestConcurrency: 3, + } + trafficNames = []string{ + "etcd", + "kubernetes", + } + traffics = []traffic.Traffic{ + traffic.EtcdPutDeleteLease, + traffic.Kubernetes, + } +) func main() { local := flag.Bool("local", false, "run tests locally and connect to etcd instances via localhost") @@ -62,6 +73,9 @@ func main() { if err != nil { panic(err) } + choice := rand.IntN(len(traffics)) + tf := traffics[choice] + lg.Info("Traffic", zap.String("Type", trafficNames[choice])) r := report.TestReport{Logger: lg, ServersDataPath: etcdetcdDataPaths} defer func() { if err = r.Report(reportPath); err != nil { @@ -70,14 +84,14 @@ func main() { }() lg.Info("Start traffic generation", zap.Duration("duration", duration)) - r.Client, err = runTraffic(ctx, lg, hosts, baseTime, duration) + r.Client, err = runTraffic(ctx, lg, tf, hosts, baseTime, duration) if err != nil { lg.Error("Failed to generate traffic") panic(err) } } -func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime time.Time, duration time.Duration) ([]report.ClientReport, error) { +func runTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, hosts []string, baseTime time.Time, duration time.Duration) ([]report.ClientReport, error) { ids := identity.NewIDProvider() r, err := traffic.CheckEmptyDatabaseAtStart(ctx, lg, hosts, ids, baseTime) if err != nil { @@ -93,7 +107,7 @@ func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime ti startTime := time.Since(baseTime) g.Go(func() error { defer close(maxRevisionChan) - trafficReports = slices.Concat(trafficReports, simulateTraffic(ctx, hosts, ids, baseTime, duration)) + trafficReports = slices.Concat(trafficReports, simulateTraffic(ctx, tf, hosts, ids, baseTime, duration)) maxRevision := report.OperationsMaxRevision(trafficReports) maxRevisionChan <- maxRevision lg.Info("Finished simulating Traffic", zap.Int64("max-revision", maxRevision)) @@ -120,7 +134,7 @@ func runTraffic(ctx context.Context, lg *zap.Logger, hosts []string, baseTime ti return reports, nil } -func simulateTraffic(ctx context.Context, hosts []string, ids identity.Provider, baseTime time.Time, duration time.Duration) []report.ClientReport { +func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, ids identity.Provider, baseTime time.Time, duration time.Duration) []report.ClientReport { var mux sync.Mutex var wg sync.WaitGroup storage := identity.NewLeaseIDStorage() @@ -137,7 +151,7 @@ func simulateTraffic(ctx context.Context, hosts []string, ids identity.Provider, defer wg.Done() defer c.Close() - traffic.EtcdPutDeleteLease.RunTrafficLoop(ctx, c, limiter, + tf.RunTrafficLoop(ctx, c, limiter, ids, storage, concurrencyLimiter, @@ -154,7 +168,7 @@ func simulateTraffic(ctx context.Context, hosts []string, ids identity.Provider, go func(c *client.RecordingClient) { defer wg.Done() defer c.Close() - traffic.EtcdPutDeleteLease.RunCompactLoop(ctx, c, traffic.DefaultCompactionPeriod, finish) + tf.RunCompactLoop(ctx, c, traffic.DefaultCompactionPeriod, finish) mux.Lock() reports = append(reports, c.Report()) mux.Unlock() From 8543a66b7c58f963c1884b477edc5e31a1c25289 Mon Sep 17 00:00:00 2001 From: Kirill Trifonov Date: Mon, 16 Jun 2025 00:18:08 +0200 Subject: [PATCH 0284/1068] * add writer to printer Signed-off-by: Kirill Trifonov --- etcdctl/ctlv3/command/printer_json.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/etcdctl/ctlv3/command/printer_json.go b/etcdctl/ctlv3/command/printer_json.go index 49abb35ff5f1..cee458f3a2e1 100644 --- a/etcdctl/ctlv3/command/printer_json.go +++ b/etcdctl/ctlv3/command/printer_json.go @@ -17,6 +17,7 @@ package command import ( "encoding/json" "fmt" + "io" "os" "strconv" "strings" @@ -25,12 +26,14 @@ import ( ) type jsonPrinter struct { - isHex bool + writer io.Writer + isHex bool printer } func newJSONPrinter(isHex bool) printer { return &jsonPrinter{ + writer: os.Stdout, isHex: isHex, printer: &printerRPC{newPrinterUnsupported("json"), printJSON}, } @@ -42,22 +45,26 @@ func (p *jsonPrinter) EndpointHashKV(r []epHashKV) { printJSON(r) } func (p *jsonPrinter) MemberList(r clientv3.MemberListResponse) { if p.isHex { - printMemberListWithHexJSON(r) + printMemberListWithHexJSON(p.writer, r) } else { printJSON(r) } } -func printJSON(v any) { +func printJSONTo(w io.Writer, v any) { b, err := json.Marshal(v) if err != nil { fmt.Fprintf(os.Stderr, "%v\n", err) return } - fmt.Println(string(b)) + fmt.Fprintln(w, string(b)) +} + +func printJSON(v any) { + printJSONTo(os.Stdout, v) } -func printMemberListWithHexJSON(r clientv3.MemberListResponse) { +func printMemberListWithHexJSON(w io.Writer, r clientv3.MemberListResponse) { var buffer strings.Builder var b []byte buffer.WriteString("{\"header\":{\"cluster_id\":\"") @@ -96,5 +103,5 @@ func printMemberListWithHexJSON(r clientv3.MemberListResponse) { } } buffer.WriteString("}") - fmt.Println(buffer.String()) + fmt.Fprintln(w, buffer.String()) } From 94b2dce0fa58b1a895c8c6ebcec35e8463bc2049 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 10 Jun 2025 10:28:22 +0100 Subject: [PATCH 0285/1068] Update etcd governance to link to SIG-etcd governance Signed-off-by: Benjamin Wang --- GOVERNANCE.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 6573d2f0194e..5ad999768577 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -36,7 +36,12 @@ weeks inactive voting period and as long as two maintainers are on board. Changes in project governance could be initiated by opening a GitHub PR. +## SIG-etcd Governance + +[SIG-etcd Governance] is documented in the Kubernetes/community repository. + [community membership]: /Documentation/contributor-guide/community-membership.md [Code of Conduct]: /code-of-conduct.md [contributor guide]: /CONTRIBUTING.md [maintainers]: /OWNERS +[SIG-etcd Governance]: https://github.com/kubernetes/community/blob/master/sig-etcd/charter.md#deviations-from-sig-governance From d534e2af39357cc820745c4e607939b8f7cb5923 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 18:25:18 +0000 Subject: [PATCH 0286/1068] build(deps): bump github/codeql-action from 3.28.19 to 3.29.0 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.19 to 3.29.0. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/fca7ace96b7d713c7035871441bd52efbe39e27e...ce28f5bb42b7a9f2c824e633a3f6ee835bab6858) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.29.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 72d102b508ce..786b7fb38ddd 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@fca7ace96b7d713c7035871441bd52efbe39e27e # v3.28.19 + uses: github/codeql-action/init@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@fca7ace96b7d713c7035871441bd52efbe39e27e # v3.28.19 + uses: github/codeql-action/autobuild@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@fca7ace96b7d713c7035871441bd52efbe39e27e # v3.28.19 + uses: github/codeql-action/analyze@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 7b079024fd3d..eaadcb5ee337 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@fca7ace96b7d713c7035871441bd52efbe39e27e # v3.28.19 + uses: github/codeql-action/upload-sarif@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0 with: sarif_file: results.sarif From 809ed3367a98cc1ec79bffb458294aa0f9a8a72c Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 12 Jun 2025 08:58:38 +0200 Subject: [PATCH 0287/1068] Remove defragment requests from linearization Signed-off-by: Marek Siarkowicz --- tests/robustness/validate/validate.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index 8d7492ae72ce..ca70770f4aeb 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -72,14 +72,19 @@ func prepareAndCategorizeOperations(reports []report.ClientReport) (linearizable serializable = append(serializable, op) } // Remove failed read requests as they are not relevant for linearization. - if response.Error == "" || !request.IsRead() { - // For linearization, we set the return time of failed requests to MaxInt64. - // Failed requests can still be persisted, however we don't know when request has taken effect. - if response.Error != "" { - op.Return = math.MaxInt64 - } - linearizable = append(linearizable, op) + if request.IsRead() && response.Error != "" { + continue } + // Defragment is not linearizable + if request.Type == model.Defragment { + continue + } + // For linearization, we set the return time of failed requests to MaxInt64. + // Failed requests can still be persisted, however we don't know when request has taken effect. + if response.Error != "" { + op.Return = math.MaxInt64 + } + linearizable = append(linearizable, op) } } return linearizable, serializable From 441354e30eb84ab8c6aadbca9e02972fbed6fe41 Mon Sep 17 00:00:00 2001 From: joshjms Date: Sun, 15 Jun 2025 20:17:18 +0800 Subject: [PATCH 0288/1068] antithesis: Configuration for 1 node cluster Signed-off-by: joshjms --- tests/antithesis/Dockerfile.config | 3 +- tests/antithesis/Makefile | 42 ++++++++++----- tests/antithesis/docker-compose-1-node.yml | 54 +++++++++++++++++++ ...-compose.yml => docker-compose-3-node.yml} | 0 tests/antithesis/test-template/Dockerfile | 7 +-- .../test-template/entrypoint/main.go | 7 ++- .../test-template/robustness/common/config.go | 29 ++++++++++ .../test-template/robustness/common/path.go | 20 +++---- .../test-template/robustness/finally/main.go | 8 ++- .../test-template/robustness/traffic/main.go | 7 ++- 10 files changed, 144 insertions(+), 33 deletions(-) create mode 100644 tests/antithesis/docker-compose-1-node.yml rename tests/antithesis/{docker-compose.yml => docker-compose-3-node.yml} (100%) create mode 100644 tests/antithesis/test-template/robustness/common/config.go diff --git a/tests/antithesis/Dockerfile.config b/tests/antithesis/Dockerfile.config index 4ac0ea37384c..2f53927576d9 100644 --- a/tests/antithesis/Dockerfile.config +++ b/tests/antithesis/Dockerfile.config @@ -4,7 +4,8 @@ FROM golang:$GO_VERSION AS build RUN go install github.com/a8m/envsubst/cmd/envsubst@v1.4.3 ARG IMAGE_TAG -COPY docker-compose.yml /docker-compose.yml.template +ARG NODE_COUNT +COPY docker-compose-${NODE_COUNT}-node.yml /docker-compose.yml.template RUN IMAGE_TAG=${IMAGE_TAG} cat /docker-compose.yml.template | envsubst > /docker-compose.yml FROM scratch diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 23308872ae43..5b2ee7a452e3 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -5,9 +5,14 @@ ARCH ?= $(shell go env GOARCH) REF = main IMAGE_TAG = latest +CFG_NODE_COUNT ?= 3 + .PHONY: antithesis-build-client-docker-image -antithesis-build-client-docker-image: - docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) -f $(REPOSITORY_ROOT)/tests/antithesis/test-template/Dockerfile $(REPOSITORY_ROOT) -t etcd-client:latest +antithesis-build-client-docker-image: validate-node-count + docker build \ + --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) \ + --build-arg CFG_NODE_COUNT=$(CFG_NODE_COUNT) \ + -f $(REPOSITORY_ROOT)/tests/antithesis/test-template/Dockerfile $(REPOSITORY_ROOT) -t etcd-client:latest .PHONY: antithesis-build-etcd-image antithesis-build-etcd-image: @@ -30,30 +35,39 @@ antithesis-build-etcd-image-main: REF=main antithesis-build-etcd-image-main: antithesis-build-etcd-image .PHONY: antithesis-build-config-image -antithesis-build-config-image: - docker build -f ./Dockerfile.config . -t etcd-config:latest --build-arg IMAGE_TAG=$(IMAGE_TAG) +antithesis-build-config-image: validate-node-count + docker build -f ./Dockerfile.config . -t etcd-config:latest \ + --build-arg IMAGE_TAG=$(IMAGE_TAG) \ + --build-arg NODE_COUNT=$(CFG_NODE_COUNT) .PHONY: antithesis-docker-compose-up -antithesis-docker-compose-up: - export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose up +antithesis-docker-compose-up: validate-node-count + export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker compose -f docker-compose-$(CFG_NODE_COUNT)-node.yml up .PHONY: antithesis-run-container-traffic -antithesis-run-container-traffic: - export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose exec client /opt/antithesis/test/v1/robustness/singleton_driver_traffic +antithesis-run-container-traffic: validate-node-count + export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker compose -f docker-compose-$(CFG_NODE_COUNT)-node.yml exec client /opt/antithesis/test/v1/robustness/singleton_driver_traffic .PHONY: antithesis-run-container-validation -antithesis-run-container-validation: - export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose exec client /opt/antithesis/test/v1/robustness/finally_validation +antithesis-run-container-validation: validate-node-count + export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker compose -f docker-compose-$(CFG_NODE_COUNT)-node.yml exec client /opt/antithesis/test/v1/robustness/finally_validation .PHONY: antithesis-run-local-traffic antithesis-run-local-traffic: - go run --race ./test-template/robustness/traffic/main.go --local + go run -ldflags "-X main.NodeCount=$(CFG_NODE_COUNT)" --race ./test-template/robustness/traffic/main.go --local .PHONY: antithesis-run-local-validation antithesis-run-local-validation: - go run --race ./test-template/robustness/finally/main.go --local + go run -ldflags "-X main.NodeCount=$(CFG_NODE_COUNT)" --race ./test-template/robustness/finally/main.go --local .PHONY: antithesis-clean -antithesis-clean: - export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker-compose down +antithesis-clean: validate-node-count + export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker compose -f docker-compose-$(CFG_NODE_COUNT)-node.yml down --remove-orphans rm -rf /tmp/etcddata0 /tmp/etcddata1 /tmp/etcddata2 /tmp/etcdreport + +.PHONY: validate-node-count +validate-node-count: + @if [ "$(CFG_NODE_COUNT)" != "1" ] && [ "$(CFG_NODE_COUNT)" != "3" ]; then \ + echo "CFG_NODE_COUNT must be either 1 or 3 (got $(CFG_NODE_COUNT))"; \ + exit 1; \ + fi diff --git a/tests/antithesis/docker-compose-1-node.yml b/tests/antithesis/docker-compose-1-node.yml new file mode 100644 index 000000000000..37f8fe9ce9e3 --- /dev/null +++ b/tests/antithesis/docker-compose-1-node.yml @@ -0,0 +1,54 @@ +--- +services: + # This is needed for creating non-root data folders on host. + # By default, if the folders don't exist when mounting, compose creates them with root as owner. + # With root owner, accessing the WAL files from local tests will fail due to an unauthorized access error. + init: + image: 'docker.io/library/ubuntu:latest' + user: root + group_add: + - '${GROUP_ID:-root}' + volumes: + - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcddata0 + - ${ETCD_ROBUSTNESS_REPORT_PATH:-/tmp/etcdreport}:/var/report + command: + - /bin/sh + - -c + - | + rm -rf /var/etcddata0/* /var/report/* + chown -R ${USER_ID:-root}:${GROUP_ID:-root} /var/etcddata0 /var/report + + etcd0: + image: 'etcd-server:${IMAGE_TAG:-latest}' + container_name: etcd0 + hostname: etcd0 + environment: + ETCD_NAME: "etcd0" + ETCD_INITIAL_ADVERTISE_PEER_URLS: "http://etcd0:2380" + ETCD_LISTEN_PEER_URLS: "http://0.0.0.0:2380" + ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379" + ETCD_ADVERTISE_CLIENT_URLS: "http://etcd0.etcd:2379" + ETCD_INITIAL_CLUSTER_TOKEN: "etcd-cluster-1" + ETCD_INITIAL_CLUSTER: "etcd0=http://etcd0:2380" + ETCD_INITIAL_CLUSTER_STATE: "new" + ETCD_DATA_DIR: "/var/etcd/data" + user: "${USER_ID:-root}:${GROUP_ID:-root}" + depends_on: + init: + condition: service_completed_successfully + ports: + - 12379:2379 + volumes: + - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcd/data + + client: + image: 'etcd-client:${IMAGE_TAG:-latest}' + container_name: client + entrypoint: ["/opt/antithesis/entrypoint/entrypoint"] + user: "${USER_ID:-root}:${GROUP_ID:-root}" + depends_on: + etcd0: + condition: service_started + volumes: + - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcddata0 + - ${ETCD_ROBUSTNESS_REPORT_PATH:-/tmp/etcdreport}:/var/report diff --git a/tests/antithesis/docker-compose.yml b/tests/antithesis/docker-compose-3-node.yml similarity index 100% rename from tests/antithesis/docker-compose.yml rename to tests/antithesis/docker-compose-3-node.yml diff --git a/tests/antithesis/test-template/Dockerfile b/tests/antithesis/test-template/Dockerfile index 850857a7925b..76585231b194 100644 --- a/tests/antithesis/test-template/Dockerfile +++ b/tests/antithesis/test-template/Dockerfile @@ -2,10 +2,11 @@ ARG GO_VERSION=1.24.3 ARG ARCH=amd64 FROM golang:$GO_VERSION +ARG CFG_NODE_COUNT=3 WORKDIR /build COPY . . WORKDIR /build/tests -RUN go build -o /opt/antithesis/entrypoint/entrypoint -race ./antithesis/test-template/entrypoint/main.go -RUN go build -o /opt/antithesis/test/v1/robustness/singleton_driver_traffic -race ./antithesis/test-template/robustness/traffic/main.go -RUN go build -o /opt/antithesis/test/v1/robustness/finally_validation -race ./antithesis/test-template/robustness/finally/main.go +RUN go build -ldflags "-X main.NodeCount=$CFG_NODE_COUNT" -o /opt/antithesis/entrypoint/entrypoint -race ./antithesis/test-template/entrypoint/main.go +RUN go build -ldflags "-X main.NodeCount=$CFG_NODE_COUNT" -o /opt/antithesis/test/v1/robustness/singleton_driver_traffic -race ./antithesis/test-template/robustness/traffic/main.go +RUN go build -ldflags "-X main.NodeCount=$CFG_NODE_COUNT" -o /opt/antithesis/test/v1/robustness/finally_validation -race ./antithesis/test-template/robustness/finally/main.go diff --git a/tests/antithesis/test-template/entrypoint/main.go b/tests/antithesis/test-template/entrypoint/main.go index cf2f46f75f28..ab9e365b3dd6 100644 --- a/tests/antithesis/test-template/entrypoint/main.go +++ b/tests/antithesis/test-template/entrypoint/main.go @@ -24,14 +24,19 @@ import ( "github.com/antithesishq/antithesis-sdk-go/lifecycle" clientv3 "go.etcd.io/etcd/client/v3" + "go.etcd.io/etcd/tests/v3/antithesis/test-template/robustness/common" ) // Sleep duration const SLEEP = 10 +var NodeCount = "3" + // CheckHealth checks health of all etcd nodes func CheckHealth() bool { - nodeOptions := []string{"etcd0", "etcd1", "etcd2"} + cfg := common.MakeConfig(NodeCount) + + nodeOptions := []string{"etcd0", "etcd1", "etcd2"}[:cfg.NodeCount] // iterate over each node and check health for _, node := range nodeOptions { diff --git a/tests/antithesis/test-template/robustness/common/config.go b/tests/antithesis/test-template/robustness/common/config.go new file mode 100644 index 000000000000..97a8ef39637a --- /dev/null +++ b/tests/antithesis/test-template/robustness/common/config.go @@ -0,0 +1,29 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package common + +import "strconv" + +type Config struct { + NodeCount int +} + +func MakeConfig(nodeCount string) *Config { + cfg := &Config{} + + cfg.NodeCount, _ = strconv.Atoi(nodeCount) + + return cfg +} diff --git a/tests/antithesis/test-template/robustness/common/path.go b/tests/antithesis/test-template/robustness/common/path.go index 7c0e9e02a80b..492da9ea2a80 100644 --- a/tests/antithesis/test-template/robustness/common/path.go +++ b/tests/antithesis/test-template/robustness/common/path.go @@ -38,23 +38,23 @@ const ( localReportPath = "report" ) -func DefaultPaths() (string, []string, map[string]string) { - hosts := []string{defaultetcd0, defaultetcd1, defaultetcd2} - reportPath := defaultReportPath - dataPaths := etcdDataPaths(defaultetcdDataPath, len(hosts)) - return reportPath, hosts, dataPaths +func DefaultPaths(cfg *Config) (hosts []string, reportPath string, dataPaths map[string]string) { + hosts = []string{defaultetcd0, defaultetcd1, defaultetcd2}[:cfg.NodeCount] + reportPath = defaultReportPath + dataPaths = etcdDataPaths(defaultetcdDataPath, cfg.NodeCount) + return hosts, reportPath, dataPaths } -func LocalPaths() (string, []string, map[string]string) { - hosts := []string{localetcd0, localetcd1, localetcd2} - reportPath := localReportPath +func LocalPaths(cfg *Config) (hosts []string, reportPath string, dataPaths map[string]string) { + hosts = []string{localetcd0, localetcd1, localetcd2}[:cfg.NodeCount] + reportPath = localReportPath etcdDataPath := defaultetcdLocalDataPath envPath := os.Getenv(localetcdDataPathEnv) if envPath != "" { etcdDataPath = envPath + "%d" } - dataPaths := etcdDataPaths(etcdDataPath, len(hosts)) - return reportPath, hosts, dataPaths + dataPaths = etcdDataPaths(etcdDataPath, cfg.NodeCount) + return hosts, reportPath, dataPaths } func etcdDataPaths(dir string, amount int) map[string]string { diff --git a/tests/antithesis/test-template/robustness/finally/main.go b/tests/antithesis/test-template/robustness/finally/main.go index 8f2bcac48f35..7eb2822344b4 100644 --- a/tests/antithesis/test-template/robustness/finally/main.go +++ b/tests/antithesis/test-template/robustness/finally/main.go @@ -35,13 +35,17 @@ const ( reportFileName = "history.html" ) +var NodeCount = "3" + func main() { local := flag.Bool("local", false, "run finally locally and connect to etcd instances via localhost") flag.Parse() - reportPath, _, dirs := common.DefaultPaths() + cfg := common.MakeConfig(NodeCount) + + _, reportPath, dirs := common.DefaultPaths(cfg) if *local { - reportPath, _, dirs = common.LocalPaths() + _, reportPath, dirs = common.LocalPaths(cfg) } lg, err := zap.NewProduction() diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index de7f18de175b..e4f372cdf25b 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -54,15 +54,18 @@ var ( traffic.EtcdPutDeleteLease, traffic.Kubernetes, } + NodeCount = "3" ) func main() { local := flag.Bool("local", false, "run tests locally and connect to etcd instances via localhost") flag.Parse() - reportPath, hosts, etcdetcdDataPaths := common.DefaultPaths() + cfg := common.MakeConfig(NodeCount) + + hosts, reportPath, etcdetcdDataPaths := common.DefaultPaths(cfg) if *local { - reportPath, hosts, etcdetcdDataPaths = common.LocalPaths() + hosts, reportPath, etcdetcdDataPaths = common.LocalPaths(cfg) } ctx := context.Background() From 591088f483b816d8be25da94b58219bec786b8e9 Mon Sep 17 00:00:00 2001 From: joshjms Date: Mon, 19 May 2025 20:17:56 +0800 Subject: [PATCH 0289/1068] docs: add dry run instruction for release Signed-off-by: joshjms --- Documentation/contributor-guide/release.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/contributor-guide/release.md b/Documentation/contributor-guide/release.md index 081c0ac96b2d..db5acdd8a93a 100644 --- a/Documentation/contributor-guide/release.md +++ b/Documentation/contributor-guide/release.md @@ -99,6 +99,12 @@ On the day of the release: It generates all release binaries under the directory `/tmp/etcd-release-${VERSION}/etcd/release/` and images. Binaries are pushed to the Google Cloud bucket under project `etcd-development`, and images are pushed to `quay.io` and `gcr.io`. + - It is advisable to do a dry run before the actual release. This will create a `/tmp` directory. Do **NOT** forget to remove this directory before the actual release. + + ```bash + DRY_RUN=true BRANCH=${BRANCH} ./scripts/release.sh ${VERSION} + ``` + 4. Publish the release page on GitHub - Open the **draft** release URL shown by the release script - Click the pen button at the top right to edit the release From 3335a484b02cd60774251e33fc4d230bb6e4f513 Mon Sep 17 00:00:00 2001 From: Kishen Viswanathan Date: Mon, 2 Jun 2025 15:51:34 +0530 Subject: [PATCH 0290/1068] Add support to generate JSON report to the benchmark tool Signed-off-by: Kishen Viswanathan --- pkg/report/report.go | 93 +++++++++++++++++++++++++++++++++---- pkg/report/weighted.go | 4 +- tools/benchmark/cmd/root.go | 4 ++ tools/benchmark/cmd/util.go | 8 ++-- 4 files changed, 93 insertions(+), 16 deletions(-) diff --git a/pkg/report/report.go b/pkg/report/report.go index a33f97cfa9d9..f92a8c4e1453 100644 --- a/pkg/report/report.go +++ b/pkg/report/report.go @@ -17,9 +17,12 @@ package report import ( + "encoding/json" "fmt" "maps" "math" + "os" + "path/filepath" "slices" "sort" "strings" @@ -41,13 +44,35 @@ type Result struct { func (res *Result) Duration() time.Duration { return res.End.Sub(res.Start) } type report struct { - results chan Result - precision string + generateJsonReport bool + precision string + results chan Result stats Stats sps *secondPoints } +type Metrics struct { + Perc50 float64 `json:"Perc50"` + Perc90 float64 `json:"Perc90"` + Perc99 float64 `json:"Perc99"` +} + +type Labels struct { + Metric string `json:"Metric"` +} + +type DataItem struct { + Data Metrics `json:"data"` + Labels Labels `json:"labels"` + Unit string `json:"unit"` +} + +type perfdashFormattedReport struct { + DataItems []DataItem `json:"dataItems"` + Version string `json:"version"` +} + // Stats exposes results raw data. type Stats struct { AvgTotal float64 @@ -81,19 +106,22 @@ type Report interface { Stats() <-chan Stats } -func NewReport(precision string) Report { return newReport(precision) } +func NewReport(precision string, generateJsonReport bool) Report { + return newReport(precision, generateJsonReport) +} -func newReport(precision string) *report { +func newReport(precision string, generateJsonReport bool) *report { r := &report{ - results: make(chan Result, 16), - precision: precision, + results: make(chan Result, 16), + precision: precision, + generateJsonReport: generateJsonReport, } r.stats.ErrorDist = make(map[string]int) return r } -func NewReportSample(precision string) Report { - r := NewReport(precision).(*report) +func NewReportSample(precision string, generateJsonReport bool) Report { + r := NewReport(precision, generateJsonReport).(*report) r.sps = newSecondPoints() return r } @@ -155,8 +183,8 @@ func (r *report) sec2str(sec float64) string { return fmt.Sprintf(r.precision+" type reportRate struct{ *report } -func NewReportRate(precision string) Report { - return &reportRate{NewReport(precision).(*report)} +func NewReportRate(precision string, generateJsonReport bool) Report { + return &reportRate{NewReport(precision, generateJsonReport).(*report)} } func (r *reportRate) String() string { @@ -226,9 +254,54 @@ func (r *report) sprintLatencies() string { s += fmt.Sprintf(" %v%% in %s.\n", pctls[i], r.sec2str(data[i])) } } + if r.generateJsonReport { + r.generateJsonBenchmarkReport() + } return s } +func (r *report) generateJsonBenchmarkReport() { + pcls, data := Percentiles(r.stats.Lats) + pclsData := make(map[float64]float64) + for i := 0; i < len(pcls); i++ { + pclsData[pcls[i]] = data[i] * 1000 // Since the reported data is in seconds, convert to ms. + } + report := perfdashFormattedReport{ + Version: "v1", + DataItems: []DataItem{ + { + Data: Metrics{ + Perc50: math.Round(pclsData[50]*10000) / 10000, + Perc90: math.Round(pclsData[90]*10000) / 10000, + Perc99: math.Round(pclsData[99]*10000) / 10000, + }, + Unit: "ms", + Labels: Labels{ + Metric: "APIResponsiveness", + }, + }, + }, + } + reportB, _ := json.MarshalIndent(report, "", " ") + + artifactsDir := os.Getenv("ARTIFACTS") + if artifactsDir == "" { + artifactsDir = "./_artifacts" + } + + fileName := fmt.Sprintf("etcd_perf_%s.json", time.Now().UTC().Format(time.RFC3339)) + err := os.MkdirAll(artifactsDir, 755) + if err != nil { + fmt.Println("Error creating artifacts directory:", err) + } + destPath := filepath.Join(artifactsDir, fileName) + err = os.WriteFile(destPath, reportB, 0644) + if err != nil { + fmt.Println("Error writing to file:", err) + } + fmt.Println("Successfully created a JSON perf report at", destPath) +} + func (r *report) histogram() string { bc := 10 buckets := make([]float64, bc+1) diff --git a/pkg/report/weighted.go b/pkg/report/weighted.go index 411214f6d165..a059294405db 100644 --- a/pkg/report/weighted.go +++ b/pkg/report/weighted.go @@ -30,10 +30,10 @@ type weightedReport struct { // NewWeightedReport returns a report that includes // both weighted and unweighted statistics. -func NewWeightedReport(r Report, precision string) Report { +func NewWeightedReport(r Report, precision string, generatePerfJson bool) Report { return &weightedReport{ baseReport: r, - report: newReport(precision), + report: newReport(precision, generatePerfJson), results: make(chan Result, 16), } } diff --git a/tools/benchmark/cmd/root.go b/tools/benchmark/cmd/root.go index c85beb9dbc65..7eaca85a805a 100644 --- a/tools/benchmark/cmd/root.go +++ b/tools/benchmark/cmd/root.go @@ -55,6 +55,8 @@ var ( targetLeader bool autoSyncInterval time.Duration + + generateJsonReport bool ) func init() { @@ -74,4 +76,6 @@ func init() { RootCmd.PersistentFlags().BoolVar(&targetLeader, "target-leader", false, "connect only to the leader node") RootCmd.PersistentFlags().DurationVar(&autoSyncInterval, "auto-sync-interval", time.Duration(0), "AutoSyncInterval is the interval to update endpoints with its latest members") + + RootCmd.PersistentFlags().BoolVar(&generateJsonReport, "json", false, "Generate the output in JSON format for perfdash consumption") } diff --git a/tools/benchmark/cmd/util.go b/tools/benchmark/cmd/util.go index a6b999390671..3988d316d358 100644 --- a/tools/benchmark/cmd/util.go +++ b/tools/benchmark/cmd/util.go @@ -163,9 +163,9 @@ func newReport() report.Report { p = "%g" } if sample { - return report.NewReportSample(p) + return report.NewReportSample(p, generateJsonReport) } - return report.NewReport(p) + return report.NewReport(p, generateJsonReport) } func newWeightedReport() report.Report { @@ -174,7 +174,7 @@ func newWeightedReport() report.Report { p = "%g" } if sample { - return report.NewReportSample(p) + return report.NewReportSample(p, generateJsonReport) } - return report.NewWeightedReport(report.NewReport(p), p) + return report.NewWeightedReport(report.NewReport(p, generateJsonReport), p, generateJsonReport) } From f98975781a6bce23829e3ae301226bc9bbc46e8e Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 19 Jun 2025 17:39:32 +0200 Subject: [PATCH 0291/1068] Treat future revision as client error Signed-off-by: Marek Siarkowicz --- tests/robustness/model/deterministic.go | 3 +++ tests/robustness/model/history.go | 14 +++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/tests/robustness/model/deterministic.go b/tests/robustness/model/deterministic.go index 287f9a1ffb6a..dcadb3851036 100644 --- a/tests/robustness/model/deterministic.go +++ b/tests/robustness/model/deterministic.go @@ -240,6 +240,9 @@ func (s EtcdState) Step(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { if request.Compact.Revision <= newState.CompactRevision { return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{ClientError: mvcc.ErrCompacted.Error()}} } + if request.Compact.Revision > newState.Revision { + return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{ClientError: mvcc.ErrFutureRev.Error()}} + } newState.CompactRevision = request.Compact.Revision return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Compact: &CompactResponse{}, Revision: RevisionForNonLinearizableResponse}} default: diff --git a/tests/robustness/model/history.go b/tests/robustness/model/history.go index e6735bca995e..338c7a23cb0e 100644 --- a/tests/robustness/model/history.go +++ b/tests/robustness/model/history.go @@ -171,6 +171,12 @@ func (h *AppendableHistory) AppendTxn(cmp []clientv3.Cmp, clientOnSuccessOps, cl h.appendSuccessful(request, start, end, txnResponse(results, resp.Succeeded, revision)) } +func (h *AppendableHistory) appendClientError(request EtcdRequest, start, end time.Duration, err error) { + h.appendSuccessful(request, start, end, MaybeEtcdResponse{ + EtcdResponse: EtcdResponse{ClientError: err.Error()}, + }) +} + func (h *AppendableHistory) appendSuccessful(request EtcdRequest, start, end time.Duration, response MaybeEtcdResponse) { op := porcupine.Operation{ ClientId: h.streamID, @@ -266,9 +272,11 @@ func (h *AppendableHistory) AppendCompact(rev int64, start, end time.Duration, r request := compactRequest(rev) if err != nil { if strings.Contains(err.Error(), mvcc.ErrCompacted.Error()) { - h.appendSuccessful(request, start, end, MaybeEtcdResponse{ - EtcdResponse: EtcdResponse{ClientError: mvcc.ErrCompacted.Error()}, - }) + h.appendClientError(request, start, end, mvcc.ErrCompacted) + return + } + if strings.Contains(err.Error(), mvcc.ErrFutureRev.Error()) { + h.appendClientError(request, start, end, mvcc.ErrFutureRev) return } h.appendFailed(request, start, end, err) From 822945d3f2c25cc5ddeb06655278edeb36b9c8ac Mon Sep 17 00:00:00 2001 From: xiaoxiangirl Date: Wed, 18 Jun 2025 17:13:29 +0800 Subject: [PATCH 0292/1068] refactor: use slices.Contains to simplify code Signed-off-by: xiaoxiangirl --- tools/proto-annotations/cmd/etcd_version.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tools/proto-annotations/cmd/etcd_version.go b/tools/proto-annotations/cmd/etcd_version.go index 86766466adb8..893e726599ee 100644 --- a/tools/proto-annotations/cmd/etcd_version.go +++ b/tools/proto-annotations/cmd/etcd_version.go @@ -17,6 +17,7 @@ package cmd import ( "fmt" "io" + "slices" "sort" "strings" @@ -72,10 +73,8 @@ func allEtcdVersionAnnotations() (annotations []etcdVersionAnnotation, err error var fileAnnotations []etcdVersionAnnotation protoregistry.GlobalFiles.RangeFiles(func(file protoreflect.FileDescriptor) bool { pkg := string(file.Package()) - for _, externalPkg := range externalPackages { - if pkg == externalPkg { - return true - } + if slices.Contains(externalPackages, pkg) { + return true } fileAnnotations, err = fileEtcdVersionAnnotations(file) if err != nil { From 5b0d49860df4d64815fe0c3077447d52a13954ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 18:52:10 +0000 Subject: [PATCH 0293/1068] build(deps): bump distroless/static-debian12 from `d9f9472` to `b7b9a69` Bumps distroless/static-debian12 from `d9f9472` to `b7b9a69`. --- updated-dependencies: - dependency-name: distroless/static-debian12 dependency-version: b7b9a6953e7bed6baaf37329331051d7bdc1b99c885f6dbeb72d75b1baad54f9 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 66818aa5988a..f29109e4a0f1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG ARCH=amd64 -FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:d9f9472a8f4541368192d714a995eb1a99bab1f7071fc8bde261d7eda3b667d8 +FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:b7b9a6953e7bed6baaf37329331051d7bdc1b99c885f6dbeb72d75b1baad54f9 ADD etcd /usr/local/bin/ ADD etcdctl /usr/local/bin/ From 56eebac07247dc1211f2685715d675a0181ad67a Mon Sep 17 00:00:00 2001 From: Kishen Viswanathan Date: Wed, 11 Jun 2025 21:11:49 +0530 Subject: [PATCH 0294/1068] Address review comments Signed-off-by: Kishen Viswanathan --- etcdctl/ctlv3/command/check.go | 4 +- pkg/report/perfdash.go | 87 ++++++++++++++++++++++++++ pkg/report/report.go | 92 +++++----------------------- pkg/report/report_test.go | 4 +- pkg/report/weighted.go | 4 +- tools/benchmark/cmd/lease.go | 4 +- tools/benchmark/cmd/mvcc-put.go | 4 +- tools/benchmark/cmd/put.go | 2 +- tools/benchmark/cmd/range.go | 2 +- tools/benchmark/cmd/root.go | 4 +- tools/benchmark/cmd/stm.go | 2 +- tools/benchmark/cmd/txn_mixed.go | 4 +- tools/benchmark/cmd/txn_put.go | 4 +- tools/benchmark/cmd/util.go | 12 ++-- tools/benchmark/cmd/watch.go | 4 +- tools/benchmark/cmd/watch_get.go | 4 +- tools/benchmark/cmd/watch_latency.go | 6 +- 17 files changed, 133 insertions(+), 110 deletions(-) create mode 100644 pkg/report/perfdash.go diff --git a/etcdctl/ctlv3/command/check.go b/etcdctl/ctlv3/command/check.go index 4626d5222f2a..c88015400605 100644 --- a/etcdctl/ctlv3/command/check.go +++ b/etcdctl/ctlv3/command/check.go @@ -182,7 +182,7 @@ func newCheckPerfCommand(cmd *cobra.Command, args []string) { bar := pb.New(cfg.duration) bar.Start() - r := report.NewReport("%4.4f") + r := report.NewReport("%4.4f", "", false) var wg sync.WaitGroup wg.Add(len(clients)) @@ -353,7 +353,7 @@ func newCheckDatascaleCommand(cmd *cobra.Command, args []string) { ksize, vsize := 512, 512 k, v := make([]byte, ksize), string(make([]byte, vsize)) - r := report.NewReport("%4.4f") + r := report.NewReport("%4.4f", "", false) var wg sync.WaitGroup wg.Add(len(clients)) diff --git a/pkg/report/perfdash.go b/pkg/report/perfdash.go new file mode 100644 index 000000000000..2fe9f8dad69d --- /dev/null +++ b/pkg/report/perfdash.go @@ -0,0 +1,87 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package report + +import ( + "encoding/json" + "fmt" + "math" + "os" + "path/filepath" + "time" +) + +type Metrics struct { + Perc50 float64 `json:"Perc50"` + Perc90 float64 `json:"Perc90"` + Perc99 float64 `json:"Perc99"` +} + +type Labels struct { + Metric string `json:"Metric"` +} + +type DataItem struct { + Data Metrics `json:"data"` + Labels Labels `json:"labels"` + Unit string `json:"unit"` +} + +type perfdashFormattedReport struct { + Version string `json:"version"` + DataItems []DataItem `json:"dataItems"` +} + +func (r *report) writePerfDashReport(reportName string) { + pcls, data := Percentiles(r.stats.Lats) + pclsData := make(map[float64]float64) + for i := 0; i < len(pcls); i++ { + pclsData[pcls[i]] = data[i] * 1000 // Since the reported data is in seconds, convert to ms. + } + report := perfdashFormattedReport{ + Version: "v1", + DataItems: []DataItem{ + { + Data: Metrics{ + Perc50: math.Round(pclsData[50]*10000) / 10000, + Perc90: math.Round(pclsData[90]*10000) / 10000, + Perc99: math.Round(pclsData[99]*10000) / 10000, + }, + Unit: "ms", + Labels: Labels{ + Metric: "APIResponsiveness", + }, + }, + }, + } + reportB, _ := json.MarshalIndent(report, "", " ") + + artifactsDir := os.Getenv("ARTIFACTS") + if artifactsDir == "" { + artifactsDir = "./_artifacts" + } + + fileName := fmt.Sprintf("etcd_perf_%s_%s.json", reportName, time.Now().UTC().Format(time.RFC3339)) + err := os.MkdirAll(artifactsDir, 0o755) + if err != nil { + fmt.Println("Error creating artifacts directory:", err) + } + destPath := filepath.Join(artifactsDir, fileName) + err = os.WriteFile(destPath, reportB, 0o644) + if err != nil { + fmt.Println("Error writing to file:", err) + } + fmt.Println("Successfully created a JSON perf report at", destPath) +} diff --git a/pkg/report/report.go b/pkg/report/report.go index f92a8c4e1453..3f578e9f1eec 100644 --- a/pkg/report/report.go +++ b/pkg/report/report.go @@ -17,12 +17,9 @@ package report import ( - "encoding/json" "fmt" "maps" "math" - "os" - "path/filepath" "slices" "sort" "strings" @@ -44,7 +41,8 @@ type Result struct { func (res *Result) Duration() time.Duration { return res.End.Sub(res.Start) } type report struct { - generateJsonReport bool + generatePerfReport bool + reportName string precision string results chan Result @@ -52,27 +50,6 @@ type report struct { sps *secondPoints } -type Metrics struct { - Perc50 float64 `json:"Perc50"` - Perc90 float64 `json:"Perc90"` - Perc99 float64 `json:"Perc99"` -} - -type Labels struct { - Metric string `json:"Metric"` -} - -type DataItem struct { - Data Metrics `json:"data"` - Labels Labels `json:"labels"` - Unit string `json:"unit"` -} - -type perfdashFormattedReport struct { - DataItems []DataItem `json:"dataItems"` - Version string `json:"version"` -} - // Stats exposes results raw data. type Stats struct { AvgTotal float64 @@ -106,22 +83,23 @@ type Report interface { Stats() <-chan Stats } -func NewReport(precision string, generateJsonReport bool) Report { - return newReport(precision, generateJsonReport) +func NewReport(precision, reportName string, generatePerfReport bool) Report { + return newReport(precision, reportName, generatePerfReport) } -func newReport(precision string, generateJsonReport bool) *report { +func newReport(precision, reportName string, generatePerfReport bool) *report { r := &report{ results: make(chan Result, 16), precision: precision, - generateJsonReport: generateJsonReport, + generatePerfReport: generatePerfReport, + reportName: reportName, } r.stats.ErrorDist = make(map[string]int) return r } -func NewReportSample(precision string, generateJsonReport bool) Report { - r := NewReport(precision, generateJsonReport).(*report) +func NewReportSample(precision, reportName string, generatePerfReport bool) Report { + r := NewReport(precision, reportName, generatePerfReport).(*report) r.sps = newSecondPoints() return r } @@ -133,6 +111,9 @@ func (r *report) Run() <-chan string { go func() { defer close(donec) r.processResults() + if r.generatePerfReport { + r.writePerfDashReport(r.reportName) + } donec <- r.String() }() return donec @@ -183,8 +164,8 @@ func (r *report) sec2str(sec float64) string { return fmt.Sprintf(r.precision+" type reportRate struct{ *report } -func NewReportRate(precision string, generateJsonReport bool) Report { - return &reportRate{NewReport(precision, generateJsonReport).(*report)} +func NewReportRate(precision, reportName string, generatePerfReport bool) Report { + return &reportRate{NewReport(precision, reportName, generatePerfReport).(*report)} } func (r *reportRate) String() string { @@ -254,54 +235,9 @@ func (r *report) sprintLatencies() string { s += fmt.Sprintf(" %v%% in %s.\n", pctls[i], r.sec2str(data[i])) } } - if r.generateJsonReport { - r.generateJsonBenchmarkReport() - } return s } -func (r *report) generateJsonBenchmarkReport() { - pcls, data := Percentiles(r.stats.Lats) - pclsData := make(map[float64]float64) - for i := 0; i < len(pcls); i++ { - pclsData[pcls[i]] = data[i] * 1000 // Since the reported data is in seconds, convert to ms. - } - report := perfdashFormattedReport{ - Version: "v1", - DataItems: []DataItem{ - { - Data: Metrics{ - Perc50: math.Round(pclsData[50]*10000) / 10000, - Perc90: math.Round(pclsData[90]*10000) / 10000, - Perc99: math.Round(pclsData[99]*10000) / 10000, - }, - Unit: "ms", - Labels: Labels{ - Metric: "APIResponsiveness", - }, - }, - }, - } - reportB, _ := json.MarshalIndent(report, "", " ") - - artifactsDir := os.Getenv("ARTIFACTS") - if artifactsDir == "" { - artifactsDir = "./_artifacts" - } - - fileName := fmt.Sprintf("etcd_perf_%s.json", time.Now().UTC().Format(time.RFC3339)) - err := os.MkdirAll(artifactsDir, 755) - if err != nil { - fmt.Println("Error creating artifacts directory:", err) - } - destPath := filepath.Join(artifactsDir, fileName) - err = os.WriteFile(destPath, reportB, 0644) - if err != nil { - fmt.Println("Error writing to file:", err) - } - fmt.Println("Successfully created a JSON perf report at", destPath) -} - func (r *report) histogram() string { bc := 10 buckets := make([]float64, bc+1) diff --git a/pkg/report/report_test.go b/pkg/report/report_test.go index 0c9e370289ba..1d5a49e073c0 100644 --- a/pkg/report/report_test.go +++ b/pkg/report/report_test.go @@ -37,7 +37,7 @@ func TestPercentiles(t *testing.T) { } func TestReport(t *testing.T) { - r := NewReportSample("%f") + r := NewReportSample("%f", "", false) go func() { start := time.Now() for i := 0; i < 5; i++ { @@ -77,7 +77,7 @@ func TestReport(t *testing.T) { } func TestWeightedReport(t *testing.T) { - r := NewWeightedReport(NewReport("%f"), "%f") + r := NewWeightedReport(NewReport("%f", "", false), "%f", "", false) go func() { start := time.Now() for i := 0; i < 5; i++ { diff --git a/pkg/report/weighted.go b/pkg/report/weighted.go index a059294405db..a06b593742eb 100644 --- a/pkg/report/weighted.go +++ b/pkg/report/weighted.go @@ -30,10 +30,10 @@ type weightedReport struct { // NewWeightedReport returns a report that includes // both weighted and unweighted statistics. -func NewWeightedReport(r Report, precision string, generatePerfJson bool) Report { +func NewWeightedReport(r Report, precision, reportName string, generatePerfReport bool) Report { return &weightedReport{ baseReport: r, - report: newReport(precision, generatePerfJson), + report: newReport(precision, reportName, generatePerfReport), results: make(chan Result, 16), } } diff --git a/tools/benchmark/cmd/lease.go b/tools/benchmark/cmd/lease.go index 5ed3dbe4b3e0..941c98828cec 100644 --- a/tools/benchmark/cmd/lease.go +++ b/tools/benchmark/cmd/lease.go @@ -40,14 +40,14 @@ func init() { leaseKeepaliveCmd.Flags().IntVar(&leaseKeepaliveTotal, "total", 10000, "Total number of lease keepalive requests") } -func leaseKeepaliveFunc(_ *cobra.Command, _ []string) { +func leaseKeepaliveFunc(cmd *cobra.Command, _ []string) { requests := make(chan struct{}) clients := mustCreateClients(totalClients, totalConns) bar = pb.New(leaseKeepaliveTotal) bar.Start() - r := newReport() + r := newReport(cmd.Name()) for i := range clients { wg.Add(1) go func(c v3.Lease) { diff --git a/tools/benchmark/cmd/mvcc-put.go b/tools/benchmark/cmd/mvcc-put.go index 25cdb61d5417..70731cc87f9e 100644 --- a/tools/benchmark/cmd/mvcc-put.go +++ b/tools/benchmark/cmd/mvcc-put.go @@ -69,7 +69,7 @@ func createBytesSlice(bytesN, sliceN int) [][]byte { return rs } -func mvccPutFunc(_ *cobra.Command, _ []string) { +func mvccPutFunc(cmd *cobra.Command, _ []string) { if cpuProfPath != "" { f, err := os.Create(cpuProfPath) if err != nil { @@ -105,7 +105,7 @@ func mvccPutFunc(_ *cobra.Command, _ []string) { vals := createBytesSlice(valueSize, mvccTotalRequests*nrTxnOps) weight := float64(nrTxnOps) - r := newWeightedReport() + r := newWeightedReport(cmd.Name()) rrc := r.Results() rc := r.Run() diff --git a/tools/benchmark/cmd/put.go b/tools/benchmark/cmd/put.go index 62b9a3dc83cc..7f66046f2109 100644 --- a/tools/benchmark/cmd/put.go +++ b/tools/benchmark/cmd/put.go @@ -88,7 +88,7 @@ func putFunc(cmd *cobra.Command, _ []string) { bar = pb.New(putTotal) bar.Start() - r := newReport() + r := newReport(cmd.Name()) for i := range clients { wg.Add(1) go func(c *v3.Client) { diff --git a/tools/benchmark/cmd/range.go b/tools/benchmark/cmd/range.go index 111d69bd0558..6bbed8ac3e09 100644 --- a/tools/benchmark/cmd/range.go +++ b/tools/benchmark/cmd/range.go @@ -86,7 +86,7 @@ func rangeFunc(cmd *cobra.Command, args []string) { bar = pb.New(rangeTotal) bar.Start() - r := newReport() + r := newReport(cmd.Name()) for i := range clients { wg.Add(1) go func(c *v3.Client) { diff --git a/tools/benchmark/cmd/root.go b/tools/benchmark/cmd/root.go index 7eaca85a805a..95aadde05639 100644 --- a/tools/benchmark/cmd/root.go +++ b/tools/benchmark/cmd/root.go @@ -56,7 +56,7 @@ var ( targetLeader bool autoSyncInterval time.Duration - generateJsonReport bool + generatePerfReport bool ) func init() { @@ -77,5 +77,5 @@ func init() { RootCmd.PersistentFlags().BoolVar(&targetLeader, "target-leader", false, "connect only to the leader node") RootCmd.PersistentFlags().DurationVar(&autoSyncInterval, "auto-sync-interval", time.Duration(0), "AutoSyncInterval is the interval to update endpoints with its latest members") - RootCmd.PersistentFlags().BoolVar(&generateJsonReport, "json", false, "Generate the output in JSON format for perfdash consumption") + RootCmd.PersistentFlags().BoolVar(&generatePerfReport, "report-perfdash", false, "Generate benchmark report in perfdash format") } diff --git a/tools/benchmark/cmd/stm.go b/tools/benchmark/cmd/stm.go index d6dfba0d397e..22dc88657142 100644 --- a/tools/benchmark/cmd/stm.go +++ b/tools/benchmark/cmd/stm.go @@ -110,7 +110,7 @@ func stmFunc(cmd *cobra.Command, _ []string) { bar = pb.New(stmTotal) bar.Start() - r := newReport() + r := newReport(cmd.Name()) for i := range clients { wg.Add(1) go doSTM(clients[i], requests, r.Results()) diff --git a/tools/benchmark/cmd/txn_mixed.go b/tools/benchmark/cmd/txn_mixed.go index ffc004ecfe20..bbd88d599c09 100644 --- a/tools/benchmark/cmd/txn_mixed.go +++ b/tools/benchmark/cmd/txn_mixed.go @@ -95,8 +95,8 @@ func mixedTxnFunc(cmd *cobra.Command, _ []string) { bar = pb.New(mixedTxnTotal) bar.Start() - reportRead := newReport() - reportWrite := newReport() + reportRead := newReport(cmd.Name() + "-read") + reportWrite := newReport(cmd.Name() + "-write") for i := range clients { wg.Add(1) go func(c *v3.Client) { diff --git a/tools/benchmark/cmd/txn_put.go b/tools/benchmark/cmd/txn_put.go index d69293b838a8..5e2d9d7a4073 100644 --- a/tools/benchmark/cmd/txn_put.go +++ b/tools/benchmark/cmd/txn_put.go @@ -55,7 +55,7 @@ func init() { txnPutCmd.Flags().IntVar(&keySpaceSize, "key-space-size", 1, "Maximum possible keys") } -func txnPutFunc(_ *cobra.Command, _ []string) { +func txnPutFunc(cmd *cobra.Command, _ []string) { if keySpaceSize <= 0 { fmt.Fprintf(os.Stderr, "expected positive --key-space-size, got (%v)", keySpaceSize) os.Exit(1) @@ -78,7 +78,7 @@ func txnPutFunc(_ *cobra.Command, _ []string) { bar = pb.New(txnPutTotal) bar.Start() - r := newReport() + r := newReport(cmd.Name()) for i := range clients { wg.Add(1) go func(c *v3.Client) { diff --git a/tools/benchmark/cmd/util.go b/tools/benchmark/cmd/util.go index 3988d316d358..4233b8477d2b 100644 --- a/tools/benchmark/cmd/util.go +++ b/tools/benchmark/cmd/util.go @@ -157,24 +157,24 @@ func mustRandBytes(n int) []byte { return rb } -func newReport() report.Report { +func newReport(reportName string) report.Report { p := "%4.4f" if precise { p = "%g" } if sample { - return report.NewReportSample(p, generateJsonReport) + return report.NewReportSample(p, reportName, generatePerfReport) } - return report.NewReport(p, generateJsonReport) + return report.NewReport(p, reportName, generatePerfReport) } -func newWeightedReport() report.Report { +func newWeightedReport(reportName string) report.Report { p := "%4.4f" if precise { p = "%g" } if sample { - return report.NewReportSample(p, generateJsonReport) + return report.NewReportSample(p, reportName, generatePerfReport) } - return report.NewWeightedReport(report.NewReport(p, generateJsonReport), p, generateJsonReport) + return report.NewWeightedReport(report.NewReport(p, reportName, generatePerfReport), p, reportName, generatePerfReport) } diff --git a/tools/benchmark/cmd/watch.go b/tools/benchmark/cmd/watch.go index a52a34360f2b..7b707bf96aae 100644 --- a/tools/benchmark/cmd/watch.go +++ b/tools/benchmark/cmd/watch.go @@ -117,7 +117,7 @@ func benchMakeWatches(clients []*clientv3.Client, wk *watchedKeys) { bar = pb.New(watchStreams * watchWatchesPerStream) bar.Start() - r := newReport() + r := newReport("watch-make") rch := r.Results() wg.Add(len(streams) + 1) @@ -189,7 +189,7 @@ func benchPutWatches(clients []*clientv3.Client, wk *watchedKeys) { bar = pb.New(eventsTotal) bar.Start() - r := newReport() + r := newReport("watch-put") wg.Add(len(wk.watches)) nrRxed := int32(eventsTotal) diff --git a/tools/benchmark/cmd/watch_get.go b/tools/benchmark/cmd/watch_get.go index b9a8bc3363d5..96abad665c75 100644 --- a/tools/benchmark/cmd/watch_get.go +++ b/tools/benchmark/cmd/watch_get.go @@ -49,7 +49,7 @@ func init() { watchGetCmd.Flags().IntVar(&watchEvents, "events", 8, "Number of events per watcher") } -func watchGetFunc(_ *cobra.Command, _ []string) { +func watchGetFunc(cmd *cobra.Command, _ []string) { clients := mustCreateClients(totalClients, totalConns) getClient := mustCreateClients(1, 1) @@ -75,7 +75,7 @@ func watchGetFunc(_ *cobra.Command, _ []string) { bar.Start() // report from trying to do serialized gets with concurrent watchers - r := newReport() + r := newReport(cmd.Name()) ctx, cancel := context.WithCancel(context.TODO()) f := func() { defer close(r.Results()) diff --git a/tools/benchmark/cmd/watch_latency.go b/tools/benchmark/cmd/watch_latency.go index 2e60860b460d..4afe636d88cf 100644 --- a/tools/benchmark/cmd/watch_latency.go +++ b/tools/benchmark/cmd/watch_latency.go @@ -60,7 +60,7 @@ func init() { watchLatencyCmd.Flags().IntVar(&watchLValueSize, "val-size", 32, "Value size of watch response") } -func watchLatencyFunc(_ *cobra.Command, _ []string) { +func watchLatencyFunc(cmd *cobra.Command, _ []string) { key := string(mustRandBytes(watchLKeySize)) value := string(mustRandBytes(watchLValueSize)) wchs := setupWatchChannels(key) @@ -93,9 +93,9 @@ func watchLatencyFunc(_ *cobra.Command, _ []string) { }() } - putReport := newReport() + putReport := newReport(cmd.Name() + "-put") putReportResults := putReport.Run() - watchReport := newReport() + watchReport := newReport(cmd.Name() + "-watch") watchReportResults := watchReport.Run() for i := 0; i < watchLPutTotal; i++ { // limit key put as per reqRate From cea7fcd2adc83d6578d53fefd719c9fc244a77b5 Mon Sep 17 00:00:00 2001 From: Nont Date: Sat, 14 Jun 2025 22:32:12 -0500 Subject: [PATCH 0295/1068] Refactor recording client management Signed-off-by: Nont --- .../test-template/robustness/traffic/main.go | 46 ++++------- tests/robustness/client/client.go | 79 +++++++++++++++++++ tests/robustness/client/watch.go | 8 +- tests/robustness/main_test.go | 14 ++-- tests/robustness/traffic/traffic.go | 39 ++++----- 5 files changed, 124 insertions(+), 62 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index de7f18de175b..74319b2db659 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -93,12 +93,12 @@ func main() { func runTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, hosts []string, baseTime time.Time, duration time.Duration) ([]report.ClientReport, error) { ids := identity.NewIDProvider() - r, err := traffic.CheckEmptyDatabaseAtStart(ctx, lg, hosts, ids, baseTime) + trafficSet := client.NewSet(ids, baseTime) + defer trafficSet.Close() + err := traffic.CheckEmptyDatabaseAtStart(ctx, lg, hosts, trafficSet) if err != nil { lg.Fatal("Failed empty database at start check", zap.Error(err)) } - trafficReports := []report.ClientReport{r} - watchReport := []report.ClientReport{} maxRevisionChan := make(chan int64, 1) watchConfig := client.WatchConfig{ RequestProgress: true, @@ -107,22 +107,23 @@ func runTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, hosts [ startTime := time.Since(baseTime) g.Go(func() error { defer close(maxRevisionChan) - trafficReports = slices.Concat(trafficReports, simulateTraffic(ctx, tf, hosts, ids, baseTime, duration)) - maxRevision := report.OperationsMaxRevision(trafficReports) + simulateTraffic(ctx, tf, hosts, trafficSet, duration) + maxRevision := report.OperationsMaxRevision(trafficSet.Reports()) maxRevisionChan <- maxRevision lg.Info("Finished simulating Traffic", zap.Int64("max-revision", maxRevision)) return nil }) + watchSet := client.NewSet(ids, baseTime) + defer watchSet.Close() g.Go(func() error { - var err error - watchReport, err = client.CollectClusterWatchEvents(ctx, lg, hosts, maxRevisionChan, watchConfig, baseTime, ids) + err := client.CollectClusterWatchEvents(ctx, lg, hosts, maxRevisionChan, watchConfig, watchSet) return err }) if err := g.Wait(); err != nil { return nil, err } endTime := time.Since(baseTime) - reports := slices.Concat(trafficReports, watchReport) + reports := slices.Concat(trafficSet.Reports(), watchSet.Reports()) totalStats := traffic.CalculateStats(reports, startTime, endTime) lg.Info("Completed traffic generation", zap.Int("successes", totalStats.Successes), @@ -134,59 +135,46 @@ func runTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, hosts [ return reports, nil } -func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, ids identity.Provider, baseTime time.Time, duration time.Duration) []report.ClientReport { - var mux sync.Mutex +func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, clientSet *client.ClientSet, duration time.Duration) { var wg sync.WaitGroup storage := identity.NewLeaseIDStorage() limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), profile.BurstableQPS) concurrencyLimiter := traffic.NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) finish := closeAfter(ctx, duration) - reports := []report.ClientReport{} keyStore := traffic.NewKeyStore(10, "key") - for i := 0; i < profile.ClientCount; i++ { - c := connect([]string{hosts[i%len(hosts)]}, ids, baseTime) + for i := range profile.ClientCount { + c := connect(clientSet, []string{hosts[i%len(hosts)]}) wg.Add(1) go func(c *client.RecordingClient) { defer wg.Done() defer c.Close() - tf.RunTrafficLoop(ctx, c, limiter, - ids, + clientSet.IdentityProvider(), storage, concurrencyLimiter, keyStore, finish, ) - mux.Lock() - reports = append(reports, c.Report()) - mux.Unlock() }(c) } wg.Add(1) - compactClient := connect(hosts, ids, baseTime) + compactClient := connect(clientSet, hosts) go func(c *client.RecordingClient) { defer wg.Done() defer c.Close() tf.RunCompactLoop(ctx, c, traffic.DefaultCompactionPeriod, finish) - mux.Lock() - reports = append(reports, c.Report()) - mux.Unlock() }(compactClient) defragPeriod := traffic.DefaultCompactionPeriod * time.Duration(len(hosts)) for _, h := range hosts { - c := connect([]string{h}, ids, baseTime) + c := connect(clientSet, []string{h}) wg.Add(1) go func(c *client.RecordingClient) { defer wg.Done() defer c.Close() runDefragLoop(ctx, c, defragPeriod, finish) - mux.Lock() - reports = append(reports, c.Report()) - mux.Unlock() }(c) } wg.Wait() - return reports } func runDefragLoop(ctx context.Context, c *client.RecordingClient, period time.Duration, finish <-chan struct{}) { @@ -210,8 +198,8 @@ func runDefragLoop(ctx context.Context, c *client.RecordingClient, period time.D } } -func connect(endpoints []string, ids identity.Provider, baseTime time.Time) *client.RecordingClient { - cli, err := client.NewRecordingClient(endpoints, ids, baseTime) +func connect(cs *client.ClientSet, endpoints []string) *client.RecordingClient { + cli, err := cs.NewClient(endpoints) if err != nil { // Antithesis Assertion: client should always be able to connect to an etcd host assert.Unreachable("Client failed to connect to an etcd host", map[string]any{"endpoints": endpoints, "error": err}) diff --git a/tests/robustness/client/client.go b/tests/robustness/client/client.go index 21a51832d724..9eb2141a92f1 100644 --- a/tests/robustness/client/client.go +++ b/tests/robustness/client/client.go @@ -16,6 +16,7 @@ package client import ( "context" + "errors" "fmt" "sync" "time" @@ -371,3 +372,81 @@ func toWatchEvent(event clientv3.Event) (watch model.WatchEvent) { } return watch } + +type ClientSet struct { + idProvider identity.Provider + baseTime time.Time + + mux sync.Mutex + closed bool + clients []*RecordingClient + reports []report.ClientReport +} + +func NewSet(ids identity.Provider, baseTime time.Time) *ClientSet { + return &ClientSet{ + idProvider: ids, + baseTime: baseTime, + + clients: []*RecordingClient{}, + } +} + +func (cs *ClientSet) NewClient(endpoints []string) (*RecordingClient, error) { + cs.mux.Lock() + defer cs.mux.Unlock() + if cs.closed { + return nil, errors.New("the clientset is already closed") + } + cli, err := NewRecordingClient(endpoints, cs.idProvider, cs.baseTime) + if err != nil { + return nil, err + } + cs.clients = append(cs.clients, cli) + return cli, nil +} + +func (cs *ClientSet) Reports() []report.ClientReport { + cs.mux.Lock() + defer cs.mux.Unlock() + if !cs.closed { + cs.close() + } + if cs.reports == nil { + reports := cs.generateReports() + cs.reports = reports + } + return cs.reports +} + +func (cs *ClientSet) Close() { + cs.mux.Lock() + defer cs.mux.Unlock() + cs.close() +} + +func (cs *ClientSet) close() { + if cs.closed { + return + } + for _, c := range cs.clients { + c.Close() + } + cs.closed = true +} + +func (cs *ClientSet) generateReports() []report.ClientReport { + reports := make([]report.ClientReport, 0, len(cs.clients)) + for _, c := range cs.clients { + reports = append(reports, c.Report()) + } + return reports +} + +func (cs *ClientSet) IdentityProvider() identity.Provider { + return cs.idProvider +} + +func (cs *ClientSet) BaseTime() time.Time { + return cs.baseTime +} diff --git a/tests/robustness/client/watch.go b/tests/robustness/client/watch.go index 47d55ad34bc5..f44e4fbc37b0 100644 --- a/tests/robustness/client/watch.go +++ b/tests/robustness/client/watch.go @@ -19,16 +19,14 @@ import ( "errors" "fmt" "testing" - "time" "go.uber.org/zap" "golang.org/x/sync/errgroup" - "go.etcd.io/etcd/tests/v3/robustness/identity" "go.etcd.io/etcd/tests/v3/robustness/report" ) -func CollectClusterWatchEvents(ctx context.Context, lg *zap.Logger, endpoints []string, maxRevisionChan <-chan int64, cfg WatchConfig, baseTime time.Time, ids identity.Provider) ([]report.ClientReport, error) { +func CollectClusterWatchEvents(ctx context.Context, lg *zap.Logger, endpoints []string, maxRevisionChan <-chan int64, cfg WatchConfig, clientSet *ClientSet) error { var g errgroup.Group reports := make([]report.ClientReport, len(endpoints)) memberMaxRevisionChans := make([]chan int64, len(endpoints)) @@ -36,7 +34,7 @@ func CollectClusterWatchEvents(ctx context.Context, lg *zap.Logger, endpoints [] memberMaxRevisionChan := make(chan int64, 1) memberMaxRevisionChans[i] = memberMaxRevisionChan g.Go(func() error { - c, err := NewRecordingClient([]string{endpoint}, ids, baseTime) + c, err := clientSet.NewClient([]string{endpoint}) if err != nil { return err } @@ -54,7 +52,7 @@ func CollectClusterWatchEvents(ctx context.Context, lg *zap.Logger, endpoints [] } return nil }) - return reports, g.Wait() + return g.Wait() } type WatchConfig struct { diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index 55879cabe9af..c2f453807a29 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -20,6 +20,7 @@ import ( "math/rand" "os" "path/filepath" + "slices" "strings" "testing" "time" @@ -128,7 +129,7 @@ func runScenario(ctx context.Context, t *testing.T, s scenarios.TestScenario, lg ctx, cancel := context.WithCancel(ctx) defer cancel() g := errgroup.Group{} - var operationReport, watchReport, failpointClientReport []report.ClientReport + var failpointClientReport []report.ClientReport failpointInjected := make(chan report.FailpointInjection, 1) // using baseTime time-measuring operation to get monotonic clock reading @@ -152,19 +153,22 @@ func runScenario(ctx context.Context, t *testing.T, s scenarios.TestScenario, lg } return nil }) + trafficSet := client.NewSet(ids, baseTime) + defer trafficSet.Close() maxRevisionChan := make(chan int64, 1) g.Go(func() error { defer close(maxRevisionChan) - operationReport = traffic.SimulateTraffic(ctx, t, lg, clus, s.Profile, s.Traffic, failpointInjected, baseTime, ids) + operationReport := traffic.SimulateTraffic(ctx, t, lg, clus, s.Profile, s.Traffic, failpointInjected, trafficSet) maxRevision := report.OperationsMaxRevision(operationReport) maxRevisionChan <- maxRevision lg.Info("Finished simulating Traffic", zap.Int64("max-revision", maxRevision)) return nil }) + watchSet := client.NewSet(ids, baseTime) + defer watchSet.Close() g.Go(func() error { - var err error endpoints := processEndpoints(clus) - watchReport, err = client.CollectClusterWatchEvents(ctx, lg, endpoints, maxRevisionChan, s.Watch, baseTime, ids) + err := client.CollectClusterWatchEvents(ctx, lg, endpoints, maxRevisionChan, s.Watch, watchSet) return err }) err := g.Wait() @@ -176,7 +180,7 @@ func runScenario(ctx context.Context, t *testing.T, s scenarios.TestScenario, lg if err != nil { t.Error(err) } - return append(operationReport, append(failpointClientReport, watchReport...)...) + return slices.Concat(trafficSet.Reports(), watchSet.Reports(), failpointClientReport) } func randomizeTime(base time.Duration, jitter time.Duration) time.Duration { diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index 223b539856b4..c33f148d8c85 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -55,17 +55,15 @@ var ( } ) -func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2e.EtcdProcessCluster, profile Profile, traffic Traffic, failpointInjected <-chan report.FailpointInjection, baseTime time.Time, ids identity.Provider) []report.ClientReport { - mux := sync.Mutex{} +func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2e.EtcdProcessCluster, profile Profile, traffic Traffic, failpointInjected <-chan report.FailpointInjection, clientSet *client.ClientSet) []report.ClientReport { endpoints := clus.EndpointsGRPC() lm := identity.NewLeaseIDStorage() // Use the highest MaximalQPS of all traffic profiles as burst otherwise actual traffic may be accidentally limited limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), profile.BurstableQPS) - r, err := CheckEmptyDatabaseAtStart(ctx, lg, endpoints, ids, baseTime) + err := CheckEmptyDatabaseAtStart(ctx, lg, endpoints, clientSet) require.NoError(t, err) - reports := []report.ClientReport{r} wg := sync.WaitGroup{} nonUniqueWriteLimiter := NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) @@ -74,24 +72,22 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 keyStore := NewKeyStore(10, "key") lg.Info("Start traffic") - startTime := time.Since(baseTime) - for i := 0; i < profile.ClientCount; i++ { + startTime := time.Since(clientSet.BaseTime()) + for i := range profile.ClientCount { wg.Add(1) - c, nerr := client.NewRecordingClient([]string{endpoints[i%len(endpoints)]}, ids, baseTime) + + c, nerr := clientSet.NewClient([]string{endpoints[i%len(endpoints)]}) require.NoError(t, nerr) go func(c *client.RecordingClient) { defer wg.Done() defer c.Close() - traffic.RunTrafficLoop(ctx, c, limiter, ids, lm, nonUniqueWriteLimiter, keyStore, finish) - mux.Lock() - reports = append(reports, c.Report()) - mux.Unlock() + traffic.RunTrafficLoop(ctx, c, limiter, clientSet.IdentityProvider(), lm, nonUniqueWriteLimiter, keyStore, finish) }(c) } if !profile.ForbidCompaction { wg.Add(1) - c, nerr := client.NewRecordingClient(endpoints, ids, baseTime) + c, nerr := clientSet.NewClient(endpoints) if nerr != nil { t.Fatal(nerr) } @@ -105,9 +101,6 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 } traffic.RunCompactLoop(ctx, c, compactionPeriod, finish) - mux.Lock() - reports = append(reports, c.Report()) - mux.Unlock() }(c) } var fr *report.FailpointInjection @@ -121,16 +114,16 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 close(finish) wg.Wait() lg.Info("Finished traffic") - endTime := time.Since(baseTime) + endTime := time.Since(clientSet.BaseTime()) time.Sleep(time.Second) // Ensure that last operation succeeds - cc, err := client.NewRecordingClient(endpoints, ids, baseTime) + cc, err := clientSet.NewClient(endpoints) require.NoError(t, err) defer cc.Close() _, err = cc.Put(ctx, "tombstone", "true") require.NoErrorf(t, err, "Last operation failed, validation requires last operation to succeed") - reports = append(reports, cc.Report()) + reports := clientSet.Reports() totalStats := CalculateStats(reports, startTime, endTime) beforeFailpointStats := CalculateStats(reports, startTime, fr.Start) @@ -207,10 +200,10 @@ type Traffic interface { ExpectUniqueRevision() bool } -func CheckEmptyDatabaseAtStart(ctx context.Context, lg *zap.Logger, endpoints []string, ids identity.Provider, baseTime time.Time) (report.ClientReport, error) { - c, err := client.NewRecordingClient(endpoints, ids, baseTime) +func CheckEmptyDatabaseAtStart(ctx context.Context, lg *zap.Logger, endpoints []string, cs *client.ClientSet) error { + c, err := cs.NewClient(endpoints) if err != nil { - return report.ClientReport{}, err + return err } defer c.Close() for { @@ -222,9 +215,9 @@ func CheckEmptyDatabaseAtStart(ctx context.Context, lg *zap.Logger, endpoints [] continue } if resp.Header.Revision != 1 { - return report.ClientReport{}, validate.ErrNotEmptyDatabase + return validate.ErrNotEmptyDatabase } break } - return c.Report(), nil + return nil } From a199985f8828046021b4e84b7651adf0eb9e105c Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Sat, 28 Jun 2025 00:24:06 +0530 Subject: [PATCH 0296/1068] dependency: bump github.com/google/yamlfmt from 0.17.0 to 0.17.1 This commit will bump github.com/google/yamlfmt from 0.17.0 to 0.17.1 Signed-off-by: ArkaSaha30 --- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 2c2cd5d4ef4e..b61b011b5c7e 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -12,7 +12,7 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint v1.64.8 github.com/google/addlicense v1.1.1 - github.com/google/yamlfmt v0.17.0 + github.com/google/yamlfmt v0.17.1 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 74ddd77c8358..99549b80f557 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -203,8 +203,8 @@ github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/Z github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/yamlfmt v0.17.0 h1:/tdp01rIlvLz3LgJ2NtMLnqgAadZm33P7GcPU680b+w= -github.com/google/yamlfmt v0.17.0/go.mod h1:gs0UEklJOYkUJ+OOCG0hg9n+DzucKDPlJElTUasVNK8= +github.com/google/yamlfmt v0.17.1 h1:NgKi21+MUVntxhPhIsstylN6QNCCfDv3wKNKwlm/3Hs= +github.com/google/yamlfmt v0.17.1/go.mod h1:gs0UEklJOYkUJ+OOCG0hg9n+DzucKDPlJElTUasVNK8= github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s= github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= From ac2b41e673d143a0f7adfac0f25663c65e335aac Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Sat, 28 Jun 2025 00:32:43 +0530 Subject: [PATCH 0297/1068] dependency: bump gotest.tools/gotestsum from 1.12.2 to 1.12.3 This commit will bump gotest.tools/gotestsum from 1.12.2 to 1.12.3 Signed-off-by: ArkaSaha30 --- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index b61b011b5c7e..fa0f9e689e03 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -17,7 +17,7 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 - gotest.tools/gotestsum v1.12.2 + gotest.tools/gotestsum v1.12.3 gotest.tools/v3 v3.5.2 honnef.co/go/tools v0.6.1 ) diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 99549b80f557..34da1161a44a 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -708,8 +708,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/gotestsum v1.12.2 h1:eli4tu9Q2D/ogDsEGSr8XfQfl7mT0JsGOG6DFtUiZ/Q= -gotest.tools/gotestsum v1.12.2/go.mod h1:kjRtCglPZVsSU0hFHX3M5VWBM6Y63emHuB14ER1/sow= +gotest.tools/gotestsum v1.12.3 h1:jFwenGJ0RnPkuKh2VzAYl1mDOJgbhobBDeL2W1iEycs= +gotest.tools/gotestsum v1.12.3/go.mod h1:Y1+e0Iig4xIRtdmYbEV7K7H6spnjc1fX4BOuUhWw2Wk= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= From bca29b59468c768d0f1171c072c6732ea74c5c64 Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 24 Jun 2025 23:15:50 +0800 Subject: [PATCH 0298/1068] .github/workflows: Add CFG_NODE_COUNT env for build-and-push-and-test job Signed-off-by: joshjms --- .github/workflows/antithesis-test.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 49d711d318fe..fdf41e3d8879 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -34,6 +34,11 @@ on: required: true type: string default: "" + cfg_node_count: + description: 'Number of nodes in the etcd cluster' + required: false + type: int + default: 3 # Declare default permissions as read only. permissions: read-all @@ -46,6 +51,8 @@ jobs: build-and-push-and-test: runs-on: ubuntu-latest environment: Antithesis + env: + CFG_NODE_COUNT: ${{ inputs.cfg_node_count }} steps: - name: Checkout the code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 From d757f8189156025d09bb738f47b4af4cac93d1f9 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Sat, 28 Jun 2025 00:35:53 +0530 Subject: [PATCH 0299/1068] dependency: bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.26.3 to 2.27.0 This commit will bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.26.3 to 2.27.0 Signed-off-by: ArkaSaha30 --- api/etcdserverpb/gw/rpc.pb.gw.go | 126 ++++++++++++++++++ api/go.mod | 6 +- api/go.sum | 12 +- client/v3/go.mod | 6 +- client/v3/go.sum | 12 +- etcdctl/go.mod | 6 +- etcdctl/go.sum | 12 +- etcdutl/go.mod | 6 +- etcdutl/go.sum | 12 +- go.mod | 6 +- go.sum | 12 +- pkg/go.mod | 2 +- pkg/go.sum | 4 +- .../v3electionpb/gw/v3election.pb.gw.go | 15 +++ .../api/v3lock/v3lockpb/gw/v3lock.pb.gw.go | 6 + server/go.mod | 6 +- server/go.sum | 12 +- tests/go.mod | 6 +- tests/go.sum | 12 +- tools/mod/go.mod | 6 +- tools/mod/go.sum | 12 +- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 +- 23 files changed, 225 insertions(+), 78 deletions(-) diff --git a/api/etcdserverpb/gw/rpc.pb.gw.go b/api/etcdserverpb/gw/rpc.pb.gw.go index 6ad1e9d9c653..8eb910b6efd1 100644 --- a/api/etcdserverpb/gw/rpc.pb.gw.go +++ b/api/etcdserverpb/gw/rpc.pb.gw.go @@ -46,6 +46,9 @@ func request_KV_Range_0(ctx context.Context, marshaler runtime.Marshaler, client if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Range(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -70,6 +73,9 @@ func request_KV_Put_0(ctx context.Context, marshaler runtime.Marshaler, client e if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Put(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -94,6 +100,9 @@ func request_KV_DeleteRange_0(ctx context.Context, marshaler runtime.Marshaler, if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.DeleteRange(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -118,6 +127,9 @@ func request_KV_Txn_0(ctx context.Context, marshaler runtime.Marshaler, client e if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Txn(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -142,6 +154,9 @@ func request_KV_Compact_0(ctx context.Context, marshaler runtime.Marshaler, clie if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Compact(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -209,6 +224,9 @@ func request_Lease_LeaseGrant_0(ctx context.Context, marshaler runtime.Marshaler if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.LeaseGrant(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -233,6 +251,9 @@ func request_Lease_LeaseRevoke_0(ctx context.Context, marshaler runtime.Marshale if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.LeaseRevoke(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -257,6 +278,9 @@ func request_Lease_LeaseRevoke_1(ctx context.Context, marshaler runtime.Marshale if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.LeaseRevoke(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -324,6 +348,9 @@ func request_Lease_LeaseTimeToLive_0(ctx context.Context, marshaler runtime.Mars if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.LeaseTimeToLive(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -348,6 +375,9 @@ func request_Lease_LeaseTimeToLive_1(ctx context.Context, marshaler runtime.Mars if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.LeaseTimeToLive(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -372,6 +402,9 @@ func request_Lease_LeaseLeases_0(ctx context.Context, marshaler runtime.Marshale if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.LeaseLeases(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -396,6 +429,9 @@ func request_Lease_LeaseLeases_1(ctx context.Context, marshaler runtime.Marshale if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.LeaseLeases(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -420,6 +456,9 @@ func request_Cluster_MemberAdd_0(ctx context.Context, marshaler runtime.Marshale if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.MemberAdd(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -444,6 +483,9 @@ func request_Cluster_MemberRemove_0(ctx context.Context, marshaler runtime.Marsh if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.MemberRemove(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -468,6 +510,9 @@ func request_Cluster_MemberUpdate_0(ctx context.Context, marshaler runtime.Marsh if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.MemberUpdate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -492,6 +537,9 @@ func request_Cluster_MemberList_0(ctx context.Context, marshaler runtime.Marshal if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.MemberList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -516,6 +564,9 @@ func request_Cluster_MemberPromote_0(ctx context.Context, marshaler runtime.Mars if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.MemberPromote(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -540,6 +591,9 @@ func request_Maintenance_Alarm_0(ctx context.Context, marshaler runtime.Marshale if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Alarm(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -564,6 +618,9 @@ func request_Maintenance_Status_0(ctx context.Context, marshaler runtime.Marshal if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Status(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -588,6 +645,9 @@ func request_Maintenance_Defragment_0(ctx context.Context, marshaler runtime.Mar if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Defragment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -612,6 +672,9 @@ func request_Maintenance_Hash_0(ctx context.Context, marshaler runtime.Marshaler if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Hash(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -636,6 +699,9 @@ func request_Maintenance_HashKV_0(ctx context.Context, marshaler runtime.Marshal if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.HashKV(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -660,6 +726,9 @@ func request_Maintenance_Snapshot_0(ctx context.Context, marshaler runtime.Marsh if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } stream, err := client.Snapshot(ctx, &protoReq) if err != nil { return nil, metadata, err @@ -680,6 +749,9 @@ func request_Maintenance_MoveLeader_0(ctx context.Context, marshaler runtime.Mar if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.MoveLeader(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -704,6 +776,9 @@ func request_Maintenance_Downgrade_0(ctx context.Context, marshaler runtime.Mars if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Downgrade(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -728,6 +803,9 @@ func request_Auth_AuthEnable_0(ctx context.Context, marshaler runtime.Marshaler, if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.AuthEnable(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -752,6 +830,9 @@ func request_Auth_AuthDisable_0(ctx context.Context, marshaler runtime.Marshaler if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.AuthDisable(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -776,6 +857,9 @@ func request_Auth_AuthStatus_0(ctx context.Context, marshaler runtime.Marshaler, if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.AuthStatus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -800,6 +884,9 @@ func request_Auth_Authenticate_0(ctx context.Context, marshaler runtime.Marshale if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Authenticate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -824,6 +911,9 @@ func request_Auth_UserAdd_0(ctx context.Context, marshaler runtime.Marshaler, cl if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UserAdd(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -848,6 +938,9 @@ func request_Auth_UserGet_0(ctx context.Context, marshaler runtime.Marshaler, cl if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UserGet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -872,6 +965,9 @@ func request_Auth_UserList_0(ctx context.Context, marshaler runtime.Marshaler, c if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UserList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -896,6 +992,9 @@ func request_Auth_UserDelete_0(ctx context.Context, marshaler runtime.Marshaler, if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UserDelete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -920,6 +1019,9 @@ func request_Auth_UserChangePassword_0(ctx context.Context, marshaler runtime.Ma if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UserChangePassword(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -944,6 +1046,9 @@ func request_Auth_UserGrantRole_0(ctx context.Context, marshaler runtime.Marshal if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UserGrantRole(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -968,6 +1073,9 @@ func request_Auth_UserRevokeRole_0(ctx context.Context, marshaler runtime.Marsha if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UserRevokeRole(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -992,6 +1100,9 @@ func request_Auth_RoleAdd_0(ctx context.Context, marshaler runtime.Marshaler, cl if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.RoleAdd(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -1016,6 +1127,9 @@ func request_Auth_RoleGet_0(ctx context.Context, marshaler runtime.Marshaler, cl if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.RoleGet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -1040,6 +1154,9 @@ func request_Auth_RoleList_0(ctx context.Context, marshaler runtime.Marshaler, c if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.RoleList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -1064,6 +1181,9 @@ func request_Auth_RoleDelete_0(ctx context.Context, marshaler runtime.Marshaler, if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.RoleDelete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -1088,6 +1208,9 @@ func request_Auth_RoleGrantPermission_0(ctx context.Context, marshaler runtime.M if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.RoleGrantPermission(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -1112,6 +1235,9 @@ func request_Auth_RoleRevokePermission_0(ctx context.Context, marshaler runtime. if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.RoleRevokePermission(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } diff --git a/api/go.mod b/api/go.mod index 343091c27aec..1bb309430b07 100644 --- a/api/go.mod +++ b/api/go.mod @@ -8,9 +8,9 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 github.com/stretchr/testify v1.10.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a + google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 google.golang.org/grpc v1.73.0 google.golang.org/protobuf v1.36.6 ) @@ -24,7 +24,7 @@ require ( golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 7a9abb298abc..7ad0610f904f 100644 --- a/api/go.sum +++ b/api/go.sum @@ -14,8 +14,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -73,10 +73,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/client/v3/go.mod b/client/v3/go.mod index ea190dacc1bb..8af1f1606a59 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -25,7 +25,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect @@ -37,8 +37,8 @@ require ( golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 251ab1e94dd3..443a2a476cfb 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -28,8 +28,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= @@ -107,10 +107,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 615291f5775b..a00e1a45c9bc 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -29,7 +29,7 @@ require ( github.com/fatih/color v1.18.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -42,8 +42,8 @@ require ( golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index f0b331b49031..8ca2158b0a82 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -36,8 +36,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -136,10 +136,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 244d144fd8a0..ce0f5bf1f566 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -54,7 +54,7 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -89,8 +89,8 @@ require ( golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect golang.org/x/time v0.12.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/grpc v1.73.0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 672d3c640f7b..7e3dfc4ab5b3 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -44,8 +44,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -179,10 +179,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/go.mod b/go.mod index 2f2c7b427104..7474f8b2d3a8 100644 --- a/go.mod +++ b/go.mod @@ -59,7 +59,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -95,8 +95,8 @@ require ( golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.4.0 // indirect diff --git a/go.sum b/go.sum index 03ff3004a6d4..9d8337f60bec 100644 --- a/go.sum +++ b/go.sum @@ -72,8 +72,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -243,10 +243,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/pkg/go.mod b/pkg/go.mod index 094ee3638ca0..c60c6936d907 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -26,7 +26,7 @@ require ( golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index 99e2c9ce6f51..2294f9e45cdc 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -59,8 +59,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/server/etcdserver/api/v3election/v3electionpb/gw/v3election.pb.gw.go b/server/etcdserver/api/v3election/v3electionpb/gw/v3election.pb.gw.go index 912149f5ab5b..0f4f23d6709e 100644 --- a/server/etcdserver/api/v3election/v3electionpb/gw/v3election.pb.gw.go +++ b/server/etcdserver/api/v3election/v3electionpb/gw/v3election.pb.gw.go @@ -46,6 +46,9 @@ func request_Election_Campaign_0(ctx context.Context, marshaler runtime.Marshale if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Campaign(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -70,6 +73,9 @@ func request_Election_Proclaim_0(ctx context.Context, marshaler runtime.Marshale if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Proclaim(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -94,6 +100,9 @@ func request_Election_Leader_0(ctx context.Context, marshaler runtime.Marshaler, if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Leader(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -118,6 +127,9 @@ func request_Election_Observe_0(ctx context.Context, marshaler runtime.Marshaler if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } stream, err := client.Observe(ctx, &protoReq) if err != nil { return nil, metadata, err @@ -138,6 +150,9 @@ func request_Election_Resign_0(ctx context.Context, marshaler runtime.Marshaler, if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Resign(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } diff --git a/server/etcdserver/api/v3lock/v3lockpb/gw/v3lock.pb.gw.go b/server/etcdserver/api/v3lock/v3lockpb/gw/v3lock.pb.gw.go index 5efb75939c9d..836214a0f49d 100644 --- a/server/etcdserver/api/v3lock/v3lockpb/gw/v3lock.pb.gw.go +++ b/server/etcdserver/api/v3lock/v3lockpb/gw/v3lock.pb.gw.go @@ -46,6 +46,9 @@ func request_Lock_Lock_0(ctx context.Context, marshaler runtime.Marshaler, clien if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Lock(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } @@ -70,6 +73,9 @@ func request_Lock_Unlock_0(ctx context.Context, marshaler runtime.Marshaler, cli if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Unlock(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return protov1.MessageV2(msg), metadata, err } diff --git a/server/go.mod b/server/go.mod index c66d22c8c2e0..9e9c850eacbf 100644 --- a/server/go.mod +++ b/server/go.mod @@ -16,7 +16,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.22.0 github.com/prometheus/client_model v0.6.2 @@ -39,7 +39,7 @@ require ( golang.org/x/crypto v0.39.0 golang.org/x/net v0.41.0 golang.org/x/time v0.12.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a + google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 google.golang.org/grpc v1.73.0 google.golang.org/protobuf v1.36.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 @@ -72,7 +72,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index 1a985a679236..d72b5b2c2279 100644 --- a/server/go.sum +++ b/server/go.sum @@ -64,8 +64,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -217,10 +217,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/tests/go.mod b/tests/go.mod index ed1f7fa7a14c..b40fbf3b9180 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -23,7 +23,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 github.com/prometheus/client_golang v1.22.0 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.64.0 @@ -97,8 +97,8 @@ require ( golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.4.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 42d83f2dec7a..e7412eea12b5 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -78,8 +78,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -249,10 +249,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index fa0f9e689e03..a0ae80114f51 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -13,7 +13,7 @@ require ( github.com/golangci/golangci-lint v1.64.8 github.com/google/addlicense v1.1.1 github.com/google/yamlfmt v0.17.1 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 @@ -223,8 +223,8 @@ require ( golang.org/x/term v0.32.0 // indirect golang.org/x/text v0.26.0 // indirect golang.org/x/tools v0.34.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/grpc v1.73.0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 34da1161a44a..0130b895680b 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -220,8 +220,8 @@ github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= @@ -685,10 +685,10 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 88f33d8e8cf9..77c4b09c085e 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -20,6 +20,6 @@ require ( golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/grpc v1.73.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 72eab19cb310..6a89707db999 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1841,8 +1841,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= From 7eb12911ed235962d0b8452174aba73154004a94 Mon Sep 17 00:00:00 2001 From: Nont Date: Mon, 23 Jun 2025 21:39:05 -0500 Subject: [PATCH 0300/1068] Add connect all client Signed-off-by: Nont --- .../test-template/robustness/traffic/main.go | 20 ++++++++++++++-- tests/robustness/scenarios/scenarios.go | 3 ++- tests/robustness/traffic/traffic.go | 23 +++++++++++++++---- 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index b067c899483e..75424b92b89f 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -43,7 +43,8 @@ var ( MinimalQPS: 100, MaximalQPS: 1000, BurstableQPS: 1000, - ClientCount: 3, + MemberClientCount: 3, + ClusterClientCount: 1, MaxNonUniqueRequestConcurrency: 3, } trafficNames = []string{ @@ -145,7 +146,7 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl concurrencyLimiter := traffic.NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) finish := closeAfter(ctx, duration) keyStore := traffic.NewKeyStore(10, "key") - for i := range profile.ClientCount { + for i := range profile.MemberClientCount { c := connect(clientSet, []string{hosts[i%len(hosts)]}) wg.Add(1) go func(c *client.RecordingClient) { @@ -160,6 +161,21 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl ) }(c) } + for range profile.ClusterClientCount { + c := connect(clientSet, hosts) + wg.Add(1) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + tf.RunTrafficLoop(ctx, c, limiter, + clientSet.IdentityProvider(), + storage, + concurrencyLimiter, + keyStore, + finish, + ) + }(c) + } wg.Add(1) compactClient := connect(clientSet, hosts) go func(c *client.RecordingClient) { diff --git a/tests/robustness/scenarios/scenarios.go b/tests/robustness/scenarios/scenarios.go index 9be207f82e01..cac904281528 100644 --- a/tests/robustness/scenarios/scenarios.go +++ b/tests/robustness/scenarios/scenarios.go @@ -243,7 +243,8 @@ func Regression(t *testing.T) []TestScenario { MinimalQPS: 50, MaximalQPS: 100, BurstableQPS: 100, - ClientCount: 8, + MemberClientCount: 6, + ClusterClientCount: 2, MaxNonUniqueRequestConcurrency: 3, }.WithoutCompaction(), Failpoint: failpoint.BatchCompactBeforeSetFinishedCompactPanic, diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index c33f148d8c85..4ae8710c8f67 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -43,14 +43,16 @@ var ( MinimalQPS: 100, MaximalQPS: 200, BurstableQPS: 1000, - ClientCount: 8, + MemberClientCount: 6, + ClusterClientCount: 2, MaxNonUniqueRequestConcurrency: 3, } HighTrafficProfile = Profile{ MinimalQPS: 100, MaximalQPS: 1000, BurstableQPS: 1000, - ClientCount: 8, + MemberClientCount: 6, + ClusterClientCount: 2, MaxNonUniqueRequestConcurrency: 3, } ) @@ -73,7 +75,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 lg.Info("Start traffic") startTime := time.Since(clientSet.BaseTime()) - for i := range profile.ClientCount { + for i := range profile.MemberClientCount { wg.Add(1) c, nerr := clientSet.NewClient([]string{endpoints[i%len(endpoints)]}) @@ -85,6 +87,18 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 traffic.RunTrafficLoop(ctx, c, limiter, clientSet.IdentityProvider(), lm, nonUniqueWriteLimiter, keyStore, finish) }(c) } + for range profile.ClusterClientCount { + wg.Add(1) + + c, nerr := clientSet.NewClient(endpoints) + require.NoError(t, nerr) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + + traffic.RunTrafficLoop(ctx, c, limiter, clientSet.IdentityProvider(), lm, nonUniqueWriteLimiter, keyStore, finish) + }(c) + } if !profile.ForbidCompaction { wg.Add(1) c, nerr := clientSet.NewClient(endpoints) @@ -179,7 +193,8 @@ type Profile struct { MaximalQPS float64 BurstableQPS int MaxNonUniqueRequestConcurrency int - ClientCount int + MemberClientCount int + ClusterClientCount int ForbidCompaction bool CompactPeriod time.Duration } From 8f0bd21e33b193b63d8bf2a93d8caad5118a4828 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 24 Jun 2025 11:38:02 +0100 Subject: [PATCH 0301/1068] Use security@etcd.io to receive any CVE report Signed-off-by: Benjamin Wang --- .github/ISSUE_TEMPLATE/bug-report.yml | 2 +- security/README.md | 4 ++-- security/email-templates.md | 2 ++ security/security-release-process.md | 6 +++--- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 5ba33bc16bc7..a7cfc14dc566 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -10,7 +10,7 @@ body: label: Bug report criteria description: Please confirm this bug report meets the following criteria. options: - - label: This bug report is not security related, security issues should be disclosed privately via [etcd maintainers](mailto:etcd-maintainers@googlegroups.com). + - label: This bug report is not security related, security issues should be disclosed privately via security@etcd.io. - label: This is not a support request or question, support requests or questions should be raised in the etcd [discussion forums](https://github.com/etcd-io/etcd/discussions). - label: You have read the etcd [bug reporting guidelines](https://github.com/etcd-io/etcd/blob/main/Documentation/contributor-guide/reporting_bugs.md). - label: Existing open issues along with etcd [frequently asked questions](https://etcd.io/docs/latest/faq) have been checked and this is not a duplicate. diff --git a/security/README.md b/security/README.md index 3129778cad0a..99193d1dd664 100644 --- a/security/README.md +++ b/security/README.md @@ -6,7 +6,7 @@ Join the [etcd-dev](https://groups.google.com/g/etcd-dev) group for emails about We’re extremely grateful for security researchers and users that report vulnerabilities to the etcd Open Source Community. All reports are thoroughly investigated by a dedicated committee of community volunteers called [Product Security Committee](security-release-process.md#product-security-committee). -To make a report, please email the private [etcd maintainers](mailto:etcd-maintainers@googlegroups.com) list with the security details and the details expected for [all etcd bug reports](https://github.com/etcd-io/etcd/blob/main/Documentation/contributor-guide/reporting_bugs.md). +To make a report, please email the private [security@etcd.io](mailto:security@etcd.io) list with the security details and the details expected for [all etcd bug reports](https://github.com/etcd-io/etcd/blob/main/Documentation/contributor-guide/reporting_bugs.md). ### When Should I Report a Vulnerability? @@ -43,6 +43,6 @@ This list provides actionable information regarding etcd security to multiple di ### Request to Join -New membership requests are sent to [etcd maintainers](mailto:etcd-maintainers@googlegroups.com). +New membership requests are sent to [security@etcd.io](mailto:security@etcd.io). File an issue [here](https://github.com/etcd-io/etcd/issues/new?template=distributors-application.md), filling in the criteria template. diff --git a/security/email-templates.md b/security/email-templates.md index 8d93f76d5bf5..766613716773 100644 --- a/security/email-templates.md +++ b/security/email-templates.md @@ -7,6 +7,7 @@ This is a collection of email templates to handle various situations the securit ``` Subject: Upcoming security release of etcd $VERSION To: etcd-dev@googlegroups.com +Cc: security@etcd-io Cc: etcd-maintainers@googlegroups.com Hello etcd Community, @@ -34,6 +35,7 @@ $PERSON on behalf of the etcd Product Security Committee and maintainers ``` Subject: Security release of etcd $VERSION is now available To: etcd-dev@googlegroups.com +Cc: security@etcd-io Cc: etcd-maintainers@googlegroups.com Hello etcd Community, diff --git a/security/security-release-process.md b/security/security-release-process.md index 78fb55dd967f..3dcb606a43b9 100644 --- a/security/security-release-process.md +++ b/security/security-release-process.md @@ -22,7 +22,7 @@ The PSC members will share various tasks as listed below: ### Contacting the Product Security Committee -Contact the team by sending email to [etcd maintainers](mailto:etcd-maintainers@googlegroups.com). +Contact the team by sending email to [security@etcd.io](mailto:security@etcd.io). ### Product Security Committee Membership @@ -55,7 +55,7 @@ The etcd Community asks that all suspected vulnerabilities be privately and resp ### Public Disclosure Processes -If anyone knows of a publicly disclosed security vulnerability please IMMEDIATELY email [etcd maintainers](mailto:etcd-maintainers@googlegroups.com) to inform the PSC about the vulnerability so they may start the patch, release, and communication process. +If anyone knows of a publicly disclosed security vulnerability please IMMEDIATELY email [security@etcd.io](mailto:security@etcd.io) to inform the PSC about the vulnerability so they may start the patch, release, and communication process. If possible the PSC will ask the person making the public report if the issue can be handled via a private disclosure process. If the reporter denies the PSC will move swiftly with the fix and release process. In extreme cases GitHub can be asked to delete the issue but this generally isn't necessary and is unlikely to make a public disclosure less damaging. @@ -90,7 +90,7 @@ If the CVSS score is under ~4.0 Note: CVSS is convenient but imperfect. Ultimately, the PSC has discretion on classifying the severity of a vulnerability. -The severity of the bug and related handling decisions must be discussed on the [etcd maintainers](mailto:etcd-maintainers@googlegroups.com) mailing list. +The severity of the bug and related handling decisions must be discussed on the [security@etcd.io](mailto:security@etcd.io) mailing list. ### Fix Disclosure Process From e4e403fe3b947ad6952ca7237b07592fc7cfa4f9 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 20 Jun 2025 12:57:29 +0200 Subject: [PATCH 0302/1068] Split model types into types.go file Signed-off-by: Marek Siarkowicz --- tests/robustness/model/deterministic.go | 208 --------------------- tests/robustness/model/types.go | 228 ++++++++++++++++++++++++ 2 files changed, 228 insertions(+), 208 deletions(-) create mode 100644 tests/robustness/model/types.go diff --git a/tests/robustness/model/deterministic.go b/tests/robustness/model/deterministic.go index dcadb3851036..0d8efa5c9215 100644 --- a/tests/robustness/model/deterministic.go +++ b/tests/robustness/model/deterministic.go @@ -16,9 +16,7 @@ package model import ( "encoding/json" - "errors" "fmt" - "hash/fnv" "html" "maps" "reflect" @@ -29,11 +27,6 @@ import ( "go.etcd.io/etcd/server/v3/storage/mvcc" ) -// RevisionForNonLinearizableResponse is a fake revision value used to -// separate responses for requests that are not linearizable, -// thus we need to ignore it in model when checking linearization. -const RevisionForNonLinearizableResponse = -1 - // DeterministicModel assumes a deterministic execution of etcd requests. All // requests that client called were executed and persisted by etcd. This // assumption is good for simulating etcd behavior (aka writing a fake), but not @@ -295,204 +288,3 @@ func attachToNewLease(s EtcdState, leaseID int64, key string) EtcdState { s.Leases[leaseID].Keys[key] = leased return s } - -type RequestType string - -const ( - Range RequestType = "range" - Txn RequestType = "txn" - LeaseGrant RequestType = "leaseGrant" - LeaseRevoke RequestType = "leaseRevoke" - Defragment RequestType = "defragment" - Compact RequestType = "compact" -) - -type EtcdRequest struct { - Type RequestType - LeaseGrant *LeaseGrantRequest - LeaseRevoke *LeaseRevokeRequest - Range *RangeRequest - Txn *TxnRequest - Defragment *DefragmentRequest - Compact *CompactRequest -} - -func (r *EtcdRequest) IsRead() bool { - if r.Type == Range { - return true - } - if r.Type != Txn { - return false - } - for _, op := range append(r.Txn.OperationsOnSuccess, r.Txn.OperationsOnFailure...) { - if op.Type != RangeOperation { - return false - } - } - return true -} - -type RangeRequest struct { - RangeOptions - Revision int64 -} - -type RangeOptions struct { - Start string - End string - Limit int64 -} - -type PutOptions struct { - Key string - Value ValueOrHash - LeaseID int64 -} - -type DeleteOptions struct { - Key string -} - -type TxnRequest struct { - Conditions []EtcdCondition - OperationsOnSuccess []EtcdOperation - OperationsOnFailure []EtcdOperation -} - -type EtcdCondition struct { - Key string - ExpectedRevision int64 - ExpectedVersion int64 -} - -type EtcdOperation struct { - Type OperationType - Range RangeOptions - Put PutOptions - Delete DeleteOptions -} - -type OperationType string - -const ( - RangeOperation OperationType = "range-operation" - PutOperation OperationType = "put-operation" - DeleteOperation OperationType = "delete-operation" -) - -type LeaseGrantRequest struct { - LeaseID int64 -} -type LeaseRevokeRequest struct { - LeaseID int64 -} -type DefragmentRequest struct{} - -// MaybeEtcdResponse extends EtcdResponse to include partial information about responses to a request. -// Possible response state information: -// * Normal response. Client observed response. Only EtcdResponse is set. -// * Persisted. Client didn't observe response, but we know it was persisted by etcd. Only Persisted is set -// * Persisted with Revision. Client didn't observe response, but we know that it was persisted, and it's revision. Both Persisted and PersistedRevision is set. -// * Error response. Client observed error, but we don't know if it was persisted. Only Error is set. -type MaybeEtcdResponse struct { - EtcdResponse - Persisted bool - PersistedRevision int64 - Error string -} - -var ErrEtcdFutureRev = errors.New("future rev") - -type EtcdResponse struct { - Txn *TxnResponse - Range *RangeResponse - LeaseGrant *LeaseGrantReponse - LeaseRevoke *LeaseRevokeResponse - Defragment *DefragmentResponse - Compact *CompactResponse - ClientError string - Revision int64 -} - -func Match(r1, r2 MaybeEtcdResponse) bool { - r1Revision := r1.Revision - if r1.Persisted { - r1Revision = r1.PersistedRevision - } - r2Revision := r2.Revision - if r2.Persisted { - r2Revision = r2.PersistedRevision - } - return (r1.Persisted && r1.PersistedRevision == 0) || (r2.Persisted && r2.PersistedRevision == 0) || ((r1.Persisted || r2.Persisted) && (r1.Error != "" || r2.Error != "" || r1Revision == r2Revision)) || reflect.DeepEqual(r1, r2) -} - -type TxnResponse struct { - Failure bool - Results []EtcdOperationResult -} - -type RangeResponse struct { - KVs []KeyValue - Count int64 -} - -type LeaseGrantReponse struct { - LeaseID int64 -} -type ( - LeaseRevokeResponse struct{} - DefragmentResponse struct{} -) - -type EtcdOperationResult struct { - RangeResponse - Deleted int64 -} - -type KeyValue struct { - Key string - ValueRevision -} - -var leased = struct{}{} - -type EtcdLease struct { - LeaseID int64 - Keys map[string]struct{} -} - -func (el EtcdLease) DeepCopy() EtcdLease { - return EtcdLease{ - LeaseID: el.LeaseID, - Keys: maps.Clone(el.Keys), - } -} - -type ValueRevision struct { - Value ValueOrHash `json:",omitempty"` - ModRevision int64 `json:",omitempty"` - Version int64 `json:",omitempty"` -} - -type ValueOrHash struct { - Value string `json:",omitempty"` - Hash uint32 `json:",omitempty"` -} - -func ToValueOrHash(value string) ValueOrHash { - v := ValueOrHash{} - if len(value) < 20 { - v.Value = value - } else { - h := fnv.New32a() - h.Write([]byte(value)) - v.Hash = h.Sum32() - } - return v -} - -type CompactResponse struct{} - -type CompactRequest struct { - Revision int64 -} diff --git a/tests/robustness/model/types.go b/tests/robustness/model/types.go new file mode 100644 index 000000000000..0f605659a8f1 --- /dev/null +++ b/tests/robustness/model/types.go @@ -0,0 +1,228 @@ +// Copyright 2023 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package model + +import ( + "errors" + "hash/fnv" + "maps" + "reflect" +) + +// RevisionForNonLinearizableResponse is a fake revision value used to +// separate responses for requests that are not linearizable, +// thus we need to ignore it in model when checking linearization. +const RevisionForNonLinearizableResponse = -1 + +type RequestType string + +const ( + Range RequestType = "range" + Txn RequestType = "txn" + LeaseGrant RequestType = "leaseGrant" + LeaseRevoke RequestType = "leaseRevoke" + Defragment RequestType = "defragment" + Compact RequestType = "compact" +) + +type EtcdRequest struct { + Type RequestType + LeaseGrant *LeaseGrantRequest + LeaseRevoke *LeaseRevokeRequest + Range *RangeRequest + Txn *TxnRequest + Defragment *DefragmentRequest + Compact *CompactRequest +} + +func (r *EtcdRequest) IsRead() bool { + if r.Type == Range { + return true + } + if r.Type != Txn { + return false + } + for _, op := range append(r.Txn.OperationsOnSuccess, r.Txn.OperationsOnFailure...) { + if op.Type != RangeOperation { + return false + } + } + return true +} + +type RangeRequest struct { + RangeOptions + Revision int64 +} + +type RangeOptions struct { + Start string + End string + Limit int64 +} + +type PutOptions struct { + Key string + Value ValueOrHash + LeaseID int64 +} + +type DeleteOptions struct { + Key string +} + +type TxnRequest struct { + Conditions []EtcdCondition + OperationsOnSuccess []EtcdOperation + OperationsOnFailure []EtcdOperation +} + +type EtcdCondition struct { + Key string + ExpectedRevision int64 + ExpectedVersion int64 +} + +type EtcdOperation struct { + Type OperationType + Range RangeOptions + Put PutOptions + Delete DeleteOptions +} + +type OperationType string + +const ( + RangeOperation OperationType = "range-operation" + PutOperation OperationType = "put-operation" + DeleteOperation OperationType = "delete-operation" +) + +type LeaseGrantRequest struct { + LeaseID int64 +} +type LeaseRevokeRequest struct { + LeaseID int64 +} +type DefragmentRequest struct{} + +// MaybeEtcdResponse extends EtcdResponse to include partial information about responses to a request. +// Possible response state information: +// * Normal response. Client observed response. Only EtcdResponse is set. +// * Persisted. Client didn't observe response, but we know it was persisted by etcd. Only Persisted is set +// * Persisted with Revision. Client didn't observe response, but we know that it was persisted, and it's revision. Both Persisted and PersistedRevision is set. +// * Error response. Client observed error, but we don't know if it was persisted. Only Error is set. +type MaybeEtcdResponse struct { + EtcdResponse + Persisted bool + PersistedRevision int64 + Error string +} + +var ErrEtcdFutureRev = errors.New("future rev") + +type EtcdResponse struct { + Txn *TxnResponse + Range *RangeResponse + LeaseGrant *LeaseGrantReponse + LeaseRevoke *LeaseRevokeResponse + Defragment *DefragmentResponse + Compact *CompactResponse + ClientError string + Revision int64 +} + +func Match(r1, r2 MaybeEtcdResponse) bool { + r1Revision := r1.Revision + if r1.Persisted { + r1Revision = r1.PersistedRevision + } + r2Revision := r2.Revision + if r2.Persisted { + r2Revision = r2.PersistedRevision + } + return (r1.Persisted && r1.PersistedRevision == 0) || (r2.Persisted && r2.PersistedRevision == 0) || ((r1.Persisted || r2.Persisted) && (r1.Error != "" || r2.Error != "" || r1Revision == r2Revision)) || reflect.DeepEqual(r1, r2) +} + +type TxnResponse struct { + Failure bool + Results []EtcdOperationResult +} + +type RangeResponse struct { + KVs []KeyValue + Count int64 +} + +type LeaseGrantReponse struct { + LeaseID int64 +} +type ( + LeaseRevokeResponse struct{} + DefragmentResponse struct{} +) + +type EtcdOperationResult struct { + RangeResponse + Deleted int64 +} + +type KeyValue struct { + Key string + ValueRevision +} + +var leased = struct{}{} + +type EtcdLease struct { + LeaseID int64 + Keys map[string]struct{} +} + +func (el EtcdLease) DeepCopy() EtcdLease { + return EtcdLease{ + LeaseID: el.LeaseID, + Keys: maps.Clone(el.Keys), + } +} + +type ValueRevision struct { + Value ValueOrHash `json:",omitempty"` + ModRevision int64 `json:",omitempty"` + Version int64 `json:",omitempty"` +} + +type ValueOrHash struct { + Value string `json:",omitempty"` + Hash uint32 `json:",omitempty"` +} + +func ToValueOrHash(value string) ValueOrHash { + v := ValueOrHash{} + if len(value) < 20 { + v.Value = value + } else { + h := fnv.New32a() + h.Write([]byte(value)) + v.Hash = h.Sum32() + } + return v +} + +type CompactResponse struct{} + +type CompactRequest struct { + Revision int64 +} From b7e229cb8071b7084ed9269ae4cc7c49349de65c Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Sat, 28 Jun 2025 00:39:13 +0530 Subject: [PATCH 0303/1068] depenendcy: bump github.com/prometheus/common from 0.64.0 to 0.65.0 This commit will bump github.com/prometheus/common from 0.64.0 to 0.65.0 Signed-off-by: ArkaSaha30 --- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 13 files changed, 20 insertions(+), 20 deletions(-) diff --git a/client/v3/go.mod b/client/v3/go.mod index 8af1f1606a59..19712d972269 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -29,7 +29,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.64.0 // indirect + github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect go.opentelemetry.io/otel/metric v1.36.0 // indirect go.opentelemetry.io/otel/trace v1.36.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 443a2a476cfb..23140a17866a 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -48,8 +48,8 @@ github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= -github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 8ca2158b0a82..8a9513c21fe5 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -66,8 +66,8 @@ github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= -github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index ce0f5bf1f566..71116f44301c 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -66,7 +66,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.64.0 // indirect + github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 7e3dfc4ab5b3..4357729a00aa 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -81,8 +81,8 @@ github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= -github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/go.mod b/go.mod index 7474f8b2d3a8..039503362ea8 100644 --- a/go.mod +++ b/go.mod @@ -72,7 +72,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.64.0 // indirect + github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect diff --git a/go.sum b/go.sum index 9d8337f60bec..8e11806973ec 100644 --- a/go.sum +++ b/go.sum @@ -114,8 +114,8 @@ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= -github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/server/go.mod b/server/go.mod index 9e9c850eacbf..781da9bbf77c 100644 --- a/server/go.mod +++ b/server/go.mod @@ -60,7 +60,7 @@ require ( github.com/kylelemons/godebug v1.1.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/common v0.64.0 // indirect + github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.6 // indirect diff --git a/server/go.sum b/server/go.sum index d72b5b2c2279..d09bb68d5ed2 100644 --- a/server/go.sum +++ b/server/go.sum @@ -94,8 +94,8 @@ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= -github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/tests/go.mod b/tests/go.mod index b40fbf3b9180..89c738affdce 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -26,7 +26,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 github.com/prometheus/client_golang v1.22.0 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.64.0 + github.com/prometheus/common v0.65.0 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.10.0 go.etcd.io/bbolt v1.4.1 diff --git a/tests/go.sum b/tests/go.sum index e7412eea12b5..a05a4930c0fb 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -120,8 +120,8 @@ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= -github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index a0ae80114f51..a0563587ebdc 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -154,7 +154,7 @@ require ( github.com/polyfloyd/go-errorlint v1.7.1 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.64.0 // indirect + github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 0130b895680b..0d64427bb8de 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -357,8 +357,8 @@ github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= -github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo= From 46d421f83bf12f73482f779226ddccc31c89dea6 Mon Sep 17 00:00:00 2001 From: James Blair Date: Mon, 23 Jun 2025 20:13:20 +1200 Subject: [PATCH 0304/1068] Update etcd OWNERS. - Adopt emeritus_approvers in OWNERS. - Move wenjiaswe to emeritus. Signed-off-by: James Blair --- Documentation/contributor-guide/release.md | 1 - OWNERS | 14 +++++++++++++- README.md | 14 +------------- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/Documentation/contributor-guide/release.md b/Documentation/contributor-guide/release.md index db5acdd8a93a..35382d6344b4 100644 --- a/Documentation/contributor-guide/release.md +++ b/Documentation/contributor-guide/release.md @@ -17,7 +17,6 @@ for ensuring the stability of the release branch. - Marek Siarkowicz [@serathius](https://github.com/serathius) - Sahdev Zala [@spzala](https://github.com/spzala) - Siyuan Zhang [@siyuanfoundation](https://github.com/siyuanfoundation) -- Wenjia Zhang [@wenjiaswe](https://github.com/wenjiaswe) All release version numbers follow the format of [semantic versioning 2.0.0](http://semver.org/). diff --git a/OWNERS b/OWNERS index 30037eb01e49..7783e529aa4e 100644 --- a/OWNERS +++ b/OWNERS @@ -6,7 +6,19 @@ approvers: - jmhbnz # James Blair - serathius # Marek Siarkowicz - spzala # Sahdev Zala - - wenjiaswe # Wenjia Zhang reviewers: - ivanvc # Ivan Valdes - siyuanfoundation # Siyuan Zhang +emeritus_approvers: + - bdarnell # Ben Darnell + - fanminshi # Fanmin Shi + - gyuho # Gyuho Lee + - hexfusion # Sam Batschelet + - heyitsanthony # Anthony Romano + - jingyih # Jingyi Hu + - jpbetz # Joe Betz + - mitake # Hitoshi Mitake + - philips # Brandon Philips + - ptabor # Piotr Tabor + - wenjiaswe # Wenjia Zhang + - xiang90 # Xiang Li diff --git a/README.md b/README.md index 3927cd6227f5..1b1623708a19 100644 --- a/README.md +++ b/README.md @@ -198,19 +198,7 @@ See [PR management](https://github.com/etcd-io/etcd/blob/main/Documentation/cont ## etcd Emeritus Maintainers -These emeritus maintainers dedicated a part of their career to etcd and reviewed code, triaged bugs and pushed the project forward over a substantial period of time. Their contribution is greatly appreciated. - -* Fanmin Shi -* Anthony Romano -* Brandon Philips -* Joe Betz -* Gyuho Lee -* Jingyi Hu -* Xiang Li -* Ben Darnell -* Sam Batschelet -* Piotr Tabor -* Hitoshi Mitake +etcd [emeritus maintainers](OWNERS) dedicated a part of their career to etcd and reviewed code, triaged bugs and pushed the project forward over a substantial period of time. Their contribution is greatly appreciated. ### License From 9cc87feefe7f54306303f60f58bace6fb144c760 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 20 Jun 2025 12:51:58 +0200 Subject: [PATCH 0305/1068] Split model Step function Signed-off-by: Marek Siarkowicz --- tests/robustness/model/deterministic.go | 239 +++++++++++++----------- 1 file changed, 132 insertions(+), 107 deletions(-) diff --git a/tests/robustness/model/deterministic.go b/tests/robustness/model/deterministic.go index dcadb3851036..051a888825bb 100644 --- a/tests/robustness/model/deterministic.go +++ b/tests/robustness/model/deterministic.go @@ -127,127 +127,152 @@ func freshEtcdState() EtcdState { // Step handles a successful request, returning updated state and response it would generate. func (s EtcdState) Step(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { - // TODO: Avoid copying when TXN only has read operations - if request.Type == Range { - if request.Range.Revision == 0 || request.Range.Revision == s.Revision { - resp := s.getRange(request.Range.RangeOptions) - return s, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Range: &resp, Revision: s.Revision}} - } - if request.Range.Revision > s.Revision { - return s, MaybeEtcdResponse{Error: ErrEtcdFutureRev.Error()} - } - if request.Range.Revision < s.CompactRevision { - return s, MaybeEtcdResponse{EtcdResponse: EtcdResponse{ClientError: mvcc.ErrCompacted.Error()}} - } - return s, MaybeEtcdResponse{Persisted: true, PersistedRevision: s.Revision} + switch request.Type { + case Range: + return s.stepRange(request) + case Txn: + return s.stepTxn(request) + case LeaseGrant: + return s.stepLeaseGrant(request) + case LeaseRevoke: + return s.stepLeaseRevoke(request) + case Defragment: + return s.stepDefragment() + case Compact: + return s.stepCompact(request) + default: + panic(fmt.Sprintf("Unknown request type: %v", request.Type)) + } +} + +func (s EtcdState) stepRange(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { + if request.Range.Revision == 0 || request.Range.Revision == s.Revision { + resp := s.getRange(request.Range.RangeOptions) + return s, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Range: &resp, Revision: s.Revision}} } + if request.Range.Revision > s.Revision { + return s, MaybeEtcdResponse{Error: ErrEtcdFutureRev.Error()} + } + if request.Range.Revision < s.CompactRevision { + return s, MaybeEtcdResponse{EtcdResponse: EtcdResponse{ClientError: mvcc.ErrCompacted.Error()}} + } + return s, MaybeEtcdResponse{Persisted: true, PersistedRevision: s.Revision} +} +func (s EtcdState) stepTxn(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { + // TODO: Avoid copying when TXN only has read operations newState := s.DeepCopy() - switch request.Type { - case Txn: - failure := false - for _, cond := range request.Txn.Conditions { - val := newState.KeyValues[cond.Key] - if cond.ExpectedVersion > 0 { - if val.Version != cond.ExpectedVersion { - failure = true - break - } - } else if val.ModRevision != cond.ExpectedRevision { + failure := false + for _, cond := range request.Txn.Conditions { + val := newState.KeyValues[cond.Key] + if cond.ExpectedVersion > 0 { + if val.Version != cond.ExpectedVersion { failure = true break } + } else if val.ModRevision != cond.ExpectedRevision { + failure = true + break } - operations := request.Txn.OperationsOnSuccess - if failure { - operations = request.Txn.OperationsOnFailure - } - opResp := make([]EtcdOperationResult, len(operations)) - increaseRevision := false - for i, op := range operations { - switch op.Type { - case RangeOperation: - opResp[i] = EtcdOperationResult{ - RangeResponse: newState.getRange(op.Range), - } - case PutOperation: - _, leaseExists := newState.Leases[op.Put.LeaseID] - if op.Put.LeaseID != 0 && !leaseExists { - break - } - ver := int64(1) - if val, exists := newState.KeyValues[op.Put.Key]; exists && val.Version > 0 { - ver = val.Version + 1 - } - newState.KeyValues[op.Put.Key] = ValueRevision{ - Value: op.Put.Value, - ModRevision: newState.Revision + 1, - Version: ver, - } + } + operations := request.Txn.OperationsOnSuccess + if failure { + operations = request.Txn.OperationsOnFailure + } + opResp := make([]EtcdOperationResult, len(operations)) + increaseRevision := false + for i, op := range operations { + switch op.Type { + case RangeOperation: + opResp[i] = EtcdOperationResult{ + RangeResponse: newState.getRange(op.Range), + } + case PutOperation: + _, leaseExists := newState.Leases[op.Put.LeaseID] + if op.Put.LeaseID != 0 && !leaseExists { + break + } + ver := int64(1) + if val, exists := newState.KeyValues[op.Put.Key]; exists && val.Version > 0 { + ver = val.Version + 1 + } + newState.KeyValues[op.Put.Key] = ValueRevision{ + Value: op.Put.Value, + ModRevision: newState.Revision + 1, + Version: ver, + } + increaseRevision = true + newState = detachFromOldLease(newState, op.Put.Key) + if leaseExists { + newState = attachToNewLease(newState, op.Put.LeaseID, op.Put.Key) + } + case DeleteOperation: + if _, ok := newState.KeyValues[op.Delete.Key]; ok { + delete(newState.KeyValues, op.Delete.Key) increaseRevision = true - newState = detachFromOldLease(newState, op.Put.Key) - if leaseExists { - newState = attachToNewLease(newState, op.Put.LeaseID, op.Put.Key) - } - case DeleteOperation: - if _, ok := newState.KeyValues[op.Delete.Key]; ok { - delete(newState.KeyValues, op.Delete.Key) - increaseRevision = true - newState = detachFromOldLease(newState, op.Delete.Key) - opResp[i].Deleted = 1 - } - default: - panic("unsupported operation") + newState = detachFromOldLease(newState, op.Delete.Key) + opResp[i].Deleted = 1 } + default: + panic("unsupported operation") } - if increaseRevision { - newState.Revision++ - } - return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Failure: failure, Results: opResp}, Revision: newState.Revision}} - case LeaseGrant: - // Empty LeaseID means the request failed and client didn't get response. Ignore it as client cannot use lease without knowing its id. - if request.LeaseGrant.LeaseID == 0 { - return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Revision: newState.Revision, LeaseGrant: &LeaseGrantReponse{}}} - } - lease := EtcdLease{ - LeaseID: request.LeaseGrant.LeaseID, - Keys: map[string]struct{}{}, - } - newState.Leases[request.LeaseGrant.LeaseID] = lease + } + if increaseRevision { + newState.Revision++ + } + return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Failure: failure, Results: opResp}, Revision: newState.Revision}} +} + +func (s EtcdState) stepLeaseGrant(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { + newState := s.DeepCopy() + // Empty LeaseID means the request failed and client didn't get response. Ignore it as client cannot use lease without knowing its id. + if request.LeaseGrant.LeaseID == 0 { return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Revision: newState.Revision, LeaseGrant: &LeaseGrantReponse{}}} - case LeaseRevoke: - // Delete the keys attached to the lease - keyDeleted := false - for key := range newState.Leases[request.LeaseRevoke.LeaseID].Keys { - // same as delete. - if _, ok := newState.KeyValues[key]; ok { - if !keyDeleted { - keyDeleted = true - } - delete(newState.KeyValues, key) - delete(newState.KeyLeases, key) + } + lease := EtcdLease{ + LeaseID: request.LeaseGrant.LeaseID, + Keys: map[string]struct{}{}, + } + newState.Leases[request.LeaseGrant.LeaseID] = lease + return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Revision: newState.Revision, LeaseGrant: &LeaseGrantReponse{}}} +} + +func (s EtcdState) stepLeaseRevoke(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { + newState := s.DeepCopy() + // Delete the keys attached to the lease + keyDeleted := false + for key := range newState.Leases[request.LeaseRevoke.LeaseID].Keys { + // same as delete. + if _, ok := newState.KeyValues[key]; ok { + if !keyDeleted { + keyDeleted = true } + delete(newState.KeyValues, key) + delete(newState.KeyLeases, key) } - // delete the lease - delete(newState.Leases, request.LeaseRevoke.LeaseID) - if keyDeleted { - newState.Revision++ - } - return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Revision: newState.Revision, LeaseRevoke: &LeaseRevokeResponse{}}} - case Defragment: - return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Defragment: &DefragmentResponse{}, Revision: RevisionForNonLinearizableResponse}} - case Compact: - if request.Compact.Revision <= newState.CompactRevision { - return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{ClientError: mvcc.ErrCompacted.Error()}} - } - if request.Compact.Revision > newState.Revision { - return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{ClientError: mvcc.ErrFutureRev.Error()}} - } - newState.CompactRevision = request.Compact.Revision - return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Compact: &CompactResponse{}, Revision: RevisionForNonLinearizableResponse}} - default: - panic(fmt.Sprintf("Unknown request type: %v", request.Type)) } + // delete the lease + delete(newState.Leases, request.LeaseRevoke.LeaseID) + if keyDeleted { + newState.Revision++ + } + return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Revision: newState.Revision, LeaseRevoke: &LeaseRevokeResponse{}}} +} + +func (s EtcdState) stepDefragment() (EtcdState, MaybeEtcdResponse) { + return s, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Defragment: &DefragmentResponse{}, Revision: RevisionForNonLinearizableResponse}} +} + +func (s EtcdState) stepCompact(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { + newState := s.DeepCopy() + if request.Compact.Revision <= newState.CompactRevision { + return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{ClientError: mvcc.ErrCompacted.Error()}} + } + if request.Compact.Revision > newState.Revision { + return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{ClientError: mvcc.ErrFutureRev.Error()}} + } + newState.CompactRevision = request.Compact.Revision + return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Compact: &CompactResponse{}, Revision: RevisionForNonLinearizableResponse}} } func (s EtcdState) getRange(options RangeOptions) RangeResponse { From ce3ed31ec655440049e291b785f0c89597d74031 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Sat, 28 Jun 2025 00:42:08 +0530 Subject: [PATCH 0306/1068] dependency: bump github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus from 1.0.1 to 1.1.0 This commit will bump github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus from 1.0.1 to 1.1.0 Signed-off-by: ArkaSaha30 --- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 11 files changed, 17 insertions(+), 17 deletions(-) diff --git a/client/v3/go.mod b/client/v3/go.mod index 19712d972269..dde97754c8d2 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -7,7 +7,7 @@ toolchain go1.24.3 require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 + github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/prometheus/client_golang v1.22.0 github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 diff --git a/client/v3/go.sum b/client/v3/go.sum index 23140a17866a..4e34f11a360c 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -24,8 +24,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 8a9513c21fe5..38f55e467066 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -32,8 +32,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 71116f44301c..9ebe73f53d67 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -52,7 +52,7 @@ require ( github.com/google/go-cmp v0.7.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect + github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 4357729a00aa..d4e451060aac 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -40,8 +40,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= diff --git a/go.mod b/go.mod index 039503362ea8..cd253fe4f1ac 100644 --- a/go.mod +++ b/go.mod @@ -57,7 +57,7 @@ require ( github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect + github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect diff --git a/go.sum b/go.sum index 8e11806973ec..5bd0f8d8645b 100644 --- a/go.sum +++ b/go.sum @@ -68,8 +68,8 @@ github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWm github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= diff --git a/server/go.mod b/server/go.mod index 781da9bbf77c..01d3a6a496fb 100644 --- a/server/go.mod +++ b/server/go.mod @@ -15,7 +15,7 @@ require ( github.com/google/btree v1.1.3 github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 - github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 + github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.22.0 diff --git a/server/go.sum b/server/go.sum index d09bb68d5ed2..1c0c9dcae5ab 100644 --- a/server/go.sum +++ b/server/go.sum @@ -60,8 +60,8 @@ github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWm github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= diff --git a/tests/go.mod b/tests/go.mod index 89c738affdce..6002befb323e 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -22,7 +22,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 - github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 + github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 github.com/prometheus/client_golang v1.22.0 github.com/prometheus/client_model v0.6.2 diff --git a/tests/go.sum b/tests/go.sum index a05a4930c0fb..59b44b50f1c9 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -74,8 +74,8 @@ github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWm github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= From 7fd809bbe7865797fb8fbe024f7f9ed68ba2527f Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 30 Jun 2025 10:17:52 +0200 Subject: [PATCH 0307/1068] Disable progress notify validation until we can guarantee response Signed-off-by: Marek Siarkowicz --- tests/robustness/client/watch.go | 1 - tests/robustness/main_test.go | 5 ----- 2 files changed, 6 deletions(-) diff --git a/tests/robustness/client/watch.go b/tests/robustness/client/watch.go index f44e4fbc37b0..dd35de89cf44 100644 --- a/tests/robustness/client/watch.go +++ b/tests/robustness/client/watch.go @@ -18,7 +18,6 @@ import ( "context" "errors" "fmt" - "testing" "go.uber.org/zap" "golang.org/x/sync/errgroup" diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index ba397132746c..4d1ef5295058 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -114,11 +114,6 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s scenari t.Error(err) } - failpointImpactingWatch := s.Failpoint == failpoint.SleepBeforeSendWatchResponse - if !failpointImpactingWatch { - watchProgressNotifyEnabled := c.Cfg.ServerConfig.WatchProgressNotifyInterval != 0 - client.ValidateGotAtLeastOneProgressNotify(t, r.Client, s.Watch.RequestProgress || watchProgressNotifyEnabled) - } validateConfig := validate.Config{ExpectRevisionUnique: s.Traffic.ExpectUniqueRevision()} result := validate.ValidateAndReturnVisualize(lg, validateConfig, r.Client, persistedRequests, 5*time.Minute) r.Visualize = result.Linearization.Visualize From c4c7fd2d0f017faef9644c208885d54adedda421 Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 24 Jun 2025 23:15:50 +0800 Subject: [PATCH 0308/1068] .github/workflows: Add CFG_NODE_COUNT env for build-and-push-and-test job Signed-off-by: joshjms --- .github/workflows/antithesis-test.yml | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 49d711d318fe..407f912beede 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -34,6 +34,11 @@ on: required: true type: string default: "" + cfg_node_count: + description: 'Number of nodes in the etcd cluster' + required: false + type: int + default: 3 # Declare default permissions as read only. permissions: read-all @@ -46,6 +51,8 @@ jobs: build-and-push-and-test: runs-on: ubuntu-latest environment: Antithesis + env: + CFG_NODE_COUNT: ${{ inputs.cfg_node_count }} steps: - name: Checkout the code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -66,13 +73,12 @@ jobs: docker push $IMAGE - name: Build and push client image - uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 - with: - context: . - file: ./tests/antithesis/test-template/Dockerfile - push: true - tags: | - ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:${{ inputs.etcd_ref }}_${{ github.sha }} + working-directory: ./tests/antithesis/test-template + run: | + make antithesis-build-client-docker-image + export IMAGE="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:${{ inputs.etcd_ref }}_${{ github.sha }}" + docker tag etcd-client:latest $IMAGE + docker push $IMAGE - name: Build and push etcd image working-directory: ./tests/antithesis From 7b342aed5ccf39ff1e0bebd5fe389cff6abd8f6c Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Sat, 28 Jun 2025 00:46:38 +0530 Subject: [PATCH 0309/1068] dependency: bump go.etcd.io/bbolt from v1.4.1 to v1.4.2 This commit will bump go.etcd.io/bbolt from v1.4.1 to v1.4.2 Signed-off-by: ArkaSaha30 --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 9ebe73f53d67..3abdb7a669de 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -26,7 +26,7 @@ require ( github.com/olekukonko/tablewriter v1.0.7 github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 - go.etcd.io/bbolt v1.4.1 + go.etcd.io/bbolt v1.4.2 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 diff --git a/etcdutl/go.sum b/etcdutl/go.sum index d4e451060aac..381ffae5fe50 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -109,8 +109,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.1 h1:5mOV+HWjIPLEAlUGMsveaUvK2+byZMFOzojoi7bh7uI= -go.etcd.io/bbolt v1.4.1/go.mod h1:c8zu2BnXWTu2XM4XcICtbGSl9cFwsXtcf9zLt2OncM8= +go.etcd.io/bbolt v1.4.2 h1:IrUHp260R8c+zYx/Tm8QZr04CX+qWS5PGfPdevhdm1I= +go.etcd.io/bbolt v1.4.2/go.mod h1:Is8rSHO/b4f3XigBC0lL0+4FwAQv3HXEEIgFMuKHceM= 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/go.mod b/go.mod index cd253fe4f1ac..9aa9f286e854 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/dustin/go-humanize v1.0.1 github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 - go.etcd.io/bbolt v1.4.1 + go.etcd.io/bbolt v1.4.2 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 diff --git a/go.sum b/go.sum index 5bd0f8d8645b..2767c761170e 100644 --- a/go.sum +++ b/go.sum @@ -146,8 +146,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.1 h1:5mOV+HWjIPLEAlUGMsveaUvK2+byZMFOzojoi7bh7uI= -go.etcd.io/bbolt v1.4.1/go.mod h1:c8zu2BnXWTu2XM4XcICtbGSl9cFwsXtcf9zLt2OncM8= +go.etcd.io/bbolt v1.4.2 h1:IrUHp260R8c+zYx/Tm8QZr04CX+qWS5PGfPdevhdm1I= +go.etcd.io/bbolt v1.4.2/go.mod h1:Is8rSHO/b4f3XigBC0lL0+4FwAQv3HXEEIgFMuKHceM= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= diff --git a/server/go.mod b/server/go.mod index 01d3a6a496fb..423c690a321e 100644 --- a/server/go.mod +++ b/server/go.mod @@ -25,7 +25,7 @@ require ( github.com/stretchr/testify v1.10.0 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 - go.etcd.io/bbolt v1.4.1 + go.etcd.io/bbolt v1.4.2 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 diff --git a/server/go.sum b/server/go.sum index 1c0c9dcae5ab..17de037792d1 100644 --- a/server/go.sum +++ b/server/go.sum @@ -123,8 +123,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.1 h1:5mOV+HWjIPLEAlUGMsveaUvK2+byZMFOzojoi7bh7uI= -go.etcd.io/bbolt v1.4.1/go.mod h1:c8zu2BnXWTu2XM4XcICtbGSl9cFwsXtcf9zLt2OncM8= +go.etcd.io/bbolt v1.4.2 h1:IrUHp260R8c+zYx/Tm8QZr04CX+qWS5PGfPdevhdm1I= +go.etcd.io/bbolt v1.4.2/go.mod h1:Is8rSHO/b4f3XigBC0lL0+4FwAQv3HXEEIgFMuKHceM= 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/tests/go.mod b/tests/go.mod index 6002befb323e..74f97d16af7f 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -29,7 +29,7 @@ require ( github.com/prometheus/common v0.65.0 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.10.0 - go.etcd.io/bbolt v1.4.1 + go.etcd.io/bbolt v1.4.2 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 diff --git a/tests/go.sum b/tests/go.sum index 59b44b50f1c9..cb7bf81026de 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -152,8 +152,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.1 h1:5mOV+HWjIPLEAlUGMsveaUvK2+byZMFOzojoi7bh7uI= -go.etcd.io/bbolt v1.4.1/go.mod h1:c8zu2BnXWTu2XM4XcICtbGSl9cFwsXtcf9zLt2OncM8= +go.etcd.io/bbolt v1.4.2 h1:IrUHp260R8c+zYx/Tm8QZr04CX+qWS5PGfPdevhdm1I= +go.etcd.io/bbolt v1.4.2/go.mod h1:Is8rSHO/b4f3XigBC0lL0+4FwAQv3HXEEIgFMuKHceM= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= From d42cd2f12a9bf8cc11088ce9c12afc5a93fe39d2 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 26 Jun 2025 10:24:56 +0200 Subject: [PATCH 0310/1068] Fix working dir for building antithesis client image Signed-off-by: Marek Siarkowicz --- .github/workflows/antithesis-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 407f912beede..ad0938270528 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -73,7 +73,7 @@ jobs: docker push $IMAGE - name: Build and push client image - working-directory: ./tests/antithesis/test-template + working-directory: ./tests/antithesis run: | make antithesis-build-client-docker-image export IMAGE="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:${{ inputs.etcd_ref }}_${{ github.sha }}" From d4b271676a59e0aa03ab0dba95ff5386f537ddee Mon Sep 17 00:00:00 2001 From: Kirill Trifonov Date: Sun, 29 Jun 2025 07:44:11 +0200 Subject: [PATCH 0311/1068] add new method minor refactoring add unit tests Signed-off-by: Kirill Trifonov --- etcdctl/ctlv3/command/printer_json.go | 70 +++++++++ etcdctl/ctlv3/command/printer_json_test.go | 161 +++++++++++++++++++++ 2 files changed, 231 insertions(+) create mode 100644 etcdctl/ctlv3/command/printer_json_test.go diff --git a/etcdctl/ctlv3/command/printer_json.go b/etcdctl/ctlv3/command/printer_json.go index cee458f3a2e1..6b2d16b8345f 100644 --- a/etcdctl/ctlv3/command/printer_json.go +++ b/etcdctl/ctlv3/command/printer_json.go @@ -22,6 +22,7 @@ import ( "strconv" "strings" + pb "go.etcd.io/etcd/api/v3/etcdserverpb" clientv3 "go.etcd.io/etcd/client/v3" ) @@ -31,6 +32,37 @@ type jsonPrinter struct { printer } +type ( + HexResponseHeader pb.ResponseHeader + HexMember pb.Member +) + +func (h *HexResponseHeader) MarshalJSON() ([]byte, error) { + type Alias pb.ResponseHeader + + return json.Marshal(&struct { + ClusterID string `json:"cluster_id"` + MemberID string `json:"member_id"` + Alias + }{ + ClusterID: fmt.Sprintf("%x", h.ClusterId), + MemberID: fmt.Sprintf("%x", h.MemberId), + Alias: (Alias)(*h), + }) +} + +func (m *HexMember) MarshalJSON() ([]byte, error) { + type Alias pb.Member + + return json.Marshal(&struct { + ID string `json:"ID"` + Alias + }{ + ID: fmt.Sprintf("%x", m.ID), + Alias: (Alias)(*m), + }) +} + func newJSONPrinter(isHex bool) printer { return &jsonPrinter{ writer: os.Stdout, @@ -50,6 +82,7 @@ func (p *jsonPrinter) MemberList(r clientv3.MemberListResponse) { printJSON(r) } } +func (p *jsonPrinter) MemberAdd(r clientv3.MemberAddResponse) { p.printJSON(r) } func printJSONTo(w io.Writer, v any) { b, err := json.Marshal(v) @@ -105,3 +138,40 @@ func printMemberListWithHexJSON(w io.Writer, r clientv3.MemberListResponse) { buffer.WriteString("}") fmt.Fprintln(w, buffer.String()) } + +func (p *jsonPrinter) printJSON(v any) { + var data any + if !p.isHex { + printJSONTo(p.writer, v) + return + } + + switch r := v.(type) { + case clientv3.MemberAddResponse: + type Alias clientv3.MemberAddResponse + + data = &struct { + Header *HexResponseHeader `json:"header"` + Member *HexMember `json:"member"` + Members []*HexMember `json:"members"` + *Alias + }{ + Header: (*HexResponseHeader)(r.Header), + Member: (*HexMember)(r.Member), + Members: toHexMembers(r.Members), + Alias: (*Alias)(&r), + } + default: + data = v + } + + printJSONTo(p.writer, data) +} + +func toHexMembers(members []*pb.Member) []*HexMember { + hexMembers := make([]*HexMember, len(members)) + for i, member := range members { + hexMembers[i] = (*HexMember)(member) + } + return hexMembers +} diff --git a/etcdctl/ctlv3/command/printer_json_test.go b/etcdctl/ctlv3/command/printer_json_test.go new file mode 100644 index 000000000000..98296e4f6512 --- /dev/null +++ b/etcdctl/ctlv3/command/printer_json_test.go @@ -0,0 +1,161 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package command + +import ( + "bytes" + "encoding/json" + "fmt" + "math" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + pb "go.etcd.io/etcd/api/v3/etcdserverpb" + clientv3 "go.etcd.io/etcd/client/v3" +) + +const ( + keyHeader = "header" + keyMember = "member" + keyMembers = "members" + + keyClusterID = "cluster_id" + keyMemberID = "member_id" + keyRaftTerm = "raft_term" + keyRevision = "revision" + keyID = "ID" +) + +func assertNumericFieldEqual(t *testing.T, obj map[string]any, key string, want int64) { + raw, ok := obj[key] + require.Truef(t, ok, "missing key %q in map %v", key, obj) + + n, ok := raw.(json.Number) + require.Truef(t, ok, "field %q is not json.Number: %v", key, raw) + + val, err := n.Int64() + require.NoErrorf(t, err, "failed to convert field %q to int64: %v", key, n) + + assert.Equalf(t, want, val, "unexpected value for field %q", key) +} + +func assertHexFieldEqual(t *testing.T, obj map[string]any, key string, want string) { + raw, ok := obj[key] + require.Truef(t, ok, "missing key %q in map %v", key, obj) + + str, ok := raw.(string) + require.Truef(t, ok, "field %q is not a string: %v", key, str) + + assert.Equalf(t, want, str, "unexpected value for hex field %q", key) +} + +type testCase struct { + number uint64 + wantHexString string + wantDecimalNumber int64 +} + +var testCases = []testCase{ + {1, "1", 1}, + {100, "64", 100}, + {1234567890, "499602d2", 1234567890}, + {math.MaxInt64, "7fffffffffffffff", math.MaxInt64}, +} + +func TestMemberAdd(t *testing.T) { + tests := []struct { + name string + isHex bool + cases []testCase + }{ + {name: "decimal", isHex: false, cases: testCases}, + {name: "hex", isHex: true, cases: testCases}, + } + + for _, testGroup := range tests { + t.Run(testGroup.name, func(t *testing.T) { + var buffer bytes.Buffer + p := &jsonPrinter{writer: &buffer, isHex: testGroup.isHex} + + for _, tt := range testGroup.cases { + t.Run(fmt.Sprintf("number=%d", tt.number), func(t *testing.T) { + buffer.Reset() + decoder := json.NewDecoder(&buffer) + decoder.UseNumber() + + response := clientv3.MemberAddResponse{ + Header: &pb.ResponseHeader{ + ClusterId: tt.number, + MemberId: tt.number, + Revision: int64(tt.number), + RaftTerm: tt.number, + }, + Member: &pb.Member{ID: tt.number}, + Members: []*pb.Member{{ID: tt.number}}, + } + p.MemberAdd(response) + + var got map[string]any + err := decoder.Decode(&got) + require.NoErrorf(t, err, "failed to decode JSON") + + rawHeader, ok := got[keyHeader] + require.Truef(t, ok, "output does not contain %s field: %v", keyHeader, got) + header, ok := rawHeader.(map[string]any) + require.Truef(t, ok, "field %s is not map[string]any: %v", keyHeader, rawHeader) + + if testGroup.isHex { + assertHexFieldEqual(t, header, keyClusterID, tt.wantHexString) + assertHexFieldEqual(t, header, keyMemberID, tt.wantHexString) + } else { + assertNumericFieldEqual(t, header, keyClusterID, tt.wantDecimalNumber) + assertNumericFieldEqual(t, header, keyMemberID, tt.wantDecimalNumber) + } + assertNumericFieldEqual(t, header, keyRaftTerm, tt.wantDecimalNumber) + assertNumericFieldEqual(t, header, keyRevision, tt.wantDecimalNumber) + + rawMember, ok := got[keyMember] + require.Truef(t, ok, "output does not contain %s field: %v", keyMember, got) + member, ok := rawMember.(map[string]any) + require.Truef(t, ok, "field %s is not map[string]any: %v", keyMember, rawMember) + + if testGroup.isHex { + assertHexFieldEqual(t, member, keyID, tt.wantHexString) + } else { + assertNumericFieldEqual(t, member, keyID, tt.wantDecimalNumber) + } + + rawMembers, ok := got[keyMembers] + require.Truef(t, ok, "output does not contain %s field: %v", keyMembers, got) + members, ok := rawMembers.([]any) + require.Truef(t, ok, "field %s is not []any: %v", keyMembers, rawMembers) + + for _, rawMemberItem := range members { + memberItem, ok := rawMemberItem.(map[string]any) + require.Truef(t, ok, "%s item is not map[string]any: %v", keyMembers, rawMemberItem) + + if testGroup.isHex { + assertHexFieldEqual(t, memberItem, keyID, tt.wantHexString) + } else { + assertNumericFieldEqual(t, memberItem, keyID, tt.wantDecimalNumber) + } + } + }) + } + }) + } +} From 19f0b6e9f81f34cc9ca2cdb33e17e65b95896dfe Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Mon, 30 Jun 2025 12:14:43 +0100 Subject: [PATCH 0312/1068] Migrate etcd-dump-db commands into etcdutl Signed-off-by: Benjamin Wang --- etcdutl/ctl.go | 3 + etcdutl/etcdutl/bucket_command.go | 276 ++++++++++++++++++++++++++++++ 2 files changed, 279 insertions(+) create mode 100644 etcdutl/etcdutl/bucket_command.go diff --git a/etcdutl/ctl.go b/etcdutl/ctl.go index 8418729bfd1a..5e91c14cf7fb 100644 --- a/etcdutl/ctl.go +++ b/etcdutl/ctl.go @@ -45,6 +45,9 @@ func init() { etcdutl.NewVersionCommand(), etcdutl.NewCompletionCommand(), etcdutl.NewMigrateCommand(), + etcdutl.NewListBucketCommand(), + etcdutl.NewIterateBucketCommand(), + etcdutl.NewHashCommand(), ) } diff --git a/etcdutl/etcdutl/bucket_command.go b/etcdutl/etcdutl/bucket_command.go new file mode 100644 index 000000000000..ba2461e6d2e0 --- /dev/null +++ b/etcdutl/etcdutl/bucket_command.go @@ -0,0 +1,276 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package etcdutl + +import ( + "encoding/binary" + "fmt" + "path/filepath" + "strings" + "time" + + "github.com/spf13/cobra" + "go.uber.org/zap" + + bolt "go.etcd.io/bbolt" + "go.etcd.io/etcd/api/v3/authpb" + "go.etcd.io/etcd/api/v3/mvccpb" + "go.etcd.io/etcd/client/pkg/v3/fileutil" + "go.etcd.io/etcd/server/v3/lease/leasepb" + "go.etcd.io/etcd/server/v3/storage/backend" + "go.etcd.io/etcd/server/v3/storage/datadir" + "go.etcd.io/etcd/server/v3/storage/mvcc" + "go.etcd.io/etcd/server/v3/storage/schema" +) + +var ( + // TODO: add this configure to top level etcdutl command + flockTimeout time.Duration + iterateBucketLimit uint64 + iterateBucketDecode bool +) + +func NewListBucketCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "list-bucket [data dir or db file path]", + Short: "bucket lists all buckets.", + Args: cobra.ExactArgs(1), + Run: listBucketCommandFunc, + } + + // TODO: add this flag to top level etctutl command + cmd.PersistentFlags().DurationVar(&flockTimeout, "timeout", 10*time.Second, "time to wait to obtain a file lock on db file, 0 to block indefinitely") + + return cmd +} + +func NewIterateBucketCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "iterate-bucket [data dir or db file path] [bucket name]", + Short: "iterate-bucket lists key-value pairs in reverse order.", + Args: cobra.ExactArgs(2), + Run: iterateBucketCommandFunc, + } + + // TODO: add this flag to top level etctutl command + cmd.PersistentFlags().DurationVar(&flockTimeout, "timeout", 10*time.Second, "time to wait to obtain a file lock on db file, 0 to block indefinitely") + cmd.PersistentFlags().Uint64Var(&iterateBucketLimit, "limit", 0, "max number of key-value pairs to iterate (0 to iterate all)") + cmd.PersistentFlags().BoolVar(&iterateBucketDecode, "decode", false, "true to decode Protocol Buffer encoded data") + + return cmd +} + +func NewHashCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "hash [data dir or db file path]", + Short: "hash computes the hash of db file.", + Args: cobra.ExactArgs(1), + Run: getHashCommandFunc, + } + + // TODO: add this flag to top level etctutl command + cmd.PersistentFlags().DurationVar(&flockTimeout, "timeout", 10*time.Second, "time to wait to obtain a file lock on db file, 0 to block indefinitely") + + return cmd +} + +func listBucketCommandFunc(_ *cobra.Command, args []string) { + lg := GetLogger() + dp := args[0] + if !strings.HasSuffix(dp, "db") { + dp = filepath.Join(datadir.ToSnapDir(dp), "db") + } + + if !fileutil.Exist(dp) { + lg.Fatal("db file not exist", zap.String("path", dp)) + } + + bts, err := getBuckets(dp) + if err != nil { + lg.Fatal("Failed to get buckets", zap.Error(err)) + } + for _, b := range bts { + fmt.Println(b) + } +} + +func getBuckets(dbPath string) (buckets []string, err error) { + db, derr := bolt.Open(dbPath, 0o600, &bolt.Options{Timeout: flockTimeout}) + if derr != nil { + return nil, fmt.Errorf("failed to open bolt DB %w", derr) + } + defer db.Close() + + err = db.View(func(tx *bolt.Tx) error { + return tx.ForEach(func(b []byte, _ *bolt.Bucket) error { + buckets = append(buckets, string(b)) + return nil + }) + }) + return buckets, err +} + +func iterateBucketCommandFunc(_ *cobra.Command, args []string) { + lg := GetLogger() + dp := args[0] + if !strings.HasSuffix(dp, "db") { + dp = filepath.Join(datadir.ToSnapDir(dp), "db") + } + if !fileutil.Exist(dp) { + lg.Fatal("db file not exist", zap.String("path", dp)) + } + bucket := args[1] + err := iterateBucket(dp, bucket, iterateBucketLimit, iterateBucketDecode) + if err != nil { + lg.Fatal("Failed to iterate bucket", zap.Error(err)) + } +} + +type decoder func(k, v []byte) + +// key is the bucket name, and value is the function to decode K/V in the bucket. +var decoders = map[string]decoder{ + "key": keyDecoder, + "lease": leaseDecoder, + "auth": authDecoder, + "authRoles": authRolesDecoder, + "authUsers": authUsersDecoder, + "meta": metaDecoder, +} + +func defaultDecoder(k, v []byte) { + fmt.Printf("key=%q, value=%q\n", k, v) +} + +func keyDecoder(k, v []byte) { + rev := mvcc.BytesToBucketKey(k) + var kv mvccpb.KeyValue + if err := kv.Unmarshal(v); err != nil { + panic(err) + } + fmt.Printf("rev=%+v, value=[key %q | val %q | created %d | mod %d | ver %d]\n", rev, string(kv.Key), string(kv.Value), kv.CreateRevision, kv.ModRevision, kv.Version) +} + +func bytesToLeaseID(bytes []byte) int64 { + if len(bytes) != 8 { + panic(fmt.Errorf("lease ID must be 8-byte")) + } + return int64(binary.BigEndian.Uint64(bytes)) +} + +func leaseDecoder(k, v []byte) { + leaseID := bytesToLeaseID(k) + var lpb leasepb.Lease + if err := lpb.Unmarshal(v); err != nil { + panic(err) + } + fmt.Printf("lease ID=%016x, TTL=%ds, remaining TTL=%ds\n", leaseID, lpb.TTL, lpb.RemainingTTL) +} + +func authDecoder(k, v []byte) { + if string(k) == "authRevision" { + rev := binary.BigEndian.Uint64(v) + fmt.Printf("key=%q, value=%v\n", k, rev) + } else { + fmt.Printf("key=%q, value=%v\n", k, v) + } +} + +func authRolesDecoder(_, v []byte) { + role := &authpb.Role{} + err := role.Unmarshal(v) + if err != nil { + panic(err) + } + fmt.Printf("role=%q, keyPermission=%v\n", string(role.Name), role.KeyPermission) +} + +func authUsersDecoder(_, v []byte) { + user := &authpb.User{} + err := user.Unmarshal(v) + if err != nil { + panic(err) + } + fmt.Printf("user=%q, roles=%q, option=%v\n", user.Name, user.Roles, user.Options) +} + +func metaDecoder(k, v []byte) { + if string(k) == string(schema.MetaConsistentIndexKeyName) || string(k) == string(schema.MetaTermKeyName) { + fmt.Printf("key=%q, value=%v\n", k, binary.BigEndian.Uint64(v)) + } else if string(k) == string(schema.ScheduledCompactKeyName) || string(k) == string(schema.FinishedCompactKeyName) { + rev := mvcc.BytesToRev(v) + fmt.Printf("key=%q, value=%v\n", k, rev) + } else { + defaultDecoder(k, v) + } +} + +func iterateBucket(dbPath, bucket string, limit uint64, decode bool) (err error) { + db, err := bolt.Open(dbPath, 0o600, &bolt.Options{Timeout: flockTimeout}) + if err != nil { + return fmt.Errorf("failed to open bolt DB %w", err) + } + defer db.Close() + + err = db.View(func(tx *bolt.Tx) error { + b := tx.Bucket([]byte(bucket)) + if b == nil { + return fmt.Errorf("got nil bucket for %s", bucket) + } + + c := b.Cursor() + + // iterate in reverse order (use First() and Next() for ascending order) + for k, v := c.Last(); k != nil; k, v = c.Prev() { + // TODO: remove sensitive information + // (https://github.com/etcd-io/etcd/issues/7620) + if dec, ok := decoders[bucket]; decode && ok { + dec(k, v) + } else { + defaultDecoder(k, v) + } + + limit-- + if limit == 0 { + break + } + } + + return nil + }) + return err +} + +func getHashCommandFunc(_ *cobra.Command, args []string) { + lg := GetLogger() + dp := args[0] + if !strings.HasSuffix(dp, "db") { + dp = filepath.Join(datadir.ToSnapDir(dp), "db") + } + if !fileutil.Exist(dp) { + lg.Fatal("db file not exist", zap.String("path", dp)) + } + + hash, err := getHash(dp) + if err != nil { + lg.Fatal("failed to get hash", zap.Error(err)) + } + fmt.Printf("db path: %s\nHash: %d\n", dp, hash) +} + +func getHash(dbPath string) (hash uint32, err error) { + b := backend.NewDefaultBackend(zap.NewNop(), dbPath) + return b.Hash(schema.DefaultIgnores) +} From 5e1e58ce747892ea83ec6e3c39804c9efd7c5c6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Jun 2025 20:21:16 +0000 Subject: [PATCH 0313/1068] build(deps): bump github/codeql-action from 3.29.0 to 3.29.2 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.0 to 3.29.2. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/ce28f5bb42b7a9f2c824e633a3f6ee835bab6858...181d5eefc20863364f96762470ba6f862bdef56b) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.29.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 786b7fb38ddd..0d28ad53b13b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0 + uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0 + uses: github/codeql-action/autobuild@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0 + uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index eaadcb5ee337..86be41871a76 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0 + uses: github/codeql-action/upload-sarif@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2 with: sarif_file: results.sarif From e41bdb5bffce30f08e8de8a014940d4c2a571c3c Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 20 Jun 2025 12:07:49 +0200 Subject: [PATCH 0314/1068] Add non-linearizable requests to visualization Signed-off-by: Marek Siarkowicz --- .../robustness/validate/patch_history_test.go | 2 +- tests/robustness/validate/result.go | 15 ++++++- tests/robustness/validate/validate.go | 43 ++++++++++++++----- 3 files changed, 47 insertions(+), 13 deletions(-) diff --git a/tests/robustness/validate/patch_history_test.go b/tests/robustness/validate/patch_history_test.go index 0ab448ea0f9d..45294d3b8219 100644 --- a/tests/robustness/validate/patch_history_test.go +++ b/tests/robustness/validate/patch_history_test.go @@ -412,7 +412,7 @@ func TestPatchHistory(t *testing.T) { Watch: tc.watchOperations, }, } - operations, _ := prepareAndCategorizeOperations(reports) + operations, _, _ := prepareAndCategorizeOperations(reports) patched := patchLinearizableOperations(operations, reports, tc.persistedRequest) if diff := cmp.Diff(tc.expectedRemainingOperations, patched, cmpopts.EquateEmpty(), diff --git a/tests/robustness/validate/result.go b/tests/robustness/validate/result.go index 16d721c99e1a..f0d18ce8e1f1 100644 --- a/tests/robustness/validate/result.go +++ b/tests/robustness/validate/result.go @@ -87,7 +87,7 @@ type LinearizationResult struct { Timeout bool } -func (r LinearizationResult) Visualize(lg *zap.Logger, path string) error { +func (r *LinearizationResult) Visualize(lg *zap.Logger, path string) error { lg.Info("Saving visualization", zap.String("path", path)) err := porcupine.VisualizePath(r.Model, r.Info, path) if err != nil { @@ -95,3 +95,16 @@ func (r LinearizationResult) Visualize(lg *zap.Logger, path string) error { } return nil } + +func (r *LinearizationResult) AddToVisualization(serializable []porcupine.Operation) { + annotations := []porcupine.Annotation{} + for _, op := range serializable { + annotations = append(annotations, porcupine.Annotation{ + ClientId: op.ClientId, + Start: op.Call, + End: op.Return, + Description: r.Model.DescribeOperation(op.Input, op.Output), + }) + } + r.Info.AddAnnotations(annotations) +} diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index ca70770f4aeb..3b3af2f8ea9e 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -34,7 +34,7 @@ func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.Cli if result.Assumptions.Error() != nil { return result } - linearizableOperations, serializableOperations := prepareAndCategorizeOperations(reports) + linearizableOperations, serializableOperations, operationsForVisualization := prepareAndCategorizeOperations(reports) // We are passing in the original reports and linearizableOperations with modified return time. // The reason is that linearizableOperations are those dedicated for linearization, which requires them to have returnTime set to infinity as required by pourcupine. // As for the report, the original report is used so the consumer doesn't need to track what patching was done or not. @@ -43,6 +43,7 @@ func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.Cli } result.Linearization = validateLinearizableOperationsAndVisualize(lg, linearizableOperations, timeout) + result.Linearization.AddToVisualization(operationsForVisualization) // Skip other validations if model is not linearizable, as they are expected to fail too and obfuscate the logs. if result.Linearization.Error() != nil { lg.Info("Skipping other validations as linearization failed") @@ -62,21 +63,17 @@ type Config struct { ExpectRevisionUnique bool } -func prepareAndCategorizeOperations(reports []report.ClientReport) (linearizable []porcupine.Operation, serializable []porcupine.Operation) { +func prepareAndCategorizeOperations(reports []report.ClientReport) (linearizable, serializable, forVisualization []porcupine.Operation) { for _, report := range reports { for _, op := range report.KeyValue { request := op.Input.(model.EtcdRequest) response := op.Output.(model.MaybeEtcdResponse) - // serializable operations include only Range requests on non-zero revision - if request.Type == model.Range && request.Range.Revision != 0 { + if isSerializable(request, response) { serializable = append(serializable, op) } - // Remove failed read requests as they are not relevant for linearization. - if request.IsRead() && response.Error != "" { - continue - } - // Defragment is not linearizable - if request.Type == model.Defragment { + // Operation that will not be linearized need to be added separetly to visualization. + if !isLinearizable(request, response) { + forVisualization = append(forVisualization, op) continue } // For linearization, we set the return time of failed requests to MaxInt64. @@ -87,7 +84,31 @@ func prepareAndCategorizeOperations(reports []report.ClientReport) (linearizable linearizable = append(linearizable, op) } } - return linearizable, serializable + return linearizable, serializable, forVisualization +} + +func isLinearizable(request model.EtcdRequest, response model.MaybeEtcdResponse) bool { + // Cannot test response for request without side effect. + if request.IsRead() && response.Error != "" { + return false + } + // Defragment is not linearizable + if request.Type == model.Defragment { + return false + } + return true +} + +func isSerializable(request model.EtcdRequest, response model.MaybeEtcdResponse) bool { + // Cannot test response for request without side effect. + if request.IsRead() && response.Error != "" { + return false + } + // Test range requests about stale revision + if request.Type == model.Range && request.Range.Revision != 0 { + return true + } + return false } func checkValidationAssumptions(reports []report.ClientReport) error { From f5476c7f0aa3caf61042c4a5362d1eaf1415d0a1 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 1 Jul 2025 15:13:33 +0530 Subject: [PATCH 0315/1068] dependency: bump github.com/alexfalkowski/gocovmerge from 1.9.0 to 1.11.0 This commit will bump github.com/alexfalkowski/gocovmerge from 1.9.0 to 1.11.0 Signed-off-by: ArkaSaha30 --- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index a0563587ebdc..e4d6596e8a09 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -5,7 +5,7 @@ go 1.24 toolchain go1.24.3 require ( - github.com/alexfalkowski/gocovmerge v1.9.0 + github.com/alexfalkowski/gocovmerge v1.11.0 github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 github.com/cloudflare/cfssl v1.6.5 diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 0d64427bb8de..9fdd0e61203c 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -36,8 +36,8 @@ github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsr github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= -github.com/alexfalkowski/gocovmerge v1.9.0 h1:ozu15S3V+muHM72WOi+/lXgJZ/zSzjB6CRfBV7HnJDc= -github.com/alexfalkowski/gocovmerge v1.9.0/go.mod h1:gkfERgPiozeXq7FlJBQDmTeXo8FnrNxZwabB4uSGZ3M= +github.com/alexfalkowski/gocovmerge v1.11.0 h1:mHYRBKEBHxjTWveV6RCAnCAhF6l1evO9JYboZRvZmuU= +github.com/alexfalkowski/gocovmerge v1.11.0/go.mod h1:gkfERgPiozeXq7FlJBQDmTeXo8FnrNxZwabB4uSGZ3M= github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU= github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= From b390f57b0de03e8bbf03ae7cd4232ef89f565172 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 1 Jul 2025 15:21:18 +0530 Subject: [PATCH 0316/1068] dependency: bump github.com/google/yamlfmt from 0.17.0 to 0.17.2 This commit will bump github.com/google/yamlfmt from 0.17.0 to 0.17.2 Signed-off-by: ArkaSaha30 --- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index e4d6596e8a09..31bdc7a5f2e4 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -12,7 +12,7 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint v1.64.8 github.com/google/addlicense v1.1.1 - github.com/google/yamlfmt v0.17.1 + github.com/google/yamlfmt v0.17.2 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 9fdd0e61203c..11d72924dbba 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -203,8 +203,8 @@ github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/Z github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/yamlfmt v0.17.1 h1:NgKi21+MUVntxhPhIsstylN6QNCCfDv3wKNKwlm/3Hs= -github.com/google/yamlfmt v0.17.1/go.mod h1:gs0UEklJOYkUJ+OOCG0hg9n+DzucKDPlJElTUasVNK8= +github.com/google/yamlfmt v0.17.2 h1:TkXxhmj7dnpmOnlWGOXog92Gs6MWcTZqnf3kuyp8yFQ= +github.com/google/yamlfmt v0.17.2/go.mod h1:gs0UEklJOYkUJ+OOCG0hg9n+DzucKDPlJElTUasVNK8= github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s= github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= From 669284445001f227b8dd888d46f0e8159b9e1726 Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Mon, 30 Jun 2025 17:07:27 +0200 Subject: [PATCH 0317/1068] chore(tools): Mark etcd-dump-db as deprecated Signed-off-by: Mustafa Elbehery --- etcdutl/README.md | 74 ++++++++++++++++++++++++++++++++++-- tools/etcd-dump-db/README.md | 3 ++ 2 files changed, 73 insertions(+), 4 deletions(-) diff --git a/etcdutl/README.md b/etcdutl/README.md index 06cf85d7e9b1..ead1b41ccd33 100644 --- a/etcdutl/README.md +++ b/etcdutl/README.md @@ -1,5 +1,4 @@ -etcdutl -======== +# etcdutl `etcdutl` is a command line administration utility for [etcd][etcd]. @@ -8,7 +7,7 @@ For operations over a network, please use `etcdctl`. ### DEFRAG [options] -DEFRAG directly defragments an etcd data directory while etcd is not running. +DEFRAG directly defragments an etcd data directory while etcd is not running. When an etcd member reclaims storage space from deleted and compacted keys, the space is kept in a free list and the database file remains the same size. By defragmenting the database, the etcd member releases this free space back to the file system. In order to defrag a live etcd instances over the network, please use `etcdctl defrag` instead. @@ -36,7 +35,6 @@ To defragment a data directory directly, use the `--data-dir` flag: DEFRAG returns a zero exit code only if it succeeded in defragmenting all given endpoints. - ### SNAPSHOT RESTORE [options] \ SNAPSHOT RESTORE creates an etcd data directory for an etcd cluster member from a backend database snapshot and a new cluster configuration. Restoring the snapshot into each member for a new cluster configuration will initialize a new etcd cluster preloaded by the snapshot data. @@ -174,6 +172,74 @@ Prints etcd version and API version. # API version: 3.1 ``` +### LIST-BUCKET [options] \ + +`list-bucket` prints all bucket names. + +#### Flags + +- timeout -- Time to wait to obtain a file lock on db file, 0 to block indefinitely. + +##### Examples for LIST-BUCKET + +```bash + +$ ./etcdutl list-bucket ~/tmp/etcd/default.etcd/member/snap/db +alarm +auth +authRoles +authUsers +cluster +key +lease +members +members_removed +meta +``` + +### ITERATE-BUCKET [options] \ \ + +`iterate-bucket` lists key-value pairs in a given bucket in reverse order. + +#### Flags for ITERATE-BUCKET + +- timeout -- Time to wait to obtain a file lock on db file, 0 to block indefinitely. +- limit -- Max number of key-value pairs to iterate (0 to iterate all). +- decode -- true to decode Protocol Buffer encoded data. + +##### Examples for ITERATE-BUCKET + +```bash + +# with `--decode` option +$ ./etcdutl iterate-bucket ~/tmp/etcd/default.etcd/member/snap/db key --decode +rev={Revision:{Main:4 Sub:0} tombstone:false}, value=[key "k1" | val "v3" | created 2 | mod 4 | ver 3] +rev={Revision:{Main:3 Sub:0} tombstone:false}, value=[key "k1" | val "v2" | created 2 | mod 3 | ver 2] +rev={Revision:{Main:2 Sub:0} tombstone:false}, value=[key "k1" | val "v1" | created 2 | mod 2 | ver 1] + +# without `--decode` option +$ ./etcdutl iterate-bucket ~/tmp/etcd/default.etcd/member/snap/db key +key="\x00\x00\x00\x00\x00\x00\x00\x04_\x00\x00\x00\x00\x00\x00\x00\x00", value="\n\x02k1\x10\x02\x18\x04 \x03*\x02v3" +key="\x00\x00\x00\x00\x00\x00\x00\x03_\x00\x00\x00\x00\x00\x00\x00\x00", value="\n\x02k1\x10\x02\x18\x03 \x02*\x02v2" +key="\x00\x00\x00\x00\x00\x00\x00\x02_\x00\x00\x00\x00\x00\x00\x00\x00", value="\n\x02k1\x10\x02\x18\x02 \x01*\x02v1" +``` + +### HASH [options] \ + +`hash` prints the hash of the db file. + +#### Flags for HASH + +- timeout -- Time to wait to obtain a file lock on db file, 0 to block indefinitely. + +##### Examples for HASH + +```bash + +$ ./etcdutl hash ~/tmp/etcd/default.etcd/member/snap/db +db path: /Users/wachao/tmp/etcd/default.etcd/member/snap/db +Hash: 4031086527 +``` ## Exit codes diff --git a/tools/etcd-dump-db/README.md b/tools/etcd-dump-db/README.md index b176096f0a6e..e2375da05b63 100644 --- a/tools/etcd-dump-db/README.md +++ b/tools/etcd-dump-db/README.md @@ -2,6 +2,9 @@ `etcd-dump-db` inspects etcd db files. +> ⚠️ **Deprecated**: This tool has been deprecated. +> Please use [etcdutl](https://github.com/etcd-io/etcd/tree/main/etcdutl) instead. + ## Installation Install the tool by running the following command from the etcd source directory. From e14fc9e93d5ee39b5921b783a2f19165c6d0c330 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 1 Jul 2025 15:27:29 +0530 Subject: [PATCH 0318/1068] dependency: bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.26.3 to 2.27.1 This commit will bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.26.3 to 2.27.1 Signed-off-by: ArkaSaha30 --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 16 files changed, 24 insertions(+), 24 deletions(-) diff --git a/api/go.mod b/api/go.mod index 1bb309430b07..2dbb90555131 100644 --- a/api/go.mod +++ b/api/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 github.com/stretchr/testify v1.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 google.golang.org/grpc v1.73.0 diff --git a/api/go.sum b/api/go.sum index 7ad0610f904f..f2ac81b18f11 100644 --- a/api/go.sum +++ b/api/go.sum @@ -14,8 +14,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= diff --git a/client/v3/go.mod b/client/v3/go.mod index dde97754c8d2..ac20fdf1c40a 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -25,7 +25,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 4e34f11a360c..dbce06a9ce2a 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -28,8 +28,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index a00e1a45c9bc..8c01841d3537 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -29,7 +29,7 @@ require ( github.com/fatih/color v1.18.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 38f55e467066..ddcfebbede97 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -36,8 +36,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 3abdb7a669de..d6c4b9d3c6aa 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -54,7 +54,7 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 381ffae5fe50..35c92e55b3f2 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -44,8 +44,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= diff --git a/go.mod b/go.mod index 9aa9f286e854..bc0d85391108 100644 --- a/go.mod +++ b/go.mod @@ -59,7 +59,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect diff --git a/go.sum b/go.sum index 2767c761170e..672aef615cf8 100644 --- a/go.sum +++ b/go.sum @@ -72,8 +72,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= diff --git a/server/go.mod b/server/go.mod index 423c690a321e..dc0efbb55ad4 100644 --- a/server/go.mod +++ b/server/go.mod @@ -16,7 +16,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.22.0 github.com/prometheus/client_model v0.6.2 diff --git a/server/go.sum b/server/go.sum index 17de037792d1..0c6efa4531a4 100644 --- a/server/go.sum +++ b/server/go.sum @@ -64,8 +64,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= diff --git a/tests/go.mod b/tests/go.mod index 74f97d16af7f..fe303fc01456 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -23,7 +23,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 github.com/prometheus/client_golang v1.22.0 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.65.0 diff --git a/tests/go.sum b/tests/go.sum index cb7bf81026de..fe077334ed92 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -78,8 +78,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 31bdc7a5f2e4..10433234e4e9 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -13,7 +13,7 @@ require ( github.com/golangci/golangci-lint v1.64.8 github.com/google/addlicense v1.1.1 github.com/google/yamlfmt v0.17.2 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 11d72924dbba..dcb528c72ef8 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -220,8 +220,8 @@ github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0 h1:+epNPbD5EqgpEMm5wrl4Hqts3jZt8+kYaqUisuuIGTk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.0/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= From ca7aead8f74aa4d949f260ff28e60510b224a642 Mon Sep 17 00:00:00 2001 From: Mustafa Elbehery Date: Wed, 2 Jul 2025 13:13:37 +0200 Subject: [PATCH 0319/1068] chore(client): remove existFileOrDir func Signed-off-by: Mustafa Elbehery --- tools/etcd-dump-db/main.go | 10 ++++++---- tools/etcd-dump-db/utils.go | 6 ------ 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/tools/etcd-dump-db/main.go b/tools/etcd-dump-db/main.go index 6be6d83ac739..530e64092732 100644 --- a/tools/etcd-dump-db/main.go +++ b/tools/etcd-dump-db/main.go @@ -24,6 +24,8 @@ import ( "time" "github.com/spf13/cobra" + + "go.etcd.io/etcd/client/pkg/v3/fileutil" ) var ( @@ -85,7 +87,7 @@ func listBucketCommandFunc(_ *cobra.Command, args []string) { if !strings.HasSuffix(dp, "db") { dp = filepath.Join(snapDir(dp), "db") } - if !existFileOrDir(dp) { + if !fileutil.Exist(dp) { log.Fatalf("%q does not exist", dp) } @@ -106,7 +108,7 @@ func iterateBucketCommandFunc(_ *cobra.Command, args []string) { if !strings.HasSuffix(dp, "db") { dp = filepath.Join(snapDir(dp), "db") } - if !existFileOrDir(dp) { + if !fileutil.Exist(dp) { log.Fatalf("%q does not exist", dp) } bucket := args[1] @@ -124,7 +126,7 @@ func scanKeysCommandFunc(_ *cobra.Command, args []string) { if !strings.HasSuffix(dp, "db") { dp = filepath.Join(snapDir(dp), "db") } - if !existFileOrDir(dp) { + if !fileutil.Exist(dp) { log.Fatalf("%q does not exist", dp) } startRev, err := strconv.ParseInt(args[1], 10, 64) @@ -145,7 +147,7 @@ func getHashCommandFunc(_ *cobra.Command, args []string) { if !strings.HasSuffix(dp, "db") { dp = filepath.Join(snapDir(dp), "db") } - if !existFileOrDir(dp) { + if !fileutil.Exist(dp) { log.Fatalf("%q does not exist", dp) } diff --git a/tools/etcd-dump-db/utils.go b/tools/etcd-dump-db/utils.go index 184cb5181c47..35ba3d5c10cf 100644 --- a/tools/etcd-dump-db/utils.go +++ b/tools/etcd-dump-db/utils.go @@ -15,15 +15,9 @@ package main import ( - "os" "unsafe" ) -func existFileOrDir(name string) bool { - _, err := os.Stat(name) - return err == nil -} - func unsafeAdd(base unsafe.Pointer, offset uintptr) unsafe.Pointer { return unsafe.Pointer(uintptr(base) + offset) } From 6f0b67dce98aa35628760e9d0ce4b39ad5e4f2f6 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 1 Jul 2025 15:30:48 +0530 Subject: [PATCH 0320/1068] dependency: bump go.opentelemetry.io/otel/exporters/otlp/otlptrace from 1.36.0 to 1.37.0 This commit will bump go.opentelemetry.io/otel/exporters/otlp/otlptrace from 1.36.0 to 1.37.0 Also bumps indirect dependency, - github.com/go-logr/logr v1.4.2 to v1.4.3 Signed-off-by: ArkaSaha30 --- api/go.mod | 4 ++-- api/go.sum | 20 ++++++++++---------- client/v3/go.mod | 4 ++-- client/v3/go.sum | 20 ++++++++++---------- etcdctl/go.mod | 1 + etcdctl/go.sum | 20 ++++++++++---------- etcdutl/go.mod | 12 ++++++------ etcdutl/go.sum | 24 ++++++++++++------------ go.mod | 12 ++++++------ go.sum | 24 ++++++++++++------------ pkg/go.mod | 4 ++-- pkg/go.sum | 20 ++++++++++---------- server/go.mod | 12 ++++++------ server/go.sum | 24 ++++++++++++------------ tests/go.mod | 12 ++++++------ tests/go.sum | 24 ++++++++++++------------ tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 4 ++-- tools/testgrid-analysis/go.sum | 20 ++++++++++---------- 20 files changed, 134 insertions(+), 133 deletions(-) diff --git a/api/go.mod b/api/go.mod index 2dbb90555131..909c4410d116 100644 --- a/api/go.mod +++ b/api/go.mod @@ -19,8 +19,8 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - go.opentelemetry.io/otel v1.36.0 // indirect - go.opentelemetry.io/otel/sdk v1.36.0 // indirect + go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel/sdk v1.37.0 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect diff --git a/api/go.sum b/api/go.sum index f2ac81b18f11..0c02e1189a22 100644 --- a/api/go.sum +++ b/api/go.sum @@ -2,8 +2,8 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -32,16 +32,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= diff --git a/client/v3/go.mod b/client/v3/go.mod index ac20fdf1c40a..5cb72713cb8c 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -31,8 +31,8 @@ require ( github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect - go.opentelemetry.io/otel/metric v1.36.0 // indirect - go.opentelemetry.io/otel/trace v1.36.0 // indirect + go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index dbce06a9ce2a..df441419ab2d 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -10,8 +10,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -60,16 +60,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= 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= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 8c01841d3537..a497ab6a8b17 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -27,6 +27,7 @@ require ( github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index ddcfebbede97..7360ce0f9498 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -19,8 +19,8 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -86,16 +86,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= 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= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index d6c4b9d3c6aa..e676d58a9502 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -43,7 +43,7 @@ require ( github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect - github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.2.1 // indirect @@ -76,12 +76,12 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect - go.opentelemetry.io/otel v1.36.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect + go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect - go.opentelemetry.io/otel/metric v1.36.0 // indirect - go.opentelemetry.io/otel/sdk v1.36.0 // indirect - go.opentelemetry.io/otel/trace v1.36.0 // indirect + go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/sdk v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.39.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 35c92e55b3f2..7473b8bc9f4c 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -20,8 +20,8 @@ github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+m github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -117,20 +117,20 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/go.mod b/go.mod index bc0d85391108..bb281c713d4e 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect - github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.2.2 // indirect @@ -83,12 +83,12 @@ require ( go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect - go.opentelemetry.io/otel v1.36.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect + go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect - go.opentelemetry.io/otel/metric v1.36.0 // indirect - go.opentelemetry.io/otel/sdk v1.36.0 // indirect - go.opentelemetry.io/otel/trace v1.36.0 // indirect + go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/sdk v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.39.0 // indirect diff --git a/go.sum b/go.sum index 672aef615cf8..90fff26ff760 100644 --- a/go.sum +++ b/go.sum @@ -37,8 +37,8 @@ github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -156,20 +156,20 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= diff --git a/pkg/go.mod b/pkg/go.mod index c60c6936d907..1631cef32999 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -20,8 +20,8 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - go.opentelemetry.io/otel v1.36.0 // indirect - go.opentelemetry.io/otel/sdk v1.36.0 // indirect + go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel/sdk v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 2294f9e45cdc..7aac9af0117f 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -7,8 +7,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -37,16 +37,16 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= 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= diff --git a/server/go.mod b/server/go.mod index dc0efbb55ad4..e6f5c8018b57 100644 --- a/server/go.mod +++ b/server/go.mod @@ -32,9 +32,9 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 - go.opentelemetry.io/otel v1.36.0 + go.opentelemetry.io/otel v1.37.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 - go.opentelemetry.io/otel/sdk v1.36.0 + go.opentelemetry.io/otel/sdk v1.37.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.39.0 golang.org/x/net v0.41.0 @@ -51,7 +51,7 @@ require ( github.com/cenkalti/backoff/v5 v5.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect @@ -65,9 +65,9 @@ require ( github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect - go.opentelemetry.io/otel/metric v1.36.0 // indirect - go.opentelemetry.io/otel/trace v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect + go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/sys v0.33.0 // indirect diff --git a/server/go.sum b/server/go.sum index 0c6efa4531a4..54f21758349f 100644 --- a/server/go.sum +++ b/server/go.sum @@ -29,8 +29,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -131,20 +131,20 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= diff --git a/tests/go.mod b/tests/go.mod index fe303fc01456..e78a736b8c64 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -40,9 +40,9 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 - go.opentelemetry.io/otel v1.36.0 - go.opentelemetry.io/otel/sdk v1.36.0 - go.opentelemetry.io/otel/trace v1.36.0 + go.opentelemetry.io/otel v1.37.0 + go.opentelemetry.io/otel/sdk v1.37.0 + go.opentelemetry.io/otel/trace v1.37.0 go.opentelemetry.io/proto/otlp v1.7.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.39.0 @@ -64,7 +64,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/fatih/color v1.18.0 // indirect - github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect @@ -90,9 +90,9 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect - go.opentelemetry.io/otel/metric v1.36.0 // indirect + go.opentelemetry.io/otel/metric v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index fe077334ed92..9421b3f2d920 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -43,8 +43,8 @@ github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -162,20 +162,20 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 10433234e4e9..2d9acdfcb620 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -74,7 +74,7 @@ require ( github.com/fzipp/gocyclo v0.6.0 // indirect github.com/ghostiam/protogetter v0.3.9 // indirect github.com/go-critic/go-critic v0.12.0 // indirect - github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-sql-driver/mysql v1.8.1 // indirect github.com/go-toolsmith/astcast v1.1.0 // indirect github.com/go-toolsmith/astcopy v1.1.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index dcb528c72ef8..4970480c717f 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -126,8 +126,8 @@ github.com/ghostiam/protogetter v0.3.9 h1:j+zlLLWzqLay22Cz/aYwTHKQ88GE2DQ6GkWSYF github.com/ghostiam/protogetter v0.3.9/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= github.com/go-critic/go-critic v0.12.0 h1:iLosHZuye812wnkEz1Xu3aBwn5ocCPfc9yqmFG9pa6w= github.com/go-critic/go-critic v0.12.0/go.mod h1:DpE0P6OVc6JzVYzmM5gq5jMU31zLr4am5mB/VfFK64w= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 77c4b09c085e..094f4dd37a5d 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -15,8 +15,8 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.6 // indirect - go.opentelemetry.io/otel v1.36.0 // indirect - go.opentelemetry.io/otel/sdk v1.36.0 // indirect + go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel/sdk v1.37.0 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 6a89707db999..d68a2ae81442 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -863,8 +863,8 @@ github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTg github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= @@ -1180,16 +1180,16 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= From b98b8b815d0e3208c2ca7104ae26938a5d46aa25 Mon Sep 17 00:00:00 2001 From: joshjms Date: Wed, 2 Jul 2025 08:54:35 +0800 Subject: [PATCH 0321/1068] antithesis: Move docker compose yml files and config Dockerfile to config directory Signed-off-by: joshjms --- tests/antithesis/Makefile | 14 +++++++++----- .../{Dockerfile.config => config/Dockerfile} | 0 .../{ => config}/docker-compose-1-node.yml | 0 .../{ => config}/docker-compose-3-node.yml | 0 4 files changed, 9 insertions(+), 5 deletions(-) rename tests/antithesis/{Dockerfile.config => config/Dockerfile} (100%) rename tests/antithesis/{ => config}/docker-compose-1-node.yml (100%) rename tests/antithesis/{ => config}/docker-compose-3-node.yml (100%) diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 5b2ee7a452e3..835f5a5befdd 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -36,21 +36,24 @@ antithesis-build-etcd-image-main: antithesis-build-etcd-image .PHONY: antithesis-build-config-image antithesis-build-config-image: validate-node-count - docker build -f ./Dockerfile.config . -t etcd-config:latest \ + docker build -f config/Dockerfile config -t etcd-config:latest \ --build-arg IMAGE_TAG=$(IMAGE_TAG) \ --build-arg NODE_COUNT=$(CFG_NODE_COUNT) .PHONY: antithesis-docker-compose-up antithesis-docker-compose-up: validate-node-count - export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker compose -f docker-compose-$(CFG_NODE_COUNT)-node.yml up + export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && \ + docker compose -f config/docker-compose-$(CFG_NODE_COUNT)-node.yml up .PHONY: antithesis-run-container-traffic antithesis-run-container-traffic: validate-node-count - export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker compose -f docker-compose-$(CFG_NODE_COUNT)-node.yml exec client /opt/antithesis/test/v1/robustness/singleton_driver_traffic + export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && \ + docker compose -f config/docker-compose-$(CFG_NODE_COUNT)-node.yml exec client /opt/antithesis/test/v1/robustness/singleton_driver_traffic .PHONY: antithesis-run-container-validation antithesis-run-container-validation: validate-node-count - export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker compose -f docker-compose-$(CFG_NODE_COUNT)-node.yml exec client /opt/antithesis/test/v1/robustness/finally_validation + export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && \ + docker compose -f config/docker-compose-$(CFG_NODE_COUNT)-node.yml exec client /opt/antithesis/test/v1/robustness/finally_validation .PHONY: antithesis-run-local-traffic antithesis-run-local-traffic: @@ -62,7 +65,8 @@ antithesis-run-local-validation: .PHONY: antithesis-clean antithesis-clean: validate-node-count - export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && docker compose -f docker-compose-$(CFG_NODE_COUNT)-node.yml down --remove-orphans + export USER_ID=$(USER_ID) && export GROUP_ID=$(GROUP_ID) && \ + docker compose -f config/docker-compose-$(CFG_NODE_COUNT)-node.yml down --remove-orphans rm -rf /tmp/etcddata0 /tmp/etcddata1 /tmp/etcddata2 /tmp/etcdreport .PHONY: validate-node-count diff --git a/tests/antithesis/Dockerfile.config b/tests/antithesis/config/Dockerfile similarity index 100% rename from tests/antithesis/Dockerfile.config rename to tests/antithesis/config/Dockerfile diff --git a/tests/antithesis/docker-compose-1-node.yml b/tests/antithesis/config/docker-compose-1-node.yml similarity index 100% rename from tests/antithesis/docker-compose-1-node.yml rename to tests/antithesis/config/docker-compose-1-node.yml diff --git a/tests/antithesis/docker-compose-3-node.yml b/tests/antithesis/config/docker-compose-3-node.yml similarity index 100% rename from tests/antithesis/docker-compose-3-node.yml rename to tests/antithesis/config/docker-compose-3-node.yml From e8b4658abedacc42495c13dda0fb010ba51926cc Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 1 Jul 2025 16:20:51 +0530 Subject: [PATCH 0322/1068] dependency: bump go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc from 0.61.0 to 0.62.0 This commit will bump go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc from 0.61.0 to 0.62.0 Also, bumps go.opentelemetry.io/otel/metric from 1.36.0 to 1.37.0 Signed-off-by: ArkaSaha30 --- api/go.mod | 2 +- api/go.sum | 4 ++-- client/v3/go.mod | 1 + client/v3/go.sum | 4 ++-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 8 ++++---- go.mod | 2 +- go.sum | 8 ++++---- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 8 ++++---- tests/go.mod | 2 +- tests/go.sum | 8 ++++---- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 17 files changed, 34 insertions(+), 33 deletions(-) diff --git a/api/go.mod b/api/go.mod index 909c4410d116..f16a3b02ab9f 100644 --- a/api/go.mod +++ b/api/go.mod @@ -20,7 +20,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.37.0 // indirect - go.opentelemetry.io/otel/sdk v1.37.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect diff --git a/api/go.sum b/api/go.sum index 0c02e1189a22..f92a0d38bf24 100644 --- a/api/go.sum +++ b/api/go.sum @@ -38,8 +38,8 @@ go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/Wgbsd go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/client/v3/go.mod b/client/v3/go.mod index 5cb72713cb8c..98cb597dc3ea 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -32,6 +32,7 @@ require ( github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/sdk v1.37.0 // indirect go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.41.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index df441419ab2d..52d7e6d4f211 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -66,8 +66,8 @@ go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/Wgbsd go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 7360ce0f9498..2a9cb4dcd810 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -92,8 +92,8 @@ go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/Wgbsd go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index e676d58a9502..7f40bc6d0e9b 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -75,7 +75,7 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 7473b8bc9f4c..9f828cbb8956 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -115,8 +115,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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= @@ -127,8 +127,8 @@ go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/Wgbsd go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= diff --git a/go.mod b/go.mod index bb281c713d4e..53749e8930fa 100644 --- a/go.mod +++ b/go.mod @@ -82,7 +82,7 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect diff --git a/go.sum b/go.sum index 90fff26ff760..c20d377b953e 100644 --- a/go.sum +++ b/go.sum @@ -154,8 +154,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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= @@ -166,8 +166,8 @@ go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/Wgbsd go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= diff --git a/pkg/go.mod b/pkg/go.mod index 1631cef32999..9af814f5e8ee 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -21,7 +21,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.opentelemetry.io/otel v1.37.0 // indirect - go.opentelemetry.io/otel/sdk v1.37.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 7aac9af0117f..f44d0ce78ab9 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -43,8 +43,8 @@ go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/Wgbsd go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/server/go.mod b/server/go.mod index e6f5c8018b57..4973c063a1f0 100644 --- a/server/go.mod +++ b/server/go.mod @@ -31,7 +31,7 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 go.opentelemetry.io/otel v1.37.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 go.opentelemetry.io/otel/sdk v1.37.0 diff --git a/server/go.sum b/server/go.sum index 54f21758349f..b3c6f78d1d40 100644 --- a/server/go.sum +++ b/server/go.sum @@ -129,8 +129,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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= @@ -141,8 +141,8 @@ go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/Wgbsd go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= diff --git a/tests/go.mod b/tests/go.mod index e78a736b8c64..38a950130814 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -39,7 +39,7 @@ require ( go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 go.opentelemetry.io/otel v1.37.0 go.opentelemetry.io/otel/sdk v1.37.0 go.opentelemetry.io/otel/trace v1.37.0 diff --git a/tests/go.sum b/tests/go.sum index 9421b3f2d920..2b6ab93ce3c8 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -160,8 +160,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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= @@ -172,8 +172,8 @@ go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/Wgbsd go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 094f4dd37a5d..f19eb8d29186 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -16,7 +16,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/otel v1.37.0 // indirect - go.opentelemetry.io/otel/sdk v1.37.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index d68a2ae81442..233708159aba 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1186,8 +1186,8 @@ go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/Wgbsd go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= From 5efaf501ce5230e4ae22894c919fcd81ab96f602 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 20 May 2025 12:54:55 +0100 Subject: [PATCH 0323/1068] Add review policy Signed-off-by: Benjamin Wang --- Documentation/contributor-guide/triage_prs.md | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/Documentation/contributor-guide/triage_prs.md b/Documentation/contributor-guide/triage_prs.md index ffa0f7a1d8d8..f32e45f4cbf8 100644 --- a/Documentation/contributor-guide/triage_prs.md +++ b/Documentation/contributor-guide/triage_prs.md @@ -14,7 +14,7 @@ Following are a few example searches on PR for convenience: ## Scope -These guidelines serve as a primary document for managing PRs in `etcd`. Everyone is welcome to help manage PRs but the work and responsibilities discussed in this document are created with `etcd` maintainers and active contributors in mind. +These guidelines serve as a primary document for managing PRs and review policy in `etcd`. Everyone is welcome to help manage PRs but the work and responsibilities discussed in this document are created with `etcd` maintainers and active contributors in mind. ## Ensure tests are run @@ -30,3 +30,32 @@ Reviewers are responsive in a timely fashion, but considering everyone is busy, ## Verify important labels are in place Make sure that appropriate reviewers are added to the PR. Also, make sure that a milestone is identified. If any of these or other important labels are missing, add them. If a correct label cannot be decided, leave a comment for the maintainers to do so as needed. + +## Review policy + +To ensure code quality and shared ownership, this review policy applies to all pull requests (PRs). + +### Default rule + +PRs should get at least two approvals (/lgtm or GitHub review approval) before merging. + +Notes: + +* Approvals should come from a maintainer, reviewer, or submodule owner familiar with the relevant code or area. +* If there’s disagreement, maintainers should discuss and agree before merging. + +### Exceptions for Less Impactful PRs + +For low-risk changes — such as: + +* CI workflows +* Documentation +* Comments + +The rule can be relaxed: + +* One approval is generally enough. + +However: + +* If the author is a maintainer, they should still get approval from another maintainer, reviewer, or submodule owner, even for minor changes. From 054be4cff951ff530f9af2fd140923b86dd02d58 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Fri, 4 Jul 2025 20:38:51 +0000 Subject: [PATCH 0324/1068] cache: refactor PeekLatest/PeekOldest Signed-off-by: Peter Chang --- cache/cache.go | 9 +++------ cache/demux.go | 18 +++++------------- cache/ringbuffer.go | 12 ++++++------ cache/ringbuffer_test.go | 25 +++++++------------------ 4 files changed, 21 insertions(+), 43 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index 012b504d4efa..1f1338062c01 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -109,10 +109,7 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption // terminal error → one-shot reply, needs a single buffer slot responseChan := make(chan clientv3.WatchResponse, 1) if errors.Is(err, rpctypes.ErrCompacted) { - var compactRev int64 - if oldestEvent := c.demux.PeekOldest(); oldestEvent != nil { - compactRev = oldestEvent.Kv.ModRevision - } + compactRev := c.demux.PeekOldest() responseChan <- clientv3.WatchResponse{CompactRevision: compactRev} } else { responseChan <- clientv3.WatchResponse{Canceled: true} @@ -200,9 +197,9 @@ func serveWatchEvents(ctx context.Context, watchCtx *watchCtx) { clientv3.WithProgressNotify(), clientv3.WithCreatedNotify(), } - if oldestEvent := watchCtx.cache.demux.PeekOldest(); oldestEvent != nil { + if oldestRev := watchCtx.cache.demux.PeekOldest(); oldestRev != 0 { opts = append(opts, - clientv3.WithRev(oldestEvent.Kv.ModRevision+1)) + clientv3.WithRev(oldestRev+1)) } watchCh := watchCtx.cache.watcher.Watch(ctx, watchCtx.cache.prefix, opts...) diff --git a/cache/demux.go b/cache/demux.go index b1f6992bdcab..c46018ef241c 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -67,21 +67,17 @@ func (d *demux) Register(w *watcher, startingRev int64) { d.mu.Lock() defer d.mu.Unlock() - latestEvent := d.history.PeekLatest() + latestRev := d.history.PeekLatest() // Special case: 0 means “newest”. if startingRev == 0 { - if latestEvent == nil { + if latestRev == 0 { d.activeWatchers[w] = 0 return } - startingRev = latestEvent.Kv.ModRevision + 1 + startingRev = latestRev + 1 } - var latestRev int64 - if latestEvent != nil { - latestRev = latestEvent.Kv.ModRevision - } if startingRev <= latestRev { d.laggingWatchers[w] = startingRev } else { @@ -136,12 +132,8 @@ func (d *demux) resyncLaggingWatchers() { d.mu.Lock() defer d.mu.Unlock() + oldestRev := d.history.PeekOldest() for w, nextRev := range d.laggingWatchers { - var oldestRev int64 - if oldestEvent := d.history.PeekOldest(); oldestEvent != nil { - oldestRev = oldestEvent.Kv.ModRevision - } - if oldestRev != 0 && nextRev < oldestRev { w.Stop() delete(d.laggingWatchers, w) @@ -166,7 +158,7 @@ func (d *demux) resyncLaggingWatchers() { } } -func (d *demux) PeekOldest() *clientv3.Event { +func (d *demux) PeekOldest() int64 { d.mu.RLock() defer d.mu.RUnlock() return d.history.PeekOldest() diff --git a/cache/ringbuffer.go b/cache/ringbuffer.go index 06027ed83690..e6cf55a8e77d 100644 --- a/cache/ringbuffer.go +++ b/cache/ringbuffer.go @@ -68,20 +68,20 @@ func (r *ringBuffer) Filter(entryPred EntryPredicate) (events []*clientv3.Event) } // PeekLatest returns the most recently-appended event (or nil if empty). -func (r *ringBuffer) PeekLatest() *clientv3.Event { +func (r *ringBuffer) PeekLatest() int64 { if r.size == 0 { - return nil + return 0 } idx := (r.head - 1 + len(r.buffer)) % len(r.buffer) - return r.buffer[idx] + return r.buffer[idx].Kv.ModRevision } // PeekOldest returns the oldest event currently stored (or nil if empty). -func (r *ringBuffer) PeekOldest() *clientv3.Event { +func (r *ringBuffer) PeekOldest() int64 { if r.size == 0 { - return nil + return 0 } - return r.buffer[r.tail] + return r.buffer[r.tail].Kv.ModRevision } func (r *ringBuffer) RebaseHistory() { diff --git a/cache/ringbuffer_test.go b/cache/ringbuffer_test.go index 39f2ac916398..8dbab5e89c65 100644 --- a/cache/ringbuffer_test.go +++ b/cache/ringbuffer_test.go @@ -70,17 +70,11 @@ func TestPeekLatestAndOldest(t *testing.T) { rb.Append(event(r, "k")) } - latestEvent := rb.PeekLatest() - oldestEvent := rb.PeekOldest() + latestRev := rb.PeekLatest() + oldestRev := rb.PeekOldest() - gotLatestRev := int64(0) - if latestEvent != nil { - gotLatestRev = latestEvent.Kv.ModRevision - } - gotOldestRev := int64(0) - if oldestEvent != nil { - gotOldestRev = oldestEvent.Kv.ModRevision - } + gotLatestRev := latestRev + gotOldestRev := oldestRev if tt.wantLatestRev != gotLatestRev { t.Fatalf("PeekLatest()=%d, want=%d", gotLatestRev, tt.wantLatestRev) @@ -199,14 +193,9 @@ func TestRebaseHistory(t *testing.T) { rb.RebaseHistory() - oldestRev := int64(0) - if ev := rb.PeekOldest(); ev != nil { - oldestRev = ev.Kv.ModRevision - } - latestRev := int64(0) - if ev := rb.PeekLatest(); ev != nil { - latestRev = ev.Kv.ModRevision - } + oldestRev := rb.PeekOldest() + + latestRev := rb.PeekLatest() if oldestRev != 0 { t.Fatalf("PeekOldest()=%d, want=%d", oldestRev, 0) From 9c1fd6f2a478f37d58b0c08be8d3ba7e0c4cc63d Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Fri, 4 Jul 2025 20:58:36 +0000 Subject: [PATCH 0325/1068] cache: remove AfterRev entry predicate Signed-off-by: Peter Chang --- cache/demux.go | 2 +- cache/predicate.go | 9 --------- cache/ringbuffer.go | 12 ++++-------- cache/ringbuffer_test.go | 26 +++++++++----------------- 4 files changed, 14 insertions(+), 35 deletions(-) diff --git a/cache/demux.go b/cache/demux.go index b1f6992bdcab..24fae1d49586 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -148,7 +148,7 @@ func (d *demux) resyncLaggingWatchers() { continue } // TODO: re-enable key‐predicate in Filter when non‐zero startRev or performance tuning is needed - missedEvents := d.history.Filter(AfterRev(nextRev)) + missedEvents := d.history.Filter(nextRev) for _, event := range missedEvents { if !w.enqueueEvent(event) { // buffer overflow: watcher still lagging diff --git a/cache/predicate.go b/cache/predicate.go index 404dfbb01635..a9138bfc8931 100644 --- a/cache/predicate.go +++ b/cache/predicate.go @@ -14,8 +14,6 @@ package cache -import clientv3 "go.etcd.io/etcd/client/v3" - type Prefix string func (prefix Prefix) Match(key []byte) bool { @@ -25,10 +23,3 @@ func (prefix Prefix) Match(key []byte) bool { prefixLen := len(prefix) return len(key) >= prefixLen && string(key[:prefixLen]) == string(prefix) } - -// AfterRev builds an EntryPredicate that matches events whose ModRevision ≥ rev. -func AfterRev(rev int64) EntryPredicate { - return func(ev *clientv3.Event) bool { - return ev.Kv.ModRevision >= rev - } -} diff --git a/cache/ringbuffer.go b/cache/ringbuffer.go index 06027ed83690..6e59720ad63e 100644 --- a/cache/ringbuffer.go +++ b/cache/ringbuffer.go @@ -26,11 +26,7 @@ type ringBuffer struct { head, tail, size int } -// EntryPredicate lets callers decide which entries to keep (e.g. “after revision X”) -type ( - EntryPredicate func(*clientv3.Event) bool - KeyPredicate = func([]byte) bool -) +type KeyPredicate = func([]byte) bool func newRingBuffer(capacity int) *ringBuffer { // assume capacity > 0 – validated by Cache @@ -50,9 +46,9 @@ func (r *ringBuffer) Append(event *clientv3.Event) { r.head = (r.head + 1) % len(r.buffer) } -// Filter returns the events that satisfy every predicate +// Filter returns all events in the buffer whose ModRevision is >= minRev. // TODO: use binary search on the ring buffer to locate the first entry >= nextRev instead of a full scan -func (r *ringBuffer) Filter(entryPred EntryPredicate) (events []*clientv3.Event) { +func (r *ringBuffer) Filter(minRev int64) (events []*clientv3.Event) { events = make([]*clientv3.Event, 0, r.size) for n, i := 0, r.tail; n < r.size; n, i = n+1, (i+1)%len(r.buffer) { @@ -60,7 +56,7 @@ func (r *ringBuffer) Filter(entryPred EntryPredicate) (events []*clientv3.Event) if entry == nil { panic(fmt.Sprintf("ringBuffer.Filter: unexpected nil entry at index %d", i)) } - if entryPred == nil || entryPred(entry) { + if entry.Kv.ModRevision >= minRev { events = append(events, entry) } } diff --git a/cache/ringbuffer_test.go b/cache/ringbuffer_test.go index 39f2ac916398..5c86c5ae6783 100644 --- a/cache/ringbuffer_test.go +++ b/cache/ringbuffer_test.go @@ -97,7 +97,7 @@ func TestFilter(t *testing.T) { name string capacity int revs []int64 - predicate EntryPredicate + minRev int64 wantFilteredRevs []int64 wantLatestRev int64 }{ @@ -105,7 +105,7 @@ func TestFilter(t *testing.T) { name: "no_filter", capacity: 5, revs: []int64{1, 2, 3}, - predicate: AfterRev(0), + minRev: 0, wantFilteredRevs: []int64{1, 2, 3}, wantLatestRev: 3, }, @@ -113,7 +113,7 @@ func TestFilter(t *testing.T) { name: "partial_match", capacity: 5, revs: []int64{10, 11, 12, 13}, - predicate: AfterRev(12), + minRev: 12, wantFilteredRevs: []int64{12, 13}, wantLatestRev: 13, }, @@ -121,7 +121,7 @@ func TestFilter(t *testing.T) { name: "filter_when_full", capacity: 3, revs: []int64{20, 21, 22, 23, 24}, - predicate: AfterRev(23), + minRev: 23, wantFilteredRevs: []int64{23, 24}, wantLatestRev: 24, }, @@ -129,23 +129,15 @@ func TestFilter(t *testing.T) { name: "none_match", capacity: 4, revs: []int64{30, 31}, - predicate: AfterRev(100), + minRev: 100, wantFilteredRevs: []int64{}, wantLatestRev: 31, }, { - name: "nil_predicate", - capacity: 4, - revs: []int64{1, 2, 3}, - predicate: nil, - wantFilteredRevs: []int64{1, 2, 3}, - wantLatestRev: 3, - }, - { - name: "empty_buffer_nil_predicate", + name: "empty_buffer", capacity: 3, revs: nil, - predicate: nil, + minRev: 0, wantFilteredRevs: []int64{}, wantLatestRev: 0, }, @@ -160,7 +152,7 @@ func TestFilter(t *testing.T) { rb.Append(event(r, "k")) } - gotEvents := rb.Filter(tt.predicate) + gotEvents := rb.Filter(tt.minRev) gotRevs := make([]int64, len(gotEvents)) for i, ev := range gotEvents { gotRevs[i] = ev.Kv.ModRevision @@ -215,7 +207,7 @@ func TestRebaseHistory(t *testing.T) { t.Fatalf("PeekLatest()=%d, want=%d", latestRev, 0) } - events := rb.Filter(nil) + events := rb.Filter(0) if len(events) != 0 { t.Fatalf("Filter() len(events)=%d, want=%d", len(events), 0) } From 5805cabd0178d51a5adeec2e54d1224d33095b83 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Wed, 12 Mar 2025 10:01:59 +0100 Subject: [PATCH 0326/1068] Add Kubernetes API coverage test consuming traces It pulls a file from testdata with traces collected by Jaeger and then iterates over them in order to group them by Etcd gRPC method used. Signed-off-by: Aleksander Mistewicz --- tests/go.mod | 4 + tests/go.sum | 11 ++ tests/robustness/coverage/README.md | 60 ++++++++++ tests/robustness/coverage/coverage_test.go | 113 ++++++++++++++++++ .../coverage/kind-with-tracing.yaml | 16 +++ tests/robustness/coverage/testdata/.gitignore | 2 + 6 files changed, 206 insertions(+) create mode 100644 tests/robustness/coverage/README.md create mode 100644 tests/robustness/coverage/coverage_test.go create mode 100644 tests/robustness/coverage/kind-with-tracing.yaml create mode 100644 tests/robustness/coverage/testdata/.gitignore diff --git a/tests/go.mod b/tests/go.mod index 38a950130814..d3870e468b28 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -39,6 +39,7 @@ require ( go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0 + go.opentelemetry.io/collector/pdata v1.35.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 go.opentelemetry.io/otel v1.37.0 go.opentelemetry.io/otel/sdk v1.37.0 @@ -74,9 +75,12 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect github.com/olekukonko/ll v0.0.8 // indirect diff --git a/tests/go.sum b/tests/go.sum index 2b6ab93ce3c8..54db51f552d0 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -68,6 +68,7 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= @@ -84,6 +85,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= @@ -102,6 +105,11 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= @@ -142,6 +150,7 @@ github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= @@ -160,6 +169,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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/collector/pdata v1.35.0 h1:ck6WO6hCNjepADY/p9sT9/rLECTLO5ukYTumKzsqB/E= +go.opentelemetry.io/collector/pdata v1.35.0/go.mod h1:pttpb089864qG1k0DMeXLgwwTFLk+o3fAW9I6MF9tzw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= diff --git a/tests/robustness/coverage/README.md b/tests/robustness/coverage/README.md new file mode 100644 index 000000000000..7f0c54f2afd4 --- /dev/null +++ b/tests/robustness/coverage/README.md @@ -0,0 +1,60 @@ +## Overview + +Go tests in this directory analyze the usage of Etcd API based on collected +traces from a Kubernetes cluster. They output information on: + +1. Number of calls per gRPC method used by Kubernetes + +This information can be used to track the coverage of k8s-etcd contract. + +### Manual test execution + +At first we will manually set up the cluster, run e2e tests, download traces and +then execute the test. + +1\. Set up [KIND +cluster](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) with +tracing exporting to [Jaeger](https://www.jaegertracing.io/) + +``` +export KUBECONFIG="$(pwd)/kind-with-tracing-config" +kind create cluster --config kind-with-tracing.yaml +kubectl run jaeger --overrides='{ "apiVersion": "v1", "spec": { "hostNetwork": true, "nodeName": "kind-control-plane", "tolerations": [{"effect": "NoExecute", "operator": "Exists"}]} }' \ + --labels='tier=control-plane' \ + --image jaegertracing/jaeger:2.6.0 \ + -- --set=extensions.jaeger_storage.backends.some_storage.memory.max_traces=2000000 +``` + +2\. Exercise Kubernetes API. For example, build and run Conformance tests from +Kubernetes repository (this usually takes 30-40m or will time out after 1 hour): + +``` +export KUBECONFIG="$(pwd)/kind-with-tracing-config" +kind export kubeconfig +make WHAT="test/e2e/e2e.test" +./_output/bin/e2e.test -context kind-kind -ginkgo.focus=".*Conformance" -num-nodes 2 +``` + +3\. Download traces and put them into `tests/robustness/coverage/testdata` +directory in Etcd git repository: + +``` +kubectl port-forward jaeger --address localhost --address :: 16686:16686 & +curl -v --get --retry 10 --retry-connrefused -o testdata/demo_traces.json \ + -H "Content-Type: application/json" \ + --data-urlencode "query.start_time_min=$(date --date="5 days ago" -Ins)" \ + --data-urlencode "query.start_time_max=$(date -Ins)" \ + --data-urlencode "query.service_name=etcd" \ + "http://127.0.0.1:16686/api/v3/traces" +kill $! +``` + +4\. Run Go test + +``` +go test -v -timeout 60s go.etcd.io/etcd/tests/v3/robustness/coverage +``` + +### Automated test execution + +Work on improving these tests is tracked in https://github.com/etcd-io/etcd/issues/20182 diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go new file mode 100644 index 000000000000..6d5c3dc3c46f --- /dev/null +++ b/tests/robustness/coverage/coverage_test.go @@ -0,0 +1,113 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package coverage_test + +import ( + "encoding/json" + "os" + "path/filepath" + "strings" + "testing" + + "go.opentelemetry.io/collector/pdata/ptrace" +) + +func TestInterfaceUse(t *testing.T) { + files, err := os.ReadDir("testdata") + if err != nil { + t.Fatal(err) + } + + for _, file := range files { + filename := file.Name() + if filename == ".gitignore" { + continue + } + t.Run(filename, func(t *testing.T) { testInterfaceUse(t, filename) }) + } +} + +func testInterfaceUse(t *testing.T, filename string) { + b, err := os.ReadFile(filepath.Join("testdata", filename)) + if err != nil { + t.Fatalf("read test data: %v", err) + } + var dump Dump + err = json.Unmarshal(b, &dump) + if err != nil { + t.Fatalf("unmarshal testdata %s: %v", filename, err) + } + traces := dump.Result + t.Log("Traces found:", traces.ResourceSpans().Len()) + + callsByOperationName := make(map[string]int) + for _, trace := range traces.ResourceSpans().All() { + serviceName := getServiceName(trace) + if serviceName != "etcd" { + continue + } + opName := getOperationName(trace) + callsByOperationName[opName]++ + } + t.Logf("API calls by gRPC method: %+v", callsByOperationName) + + knownMethodsUsedByKubernetes := map[string]bool{ + "etcdserverpb.KV/Range": true, // All calls should go through etcd-k8s interface + "etcdserverpb.KV/Txn": true, // All calls should go through etcd-k8s interface + "etcdserverpb.KV/Compact": true, // Compaction should move to using internal Etcd mechanism + "etcdserverpb.Watch/Watch": true, // Not part of the contract interface (yet) + "etcdserverpb.Lease/LeaseGrant": true, // Used to manage masterleases and events + "etcdserverpb.Maintenance/Status": true, // Used to expose database size on apiserver's metrics endpoint + } + for opName := range callsByOperationName { + if !knownMethodsUsedByKubernetes[opName] { + t.Errorf("method called outside the list: %s", opName) + } + } +} + +type Traces struct { + ptrace.Traces +} + +func (t *Traces) UnmarshalJSON(b []byte) error { + traces, err := new(ptrace.JSONUnmarshaler).UnmarshalTraces(b) + if err != nil { + return err + } + t.Traces = traces + return nil +} + +type Dump struct { + Result *Traces `json:"result"` +} + +func getServiceName(trace ptrace.ResourceSpans) string { + serviceName, _ := trace.Resource().Attributes().Get("service.name") + return serviceName.AsString() +} + +func getOperationName(trace ptrace.ResourceSpans) string { + for _, scopeSpan := range trace.ScopeSpans().All() { + for _, span := range scopeSpan.Spans().All() { + name := span.Name() + if strings.HasPrefix(name, "etcdserverpb") { + return name + } + } + } + return "" +} diff --git a/tests/robustness/coverage/kind-with-tracing.yaml b/tests/robustness/coverage/kind-with-tracing.yaml new file mode 100644 index 000000000000..ced7adfddf86 --- /dev/null +++ b/tests/robustness/coverage/kind-with-tracing.yaml @@ -0,0 +1,16 @@ +kind: Cluster +apiVersion: kind.x-k8s.io/v1alpha4 +nodes: +- role: control-plane + kubeadmConfigPatches: + - | + kind: ClusterConfiguration + etcd: + local: + extraArgs: + experimental-enable-distributed-tracing: "true" + experimental-distributed-tracing-address: "0.0.0.0:4317" + experimental-distributed-tracing-service-name: "etcd" + experimental-distributed-tracing-sampling-rate: "1000000" +- role: worker +- role: worker diff --git a/tests/robustness/coverage/testdata/.gitignore b/tests/robustness/coverage/testdata/.gitignore new file mode 100644 index 000000000000..c96a04f008ee --- /dev/null +++ b/tests/robustness/coverage/testdata/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file From 4de00366cb3decdc5e7cbe1f9bf86e3fee1d93ec Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Fri, 4 Jul 2025 09:16:14 +0200 Subject: [PATCH 0327/1068] Use already imported library instead All tools needed to process traces are already available in etcd/tests. Signed-off-by: Aleksander Mistewicz --- tests/go.mod | 4 --- tests/go.sum | 11 ------- tests/robustness/coverage/coverage_test.go | 35 +++++++++++----------- 3 files changed, 18 insertions(+), 32 deletions(-) diff --git a/tests/go.mod b/tests/go.mod index d3870e468b28..38a950130814 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -39,7 +39,6 @@ require ( go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0 - go.opentelemetry.io/collector/pdata v1.35.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 go.opentelemetry.io/otel v1.37.0 go.opentelemetry.io/otel/sdk v1.37.0 @@ -75,12 +74,9 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect github.com/olekukonko/ll v0.0.8 // indirect diff --git a/tests/go.sum b/tests/go.sum index 54db51f552d0..2b6ab93ce3c8 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -68,7 +68,6 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= @@ -85,8 +84,6 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= @@ -105,11 +102,6 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= @@ -150,7 +142,6 @@ github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= @@ -169,8 +160,6 @@ 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/collector/pdata v1.35.0 h1:ck6WO6hCNjepADY/p9sT9/rLECTLO5ukYTumKzsqB/E= -go.opentelemetry.io/collector/pdata v1.35.0/go.mod h1:pttpb089864qG1k0DMeXLgwwTFLk+o3fAW9I6MF9tzw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index 6d5c3dc3c46f..43333ab5ca9a 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -21,7 +21,9 @@ import ( "strings" "testing" - "go.opentelemetry.io/collector/pdata/ptrace" + traceservice "go.opentelemetry.io/proto/otlp/collector/trace/v1" + tracev1 "go.opentelemetry.io/proto/otlp/trace/v1" + "google.golang.org/protobuf/encoding/protojson" ) func TestInterfaceUse(t *testing.T) { @@ -50,10 +52,10 @@ func testInterfaceUse(t *testing.T, filename string) { t.Fatalf("unmarshal testdata %s: %v", filename, err) } traces := dump.Result - t.Log("Traces found:", traces.ResourceSpans().Len()) + t.Log("Traces found:", len(traces.GetResourceSpans())) callsByOperationName := make(map[string]int) - for _, trace := range traces.ResourceSpans().All() { + for _, trace := range traces.GetResourceSpans() { serviceName := getServiceName(trace) if serviceName != "etcd" { continue @@ -79,31 +81,30 @@ func testInterfaceUse(t *testing.T, filename string) { } type Traces struct { - ptrace.Traces + traceservice.ExportTraceServiceRequest } func (t *Traces) UnmarshalJSON(b []byte) error { - traces, err := new(ptrace.JSONUnmarshaler).UnmarshalTraces(b) - if err != nil { - return err - } - t.Traces = traces - return nil + return protojson.Unmarshal(b, &t.ExportTraceServiceRequest) } type Dump struct { Result *Traces `json:"result"` } -func getServiceName(trace ptrace.ResourceSpans) string { - serviceName, _ := trace.Resource().Attributes().Get("service.name") - return serviceName.AsString() +func getServiceName(trace *tracev1.ResourceSpans) string { + for _, kv := range trace.GetResource().GetAttributes() { + if kv.GetKey() == "service.name" { + return kv.GetValue().GetStringValue() + } + } + return "" } -func getOperationName(trace ptrace.ResourceSpans) string { - for _, scopeSpan := range trace.ScopeSpans().All() { - for _, span := range scopeSpan.Spans().All() { - name := span.Name() +func getOperationName(trace *tracev1.ResourceSpans) string { + for _, scopeSpan := range trace.GetScopeSpans() { + for _, span := range scopeSpan.GetSpans() { + name := span.GetName() if strings.HasPrefix(name, "etcdserverpb") { return name } From a0badc9bea4d3c2475871e89ec77119a75dbfa43 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Mon, 7 Jul 2025 09:43:11 +0200 Subject: [PATCH 0328/1068] Split test into subtests by method name It makes it easier to know what methods were used from the tests outputs. Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/coverage_test.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index 43333ab5ca9a..783a98105dfa 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -73,11 +73,20 @@ func testInterfaceUse(t *testing.T, filename string) { "etcdserverpb.Lease/LeaseGrant": true, // Used to manage masterleases and events "etcdserverpb.Maintenance/Status": true, // Used to expose database size on apiserver's metrics endpoint } - for opName := range callsByOperationName { - if !knownMethodsUsedByKubernetes[opName] { - t.Errorf("method called outside the list: %s", opName) - } + for method := range knownMethodsUsedByKubernetes { + t.Run(method, func(t *testing.T) { + if _, ok := callsByOperationName[method]; !ok { + t.Errorf("expected %q method to be called at least once", method) + } + }) } + t.Run("only_expected_methods_were_called", func(t *testing.T) { + for opName := range callsByOperationName { + if !knownMethodsUsedByKubernetes[opName] { + t.Errorf("method called outside the list: %s", opName) + } + } + }) } type Traces struct { From 95f69b9ef1ad8f4ca8f0b8023d779413c17c08a8 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Mon, 7 Jul 2025 13:37:58 +0200 Subject: [PATCH 0329/1068] Print call stats for API coverage test in a nice table Signed-off-by: Aleksander Mistewicz --- tests/go.mod | 2 +- tests/robustness/coverage/coverage_test.go | 30 ++++++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/tests/go.mod b/tests/go.mod index 38a950130814..2ed78cb0dccf 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -24,6 +24,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 + github.com/olekukonko/tablewriter v1.0.7 github.com/prometheus/client_golang v1.22.0 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.65.0 @@ -80,7 +81,6 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect github.com/olekukonko/ll v0.0.8 // indirect - github.com/olekukonko/tablewriter v1.0.7 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index 783a98105dfa..9faf97eda03e 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -15,12 +15,16 @@ package coverage_test import ( + "bytes" "encoding/json" + "fmt" "os" "path/filepath" "strings" "testing" + "github.com/olekukonko/tablewriter" + "github.com/olekukonko/tablewriter/tw" traceservice "go.opentelemetry.io/proto/otlp/collector/trace/v1" tracev1 "go.opentelemetry.io/proto/otlp/trace/v1" "google.golang.org/protobuf/encoding/protojson" @@ -51,8 +55,10 @@ func testInterfaceUse(t *testing.T, filename string) { if err != nil { t.Fatalf("unmarshal testdata %s: %v", filename, err) } + if dump.Result == nil { + t.Fatalf("missing result data") + } traces := dump.Result - t.Log("Traces found:", len(traces.GetResourceSpans())) callsByOperationName := make(map[string]int) for _, trace := range traces.GetResourceSpans() { @@ -63,7 +69,7 @@ func testInterfaceUse(t *testing.T, filename string) { opName := getOperationName(trace) callsByOperationName[opName]++ } - t.Logf("API calls by gRPC method: %+v", callsByOperationName) + t.Logf("\n%s", printableCallTable(callsByOperationName)) knownMethodsUsedByKubernetes := map[string]bool{ "etcdserverpb.KV/Range": true, // All calls should go through etcd-k8s interface @@ -121,3 +127,23 @@ func getOperationName(trace *tracev1.ResourceSpans) string { } return "" } + +func printableCallTable(callsByOperationName map[string]int) string { + buf := new(bytes.Buffer) + cfgBuilder := tablewriter.NewConfigBuilder().WithRowAlignment(tw.AlignRight) + table := tablewriter.NewTable(buf, tablewriter.WithConfig(cfgBuilder.Build())) + table.Header("method", "calls", "percent") + + totalCalls := 0 + for _, c := range callsByOperationName { + totalCalls += c + } + + for opName, callCount := range callsByOperationName { + table.Append(opName, callCount, fmt.Sprintf("%.2f%%", float64(callCount*100)/float64(totalCalls))) + } + table.Footer("total", totalCalls, "100.00%") + + table.Render() + return buf.String() +} From 41baa3a2826648f9cd0ab4f6c0fc864acf4edbe8 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 8 Jul 2025 08:37:16 +0200 Subject: [PATCH 0330/1068] Fix yamllint errors Signed-off-by: Aleksander Mistewicz --- .../coverage/kind-with-tracing.yaml | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/tests/robustness/coverage/kind-with-tracing.yaml b/tests/robustness/coverage/kind-with-tracing.yaml index ced7adfddf86..612452821b13 100644 --- a/tests/robustness/coverage/kind-with-tracing.yaml +++ b/tests/robustness/coverage/kind-with-tracing.yaml @@ -1,16 +1,17 @@ +--- kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: -- role: control-plane - kubeadmConfigPatches: - - | - kind: ClusterConfiguration - etcd: - local: - extraArgs: - experimental-enable-distributed-tracing: "true" - experimental-distributed-tracing-address: "0.0.0.0:4317" - experimental-distributed-tracing-service-name: "etcd" - experimental-distributed-tracing-sampling-rate: "1000000" -- role: worker -- role: worker + - role: control-plane + kubeadmConfigPatches: + - | + kind: ClusterConfiguration + etcd: + local: + extraArgs: + experimental-enable-distributed-tracing: "true" + experimental-distributed-tracing-address: "0.0.0.0:4317" + experimental-distributed-tracing-service-name: "etcd" + experimental-distributed-tracing-sampling-rate: "1000000" + - role: worker + - role: worker From 6546b24e8180be58ec48704a70d4732d935e1482 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 8 Jul 2025 09:08:20 +0200 Subject: [PATCH 0331/1068] Move ensureTrace to traceutil package Signed-off-by: Aleksander Mistewicz --- pkg/traceutil/trace.go | 13 +++++++++++++ server/etcdserver/txn/delete.go | 2 +- server/etcdserver/txn/put.go | 2 +- server/etcdserver/txn/range.go | 2 +- server/etcdserver/txn/txn.go | 14 +------------- server/etcdserver/v3_server.go | 2 +- 6 files changed, 18 insertions(+), 17 deletions(-) diff --git a/pkg/traceutil/trace.go b/pkg/traceutil/trace.go index abf5cf1d229a..1c4d44859003 100644 --- a/pkg/traceutil/trace.go +++ b/pkg/traceutil/trace.go @@ -88,6 +88,19 @@ func Get(ctx context.Context) *Trace { return TODO() } +// EnsureTrace creates a new trace if needed and adds it to the context. +func EnsureTrace(ctx context.Context, lg *zap.Logger, operation string, fields ...Field) (context.Context, *Trace) { + trace := Get(ctx) + if trace.IsEmpty() { + trace = New(operation, + lg, + fields..., + ) + ctx = context.WithValue(ctx, TraceKey{}, trace) + } + return ctx, trace +} + func (t *Trace) GetStartTime() time.Time { return t.startTime } diff --git a/server/etcdserver/txn/delete.go b/server/etcdserver/txn/delete.go index 7d1218e8ce18..f1baa5122446 100644 --- a/server/etcdserver/txn/delete.go +++ b/server/etcdserver/txn/delete.go @@ -26,7 +26,7 @@ import ( ) func DeleteRange(ctx context.Context, lg *zap.Logger, kv mvcc.KV, dr *pb.DeleteRangeRequest) (resp *pb.DeleteRangeResponse, trace *traceutil.Trace, err error) { - ctx, trace = ensureTrace(ctx, lg, "delete_range", + ctx, trace = traceutil.EnsureTrace(ctx, lg, "delete_range", traceutil.Field{Key: "key", Value: string(dr.Key)}, traceutil.Field{Key: "range_end", Value: string(dr.RangeEnd)}, ) diff --git a/server/etcdserver/txn/put.go b/server/etcdserver/txn/put.go index 8c304cc59293..90768d740115 100644 --- a/server/etcdserver/txn/put.go +++ b/server/etcdserver/txn/put.go @@ -27,7 +27,7 @@ import ( ) func Put(ctx context.Context, lg *zap.Logger, lessor lease.Lessor, kv mvcc.KV, p *pb.PutRequest) (resp *pb.PutResponse, trace *traceutil.Trace, err error) { - ctx, trace = ensureTrace(ctx, lg, "put", + ctx, trace = traceutil.EnsureTrace(ctx, lg, "put", traceutil.Field{Key: "key", Value: string(p.Key)}, traceutil.Field{Key: "req_size", Value: p.Size()}, ) diff --git a/server/etcdserver/txn/range.go b/server/etcdserver/txn/range.go index 5988691aac59..2ffc920e20e9 100644 --- a/server/etcdserver/txn/range.go +++ b/server/etcdserver/txn/range.go @@ -29,7 +29,7 @@ import ( ) func Range(ctx context.Context, lg *zap.Logger, kv mvcc.KV, r *pb.RangeRequest) (resp *pb.RangeResponse, trace *traceutil.Trace, err error) { - ctx, trace = ensureTrace(ctx, lg, "range") + ctx, trace = traceutil.EnsureTrace(ctx, lg, "range") defer func(start time.Time) { success := err == nil RangeSecObserve(success, time.Since(start)) diff --git a/server/etcdserver/txn/txn.go b/server/etcdserver/txn/txn.go index 9519d94d7bc2..c937d9b4958e 100644 --- a/server/etcdserver/txn/txn.go +++ b/server/etcdserver/txn/txn.go @@ -30,7 +30,7 @@ import ( ) func Txn(ctx context.Context, lg *zap.Logger, rt *pb.TxnRequest, txnModeWriteWithSharedBuffer bool, kv mvcc.KV, lessor lease.Lessor) (txnResp *pb.TxnResponse, trace *traceutil.Trace, err error) { - ctx, trace = ensureTrace(ctx, lg, "transaction") + ctx, trace = traceutil.EnsureTrace(ctx, lg, "transaction") isWrite := !IsTxnReadonly(rt) // When the transaction contains write operations, we use ReadTx instead of // ConcurrentReadTx to avoid extra overhead of copying buffer. @@ -419,15 +419,3 @@ func checkTxnReqsPermission(as auth.AuthStore, ai *auth.AuthInfo, reqs []*pb.Req return nil } - -func ensureTrace(ctx context.Context, lg *zap.Logger, operation string, fields ...traceutil.Field) (context.Context, *traceutil.Trace) { - trace := traceutil.Get(ctx) - if trace.IsEmpty() { - trace = traceutil.New(operation, - lg, - fields..., - ) - ctx = context.WithValue(ctx, traceutil.TraceKey{}, trace) - } - return ctx, trace -} diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 2e667b6d156e..2c2fa23a63e3 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -202,7 +202,7 @@ func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse func (s *EtcdServer) Compact(ctx context.Context, r *pb.CompactionRequest) (*pb.CompactionResponse, error) { startTime := time.Now() result, err := s.processInternalRaftRequestOnce(ctx, pb.InternalRaftRequest{Compaction: r}) - trace := traceutil.TODO() + ctx, trace := traceutil.EnsureTrace(ctx, s.Logger(), "compact") if result != nil && result.Trace != nil { trace = result.Trace defer func() { From 0813b52f4b34c994dc6b5e5b5899227d20bec4c0 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Mon, 7 Jul 2025 13:52:42 +0000 Subject: [PATCH 0332/1068] cache: refactor cache_test.go (cache/ -> tests/integration/) Signed-off-by: Peter Chang --- cache/go.mod | 45 +----- cache/go.sum | 66 +------- go.mod | 1 + tests/go.mod | 2 + {cache => tests/integration}/cache_test.go | 174 +++++++++------------ 5 files changed, 83 insertions(+), 205 deletions(-) rename {cache => tests/integration}/cache_test.go (62%) diff --git a/cache/go.mod b/cache/go.mod index 865b6c468e84..418eb775e51a 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -1,4 +1,4 @@ -module go.etcd.io/etcd/cache +module go.etcd.io/etcd/cache/v3 go 1.24 @@ -7,70 +7,29 @@ toolchain go1.24.4 require ( github.com/google/go-cmp v0.7.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 ) require ( - github.com/beorn7/perks v1.0.1 // indirect - github.com/cenkalti/backoff/v5 v5.0.2 // indirect - github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/dustin/go-humanize v1.0.1 // indirect github.com/go-logr/logr v1.4.3 // indirect - github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/btree v1.1.3 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect - github.com/jonboulle/clockwork v0.5.0 // indirect - github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/prometheus/client_golang v1.22.0 // indirect - github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.65.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect - github.com/sirupsen/logrus v1.9.3 // indirect - github.com/soheilhy/cmux v0.1.5 // indirect - github.com/spf13/pflag v1.0.6 // indirect - github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect - github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect - go.etcd.io/bbolt v1.4.2 // indirect - go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 // indirect - go.etcd.io/raft/v3 v3.6.0 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect - go.opentelemetry.io/otel v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect - go.opentelemetry.io/otel/metric v1.37.0 // indirect - go.opentelemetry.io/otel/sdk v1.37.0 // indirect - go.opentelemetry.io/otel/trace v1.37.0 // indirect - go.opentelemetry.io/proto/otlp v1.7.0 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.39.0 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect - golang.org/x/time v0.12.0 // indirect google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1 // indirect google.golang.org/grpc v1.73.0 // indirect google.golang.org/protobuf v1.36.6 // indirect - gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect ) replace ( go.etcd.io/etcd/api/v3 => ../api go.etcd.io/etcd/client/pkg/v3 => ../client/pkg go.etcd.io/etcd/client/v3 => ../client/v3 - go.etcd.io/etcd/pkg/v3 => ../pkg - go.etcd.io/etcd/server/v3 => ../server ) diff --git a/cache/go.sum b/cache/go.sum index 2e13ddfa4d78..d2ba3069adae 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -5,9 +5,8 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= -github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -15,18 +14,13 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= -github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= -github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -34,7 +28,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -42,8 +35,6 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -61,22 +52,17 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= -github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= @@ -84,18 +70,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= -github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= -github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -111,40 +87,17 @@ github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGI github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= -github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.2 h1:IrUHp260R8c+zYx/Tm8QZr04CX+qWS5PGfPdevhdm1I= -go.etcd.io/bbolt v1.4.2/go.mod h1:Is8rSHO/b4f3XigBC0lL0+4FwAQv3HXEEIgFMuKHceM= -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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= @@ -154,8 +107,6 @@ go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVW go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= -go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= 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= @@ -165,8 +116,6 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -183,7 +132,6 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= @@ -195,8 +143,6 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -205,7 +151,6 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -214,8 +159,6 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -260,16 +203,9 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= -gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/go.mod b/go.mod index 53749e8930fa..5cd719927020 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ toolchain go1.24.3 replace ( go.etcd.io/etcd/api/v3 => ./api + go.etcd.io/etcd/cache/v3 => ./cache go.etcd.io/etcd/client/pkg/v3 => ./client/pkg go.etcd.io/etcd/client/v3 => ./client/v3 go.etcd.io/etcd/etcdctl/v3 => ./etcdctl diff --git a/tests/go.mod b/tests/go.mod index 2ed78cb0dccf..9f2951ecbec5 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -6,6 +6,7 @@ toolchain go1.24.3 replace ( go.etcd.io/etcd/api/v3 => ../api + go.etcd.io/etcd/cache/v3 => ../cache go.etcd.io/etcd/client/pkg/v3 => ../client/pkg go.etcd.io/etcd/client/v3 => ../client/v3 go.etcd.io/etcd/etcdctl/v3 => ../etcdctl @@ -32,6 +33,7 @@ require ( github.com/stretchr/testify v1.10.0 go.etcd.io/bbolt v1.4.2 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/cache/v3 v3.6.1 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/etcdctl/v3 v3.6.0-alpha.0 diff --git a/cache/cache_test.go b/tests/integration/cache_test.go similarity index 62% rename from cache/cache_test.go rename to tests/integration/cache_test.go index 3ecc1bc794ea..0a8e93a788e2 100644 --- a/cache/cache_test.go +++ b/tests/integration/cache_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cache +package integration import ( "context" @@ -23,26 +23,34 @@ import ( "github.com/google/go-cmp/cmp" "go.etcd.io/etcd/api/v3/mvccpb" - "go.etcd.io/etcd/client/pkg/v3/types" + cache "go.etcd.io/etcd/cache/v3" clientv3 "go.etcd.io/etcd/client/v3" - embed "go.etcd.io/etcd/server/v3/embed" + "go.etcd.io/etcd/tests/v3/framework/integration" ) -func TestWatchWithCache(t *testing.T) { - client := startEtcd(t) - cache, err := New(client, "/", WithHistoryWindowSize(32)) +func TestCacheWatch(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + t.Cleanup(func() { clus.Terminate(t) }) + client := clus.Client(0) + + c, err := cache.New(client, "/", cache.WithHistoryWindowSize(32)) if err != nil { t.Fatalf("New(...): %v", err) } - t.Cleanup(cache.Close) - if err := cache.WaitReady(t.Context()); err != nil { + t.Cleanup(c.Close) + if err := c.WaitReady(t.Context()); err != nil { t.Fatalf("cache not ready: %v", err) } - testWatch(t, client.KV, cache) + testWatch(t, client.KV, c) } -func TestWatchWithoutCache(t *testing.T) { - client := startEtcd(t) +func TestWatch(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + t.Cleanup(func() { clus.Terminate(t) }) + client := clus.Client(0) + testWatch(t, client.KV, client.Watcher) } @@ -116,72 +124,78 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { } } -func TestLaggingWatcher(t *testing.T) { +func TestCacheLaggingWatcher(t *testing.T) { const prefix = "/test/" - cli := startEtcd(t) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + t.Cleanup(func() { clus.Terminate(t) }) + client := clus.Client(0) tests := []struct { - name string - window int - eventCount int - wantEvents int - wantClosed bool + name string + window int + eventCount int + wantExactEventCount int + wantAtMaxEventCount int + wantClosed bool }{ { - name: "all event fit", - window: 10, - eventCount: 9, - wantEvents: 9, - wantClosed: false, + name: "all event fit", + window: 10, + eventCount: 9, + wantExactEventCount: 9, + wantClosed: false, }, { - name: "events fill window", - window: 10, - eventCount: 10, - wantEvents: 10, - wantClosed: false, + name: "events fill window", + window: 10, + eventCount: 10, + wantExactEventCount: 10, + wantClosed: false, }, { - name: "event fill pipeline", - window: 10, - eventCount: 11, - wantEvents: 11, - wantClosed: false, + name: "event fill pipeline", + window: 10, + eventCount: 11, + wantExactEventCount: 11, + wantClosed: false, }, { - name: "pipeline overflow", - window: 10, - eventCount: 12, - wantEvents: 1, - wantClosed: true, + name: "pipeline overflow", + window: 10, + eventCount: 12, + wantAtMaxEventCount: 1, // Either 0 or 1. + wantClosed: true, }, } for _, tt := range tests { - tt := tt t.Run(tt.name, func(t *testing.T) { - cache, err := New( - cli, prefix, - WithHistoryWindowSize(tt.window), - WithPerWatcherBufferSize(0), - WithResyncInterval(10*time.Millisecond), + c, err := cache.New( + client, prefix, + cache.WithHistoryWindowSize(tt.window), + cache.WithPerWatcherBufferSize(0), + cache.WithResyncInterval(10*time.Millisecond), ) if err != nil { t.Fatalf("New(...): %v", err) } - defer cache.Close() + defer c.Close() - if err := cache.WaitReady(t.Context()); err != nil { + if err := c.WaitReady(t.Context()); err != nil { t.Fatalf("cache not ready: %v", err) } - ch := cache.Watch(t.Context(), prefix, clientv3.WithPrefix()) + ch := c.Watch(t.Context(), prefix, clientv3.WithPrefix()) - generateEvents(t, cli, prefix, tt.eventCount) + generateEvents(t, client, prefix, tt.eventCount) gotEvents, ok := readEvents(ch) closed := !ok - if tt.wantEvents != len(gotEvents) { - t.Errorf("gotEvents=%v, wantEvents=%v", len(gotEvents), tt.wantEvents) + if tt.wantExactEventCount != 0 && tt.wantExactEventCount != len(gotEvents) { + t.Errorf("gotEvents=%v, wantEvents=%v", len(gotEvents), tt.wantExactEventCount) + } + if tt.wantAtMaxEventCount != 0 && len(gotEvents) > tt.wantAtMaxEventCount { + t.Errorf("gotEvents=%v, wantEvents<%v", len(gotEvents), tt.wantAtMaxEventCount) } if closed != tt.wantClosed { t.Errorf("closed=%v, wantClosed=%v", closed, tt.wantClosed) @@ -190,16 +204,20 @@ func TestLaggingWatcher(t *testing.T) { } } -func TestRejectsUnsupportedWatch(t *testing.T) { - client := startEtcd(t) +func TestCacheRejectsUnsupportedWatch(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + t.Cleanup(func() { clus.Terminate(t) }) + client := clus.Client(0) + ctx := t.Context() - cache, err := New(client, "") + c, err := cache.New(client, "") if err != nil { t.Fatalf("New(...): %v", err) } - t.Cleanup(cache.Close) - if err := cache.WaitReady(ctx); err != nil { + t.Cleanup(c.Close) + if err := c.WaitReady(ctx); err != nil { t.Fatal(err) } @@ -228,7 +246,7 @@ func TestRejectsUnsupportedWatch(t *testing.T) { for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { - watchCh := cache.Watch(ctx, tt.key, tt.opts...) + watchCh := c.Watch(ctx, tt.key, tt.opts...) resp, ok := <-watchCh if !ok || !resp.Canceled { @@ -238,46 +256,6 @@ func TestRejectsUnsupportedWatch(t *testing.T) { } } -func startEtcd(t *testing.T) *clientv3.Client { - t.Helper() - - cfg := embed.NewConfig() - cfg.Dir = t.TempDir() - cfg.LogLevel = "error" - - newClient, _ := types.NewURLs([]string{"http://127.0.0.1:0"}) - newPeer, _ := types.NewURLs([]string{"http://127.0.0.1:0"}) - cfg.ListenClientUrls, cfg.AdvertiseClientUrls = newClient, newClient - cfg.ListenPeerUrls, cfg.AdvertisePeerUrls = newPeer, newPeer - - cfg.InitialCluster = fmt.Sprintf("%s=%s", cfg.Name, cfg.AdvertisePeerUrls[0].String()) - - srv, err := embed.StartEtcd(cfg) - if err != nil { - t.Fatalf("start etcd: %v", err) - } - t.Cleanup(func() { srv.Close() }) - - select { - case <-srv.Server.ReadyNotify(): - case <-time.After(10 * time.Second): - t.Fatalf("etcd ready timeout") - } - client, err := clientv3.New(clientv3.Config{ - Endpoints: []string{srv.Clients[0].Addr().String()}, - DialTimeout: 5 * time.Second, - }) - if err != nil { - t.Fatalf("new client: %v", err) - } - t.Cleanup(func() { - if err := client.Close(); err != nil { - t.Errorf("client.Close() error: %v", err) - } - }) - return client -} - func generateEvents(t *testing.T, client *clientv3.Client, prefix string, n int) { t.Helper() for i := 0; i < n; i++ { @@ -293,7 +271,7 @@ type Watcher interface { } func readEvents(watch clientv3.WatchChan) (events []*clientv3.Event, ok bool) { - deadline := time.After(200 * time.Millisecond) + deadline := time.After(time.Second) for { select { case resp, ok := <-watch: @@ -303,6 +281,8 @@ func readEvents(watch clientv3.WatchChan) (events []*clientv3.Event, ok bool) { events = append(events, resp.Events...) case <-deadline: return events, true + case <-time.After(100 * time.Millisecond): + return events, true } } } From 12520f6ddf5267c98f67a655bf9b118f65b1c7f8 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 8 Jul 2025 09:30:25 +0200 Subject: [PATCH 0333/1068] Use traceutil.EnsureTrace instead of traceutil.New Signed-off-by: Aleksander Mistewicz --- server/etcdserver/apply/apply.go | 5 ++--- server/etcdserver/v3_server.go | 19 ++++++++----------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/server/etcdserver/apply/apply.go b/server/etcdserver/apply/apply.go index ff454973dccb..9948d2a39f1f 100644 --- a/server/etcdserver/apply/apply.go +++ b/server/etcdserver/apply/apply.go @@ -161,8 +161,7 @@ func (a *applierV3backend) Txn(rt *pb.TxnRequest) (*pb.TxnResponse, *traceutil.T func (a *applierV3backend) Compaction(compaction *pb.CompactionRequest) (*pb.CompactionResponse, <-chan struct{}, *traceutil.Trace, error) { resp := &pb.CompactionResponse{} resp.Header = &pb.ResponseHeader{} - trace := traceutil.New("compact", - a.options.Logger, + ctx, trace := traceutil.EnsureTrace(context.TODO(), a.options.Logger, "compact", traceutil.Field{Key: "revision", Value: compaction.Revision}, ) @@ -171,7 +170,7 @@ func (a *applierV3backend) Compaction(compaction *pb.CompactionRequest) (*pb.Com return nil, ch, nil, err } // get the current revision. which key to get is not important. - rr, _ := a.options.KV.Range(context.TODO(), []byte("compaction"), nil, mvcc.RangeOptions{}) + rr, _ := a.options.KV.Range(ctx, []byte("compaction"), nil, mvcc.RangeOptions{}) resp.Header.Revision = rr.Rev return resp, ch, trace, err } diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 2c2fa23a63e3..47a3ec5f69ce 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -101,12 +101,10 @@ type Authenticator interface { } func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResponse, error) { - trace := traceutil.New("range", - s.Logger(), + ctx, trace := traceutil.EnsureTrace(ctx, s.Logger(), "range", traceutil.Field{Key: "range_begin", Value: string(r.Key)}, traceutil.Field{Key: "range_end", Value: string(r.RangeEnd)}, ) - ctx = context.WithValue(ctx, traceutil.TraceKey{}, trace) var resp *pb.RangeResponse var err error @@ -158,12 +156,11 @@ func (s *EtcdServer) DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) } func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, error) { - if txn.IsTxnReadonly(r) { - trace := traceutil.New("transaction", - s.Logger(), - traceutil.Field{Key: "read_only", Value: true}, - ) - ctx = context.WithValue(ctx, traceutil.TraceKey{}, trace) + readOnly := txn.IsTxnReadonly(r) + ctx, trace := traceutil.EnsureTrace(ctx, s.Logger(), "transaction", + traceutil.Field{Key: "read_only", Value: readOnly}, + ) + if readOnly { if !txn.IsTxnSerializable(r) { err := s.linearizableReadNotify(ctx) trace.Step("agreement among raft nodes before linearized reading") @@ -201,8 +198,8 @@ func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse func (s *EtcdServer) Compact(ctx context.Context, r *pb.CompactionRequest) (*pb.CompactionResponse, error) { startTime := time.Now() - result, err := s.processInternalRaftRequestOnce(ctx, pb.InternalRaftRequest{Compaction: r}) ctx, trace := traceutil.EnsureTrace(ctx, s.Logger(), "compact") + result, err := s.processInternalRaftRequestOnce(ctx, pb.InternalRaftRequest{Compaction: r}) if result != nil && result.Trace != nil { trace = result.Trace defer func() { @@ -912,7 +909,7 @@ func (s *EtcdServer) linearizableReadLoop() { // as a single loop is can unlock multiple reads, it is not very useful // to propagate the trace from Txn or Range. - trace := traceutil.New("linearizableReadLoop", s.Logger()) + _, trace := traceutil.EnsureTrace(context.Background(), s.Logger(), "linearizableReadLoop") nextnr := newNotifier() s.readMu.Lock() From f195d0d62aa59e5ecc42083ebabad67884bff381 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Mon, 7 Jul 2025 15:14:13 +0200 Subject: [PATCH 0334/1068] Fix wrong import of google.golang.org/genproto in cache module Signed-off-by: Aleksander Mistewicz --- cache/go.mod | 3 +- cache/go.sum | 112 ++------------------------------------------------- 2 files changed, 6 insertions(+), 109 deletions(-) diff --git a/cache/go.mod b/cache/go.mod index 418eb775e51a..b25a800af76a 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -23,7 +23,8 @@ require ( golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect - google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/grpc v1.73.0 // indirect google.golang.org/protobuf v1.36.6 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index d2ba3069adae..40517664176e 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -1,33 +1,13 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -35,61 +15,32 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -106,7 +57,6 @@ go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFh go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= 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= @@ -116,54 +66,27 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -171,41 +94,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1 h1:b9mVrqYfq3P4bCdaLg1qtBnPzUYgglsIdjZkL/fQVOE= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From be36e1b470e15a2336e123c43bdefaa42a12786c Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 8 Jul 2025 15:47:41 +0530 Subject: [PATCH 0335/1068] dependency: bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.36.0 to 1.37.0 This commit will bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.36.0 to 1.37.0 Signed-off-by: ArkaSaha30 --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 7f40bc6d0e9b..ee568f155e87 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -78,7 +78,7 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect go.opentelemetry.io/otel/sdk v1.37.0 // indirect go.opentelemetry.io/otel/trace v1.37.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 9f828cbb8956..89a4d51591d5 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -121,8 +121,8 @@ go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 h1:EtFWSnwW9hGObjkIdmlnWSydO+Qs8OwzfzXLUPg4xOc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0/go.mod h1:QjUEoiGCPkvFZ/MjK6ZZfNOS6mfVEVKYE99dFhuN2LI= go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= diff --git a/go.mod b/go.mod index 5cd719927020..5f578287161a 100644 --- a/go.mod +++ b/go.mod @@ -86,7 +86,7 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect go.opentelemetry.io/otel/sdk v1.37.0 // indirect go.opentelemetry.io/otel/trace v1.37.0 // indirect diff --git a/go.sum b/go.sum index c20d377b953e..387367dc0298 100644 --- a/go.sum +++ b/go.sum @@ -160,8 +160,8 @@ go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 h1:EtFWSnwW9hGObjkIdmlnWSydO+Qs8OwzfzXLUPg4xOc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0/go.mod h1:QjUEoiGCPkvFZ/MjK6ZZfNOS6mfVEVKYE99dFhuN2LI= go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= diff --git a/server/go.mod b/server/go.mod index 4973c063a1f0..80da94449b92 100644 --- a/server/go.mod +++ b/server/go.mod @@ -33,7 +33,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 go.opentelemetry.io/otel v1.37.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 go.opentelemetry.io/otel/sdk v1.37.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.39.0 diff --git a/server/go.sum b/server/go.sum index b3c6f78d1d40..a7bf4ae923c8 100644 --- a/server/go.sum +++ b/server/go.sum @@ -135,8 +135,8 @@ go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 h1:EtFWSnwW9hGObjkIdmlnWSydO+Qs8OwzfzXLUPg4xOc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0/go.mod h1:QjUEoiGCPkvFZ/MjK6ZZfNOS6mfVEVKYE99dFhuN2LI= go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= diff --git a/tests/go.mod b/tests/go.mod index 9f2951ecbec5..85f5a929f87a 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -93,7 +93,7 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.41.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 2b6ab93ce3c8..82b8d5910a2d 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -166,8 +166,8 @@ go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 h1:EtFWSnwW9hGObjkIdmlnWSydO+Qs8OwzfzXLUPg4xOc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0/go.mod h1:QjUEoiGCPkvFZ/MjK6ZZfNOS6mfVEVKYE99dFhuN2LI= go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= From 6a0d393706d4e3266e9e36012381e7ba9674153c Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 8 Jul 2025 09:31:15 +0200 Subject: [PATCH 0336/1068] Make traceutil.New private as traceutil.EnsureTrace is a better option Signed-off-by: Aleksander Mistewicz --- pkg/traceutil/trace.go | 4 ++-- pkg/traceutil/trace_test.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/traceutil/trace.go b/pkg/traceutil/trace.go index 1c4d44859003..cd75a9e60ce3 100644 --- a/pkg/traceutil/trace.go +++ b/pkg/traceutil/trace.go @@ -72,7 +72,7 @@ type step struct { isSubTraceEnd bool } -func New(op string, lg *zap.Logger, fields ...Field) *Trace { +func newTrace(op string, lg *zap.Logger, fields ...Field) *Trace { return &Trace{operation: op, lg: lg, startTime: time.Now(), fields: fields} } @@ -92,7 +92,7 @@ func Get(ctx context.Context) *Trace { func EnsureTrace(ctx context.Context, lg *zap.Logger, operation string, fields ...Field) (context.Context, *Trace) { trace := Get(ctx) if trace.IsEmpty() { - trace = New(operation, + trace = newTrace(operation, lg, fields..., ) diff --git a/pkg/traceutil/trace_test.go b/pkg/traceutil/trace_test.go index 5080671977d5..395a1e0bb02d 100644 --- a/pkg/traceutil/trace_test.go +++ b/pkg/traceutil/trace_test.go @@ -73,7 +73,7 @@ func TestCreate(t *testing.T) { } ) - trace := New(op, nil, fields[0], fields[1]) + _, trace := EnsureTrace(t.Context(), nil, op, fields[0], fields[1]) assert.Equalf(t, trace.operation, op, "Expected %v; Got %v", op, trace.operation) for i, f := range trace.fields { assert.Equalf(t, f.Key, fields[i].Key, "Expected %v; Got %v", fields[i].Key, f.Key) From 60b5d544bc1c7c44da86af25b996e3246c44e9a4 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 8 Jul 2025 15:51:25 +0530 Subject: [PATCH 0337/1068] dependency: bump github.com/olekukonko/tablewriter from 1.0.7 to 1.0.8 This commit will bump github.com/olekukonko/tablewriter from 1.0.7 to 1.0.8 Signed-off-by: ArkaSaha30 --- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index a497ab6a8b17..b7c0fd3e028d 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -8,7 +8,7 @@ require ( github.com/bgentry/speakeasy v0.2.0 github.com/cheggaaa/pb/v3 v3.1.7 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.0.7 + github.com/olekukonko/tablewriter v1.0.8 github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 2a9cb4dcd810..7d12d4a8e876 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -58,8 +58,8 @@ github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hS github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.7 h1:HCC2e3MM+2g72M81ZcJU11uciw6z/p82aEnm4/ySDGw= -github.com/olekukonko/tablewriter v1.0.7/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= +github.com/olekukonko/tablewriter v1.0.8 h1:f6wJzHg4QUtJdvrVPKco4QTrAylgaU0+b9br/lJxEiQ= +github.com/olekukonko/tablewriter v1.0.8/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index ee568f155e87..2f70425ebc29 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -23,7 +23,7 @@ replace ( require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.0.7 + github.com/olekukonko/tablewriter v1.0.8 github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 go.etcd.io/bbolt v1.4.2 diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 89a4d51591d5..a56c531e6d76 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -72,8 +72,8 @@ github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hS github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.7 h1:HCC2e3MM+2g72M81ZcJU11uciw6z/p82aEnm4/ySDGw= -github.com/olekukonko/tablewriter v1.0.7/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= +github.com/olekukonko/tablewriter v1.0.8 h1:f6wJzHg4QUtJdvrVPKco4QTrAylgaU0+b9br/lJxEiQ= +github.com/olekukonko/tablewriter v1.0.8/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/go.mod b/go.mod index 5f578287161a..22a0a6207a77 100644 --- a/go.mod +++ b/go.mod @@ -69,7 +69,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect github.com/olekukonko/ll v0.0.8 // indirect - github.com/olekukonko/tablewriter v1.0.7 // indirect + github.com/olekukonko/tablewriter v1.0.8 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/go.sum b/go.sum index 387367dc0298..d40648e886a9 100644 --- a/go.sum +++ b/go.sum @@ -102,8 +102,8 @@ github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hS github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.7 h1:HCC2e3MM+2g72M81ZcJU11uciw6z/p82aEnm4/ySDGw= -github.com/olekukonko/tablewriter v1.0.7/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= +github.com/olekukonko/tablewriter v1.0.8 h1:f6wJzHg4QUtJdvrVPKco4QTrAylgaU0+b9br/lJxEiQ= +github.com/olekukonko/tablewriter v1.0.8/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/tests/go.mod b/tests/go.mod index 85f5a929f87a..97a06c6a63ac 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -25,7 +25,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 - github.com/olekukonko/tablewriter v1.0.7 + github.com/olekukonko/tablewriter v1.0.8 github.com/prometheus/client_golang v1.22.0 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.65.0 diff --git a/tests/go.sum b/tests/go.sum index 82b8d5910a2d..6fef28e7f22f 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -108,8 +108,8 @@ github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hS github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.7 h1:HCC2e3MM+2g72M81ZcJU11uciw6z/p82aEnm4/ySDGw= -github.com/olekukonko/tablewriter v1.0.7/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= +github.com/olekukonko/tablewriter v1.0.8 h1:f6wJzHg4QUtJdvrVPKco4QTrAylgaU0+b9br/lJxEiQ= +github.com/olekukonko/tablewriter v1.0.8/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 2d9acdfcb620..5c63f4fdb471 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -147,7 +147,7 @@ require ( github.com/nunnatsa/ginkgolinter v0.19.1 // indirect github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect github.com/olekukonko/ll v0.0.8 // indirect - github.com/olekukonko/tablewriter v1.0.7 // indirect + github.com/olekukonko/tablewriter v1.0.8 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 4970480c717f..9948eaed45ce 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -328,8 +328,8 @@ github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hS github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.7 h1:HCC2e3MM+2g72M81ZcJU11uciw6z/p82aEnm4/ySDGw= -github.com/olekukonko/tablewriter v1.0.7/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= +github.com/olekukonko/tablewriter v1.0.8 h1:f6wJzHg4QUtJdvrVPKco4QTrAylgaU0+b9br/lJxEiQ= +github.com/olekukonko/tablewriter v1.0.8/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= From b5217cffd9b3e147e9fca011eb5aceb6c58f9f54 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Tue, 8 Jul 2025 15:22:34 +0000 Subject: [PATCH 0338/1068] cache: fix waitGroup goroutine registration Signed-off-by: Peter Chang --- cache/cache.go | 92 ++++++++++++++++++++------------------------------ 1 file changed, 37 insertions(+), 55 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index 9612b82bc4dc..a021def590d9 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -31,13 +31,14 @@ var ErrUnsupportedWatch = errors.New("cache: unsupported watch parameters") // Cache buffers a single etcd Watch for a given key‐prefix and fan‑outs local watchers. type Cache struct { - prefix string // prefix is the key-prefix this shard is responsible for ("" = root). - cfg Config // immutable runtime configuration - watcher clientv3.Watcher - demux *demux // demux fans incoming events out to active watchers and manages resync. - ready chan struct{} - stop context.CancelFunc - waitGroup sync.WaitGroup + prefix string // prefix is the key-prefix this shard is responsible for ("" = root). + cfg Config // immutable runtime configuration + watcher clientv3.Watcher + demux *demux // demux fans incoming events out to active watchers and manages resync. + ready chan struct{} + stop context.CancelFunc + waitGroup sync.WaitGroup + internalCtx context.Context } // watchCtx collects all the knobs that both serveWatchEvents and watchRetryLoop need. @@ -63,11 +64,12 @@ func New(watcher clientv3.Watcher, prefix string, opts ...Option) (*Cache, error internalCtx, cancel := context.WithCancel(context.Background()) cache := &Cache{ - prefix: prefix, - cfg: cfg, - watcher: watcher, - ready: make(chan struct{}), - stop: cancel, + prefix: prefix, + cfg: cfg, + watcher: watcher, + ready: make(chan struct{}), + stop: cancel, + internalCtx: internalCtx, } cache.demux = NewDemux(internalCtx, &cache.waitGroup, cfg.HistoryWindowSize, cfg.ResyncInterval) @@ -101,36 +103,42 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption } op := clientv3.OpGet(key, opts...) - requestedRev := op.Rev() + startRev := op.Rev() - // build the internal Watch event stream (for historic reply + live) - stream, w, err := c.newWatchEventStream(ctx, key, requestedRev, opts) - if err != nil { - // terminal error → one-shot reply, needs a single buffer slot + // TODO: Support watch on subprefix and single key & arbitrary startRev support once we guarantee gap-free replay. + if key != c.prefix || !clientv3.IsOptsWithPrefix(opts) || startRev != 0 { responseChan := make(chan clientv3.WatchResponse, 1) - if errors.Is(err, rpctypes.ErrCompacted) { - compactRev := c.demux.PeekOldest() - responseChan <- clientv3.WatchResponse{CompactRevision: compactRev} - } else { - responseChan <- clientv3.WatchResponse{Canceled: true} - } + responseChan <- clientv3.WatchResponse{Canceled: true} close(responseChan) return responseChan } - ctx, cancel := context.WithCancel(ctx) - go func() { <-w.Done(); cancel() }() + w := newWatcher(c.cfg.PerWatcherBufferSize, func(k []byte) bool { return strings.HasPrefix(string(k), key) }) + c.demux.Register(w, startRev) responseChan := make(chan clientv3.WatchResponse) + c.waitGroup.Add(1) go func() { - defer cancel() + defer c.waitGroup.Done() defer close(responseChan) - - for events := range stream { + defer c.demux.Unregister(w) + for { select { case <-ctx.Done(): return - case responseChan <- clientv3.WatchResponse{Events: events}: + case <-c.internalCtx.Done(): + return + case events, ok := <-w.eventQueue: + if !ok { + return + } + select { + case <-ctx.Done(): + return + case <-c.internalCtx.Done(): + return + case responseChan <- clientv3.WatchResponse{Events: events}: + } } } }() @@ -163,32 +171,6 @@ func (c *Cache) Close() { c.waitGroup.Wait() } -// newWatchEventStream builds a single internal Watch event stream for -// both historical replay (>= startRev) and live updates filtered by key. -func (c *Cache) newWatchEventStream( - ctx context.Context, - key string, - startRev int64, - opts []clientv3.OpOption, -) (<-chan []*clientv3.Event, *watcher, error) { - // TODO: Support watch on subprefix and single key & arbitrary startRev support once we guarantee gap-free replay. - if key != c.prefix || !clientv3.IsOptsWithPrefix(opts) || startRev != 0 { - return nil, nil, ErrUnsupportedWatch - } - - pred := func(k []byte) bool { return strings.HasPrefix(string(k), key) } - - w := newWatcher(c.cfg.PerWatcherBufferSize, pred) - c.demux.Register(w, startRev) - - go func() { - <-ctx.Done() - c.demux.Unregister(w) - }() - - return w.eventQueue, w, nil -} - func serveWatchEvents(ctx context.Context, watchCtx *watchCtx) { backoff := watchCtx.backoffStart for { From 4f90eb53b9ea0daebaeafcee7ea190fd203ea445 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Fri, 4 Jul 2025 00:00:47 +0000 Subject: [PATCH 0339/1068] cache: batch events with identical revision into one watch response Signed-off-by: Peter Chang --- cache/cache.go | 12 +-- cache/demux.go | 56 +++++++---- cache/demux_test.go | 165 ++++++++++++++++++++++++++++++++ cache/ringbuffer.go | 61 ++++++++---- cache/ringbuffer_test.go | 130 +++++++++++++++++++++---- cache/watcher.go | 23 +++-- tests/integration/cache_test.go | 22 ++++- 7 files changed, 401 insertions(+), 68 deletions(-) create mode 100644 cache/demux_test.go diff --git a/cache/cache.go b/cache/cache.go index 1f1338062c01..9612b82bc4dc 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -70,7 +70,7 @@ func New(watcher clientv3.Watcher, prefix string, opts ...Option) (*Cache, error stop: cancel, } - cache.demux = newDemux(internalCtx, &cache.waitGroup, cfg.HistoryWindowSize, cfg.ResyncInterval) + cache.demux = NewDemux(internalCtx, &cache.waitGroup, cfg.HistoryWindowSize, cfg.ResyncInterval) cache.waitGroup.Add(1) go func() { @@ -126,11 +126,11 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption defer cancel() defer close(responseChan) - for event := range stream { + for events := range stream { select { case <-ctx.Done(): return - case responseChan <- clientv3.WatchResponse{Events: []*clientv3.Event{event}}: + case responseChan <- clientv3.WatchResponse{Events: events}: } } }() @@ -170,7 +170,7 @@ func (c *Cache) newWatchEventStream( key string, startRev int64, opts []clientv3.OpOption, -) (<-chan *clientv3.Event, *watcher, error) { +) (<-chan []*clientv3.Event, *watcher, error) { // TODO: Support watch on subprefix and single key & arbitrary startRev support once we guarantee gap-free replay. if key != c.prefix || !clientv3.IsOptsWithPrefix(opts) || startRev != 0 { return nil, nil, ErrUnsupportedWatch @@ -240,9 +240,7 @@ func readWatchChannel( } return err } - for _, event := range resp.Events { - demux.Broadcast(event) - } + demux.Broadcast(resp.Events) } return nil } diff --git a/cache/demux.go b/cache/demux.go index d8c813dd4fa2..adbc495b6699 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -31,14 +31,8 @@ type demux struct { resyncInterval time.Duration } -func newDemux(ctx context.Context, wg *sync.WaitGroup, historyWindowSize int, resyncInterval time.Duration) *demux { - d := &demux{ - activeWatchers: make(map[*watcher]int64), - laggingWatchers: make(map[*watcher]int64), - history: newRingBuffer(historyWindowSize), - resyncInterval: resyncInterval, - } - +func NewDemux(ctx context.Context, wg *sync.WaitGroup, historyWindowSize int, resyncInterval time.Duration) *demux { + d := newDemux(historyWindowSize, resyncInterval) wg.Add(1) go func() { defer wg.Done() @@ -47,6 +41,15 @@ func newDemux(ctx context.Context, wg *sync.WaitGroup, historyWindowSize int, re return d } +func newDemux(historyWindowSize int, resyncInterval time.Duration) *demux { + return &demux{ + activeWatchers: make(map[*watcher]int64), + laggingWatchers: make(map[*watcher]int64), + history: newRingBuffer(historyWindowSize), + resyncInterval: resyncInterval, + } +} + // resyncLoop periodically tries to catch lagging watchers up by replaying events from History. func (d *demux) resyncLoop(ctx context.Context) { timer := time.NewTimer(d.resyncInterval) @@ -95,20 +98,35 @@ func (d *demux) Unregister(w *watcher) { w.Stop() } -func (d *demux) Broadcast(event *clientv3.Event) { +func (d *demux) Broadcast(events []*clientv3.Event) { + if len(events) == 0 { + return + } + d.mu.Lock() defer d.mu.Unlock() - d.history.Append(event) + d.history.Append(events) + + lastRev := events[len(events)-1].Kv.ModRevision for w, nextRev := range d.activeWatchers { - if event.Kv.ModRevision < nextRev { + start := len(events) + for i, ev := range events { + if ev.Kv.ModRevision >= nextRev { + start = i + break + } + } + + if start == len(events) { continue } - if !w.enqueueEvent(event) { // buffer overflow + + if !w.enqueueEvent(events[start:]) { // overflow → lagging d.laggingWatchers[w] = nextRev delete(d.activeWatchers, w) } else { - d.activeWatchers[w] = event.Kv.ModRevision + 1 + d.activeWatchers[w] = lastRev + 1 } } } @@ -140,16 +158,18 @@ func (d *demux) resyncLaggingWatchers() { continue } // TODO: re-enable key‐predicate in Filter when non‐zero startRev or performance tuning is needed - missedEvents := d.history.Filter(nextRev) + missed := d.history.Filter(nextRev) - for _, event := range missedEvents { - if !w.enqueueEvent(event) { // buffer overflow: watcher still lagging + enqueueFailed := false + for _, eventBatch := range missed { + if !w.enqueueEvent(eventBatch) { // buffer overflow: watcher still lagging + enqueueFailed = true break } - nextRev = event.Kv.ModRevision + 1 + nextRev = eventBatch[0].Kv.ModRevision + 1 } - if len(missedEvents) > 0 && nextRev > missedEvents[len(missedEvents)-1].Kv.ModRevision { + if !enqueueFailed { delete(d.laggingWatchers, w) d.activeWatchers[w] = nextRev } else { diff --git a/cache/demux_test.go b/cache/demux_test.go new file mode 100644 index 000000000000..abfa6219a063 --- /dev/null +++ b/cache/demux_test.go @@ -0,0 +1,165 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cache + +import ( + "testing" + "time" + + "github.com/google/go-cmp/cmp" + + "go.etcd.io/etcd/api/v3/mvccpb" + clientv3 "go.etcd.io/etcd/client/v3" +) + +func TestBroadcastBatching(t *testing.T) { + tests := []struct { + name string + input []int64 + wantRevs []int64 + wantSizes []int + }{ + { + name: "two groups", + input: []int64{14, 14, 15, 15, 15}, + wantRevs: []int64{14}, + wantSizes: []int{5}, + }, + { + name: "single group", + input: []int64{7, 7, 7}, + wantRevs: []int64{7}, + wantSizes: []int{3}, + }, + { + name: "all distinct", + input: []int64{1, 2, 3}, + wantRevs: []int64{1}, + wantSizes: []int{3}, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + d := newDemux(16, 10*time.Millisecond) + w := newWatcher(len(tt.input)+1, nil) + d.Register(w, 0) + + d.Broadcast(eventRevs(tt.input...)) + + gotRevs, gotSizes := readBatches(t, w, len(tt.wantRevs)) + + if diff := cmp.Diff(tt.wantRevs, gotRevs); diff != "" { + t.Fatalf("revision mismatch (-want +got):\n%s", diff) + } + if diff := cmp.Diff(tt.wantSizes, gotSizes); diff != "" { + t.Fatalf("batch size mismatch (-want +got):\n%s", diff) + } + }) + } +} + +func TestSlowWatcherResync(t *testing.T) { + tests := []struct { + name string + input []int64 + wantInitialRevs []int64 + wantInitialSizes []int + wantResyncRevs []int64 + wantResyncSizes []int + }{ + { + name: "single event overflow", + input: []int64{1, 2, 3}, + wantInitialRevs: []int64{1}, + wantInitialSizes: []int{3}, + wantResyncRevs: []int64{}, + wantResyncSizes: []int{}, + }, + { + name: "multi events batch overflow", + input: []int64{10, 10, 11, 12, 12}, + wantInitialRevs: []int64{10}, + wantInitialSizes: []int{5}, + wantResyncRevs: []int64{}, + wantResyncSizes: []int{}, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + d := newDemux(16, 10*time.Millisecond) + w := newWatcher(1, nil) + d.Register(w, 0) + + d.Broadcast(eventRevs(tt.input...)) + + gotInitRevs, gotInitSizes := readBatches(t, w, len(tt.wantInitialRevs)) + if diff := cmp.Diff(tt.wantInitialRevs, gotInitRevs); diff != "" { + t.Fatalf("initial revs mismatch (-want +got):\n%s", diff) + } + if diff := cmp.Diff(tt.wantInitialSizes, gotInitSizes); diff != "" { + t.Fatalf("initial batch sizes mismatch (-want +got):\n%s", diff) + } + + gotRevs, gotSizes := make([]int64, 0, len(tt.wantResyncRevs)), make([]int, 0, len(tt.wantResyncRevs)) + for len(gotRevs) < len(tt.wantResyncRevs) { + d.resyncLaggingWatchers() + revs, sizes := readBatches(t, w, 1) + gotRevs = append(gotRevs, revs...) + gotSizes = append(gotSizes, sizes...) + } + if diff := cmp.Diff(tt.wantResyncRevs, gotRevs); diff != "" { + t.Fatalf("resync revs mismatch (-want +got):\n%s", diff) + } + if diff := cmp.Diff(tt.wantResyncSizes, gotSizes); diff != "" { + t.Fatalf("resync batch sizes mismatch (-want +got):\n%s", diff) + } + }) + } +} + +func eventRevs(revs ...int64) []*clientv3.Event { + events := make([]*clientv3.Event, 0, len(revs)) + for _, r := range revs { + kv := &mvccpb.KeyValue{ + Key: []byte("k"), + Value: []byte("v"), + ModRevision: r, + } + events = append(events, &clientv3.Event{ + Type: clientv3.EventTypePut, + Kv: kv, + }) + } + return events +} + +func readBatches(t *testing.T, w *watcher, n int) (revs []int64, sizes []int) { + t.Helper() + timeout := time.After(2 * time.Second) + for len(revs) < n { + select { + case batch := <-w.eventQueue: + revs = append(revs, batch[0].Kv.ModRevision) + sizes = append(sizes, len(batch)) + case <-timeout: + t.Fatalf("timed out waiting for %d batches; got %d", n, len(revs)) + } + } + return revs, sizes +} diff --git a/cache/ringbuffer.go b/cache/ringbuffer.go index f682efd9a5c8..b9d1681cb58b 100644 --- a/cache/ringbuffer.go +++ b/cache/ringbuffer.go @@ -21,46 +21,73 @@ import ( ) type ringBuffer struct { - buffer []*clientv3.Event + buffer []batch // head is the index immediately after the last non-empty entry in the buffer (i.e., the next write position). head, tail, size int } +// batch groups all events that share one ModRevision. +type batch struct { + rev int64 + events []*clientv3.Event +} + type KeyPredicate = func([]byte) bool func newRingBuffer(capacity int) *ringBuffer { // assume capacity > 0 – validated by Cache return &ringBuffer{ - buffer: make([]*clientv3.Event, capacity), + buffer: make([]batch, capacity), } } -func (r *ringBuffer) Append(event *clientv3.Event) { - if r.size == len(r.buffer) { // full → overwrite oldest +func (r *ringBuffer) Append(events []*clientv3.Event) { + start := 0 + for end := 1; end < len(events); end++ { + if events[end].Kv.ModRevision != events[start].Kv.ModRevision { + r.append(batch{ + rev: events[start].Kv.ModRevision, + events: events[start:end], + }) + start = end + } + } + if start < len(events) { + r.append(batch{ + rev: events[start].Kv.ModRevision, + events: events[start:], + }) + } +} + +func (r *ringBuffer) append(b batch) { + if len(b.events) == 0 { + return + } + if r.size == len(r.buffer) { r.tail = (r.tail + 1) % len(r.buffer) } else { r.size++ } - - r.buffer[r.head] = event + r.buffer[r.head] = b r.head = (r.head + 1) % len(r.buffer) } // Filter returns all events in the buffer whose ModRevision is >= minRev. // TODO: use binary search on the ring buffer to locate the first entry >= nextRev instead of a full scan -func (r *ringBuffer) Filter(minRev int64) (events []*clientv3.Event) { - events = make([]*clientv3.Event, 0, r.size) +func (r *ringBuffer) Filter(minRev int64) (eventBatches [][]*clientv3.Event) { + eventBatches = make([][]*clientv3.Event, 0, r.size) for n, i := 0, r.tail; n < r.size; n, i = n+1, (i+1)%len(r.buffer) { - entry := r.buffer[i] - if entry == nil { - panic(fmt.Sprintf("ringBuffer.Filter: unexpected nil entry at index %d", i)) + eventBatch := r.buffer[i] + if eventBatch.events == nil { + panic(fmt.Sprintf("ringBuffer.Filter: unexpected nil eventBatch at index %d", i)) } - if entry.Kv.ModRevision >= minRev { - events = append(events, entry) + if eventBatch.rev >= minRev { + eventBatches = append(eventBatches, eventBatch.events) } } - return events + return eventBatches } // PeekLatest returns the most recently-appended event (or nil if empty). @@ -69,7 +96,7 @@ func (r *ringBuffer) PeekLatest() int64 { return 0 } idx := (r.head - 1 + len(r.buffer)) % len(r.buffer) - return r.buffer[idx].Kv.ModRevision + return r.buffer[idx].rev } // PeekOldest returns the oldest event currently stored (or nil if empty). @@ -77,12 +104,12 @@ func (r *ringBuffer) PeekOldest() int64 { if r.size == 0 { return 0 } - return r.buffer[r.tail].Kv.ModRevision + return r.buffer[r.tail].rev } func (r *ringBuffer) RebaseHistory() { r.head, r.tail, r.size = 0, 0, 0 for i := range r.buffer { - r.buffer[i] = nil + r.buffer[i] = batch{} } } diff --git a/cache/ringbuffer_test.go b/cache/ringbuffer_test.go index 3bbe58c41bb2..0e7e3b0105c2 100644 --- a/cache/ringbuffer_test.go +++ b/cache/ringbuffer_test.go @@ -15,6 +15,7 @@ package cache import ( + "fmt" "testing" "github.com/google/go-cmp/cmp" @@ -64,10 +65,13 @@ func TestPeekLatestAndOldest(t *testing.T) { for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { - t.Parallel() rb := newRingBuffer(tt.capacity) for _, r := range tt.revs { - rb.Append(event(r, "k")) + batch, err := makeEventBatch(r, "k", 1) + if err != nil { + t.Fatalf("makeEventBatch(%d, k, 1) failed: %v", r, err) + } + rb.Append(batch) } latestRev := rb.PeekLatest() @@ -140,16 +144,19 @@ func TestFilter(t *testing.T) { for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { - t.Parallel() rb := newRingBuffer(tt.capacity) for _, r := range tt.revs { - rb.Append(event(r, "k")) + batch, err := makeEventBatch(r, "k", 11) + if err != nil { + t.Fatalf("makeEventBatch(%d, k, 11) failed: %v", r, err) + } + rb.Append(batch) } - gotEvents := rb.Filter(tt.minRev) - gotRevs := make([]int64, len(gotEvents)) - for i, ev := range gotEvents { - gotRevs[i] = ev.Kv.ModRevision + gotBatches := rb.Filter(tt.minRev) + gotRevs := make([]int64, len(gotBatches)) + for i, b := range gotBatches { + gotRevs[i] = b[0].Kv.ModRevision } if diff := cmp.Diff(tt.wantFilteredRevs, gotRevs); diff != "" { @@ -159,6 +166,82 @@ func TestFilter(t *testing.T) { } } +func TestAtomicOrdered(t *testing.T) { + tests := []struct { + name string + capacity int + inputs []struct { + rev int64 + key string + size int + } + wantRev []int64 + wantSize []int + }{ + { + name: "unfiltered", + capacity: 5, + inputs: []struct { + rev int64 + key string + size int + }{ + {5, "a", 1}, + {10, "b", 3}, + {15, "c", 7}, + {20, "d", 11}, + }, + wantRev: []int64{5, 10, 15, 20}, + wantSize: []int{1, 3, 7, 11}, + }, + { + name: "across_wrap", + capacity: 3, + inputs: []struct { + rev int64 + key string + size int + }{ + {1, "a", 2}, + {2, "b", 1}, + {3, "c", 3}, + {4, "d", 7}, + }, + wantRev: []int64{2, 3, 4}, + wantSize: []int{1, 3, 7}, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + + rb := newRingBuffer(tt.capacity) + for _, in := range tt.inputs { + batch, err := makeEventBatch(in.rev, in.key, in.size) + if err != nil { + t.Fatalf("makeEventBatch(%d, k, 1) failed: %v", in.rev, err) + } + rb.Append(batch) + } + + gotBatches := rb.Filter(0) + if len(gotBatches) != len(tt.wantRev) { + t.Fatalf("len(got) = %d, want %d", len(gotBatches), len(tt.wantRev)) + } + for i, b := range gotBatches { + if b[0].Kv.ModRevision != tt.wantRev[i] { + t.Errorf("at idx %d: rev = %d, want %d", i, b[0].Kv.ModRevision, tt.wantRev[i]) + } + if batchSize := len(b); batchSize != tt.wantSize[i] { + t.Errorf("at rev %d: events.len = %d, want %d", b[0].Kv.ModRevision, batchSize, tt.wantSize[i]) + } + } + }) + } +} + func TestRebaseHistory(t *testing.T) { tests := []struct { name string @@ -180,7 +263,11 @@ func TestRebaseHistory(t *testing.T) { t.Parallel() rb := newRingBuffer(4) for _, r := range tt.revs { - rb.Append(event(r, "k")) + batch, err := makeEventBatch(r, "k", 1) + if err != nil { + t.Fatalf("makeEventBatch(%d, k, 1) failed: %v", r, err) + } + rb.Append(batch) } rb.RebaseHistory() @@ -196,19 +283,26 @@ func TestRebaseHistory(t *testing.T) { t.Fatalf("PeekLatest()=%d, want=%d", latestRev, 0) } - events := rb.Filter(0) - if len(events) != 0 { - t.Fatalf("Filter() len(events)=%d, want=%d", len(events), 0) + batches := rb.Filter(0) + if len(batches) != 0 { + t.Fatalf("Filter() len(events)=%d, want=%d", len(batches), 0) } }) } } -func event(rev int64, key string) *clientv3.Event { - return &clientv3.Event{ - Kv: &mvccpb.KeyValue{ - Key: []byte(key), - ModRevision: rev, - }, +func makeEventBatch(rev int64, key string, batchSize int) ([]*clientv3.Event, error) { + if batchSize < 0 { + return nil, fmt.Errorf("invalid batchSize %d", batchSize) + } + events := make([]*clientv3.Event, batchSize) + for i := range events { + events[i] = &clientv3.Event{ + Kv: &mvccpb.KeyValue{ + Key: []byte(fmt.Sprintf("%s-%d", key, i)), + ModRevision: rev, + }, + } } + return events, nil } diff --git a/cache/watcher.go b/cache/watcher.go index 219e6008c29b..4269df3a0310 100644 --- a/cache/watcher.go +++ b/cache/watcher.go @@ -22,7 +22,7 @@ import ( // watcher holds one client’s buffered stream of events. type watcher struct { - eventQueue chan *clientv3.Event + eventQueue chan []*clientv3.Event keyPred KeyPredicate stopped int32 done chan struct{} // closed together with Stop() @@ -30,20 +30,29 @@ type watcher struct { func newWatcher(bufSize int, pred KeyPredicate) *watcher { return &watcher{ - eventQueue: make(chan *clientv3.Event, bufSize), + eventQueue: make(chan []*clientv3.Event, bufSize), keyPred: pred, done: make(chan struct{}), } } -// true -> event delivered (or filtered/duplicate) +// true -> events delivered (or filtered/duplicate) // false -> buffer full (caller should mark watcher “lagging”) -func (w *watcher) enqueueEvent(event *clientv3.Event) bool { - if w.keyPred != nil && !w.keyPred(event.Kv.Key) { - return true +func (w *watcher) enqueueEvent(eventBatch []*clientv3.Event) bool { + if w.keyPred != nil { + filtered := make([]*clientv3.Event, 0, len(eventBatch)) + for _, event := range eventBatch { + if w.keyPred(event.Kv.Key) { + filtered = append(filtered, event) + } + } + if len(filtered) == 0 { + return true + } + eventBatch = filtered } select { - case w.eventQueue <- event: + case w.eventQueue <- eventBatch: return true default: return false diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 0a8e93a788e2..0b7e893ba89e 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -83,6 +83,23 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { ModRevision: 4, }, } + event4Put := &clientv3.Event{ + Type: clientv3.EventTypePut, + Kv: &mvccpb.KeyValue{ + Key: []byte("/a"), + Value: []byte("3"), + CreateRevision: 5, + ModRevision: 5, + Version: 1, + }, + } + event5Delete := &clientv3.Event{ + Type: clientv3.EventTypeDelete, + Kv: &mvccpb.KeyValue{ + Key: []byte("/b"), + ModRevision: 5, + }, + } tcs := []struct { name string key string @@ -93,7 +110,7 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { name: "Watch all events", key: "/", opts: []clientv3.OpOption{clientv3.WithPrefix()}, - wantEvents: []*clientv3.Event{event1Put, event2Put, event3Delete}, + wantEvents: []*clientv3.Event{event1Put, event2Put, event3Delete, event4Put, event5Delete}, }, } t.Log("Open test watchers") @@ -111,6 +128,9 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { if _, err := kv.Delete(ctx, string(event3Delete.Kv.Key)); err != nil { t.Fatalf("Delete: %v", err) } + if _, err := kv.Txn(ctx).Then(clientv3.OpPut(string(event4Put.Kv.Key), string(event4Put.Kv.Value)), clientv3.OpDelete(string(event5Delete.Kv.Key))).Commit(); err != nil { + t.Fatalf("Txn: %v", err) + } t.Log("Validate") for i, tc := range tcs { tc := tc From 4b53432d34798e999a19e4f7fcb4f3194ec55b55 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Wed, 9 Jul 2025 10:55:13 +0200 Subject: [PATCH 0340/1068] Add OTEL tracing to Range and Txn Signed-off-by: Aleksander Mistewicz --- pkg/go.mod | 1 + pkg/traceutil/trace.go | 10 ++++++++++ server/embed/config_tracing.go | 4 ++++ server/etcdserver/v3_server.go | 34 ++++++++++++++++++++++++++++++++++ server/go.mod | 2 +- 5 files changed, 50 insertions(+), 1 deletion(-) diff --git a/pkg/go.mod b/pkg/go.mod index 9af814f5e8ee..45d16586e79b 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -11,6 +11,7 @@ require ( github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 + go.opentelemetry.io/otel/trace v1.37.0 go.uber.org/zap v1.27.0 google.golang.org/grpc v1.73.0 ) diff --git a/pkg/traceutil/trace.go b/pkg/traceutil/trace.go index cd75a9e60ce3..f89ba83c97cd 100644 --- a/pkg/traceutil/trace.go +++ b/pkg/traceutil/trace.go @@ -22,9 +22,19 @@ import ( "strings" "time" + "go.opentelemetry.io/otel/trace" + "go.opentelemetry.io/otel/trace/noop" "go.uber.org/zap" ) +const instrumentationScope = "go.etcd.io/etcd" + +var Tracer trace.Tracer = noop.NewTracerProvider().Tracer(instrumentationScope) + +func Init(tp trace.TracerProvider) { + Tracer = tp.Tracer(instrumentationScope) +} + // TraceKey is used as a key of context for Trace. type TraceKey struct{} diff --git a/server/embed/config_tracing.go b/server/embed/config_tracing.go index 0ca90fdc52af..7fa985a75d51 100644 --- a/server/embed/config_tracing.go +++ b/server/embed/config_tracing.go @@ -25,6 +25,8 @@ import ( tracesdk "go.opentelemetry.io/otel/sdk/trace" semconv "go.opentelemetry.io/otel/semconv/v1.17.0" "go.uber.org/zap" + + "go.etcd.io/etcd/pkg/v3/traceutil" ) const maxSamplingRatePerMillion = 1000000 @@ -81,6 +83,8 @@ func newTracingExporter(ctx context.Context, cfg *Config) (*tracingExporter, err ), ) + traceutil.Init(traceProvider) + options := []otelgrpc.Option{ otelgrpc.WithPropagators( propagation.NewCompositeTextMapPropagator( diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 47a3ec5f69ce..4c1b101718a0 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -23,6 +23,8 @@ import ( "time" "github.com/gogo/protobuf/proto" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/trace" "go.uber.org/zap" "golang.org/x/crypto/bcrypt" @@ -101,6 +103,16 @@ type Authenticator interface { } func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResponse, error) { + var span trace.Span + ctx, span = traceutil.Tracer.Start(ctx, "range", trace.WithAttributes( + attribute.String("range_begin", string(r.GetKey())), + attribute.String("range_end", string(r.GetRangeEnd())), + attribute.Int64("rev", r.GetRevision()), + attribute.Int64("limit", r.GetLimit()), + attribute.Bool("count_only", r.GetCountOnly()), + )) + defer span.End() + ctx, trace := traceutil.EnsureTrace(ctx, s.Logger(), "range", traceutil.Field{Key: "range_begin", Value: string(r.Key)}, traceutil.Field{Key: "range_end", Value: string(r.RangeEnd)}, @@ -155,8 +167,30 @@ func (s *EtcdServer) DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) return resp.(*pb.DeleteRangeResponse), nil } +// firstCompareKey returns first non-empty key in the list of comparison operations. +func firstCompareKey(c []*pb.Compare) string { + for _, op := range c { + key := string(op.GetKey()) + if key != "" { + return key + } + } + return "" +} + func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, error) { readOnly := txn.IsTxnReadonly(r) + + var span trace.Span + ctx, span = traceutil.Tracer.Start(ctx, "txn", trace.WithAttributes( + attribute.String("compare_first_key", firstCompareKey(r.GetCompare())), + attribute.Int("compare_len", len(r.GetCompare())), + attribute.Int("success_len", len(r.GetSuccess())), + attribute.Int("failure_len", len(r.GetFailure())), + attribute.Bool("read_only", readOnly), + )) + defer span.End() + ctx, trace := traceutil.EnsureTrace(ctx, s.Logger(), "transaction", traceutil.Field{Key: "read_only", Value: readOnly}, ) diff --git a/server/go.mod b/server/go.mod index 5a215b1033f0..d18c2604fbb2 100644 --- a/server/go.mod +++ b/server/go.mod @@ -35,6 +35,7 @@ require ( go.opentelemetry.io/otel v1.37.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 go.opentelemetry.io/otel/sdk v1.37.0 + go.opentelemetry.io/otel/trace v1.37.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.39.0 golang.org/x/net v0.41.0 @@ -67,7 +68,6 @@ require ( go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect - go.opentelemetry.io/otel/trace v1.37.0 // indirect go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect From fcbeeebab0e03bcb064fd517288442e1e5c1bc1b Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 8 Jul 2025 16:58:24 +0530 Subject: [PATCH 0341/1068] dependency: bump sigs.k8s.io/yaml from 1.4.0 to 1.5.0 This commit will bump sigs.k8s.io/yaml from 1.4.0 to 1.5.0 Also, add indirect dependency of go.yaml.in/yaml/v2@v2.4.2 Signed-off-by: ArkaSaha30 --- bill-of-materials.json | 26 +++++++++++++------------- client/v3/go.mod | 3 ++- client/v3/go.sum | 9 ++++++--- etcdutl/go.mod | 3 ++- etcdutl/go.sum | 9 ++++++--- go.mod | 3 ++- go.sum | 9 ++++++--- server/go.mod | 3 ++- server/go.sum | 9 ++++++--- tests/go.mod | 3 ++- tests/go.sum | 9 ++++++--- 11 files changed, 53 insertions(+), 33 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index 0fbec32c2fda..8a601abd96c7 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -665,6 +665,19 @@ } ] }, + { + "project": "go.yaml.in/yaml/v2", + "licenses": [ + { + "type": "Apache License 2.0", + "confidence": 1 + }, + { + "type": "MIT License", + "confidence": 0.8975609756097561 + } + ] + }, { "project": "golang.org/x/crypto", "licenses": [ @@ -785,18 +798,5 @@ "confidence": 1 } ] - }, - { - "project": "sigs.k8s.io/yaml/goyaml.v2", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 1 - }, - { - "type": "MIT License", - "confidence": 0.8975609756097561 - } - ] } ] diff --git a/client/v3/go.mod b/client/v3/go.mod index 98cb597dc3ea..484cf0538a67 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -14,7 +14,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 google.golang.org/grpc v1.73.0 - sigs.k8s.io/yaml v1.4.0 + sigs.k8s.io/yaml v1.5.0 ) require ( @@ -35,6 +35,7 @@ require ( go.opentelemetry.io/otel/sdk v1.37.0 // indirect go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 52d7e6d4f211..b6df4b8017e4 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -19,7 +19,6 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -76,6 +75,10 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= +go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -120,5 +123,5 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= +sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 2f70425ebc29..7a8fcf4e3aed 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -84,6 +84,7 @@ require ( go.opentelemetry.io/otel/trace v1.37.0 // indirect go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/crypto v0.39.0 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect @@ -95,5 +96,5 @@ require ( google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect + sigs.k8s.io/yaml v1.5.0 // indirect ) diff --git a/etcdutl/go.sum b/etcdutl/go.sum index a56c531e6d76..d5d27e021c86 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -33,7 +33,6 @@ github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -139,6 +138,10 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= +go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -195,5 +198,5 @@ gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYs gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= +sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= diff --git a/go.mod b/go.mod index 22a0a6207a77..976a94954a71 100644 --- a/go.mod +++ b/go.mod @@ -92,6 +92,7 @@ require ( go.opentelemetry.io/otel/trace v1.37.0 // indirect go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/crypto v0.39.0 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect @@ -100,5 +101,5 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect + sigs.k8s.io/yaml v1.5.0 // indirect ) diff --git a/go.sum b/go.sum index d40648e886a9..7e4c662f336e 100644 --- a/go.sum +++ b/go.sum @@ -59,7 +59,6 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -181,6 +180,10 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= +go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -267,5 +270,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= +sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= diff --git a/server/go.mod b/server/go.mod index 80da94449b92..5a215b1033f0 100644 --- a/server/go.mod +++ b/server/go.mod @@ -43,7 +43,7 @@ require ( google.golang.org/grpc v1.73.0 google.golang.org/protobuf v1.36.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 - sigs.k8s.io/yaml v1.4.0 + sigs.k8s.io/yaml v1.5.0 ) require ( @@ -70,6 +70,7 @@ require ( go.opentelemetry.io/otel/trace v1.37.0 // indirect go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect diff --git a/server/go.sum b/server/go.sum index a7bf4ae923c8..a1f9232d33a3 100644 --- a/server/go.sum +++ b/server/go.sum @@ -51,7 +51,6 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -156,6 +155,10 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= +go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -241,5 +244,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= +sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= diff --git a/tests/go.mod b/tests/go.mod index 97a06c6a63ac..ef4adb913422 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -96,6 +96,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect @@ -103,5 +104,5 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect + sigs.k8s.io/yaml v1.5.0 // indirect ) diff --git a/tests/go.sum b/tests/go.sum index 6fef28e7f22f..016f92157bc6 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -65,7 +65,6 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -187,6 +186,10 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= +go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -273,5 +276,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= +sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= From fa57882e2c0bcf148de41898c851c930c3f082c0 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Thu, 10 Jul 2025 12:31:55 +0200 Subject: [PATCH 0342/1068] Update tracing integration tests to verify creation of new Spans Signed-off-by: Aleksander Mistewicz --- tests/integration/tracing_test.go | 68 +++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/tests/integration/tracing_test.go b/tests/integration/tracing_test.go index 503c224ace44..00e026361dbc 100644 --- a/tests/integration/tracing_test.go +++ b/tests/integration/tracing_test.go @@ -50,6 +50,28 @@ func TestTracing(t *testing.T) { }) }) + t.Run("UnaryGetRPC", func(t *testing.T) { + testRPCTracing(t, "UnaryGetWithCountOnlyRPC", containsRangeSpan, func(cli *clientv3.Client) error { + // make a request with the instrumented client + resp, err := cli.Get(t.Context(), "key", clientv3.WithCountOnly()) + require.NoError(t, err) + require.Empty(t, resp.Kvs) + return nil + }) + }) + + t.Run("UnaryTxnRPC", func(t *testing.T) { + testRPCTracing(t, "UnaryTxnRPC", containsTxnSpan, func(cli *clientv3.Client) error { + // make a request with the instrumented client + _, err := cli.Txn(t.Context()). + If(clientv3.Compare(clientv3.ModRevision("key"), "=", 1)). + Then(clientv3.OpGet("key")). + Commit() + require.NoError(t, err) + return nil + }) + }) + // Test Stream RPC tracing t.Run("StreamRPC", func(t *testing.T) { testRPCTracing(t, "StreamRPC", containsStreamRPCSpan, func(cli *clientv3.Client) error { @@ -173,6 +195,52 @@ func containsUnaryRPCSpan(req *traceservice.ExportTraceServiceRequest) bool { return false } +func containsRangeSpan(req *traceservice.ExportTraceServiceRequest) bool { + for _, resourceSpans := range req.GetResourceSpans() { + for _, attr := range resourceSpans.GetResource().GetAttributes() { + if attr.GetKey() != "service.name" && attr.GetValue().GetStringValue() != "integration-test-tracing" { + continue + } + for _, scoped := range resourceSpans.GetScopeSpans() { + for _, span := range scoped.GetSpans() { + if span.GetName() == "range" { + for _, spanAttr := range span.GetAttributes() { + if spanAttr.GetKey() == "count_only" && spanAttr.GetValue().GetBoolValue() { + return true + } + } + return false + } + } + } + } + } + return false +} + +func containsTxnSpan(req *traceservice.ExportTraceServiceRequest) bool { + for _, resourceSpans := range req.GetResourceSpans() { + for _, attr := range resourceSpans.GetResource().GetAttributes() { + if attr.GetKey() != "service.name" && attr.GetValue().GetStringValue() != "integration-test-tracing" { + continue + } + for _, scoped := range resourceSpans.GetScopeSpans() { + for _, span := range scoped.GetSpans() { + if span.GetName() == "txn" { + for _, spanAttr := range span.GetAttributes() { + if spanAttr.GetKey() == "compare_first_key" && spanAttr.GetValue().GetStringValue() == "key" { + return true + } + } + return false + } + } + } + } + } + return false +} + // containsStreamRPCSpan checks for Watch/Watch spans in trace data func containsStreamRPCSpan(req *traceservice.ExportTraceServiceRequest) bool { for _, resourceSpans := range req.GetResourceSpans() { From ba9ee82727c7da39ce38fec5002a60b77b0c4d55 Mon Sep 17 00:00:00 2001 From: joshjms Date: Wed, 9 Jul 2025 20:43:38 +0800 Subject: [PATCH 0343/1068] antithesis: Add etcd server configs Add the small values for ETCD_SNAPSHOT_CATCHUP_ENTRIES, ETCD_SNAPSHOT_COUNT, and ETCD_COMPACTION_BATCH_LIMIT for etcd servers in Antithesis. Signed-off-by: joshjms --- tests/antithesis/config/docker-compose-1-node.yml | 3 +++ tests/antithesis/config/docker-compose-3-node.yml | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/tests/antithesis/config/docker-compose-1-node.yml b/tests/antithesis/config/docker-compose-1-node.yml index 37f8fe9ce9e3..646c04a3dccb 100644 --- a/tests/antithesis/config/docker-compose-1-node.yml +++ b/tests/antithesis/config/docker-compose-1-node.yml @@ -32,6 +32,9 @@ services: ETCD_INITIAL_CLUSTER: "etcd0=http://etcd0:2380" ETCD_INITIAL_CLUSTER_STATE: "new" ETCD_DATA_DIR: "/var/etcd/data" + ETCD_SNAPSHOT_CATCHUP_ENTRIES: 100 + ETCD_SNAPSHOT_COUNT: 50 + ETCD_COMPACTION_BATCH_LIMIT: 10 user: "${USER_ID:-root}:${GROUP_ID:-root}" depends_on: init: diff --git a/tests/antithesis/config/docker-compose-3-node.yml b/tests/antithesis/config/docker-compose-3-node.yml index e3ea9df8f766..002f58737965 100644 --- a/tests/antithesis/config/docker-compose-3-node.yml +++ b/tests/antithesis/config/docker-compose-3-node.yml @@ -34,6 +34,9 @@ services: ETCD_INITIAL_CLUSTER: "etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380" ETCD_INITIAL_CLUSTER_STATE: "new" ETCD_DATA_DIR: "/var/etcd/data" + ETCD_SNAPSHOT_CATCHUP_ENTRIES: 100 + ETCD_SNAPSHOT_COUNT: 50 + ETCD_COMPACTION_BATCH_LIMIT: 10 user: "${USER_ID:-root}:${GROUP_ID:-root}" depends_on: init: @@ -57,6 +60,9 @@ services: ETCD_INITIAL_CLUSTER: "etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380" ETCD_INITIAL_CLUSTER_STATE: "new" ETCD_DATA_DIR: "/var/etcd/data" + ETCD_SNAPSHOT_CATCHUP_ENTRIES: 100 + ETCD_SNAPSHOT_COUNT: 50 + ETCD_COMPACTION_BATCH_LIMIT: 10 user: "${USER_ID:-root}:${GROUP_ID:-root}" depends_on: init: @@ -80,6 +86,9 @@ services: ETCD_INITIAL_CLUSTER: "etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380" ETCD_INITIAL_CLUSTER_STATE: "new" ETCD_DATA_DIR: "/var/etcd/data" + ETCD_SNAPSHOT_CATCHUP_ENTRIES: 100 + ETCD_SNAPSHOT_COUNT: 50 + ETCD_COMPACTION_BATCH_LIMIT: 10 user: "${USER_ID:-root}:${GROUP_ID:-root}" depends_on: init: From b9455b59dc66ddea2518b344e20909f00e4ba36f Mon Sep 17 00:00:00 2001 From: James Blair Date: Thu, 10 Jul 2025 20:59:23 +1200 Subject: [PATCH 0344/1068] Correct instructions for GitHub release checkboxes. Signed-off-by: James Blair --- Documentation/contributor-guide/release.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/contributor-guide/release.md b/Documentation/contributor-guide/release.md index 35382d6344b4..a0d90a41e3a6 100644 --- a/Documentation/contributor-guide/release.md +++ b/Documentation/contributor-guide/release.md @@ -108,8 +108,8 @@ On the day of the release: - Open the **draft** release URL shown by the release script - Click the pen button at the top right to edit the release - Review that it looks correct, reviewing that the bottom checkboxes are checked depending on the - release version (v3.4 no checkboxes, v3.5 has the set as latest release checkbox checked, - v3.6 has the set as pre-release checkbox checked) + release version (v3.4 & v3.5 no checkboxes, v3.6 has the set as latest release checkbox checked, + v3.7 has the set as pre-release checkbox checked) - Then, publish the release 5. Announce to the etcd-dev googlegroup From 654f6500328c298865f73b72822e9da04300698d Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 15 Jul 2025 10:00:51 +0200 Subject: [PATCH 0345/1068] Convert tracing integration tests to table tests Review comment: https://github.com/etcd-io/etcd/pull/20325#discussion_r2198317005 Signed-off-by: Aleksander Mistewicz --- tests/integration/tracing_test.go | 275 +++++++++++++++--------------- 1 file changed, 135 insertions(+), 140 deletions(-) diff --git a/tests/integration/tracing_test.go b/tests/integration/tracing_test.go index 00e026361dbc..fc27d64497b4 100644 --- a/tests/integration/tracing_test.go +++ b/tests/integration/tracing_test.go @@ -16,6 +16,7 @@ package integration import ( "context" + "fmt" "net" "testing" "time" @@ -24,7 +25,6 @@ import ( "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" "go.opentelemetry.io/otel/propagation" sdktrace "go.opentelemetry.io/otel/sdk/trace" - "go.opentelemetry.io/otel/trace" traceservice "go.opentelemetry.io/proto/otlp/collector/trace/v1" "google.golang.org/grpc" @@ -39,69 +39,142 @@ func TestTracing(t *testing.T) { testutil.SkipTestIfShortMode(t, "Wal creation tests are depending on embedded etcd server so are integration-level tests.") - // Test Unary RPC tracing - t.Run("UnaryRPC", func(t *testing.T) { - testRPCTracing(t, "UnaryRPC", containsUnaryRPCSpan, func(cli *clientv3.Client) error { - // make a request with the instrumented client - resp, err := cli.Get(t.Context(), "key") - require.NoError(t, err) - require.Empty(t, resp.Kvs) - return nil - }) - }) - - t.Run("UnaryGetRPC", func(t *testing.T) { - testRPCTracing(t, "UnaryGetWithCountOnlyRPC", containsRangeSpan, func(cli *clientv3.Client) error { - // make a request with the instrumented client - resp, err := cli.Get(t.Context(), "key", clientv3.WithCountOnly()) - require.NoError(t, err) - require.Empty(t, resp.Kvs) - return nil - }) - }) - - t.Run("UnaryTxnRPC", func(t *testing.T) { - testRPCTracing(t, "UnaryTxnRPC", containsTxnSpan, func(cli *clientv3.Client) error { - // make a request with the instrumented client - _, err := cli.Txn(t.Context()). - If(clientv3.Compare(clientv3.ModRevision("key"), "=", 1)). - Then(clientv3.OpGet("key")). - Commit() - require.NoError(t, err) - return nil - }) - }) - - // Test Stream RPC tracing - t.Run("StreamRPC", func(t *testing.T) { - testRPCTracing(t, "StreamRPC", containsStreamRPCSpan, func(cli *clientv3.Client) error { - // Create a context with a reasonable timeout - ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) - defer cancel() + for _, tc := range []struct { + name string + rpc func(*clientv3.Client) error + match func(*traceservice.ExportTraceServiceRequest) bool + }{ + { + name: "UnaryGet", + rpc: func(cli *clientv3.Client) error { + _, err := cli.Get(t.Context(), "key") + return err + }, + match: func(req *traceservice.ExportTraceServiceRequest) bool { + for _, resourceSpans := range req.GetResourceSpans() { + for _, attr := range resourceSpans.GetResource().GetAttributes() { + if attr.GetKey() != "service.name" && attr.GetValue().GetStringValue() != "integration-test-tracing" { + continue + } + for _, scoped := range resourceSpans.GetScopeSpans() { + for _, span := range scoped.GetSpans() { + if span.GetName() == "etcdserverpb.KV/Range" { + return true + } + } + } + } + } + return false + }, + }, + { + name: "UnaryGetWithCountOnly", + rpc: func(cli *clientv3.Client) error { + _, err := cli.Get(t.Context(), "key", clientv3.WithCountOnly()) + return err + }, + match: func(req *traceservice.ExportTraceServiceRequest) bool { + for _, resourceSpans := range req.GetResourceSpans() { + for _, attr := range resourceSpans.GetResource().GetAttributes() { + if attr.GetKey() != "service.name" && attr.GetValue().GetStringValue() != "integration-test-tracing" { + continue + } + for _, scoped := range resourceSpans.GetScopeSpans() { + for _, span := range scoped.GetSpans() { + if span.GetName() == "range" { + for _, spanAttr := range span.GetAttributes() { + if spanAttr.GetKey() == "count_only" && spanAttr.GetValue().GetBoolValue() { + return true + } + } + return false + } + } + } + } + } + return false + }, + }, + { + name: "UnaryTxn", + rpc: func(cli *clientv3.Client) error { + _, err := cli.Txn(t.Context()). + If(clientv3.Compare(clientv3.ModRevision("key"), "=", 1)). + Then(clientv3.OpGet("key")). + Commit() + return err + }, + match: func(req *traceservice.ExportTraceServiceRequest) bool { + for _, resourceSpans := range req.GetResourceSpans() { + for _, attr := range resourceSpans.GetResource().GetAttributes() { + if attr.GetKey() != "service.name" && attr.GetValue().GetStringValue() != "integration-test-tracing" { + continue + } + for _, scoped := range resourceSpans.GetScopeSpans() { + for _, span := range scoped.GetSpans() { + if span.GetName() == "txn" { + for _, spanAttr := range span.GetAttributes() { + if spanAttr.GetKey() == "compare_first_key" && spanAttr.GetValue().GetStringValue() == "key" { + return true + } + } + return false + } + } + } + } + } + return false + }, + }, + { + name: "StreamWatch", + rpc: func(cli *clientv3.Client) error { + // Create a context with a reasonable timeout + ctx, cancel := context.WithTimeout(context.TODO(), 10*time.Second) + defer cancel() - // Create a watch channel - watchChan := cli.Watch(ctx, "watch-key") + // Create a watch channel + watchChan := cli.Watch(ctx, "watch-key") - // Put a value to trigger the watch - _, err := cli.Put(t.Context(), "watch-key", "watch-value") - require.NoError(t, err) + // Put a value to trigger the watch + _, err := cli.Put(ctx, "watch-key", "watch-value") + if err != nil { + return err + } - // Wait for watch event - select { - case watchResp := <-watchChan: - require.NoError(t, watchResp.Err()) - require.Len(t, watchResp.Events, 1) - t.Log("Received watch event successfully") - case <-time.After(5 * time.Second): - t.Fatal("Timed out waiting for watch event") - } - return nil + // Wait for watch event + select { + case watchResp := <-watchChan: + return watchResp.Err() + case <-time.After(5 * time.Second): + return fmt.Errorf("Timed out waiting for watch event") + } + }, + match: func(req *traceservice.ExportTraceServiceRequest) bool { + for _, resourceSpans := range req.GetResourceSpans() { + for _, scoped := range resourceSpans.GetScopeSpans() { + for _, span := range scoped.GetSpans() { + if span.GetName() == "etcdserverpb.Watch/Watch" { + return true + } + } + } + } + return false + }, + }, + } { + t.Run(tc.name, func(t *testing.T) { + testRPCTracing(t, tc.match, tc.rpc) }) - }) + } } // testRPCTracing is a common test function for both Unary and Stream RPC tracing -func testRPCTracing(t *testing.T, testName string, filterFunc func(*traceservice.ExportTraceServiceRequest) bool, clientAction func(*clientv3.Client) error) { +func testRPCTracing(t *testing.T, filterFunc func(*traceservice.ExportTraceServiceRequest) bool, clientAction func(*clientv3.Client) error) { // set up trace collector listener, err := net.Listen("tcp", "localhost:") require.NoError(t, err) @@ -123,7 +196,7 @@ func testRPCTracing(t *testing.T, testName string, filterFunc func(*traceservice cfg.EnableDistributedTracing = true cfg.DistributedTracingAddress = listener.Addr().String() cfg.DistributedTracingServiceName = "integration-test-tracing" - cfg.DistributedTracingSamplingRatePerMillion = 100 + cfg.DistributedTracingSamplingRatePerMillion = 100 // overriden later in the test // start an etcd instance with tracing enabled etcdSrv, err := embed.StartEtcd(cfg) @@ -139,9 +212,8 @@ func testRPCTracing(t *testing.T, testName string, filterFunc func(*traceservice } // create a client that has tracing enabled - tracer := sdktrace.NewTracerProvider(sdktrace.WithSampler(sdktrace.AlwaysSample())) - defer tracer.Shutdown(t.Context()) - tp := trace.TracerProvider(tracer) + tp := sdktrace.NewTracerProvider() + defer tp.Shutdown(t.Context()) tracingOpts := []otelgrpc.Option{ otelgrpc.WithTracerProvider(tp), @@ -170,91 +242,14 @@ func testRPCTracing(t *testing.T, testName string, filterFunc func(*traceservice // Wait for a span to be recorded from our request select { case <-traceFound: - t.Logf("%s trace found", testName) + t.Logf("Trace found") return case <-time.After(30 * time.Second): + // default exporter has 5s scheduling delay t.Fatal("Timed out waiting for trace") } } -func containsUnaryRPCSpan(req *traceservice.ExportTraceServiceRequest) bool { - for _, resourceSpans := range req.GetResourceSpans() { - for _, attr := range resourceSpans.GetResource().GetAttributes() { - if attr.GetKey() != "service.name" && attr.GetValue().GetStringValue() != "integration-test-tracing" { - continue - } - for _, scoped := range resourceSpans.GetScopeSpans() { - for _, span := range scoped.GetSpans() { - if span.GetName() == "etcdserverpb.KV/Range" { - return true - } - } - } - } - } - return false -} - -func containsRangeSpan(req *traceservice.ExportTraceServiceRequest) bool { - for _, resourceSpans := range req.GetResourceSpans() { - for _, attr := range resourceSpans.GetResource().GetAttributes() { - if attr.GetKey() != "service.name" && attr.GetValue().GetStringValue() != "integration-test-tracing" { - continue - } - for _, scoped := range resourceSpans.GetScopeSpans() { - for _, span := range scoped.GetSpans() { - if span.GetName() == "range" { - for _, spanAttr := range span.GetAttributes() { - if spanAttr.GetKey() == "count_only" && spanAttr.GetValue().GetBoolValue() { - return true - } - } - return false - } - } - } - } - } - return false -} - -func containsTxnSpan(req *traceservice.ExportTraceServiceRequest) bool { - for _, resourceSpans := range req.GetResourceSpans() { - for _, attr := range resourceSpans.GetResource().GetAttributes() { - if attr.GetKey() != "service.name" && attr.GetValue().GetStringValue() != "integration-test-tracing" { - continue - } - for _, scoped := range resourceSpans.GetScopeSpans() { - for _, span := range scoped.GetSpans() { - if span.GetName() == "txn" { - for _, spanAttr := range span.GetAttributes() { - if spanAttr.GetKey() == "compare_first_key" && spanAttr.GetValue().GetStringValue() == "key" { - return true - } - } - return false - } - } - } - } - } - return false -} - -// containsStreamRPCSpan checks for Watch/Watch spans in trace data -func containsStreamRPCSpan(req *traceservice.ExportTraceServiceRequest) bool { - for _, resourceSpans := range req.GetResourceSpans() { - for _, scoped := range resourceSpans.GetScopeSpans() { - for _, span := range scoped.GetSpans() { - if span.GetName() == "etcdserverpb.Watch/Watch" { - return true - } - } - } - } - return false -} - // traceServer implements TracesServiceServer type traceServer struct { traceFound chan struct{} From 89ea2faf1224711d82b0a4e6166f32033920eba3 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Thu, 10 Jul 2025 14:33:47 +0000 Subject: [PATCH 0346/1068] enable range/prefix/fromKey key filtering Signed-off-by: Peter Chang --- cache/cache.go | 70 +++++++- cache/cache_test.go | 190 +++++++++++++++++++++ cache/predicate.go | 27 +++ tests/integration/cache_test.go | 285 ++++++++++++++++++++++++-------- 4 files changed, 493 insertions(+), 79 deletions(-) create mode 100644 cache/cache_test.go diff --git a/cache/cache.go b/cache/cache.go index a021def590d9..00e54b4de314 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -15,10 +15,10 @@ package cache import ( + "bytes" "context" "errors" "fmt" - "strings" "sync" "time" @@ -105,15 +105,15 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption op := clientv3.OpGet(key, opts...) startRev := op.Rev() - // TODO: Support watch on subprefix and single key & arbitrary startRev support once we guarantee gap-free replay. - if key != c.prefix || !clientv3.IsOptsWithPrefix(opts) || startRev != 0 { - responseChan := make(chan clientv3.WatchResponse, 1) - responseChan <- clientv3.WatchResponse{Canceled: true} - close(responseChan) - return responseChan + pred, err := c.validateWatch(key, opts...) + if err != nil { + ch := make(chan clientv3.WatchResponse, 1) + ch <- clientv3.WatchResponse{Canceled: true} + close(ch) + return ch } - w := newWatcher(c.cfg.PerWatcherBufferSize, func(k []byte) bool { return strings.HasPrefix(string(k), key) }) + w := newWatcher(c.cfg.PerWatcherBufferSize, pred) c.demux.Register(w, startRev) responseChan := make(chan clientv3.WatchResponse) @@ -226,3 +226,57 @@ func readWatchChannel( } return nil } + +func (c *Cache) validateWatch(key string, opts ...clientv3.OpOption) (pred KeyPredicate, err error) { + op := clientv3.OpGet(key, opts...) + startRev := op.Rev() + // TODO: Support watch on arbitrary startRev support once we guarantee gap-free replay. + if startRev != 0 { + return nil, ErrUnsupportedWatch + } + + startKey := []byte(key) + endKey := op.RangeBytes() // nil = single key, {0}=FromKey, else explicit range + + if err := c.validateWatchRange(startKey, endKey); err != nil { + return nil, err + } + return KeyPredForRange(startKey, endKey), nil +} + +func (c *Cache) validateWatchRange(startKey, endKey []byte) error { + prefixStart := []byte(c.prefix) + prefixEnd := []byte(clientv3.GetPrefixRangeEnd(c.prefix)) + + isSingleKey := len(endKey) == 0 + isFromKey := len(endKey) == 1 && endKey[0] == 0 + + switch { + case isSingleKey: + if c.prefix == "" { + return nil + } + if bytes.Compare(startKey, prefixStart) < 0 || bytes.Compare(startKey, prefixEnd) >= 0 { + return ErrUnsupportedWatch + } + return nil + + case isFromKey: + if c.prefix != "" { + return ErrUnsupportedWatch + } + return nil + + default: + if bytes.Compare(endKey, startKey) <= 0 { + return ErrUnsupportedWatch + } + if c.prefix == "" { + return nil + } + if bytes.Compare(startKey, prefixStart) < 0 || bytes.Compare(endKey, prefixEnd) > 0 { + return ErrUnsupportedWatch + } + return nil + } +} diff --git a/cache/cache_test.go b/cache/cache_test.go new file mode 100644 index 000000000000..4293c74a7370 --- /dev/null +++ b/cache/cache_test.go @@ -0,0 +1,190 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cache + +import ( + "testing" + + clientv3 "go.etcd.io/etcd/client/v3" +) + +func TestValidateWatchRange(t *testing.T) { + type tc struct { + name string + watchKey string + opts []clientv3.OpOption + cachePrefix string + wantErr bool + } + + tests := []tc{ + { + name: "single key", + watchKey: "/a", + cachePrefix: "", + wantErr: false, + }, + { + name: "prefix single key", + watchKey: "/foo/a", + cachePrefix: "/foo", + wantErr: false, + }, + { + name: "single key outside prefix returns error", + watchKey: "/z", + cachePrefix: "/foo", + wantErr: true, + }, + { + name: "explicit range", + watchKey: "/a", + opts: []clientv3.OpOption{clientv3.WithRange("/b")}, + cachePrefix: "", + wantErr: false, + }, + { + name: "exact prefix range", + watchKey: "/a", + opts: []clientv3.OpOption{clientv3.WithRange("/b")}, + cachePrefix: "/a", + wantErr: false, + }, + { + name: "prefix subrange", + watchKey: "/foo", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/a")}, + cachePrefix: "/foo", + wantErr: false, + }, + { + name: "reverse range returns error", + watchKey: "/b", + opts: []clientv3.OpOption{clientv3.WithRange("/a")}, + cachePrefix: "", + wantErr: true, + }, + { + name: "empty range returns error", + watchKey: "/foo", + opts: []clientv3.OpOption{clientv3.WithRange("/foo")}, + cachePrefix: "", + wantErr: true, + }, + { + name: "range starting below cache prefix returns error", + watchKey: "/a", + opts: []clientv3.OpOption{clientv3.WithRange("/foo")}, + cachePrefix: "/foo", + wantErr: true, + }, + { + name: "range encompassing cache prefix returns error", + watchKey: "/a", + opts: []clientv3.OpOption{clientv3.WithRange("/z")}, + cachePrefix: "/foo", + wantErr: true, + }, + { + name: "range crossing prefixEnd returns error", + watchKey: "/foo", + opts: []clientv3.OpOption{clientv3.WithRange("/z")}, + cachePrefix: "/foo", + wantErr: true, + }, + { + name: "empty prefix", + watchKey: "", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + cachePrefix: "", + wantErr: false, + }, + { + name: "empty prefix with cachePrefix returns error", + watchKey: "", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + cachePrefix: "/foo", + wantErr: true, + }, + { + name: "prefix watch matches cachePrefix exactly", + watchKey: "/foo", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + cachePrefix: "/foo", + wantErr: false, + }, + { + name: "prefix watch inside cachePrefix", + watchKey: "/foo/bar", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + cachePrefix: "/foo", + wantErr: false, + }, + { + name: "prefix starting below cachePrefix returns error", + watchKey: "/a", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + cachePrefix: "/foo", + wantErr: true, + }, + { + name: "prefix starting above shard prefixEnd returns error", + watchKey: "/fop", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + cachePrefix: "/foo", + wantErr: true, + }, + { + name: "fromKey open‑ended", + watchKey: "/a", + opts: []clientv3.OpOption{clientv3.WithFromKey()}, + cachePrefix: "", + wantErr: false, + }, + { + name: "fromKey starting at prefix start", + watchKey: "/foo", + opts: []clientv3.OpOption{clientv3.WithFromKey()}, + cachePrefix: "/foo", + wantErr: true, + }, + { + name: "fromKey starting below prefixEnd", + watchKey: "/a", + opts: []clientv3.OpOption{clientv3.WithFromKey()}, + cachePrefix: "/foo", + wantErr: true, + }, + { + name: "fromKey starting above prefixEnd returns error", + watchKey: "/fop", + opts: []clientv3.OpOption{clientv3.WithFromKey()}, + cachePrefix: "/foo", + wantErr: true, + }, + } + + for _, c := range tests { + t.Run(c.name, func(t *testing.T) { + dummyCache := &Cache{prefix: c.cachePrefix} + op := clientv3.OpGet(c.watchKey, c.opts...) + err := dummyCache.validateWatchRange([]byte(c.watchKey), op.RangeBytes()) + if gotErr := err != nil; gotErr != c.wantErr { + t.Fatalf("validateWatchRange(%q, %q, %v) err=%v, wantErr=%v", + c.cachePrefix, c.watchKey, c.opts, err, c.wantErr) + } + }) + } +} diff --git a/cache/predicate.go b/cache/predicate.go index a9138bfc8931..233c4e030940 100644 --- a/cache/predicate.go +++ b/cache/predicate.go @@ -14,6 +14,8 @@ package cache +import "bytes" + type Prefix string func (prefix Prefix) Match(key []byte) bool { @@ -23,3 +25,28 @@ func (prefix Prefix) Match(key []byte) bool { prefixLen := len(prefix) return len(key) >= prefixLen && string(key[:prefixLen]) == string(prefix) } + +func ExactKey(key []byte) KeyPredicate { + return func(k []byte) bool { return bytes.Equal(k, key) } +} + +func FromKey(start []byte) KeyPredicate { + return func(k []byte) bool { return bytes.Compare(k, start) >= 0 } +} + +func Range(start, end []byte) KeyPredicate { + return func(k []byte) bool { + return bytes.Compare(k, start) >= 0 && + bytes.Compare(k, end) < 0 + } +} + +func KeyPredForRange(start, end []byte) KeyPredicate { + if len(end) == 0 { + return ExactKey(start) + } + if len(end) == 1 && end[0] == 0 { + return FromKey(start) + } + return Range(start, end) +} diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 0b7e893ba89e..fc2e68663bb1 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -34,7 +34,7 @@ func TestCacheWatch(t *testing.T) { t.Cleanup(func() { clus.Terminate(t) }) client := clus.Client(0) - c, err := cache.New(client, "/", cache.WithHistoryWindowSize(32)) + c, err := cache.New(client, "/foo", cache.WithHistoryWindowSize(32)) if err != nil { t.Fatalf("New(...): %v", err) } @@ -56,50 +56,101 @@ func TestWatch(t *testing.T) { func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { ctx := t.Context() - event1Put := &clientv3.Event{ + event1PutFooA := &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ - Key: []byte("/a"), + Key: []byte("/foo/a"), Value: []byte("1"), CreateRevision: 2, ModRevision: 2, Version: 1, }, } - event2Put := &clientv3.Event{ + event2PutFooB := &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ - Key: []byte("/b"), + Key: []byte("/foo/b"), Value: []byte("2"), CreateRevision: 3, ModRevision: 3, Version: 1, }, } - event3Delete := &clientv3.Event{ + event3DeleteFooA := &clientv3.Event{ Type: clientv3.EventTypeDelete, Kv: &mvccpb.KeyValue{ - Key: []byte("/a"), + Key: []byte("/foo/a"), ModRevision: 4, }, } - event4Put := &clientv3.Event{ + event4PutFooA := &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ - Key: []byte("/a"), + Key: []byte("/foo/a"), Value: []byte("3"), CreateRevision: 5, ModRevision: 5, Version: 1, }, } - event5Delete := &clientv3.Event{ + event5DeleteFooB := &clientv3.Event{ Type: clientv3.EventTypeDelete, Kv: &mvccpb.KeyValue{ - Key: []byte("/b"), + Key: []byte("/foo/b"), ModRevision: 5, }, } + event6PutFooC := &clientv3.Event{ + Type: clientv3.EventTypePut, + Kv: &mvccpb.KeyValue{ + Key: []byte("/foo/c"), + Value: []byte("x"), + CreateRevision: 6, + ModRevision: 6, + Version: 1, + }, + } + event7PutFooBar := &clientv3.Event{ + Type: clientv3.EventTypePut, + Kv: &mvccpb.KeyValue{ + Key: []byte("/foo/bar"), + Value: []byte("y"), + CreateRevision: 7, + ModRevision: 7, + Version: 1, + }, + } + event8PutFooBaz := &clientv3.Event{ + Type: clientv3.EventTypePut, + Kv: &mvccpb.KeyValue{ + Key: []byte("/foo/baz"), + Value: []byte("z"), + CreateRevision: 8, + ModRevision: 8, + Version: 1, + }, + } + event9PutFooYoo := &clientv3.Event{ + Type: clientv3.EventTypePut, + Kv: &mvccpb.KeyValue{ + Key: []byte("/foo/yoo"), + Value: []byte("1"), + CreateRevision: 9, + ModRevision: 9, + Version: 1, + }, + } + event10PutZoo := &clientv3.Event{ + Type: clientv3.EventTypePut, + Kv: &mvccpb.KeyValue{ + Key: []byte("/zoo"), + Value: []byte("1"), + CreateRevision: 10, + ModRevision: 10, + Version: 1, + }, + } + tcs := []struct { name string key string @@ -107,33 +158,79 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { wantEvents []*clientv3.Event }{ { - name: "Watch all events", - key: "/", + name: "Watch single key existing /foo/c", + key: "/foo/c", + opts: nil, + wantEvents: []*clientv3.Event{event6PutFooC}, + }, + { + name: "Watch single key non‑existent /doesnotexist", + key: "/doesnotexist", + opts: nil, + wantEvents: nil, + }, + { + name: "Watch range empty", + key: "", + opts: []clientv3.OpOption{clientv3.WithRange("")}, + wantEvents: nil, + }, + { + name: "Watch range [/foo/a, /foo/b)", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/b")}, + wantEvents: []*clientv3.Event{event1PutFooA, event3DeleteFooA, event4PutFooA}, + }, + { + name: "Watch with prefix /foo/b", + key: "/foo/b", opts: []clientv3.OpOption{clientv3.WithPrefix()}, - wantEvents: []*clientv3.Event{event1Put, event2Put, event3Delete, event4Put, event5Delete}, + wantEvents: []*clientv3.Event{event2PutFooB, event5DeleteFooB, event7PutFooBar, event8PutFooBaz}, + }, + { + name: "Watch with prefix non-existent /doesnotexist", + key: "/doesnotexist", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + wantEvents: nil, }, } + t.Log("Open test watchers") watches := make([]clientv3.WatchChan, len(tcs)) for i, tc := range tcs { watches[i] = watcher.Watch(ctx, tc.key, tc.opts...) } t.Log("Setup data") - if _, err := kv.Put(ctx, string(event1Put.Kv.Key), string(event1Put.Kv.Value)); err != nil { + if _, err := kv.Put(ctx, string(event1PutFooA.Kv.Key), string(event1PutFooA.Kv.Value)); err != nil { t.Fatalf("Put: %v", err) } - if _, err := kv.Put(ctx, string(event2Put.Kv.Key), string(event2Put.Kv.Value)); err != nil { + if _, err := kv.Put(ctx, string(event2PutFooB.Kv.Key), string(event2PutFooB.Kv.Value)); err != nil { t.Fatalf("Put: %v", err) } - if _, err := kv.Delete(ctx, string(event3Delete.Kv.Key)); err != nil { + if _, err := kv.Delete(ctx, string(event3DeleteFooA.Kv.Key)); err != nil { t.Fatalf("Delete: %v", err) } - if _, err := kv.Txn(ctx).Then(clientv3.OpPut(string(event4Put.Kv.Key), string(event4Put.Kv.Value)), clientv3.OpDelete(string(event5Delete.Kv.Key))).Commit(); err != nil { + if _, err := kv.Txn(ctx).Then(clientv3.OpPut(string(event4PutFooA.Kv.Key), string(event4PutFooA.Kv.Value)), clientv3.OpDelete(string(event5DeleteFooB.Kv.Key))).Commit(); err != nil { t.Fatalf("Txn: %v", err) } + if _, err := kv.Put(ctx, string(event6PutFooC.Kv.Key), string(event6PutFooC.Kv.Value)); err != nil { + t.Fatalf("Put: %v", err) + } + if _, err := kv.Put(ctx, string(event7PutFooBar.Kv.Key), string(event7PutFooBar.Kv.Value)); err != nil { + t.Fatalf("Put: %v", err) + } + if _, err := kv.Put(ctx, string(event8PutFooBaz.Kv.Key), string(event8PutFooBaz.Kv.Value)); err != nil { + t.Fatalf("Put: %v", err) + } + if _, err := kv.Put(ctx, string(event9PutFooYoo.Kv.Key), string(event9PutFooYoo.Kv.Value)); err != nil { + t.Fatalf("Put: %v", err) + } + if _, err := kv.Put(ctx, string(event10PutZoo.Kv.Key), string(event10PutZoo.Kv.Value)); err != nil { + t.Fatalf("Put: %v", err) + } t.Log("Validate") for i, tc := range tcs { - tc := tc + i, tc := i, tc t.Run(tc.name, func(t *testing.T) { t.Parallel() events, _ := readEvents(watches[i]) @@ -144,6 +241,104 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { } } +func TestCacheRejectsInvalidWatch(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + t.Cleanup(func() { clus.Terminate(t) }) + client := clus.Client(0) + + ctx := t.Context() + + tests := []struct { + name string + cachePrefix string + key string + opts []clientv3.OpOption + }{ + { + name: "non‑zero start revision", + cachePrefix: "", + key: "", + opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithRev(123)}, + }, + { + name: "zero length range", + cachePrefix: "/foo", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/a")}, + }, + { + name: "invalid range (start > end)", + cachePrefix: "/foo", + key: "/foo/b", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/a")}, + }, + { + name: "range crosses cache prefix boundary", + cachePrefix: "/foo", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/zzz")}, + }, + { + name: "fromkey empty key", + cachePrefix: "/foo", + key: "", + opts: []clientv3.OpOption{clientv3.WithFromKey()}, + }, + { + name: "fromkey within cache prefix", + cachePrefix: "/foo", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithFromKey()}, + }, + { + name: "fromkey outside cache prefix", + cachePrefix: "/foo", + key: "/zzz", + opts: []clientv3.OpOption{clientv3.WithFromKey()}, + }, + { + name: "prefix() outside cache prefix", + cachePrefix: "/foo", + key: "/zzz", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + }, + { + name: "prefix() with empty key", + cachePrefix: "/foo", + key: "", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + }, + } + + for _, tc := range tests { + tc := tc + t.Run(tc.name, func(t *testing.T) { + c, err := cache.New(client, tc.cachePrefix) + if err != nil { + t.Fatalf("New(...): %v", err) + } + defer c.Close() + if err := c.WaitReady(ctx); err != nil { + t.Fatal(err) + } + + watchCtx, cancel := context.WithTimeout(ctx, time.Second) + defer cancel() + + ch := c.Watch(watchCtx, tc.key, tc.opts...) + select { + case resp, ok := <-ch: + if !ok || !resp.Canceled { + t.Fatalf("expected canceled watch, got %+v (closed=%v)", resp, !ok) + } + case <-watchCtx.Done(): + t.Fatalf("watch did not cancel within timeout") + } + }) + } +} + func TestCacheLaggingWatcher(t *testing.T) { const prefix = "/test/" integration.BeforeTest(t) @@ -224,58 +419,6 @@ func TestCacheLaggingWatcher(t *testing.T) { } } -func TestCacheRejectsUnsupportedWatch(t *testing.T) { - integration.BeforeTest(t) - clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) - t.Cleanup(func() { clus.Terminate(t) }) - client := clus.Client(0) - - ctx := t.Context() - - c, err := cache.New(client, "") - if err != nil { - t.Fatalf("New(...): %v", err) - } - t.Cleanup(c.Close) - if err := c.WaitReady(ctx); err != nil { - t.Fatal(err) - } - - tests := []struct { - name string - key string - opts []clientv3.OpOption - }{ - { - name: "non_zero_start_revision", - key: "", - opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithRev(123)}, - }, - { - name: "subprefix_watch", - key: "foo/", - opts: []clientv3.OpOption{clientv3.WithPrefix()}, - }, - { - name: "single_key_watch", - key: "foo/bar", - opts: nil, // exact-key watch (no WithPrefix) - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - watchCh := c.Watch(ctx, tt.key, tt.opts...) - resp, ok := <-watchCh - - if !ok || !resp.Canceled { - t.Errorf("expected canceled response, got %#v (closed=%v)", resp, !ok) - } - }) - } -} - func generateEvents(t *testing.T, client *clientv3.Client, prefix string, n int) { t.Helper() for i := 0; i < n; i++ { From 040d997ed533d82bb8b2a8e1879a9931ab202725 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 15 Jul 2025 13:23:17 +0200 Subject: [PATCH 0347/1068] Use cmp.Diff in tracing integration test It highlights differences in Attributes and Events fields. Signed-off-by: Aleksander Mistewicz --- tests/go.mod | 2 +- tests/integration/tracing_test.go | 193 +++++++++++++++++------------- 2 files changed, 109 insertions(+), 86 deletions(-) diff --git a/tests/go.mod b/tests/go.mod index ef4adb913422..ab3c7ab4e212 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -45,7 +45,6 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 go.opentelemetry.io/otel v1.37.0 go.opentelemetry.io/otel/sdk v1.37.0 - go.opentelemetry.io/otel/trace v1.37.0 go.opentelemetry.io/proto/otlp v1.7.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.39.0 @@ -95,6 +94,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/net v0.41.0 // indirect diff --git a/tests/integration/tracing_test.go b/tests/integration/tracing_test.go index fc27d64497b4..0af0042adccc 100644 --- a/tests/integration/tracing_test.go +++ b/tests/integration/tracing_test.go @@ -21,12 +21,16 @@ import ( "testing" "time" + "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" "go.opentelemetry.io/otel/propagation" sdktrace "go.opentelemetry.io/otel/sdk/trace" traceservice "go.opentelemetry.io/proto/otlp/collector/trace/v1" + commonv1 "go.opentelemetry.io/proto/otlp/common/v1" + v1 "go.opentelemetry.io/proto/otlp/trace/v1" "google.golang.org/grpc" + "google.golang.org/protobuf/testing/protocmp" "go.etcd.io/etcd/client/pkg/v3/testutil" clientv3 "go.etcd.io/etcd/client/v3" @@ -40,100 +44,93 @@ func TestTracing(t *testing.T) { "Wal creation tests are depending on embedded etcd server so are integration-level tests.") for _, tc := range []struct { - name string - rpc func(*clientv3.Client) error - match func(*traceservice.ExportTraceServiceRequest) bool + name string + rpc func(context.Context, *clientv3.Client) error + wantSpan *v1.Span }{ { name: "UnaryGet", - rpc: func(cli *clientv3.Client) error { - _, err := cli.Get(t.Context(), "key") + rpc: func(ctx context.Context, cli *clientv3.Client) error { + _, err := cli.Get(ctx, "key") return err }, - match: func(req *traceservice.ExportTraceServiceRequest) bool { - for _, resourceSpans := range req.GetResourceSpans() { - for _, attr := range resourceSpans.GetResource().GetAttributes() { - if attr.GetKey() != "service.name" && attr.GetValue().GetStringValue() != "integration-test-tracing" { - continue - } - for _, scoped := range resourceSpans.GetScopeSpans() { - for _, span := range scoped.GetSpans() { - if span.GetName() == "etcdserverpb.KV/Range" { - return true - } - } - } - } - } - return false + wantSpan: &v1.Span{ + Name: "etcdserverpb.KV/Range", + // Attributes are set outside Etcd in otelgrpc, so they are ignored here. }, }, { name: "UnaryGetWithCountOnly", - rpc: func(cli *clientv3.Client) error { - _, err := cli.Get(t.Context(), "key", clientv3.WithCountOnly()) + rpc: func(ctx context.Context, cli *clientv3.Client) error { + _, err := cli.Get(ctx, "key", clientv3.WithCountOnly()) return err }, - match: func(req *traceservice.ExportTraceServiceRequest) bool { - for _, resourceSpans := range req.GetResourceSpans() { - for _, attr := range resourceSpans.GetResource().GetAttributes() { - if attr.GetKey() != "service.name" && attr.GetValue().GetStringValue() != "integration-test-tracing" { - continue - } - for _, scoped := range resourceSpans.GetScopeSpans() { - for _, span := range scoped.GetSpans() { - if span.GetName() == "range" { - for _, spanAttr := range span.GetAttributes() { - if spanAttr.GetKey() == "count_only" && spanAttr.GetValue().GetBoolValue() { - return true - } - } - return false - } - } - } - } - } - return false + wantSpan: &v1.Span{ + Name: "range", + Attributes: []*commonv1.KeyValue{ + { + Key: "range_begin", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_StringValue{StringValue: "key"}}, + }, + { + Key: "range_end", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_StringValue{StringValue: ""}}, + }, + { + Key: "rev", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_IntValue{IntValue: 0}}, + }, + { + Key: "limit", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_IntValue{IntValue: 0}}, + }, + { + Key: "count_only", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_BoolValue{BoolValue: true}}, + }, + }, }, }, { name: "UnaryTxn", - rpc: func(cli *clientv3.Client) error { - _, err := cli.Txn(t.Context()). + rpc: func(ctx context.Context, cli *clientv3.Client) error { + _, err := cli.Txn(ctx). If(clientv3.Compare(clientv3.ModRevision("key"), "=", 1)). - Then(clientv3.OpGet("key")). + Then(clientv3.OpGet("key"), clientv3.OpGet("other_key")). Commit() return err }, - match: func(req *traceservice.ExportTraceServiceRequest) bool { - for _, resourceSpans := range req.GetResourceSpans() { - for _, attr := range resourceSpans.GetResource().GetAttributes() { - if attr.GetKey() != "service.name" && attr.GetValue().GetStringValue() != "integration-test-tracing" { - continue - } - for _, scoped := range resourceSpans.GetScopeSpans() { - for _, span := range scoped.GetSpans() { - if span.GetName() == "txn" { - for _, spanAttr := range span.GetAttributes() { - if spanAttr.GetKey() == "compare_first_key" && spanAttr.GetValue().GetStringValue() == "key" { - return true - } - } - return false - } - } - } - } - } - return false + wantSpan: &v1.Span{ + Name: "txn", + Attributes: []*commonv1.KeyValue{ + { + Key: "compare_first_key", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_StringValue{StringValue: "key"}}, + }, + { + Key: "compare_len", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_IntValue{IntValue: 1}}, + }, + { + Key: "success_len", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_IntValue{IntValue: 2}}, + }, + { + Key: "failure_len", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_IntValue{IntValue: 0}}, + }, + { + Key: "read_only", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_BoolValue{BoolValue: true}}, + }, + }, }, }, { name: "StreamWatch", - rpc: func(cli *clientv3.Client) error { + rpc: func(ctx context.Context, cli *clientv3.Client) error { // Create a context with a reasonable timeout - ctx, cancel := context.WithTimeout(context.TODO(), 10*time.Second) + ctx, cancel := context.WithTimeout(ctx, 10*time.Second) defer cancel() // Create a watch channel @@ -153,28 +150,20 @@ func TestTracing(t *testing.T) { return fmt.Errorf("Timed out waiting for watch event") } }, - match: func(req *traceservice.ExportTraceServiceRequest) bool { - for _, resourceSpans := range req.GetResourceSpans() { - for _, scoped := range resourceSpans.GetScopeSpans() { - for _, span := range scoped.GetSpans() { - if span.GetName() == "etcdserverpb.Watch/Watch" { - return true - } - } - } - } - return false + wantSpan: &v1.Span{ + Name: "etcdserverpb.Watch/Watch", + // Attributes are set outside Etcd in otelgrpc, so they are ignored here. }, }, } { t.Run(tc.name, func(t *testing.T) { - testRPCTracing(t, tc.match, tc.rpc) + testRPCTracing(t, tc.wantSpan, tc.rpc) }) } } // testRPCTracing is a common test function for both Unary and Stream RPC tracing -func testRPCTracing(t *testing.T, filterFunc func(*traceservice.ExportTraceServiceRequest) bool, clientAction func(*clientv3.Client) error) { +func testRPCTracing(t *testing.T, wantSpan *v1.Span, clientAction func(context.Context, *clientv3.Client) error) { // set up trace collector listener, err := net.Listen("tcp", "localhost:") require.NoError(t, err) @@ -185,7 +174,41 @@ func testRPCTracing(t *testing.T, filterFunc func(*traceservice.ExportTraceServi srv := grpc.NewServer() traceservice.RegisterTraceServiceServer(srv, &traceServer{ traceFound: traceFound, - filterFunc: filterFunc, + filterFunc: func(req *traceservice.ExportTraceServiceRequest) bool { + for _, resourceSpans := range req.GetResourceSpans() { + // Skip spans which weren't produced by test's gRPC client. + matched := false + for _, attr := range resourceSpans.GetResource().GetAttributes() { + if attr.GetKey() == "service.name" && attr.GetValue().GetStringValue() == "integration-test-tracing" { + matched = true + break + } + } + if !matched { + continue + } + + for _, scoped := range resourceSpans.GetScopeSpans() { + for _, gotSpan := range scoped.GetSpans() { + if gotSpan.GetName() != wantSpan.GetName() { + continue + } + if len(wantSpan.GetAttributes()) == 0 && len(wantSpan.GetEvents()) == 0 { + // Diff will compare only attributes and events when needed + return true + } + if diff := cmp.Diff(wantSpan, gotSpan, + protocmp.Transform(), + protocmp.IgnoreFields(&v1.Span{}, "end_time_unix_nano", "flags", "kind", "parent_span_id", "span_id", "start_time_unix_nano", "status", "trace_id"), + ); diff != "" { + t.Errorf("Span mismatch (-want +got):\n%s", diff) + } + return true + } + } + } + return false + }, }) go srv.Serve(listener) @@ -236,7 +259,7 @@ func testRPCTracing(t *testing.T, filterFunc func(*traceservice.ExportTraceServi defer cli.Close() // Execute the client action (either Unary or Stream RPC) - err = clientAction(cli) + err = clientAction(t.Context(), cli) require.NoError(t, err) // Wait for a span to be recorded from our request From f30b6e5033cb56b6537973c0e897ee1a65f4cc90 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Wed, 16 Jul 2025 13:10:00 +0000 Subject: [PATCH 0348/1068] cache: refactor tests into predix vs. no-prefix Signed-off-by: Peter Chang --- tests/integration/cache_test.go | 142 +++++++++++++++++++++----------- 1 file changed, 93 insertions(+), 49 deletions(-) diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index fc2e68663bb1..0bf62bfb5687 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -28,13 +28,13 @@ import ( "go.etcd.io/etcd/tests/v3/framework/integration" ) -func TestCacheWatch(t *testing.T) { +func TestCacheWithoutPrefixWatch(t *testing.T) { integration.BeforeTest(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) t.Cleanup(func() { clus.Terminate(t) }) client := clus.Client(0) - c, err := cache.New(client, "/foo", cache.WithHistoryWindowSize(32)) + c, err := cache.New(client, "", cache.WithHistoryWindowSize(32)) if err != nil { t.Fatalf("New(...): %v", err) } @@ -193,6 +193,30 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { opts: []clientv3.OpOption{clientv3.WithPrefix()}, wantEvents: nil, }, + { + name: "Watch with prefix empty string", + key: "", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + wantEvents: []*clientv3.Event{event1PutFooA, event2PutFooB, event3DeleteFooA, event4PutFooA, event5DeleteFooB, event6PutFooC, event7PutFooBar, event8PutFooBaz, event9PutFooYoo, event10PutZoo}, + }, + { + name: "Watch from key /foo/b", + key: "/foo/b", + opts: []clientv3.OpOption{clientv3.WithFromKey()}, + wantEvents: []*clientv3.Event{event2PutFooB, event5DeleteFooB, event6PutFooC, event7PutFooBar, event8PutFooBaz, event9PutFooYoo, event10PutZoo}, + }, + { + name: "Watch from empty key", + key: "", + opts: []clientv3.OpOption{clientv3.WithFromKey()}, + wantEvents: []*clientv3.Event{event1PutFooA, event2PutFooB, event3DeleteFooA, event4PutFooA, event5DeleteFooB, event6PutFooC, event7PutFooBar, event8PutFooBaz, event9PutFooYoo, event10PutZoo}, + }, + { + name: "Watch from non-existent key /doesnotexist", + key: "/doesnotexist", + opts: []clientv3.OpOption{clientv3.WithFromKey()}, + wantEvents: []*clientv3.Event{event1PutFooA, event2PutFooB, event3DeleteFooA, event4PutFooA, event5DeleteFooB, event6PutFooC, event7PutFooBar, event8PutFooBaz, event9PutFooYoo, event10PutZoo}, + }, } t.Log("Open test watchers") @@ -241,7 +265,7 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { } } -func TestCacheRejectsInvalidWatch(t *testing.T) { +func TestCacheWithPrefix(t *testing.T) { integration.BeforeTest(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) t.Cleanup(func() { clus.Terminate(t) }) @@ -250,71 +274,67 @@ func TestCacheRejectsInvalidWatch(t *testing.T) { ctx := t.Context() tests := []struct { - name string - cachePrefix string - key string - opts []clientv3.OpOption + name string + key string + opts []clientv3.OpOption + expectCanceled bool }{ { - name: "non‑zero start revision", - cachePrefix: "", - key: "", - opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithRev(123)}, + name: "non‑zero start revision returns error", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRev(123)}, + expectCanceled: true, }, { - name: "zero length range", - cachePrefix: "/foo", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithRange("/foo/a")}, + name: "single key within prefix", + key: "/foo/a", + opts: nil, + expectCanceled: false, }, { - name: "invalid range (start > end)", - cachePrefix: "/foo", - key: "/foo/b", - opts: []clientv3.OpOption{clientv3.WithRange("/foo/a")}, + name: "single key outside prefix returns error", + key: "/bar/a", + opts: nil, + expectCanceled: true, }, { - name: "range crosses cache prefix boundary", - cachePrefix: "/foo", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithRange("/zzz")}, + name: "prefix() within cache prefix", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + expectCanceled: false, }, { - name: "fromkey empty key", - cachePrefix: "/foo", - key: "", - opts: []clientv3.OpOption{clientv3.WithFromKey()}, + name: "prefix() outside cache prefix returns error", + key: "/bar", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + expectCanceled: true, }, { - name: "fromkey within cache prefix", - cachePrefix: "/foo", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithFromKey()}, + name: "range within prefix", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/b")}, + expectCanceled: false, }, { - name: "fromkey outside cache prefix", - cachePrefix: "/foo", - key: "/zzz", - opts: []clientv3.OpOption{clientv3.WithFromKey()}, + name: "range crosses cache prefix boundary returns error", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/zzz")}, + expectCanceled: true, }, { - name: "prefix() outside cache prefix", - cachePrefix: "/foo", - key: "/zzz", - opts: []clientv3.OpOption{clientv3.WithPrefix()}, - }, - { - name: "prefix() with empty key", - cachePrefix: "/foo", - key: "", - opts: []clientv3.OpOption{clientv3.WithPrefix()}, + name: "fromKey not allowed when cache has prefix returns error", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithFromKey()}, + expectCanceled: true, }, } + const testPutKey = "/foo/a" + for _, tc := range tests { tc := tc t.Run(tc.name, func(t *testing.T) { - c, err := cache.New(client, tc.cachePrefix) + c, err := cache.New(client, "/foo") if err != nil { t.Fatalf("New(...): %v", err) } @@ -327,13 +347,37 @@ func TestCacheRejectsInvalidWatch(t *testing.T) { defer cancel() ch := c.Watch(watchCtx, tc.key, tc.opts...) + + if !tc.expectCanceled { + if _, err := client.Put(ctx, testPutKey, "val"); err != nil { + t.Fatalf("Put(%q): %v", testPutKey, err) + } + } + select { case resp, ok := <-ch: - if !ok || !resp.Canceled { - t.Fatalf("expected canceled watch, got %+v (closed=%v)", resp, !ok) + if tc.expectCanceled { + if !ok || !resp.Canceled { + t.Fatalf("expected canceled watch, got %+v (closed=%v)", resp, !ok) + } + return + } + + if !ok || resp.Canceled { + t.Fatalf("expected active watch (not canceled), got %+v (closed=%v)", resp, !ok) + } + if len(resp.Events) == 0 { + t.Fatalf("watch returned no events, expected at least the test event") + } + if string(resp.Events[0].Kv.Key) != testPutKey { + t.Fatalf("got event for key %q, want %q", resp.Events[0].Kv.Key, testPutKey) } case <-watchCtx.Done(): - t.Fatalf("watch did not cancel within timeout") + if tc.expectCanceled { + t.Fatalf("watch did not cancel within timeout") + } else { + t.Fatalf("active watch did not deliver event within timeout") + } } }) } From 688172dce1ccefd7e7e53cf19ab388109430f507 Mon Sep 17 00:00:00 2001 From: sprochazka Date: Mon, 23 Jun 2025 14:40:15 +0000 Subject: [PATCH 0349/1068] tooling: Added missing executable flag Signed-off-by: sprochazka --- scripts/verify_golangci-lint_version.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 scripts/verify_golangci-lint_version.sh diff --git a/scripts/verify_golangci-lint_version.sh b/scripts/verify_golangci-lint_version.sh old mode 100644 new mode 100755 From 0da78cbcdd81d8c71b17ab31b5fff22bccc0d981 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Wed, 9 Jul 2025 14:31:19 +0000 Subject: [PATCH 0350/1068] cache: add cache unit tests with mocked client.Watcher Signed-off-by: Peter Chang --- cache/cache_test.go | 253 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 253 insertions(+) diff --git a/cache/cache_test.go b/cache/cache_test.go index 4293c74a7370..c21101885f70 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -15,11 +15,212 @@ package cache import ( + "context" "testing" + "time" + "github.com/google/go-cmp/cmp" + + mvccpb "go.etcd.io/etcd/api/v3/mvccpb" clientv3 "go.etcd.io/etcd/client/v3" ) +func TestCacheWatchAtomicOrderedDelivery(t *testing.T) { + tests := []struct { + name string + sentBatches [][]*clientv3.Event + wantBatch []*clientv3.Event + }{ + { + name: "single_event", + sentBatches: [][]*clientv3.Event{ + {event(mvccpb.PUT, "/a", 5)}, + }, + wantBatch: []*clientv3.Event{ + event(mvccpb.PUT, "/a", 5), + }, + }, + { + name: "same_revision_batch", + sentBatches: [][]*clientv3.Event{ + { + event(mvccpb.PUT, "/a", 10), + event(mvccpb.PUT, "/b", 10), + }, + }, + wantBatch: []*clientv3.Event{ + event(mvccpb.PUT, "/a", 10), + event(mvccpb.PUT, "/b", 10), + }, + }, + { + name: "mixed_revisions_in_single_response", + sentBatches: [][]*clientv3.Event{ + { + event(mvccpb.PUT, "/a", 11), + event(mvccpb.PUT, "/b", 11), + event(mvccpb.PUT, "/c", 12), + }, + }, + wantBatch: []*clientv3.Event{ + event(mvccpb.PUT, "/a", 11), + event(mvccpb.PUT, "/b", 11), + event(mvccpb.PUT, "/c", 12), + }, + }, + { + name: "mixed_event_types_same_revision", + sentBatches: [][]*clientv3.Event{ + { + event(mvccpb.PUT, "/x", 5), + event(mvccpb.PUT, "/y", 6), + event(mvccpb.DELETE, "/x", 6), + }, + }, + wantBatch: []*clientv3.Event{ + event(mvccpb.PUT, "/x", 5), + event(mvccpb.PUT, "/y", 6), + event(mvccpb.DELETE, "/x", 6), + }, + }, + { + name: "all_events_in_one_response", + sentBatches: [][]*clientv3.Event{ + { + event(mvccpb.PUT, "/a", 2), + event(mvccpb.PUT, "/b", 2), + event(mvccpb.PUT, "/c", 3), + event(mvccpb.PUT, "/d", 4), + event(mvccpb.PUT, "/e", 4), + event(mvccpb.PUT, "/f", 5), + event(mvccpb.PUT, "/g", 6), + event(mvccpb.PUT, "/h", 6), + event(mvccpb.PUT, "/i", 7), + event(mvccpb.PUT, "/j", 7), + }, + }, + wantBatch: []*clientv3.Event{ + event(mvccpb.PUT, "/a", 2), + event(mvccpb.PUT, "/b", 2), + event(mvccpb.PUT, "/c", 3), + event(mvccpb.PUT, "/d", 4), + event(mvccpb.PUT, "/e", 4), + event(mvccpb.PUT, "/f", 5), + event(mvccpb.PUT, "/g", 6), + event(mvccpb.PUT, "/h", 6), + event(mvccpb.PUT, "/i", 7), + event(mvccpb.PUT, "/j", 7), + }, + }, + { + name: "one_revision_group_per_response", + sentBatches: [][]*clientv3.Event{ + {event(mvccpb.PUT, "/a", 2), event(mvccpb.PUT, "/b", 2)}, + {event(mvccpb.PUT, "/c", 3)}, + {event(mvccpb.PUT, "/d", 4), event(mvccpb.PUT, "/e", 4)}, + {event(mvccpb.PUT, "/f", 5)}, + {event(mvccpb.PUT, "/g", 6), event(mvccpb.PUT, "/h", 6)}, + {event(mvccpb.PUT, "/i", 7), event(mvccpb.PUT, "/j", 7)}, + }, + wantBatch: []*clientv3.Event{ + event(mvccpb.PUT, "/a", 2), + event(mvccpb.PUT, "/b", 2), + event(mvccpb.PUT, "/c", 3), + event(mvccpb.PUT, "/d", 4), + event(mvccpb.PUT, "/e", 4), + event(mvccpb.PUT, "/f", 5), + event(mvccpb.PUT, "/g", 6), + event(mvccpb.PUT, "/h", 6), + event(mvccpb.PUT, "/i", 7), + event(mvccpb.PUT, "/j", 7), + }, + }, + { + name: "two_revision_groups_per_response", + sentBatches: [][]*clientv3.Event{ + {event(mvccpb.PUT, "/a", 2), event(mvccpb.PUT, "/b", 2), event(mvccpb.PUT, "/c", 3)}, + {event(mvccpb.PUT, "/d", 4), event(mvccpb.PUT, "/e", 4), event(mvccpb.PUT, "/f", 5)}, + {event(mvccpb.PUT, "/g", 6), event(mvccpb.PUT, "/h", 6)}, + {event(mvccpb.PUT, "/i", 7), event(mvccpb.PUT, "/j", 7)}, + }, + wantBatch: []*clientv3.Event{ + event(mvccpb.PUT, "/a", 2), + event(mvccpb.PUT, "/b", 2), + event(mvccpb.PUT, "/c", 3), + event(mvccpb.PUT, "/d", 4), + event(mvccpb.PUT, "/e", 4), + event(mvccpb.PUT, "/f", 5), + event(mvccpb.PUT, "/g", 6), + event(mvccpb.PUT, "/h", 6), + event(mvccpb.PUT, "/i", 7), + event(mvccpb.PUT, "/j", 7), + }, + }, + { + name: "three_revision_groups_per_response", + sentBatches: [][]*clientv3.Event{ + { + event(mvccpb.PUT, "/a", 2), event(mvccpb.PUT, "/b", 2), + event(mvccpb.PUT, "/c", 3), + event(mvccpb.PUT, "/d", 4), event(mvccpb.PUT, "/e", 4), + }, + { + event(mvccpb.PUT, "/f", 5), + event(mvccpb.PUT, "/g", 6), event(mvccpb.PUT, "/h", 6), + event(mvccpb.PUT, "/i", 7), event(mvccpb.PUT, "/j", 7), + }, + }, + wantBatch: []*clientv3.Event{ + event(mvccpb.PUT, "/a", 2), + event(mvccpb.PUT, "/b", 2), + event(mvccpb.PUT, "/c", 3), + event(mvccpb.PUT, "/d", 4), + event(mvccpb.PUT, "/e", 4), + event(mvccpb.PUT, "/f", 5), + event(mvccpb.PUT, "/g", 6), + event(mvccpb.PUT, "/h", 6), + event(mvccpb.PUT, "/i", 7), + event(mvccpb.PUT, "/j", 7), + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mw := newMockWatcher(16) + cache, err := New(mw, "") + if err != nil { + t.Fatalf("New cache: %v", err) + } + defer cache.Close() + + mw.responses <- clientv3.WatchResponse{} + <-mw.registered + + ctxWait, cancelWait := context.WithTimeout(t.Context(), time.Second) + if err := cache.WaitReady(ctxWait); err != nil { + t.Fatalf("cache did not become Ready(): %v", err) + } + cancelWait() + + ctx, cancel := context.WithTimeout(t.Context(), 2*time.Second) + defer cancel() + watchCh := cache.Watch(ctx, "", clientv3.WithPrefix()) + + for _, batch := range tt.sentBatches { + mw.responses <- clientv3.WatchResponse{Events: batch} + } + close(mw.responses) + + got := collectEvents(ctx, t, watchCh, len(tt.wantBatch)) + + if diff := cmp.Diff(tt.wantBatch, got); diff != "" { + t.Fatalf("event mismatch (-want +got):\n%s", diff) + } + }) + } +} + func TestValidateWatchRange(t *testing.T) { type tc struct { name string @@ -188,3 +389,55 @@ func TestValidateWatchRange(t *testing.T) { }) } } + +type mockWatcher struct { + responses chan clientv3.WatchResponse + registered chan struct{} +} + +func newMockWatcher(buf int) *mockWatcher { + return &mockWatcher{ + responses: make(chan clientv3.WatchResponse, buf), + registered: make(chan struct{}), + } +} + +func (m *mockWatcher) Watch(_ context.Context, _ string, _ ...clientv3.OpOption) clientv3.WatchChan { + close(m.registered) + return m.responses +} + +func (m *mockWatcher) RequestProgress(_ context.Context) error { return nil } + +func (m *mockWatcher) Close() error { close(m.responses); return nil } + +func event(eventType mvccpb.Event_EventType, key string, rev int64) *clientv3.Event { + return &clientv3.Event{ + Type: eventType, + Kv: &mvccpb.KeyValue{ + Key: []byte(key), + ModRevision: rev, + CreateRevision: rev, + Version: 1, + }, + } +} + +func collectEvents(ctx context.Context, t *testing.T, watchCh clientv3.WatchChan, wantCount int) []*clientv3.Event { + t.Helper() + var got []*clientv3.Event + for { + select { + case <-ctx.Done(): + t.Fatalf("timed out waiting for Watch events (got %d/%d events)", len(got), wantCount) + case resp, ok := <-watchCh: + if !ok { + return got + } + got = append(got, resp.Events...) + if len(got) >= wantCount { + return got + } + } + } +} From 0b2535c790c56da825d2c5d4ac7f5d10e0c8ab15 Mon Sep 17 00:00:00 2001 From: Nont Date: Tue, 8 Jul 2025 22:22:44 -0500 Subject: [PATCH 0351/1068] Inject antithesis assertion in place Signed-off-by: Nont --- client/pkg/verify/verify.go | 13 +++++++++++-- client/v3/client.go | 6 ++---- server/etcdserver/server.go | 24 ++++++++++++++---------- server/storage/backend/tx_buffer.go | 13 +++++++------ server/storage/backend/verify.go | 20 ++++++++++++++------ server/storage/mvcc/kvstore.go | 7 ++++--- server/storage/mvcc/watchable_store.go | 10 +++++++--- server/storage/schema/cindex.go | 8 ++++---- 8 files changed, 63 insertions(+), 38 deletions(-) diff --git a/client/pkg/verify/verify.go b/client/pkg/verify/verify.go index a7b2097bed9b..cb48d8ff02c1 100644 --- a/client/pkg/verify/verify.go +++ b/client/pkg/verify/verify.go @@ -66,9 +66,18 @@ func DisableVerifications() func() { // Verify performs verification if the assertions are enabled. // In the default setup running in tests and skipped in the production code. -func Verify(f func()) { +func Verify(msg string, f VerifyFunc) { if IsVerificationEnabled(envVerifyValueAssert) { - f() + ok, details := f() + verifier(ok, msg, details) + } +} + +type VerifyFunc func() (condition bool, details map[string]any) + +func verifier(condition bool, msg string, details map[string]any) { + if !condition { + panic(fmt.Sprintf("%s. details: %v.", msg, details)) } } diff --git a/client/v3/client.go b/client/v3/client.go index 998f5ae03f75..c712b76c38ab 100644 --- a/client/v3/client.go +++ b/client/v3/client.go @@ -201,10 +201,8 @@ func (c *Client) Sync(ctx context.Context) error { } // The linearizable `MemberList` returned successfully, so the // endpoints shouldn't be empty. - verify.Verify(func() { - if len(eps) == 0 { - panic("empty endpoints returned from etcd cluster") - } + verify.Verify("empty endpoints returned from etcd cluster", func() (bool, map[string]any) { + return len(eps) > 0, nil }) c.SetEndpoints(eps...) c.lg.Debug("set etcd endpoints by autoSync", zap.Strings("endpoints", eps)) diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index 34aa56d81140..59e695d934b0 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -1180,18 +1180,22 @@ func (s *EtcdServer) NewUberApplier() apply.UberApplier { } func verifySnapshotIndex(snapshot raftpb.Snapshot, cindex uint64) { - verify.Verify(func() { - if cindex != snapshot.Metadata.Index { - panic(fmt.Sprintf("consistent_index(%d) isn't equal to snapshot index (%d)", cindex, snapshot.Metadata.Index)) - } + verify.Verify("consistent_index isn't equal to snapshot index", func() (bool, map[string]any) { + return cindex == snapshot.Metadata.Index, + map[string]any{ + "consistent_index": cindex, + "snapshot_index": snapshot.Metadata.Index, + } }) } -func verifyConsistentIndexIsLatest(lg *zap.Logger, snapshot raftpb.Snapshot, cindex uint64) { - verify.Verify(func() { - if cindex < snapshot.Metadata.Index { - lg.Panic(fmt.Sprintf("consistent_index(%d) is older than snapshot index (%d)", cindex, snapshot.Metadata.Index)) - } +func verifyConsistentIndexIsLatest(snapshot raftpb.Snapshot, cindex uint64) { + verify.Verify("consistent_index is older than snapshot_index", func() (bool, map[string]any) { + return cindex >= snapshot.Metadata.Index, + map[string]any{ + "consistent_index": cindex, + "snapshot_index": snapshot.Metadata.Index, + } }) } @@ -2217,7 +2221,7 @@ func (s *EtcdServer) snapshot(ep *etcdProgress, toDisk bool) { } ep.memorySnapshotIndex = ep.appliedi - verifyConsistentIndexIsLatest(lg, snap, s.consistIndex.ConsistentIndex()) + verifyConsistentIndexIsLatest(snap, s.consistIndex.ConsistentIndex()) if toDisk { // SaveSnap saves the snapshot to file and appends the corresponding WAL entry. diff --git a/server/storage/backend/tx_buffer.go b/server/storage/backend/tx_buffer.go index 821b300bfeff..7aa4c9d32b68 100644 --- a/server/storage/backend/tx_buffer.go +++ b/server/storage/backend/tx_buffer.go @@ -17,7 +17,6 @@ package backend import ( "bytes" "encoding/hex" - "fmt" "sort" "go.etcd.io/etcd/client/pkg/v3/verify" @@ -56,17 +55,19 @@ func (txw *txWriteBuffer) put(bucket Bucket, k, v []byte) { func (txw *txWriteBuffer) putSeq(bucket Bucket, k, v []byte) { // putSeq is only be called for the data in the Key bucket. The keys // in the Key bucket should be monotonically increasing revisions. - verify.Verify(func() { + verify.Verify("Broke the rule of monotonically increasing", func() (bool, map[string]any) { b, ok := txw.buckets[bucket.ID()] if !ok || b.used == 0 { - return + return true, nil } - existingMaxKey := b.buf[b.used-1].key if bytes.Compare(k, existingMaxKey) <= 0 { - panic(fmt.Sprintf("Broke the rule of monotonically increasing, existingMaxKey: %s, currentKey: %s", - hex.EncodeToString(existingMaxKey), hex.EncodeToString(k))) + return false, map[string]any{ + "existingMaxKey": hex.EncodeToString(existingMaxKey), + "currentKey": hex.EncodeToString(k), + } } + return true, nil }) txw.putInternal(bucket, k, v) } diff --git a/server/storage/backend/verify.go b/server/storage/backend/verify.go index 206a8a41d71b..e2f0cd5ba4a2 100644 --- a/server/storage/backend/verify.go +++ b/server/storage/backend/verify.go @@ -15,7 +15,6 @@ package backend import ( - "fmt" "runtime/debug" "strings" @@ -80,9 +79,9 @@ func insideUnittest() bool { // VerifyBackendConsistency verifies data in ReadTx and BatchTx are consistent. func VerifyBackendConsistency(b Backend, lg *zap.Logger, skipSafeRangeBucket bool, bucket ...Bucket) { - verify.Verify(func() { + verify.Verify("bucket data mismatch", func() (bool, map[string]any) { if b == nil { - return + return true, nil } if lg != nil { lg.Debug("verifyBackendConsistency", zap.Bool("skipSafeRangeBucket", skipSafeRangeBucket)) @@ -95,12 +94,15 @@ func VerifyBackendConsistency(b Backend, lg *zap.Logger, skipSafeRangeBucket boo if skipSafeRangeBucket && bkt.IsSafeRangeBucket() { continue } - unsafeVerifyTxConsistency(b, bkt) + if ok, details := unsafeVerifyTxConsistency(b, bkt); !ok { + return false, details + } } + return true, nil }) } -func unsafeVerifyTxConsistency(b Backend, bucket Bucket) { +func unsafeVerifyTxConsistency(b Backend, bucket Bucket) (bool, map[string]any) { dataFromWriteTxn := map[string]string{} b.BatchTx().UnsafeForEach(bucket, func(k, v []byte) error { dataFromWriteTxn[string(k)] = string(v) @@ -112,6 +114,12 @@ func unsafeVerifyTxConsistency(b Backend, bucket Bucket) { return nil }) if diff := cmp.Diff(dataFromWriteTxn, dataFromReadTxn); diff != "" { - panic(fmt.Sprintf("bucket %s data mismatch\nwrite TXN: %v\nread TXN: %v\ndiff: %s", bucket.String(), dataFromWriteTxn, dataFromReadTxn, diff)) + return false, map[string]any{ + "bucket": bucket.String(), + "write TXN": dataFromWriteTxn, + "read TXN": dataFromReadTxn, + "diff": diff, + } } + return true, nil } diff --git a/server/storage/mvcc/kvstore.go b/server/storage/mvcc/kvstore.go index 77c50226257c..662fba29121c 100644 --- a/server/storage/mvcc/kvstore.go +++ b/server/storage/mvcc/kvstore.go @@ -459,9 +459,10 @@ func restoreIntoIndex(lg *zap.Logger, idx index) (chan<- revKeyValue, <-chan int } rev := BytesToRev(rkv.key) - verify.Verify(func() { - if rev.Main < currentRev { - panic(fmt.Errorf("revision %d shouldn't be less than the previous revision %d", rev.Main, currentRev)) + verify.Verify("revision shouldn't be less than the previous revision", func() (bool, map[string]any) { + return rev.Main >= currentRev, map[string]any{ + "revision": rev.Main, + "previous revision": currentRev, } }) currentRev = rev.Main diff --git a/server/storage/mvcc/watchable_store.go b/server/storage/mvcc/watchable_store.go index 1a1d99fed496..ac893c804faa 100644 --- a/server/storage/mvcc/watchable_store.go +++ b/server/storage/mvcc/watchable_store.go @@ -15,7 +15,6 @@ package mvcc import ( - "fmt" "sync" "time" @@ -591,14 +590,19 @@ func (w *watcher) send(wr WatchResponse) bool { wr.Events = ne } - verify.Verify(func() { + verify.Verify("Event.ModRevision is less than the w.startRev for watchID", func() (bool, map[string]any) { if w.startRev > 0 { for _, ev := range wr.Events { if ev.Kv.ModRevision < w.startRev { - panic(fmt.Sprintf("Event.ModRevision(%d) is less than the w.startRev(%d) for watchID: %d", ev.Kv.ModRevision, w.startRev, w.id)) + return false, map[string]any{ + "Event.ModRevision": ev.Kv.ModRevision, + "w.startRev": w.startRev, + "watchID": w.id, + } } } } + return true, nil }) // if all events are filtered out, we should send nothing. diff --git a/server/storage/schema/cindex.go b/server/storage/schema/cindex.go index cdf938d346c0..409dcf4233b1 100644 --- a/server/storage/schema/cindex.go +++ b/server/storage/schema/cindex.go @@ -16,7 +16,6 @@ package schema import ( "encoding/binary" - "fmt" "go.etcd.io/etcd/client/pkg/v3/verify" "go.etcd.io/etcd/server/v3/storage/backend" @@ -76,10 +75,11 @@ func unsafeUpdateConsistentIndex(tx backend.UnsafeReadWriter, index uint64, term binary.BigEndian.PutUint64(bs1, index) if !allowDecreasing { - verify.Verify(func() { + verify.Verify("update of consistent index not advancing", func() (bool, map[string]any) { previousIndex, _ := UnsafeReadConsistentIndex(tx) - if index < previousIndex { - panic(fmt.Errorf("update of consistent index not advancing: previous: %v new: %v", previousIndex, index)) + return index >= previousIndex, map[string]any{ + "previousIndex": previousIndex, + "currentIndex": index, } }) } From d3ab9c7e3a44eaaba355631611b254bb2e292e67 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Thu, 17 Jul 2025 12:27:35 +0000 Subject: [PATCH 0352/1068] cache: improve tests to validate atomic grouping and monotonic revisions Signed-off-by: Peter Chang --- cache/cache_test.go | 28 ++++++++++++++++++++-------- tests/integration/cache_test.go | 19 +++++++++++++++---- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/cache/cache_test.go b/cache/cache_test.go index c21101885f70..356350783cad 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -212,7 +212,7 @@ func TestCacheWatchAtomicOrderedDelivery(t *testing.T) { } close(mw.responses) - got := collectEvents(ctx, t, watchCh, len(tt.wantBatch)) + got := collectAndAssertAtomicEvents(ctx, t, watchCh, len(tt.wantBatch)) if diff := cmp.Diff(tt.wantBatch, got); diff != "" { t.Fatalf("event mismatch (-want +got):\n%s", diff) @@ -423,20 +423,32 @@ func event(eventType mvccpb.Event_EventType, key string, rev int64) *clientv3.Ev } } -func collectEvents(ctx context.Context, t *testing.T, watchCh clientv3.WatchChan, wantCount int) []*clientv3.Event { +func collectAndAssertAtomicEvents(ctx context.Context, t *testing.T, watchCh clientv3.WatchChan, wantCount int) []*clientv3.Event { t.Helper() - var got []*clientv3.Event + var events []*clientv3.Event + var lastRevision int64 for { select { case <-ctx.Done(): - t.Fatalf("timed out waiting for Watch events (got %d/%d events)", len(got), wantCount) + t.Fatalf("timed out waiting for events (%d/%d received)", + len(events), wantCount) + case resp, ok := <-watchCh: if !ok { - return got + return events + } + if len(resp.Events) != 0 && resp.Events[0].Kv.ModRevision == lastRevision { + t.Fatalf("same revision found as in previous response: %d", lastRevision) + } + for _, ev := range resp.Events { + if ev.Kv.ModRevision < lastRevision { + t.Fatalf("revision went backwards: last %d, now %d", lastRevision, ev.Kv.ModRevision) + } + events = append(events, ev) + lastRevision = ev.Kv.ModRevision } - got = append(got, resp.Events...) - if len(got) >= wantCount { - return got + if wantCount != 0 && len(events) >= wantCount { + return events } } } diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 0bf62bfb5687..4e70f8ad42d2 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -257,7 +257,7 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { i, tc := i, tc t.Run(tc.name, func(t *testing.T) { t.Parallel() - events, _ := readEvents(watches[i]) + events, _ := collectAndAssertAtomicEvents(t, watches[i]) if diff := cmp.Diff(tc.wantEvents, events); diff != "" { t.Errorf("unexpected events (-want +got):\n%s", diff) } @@ -447,7 +447,7 @@ func TestCacheLaggingWatcher(t *testing.T) { ch := c.Watch(t.Context(), prefix, clientv3.WithPrefix()) generateEvents(t, client, prefix, tt.eventCount) - gotEvents, ok := readEvents(ch) + gotEvents, ok := collectAndAssertAtomicEvents(t, ch) closed := !ok if tt.wantExactEventCount != 0 && tt.wantExactEventCount != len(gotEvents) { @@ -477,15 +477,26 @@ type Watcher interface { Watch(ctx context.Context, key string, opts ...clientv3.OpOption) clientv3.WatchChan } -func readEvents(watch clientv3.WatchChan) (events []*clientv3.Event, ok bool) { +func collectAndAssertAtomicEvents(t *testing.T, watch clientv3.WatchChan) (events []*clientv3.Event, ok bool) { deadline := time.After(time.Second) + var lastRevision int64 + for { select { case resp, ok := <-watch: if !ok { return events, false } - events = append(events, resp.Events...) + if len(resp.Events) != 0 && resp.Events[0].Kv.ModRevision == lastRevision { + t.Fatalf("same revision found as in previous response: %d", lastRevision) + } + for _, ev := range resp.Events { + if ev.Kv.ModRevision < lastRevision { + t.Fatalf("revision went backwards: last %d, now %d", lastRevision, ev.Kv.ModRevision) + } + events = append(events, ev) + lastRevision = ev.Kv.ModRevision + } case <-deadline: return events, true case <-time.After(100 * time.Millisecond): From a9e35f4b35171bc5a17487cd4a39ad9265b78bc4 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Thu, 17 Jul 2025 11:24:14 +0530 Subject: [PATCH 0353/1068] dependency: bump golang.org/x/sys from 0.33.0 to 0.34.0 This commit will bump golang.org/x/sys from 0.33.0 to 0.34.0 Signed-off-by: ArkaSaha30 --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 24 files changed, 36 insertions(+), 36 deletions(-) diff --git a/api/go.mod b/api/go.mod index f16a3b02ab9f..67c4da56a26e 100644 --- a/api/go.mod +++ b/api/go.mod @@ -22,7 +22,7 @@ require ( go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect + golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/api/go.sum b/api/go.sum index f92a0d38bf24..c86f77f9edf0 100644 --- a/api/go.sum +++ b/api/go.sum @@ -59,8 +59,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= diff --git a/cache/go.mod b/cache/go.mod index b25a800af76a..161de78dff6e 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -21,7 +21,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect + golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect diff --git a/cache/go.sum b/cache/go.sum index 40517664176e..7af0eee6083e 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -80,8 +80,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 634655bdae06..e6a3638ac8fa 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.5.0 github.com/stretchr/testify v1.10.0 go.uber.org/zap v1.27.0 - golang.org/x/sys v0.33.0 + golang.org/x/sys v0.34.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index b7f7b48973e3..462fa64c93d1 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -25,8 +25,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index 484cf0538a67..3d94347ae537 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -37,7 +37,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect + golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index b6df4b8017e4..f45b224c0dba 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -96,8 +96,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index b7c0fd3e028d..de6efa644abd 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -41,7 +41,7 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect + golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 7d12d4a8e876..c916f9b464cf 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -120,8 +120,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 7a8fcf4e3aed..d58476f12bb5 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -87,7 +87,7 @@ require ( go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/crypto v0.39.0 // indirect golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect + golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.26.0 // indirect golang.org/x/time v0.12.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index d5d27e021c86..d8d3c147f84b 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -166,8 +166,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= diff --git a/go.mod b/go.mod index 976a94954a71..668c0ebc8015 100644 --- a/go.mod +++ b/go.mod @@ -95,7 +95,7 @@ require ( go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/crypto v0.39.0 // indirect golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect + golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect diff --git a/go.sum b/go.sum index 7e4c662f336e..e544abaec9dd 100644 --- a/go.sum +++ b/go.sum @@ -221,8 +221,8 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= diff --git a/pkg/go.mod b/pkg/go.mod index 45d16586e79b..1004384d427d 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -25,7 +25,7 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect + golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index f44d0ce78ab9..d66f4be6f72e 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -55,8 +55,8 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= diff --git a/server/go.mod b/server/go.mod index d18c2604fbb2..9e45588bbc3e 100644 --- a/server/go.mod +++ b/server/go.mod @@ -71,7 +71,7 @@ require ( go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/sys v0.33.0 // indirect + golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/server/go.sum b/server/go.sum index a1f9232d33a3..badfcda68408 100644 --- a/server/go.sum +++ b/server/go.sum @@ -195,8 +195,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= diff --git a/tests/go.mod b/tests/go.mod index ab3c7ab4e212..685bc71f7eeb 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -98,7 +98,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect + golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect diff --git a/tests/go.sum b/tests/go.sum index 016f92157bc6..524e8f48b760 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -227,8 +227,8 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 5c63f4fdb471..de54516c0c9c 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -219,7 +219,7 @@ require ( golang.org/x/mod v0.25.0 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/sync v0.15.0 // indirect - golang.org/x/sys v0.33.0 // indirect + golang.org/x/sys v0.34.0 // indirect golang.org/x/term v0.32.0 // indirect golang.org/x/text v0.26.0 // indirect golang.org/x/tools v0.34.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 9948eaed45ce..29c114d51260 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -625,8 +625,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index f19eb8d29186..b4d25e476ef9 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -18,7 +18,7 @@ require ( go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect + golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/grpc v1.73.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 233708159aba..0a18cd0e83a2 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1484,8 +1484,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From 0bc32a9acd46e7a9b5e2b87de86db440246837ff Mon Sep 17 00:00:00 2001 From: sprochazka Date: Mon, 14 Jul 2025 10:57:37 +0000 Subject: [PATCH 0354/1068] Tooling: Added licence header changed the shebang command to mathc other scripts Signed-off-by: sprochazka --- scripts/verify_golangci-lint_version.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/scripts/verify_golangci-lint_version.sh b/scripts/verify_golangci-lint_version.sh index 3df5381163fc..9040f1c09d1b 100755 --- a/scripts/verify_golangci-lint_version.sh +++ b/scripts/verify_golangci-lint_version.sh @@ -1,4 +1,19 @@ -#!/bin/bash +#!/usr/bin/env bash + +# Copyright 2015 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + function install_golangci_lint() { echo "Installing golangci-lint ${GOLANGCI_LINT_VERSION}" curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b "${GOPATH}/bin" "${GOLANGCI_LINT_VERSION}" From 9d35197c1a4d8a05345ffb632728eec636a90787 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Thu, 17 Jul 2025 11:33:22 +0530 Subject: [PATCH 0355/1068] dependency: bump golang.org/x/net, text, crypto, sync, term This commit will bump the following packages: - golang.org/x/net from 0.41.0 to 0.42.0 - golang.org/x/text from 0.26.0 to 0.27.0 - golang.org/x/crypto from 0.39.0 to 0.40.0 - golang.org/x/sync from 0.15.0 to 0.16.0 - golang.org/x/term from 0.32.0 to 0.33.0 Signed-off-by: ArkaSaha30 --- api/go.mod | 4 ++-- api/go.sum | 8 ++++---- cache/go.mod | 4 ++-- cache/go.sum | 8 ++++---- client/v3/go.mod | 4 ++-- client/v3/go.sum | 8 ++++---- etcdctl/go.mod | 4 ++-- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 16 ++++++++-------- go.mod | 6 +++--- go.sum | 16 ++++++++-------- pkg/go.mod | 4 ++-- pkg/go.sum | 8 ++++---- server/go.mod | 6 +++--- server/go.sum | 16 ++++++++-------- tests/go.mod | 8 ++++---- tests/go.sum | 16 ++++++++-------- tools/mod/go.mod | 10 +++++----- tools/mod/go.sum | 20 ++++++++++---------- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 4 ++-- tools/testgrid-analysis/go.sum | 8 ++++---- 24 files changed, 99 insertions(+), 99 deletions(-) diff --git a/api/go.mod b/api/go.mod index 67c4da56a26e..72c8ad2e76be 100644 --- a/api/go.mod +++ b/api/go.mod @@ -21,9 +21,9 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect - golang.org/x/net v0.41.0 // indirect + golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index c86f77f9edf0..c9ade099a83e 100644 --- a/api/go.sum +++ b/api/go.sum @@ -51,8 +51,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -63,8 +63,8 @@ golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/cache/go.mod b/cache/go.mod index 161de78dff6e..aac75f7a4768 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -20,9 +20,9 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/net v0.41.0 // indirect + golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/grpc v1.73.0 // indirect diff --git a/cache/go.sum b/cache/go.sum index 7af0eee6083e..96db706a2536 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -72,8 +72,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -84,8 +84,8 @@ golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/client/v3/go.mod b/client/v3/go.mod index 3d94347ae537..9971111d5c3f 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -36,9 +36,9 @@ require ( go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/net v0.41.0 // indirect + golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index f45b224c0dba..0ac3c115e2a2 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -88,8 +88,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -100,8 +100,8 @@ golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index de6efa644abd..57530aac2a5c 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -40,9 +40,9 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.41.0 // indirect + golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index c916f9b464cf..583aea7d342e 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -111,8 +111,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -124,8 +124,8 @@ golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index d58476f12bb5..9f8314534c0a 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -85,10 +85,10 @@ require ( go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.39.0 // indirect - golang.org/x/net v0.41.0 // indirect + golang.org/x/crypto v0.40.0 // indirect + golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/text v0.27.0 // indirect golang.org/x/time v0.12.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index d8d3c147f84b..ab77735a6a61 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -145,8 +145,8 @@ go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -154,13 +154,13 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -170,8 +170,8 @@ golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index 668c0ebc8015..6dc6a25a43cf 100644 --- a/go.mod +++ b/go.mod @@ -93,10 +93,10 @@ require ( go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.39.0 // indirect - golang.org/x/net v0.41.0 // indirect + golang.org/x/crypto v0.40.0 // indirect + golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index e544abaec9dd..9589a57cdfa8 100644 --- a/go.sum +++ b/go.sum @@ -187,8 +187,8 @@ go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -204,16 +204,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -225,8 +225,8 @@ golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/pkg/go.mod b/pkg/go.mod index 1004384d427d..5db7a6384735 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -24,9 +24,9 @@ require ( go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.41.0 // indirect + golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index d66f4be6f72e..92cc09d5802a 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -53,12 +53,12 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= diff --git a/server/go.mod b/server/go.mod index 9e45588bbc3e..54cdb2518010 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,8 +37,8 @@ require ( go.opentelemetry.io/otel/sdk v1.37.0 go.opentelemetry.io/otel/trace v1.37.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.39.0 - golang.org/x/net v0.41.0 + golang.org/x/crypto v0.40.0 + golang.org/x/net v0.42.0 golang.org/x/time v0.12.0 google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 google.golang.org/grpc v1.73.0 @@ -72,7 +72,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index badfcda68408..8c2efea25020 100644 --- a/server/go.sum +++ b/server/go.sum @@ -162,8 +162,8 @@ go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -179,16 +179,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -199,8 +199,8 @@ golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index 685bc71f7eeb..02617a89a659 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -47,8 +47,8 @@ require ( go.opentelemetry.io/otel/sdk v1.37.0 go.opentelemetry.io/proto/otlp v1.7.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.39.0 - golang.org/x/sync v0.15.0 + golang.org/x/crypto v0.40.0 + golang.org/x/sync v0.16.0 golang.org/x/time v0.12.0 google.golang.org/grpc v1.73.0 google.golang.org/protobuf v1.36.6 @@ -97,9 +97,9 @@ require ( go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/net v0.41.0 // indirect + golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index 524e8f48b760..ad45b95b7f4a 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -193,8 +193,8 @@ go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -210,16 +210,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -231,8 +231,8 @@ golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index de54516c0c9c..6ec9bfcd0557 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -213,15 +213,15 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.39.0 // indirect + golang.org/x/crypto v0.40.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect golang.org/x/mod v0.25.0 // indirect - golang.org/x/net v0.41.0 // indirect - golang.org/x/sync v0.15.0 // indirect + golang.org/x/net v0.42.0 // indirect + golang.org/x/sync v0.16.0 // indirect golang.org/x/sys v0.34.0 // indirect - golang.org/x/term v0.32.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/term v0.33.0 // indirect + golang.org/x/text v0.27.0 // indirect golang.org/x/tools v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 29c114d51260..bfbb66f18a3e 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -540,8 +540,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -582,8 +582,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -594,8 +594,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -640,8 +640,8 @@ golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg= +golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -656,8 +656,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 641bf1a0c907..b3af662c1f5b 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -22,5 +22,5 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/image v0.18.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/text v0.27.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index a94e9aba2c02..1813c62e080c 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -53,8 +53,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index b4d25e476ef9..cf8f527ed053 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -17,9 +17,9 @@ require ( github.com/spf13/pflag v1.0.6 // indirect go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect - golang.org/x/net v0.41.0 // indirect + golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/grpc v1.73.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 0a18cd0e83a2..246e9763f336 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1336,8 +1336,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1516,8 +1516,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 2642ca74336d42875f0ee2cb04c530a4200064bb Mon Sep 17 00:00:00 2001 From: sprochazka Date: Tue, 15 Jul 2025 20:41:54 +0000 Subject: [PATCH 0356/1068] Tooling: Added licenses headers in cript directory Licensed since 2025 Signed-off-by: sprochazka --- scripts/build-binary.sh | 13 +++++++++++++ scripts/build-docker.sh | 13 +++++++++++++ scripts/build-release.sh | 13 +++++++++++++ scripts/build.sh | 13 +++++++++++++ scripts/build_lib.sh | 13 +++++++++++++ scripts/build_tools.sh | 13 +++++++++++++ scripts/codecov_upload.sh | 13 +++++++++++++ scripts/fix.sh | 13 +++++++++++++ scripts/fuzzing.sh | 13 +++++++++++++ scripts/genproto.sh | 13 +++++++++++++ scripts/markdown_diff_lint.sh | 14 ++++++++++++++ scripts/measure-testgrid-flakiness.sh | 14 ++++++++++++++ scripts/release.sh | 13 +++++++++++++ scripts/release_mod.sh | 13 +++++++++++++ scripts/sync_go_toolchain_directive.sh | 13 +++++++++++++ scripts/test.sh | 13 +++++++++++++ scripts/test_images.sh | 13 +++++++++++++ scripts/test_lib.sh | 13 +++++++++++++ scripts/test_utils.sh | 14 ++++++++++++++ scripts/update_dep.sh | 15 ++++++++++++++- scripts/update_proto_annotations.sh | 14 ++++++++++++++ scripts/updatebom.sh | 13 +++++++++++++ scripts/verify_genproto.sh | 14 ++++++++++++++ scripts/verify_go_versions.sh | 15 ++++++++++++++- scripts/verify_golangci-lint_version.sh | 3 +-- scripts/verify_proto_annotations.sh | 14 ++++++++++++++ 26 files changed, 334 insertions(+), 4 deletions(-) diff --git a/scripts/build-binary.sh b/scripts/build-binary.sh index 174c72db4670..d426de4568a5 100755 --- a/scripts/build-binary.sh +++ b/scripts/build-binary.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. set -euo pipefail diff --git a/scripts/build-docker.sh b/scripts/build-docker.sh index 6f86fb46a755..3b432b2b9d5f 100755 --- a/scripts/build-docker.sh +++ b/scripts/build-docker.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. set -euo pipefail diff --git a/scripts/build-release.sh b/scripts/build-release.sh index 4cf1116ee006..d4301a43c1fa 100755 --- a/scripts/build-release.sh +++ b/scripts/build-release.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # # Build all release binaries and images to directory ./release. # Run from repository root. diff --git a/scripts/build.sh b/scripts/build.sh index 15720193a1d4..6e314fcb8a25 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # This scripts build the etcd binaries # To build the tools, run `build_tools.sh` diff --git a/scripts/build_lib.sh b/scripts/build_lib.sh index bd6279c8ae65..14f384bd5ecc 100755 --- a/scripts/build_lib.sh +++ b/scripts/build_lib.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. set -euo pipefail diff --git a/scripts/build_tools.sh b/scripts/build_tools.sh index 7145126d890c..4f5ec2cfa4fd 100755 --- a/scripts/build_tools.sh +++ b/scripts/build_tools.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. set -euo pipefail diff --git a/scripts/codecov_upload.sh b/scripts/codecov_upload.sh index 7dbad265b92c..fc8a8de8e45b 100755 --- a/scripts/codecov_upload.sh +++ b/scripts/codecov_upload.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Script used to collect and upload test coverage. diff --git a/scripts/fix.sh b/scripts/fix.sh index 91e3018bc15e..17c7bf234d46 100755 --- a/scripts/fix.sh +++ b/scripts/fix.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. set -euo pipefail diff --git a/scripts/fuzzing.sh b/scripts/fuzzing.sh index 65ffaa92ab60..6a12519cc530 100755 --- a/scripts/fuzzing.sh +++ b/scripts/fuzzing.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. set -euo pipefail diff --git a/scripts/genproto.sh b/scripts/genproto.sh index 52e94a1bab51..31b66bf7bc14 100755 --- a/scripts/genproto.sh +++ b/scripts/genproto.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # # Generate all etcd protobuf bindings. # Run from repository root directory named etcd. diff --git a/scripts/markdown_diff_lint.sh b/scripts/markdown_diff_lint.sh index 4649593cae31..8d1c0a85b92b 100755 --- a/scripts/markdown_diff_lint.sh +++ b/scripts/markdown_diff_lint.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# # This script runs markdownlint-cli2 on changed files. # Usage: ./markdown_lint.sh diff --git a/scripts/measure-testgrid-flakiness.sh b/scripts/measure-testgrid-flakiness.sh index 6cde54187271..2f2a6f01cf12 100755 --- a/scripts/measure-testgrid-flakiness.sh +++ b/scripts/measure-testgrid-flakiness.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Measures test flakiness and create issues for flaky tests set -euo pipefail diff --git a/scripts/release.sh b/scripts/release.sh index 22f2fe0e178c..7436545ea4ac 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. set -o errexit set -o nounset diff --git a/scripts/release_mod.sh b/scripts/release_mod.sh index 0495feba2452..abc546c86db1 100755 --- a/scripts/release_mod.sh +++ b/scripts/release_mod.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Examples: diff --git a/scripts/sync_go_toolchain_directive.sh b/scripts/sync_go_toolchain_directive.sh index 643138e1d0a9..fb1abe5aff9b 100755 --- a/scripts/sync_go_toolchain_directive.sh +++ b/scripts/sync_go_toolchain_directive.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # This script looks at the version present in the .go-version file and treats # that to be the value of the toolchain directive that go should use. It then diff --git a/scripts/test.sh b/scripts/test.sh index 22b7eea5230b..8201a127bc4e 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # # Run all etcd tests # ./scripts/test.sh diff --git a/scripts/test_images.sh b/scripts/test_images.sh index f4f18a6940a7..11138824bdb0 100755 --- a/scripts/test_images.sh +++ b/scripts/test_images.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # http://redsymbol.net/articles/unofficial-bash-strict-mode/ set -euo pipefail diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index 0c5c2d28cd89..95f8070dee7a 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. set -euo pipefail diff --git a/scripts/test_utils.sh b/scripts/test_utils.sh index 5925fc7a09ea..ab914aa4928e 100644 --- a/scripts/test_utils.sh +++ b/scripts/test_utils.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + set -euo pipefail #### Convenient IO methods ##### diff --git a/scripts/update_dep.sh b/scripts/update_dep.sh index e76ecaff5c5a..bfabeb79db5b 100755 --- a/scripts/update_dep.sh +++ b/scripts/update_dep.sh @@ -1,5 +1,18 @@ #!/bin/bash - +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# # Usage: # ./scripts/update_dep.sh module version # or ./scripts/update_dep.sh module diff --git a/scripts/update_proto_annotations.sh b/scripts/update_proto_annotations.sh index 75089e772221..886c259b5ea6 100755 --- a/scripts/update_proto_annotations.sh +++ b/scripts/update_proto_annotations.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# # Updates etcd_version_annotations.txt based on state of annotations in proto files. # Developers can run this script to avoid manually updating etcd_version_annotations.txt. # Before running this script please ensure that fields/messages that you added are annotated with next etcd version. diff --git a/scripts/updatebom.sh b/scripts/updatebom.sh index a1de4a8763b2..e0d412e81ac0 100755 --- a/scripts/updatebom.sh +++ b/scripts/updatebom.sh @@ -1,4 +1,17 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. set -euo pipefail diff --git a/scripts/verify_genproto.sh b/scripts/verify_genproto.sh index a66875657cf1..42a9227a8d9d 100755 --- a/scripts/verify_genproto.sh +++ b/scripts/verify_genproto.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# # This scripts is automatically run by CI to prevent pull requests missing running genproto.sh # after changing *.proto file. diff --git a/scripts/verify_go_versions.sh b/scripts/verify_go_versions.sh index 11d34f92a515..f752b251621a 100755 --- a/scripts/verify_go_versions.sh +++ b/scripts/verify_go_versions.sh @@ -1,5 +1,18 @@ #!/usr/bin/env bash - +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# # This script verifies that the value of the toolchain directive in the # go.mod files always match that of the .go-version file to ensure that # we accidentally don't test and release with differing versions of Go. diff --git a/scripts/verify_golangci-lint_version.sh b/scripts/verify_golangci-lint_version.sh index 9040f1c09d1b..a4b0b14f20a3 100755 --- a/scripts/verify_golangci-lint_version.sh +++ b/scripts/verify_golangci-lint_version.sh @@ -1,6 +1,5 @@ #!/usr/bin/env bash - -# Copyright 2015 The etcd Authors +# Copyright 2025 The etcd Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/verify_proto_annotations.sh b/scripts/verify_proto_annotations.sh index 17da593baab4..6e5596fd153a 100755 --- a/scripts/verify_proto_annotations.sh +++ b/scripts/verify_proto_annotations.sh @@ -1,4 +1,18 @@ #!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# # Verifies proto annotations to ensure all new proto fields and messages are annotated by comparing it with etcd_version_annotations.txt file. # This scripts is automatically run by CI to prevent pull requests missing adding a proto annotation. From 4abdd145266bee7aac74ef344d293367b38b5b41 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Fri, 18 Jul 2025 20:18:12 +0000 Subject: [PATCH 0357/1068] Expose IsPrevKV/IsFragment/IsProgressNotify/IsCreatedNotify/IsFilterPut/IsFilterDelete & OpWatch Signed-off-by: Peter Chang --- client/v3/op.go | 20 +++++++++++++++++++- client/v3/watch.go | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/client/v3/op.go b/client/v3/op.go index 20cb34f5c3c9..b6b4ff720480 100644 --- a/client/v3/op.go +++ b/client/v3/op.go @@ -131,6 +131,24 @@ func (op Op) IsOptsWithFromKey() bool { return op.isOptsWithFromKey } func (op Op) IsOptsWithPrefix() bool { return op.isOptsWithPrefix } +// IsPrevKV returns whether WithPrevKV() is set. +func (op Op) IsPrevKV() bool { return op.prevKV } + +// IsFragment returns whether WithFragment() is set. +func (op Op) IsFragment() bool { return op.fragment } + +// IsProgressNotify returns whether WithProgressNotify() is set. +func (op Op) IsProgressNotify() bool { return op.progressNotify } + +// IsCreatedNotify returns whether WithCreatedNotify() is set. +func (op Op) IsCreatedNotify() bool { return op.createdNotify } + +// IsFilterPut returns whether WithFilterPut() is set. +func (op Op) IsFilterPut() bool { return op.filterPut } + +// IsFilterDelete returns whether WithFilterDelete() is set. +func (op Op) IsFilterDelete() bool { return op.filterDelete } + // MinModRev returns the operation's minimum modify revision. func (op Op) MinModRev() int64 { return op.minModRev } @@ -308,7 +326,7 @@ func OpTxn(cmps []Cmp, thenOps []Op, elseOps []Op) Op { return Op{t: tTxn, cmps: cmps, thenOps: thenOps, elseOps: elseOps} } -func opWatch(key string, opts ...OpOption) Op { +func OpWatch(key string, opts ...OpOption) Op { ret := Op{t: tRange, key: []byte(key)} ret.applyOpts(opts) switch { diff --git a/client/v3/watch.go b/client/v3/watch.go index 335aa3a35991..e4c156fee55d 100644 --- a/client/v3/watch.go +++ b/client/v3/watch.go @@ -296,7 +296,7 @@ func (w *watcher) newWatcherGRPCStream(inctx context.Context) *watchGRPCStream { // Watch posts a watch request to run() and waits for a new watcher channel func (w *watcher) Watch(ctx context.Context, key string, opts ...OpOption) WatchChan { - ow := opWatch(key, opts...) + ow := OpWatch(key, opts...) var filters []pb.WatchCreateRequest_FilterType if ow.filterPut { From 18924a4eeca930e3063083d7e651d775a82de7ee Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Wed, 16 Jul 2025 23:33:02 +0000 Subject: [PATCH 0358/1068] cache: enable Watch on arbitrary start_revision Signed-off-by: Peter Chang --- cache/cache.go | 17 ++- tests/integration/cache_test.go | 248 +++++++++++++++++++++++++------- 2 files changed, 212 insertions(+), 53 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index 00e54b4de314..1f42a0c8cef7 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -105,6 +105,18 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption op := clientv3.OpGet(key, opts...) startRev := op.Rev() + if startRev != 0 { + if oldest := c.demux.PeekOldest(); oldest != 0 && startRev < oldest { + ch := make(chan clientv3.WatchResponse, 1) + ch <- clientv3.WatchResponse{ + Canceled: true, + CompactRevision: startRev, + } + close(ch) + return ch + } + } + pred, err := c.validateWatch(key, opts...) if err != nil { ch := make(chan clientv3.WatchResponse, 1) @@ -229,11 +241,6 @@ func readWatchChannel( func (c *Cache) validateWatch(key string, opts ...clientv3.OpOption) (pred KeyPredicate, err error) { op := clientv3.OpGet(key, opts...) - startRev := op.Rev() - // TODO: Support watch on arbitrary startRev support once we guarantee gap-free replay. - if startRev != 0 { - return nil, ErrUnsupportedWatch - } startKey := []byte(key) endKey := op.RangeBytes() // nil = single key, {0}=FromKey, else explicit range diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 0bf62bfb5687..1254d23e805f 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -16,6 +16,7 @@ package integration import ( "context" + "errors" "fmt" "testing" "time" @@ -23,6 +24,7 @@ import ( "github.com/google/go-cmp/cmp" "go.etcd.io/etcd/api/v3/mvccpb" + "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" cache "go.etcd.io/etcd/cache/v3" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/tests/v3/framework/integration" @@ -56,7 +58,7 @@ func TestWatch(t *testing.T) { func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { ctx := t.Context() - event1PutFooA := &clientv3.Event{ + rev2PutFooA := &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/a"), @@ -66,7 +68,7 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { Version: 1, }, } - event2PutFooB := &clientv3.Event{ + rev3PutFooB := &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/b"), @@ -76,14 +78,14 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { Version: 1, }, } - event3DeleteFooA := &clientv3.Event{ + rev4DeleteFooA := &clientv3.Event{ Type: clientv3.EventTypeDelete, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/a"), ModRevision: 4, }, } - event4PutFooA := &clientv3.Event{ + rev5PutFooA := &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/a"), @@ -93,14 +95,14 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { Version: 1, }, } - event5DeleteFooB := &clientv3.Event{ + rev5DeleteFooB := &clientv3.Event{ Type: clientv3.EventTypeDelete, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/b"), ModRevision: 5, }, } - event6PutFooC := &clientv3.Event{ + rev6PutFooC := &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/c"), @@ -110,7 +112,7 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { Version: 1, }, } - event7PutFooBar := &clientv3.Event{ + rev7PutFooBar := &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/bar"), @@ -120,7 +122,7 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { Version: 1, }, } - event8PutFooBaz := &clientv3.Event{ + rev8PutFooBaz := &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/baz"), @@ -130,7 +132,7 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { Version: 1, }, } - event9PutFooYoo := &clientv3.Event{ + rev9PutFooYoo := &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/yoo"), @@ -140,7 +142,7 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { Version: 1, }, } - event10PutZoo := &clientv3.Event{ + rev10PutZoo := &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/zoo"), @@ -150,6 +152,43 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { Version: 1, }, } + rev11PutFooFuture := &clientv3.Event{ + Type: clientv3.EventTypePut, + Kv: &mvccpb.KeyValue{ + Key: []byte("/foo/future"), + Value: []byte("42"), + CreateRevision: 11, + ModRevision: 11, + Version: 1, + }, + } + rev12PutFooTx1 := &clientv3.Event{ + Type: clientv3.EventTypePut, + Kv: &mvccpb.KeyValue{ + Key: []byte("/foo/tx1"), + Value: []byte("a"), + CreateRevision: 12, + ModRevision: 12, + Version: 1, + }, + } + rev12DeleteFooFuture := &clientv3.Event{ + Type: clientv3.EventTypeDelete, + Kv: &mvccpb.KeyValue{ + Key: []byte("/foo/future"), + ModRevision: 12, + }, + } + rev12PutFooTx2 := &clientv3.Event{ + Type: clientv3.EventTypePut, + Kv: &mvccpb.KeyValue{ + Key: []byte("/foo/tx2"), + Value: []byte("b"), + CreateRevision: 12, + ModRevision: 12, + Version: 1, + }, + } tcs := []struct { name string @@ -160,98 +199,167 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { { name: "Watch single key existing /foo/c", key: "/foo/c", - opts: nil, - wantEvents: []*clientv3.Event{event6PutFooC}, + opts: []clientv3.OpOption{clientv3.WithRev(2)}, + wantEvents: []*clientv3.Event{rev6PutFooC}, }, { name: "Watch single key non‑existent /doesnotexist", key: "/doesnotexist", - opts: nil, + opts: []clientv3.OpOption{clientv3.WithRev(2)}, wantEvents: nil, }, { name: "Watch range empty", key: "", - opts: []clientv3.OpOption{clientv3.WithRange("")}, + opts: []clientv3.OpOption{clientv3.WithRange(""), clientv3.WithRev(2)}, wantEvents: nil, }, { name: "Watch range [/foo/a, /foo/b)", key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithRange("/foo/b")}, - wantEvents: []*clientv3.Event{event1PutFooA, event3DeleteFooA, event4PutFooA}, + opts: []clientv3.OpOption{clientv3.WithRange("/foo/b"), clientv3.WithRev(2)}, + wantEvents: []*clientv3.Event{rev2PutFooA, rev4DeleteFooA, rev5PutFooA}, }, { name: "Watch with prefix /foo/b", key: "/foo/b", - opts: []clientv3.OpOption{clientv3.WithPrefix()}, - wantEvents: []*clientv3.Event{event2PutFooB, event5DeleteFooB, event7PutFooBar, event8PutFooBaz}, + opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithRev(2)}, + wantEvents: []*clientv3.Event{rev3PutFooB, rev5DeleteFooB, rev7PutFooBar, rev8PutFooBaz}, }, { name: "Watch with prefix non-existent /doesnotexist", key: "/doesnotexist", - opts: []clientv3.OpOption{clientv3.WithPrefix()}, + opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithRev(2)}, wantEvents: nil, }, { name: "Watch with prefix empty string", key: "", - opts: []clientv3.OpOption{clientv3.WithPrefix()}, - wantEvents: []*clientv3.Event{event1PutFooA, event2PutFooB, event3DeleteFooA, event4PutFooA, event5DeleteFooB, event6PutFooC, event7PutFooBar, event8PutFooBaz, event9PutFooYoo, event10PutZoo}, + opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithRev(2)}, + wantEvents: []*clientv3.Event{rev2PutFooA, rev3PutFooB, rev4DeleteFooA, rev5PutFooA, rev5DeleteFooB, rev6PutFooC, rev7PutFooBar, rev8PutFooBaz, rev9PutFooYoo, rev10PutZoo, rev11PutFooFuture, rev12PutFooTx1, rev12DeleteFooFuture, rev12PutFooTx2}, }, { name: "Watch from key /foo/b", key: "/foo/b", - opts: []clientv3.OpOption{clientv3.WithFromKey()}, - wantEvents: []*clientv3.Event{event2PutFooB, event5DeleteFooB, event6PutFooC, event7PutFooBar, event8PutFooBaz, event9PutFooYoo, event10PutZoo}, + opts: []clientv3.OpOption{clientv3.WithFromKey(), clientv3.WithRev(2)}, + wantEvents: []*clientv3.Event{rev3PutFooB, rev5DeleteFooB, rev6PutFooC, rev7PutFooBar, rev8PutFooBaz, rev9PutFooYoo, rev10PutZoo, rev11PutFooFuture, rev12PutFooTx1, rev12DeleteFooFuture, rev12PutFooTx2}, }, { name: "Watch from empty key", key: "", - opts: []clientv3.OpOption{clientv3.WithFromKey()}, - wantEvents: []*clientv3.Event{event1PutFooA, event2PutFooB, event3DeleteFooA, event4PutFooA, event5DeleteFooB, event6PutFooC, event7PutFooBar, event8PutFooBaz, event9PutFooYoo, event10PutZoo}, + opts: []clientv3.OpOption{clientv3.WithFromKey(), clientv3.WithRev(2)}, + wantEvents: []*clientv3.Event{rev2PutFooA, rev3PutFooB, rev4DeleteFooA, rev5PutFooA, rev5DeleteFooB, rev6PutFooC, rev7PutFooBar, rev8PutFooBaz, rev9PutFooYoo, rev10PutZoo, rev11PutFooFuture, rev12PutFooTx1, rev12DeleteFooFuture, rev12PutFooTx2}, }, { name: "Watch from non-existent key /doesnotexist", key: "/doesnotexist", - opts: []clientv3.OpOption{clientv3.WithFromKey()}, - wantEvents: []*clientv3.Event{event1PutFooA, event2PutFooB, event3DeleteFooA, event4PutFooA, event5DeleteFooB, event6PutFooC, event7PutFooBar, event8PutFooBaz, event9PutFooYoo, event10PutZoo}, + opts: []clientv3.OpOption{clientv3.WithFromKey(), clientv3.WithRev(2)}, + wantEvents: []*clientv3.Event{rev2PutFooA, rev3PutFooB, rev4DeleteFooA, rev5PutFooA, rev5DeleteFooB, rev6PutFooC, rev7PutFooBar, rev8PutFooBaz, rev9PutFooYoo, rev10PutZoo, rev11PutFooFuture, rev12PutFooTx1, rev12DeleteFooFuture, rev12PutFooTx2}, + }, + { + name: "Watch from rev 4 with single key /foo/a", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRev(4)}, + wantEvents: []*clientv3.Event{rev4DeleteFooA, rev5PutFooA}, + }, + { + name: "Watch from rev 6 with single key /foo/a", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRev(6)}, + wantEvents: nil, + }, + { + name: "Watch from rev 5 with prefix /foo", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithRev(5)}, + wantEvents: []*clientv3.Event{ + rev5PutFooA, rev5DeleteFooB, rev6PutFooC, rev7PutFooBar, rev8PutFooBaz, rev9PutFooYoo, rev11PutFooFuture, rev12PutFooTx1, rev12DeleteFooFuture, rev12PutFooTx2, + }, + }, + { + name: "Watch from rev 10 with prefix /foo", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithRev(10)}, + wantEvents: []*clientv3.Event{ + rev11PutFooFuture, rev12PutFooTx1, rev12DeleteFooFuture, rev12PutFooTx2, + }, + }, + { + name: "Watch from rev 4 with range [/foo/a, /foo/c)", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/c"), clientv3.WithRev(4)}, + wantEvents: []*clientv3.Event{ + rev4DeleteFooA, rev5PutFooA, rev5DeleteFooB, rev7PutFooBar, rev8PutFooBaz, + }, + }, + { + name: "Latest‑revision watcher for /foo", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + wantEvents: []*clientv3.Event{rev11PutFooFuture, rev12PutFooTx1, rev12DeleteFooFuture, rev12PutFooTx2}, + }, + { + name: "Watch from rev 11 with single key /foo/future", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithRev(11), clientv3.WithPrefix()}, + wantEvents: []*clientv3.Event{rev11PutFooFuture, rev12PutFooTx1, rev12DeleteFooFuture, rev12PutFooTx2}, + }, + { + name: "Watch from rev 12 with txn prefix /foo", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithRev(12), clientv3.WithPrefix()}, + wantEvents: []*clientv3.Event{rev12PutFooTx1, rev12DeleteFooFuture, rev12PutFooTx2}, }, } - t.Log("Open test watchers") - watches := make([]clientv3.WatchChan, len(tcs)) - for i, tc := range tcs { - watches[i] = watcher.Watch(ctx, tc.key, tc.opts...) - } - t.Log("Setup data") - if _, err := kv.Put(ctx, string(event1PutFooA.Kv.Key), string(event1PutFooA.Kv.Value)); err != nil { + t.Log("Write the first batch of events rev 2-10") + if _, err := kv.Put(ctx, string(rev2PutFooA.Kv.Key), string(rev2PutFooA.Kv.Value)); err != nil { t.Fatalf("Put: %v", err) } - if _, err := kv.Put(ctx, string(event2PutFooB.Kv.Key), string(event2PutFooB.Kv.Value)); err != nil { + if _, err := kv.Put(ctx, string(rev3PutFooB.Kv.Key), string(rev3PutFooB.Kv.Value)); err != nil { t.Fatalf("Put: %v", err) } - if _, err := kv.Delete(ctx, string(event3DeleteFooA.Kv.Key)); err != nil { + if _, err := kv.Delete(ctx, string(rev4DeleteFooA.Kv.Key)); err != nil { t.Fatalf("Delete: %v", err) } - if _, err := kv.Txn(ctx).Then(clientv3.OpPut(string(event4PutFooA.Kv.Key), string(event4PutFooA.Kv.Value)), clientv3.OpDelete(string(event5DeleteFooB.Kv.Key))).Commit(); err != nil { + if _, err := kv.Txn(ctx).Then(clientv3.OpPut(string(rev5PutFooA.Kv.Key), string(rev5PutFooA.Kv.Value)), clientv3.OpDelete(string(rev5DeleteFooB.Kv.Key))).Commit(); err != nil { t.Fatalf("Txn: %v", err) } - if _, err := kv.Put(ctx, string(event6PutFooC.Kv.Key), string(event6PutFooC.Kv.Value)); err != nil { + if _, err := kv.Put(ctx, string(rev6PutFooC.Kv.Key), string(rev6PutFooC.Kv.Value)); err != nil { t.Fatalf("Put: %v", err) } - if _, err := kv.Put(ctx, string(event7PutFooBar.Kv.Key), string(event7PutFooBar.Kv.Value)); err != nil { + if _, err := kv.Put(ctx, string(rev7PutFooBar.Kv.Key), string(rev7PutFooBar.Kv.Value)); err != nil { t.Fatalf("Put: %v", err) } - if _, err := kv.Put(ctx, string(event8PutFooBaz.Kv.Key), string(event8PutFooBaz.Kv.Value)); err != nil { + if _, err := kv.Put(ctx, string(rev8PutFooBaz.Kv.Key), string(rev8PutFooBaz.Kv.Value)); err != nil { t.Fatalf("Put: %v", err) } - if _, err := kv.Put(ctx, string(event9PutFooYoo.Kv.Key), string(event9PutFooYoo.Kv.Value)); err != nil { + if _, err := kv.Put(ctx, string(rev9PutFooYoo.Kv.Key), string(rev9PutFooYoo.Kv.Value)); err != nil { t.Fatalf("Put: %v", err) } - if _, err := kv.Put(ctx, string(event10PutZoo.Kv.Key), string(event10PutZoo.Kv.Value)); err != nil { + if _, err := kv.Put(ctx, string(rev10PutZoo.Kv.Key), string(rev10PutZoo.Kv.Value)); err != nil { t.Fatalf("Put: %v", err) } + + t.Log("Open watches") + watches := make([]clientv3.WatchChan, len(tcs)) + for i, tc := range tcs { + watches[i] = watcher.Watch(ctx, tc.key, tc.opts...) + } + time.Sleep(50 * time.Millisecond) + + t.Log("Write the second batch of events rev 11‑12") + if _, err := kv.Put(ctx, string(rev11PutFooFuture.Kv.Key), string(rev11PutFooFuture.Kv.Value)); err != nil { + t.Fatalf("Put /foo/future: %v", err) + } + if _, err := kv.Txn(ctx).Then( + clientv3.OpPut(string(rev12PutFooTx1.Kv.Key), string(rev12PutFooTx1.Kv.Value)), + clientv3.OpDelete(string(rev12DeleteFooFuture.Kv.Key)), + clientv3.OpPut(string(rev12PutFooTx2.Kv.Key), string(rev12PutFooTx2.Kv.Value)), + ).Commit(); err != nil { + t.Fatalf("Txn rev12: %v", err) + } + t.Log("Validate") for i, tc := range tcs { i, tc := i, tc @@ -279,12 +387,6 @@ func TestCacheWithPrefix(t *testing.T) { opts []clientv3.OpOption expectCanceled bool }{ - { - name: "non‑zero start revision returns error", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithRev(123)}, - expectCanceled: true, - }, { name: "single key within prefix", key: "/foo/a", @@ -463,6 +565,56 @@ func TestCacheLaggingWatcher(t *testing.T) { } } +func TestCacheWatchOldRevisionCompacted(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + t.Cleanup(func() { clus.Terminate(t) }) + client := clus.Client(0) + ctx := t.Context() + + const window = 4 + c, err := cache.New(client, "", + cache.WithHistoryWindowSize(window), + cache.WithPerWatcherBufferSize(0), + cache.WithResyncInterval(10*time.Millisecond)) + if err != nil { + t.Fatalf("New(...): %v", err) + } + defer c.Close() + if err = c.WaitReady(ctx); err != nil { + t.Fatalf("cache not ready: %v", err) + } + + putResp, err := client.Put(ctx, "/old/key", "0") + if err != nil { + t.Fatalf("Put: %v", err) + } + oldRev := putResp.Header.Revision + + for i := 1; i < window*2; i++ { + if _, err = client.Put(ctx, fmt.Sprintf("/overflow/%d", i), "x"); err != nil { + t.Fatalf("Put overflow: %v", err) + } + } + + watchCtx, cancel := context.WithTimeout(ctx, 2*time.Second) + defer cancel() + ch := c.Watch(watchCtx, "/old/key", clientv3.WithRev(oldRev)) + + select { + case resp, ok := <-ch: + if !ok || !resp.Canceled { + t.Fatalf("expected canceled watch, got %+v closed=%v", resp, ok) + } + if resp.Err() == nil || (!errors.Is(resp.Err(), rpctypes.ErrCompacted) && + !errors.Is(resp.Err(), cache.ErrUnsupportedWatch)) { + t.Fatalf("expected ErrCompacted (or temporary ErrUnsupportedWatch), got %v", resp.Err()) + } + case <-watchCtx.Done(): + t.Fatal("watch did not cancel with compaction error within timeout") + } +} + func generateEvents(t *testing.T, client *clientv3.Client, prefix string, n int) { t.Helper() for i := 0; i < n; i++ { From 59470aedfa7e50aa2692eaaa16f4c181e2319b35 Mon Sep 17 00:00:00 2001 From: Kirill Trifonov Date: Wed, 2 Jul 2025 00:43:44 +0200 Subject: [PATCH 0359/1068] refactored memberlist method added unit tests made minor refactoring Signed-off-by: Kirill Trifonov --- etcdctl/ctlv3/command/printer_json.go | 66 ++++------------- etcdctl/ctlv3/command/printer_json_test.go | 86 ++++++++++++++++++++-- 2 files changed, 93 insertions(+), 59 deletions(-) diff --git a/etcdctl/ctlv3/command/printer_json.go b/etcdctl/ctlv3/command/printer_json.go index 6b2d16b8345f..f97d9ea2f325 100644 --- a/etcdctl/ctlv3/command/printer_json.go +++ b/etcdctl/ctlv3/command/printer_json.go @@ -19,8 +19,6 @@ import ( "fmt" "io" "os" - "strconv" - "strings" pb "go.etcd.io/etcd/api/v3/etcdserverpb" clientv3 "go.etcd.io/etcd/client/v3" @@ -75,14 +73,8 @@ func (p *jsonPrinter) EndpointHealth(r []epHealth) { printJSON(r) } func (p *jsonPrinter) EndpointStatus(r []epStatus) { printJSON(r) } func (p *jsonPrinter) EndpointHashKV(r []epHashKV) { printJSON(r) } -func (p *jsonPrinter) MemberList(r clientv3.MemberListResponse) { - if p.isHex { - printMemberListWithHexJSON(p.writer, r) - } else { - printJSON(r) - } -} -func (p *jsonPrinter) MemberAdd(r clientv3.MemberAddResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberAdd(r clientv3.MemberAddResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberList(r clientv3.MemberListResponse) { p.printJSON(r) } func printJSONTo(w io.Writer, v any) { b, err := json.Marshal(v) @@ -97,48 +89,6 @@ func printJSON(v any) { printJSONTo(os.Stdout, v) } -func printMemberListWithHexJSON(w io.Writer, r clientv3.MemberListResponse) { - var buffer strings.Builder - var b []byte - buffer.WriteString("{\"header\":{\"cluster_id\":\"") - b = strconv.AppendUint(nil, r.Header.ClusterId, 16) - buffer.Write(b) - buffer.WriteString("\",\"member_id\":\"") - b = strconv.AppendUint(nil, r.Header.MemberId, 16) - buffer.Write(b) - buffer.WriteString("\",\"raft_term\":") - b = strconv.AppendUint(nil, r.Header.RaftTerm, 10) - buffer.Write(b) - buffer.WriteByte('}') - for i := 0; i < len(r.Members); i++ { - if i == 0 { - buffer.WriteString(",\"members\":[{\"ID\":\"") - } else { - buffer.WriteString(",{\"ID\":\"") - } - b = strconv.AppendUint(nil, r.Members[i].ID, 16) - buffer.Write(b) - buffer.WriteString("\",\"name\":\"" + r.Members[i].Name + "\"," + "\"peerURLs\":") - b, err := json.Marshal(r.Members[i].PeerURLs) - if err != nil { - return - } - buffer.Write(b) - buffer.WriteString(",\"clientURLs\":") - b, err = json.Marshal(r.Members[i].ClientURLs) - if err != nil { - return - } - buffer.Write(b) - buffer.WriteByte('}') - if i == len(r.Members)-1 { - buffer.WriteString("]") - } - } - buffer.WriteString("}") - fmt.Fprintln(w, buffer.String()) -} - func (p *jsonPrinter) printJSON(v any) { var data any if !p.isHex { @@ -161,6 +111,18 @@ func (p *jsonPrinter) printJSON(v any) { Members: toHexMembers(r.Members), Alias: (*Alias)(&r), } + case clientv3.MemberListResponse: + type Alias clientv3.MemberListResponse + + data = &struct { + Header *HexResponseHeader `json:"header"` + Members []*HexMember `json:"members"` + *Alias + }{ + Header: (*HexResponseHeader)(r.Header), + Members: toHexMembers(r.Members), + Alias: (*Alias)(&r), + } default: data = v } diff --git a/etcdctl/ctlv3/command/printer_json_test.go b/etcdctl/ctlv3/command/printer_json_test.go index 98296e4f6512..cc47bb935844 100644 --- a/etcdctl/ctlv3/command/printer_json_test.go +++ b/etcdctl/ctlv3/command/printer_json_test.go @@ -114,9 +114,9 @@ func TestMemberAdd(t *testing.T) { require.NoErrorf(t, err, "failed to decode JSON") rawHeader, ok := got[keyHeader] - require.Truef(t, ok, "output does not contain %s field: %v", keyHeader, got) + require.Truef(t, ok, "output does not contain %q field: %v", keyHeader, got) header, ok := rawHeader.(map[string]any) - require.Truef(t, ok, "field %s is not map[string]any: %v", keyHeader, rawHeader) + require.Truef(t, ok, "field %q is not map[string]any: %v", keyHeader, rawHeader) if testGroup.isHex { assertHexFieldEqual(t, header, keyClusterID, tt.wantHexString) @@ -129,9 +129,9 @@ func TestMemberAdd(t *testing.T) { assertNumericFieldEqual(t, header, keyRevision, tt.wantDecimalNumber) rawMember, ok := got[keyMember] - require.Truef(t, ok, "output does not contain %s field: %v", keyMember, got) + require.Truef(t, ok, "output does not contain %q field: %v", keyMember, got) member, ok := rawMember.(map[string]any) - require.Truef(t, ok, "field %s is not map[string]any: %v", keyMember, rawMember) + require.Truef(t, ok, "field %q is not map[string]any: %v", keyMember, rawMember) if testGroup.isHex { assertHexFieldEqual(t, member, keyID, tt.wantHexString) @@ -140,13 +140,85 @@ func TestMemberAdd(t *testing.T) { } rawMembers, ok := got[keyMembers] - require.Truef(t, ok, "output does not contain %s field: %v", keyMembers, got) + require.Truef(t, ok, "output does not contain %q field: %v", keyMembers, got) members, ok := rawMembers.([]any) - require.Truef(t, ok, "field %s is not []any: %v", keyMembers, rawMembers) + require.Truef(t, ok, "field %q is not []any: %v", keyMembers, rawMembers) for _, rawMemberItem := range members { memberItem, ok := rawMemberItem.(map[string]any) - require.Truef(t, ok, "%s item is not map[string]any: %v", keyMembers, rawMemberItem) + require.Truef(t, ok, "%q item is not map[string]any: %v", keyMembers, rawMemberItem) + + if testGroup.isHex { + assertHexFieldEqual(t, memberItem, keyID, tt.wantHexString) + } else { + assertNumericFieldEqual(t, memberItem, keyID, tt.wantDecimalNumber) + } + } + }) + } + }) + } +} + +func TestMemberList(t *testing.T) { + tests := []struct { + name string + isHex bool + cases []testCase + }{ + {name: "decimal", isHex: false, cases: testCases}, + {name: "hex", isHex: true, cases: testCases}, + } + + for _, testGroup := range tests { + t.Run(testGroup.name, func(t *testing.T) { + var buffer bytes.Buffer + p := &jsonPrinter{writer: &buffer, isHex: testGroup.isHex} + + for _, tt := range testGroup.cases { + t.Run(fmt.Sprintf("number=%d", tt.number), func(t *testing.T) { + buffer.Reset() + decoder := json.NewDecoder(&buffer) + decoder.UseNumber() + + response := clientv3.MemberListResponse{ + Header: &pb.ResponseHeader{ + ClusterId: tt.number, + MemberId: tt.number, + Revision: int64(tt.number), + RaftTerm: tt.number, + }, + Members: []*pb.Member{{ID: tt.number}}, + } + p.MemberList(response) + + var got map[string]any + err := decoder.Decode(&got) + require.NoErrorf(t, err, "failed to decode JSON") + + rawHeader, ok := got[keyHeader] + require.Truef(t, ok, "output does not contain %q field: %v", keyHeader, got) + header, ok := rawHeader.(map[string]any) + require.Truef(t, ok, "field %q is not map[string]any: %v", keyHeader, rawHeader) + + if testGroup.isHex { + assertHexFieldEqual(t, header, keyClusterID, tt.wantHexString) + assertHexFieldEqual(t, header, keyMemberID, tt.wantHexString) + } else { + assertNumericFieldEqual(t, header, keyClusterID, tt.wantDecimalNumber) + assertNumericFieldEqual(t, header, keyMemberID, tt.wantDecimalNumber) + } + assertNumericFieldEqual(t, header, keyRaftTerm, tt.wantDecimalNumber) + assertNumericFieldEqual(t, header, keyRevision, tt.wantDecimalNumber) + + rawMembers, ok := got[keyMembers] + require.Truef(t, ok, "output does not contain %q field: %v", keyMembers, got) + members, ok := rawMembers.([]any) + require.Truef(t, ok, "field %q is not []any: %v", keyMembers, rawMembers) + + for _, rawMemberItem := range members { + memberItem, ok := rawMemberItem.(map[string]any) + require.Truef(t, ok, "%q item is not map[string]any: %v", keyMembers, rawMemberItem) if testGroup.isHex { assertHexFieldEqual(t, memberItem, keyID, tt.wantHexString) From 7952a83a1dac845603bcee9b3d8c91a55c57ea2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Jul 2025 19:28:38 +0000 Subject: [PATCH 0360/1068] build(deps): bump github/codeql-action from 3.29.2 to 3.29.3 --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.29.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 0d28ad53b13b..d73af216e490 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2 + uses: github/codeql-action/init@d6bbdef45e766d081b84a2def353b0055f728d3e # v3.29.3 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2 + uses: github/codeql-action/autobuild@d6bbdef45e766d081b84a2def353b0055f728d3e # v3.29.3 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2 + uses: github/codeql-action/analyze@d6bbdef45e766d081b84a2def353b0055f728d3e # v3.29.3 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 86be41871a76..de20fc0d9d91 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2 + uses: github/codeql-action/upload-sarif@d6bbdef45e766d081b84a2def353b0055f728d3e # v3.29.3 with: sarif_file: results.sarif From 766a93fb299ab7d6b614a3a083524db7f23a1059 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Tue, 22 Jul 2025 02:55:23 +0000 Subject: [PATCH 0361/1068] expose cancelReason so cache can validate unsupported watch Signed-off-by: Peter Chang --- client/v3/watch.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/v3/watch.go b/client/v3/watch.go index 335aa3a35991..a7f3bbf96d76 100644 --- a/client/v3/watch.go +++ b/client/v3/watch.go @@ -106,7 +106,7 @@ type WatchResponse struct { closeErr error // cancelReason is a reason of canceling watch - cancelReason string + CancelReason string } // IsCreate returns true if the event tells that the key is newly created. @@ -127,8 +127,8 @@ func (wr *WatchResponse) Err() error { case wr.CompactRevision != 0: return v3rpc.ErrCompacted case wr.Canceled: - if len(wr.cancelReason) != 0 { - return v3rpc.Error(status.Error(codes.FailedPrecondition, wr.cancelReason)) + if len(wr.CancelReason) != 0 { + return v3rpc.Error(status.Error(codes.FailedPrecondition, wr.CancelReason)) } return v3rpc.ErrFutureRev } @@ -723,7 +723,7 @@ func (w *watchGRPCStream) dispatchEvent(pbresp *pb.WatchResponse) bool { CompactRevision: pbresp.CompactRevision, Created: pbresp.Created, Canceled: pbresp.Canceled, - cancelReason: pbresp.CancelReason, + CancelReason: pbresp.CancelReason, } // watch IDs are zero indexed, so request notify watch responses are assigned a watch ID of InvalidWatchID to From f9453caf70cfc3f2621ff1bdf3cc353a444f8de3 Mon Sep 17 00:00:00 2001 From: Peter Date: Wed, 23 Jul 2025 17:28:36 +0200 Subject: [PATCH 0362/1068] cache: handle unsupported watch opts (#20363) Signed-off-by: Peter Chang --- cache/cache.go | 17 ++++++++---- tests/integration/cache_test.go | 48 +++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 5 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index 1f42a0c8cef7..ba3fb506d6e6 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -102,7 +102,7 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption return emptyWatchChan } - op := clientv3.OpGet(key, opts...) + op := clientv3.OpWatch(key, opts...) startRev := op.Rev() if startRev != 0 { @@ -117,10 +117,10 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption } } - pred, err := c.validateWatch(key, opts...) + pred, err := c.validateWatch(key, op) if err != nil { ch := make(chan clientv3.WatchResponse, 1) - ch <- clientv3.WatchResponse{Canceled: true} + ch <- clientv3.WatchResponse{Canceled: true, CancelReason: err.Error()} close(ch) return ch } @@ -239,8 +239,15 @@ func readWatchChannel( return nil } -func (c *Cache) validateWatch(key string, opts ...clientv3.OpOption) (pred KeyPredicate, err error) { - op := clientv3.OpGet(key, opts...) +func (c *Cache) validateWatch(key string, op clientv3.Op) (pred KeyPredicate, err error) { + if op.IsPrevKV() || + op.IsFragment() || + op.IsProgressNotify() || + op.IsCreatedNotify() || + op.IsFilterPut() || + op.IsFilterDelete() { + return nil, ErrUnsupportedWatch + } startKey := []byte(key) endKey := op.RangeBytes() // nil = single key, {0}=FromKey, else explicit range diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 2996b816b425..5f75662e39a3 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -18,6 +18,7 @@ import ( "context" "errors" "fmt" + "strings" "testing" "time" @@ -565,6 +566,53 @@ func TestCacheLaggingWatcher(t *testing.T) { } } +func TestCacheUnsupportedWatchOptions(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + t.Cleanup(func() { clus.Terminate(t) }) + client := clus.Client(0) + + c, err := cache.New(client, "", cache.WithHistoryWindowSize(1)) + if err != nil { + t.Fatalf("cache.New: %v", err) + } + defer c.Close() + if err := c.WaitReady(t.Context()); err != nil { + t.Fatalf("cache not ready: %v", err) + } + + unsupported := []struct { + name string + opt clientv3.OpOption + }{ + {"WithPrevKV", clientv3.WithPrevKV()}, + {"WithFragment", clientv3.WithFragment()}, + {"WithProgressNotify", clientv3.WithProgressNotify()}, + {"WithCreatedNotify", clientv3.WithCreatedNotify()}, + {"WithFilterPut", clientv3.WithFilterPut()}, + {"WithFilterDelete", clientv3.WithFilterDelete()}, + } + + for _, tc := range unsupported { + tc := tc + t.Run(tc.name, func(t *testing.T) { + ch := c.Watch(t.Context(), "foo", tc.opt) + + resp, ok := <-ch + if !ok { + t.Fatalf("channel closed without yielding a response") + } + if !resp.Canceled { + t.Errorf("expected Canceled=true, got %+v", resp) + } + if !strings.Contains(resp.Err().Error(), cache.ErrUnsupportedWatch.Error()) { + t.Errorf("expected ErrUnsupportedWatch text %q, got %v", + cache.ErrUnsupportedWatch.Error(), resp.Err()) + } + }) + } +} + func TestCacheWatchOldRevisionCompacted(t *testing.T) { integration.BeforeTest(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) From 34dc51fc1ab30ca64b5537451df7453b67cbdd0a Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Tue, 22 Jul 2025 20:17:02 +0000 Subject: [PATCH 0363/1068] modify the comment for the now public CancelReason Signed-off-by: Peter Chang --- client/v3/watch.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/v3/watch.go b/client/v3/watch.go index f864e2fafcc6..c68ea7d7e208 100644 --- a/client/v3/watch.go +++ b/client/v3/watch.go @@ -105,7 +105,7 @@ type WatchResponse struct { closeErr error - // cancelReason is a reason of canceling watch + // CancelReason is a reason of canceling watch CancelReason string } From de3e5f84b225b7d263cd209dbaa9483d5db89c69 Mon Sep 17 00:00:00 2001 From: Nont Date: Thu, 17 Jul 2025 22:36:59 -0500 Subject: [PATCH 0364/1068] Inject antithesis at verify.Verify Signed-off-by: Nont --- tests/antithesis/server/Dockerfile | 10 ++++++++++ tests/antithesis/server/inject/verify.patch | 22 +++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 tests/antithesis/server/inject/verify.patch diff --git a/tests/antithesis/server/Dockerfile b/tests/antithesis/server/Dockerfile index c9f435776342..1f2bb492ab76 100644 --- a/tests/antithesis/server/Dockerfile +++ b/tests/antithesis/server/Dockerfile @@ -6,6 +6,16 @@ FROM golang:$GO_VERSION # cloning etcd ARG REF=main RUN git clone --depth=1 https://github.com/etcd-io/etcd.git --branch=${REF} /etcd + +# replace verify with antithesis +WORKDIR /etcd/client/pkg/verify +COPY inject/verify.patch verify.patch +RUN if [ "${REF}" == "main" ]; then \ + git apply verify.patch; \ + fi +RUN rm verify.patch +WORKDIR /etcd/client/pkg +RUN go mod tidy WORKDIR /etcd # setup go mod diff --git a/tests/antithesis/server/inject/verify.patch b/tests/antithesis/server/inject/verify.patch new file mode 100644 index 000000000000..b0313c73409b --- /dev/null +++ b/tests/antithesis/server/inject/verify.patch @@ -0,0 +1,22 @@ +diff --git a/client/pkg/verify/verify.go b/client/pkg/verify/verify.go +index cb48d8ff0..095f890ec 100644 +--- a/client/pkg/verify/verify.go ++++ b/client/pkg/verify/verify.go +@@ -18,6 +18,8 @@ import ( + "fmt" + "os" + "strings" ++ ++ "github.com/antithesishq/antithesis-sdk-go/assert" + ) + + const envVerify = "ETCD_VERIFY" +@@ -69,7 +71,7 @@ func DisableVerifications() func() { + func Verify(msg string, f VerifyFunc) { + if IsVerificationEnabled(envVerifyValueAssert) { + ok, details := f() +- verifier(ok, msg, details) ++ assert.Always(ok, msg, details) + } + } + From 64d35b6b725ff048f2fa66eda550392cb831b925 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Wed, 23 Jul 2025 19:16:14 +0000 Subject: [PATCH 0365/1068] cache: rename ErrUnsupportedWatch, add ErrKeyRangeInvalid Signed-off-by: Peter Chang --- cache/cache.go | 19 ++++++++++++------- tests/integration/cache_test.go | 8 ++++---- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index ba3fb506d6e6..17e0f4136ef0 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -26,8 +26,13 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" ) -// TODO: add gap-free replay for arbitrary startRevs and drop this guard. -var ErrUnsupportedWatch = errors.New("cache: unsupported watch parameters") +var ( + // TODO: add gap-free replay for arbitrary startRevs and drop this guard. + // Returned when an option combination isn’t yet handled by the cache (e.g. WithPrevKV, WithProgressNotify for Watch(), WithCountOnly for Get()). + ErrUnsupportedRequest = errors.New("cache: unsupported request parameters") + // Returned when the requested key or key‑range is invalid (empty or reversed) or lies outside c.prefix. + ErrKeyRangeInvalid = errors.New("cache: invalid or out‑of‑range key range") +) // Cache buffers a single etcd Watch for a given key‐prefix and fan‑outs local watchers. type Cache struct { @@ -246,7 +251,7 @@ func (c *Cache) validateWatch(key string, op clientv3.Op) (pred KeyPredicate, er op.IsCreatedNotify() || op.IsFilterPut() || op.IsFilterDelete() { - return nil, ErrUnsupportedWatch + return nil, ErrUnsupportedRequest } startKey := []byte(key) @@ -271,25 +276,25 @@ func (c *Cache) validateWatchRange(startKey, endKey []byte) error { return nil } if bytes.Compare(startKey, prefixStart) < 0 || bytes.Compare(startKey, prefixEnd) >= 0 { - return ErrUnsupportedWatch + return ErrKeyRangeInvalid } return nil case isFromKey: if c.prefix != "" { - return ErrUnsupportedWatch + return ErrKeyRangeInvalid } return nil default: if bytes.Compare(endKey, startKey) <= 0 { - return ErrUnsupportedWatch + return ErrKeyRangeInvalid } if c.prefix == "" { return nil } if bytes.Compare(startKey, prefixStart) < 0 || bytes.Compare(endKey, prefixEnd) > 0 { - return ErrUnsupportedWatch + return ErrKeyRangeInvalid } return nil } diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 5f75662e39a3..0b244b7e176b 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -605,9 +605,9 @@ func TestCacheUnsupportedWatchOptions(t *testing.T) { if !resp.Canceled { t.Errorf("expected Canceled=true, got %+v", resp) } - if !strings.Contains(resp.Err().Error(), cache.ErrUnsupportedWatch.Error()) { + if !strings.Contains(resp.Err().Error(), cache.ErrUnsupportedRequest.Error()) { t.Errorf("expected ErrUnsupportedWatch text %q, got %v", - cache.ErrUnsupportedWatch.Error(), resp.Err()) + cache.ErrUnsupportedRequest.Error(), resp.Err()) } }) } @@ -655,8 +655,8 @@ func TestCacheWatchOldRevisionCompacted(t *testing.T) { t.Fatalf("expected canceled watch, got %+v closed=%v", resp, ok) } if resp.Err() == nil || (!errors.Is(resp.Err(), rpctypes.ErrCompacted) && - !errors.Is(resp.Err(), cache.ErrUnsupportedWatch)) { - t.Fatalf("expected ErrCompacted (or temporary ErrUnsupportedWatch), got %v", resp.Err()) + !errors.Is(resp.Err(), cache.ErrUnsupportedRequest)) { + t.Fatalf("expected ErrCompacted (or temporary ErrUnsupportedRequest), got %v", resp.Err()) } case <-watchCtx.Done(): t.Fatal("watch did not cancel with compaction error within timeout") From afa45be384ad1312c4608cc9b62ac3c7427d8d46 Mon Sep 17 00:00:00 2001 From: Kirill Trifonov Date: Wed, 23 Jul 2025 13:39:56 +0200 Subject: [PATCH 0366/1068] refactored printer_json_test.go Signed-off-by: Kirill Trifonov --- etcdctl/ctlv3/command/printer_json_test.go | 129 +++++++++------------ 1 file changed, 52 insertions(+), 77 deletions(-) diff --git a/etcdctl/ctlv3/command/printer_json_test.go b/etcdctl/ctlv3/command/printer_json_test.go index cc47bb935844..4bb0d8ab68db 100644 --- a/etcdctl/ctlv3/command/printer_json_test.go +++ b/etcdctl/ctlv3/command/printer_json_test.go @@ -63,12 +63,57 @@ func assertHexFieldEqual(t *testing.T, obj map[string]any, key string, want stri assert.Equalf(t, want, str, "unexpected value for hex field %q", key) } +func assertHeader(t *testing.T, testGroup *testScenario, tt *testCase, got map[string]any) { + rawHeader, ok := got[keyHeader] + require.Truef(t, ok, "output does not contain %q field: %v", keyHeader, got) + header, ok := rawHeader.(map[string]any) + require.Truef(t, ok, "field %q is not map[string]any: %v", keyHeader, rawHeader) + + if testGroup.isHex { + assertHexFieldEqual(t, header, keyClusterID, tt.wantHexString) + assertHexFieldEqual(t, header, keyMemberID, tt.wantHexString) + } else { + assertNumericFieldEqual(t, header, keyClusterID, tt.wantDecimalNumber) + assertNumericFieldEqual(t, header, keyMemberID, tt.wantDecimalNumber) + } + assertNumericFieldEqual(t, header, keyRaftTerm, tt.wantDecimalNumber) + assertNumericFieldEqual(t, header, keyRevision, tt.wantDecimalNumber) +} + +func assertMember(t *testing.T, testGroup *testScenario, tt *testCase, rawMember any) { + member, ok := rawMember.(map[string]any) + require.Truef(t, ok, "field %q is not map[string]any: %v", keyMember, rawMember) + + if testGroup.isHex { + assertHexFieldEqual(t, member, keyID, tt.wantHexString) + } else { + assertNumericFieldEqual(t, member, keyID, tt.wantDecimalNumber) + } +} + +func assertMembers(t *testing.T, testGroup *testScenario, tt *testCase, got map[string]any) { + rawMembers, ok := got[keyMembers] + require.Truef(t, ok, "output does not contain %q field: %v", keyMembers, got) + members, ok := rawMembers.([]any) + require.Truef(t, ok, "field %q is not []any: %v", keyMembers, rawMembers) + + for _, rawMember := range members { + assertMember(t, testGroup, tt, rawMember) + } +} + type testCase struct { number uint64 wantHexString string wantDecimalNumber int64 } +type testScenario struct { + name string + isHex bool + cases []testCase +} + var testCases = []testCase{ {1, "1", 1}, {100, "64", 100}, @@ -77,11 +122,7 @@ var testCases = []testCase{ } func TestMemberAdd(t *testing.T) { - tests := []struct { - name string - isHex bool - cases []testCase - }{ + tests := []testScenario{ {name: "decimal", isHex: false, cases: testCases}, {name: "hex", isHex: true, cases: testCases}, } @@ -113,47 +154,13 @@ func TestMemberAdd(t *testing.T) { err := decoder.Decode(&got) require.NoErrorf(t, err, "failed to decode JSON") - rawHeader, ok := got[keyHeader] - require.Truef(t, ok, "output does not contain %q field: %v", keyHeader, got) - header, ok := rawHeader.(map[string]any) - require.Truef(t, ok, "field %q is not map[string]any: %v", keyHeader, rawHeader) - - if testGroup.isHex { - assertHexFieldEqual(t, header, keyClusterID, tt.wantHexString) - assertHexFieldEqual(t, header, keyMemberID, tt.wantHexString) - } else { - assertNumericFieldEqual(t, header, keyClusterID, tt.wantDecimalNumber) - assertNumericFieldEqual(t, header, keyMemberID, tt.wantDecimalNumber) - } - assertNumericFieldEqual(t, header, keyRaftTerm, tt.wantDecimalNumber) - assertNumericFieldEqual(t, header, keyRevision, tt.wantDecimalNumber) + assertHeader(t, &testGroup, &tt, got) rawMember, ok := got[keyMember] require.Truef(t, ok, "output does not contain %q field: %v", keyMember, got) - member, ok := rawMember.(map[string]any) - require.Truef(t, ok, "field %q is not map[string]any: %v", keyMember, rawMember) - - if testGroup.isHex { - assertHexFieldEqual(t, member, keyID, tt.wantHexString) - } else { - assertNumericFieldEqual(t, member, keyID, tt.wantDecimalNumber) - } + assertMember(t, &testGroup, &tt, rawMember) - rawMembers, ok := got[keyMembers] - require.Truef(t, ok, "output does not contain %q field: %v", keyMembers, got) - members, ok := rawMembers.([]any) - require.Truef(t, ok, "field %q is not []any: %v", keyMembers, rawMembers) - - for _, rawMemberItem := range members { - memberItem, ok := rawMemberItem.(map[string]any) - require.Truef(t, ok, "%q item is not map[string]any: %v", keyMembers, rawMemberItem) - - if testGroup.isHex { - assertHexFieldEqual(t, memberItem, keyID, tt.wantHexString) - } else { - assertNumericFieldEqual(t, memberItem, keyID, tt.wantDecimalNumber) - } - } + assertMembers(t, &testGroup, &tt, got) }) } }) @@ -161,11 +168,7 @@ func TestMemberAdd(t *testing.T) { } func TestMemberList(t *testing.T) { - tests := []struct { - name string - isHex bool - cases []testCase - }{ + tests := []testScenario{ {name: "decimal", isHex: false, cases: testCases}, {name: "hex", isHex: true, cases: testCases}, } @@ -196,36 +199,8 @@ func TestMemberList(t *testing.T) { err := decoder.Decode(&got) require.NoErrorf(t, err, "failed to decode JSON") - rawHeader, ok := got[keyHeader] - require.Truef(t, ok, "output does not contain %q field: %v", keyHeader, got) - header, ok := rawHeader.(map[string]any) - require.Truef(t, ok, "field %q is not map[string]any: %v", keyHeader, rawHeader) - - if testGroup.isHex { - assertHexFieldEqual(t, header, keyClusterID, tt.wantHexString) - assertHexFieldEqual(t, header, keyMemberID, tt.wantHexString) - } else { - assertNumericFieldEqual(t, header, keyClusterID, tt.wantDecimalNumber) - assertNumericFieldEqual(t, header, keyMemberID, tt.wantDecimalNumber) - } - assertNumericFieldEqual(t, header, keyRaftTerm, tt.wantDecimalNumber) - assertNumericFieldEqual(t, header, keyRevision, tt.wantDecimalNumber) - - rawMembers, ok := got[keyMembers] - require.Truef(t, ok, "output does not contain %q field: %v", keyMembers, got) - members, ok := rawMembers.([]any) - require.Truef(t, ok, "field %q is not []any: %v", keyMembers, rawMembers) - - for _, rawMemberItem := range members { - memberItem, ok := rawMemberItem.(map[string]any) - require.Truef(t, ok, "%q item is not map[string]any: %v", keyMembers, rawMemberItem) - - if testGroup.isHex { - assertHexFieldEqual(t, memberItem, keyID, tt.wantHexString) - } else { - assertNumericFieldEqual(t, memberItem, keyID, tt.wantDecimalNumber) - } - } + assertHeader(t, &testGroup, &tt, got) + assertMembers(t, &testGroup, &tt, got) }) } }) From 50f22e974155afeada89fc2fefa9daa2cccdc36d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Jul 2025 19:44:53 +0000 Subject: [PATCH 0367/1068] build(deps): bump antithesishq/antithesis-trigger-action from 0.8 to 0.9 --- updated-dependencies: - dependency-name: antithesishq/antithesis-trigger-action dependency-version: '0.9' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index ad0938270528..860c73139f8f 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -89,7 +89,7 @@ jobs: docker push $IMAGE - name: Run Antithesis Tests - uses: antithesishq/antithesis-trigger-action@b7d0c9d1d9316bd4de73a44144c56636ea3a64ba # main commit on Mar 13, 2025 + uses: antithesishq/antithesis-trigger-action@6c0a27302c0a3cd97d87d40bd6704e673abed4bb # main commit on Mar 13, 2025 with: notebook_name: etcd tenant: linuxfoundation From d6e1040eb51f47735bf34aab05dc1d1a63e09e69 Mon Sep 17 00:00:00 2001 From: joshjms Date: Mon, 21 Jul 2025 20:59:47 +0800 Subject: [PATCH 0368/1068] .github/workflows: enable antithesis nightly workflow Signed-off-by: joshjms --- .github/workflows/antithesis-test.yml | 35 +++++++++++---------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index ad0938270528..4871ebd74b1c 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -2,43 +2,36 @@ name: Build and trigger Antithesis exploration on: - # Disabled as discussed in https://github.com/etcd-io/etcd/pull/19750#issuecomment-2809840402 # pull_request: # branches: [main] - # schedule: - # - cron: "0 0 * * *" # run every day at midnight + schedule: + - cron: "0 0 * * *" # run every day at midnight workflow_dispatch: inputs: test: description: 'Test name' required: false - default: 'etcd nightly antithesis run' type: string duration: description: 'Duration (exploration hours)' required: true type: int - default: 12 description: description: 'Description (avoid quotes, please!)' required: true type: string - default: "etcd nightly antithesis run" etcd_ref: description: 'etcd version to build etcd-server from' required: false type: string - default: 'release-3.5' email: description: 'Additional email notification recipient (separate with ;)' required: true type: string - default: "" cfg_node_count: description: 'Number of nodes in the etcd cluster' required: false type: int - default: 3 # Declare default permissions as read only. permissions: read-all @@ -52,7 +45,7 @@ jobs: runs-on: ubuntu-latest environment: Antithesis env: - CFG_NODE_COUNT: ${{ inputs.cfg_node_count }} + CFG_NODE_COUNT: ${{ inputs.cfg_node_count || 3 }} steps: - name: Checkout the code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -67,8 +60,8 @@ jobs: - name: Build and push config image working-directory: ./tests/antithesis run: | - make antithesis-build-config-image IMAGE_TAG=${{ inputs.etcd_ref }}_${{ github.sha }} - export IMAGE="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:${{ inputs.etcd_ref }}_${{ github.sha }}" + make antithesis-build-config-image IMAGE_TAG=${{ inputs.etcd_ref || 'latest' }}_${{ github.sha }} + export IMAGE="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:${{ inputs.etcd_ref || 'latest' }}_${{ github.sha }}" docker tag etcd-config:latest $IMAGE docker push $IMAGE @@ -83,8 +76,8 @@ jobs: - name: Build and push etcd image working-directory: ./tests/antithesis run: | - make antithesis-build-etcd-image REF=${{ inputs.etcd_ref }} - export IMAGE="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:${{ inputs.etcd_ref }}_${{ github.sha }}" + make antithesis-build-etcd-image REF=${{ inputs.etcd_ref || 'latest' }} + export IMAGE="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:${{ inputs.etcd_ref || 'latest' }}_${{ github.sha }}" docker tag etcd-server:latest $IMAGE docker push $IMAGE @@ -96,11 +89,11 @@ jobs: username: ${{ secrets.ANTITHESIS_WEBHOOK_USERNAME }} password: ${{ secrets.ANTITHESIS_WEBHOOK_PASSWORD }} github_token: ${{ secrets.GH_PAT }} - config_image: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:${{ inputs.etcd_ref }}_${{ github.sha }} - images: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-client:${{ inputs.etcd_ref }}_${{ github.sha }};us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-server:${{ inputs.etcd_ref }}_${{ github.sha }};docker.io/library/ubuntu:latest;us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:${{ inputs.etcd_ref }}_${{ github.sha }} - description: ${{ inputs.description }} - email_recipients: ${{ inputs.email }} - test_name: ${{ inputs.test }} + config_image: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:${{ inputs.etcd_ref || 'latest' }}_${{ github.sha }} + images: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-client:${{ inputs.etcd_ref || 'latest' }}_${{ github.sha }};us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-server:${{ inputs.etcd_ref || 'latest' }}_${{ github.sha }};docker.io/library/ubuntu:latest;us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:${{ inputs.etcd_ref || 'latest' }}_${{ github.sha }} + description: ${{ inputs.description || 'etcd nightly antithesis run' }} + email_recipients: ${{ inputs.email || 'siarkowicz@google.com' }} + test_name: ${{ inputs.test || 'etcd nightly antithesis run' }} additional_parameters: |- - custom.duration = ${{ inputs.duration }} - antithesis.source = ${{ inputs.etcd_ref }} + custom.duration = ${{ inputs.duration || 12 }} + antithesis.source = ${{ inputs.etcd_ref || 'latest' }} From 78aabcee63b588a356caead3621c69fe1118bd82 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 15 Jul 2025 10:58:19 +0200 Subject: [PATCH 0369/1068] Add raft events to OTEL tracing Signed-off-by: Aleksander Mistewicz --- server/etcdserver/v3_server.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 4c1b101718a0..79293e4d204f 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -818,6 +818,7 @@ func (s *EtcdServer) RoleDelete(ctx context.Context, r *pb.AuthRoleDeleteRequest func (s *EtcdServer) raftRequestOnce(ctx context.Context, r pb.InternalRaftRequest) (proto.Message, error) { result, err := s.processInternalRaftRequestOnce(ctx, r) if err != nil { + trace.SpanFromContext(ctx).RecordError(err) return nil, err } if result.Err != nil { @@ -906,6 +907,8 @@ func (s *EtcdServer) processInternalRaftRequestOnce(ctx context.Context, r pb.In defer cancel() start := time.Now() + span := trace.SpanFromContext(ctx) + span.AddEvent("Send raft proposal") err = s.r.Propose(cctx, data) if err != nil { proposalsFailed.Inc() @@ -917,6 +920,7 @@ func (s *EtcdServer) processInternalRaftRequestOnce(ctx context.Context, r pb.In select { case x := <-ch: + span.AddEvent("Receive raft result") return x.(*apply2.Result), nil case <-cctx.Done(): proposalsFailed.Inc() From d2fbc457350be593c55d4a19caea472d6527daa6 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 22 Jul 2025 17:12:32 +0200 Subject: [PATCH 0370/1068] Add OTEL tracing to Put and DeleteRange Signed-off-by: Aleksander Mistewicz --- server/etcdserver/v3_server.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 79293e4d204f..9e50ca60bc31 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -151,6 +151,12 @@ func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRe } func (s *EtcdServer) Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error) { + var span trace.Span + ctx, span = traceutil.Tracer.Start(ctx, "put", trace.WithAttributes( + attribute.String("key", string(r.GetKey())), + )) + defer span.End() + ctx = context.WithValue(ctx, traceutil.StartTimeKey{}, time.Now()) resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{Put: r}) if err != nil { @@ -160,6 +166,13 @@ func (s *EtcdServer) Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse } func (s *EtcdServer) DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error) { + var span trace.Span + ctx, span = traceutil.Tracer.Start(ctx, "delete_range", trace.WithAttributes( + attribute.String("range_begin", string(r.GetKey())), + attribute.String("range_end", string(r.GetRangeEnd())), + )) + defer span.End() + resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{DeleteRange: r}) if err != nil { return nil, err From d275b7d331da8ff0892c73cc1f5f182b1043bc47 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Wed, 23 Jul 2025 15:23:06 +0200 Subject: [PATCH 0371/1068] Add OTEL tracing to Compact This cover all methods of RaftKV interface. Signed-off-by: Aleksander Mistewicz --- server/etcdserver/v3_server.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 9e50ca60bc31..35c9b70529ac 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -244,6 +244,13 @@ func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse } func (s *EtcdServer) Compact(ctx context.Context, r *pb.CompactionRequest) (*pb.CompactionResponse, error) { + var span trace.Span + ctx, span = traceutil.Tracer.Start(ctx, "compact", trace.WithAttributes( + attribute.Bool("is_physical", r.GetPhysical()), + attribute.Int64("rev", r.GetRevision()), + )) + defer span.End() + startTime := time.Now() ctx, trace := traceutil.EnsureTrace(ctx, s.Logger(), "compact") result, err := s.processInternalRaftRequestOnce(ctx, pb.InternalRaftRequest{Compaction: r}) From fd1fedb39879d5becec67d39d49d8eb2155d7288 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Wed, 23 Jul 2025 21:00:32 +0100 Subject: [PATCH 0372/1068] Check promotion against v2store when updating v2store Signed-off-by: Benjamin Wang --- server/etcdserver/api/membership/cluster.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/etcdserver/api/membership/cluster.go b/server/etcdserver/api/membership/cluster.go index 68369f60c449..48ee71b79614 100644 --- a/server/etcdserver/api/membership/cluster.go +++ b/server/etcdserver/api/membership/cluster.go @@ -508,8 +508,9 @@ func (c *RaftCluster) PromoteMember(id types.ID, shouldApplyV3 ShouldApplyV3) { c.Lock() defer c.Unlock() - if _, ok := c.members[id]; ok { - m := *(c.members[id]) + membersMap, _ := membersFromStore(c.lg, c.v2store) + if _, ok := membersMap[id]; ok { + m := *(membersMap[id]) m.RaftAttributes.IsLearner = false mustUpdateMemberInStore(c.lg, c.v2store, &m) } else { From d4ea190fd418adec44a2f68ecff5ffe4d67b8287 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Wed, 23 Jul 2025 15:24:44 +0200 Subject: [PATCH 0373/1068] Add keys_only to OTEL span in range Kubernetes will start using Range with KeysOnly set in 1.34: https://github.com/kubernetes/kubernetes/pull/132355 Signed-off-by: Aleksander Mistewicz --- server/etcdserver/v3_server.go | 1 + 1 file changed, 1 insertion(+) diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 35c9b70529ac..04833bce3b85 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -110,6 +110,7 @@ func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRe attribute.Int64("rev", r.GetRevision()), attribute.Int64("limit", r.GetLimit()), attribute.Bool("count_only", r.GetCountOnly()), + attribute.Bool("keys_only", r.GetKeysOnly()), )) defer span.End() From 5192e49627d08ac27635400eaa2524ea59f37032 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Thu, 24 Jul 2025 16:11:47 +0000 Subject: [PATCH 0374/1068] cache: rename validateWatchRange as validateRequestRange Signed-off-by: Peter Chang --- cache/cache.go | 4 ++-- cache/cache_test.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index ba3fb506d6e6..9a7b72874002 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -252,13 +252,13 @@ func (c *Cache) validateWatch(key string, op clientv3.Op) (pred KeyPredicate, er startKey := []byte(key) endKey := op.RangeBytes() // nil = single key, {0}=FromKey, else explicit range - if err := c.validateWatchRange(startKey, endKey); err != nil { + if err := c.validateRequestRange(startKey, endKey); err != nil { return nil, err } return KeyPredForRange(startKey, endKey), nil } -func (c *Cache) validateWatchRange(startKey, endKey []byte) error { +func (c *Cache) validateRequestRange(startKey, endKey []byte) error { prefixStart := []byte(c.prefix) prefixEnd := []byte(clientv3.GetPrefixRangeEnd(c.prefix)) diff --git a/cache/cache_test.go b/cache/cache_test.go index 356350783cad..2ff96c946863 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -381,7 +381,7 @@ func TestValidateWatchRange(t *testing.T) { t.Run(c.name, func(t *testing.T) { dummyCache := &Cache{prefix: c.cachePrefix} op := clientv3.OpGet(c.watchKey, c.opts...) - err := dummyCache.validateWatchRange([]byte(c.watchKey), op.RangeBytes()) + err := dummyCache.validateRequestRange([]byte(c.watchKey), op.RangeBytes()) if gotErr := err != nil; gotErr != c.wantErr { t.Fatalf("validateWatchRange(%q, %q, %v) err=%v, wantErr=%v", c.cachePrefix, c.watchKey, c.opts, err, c.wantErr) From a5829228541996f2ed1447dde31ac9a8abc29fd7 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Thu, 24 Jul 2025 16:11:47 +0000 Subject: [PATCH 0375/1068] cache: rename validateWatchRange as validateRequestRange Signed-off-by: Peter Chang --- cache/cache.go | 4 ++-- cache/cache_test.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index ba3fb506d6e6..200d561f87df 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -252,13 +252,13 @@ func (c *Cache) validateWatch(key string, op clientv3.Op) (pred KeyPredicate, er startKey := []byte(key) endKey := op.RangeBytes() // nil = single key, {0}=FromKey, else explicit range - if err := c.validateWatchRange(startKey, endKey); err != nil { + if err := c.validateRange(startKey, endKey); err != nil { return nil, err } return KeyPredForRange(startKey, endKey), nil } -func (c *Cache) validateWatchRange(startKey, endKey []byte) error { +func (c *Cache) validateRange(startKey, endKey []byte) error { prefixStart := []byte(c.prefix) prefixEnd := []byte(clientv3.GetPrefixRangeEnd(c.prefix)) diff --git a/cache/cache_test.go b/cache/cache_test.go index 356350783cad..6321a13560aa 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -381,7 +381,7 @@ func TestValidateWatchRange(t *testing.T) { t.Run(c.name, func(t *testing.T) { dummyCache := &Cache{prefix: c.cachePrefix} op := clientv3.OpGet(c.watchKey, c.opts...) - err := dummyCache.validateWatchRange([]byte(c.watchKey), op.RangeBytes()) + err := dummyCache.validateRange([]byte(c.watchKey), op.RangeBytes()) if gotErr := err != nil; gotErr != c.wantErr { t.Fatalf("validateWatchRange(%q, %q, %v) err=%v, wantErr=%v", c.cachePrefix, c.watchKey, c.opts, err, c.wantErr) From 4811fef23e229532a0ad2f3d8b9c0a848461b2a8 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Thu, 24 Jul 2025 15:09:45 +0200 Subject: [PATCH 0376/1068] test: Add missing keys_only attribute to tracing test Signed-off-by: Aleksander Mistewicz --- tests/integration/tracing_test.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/integration/tracing_test.go b/tests/integration/tracing_test.go index 0af0042adccc..082ea3e8463f 100644 --- a/tests/integration/tracing_test.go +++ b/tests/integration/tracing_test.go @@ -88,6 +88,10 @@ func TestTracing(t *testing.T) { Key: "count_only", Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_BoolValue{BoolValue: true}}, }, + { + Key: "keys_only", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_BoolValue{BoolValue: false}}, + }, }, }, }, From 1ad12c34bd1718e561a587ec05bcec346898954a Mon Sep 17 00:00:00 2001 From: joshjms Date: Sat, 26 Jul 2025 00:04:39 +0800 Subject: [PATCH 0377/1068] .github/workflows: fix antithesis nightly workflow Signed-off-by: joshjms --- .github/workflows/antithesis-test.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 4871ebd74b1c..075c57eaa863 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -60,8 +60,8 @@ jobs: - name: Build and push config image working-directory: ./tests/antithesis run: | - make antithesis-build-config-image IMAGE_TAG=${{ inputs.etcd_ref || 'latest' }}_${{ github.sha }} - export IMAGE="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:${{ inputs.etcd_ref || 'latest' }}_${{ github.sha }}" + make antithesis-build-config-image IMAGE_TAG=${{ inputs.etcd_ref || 'main' }}_${{ github.sha }} + export IMAGE="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-config:${{ inputs.etcd_ref || 'main' }}_${{ github.sha }}" docker tag etcd-config:latest $IMAGE docker push $IMAGE @@ -69,15 +69,15 @@ jobs: working-directory: ./tests/antithesis run: | make antithesis-build-client-docker-image - export IMAGE="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:${{ inputs.etcd_ref }}_${{ github.sha }}" + export IMAGE="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-client:${{ inputs.etcd_ref || 'main' }}_${{ github.sha }}" docker tag etcd-client:latest $IMAGE docker push $IMAGE - name: Build and push etcd image working-directory: ./tests/antithesis run: | - make antithesis-build-etcd-image REF=${{ inputs.etcd_ref || 'latest' }} - export IMAGE="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:${{ inputs.etcd_ref || 'latest' }}_${{ github.sha }}" + make antithesis-build-etcd-image REF=${{ inputs.etcd_ref || 'main' }} + export IMAGE="${{ env.REGISTRY }}/${{ env.REPOSITORY }}/etcd-server:${{ inputs.etcd_ref || 'main' }}_${{ github.sha }}" docker tag etcd-server:latest $IMAGE docker push $IMAGE @@ -89,11 +89,11 @@ jobs: username: ${{ secrets.ANTITHESIS_WEBHOOK_USERNAME }} password: ${{ secrets.ANTITHESIS_WEBHOOK_PASSWORD }} github_token: ${{ secrets.GH_PAT }} - config_image: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:${{ inputs.etcd_ref || 'latest' }}_${{ github.sha }} - images: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-client:${{ inputs.etcd_ref || 'latest' }}_${{ github.sha }};us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-server:${{ inputs.etcd_ref || 'latest' }}_${{ github.sha }};docker.io/library/ubuntu:latest;us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:${{ inputs.etcd_ref || 'latest' }}_${{ github.sha }} + config_image: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:${{ inputs.etcd_ref || 'main' }}_${{ github.sha }} + images: us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-client:${{ inputs.etcd_ref || 'main' }}_${{ github.sha }};us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-server:${{ inputs.etcd_ref || 'main' }}_${{ github.sha }};docker.io/library/ubuntu:latest;us-central1-docker.pkg.dev/molten-verve-216720/linuxfoundation-repository/etcd-config:${{ inputs.etcd_ref || 'main' }}_${{ github.sha }} description: ${{ inputs.description || 'etcd nightly antithesis run' }} email_recipients: ${{ inputs.email || 'siarkowicz@google.com' }} test_name: ${{ inputs.test || 'etcd nightly antithesis run' }} additional_parameters: |- custom.duration = ${{ inputs.duration || 12 }} - antithesis.source = ${{ inputs.etcd_ref || 'latest' }} + antithesis.source = ${{ inputs.etcd_ref || 'main' }} From 6c1d585da7a8989146983919fc6d915ebe1abe30 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Thu, 24 Jul 2025 16:03:05 +0000 Subject: [PATCH 0378/1068] expose IsCountOnly so that cache can validate unsupported get flags Signed-off-by: Peter Chang --- client/v3/op.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/v3/op.go b/client/v3/op.go index b6b4ff720480..33e2c024f892 100644 --- a/client/v3/op.go +++ b/client/v3/op.go @@ -127,6 +127,9 @@ func (op Op) IsKeysOnly() bool { return op.keysOnly } // IsCountOnly returns whether countOnly is set. func (op Op) IsCountOnly() bool { return op.countOnly } +// IsSortSet returns true if WithSort is set. +func (op Op) IsSortSet() bool { return op.sort != nil } + func (op Op) IsOptsWithFromKey() bool { return op.isOptsWithFromKey } func (op Op) IsOptsWithPrefix() bool { return op.isOptsWithPrefix } From 8027ce6bc28746b27ffb1752b683f30cdd63dd5b Mon Sep 17 00:00:00 2001 From: Kirill Trifonov Date: Fri, 25 Jul 2025 23:03:50 +0200 Subject: [PATCH 0379/1068] added MemberRemove to printerJson added unit tests Signed-off-by: Kirill Trifonov --- etcdctl/ctlv3/command/printer_json.go | 18 ++++++++-- etcdctl/ctlv3/command/printer_json_test.go | 40 ++++++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/etcdctl/ctlv3/command/printer_json.go b/etcdctl/ctlv3/command/printer_json.go index f97d9ea2f325..be83433f77b1 100644 --- a/etcdctl/ctlv3/command/printer_json.go +++ b/etcdctl/ctlv3/command/printer_json.go @@ -73,8 +73,9 @@ func (p *jsonPrinter) EndpointHealth(r []epHealth) { printJSON(r) } func (p *jsonPrinter) EndpointStatus(r []epStatus) { printJSON(r) } func (p *jsonPrinter) EndpointHashKV(r []epHashKV) { printJSON(r) } -func (p *jsonPrinter) MemberAdd(r clientv3.MemberAddResponse) { p.printJSON(r) } -func (p *jsonPrinter) MemberList(r clientv3.MemberListResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberAdd(r clientv3.MemberAddResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberRemove(_ uint64, r clientv3.MemberRemoveResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberList(r clientv3.MemberListResponse) { p.printJSON(r) } func printJSONTo(w io.Writer, v any) { b, err := json.Marshal(v) @@ -111,6 +112,19 @@ func (p *jsonPrinter) printJSON(v any) { Members: toHexMembers(r.Members), Alias: (*Alias)(&r), } + case clientv3.MemberRemoveResponse: + type Alias clientv3.MemberRemoveResponse + + data = &struct { + Header *HexResponseHeader `json:"header"` + Member *HexMember `json:"member"` + Members []*HexMember `json:"members"` + *Alias + }{ + Header: (*HexResponseHeader)(r.Header), + Members: toHexMembers(r.Members), + Alias: (*Alias)(&r), + } case clientv3.MemberListResponse: type Alias clientv3.MemberListResponse diff --git a/etcdctl/ctlv3/command/printer_json_test.go b/etcdctl/ctlv3/command/printer_json_test.go index 4bb0d8ab68db..d0ae962215b5 100644 --- a/etcdctl/ctlv3/command/printer_json_test.go +++ b/etcdctl/ctlv3/command/printer_json_test.go @@ -167,6 +167,46 @@ func TestMemberAdd(t *testing.T) { } } +func TestMemberRemove(t *testing.T) { + tests := []testScenario{ + {name: "decimal", isHex: false, cases: testCases}, + {name: "hex", isHex: true, cases: testCases}, + } + + for _, testGroup := range tests { + t.Run(testGroup.name, func(t *testing.T) { + var buffer bytes.Buffer + p := &jsonPrinter{writer: &buffer, isHex: testGroup.isHex} + + for _, tt := range testGroup.cases { + t.Run(fmt.Sprintf("number=%d", tt.number), func(t *testing.T) { + buffer.Reset() + decoder := json.NewDecoder(&buffer) + decoder.UseNumber() + + response := clientv3.MemberRemoveResponse{ + Header: &pb.ResponseHeader{ + ClusterId: tt.number, + MemberId: tt.number, + Revision: int64(tt.number), + RaftTerm: tt.number, + }, + Members: []*pb.Member{{ID: tt.number}}, + } + p.MemberRemove(0, response) + + var got map[string]any + err := decoder.Decode(&got) + require.NoErrorf(t, err, "failed to decode JSON") + + assertHeader(t, &testGroup, &tt, got) + assertMembers(t, &testGroup, &tt, got) + }) + } + }) + } +} + func TestMemberList(t *testing.T) { tests := []testScenario{ {name: "decimal", isHex: false, cases: testCases}, From 241e49f91d825a838f5bae04c6318b766be5019c Mon Sep 17 00:00:00 2001 From: Kota Date: Sat, 26 Jul 2025 23:40:23 +0900 Subject: [PATCH 0380/1068] robustness: update README.md Fix invalid URL Signed-off-by: Kota --- tests/robustness/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/robustness/README.md b/tests/robustness/README.md index b1ea6bae614a..f6e73e40fed8 100644 --- a/tests/robustness/README.md +++ b/tests/robustness/README.md @@ -253,6 +253,6 @@ Up to the first response, the `Revision` of events only increased up to a value However, the following line includes an event with `Revision` equal `3`. If you follow the `revision` throughout the file you should notice that watch replayed revisions for a second time. This is incorrect and breaks `Ordered` [watch API guarantees]. -This is consistent with the root cause of [#14370] where the member reconnecting to cluster will resend revisions. +This is consistent with the root cause of [#15271] where the member reconnecting to cluster will resend revisions. [#15271]: https://github.com/etcd-io/etcd/issues/15271 From fda5d15daa94d90beec9ea793ba4209f44f3db4a Mon Sep 17 00:00:00 2001 From: Kirill Trifonov Date: Sat, 26 Jul 2025 19:39:12 +0200 Subject: [PATCH 0381/1068] remove extra `member` field from json output of `MemberRemoveResponse` Signed-off-by: Kirill Trifonov --- etcdctl/ctlv3/command/printer_json.go | 1 - 1 file changed, 1 deletion(-) diff --git a/etcdctl/ctlv3/command/printer_json.go b/etcdctl/ctlv3/command/printer_json.go index be83433f77b1..a06071e2a479 100644 --- a/etcdctl/ctlv3/command/printer_json.go +++ b/etcdctl/ctlv3/command/printer_json.go @@ -117,7 +117,6 @@ func (p *jsonPrinter) printJSON(v any) { data = &struct { Header *HexResponseHeader `json:"header"` - Member *HexMember `json:"member"` Members []*HexMember `json:"members"` *Alias }{ From 7517f4494a2b99e066a1276bf1c4e0321bbaa78b Mon Sep 17 00:00:00 2001 From: Kirill Trifonov Date: Sat, 26 Jul 2025 19:26:14 +0200 Subject: [PATCH 0382/1068] added MemberUpdate to printerJson added unit tests Signed-off-by: Kirill Trifonov --- etcdctl/ctlv3/command/printer_json.go | 13 +++++++ etcdctl/ctlv3/command/printer_json_test.go | 40 ++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/etcdctl/ctlv3/command/printer_json.go b/etcdctl/ctlv3/command/printer_json.go index be83433f77b1..6e76b6a78f01 100644 --- a/etcdctl/ctlv3/command/printer_json.go +++ b/etcdctl/ctlv3/command/printer_json.go @@ -75,6 +75,7 @@ func (p *jsonPrinter) EndpointHashKV(r []epHashKV) { printJSON(r) } func (p *jsonPrinter) MemberAdd(r clientv3.MemberAddResponse) { p.printJSON(r) } func (p *jsonPrinter) MemberRemove(_ uint64, r clientv3.MemberRemoveResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberUpdate(_ uint64, r clientv3.MemberUpdateResponse) { p.printJSON(r) } func (p *jsonPrinter) MemberList(r clientv3.MemberListResponse) { p.printJSON(r) } func printJSONTo(w io.Writer, v any) { @@ -125,6 +126,18 @@ func (p *jsonPrinter) printJSON(v any) { Members: toHexMembers(r.Members), Alias: (*Alias)(&r), } + case clientv3.MemberUpdateResponse: + type Alias clientv3.MemberUpdateResponse + + data = &struct { + Header *HexResponseHeader `json:"header"` + Members []*HexMember `json:"members"` + *Alias + }{ + Header: (*HexResponseHeader)(r.Header), + Members: toHexMembers(r.Members), + Alias: (*Alias)(&r), + } case clientv3.MemberListResponse: type Alias clientv3.MemberListResponse diff --git a/etcdctl/ctlv3/command/printer_json_test.go b/etcdctl/ctlv3/command/printer_json_test.go index d0ae962215b5..d80cb57e6fe6 100644 --- a/etcdctl/ctlv3/command/printer_json_test.go +++ b/etcdctl/ctlv3/command/printer_json_test.go @@ -207,6 +207,46 @@ func TestMemberRemove(t *testing.T) { } } +func TestMemberUpdate(t *testing.T) { + tests := []testScenario{ + {name: "decimal", isHex: false, cases: testCases}, + {name: "hex", isHex: true, cases: testCases}, + } + + for _, testGroup := range tests { + t.Run(testGroup.name, func(t *testing.T) { + var buffer bytes.Buffer + p := &jsonPrinter{writer: &buffer, isHex: testGroup.isHex} + + for _, tt := range testGroup.cases { + t.Run(fmt.Sprintf("number=%d", tt.number), func(t *testing.T) { + buffer.Reset() + decoder := json.NewDecoder(&buffer) + decoder.UseNumber() + + response := clientv3.MemberUpdateResponse{ + Header: &pb.ResponseHeader{ + ClusterId: tt.number, + MemberId: tt.number, + Revision: int64(tt.number), + RaftTerm: tt.number, + }, + Members: []*pb.Member{{ID: tt.number}}, + } + p.MemberUpdate(0, response) + + var got map[string]any + err := decoder.Decode(&got) + require.NoErrorf(t, err, "failed to decode JSON") + + assertHeader(t, &testGroup, &tt, got) + assertMembers(t, &testGroup, &tt, got) + }) + } + }) + } +} + func TestMemberList(t *testing.T) { tests := []testScenario{ {name: "decimal", isHex: false, cases: testCases}, From 5d975f06dd782a0c6abb1e106f67f5224ec26c4c Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 26 Jul 2025 11:53:05 +0200 Subject: [PATCH 0383/1068] Fix Antithesis makefile if statement Signed-off-by: Marek Siarkowicz --- tests/antithesis/server/Dockerfile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/antithesis/server/Dockerfile b/tests/antithesis/server/Dockerfile index 1f2bb492ab76..8fa7b5efefaa 100644 --- a/tests/antithesis/server/Dockerfile +++ b/tests/antithesis/server/Dockerfile @@ -10,10 +10,7 @@ RUN git clone --depth=1 https://github.com/etcd-io/etcd.git --branch=${REF} /etc # replace verify with antithesis WORKDIR /etcd/client/pkg/verify COPY inject/verify.patch verify.patch -RUN if [ "${REF}" == "main" ]; then \ - git apply verify.patch; \ - fi -RUN rm verify.patch +RUN if [ "${REF}" = "main" ]; then git apply verify.patch; fi WORKDIR /etcd/client/pkg RUN go mod tidy WORKDIR /etcd From d8e1629d79a57eebf38217610b8a91b9bc90718d Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 29 Jul 2025 11:12:27 +0530 Subject: [PATCH 0384/1068] dependency: bump google.golang.org/grpc from 1.73.0 to 1.74.2 This commit will bump google.golang.org/grpc from 1.73.0 to 1.74.2 Signed-off-by: ArkaSaha30 --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 3 +-- cache/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 3 +-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 22 files changed, 33 insertions(+), 35 deletions(-) diff --git a/api/go.mod b/api/go.mod index 72c8ad2e76be..c5709513436a 100644 --- a/api/go.mod +++ b/api/go.mod @@ -11,7 +11,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 github.com/stretchr/testify v1.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 - google.golang.org/grpc v1.73.0 + google.golang.org/grpc v1.74.2 google.golang.org/protobuf v1.36.6 ) diff --git a/api/go.sum b/api/go.sum index c9ade099a83e..8f36ccae9c95 100644 --- a/api/go.sum +++ b/api/go.sum @@ -77,8 +77,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/cache/go.mod b/cache/go.mod index aac75f7a4768..0701aed51865 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -13,7 +13,6 @@ require ( require ( github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/go-logr/logr v1.4.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect @@ -25,7 +24,7 @@ require ( golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/grpc v1.73.0 // indirect + google.golang.org/grpc v1.74.2 // indirect google.golang.org/protobuf v1.36.6 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index 96db706a2536..817d24bb3916 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -98,8 +98,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index 9971111d5c3f..a5604a0778e9 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.73.0 + google.golang.org/grpc v1.74.2 sigs.k8s.io/yaml v1.5.0 ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 0ac3c115e2a2..a7805d1a4483 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -114,8 +114,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 57530aac2a5c..df2643e95631 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.12.0 - google.golang.org/grpc v1.73.0 + google.golang.org/grpc v1.74.2 ) require ( @@ -27,7 +27,6 @@ require ( github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect - github.com/go-logr/logr v1.4.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 583aea7d342e..56c307db3001 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -140,8 +140,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 9f8314534c0a..fcd158dc1f6c 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -92,7 +92,7 @@ require ( golang.org/x/time v0.12.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/grpc v1.73.0 // indirect + google.golang.org/grpc v1.74.2 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index ab77735a6a61..66cbc05a7237 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -186,8 +186,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index 6dc6a25a43cf..0838ba8397f4 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.12.0 - google.golang.org/grpc v1.73.0 + google.golang.org/grpc v1.74.2 google.golang.org/protobuf v1.36.6 ) diff --git a/go.sum b/go.sum index 9589a57cdfa8..9faac7c4d97b 100644 --- a/go.sum +++ b/go.sum @@ -255,8 +255,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/go.mod b/pkg/go.mod index 5db7a6384735..e71af3a493a1 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.37.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.73.0 + google.golang.org/grpc v1.74.2 ) require ( diff --git a/pkg/go.sum b/pkg/go.sum index 92cc09d5802a..849916bd12b9 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -61,8 +61,8 @@ golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index 54cdb2518010..32a07da2a850 100644 --- a/server/go.mod +++ b/server/go.mod @@ -41,7 +41,7 @@ require ( golang.org/x/net v0.42.0 golang.org/x/time v0.12.0 google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 - google.golang.org/grpc v1.73.0 + google.golang.org/grpc v1.74.2 google.golang.org/protobuf v1.36.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.5.0 diff --git a/server/go.sum b/server/go.sum index 8c2efea25020..1bf0d387e567 100644 --- a/server/go.sum +++ b/server/go.sum @@ -229,8 +229,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index 02617a89a659..43dece4f228d 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -50,7 +50,7 @@ require ( golang.org/x/crypto v0.40.0 golang.org/x/sync v0.16.0 golang.org/x/time v0.12.0 - google.golang.org/grpc v1.73.0 + google.golang.org/grpc v1.74.2 google.golang.org/protobuf v1.36.6 ) diff --git a/tests/go.sum b/tests/go.sum index ad45b95b7f4a..302ee273116c 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -261,8 +261,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 6ec9bfcd0557..1d66a1fd362b 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -225,7 +225,7 @@ require ( golang.org/x/tools v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/grpc v1.73.0 // indirect + google.golang.org/grpc v1.74.2 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index bfbb66f18a3e..413b512f5f74 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -689,8 +689,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index cf8f527ed053..ca22886aba7f 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -21,5 +21,5 @@ require ( golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/grpc v1.73.0 // indirect + google.golang.org/grpc v1.74.2 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 246e9763f336..d9ae6f44064b 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1888,8 +1888,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From ebafaf683e1ec5e79a0d454b07d6031717d4f542 Mon Sep 17 00:00:00 2001 From: Nont Date: Tue, 29 Jul 2025 15:17:56 -0500 Subject: [PATCH 0385/1068] Turn ETCD_VERIFY on for antithesis tests Signed-off-by: Nont --- tests/antithesis/config/docker-compose-1-node.yml | 1 + tests/antithesis/config/docker-compose-3-node.yml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/tests/antithesis/config/docker-compose-1-node.yml b/tests/antithesis/config/docker-compose-1-node.yml index 646c04a3dccb..fcf2d97dbc3a 100644 --- a/tests/antithesis/config/docker-compose-1-node.yml +++ b/tests/antithesis/config/docker-compose-1-node.yml @@ -35,6 +35,7 @@ services: ETCD_SNAPSHOT_CATCHUP_ENTRIES: 100 ETCD_SNAPSHOT_COUNT: 50 ETCD_COMPACTION_BATCH_LIMIT: 10 + ETCD_VERIFY: "all" user: "${USER_ID:-root}:${GROUP_ID:-root}" depends_on: init: diff --git a/tests/antithesis/config/docker-compose-3-node.yml b/tests/antithesis/config/docker-compose-3-node.yml index 002f58737965..4a0bf7253dba 100644 --- a/tests/antithesis/config/docker-compose-3-node.yml +++ b/tests/antithesis/config/docker-compose-3-node.yml @@ -37,6 +37,7 @@ services: ETCD_SNAPSHOT_CATCHUP_ENTRIES: 100 ETCD_SNAPSHOT_COUNT: 50 ETCD_COMPACTION_BATCH_LIMIT: 10 + ETCD_VERIFY: "all" user: "${USER_ID:-root}:${GROUP_ID:-root}" depends_on: init: @@ -63,6 +64,7 @@ services: ETCD_SNAPSHOT_CATCHUP_ENTRIES: 100 ETCD_SNAPSHOT_COUNT: 50 ETCD_COMPACTION_BATCH_LIMIT: 10 + ETCD_VERIFY: "all" user: "${USER_ID:-root}:${GROUP_ID:-root}" depends_on: init: @@ -89,6 +91,7 @@ services: ETCD_SNAPSHOT_CATCHUP_ENTRIES: 100 ETCD_SNAPSHOT_COUNT: 50 ETCD_COMPACTION_BATCH_LIMIT: 10 + ETCD_VERIFY: "all" user: "${USER_ID:-root}:${GROUP_ID:-root}" depends_on: init: From 37b3c62715bfe244f9a48c0f81bdfb7100a8e8ac Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Tue, 29 Jul 2025 17:59:07 +0000 Subject: [PATCH 0386/1068] cache: refactor validateWatch to use a switch for unsupported watch ops Signed-off-by: Peter Chang --- cache/cache.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index bae659c0e3b6..6982a71194d9 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -245,13 +245,19 @@ func readWatchChannel( } func (c *Cache) validateWatch(key string, op clientv3.Op) (pred KeyPredicate, err error) { - if op.IsPrevKV() || - op.IsFragment() || - op.IsProgressNotify() || - op.IsCreatedNotify() || - op.IsFilterPut() || - op.IsFilterDelete() { - return nil, ErrUnsupportedRequest + switch { + case op.IsPrevKV(): + return nil, fmt.Errorf("%w: PrevKV not supported", ErrUnsupportedRequest) + case op.IsFragment(): + return nil, fmt.Errorf("%w: Fragment not supported", ErrUnsupportedRequest) + case op.IsProgressNotify(): + return nil, fmt.Errorf("%w: ProgressNotify not supported", ErrUnsupportedRequest) + case op.IsCreatedNotify(): + return nil, fmt.Errorf("%w: CreatedNotify not supported", ErrUnsupportedRequest) + case op.IsFilterPut(): + return nil, fmt.Errorf("%w: FilterPut not supported", ErrUnsupportedRequest) + case op.IsFilterDelete(): + return nil, fmt.Errorf("%w: FilterDelete not supported", ErrUnsupportedRequest) } startKey := []byte(key) From fde0946ad1deb5bb09321e4b901c638565d45642 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 29 Jul 2025 11:28:27 +0530 Subject: [PATCH 0387/1068] dependency: bump github.com/olekukonko/tablewriter from 1.0.8 to 1.0.9 This commit will bump github.com/olekukonko/tablewriter from 1.0.8 to 1.0.9 Also bumps, - github.com/olekukonko/errors from v0.0.0-20250405072817-4e6d85265da6 to v1.1.0 - github.com/olekukonko/ll from v0.0.8 to v0.0.9 Signed-off-by: ArkaSaha30 --- etcdctl/go.mod | 6 +++--- etcdctl/go.sum | 12 ++++++------ etcdutl/go.mod | 10 +++++----- etcdutl/go.sum | 16 ++++++++-------- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 8 ++++---- tests/go.sum | 16 ++++++++-------- tools/mod/go.mod | 6 +++--- tools/mod/go.sum | 12 ++++++------ 12 files changed, 58 insertions(+), 58 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index df2643e95631..df231b402cd7 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -8,7 +8,7 @@ require ( github.com/bgentry/speakeasy v0.2.0 github.com/cheggaaa/pb/v3 v3.1.7 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.0.8 + github.com/olekukonko/tablewriter v1.0.9 github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 @@ -34,8 +34,8 @@ require ( github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect - github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect - github.com/olekukonko/ll v0.0.8 // indirect + github.com/olekukonko/errors v1.1.0 // indirect + github.com/olekukonko/ll v0.0.9 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 56c307db3001..db036ca3301b 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -54,12 +54,12 @@ github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6T github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= -github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= -github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.8 h1:f6wJzHg4QUtJdvrVPKco4QTrAylgaU0+b9br/lJxEiQ= -github.com/olekukonko/tablewriter v1.0.8/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= +github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= +github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= +github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.9 h1:XGwRsYLC2bY7bNd93Dk51bcPZksWZmLYuaTHR0FqfL8= +github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index fcd158dc1f6c..cdde8f27f515 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdutl/v3 go 1.24 -toolchain go1.24.3 +toolchain go1.24.5 replace ( go.etcd.io/etcd/api/v3 => ../api @@ -23,7 +23,7 @@ replace ( require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.0.8 + github.com/olekukonko/tablewriter v1.0.9 github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 go.etcd.io/bbolt v1.4.2 @@ -46,7 +46,7 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.1 // indirect + github.com/golang-jwt/jwt/v5 v5.2.3 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.1.3 // indirect github.com/google/go-cmp v0.7.0 // indirect @@ -61,8 +61,8 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect - github.com/olekukonko/ll v0.0.8 // indirect + github.com/olekukonko/errors v1.1.0 // indirect + github.com/olekukonko/ll v0.0.9 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 66cbc05a7237..5c8fe4804f0b 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -27,8 +27,8 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= -github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.2.3 h1:kkGXqQOBSDDWRhWNXTFpqGSCMyh/PLnqUvMGJPDJDs0= +github.com/golang-jwt/jwt/v5 v5.2.3/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= @@ -67,12 +67,12 @@ github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6T github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= -github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= -github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.8 h1:f6wJzHg4QUtJdvrVPKco4QTrAylgaU0+b9br/lJxEiQ= -github.com/olekukonko/tablewriter v1.0.8/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= +github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= +github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= +github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.9 h1:XGwRsYLC2bY7bNd93Dk51bcPZksWZmLYuaTHR0FqfL8= +github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/go.mod b/go.mod index 0838ba8397f4..3f38a0b3a662 100644 --- a/go.mod +++ b/go.mod @@ -50,7 +50,7 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect + github.com/golang-jwt/jwt/v5 v5.2.3 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.1.3 // indirect @@ -67,9 +67,9 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect - github.com/olekukonko/ll v0.0.8 // indirect - github.com/olekukonko/tablewriter v1.0.8 // indirect + github.com/olekukonko/errors v1.1.0 // indirect + github.com/olekukonko/ll v0.0.9 // indirect + github.com/olekukonko/tablewriter v1.0.9 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/go.sum b/go.sum index 9faac7c4d97b..1ce7bed33e0a 100644 --- a/go.sum +++ b/go.sum @@ -45,8 +45,8 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= -github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.2.3 h1:kkGXqQOBSDDWRhWNXTFpqGSCMyh/PLnqUvMGJPDJDs0= +github.com/golang-jwt/jwt/v5 v5.2.3/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= @@ -97,12 +97,12 @@ github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6T github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= -github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= -github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.8 h1:f6wJzHg4QUtJdvrVPKco4QTrAylgaU0+b9br/lJxEiQ= -github.com/olekukonko/tablewriter v1.0.8/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= +github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= +github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= +github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.9 h1:XGwRsYLC2bY7bNd93Dk51bcPZksWZmLYuaTHR0FqfL8= +github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/server/go.mod b/server/go.mod index 32a07da2a850..7b2e0069ce33 100644 --- a/server/go.mod +++ b/server/go.mod @@ -9,7 +9,7 @@ require ( github.com/coreos/go-systemd/v22 v22.5.0 github.com/dustin/go-humanize v1.0.1 github.com/gogo/protobuf v1.3.2 - github.com/golang-jwt/jwt/v5 v5.2.2 + github.com/golang-jwt/jwt/v5 v5.2.3 github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 github.com/golang/protobuf v1.5.4 github.com/google/btree v1.1.3 diff --git a/server/go.sum b/server/go.sum index 1bf0d387e567..7b657f484a1b 100644 --- a/server/go.sum +++ b/server/go.sum @@ -37,8 +37,8 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= -github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.2.3 h1:kkGXqQOBSDDWRhWNXTFpqGSCMyh/PLnqUvMGJPDJDs0= +github.com/golang-jwt/jwt/v5 v5.2.3/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= diff --git a/tests/go.mod b/tests/go.mod index 43dece4f228d..1fca187355e4 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -19,13 +19,13 @@ require ( github.com/anishathalye/porcupine v1.0.2 github.com/antithesishq/antithesis-sdk-go v0.4.3 github.com/coreos/go-semver v0.3.1 - github.com/golang-jwt/jwt/v5 v5.2.2 + github.com/golang-jwt/jwt/v5 v5.2.3 github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 - github.com/olekukonko/tablewriter v1.0.8 + github.com/olekukonko/tablewriter v1.0.9 github.com/prometheus/client_golang v1.22.0 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.65.0 @@ -80,8 +80,8 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect - github.com/olekukonko/ll v0.0.8 // indirect + github.com/olekukonko/errors v1.1.0 // indirect + github.com/olekukonko/ll v0.0.9 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect diff --git a/tests/go.sum b/tests/go.sum index 302ee273116c..238ca9f471ba 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -51,8 +51,8 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= -github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.2.3 h1:kkGXqQOBSDDWRhWNXTFpqGSCMyh/PLnqUvMGJPDJDs0= +github.com/golang-jwt/jwt/v5 v5.2.3/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= @@ -103,12 +103,12 @@ github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6T github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= -github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= -github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.8 h1:f6wJzHg4QUtJdvrVPKco4QTrAylgaU0+b9br/lJxEiQ= -github.com/olekukonko/tablewriter v1.0.8/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= +github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= +github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= +github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.9 h1:XGwRsYLC2bY7bNd93Dk51bcPZksWZmLYuaTHR0FqfL8= +github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 1d66a1fd362b..a860e3dae5a1 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -145,9 +145,9 @@ require ( github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect github.com/nunnatsa/ginkgolinter v0.19.1 // indirect - github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect - github.com/olekukonko/ll v0.0.8 // indirect - github.com/olekukonko/tablewriter v1.0.8 // indirect + github.com/olekukonko/errors v1.1.0 // indirect + github.com/olekukonko/ll v0.0.9 // indirect + github.com/olekukonko/tablewriter v1.0.9 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 413b512f5f74..a342abb09409 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -324,12 +324,12 @@ github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= github.com/nunnatsa/ginkgolinter v0.19.1 h1:mjwbOlDQxZi9Cal+KfbEJTCz327OLNfwNvoZ70NJ+c4= github.com/nunnatsa/ginkgolinter v0.19.1/go.mod h1:jkQ3naZDmxaZMXPWaS9rblH+i+GWXQCaS/JFIWcOH2s= -github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= -github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= -github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.8 h1:f6wJzHg4QUtJdvrVPKco4QTrAylgaU0+b9br/lJxEiQ= -github.com/olekukonko/tablewriter v1.0.8/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= +github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= +github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= +github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.9 h1:XGwRsYLC2bY7bNd93Dk51bcPZksWZmLYuaTHR0FqfL8= +github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= From db8747dcffc4df8ce2bdbe24a040465b228789b6 Mon Sep 17 00:00:00 2001 From: Kota Date: Thu, 31 Jul 2025 23:23:37 +0900 Subject: [PATCH 0388/1068] tests: add robustness test for issue 15220 Signed-off-by: Kota --- tests/robustness/Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/robustness/Makefile b/tests/robustness/Makefile index 0c60688038fc..68d77d188f57 100644 --- a/tests/robustness/Makefile +++ b/tests/robustness/Makefile @@ -45,6 +45,11 @@ test-robustness-issue14685: /tmp/etcd-v3.5.5-failpoints/bin GO_TEST_FLAGS='-v --run=TestRobustnessRegression/Issue14685 --count 100 --failfast --bin-dir=/tmp/etcd-v3.5.5-failpoints/bin' $(TOPLEVEL_MAKE) test-robustness && \ echo "Failed to reproduce" || echo "Successful reproduction" +.PHONY: test-robustness-issue15220 +test-robustness-issue15220: /tmp/etcd-v3.5.7-failpoints/bin + GO_TEST_FLAGS='-v --run=TestRobustnessRegression/Issue15220 --count 100 --failfast --bin-dir=/tmp/etcd-v3.5.7-failpoints/bin' $(TOPLEVEL_MAKE) test-robustness && \ + echo "Failed to reproduce" || echo "Successful reproduction" + .PHONY: test-robustness-issue15271 test-robustness-issue15271: /tmp/etcd-v3.5.7-failpoints/bin GO_TEST_FLAGS='-v --run=TestRobustnessRegression/Issue15271 --count 100 --failfast --bin-dir=/tmp/etcd-v3.5.7-failpoints/bin' $(TOPLEVEL_MAKE) test-robustness && \ From f0626e9f005c01ed294e12a062c148bb59f0af4e Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Tue, 29 Jul 2025 11:43:32 +0530 Subject: [PATCH 0389/1068] dependency: bump github.com/spf13/pflag from 1.0.6 to 1.0.7 This commit will bump github.com/spf13/pflag from 1.0.6 to 1.0.7 Signed-off-by: ArkaSaha30 --- etcdctl/go.mod | 2 +- etcdctl/go.sum | 3 ++- etcdutl/go.mod | 2 +- etcdutl/go.sum | 3 ++- go.mod | 2 +- go.sum | 3 ++- pkg/go.mod | 2 +- pkg/go.sum | 3 ++- server/go.mod | 2 +- server/go.sum | 3 ++- tests/go.mod | 2 +- tests/go.sum | 3 ++- tools/mod/go.mod | 2 +- tools/mod/go.sum | 3 ++- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 3 ++- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 3 ++- 18 files changed, 27 insertions(+), 18 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index df231b402cd7..0d4435eb8a8f 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -10,7 +10,7 @@ require ( github.com/dustin/go-humanize v1.0.1 github.com/olekukonko/tablewriter v1.0.9 github.com/spf13/cobra v1.9.1 - github.com/spf13/pflag v1.0.6 + github.com/spf13/pflag v1.0.7 github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 diff --git a/etcdctl/go.sum b/etcdctl/go.sum index db036ca3301b..cf08b9fd2e16 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -78,8 +78,9 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7 github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= +github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index cdde8f27f515..2497d53c277f 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -71,7 +71,7 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect - github.com/spf13/pflag v1.0.6 // indirect + github.com/spf13/pflag v1.0.7 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 5c8fe4804f0b..07a5bf9f50cc 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -96,8 +96,9 @@ github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= +github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= diff --git a/go.mod b/go.mod index 3f38a0b3a662..01ef92646ba5 100644 --- a/go.mod +++ b/go.mod @@ -78,7 +78,7 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect - github.com/spf13/pflag v1.0.6 // indirect + github.com/spf13/pflag v1.0.7 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/gofail v0.2.0 // indirect diff --git a/go.sum b/go.sum index 1ce7bed33e0a..de2e370b53e3 100644 --- a/go.sum +++ b/go.sum @@ -130,8 +130,9 @@ github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= +github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= diff --git a/pkg/go.mod b/pkg/go.mod index e71af3a493a1..d7b2c9de0733 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/creack/pty v1.1.18 github.com/dustin/go-humanize v1.0.1 github.com/spf13/cobra v1.9.1 - github.com/spf13/pflag v1.0.6 + github.com/spf13/pflag v1.0.7 github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.37.0 diff --git a/pkg/go.sum b/pkg/go.sum index 849916bd12b9..b780cceca033 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -31,8 +31,9 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7 github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= +github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/server/go.mod b/server/go.mod index 7b2e0069ce33..a7c7f37794b5 100644 --- a/server/go.mod +++ b/server/go.mod @@ -64,7 +64,7 @@ require ( github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/pflag v1.0.6 // indirect + github.com/spf13/pflag v1.0.7 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect diff --git a/server/go.sum b/server/go.sum index 7b657f484a1b..e0fd8d6c1a17 100644 --- a/server/go.sum +++ b/server/go.sum @@ -107,8 +107,9 @@ github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= +github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= diff --git a/tests/go.mod b/tests/go.mod index 1fca187355e4..636701aacbc9 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -87,7 +87,7 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/cobra v1.9.1 // indirect - github.com/spf13/pflag v1.0.6 // indirect + github.com/spf13/pflag v1.0.7 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 238ca9f471ba..2c7cb9d352ec 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -136,8 +136,9 @@ github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= +github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index a860e3dae5a1..cb291cd15771 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -182,7 +182,7 @@ require ( github.com/spf13/afero v1.12.0 // indirect github.com/spf13/cast v1.7.1 // indirect github.com/spf13/cobra v1.9.1 // indirect - github.com/spf13/pflag v1.0.6 // indirect + github.com/spf13/pflag v1.0.7 // indirect github.com/spf13/viper v1.20.0 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index a342abb09409..4afb7e4c04d6 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -421,8 +421,9 @@ github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cA github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= +github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.20.0 h1:zrxIyR3RQIOsarIrgL8+sAvALXul9jeEPa06Y0Ph6vY= github.com/spf13/viper v1.20.0/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index b3af662c1f5b..8e235e1092c9 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -6,7 +6,7 @@ toolchain go1.24.3 require ( github.com/spf13/cobra v1.9.1 - github.com/spf13/pflag v1.0.6 + github.com/spf13/pflag v1.0.7 gonum.org/v1/plot v0.14.0 ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 1813c62e080c..f2f146b464f0 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -31,8 +31,9 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= +github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index ca22886aba7f..013806191e3c 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -14,7 +14,7 @@ require ( require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/spf13/pflag v1.0.6 // indirect + github.com/spf13/pflag v1.0.7 // indirect go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect golang.org/x/net v0.42.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index d9ae6f44064b..793995d68028 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1143,8 +1143,9 @@ github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcD github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= +github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= From c3c2606649ede4704176496a33b3a1296eec8d47 Mon Sep 17 00:00:00 2001 From: Kota Date: Fri, 1 Aug 2025 22:59:49 +0900 Subject: [PATCH 0390/1068] tests: update example log for test-robustness-issue14370 Signed-off-by: Kota --- tests/robustness/README.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/tests/robustness/README.md b/tests/robustness/README.md index 12ef72bfc830..744c936f60d3 100644 --- a/tests/robustness/README.md +++ b/tests/robustness/README.md @@ -191,20 +191,24 @@ The report follows the hierarchy: Let's reproduce and analyse robustness test report for issue [#14370]. To reproduce the issue by yourself run `make test-robustness-issue14370`. -After a couple of tries robustness tests should fail with a log `Linearization failed` and save the report locally. +After a couple of tries robustness tests should fail with a log `Linearization illegal` and save the report locally. Example: ``` - logger.go:146: 2024-05-08T10:42:53.379+0200 INFO Validating linearizable operations {"timeout": "5m0s"} - logger.go:146: 2024-05-08T10:42:54.429+0200 ERROR Linearization failed {"duration": "1.050105973s"} - validate.go:39: Failed linearization, skipping further validation - logger.go:146: 2024-05-08T10:42:54.429+0200 INFO Saving robustness test report {"path": "/tmp/TestRobustnessRegression_Issue14370/1715157774429416550"} + logger.go:146: 2025-08-01T22:54:26.550+0900 INFO Validating linearizable operations {"timeout": "5m0s"} + logger.go:146: 2025-08-01T22:54:26.755+0900 ERROR Linearization illegal {"duration": "205.05225ms"} + logger.go:146: 2025-08-01T22:54:26.755+0900 INFO Skipping other validations as linearization failed + main_test.go:122: linearization: illegal + logger.go:146: 2025-08-01T22:54:26.756+0900 INFO Saving robustness test report {"path": "/tmp/TestRobustnessRegression_Issue14370/1754056466755991000"} ... - logger.go:146: 2024-05-08T10:42:54.441+0200 INFO Saving visualization {"path": "/tmp/TestRobustnessRegression_Issue14370/1715157774429416550/history.html"} + logger.go:146: 2025-08-01T22:54:26.850+0900 INFO Saving visualization {"path": "/tmp/TestRobustnessRegression_Issue14370/1754056466755991000/history.html"} + logger.go:146: 2025-08-01T22:54:26.878+0900 INFO killing server... {"name": "TestRobustnessRegressionIssue14370-test-0"} + logger.go:146: 2025-08-01T22:54:26.878+0900 INFO stopping server... {"name": "TestRobustnessRegressionIssue14370-test-0"} + logger.go:146: 2025-08-01T22:54:26.886+0900 INFO stopped server. {"name": "TestRobustnessRegressionIssue14370-test-0"} ``` Linearization issues are easiest to analyse via history visualization. -Open `/tmp/TestRobustnessRegression_Issue14370/1715157774429416550/history.html` file in your browser. +Open `/tmp/TestRobustnessRegression_Issue14370/1754056466755991000/history.html` file in your browser. Jump to the error in linearization by clicking `[ jump to first error ]` on the top of the page. You should see a graph similar to the one on the image below. From b8d000ae1623aca100ba7c1c7f5604569c7ba6d9 Mon Sep 17 00:00:00 2001 From: Kota Date: Thu, 31 Jul 2025 23:28:32 +0900 Subject: [PATCH 0391/1068] tests: update readme Signed-off-by: Kota --- tests/robustness/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/robustness/README.md b/tests/robustness/README.md index b1ea6bae614a..1892688ccc0b 100644 --- a/tests/robustness/README.md +++ b/tests/robustness/README.md @@ -14,7 +14,7 @@ The purpose of these tests is to rigorously validate that etcd maintains its [KV | Single node cluster can loose a write on crash [#14370] | Aug 2022 | v3.4 or earlier | User | Yes, report preceded robustness tests | `make test-robustness-issue14370` | | Enabling auth can lead to inconsistency [#14571] | Oct 2022 | v3.4 or earlier | User | No, authorization is not covered. | | | Inconsistent revision caused by crash during defrag [#14685] | Nov 2022 | v3.5 | Robustness | Yes, after covering defragmentation. | `make test-robustness-issue14685` | -| Watch progress notification not synced with steam [#15220] | Jan 2023 | v3.4 or earlier | User | Yes, after covering watch progress notification | | +| Watch progress notification not synced with steam [#15220] | Jan 2023 | v3.4 or earlier | User | Yes, after covering watch progress notification | `make test-robustness-issue15220` | | Watch traveling back in time after network partition [#15271] | Feb 2023 | v3.4 or earlier | Robustness | Yes, after covering network partitions | `make test-robustness-issue15271` | | Duplicated watch event due to bug in TXN caching [#17247] | Jan 2024 | main branch | Robustness | Yes, prevented regression in v3.6 | | | Watch events lost during stream starvation [#17529] | Mar 2024 | v3.4 or earlier | User | Yes, after covering of slow watch | `make test-robustness-issue17529` | @@ -87,7 +87,7 @@ Etcd provides strict serializability for KV operations and eventual consistency [Implicit Kubernetes-ETCD Contract]: https://docs.google.com/document/d/1NUZDiJeiIH5vo_FMaTWf0JtrQKCx0kpEaIIuPoj9P6A/edit?usp=sharing -## Running locally +## Running locally 1. Build etcd with failpoints ```bash @@ -99,9 +99,9 @@ Etcd provides strict serializability for KV operations and eventual consistency ```bash make test-robustness ``` - + Optionally, you can pass environment variables: - * `GO_TEST_FLAGS` - to pass additional arguments to `go test`. + * `GO_TEST_FLAGS` - to pass additional arguments to `go test`. It is recommended to run tests multiple times with failfast enabled. this can be done by setting `GO_TEST_FLAGS='--count=100 --failfast'`. * `EXPECT_DEBUG=true` - to get logs from the cluster. * `RESULTS_DIR` - to change the location where the results report will be saved. @@ -211,7 +211,7 @@ You should see a graph similar to the one on the image below. ![issue14370](readme-images/issue14370.png) The last correct request (connected with the grey line) is a `Put` request that succeeded and got revision `168`. -All following requests are invalid (connected with red line) as they have revision `167`. +All following requests are invalid (connected with red line) as they have revision `167`. Etcd guarantees that revision is non-decreasing, so this shows a bug in etcd as there is no way revision should decrease. This is consistent with the root cause of [#14370] as it was an issue with the process crash causing the last write to be lost. From 7d4304128e1733e10e05a7ccfe0ae9241cb4368f Mon Sep 17 00:00:00 2001 From: Kirill Trifonov Date: Tue, 29 Jul 2025 01:27:13 +0200 Subject: [PATCH 0392/1068] added MemberPromote to printerJson added unit tests Signed-off-by: Kirill Trifonov --- etcdctl/ctlv3/command/printer_json.go | 21 +++++++++--- etcdctl/ctlv3/command/printer_json_test.go | 40 ++++++++++++++++++++++ 2 files changed, 57 insertions(+), 4 deletions(-) diff --git a/etcdctl/ctlv3/command/printer_json.go b/etcdctl/ctlv3/command/printer_json.go index 1b3829c8e63e..4e6f9bf718b0 100644 --- a/etcdctl/ctlv3/command/printer_json.go +++ b/etcdctl/ctlv3/command/printer_json.go @@ -73,10 +73,11 @@ func (p *jsonPrinter) EndpointHealth(r []epHealth) { printJSON(r) } func (p *jsonPrinter) EndpointStatus(r []epStatus) { printJSON(r) } func (p *jsonPrinter) EndpointHashKV(r []epHashKV) { printJSON(r) } -func (p *jsonPrinter) MemberAdd(r clientv3.MemberAddResponse) { p.printJSON(r) } -func (p *jsonPrinter) MemberRemove(_ uint64, r clientv3.MemberRemoveResponse) { p.printJSON(r) } -func (p *jsonPrinter) MemberUpdate(_ uint64, r clientv3.MemberUpdateResponse) { p.printJSON(r) } -func (p *jsonPrinter) MemberList(r clientv3.MemberListResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberAdd(r clientv3.MemberAddResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberRemove(_ uint64, r clientv3.MemberRemoveResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberUpdate(_ uint64, r clientv3.MemberUpdateResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberPromote(_ uint64, r clientv3.MemberPromoteResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberList(r clientv3.MemberListResponse) { p.printJSON(r) } func printJSONTo(w io.Writer, v any) { b, err := json.Marshal(v) @@ -128,6 +129,18 @@ func (p *jsonPrinter) printJSON(v any) { case clientv3.MemberUpdateResponse: type Alias clientv3.MemberUpdateResponse + data = &struct { + Header *HexResponseHeader `json:"header"` + Members []*HexMember `json:"members"` + *Alias + }{ + Header: (*HexResponseHeader)(r.Header), + Members: toHexMembers(r.Members), + Alias: (*Alias)(&r), + } + case clientv3.MemberPromoteResponse: + type Alias clientv3.MemberPromoteResponse + data = &struct { Header *HexResponseHeader `json:"header"` Members []*HexMember `json:"members"` diff --git a/etcdctl/ctlv3/command/printer_json_test.go b/etcdctl/ctlv3/command/printer_json_test.go index d80cb57e6fe6..8f65be6983c4 100644 --- a/etcdctl/ctlv3/command/printer_json_test.go +++ b/etcdctl/ctlv3/command/printer_json_test.go @@ -247,6 +247,46 @@ func TestMemberUpdate(t *testing.T) { } } +func TestMemberPromote(t *testing.T) { + tests := []testScenario{ + {name: "decimal", isHex: false, cases: testCases}, + {name: "hex", isHex: true, cases: testCases}, + } + + for _, testGroup := range tests { + t.Run(testGroup.name, func(t *testing.T) { + var buffer bytes.Buffer + p := &jsonPrinter{writer: &buffer, isHex: testGroup.isHex} + + for _, tt := range testGroup.cases { + t.Run(fmt.Sprintf("number=%d", tt.number), func(t *testing.T) { + buffer.Reset() + decoder := json.NewDecoder(&buffer) + decoder.UseNumber() + + response := clientv3.MemberPromoteResponse{ + Header: &pb.ResponseHeader{ + ClusterId: tt.number, + MemberId: tt.number, + Revision: int64(tt.number), + RaftTerm: tt.number, + }, + Members: []*pb.Member{{ID: tt.number}}, + } + p.MemberPromote(0, response) + + var got map[string]any + err := decoder.Decode(&got) + require.NoErrorf(t, err, "failed to decode JSON") + + assertHeader(t, &testGroup, &tt, got) + assertMembers(t, &testGroup, &tt, got) + }) + } + }) + } +} + func TestMemberList(t *testing.T) { tests := []testScenario{ {name: "decimal", isHex: false, cases: testCases}, From 1d1a8f6c16d0d6852d6cbe7eb4f74d171a6dc919 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 2 Aug 2025 09:38:44 +0200 Subject: [PATCH 0393/1068] Test the docker-compose file in CI run Signed-off-by: Chun-Hung Tseng --- .github/workflows/antithesis-verify.yml | 69 +++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 .github/workflows/antithesis-verify.yml diff --git a/.github/workflows/antithesis-verify.yml b/.github/workflows/antithesis-verify.yml new file mode 100644 index 000000000000..7db1fd88fab5 --- /dev/null +++ b/.github/workflows/antithesis-verify.yml @@ -0,0 +1,69 @@ +--- +name: Verify Antithesis Docker Compose Pipeline + +on: + push: + branches: + - main + paths: + - 'tests/antithesis/**' + - '.github/workflows/antithesis-verify.yml' + pull_request: + paths: + - 'tests/antithesis/**' + - '.github/workflows/antithesis-verify.yml' + +jobs: + test-docker-compose: + strategy: + matrix: + node-count: [1, 3] + name: Test ${{ matrix.node-count }}-node cluster + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Build etcd-server and etcd-client images + run: | + make -C tests/antithesis antithesis-build-etcd-image + make -C tests/antithesis antithesis-build-client-docker-image CFG_NODE_COUNT=${{ matrix.node-count }} + + - name: Run docker-compose up + working-directory: ./tests/antithesis + run: | + make antithesis-docker-compose-up CFG_NODE_COUNT=${{ matrix.node-count }} & + + - name: Check for healthy cluster + working-directory: ./tests/antithesis + run: | + timeout=120 + interval=10 + end_time=$(( $(date +%s) + timeout )) + + while [ $(date +%s) -lt $end_time ]; do + # The client container might not be running yet, so ignore errors from docker compose logs + if docker compose -f config/docker-compose-${{ matrix.node-count }}-node.yml logs client 2>/dev/null | grep -q "Client \[entrypoint\]: cluster is healthy!"; then + echo "Cluster is healthy!" + exit 0 + fi + echo "Waiting for cluster to become healthy..." + sleep $interval + done + + echo "Cluster did not become healthy in ${timeout} seconds." + docker compose -f config/docker-compose-${{ matrix.node-count }}-node.yml logs + exit 1 + + - name: Run traffic + working-directory: ./tests/antithesis + run: make antithesis-run-container-traffic CFG_NODE_COUNT=${{ matrix.node-count }} + + - name: Run validation + working-directory: ./tests/antithesis + run: make antithesis-run-container-validation CFG_NODE_COUNT=${{ matrix.node-count }} + + - name: Clean up + if: always() + working-directory: ./tests/antithesis + run: make antithesis-clean CFG_NODE_COUNT=${{ matrix.node-count }} From 195f6800666178ac912fecb1cb1f6514c3102a01 Mon Sep 17 00:00:00 2001 From: Kota Date: Fri, 1 Aug 2025 23:09:13 +0900 Subject: [PATCH 0394/1068] tests: format readme Signed-off-by: Kota --- tests/robustness/README.md | 59 +++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/tests/robustness/README.md b/tests/robustness/README.md index 744c936f60d3..598a8fc156d0 100644 --- a/tests/robustness/README.md +++ b/tests/robustness/README.md @@ -59,30 +59,30 @@ These tests cover various scenarios, including: ### Distributed System Terminology -* **Consensus:** A process where nodes in a distributed system agree on a single data value. Etcd uses the Raft algorithm to achieve consensus. -* **Strict vs Eventual consistency:** - * **Strict Consistency:** All components see the same data at the same time after an update. - * **Eventual Consistency:** Components may temporarily see different data after an update but converge to the same view eventually. -* **Consistency Models (https://jepsen.io/consistency)** - * **Single-Object Consistency Models:** - * **Sequential Consistency:** A strong single-object model. Operations appear to take place in some total order, consistent with the order of operations on each individual process. - * **Linearizable Consistency:** The strongest single-object model. Operations appear to happen instantly and in order, consistent with real-time ordering. - * **Transactional Consistency Models** - * **Serializable Consistency:** A transactional model guaranteeing that transactions appear to occur in some total order. Operations within a transaction are atomic and do not interleave with other transactions. It's a multi-object property, applying to the entire system, not just individual objects. - * **Strict Serializable Consistency:** The strongest transactional model. Combines the total order of serializability with the real-time ordering constraints of linearizability. +* **Consensus:** A process where nodes in a distributed system agree on a single data value. Etcd uses the Raft algorithm to achieve consensus. +* **Strict vs Eventual consistency:** + * **Strict Consistency:** All components see the same data at the same time after an update. + * **Eventual Consistency:** Components may temporarily see different data after an update but converge to the same view eventually. +* **Consistency Models ()** + * **Single-Object Consistency Models:** + * **Sequential Consistency:** A strong single-object model. Operations appear to take place in some total order, consistent with the order of operations on each individual process. + * **Linearizable Consistency:** The strongest single-object model. Operations appear to happen instantly and in order, consistent with real-time ordering. + * **Transactional Consistency Models** + * **Serializable Consistency:** A transactional model guaranteeing that transactions appear to occur in some total order. Operations within a transaction are atomic and do not interleave with other transactions. It's a multi-object property, applying to the entire system, not just individual objects. + * **Strict Serializable Consistency:** The strongest transactional model. Combines the total order of serializability with the real-time ordering constraints of linearizability. Etcd provides strict serializability for KV operations and eventual consistency for Watch. **Etcd Guarantees** -* **Key-value API operations** https://etcd.io/docs/latest/learning/api_guarantees/#kv-apis -* **Watch API guarantees** https://etcd.io/docs/latest/learning/api_guarantees/#watch-apis +* **Key-value API operations** +* **Watch API guarantees** ### Kubernetes Integration -* **[Implicit Kubernetes-ETCD Contract]:** Defines how Kubernetes uses etcd to store cluster state. -* **ResourceVersion:** A string used by Kubernetes to track resource versions, corresponding to etcd revisions. -* **Sharding resource types:** Kubernetes treats each resource type as a totally independent entity. +* **[Implicit Kubernetes-ETCD Contract]:** Defines how Kubernetes uses etcd to store cluster state. +* **ResourceVersion:** A string used by Kubernetes to track resource versions, corresponding to etcd revisions. +* **Sharding resource types:** Kubernetes treats each resource type as a totally independent entity. It allows sharding each resource type into a separate etcd cluster. [Implicit Kubernetes-ETCD Contract]: https://docs.google.com/document/d/1NUZDiJeiIH5vo_FMaTWf0JtrQKCx0kpEaIIuPoj9P6A/edit?usp=sharing @@ -90,12 +90,15 @@ Etcd provides strict serializability for KV operations and eventual consistency ## Running locally 1. Build etcd with failpoints + ```bash make gofail-enable make build make gofail-disable ``` + 2. Run the tests + ```bash make test-robustness ``` @@ -119,6 +122,7 @@ Errors in the etcd model could be causing false positives, which makes the abili > Note: By default robustness test report is only generated for failed test. * **For local runs:** this would be by identifying log line, in the following example that would be `/tmp/TestRobustnessExploratory_Etcd_HighTraffic_ClusterOfSize1`: + ``` logger.go:146: 2024-04-08T09:45:27.734+0200 INFO Saving robustness test report {"path": "/tmp/TestRobustnessExploratory_Etcd_HighTraffic_ClusterOfSize1"} ``` @@ -151,6 +155,7 @@ Errors in the etcd model could be causing false positives, which makes the abili If robustness tests fail, we want to analyse the report to confirm if the issue is on etcd side. The location of the directory with the report is mentioned in the `Saving robustness test report` log. Logs from report generation should look like: + ``` logger.go:146: 2024-05-08T10:42:54.429+0200 INFO Saving robustness test report {"path": "/tmp/TestRobustnessRegression_Issue14370/1715157774429416550"} logger.go:146: 2024-05-08T10:42:54.429+0200 INFO Saving member data dir {"member": "TestRobustnessRegressionIssue14370-test-0", "path": "/tmp/TestRobustnessRegression_Issue14370/1715157774429416550/server-TestRobustnessRegressionIssue14370-test-0"} @@ -178,6 +183,7 @@ is mentioned in the `Saving robustness test report` log. Logs from report genera ``` The report follows the hierarchy: + * `server-*` - etcd server data directories, can be used to verify disk/memory corruption. * `member` * `wal` - Write Ahead Log (WAL) directory, that can be analysed using `etcd-dump-logs` command line tool available in `tools` directory. @@ -194,17 +200,18 @@ To reproduce the issue by yourself run `make test-robustness-issue14370`. After a couple of tries robustness tests should fail with a log `Linearization illegal` and save the report locally. Example: + ``` - logger.go:146: 2025-08-01T22:54:26.550+0900 INFO Validating linearizable operations {"timeout": "5m0s"} - logger.go:146: 2025-08-01T22:54:26.755+0900 ERROR Linearization illegal {"duration": "205.05225ms"} - logger.go:146: 2025-08-01T22:54:26.755+0900 INFO Skipping other validations as linearization failed + logger.go:146: 2025-08-01T22:54:26.550+0900 INFO Validating linearizable operations {"timeout": "5m0s"} + logger.go:146: 2025-08-01T22:54:26.755+0900 ERROR Linearization illegal {"duration": "205.05225ms"} + logger.go:146: 2025-08-01T22:54:26.755+0900 INFO Skipping other validations as linearization failed main_test.go:122: linearization: illegal - logger.go:146: 2025-08-01T22:54:26.756+0900 INFO Saving robustness test report {"path": "/tmp/TestRobustnessRegression_Issue14370/1754056466755991000"} + logger.go:146: 2025-08-01T22:54:26.756+0900 INFO Saving robustness test report {"path": "/tmp/TestRobustnessRegression_Issue14370/1754056466755991000"} ... - logger.go:146: 2025-08-01T22:54:26.850+0900 INFO Saving visualization {"path": "/tmp/TestRobustnessRegression_Issue14370/1754056466755991000/history.html"} - logger.go:146: 2025-08-01T22:54:26.878+0900 INFO killing server... {"name": "TestRobustnessRegressionIssue14370-test-0"} - logger.go:146: 2025-08-01T22:54:26.878+0900 INFO stopping server... {"name": "TestRobustnessRegressionIssue14370-test-0"} - logger.go:146: 2025-08-01T22:54:26.886+0900 INFO stopped server. {"name": "TestRobustnessRegressionIssue14370-test-0"} + logger.go:146: 2025-08-01T22:54:26.850+0900 INFO Saving visualization {"path": "/tmp/TestRobustnessRegression_Issue14370/1754056466755991000/history.html"} + logger.go:146: 2025-08-01T22:54:26.878+0900 INFO killing server... {"name": "TestRobustnessRegressionIssue14370-test-0"} + logger.go:146: 2025-08-01T22:54:26.878+0900 INFO stopping server... {"name": "TestRobustnessRegressionIssue14370-test-0"} + logger.go:146: 2025-08-01T22:54:26.886+0900 INFO stopped server. {"name": "TestRobustnessRegressionIssue14370-test-0"} ``` Linearization issues are easiest to analyse via history visualization. @@ -219,7 +226,6 @@ All following requests are invalid (connected with red line) as they have revisi Etcd guarantees that revision is non-decreasing, so this shows a bug in etcd as there is no way revision should decrease. This is consistent with the root cause of [#14370] as it was an issue with the process crash causing the last write to be lost. -[#14370]: https://github.com/etcd-io/etcd/issues/14370 ### Example analysis of a watch issue @@ -228,6 +234,7 @@ To reproduce the issue by yourself run `make test-robustness-issue15271`. After a couple of tries robustness tests should fail with a logs `Broke watch guarantee` and save report locally. Example: + ``` logger.go:146: 2024-05-08T10:50:11.301+0200 INFO Validating linearizable operations {"timeout": "5m0s"} logger.go:146: 2024-05-08T10:50:15.754+0200 INFO Linearization success {"duration": "4.453346487s"} @@ -248,6 +255,7 @@ For client `4` that broke the watch guarantee open `/tmp/TestRobustnessRegressio Each line consists of json blob corresponding to a single watch request sent by the client. Look for events with `Revision` equal to revision mentioned in the first log with `Broke watch guarantee`, in this case, look for `"Revision":3,`. You should see watch responses where the `Revision` decreases like ones below: + ``` {"Events":[{"Type":"put-operation","Key":"key5","Value":{"Value":"793","Hash":0},"Revision":799,"IsCreate":false,"PrevValue":null}],"IsProgressNotify":false,"Revision":799,"Time":3202907249,"Error":""} {"Events":[{"Type":"put-operation","Key":"key4","Value":{"Value":"1","Hash":0},"Revision":3,"IsCreate":true,"PrevValue":null}, ... @@ -259,4 +267,3 @@ If you follow the `revision` throughout the file you should notice that watch re This is incorrect and breaks `Ordered` [watch API guarantees]. This is consistent with the root cause of [#15271] where the member reconnecting to cluster will resend revisions. -[#15271]: https://github.com/etcd-io/etcd/issues/15271 From a51251f636b90d44d8ed9e18e4baace89d667f2a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Jul 2025 18:57:54 +0000 Subject: [PATCH 0395/1068] build(deps): bump github/codeql-action from 3.29.3 to 3.29.4 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.3 to 3.29.4. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/d6bbdef45e766d081b84a2def353b0055f728d3e...4e828ff8d448a8a6e532957b1811f387a63867e8) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.29.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index d73af216e490..270458826e75 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@d6bbdef45e766d081b84a2def353b0055f728d3e # v3.29.3 + uses: github/codeql-action/init@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@d6bbdef45e766d081b84a2def353b0055f728d3e # v3.29.3 + uses: github/codeql-action/autobuild@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@d6bbdef45e766d081b84a2def353b0055f728d3e # v3.29.3 + uses: github/codeql-action/analyze@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index de20fc0d9d91..51dfcb3f0751 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@d6bbdef45e766d081b84a2def353b0055f728d3e # v3.29.3 + uses: github/codeql-action/upload-sarif@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4 with: sarif_file: results.sarif From 60500c75512f56a9f60477fd1ccd6f667637eb43 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 31 Jul 2025 16:45:53 +0200 Subject: [PATCH 0396/1068] Refactor robustness WAL reading logic to merge unparsed entries In the future merging for unparsed raft entries will allow us to glue raft histories using raft index. Signed-off-by: Marek Siarkowicz --- tests/robustness/report/wal.go | 111 +++---- tests/robustness/report/wal_test.go | 458 +++++++++++----------------- 2 files changed, 229 insertions(+), 340 deletions(-) diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index 83ad793f7e51..a8eb62eacc9a 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -20,9 +20,9 @@ import ( "io" "os" "path/filepath" + "reflect" "strings" - "github.com/google/go-cmp/cmp" "go.uber.org/zap" pb "go.etcd.io/etcd/api/v3/etcdserverpb" @@ -58,36 +58,51 @@ func PersistedRequestsCluster(lg *zap.Logger, cluster *e2e.EtcdProcessCluster) ( } func PersistedRequests(lg *zap.Logger, dataDirs []string) ([]model.EtcdRequest, error) { - return persistedRequests(lg, dataDirs, requestsPersistedInWAL) -} - -func persistedRequests(lg *zap.Logger, dataDirs []string, reader persistedRequestReaderFunc) ([]model.EtcdRequest, error) { if len(dataDirs) == 0 { return nil, errors.New("no data dirs") } - // Allow failure in minority of etcd cluster. - allowedFailures := len(dataDirs) / 2 - memberRequestHistories := make([][]model.EtcdRequest, 0, len(dataDirs)) - for _, dir := range dataDirs { - requests, err := reader(lg, dir) + entriesPersistedInWAL := make([][]raftpb.Entry, len(dataDirs)) + for i, dir := range dataDirs { + _, entries, err := ReadWAL(lg, dir) if err != nil { - if allowedFailures < 1 { - return nil, err - } - allowedFailures-- + lg.Error("Failed to read WAL", zap.Error(err), zap.String("data-dir", dir)) + } + entriesPersistedInWAL[i] = entries + } + entries, err := mergeMembersEntries(entriesPersistedInWAL) + if err != nil { + return nil, err + } + persistedRequests := make([]model.EtcdRequest, 0, len(entries)) + for _, e := range entries { + if e.Type != raftpb.EntryNormal { continue } - memberRequestHistories = append(memberRequestHistories, requests) + request, err := parseEntryNormal(e) + if err != nil { + return nil, err + } + if request != nil { + persistedRequests = append(persistedRequests, *request) + } + } + return persistedRequests, nil +} + +func mergeMembersEntries(memberEntries [][]raftpb.Entry) ([]raftpb.Entry, error) { + empty := 0 + for _, entries := range memberEntries { + if len(entries) == 0 { + empty++ + } } - // Return empty history if all histories were empty/failed to read. - if len(memberRequestHistories) == 0 { - return []model.EtcdRequest{}, nil + if empty == len(memberEntries) { + return nil, errors.New("no WAL entries matched") } // Each history collects votes from each history that it matches. - votes := make([]int, len(memberRequestHistories)) - lastDiff := "" - for i := 0; i < len(memberRequestHistories); i++ { - for j := 0; j < len(memberRequestHistories); j++ { + votes := make([]int, len(memberEntries)) + for i := 0; i < len(memberEntries); i++ { + for j := 0; j < len(memberEntries); j++ { if i == j { // history votes for itself votes[i]++ @@ -97,69 +112,40 @@ func persistedRequests(lg *zap.Logger, dataDirs []string, reader persistedReques // avoid comparing things twice continue } - first := memberRequestHistories[i] - second := memberRequestHistories[j] + first := memberEntries[i] + second := memberEntries[j] minLength := min(len(first), len(second)) - if diff := cmp.Diff(first[:minLength], second[:minLength]); diff == "" { + if reflect.DeepEqual(first[:minLength], second[:minLength]) { votes[i]++ votes[j]++ - } else { - lastDiff = diff } } } // Select longest history that has votes from quorum. - longestHistory := []model.EtcdRequest{} - quorum := len(dataDirs)/2 + 1 + longestHistory := []raftpb.Entry{} + quorum := len(memberEntries)/2 + 1 foundQuorum := false - for i := 0; i < len(memberRequestHistories); i++ { + for i := 0; i < len(memberEntries); i++ { if votes[i] < quorum { continue } // There cannot be incompabible histories supported by quorum - minLength := min(len(memberRequestHistories[i]), len(longestHistory)) - if diff := cmp.Diff(memberRequestHistories[i][:minLength], longestHistory[:minLength]); diff != "" { - lastDiff = diff + minLength := min(len(memberEntries[i]), len(longestHistory)) + if !reflect.DeepEqual(memberEntries[i][:minLength], longestHistory[:minLength]) { foundQuorum = false break } foundQuorum = true - if len(memberRequestHistories[i]) > len(longestHistory) { - longestHistory = memberRequestHistories[i] + if len(memberEntries[i]) > len(longestHistory) { + longestHistory = memberEntries[i] } } if !foundQuorum { - if lastDiff != "" { - fmt.Printf("Difference between WAL:\n%s", lastDiff) // zap doesn't nicely writes multiline strings like diff - } return nil, errors.New("unexpected differences between wal entries") } return longestHistory, nil } -type persistedRequestReaderFunc = func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) - -func requestsPersistedInWAL(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - _, ents, err := ReadWAL(lg, dataDir) - if err != nil { - return nil, err - } - requests := make([]model.EtcdRequest, 0, len(ents)) - for _, ent := range ents { - if ent.Type != raftpb.EntryNormal || len(ent.Data) == 0 { - continue - } - request, err := parseEntryNormal(ent) - if err != nil { - return nil, err - } - if request != nil { - requests = append(requests, *request) - } - } - return requests, nil -} - func ReadWAL(lg *zap.Logger, dataDir string) (state raftpb.HardState, ents []raftpb.Entry, err error) { walDir := datadir.ToWALDir(dataDir) repaired := false @@ -195,6 +181,9 @@ func ReadWAL(lg *zap.Logger, dataDir string) (state raftpb.HardState, ents []raf func parseEntryNormal(ent raftpb.Entry) (*model.EtcdRequest, error) { var raftReq pb.InternalRaftRequest + if len(ent.Data) == 0 { + return nil, nil + } if err := raftReq.Unmarshal(ent.Data); err != nil { var r pb.Request isV2Entry := pbutil.MaybeUnmarshal(&r, ent.Data) diff --git a/tests/robustness/report/wal_test.go b/tests/robustness/report/wal_test.go index e047f9076ff4..3d2824416877 100644 --- a/tests/robustness/report/wal_test.go +++ b/tests/robustness/report/wal_test.go @@ -15,349 +15,249 @@ package report import ( - "errors" "testing" "github.com/stretchr/testify/require" - "go.uber.org/zap" - "go.uber.org/zap/zaptest" - "go.etcd.io/etcd/tests/v3/robustness/model" + "go.etcd.io/raft/v3/raftpb" ) -func TestPersistedRequests(t *testing.T) { - lg := zaptest.NewLogger(t) - +func TestMergeMemberEntries(t *testing.T) { tcs := []struct { - name string - dataDirs []string - readerFunc func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) - expectErr string - expectRequests []model.EtcdRequest + name string + memberEntries [][]raftpb.Entry + expectErr string + expectEntries []raftpb.Entry }{ { - name: "Error when empty data dir", - dataDirs: []string{}, - expectErr: "no data dirs", - }, - { - name: "Success when no entries", - dataDirs: []string{"etcd0"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - return []model.EtcdRequest{}, nil - }, - expectRequests: []model.EtcdRequest{}, + name: "Error when empty data dir", + memberEntries: [][]raftpb.Entry{}, + expectErr: "no WAL entries matched", }, { - name: "Error when error on single node cluster", - dataDirs: []string{"etcd0"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - return []model.EtcdRequest{}, errors.New("error reading") + name: "Success when no entries", + memberEntries: [][]raftpb.Entry{ + {}, }, - expectErr: "error reading", + expectErr: "no WAL entries matched", }, { - name: "Success when one member cluster", - dataDirs: []string{"etcd0"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, - }, nil + name: "Success when one member cluster", + memberEntries: [][]raftpb.Entry{ + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, }, - expectRequests: []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + expectEntries: []raftpb.Entry{ + {Index: 1, Data: []byte("a")}, + {Index: 2, Data: []byte("b")}, + {Index: 3, Data: []byte("c")}, }, }, { - name: "Success when three members agree on entries", - dataDirs: []string{"etcd0", "etcd1", "etcd2"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, - }, nil + name: "Success when three members agree on entries", + memberEntries: [][]raftpb.Entry{ + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, }, - expectRequests: []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + expectEntries: []raftpb.Entry{ + {Index: 1, Data: []byte("a")}, + {Index: 2, Data: []byte("b")}, + {Index: 3, Data: []byte("c")}, }, }, { - name: "Success when three member have no entries", - dataDirs: []string{"etcd0", "etcd1", "etcd2"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - return []model.EtcdRequest{}, nil + name: "Success when three members have no entries", + memberEntries: [][]raftpb.Entry{ + {}, {}, {}, }, - expectRequests: []model.EtcdRequest{}, + expectErr: "no WAL entries matched", }, { - name: "Success when one member returned error in three node cluster", - dataDirs: []string{"etcd0", "etcd1", "etcd2"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - switch dataDir { - case "etcd1": - return []model.EtcdRequest{}, errors.New("error reading") - default: - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, - }, nil - } + name: "Success when one member has no entries in three node cluster", + memberEntries: [][]raftpb.Entry{ + {}, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, }, - expectRequests: []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + expectEntries: []raftpb.Entry{ + {Index: 1, Data: []byte("a")}, + {Index: 2, Data: []byte("b")}, + {Index: 3, Data: []byte("c")}, }, }, { - name: "Success when one member returned empty in three node cluster", - dataDirs: []string{"etcd0", "etcd1", "etcd2"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - switch dataDir { - case "etcd1": - return []model.EtcdRequest{}, nil - default: - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, - }, nil - } + name: "Error when two members have no entries in three node cluster", + memberEntries: [][]raftpb.Entry{ + {}, + {}, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, }, - expectRequests: []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + expectEntries: []raftpb.Entry{ + {Index: 1, Data: []byte("a")}, + {Index: 2, Data: []byte("b")}, + {Index: 3, Data: []byte("c")}, }, }, { - name: "Error when two members returned error in three node cluster", - dataDirs: []string{"etcd0", "etcd1", "etcd2"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - switch dataDir { - case "etcd1", "etcd2": - return []model.EtcdRequest{}, errors.New("error reading") - default: - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, - }, nil - } + name: "Success if members didn't observe whole history", + memberEntries: [][]raftpb.Entry{ + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + }, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + }, }, - expectErr: "error reading", - }, - { - name: "Success if members didn't observe whole history", - dataDirs: []string{"etcd0", "etcd1", "etcd2"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - switch dataDir { - case "etcd0": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, - }, nil - case "etcd1": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - }, nil - case "etcd2": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - }, nil - default: - panic("unexpected") - } - }, - expectRequests: []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + expectEntries: []raftpb.Entry{ + {Index: 1, Data: []byte("a")}, + {Index: 2, Data: []byte("b")}, + {Index: 3, Data: []byte("c")}, }, }, { - name: "Success if only one member observed history", - dataDirs: []string{"etcd0", "etcd1", "etcd2"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - switch dataDir { - case "etcd0": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, - }, nil - case "etcd1", "etcd2": - return []model.EtcdRequest{}, nil - default: - panic("unexpected") - } + name: "Success if only one member observed history", + memberEntries: [][]raftpb.Entry{ + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, + {}, + {}, }, - expectRequests: []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + expectEntries: []raftpb.Entry{ + {Index: 1, Data: []byte("a")}, + {Index: 2, Data: []byte("b")}, + {Index: 3, Data: []byte("c")}, }, }, { - name: "Success when one member observed different last entry", - dataDirs: []string{"etcd0", "etcd1", "etcd2"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - switch dataDir { - case "etcd0": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, - }, nil - case "etcd1": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, - }, nil - case "etcd2": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 4}}, - }, nil - default: - panic("unexpected") - } + name: "Success when one member observed different last entry", + memberEntries: [][]raftpb.Entry{ + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("x")}, + }, }, - expectRequests: []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, + expectEntries: []raftpb.Entry{ + {Index: 1, Data: []byte("a")}, + {Index: 2, Data: []byte("b")}, + {Index: 3, Data: []byte("c")}, }, }, { - name: "Error when one member didn't observe whole history and others observed different last entry", - dataDirs: []string{"etcd0", "etcd1", "etcd2"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - switch dataDir { - case "etcd0": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - }, nil - case "etcd1": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, - }, nil - case "etcd2": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 4}}, - }, nil - default: - panic("unexpected") - } - }, - expectErr: "unexpected differences between wal entries", - }, - { - name: "Error when three members observed different last entry", - dataDirs: []string{"etcd0", "etcd1", "etcd2"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - switch dataDir { - case "etcd0": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, - }, nil - case "etcd1": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 4}}, - }, nil - case "etcd2": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 5}}, - }, nil - default: - panic("unexpected") - } + name: "Error when one member didn't observe whole history and others observed different last entry", + memberEntries: [][]raftpb.Entry{ + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + }, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("x")}, + }, }, expectErr: "unexpected differences between wal entries", }, { - name: "Error when one member returned error and others differ on last entry", - dataDirs: []string{"etcd0", "etcd1", "etcd2"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - switch dataDir { - case "etcd0": - return []model.EtcdRequest{}, errors.New("error reading") - case "etcd1": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, - }, nil - case "etcd2": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 4}}, - }, nil - default: - panic("unexpected") - } + name: "Error when three members observed different last entry", + memberEntries: [][]raftpb.Entry{ + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("x")}, + }, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("y")}, + }, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("z")}, + }, }, expectErr: "unexpected differences between wal entries", }, { - name: "Error when one member observed empty history and others differ on last entry", - dataDirs: []string{"etcd0", "etcd1", "etcd2"}, - readerFunc: func(lg *zap.Logger, dataDir string) ([]model.EtcdRequest, error) { - switch dataDir { - case "etcd0": - return []model.EtcdRequest{}, nil - case "etcd1": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 3}}, - }, nil - case "etcd2": - return []model.EtcdRequest{ - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 1}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 2}}, - {Type: model.Compact, Compact: &model.CompactRequest{Revision: 4}}, - }, nil - default: - panic("unexpected") - } + name: "Error when one member observed empty history and others differ on last entry", + memberEntries: [][]raftpb.Entry{ + {}, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("x")}, + }, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Data: []byte("b")}, + raftpb.Entry{Index: 3, Data: []byte("y")}, + }, }, expectErr: "unexpected differences between wal entries", }, } for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - requests, err := persistedRequests(lg, tc.dataDirs, tc.readerFunc) + entries, err := mergeMembersEntries(tc.memberEntries) if tc.expectErr == "" { require.NoError(t, err) } else { require.ErrorContains(t, err, tc.expectErr) } - require.Equal(t, tc.expectRequests, requests) + require.Equal(t, tc.expectEntries, entries) }) } } From 00d7c1b62ea7ef7a7a7f3c844807010779e04553 Mon Sep 17 00:00:00 2001 From: Nont Date: Sat, 2 Aug 2025 12:30:15 -0500 Subject: [PATCH 0397/1068] Inject asserts in place of gofail Signed-off-by: Nont --- tests/antithesis/server/Dockerfile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/antithesis/server/Dockerfile b/tests/antithesis/server/Dockerfile index 8fa7b5efefaa..b8ec7ea9a0ee 100644 --- a/tests/antithesis/server/Dockerfile +++ b/tests/antithesis/server/Dockerfile @@ -7,6 +7,13 @@ FROM golang:$GO_VERSION ARG REF=main RUN git clone --depth=1 https://github.com/etcd-io/etcd.git --branch=${REF} /etcd +# inject assertions in place of gofail +WORKDIR /etcd/server +RUN go install golang.org/x/tools/cmd/goimports@latest +RUN go get github.com/antithesishq/antithesis-sdk-go@v0.4.4 +RUN for file in $(grep -rl '// gofail'); do sed -i 's|\/\/ gofail.*var \([[:alnum:]]*\) .*|assert\.Reachable("\1", nil)|' $file; goimports -w $file; done +RUN go mod tidy + # replace verify with antithesis WORKDIR /etcd/client/pkg/verify COPY inject/verify.patch verify.patch @@ -19,7 +26,7 @@ WORKDIR /etcd RUN go mod download # install instrumentor -RUN go get github.com/antithesishq/antithesis-sdk-go@a802e8810442e01d16b3e9df77d7ce3875e36e55 # v0.4.3 +RUN go get github.com/antithesishq/antithesis-sdk-go@v0.4.4 RUN go install github.com/antithesishq/antithesis-sdk-go/tools/antithesis-go-instrumentor@a802e8810442e01d16b3e9df77d7ce3875e36e55 # v0.4.3 RUN go mod tidy From c466628f65c3d73bd05d17c0f69d825a27aadaae Mon Sep 17 00:00:00 2001 From: Kota Date: Sun, 3 Aug 2025 14:24:22 +0900 Subject: [PATCH 0398/1068] tests: refactor AddTxnResponse in E2E test Signed-off-by: Kota --- tests/framework/e2e/etcdctl.go | 6 +++--- tests/framework/e2e/{e2e_test.go => etcdctl_test.go} | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) rename tests/framework/e2e/{e2e_test.go => etcdctl_test.go} (95%) diff --git a/tests/framework/e2e/etcdctl.go b/tests/framework/e2e/etcdctl.go index 29e07139668b..66b8170e1f83 100644 --- a/tests/framework/e2e/etcdctl.go +++ b/tests/framework/e2e/etcdctl.go @@ -250,13 +250,13 @@ func (ctl *EtcdctlV3) Txn(ctx context.Context, compares, ifSucess, ifFail []stri return nil, err } var resp clientv3.TxnResponse - AddTxnResponse(&resp, line) + addTxnResponse(&resp, line) err = json.Unmarshal([]byte(line), &resp) return &resp, err } -// AddTxnResponse looks for ResponseOp json tags and adds the objects for json decoding -func AddTxnResponse(resp *clientv3.TxnResponse, jsonData string) { +// addTxnResponse looks for ResponseOp json tags and adds the objects for json decoding +func addTxnResponse(resp *clientv3.TxnResponse, jsonData string) { if resp == nil { return } diff --git a/tests/framework/e2e/e2e_test.go b/tests/framework/e2e/etcdctl_test.go similarity index 95% rename from tests/framework/e2e/e2e_test.go rename to tests/framework/e2e/etcdctl_test.go index 00059df81ba9..3bc16e98169b 100644 --- a/tests/framework/e2e/e2e_test.go +++ b/tests/framework/e2e/etcdctl_test.go @@ -21,10 +21,10 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" ) -func Test_AddTxnResponse(t *testing.T) { +func Test_addTxnResponse(t *testing.T) { jsonData := `{"header":{"cluster_id":238453183653593855,"member_id":14578408409545168728,"revision":3,"raft_term":2},"succeeded":true,"responses":[{"Response":{"response_range":{"header":{"revision":3},"kvs":[{"key":"a2V5MQ==","create_revision":2,"mod_revision":2,"version":1,"value":"dmFsdWUx"}],"count":1}}},{"Response":{"response_range":{"header":{"revision":3},"kvs":[{"key":"a2V5Mg==","create_revision":3,"mod_revision":3,"version":1,"value":"dmFsdWUy"}],"count":1}}}]}` var resp clientv3.TxnResponse - AddTxnResponse(&resp, jsonData) + addTxnResponse(&resp, jsonData) err := json.Unmarshal([]byte(jsonData), &resp) if err != nil { t.Errorf("json Unmarshal failed. err: %s", err) From 550b61a55c128035df85a38dd8769f4f6b4dba0d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Aug 2025 00:08:09 +0000 Subject: [PATCH 0399/1068] build(deps): bump github/codeql-action from 3.29.4 to 3.29.5 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.4 to 3.29.5. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/4e828ff8d448a8a6e532957b1811f387a63867e8...51f77329afa6477de8c49fc9c7046c15b9a4e79d) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.29.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 270458826e75..9ce6bb03e126 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4 + uses: github/codeql-action/init@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4 + uses: github/codeql-action/autobuild@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4 + uses: github/codeql-action/analyze@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 51dfcb3f0751..83cd3f88971f 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4 + uses: github/codeql-action/upload-sarif@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5 with: sarif_file: results.sarif From 127b57d0ee377c6c68f9395d455127609b2f3e17 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Tue, 5 Aug 2025 14:02:59 +0000 Subject: [PATCH 0400/1068] refactor TestCacheWithoutPrefixGet for different initialization scenarios Signed-off-by: Peter Chang --- tests/integration/cache_test.go | 294 +++++++++++++++++++------------- 1 file changed, 179 insertions(+), 115 deletions(-) diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 2c5ed0f0be47..a18f1c175b14 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -487,22 +487,35 @@ func TestCacheWithPrefixWatch(t *testing.T) { } func TestCacheWithoutPrefixGet(t *testing.T) { - integration.BeforeTest(t) - clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) - t.Cleanup(func() { clus.Terminate(t) }) - - client := clus.Client(0) - - c, err := cache.New(client, "", cache.WithHistoryWindowSize(32)) - if err != nil { - t.Fatalf("cache.New: %v", err) - } - t.Cleanup(c.Close) - if err := c.WaitReady(t.Context()); err != nil { - t.Fatalf("cache.WaitReady: %v", err) + tcs := []struct { + name string + initialEvents, followupEvents []*clientv3.Event + }{ + {"empty cache", nil, TestGetEvents}, + {"partial load", filterEvents(TestGetEvents, revLessThan(4)), filterEvents(TestGetEvents, revGreaterEqual(4))}, + {"complete load", TestGetEvents, nil}, } - testGet(t, client.KV, c) + for _, tc := range tcs { + t.Run(tc.name, func(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + t.Cleanup(func() { clus.Terminate(t) }) + client, kv := clus.Client(0), clus.Client(0).KV + + testGet(t, kv, func() Getter { + c, err := cache.New(client, "") + if err != nil { + t.Fatalf("cache.New: %v", err) + } + t.Cleanup(c.Close) + if err := c.WaitReady(t.Context()); err != nil { + t.Fatalf("cache not ready: %v", err) + } + return c + }, tc.initialEvents, tc.followupEvents) + }) + } } func TestGet(t *testing.T) { @@ -511,12 +524,54 @@ func TestGet(t *testing.T) { t.Cleanup(func() { clus.Terminate(t) }) client := clus.Client(0) - testGet(t, client.KV, client.KV) + kv := client.KV + + testGet(t, kv, func() Getter { return kv }, TestGetEvents, nil) } -func testGet(t *testing.T, kv clientv3.KV, reader Getter) { +func testGet(t *testing.T, kv clientv3.KV, getReader func() Getter, initialEvents, followupEvents []*clientv3.Event) { ctx := t.Context() - rev2PutFooA := &clientv3.Event{ + t.Log("Setup") + lastRev := applyEvents(ctx, t, kv, initialEvents) + + reader := getReader() + if c, ok := reader.(*cache.Cache); ok { + if err := c.WaitForRevision(ctx, lastRev); err != nil { + t.Fatalf("cache never caught up to rev %d: %v", lastRev, err) + } + } + + lastRev = applyEvents(ctx, t, kv, followupEvents) + if c, ok := reader.(*cache.Cache); ok { + if err := c.WaitForRevision(ctx, lastRev); err != nil { + t.Fatalf("cache never caught up to rev %d: %v", lastRev, err) + } + } + + t.Log("Validate") + for _, tc := range getTestCases { + tc := tc + t.Run(tc.name, func(t *testing.T) { + resp, err := reader.Get(ctx, tc.key, tc.opts...) + if err != nil { + t.Fatalf("Get %q failed: %v", tc.key, err) + } + if diff := cmp.Diff(tc.wantKVs, resp.Kvs); diff != "" { + t.Fatalf("unexpected KVs (-want +got):\n%s", diff) + } + if resp.Header.Revision != tc.wantRevision { + t.Fatalf("revision: got %d, want %d", resp.Header.Revision, tc.wantRevision) + } + }) + } +} + +var TestGetEvents = []*clientv3.Event{ + Rev2PutFooA, Rev3PutFooB, Rev4PutFooC, Rev5PutFooD, Rev6DeleteFooD, Rev7TxnPutFooA, Rev7TxnPutFooB, Rev8PutFooA, +} + +var ( + Rev2PutFooA = &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/a"), @@ -526,7 +581,7 @@ func testGet(t *testing.T, kv clientv3.KV, reader Getter) { Version: 1, }, } - rev3PutFooB := &clientv3.Event{ + Rev3PutFooB = &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/b"), @@ -536,7 +591,7 @@ func testGet(t *testing.T, kv clientv3.KV, reader Getter) { Version: 1, }, } - rev4PutFooC := &clientv3.Event{ + Rev4PutFooC = &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/c"), @@ -546,7 +601,7 @@ func testGet(t *testing.T, kv clientv3.KV, reader Getter) { Version: 1, }, } - rev5PutFooD := &clientv3.Event{ + Rev5PutFooD = &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/d"), @@ -556,14 +611,14 @@ func testGet(t *testing.T, kv clientv3.KV, reader Getter) { Version: 1, }, } - rev6DeleteFooD := &clientv3.Event{ + Rev6DeleteFooD = &clientv3.Event{ Type: clientv3.EventTypeDelete, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/d"), ModRevision: 6, }, } - rev7TxnPutFooA := &clientv3.Event{ + Rev7TxnPutFooA = &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/a"), @@ -573,7 +628,7 @@ func testGet(t *testing.T, kv clientv3.KV, reader Getter) { Version: 2, }, } - rev7TxnPutFooB := &clientv3.Event{ + Rev7TxnPutFooB = &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/b"), @@ -583,7 +638,7 @@ func testGet(t *testing.T, kv clientv3.KV, reader Getter) { Version: 2, }, } - rev8PutFooA := &clientv3.Event{ + Rev8PutFooA = &clientv3.Event{ Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{ Key: []byte("/foo/a"), @@ -593,99 +648,52 @@ func testGet(t *testing.T, kv clientv3.KV, reader Getter) { Version: 3, }, } +) - tests := []struct { - name string - key string - opts []clientv3.OpOption - wantKVs []*mvccpb.KeyValue - wantRevision int64 - }{ - { - name: "single key /foo/a", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable()}, - wantKVs: []*mvccpb.KeyValue{rev8PutFooA.Kv}, - wantRevision: 8, - }, - { - name: "non‑existing key", - key: "/doesnotexist", - opts: []clientv3.OpOption{clientv3.WithSerializable()}, - wantKVs: nil, - wantRevision: 8, - }, - { - name: "prefix /foo", - key: "/foo", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix()}, - wantKVs: []*mvccpb.KeyValue{rev8PutFooA.Kv, rev7TxnPutFooB.Kv, rev4PutFooC.Kv}, - wantRevision: 8, - }, - { - name: "range [/foo/a, /foo/c)", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/foo/c")}, - wantKVs: []*mvccpb.KeyValue{rev8PutFooA.Kv, rev7TxnPutFooB.Kv}, - wantRevision: 8, - }, - { - name: "fromKey /foo/b", - key: "/foo/b", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithFromKey()}, - wantKVs: []*mvccpb.KeyValue{rev7TxnPutFooB.Kv, rev4PutFooC.Kv}, - wantRevision: 8, - }, - } - - t.Log("Setup") - if _, err := kv.Put(ctx, string(rev2PutFooA.Kv.Key), string(rev2PutFooA.Kv.Value)); err != nil { - t.Fatalf("Put: %v", err) - } - if _, err := kv.Put(ctx, string(rev3PutFooB.Kv.Key), string(rev3PutFooB.Kv.Value)); err != nil { - t.Fatalf("Put: %v", err) - } - if _, err := kv.Put(ctx, string(rev4PutFooC.Kv.Key), string(rev4PutFooC.Kv.Value)); err != nil { - t.Fatalf("Put: %v", err) - } - if _, err := kv.Put(ctx, string(rev5PutFooD.Kv.Key), string(rev5PutFooD.Kv.Value)); err != nil { - t.Fatalf("Put: %v", err) - } - if _, err := kv.Delete(ctx, string(rev6DeleteFooD.Kv.Key)); err != nil { - t.Fatalf("Delete: %v", err) - } - if _, err := kv.Txn(ctx).Then(clientv3.OpPut(string(rev7TxnPutFooA.Kv.Key), string(rev7TxnPutFooA.Kv.Value)), clientv3.OpPut(string(rev7TxnPutFooB.Kv.Key), string(rev7TxnPutFooB.Kv.Value))).Commit(); err != nil { - t.Fatalf("Txn: %v", err) - } - lastPutResp, err := kv.Put(ctx, string(rev8PutFooA.Kv.Key), string(rev8PutFooA.Kv.Value)) - if err != nil { - t.Fatalf("Put: %v", err) - } - - switch cacheReader := reader.(type) { - case *cache.Cache: - if err := cacheReader.WaitForRevision(ctx, lastPutResp.Header.Revision); err != nil { - t.Fatalf("cache never caught up to rev %d: %v", lastPutResp.Header.Revision, err) - } - default: - } +type getTestCase struct { + name string + key string + opts []clientv3.OpOption + wantKVs []*mvccpb.KeyValue + wantRevision int64 +} - t.Log("Validate") - for _, tc := range tests { - tc := tc - t.Run(tc.name, func(t *testing.T) { - resp, err := reader.Get(ctx, tc.key, tc.opts...) - if err != nil { - t.Fatalf("Get %q failed: %v", tc.key, err) - } - if diff := cmp.Diff(tc.wantKVs, resp.Kvs); diff != "" { - t.Fatalf("unexpected KVs (-want +got):\n%s", diff) - } - if resp.Header.Revision != tc.wantRevision { - t.Fatalf("revision: got %d, want %d", resp.Header.Revision, tc.wantRevision) - } - }) - } +var getTestCases = []getTestCase{ + { + name: "single key /foo/a", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable()}, + wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv}, + wantRevision: 8, + }, + { + name: "non-existing key", + key: "/doesnotexist", + opts: []clientv3.OpOption{clientv3.WithSerializable()}, + wantKVs: nil, + wantRevision: 8, + }, + { + name: "prefix /foo", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix()}, + wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv, Rev7TxnPutFooB.Kv, Rev4PutFooC.Kv}, + wantRevision: 8, + }, + { + name: "range [/foo/a, /foo/c)", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/foo/c")}, + wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv, Rev7TxnPutFooB.Kv}, + wantRevision: 8, + }, + { + name: "fromKey /foo/b", + key: "/foo/b", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithFromKey()}, + wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooB.Kv, Rev4PutFooC.Kv}, + wantRevision: 8, + }, } func TestCacheWithPrefixGet(t *testing.T) { @@ -1048,3 +1056,59 @@ func collectAndAssertAtomicEvents(t *testing.T, watch clientv3.WatchChan) (event } } } + +func applyEvents(ctx context.Context, t *testing.T, kv clientv3.KV, evs []*clientv3.Event) int64 { + var lastRev int64 + for _, batches := range batchEventsByRevision(evs) { + lastRev = applyEventBatch(ctx, t, kv, batches) + } + return lastRev +} + +func batchEventsByRevision(events []*clientv3.Event) [][]*clientv3.Event { + var batches [][]*clientv3.Event + if len(events) == 0 { + return batches + } + start := 0 + for end := 1; end < len(events); end++ { + if events[end].Kv.ModRevision != events[start].Kv.ModRevision { + batches = append(batches, events[start:end]) + start = end + } + } + batches = append(batches, events[start:]) + return batches +} + +func applyEventBatch(ctx context.Context, t *testing.T, kv clientv3.KV, batch []*clientv3.Event) int64 { + ops := make([]clientv3.Op, 0, len(batch)) + for _, event := range batch { + switch event.Type { + case clientv3.EventTypePut: + ops = append(ops, clientv3.OpPut(string(event.Kv.Key), string(event.Kv.Value))) + case clientv3.EventTypeDelete: + ops = append(ops, clientv3.OpDelete(string(event.Kv.Key))) + default: + t.Fatalf("unsupported event type: %v", event.Type) + } + } + resp, err := kv.Txn(ctx).Then(ops...).Commit() + if err != nil { + t.Fatalf("Txn failed: %v", err) + } + return resp.Header.Revision +} + +func filterEvents(evs []*clientv3.Event, pred func(int64) bool) []*clientv3.Event { + var out []*clientv3.Event + for _, ev := range evs { + if pred(ev.Kv.ModRevision) { + out = append(out, ev) + } + } + return out +} + +func revLessThan(n int64) func(int64) bool { return func(r int64) bool { return r < n } } +func revGreaterEqual(n int64) func(int64) bool { return func(r int64) bool { return r >= n } } From 2b845e0ba3566992af8f71b4ebeb03e3f62fcb6f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Aug 2025 23:16:07 +0000 Subject: [PATCH 0401/1068] build(deps): bump distroless/static-debian12 from `b7b9a69` to `2e114d2` Bumps distroless/static-debian12 from `b7b9a69` to `2e114d2`. --- updated-dependencies: - dependency-name: distroless/static-debian12 dependency-version: 2e114d20aa6371fd271f854aa3d6b2b7d2e70e797bb3ea44fb677afec60db22c dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f29109e4a0f1..f6ee26f2bdab 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG ARCH=amd64 -FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:b7b9a6953e7bed6baaf37329331051d7bdc1b99c885f6dbeb72d75b1baad54f9 +FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:2e114d20aa6371fd271f854aa3d6b2b7d2e70e797bb3ea44fb677afec60db22c ADD etcd /usr/local/bin/ ADD etcdctl /usr/local/bin/ From 1a23686438481f33d36395fbbca3195b42df8ff6 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 4 Aug 2025 19:26:03 +0200 Subject: [PATCH 0402/1068] Use raft index to merge WAL files allowing to merge incomplete histories Signed-off-by: Marek Siarkowicz --- tests/robustness/report/wal.go | 109 ++++++++++++++++++---------- tests/robustness/report/wal_test.go | 96 ++++++++++++++++++++---- 2 files changed, 150 insertions(+), 55 deletions(-) diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index a8eb62eacc9a..08663711c4fe 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -90,60 +90,89 @@ func PersistedRequests(lg *zap.Logger, dataDirs []string) ([]model.EtcdRequest, } func mergeMembersEntries(memberEntries [][]raftpb.Entry) ([]raftpb.Entry, error) { - empty := 0 for _, entries := range memberEntries { - if len(entries) == 0 { - empty++ + var lastIndex uint64 + for _, e := range entries { + if e.Index <= lastIndex { + return nil, fmt.Errorf("raft index should increase, got: %d, previous: %d", e.Index, lastIndex) + } + lastIndex = e.Index } } - if empty == len(memberEntries) { - return nil, errors.New("no WAL entries matched") - } - // Each history collects votes from each history that it matches. - votes := make([]int, len(memberEntries)) - for i := 0; i < len(memberEntries); i++ { - for j := 0; j < len(memberEntries); j++ { - if i == j { - // history votes for itself - votes[i]++ + memberIndices := make([]int, len(memberEntries)) + mergedHistory := []raftpb.Entry{} + var raftIndex uint64 + for { + // Find entry with raftIndex. + raftIndex++ + entriesLeft := false + for i, entries := range memberEntries { + memberIndex := memberIndices[i] + for memberIndex < len(entries) && entries[memberIndex].Index < raftIndex { + memberIndex++ + } + if memberIndex < len(entries) { + entriesLeft = true + } + memberIndices[i] = memberIndex + } + if !entriesLeft { + break + } + // Entries collects votes from matching entries. + votes := make([]int, len(memberEntries)) + for i := 0; i < len(memberEntries); i++ { + if len(memberEntries[i]) <= memberIndices[i] { continue } - if i > j { - // avoid comparing things twice + entry1 := memberEntries[i][memberIndices[i]] + if entry1.Index != raftIndex { continue } - first := memberEntries[i] - second := memberEntries[j] - minLength := min(len(first), len(second)) - if reflect.DeepEqual(first[:minLength], second[:minLength]) { - votes[i]++ - votes[j]++ + for j := i; j < len(memberEntries); j++ { + if i == j { + votes[i]++ + continue + } + if len(memberEntries[j]) <= memberIndices[j] { + continue + } + entry2 := memberEntries[j][memberIndices[j]] + if entry2.Index != raftIndex { + continue + } + if reflect.DeepEqual(entry1, entry2) { + votes[i]++ + votes[j]++ + } } } - } - // Select longest history that has votes from quorum. - longestHistory := []raftpb.Entry{} - quorum := len(memberEntries)/2 + 1 - foundQuorum := false - for i := 0; i < len(memberEntries); i++ { - if votes[i] < quorum { - continue + // Select entry with most votes + topVotes := 0 + for _, vote := range votes { + if vote > topVotes { + topVotes = vote + } } - // There cannot be incompabible histories supported by quorum - minLength := min(len(memberEntries[i]), len(longestHistory)) - if !reflect.DeepEqual(memberEntries[i][:minLength], longestHistory[:minLength]) { - foundQuorum = false - break + if topVotes == 0 { + return nil, fmt.Errorf("no entry for raft index %d", raftIndex) } - foundQuorum = true - if len(memberEntries[i]) > len(longestHistory) { - longestHistory = memberEntries[i] + var entryWithMostVotes *raftpb.Entry + for i, vote := range votes { + if vote != topVotes { + continue + } + if entryWithMostVotes != nil && !reflect.DeepEqual(*entryWithMostVotes, memberEntries[i][memberIndices[i]]) { + return nil, fmt.Errorf("mismatching entries on raft index %d", raftIndex) + } + entryWithMostVotes = &memberEntries[i][memberIndices[i]] } + mergedHistory = append(mergedHistory, *entryWithMostVotes) } - if !foundQuorum { - return nil, errors.New("unexpected differences between wal entries") + if len(mergedHistory) == 0 { + return nil, errors.New("no WAL entries matched") } - return longestHistory, nil + return mergedHistory, nil } func ReadWAL(lg *zap.Logger, dataDir string) (state raftpb.HardState, ents []raftpb.Entry, err error) { diff --git a/tests/robustness/report/wal_test.go b/tests/robustness/report/wal_test.go index 3d2824416877..5ff9f34e6e43 100644 --- a/tests/robustness/report/wal_test.go +++ b/tests/robustness/report/wal_test.go @@ -41,6 +41,36 @@ func TestMergeMemberEntries(t *testing.T) { }, expectErr: "no WAL entries matched", }, + { + name: "Error when one member cluster didn't observed index", + memberEntries: [][]raftpb.Entry{ + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, + }, + expectErr: "no entry for raft index 2", + }, + { + name: "Error when entries index unordered", + memberEntries: [][]raftpb.Entry{ + { + raftpb.Entry{Index: 3, Data: []byte("c")}, + raftpb.Entry{Index: 1, Data: []byte("a")}, + }, + }, + expectErr: "raft index should increase, got: 1, previous: 3", + }, + { + name: "Error when entries index duplicated", + memberEntries: [][]raftpb.Entry{ + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 1, Data: []byte("a")}, + }, + }, + expectErr: "raft index should increase, got: 1, previous: 1", + }, { name: "Success when one member cluster", memberEntries: [][]raftpb.Entry{ @@ -110,7 +140,7 @@ func TestMergeMemberEntries(t *testing.T) { }, }, { - name: "Error when two members have no entries in three node cluster", + name: "Success if two members have no entries in three node cluster", memberEntries: [][]raftpb.Entry{ {}, {}, @@ -132,14 +162,32 @@ func TestMergeMemberEntries(t *testing.T) { { raftpb.Entry{Index: 1, Data: []byte("a")}, raftpb.Entry{Index: 2, Data: []byte("b")}, + }, + { + raftpb.Entry{Index: 2, Data: []byte("b")}, raftpb.Entry{Index: 3, Data: []byte("c")}, }, + { + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, + }, + expectEntries: []raftpb.Entry{ + {Index: 1, Data: []byte("a")}, + {Index: 2, Data: []byte("b")}, + {Index: 3, Data: []byte("c")}, + }, + }, + { + name: "Success if members observed only one part of history", + memberEntries: [][]raftpb.Entry{ { raftpb.Entry{Index: 1, Data: []byte("a")}, + }, + { raftpb.Entry{Index: 2, Data: []byte("b")}, }, { - raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, }, }, expectEntries: []raftpb.Entry{ @@ -148,6 +196,24 @@ func TestMergeMemberEntries(t *testing.T) { {Index: 3, Data: []byte("c")}, }, }, + { + name: "Error when in three member cluster if no members observed index", + memberEntries: [][]raftpb.Entry{ + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, + { + raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, + }, + }, + expectErr: "no entry for raft index 2", + }, { name: "Success if only one member observed history", memberEntries: [][]raftpb.Entry{ @@ -208,45 +274,45 @@ func TestMergeMemberEntries(t *testing.T) { raftpb.Entry{Index: 3, Data: []byte("x")}, }, }, - expectErr: "unexpected differences between wal entries", + expectErr: "mismatching entries on raft index 3", }, { name: "Error when three members observed different last entry", memberEntries: [][]raftpb.Entry{ { raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("x")}, + raftpb.Entry{Index: 2, Data: []byte("x")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, }, { raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("y")}, + raftpb.Entry{Index: 2, Data: []byte("y")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, }, { raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("z")}, + raftpb.Entry{Index: 2, Data: []byte("z")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, }, }, - expectErr: "unexpected differences between wal entries", + expectErr: "mismatching entries on raft index 2", }, { name: "Error when one member observed empty history and others differ on last entry", memberEntries: [][]raftpb.Entry{ {}, { - raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 1, Data: []byte("x")}, raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("x")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, }, { - raftpb.Entry{Index: 1, Data: []byte("a")}, + raftpb.Entry{Index: 1, Data: []byte("y")}, raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("y")}, + raftpb.Entry{Index: 3, Data: []byte("c")}, }, }, - expectErr: "unexpected differences between wal entries", + expectErr: "mismatching entries on raft index 1", }, } for _, tc := range tcs { From 831a9d18bcb621d707fd8748c3d4dd13ae0d19b5 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Sun, 10 Aug 2025 10:25:53 +0100 Subject: [PATCH 0403/1068] Bump github.com/golang-jwt/jwt/v5 to v5.3.0 Signed-off-by: Benjamin Wang --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 2497d53c277f..86f74d701fef 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -46,7 +46,7 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.3 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.1.3 // indirect github.com/google/go-cmp v0.7.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 07a5bf9f50cc..1d79371bee12 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -27,8 +27,8 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.3 h1:kkGXqQOBSDDWRhWNXTFpqGSCMyh/PLnqUvMGJPDJDs0= -github.com/golang-jwt/jwt/v5 v5.2.3/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= +github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= diff --git a/go.mod b/go.mod index 01ef92646ba5..7c3be9b0acc9 100644 --- a/go.mod +++ b/go.mod @@ -50,7 +50,7 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.3 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.1.3 // indirect diff --git a/go.sum b/go.sum index de2e370b53e3..3102dcb7df38 100644 --- a/go.sum +++ b/go.sum @@ -45,8 +45,8 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.3 h1:kkGXqQOBSDDWRhWNXTFpqGSCMyh/PLnqUvMGJPDJDs0= -github.com/golang-jwt/jwt/v5 v5.2.3/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= +github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= diff --git a/server/go.mod b/server/go.mod index e2ef3fb78e41..9eefd0afe82a 100644 --- a/server/go.mod +++ b/server/go.mod @@ -9,7 +9,7 @@ require ( github.com/coreos/go-systemd/v22 v22.5.0 github.com/dustin/go-humanize v1.0.1 github.com/gogo/protobuf v1.3.2 - github.com/golang-jwt/jwt/v5 v5.2.3 + github.com/golang-jwt/jwt/v5 v5.3.0 github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 github.com/golang/protobuf v1.5.4 github.com/google/btree v1.1.3 diff --git a/server/go.sum b/server/go.sum index b4d526393fff..b6bf97545058 100644 --- a/server/go.sum +++ b/server/go.sum @@ -25,8 +25,8 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.3 h1:kkGXqQOBSDDWRhWNXTFpqGSCMyh/PLnqUvMGJPDJDs0= -github.com/golang-jwt/jwt/v5 v5.2.3/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= +github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= diff --git a/tests/go.mod b/tests/go.mod index 636701aacbc9..1da2a8d07a18 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -19,7 +19,7 @@ require ( github.com/anishathalye/porcupine v1.0.2 github.com/antithesishq/antithesis-sdk-go v0.4.3 github.com/coreos/go-semver v0.3.1 - github.com/golang-jwt/jwt/v5 v5.2.3 + github.com/golang-jwt/jwt/v5 v5.3.0 github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 diff --git a/tests/go.sum b/tests/go.sum index 2c7cb9d352ec..4f65c286ba03 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -51,8 +51,8 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.3 h1:kkGXqQOBSDDWRhWNXTFpqGSCMyh/PLnqUvMGJPDJDs0= -github.com/golang-jwt/jwt/v5 v5.2.3/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= +github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= From 481bd09a3e9f1e685d1292662ff6af2a6b4fa3db Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Thu, 24 Jul 2025 16:36:02 +0200 Subject: [PATCH 0404/1068] Move detailed trace analysis to helper structure Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/coverage_test.go | 298 +++++++++++++++++++-- tests/robustness/coverage/matchers_test.go | 152 +++++++++++ tests/robustness/coverage/modelers_test.go | 121 +++++++++ 3 files changed, 547 insertions(+), 24 deletions(-) create mode 100644 tests/robustness/coverage/matchers_test.go create mode 100644 tests/robustness/coverage/modelers_test.go diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index 9faf97eda03e..7d267f7fbce2 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -18,8 +18,11 @@ import ( "bytes" "encoding/json" "fmt" + "maps" "os" "path/filepath" + "slices" + "strconv" "strings" "testing" @@ -30,6 +33,117 @@ import ( "google.golang.org/protobuf/encoding/protojson" ) +type column struct { + name string + + // matcher encodes column with boolean values. + matcher Matcher + // modeler encodes column with arbitrary string values. + modeler Modeler + // Only one of matcher and modeler can be set. +} + +type method struct { + name string + + // matcher should be a tight filter that returns true only if the method was + // used to make a call to Etcd (that produced the matching trace). + matcher Matcher +} + +type refOp struct { + // args splits traces into buckets based on Matcher or Modeler results. + args []column + // methods tries to associate Matched with method name. + methods []method +} + +var referenceUsageOfEtcdAPI = map[string]refOp{ + "etcdserverpb.KV/Range": { + // All calls should go through etcd-k8s interface + args: []column{ + {name: "pattern", modeler: patternRange}, + {name: "limit", modeler: limit}, + {name: "limit", matcher: isLimitSet}, + {name: "rangeEnd", matcher: isRangeEndSet}, + {name: "rev", matcher: isRevisionSet}, + {name: "countOnly", matcher: isCountOnly}, + {name: "keysOnly", matcher: isKeysOnly}, + }, + methods: []method{ + { + name: "Healthcheck", + matcher: keyIsEqualStr("range_begin", "/registry/health"), + }, + { + name: "Compaction", + matcher: keyIsEqualStr("range_begin", "compact_rev_key"), + }, + { + name: "Get", + matcher: andMatcher( + keyIsEqualInt("limit", 1), + notMatcher(isRangeEndSet), + ), + }, + { + name: "Count", + matcher: andMatcher( + isCountOnly, + isRangeEndSet, + notMatcher(orMatcher(isKeysOnly, isLimitSet, isRevisionSet)), + ), + }, + { + name: "List", + matcher: andMatcher( + isRangeEndSet, + notMatcher(orMatcher(isKeysOnly, isCountOnly)), + ), + }, + { + name: "GetCurrentRevision", + matcher: andMatcher( + keyIsEqualInt("limit", 1), + isRangeEndSet, + notMatcher(orMatcher(isKeysOnly, isCountOnly, isRevisionSet)), + ), + }, + }, + }, + "etcdserverpb.KV/Txn": { + // All calls should go through etcd-k8s interface + args: []column{ + {name: "pattern", modeler: patternTXN}, + {name: "getOnFailure", matcher: keyIsEqualInt("failure_len", 1)}, + {name: "readOnly", matcher: isReadOnly}, + }, + methods: []method{ + { + name: "Compaction", + matcher: keyIsEqualStr("compare_first_key", "compact_rev_key"), + }, + { + name: "OptimisticPutOrDelete", + matcher: andMatcher(keyIsEqualInt("compare_len", 1), keyIsEqualInt("success_len", 1), notMatcher(isReadOnly)), + }, + }, + }, + "etcdserverpb.KV/Compact": { + // Compaction should move to using internal Etcd mechanism + // Discussed in https://github.com/kubernetes/kubernetes/issues/80513 + }, + "etcdserverpb.Watch/Watch": { + // Not part of the contract interface (yet) + }, + "etcdserverpb.Lease/LeaseGrant": { + // Used to manage masterleases and events + }, + "etcdserverpb.Maintenance/Status": { + // Used to expose database size on apiserver's metrics endpoint + }, +} + func TestInterfaceUse(t *testing.T) { files, err := os.ReadDir("testdata") if err != nil { @@ -60,39 +174,98 @@ func testInterfaceUse(t *testing.T, filename string) { } traces := dump.Result - callsByOperationName := make(map[string]int) + callsByOperationName := make(map[string][]*tracev1.ResourceSpans) for _, trace := range traces.GetResourceSpans() { - serviceName := getServiceName(trace) - if serviceName != "etcd" { + if getServiceName(trace) != "etcd" { continue } opName := getOperationName(trace) - callsByOperationName[opName]++ + // Skip put key=_test after healthcheck in command tests. + // https://github.com/kubernetes/kubernetes/blob/release-1.33/hack/lib/etcd.sh#L93 + if opName == "etcdserverpb.KV/Put" && isCommandTestHC(trace) { + continue + } + callsByOperationName[opName] = append(callsByOperationName[opName], trace) } + delete(callsByOperationName, "") t.Logf("\n%s", printableCallTable(callsByOperationName)) - knownMethodsUsedByKubernetes := map[string]bool{ - "etcdserverpb.KV/Range": true, // All calls should go through etcd-k8s interface - "etcdserverpb.KV/Txn": true, // All calls should go through etcd-k8s interface - "etcdserverpb.KV/Compact": true, // Compaction should move to using internal Etcd mechanism - "etcdserverpb.Watch/Watch": true, // Not part of the contract interface (yet) - "etcdserverpb.Lease/LeaseGrant": true, // Used to manage masterleases and events - "etcdserverpb.Maintenance/Status": true, // Used to expose database size on apiserver's metrics endpoint - } - for method := range knownMethodsUsedByKubernetes { - t.Run(method, func(t *testing.T) { - if _, ok := callsByOperationName[method]; !ok { - t.Errorf("expected %q method to be called at least once", method) + t.Run("only_expected_methods_were_called", func(t *testing.T) { + for opName, traces := range callsByOperationName { + if _, ok := referenceUsageOfEtcdAPI[opName]; !ok { + t.Logf("Example trace to the unknown method: %+v", traces[0]) + t.Errorf("unexpected %d calls to method: %s", len(traces), opName) + } + } + }) + + for op, td := range referenceUsageOfEtcdAPI { + t.Run(op, func(t *testing.T) { + if _, ok := callsByOperationName[op]; !ok { + t.Fatalf("expected %q method to be called at least once", op) + } + + if len(td.args) == 0 { + return + } + + methodGuess := make(map[string]string) + + res := make(map[string]int) + for _, trace := range callsByOperationName[op] { + model, acc := columsToBytes(trace, td.args) + key := string(append(model, acc...)) + if res[key] == 0 { + method := traceToInterfaceMethod(td.methods, trace) + if method == "" { + t.Errorf("New call pattern detected: %s(%s)", op, matchedBytesToDesciption(acc, td.args)) + } + methodGuess[key] = method + } + res[key]++ } + t.Logf("\n%s", printableMatcherTable(res, td.args, methodGuess)) }) } - t.Run("only_expected_methods_were_called", func(t *testing.T) { - for opName := range callsByOperationName { - if !knownMethodsUsedByKubernetes[opName] { - t.Errorf("method called outside the list: %s", opName) +} + +func columsToBytes(trace *tracev1.ResourceSpans, cols []column) (model, acc []byte) { + for _, col := range cols { + switch { + case col.matcher != nil: + if col.matcher(trace) { + acc = append(acc, 1) + } else { + acc = append(acc, 0) } + case col.modeler != nil: + model = append(model, modelerToByte(col.name, col.modeler(trace))) } - }) + } + return model, acc +} + +func matchedBytesToDesciption(matched []byte, cols []column) string { + res := make([]string, 0, len(cols)) + i := 0 + for _, col := range cols { + if col.modeler != nil { + continue + } + key := col.name + res = append(res, fmt.Sprintf("%s=%v", key, matched[i] == 1)) + i++ + } + return strings.Join(res, ",") +} + +func traceToInterfaceMethod(methodToMatched []method, trace *tracev1.ResourceSpans) string { + for _, mm := range methodToMatched { + if mm.matcher(trace) { + return mm.name + } + } + return "" } type Traces struct { @@ -128,7 +301,7 @@ func getOperationName(trace *tracev1.ResourceSpans) string { return "" } -func printableCallTable(callsByOperationName map[string]int) string { +func printableCallTable(callsByOperationName map[string][]*tracev1.ResourceSpans) string { buf := new(bytes.Buffer) cfgBuilder := tablewriter.NewConfigBuilder().WithRowAlignment(tw.AlignRight) table := tablewriter.NewTable(buf, tablewriter.WithConfig(cfgBuilder.Build())) @@ -136,10 +309,11 @@ func printableCallTable(callsByOperationName map[string]int) string { totalCalls := 0 for _, c := range callsByOperationName { - totalCalls += c + totalCalls += len(c) } - for opName, callCount := range callsByOperationName { + for opName, calls := range callsByOperationName { + callCount := len(calls) table.Append(opName, callCount, fmt.Sprintf("%.2f%%", float64(callCount*100)/float64(totalCalls))) } table.Footer("total", totalCalls, "100.00%") @@ -147,3 +321,79 @@ func printableCallTable(callsByOperationName map[string]int) string { table.Render() return buf.String() } + +func printableMatcherTable(res map[string]int, cols []column, methodGuess map[string]string) string { + keys := slices.Collect(maps.Keys(res)) + slices.Sort(keys) + + buf := new(bytes.Buffer) + width := 1 + len(cols) + 2 + alignment := make([]tw.Align, width) + for i, col := range cols { + if col.name == "pattern" { + alignment[1+i] = tw.AlignLeft + break + } + } + cfgBuilder := tablewriter.NewConfigBuilder(). + WithRowAlignment(tw.AlignRight). + Row().Alignment().WithPerColumn(alignment).Build() + table := tablewriter.NewTable(buf, tablewriter.WithConfig(cfgBuilder.Build())) + + hdr := make([]string, width) + hdr[0] = "method" + for i, col := range cols { + hdr[i+1] = col.name + } + hdr[len(hdr)-2] = "calls" + hdr[len(hdr)-1] = "percent" + table.Header(hdr) + + totalCalls := 0 + for _, c := range res { + totalCalls += c + } + + footer := make([]int, len(cols)) + for _, acc := range keys { + callCount := res[acc] + if callCount == 0 { + continue + } + rowPrefix := make([]string, len(cols)) + for i, col := range cols { + switch { + case col.matcher != nil: + if acc[i] == 1 { + rowPrefix[i] = "X" + } + case col.modeler != nil: + rowPrefix[i] = modelerValues[col.name][acc[i]] + } + if rowPrefix[i] != "" { + footer[i] += callCount + } + } + + table.Append(append( + []string{methodGuess[acc]}, + append(rowPrefix, + strconv.Itoa(callCount), + fmt.Sprintf("%.2f%%", float64(callCount*100)/float64(totalCalls)), + )...)) + } + + footerStr := make([]string, len(cols)) + for i := range footer { + footerStr[i] = strconv.Itoa(footer[i]) + } + table.Footer(append([]string{""}, + append( + footerStr, + strconv.Itoa(totalCalls), + "100.00%", + )...)) + + table.Render() + return buf.String() +} diff --git a/tests/robustness/coverage/matchers_test.go b/tests/robustness/coverage/matchers_test.go new file mode 100644 index 000000000000..62935eddedd9 --- /dev/null +++ b/tests/robustness/coverage/matchers_test.go @@ -0,0 +1,152 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package coverage_test + +import ( + tracev1 "go.opentelemetry.io/proto/otlp/trace/v1" +) + +// Matcher returns true if trace passes the filter. +type Matcher func(trace *tracev1.ResourceSpans) bool + +// isCommandTestHC matches trace produced by curl call to verify Etcd instance +// is working in command tests. +func isCommandTestHC(trace *tracev1.ResourceSpans) bool { + for _, scopeSpan := range trace.GetScopeSpans() { + for _, span := range scopeSpan.GetSpans() { + if span.GetName() != "put" { + continue + } + for _, attr := range span.GetAttributes() { + if attr.GetKey() == "key" { + return attr.GetValue().GetStringValue() == "_test" + } + } + } + } + return false +} + +//nolint:unparam +func keyIsEqualInt(key string, want int) Matcher { + return func(trace *tracev1.ResourceSpans) bool { + got, found := intAttr(trace, key) + return found && got == want + } +} + +func isLimitSet(trace *tracev1.ResourceSpans) bool { + limit, found := intAttr(trace, "limit") + return found && limit > 0 +} + +func isRevisionSet(trace *tracev1.ResourceSpans) bool { + rev, found := intAttr(trace, "rev") + return found && rev > 0 +} + +func intAttr(trace *tracev1.ResourceSpans, key string) (int, bool) { + for _, scopeSpan := range trace.GetScopeSpans() { + for _, span := range scopeSpan.GetSpans() { + for _, attr := range span.GetAttributes() { + if attr.GetKey() == key { + return int(attr.GetValue().GetIntValue()), true + } + } + } + } + return 0, false +} + +func keyIsEqualStr(key string, want string) Matcher { + return func(trace *tracev1.ResourceSpans) bool { + got, found := strAttr(trace, key) + return found && got == want + } +} + +func isRangeEndSet(trace *tracev1.ResourceSpans) bool { + rangeEnd, found := strAttr(trace, "range_end") + return found && len(rangeEnd) > 0 +} + +func strAttr(trace *tracev1.ResourceSpans, key string) (string, bool) { + for _, scopeSpan := range trace.GetScopeSpans() { + for _, span := range scopeSpan.GetSpans() { + for _, attr := range span.GetAttributes() { + if attr.GetKey() == key { + return attr.Value.GetStringValue(), true + } + } + } + } + return "", false +} + +func isReadOnly(trace *tracev1.ResourceSpans) bool { + isRO, found := boolAttr(trace, "read_only") + return found && isRO +} + +func isKeysOnly(trace *tracev1.ResourceSpans) bool { + isKeys, found := boolAttr(trace, "keys_only") + return found && isKeys +} + +func isCountOnly(trace *tracev1.ResourceSpans) bool { + isCount, found := boolAttr(trace, "count_only") + return found && isCount +} + +func boolAttr(trace *tracev1.ResourceSpans, key string) (bool, bool) { + for _, scopeSpan := range trace.GetScopeSpans() { + for _, span := range scopeSpan.GetSpans() { + for _, attr := range span.GetAttributes() { + if attr.GetKey() == key { + return attr.Value.GetBoolValue(), true + } + } + } + } + return false, false +} + +func orMatcher(l ...Matcher) Matcher { + return func(trace *tracev1.ResourceSpans) bool { + for _, m := range l { + if m(trace) { + return true + } + } + return false + } +} + +func andMatcher(l ...Matcher) Matcher { + return func(trace *tracev1.ResourceSpans) bool { + for _, m := range l { + if !m(trace) { + return false + } + } + return true + } +} + +func notMatcher(m Matcher) Matcher { + return func(trace *tracev1.ResourceSpans) bool { + return !m(trace) + } +} diff --git a/tests/robustness/coverage/modelers_test.go b/tests/robustness/coverage/modelers_test.go new file mode 100644 index 000000000000..df63b31e919d --- /dev/null +++ b/tests/robustness/coverage/modelers_test.go @@ -0,0 +1,121 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package coverage_test + +import ( + "strconv" + "strings" + + tracev1 "go.opentelemetry.io/proto/otlp/trace/v1" +) + +// Modeler extracts a value form a trace to use for grouping. +type Modeler func(trace *tracev1.ResourceSpans) string + +// modelerValues maps byte to a name of a bucket for each named Model. +// It is pre-filled with well-known values to facilitate sorting in +// deterministic order by byte value. +var modelerValues = map[string]*[256]string{ + "limit": { + 1: "0", + 2: "1", + 3: "500", + 4: "10000", + }, + "pattern": { + 1: "/registry", + 2: "/registry/", + 3: "/registry/{resource}", + 4: "/registry/{resource}/", + 5: "/registry/{resource}/{namespace}", + 6: "/registry/{resource}/{namespace}/", + 7: "/registry/{resource}/{namespace}/{name}", + 8: "/registry/{resource}/{namespace}/{name}/", + 9: "/registry/{api-group}/{resource}/{namespace}/{name}", + 10: "/registry/{api-group}/{resource}/{namespace}/{name}/", + 11: "/registry/health", + 12: "compact_rev_key", + }, +} + +func keyFromSlice(s *[256]string, val string) byte { + for i, v := range s { + if i == 0 { + continue + } + if v == val { + return byte(i) + } + if v == "" { + s[i] = val + return byte(i) + } + } + panic("too many keys from modeler") +} + +func modelerToByte(name string, key string) byte { + m := modelerValues[name] + if key == "" { + return 0 + } + return keyFromSlice(m, key) +} + +func limit(trace *tracev1.ResourceSpans) string { + limit, found := intAttr(trace, "limit") + if found && limit > 0 { + return strconv.Itoa(limit) + } + return "" +} + +func pattern(trace *tracev1.ResourceSpans, key string) string { + k, found := strAttr(trace, key) + suffix := "" + if strings.HasSuffix(k, "/") { + suffix = "/" + } + if found { + if k == "/registry/health" || k == "compact_rev_key" { + return k + } + if !strings.HasPrefix(k, "/registry") { + return "unexpected: " + k + } + switch strings.Count(strings.TrimRight(k, "/"), "/") { + case 1: + return "/registry" + suffix + case 2: + return "/registry/{resource}" + suffix + case 3: + return "/registry/{resource}/{namespace}" + suffix + case 4: + return "/registry/{resource}/{namespace}/{name}" + suffix + case 5: + return "/registry/{api-group}/{resource}/{namespace}/{name}" + suffix + } + return "unexpected: " + k + } + return "" +} + +func patternRange(trace *tracev1.ResourceSpans) string { + return pattern(trace, "range_begin") +} + +func patternTXN(trace *tracev1.ResourceSpans) string { + return pattern(trace, "compare_first_key") +} From 2ca76e20fc57b90819831294dfa1749ef478d72b Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Wed, 6 Aug 2025 20:02:15 +0000 Subject: [PATCH 0405/1068] cache: consolidate ErrKeyRangeInvalid assertion in TestCacheWithPrefixGet Signed-off-by: Peter Chang --- tests/integration/cache_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index a18f1c175b14..0a9de0323ecd 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -777,8 +777,8 @@ func TestCacheWithPrefixGet(t *testing.T) { t.Run(tc.name, func(t *testing.T) { resp, err := c.Get(ctx, tc.key, tc.opts...) if tc.expectError { - if err == nil { - t.Fatalf("expected error for Get %q under prefix /foo, got none", tc.key) + if !errors.Is(err, cache.ErrKeyRangeInvalid) { + t.Fatalf("expected ErrKeyRangeInvalid for Get %q, got: %v", tc.key, err) } return } From 9b9dae0a599123f0e5d46de583acc4b1e23ab5f0 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Sun, 10 Aug 2025 10:27:15 +0100 Subject: [PATCH 0406/1068] Bump go.opentelemetry.io/proto/otlp to v1.7.1 Signed-off-by: Benjamin Wang --- etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 12 ++++++------ go.mod | 6 +++--- go.sum | 12 ++++++------ server/go.mod | 6 +++--- server/go.sum | 12 ++++++------ tests/go.mod | 6 +++--- tests/go.sum | 12 ++++++------ 8 files changed, 36 insertions(+), 36 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 86f74d701fef..a9d81100cdfd 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -82,7 +82,7 @@ require ( go.opentelemetry.io/otel/metric v1.37.0 // indirect go.opentelemetry.io/otel/sdk v1.37.0 // indirect go.opentelemetry.io/otel/trace v1.37.0 // indirect - go.opentelemetry.io/proto/otlp v1.7.0 // indirect + go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/crypto v0.40.0 // indirect @@ -90,8 +90,8 @@ require ( golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect golang.org/x/time v0.12.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/grpc v1.74.2 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 1d79371bee12..2602d94ca23d 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -131,8 +131,8 @@ go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFh go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= -go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= -go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= +go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= +go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= 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= @@ -183,10 +183,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/go.mod b/go.mod index 7c3be9b0acc9..ff8427be64eb 100644 --- a/go.mod +++ b/go.mod @@ -90,15 +90,15 @@ require ( go.opentelemetry.io/otel/metric v1.37.0 // indirect go.opentelemetry.io/otel/sdk v1.37.0 // indirect go.opentelemetry.io/otel/trace v1.37.0 // indirect - go.opentelemetry.io/proto/otlp v1.7.0 // indirect + go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/crypto v0.40.0 // indirect golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.5.0 // indirect diff --git a/go.sum b/go.sum index 3102dcb7df38..75025a29dcca 100644 --- a/go.sum +++ b/go.sum @@ -170,8 +170,8 @@ go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFh go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= -go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= -go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= +go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= +go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= @@ -247,10 +247,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/server/go.mod b/server/go.mod index 9eefd0afe82a..bbf6ac42cf92 100644 --- a/server/go.mod +++ b/server/go.mod @@ -40,7 +40,7 @@ require ( golang.org/x/crypto v0.40.0 golang.org/x/net v0.42.0 golang.org/x/time v0.12.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 + google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 google.golang.org/grpc v1.74.2 google.golang.org/protobuf v1.36.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 @@ -67,12 +67,12 @@ require ( go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect - go.opentelemetry.io/proto/otlp v1.7.0 // indirect + go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index b6bf97545058..77c3b5a09493 100644 --- a/server/go.sum +++ b/server/go.sum @@ -116,8 +116,8 @@ go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFh go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= -go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= -go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= +go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= +go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= 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= @@ -167,10 +167,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/tests/go.mod b/tests/go.mod index 1da2a8d07a18..e7f948e9a72f 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -45,7 +45,7 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 go.opentelemetry.io/otel v1.37.0 go.opentelemetry.io/otel/sdk v1.37.0 - go.opentelemetry.io/proto/otlp v1.7.0 + go.opentelemetry.io/proto/otlp v1.7.1 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.40.0 golang.org/x/sync v0.16.0 @@ -100,8 +100,8 @@ require ( golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.5.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 4f65c286ba03..efeba12f31f9 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -176,8 +176,8 @@ go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFh go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= -go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= -go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= +go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= +go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= @@ -253,10 +253,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From c3e1c0a411b8a4f6984f3ead28bac1cbb7e9f099 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Thu, 7 Aug 2025 09:37:31 +0200 Subject: [PATCH 0407/1068] Always group by presumed method and key pattern Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/coverage_test.go | 166 +++++++++++---------- tests/robustness/coverage/modelers_test.go | 121 --------------- 2 files changed, 90 insertions(+), 197 deletions(-) delete mode 100644 tests/robustness/coverage/modelers_test.go diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index 7d267f7fbce2..d4ca35a8e4f7 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -18,10 +18,8 @@ import ( "bytes" "encoding/json" "fmt" - "maps" "os" "path/filepath" - "slices" "strconv" "strings" "testing" @@ -38,9 +36,6 @@ type column struct { // matcher encodes column with boolean values. matcher Matcher - // modeler encodes column with arbitrary string values. - modeler Modeler - // Only one of matcher and modeler can be set. } type method struct { @@ -56,20 +51,27 @@ type refOp struct { args []column // methods tries to associate Matched with method name. methods []method + + keyAttrName string +} + +type row struct { + method, pattern, args string } +const notMatched byte = ' ' + var referenceUsageOfEtcdAPI = map[string]refOp{ "etcdserverpb.KV/Range": { // All calls should go through etcd-k8s interface args: []column{ - {name: "pattern", modeler: patternRange}, - {name: "limit", modeler: limit}, {name: "limit", matcher: isLimitSet}, {name: "rangeEnd", matcher: isRangeEndSet}, {name: "rev", matcher: isRevisionSet}, {name: "countOnly", matcher: isCountOnly}, {name: "keysOnly", matcher: isKeysOnly}, }, + keyAttrName: "range_begin", methods: []method{ { name: "Healthcheck", @@ -114,10 +116,10 @@ var referenceUsageOfEtcdAPI = map[string]refOp{ "etcdserverpb.KV/Txn": { // All calls should go through etcd-k8s interface args: []column{ - {name: "pattern", modeler: patternTXN}, {name: "getOnFailure", matcher: keyIsEqualInt("failure_len", 1)}, {name: "readOnly", matcher: isReadOnly}, }, + keyAttrName: "compare_first_key", methods: []method{ { name: "Compaction", @@ -187,7 +189,10 @@ func testInterfaceUse(t *testing.T, filename string) { } callsByOperationName[opName] = append(callsByOperationName[opName], trace) } - delete(callsByOperationName, "") + if c := len(callsByOperationName[""]); c > 0 { + t.Logf("Found traces that did not go through gRPC: %d", c) + delete(callsByOperationName, "") // Ignoring them. + } t.Logf("\n%s", printableCallTable(callsByOperationName)) t.Run("only_expected_methods_were_called", func(t *testing.T) { @@ -209,63 +214,90 @@ func testInterfaceUse(t *testing.T, filename string) { return } - methodGuess := make(map[string]string) + // tracesWithNoMethod ensures that we print error only once when a + // new call pattern is found. + tracesWithNoMethod := make(map[string]bool) - res := make(map[string]int) + callCounts := make(map[row]int) for _, trace := range callsByOperationName[op] { - model, acc := columsToBytes(trace, td.args) - key := string(append(model, acc...)) - if res[key] == 0 { - method := traceToInterfaceMethod(td.methods, trace) - if method == "" { - t.Errorf("New call pattern detected: %s(%s)", op, matchedBytesToDesciption(acc, td.args)) - } - methodGuess[key] = method + args := columnsToArgs(trace, td.args) + + pattern, pFound := extractPattern(trace, td.keyAttrName) + if !pFound && !tracesWithNoMethod[args] { + t.Errorf("New key pattern detected: %s", pattern) + } + + method, mFound := extractMethod(td.methods, trace) + if !mFound && !tracesWithNoMethod[args] { + t.Errorf("New call pattern detected: %s(key=%s,%s)", op, pattern, argsToDescription(args, td.args)) + tracesWithNoMethod[args] = true } - res[key]++ + + callCounts[row{method, pattern, args}]++ } - t.Logf("\n%s", printableMatcherTable(res, td.args, methodGuess)) + + t.Logf("\n%s", printableMatcherTable(td.args, callCounts)) }) } } -func columsToBytes(trace *tracev1.ResourceSpans, cols []column) (model, acc []byte) { - for _, col := range cols { - switch { - case col.matcher != nil: - if col.matcher(trace) { - acc = append(acc, 1) - } else { - acc = append(acc, 0) - } - case col.modeler != nil: - model = append(model, modelerToByte(col.name, col.modeler(trace))) - } +func extractPattern(trace *tracev1.ResourceSpans, key string) (string, bool) { + k, found := strAttr(trace, key) + if !found { + return "", false + } + if k == "/registry/health" || k == "compact_rev_key" { + return k, true + } + if !strings.HasPrefix(k, "/registry") { + return k, false + } + suffix := "" + if strings.HasSuffix(k, "/") { + suffix = "/" + } + switch strings.Count(strings.TrimRight(k, "/"), "/") { + case 1: + return "/registry" + suffix, true + case 2: + return "/registry/{resource}" + suffix, true + case 3: + return "/registry/{resource}/{namespace}" + suffix, true + case 4: + return "/registry/{resource}/{namespace}/{name}" + suffix, true + case 5: + return "/registry/{api-group}/{resource}/{namespace}/{name}" + suffix, true } - return model, acc + return k, false } -func matchedBytesToDesciption(matched []byte, cols []column) string { - res := make([]string, 0, len(cols)) - i := 0 - for _, col := range cols { - if col.modeler != nil { - continue +func columnsToArgs(trace *tracev1.ResourceSpans, cols []column) string { + acc := make([]byte, len(cols)) + for i, col := range cols { + if col.matcher(trace) { + acc[i] = 'X' + } else { + acc[i] = notMatched } - key := col.name - res = append(res, fmt.Sprintf("%s=%v", key, matched[i] == 1)) - i++ } - return strings.Join(res, ",") + return string(acc) +} + +func argsToDescription(matched string, cols []column) string { + ret := make([]string, len(cols)) + for i, col := range cols { + ret[i] = fmt.Sprintf("%s=%v", col.name, matched[i] != notMatched) + } + return strings.Join(ret, ",") } -func traceToInterfaceMethod(methodToMatched []method, trace *tracev1.ResourceSpans) string { +func extractMethod(methodToMatched []method, trace *tracev1.ResourceSpans) (string, bool) { for _, mm := range methodToMatched { if mm.matcher(trace) { - return mm.name + return mm.name, true } } - return "" + return "", false } type Traces struct { @@ -322,19 +354,11 @@ func printableCallTable(callsByOperationName map[string][]*tracev1.ResourceSpans return buf.String() } -func printableMatcherTable(res map[string]int, cols []column, methodGuess map[string]string) string { - keys := slices.Collect(maps.Keys(res)) - slices.Sort(keys) - +func printableMatcherTable(cols []column, res map[row]int) string { buf := new(bytes.Buffer) - width := 1 + len(cols) + 2 + width := 2 + len(cols) + 2 alignment := make([]tw.Align, width) - for i, col := range cols { - if col.name == "pattern" { - alignment[1+i] = tw.AlignLeft - break - } - } + alignment[1] = tw.AlignLeft cfgBuilder := tablewriter.NewConfigBuilder(). WithRowAlignment(tw.AlignRight). Row().Alignment().WithPerColumn(alignment).Build() @@ -342,8 +366,9 @@ func printableMatcherTable(res map[string]int, cols []column, methodGuess map[st hdr := make([]string, width) hdr[0] = "method" + hdr[1] = "pattern" for i, col := range cols { - hdr[i+1] = col.name + hdr[i+2] = col.name } hdr[len(hdr)-2] = "calls" hdr[len(hdr)-1] = "percent" @@ -355,28 +380,17 @@ func printableMatcherTable(res map[string]int, cols []column, methodGuess map[st } footer := make([]int, len(cols)) - for _, acc := range keys { - callCount := res[acc] - if callCount == 0 { - continue - } + for r, callCount := range res { rowPrefix := make([]string, len(cols)) - for i, col := range cols { - switch { - case col.matcher != nil: - if acc[i] == 1 { - rowPrefix[i] = "X" - } - case col.modeler != nil: - rowPrefix[i] = modelerValues[col.name][acc[i]] - } - if rowPrefix[i] != "" { + for i := range cols { + rowPrefix[i] = string(r.args[i]) + if r.args[i] != notMatched { footer[i] += callCount } } table.Append(append( - []string{methodGuess[acc]}, + []string{r.method, r.pattern}, append(rowPrefix, strconv.Itoa(callCount), fmt.Sprintf("%.2f%%", float64(callCount*100)/float64(totalCalls)), @@ -387,7 +401,7 @@ func printableMatcherTable(res map[string]int, cols []column, methodGuess map[st for i := range footer { footerStr[i] = strconv.Itoa(footer[i]) } - table.Footer(append([]string{""}, + table.Footer(append([]string{"", ""}, append( footerStr, strconv.Itoa(totalCalls), diff --git a/tests/robustness/coverage/modelers_test.go b/tests/robustness/coverage/modelers_test.go deleted file mode 100644 index df63b31e919d..000000000000 --- a/tests/robustness/coverage/modelers_test.go +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2025 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package coverage_test - -import ( - "strconv" - "strings" - - tracev1 "go.opentelemetry.io/proto/otlp/trace/v1" -) - -// Modeler extracts a value form a trace to use for grouping. -type Modeler func(trace *tracev1.ResourceSpans) string - -// modelerValues maps byte to a name of a bucket for each named Model. -// It is pre-filled with well-known values to facilitate sorting in -// deterministic order by byte value. -var modelerValues = map[string]*[256]string{ - "limit": { - 1: "0", - 2: "1", - 3: "500", - 4: "10000", - }, - "pattern": { - 1: "/registry", - 2: "/registry/", - 3: "/registry/{resource}", - 4: "/registry/{resource}/", - 5: "/registry/{resource}/{namespace}", - 6: "/registry/{resource}/{namespace}/", - 7: "/registry/{resource}/{namespace}/{name}", - 8: "/registry/{resource}/{namespace}/{name}/", - 9: "/registry/{api-group}/{resource}/{namespace}/{name}", - 10: "/registry/{api-group}/{resource}/{namespace}/{name}/", - 11: "/registry/health", - 12: "compact_rev_key", - }, -} - -func keyFromSlice(s *[256]string, val string) byte { - for i, v := range s { - if i == 0 { - continue - } - if v == val { - return byte(i) - } - if v == "" { - s[i] = val - return byte(i) - } - } - panic("too many keys from modeler") -} - -func modelerToByte(name string, key string) byte { - m := modelerValues[name] - if key == "" { - return 0 - } - return keyFromSlice(m, key) -} - -func limit(trace *tracev1.ResourceSpans) string { - limit, found := intAttr(trace, "limit") - if found && limit > 0 { - return strconv.Itoa(limit) - } - return "" -} - -func pattern(trace *tracev1.ResourceSpans, key string) string { - k, found := strAttr(trace, key) - suffix := "" - if strings.HasSuffix(k, "/") { - suffix = "/" - } - if found { - if k == "/registry/health" || k == "compact_rev_key" { - return k - } - if !strings.HasPrefix(k, "/registry") { - return "unexpected: " + k - } - switch strings.Count(strings.TrimRight(k, "/"), "/") { - case 1: - return "/registry" + suffix - case 2: - return "/registry/{resource}" + suffix - case 3: - return "/registry/{resource}/{namespace}" + suffix - case 4: - return "/registry/{resource}/{namespace}/{name}" + suffix - case 5: - return "/registry/{api-group}/{resource}/{namespace}/{name}" + suffix - } - return "unexpected: " + k - } - return "" -} - -func patternRange(trace *tracev1.ResourceSpans) string { - return pattern(trace, "range_begin") -} - -func patternTXN(trace *tracev1.ResourceSpans) string { - return pattern(trace, "compare_first_key") -} From 64718ee2afb2acbd2aab618328692e17a7f28464 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Sun, 10 Aug 2025 10:29:09 +0100 Subject: [PATCH 0408/1068] Bump github.com/prometheus/client_golang to v1.23.0 Signed-off-by: Benjamin Wang --- cache/go.sum | 8 ++++---- client/v3/go.mod | 4 ++-- client/v3/go.sum | 8 ++++---- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- server/go.mod | 4 ++-- server/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 8 ++++---- 14 files changed, 44 insertions(+), 44 deletions(-) diff --git a/cache/go.sum b/cache/go.sum index 817d24bb3916..fad303c78131 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -33,14 +33,14 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= +github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/client/v3/go.mod b/client/v3/go.mod index a5604a0778e9..d5cdcd399ab5 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 - github.com/prometheus/client_golang v1.22.0 + github.com/prometheus/client_golang v1.23.0 github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 @@ -30,7 +30,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.65.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect go.opentelemetry.io/otel/sdk v1.37.0 // indirect go.opentelemetry.io/otel/trace v1.37.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index a7805d1a4483..f26b9bd62547 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -43,14 +43,14 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= +github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index cf08b9fd2e16..7656a87f0234 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -62,14 +62,14 @@ github.com/olekukonko/tablewriter v1.0.9 h1:XGwRsYLC2bY7bNd93Dk51bcPZksWZmLYuaTH github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= +github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= 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= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index a9d81100cdfd..b841fe2a9049 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -64,10 +64,10 @@ require ( github.com/olekukonko/errors v1.1.0 // indirect github.com/olekukonko/ll v0.0.9 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.22.0 // indirect + github.com/prometheus/client_golang v1.23.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.65.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 2602d94ca23d..633492b9b836 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -76,14 +76,14 @@ github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfB github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= +github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= 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= diff --git a/go.mod b/go.mod index ff8427be64eb..0b2f12afdd24 100644 --- a/go.mod +++ b/go.mod @@ -71,10 +71,10 @@ require ( github.com/olekukonko/ll v0.0.9 // indirect github.com/olekukonko/tablewriter v1.0.9 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.22.0 // indirect + github.com/prometheus/client_golang v1.23.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.65.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect diff --git a/go.sum b/go.sum index 75025a29dcca..aa6d2395068a 100644 --- a/go.sum +++ b/go.sum @@ -108,15 +108,15 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= +github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= 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= diff --git a/server/go.mod b/server/go.mod index bbf6ac42cf92..73f31f8c1156 100644 --- a/server/go.mod +++ b/server/go.mod @@ -18,7 +18,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 github.com/jonboulle/clockwork v0.5.0 - github.com/prometheus/client_golang v1.22.0 + github.com/prometheus/client_golang v1.23.0 github.com/prometheus/client_model v0.6.2 github.com/soheilhy/cmux v0.1.5 github.com/spf13/cobra v1.9.1 @@ -61,7 +61,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/common v0.65.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.7 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect diff --git a/server/go.sum b/server/go.sum index 77c3b5a09493..8101359f9f6e 100644 --- a/server/go.sum +++ b/server/go.sum @@ -64,14 +64,14 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= +github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= diff --git a/tests/go.mod b/tests/go.mod index e7f948e9a72f..acba6b194782 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -26,7 +26,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 github.com/olekukonko/tablewriter v1.0.9 - github.com/prometheus/client_golang v1.22.0 + github.com/prometheus/client_golang v1.23.0 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.65.0 github.com/soheilhy/cmux v0.1.5 @@ -83,7 +83,7 @@ require ( github.com/olekukonko/errors v1.1.0 // indirect github.com/olekukonko/ll v0.0.9 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/cobra v1.9.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index efeba12f31f9..cf2432f98ce0 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -114,15 +114,15 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= +github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= 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= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index cb291cd15771..2d148e5da9c2 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -152,10 +152,10 @@ require ( github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/polyfloyd/go-errorlint v1.7.1 // indirect - github.com/prometheus/client_golang v1.22.0 // indirect + github.com/prometheus/client_golang v1.23.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.65.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect github.com/quasilyte/gogrep v0.5.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 4afb7e4c04d6..006726717de2 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -353,14 +353,14 @@ github.com/polyfloyd/go-errorlint v1.7.1 h1:RyLVXIbosq1gBdk/pChWA8zWYLsq9UEw7a1L github.com/polyfloyd/go-errorlint v1.7.1/go.mod h1:aXjNb1x2TNhoLsk26iv1yl7a+zTnXPhwEMtEXukiLR8= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= +github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo= github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI= github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE= From 353e85c2f0a0fe75600a3014f22eb82c4eaddf59 Mon Sep 17 00:00:00 2001 From: Nont Date: Mon, 4 Aug 2025 21:53:40 -0500 Subject: [PATCH 0409/1068] Migrate grpc-logging to grpc-middleware v2 Signed-off-by: Nont --- bill-of-materials.json | 2 +- server/etcdmain/grpc_proxy.go | 11 +- server/etcdmain/grpc_proxy_logger.go | 100 +++++++++++++++++ server/etcdmain/grpc_proxy_logger_test.go | 129 ++++++++++++++++++++++ server/go.mod | 3 +- server/go.sum | 62 ----------- 6 files changed, 234 insertions(+), 73 deletions(-) create mode 100644 server/etcdmain/grpc_proxy_logger.go create mode 100644 server/etcdmain/grpc_proxy_logger_test.go diff --git a/bill-of-materials.json b/bill-of-materials.json index 8a601abd96c7..8991e0c877f9 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -216,7 +216,7 @@ ] }, { - "project": "github.com/grpc-ecosystem/go-grpc-middleware", + "project": "github.com/grpc-ecosystem/go-grpc-middleware/logging/settable", "licenses": [ { "type": "Apache License 2.0", diff --git a/server/etcdmain/grpc_proxy.go b/server/etcdmain/grpc_proxy.go index d012c1812167..67d5d671777b 100644 --- a/server/etcdmain/grpc_proxy.go +++ b/server/etcdmain/grpc_proxy.go @@ -29,9 +29,8 @@ import ( "path/filepath" "time" - grpc_zap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap" grpc_prometheus "github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus" - grpc_ctxtags "github.com/grpc-ecosystem/go-grpc-middleware/tags" + "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors" "github.com/prometheus/client_golang/prometheus" "github.com/soheilhy/cmux" "github.com/spf13/cobra" @@ -506,8 +505,6 @@ func newGRPCProxyServer(lg *zap.Logger, client *clientv3.Client) *grpc.Server { electionp := grpcproxy.NewElectionProxy(client) lockp := grpcproxy.NewLockProxy(client) - alwaysLoggingDeciderServer := func(ctx context.Context, fullMethodName string, servingObject any) bool { return true } - serverMetrics := grpc_prometheus.NewServerMetrics() prometheus.MustRegister(serverMetrics) @@ -519,12 +516,10 @@ func newGRPCProxyServer(lg *zap.Logger, client *clientv3.Client) *grpc.Server { } if grpcProxyEnableLogging { grpcChainStreamList = append(grpcChainStreamList, - grpc_ctxtags.StreamServerInterceptor(), - grpc_zap.PayloadStreamServerInterceptor(lg, alwaysLoggingDeciderServer), + interceptors.StreamServerInterceptor(reportable(lg)), ) grpcChainUnaryList = append(grpcChainUnaryList, - grpc_ctxtags.UnaryServerInterceptor(), - grpc_zap.PayloadUnaryServerInterceptor(lg, alwaysLoggingDeciderServer), + interceptors.UnaryServerInterceptor(reportable(lg)), ) } diff --git a/server/etcdmain/grpc_proxy_logger.go b/server/etcdmain/grpc_proxy_logger.go new file mode 100644 index 000000000000..285cf6ed29a7 --- /dev/null +++ b/server/etcdmain/grpc_proxy_logger.go @@ -0,0 +1,100 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package etcdmain + +import ( + "context" + "fmt" + "path" + "reflect" + "slices" + "time" + + "github.com/golang/protobuf/jsonpb" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors" + "go.uber.org/zap" + "google.golang.org/grpc/peer" +) + +// grpcProxyLogger implements the go-grpc-middleware v2 Reporter interface +type grpcProxyLogger struct { + logger *zap.Logger + fields []zap.Field +} + +var _ interceptors.Reporter = (*grpcProxyLogger)(nil) + +const ( + responseCallType = "response" + requestCallType = "request" +) + +func (r *grpcProxyLogger) PostCall(_ error, _ time.Duration) { + // no op - no post-call payload logging +} + +func (r *grpcProxyLogger) PostMsgReceive(payload any, err error, _ time.Duration) { + callType := requestCallType + f := logFieldsFromPayload(payload, err, callType) + r.logger.Info(fmt.Sprintf("received payload logged as grpc.%s.content field", callType), slices.Concat(f, r.fields)...) +} + +func (r *grpcProxyLogger) PostMsgSend(payload any, err error, _ time.Duration) { + callType := responseCallType + f := logFieldsFromPayload(payload, err, callType) + r.logger.Info(fmt.Sprintf("returned response payload logged as grpc.%s.content field", callType), slices.Concat(f, r.fields)...) +} + +func logFieldsFromPayload(payload any, err error, callType string) []zap.Field { + fields := []zap.Field{} + if err != nil { + fields = append(fields, zap.NamedError(fmt.Sprintf("grpc.%s.error", callType), err)) + } + p, ok := payload.(proto.Message) + if !ok { + fields = append(fields, zap.NamedError("msg.type.error", fmt.Errorf("payload is not a github.com/golang/protobuf/proto message"))) + } + msg, pErr := protoToJSON(p) + if pErr != nil { + fields = append(fields, zap.NamedError("msg.proto.error", fmt.Errorf("error when converting payload to logging json: %w", pErr))) + } + fields = append(fields, zap.String(fmt.Sprintf("grpc.%s.content", callType), msg)) + return fields +} + +func protoToJSON(msg proto.Message) (string, error) { + if reflect.ValueOf(msg).IsNil() { + return "", nil + } + marshaler := jsonpb.Marshaler{} + return marshaler.MarshalToString(msg) +} + +func reportable(lg *zap.Logger) interceptors.CommonReportableFunc { + return func(ctx context.Context, c interceptors.CallMeta) (interceptors.Reporter, context.Context) { + fields := []zap.Field{ + zap.String("grpc.service", path.Dir(c.FullMethod())[1:]), + zap.String("grpc.method", path.Base(c.FullMethod())), + } + if peer, ok := peer.FromContext(ctx); ok { + fields = append(fields, zap.String("peer.address", peer.Addr.String())) + } + return &grpcProxyLogger{ + logger: lg, + fields: fields, + }, ctx + } +} diff --git a/server/etcdmain/grpc_proxy_logger_test.go b/server/etcdmain/grpc_proxy_logger_test.go new file mode 100644 index 000000000000..9faed28299b8 --- /dev/null +++ b/server/etcdmain/grpc_proxy_logger_test.go @@ -0,0 +1,129 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package etcdmain + +import ( + "context" + "fmt" + "io" + "testing" + "time" + + "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors" + "github.com/grpc-ecosystem/go-grpc-middleware/v2/testing/testpb" + "github.com/stretchr/testify/suite" + "go.uber.org/zap" + "go.uber.org/zap/zaptest/observer" + "google.golang.org/grpc" +) + +type loggingPayloadSuite struct { + *testpb.InterceptorTestSuite + logger *zap.Logger + logs *observer.ObservedLogs +} + +func TestLoggingPayloadSuite(t *testing.T) { + observer, logs := observer.New(zap.InfoLevel) + logger := zap.New(observer) + s := &loggingPayloadSuite{ + InterceptorTestSuite: &testpb.InterceptorTestSuite{ + TestService: &testpb.TestPingService{}, + ServerOpts: []grpc.ServerOption{ + grpc.UnaryInterceptor(interceptors.UnaryServerInterceptor(reportable(logger))), + grpc.StreamInterceptor(interceptors.StreamServerInterceptor(reportable(logger))), + }, + }, + logs: logs, + logger: zap.New(observer), + } + suite.Run(t, s) +} + +func (s *loggingPayloadSuite) SetupTest() { + s.logs.TakeAll() // clear logs + s.Require().Empty(s.logs.TakeAll()) +} + +func (s *loggingPayloadSuite) TestPing_LogsBothRequestAndResponse() { + _, err := s.Client.Ping(s.SimpleCtx(), testpb.GoodPing) + s.Require().NoError(err) + s.Require().Len(s.logs.All(), 2) // request and response + s.assertField("grpc.request.content", `{"value":"something","sleepTimeMs":9999}`, 1) + s.assertField("grpc.response.content", `{"value":"something"}`, 1) +} + +func (s *loggingPayloadSuite) TestPingError_LogsError() { + _, err := s.Client.PingError(s.SimpleCtx(), &testpb.PingErrorRequest{Value: "something", ErrorCodeReturned: uint32(4)}) + s.Require().Error(err) + s.Require().Len(s.logs.All(), 2) // request and response + s.assertField("grpc.request.content", `{"value":"something","errorCodeReturned":4}`, 1) + s.assertField("grpc.response.content", ``, 1) + s.assertField("grpc.response.error", "rpc error: code = DeadlineExceeded desc = Userspace error", 1) +} + +func (s *loggingPayloadSuite) TestPingStream_LogsAllRequestsAndResponses() { + messagesExpected := 10 + stream, err := s.Client.PingStream(s.SimpleCtx()) + s.Require().NoError(err) + + for range messagesExpected { + s.Require().NoError(stream.Send(testpb.GoodPingStream)) + pong := &testpb.PingResponse{} + err := stream.RecvMsg(pong) + s.Require().NoError(err) + } + s.Require().NoError(stream.CloseSend()) + ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute) + defer cancel() + s.Require().NoError(waitUntil(200*time.Millisecond, ctx.Done(), func() error { + if len(s.logs.FilterFieldKey("grpc.request.error").All()) > 0 { + return nil + } + return fmt.Errorf("no EOF log yet") + })) + eof := s.logs.FilterFieldKey("grpc.request.error").All() + s.Len(eof, 1) + s.Equal(io.EOF.Error(), eof[0].ContextMap()["grpc.request.error"]) + s.assertField("grpc.request.content", `{"value":"something","sleepTimeMs":9999}`, messagesExpected+1) + s.assertField("grpc.response.content", `{"value":"something"}`, messagesExpected) +} + +func (s *loggingPayloadSuite) assertField(key, expectedValue string, expectedLineCount int) { + s.T().Helper() + filtered := s.logs.FilterFieldKey(key).All() + s.Require().Len(filtered, expectedLineCount) + actualValue, ok := filtered[0].ContextMap()[key].(string) + s.Require().True(ok) + s.Equal(expectedValue, actualValue) +} + +// waitUntil executes f every interval seconds until timeout or no error is returned from f. +func waitUntil(interval time.Duration, stopc <-chan struct{}, f func() error) error { + tick := time.NewTicker(interval) + defer tick.Stop() + + var err error + for { + if err = f(); err == nil { + return nil + } + select { + case <-stopc: + return err + case <-tick.C: + } + } +} diff --git a/server/go.mod b/server/go.mod index a7c7f37794b5..e2ef3fb78e41 100644 --- a/server/go.mod +++ b/server/go.mod @@ -14,8 +14,8 @@ require ( github.com/golang/protobuf v1.5.4 github.com/google/btree v1.1.3 github.com/google/go-cmp v0.7.0 - github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 + github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.22.0 @@ -56,7 +56,6 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect diff --git a/server/go.sum b/server/go.sum index e0fd8d6c1a17..b4d526393fff 100644 --- a/server/go.sum +++ b/server/go.sum @@ -1,14 +1,9 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -22,43 +17,28 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.2.3 h1:kkGXqQOBSDDWRhWNXTFpqGSCMyh/PLnqUvMGJPDJDs0= github.com/golang-jwt/jwt/v5 v5.2.3/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= @@ -73,8 +53,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -83,14 +61,11 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= @@ -100,7 +75,6 @@ github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoG github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= @@ -111,9 +85,6 @@ github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= @@ -147,13 +118,10 @@ go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mx go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= 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.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= @@ -165,16 +133,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -182,18 +142,13 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= @@ -205,10 +160,6 @@ golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -216,20 +167,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= @@ -239,11 +180,8 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= From 1cae9cb68725c036ff020f99c7a96ae4fd97cdb9 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Sun, 10 Aug 2025 10:31:05 +0100 Subject: [PATCH 0410/1068] Bump sigs.k8s.io/yaml to v1.6.0 Signed-off-by: Benjamin Wang --- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/client/v3/go.mod b/client/v3/go.mod index d5cdcd399ab5..8f61d06b83bf 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -14,7 +14,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 google.golang.org/grpc v1.74.2 - sigs.k8s.io/yaml v1.5.0 + sigs.k8s.io/yaml v1.6.0 ) require ( diff --git a/client/v3/go.sum b/client/v3/go.sum index f26b9bd62547..b2a7491d5a2a 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -123,5 +123,5 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= -sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= +sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= +sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index b841fe2a9049..685b2f1f67d1 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -96,5 +96,5 @@ require ( google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - sigs.k8s.io/yaml v1.5.0 // indirect + sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 633492b9b836..22523a695e35 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -199,5 +199,5 @@ gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYs gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= -sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= +sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= +sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/go.mod b/go.mod index 0b2f12afdd24..d183d78bec3b 100644 --- a/go.mod +++ b/go.mod @@ -101,5 +101,5 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - sigs.k8s.io/yaml v1.5.0 // indirect + sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/go.sum b/go.sum index aa6d2395068a..83e3b321c07b 100644 --- a/go.sum +++ b/go.sum @@ -271,5 +271,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= -sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= +sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= +sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/server/go.mod b/server/go.mod index 73f31f8c1156..e44503306b5c 100644 --- a/server/go.mod +++ b/server/go.mod @@ -44,7 +44,7 @@ require ( google.golang.org/grpc v1.74.2 google.golang.org/protobuf v1.36.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 - sigs.k8s.io/yaml v1.5.0 + sigs.k8s.io/yaml v1.6.0 ) require ( diff --git a/server/go.sum b/server/go.sum index 8101359f9f6e..da43f7b28f21 100644 --- a/server/go.sum +++ b/server/go.sum @@ -183,5 +183,5 @@ gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYs gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= -sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= +sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= +sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/tests/go.mod b/tests/go.mod index acba6b194782..acfa29be49cc 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -104,5 +104,5 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - sigs.k8s.io/yaml v1.5.0 // indirect + sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/tests/go.sum b/tests/go.sum index cf2432f98ce0..27b4d631b9f5 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -277,5 +277,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= -sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= +sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= +sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= From 9472352a2765ef0dde92963eaa5be4be20c7e200 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Aug 2025 00:09:27 +0000 Subject: [PATCH 0411/1068] build(deps): bump docker/login-action from 3.4.0 to 3.5.0 Bumps [docker/login-action](https://github.com/docker/login-action) from 3.4.0 to 3.5.0. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/74a5d142397b4f367a81961eba4e8cd7edddf772...184bdaa0721073962dff0199f1fb9940f07167d1) --- updated-dependencies: - dependency-name: docker/login-action dependency-version: 3.5.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index ffba5e6c738d..9c64672cf0c0 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -51,7 +51,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Login to Antithesis Docker Registry - uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 + uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0 with: registry: ${{ env.REGISTRY }} username: _json_key From b1f2346a171b92100dfdb0a1902d0993ee6087cd Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Sun, 10 Aug 2025 10:45:08 +0100 Subject: [PATCH 0412/1068] Bump google.golang.org/genproto/googleapis/rpc to v0.0.0-20250728155136-f173205681a0 Signed-off-by: Benjamin Wang --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 14 files changed, 21 insertions(+), 21 deletions(-) diff --git a/api/go.mod b/api/go.mod index c5709513436a..a1bb4ada8fe7 100644 --- a/api/go.mod +++ b/api/go.mod @@ -24,7 +24,7 @@ require ( golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 8f36ccae9c95..2db26e0533cc 100644 --- a/api/go.sum +++ b/api/go.sum @@ -75,8 +75,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/cache/go.mod b/cache/go.mod index 0701aed51865..b56c4d522928 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -23,7 +23,7 @@ require ( golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/grpc v1.74.2 // indirect google.golang.org/protobuf v1.36.6 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index fad303c78131..ae4caec0d113 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -96,8 +96,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/client/v3/go.mod b/client/v3/go.mod index 8f61d06b83bf..13c2ccd9ae91 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -40,7 +40,7 @@ require ( golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index b2a7491d5a2a..e425a6c29bc3 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -112,8 +112,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 0d4435eb8a8f..621b7b2e08da 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -43,7 +43,7 @@ require ( golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 7656a87f0234..9e59948e9a73 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -139,8 +139,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/pkg/go.mod b/pkg/go.mod index d7b2c9de0733..695c4d89f935 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -27,7 +27,7 @@ require ( golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index b780cceca033..a44832afa2fa 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -60,8 +60,8 @@ golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 2d148e5da9c2..614508618d58 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -224,7 +224,7 @@ require ( golang.org/x/text v0.27.0 // indirect golang.org/x/tools v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/grpc v1.74.2 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 006726717de2..2ab0b09539e4 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -688,8 +688,8 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 013806191e3c..61b72e83da92 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -20,6 +20,6 @@ require ( golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/grpc v1.74.2 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 793995d68028..1df068c4c286 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1842,8 +1842,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= From 9049cdeafc715bd555c3f13b39b61989babfe4c4 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Fri, 8 Aug 2025 15:02:58 +0800 Subject: [PATCH 0413/1068] add e2e to reproduce issue 18667 Signed-off-by: shenmu.wy --- tests/e2e/reproduce_18667_test.go | 85 +++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 tests/e2e/reproduce_18667_test.go diff --git a/tests/e2e/reproduce_18667_test.go b/tests/e2e/reproduce_18667_test.go new file mode 100644 index 000000000000..e7ac651cff7e --- /dev/null +++ b/tests/e2e/reproduce_18667_test.go @@ -0,0 +1,85 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package e2e + +import ( + "fmt" + "math/rand" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" + clientv3 "go.etcd.io/etcd/client/v3" + "go.etcd.io/etcd/tests/v3/framework/e2e" +) + +// TestReproduce18667 reproduces the issue: https://github.com/etcd-io/etcd/issues/18667. +func TestReproduce18667(t *testing.T) { + e2e.BeforeTest(t) + + ctx := t.Context() + clus, cerr := e2e.NewEtcdProcessCluster(ctx, t, + e2e.WithClusterSize(3), + e2e.WithSnapshotCount(1000), + ) + require.NoError(t, cerr) + + t.Cleanup(func() { clus.Stop() }) + + targetIdx := rand.Intn(3) + cli := newClient(t, clus.Procs[targetIdx].EndpointsGRPC(), e2e.ClientConfig{}) + + t.Log("Put key-value [k1...k20]") + var revision int64 + for i := 1; i <= 20; i++ { + resp, err := cli.Put(ctx, fmt.Sprintf("k%d", i), fmt.Sprintf("v%d", i)) + require.NoError(t, err) + revision = resp.Header.Revision + } + + t.Logf("Compact on the latest revision %d", revision) + _, err := cli.Compact(ctx, revision) + require.NoError(t, err) + + t.Log("Send txn to make data inconsistent among etcdservers") + cmp := clientv3.Compare(clientv3.Value("k1"), "=", "v1") + then := []clientv3.Op{ + clientv3.OpPut("k2", "foo"), + clientv3.OpGet("k1", clientv3.WithRev(revision-1)), + } + _, err = cli.Txn(ctx).If(cmp).Then(then...).Commit() + require.Error(t, err) + require.Contains(t, err.Error(), rpctypes.ErrCompacted.Error()) + + t.Log("Verify all members have consistent data on key 'k2'") + for i := 0; i < clus.Cfg.ClusterSize; i++ { + idx := (targetIdx + i) % clus.Cfg.ClusterSize + cli = newClient(t, clus.Procs[idx].EndpointsGRPC(), e2e.ClientConfig{}) + resp, err := cli.Get(ctx, "k2") + require.NoError(t, err) + // TODO: All members are supposed to have the same key/value pair k2:v2. + // However, the issue https://github.com/etcd-io/etcd/issues/18667 + // hasn't been resolved yet, so some members hold the wrong data + // "k2:foo". Once the issue is fixed, we should remove the if-else + // branch below, and all member should have consistent data k2:v2. + if i == 0 { + assert.Equal(t, "v2", string(resp.Kvs[0].Value)) + } else { + assert.Equal(t, "foo", string(resp.Kvs[0].Value)) + } + } +} From e7e1d1e66f9e6bb86e3d2b82a6fb4e084d385821 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Thu, 7 Aug 2025 22:18:58 +0000 Subject: [PATCH 0414/1068] cache: refactor ready status using isReady with readyChan and mutex to prevent races Signed-off-by: Peter Chang --- cache/cache.go | 34 ++++++----------------- cache/ready.go | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++ cache/store.go | 4 +-- 3 files changed, 83 insertions(+), 28 deletions(-) create mode 100644 cache/ready.go diff --git a/cache/cache.go b/cache/cache.go index dca2365e4dfc..8b9abd44a774 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -42,7 +42,7 @@ type Cache struct { kv clientv3.KV demux *demux // demux fans incoming events out to active watchers and manages resync. store *store // last‑observed snapshot - ready chan struct{} + ready *ready stop context.CancelFunc waitGroup sync.WaitGroup internalCtx context.Context @@ -68,7 +68,7 @@ func New(client *clientv3.Client, prefix string, opts ...Option) (*Cache, error) watcher: client.Watcher, kv: client.KV, store: newStore(), - ready: make(chan struct{}), + ready: newReady(), stop: cancel, internalCtx: internalCtx, } @@ -172,24 +172,14 @@ func (c *Cache) Get(ctx context.Context, key string, opts ...clientv3.OpOption) }, nil } -// Ready reports whether the cache has finished its initial load. +// Ready returns true if the snapshot has been loaded and the first watch has been confirmed. func (c *Cache) Ready() bool { - select { - case <-c.ready: - return true - default: - return false - } + return c.ready.Ready() } // WaitReady blocks until the cache is ready or the ctx is cancelled. func (c *Cache) WaitReady(ctx context.Context) error { - select { - case <-c.ready: - return ctx.Err() - case <-ctx.Done(): - return ctx.Err() - } + return c.ready.WaitReady(ctx) } func (c *Cache) WaitForRevision(ctx context.Context, rev int64) error { @@ -259,17 +249,17 @@ func (c *Cache) watch(ctx context.Context, rev int64) error { ) for resp := range watchCh { - readyOnce.Do(func() { close(c.ready) }) + readyOnce.Do(func() { c.ready.Set() }) if err := resp.Err(); err != nil { + c.ready.Reset() c.demux.Purge() - c.resetReady() c.store.Reset() return err } if err := c.store.Apply(resp.Events); err != nil { + c.ready.Reset() c.demux.Purge() - c.resetReady() c.store.Reset() return err } @@ -282,14 +272,6 @@ func (c *Cache) watch(ctx context.Context, rev int64) error { } } -func (c *Cache) resetReady() { - select { - case <-c.ready: - c.ready = make(chan struct{}) - default: - } -} - func (c *Cache) validateWatch(key string, op clientv3.Op) (pred KeyPredicate, err error) { switch { case op.IsPrevKV(): diff --git a/cache/ready.go b/cache/ready.go new file mode 100644 index 000000000000..96a1c6883cd4 --- /dev/null +++ b/cache/ready.go @@ -0,0 +1,73 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cache + +import ( + "context" + "sync" +) + +// ready tracks the transition from “not ready” → “ready” and allows waiters to block +// until the first transition has happened, and to be reset on error. +type ready struct { + mu sync.Mutex + isReady bool + readyChan chan struct{} // closed exactly once per ready transition +} + +func newReady() *ready { + return &ready{readyChan: make(chan struct{})} +} + +func (r *ready) Ready() bool { + r.mu.Lock() + defer r.mu.Unlock() + return r.isReady +} + +func (r *ready) WaitReady(ctx context.Context) error { + r.mu.Lock() + ch := r.readyChan + ready := r.isReady + r.mu.Unlock() + + if ready { + return nil + } + select { + case <-ch: + return ctx.Err() + case <-ctx.Done(): + return ctx.Err() + } +} + +func (r *ready) Set() { + r.mu.Lock() + defer r.mu.Unlock() + if !r.isReady { + r.isReady = true + close(r.readyChan) + } +} + +func (r *ready) Reset() { + r.mu.Lock() + defer r.mu.Unlock() + if r.isReady { + r.isReady = false + r.readyChan = make(chan struct{}) + } +} diff --git a/cache/store.go b/cache/store.go index 79e863d76794..1bea4a1f1146 100644 --- a/cache/store.go +++ b/cache/store.go @@ -24,7 +24,7 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" ) -var ErrNotInitialized = fmt.Errorf("cache: store not initialized") +var ErrNotReady = fmt.Errorf("cache: store not ready") type store struct { mu sync.RWMutex @@ -41,7 +41,7 @@ func (s *store) Get(startKey, endKey []byte) ([]*mvccpb.KeyValue, int64, error) defer s.mu.RUnlock() if s.latestRev == 0 { - return nil, 0, ErrNotInitialized + return nil, 0, ErrNotReady } var out []*mvccpb.KeyValue From 1a82bd7ccbd92193fb7f8441ea32fbb8a0c0692a Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Sun, 10 Aug 2025 10:53:49 +0100 Subject: [PATCH 0415/1068] Bump google.golang.org/genproto/googleapis/api to v0.0.0-20250728155136-f173205681a0 Signed-off-by: Benjamin Wang --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/api/go.mod b/api/go.mod index a1bb4ada8fe7..40e04821bdc3 100644 --- a/api/go.mod +++ b/api/go.mod @@ -10,7 +10,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 github.com/stretchr/testify v1.10.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 + google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 google.golang.org/grpc v1.74.2 google.golang.org/protobuf v1.36.6 ) diff --git a/api/go.sum b/api/go.sum index 2db26e0533cc..cd8bc821d551 100644 --- a/api/go.sum +++ b/api/go.sum @@ -73,8 +73,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= diff --git a/cache/go.mod b/cache/go.mod index b56c4d522928..f3e7bcd6f2d6 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -22,7 +22,7 @@ require ( golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/grpc v1.74.2 // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/cache/go.sum b/cache/go.sum index ae4caec0d113..6260175ed512 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -94,8 +94,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= diff --git a/client/v3/go.mod b/client/v3/go.mod index 13c2ccd9ae91..9d61962ba104 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -39,7 +39,7 @@ require ( golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index e425a6c29bc3..dd832364a2ca 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -110,8 +110,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 621b7b2e08da..f33095783ad7 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -42,7 +42,7 @@ require ( golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 9e59948e9a73..cb4e4b58a884 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -137,8 +137,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 614508618d58..9d04f13ff215 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -223,7 +223,7 @@ require ( golang.org/x/term v0.33.0 // indirect golang.org/x/text v0.27.0 // indirect golang.org/x/tools v0.34.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/grpc v1.74.2 // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 2ab0b09539e4..ca5623e11de8 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -686,8 +686,8 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= From fff2b836afc9d4a757c3467b7b67a9ce84f8ef2e Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Wed, 6 Aug 2025 15:58:23 +0000 Subject: [PATCH 0416/1068] cache: add unit test injecting mid-way compaction Signed-off-by: Peter Chang --- cache/cache_test.go | 216 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 190 insertions(+), 26 deletions(-) diff --git a/cache/cache_test.go b/cache/cache_test.go index 877eea0cd394..df36d9fc9cdf 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -16,6 +16,8 @@ package cache import ( "context" + "errors" + "sync" "testing" "time" @@ -191,7 +193,7 @@ func TestCacheWatchAtomicOrderedDelivery(t *testing.T) { mw := newMockWatcher(16) fakeClient := &clientv3.Client{ Watcher: mw, - KV: &kvStub{}, + KV: newKVStub(), } cache, err := New(fakeClient, "") if err != nil { @@ -398,35 +400,95 @@ func TestValidateWatchRange(t *testing.T) { } } -type mockWatcher struct { - responses chan clientv3.WatchResponse - registered chan struct{} -} +func TestCacheCompactionResync(t *testing.T) { + firstSnapshot := &clientv3.GetResponse{ + Header: &pb.ResponseHeader{Revision: 5}, + Kvs: []*mvccpb.KeyValue{{Key: []byte("foo"), ModRevision: 5}}, + } + secondSnapshot := &clientv3.GetResponse{ + Header: &pb.ResponseHeader{Revision: 20}, + Kvs: []*mvccpb.KeyValue{{Key: []byte("foo"), ModRevision: 20}}, + } + fakeClient := &clientv3.Client{ + Watcher: newMockWatcher(16), + KV: newKVStub(firstSnapshot, secondSnapshot), + } + cache, err := New(fakeClient, "") + if err != nil { + t.Fatalf("New cache: %v", err) + } + defer cache.Close() + mw := fakeClient.Watcher.(*mockWatcher) -type kvStub struct{} + t.Log("Phase 1: initial getWatch bootstrap") + mw.triggerCreatedNotify() + <-mw.registered + if err = cache.WaitReady(t.Context()); err != nil { + t.Fatalf("initial WaitReady: %v", err) + } -func (kvStub) Get(ctx context.Context, key string, _ ...clientv3.OpOption) (*clientv3.GetResponse, error) { - return &clientv3.GetResponse{Header: &pb.ResponseHeader{Revision: 0}}, nil -} + t.Log("Phase 2: simulate compaction") + mw.errorCompacted(10) -func (kvStub) Put(ctx context.Context, key, val string, _ ...clientv3.OpOption) (*clientv3.PutResponse, error) { - return nil, nil -} + waitUntil(t, time.Second, 10*time.Millisecond, func() bool { return !cache.Ready() }) + start := time.Now() -func (kvStub) Delete(ctx context.Context, key string, _ ...clientv3.OpOption) (*clientv3.DeleteResponse, error) { - return nil, nil -} + ctxGet, cancelGet := context.WithTimeout(t.Context(), 100*time.Millisecond) + defer cancelGet() + _, err = cache.Get(ctxGet, "foo", clientv3.WithSerializable()) + if !errors.Is(err, context.DeadlineExceeded) { + t.Fatalf("expected Get() to timeout waiting for ready after compaction, got %v", err) + } -func (kvStub) Compact(ctx context.Context, rev int64, _ ...clientv3.CompactOption) (*clientv3.CompactResponse, error) { - return nil, nil + t.Log("Phase 3: resync after compaction") + mw.triggerCreatedNotify() + if err = cache.WaitReady(t.Context()); err != nil { + t.Fatalf("second WaitReady: %v", err) + } + elapsed := time.Since(start) + if elapsed > time.Second { + t.Fatalf("cache was unready for %v; want: < 1 s", elapsed) + } + + expectSnapshotRev := int64(20) + expectedWatchStart := secondSnapshot.Header.Revision + 1 + if gotWatchStart := mw.lastStartRev; gotWatchStart != expectedWatchStart { + t.Errorf("Watch started at rev=%d; want %d", gotWatchStart, expectedWatchStart) + } + + ctx, cancel := context.WithTimeout(t.Context(), time.Second) + defer cancel() + if err = cache.WaitForRevision(ctx, expectSnapshotRev); err != nil { + t.Fatalf("cache never reached rev=%d: %v", expectSnapshotRev, err) + } + + gotSnapshot, err := cache.Get(t.Context(), "foo", clientv3.WithSerializable()) + if err != nil { + t.Fatalf("Get after resync: %v", err) + } + if gotSnapshot.Header.Revision != expectSnapshotRev { + t.Errorf("unexpected Snapshot revision: got=%d, want=%d", gotSnapshot.Header.Revision, expectSnapshotRev) + } } -func (kvStub) Do(ctx context.Context, op clientv3.Op) (clientv3.OpResponse, error) { - return clientv3.OpResponse{}, nil +func waitUntil(t *testing.T, timeout, poll time.Duration, cond func() bool) { + deadline := time.Now().Add(timeout) + for time.Now().Before(deadline) { + if cond() { + return + } + time.Sleep(poll) + } + t.Fatalf("condition not satisfied within %s", timeout) } -func (kvStub) Txn(ctx context.Context) clientv3.Txn { - return nil +type mockWatcher struct { + responses chan clientv3.WatchResponse + registered chan struct{} + closeOnce sync.Once + wg sync.WaitGroup + mu sync.Mutex + lastStartRev int64 } func newMockWatcher(buf int) *mockWatcher { @@ -436,18 +498,120 @@ func newMockWatcher(buf int) *mockWatcher { } } -func (m *mockWatcher) Watch(_ context.Context, _ string, _ ...clientv3.OpOption) clientv3.WatchChan { - select { // prevent “close of closed channel” on re-watch +func (m *mockWatcher) Watch(ctx context.Context, _ string, opts ...clientv3.OpOption) clientv3.WatchChan { + rev := m.extractRev(opts) + m.recordStartRev(rev) + + m.signalRegistration() + + out := make(chan clientv3.WatchResponse) + m.wg.Add(1) + go m.streamResponses(ctx, out) + return out +} + +func (m *mockWatcher) RequestProgress(_ context.Context) error { return nil } + +func (m *mockWatcher) Close() error { + m.closeOnce.Do(func() { close(m.responses) }) + m.wg.Wait() + return nil +} + +func (m *mockWatcher) triggerCreatedNotify() { m.responses <- clientv3.WatchResponse{} } + +func (m *mockWatcher) errorCompacted(compRev int64) { + m.responses <- clientv3.WatchResponse{ + Canceled: true, + CompactRevision: compRev, + } +} + +func (m *mockWatcher) extractRev(opts []clientv3.OpOption) int64 { + var op clientv3.Op + for _, o := range opts { + o(&op) + } + return op.Rev() +} + +func (m *mockWatcher) recordStartRev(rev int64) { + m.mu.Lock() + defer m.mu.Unlock() + m.lastStartRev = rev +} + +func (m *mockWatcher) signalRegistration() { + select { case <-m.registered: default: close(m.registered) } - return m.responses } -func (m *mockWatcher) RequestProgress(_ context.Context) error { return nil } +func (m *mockWatcher) streamResponses(ctx context.Context, out chan<- clientv3.WatchResponse) { + defer func() { + close(out) + m.wg.Done() + }() + + for { + select { + case <-ctx.Done(): + return + case resp, ok := <-m.responses: + if !ok { + return + } + out <- resp + if resp.Canceled { + return + } + } + } +} -func (m *mockWatcher) Close() error { close(m.responses); return nil } +type kvStub struct { + queued []*clientv3.GetResponse + defaultResp *clientv3.GetResponse +} + +func newKVStub(resps ...*clientv3.GetResponse) *kvStub { + queue := append([]*clientv3.GetResponse(nil), resps...) + return &kvStub{ + queued: queue, + defaultResp: &clientv3.GetResponse{Header: &pb.ResponseHeader{Revision: 0}}, + } +} + +func (s *kvStub) Get(ctx context.Context, key string, _ ...clientv3.OpOption) (*clientv3.GetResponse, error) { + if len(s.queued) > 0 { + next := s.queued[0] + s.queued = s.queued[1:] + return next, nil + } + return s.defaultResp, nil +} + +func (s *kvStub) Put(ctx context.Context, key, val string, _ ...clientv3.OpOption) (*clientv3.PutResponse, error) { + return nil, nil +} + +func (s *kvStub) Delete(ctx context.Context, key string, _ ...clientv3.OpOption) (*clientv3.DeleteResponse, error) { + return nil, nil +} + +func (s *kvStub) Compact(ctx context.Context, rev int64, _ ...clientv3.CompactOption) (*clientv3.CompactResponse, error) { + return nil, nil +} + +func (s *kvStub) Do(ctx context.Context, op clientv3.Op) (clientv3.OpResponse, error) { + return clientv3.OpResponse{}, nil +} + +func (s *kvStub) Txn(ctx context.Context) clientv3.Txn { + return nil +} func event(eventType mvccpb.Event_EventType, key string, rev int64) *clientv3.Event { return &clientv3.Event{ From bf246f948140205463777122d9c3a301c82595b4 Mon Sep 17 00:00:00 2001 From: hwdef Date: Sat, 28 Jun 2025 16:58:41 +0000 Subject: [PATCH 0417/1068] etcdctl: organize etcdctl subcommand & delete template Signed-off-by: hwdef --- etcdctl/ctlv3/command/alarm_command.go | 6 +- etcdctl/ctlv3/command/auth_command.go | 6 +- etcdctl/ctlv3/command/check.go | 6 +- etcdctl/ctlv3/command/compaction_command.go | 7 +- etcdctl/ctlv3/command/completion_command.go | 1 + etcdctl/ctlv3/command/defrag_command.go | 7 +- etcdctl/ctlv3/command/del_command.go | 7 +- etcdctl/ctlv3/command/downgrade_command.go | 6 +- etcdctl/ctlv3/command/elect_command.go | 7 +- etcdctl/ctlv3/command/ep_command.go | 6 +- etcdctl/ctlv3/command/get_command.go | 7 +- etcdctl/ctlv3/command/groups.go | 60 +++++++ etcdctl/ctlv3/command/help_command.go | 21 +++ etcdctl/ctlv3/command/lease_command.go | 6 +- etcdctl/ctlv3/command/lock_command.go | 7 +- etcdctl/ctlv3/command/make_mirror_command.go | 7 +- etcdctl/ctlv3/command/member_command.go | 6 +- etcdctl/ctlv3/command/move_leader_command.go | 7 +- etcdctl/ctlv3/command/put_command.go | 3 +- etcdctl/ctlv3/command/role_command.go | 6 +- etcdctl/ctlv3/command/snapshot_command.go | 1 + etcdctl/ctlv3/command/txn_command.go | 6 +- etcdctl/ctlv3/command/user_command.go | 6 +- etcdctl/ctlv3/command/version_command.go | 7 +- etcdctl/ctlv3/command/watch_command.go | 7 +- etcdctl/ctlv3/ctl.go | 17 +- etcdctl/util/help.go | 180 ------------------- 27 files changed, 175 insertions(+), 238 deletions(-) create mode 100644 etcdctl/ctlv3/command/groups.go create mode 100644 etcdctl/ctlv3/command/help_command.go delete mode 100644 etcdctl/util/help.go diff --git a/etcdctl/ctlv3/command/alarm_command.go b/etcdctl/ctlv3/command/alarm_command.go index 679f9d98f27c..9bf6ffbdab2d 100644 --- a/etcdctl/ctlv3/command/alarm_command.go +++ b/etcdctl/ctlv3/command/alarm_command.go @@ -26,8 +26,10 @@ import ( // NewAlarmCommand returns the cobra command for "alarm". func NewAlarmCommand() *cobra.Command { ac := &cobra.Command{ - Use: "alarm ", - Short: "Alarm related commands", + Use: "alarm ", + Short: "Alarm related commands. Use `etcdctl alarm --help` to see subcommands", + Long: "Alarm related commands", + GroupID: groupClusterMaintenanceID, } ac.AddCommand(NewAlarmDisarmCommand()) diff --git a/etcdctl/ctlv3/command/auth_command.go b/etcdctl/ctlv3/command/auth_command.go index 13ccda44d16c..6a414f7aacfd 100644 --- a/etcdctl/ctlv3/command/auth_command.go +++ b/etcdctl/ctlv3/command/auth_command.go @@ -27,8 +27,10 @@ import ( // NewAuthCommand returns the cobra command for "auth". func NewAuthCommand() *cobra.Command { ac := &cobra.Command{ - Use: "auth ", - Short: "Enable or disable authentication", + Use: "auth ", + Short: "Enable or disable authentication. Use `etcdctl auth --help` to see subcommands", + Long: "Enable or disable authentication", + GroupID: groupAuthenticationID, } ac.AddCommand(newAuthEnableCommand()) diff --git a/etcdctl/ctlv3/command/check.go b/etcdctl/ctlv3/command/check.go index c88015400605..904120982c56 100644 --- a/etcdctl/ctlv3/command/check.go +++ b/etcdctl/ctlv3/command/check.go @@ -107,8 +107,10 @@ var checkDatascaleCfgMap = map[string]checkDatascaleCfg{ // NewCheckCommand returns the cobra command for "check". func NewCheckCommand() *cobra.Command { cc := &cobra.Command{ - Use: "check ", - Short: "commands for checking properties of the etcd cluster", + Use: "check ", + Short: "commands for checking properties of the etcd cluster. Use `etcdctl check --help` to see subcommands", + Long: "commands for checking properties of the etcd cluster", + GroupID: groupUtilityID, } cc.AddCommand(NewCheckPerfCommand()) diff --git a/etcdctl/ctlv3/command/compaction_command.go b/etcdctl/ctlv3/command/compaction_command.go index 5c0bb1019a92..457538a59919 100644 --- a/etcdctl/ctlv3/command/compaction_command.go +++ b/etcdctl/ctlv3/command/compaction_command.go @@ -29,9 +29,10 @@ var compactPhysical bool // NewCompactionCommand returns the cobra command for "compaction". func NewCompactionCommand() *cobra.Command { cmd := &cobra.Command{ - Use: "compaction [options] ", - Short: "Compacts the event history in etcd", - Run: compactionCommandFunc, + Use: "compaction [options] ", + Short: "Compacts the event history in etcd", + Run: compactionCommandFunc, + GroupID: groupKVID, } cmd.Flags().BoolVar(&compactPhysical, "physical", false, "'true' to wait for compaction to physically remove all old revisions") return cmd diff --git a/etcdctl/ctlv3/command/completion_command.go b/etcdctl/ctlv3/command/completion_command.go index cb98d4a7d698..45f28442646e 100644 --- a/etcdctl/ctlv3/command/completion_command.go +++ b/etcdctl/ctlv3/command/completion_command.go @@ -78,6 +78,7 @@ PowerShell: cmd.Root().GenPowerShellCompletionWithDesc(os.Stdout) } }, + GroupID: groupUtilityID, } return cmd diff --git a/etcdctl/ctlv3/command/defrag_command.go b/etcdctl/ctlv3/command/defrag_command.go index 36116d4888c7..c68de9cd13d4 100644 --- a/etcdctl/ctlv3/command/defrag_command.go +++ b/etcdctl/ctlv3/command/defrag_command.go @@ -27,9 +27,10 @@ import ( // NewDefragCommand returns the cobra command for "Defrag". func NewDefragCommand() *cobra.Command { cmd := &cobra.Command{ - Use: "defrag", - Short: "Defragments the storage of the etcd members with given endpoints", - Run: defragCommandFunc, + Use: "defrag", + Short: "Defragments the storage of the etcd members with given endpoints", + Run: defragCommandFunc, + GroupID: groupClusterMaintenanceID, } cmd.PersistentFlags().BoolVar(&epClusterEndpoints, "cluster", false, "use all endpoints from the cluster member list") return cmd diff --git a/etcdctl/ctlv3/command/del_command.go b/etcdctl/ctlv3/command/del_command.go index 51b7abb3edf8..5fa39f80704d 100644 --- a/etcdctl/ctlv3/command/del_command.go +++ b/etcdctl/ctlv3/command/del_command.go @@ -35,9 +35,10 @@ var ( // NewDelCommand returns the cobra command for "del". func NewDelCommand() *cobra.Command { cmd := &cobra.Command{ - Use: "del [options] [range_end]", - Short: "Removes the specified key or range of keys [key, range_end)", - Run: delCommandFunc, + Use: "del [options] [range_end]", + Short: "Removes the specified key or range of keys [key, range_end)", + Run: delCommandFunc, + GroupID: groupKVID, } cmd.Flags().BoolVar(&delPrefix, "prefix", false, "delete keys with matching prefix") diff --git a/etcdctl/ctlv3/command/downgrade_command.go b/etcdctl/ctlv3/command/downgrade_command.go index 8b6ab9cd19e3..c56b7749c74b 100644 --- a/etcdctl/ctlv3/command/downgrade_command.go +++ b/etcdctl/ctlv3/command/downgrade_command.go @@ -26,8 +26,10 @@ import ( // NewDowngradeCommand returns the cobra command for "downgrade". func NewDowngradeCommand() *cobra.Command { dc := &cobra.Command{ - Use: "downgrade ", - Short: "Downgrade related commands", + Use: "downgrade ", + Short: "Downgrade related commands. Use `etcdctl downgrade --help` to see subcommands", + Long: "Downgrade related commands", + GroupID: groupClusterMaintenanceID, } dc.AddCommand(NewDowngradeValidateCommand()) diff --git a/etcdctl/ctlv3/command/elect_command.go b/etcdctl/ctlv3/command/elect_command.go index eee4289e710e..6ff828843061 100644 --- a/etcdctl/ctlv3/command/elect_command.go +++ b/etcdctl/ctlv3/command/elect_command.go @@ -33,9 +33,10 @@ var electListen bool // NewElectCommand returns the cobra command for "elect". func NewElectCommand() *cobra.Command { cmd := &cobra.Command{ - Use: "elect [proposal]", - Short: "Observes and participates in leader election", - Run: electCommandFunc, + Use: "elect [proposal]", + Short: "Observes and participates in leader election", + Run: electCommandFunc, + GroupID: groupConcurrencyID, } cmd.Flags().BoolVarP(&electListen, "listen", "l", false, "observation mode") return cmd diff --git a/etcdctl/ctlv3/command/ep_command.go b/etcdctl/ctlv3/command/ep_command.go index 52518f192651..92019b064cb8 100644 --- a/etcdctl/ctlv3/command/ep_command.go +++ b/etcdctl/ctlv3/command/ep_command.go @@ -39,8 +39,10 @@ var ( // NewEndpointCommand returns the cobra command for "endpoint". func NewEndpointCommand() *cobra.Command { ec := &cobra.Command{ - Use: "endpoint ", - Short: "Endpoint related commands", + Use: "endpoint ", + Short: "Endpoint related commands. Use `etcdctl endpoint --help` to see subcommands", + Long: "Endpoint related commands", + GroupID: groupClusterMaintenanceID, } ec.PersistentFlags().BoolVar(&epClusterEndpoints, "cluster", false, "use all endpoints from the cluster member list") diff --git a/etcdctl/ctlv3/command/get_command.go b/etcdctl/ctlv3/command/get_command.go index 7d687aa5c90c..94d34dac0060 100644 --- a/etcdctl/ctlv3/command/get_command.go +++ b/etcdctl/ctlv3/command/get_command.go @@ -44,9 +44,10 @@ var ( // NewGetCommand returns the cobra command for "get". func NewGetCommand() *cobra.Command { cmd := &cobra.Command{ - Use: "get [options] [range_end]", - Short: "Gets the key or a range of keys", - Run: getCommandFunc, + Use: "get [options] [range_end]", + Short: "Gets the key or a range of keys", + Run: getCommandFunc, + GroupID: groupKVID, } cmd.Flags().StringVar(&getConsistency, "consistency", "l", "Linearizable(l) or Serializable(s)") diff --git a/etcdctl/ctlv3/command/groups.go b/etcdctl/ctlv3/command/groups.go new file mode 100644 index 000000000000..ca0229d3c5d2 --- /dev/null +++ b/etcdctl/ctlv3/command/groups.go @@ -0,0 +1,60 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package command + +import "github.com/spf13/cobra" + +const ( + groupKVID = "kv" + groupClusterMaintenanceID = "cluster maintenance" + groupConcurrencyID = "concurrency" + groupAuthenticationID = "authentication" + groupUtilityID = "utility" +) + +func NewKVGroup() *cobra.Group { + return &cobra.Group{ + ID: groupKVID, + Title: "Key-value commands", + } +} + +func NewClusterMaintenanceGroup() *cobra.Group { + return &cobra.Group{ + ID: groupClusterMaintenanceID, + Title: "Cluster maintenance commands", + } +} + +func NewConcurrencyGroup() *cobra.Group { + return &cobra.Group{ + ID: groupConcurrencyID, + Title: "Concurrency commands", + } +} + +func NewAuthenticationGroup() *cobra.Group { + return &cobra.Group{ + ID: groupAuthenticationID, + Title: "Authentication commands", + } +} + +func NewUtilityGroup() *cobra.Group { + return &cobra.Group{ + ID: groupUtilityID, + Title: "Utility commands", + } +} diff --git a/etcdctl/ctlv3/command/help_command.go b/etcdctl/ctlv3/command/help_command.go new file mode 100644 index 000000000000..2590697910eb --- /dev/null +++ b/etcdctl/ctlv3/command/help_command.go @@ -0,0 +1,21 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package command + +import "github.com/spf13/cobra" + +func SetHelpCmdGroup(rootCmd *cobra.Command) { + rootCmd.SetHelpCommandGroupID(groupUtilityID) +} diff --git a/etcdctl/ctlv3/command/lease_command.go b/etcdctl/ctlv3/command/lease_command.go index 8e70670b6380..0fccc5f64767 100644 --- a/etcdctl/ctlv3/command/lease_command.go +++ b/etcdctl/ctlv3/command/lease_command.go @@ -28,8 +28,10 @@ import ( // NewLeaseCommand returns the cobra command for "lease". func NewLeaseCommand() *cobra.Command { lc := &cobra.Command{ - Use: "lease ", - Short: "Lease related commands", + Use: "lease ", + Short: "Lease related commands. Use `etcdctl lease --help` to see subcommands", + Long: "Lease related commands", + GroupID: groupKVID, } lc.AddCommand(NewLeaseGrantCommand()) diff --git a/etcdctl/ctlv3/command/lock_command.go b/etcdctl/ctlv3/command/lock_command.go index 64fb0ee8192d..0faa76fe64c7 100644 --- a/etcdctl/ctlv3/command/lock_command.go +++ b/etcdctl/ctlv3/command/lock_command.go @@ -35,9 +35,10 @@ var lockTTL = 10 // NewLockCommand returns the cobra command for "lock". func NewLockCommand() *cobra.Command { c := &cobra.Command{ - Use: "lock [exec-command arg1 arg2 ...]", - Short: "Acquires a named lock", - Run: lockCommandFunc, + Use: "lock [exec-command arg1 arg2 ...]", + Short: "Acquires a named lock", + Run: lockCommandFunc, + GroupID: groupConcurrencyID, } c.Flags().IntVarP(&lockTTL, "ttl", "", lockTTL, "timeout for session") return c diff --git a/etcdctl/ctlv3/command/make_mirror_command.go b/etcdctl/ctlv3/command/make_mirror_command.go index c8b6220d596f..eea3d293e8b2 100644 --- a/etcdctl/ctlv3/command/make_mirror_command.go +++ b/etcdctl/ctlv3/command/make_mirror_command.go @@ -53,9 +53,10 @@ var ( // NewMakeMirrorCommand returns the cobra command for "makeMirror". func NewMakeMirrorCommand() *cobra.Command { c := &cobra.Command{ - Use: "make-mirror [options] ", - Short: "Makes a mirror at the destination etcd cluster", - Run: makeMirrorCommandFunc, + Use: "make-mirror [options] ", + Short: "Makes a mirror at the destination etcd cluster", + Run: makeMirrorCommandFunc, + GroupID: groupUtilityID, } c.Flags().StringVar(&mmprefix, "prefix", "", "Key-value prefix to mirror") diff --git a/etcdctl/ctlv3/command/member_command.go b/etcdctl/ctlv3/command/member_command.go index 256bf2b9c7b4..0ead08f43df5 100644 --- a/etcdctl/ctlv3/command/member_command.go +++ b/etcdctl/ctlv3/command/member_command.go @@ -35,8 +35,10 @@ var ( // NewMemberCommand returns the cobra command for "member". func NewMemberCommand() *cobra.Command { mc := &cobra.Command{ - Use: "member ", - Short: "Membership related commands", + Use: "member ", + Short: "Membership related commands. Use `etcdctl member --help` to see subcommands", + Long: "Membership related commands", + GroupID: groupClusterMaintenanceID, } mc.AddCommand(NewMemberAddCommand()) diff --git a/etcdctl/ctlv3/command/move_leader_command.go b/etcdctl/ctlv3/command/move_leader_command.go index a7b4f397b1c8..320d9ff3926f 100644 --- a/etcdctl/ctlv3/command/move_leader_command.go +++ b/etcdctl/ctlv3/command/move_leader_command.go @@ -27,9 +27,10 @@ import ( // NewMoveLeaderCommand returns the cobra command for "move-leader". func NewMoveLeaderCommand() *cobra.Command { cmd := &cobra.Command{ - Use: "move-leader ", - Short: "Transfers leadership to another etcd cluster member.", - Run: transferLeadershipCommandFunc, + Use: "move-leader ", + Short: "Transfers leadership to another etcd cluster member.", + Run: transferLeadershipCommandFunc, + GroupID: groupClusterMaintenanceID, } return cmd } diff --git a/etcdctl/ctlv3/command/put_command.go b/etcdctl/ctlv3/command/put_command.go index 4814db55990c..084815013771 100644 --- a/etcdctl/ctlv3/command/put_command.go +++ b/etcdctl/ctlv3/command/put_command.go @@ -56,7 +56,8 @@ For example, $ cat file | put will store the content of the file to . `, - Run: putCommandFunc, + Run: putCommandFunc, + GroupID: groupKVID, } cmd.Flags().StringVar(&leaseStr, "lease", "0", "lease ID (in hexadecimal) to attach to the key") cmd.Flags().BoolVar(&putPrevKV, "prev-kv", false, "return the previous key-value pair before modification") diff --git a/etcdctl/ctlv3/command/role_command.go b/etcdctl/ctlv3/command/role_command.go index 705d88d886fa..5fd96ca1c985 100644 --- a/etcdctl/ctlv3/command/role_command.go +++ b/etcdctl/ctlv3/command/role_command.go @@ -32,8 +32,10 @@ var ( // NewRoleCommand returns the cobra command for "role". func NewRoleCommand() *cobra.Command { ac := &cobra.Command{ - Use: "role ", - Short: "Role related commands", + Use: "role ", + Short: "Role related commands. Use `etcdctl role --help` to see subcommands", + Long: "Role related commands", + GroupID: groupAuthenticationID, } ac.AddCommand(newRoleAddCommand()) diff --git a/etcdctl/ctlv3/command/snapshot_command.go b/etcdctl/ctlv3/command/snapshot_command.go index 66934bede376..d98c93b0b2cb 100644 --- a/etcdctl/ctlv3/command/snapshot_command.go +++ b/etcdctl/ctlv3/command/snapshot_command.go @@ -52,6 +52,7 @@ func NewSnapshotCommand() *cobra.Command { Use: "snapshot ", Short: "Manages etcd node snapshots", Example: snapshotExample, + GroupID: groupClusterMaintenanceID, } cmd.AddCommand(NewSnapshotSaveCommand()) return cmd diff --git a/etcdctl/ctlv3/command/txn_command.go b/etcdctl/ctlv3/command/txn_command.go index 5433f82bda68..df746a2289fa 100644 --- a/etcdctl/ctlv3/command/txn_command.go +++ b/etcdctl/ctlv3/command/txn_command.go @@ -59,7 +59,8 @@ put key2 "some extra key" --- Refer to https://github.com/etcd-io/etcd/blob/main/etcdctl/README.md#txn-options.`, - Run: txnCommandFunc, + Run: txnCommandFunc, + GroupID: groupKVID, } cmd.Flags().BoolVarP(&txnInteractive, "interactive", "i", false, "Input transaction in interactive mode") return cmd @@ -150,16 +151,19 @@ func parseRequestUnion(line string) (*clientv3.Op, error) { opc := make(chan clientv3.Op, 1) put := NewPutCommand() + put.GroupID = "" put.Run = func(cmd *cobra.Command, args []string) { key, value, opts := getPutOp(args) opc <- clientv3.OpPut(key, value, opts...) } get := NewGetCommand() + get.GroupID = "" get.Run = func(cmd *cobra.Command, args []string) { key, opts := getGetOp(args) opc <- clientv3.OpGet(key, opts...) } del := NewDelCommand() + del.GroupID = "" del.Run = func(cmd *cobra.Command, args []string) { key, opts := getDelOp(args) opc <- clientv3.OpDelete(key, opts...) diff --git a/etcdctl/ctlv3/command/user_command.go b/etcdctl/ctlv3/command/user_command.go index f3e59a7048bb..20e4d3e8c952 100644 --- a/etcdctl/ctlv3/command/user_command.go +++ b/etcdctl/ctlv3/command/user_command.go @@ -31,8 +31,10 @@ var userShowDetail bool // NewUserCommand returns the cobra command for "user". func NewUserCommand() *cobra.Command { ac := &cobra.Command{ - Use: "user ", - Short: "User related commands", + Use: "user ", + Short: "User related commands. Use `etcdctl user --help` to see subcommands", + Long: "User related commands", + GroupID: groupAuthenticationID, } ac.AddCommand(newUserAddCommand()) diff --git a/etcdctl/ctlv3/command/version_command.go b/etcdctl/ctlv3/command/version_command.go index e57567d6a3d2..d5be27adb056 100644 --- a/etcdctl/ctlv3/command/version_command.go +++ b/etcdctl/ctlv3/command/version_command.go @@ -25,9 +25,10 @@ import ( // NewVersionCommand prints out the version of etcd. func NewVersionCommand() *cobra.Command { return &cobra.Command{ - Use: "version", - Short: "Prints the version of etcdctl", - Run: versionCommandFunc, + Use: "version", + Short: "Prints the version of etcdctl", + Run: versionCommandFunc, + GroupID: groupUtilityID, } } diff --git a/etcdctl/ctlv3/command/watch_command.go b/etcdctl/ctlv3/command/watch_command.go index fa8fc72d82f9..b8c8bdf130f5 100644 --- a/etcdctl/ctlv3/command/watch_command.go +++ b/etcdctl/ctlv3/command/watch_command.go @@ -47,9 +47,10 @@ var ( // NewWatchCommand returns the cobra command for "watch". func NewWatchCommand() *cobra.Command { cmd := &cobra.Command{ - Use: "watch [options] [key or prefix] [range_end] [--] [exec-command arg1 arg2 ...]", - Short: "Watches events stream on keys or prefixes", - Run: watchCommandFunc, + Use: "watch [options] [key or prefix] [range_end] [--] [exec-command arg1 arg2 ...]", + Short: "Watches events stream on keys or prefixes", + Run: watchCommandFunc, + GroupID: groupKVID, } cmd.Flags().BoolVarP(&watchInteractive, "interactive", "i", false, "Interactive mode") diff --git a/etcdctl/ctlv3/ctl.go b/etcdctl/ctlv3/ctl.go index e992fa4fa0c8..0fc6570719c1 100644 --- a/etcdctl/ctlv3/ctl.go +++ b/etcdctl/ctlv3/ctl.go @@ -21,9 +21,7 @@ import ( "github.com/spf13/cobra" - "go.etcd.io/etcd/api/v3/version" "go.etcd.io/etcd/etcdctl/v3/ctlv3/command" - "go.etcd.io/etcd/etcdctl/v3/util" "go.etcd.io/etcd/pkg/v3/cobrautl" ) @@ -76,6 +74,14 @@ func init() { rootCmd.PersistentFlags().StringVarP(&globalFlags.TLS.ServerName, "discovery-srv", "d", "", "domain name to query for SRV records describing cluster endpoints") rootCmd.PersistentFlags().StringVarP(&globalFlags.DNSClusterServiceName, "discovery-srv-name", "", "", "service name to query when using DNS discovery") + rootCmd.AddGroup( + command.NewKVGroup(), + command.NewClusterMaintenanceGroup(), + command.NewConcurrencyGroup(), + command.NewAuthenticationGroup(), + command.NewUtilityGroup(), + ) + rootCmd.AddCommand( command.NewGetCommand(), command.NewPutCommand(), @@ -101,16 +107,11 @@ func init() { command.NewCompletionCommand(), command.NewDowngradeCommand(), ) -} -func usageFunc(c *cobra.Command) error { - return util.UsageFunc(c, version.Version, version.APIVersion) + command.SetHelpCmdGroup(rootCmd) } func Start() error { - rootCmd.SetUsageFunc(usageFunc) - // Make help just show the usage - rootCmd.SetHelpTemplate(`{{.UsageString}}`) return rootCmd.Execute() } diff --git a/etcdctl/util/help.go b/etcdctl/util/help.go deleted file mode 100644 index 0e8035313571..000000000000 --- a/etcdctl/util/help.go +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2025 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// copied from https://github.com/rkt/rkt/blob/master/rkt/help.go - -package util - -import ( - "fmt" - "io" - "os" - "strings" - "text/tabwriter" - "text/template" - - "github.com/spf13/cobra" - "github.com/spf13/pflag" -) - -var ( - commandUsageTemplate *template.Template - templFuncs = template.FuncMap{ - "descToLines": func(s string) []string { - // trim leading/trailing whitespace and split into slice of lines - return strings.Split(strings.Trim(s, "\n\t "), "\n") - }, - "cmdName": func(cmd *cobra.Command, startCmd *cobra.Command) string { - parts := []string{cmd.Name()} - for cmd.HasParent() && cmd.Parent().Name() != startCmd.Name() { - cmd = cmd.Parent() - parts = append([]string{cmd.Name()}, parts...) - } - return strings.Join(parts, " ") - }, - "indent": func(s string) string { - pad := strings.Repeat(" ", 2) - return pad + strings.Replace(s, "\n", "\n"+pad, -1) - }, - } -) - -func init() { - commandUsage := ` -{{ $cmd := .Cmd }}\ -{{ $cmdname := cmdName .Cmd .Cmd.Root }}\ -NAME: -{{if not .Cmd.HasParent}}\ -{{printf "%s - %s" .Cmd.Name .Cmd.Short | indent}} -{{else}}\ -{{printf "%s - %s" $cmdname .Cmd.Short | indent}} -{{end}}\ - -USAGE: -{{printf "%s" .Cmd.UseLine | indent}} -{{ if not .Cmd.HasParent }}\ - -VERSION: -{{printf "%s" .Version | indent}} -{{end}}\ -{{if .Cmd.HasSubCommands}}\ - -API VERSION: -{{.APIVersion | indent}} -{{end}}\ -{{if .Cmd.HasExample}}\ - -Examples: -{{.Cmd.Example}} -{{end}}\ -{{if .Cmd.HasSubCommands}}\ - -COMMANDS: -{{range .SubCommands}}\ -{{ $cmdname := cmdName . $cmd }}\ -{{ if .Runnable }}\ -{{printf "%s\t%s" $cmdname .Short | indent}} -{{end}}\ -{{end}}\ -{{end}}\ -{{ if .Cmd.Long }}\ - -DESCRIPTION: -{{range $line := descToLines .Cmd.Long}}{{printf "%s" $line | indent}} -{{end}}\ -{{end}}\ -{{if .Cmd.HasLocalFlags}}\ - -OPTIONS: -{{.LocalFlags}}\ -{{end}}\ -{{if .Cmd.HasInheritedFlags}}\ - -GLOBAL OPTIONS: -{{.GlobalFlags}}\ -{{end}} -`[1:] - - commandUsageTemplate = template.Must(template.New("command_usage").Funcs(templFuncs).Parse(strings.ReplaceAll(commandUsage, "\\\n", ""))) -} - -func etcdFlagUsages(flagSet *pflag.FlagSet) string { - x := new(strings.Builder) - - flagSet.VisitAll(func(flag *pflag.Flag) { - if len(flag.Deprecated) > 0 { - return - } - var format string - if len(flag.Shorthand) > 0 { - format = " -%s, --%s" - } else { - format = " %s --%s" - } - if len(flag.NoOptDefVal) > 0 { - format = format + "[" - } - if flag.Value.Type() == "string" { - // put quotes on the value - format = format + "=%q" - } else { - format = format + "=%s" - } - if len(flag.NoOptDefVal) > 0 { - format = format + "]" - } - format = format + "\t%s\n" - shorthand := flag.Shorthand - fmt.Fprintf(x, format, shorthand, flag.Name, flag.DefValue, flag.Usage) - }) - - return x.String() -} - -func getSubCommands(cmd *cobra.Command) []*cobra.Command { - var subCommands []*cobra.Command - for _, subCmd := range cmd.Commands() { - subCommands = append(subCommands, subCmd) - subCommands = append(subCommands, getSubCommands(subCmd)...) - } - return subCommands -} - -func UsageFunc(cmd *cobra.Command, version, APIVersion string) error { - subCommands := getSubCommands(cmd) - tabOut := getTabOutWithWriter(os.Stdout) - commandUsageTemplate.Execute(tabOut, struct { - Cmd *cobra.Command - LocalFlags string - GlobalFlags string - SubCommands []*cobra.Command - Version string - APIVersion string - }{ - cmd, - etcdFlagUsages(cmd.LocalFlags()), - etcdFlagUsages(cmd.InheritedFlags()), - subCommands, - version, - APIVersion, - }) - tabOut.Flush() - return nil -} - -func getTabOutWithWriter(writer io.Writer) *tabwriter.Writer { - aTabOut := new(tabwriter.Writer) - aTabOut.Init(writer, 0, 8, 1, '\t', 0) - return aTabOut -} From 6775f0680d511dfb28f4e8fd6666160a4ba15d4e Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Mon, 11 Aug 2025 13:21:48 +0200 Subject: [PATCH 0418/1068] Add OpenTelemetry Spans to Watch It requires adding ctx to arguments of some interface methods Signed-off-by: Aleksander Mistewicz --- server/etcdserver/api/v3rpc/watch.go | 2 +- server/storage/mvcc/kv_test.go | 4 +-- server/storage/mvcc/watchable_store.go | 16 +++++++++-- .../mvcc/watchable_store_bench_test.go | 6 ++-- server/storage/mvcc/watchable_store_test.go | 28 +++++++++---------- server/storage/mvcc/watcher.go | 7 +++-- server/storage/mvcc/watcher_bench_test.go | 2 +- server/storage/mvcc/watcher_test.go | 26 ++++++++--------- 8 files changed, 52 insertions(+), 39 deletions(-) diff --git a/server/etcdserver/api/v3rpc/watch.go b/server/etcdserver/api/v3rpc/watch.go index 02aa7c1bf29a..cee8c48a1b9d 100644 --- a/server/etcdserver/api/v3rpc/watch.go +++ b/server/etcdserver/api/v3rpc/watch.go @@ -321,7 +321,7 @@ func (sws *serverWatchStream) recvLoop() error { filters := FiltersFromRequest(creq) - id, err := sws.watchStream.Watch(mvcc.WatchID(creq.WatchId), creq.Key, creq.RangeEnd, creq.StartRevision, filters...) + id, err := sws.watchStream.Watch(sws.gRPCStream.Context(), mvcc.WatchID(creq.WatchId), creq.Key, creq.RangeEnd, creq.StartRevision, filters...) if err == nil { sws.mu.Lock() if creq.ProgressNotify { diff --git a/server/storage/mvcc/kv_test.go b/server/storage/mvcc/kv_test.go index 1b2bf6ae567b..734868a235e5 100644 --- a/server/storage/mvcc/kv_test.go +++ b/server/storage/mvcc/kv_test.go @@ -779,7 +779,7 @@ func TestWatchableKVWatch(t *testing.T) { w := s.NewWatchStream() defer w.Close() - wid, _ := w.Watch(0, []byte("foo"), []byte("fop"), 0) + wid, _ := w.Watch(t.Context(), 0, []byte("foo"), []byte("fop"), 0) wev := []mvccpb.Event{ { @@ -847,7 +847,7 @@ func TestWatchableKVWatch(t *testing.T) { } w = s.NewWatchStream() - wid, _ = w.Watch(0, []byte("foo1"), []byte("foo2"), 3) + wid, _ = w.Watch(t.Context(), 0, []byte("foo1"), []byte("foo2"), 3) select { case resp := <-w.Chan(): diff --git a/server/storage/mvcc/watchable_store.go b/server/storage/mvcc/watchable_store.go index ac893c804faa..84957d040ad5 100644 --- a/server/storage/mvcc/watchable_store.go +++ b/server/storage/mvcc/watchable_store.go @@ -15,9 +15,12 @@ package mvcc import ( + "context" "sync" "time" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/trace" "go.uber.org/zap" "go.etcd.io/etcd/api/v3/mvccpb" @@ -46,7 +49,7 @@ var ( func ChanBufLen() int { return chanBufLen } type watchable interface { - watch(key, end []byte, startRev int64, id WatchID, ch chan<- WatchResponse, fcs ...FilterFunc) (*watcher, cancelFunc) + watch(ctx context.Context, key, end []byte, startRev int64, id WatchID, ch chan<- WatchResponse, fcs ...FilterFunc) (*watcher, cancelFunc) progress(w *watcher) progressAll(watchers map[WatchID]*watcher) bool rev() int64 @@ -124,7 +127,7 @@ func (s *watchableStore) NewWatchStream() WatchStream { } } -func (s *watchableStore) watch(key, end []byte, startRev int64, id WatchID, ch chan<- WatchResponse, fcs ...FilterFunc) (*watcher, cancelFunc) { +func (s *watchableStore) watch(ctx context.Context, key, end []byte, startRev int64, id WatchID, ch chan<- WatchResponse, fcs ...FilterFunc) (*watcher, cancelFunc) { wa := &watcher{ key: key, end: end, @@ -153,6 +156,12 @@ func (s *watchableStore) watch(key, end []byte, startRev int64, id WatchID, ch c watcherGauge.Inc() + _, wa.span = traceutil.Tracer.Start(ctx, "watch", trace.WithAttributes( + attribute.String("key", string(key)), + attribute.String("range_end", string(end)), + attribute.Int64("start_rev", startRev), + )) + return wa, func() { s.cancelWatcher(wa) } } @@ -199,6 +208,7 @@ func (s *watchableStore) cancelWatcher(wa *watcher) { time.Sleep(time.Millisecond) } + wa.span.End() wa.ch = nil s.mu.Unlock() } @@ -564,6 +574,8 @@ type watcher struct { minRev int64 id WatchID + span trace.Span + fcs []FilterFunc // a chan to send out the watch response. // The chan might be shared with other watchers. diff --git a/server/storage/mvcc/watchable_store_bench_test.go b/server/storage/mvcc/watchable_store_bench_test.go index c8990576b30a..c1da715eee96 100644 --- a/server/storage/mvcc/watchable_store_bench_test.go +++ b/server/storage/mvcc/watchable_store_bench_test.go @@ -94,7 +94,7 @@ func benchmarkWatchableStoreWatchPut(b *testing.B, synced bool) { defer w.Close() watchIDs := make([]WatchID, b.N) for i := range watchIDs { - watchIDs[i], _ = w.Watch(0, k, nil, rev) + watchIDs[i], _ = w.Watch(b.Context(), 0, k, nil, rev) } b.ResetTimer() @@ -144,7 +144,7 @@ func BenchmarkWatchableStoreUnsyncedCancel(b *testing.B) { watchIDs := make([]WatchID, watcherN) for i := 0; i < watcherN; i++ { // non-0 value to keep watchers in unsynced - watchIDs[i], _ = w.Watch(0, testKey, nil, 1) + watchIDs[i], _ = w.Watch(b.Context(), 0, testKey, nil, 1) } // random-cancel N watchers to make it not biased towards @@ -182,7 +182,7 @@ func BenchmarkWatchableStoreSyncedCancel(b *testing.B) { watchIDs := make([]WatchID, watcherN) for i := 0; i < watcherN; i++ { // 0 for startRev to keep watchers in synced - watchIDs[i], _ = w.Watch(0, testKey, nil, 0) + watchIDs[i], _ = w.Watch(b.Context(), 0, testKey, nil, 0) } // randomly cancel watchers to make it not biased towards diff --git a/server/storage/mvcc/watchable_store_test.go b/server/storage/mvcc/watchable_store_test.go index e88f5db9e9c5..cd3c06e0b874 100644 --- a/server/storage/mvcc/watchable_store_test.go +++ b/server/storage/mvcc/watchable_store_test.go @@ -46,7 +46,7 @@ func TestWatch(t *testing.T) { w := s.NewWatchStream() defer w.Close() - w.Watch(0, testKey, nil, 0) + w.Watch(t.Context(), 0, testKey, nil, 0) if !s.(*watchableStore).synced.contains(string(testKey)) { // the key must have had an entry in synced t.Errorf("existence = false, want true") @@ -65,7 +65,7 @@ func TestNewWatcherCancel(t *testing.T) { w := s.NewWatchStream() defer w.Close() - wt, _ := w.Watch(0, testKey, nil, 0) + wt, _ := w.Watch(t.Context(), 0, testKey, nil, 0) if err := w.Cancel(wt); err != nil { t.Error(err) } @@ -107,7 +107,7 @@ etcd_debugging_mvcc_watcher_total %d w := s.NewWatchStream() defer w.Close() - wt, _ := w.Watch(0, testKey, nil, 0) + wt, _ := w.Watch(t.Context(), 0, testKey, nil, 0) // after creating watch, the gauge state should have increased expectWatchGauge(initialGaugeState + 1) @@ -152,7 +152,7 @@ etcd_debugging_mvcc_watcher_total %d w := s.NewWatchStream() defer w.Close() - wt, _ := w.Watch(0, testKey, nil, rev-1) + wt, _ := w.Watch(t.Context(), 0, testKey, nil, rev-1) // wait for the watcher to be marked as compacted select { @@ -206,7 +206,7 @@ etcd_debugging_mvcc_watcher_total %d w := s.NewWatchStream() - wt, _ := w.Watch(0, testKey, nil, rev-1) + wt, _ := w.Watch(t.Context(), 0, testKey, nil, rev-1) // wait for the watcher to be marked as compacted select { @@ -274,7 +274,7 @@ func TestCancelUnsynced(t *testing.T) { watchIDs := make([]WatchID, watcherN) for i := 0; i < watcherN; i++ { // use 1 to keep watchers in unsynced - watchIDs[i], _ = w.Watch(0, testKey, nil, 1) + watchIDs[i], _ = w.Watch(t.Context(), 0, testKey, nil, 1) } for _, idx := range watchIDs { @@ -307,7 +307,7 @@ func TestSyncWatchers(t *testing.T) { defer w.Close() watcherN := 100 for i := 0; i < watcherN; i++ { - _, err := w.Watch(0, testKey, nil, 1) + _, err := w.Watch(t.Context(), 0, testKey, nil, 1) require.NoError(t, err) } @@ -465,7 +465,7 @@ func TestWatchCompacted(t *testing.T) { w := s.NewWatchStream() defer w.Close() - wt, _ := w.Watch(0, testKey, nil, compactRev-1) + wt, _ := w.Watch(t.Context(), 0, testKey, nil, compactRev-1) select { case resp := <-w.Chan(): if resp.WatchID != wt { @@ -511,7 +511,7 @@ func TestWatchNoEventLossOnCompact(t *testing.T) { 2: 6, // create unsyncd watchers with compactRev < startRev < currentRev } for id, startRev := range watchers { - _, err := w.Watch(id, testKey, nil, startRev) + _, err := w.Watch(t.Context(), id, testKey, nil, startRev) require.NoError(t, err) } // fill up w.Chan() with 1 buf via 2 compacted watch response @@ -550,7 +550,7 @@ func TestWatchFutureRev(t *testing.T) { defer w.Close() wrev := int64(10) - w.Watch(0, testKey, nil, wrev) + w.Watch(t.Context(), 0, testKey, nil, wrev) for i := 0; i < 10; i++ { rev := s.Put(testKey, testValue, lease.NoLease) @@ -648,7 +648,7 @@ func testWatchRestore(t *testing.T, delayBeforeRestore, delayAfterRestore time.D w := s.NewWatchStream() defer w.Close() watchers = append(watchers, w) - w.Watch(WatchID(i+1), testKey, nil, tc.startRevision) + w.Watch(t.Context(), WatchID(i+1), testKey, nil, tc.startRevision) } s.Put(testKey, testValue, lease.NoLease) @@ -740,7 +740,7 @@ func TestWatchBatchUnsynced(t *testing.T) { w := s.NewWatchStream() defer w.Close() - w.Watch(0, v, nil, 1) + w.Watch(t.Context(), 0, v, nil, 1) var revisionBatches [][]int64 eventCount := 0 for eventCount < tc.revisions*tc.eventsPerRevision { @@ -885,7 +885,7 @@ func TestWatchVictims(t *testing.T) { for i := 0; i < numWatches; i++ { go func() { w := s.NewWatchStream() - w.Watch(0, testKey, nil, 1) + w.Watch(t.Context(), 0, testKey, nil, 1) defer func() { w.Close() wg.Done() @@ -957,7 +957,7 @@ func TestStressWatchCancelClose(t *testing.T) { w := s.NewWatchStream() ids := make([]WatchID, 10) for i := range ids { - ids[i], _ = w.Watch(0, testKey, nil, 0) + ids[i], _ = w.Watch(t.Context(), 0, testKey, nil, 0) } <-readyc wg.Add(1 + len(ids)/2) diff --git a/server/storage/mvcc/watcher.go b/server/storage/mvcc/watcher.go index c67c21d61397..9b22747d7e8f 100644 --- a/server/storage/mvcc/watcher.go +++ b/server/storage/mvcc/watcher.go @@ -16,6 +16,7 @@ package mvcc import ( "bytes" + "context" "errors" "sync" @@ -45,7 +46,7 @@ type WatchStream interface { // in events that are sent to the created watcher through stream channel. // The watch ID is used when it's not equal to AutoWatchID. Otherwise, // an auto-generated watch ID is returned. - Watch(id WatchID, key, end []byte, startRev int64, fcs ...FilterFunc) (WatchID, error) + Watch(ctx context.Context, id WatchID, key, end []byte, startRev int64, fcs ...FilterFunc) (WatchID, error) // Chan returns a chan. All watch response will be sent to the returned chan. Chan() <-chan WatchResponse @@ -109,7 +110,7 @@ type watchStream struct { } // Watch creates a new watcher in the stream and returns its WatchID. -func (ws *watchStream) Watch(id WatchID, key, end []byte, startRev int64, fcs ...FilterFunc) (WatchID, error) { +func (ws *watchStream) Watch(ctx context.Context, id WatchID, key, end []byte, startRev int64, fcs ...FilterFunc) (WatchID, error) { // prevent wrong range where key >= end lexicographically // watch request with 'WithFromKey' has empty-byte range end if len(end) != 0 && bytes.Compare(key, end) != -1 { @@ -132,7 +133,7 @@ func (ws *watchStream) Watch(id WatchID, key, end []byte, startRev int64, fcs .. return -1, ErrWatcherDuplicateID } - w, c := ws.watchable.watch(key, end, startRev, id, ws.ch, fcs...) + w, c := ws.watchable.watch(ctx, key, end, startRev, id, ws.ch, fcs...) ws.cancels[id] = c ws.watchers[id] = w diff --git a/server/storage/mvcc/watcher_bench_test.go b/server/storage/mvcc/watcher_bench_test.go index 3d0dccea3421..be316fa8390b 100644 --- a/server/storage/mvcc/watcher_bench_test.go +++ b/server/storage/mvcc/watcher_bench_test.go @@ -36,6 +36,6 @@ func BenchmarkKVWatcherMemoryUsage(b *testing.B) { b.ReportAllocs() b.StartTimer() for i := 0; i < b.N; i++ { - w.Watch(0, []byte(fmt.Sprint("foo", i)), nil, 0) + w.Watch(b.Context(), 0, []byte(fmt.Sprint("foo", i)), nil, 0) } } diff --git a/server/storage/mvcc/watcher_test.go b/server/storage/mvcc/watcher_test.go index d127652e0e16..a07744d9c7a4 100644 --- a/server/storage/mvcc/watcher_test.go +++ b/server/storage/mvcc/watcher_test.go @@ -44,7 +44,7 @@ func TestWatcherWatchID(t *testing.T) { idm := make(map[WatchID]struct{}) for i := 0; i < 10; i++ { - id, _ := w.Watch(0, []byte("foo"), nil, 0) + id, _ := w.Watch(t.Context(), 0, []byte("foo"), nil, 0) if _, ok := idm[id]; ok { t.Errorf("#%d: id %d exists", i, id) } @@ -66,7 +66,7 @@ func TestWatcherWatchID(t *testing.T) { // unsynced watchers for i := 10; i < 20; i++ { - id, _ := w.Watch(0, []byte("foo2"), nil, 1) + id, _ := w.Watch(t.Context(), 0, []byte("foo2"), nil, 1) if _, ok := idm[id]; ok { t.Errorf("#%d: id %d exists", i, id) } @@ -107,7 +107,7 @@ func TestWatcherRequestsCustomID(t *testing.T) { } for i, tcase := range tt { - id, err := w.Watch(tcase.givenID, []byte("foo"), nil, 0) + id, err := w.Watch(t.Context(), tcase.givenID, []byte("foo"), nil, 0) if tcase.expectedErr != nil || err != nil { if !errors.Is(err, tcase.expectedErr) { t.Errorf("expected get error %q in test case %q, got %q", tcase.expectedErr, i, err) @@ -134,7 +134,7 @@ func TestWatcherWatchPrefix(t *testing.T) { keyWatch, keyEnd, keyPut := []byte("foo"), []byte("fop"), []byte("foobar") for i := 0; i < 10; i++ { - id, _ := w.Watch(0, keyWatch, keyEnd, 0) + id, _ := w.Watch(t.Context(), 0, keyWatch, keyEnd, 0) if _, ok := idm[id]; ok { t.Errorf("#%d: unexpected duplicated id %x", i, id) } @@ -166,7 +166,7 @@ func TestWatcherWatchPrefix(t *testing.T) { // unsynced watchers for i := 10; i < 15; i++ { - id, _ := w.Watch(0, keyWatch1, keyEnd1, 1) + id, _ := w.Watch(t.Context(), 0, keyWatch1, keyEnd1, 1) if _, ok := idm[id]; ok { t.Errorf("#%d: id %d exists", i, id) } @@ -202,14 +202,14 @@ func TestWatcherWatchWrongRange(t *testing.T) { w := s.NewWatchStream() defer w.Close() - if _, err := w.Watch(0, []byte("foa"), []byte("foa"), 1); !errors.Is(err, ErrEmptyWatcherRange) { + if _, err := w.Watch(t.Context(), 0, []byte("foa"), []byte("foa"), 1); !errors.Is(err, ErrEmptyWatcherRange) { t.Fatalf("key == end range given; expected ErrEmptyWatcherRange, got %+v", err) } - if _, err := w.Watch(0, []byte("fob"), []byte("foa"), 1); !errors.Is(err, ErrEmptyWatcherRange) { + if _, err := w.Watch(t.Context(), 0, []byte("fob"), []byte("foa"), 1); !errors.Is(err, ErrEmptyWatcherRange) { t.Fatalf("key > end range given; expected ErrEmptyWatcherRange, got %+v", err) } // watch request with 'WithFromKey' has empty-byte range end - if id, _ := w.Watch(0, []byte("foo"), []byte{}, 1); id != 0 { + if id, _ := w.Watch(t.Context(), 0, []byte("foo"), []byte{}, 1); id != 0 { t.Fatalf("\x00 is range given; id expected 0, got %d", id) } } @@ -232,7 +232,7 @@ func TestWatchDeleteRange(t *testing.T) { w := s.NewWatchStream() from, to := testKeyPrefix, []byte(fmt.Sprintf("%s_%d", testKeyPrefix, 99)) - w.Watch(0, from, to, 0) + w.Watch(t.Context(), 0, from, to, 0) s.DeleteRange(from, to) @@ -262,7 +262,7 @@ func TestWatchStreamCancelWatcherByID(t *testing.T) { w := s.NewWatchStream() defer w.Close() - id, _ := w.Watch(0, []byte("foo"), nil, 0) + id, _ := w.Watch(t.Context(), 0, []byte("foo"), nil, 0) tests := []struct { cancelID WatchID @@ -350,7 +350,7 @@ func TestWatcherRequestProgress(t *testing.T) { w := s.NewWatchStream() - id, _ := w.Watch(0, notTestKey, nil, tc.startRev) + id, _ := w.Watch(t.Context(), 0, notTestKey, nil, tc.startRev) w.RequestProgress(id) asssertProgressSent(t, w, id, tc.expectProgressBeforeSync) s.syncWatchers() @@ -394,7 +394,7 @@ func TestWatcherRequestProgressAll(t *testing.T) { // at least one Watch for progress notifications to get // generated. w := s.NewWatchStream() - w.Watch(0, notTestKey, nil, 1) + w.Watch(t.Context(), 0, notTestKey, nil, 1) w.RequestProgressAll() select { @@ -429,7 +429,7 @@ func TestWatcherWatchWithFilter(t *testing.T) { return e.Type == mvccpb.PUT } - w.Watch(0, []byte("foo"), nil, 0, filterPut) + w.Watch(t.Context(), 0, []byte("foo"), nil, 0, filterPut) done := make(chan struct{}, 1) go func() { From 8d4b2c0cc7f0e2516badf4935cf610e633852d64 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Mon, 11 Aug 2025 00:08:05 +0000 Subject: [PATCH 0419/1068] cache: generalize ready channel to signal any state change instead of ready-only Signed-off-by: Peter Chang --- cache/ready.go | 52 +++++++----- cache/ready_test.go | 195 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 226 insertions(+), 21 deletions(-) create mode 100644 cache/ready_test.go diff --git a/cache/ready.go b/cache/ready.go index 96a1c6883cd4..820d7fff3386 100644 --- a/cache/ready.go +++ b/cache/ready.go @@ -19,16 +19,15 @@ import ( "sync" ) -// ready tracks the transition from “not ready” → “ready” and allows waiters to block -// until the first transition has happened, and to be reset on error. +// ready tracks readiness state changes and allows callers to wait for a target state type ready struct { - mu sync.Mutex - isReady bool - readyChan chan struct{} // closed exactly once per ready transition + mu sync.Mutex + isReady bool + stateCh chan struct{} // closed on any state transition, then replaced immediately } func newReady() *ready { - return &ready{readyChan: make(chan struct{})} + return &ready{stateCh: make(chan struct{})} } func (r *ready) Ready() bool { @@ -38,20 +37,11 @@ func (r *ready) Ready() bool { } func (r *ready) WaitReady(ctx context.Context) error { - r.mu.Lock() - ch := r.readyChan - ready := r.isReady - r.mu.Unlock() + return r.waitForState(ctx, func() bool { return r.isReady }) +} - if ready { - return nil - } - select { - case <-ch: - return ctx.Err() - case <-ctx.Done(): - return ctx.Err() - } +func (r *ready) WaitNotReady(ctx context.Context) error { + return r.waitForState(ctx, func() bool { return !r.isReady }) } func (r *ready) Set() { @@ -59,7 +49,8 @@ func (r *ready) Set() { defer r.mu.Unlock() if !r.isReady { r.isReady = true - close(r.readyChan) + close(r.stateCh) + r.stateCh = make(chan struct{}) } } @@ -68,6 +59,25 @@ func (r *ready) Reset() { defer r.mu.Unlock() if r.isReady { r.isReady = false - r.readyChan = make(chan struct{}) + close(r.stateCh) + r.stateCh = make(chan struct{}) + } +} + +func (r *ready) waitForState(ctx context.Context, pred func() bool) error { + for { + r.mu.Lock() + if pred() { + r.mu.Unlock() + return ctx.Err() + } + stateChCopy := r.stateCh + r.mu.Unlock() + + select { + case <-stateChCopy: + case <-ctx.Done(): + return ctx.Err() + } } } diff --git a/cache/ready_test.go b/cache/ready_test.go new file mode 100644 index 000000000000..ae59caab240a --- /dev/null +++ b/cache/ready_test.go @@ -0,0 +1,195 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cache + +import ( + "context" + "errors" + "sync" + "testing" + "time" +) + +func TestWaitMethods(t *testing.T) { + tests := []struct { + name string + initialReady bool + expectReady bool + waitMethod string + expectBlock bool + }{ + { + name: "not_ready_testing_WaitNotReady", + initialReady: false, + expectReady: false, + waitMethod: "not_ready", + expectBlock: false, + }, + { + name: "not_ready_testing_WaitReady", + initialReady: false, + expectReady: false, + waitMethod: "ready", + expectBlock: true, + }, + { + name: "ready_testing_WaitReady", + initialReady: true, + expectReady: true, + waitMethod: "ready", + expectBlock: false, + }, + { + name: "ready_testing_WaitNotReady", + initialReady: true, + expectReady: true, + waitMethod: "not_ready", + expectBlock: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + r := newReady() + + if tt.initialReady { + r.Set() + } + + if got := r.Ready(); got != tt.expectReady { + t.Fatalf("Ready() = %t; want %t", got, tt.expectReady) + } + + ctx, cancel := context.WithTimeout(t.Context(), 100*time.Millisecond) + defer cancel() + + var err error + switch tt.waitMethod { + case "ready": + err = r.WaitReady(ctx) + case "not_ready": + err = r.WaitNotReady(ctx) + default: + t.Fatalf("invalid waitMethod: %s", tt.waitMethod) + } + + if tt.expectBlock { + if !errors.Is(err, context.DeadlineExceeded) { + t.Fatalf("expected timeout but got: %v", err) + } + } else { + if err != nil { + t.Fatalf("expected immediate return but got error: %v", err) + } + } + }) + } +} + +func TestSetUnblocksWaiters(t *testing.T) { + testStateTransitionUnblocksWaiters(t, false, true, (*ready).Set, true, "WaitReady") +} + +func TestResetUnblocksWaiters(t *testing.T) { + testStateTransitionUnblocksWaiters(t, true, false, (*ready).Reset, false, "WaitNotReady") +} + +func testStateTransitionUnblocksWaiters(t *testing.T, initialSet bool, waitForReady bool, transition func(*ready), expectedReady bool, waitMethodName string) { + cases := []struct { + name string + n int + }{ + {"one_waiter", 1}, + {"several_waiters", 16}, + {"many_waiters", 128}, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + r := newReady() + if initialSet { + r.Set() + } + + var startWg sync.WaitGroup + var readyWg sync.WaitGroup + + errs := make(chan error, tc.n) + for i := 0; i < tc.n; i++ { + startWg.Add(1) + readyWg.Add(1) + go func() { + defer readyWg.Done() + startWg.Done() + + ctx, cancel := context.WithTimeout(t.Context(), time.Second) + defer cancel() + + if waitForReady { + errs <- r.WaitReady(ctx) + } else { + errs <- r.WaitNotReady(ctx) + } + }() + } + startWg.Wait() + time.Sleep(50 * time.Millisecond) + transition(r) + readyWg.Wait() + + for i := 0; i < tc.n; i++ { + if err := <-errs; err != nil { + t.Fatalf("waiter %d: %s = %v; want: nil", i, waitMethodName, err) + } + } + + if r.Ready() != expectedReady { + t.Fatalf("Ready() = %t after transition; want %t", r.Ready(), expectedReady) + } + + if waitForReady { + if err := r.WaitReady(t.Context()); err != nil { + t.Fatalf("immediate WaitReady() after transition = %v; want: nil", err) + } + } else { + if err := r.WaitNotReady(t.Context()); err != nil { + t.Fatalf("immediate WaitNotReady() after transition = %v; want: nil", err) + } + } + }) + } +} + +func TestIdempotentStateTransitions(t *testing.T) { + r := newReady() + + r.Set() + r.Set() + if !r.Ready() { + t.Fatalf("Ready() = false after double Set(); want: true") + } + if err := r.WaitReady(t.Context()); err != nil { + t.Fatalf("WaitReady() after double Set() = %v; want: nil", err) + } + + r.Reset() + r.Reset() + if r.Ready() { + t.Fatalf("Ready() = true after double Reset(); want: false") + } + if err := r.WaitNotReady(t.Context()); err != nil { + t.Fatalf("WaitNotReady() after double Reset() = %v; want ", err) + } +} From 8a8e812a84bcced2fa0f69617ee83d19cbe52d39 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 12 Aug 2025 10:44:14 +0200 Subject: [PATCH 0420/1068] Move span creation to capture more attributes of Watch Signed-off-by: Aleksander Mistewicz --- server/etcdserver/api/v3rpc/watch.go | 15 +++++++++++++-- server/storage/mvcc/watchable_store.go | 8 +------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/server/etcdserver/api/v3rpc/watch.go b/server/etcdserver/api/v3rpc/watch.go index cee8c48a1b9d..45e8b5e74622 100644 --- a/server/etcdserver/api/v3rpc/watch.go +++ b/server/etcdserver/api/v3rpc/watch.go @@ -22,6 +22,8 @@ import ( "sync" "time" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/trace" "go.uber.org/zap" pb "go.etcd.io/etcd/api/v3/etcdserverpb" @@ -29,6 +31,7 @@ import ( "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" "go.etcd.io/etcd/client/pkg/v3/verify" clientv3 "go.etcd.io/etcd/client/v3" + "go.etcd.io/etcd/pkg/v3/traceutil" "go.etcd.io/etcd/server/v3/auth" "go.etcd.io/etcd/server/v3/etcdserver" "go.etcd.io/etcd/server/v3/etcdserver/apply" @@ -320,8 +323,16 @@ func (sws *serverWatchStream) recvLoop() error { } filters := FiltersFromRequest(creq) - - id, err := sws.watchStream.Watch(sws.gRPCStream.Context(), mvcc.WatchID(creq.WatchId), creq.Key, creq.RangeEnd, creq.StartRevision, filters...) + ctx, _ := traceutil.Tracer.Start(sws.gRPCStream.Context(), "watch", trace.WithAttributes( + attribute.String("key", string(creq.Key)), + attribute.String("range_end", string(creq.RangeEnd)), + attribute.Int64("start_rev", creq.StartRevision), + attribute.Bool("progress_notify", creq.ProgressNotify), + attribute.Bool("prev_kv", creq.PrevKv), + attribute.Bool("fragment", creq.Fragment), + )) + + id, err := sws.watchStream.Watch(ctx, mvcc.WatchID(creq.WatchId), creq.Key, creq.RangeEnd, creq.StartRevision, filters...) if err == nil { sws.mu.Lock() if creq.ProgressNotify { diff --git a/server/storage/mvcc/watchable_store.go b/server/storage/mvcc/watchable_store.go index 84957d040ad5..a450644d90b2 100644 --- a/server/storage/mvcc/watchable_store.go +++ b/server/storage/mvcc/watchable_store.go @@ -19,7 +19,6 @@ import ( "sync" "time" - "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" "go.uber.org/zap" @@ -136,6 +135,7 @@ func (s *watchableStore) watch(ctx context.Context, key, end []byte, startRev in id: id, ch: ch, fcs: fcs, + span: trace.SpanFromContext(ctx), } s.mu.Lock() @@ -156,12 +156,6 @@ func (s *watchableStore) watch(ctx context.Context, key, end []byte, startRev in watcherGauge.Inc() - _, wa.span = traceutil.Tracer.Start(ctx, "watch", trace.WithAttributes( - attribute.String("key", string(key)), - attribute.String("range_end", string(end)), - attribute.Int64("start_rev", startRev), - )) - return wa, func() { s.cancelWatcher(wa) } } From 0a95528c1eccf780a361647825ee96cc47baa3fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 00:45:53 +0000 Subject: [PATCH 0421/1068] build(deps): bump github/codeql-action from 3.29.7 to 3.29.8 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.7 to 3.29.8. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/51f77329afa6477de8c49fc9c7046c15b9a4e79d...76621b61decf072c1cee8dd1ce2d2a82d33c17ed) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.29.8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 9ce6bb03e126..58ff2e78da8e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5 + uses: github/codeql-action/init@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.5 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5 + uses: github/codeql-action/autobuild@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.5 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5 + uses: github/codeql-action/analyze@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.5 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 83cd3f88971f..6b20fc74307a 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5 + uses: github/codeql-action/upload-sarif@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.5 with: sarif_file: results.sarif From 48e449844accdcabde78ef45127d383b139c9531 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 12 Aug 2025 13:31:10 +0200 Subject: [PATCH 0422/1068] Update tracing integration test for Watch to use more detailed spans Signed-off-by: Aleksander Mistewicz --- tests/integration/tracing_test.go | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/tests/integration/tracing_test.go b/tests/integration/tracing_test.go index 082ea3e8463f..899458f69da5 100644 --- a/tests/integration/tracing_test.go +++ b/tests/integration/tracing_test.go @@ -138,7 +138,7 @@ func TestTracing(t *testing.T) { defer cancel() // Create a watch channel - watchChan := cli.Watch(ctx, "watch-key") + watchChan := cli.Watch(ctx, "watch-key", clientv3.WithProgressNotify(), clientv3.WithRev(1)) // Put a value to trigger the watch _, err := cli.Put(ctx, "watch-key", "watch-value") @@ -155,8 +155,33 @@ func TestTracing(t *testing.T) { } }, wantSpan: &v1.Span{ - Name: "etcdserverpb.Watch/Watch", - // Attributes are set outside Etcd in otelgrpc, so they are ignored here. + Name: "watch", + Attributes: []*commonv1.KeyValue{ + { + Key: "key", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_StringValue{StringValue: "watch-key"}}, + }, + { + Key: "range_end", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_StringValue{StringValue: ""}}, + }, + { + Key: "start_rev", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_IntValue{IntValue: 1}}, + }, + { + Key: "progress_notify", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_BoolValue{BoolValue: true}}, + }, + { + Key: "prev_kv", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_BoolValue{BoolValue: false}}, + }, + { + Key: "fragment", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_BoolValue{BoolValue: false}}, + }, + }, }, }, } { From c093a20b686902bcdf33c708e24c27f92d17583e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 14:32:50 +0000 Subject: [PATCH 0423/1068] build(deps): bump actions/checkout from 4 to 5 Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 2 +- .github/workflows/antithesis-verify.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/measure-testgrid-flakiness.yaml | 2 +- .github/workflows/scorecards.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 9c64672cf0c0..ef2088b93b60 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -48,7 +48,7 @@ jobs: CFG_NODE_COUNT: ${{ inputs.cfg_node_count || 3 }} steps: - name: Checkout the code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Login to Antithesis Docker Registry uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0 diff --git a/.github/workflows/antithesis-verify.yml b/.github/workflows/antithesis-verify.yml index 7db1fd88fab5..2a09971b5ff6 100644 --- a/.github/workflows/antithesis-verify.yml +++ b/.github/workflows/antithesis-verify.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Build etcd-server and etcd-client images run: | diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 58ff2e78da8e..5e660430372c 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -37,7 +37,7 @@ jobs: language: ['go'] steps: - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.5 diff --git a/.github/workflows/measure-testgrid-flakiness.yaml b/.github/workflows/measure-testgrid-flakiness.yaml index 8c5a8fd73a0d..84b3a69d46c9 100644 --- a/.github/workflows/measure-testgrid-flakiness.yaml +++ b/.github/workflows/measure-testgrid-flakiness.yaml @@ -12,7 +12,7 @@ jobs: name: Measure TestGrid Flakiness runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - id: goversion run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 6b20fc74307a..9dad28de1758 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -23,7 +23,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false From d3d3b75d1406e94054a69c14a0e0a62a8beaa8cf Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 12 Aug 2025 16:26:40 +0200 Subject: [PATCH 0424/1068] Move span.End() one layer up Signed-off-by: Aleksander Mistewicz --- server/storage/mvcc/watchable_store.go | 10 ++-------- server/storage/mvcc/watcher.go | 10 ++++++++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/server/storage/mvcc/watchable_store.go b/server/storage/mvcc/watchable_store.go index a450644d90b2..ac893c804faa 100644 --- a/server/storage/mvcc/watchable_store.go +++ b/server/storage/mvcc/watchable_store.go @@ -15,11 +15,9 @@ package mvcc import ( - "context" "sync" "time" - "go.opentelemetry.io/otel/trace" "go.uber.org/zap" "go.etcd.io/etcd/api/v3/mvccpb" @@ -48,7 +46,7 @@ var ( func ChanBufLen() int { return chanBufLen } type watchable interface { - watch(ctx context.Context, key, end []byte, startRev int64, id WatchID, ch chan<- WatchResponse, fcs ...FilterFunc) (*watcher, cancelFunc) + watch(key, end []byte, startRev int64, id WatchID, ch chan<- WatchResponse, fcs ...FilterFunc) (*watcher, cancelFunc) progress(w *watcher) progressAll(watchers map[WatchID]*watcher) bool rev() int64 @@ -126,7 +124,7 @@ func (s *watchableStore) NewWatchStream() WatchStream { } } -func (s *watchableStore) watch(ctx context.Context, key, end []byte, startRev int64, id WatchID, ch chan<- WatchResponse, fcs ...FilterFunc) (*watcher, cancelFunc) { +func (s *watchableStore) watch(key, end []byte, startRev int64, id WatchID, ch chan<- WatchResponse, fcs ...FilterFunc) (*watcher, cancelFunc) { wa := &watcher{ key: key, end: end, @@ -135,7 +133,6 @@ func (s *watchableStore) watch(ctx context.Context, key, end []byte, startRev in id: id, ch: ch, fcs: fcs, - span: trace.SpanFromContext(ctx), } s.mu.Lock() @@ -202,7 +199,6 @@ func (s *watchableStore) cancelWatcher(wa *watcher) { time.Sleep(time.Millisecond) } - wa.span.End() wa.ch = nil s.mu.Unlock() } @@ -568,8 +564,6 @@ type watcher struct { minRev int64 id WatchID - span trace.Span - fcs []FilterFunc // a chan to send out the watch response. // The chan might be shared with other watchers. diff --git a/server/storage/mvcc/watcher.go b/server/storage/mvcc/watcher.go index 9b22747d7e8f..87bcf9a40a85 100644 --- a/server/storage/mvcc/watcher.go +++ b/server/storage/mvcc/watcher.go @@ -20,6 +20,8 @@ import ( "errors" "sync" + "go.opentelemetry.io/otel/trace" + "go.etcd.io/etcd/api/v3/mvccpb" clientv3 "go.etcd.io/etcd/client/v3" ) @@ -133,9 +135,13 @@ func (ws *watchStream) Watch(ctx context.Context, id WatchID, key, end []byte, s return -1, ErrWatcherDuplicateID } - w, c := ws.watchable.watch(ctx, key, end, startRev, id, ws.ch, fcs...) + w, c := ws.watchable.watch(key, end, startRev, id, ws.ch, fcs...) - ws.cancels[id] = c + span := trace.SpanFromContext(ctx) + ws.cancels[id] = func() { + defer span.End() + c() + } ws.watchers[id] = w return id, nil } From 2328042838474141ea50f6ab4e939932223f2664 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 12 Aug 2025 16:21:49 +0200 Subject: [PATCH 0425/1068] Add Watch to detailed trace analysis Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/coverage_test.go | 11 +++++++ tests/robustness/coverage/matchers_test.go | 38 +++++++++++----------- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index d4ca35a8e4f7..dd52770a2c98 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -137,6 +137,17 @@ var referenceUsageOfEtcdAPI = map[string]refOp{ }, "etcdserverpb.Watch/Watch": { // Not part of the contract interface (yet) + args: []column{ + {name: "range_end", matcher: isRangeEndSet}, + {name: "start_rev", matcher: intAttrSet("start_rev")}, + {name: "prev_kv", matcher: boolAttrSet("prev_kv")}, + {name: "fragment", matcher: boolAttrSet("fragment")}, + {name: "progress_notify", matcher: boolAttrSet("progress_notify")}, + }, + keyAttrName: "key", + methods: []method{ + {name: "Watch", matcher: notMatcher(keyIsEqualStr("key", "compact_rev_key"))}, + }, }, "etcdserverpb.Lease/LeaseGrant": { // Used to manage masterleases and events diff --git a/tests/robustness/coverage/matchers_test.go b/tests/robustness/coverage/matchers_test.go index 62935eddedd9..2db75e0d368a 100644 --- a/tests/robustness/coverage/matchers_test.go +++ b/tests/robustness/coverage/matchers_test.go @@ -47,14 +47,16 @@ func keyIsEqualInt(key string, want int) Matcher { } } -func isLimitSet(trace *tracev1.ResourceSpans) bool { - limit, found := intAttr(trace, "limit") - return found && limit > 0 -} +var ( + isLimitSet = intAttrSet("limit") + isRevisionSet = intAttrSet("rev") +) -func isRevisionSet(trace *tracev1.ResourceSpans) bool { - rev, found := intAttr(trace, "rev") - return found && rev > 0 +func intAttrSet(key string) Matcher { + return func(trace *tracev1.ResourceSpans) bool { + val, found := intAttr(trace, key) + return found && val > 0 + } } func intAttr(trace *tracev1.ResourceSpans, key string) (int, bool) { @@ -95,19 +97,17 @@ func strAttr(trace *tracev1.ResourceSpans, key string) (string, bool) { return "", false } -func isReadOnly(trace *tracev1.ResourceSpans) bool { - isRO, found := boolAttr(trace, "read_only") - return found && isRO -} - -func isKeysOnly(trace *tracev1.ResourceSpans) bool { - isKeys, found := boolAttr(trace, "keys_only") - return found && isKeys -} +var ( + isReadOnly = boolAttrSet("read_only") + isKeysOnly = boolAttrSet("keys_only") + isCountOnly = boolAttrSet("count_only") +) -func isCountOnly(trace *tracev1.ResourceSpans) bool { - isCount, found := boolAttr(trace, "count_only") - return found && isCount +func boolAttrSet(key string) Matcher { + return func(trace *tracev1.ResourceSpans) bool { + val, found := boolAttr(trace, key) + return found && val + } } func boolAttr(trace *tracev1.ResourceSpans, key string) (bool, bool) { From 6cc6d05fbe5cb475f77f08ddf6ff256ed44570eb Mon Sep 17 00:00:00 2001 From: Kishen Viswanathan Date: Sun, 6 Jul 2025 23:21:49 +0530 Subject: [PATCH 0426/1068] Add make target for running benchmark tests Add in the copyright test for benchmark_test.sh Co-authored-by: Marek Siarkowicz Signed-off-by: Kishen Viswanathan --- Makefile | 14 +++++++++ scripts/benchmark_test.sh | 62 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100755 scripts/benchmark_test.sh diff --git a/Makefile b/Makefile index 4b44b672e08b..a81b65f7abdf 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,20 @@ include $(REPOSITORY_ROOT)/tests/robustness/Makefile build: GO_BUILD_FLAGS="${GO_BUILD_FLAGS} -v -mod=readonly" ./scripts/build.sh +.PHONY: install-benchmark +install-benchmark: build +ifeq (, $(shell which benchmark)) + @echo "Installing etcd benchmark tool..." + go install -v ./tools/benchmark +else + @echo "benchmark tool already installed..." +endif + +.PHONY: bench-put +bench-put: build install-benchmark + @echo "Running benchmark: put $(ARGS)" + ./scripts/benchmark_test.sh put $(ARGS) + PLATFORMS=linux-amd64 linux-386 linux-arm linux-arm64 linux-ppc64le linux-s390x darwin-amd64 darwin-arm64 windows-amd64 windows-arm64 .PHONY: build-all diff --git a/scripts/benchmark_test.sh b/scripts/benchmark_test.sh new file mode 100755 index 000000000000..95da4141fe90 --- /dev/null +++ b/scripts/benchmark_test.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This script runs a benchmark on a locally started etcd server + +set -euo pipefail + +source ./scripts/test_lib.sh + +COMMON_BENCHMARK_FLAGS="--report-perfdash" + +if [[ $# -lt 1 ]]; then + echo "Usage: $0 [tester args...]" + exit 1 +fi + +BENCHMARK_NAME="$1" +ARGS="${*:2}" + +echo "Starting the etcd server..." +DATA_DIR=$(mktemp -d /tmp/etcd/data-XXXXXX) +./bin/etcd --data-dir="$DATA_DIR" > /tmp/etcd.log 2>&1 & +etcd_pid=$! + +trap 'log_warning -e "Stopping etcd server - PID $etcd_pid"; + kill $etcd_pid 2>/dev/null; + rm -rf $DATA_DIR; + log_success "Deleted the contents from $DATA_DIR related to benchmark test"' EXIT + +# Wait until etcd becomes healthy +for retry in {1..10}; do + if ./bin/etcdctl endpoint health --cluster> /dev/null 2>&1; then + log_success -e "\\netcd is healthy" + break + fi + log_warning -e "\\nWaiting for etcd to be healthy..." + sleep 1 + if [[ $retry -eq 10 ]]; then + log_error -e "\\nFailed to confirm etcd health after $retry attempts. Check /tmp/etcd.log for more information" + exit 1 + fi +done + +log_success -e "etcd process is running with PID $etcd_pid" + +log_callout -e "\\nPerforming benchmark $BENCHMARK_NAME with arguments: $ARGS" +read -r -a TESTER_OPTIONS <<< "$ARGS" +log_callout "Running: benchmark $BENCHMARK_NAME ${TESTER_OPTIONS[*]} $COMMON_BENCHMARK_FLAGS" +benchmark "$BENCHMARK_NAME" "${TESTER_OPTIONS[@]}" $COMMON_BENCHMARK_FLAGS +log_callout "Completed: benchmark $BENCHMARK_NAME ${TESTER_OPTIONS[*]} $COMMON_BENCHMARK_FLAGS" From a918bca1f628402efcc0eeaf43e9decbe93599d0 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 12 Aug 2025 17:08:37 +0200 Subject: [PATCH 0427/1068] Add Compact to detailed trace analysis Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/coverage_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index dd52770a2c98..235b71347564 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -134,6 +134,10 @@ var referenceUsageOfEtcdAPI = map[string]refOp{ "etcdserverpb.KV/Compact": { // Compaction should move to using internal Etcd mechanism // Discussed in https://github.com/kubernetes/kubernetes/issues/80513 + args: []column{ + {name: "rev", matcher: isRevisionSet}, + {name: "physical", matcher: boolAttrSet("is_physical")}, + }, }, "etcdserverpb.Watch/Watch": { // Not part of the contract interface (yet) @@ -253,6 +257,9 @@ func testInterfaceUse(t *testing.T, filename string) { } func extractPattern(trace *tracev1.ResourceSpans, key string) (string, bool) { + if key == "" { + return "", true + } k, found := strAttr(trace, key) if !found { return "", false @@ -303,6 +310,9 @@ func argsToDescription(matched string, cols []column) string { } func extractMethod(methodToMatched []method, trace *tracev1.ResourceSpans) (string, bool) { + if len(methodToMatched) == 0 { + return getOperationName(trace), true + } for _, mm := range methodToMatched { if mm.matcher(trace) { return mm.name, true From ed191a0dec2dd44e4fc6974eceaa12e79a60511e Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 13 Aug 2025 07:46:10 +0000 Subject: [PATCH 0428/1068] dependency: bump golang.org/x/net from 0.42.0 to 0.43.0, golang.org/x/sys from 0.34.0 to 0.35.0, golang.org/x/text from 0.27.0 to 0.28.0, and golang.org/x/crypto from 0.40.0 to 0.41.0 Reference: - https://github.com/etcd-io/etcd/pull/20472 - https://github.com/etcd-io/etcd/pull/20473 - https://github.com/etcd-io/etcd/pull/20474 - https://github.com/etcd-io/etcd/pull/20468 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 6 +++--- api/go.sum | 12 ++++++------ cache/go.mod | 6 +++--- cache/go.sum | 12 ++++++------ client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 6 +++--- client/v3/go.sum | 12 ++++++------ etcdctl/go.mod | 6 +++--- etcdctl/go.sum | 12 ++++++------ etcdutl/go.mod | 8 ++++---- etcdutl/go.sum | 16 ++++++++-------- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- pkg/go.mod | 6 +++--- pkg/go.sum | 12 ++++++------ server/go.mod | 8 ++++---- server/go.sum | 16 ++++++++-------- tests/go.mod | 8 ++++---- tests/go.sum | 16 ++++++++-------- tools/mod/go.mod | 16 +++++++++------- tools/mod/go.sum | 32 ++++++++++++++++++-------------- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 6 +++--- tools/testgrid-analysis/go.sum | 12 ++++++------ 26 files changed, 135 insertions(+), 129 deletions(-) diff --git a/api/go.mod b/api/go.mod index 40e04821bdc3..36a5d915ebd9 100644 --- a/api/go.mod +++ b/api/go.mod @@ -21,9 +21,9 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect - golang.org/x/net v0.42.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.27.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index cd8bc821d551..40610e99672b 100644 --- a/api/go.sum +++ b/api/go.sum @@ -51,20 +51,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/cache/go.mod b/cache/go.mod index f3e7bcd6f2d6..6e7d3daa4884 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -19,9 +19,9 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/net v0.42.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.27.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/grpc v1.74.2 // indirect diff --git a/cache/go.sum b/cache/go.sum index 6260175ed512..b4cec36e038c 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -72,20 +72,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index e6a3638ac8fa..43e0c9f7b3e7 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.5.0 github.com/stretchr/testify v1.10.0 go.uber.org/zap v1.27.0 - golang.org/x/sys v0.34.0 + golang.org/x/sys v0.35.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index 462fa64c93d1..f0b3536864b8 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -25,8 +25,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index 9d61962ba104..f3882df66e06 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -36,9 +36,9 @@ require ( go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/net v0.42.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.27.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index dd832364a2ca..ae60bcf376ec 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -88,20 +88,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index f33095783ad7..8318ff25cc5a 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -39,9 +39,9 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.42.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.27.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index cb4e4b58a884..edefcc9e4015 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -112,8 +112,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -121,12 +121,12 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 685b2f1f67d1..7e7084459d16 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -85,10 +85,10 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.40.0 // indirect - golang.org/x/net v0.42.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.27.0 // indirect + golang.org/x/crypto v0.41.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect golang.org/x/time v0.12.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 22523a695e35..1594d3123238 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -146,8 +146,8 @@ go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= -golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -155,8 +155,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -167,12 +167,12 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index d183d78bec3b..e4039fffef03 100644 --- a/go.mod +++ b/go.mod @@ -93,10 +93,10 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.40.0 // indirect - golang.org/x/net v0.42.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.27.0 // indirect + golang.org/x/crypto v0.41.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index 83e3b321c07b..ab14f22dcb45 100644 --- a/go.sum +++ b/go.sum @@ -188,8 +188,8 @@ go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= -golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -205,8 +205,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -222,12 +222,12 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/pkg/go.mod b/pkg/go.mod index 695c4d89f935..66a6e7d66ae9 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -24,9 +24,9 @@ require ( go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.42.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.27.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index a44832afa2fa..2af76b1cddcf 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -54,12 +54,12 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= diff --git a/server/go.mod b/server/go.mod index e44503306b5c..9e985b6a4066 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,8 +37,8 @@ require ( go.opentelemetry.io/otel/sdk v1.37.0 go.opentelemetry.io/otel/trace v1.37.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.40.0 - golang.org/x/net v0.42.0 + golang.org/x/crypto v0.41.0 + golang.org/x/net v0.43.0 golang.org/x/time v0.12.0 google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 google.golang.org/grpc v1.74.2 @@ -70,8 +70,8 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.27.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index da43f7b28f21..a67989f7fa7b 100644 --- a/server/go.sum +++ b/server/go.sum @@ -131,8 +131,8 @@ go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= -golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -140,8 +140,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -151,12 +151,12 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index acfa29be49cc..2210c6d5ec23 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -47,7 +47,7 @@ require ( go.opentelemetry.io/otel/sdk v1.37.0 go.opentelemetry.io/proto/otlp v1.7.1 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.40.0 + golang.org/x/crypto v0.41.0 golang.org/x/sync v0.16.0 golang.org/x/time v0.12.0 google.golang.org/grpc v1.74.2 @@ -97,9 +97,9 @@ require ( go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/net v0.42.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.27.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index 27b4d631b9f5..5f51640e1413 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -194,8 +194,8 @@ go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= -golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -211,8 +211,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -228,12 +228,12 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 9d04f13ff215..06cad60b78ed 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -213,16 +213,18 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.40.0 // indirect + golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect - golang.org/x/mod v0.25.0 // indirect - golang.org/x/net v0.42.0 // indirect + golang.org/x/mod v0.26.0 // indirect + golang.org/x/net v0.43.0 // indirect golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/term v0.33.0 // indirect - golang.org/x/text v0.27.0 // indirect - golang.org/x/tools v0.34.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/term v0.34.0 // indirect + golang.org/x/text v0.28.0 // indirect + golang.org/x/tools v0.35.0 // indirect + golang.org/x/tools/go/expect v0.1.1-deprecated // indirect + golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/grpc v1.74.2 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index ca5623e11de8..ebe740e099dd 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -541,8 +541,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= -golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -560,8 +560,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -583,8 +583,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -626,8 +626,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -641,8 +641,8 @@ golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg= -golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= +golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= +golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -657,8 +657,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= @@ -679,8 +679,12 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= -golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= +golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= +golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= +golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= +golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= +golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 8e235e1092c9..dab92e4afad9 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -22,5 +22,5 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/image v0.18.0 // indirect - golang.org/x/text v0.27.0 // indirect + golang.org/x/text v0.28.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index f2f146b464f0..ec10b648a421 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -54,8 +54,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 61b72e83da92..dd016fb90004 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -17,9 +17,9 @@ require ( github.com/spf13/pflag v1.0.7 // indirect go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect - golang.org/x/net v0.42.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.27.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/grpc v1.74.2 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 1df068c4c286..7f2cd8a41a37 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1337,8 +1337,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1485,8 +1485,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1517,8 +1517,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 8d253bd5727a2c069680f00c7c6b2ab773c562c2 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Tue, 12 Aug 2025 22:21:00 +0000 Subject: [PATCH 0429/1068] cache: refactor ringbuffer with iterator methods Signed-off-by: Peter Chang --- cache/demux.go | 11 +- cache/ringbuffer.go | 93 ++++++++++- cache/ringbuffer_test.go | 333 +++++++++++++++++++++++++++++++-------- 3 files changed, 362 insertions(+), 75 deletions(-) diff --git a/cache/demux.go b/cache/demux.go index adbc495b6699..344a9e5391fc 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -158,16 +158,15 @@ func (d *demux) resyncLaggingWatchers() { continue } // TODO: re-enable key‐predicate in Filter when non‐zero startRev or performance tuning is needed - missed := d.history.Filter(nextRev) - enqueueFailed := false - for _, eventBatch := range missed { + d.history.AscendGreaterOrEqual(nextRev, func(rev int64, eventBatch []*clientv3.Event) bool { if !w.enqueueEvent(eventBatch) { // buffer overflow: watcher still lagging enqueueFailed = true - break + return false } - nextRev = eventBatch[0].Kv.ModRevision + 1 - } + nextRev = rev + 1 + return true + }) if !enqueueFailed { delete(d.laggingWatchers, w) diff --git a/cache/ringbuffer.go b/cache/ringbuffer.go index b9d1681cb58b..8ada7360d9fe 100644 --- a/cache/ringbuffer.go +++ b/cache/ringbuffer.go @@ -34,6 +34,8 @@ type batch struct { type KeyPredicate = func([]byte) bool +type IterFunc func(rev int64, events []*clientv3.Event) bool + func newRingBuffer(capacity int) *ringBuffer { // assume capacity > 0 – validated by Cache return &ringBuffer{ @@ -73,21 +75,94 @@ func (r *ringBuffer) append(b batch) { r.head = (r.head + 1) % len(r.buffer) } -// Filter returns all events in the buffer whose ModRevision is >= minRev. +// AscendGreaterOrEqual iterates through batches in ascending order starting from the first batch with rev >= pivot. // TODO: use binary search on the ring buffer to locate the first entry >= nextRev instead of a full scan -func (r *ringBuffer) Filter(minRev int64) (eventBatches [][]*clientv3.Event) { - eventBatches = make([][]*clientv3.Event, 0, r.size) +func (r *ringBuffer) AscendGreaterOrEqual(pivot int64, iter IterFunc) { + if r.size == 0 { + return + } + + for n, i := 0, r.tail; n < r.size; n, i = n+1, (i+1)%len(r.buffer) { + eventBatch := r.buffer[i] + + if eventBatch.events == nil { + panic(fmt.Sprintf("ringBuffer.AscendGreaterOrEqual: unexpected nil at %d", i)) + } + + if eventBatch.rev < pivot { + continue + } + + if !iter(eventBatch.rev, eventBatch.events) { + return + } + } +} + +func (r *ringBuffer) AscendLessThan(pivot int64, iter IterFunc) { + if r.size == 0 { + return + } for n, i := 0, r.tail; n < r.size; n, i = n+1, (i+1)%len(r.buffer) { eventBatch := r.buffer[i] + + if eventBatch.events == nil { + panic(fmt.Sprintf("ringBuffer.AscendLessThan: unexpected nil at %d", i)) + } + + if eventBatch.rev >= pivot { + return + } + + if !iter(eventBatch.rev, eventBatch.events) { + return + } + } +} + +func (r *ringBuffer) DescendGreaterThan(pivot int64, iter IterFunc) { + if r.size == 0 { + return + } + + for n, i := 0, r.moduloIndex(r.head-1); n < r.size; n, i = n+1, r.moduloIndex(i-1) { + eventBatch := r.buffer[i] + + if eventBatch.events == nil { + panic(fmt.Sprintf("ringBuffer.DescendGreaterThan: unexpected nil at %d", i)) + } + + if eventBatch.rev <= pivot { + return + } + + if !iter(eventBatch.rev, eventBatch.events) { + return + } + } +} + +func (r *ringBuffer) DescendLessOrEqual(pivot int64, iter IterFunc) { + if r.size == 0 { + return + } + + for n, i := 0, r.moduloIndex(r.head-1); n < r.size; n, i = n+1, r.moduloIndex(i-1) { + eventBatch := r.buffer[i] + if eventBatch.events == nil { - panic(fmt.Sprintf("ringBuffer.Filter: unexpected nil eventBatch at index %d", i)) + panic(fmt.Sprintf("ringBuffer.DescendLessOrEqual: unexpected nil at %d", i)) } - if eventBatch.rev >= minRev { - eventBatches = append(eventBatches, eventBatch.events) + + if eventBatch.rev > pivot { + continue + } + + if !iter(eventBatch.rev, eventBatch.events) { + return } } - return eventBatches } // PeekLatest returns the most recently-appended event (or nil if empty). @@ -113,3 +188,7 @@ func (r *ringBuffer) RebaseHistory() { r.buffer[i] = batch{} } } + +func (r *ringBuffer) moduloIndex(index int) int { + return (index + len(r.buffer)) % len(r.buffer) +} diff --git a/cache/ringbuffer_test.go b/cache/ringbuffer_test.go index 0e7e3b0105c2..c20b68ec8ed8 100644 --- a/cache/ringbuffer_test.go +++ b/cache/ringbuffer_test.go @@ -90,82 +90,259 @@ func TestPeekLatestAndOldest(t *testing.T) { } } -func TestFilter(t *testing.T) { +func TestIterationMethods(t *testing.T) { + type iterTestCase struct { + method iterMethod + pivot int64 + wantIterRevisions []int64 + } tests := []struct { - name string - capacity int - revs []int64 - minRev int64 - wantFilteredRevs []int64 - wantLatestRev int64 + name string + capacity int + setupRevisions []int64 + cases []iterTestCase }{ { - name: "no_filter", - capacity: 5, - revs: []int64{1, 2, 3}, - minRev: 0, - wantFilteredRevs: []int64{1, 2, 3}, - wantLatestRev: 3, + name: "empty_buffer", + capacity: 4, + setupRevisions: nil, + cases: []iterTestCase{ + {ascendGTE, 0, []int64{}}, + {ascendLT, 10, []int64{}}, + {descendGT, 0, []int64{}}, + {descendLTE, 10, []int64{}}, + }, }, { - name: "partial_match", - capacity: 5, - revs: []int64{10, 11, 12, 13}, - minRev: 12, - wantFilteredRevs: []int64{12, 13}, - wantLatestRev: 13, + name: "basic_filtering", + capacity: 5, + setupRevisions: []int64{1, 2, 3}, + cases: []iterTestCase{ + {ascendGTE, 0, []int64{1, 2, 3}}, + {ascendGTE, 2, []int64{2, 3}}, + {ascendGTE, 100, []int64{}}, + {ascendLT, 3, []int64{1, 2}}, + {ascendLT, 1, []int64{}}, + {ascendLT, 100, []int64{1, 2, 3}}, + {descendGT, 1, []int64{3, 2}}, + {descendGT, 3, []int64{}}, + {descendGT, 0, []int64{3, 2, 1}}, + {descendLTE, 2, []int64{2, 1}}, + {descendLTE, 3, []int64{3, 2, 1}}, + {descendLTE, 0, []int64{}}, + }, }, { - name: "filter_when_full", - capacity: 3, - revs: []int64{20, 21, 22, 23, 24}, - minRev: 23, - wantFilteredRevs: []int64{23, 24}, - wantLatestRev: 24, + name: "overflowed stores only entries within capacity", + capacity: 3, + setupRevisions: []int64{20, 21, 22, 23, 24}, // stored: 22, 23, 24 + cases: []iterTestCase{ + {ascendGTE, 23, []int64{23, 24}}, + {ascendGTE, 0, []int64{22, 23, 24}}, + {ascendLT, 23, []int64{22}}, + {ascendLT, 25, []int64{22, 23, 24}}, + {descendGT, 22, []int64{24, 23}}, + {descendGT, 25, []int64{}}, + {descendLTE, 23, []int64{23, 22}}, + {descendLTE, 24, []int64{24, 23, 22}}, + }, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + rb := setupRingBuffer(t, tt.capacity, tt.setupRevisions) + + for _, tc := range tt.cases { + tc := tc + t.Run(fmt.Sprintf("%s_pivot_%d", tc.method, tc.pivot), func(t *testing.T) { + got := collectRevisions(rb, tc.method, tc.pivot) + if diff := cmp.Diff(tc.wantIterRevisions, got); diff != "" { + t.Fatalf("%s(%d) mismatch (-want +got):\n%s", tc.method, tc.pivot, diff) + } + }) + } + }) + } +} + +func TestIterationWithBatching(t *testing.T) { + rb := newRingBuffer(6) + events := []*clientv3.Event{ + {Kv: &mvccpb.KeyValue{Key: []byte("key-a"), ModRevision: 5}}, + {Kv: &mvccpb.KeyValue{Key: []byte("key-b-1"), ModRevision: 10}}, + {Kv: &mvccpb.KeyValue{Key: []byte("key-b-2"), ModRevision: 10}}, + {Kv: &mvccpb.KeyValue{Key: []byte("key-b-3"), ModRevision: 10}}, + {Kv: &mvccpb.KeyValue{Key: []byte("key-c"), ModRevision: 12}}, + } + + rb.Append(events) + + tests := []struct { + name string + method iterMethod + pivot int64 + want [][]*clientv3.Event + }{ + { + name: "ascending_gte_includes_batched_revision", + method: ascendGTE, + pivot: 10, + want: [][]*clientv3.Event{ + { + {Kv: &mvccpb.KeyValue{Key: []byte("key-b-1"), ModRevision: 10}}, + {Kv: &mvccpb.KeyValue{Key: []byte("key-b-2"), ModRevision: 10}}, + {Kv: &mvccpb.KeyValue{Key: []byte("key-b-3"), ModRevision: 10}}, + }, + { + {Kv: &mvccpb.KeyValue{Key: []byte("key-c"), ModRevision: 12}}, + }, + }, }, { - name: "none_match", - capacity: 4, - revs: []int64{30, 31}, - minRev: 100, - wantFilteredRevs: []int64{}, - wantLatestRev: 31, + name: "ascending_lt_stops_before_batched_revision", + method: ascendLT, + pivot: 10, + want: [][]*clientv3.Event{ + { + {Kv: &mvccpb.KeyValue{Key: []byte("key-a"), ModRevision: 5}}, + }, + }, }, { - name: "empty_buffer", - capacity: 3, - revs: nil, - minRev: 0, - wantFilteredRevs: []int64{}, - wantLatestRev: 0, + name: "all_revisions_with_proper_batch_sizes", + method: ascendGTE, + pivot: 0, + want: [][]*clientv3.Event{ + { + {Kv: &mvccpb.KeyValue{Key: []byte("key-a"), ModRevision: 5}}, + }, + { + {Kv: &mvccpb.KeyValue{Key: []byte("key-b-1"), ModRevision: 10}}, + {Kv: &mvccpb.KeyValue{Key: []byte("key-b-2"), ModRevision: 10}}, + {Kv: &mvccpb.KeyValue{Key: []byte("key-b-3"), ModRevision: 10}}, + }, + { + {Kv: &mvccpb.KeyValue{Key: []byte("key-c"), ModRevision: 12}}, + }, + }, }, } for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { - rb := newRingBuffer(tt.capacity) - for _, r := range tt.revs { - batch, err := makeEventBatch(r, "k", 11) - if err != nil { - t.Fatalf("makeEventBatch(%d, k, 11) failed: %v", r, err) - } - rb.Append(batch) + var got [][]*clientv3.Event + + rb.iterate(tt.method, tt.pivot, func(rev int64, events []*clientv3.Event) bool { + got = append(got, events) + return true + }) + + if diff := cmp.Diff(tt.want, got); diff != "" { + t.Fatalf("Events mismatch (-want +got):\n%s", diff) } + }) + } +} + +func TestIterationEarlyStop(t *testing.T) { + rb := setupRingBuffer(t, 5, []int64{5, 10, 15, 20}) + tests := []struct { + name string + method iterMethod + pivot int64 + stopAfter int + want []int64 + }{ + { + name: "find_first_match_ascending", + method: ascendGTE, + pivot: 10, + stopAfter: 1, + want: []int64{10}, + }, + { + name: "find_first_two_ascending_lt", + method: ascendLT, + pivot: 20, + stopAfter: 2, + want: []int64{5, 10}, + }, + { + name: "find_first_two_descending_gt", + method: descendGT, + pivot: 5, + stopAfter: 2, + want: []int64{20, 15}, + }, + { + name: "find_first_match_descending_lte", + method: descendLTE, + pivot: 15, + stopAfter: 1, + want: []int64{15}, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + var collected []int64 + callCount := 0 + + rb.iterate(tt.method, tt.pivot, func(rev int64, events []*clientv3.Event) bool { + collected = append(collected, rev) + callCount++ + + shouldContinue := callCount < tt.stopAfter + + if !shouldContinue { + t.Logf("Stopping early after %d items (callback returned false)", callCount) + } + + return shouldContinue + }) - gotBatches := rb.Filter(tt.minRev) - gotRevs := make([]int64, len(gotBatches)) - for i, b := range gotBatches { - gotRevs[i] = b[0].Kv.ModRevision + if diff := cmp.Diff(tt.want, collected); diff != "" { + t.Fatalf("Early stop failed.\nExpected: \nDiff (-want +got):\n%s", diff) } - if diff := cmp.Diff(tt.wantFilteredRevs, gotRevs); diff != "" { - t.Fatalf("Filter() revisions mismatch (-want +got):\n%s", diff) + if callCount != tt.stopAfter { + t.Fatalf("Expected exactly %d callback calls, got %d", tt.stopAfter, callCount) } + + t.Logf("Successfully stopped early: collected %v after %d callbacks", + collected, callCount) }) } } +type iterMethod string + +const ( + ascendGTE iterMethod = "AscendGreaterOrEqual" + ascendLT iterMethod = "AscendLessThan" + descendGT iterMethod = "DescendGreaterThan" + descendLTE iterMethod = "DescendLessOrEqual" +) + +func (r *ringBuffer) iterate(method iterMethod, pivot int64, fn IterFunc) { + switch method { + case ascendGTE: + r.AscendGreaterOrEqual(pivot, fn) + case ascendLT: + r.AscendLessThan(pivot, fn) + case descendGT: + r.DescendGreaterThan(pivot, fn) + case descendLTE: + r.DescendLessOrEqual(pivot, fn) + default: + panic(fmt.Sprintf("unknown iteration method: %s", method)) + } +} + func TestAtomicOrdered(t *testing.T) { tests := []struct { name string @@ -226,16 +403,23 @@ func TestAtomicOrdered(t *testing.T) { rb.Append(batch) } - gotBatches := rb.Filter(0) - if len(gotBatches) != len(tt.wantRev) { - t.Fatalf("len(got) = %d, want %d", len(gotBatches), len(tt.wantRev)) + gotRevs := []int64{} + var gotSizes []int + rb.AscendGreaterOrEqual(0, func(rev int64, events []*clientv3.Event) bool { + gotRevs = append(gotRevs, rev) + gotSizes = append(gotSizes, len(events)) + return true + }) + + if len(gotRevs) != len(tt.wantRev) { + t.Fatalf("len(got) = %d, want %d", len(gotRevs), len(tt.wantRev)) } - for i, b := range gotBatches { - if b[0].Kv.ModRevision != tt.wantRev[i] { - t.Errorf("at idx %d: rev = %d, want %d", i, b[0].Kv.ModRevision, tt.wantRev[i]) + for i := range gotRevs { + if gotRevs[i] != tt.wantRev[i] { + t.Errorf("at idx %d: rev = %d, want %d", i, gotRevs[i], tt.wantRev[i]) } - if batchSize := len(b); batchSize != tt.wantSize[i] { - t.Errorf("at rev %d: events.len = %d, want %d", b[0].Kv.ModRevision, batchSize, tt.wantSize[i]) + if gotSizes[i] != tt.wantSize[i] { + t.Errorf("at rev %d: events.len = %d, want %d", gotRevs[i], gotSizes[i], tt.wantSize[i]) } } }) @@ -273,7 +457,6 @@ func TestRebaseHistory(t *testing.T) { rb.RebaseHistory() oldestRev := rb.PeekOldest() - latestRev := rb.PeekLatest() if oldestRev != 0 { @@ -283,14 +466,40 @@ func TestRebaseHistory(t *testing.T) { t.Fatalf("PeekLatest()=%d, want=%d", latestRev, 0) } - batches := rb.Filter(0) - if len(batches) != 0 { - t.Fatalf("Filter() len(events)=%d, want=%d", len(batches), 0) + gotRevs := []int64{} + rb.AscendGreaterOrEqual(0, func(rev int64, events []*clientv3.Event) bool { + gotRevs = append(gotRevs, rev) + return true + }) + + if len(gotRevs) != 0 { + t.Fatalf("AscendGreaterOrEqual() len(events)=%d, want=%d", len(gotRevs), 0) } }) } } +func setupRingBuffer(t *testing.T, capacity int, revs []int64) *ringBuffer { + rb := newRingBuffer(capacity) + for _, r := range revs { + batch, err := makeEventBatch(r, "key", 1) + if err != nil { + t.Fatalf("makeEventBatch(%d, %s, %d) failed: %v", r, "key", 1, err) + } + rb.Append(batch) + } + return rb +} + +func collectRevisions(rb *ringBuffer, method iterMethod, pivot int64) []int64 { + revs := []int64{} + rb.iterate(method, pivot, func(rev int64, events []*clientv3.Event) bool { + revs = append(revs, rev) + return true + }) + return revs +} + func makeEventBatch(rev int64, key string, batchSize int) ([]*clientv3.Event, error) { if batchSize < 0 { return nil, fmt.Errorf("invalid batchSize %d", batchSize) From 6c971114446155c5d4fa43fd4a632ccf466442ee Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Tue, 12 Aug 2025 11:35:12 +0000 Subject: [PATCH 0430/1068] cache: preserve cached snapshot after watch errors Signed-off-by: Peter Chang --- cache/cache.go | 8 ++++---- cache/cache_test.go | 42 ++++++++++++++++++++++++++++++++++++------ cache/store.go | 8 -------- 3 files changed, 40 insertions(+), 18 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index 8b9abd44a774..29ea819e2510 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -149,8 +149,10 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption } func (c *Cache) Get(ctx context.Context, key string, opts ...clientv3.OpOption) (*clientv3.GetResponse, error) { - if err := c.WaitReady(ctx); err != nil { - return nil, err + if c.store.LatestRev() == 0 { + if err := c.WaitReady(ctx); err != nil { + return nil, err + } } op := clientv3.OpGet(key, opts...) @@ -253,14 +255,12 @@ func (c *Cache) watch(ctx context.Context, rev int64) error { if err := resp.Err(); err != nil { c.ready.Reset() c.demux.Purge() - c.store.Reset() return err } if err := c.store.Apply(resp.Events); err != nil { c.ready.Reset() c.demux.Purge() - c.store.Reset() return err } c.demux.Broadcast(resp.Events) diff --git a/cache/cache_test.go b/cache/cache_test.go index df36d9fc9cdf..2724230871ab 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -16,7 +16,6 @@ package cache import ( "context" - "errors" "sync" "testing" "time" @@ -403,11 +402,17 @@ func TestValidateWatchRange(t *testing.T) { func TestCacheCompactionResync(t *testing.T) { firstSnapshot := &clientv3.GetResponse{ Header: &pb.ResponseHeader{Revision: 5}, - Kvs: []*mvccpb.KeyValue{{Key: []byte("foo"), ModRevision: 5}}, + Kvs: []*mvccpb.KeyValue{ + {Key: []byte("foo"), Value: []byte("old_value"), ModRevision: 5, CreateRevision: 5, Version: 1}, + {Key: []byte("bar"), Value: []byte("old_bar"), ModRevision: 3, CreateRevision: 3, Version: 1}, + }, } secondSnapshot := &clientv3.GetResponse{ Header: &pb.ResponseHeader{Revision: 20}, - Kvs: []*mvccpb.KeyValue{{Key: []byte("foo"), ModRevision: 20}}, + Kvs: []*mvccpb.KeyValue{ + {Key: []byte("foo"), Value: []byte("new_value"), ModRevision: 20, CreateRevision: 5, Version: 2}, + {Key: []byte("baz"), Value: []byte("new_baz"), ModRevision: 18, CreateRevision: 18, Version: 1}, + }, } fakeClient := &clientv3.Client{ Watcher: newMockWatcher(16), @@ -426,6 +431,10 @@ func TestCacheCompactionResync(t *testing.T) { if err = cache.WaitReady(t.Context()); err != nil { t.Fatalf("initial WaitReady: %v", err) } + verifySnapshot(t, cache, []*mvccpb.KeyValue{ + {Key: []byte("bar"), Value: []byte("old_bar"), ModRevision: 3, CreateRevision: 3, Version: 1}, + {Key: []byte("foo"), Value: []byte("old_value"), ModRevision: 5, CreateRevision: 5, Version: 1}, + }) t.Log("Phase 2: simulate compaction") mw.errorCompacted(10) @@ -435,9 +444,15 @@ func TestCacheCompactionResync(t *testing.T) { ctxGet, cancelGet := context.WithTimeout(t.Context(), 100*time.Millisecond) defer cancelGet() - _, err = cache.Get(ctxGet, "foo", clientv3.WithSerializable()) - if !errors.Is(err, context.DeadlineExceeded) { - t.Fatalf("expected Get() to timeout waiting for ready after compaction, got %v", err) + snapshot, err := cache.Get(ctxGet, "foo", clientv3.WithSerializable()) + if err != nil { + t.Fatalf("expected Get() to serve from cached snapshot after compaction, got %v", err) + } + if got := snapshot.Header.Revision; got != firstSnapshot.Header.Revision { + t.Fatalf("expected cached revision %d after compaction, got %d", firstSnapshot.Header.Revision, got) + } + if string(snapshot.Kvs[0].Value) != "old_value" { + t.Fatalf("expected cached value 'old_value' during compaction, got %q", string(snapshot.Kvs[0].Value)) } t.Log("Phase 3: resync after compaction") @@ -469,6 +484,10 @@ func TestCacheCompactionResync(t *testing.T) { if gotSnapshot.Header.Revision != expectSnapshotRev { t.Errorf("unexpected Snapshot revision: got=%d, want=%d", gotSnapshot.Header.Revision, expectSnapshotRev) } + verifySnapshot(t, cache, []*mvccpb.KeyValue{ + {Key: []byte("baz"), Value: []byte("new_baz"), ModRevision: 18, CreateRevision: 18, Version: 1}, + {Key: []byte("foo"), Value: []byte("new_value"), ModRevision: 20, CreateRevision: 5, Version: 2}, + }) } func waitUntil(t *testing.T, timeout, poll time.Duration, cond func() bool) { @@ -655,3 +674,14 @@ func collectAndAssertAtomicEvents(ctx context.Context, t *testing.T, watchCh cli } } } + +func verifySnapshot(t *testing.T, cache *Cache, want []*mvccpb.KeyValue) { + resp, err := cache.Get(t.Context(), "", clientv3.WithPrefix(), clientv3.WithSerializable()) + if err != nil { + t.Fatalf("Get all keys: %v", err) + } + + if diff := cmp.Diff(want, resp.Kvs); diff != "" { + t.Fatalf("cache snapshot mismatch (-want +got):\n%s", diff) + } +} diff --git a/cache/store.go b/cache/store.go index 1bea4a1f1146..e45706a2d97d 100644 --- a/cache/store.go +++ b/cache/store.go @@ -71,14 +71,6 @@ func (s *store) Restore(kvs []*mvccpb.KeyValue, rev int64) { s.latestRev = rev } -// Reset purges all in-memory state when the upstream watch stream reports compaction. -func (s *store) Reset() { - s.mu.Lock() - defer s.mu.Unlock() - s.kvs = make(map[string]*mvccpb.KeyValue) - s.latestRev = 0 -} - func (s *store) Apply(events []*clientv3.Event) error { s.mu.Lock() defer s.mu.Unlock() From b7b0f6d25c7297f0d411418ec61dd7588a95c61e Mon Sep 17 00:00:00 2001 From: Kota Date: Sun, 10 Aug 2025 23:30:45 +0900 Subject: [PATCH 0431/1068] tests: migrate grpc tests(e2e/integration) to common test framework Signed-off-by: Kota --- tests/common/e2e_test.go | 36 ++++ .../grpc_test.go} | 109 ++++++----- tests/common/integration_test.go | 28 +++ tests/common/unit_test.go | 12 ++ tests/framework/e2e/config.go | 2 + tests/framework/e2e/e2e.go | 42 +++- tests/framework/integration/config.go | 19 ++ tests/framework/integration/integration.go | 50 +++++ tests/framework/interfaces/interface.go | 8 + tests/integration/grpc_test.go | 180 ------------------ 10 files changed, 247 insertions(+), 239 deletions(-) rename tests/{e2e/ctl_v3_grpc_test.go => common/grpc_test.go} (60%) create mode 100644 tests/framework/integration/config.go delete mode 100644 tests/integration/grpc_test.go diff --git a/tests/common/e2e_test.go b/tests/common/e2e_test.go index e9e2f19215bb..37f534843ebb 100644 --- a/tests/common/e2e_test.go +++ b/tests/common/e2e_test.go @@ -85,3 +85,39 @@ func WithAuthToken(token string) config.ClientOption { func WithEndpoints(endpoints []string) config.ClientOption { return e2e.WithEndpoints(endpoints) } + +func WithHTTP2Debug() config.ClusterOption { + return func(c *config.ClusterConfig) { + ctx := ensureE2EClusterContext(c) + if ctx.EnvVars == nil { + ctx.EnvVars = map[string]string{} + } + // Enable debug mode to get logs with http2 headers (including authority) + ctx.EnvVars["GODEBUG"] = "http2debug=2" + c.ClusterContext = ctx + } +} + +func WithUnixClient() config.ClusterOption { + return func(c *config.ClusterConfig) { + ctx := ensureE2EClusterContext(c) + ctx.UseUnix = true + c.ClusterContext = ctx + } +} + +func WithTCPClient() config.ClusterOption { + return func(c *config.ClusterConfig) { + ctx := ensureE2EClusterContext(c) + ctx.UseUnix = false + c.ClusterContext = ctx + } +} + +func ensureE2EClusterContext(c *config.ClusterConfig) *e2e.ClusterContext { + ctx, _ := c.ClusterContext.(*e2e.ClusterContext) + if ctx == nil { + ctx = &e2e.ClusterContext{} + } + return ctx +} diff --git a/tests/e2e/ctl_v3_grpc_test.go b/tests/common/grpc_test.go similarity index 60% rename from tests/e2e/ctl_v3_grpc_test.go rename to tests/common/grpc_test.go index 58f2791e2b7f..77ea01c4e492 100644 --- a/tests/e2e/ctl_v3_grpc_test.go +++ b/tests/common/grpc_test.go @@ -12,31 +12,33 @@ // See the License for the specific language governing permissions and // limitations under the License. -//go:build !cluster_proxy - -package e2e +package common import ( "context" "fmt" - "net/url" - "strings" "testing" "time" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "go.etcd.io/etcd/pkg/v3/expect" "go.etcd.io/etcd/tests/v3/framework/config" - "go.etcd.io/etcd/tests/v3/framework/e2e" + intf "go.etcd.io/etcd/tests/v3/framework/interfaces" "go.etcd.io/etcd/tests/v3/framework/testutils" ) +type clientSocket int + +const ( + clientSocketTCP clientSocket = iota + clientSocketUnix +) + func TestAuthority(t *testing.T) { + testRunner.BeforeTest(t) tcs := []struct { name string - useUnix bool + clientSocket clientSocket useTLS bool useInsecureTLS bool clientURLPattern string @@ -44,43 +46,46 @@ func TestAuthority(t *testing.T) { }{ { name: "unix:path", - useUnix: true, + clientSocket: clientSocketUnix, clientURLPattern: "unix:localhost:${MEMBER_PORT}", expectAuthorityPattern: "localhost:${MEMBER_PORT}", }, { name: "unix://absolute_path", - useUnix: true, + clientSocket: clientSocketUnix, clientURLPattern: "unix://localhost:${MEMBER_PORT}", expectAuthorityPattern: "localhost:${MEMBER_PORT}", }, // "unixs" is not standard schema supported by etcd { name: "unixs:absolute_path", - useUnix: true, + clientSocket: clientSocketUnix, useTLS: true, clientURLPattern: "unixs:localhost:${MEMBER_PORT}", expectAuthorityPattern: "localhost:${MEMBER_PORT}", }, { name: "unixs://absolute_path", - useUnix: true, + clientSocket: clientSocketUnix, useTLS: true, clientURLPattern: "unixs://localhost:${MEMBER_PORT}", expectAuthorityPattern: "localhost:${MEMBER_PORT}", }, { name: "http://domain[:port]", + clientSocket: clientSocketTCP, clientURLPattern: "http://localhost:${MEMBER_PORT}", expectAuthorityPattern: "localhost:${MEMBER_PORT}", }, { name: "http://address[:port]", + clientSocket: clientSocketTCP, clientURLPattern: "http://127.0.0.1:${MEMBER_PORT}", expectAuthorityPattern: "127.0.0.1:${MEMBER_PORT}", }, { name: "https://domain[:port] insecure", + clientSocket: clientSocketTCP, useTLS: true, useInsecureTLS: true, clientURLPattern: "https://localhost:${MEMBER_PORT}", @@ -88,6 +93,7 @@ func TestAuthority(t *testing.T) { }, { name: "https://address[:port] insecure", + clientSocket: clientSocketTCP, useTLS: true, useInsecureTLS: true, clientURLPattern: "https://127.0.0.1:${MEMBER_PORT}", @@ -95,12 +101,14 @@ func TestAuthority(t *testing.T) { }, { name: "https://domain[:port]", + clientSocket: clientSocketTCP, useTLS: true, clientURLPattern: "https://localhost:${MEMBER_PORT}", expectAuthorityPattern: "localhost:${MEMBER_PORT}", }, { name: "https://address[:port]", + clientSocket: clientSocketTCP, useTLS: true, clientURLPattern: "https://127.0.0.1:${MEMBER_PORT}", expectAuthorityPattern: "127.0.0.1:${MEMBER_PORT}", @@ -109,64 +117,53 @@ func TestAuthority(t *testing.T) { for _, tc := range tcs { for _, clusterSize := range []int{1, 3} { t.Run(fmt.Sprintf("Size: %d, Scenario: %q", clusterSize, tc.name), func(t *testing.T) { - e2e.BeforeTest(t) ctx, cancel := context.WithCancel(t.Context()) defer cancel() - cfg := e2e.NewConfigNoTLS() + cfg := config.NewClusterConfig() cfg.ClusterSize = clusterSize - if tc.useTLS { - cfg.Client.ConnectionType = e2e.ClientTLS + + switch { + case tc.useInsecureTLS: + cfg.ClientTLS = config.AutoTLS + case tc.useTLS: + cfg.ClientTLS = config.ManualTLS + default: + cfg.ClientTLS = config.NoTLS } - cfg.Client.AutoTLS = tc.useInsecureTLS - // Enable debug mode to get logs with http2 headers (including authority) - cfg.EnvVars = map[string]string{"GODEBUG": "http2debug=2"} - if tc.useUnix { - cfg.BaseClientScheme = "unix" + + opts := []config.ClusterOption{ + config.WithClusterConfig(cfg), + WithHTTP2Debug(), // enable http2 header logs only for e2e tests } - epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) - if err != nil { - t.Fatalf("could not start etcd process cluster (%v)", err) + switch tc.clientSocket { + case clientSocketTCP: + opts = append(opts, WithTCPClient()) + case clientSocketUnix: + opts = append(opts, WithUnixClient()) } - defer epc.Close() - endpoints := templateEndpoints(t, tc.clientURLPattern, epc) - client, err := e2e.NewEtcdctl(cfg.Client, endpoints) - require.NoError(t, err) + clus := testRunner.NewCluster(ctx, t, opts...) + defer clus.Close() + + tmpEndpoints, ok := clus.(intf.TemplateEndpoints) + require.Truef(t, ok, "cluster does not implement TemplateEndpoints") + + endpoints := tmpEndpoints.TemplateEndpoints(t, tc.clientURLPattern) + + cc := testutils.MustClient(clus.Client(WithEndpoints(endpoints))) + for i := 0; i < 100; i++ { - require.NoError(t, client.Put(ctx, "foo", "bar", config.PutOptions{})) + require.NoError(t, cc.Put(ctx, "foo", "bar", config.PutOptions{})) } testutils.ExecuteWithTimeout(t, 5*time.Second, func() { - assertAuthority(t, tc.expectAuthorityPattern, epc) + asserter, ok := clus.(intf.AssertAuthority) + require.Truef(t, ok, "cluster does not implement AssertAuthority") + asserter.AssertAuthority(t, tc.expectAuthorityPattern) }) }) } } } - -func templateEndpoints(t *testing.T, pattern string, clus *e2e.EtcdProcessCluster) []string { - t.Helper() - var endpoints []string - for i := 0; i < clus.Cfg.ClusterSize; i++ { - ent := pattern - ent = strings.ReplaceAll(ent, "${MEMBER_PORT}", fmt.Sprintf("%d", e2e.EtcdProcessBasePort+i*5)) - endpoints = append(endpoints, ent) - } - return endpoints -} - -func assertAuthority(t *testing.T, expectAuthorityPattern string, clus *e2e.EtcdProcessCluster) { - for i := range clus.Procs { - line, _ := clus.Procs[i].Logs().ExpectWithContext(t.Context(), expect.ExpectedResponse{Value: `http2: decoded hpack field header field ":authority"`}) - line = strings.TrimSuffix(line, "\n") - line = strings.TrimSuffix(line, "\r") - - u, err := url.Parse(clus.Procs[i].EndpointsGRPC()[0]) - require.NoError(t, err) - expectAuthority := strings.ReplaceAll(expectAuthorityPattern, "${MEMBER_PORT}", u.Port()) - expectLine := fmt.Sprintf(`http2: decoded hpack field header field ":authority" = %q`, expectAuthority) - assert.Truef(t, strings.HasSuffix(line, expectLine), "Got %q expected suffix %q", line, expectLine) - } -} diff --git a/tests/common/integration_test.go b/tests/common/integration_test.go index f41055c44287..338b78b9b597 100644 --- a/tests/common/integration_test.go +++ b/tests/common/integration_test.go @@ -63,3 +63,31 @@ func WithAuthToken(token string) config.ClientOption { func WithEndpoints(endpoints []string) config.ClientOption { return integration.WithEndpoints(endpoints) } + +func WithHTTP2Debug() config.ClusterOption { + return func(c *config.ClusterConfig) {} +} + +func WithUnixClient() config.ClusterOption { + return func(c *config.ClusterConfig) { + ctx := ensureIntegrationClusterContext(c) + ctx.UseUnix = true + c.ClusterContext = ctx + } +} + +func WithTCPClient() config.ClusterOption { + return func(c *config.ClusterConfig) { + ctx := ensureIntegrationClusterContext(c) + ctx.UseUnix = false + c.ClusterContext = ctx + } +} + +func ensureIntegrationClusterContext(c *config.ClusterConfig) *integration.ClusterContext { + ctx, _ := c.ClusterContext.(*integration.ClusterContext) + if ctx == nil { + ctx = &integration.ClusterContext{} + } + return ctx +} diff --git a/tests/common/unit_test.go b/tests/common/unit_test.go index 48e3a51cda17..52fe5d16b3ba 100644 --- a/tests/common/unit_test.go +++ b/tests/common/unit_test.go @@ -44,3 +44,15 @@ func WithAuthToken(token string) config.ClientOption { func WithEndpoints(endpoints []string) config.ClientOption { return func(any) {} } + +func WithHTTP2Debug() config.ClusterOption { + return func(c *config.ClusterConfig) {} +} + +func WithTCPClient() config.ClusterOption { + return func(c *config.ClusterConfig) {} +} + +func WithUnixClient() config.ClusterOption { + return func(c *config.ClusterConfig) {} +} diff --git a/tests/framework/e2e/config.go b/tests/framework/e2e/config.go index 3cdc3f692b73..4e0405468624 100644 --- a/tests/framework/e2e/config.go +++ b/tests/framework/e2e/config.go @@ -41,6 +41,8 @@ func (cv ClusterVersion) String() string { type ClusterContext struct { Version ClusterVersion + EnvVars map[string]string + UseUnix bool } var experimentalFlags = map[string]struct{}{ diff --git a/tests/framework/e2e/e2e.go b/tests/framework/e2e/e2e.go index 6f3954d5da7d..7ab52006beac 100644 --- a/tests/framework/e2e/e2e.go +++ b/tests/framework/e2e/e2e.go @@ -16,10 +16,17 @@ package e2e import ( "context" + "fmt" + "net/url" "os" + "strings" "testing" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.etcd.io/etcd/client/pkg/v3/testutil" + "go.etcd.io/etcd/pkg/v3/expect" "go.etcd.io/etcd/tests/v3/framework/config" intf "go.etcd.io/etcd/tests/v3/framework/interfaces" ) @@ -53,9 +60,12 @@ func (e e2eRunner) NewCluster(ctx context.Context, tb testing.TB, opts ...config WithSnapshotCount(cfg.SnapshotCount), ) - if cfg.ClusterContext != nil { - e2eClusterCtx := cfg.ClusterContext.(*ClusterContext) - e2eConfig.Version = e2eClusterCtx.Version + if ctx, ok := cfg.ClusterContext.(*ClusterContext); ok && ctx != nil { + e2eConfig.Version = ctx.Version + e2eConfig.EnvVars = ctx.EnvVars + if ctx.UseUnix { + e2eConfig.BaseClientScheme = "unix" + } } switch cfg.ClientTLS { @@ -111,6 +121,32 @@ func (c *e2eCluster) Members() (ms []intf.Member) { return ms } +func (c *e2eCluster) TemplateEndpoints(tb testing.TB, pattern string) []string { + tb.Helper() + var endpoints []string + for i := 0; i < c.Cfg.ClusterSize; i++ { + ent := pattern + ent = strings.ReplaceAll(ent, "${MEMBER_PORT}", fmt.Sprintf("%d", EtcdProcessBasePort+i*5)) + endpoints = append(endpoints, ent) + } + return endpoints +} + +func (c *e2eCluster) AssertAuthority(tb testing.TB, expectAuthorityPattern string) { + for i := range c.Procs { + line, _ := c.Procs[i].Logs().ExpectWithContext(tb.Context(), expect.ExpectedResponse{ + Value: `http2: decoded hpack field header field ":authority"`, + }) + line = strings.TrimSuffix(strings.TrimSuffix(line, "\n"), "\r") + + u, err := url.Parse(c.Procs[i].EndpointsGRPC()[0]) + require.NoError(tb, err) + expectAuthority := strings.ReplaceAll(expectAuthorityPattern, "${MEMBER_PORT}", u.Port()) + expectLine := fmt.Sprintf(`http2: decoded hpack field header field ":authority" = %q`, expectAuthority) + assert.Truef(tb, strings.HasSuffix(line, expectLine), "Got %q expected suffix %q", line, expectLine) + } +} + type e2eClient struct { *EtcdctlV3 } diff --git a/tests/framework/integration/config.go b/tests/framework/integration/config.go new file mode 100644 index 000000000000..b1b246006a4c --- /dev/null +++ b/tests/framework/integration/config.go @@ -0,0 +1,19 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package integration + +type ClusterContext struct { + UseUnix bool +} diff --git a/tests/framework/integration/integration.go b/tests/framework/integration/integration.go index 6152ca705435..9711f38e7bfb 100644 --- a/tests/framework/integration/integration.go +++ b/tests/framework/integration/integration.go @@ -63,6 +63,14 @@ func (e integrationRunner) NewCluster(ctx context.Context, tb testing.TB, opts . if err != nil { tb.Fatalf("PeerTLS: %s", err) } + + if cfg.ClusterContext != nil { + if ctx, ok := cfg.ClusterContext.(*ClusterContext); ok && ctx != nil { + integrationCfg.UseTCP = !ctx.UseUnix + integrationCfg.UseIP = !ctx.UseUnix + } + } + return &integrationCluster{ Cluster: NewCluster(tb, &integrationCfg), t: tb, @@ -100,6 +108,48 @@ func (c *integrationCluster) Members() (ms []intf.Member) { return ms } +func (c *integrationCluster) TemplateEndpoints(tb testing.TB, pattern string) []string { + tb.Helper() + var endpoints []string + for _, m := range c.Cluster.Members { + ent := pattern + ent = strings.ReplaceAll(ent, "${MEMBER_PORT}", m.GRPCPortNumber()) + ent = strings.ReplaceAll(ent, "${MEMBER_NAME}", m.Name) + endpoints = append(endpoints, ent) + } + return endpoints +} + +func templateAuthority(tb testing.TB, pattern string, m *Member) string { + tb.Helper() + authority := pattern + authority = strings.ReplaceAll(authority, "${MEMBER_PORT}", m.GRPCPortNumber()) + authority = strings.ReplaceAll(authority, "${MEMBER_NAME}", m.Name) + return authority +} + +func (c *integrationCluster) AssertAuthority(tb testing.TB, expectedAuthorityPattern string) { + tb.Helper() + const filterMethod = "/etcdserverpb.KV/Put" + for _, m := range c.Cluster.Members { + expectedAuthority := templateAuthority(tb, expectedAuthorityPattern, m) + requestsFound := 0 + for _, r := range m.RecordedRequests() { + if r.FullMethod != filterMethod { + continue + } + if r.Authority == expectedAuthority { + requestsFound++ + } else { + tb.Errorf("Got unexpected authority header, member %q, request %q, got %q, expected %q", m.Name, r.FullMethod, r.Authority, expectedAuthority) + } + } + if requestsFound == 0 { + tb.Errorf("Expect at least one request with matched authority header value was recorded by the server intercepter on member %s but got 0", m.Name) + } + } +} + type integrationMember struct { *Member t testing.TB diff --git a/tests/framework/interfaces/interface.go b/tests/framework/interfaces/interface.go index 0477ea5f0ec7..0d334011bfbf 100644 --- a/tests/framework/interfaces/interface.go +++ b/tests/framework/interfaces/interface.go @@ -85,3 +85,11 @@ type Client interface { Watch(ctx context.Context, key string, opts config.WatchOptions) clientv3.WatchChan } + +type TemplateEndpoints interface { + TemplateEndpoints(tb testing.TB, pattern string) []string +} + +type AssertAuthority interface { + AssertAuthority(tb testing.TB, expectedAuthorityPattern string) +} diff --git a/tests/integration/grpc_test.go b/tests/integration/grpc_test.go deleted file mode 100644 index 606262942e95..000000000000 --- a/tests/integration/grpc_test.go +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2021 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package integration - -import ( - tls "crypto/tls" - "fmt" - "strings" - "testing" - "time" - - "github.com/stretchr/testify/require" - "google.golang.org/grpc" - - clientv3 "go.etcd.io/etcd/client/v3" - "go.etcd.io/etcd/tests/v3/framework/integration" -) - -func TestAuthority(t *testing.T) { - tcs := []struct { - name string - useTCP bool - useTLS bool - clientURLPattern string - expectAuthorityPattern string - }{ - { - name: "unix:path", - clientURLPattern: "unix:localhost:${MEMBER_NAME}", - expectAuthorityPattern: "localhost:${MEMBER_NAME}", - }, - { - name: "unix://absolute_path", - clientURLPattern: "unix://localhost:${MEMBER_NAME}", - expectAuthorityPattern: "localhost:${MEMBER_NAME}", - }, - // "unixs" is not standard schema supported by etcd - { - name: "unixs:absolute_path", - useTLS: true, - clientURLPattern: "unixs:localhost:${MEMBER_NAME}", - expectAuthorityPattern: "localhost:${MEMBER_NAME}", - }, - { - name: "unixs://absolute_path", - useTLS: true, - clientURLPattern: "unixs://localhost:${MEMBER_NAME}", - expectAuthorityPattern: "localhost:${MEMBER_NAME}", - }, - { - name: "http://domain[:port]", - useTCP: true, - clientURLPattern: "http://localhost:${MEMBER_PORT}", - expectAuthorityPattern: "localhost:${MEMBER_PORT}", - }, - { - name: "https://domain[:port]", - useTLS: true, - useTCP: true, - clientURLPattern: "https://localhost:${MEMBER_PORT}", - expectAuthorityPattern: "localhost:${MEMBER_PORT}", - }, - { - name: "http://address[:port]", - useTCP: true, - clientURLPattern: "http://127.0.0.1:${MEMBER_PORT}", - expectAuthorityPattern: "127.0.0.1:${MEMBER_PORT}", - }, - { - name: "https://address[:port]", - useTCP: true, - useTLS: true, - clientURLPattern: "https://127.0.0.1:${MEMBER_PORT}", - expectAuthorityPattern: "127.0.0.1:${MEMBER_PORT}", - }, - } - for _, tc := range tcs { - for _, clusterSize := range []int{1, 3} { - t.Run(fmt.Sprintf("Size: %d, Scenario: %q", clusterSize, tc.name), func(t *testing.T) { - integration.BeforeTest(t) - cfg := integration.ClusterConfig{ - Size: clusterSize, - UseTCP: tc.useTCP, - UseIP: tc.useTCP, - } - cfg, tlsConfig := setupTLS(t, tc.useTLS, cfg) - clus := integration.NewCluster(t, &cfg) - defer clus.Terminate(t) - - kv := setupClient(t, tc.clientURLPattern, clus, tlsConfig) - defer kv.Close() - - putRequestMethod := "/etcdserverpb.KV/Put" - for i := 0; i < 100; i++ { - _, err := kv.Put(t.Context(), "foo", "bar") - require.NoError(t, err) - } - - assertAuthority(t, tc.expectAuthorityPattern, clus, putRequestMethod) - }) - } - } -} - -func setupTLS(t *testing.T, useTLS bool, cfg integration.ClusterConfig) (integration.ClusterConfig, *tls.Config) { - t.Helper() - if useTLS { - cfg.ClientTLS = &integration.TestTLSInfo - tlsConfig, err := integration.TestTLSInfo.ClientConfig() - require.NoError(t, err) - return cfg, tlsConfig - } - return cfg, nil -} - -func setupClient(t *testing.T, endpointPattern string, clus *integration.Cluster, tlsConfig *tls.Config) *clientv3.Client { - t.Helper() - endpoints := templateEndpoints(t, endpointPattern, clus) - kv, err := clientv3.New(clientv3.Config{ - Endpoints: endpoints, - DialTimeout: 5 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, - TLS: tlsConfig, - }) - require.NoError(t, err) - return kv -} - -func templateEndpoints(t *testing.T, pattern string, clus *integration.Cluster) []string { - t.Helper() - var endpoints []string - for _, m := range clus.Members { - ent := pattern - ent = strings.ReplaceAll(ent, "${MEMBER_PORT}", m.GRPCPortNumber()) - ent = strings.ReplaceAll(ent, "${MEMBER_NAME}", m.Name) - endpoints = append(endpoints, ent) - } - return endpoints -} - -func templateAuthority(t *testing.T, pattern string, m *integration.Member) string { - t.Helper() - authority := pattern - authority = strings.ReplaceAll(authority, "${MEMBER_PORT}", m.GRPCPortNumber()) - authority = strings.ReplaceAll(authority, "${MEMBER_NAME}", m.Name) - return authority -} - -func assertAuthority(t *testing.T, expectedAuthorityPattern string, clus *integration.Cluster, filterMethod string) { - t.Helper() - for _, m := range clus.Members { - requestsFound := 0 - expectedAuthority := templateAuthority(t, expectedAuthorityPattern, m) - for _, r := range m.RecordedRequests() { - if filterMethod != "" && r.FullMethod != filterMethod { - continue - } - if r.Authority == expectedAuthority { - requestsFound++ - } else { - t.Errorf("Got unexpected authority header, member: %q, request: %q, got authority: %q, expected %q", m.Name, r.FullMethod, r.Authority, expectedAuthority) - } - } - if requestsFound == 0 { - t.Errorf("Expect at least one request with matched authority header value was recorded by the server intercepter on member %s but got 0", m.Name) - } - } -} From fe26f7de623fe1c969496d46306bd123ddda7c85 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 13 Aug 2025 07:52:20 +0000 Subject: [PATCH 0432/1068] dependency: bump google.golang.org/protobuf from 1.36.6 to 1.36.7 Reference: - https://github.com/etcd-io/etcd/pull/20467 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 22 files changed, 33 insertions(+), 33 deletions(-) diff --git a/api/go.mod b/api/go.mod index 36a5d915ebd9..48099e4715aa 100644 --- a/api/go.mod +++ b/api/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 google.golang.org/grpc v1.74.2 - google.golang.org/protobuf v1.36.6 + google.golang.org/protobuf v1.36.7 ) require ( diff --git a/api/go.sum b/api/go.sum index 40610e99672b..8dfd91805967 100644 --- a/api/go.sum +++ b/api/go.sum @@ -79,8 +79,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= +google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/cache/go.mod b/cache/go.mod index 6e7d3daa4884..3ba35bbd228e 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -25,7 +25,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/grpc v1.74.2 // indirect - google.golang.org/protobuf v1.36.6 // indirect + google.golang.org/protobuf v1.36.7 // indirect ) replace ( diff --git a/cache/go.sum b/cache/go.sum index b4cec36e038c..53b6764c206f 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -100,8 +100,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= +google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/client/v3/go.mod b/client/v3/go.mod index f3882df66e06..f654c560aa10 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -41,7 +41,7 @@ require ( golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/protobuf v1.36.6 // indirect + google.golang.org/protobuf v1.36.7 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index ae60bcf376ec..c5b0ac6d5e75 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -116,8 +116,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= +google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 8318ff25cc5a..de812cf312df 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -44,7 +44,7 @@ require ( golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/protobuf v1.36.6 // indirect + google.golang.org/protobuf v1.36.7 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index edefcc9e4015..6cba9dbe2e40 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -143,8 +143,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= +google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 7e7084459d16..97611f8b0c81 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -93,7 +93,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/grpc v1.74.2 // indirect - google.golang.org/protobuf v1.36.6 // indirect + google.golang.org/protobuf v1.36.7 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 1594d3123238..6d117239b405 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -189,8 +189,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= +google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/go.mod b/go.mod index e4039fffef03..472c0c942d13 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/time v0.12.0 google.golang.org/grpc v1.74.2 - google.golang.org/protobuf v1.36.6 + google.golang.org/protobuf v1.36.7 ) require ( diff --git a/go.sum b/go.sum index ab14f22dcb45..d580c2bf2e0d 100644 --- a/go.sum +++ b/go.sum @@ -258,8 +258,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= +google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/go.mod b/pkg/go.mod index 66a6e7d66ae9..45bbdd0e5f25 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -28,7 +28,7 @@ require ( golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/protobuf v1.36.6 // indirect + google.golang.org/protobuf v1.36.7 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index 2af76b1cddcf..d8a0d3c54837 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -64,8 +64,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= +google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/server/go.mod b/server/go.mod index 9e985b6a4066..0d7dbf34907f 100644 --- a/server/go.mod +++ b/server/go.mod @@ -42,7 +42,7 @@ require ( golang.org/x/time v0.12.0 google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 google.golang.org/grpc v1.74.2 - google.golang.org/protobuf v1.36.6 + google.golang.org/protobuf v1.36.7 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.6.0 ) diff --git a/server/go.sum b/server/go.sum index a67989f7fa7b..f4920f7fe773 100644 --- a/server/go.sum +++ b/server/go.sum @@ -173,8 +173,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= +google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tests/go.mod b/tests/go.mod index 2210c6d5ec23..1f689385e9d5 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -51,7 +51,7 @@ require ( golang.org/x/sync v0.16.0 golang.org/x/time v0.12.0 google.golang.org/grpc v1.74.2 - google.golang.org/protobuf v1.36.6 + google.golang.org/protobuf v1.36.7 ) require ( diff --git a/tests/go.sum b/tests/go.sum index 5f51640e1413..e72d089e89e3 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -264,8 +264,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= +google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 06cad60b78ed..868c016d1f16 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -228,7 +228,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/grpc v1.74.2 // indirect - google.golang.org/protobuf v1.36.6 // indirect + google.golang.org/protobuf v1.36.7 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index ebe740e099dd..d81573fce60e 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -701,8 +701,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= +google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index dd016fb90004..c26588f63747 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -8,7 +8,7 @@ require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 github.com/google/go-github/v60 v60.0.0 github.com/spf13/cobra v1.9.1 - google.golang.org/protobuf v1.36.6 + google.golang.org/protobuf v1.36.7 ) require ( diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 7f2cd8a41a37..1dc9696585bf 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1910,8 +1910,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= +google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From f03273126825090bcbba037c3558f000328841eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20R=C3=BCger?= Date: Fri, 15 Aug 2025 17:46:38 +0200 Subject: [PATCH 0433/1068] chore: Replace which with command -v MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit command -v is a shell built-in, while which requires a separate binary. Signed-off-by: Manuel Rüger --- Makefile | 8 ++++---- hack/patch/cherrypick.sh | 2 +- tests/fixtures/gencerts.sh | 2 +- tests/integration/fixtures-expired/gencerts.sh | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index a81b65f7abdf..22736f09efe5 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ build: .PHONY: install-benchmark install-benchmark: build -ifeq (, $(shell which benchmark)) +ifeq (, $(shell command -v benchmark)) @echo "Installing etcd benchmark tool..." go install -v ./tools/benchmark else @@ -163,7 +163,7 @@ verify-genproto: .PHONY: verify-yamllint verify-yamllint: -ifeq (, $(shell which yamllint)) +ifeq (, $(shell command -v yamllint)) @echo "Installing yamllint..." tmpdir=$$(mktemp -d); \ trap "rm -rf $$tmpdir" EXIT; \ @@ -187,14 +187,14 @@ YAMLFMT_VERSION = $(shell cd tools/mod && go list -m -f '{{.Version}}' github.co .PHONY: fix-yamllint fix-yamllint: -ifeq (, $(shell which yamlfmt)) +ifeq (, $(shell command -v yamlfmt)) $(shell go install github.com/google/yamlfmt/cmd/yamlfmt@$(YAMLFMT_VERSION)) endif yamlfmt -conf tools/.yamlfmt . .PHONY: run-govulncheck run-govulncheck: -ifeq (, $(shell which govulncheck)) +ifeq (, $(shell command -v govulncheck)) $(shell go install golang.org/x/vuln/cmd/govulncheck@latest) endif PASSES="govuln" ./scripts/test.sh diff --git a/hack/patch/cherrypick.sh b/hack/patch/cherrypick.sh index ad143514f553..9d6e25bf1739 100755 --- a/hack/patch/cherrypick.sh +++ b/hack/patch/cherrypick.sh @@ -26,7 +26,7 @@ if [[ -z ${GITHUB_USER:-} ]]; then exit 1 fi -if ! which hub > /dev/null; then +if ! command -v hub > /dev/null; then echo "Can't find 'hub' tool in PATH, please install from https://github.com/github/hub" exit 1 fi diff --git a/tests/fixtures/gencerts.sh b/tests/fixtures/gencerts.sh index 79c0680e6cec..f7ca54ad927b 100755 --- a/tests/fixtures/gencerts.sh +++ b/tests/fixtures/gencerts.sh @@ -22,7 +22,7 @@ fi cfssl gencert --initca=true ./ca-csr.json | cfssljson --bare ./ca mv ca.pem ca.crt -if which openssl >/dev/null; then +if command -v openssl >/dev/null; then openssl x509 -in ca.crt -noout -text fi diff --git a/tests/integration/fixtures-expired/gencerts.sh b/tests/integration/fixtures-expired/gencerts.sh index 8eea747ffbdf..1fe32155276c 100755 --- a/tests/integration/fixtures-expired/gencerts.sh +++ b/tests/integration/fixtures-expired/gencerts.sh @@ -21,7 +21,7 @@ fi cfssl gencert --initca=true ./ca-csr.json | cfssljson --bare ./ca mv ca.pem ca.crt -if which openssl >/dev/null; then +if command -v openssl >/dev/null; then openssl x509 -in ca.crt -noout -text fi @@ -43,7 +43,7 @@ cfssl gencert \ mv server-ip.pem server-ip.crt mv server-ip-key.pem server-ip.key.insecure -if which openssl >/dev/null; then +if command -v openssl >/dev/null; then openssl x509 -in ./server.crt -text -noout openssl x509 -in ./server-ip.crt -text -noout fi From 8310ed319b2d21d42a4764fc18de960aca36cac7 Mon Sep 17 00:00:00 2001 From: Nont Date: Fri, 8 Aug 2025 23:19:19 -0500 Subject: [PATCH 0434/1068] Fix broken failpoint labelRaftDropHeartbeat Signed-off-by: Nont --- server/etcdserver/api/rafthttp/stream.go | 2 +- tests/robustness/Makefile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/server/etcdserver/api/rafthttp/stream.go b/server/etcdserver/api/rafthttp/stream.go index 23eb9c9a9db2..cd4e11e1f21e 100644 --- a/server/etcdserver/api/rafthttp/stream.go +++ b/server/etcdserver/api/rafthttp/stream.go @@ -498,7 +498,7 @@ func (cr *streamReader) decodeLoop(rc io.ReadCloser, t streamType) error { return err } - // gofail-go: var raftDropHeartbeat struct{} + // gofail: var raftDropHeartbeat struct{} // continue labelRaftDropHeartbeat receivedBytes.WithLabelValues(types.ID(m.From).String()).Add(float64(m.Size())) diff --git a/tests/robustness/Makefile b/tests/robustness/Makefile index 68d77d188f57..fe7748e2a3be 100644 --- a/tests/robustness/Makefile +++ b/tests/robustness/Makefile @@ -86,7 +86,7 @@ install-gofail: $(GOPATH)/bin/gofail .PHONY: gofail-enable gofail-enable: $(GOPATH)/bin/gofail - $(GOPATH)/bin/gofail enable server/etcdserver/ server/lease/leasehttp server/storage/backend/ server/storage/mvcc/ server/storage/wal/ server/etcdserver/api/v3rpc/ server/etcdserver/api/membership/ + $(GOPATH)/bin/gofail enable server/etcdserver/ server/lease/leasehttp server/storage/backend/ server/storage/mvcc/ server/storage/wal/ server/etcdserver/api/v3rpc/ server/etcdserver/api/membership/ server/etcdserver/api/rafthttp/ cd $(REPOSITORY_ROOT)/server && go get go.etcd.io/gofail@${GOFAIL_VERSION} cd $(REPOSITORY_ROOT)/etcdutl && go get go.etcd.io/gofail@${GOFAIL_VERSION} cd $(REPOSITORY_ROOT)/etcdctl && go get go.etcd.io/gofail@${GOFAIL_VERSION} @@ -94,7 +94,7 @@ gofail-enable: $(GOPATH)/bin/gofail .PHONY: gofail-disable gofail-disable: $(GOPATH)/bin/gofail - $(GOPATH)/bin/gofail disable server/etcdserver/ server/lease/leasehttp server/storage/backend/ server/storage/mvcc/ server/storage/wal/ server/etcdserver/api/v3rpc/ server/etcdserver/api/membership/ + $(GOPATH)/bin/gofail disable server/etcdserver/ server/lease/leasehttp server/storage/backend/ server/storage/mvcc/ server/storage/wal/ server/etcdserver/api/v3rpc/ server/etcdserver/api/membership/ server/etcdserver/api/rafthttp/ cd $(REPOSITORY_ROOT)/server && go mod tidy cd $(REPOSITORY_ROOT)/etcdutl && go mod tidy cd $(REPOSITORY_ROOT)/etcdctl && go mod tidy From 337a7f1160658c2757588417a88705f09d18aadf Mon Sep 17 00:00:00 2001 From: Kishen Viswanathan Date: Mon, 18 Aug 2025 11:54:35 +0530 Subject: [PATCH 0435/1068] Fix error related to missing directory for mktemp command Signed-off-by: Kishen Viswanathan --- scripts/benchmark_test.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/benchmark_test.sh b/scripts/benchmark_test.sh index 95da4141fe90..bff071fcafd7 100755 --- a/scripts/benchmark_test.sh +++ b/scripts/benchmark_test.sh @@ -30,6 +30,9 @@ BENCHMARK_NAME="$1" ARGS="${*:2}" echo "Starting the etcd server..." + +# Create a directory for etcd data under /tmp/etcd +mkdir -p /tmp/etcd DATA_DIR=$(mktemp -d /tmp/etcd/data-XXXXXX) ./bin/etcd --data-dir="$DATA_DIR" > /tmp/etcd.log 2>&1 & etcd_pid=$! From 5e2c0f5b88bd17e09df1c1fc89a12589cc877216 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Wed, 13 Aug 2025 14:33:01 +0000 Subject: [PATCH 0436/1068] cache: make store a normal demux watcher to reduce lock contention Signed-off-by: Peter Chang --- cache/cache.go | 76 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 58 insertions(+), 18 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index 29ea819e2510..1ab19295621b 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -78,7 +78,7 @@ func New(client *clientv3.Client, prefix string, opts ...Option) (*Cache, error) cache.waitGroup.Add(1) go func() { defer cache.waitGroup.Done() - cache.getWatchLoop(internalCtx) + cache.getWatchLoop() }() return cache, nil @@ -203,14 +203,15 @@ func (c *Cache) Close() { c.waitGroup.Wait() } -func (c *Cache) getWatchLoop(ctx context.Context) { +func (c *Cache) getWatchLoop() { cfg := defaultConfig() + ctx := c.internalCtx backoff := cfg.InitialBackoff for { if err := ctx.Err(); err != nil { return } - if err := c.getWatch(ctx); err != nil { + if err := c.getWatch(); err != nil { fmt.Printf("getWatch failed, will retry after %v: %v\n", backoff, err) } select { @@ -221,12 +222,12 @@ func (c *Cache) getWatchLoop(ctx context.Context) { } } -func (c *Cache) getWatch(ctx context.Context) error { - getResp, err := c.get(ctx) +func (c *Cache) getWatch() error { + getResp, err := c.get(c.internalCtx) if err != nil { return err } - return c.watch(ctx, getResp.Header.Revision+1) + return c.watch(getResp.Header.Revision + 1) } func (c *Cache) get(ctx context.Context) (*clientv3.GetResponse, error) { @@ -238,11 +239,23 @@ func (c *Cache) get(ctx context.Context) (*clientv3.GetResponse, error) { return resp, nil } -func (c *Cache) watch(ctx context.Context, rev int64) error { +func (c *Cache) watch(rev int64) error { readyOnce := sync.Once{} for { + storeW := newWatcher(c.cfg.PerWatcherBufferSize, nil) + c.demux.Register(storeW, rev) + applyErr := make(chan error, 1) + c.waitGroup.Add(1) + go func() { + defer c.waitGroup.Done() + if err := c.applyStorage(storeW); err != nil { + applyErr <- err + } + close(applyErr) + }() + watchCh := c.watcher.Watch( - ctx, + c.internalCtx, c.prefix, clientv3.WithPrefix(), clientv3.WithRev(rev), @@ -250,24 +263,51 @@ func (c *Cache) watch(ctx context.Context, rev int64) error { clientv3.WithCreatedNotify(), ) - for resp := range watchCh { - readyOnce.Do(func() { c.ready.Set() }) - if err := resp.Err(); err != nil { - c.ready.Reset() - c.demux.Purge() + err := c.watchEvents(watchCh, applyErr, &readyOnce) + c.demux.Unregister(storeW) + + if err != nil { + return err + } + } +} + +func (c *Cache) applyStorage(storeW *watcher) error { + for { + select { + case <-c.internalCtx.Done(): + return nil + case events, ok := <-storeW.eventQueue: + if !ok { + return nil + } + if err := c.store.Apply(events); err != nil { return err } + } + } +} - if err := c.store.Apply(resp.Events); err != nil { +func (c *Cache) watchEvents(watchCh clientv3.WatchChan, applyErr <-chan error, readyOnce *sync.Once) error { + for { + select { + case <-c.internalCtx.Done(): + return c.internalCtx.Err() + case resp, ok := <-watchCh: + if !ok { + return nil + } + readyOnce.Do(func() { c.ready.Set() }) + if err := resp.Err(); err != nil { c.ready.Reset() c.demux.Purge() return err } c.demux.Broadcast(resp.Events) - } - - if ctx.Err() != nil { - return ctx.Err() + case err := <-applyErr: + c.ready.Reset() + c.demux.Purge() + return err } } } From f65bddd3af67e0756e4e7aa888bd15e5c945e906 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Sun, 17 Aug 2025 20:23:02 +0000 Subject: [PATCH 0437/1068] cache: move batching to demux so that ringBuffer stores single item Signed-off-by: Peter Chang --- cache/demux.go | 27 ++++++++++++++------ cache/ringbuffer.go | 55 ++++++---------------------------------- cache/ringbuffer_test.go | 25 ++++++++++-------- 3 files changed, 42 insertions(+), 65 deletions(-) diff --git a/cache/demux.go b/cache/demux.go index a8aebe359b0e..1c22e4a4f37b 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -27,7 +27,7 @@ type demux struct { // activeWatchers & laggingWatchers hold the first revision the watcher still needs (nextRev). activeWatchers map[*watcher]int64 laggingWatchers map[*watcher]int64 - history ringBuffer[*clientv3.Event] + history ringBuffer[[]*clientv3.Event] resyncInterval time.Duration } @@ -45,7 +45,7 @@ func newDemux(historyWindowSize int, resyncInterval time.Duration) *demux { return &demux{ activeWatchers: make(map[*watcher]int64), laggingWatchers: make(map[*watcher]int64), - history: *newRingBuffer(historyWindowSize, func(ev *clientv3.Event) int64 { return ev.Kv.ModRevision }), + history: *newRingBuffer(historyWindowSize, func(batch []*clientv3.Event) int64 { return batch[0].Kv.ModRevision }), resyncInterval: resyncInterval, } } @@ -110,7 +110,19 @@ func (d *demux) Broadcast(events []*clientv3.Event) { d.mu.Lock() defer d.mu.Unlock() - d.history.Append(events) + batchStart := 0 + for end := 1; end < len(events); end++ { + if events[end].Kv.ModRevision != events[batchStart].Kv.ModRevision { + if end > batchStart { + d.history.Append(events[batchStart:end]) + } + batchStart = end + } + } + if batchStart < len(events) { + d.history.Append(events[batchStart:]) + } + firstRev := events[0].Kv.ModRevision lastRev := events[len(events)-1].Kv.ModRevision for w, nextRev := range d.activeWatchers { @@ -119,19 +131,18 @@ func (d *demux) Broadcast(events []*clientv3.Event) { delete(d.activeWatchers, w) continue } - start := len(events) + sendStart := len(events) for i, ev := range events { if ev.Kv.ModRevision >= nextRev { - start = i + sendStart = i break } } - - if start == len(events) { + if sendStart == len(events) { continue } - if !w.enqueueEvent(events[start:]) { // overflow → lagging + if !w.enqueueEvent(events[sendStart:]) { // overflow → lagging d.laggingWatchers[w] = nextRev delete(d.activeWatchers, w) } else { diff --git a/cache/ringbuffer.go b/cache/ringbuffer.go index 258758bedf0c..18be79c18368 100644 --- a/cache/ringbuffer.go +++ b/cache/ringbuffer.go @@ -14,8 +14,6 @@ package cache -import "fmt" - type ringBuffer[T any] struct { buffer []entry[T] // head is the index immediately after the last non-empty entry in the buffer (i.e., the next write position). @@ -25,13 +23,13 @@ type ringBuffer[T any] struct { type entry[T any] struct { revision int64 - items []T + item T } type ( KeyPredicate = func([]byte) bool RevisionOf[T any] func(T) int64 - IterFunc[T any] func(rev int64, items []T) bool + IterFunc[T any] func(rev int64, item T) bool ) func newRingBuffer[T any](capacity int, revisionOf RevisionOf[T]) *ringBuffer[T] { @@ -42,29 +40,8 @@ func newRingBuffer[T any](capacity int, revisionOf RevisionOf[T]) *ringBuffer[T] } } -func (r *ringBuffer[T]) Append(items []T) { - start := 0 - for end := 1; end < len(items); end++ { - if r.revisionOf(items[end]) != r.revisionOf(items[start]) { - r.append(entry[T]{ - revision: r.revisionOf(items[start]), - items: items[start:end], - }) - start = end - } - } - if start < len(items) { - r.append(entry[T]{ - revision: r.revisionOf(items[start]), - items: items[start:], - }) - } -} - -func (r *ringBuffer[T]) append(entry entry[T]) { - if len(entry.items) == 0 { - return - } +func (r *ringBuffer[T]) Append(item T) { + entry := entry[T]{revision: r.revisionOf(item), item: item} if r.size == len(r.buffer) { r.tail = (r.tail + 1) % len(r.buffer) } else { @@ -84,15 +61,11 @@ func (r *ringBuffer[T]) AscendGreaterOrEqual(pivot int64, iter IterFunc[T]) { for n, i := 0, r.tail; n < r.size; n, i = n+1, (i+1)%len(r.buffer) { entry := r.buffer[i] - if entry.items == nil { - panic(fmt.Sprintf("ringBuffer.AscendGreaterOrEqual: unexpected nil at %d", i)) - } - if entry.revision < pivot { continue } - if !iter(entry.revision, entry.items) { + if !iter(entry.revision, entry.item) { return } } @@ -107,15 +80,11 @@ func (r *ringBuffer[T]) AscendLessThan(pivot int64, iter IterFunc[T]) { for n, i := 0, r.tail; n < r.size; n, i = n+1, (i+1)%len(r.buffer) { entry := r.buffer[i] - if entry.items == nil { - panic(fmt.Sprintf("ringBuffer.AscendLessThan: unexpected nil at %d", i)) - } - if entry.revision >= pivot { return } - if !iter(entry.revision, entry.items) { + if !iter(entry.revision, entry.item) { return } } @@ -130,15 +99,11 @@ func (r *ringBuffer[T]) DescendGreaterThan(pivot int64, iter IterFunc[T]) { for n, i := 0, r.moduloIndex(r.head-1); n < r.size; n, i = n+1, r.moduloIndex(i-1) { entry := r.buffer[i] - if entry.items == nil { - panic(fmt.Sprintf("ringBuffer.DescendGreaterThan: unexpected nil at %d", i)) - } - if entry.revision <= pivot { return } - if !iter(entry.revision, entry.items) { + if !iter(entry.revision, entry.item) { return } } @@ -153,15 +118,11 @@ func (r *ringBuffer[T]) DescendLessOrEqual(pivot int64, iter IterFunc[T]) { for n, i := 0, r.moduloIndex(r.head-1); n < r.size; n, i = n+1, r.moduloIndex(i-1) { entry := r.buffer[i] - if entry.items == nil { - panic(fmt.Sprintf("ringBuffer.DescendLessOrEqual: unexpected nil at %d", i)) - } - if entry.revision > pivot { continue } - if !iter(entry.revision, entry.items) { + if !iter(entry.revision, entry.item) { return } } diff --git a/cache/ringbuffer_test.go b/cache/ringbuffer_test.go index f4ce80762e88..d030ea517c35 100644 --- a/cache/ringbuffer_test.go +++ b/cache/ringbuffer_test.go @@ -65,7 +65,7 @@ func TestPeekLatestAndOldest(t *testing.T) { for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { - rb := newRingBuffer(tt.capacity, func(ev *clientv3.Event) int64 { return ev.Kv.ModRevision }) + rb := newRingBuffer(tt.capacity, func(batch []*clientv3.Event) int64 { return batch[0].Kv.ModRevision }) for _, r := range tt.revs { batch, err := makeEventBatch(r, "k", 1) if err != nil { @@ -168,16 +168,21 @@ func TestIterationMethods(t *testing.T) { } func TestIterationWithBatching(t *testing.T) { - rb := newRingBuffer(6, func(ev *clientv3.Event) int64 { return ev.Kv.ModRevision }) - events := []*clientv3.Event{ + rb := newRingBuffer(6, func(batch []*clientv3.Event) int64 { return batch[0].Kv.ModRevision }) + batchA := []*clientv3.Event{ {Kv: &mvccpb.KeyValue{Key: []byte("key-a"), ModRevision: 5}}, + } + batchB := []*clientv3.Event{ {Kv: &mvccpb.KeyValue{Key: []byte("key-b-1"), ModRevision: 10}}, {Kv: &mvccpb.KeyValue{Key: []byte("key-b-2"), ModRevision: 10}}, {Kv: &mvccpb.KeyValue{Key: []byte("key-b-3"), ModRevision: 10}}, + } + batchC := []*clientv3.Event{ {Kv: &mvccpb.KeyValue{Key: []byte("key-c"), ModRevision: 12}}, } - - rb.Append(events) + rb.Append(batchA) + rb.Append(batchB) + rb.Append(batchC) tests := []struct { name string @@ -394,7 +399,7 @@ func TestAtomicOrdered(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - rb := newRingBuffer(tt.capacity, func(ev *clientv3.Event) int64 { return ev.Kv.ModRevision }) + rb := newRingBuffer(tt.capacity, func(batch []*clientv3.Event) int64 { return batch[0].Kv.ModRevision }) for _, in := range tt.inputs { batch, err := makeEventBatch(in.rev, in.key, in.size) if err != nil { @@ -445,7 +450,7 @@ func TestRebaseHistory(t *testing.T) { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() - rb := newRingBuffer(4, func(ev *clientv3.Event) int64 { return ev.Kv.ModRevision }) + rb := newRingBuffer(4, func(batch []*clientv3.Event) int64 { return batch[0].Kv.ModRevision }) for _, r := range tt.revs { batch, err := makeEventBatch(r, "k", 1) if err != nil { @@ -479,8 +484,8 @@ func TestRebaseHistory(t *testing.T) { } } -func setupRingBuffer(t *testing.T, capacity int, revs []int64) *ringBuffer[*clientv3.Event] { - rb := newRingBuffer(capacity, func(ev *clientv3.Event) int64 { return ev.Kv.ModRevision }) +func setupRingBuffer(t *testing.T, capacity int, revs []int64) *ringBuffer[[]*clientv3.Event] { + rb := newRingBuffer(capacity, func(batch []*clientv3.Event) int64 { return batch[0].Kv.ModRevision }) for _, r := range revs { batch, err := makeEventBatch(r, "key", 1) if err != nil { @@ -491,7 +496,7 @@ func setupRingBuffer(t *testing.T, capacity int, revs []int64) *ringBuffer[*clie return rb } -func collectRevisions(rb *ringBuffer[*clientv3.Event], method iterMethod, pivot int64) []int64 { +func collectRevisions(rb *ringBuffer[[]*clientv3.Event], method iterMethod, pivot int64) []int64 { revs := []int64{} rb.iterate(method, pivot, func(rev int64, events []*clientv3.Event) bool { revs = append(revs, rev) From 6dc13463f4fed096dd9e43c37fb116c0e580f464 Mon Sep 17 00:00:00 2001 From: hwdef Date: Thu, 14 Aug 2025 16:05:47 +0800 Subject: [PATCH 0438/1068] CHANGELOG: update 3.7 changelog, add organize etcdctl commads related Signed-off-by: hwdef --- CHANGELOG/CHANGELOG-3.7.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG/CHANGELOG-3.7.md b/CHANGELOG/CHANGELOG-3.7.md index ceb11e53ff04..4cd653b5f692 100644 --- a/CHANGELOG/CHANGELOG-3.7.md +++ b/CHANGELOG/CHANGELOG-3.7.md @@ -9,3 +9,7 @@ Previous change logs can be found at [CHANGELOG-3.6](https://github.com/etcd-io/ ### Deprecations - Deprecated [UsageFunc in pkg/cobrautl](https://github.com/etcd-io/etcd/pull/18356). + +### etcdctl + +- [Organize etcdctl commands](https://github.com/etcd-io/etcd/pull/20162) to make them more concise and easier to understand. From 7b9171d8b654f4c663daa32612d1121e18bc366b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Aug 2025 01:02:05 +0000 Subject: [PATCH 0439/1068] build(deps): bump github/codeql-action from 3.29.8 to 3.29.10 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.8 to 3.29.10. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/76621b61decf072c1cee8dd1ce2d2a82d33c17ed...96f518a34f7a870018057716cc4d7a5c014bd61c) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.29.10 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 5e660430372c..72e930721c52 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.5 + uses: github/codeql-action/init@96f518a34f7a870018057716cc4d7a5c014bd61c # v3.29.5 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.5 + uses: github/codeql-action/autobuild@96f518a34f7a870018057716cc4d7a5c014bd61c # v3.29.5 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.5 + uses: github/codeql-action/analyze@96f518a34f7a870018057716cc4d7a5c014bd61c # v3.29.5 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 9dad28de1758..675436084639 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.5 + uses: github/codeql-action/upload-sarif@96f518a34f7a870018057716cc4d7a5c014bd61c # v3.29.5 with: sarif_file: results.sarif From b46a7cf51df8328a44348207de7a7629a74292a8 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Tue, 12 Aug 2025 12:26:42 +0000 Subject: [PATCH 0440/1068] cache: make ring buffer generic for events and snapshots Signed-off-by: Peter Chang --- cache/demux.go | 4 +- cache/ringbuffer.go | 122 ++++++++++++++++++++------------------- cache/ringbuffer_test.go | 16 ++--- 3 files changed, 72 insertions(+), 70 deletions(-) diff --git a/cache/demux.go b/cache/demux.go index 344a9e5391fc..87862cf5394c 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -27,7 +27,7 @@ type demux struct { // activeWatchers & laggingWatchers hold the first revision the watcher still needs (nextRev). activeWatchers map[*watcher]int64 laggingWatchers map[*watcher]int64 - history *ringBuffer + history ringBuffer[*clientv3.Event] resyncInterval time.Duration } @@ -45,7 +45,7 @@ func newDemux(historyWindowSize int, resyncInterval time.Duration) *demux { return &demux{ activeWatchers: make(map[*watcher]int64), laggingWatchers: make(map[*watcher]int64), - history: newRingBuffer(historyWindowSize), + history: *newRingBuffer(historyWindowSize, func(ev *clientv3.Event) int64 { return ev.Kv.ModRevision }), resyncInterval: resyncInterval, } } diff --git a/cache/ringbuffer.go b/cache/ringbuffer.go index 8ada7360d9fe..258758bedf0c 100644 --- a/cache/ringbuffer.go +++ b/cache/ringbuffer.go @@ -14,56 +14,55 @@ package cache -import ( - "fmt" +import "fmt" - clientv3 "go.etcd.io/etcd/client/v3" -) - -type ringBuffer struct { - buffer []batch +type ringBuffer[T any] struct { + buffer []entry[T] // head is the index immediately after the last non-empty entry in the buffer (i.e., the next write position). head, tail, size int + revisionOf RevisionOf[T] } -// batch groups all events that share one ModRevision. -type batch struct { - rev int64 - events []*clientv3.Event +type entry[T any] struct { + revision int64 + items []T } -type KeyPredicate = func([]byte) bool - -type IterFunc func(rev int64, events []*clientv3.Event) bool +type ( + KeyPredicate = func([]byte) bool + RevisionOf[T any] func(T) int64 + IterFunc[T any] func(rev int64, items []T) bool +) -func newRingBuffer(capacity int) *ringBuffer { +func newRingBuffer[T any](capacity int, revisionOf RevisionOf[T]) *ringBuffer[T] { // assume capacity > 0 – validated by Cache - return &ringBuffer{ - buffer: make([]batch, capacity), + return &ringBuffer[T]{ + buffer: make([]entry[T], capacity), + revisionOf: revisionOf, } } -func (r *ringBuffer) Append(events []*clientv3.Event) { +func (r *ringBuffer[T]) Append(items []T) { start := 0 - for end := 1; end < len(events); end++ { - if events[end].Kv.ModRevision != events[start].Kv.ModRevision { - r.append(batch{ - rev: events[start].Kv.ModRevision, - events: events[start:end], + for end := 1; end < len(items); end++ { + if r.revisionOf(items[end]) != r.revisionOf(items[start]) { + r.append(entry[T]{ + revision: r.revisionOf(items[start]), + items: items[start:end], }) start = end } } - if start < len(events) { - r.append(batch{ - rev: events[start].Kv.ModRevision, - events: events[start:], + if start < len(items) { + r.append(entry[T]{ + revision: r.revisionOf(items[start]), + items: items[start:], }) } } -func (r *ringBuffer) append(b batch) { - if len(b.events) == 0 { +func (r *ringBuffer[T]) append(entry entry[T]) { + if len(entry.items) == 0 { return } if r.size == len(r.buffer) { @@ -71,124 +70,127 @@ func (r *ringBuffer) append(b batch) { } else { r.size++ } - r.buffer[r.head] = b + r.buffer[r.head] = entry r.head = (r.head + 1) % len(r.buffer) } -// AscendGreaterOrEqual iterates through batches in ascending order starting from the first batch with rev >= pivot. +// AscendGreaterOrEqual iterates through entries in ascending order starting from the first entry with revision >= pivot. // TODO: use binary search on the ring buffer to locate the first entry >= nextRev instead of a full scan -func (r *ringBuffer) AscendGreaterOrEqual(pivot int64, iter IterFunc) { +func (r *ringBuffer[T]) AscendGreaterOrEqual(pivot int64, iter IterFunc[T]) { if r.size == 0 { return } for n, i := 0, r.tail; n < r.size; n, i = n+1, (i+1)%len(r.buffer) { - eventBatch := r.buffer[i] + entry := r.buffer[i] - if eventBatch.events == nil { + if entry.items == nil { panic(fmt.Sprintf("ringBuffer.AscendGreaterOrEqual: unexpected nil at %d", i)) } - if eventBatch.rev < pivot { + if entry.revision < pivot { continue } - if !iter(eventBatch.rev, eventBatch.events) { + if !iter(entry.revision, entry.items) { return } } } -func (r *ringBuffer) AscendLessThan(pivot int64, iter IterFunc) { +// AscendLessThan iterates in ascending order over entries with revision < pivot. +func (r *ringBuffer[T]) AscendLessThan(pivot int64, iter IterFunc[T]) { if r.size == 0 { return } for n, i := 0, r.tail; n < r.size; n, i = n+1, (i+1)%len(r.buffer) { - eventBatch := r.buffer[i] + entry := r.buffer[i] - if eventBatch.events == nil { + if entry.items == nil { panic(fmt.Sprintf("ringBuffer.AscendLessThan: unexpected nil at %d", i)) } - if eventBatch.rev >= pivot { + if entry.revision >= pivot { return } - if !iter(eventBatch.rev, eventBatch.events) { + if !iter(entry.revision, entry.items) { return } } } -func (r *ringBuffer) DescendGreaterThan(pivot int64, iter IterFunc) { +// DescendGreaterThan iterates in descending order over entries with revision > pivot. +func (r *ringBuffer[T]) DescendGreaterThan(pivot int64, iter IterFunc[T]) { if r.size == 0 { return } for n, i := 0, r.moduloIndex(r.head-1); n < r.size; n, i = n+1, r.moduloIndex(i-1) { - eventBatch := r.buffer[i] + entry := r.buffer[i] - if eventBatch.events == nil { + if entry.items == nil { panic(fmt.Sprintf("ringBuffer.DescendGreaterThan: unexpected nil at %d", i)) } - if eventBatch.rev <= pivot { + if entry.revision <= pivot { return } - if !iter(eventBatch.rev, eventBatch.events) { + if !iter(entry.revision, entry.items) { return } } } -func (r *ringBuffer) DescendLessOrEqual(pivot int64, iter IterFunc) { +// DescendLessOrEqual iterates in descending order over entries with revision <= pivot. +func (r *ringBuffer[T]) DescendLessOrEqual(pivot int64, iter IterFunc[T]) { if r.size == 0 { return } for n, i := 0, r.moduloIndex(r.head-1); n < r.size; n, i = n+1, r.moduloIndex(i-1) { - eventBatch := r.buffer[i] + entry := r.buffer[i] - if eventBatch.events == nil { + if entry.items == nil { panic(fmt.Sprintf("ringBuffer.DescendLessOrEqual: unexpected nil at %d", i)) } - if eventBatch.rev > pivot { + if entry.revision > pivot { continue } - if !iter(eventBatch.rev, eventBatch.events) { + if !iter(entry.revision, entry.items) { return } } } -// PeekLatest returns the most recently-appended event (or nil if empty). -func (r *ringBuffer) PeekLatest() int64 { +// PeekLatest returns the most recently-appended revision (or 0 if empty). +func (r *ringBuffer[T]) PeekLatest() int64 { if r.size == 0 { return 0 } idx := (r.head - 1 + len(r.buffer)) % len(r.buffer) - return r.buffer[idx].rev + return r.buffer[idx].revision } -// PeekOldest returns the oldest event currently stored (or nil if empty). -func (r *ringBuffer) PeekOldest() int64 { +// PeekOldest returns the oldest revision currently stored (or 0 if empty). +func (r *ringBuffer[T]) PeekOldest() int64 { if r.size == 0 { return 0 } - return r.buffer[r.tail].rev + return r.buffer[r.tail].revision } -func (r *ringBuffer) RebaseHistory() { +func (r *ringBuffer[T]) RebaseHistory() { r.head, r.tail, r.size = 0, 0, 0 for i := range r.buffer { - r.buffer[i] = batch{} + r.buffer[i] = entry[T]{} } } -func (r *ringBuffer) moduloIndex(index int) int { +func (r *ringBuffer[T]) moduloIndex(index int) int { return (index + len(r.buffer)) % len(r.buffer) } diff --git a/cache/ringbuffer_test.go b/cache/ringbuffer_test.go index c20b68ec8ed8..f4ce80762e88 100644 --- a/cache/ringbuffer_test.go +++ b/cache/ringbuffer_test.go @@ -65,7 +65,7 @@ func TestPeekLatestAndOldest(t *testing.T) { for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { - rb := newRingBuffer(tt.capacity) + rb := newRingBuffer(tt.capacity, func(ev *clientv3.Event) int64 { return ev.Kv.ModRevision }) for _, r := range tt.revs { batch, err := makeEventBatch(r, "k", 1) if err != nil { @@ -168,7 +168,7 @@ func TestIterationMethods(t *testing.T) { } func TestIterationWithBatching(t *testing.T) { - rb := newRingBuffer(6) + rb := newRingBuffer(6, func(ev *clientv3.Event) int64 { return ev.Kv.ModRevision }) events := []*clientv3.Event{ {Kv: &mvccpb.KeyValue{Key: []byte("key-a"), ModRevision: 5}}, {Kv: &mvccpb.KeyValue{Key: []byte("key-b-1"), ModRevision: 10}}, @@ -328,7 +328,7 @@ const ( descendLTE iterMethod = "DescendLessOrEqual" ) -func (r *ringBuffer) iterate(method iterMethod, pivot int64, fn IterFunc) { +func (r *ringBuffer[T]) iterate(method iterMethod, pivot int64, fn IterFunc[T]) { switch method { case ascendGTE: r.AscendGreaterOrEqual(pivot, fn) @@ -394,7 +394,7 @@ func TestAtomicOrdered(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - rb := newRingBuffer(tt.capacity) + rb := newRingBuffer(tt.capacity, func(ev *clientv3.Event) int64 { return ev.Kv.ModRevision }) for _, in := range tt.inputs { batch, err := makeEventBatch(in.rev, in.key, in.size) if err != nil { @@ -445,7 +445,7 @@ func TestRebaseHistory(t *testing.T) { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() - rb := newRingBuffer(4) + rb := newRingBuffer(4, func(ev *clientv3.Event) int64 { return ev.Kv.ModRevision }) for _, r := range tt.revs { batch, err := makeEventBatch(r, "k", 1) if err != nil { @@ -479,8 +479,8 @@ func TestRebaseHistory(t *testing.T) { } } -func setupRingBuffer(t *testing.T, capacity int, revs []int64) *ringBuffer { - rb := newRingBuffer(capacity) +func setupRingBuffer(t *testing.T, capacity int, revs []int64) *ringBuffer[*clientv3.Event] { + rb := newRingBuffer(capacity, func(ev *clientv3.Event) int64 { return ev.Kv.ModRevision }) for _, r := range revs { batch, err := makeEventBatch(r, "key", 1) if err != nil { @@ -491,7 +491,7 @@ func setupRingBuffer(t *testing.T, capacity int, revs []int64) *ringBuffer { return rb } -func collectRevisions(rb *ringBuffer, method iterMethod, pivot int64) []int64 { +func collectRevisions(rb *ringBuffer[*clientv3.Event], method iterMethod, pivot int64) []int64 { revs := []int64{} rb.iterate(method, pivot, func(rev int64, events []*clientv3.Event) bool { revs = append(revs, rev) From 2eb71d41ba20c72c578999b83c08a4a9037d72df Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 19 Aug 2025 13:47:58 +0200 Subject: [PATCH 0441/1068] Add more attributes to OpenTelemetry Txn spans Add new helper functions and move them to a separate file. Signed-off-by: Aleksander Mistewicz --- server/etcdserver/tracing.go | 74 +++++++++++++++++++++++++++++++ server/etcdserver/v3_server.go | 14 ++---- tests/integration/tracing_test.go | 22 ++++++--- 3 files changed, 94 insertions(+), 16 deletions(-) create mode 100644 server/etcdserver/tracing.go diff --git a/server/etcdserver/tracing.go b/server/etcdserver/tracing.go new file mode 100644 index 000000000000..6050500e04ea --- /dev/null +++ b/server/etcdserver/tracing.go @@ -0,0 +1,74 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package etcdserver + +import pb "go.etcd.io/etcd/api/v3/etcdserverpb" + +// firstCompareKey returns first non-empty key in the list of comparison operations. +func firstCompareKey(c []*pb.Compare) string { + for _, op := range c { + key := string(op.GetKey()) + if key != "" { + return key + } + } + return "" +} + +// firstOpKey returns first non-empty key in the list of request operations. +func firstOpKey(ops []*pb.RequestOp) string { + for _, operation := range ops { + var key string + switch op := operation.GetRequest().(type) { + case *pb.RequestOp_RequestPut: + key = string(op.RequestPut.GetKey()) + case *pb.RequestOp_RequestRange: + key = string(op.RequestRange.GetKey()) + case *pb.RequestOp_RequestDeleteRange: + key = string(op.RequestDeleteRange.GetKey()) + } + if key != "" { + return key + } + } + return "" +} + +// firstOpType returns type of the first operation in the list. +func firstOpType(ops []*pb.RequestOp) string { + for _, operation := range ops { + switch operation.GetRequest().(type) { + case *pb.RequestOp_RequestPut: + return "put" + case *pb.RequestOp_RequestRange: + return "range" + case *pb.RequestOp_RequestDeleteRange: + return "delete_range" + case *pb.RequestOp_RequestTxn: + return "txn" + } + } + return "" +} + +// firstOpLease returns lease ID of the first PUT operation in the list. +func firstOpLease(ops []*pb.RequestOp) int64 { + for _, operation := range ops { + if op, ok := operation.GetRequest().(*pb.RequestOp_RequestPut); ok { + return op.RequestPut.GetLease() + } + } + return -1 +} diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 04833bce3b85..6e3b95250a21 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -181,23 +181,15 @@ func (s *EtcdServer) DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) return resp.(*pb.DeleteRangeResponse), nil } -// firstCompareKey returns first non-empty key in the list of comparison operations. -func firstCompareKey(c []*pb.Compare) string { - for _, op := range c { - key := string(op.GetKey()) - if key != "" { - return key - } - } - return "" -} - func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, error) { readOnly := txn.IsTxnReadonly(r) var span trace.Span ctx, span = traceutil.Tracer.Start(ctx, "txn", trace.WithAttributes( attribute.String("compare_first_key", firstCompareKey(r.GetCompare())), + attribute.String("success_first_key", firstOpKey(r.GetSuccess())), + attribute.String("success_first_type", firstOpType(r.GetSuccess())), + attribute.Int64("success_first_lease", firstOpLease(r.GetSuccess())), attribute.Int("compare_len", len(r.GetCompare())), attribute.Int("success_len", len(r.GetSuccess())), attribute.Int("failure_len", len(r.GetFailure())), diff --git a/tests/integration/tracing_test.go b/tests/integration/tracing_test.go index 899458f69da5..e728c6d7ebe8 100644 --- a/tests/integration/tracing_test.go +++ b/tests/integration/tracing_test.go @@ -99,8 +99,8 @@ func TestTracing(t *testing.T) { name: "UnaryTxn", rpc: func(ctx context.Context, cli *clientv3.Client) error { _, err := cli.Txn(ctx). - If(clientv3.Compare(clientv3.ModRevision("key"), "=", 1)). - Then(clientv3.OpGet("key"), clientv3.OpGet("other_key")). + If(clientv3.Compare(clientv3.ModRevision("cmp_key"), "=", 1)). + Then(clientv3.OpPut("op_key", "val", clientv3.WithLease(1234)), clientv3.OpGet("other_key")). Commit() return err }, @@ -109,7 +109,19 @@ func TestTracing(t *testing.T) { Attributes: []*commonv1.KeyValue{ { Key: "compare_first_key", - Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_StringValue{StringValue: "key"}}, + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_StringValue{StringValue: "cmp_key"}}, + }, + { + Key: "success_first_key", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_StringValue{StringValue: "op_key"}}, + }, + { + Key: "success_first_type", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_StringValue{StringValue: "put"}}, + }, + { + Key: "success_first_lease", + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_IntValue{IntValue: 1234}}, }, { Key: "compare_len", @@ -125,7 +137,7 @@ func TestTracing(t *testing.T) { }, { Key: "read_only", - Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_BoolValue{BoolValue: true}}, + Value: &commonv1.AnyValue{Value: &commonv1.AnyValue_BoolValue{BoolValue: false}}, }, }, }, @@ -228,7 +240,7 @@ func testRPCTracing(t *testing.T, wantSpan *v1.Span, clientAction func(context.C } if diff := cmp.Diff(wantSpan, gotSpan, protocmp.Transform(), - protocmp.IgnoreFields(&v1.Span{}, "end_time_unix_nano", "flags", "kind", "parent_span_id", "span_id", "start_time_unix_nano", "status", "trace_id"), + protocmp.IgnoreFields(&v1.Span{}, "end_time_unix_nano", "flags", "kind", "parent_span_id", "span_id", "start_time_unix_nano", "status", "trace_id", "events"), ); diff != "" { t.Errorf("Span mismatch (-want +got):\n%s", diff) } From da552fec0f89ebe2f5e6bccba7a9cc708065bbb5 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Thu, 14 Aug 2025 18:45:50 +0000 Subject: [PATCH 0442/1068] cache: preserve resumable guarantee with empty history watchers Signed-off-by: Peter Chang --- cache/cache.go | 1 - cache/demux.go | 25 +++++++++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index 29ea819e2510..75d7acc69816 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -27,7 +27,6 @@ import ( ) var ( - // TODO: add gap-free replay for arbitrary startRevs and drop this guard. // Returned when an option combination isn’t yet handled by the cache (e.g. WithPrevKV, WithProgressNotify for Watch(), WithCountOnly for Get()). ErrUnsupportedRequest = errors.New("cache: unsupported request parameters") // Returned when the requested key or key‑range is invalid (empty or reversed) or lies outside c.prefix. diff --git a/cache/demux.go b/cache/demux.go index 344a9e5391fc..6d5e3b2dd655 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -71,13 +71,17 @@ func (d *demux) Register(w *watcher, startingRev int64) { defer d.mu.Unlock() latestRev := d.history.PeekLatest() + if latestRev == 0 { + if startingRev == 0 { + d.activeWatchers[w] = 0 + } else { + d.laggingWatchers[w] = startingRev + } + return + } // Special case: 0 means “newest”. if startingRev == 0 { - if latestRev == 0 { - d.activeWatchers[w] = 0 - return - } startingRev = latestRev + 1 } @@ -107,9 +111,14 @@ func (d *demux) Broadcast(events []*clientv3.Event) { defer d.mu.Unlock() d.history.Append(events) - + firstRev := events[0].Kv.ModRevision lastRev := events[len(events)-1].Kv.ModRevision for w, nextRev := range d.activeWatchers { + if nextRev != 0 && firstRev > nextRev { + d.laggingWatchers[w] = nextRev + delete(d.activeWatchers, w) + continue + } start := len(events) for i, ev := range events { if ev.Kv.ModRevision >= nextRev { @@ -151,8 +160,12 @@ func (d *demux) resyncLaggingWatchers() { defer d.mu.Unlock() oldestRev := d.history.PeekOldest() + if oldestRev == 0 { + return + } + for w, nextRev := range d.laggingWatchers { - if oldestRev != 0 && nextRev < oldestRev { + if nextRev < oldestRev { w.Stop() delete(d.laggingWatchers, w) continue From 576cb0637cc4dda0c17444f124c6cb3222647c2f Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 19 Aug 2025 20:35:46 +0100 Subject: [PATCH 0443/1068] Bump bbolt to v1.4.3 Signed-off-by: Benjamin Wang --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 97611f8b0c81..c6a6cc94cf8b 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -26,7 +26,7 @@ require ( github.com/olekukonko/tablewriter v1.0.9 github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 - go.etcd.io/bbolt v1.4.2 + go.etcd.io/bbolt v1.4.3 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 6d117239b405..49bf4e2d4bbf 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -109,8 +109,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.2 h1:IrUHp260R8c+zYx/Tm8QZr04CX+qWS5PGfPdevhdm1I= -go.etcd.io/bbolt v1.4.2/go.mod h1:Is8rSHO/b4f3XigBC0lL0+4FwAQv3HXEEIgFMuKHceM= +go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= +go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/go.mod b/go.mod index 472c0c942d13..49636bdae820 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/dustin/go-humanize v1.0.1 github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 - go.etcd.io/bbolt v1.4.2 + go.etcd.io/bbolt v1.4.3 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 diff --git a/go.sum b/go.sum index d580c2bf2e0d..fd3c43b38ead 100644 --- a/go.sum +++ b/go.sum @@ -146,8 +146,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.2 h1:IrUHp260R8c+zYx/Tm8QZr04CX+qWS5PGfPdevhdm1I= -go.etcd.io/bbolt v1.4.2/go.mod h1:Is8rSHO/b4f3XigBC0lL0+4FwAQv3HXEEIgFMuKHceM= +go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= +go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= diff --git a/server/go.mod b/server/go.mod index 0d7dbf34907f..e713c09c1352 100644 --- a/server/go.mod +++ b/server/go.mod @@ -25,7 +25,7 @@ require ( github.com/stretchr/testify v1.10.0 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 - go.etcd.io/bbolt v1.4.2 + go.etcd.io/bbolt v1.4.3 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 diff --git a/server/go.sum b/server/go.sum index f4920f7fe773..b0e46b25d624 100644 --- a/server/go.sum +++ b/server/go.sum @@ -94,8 +94,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.2 h1:IrUHp260R8c+zYx/Tm8QZr04CX+qWS5PGfPdevhdm1I= -go.etcd.io/bbolt v1.4.2/go.mod h1:Is8rSHO/b4f3XigBC0lL0+4FwAQv3HXEEIgFMuKHceM= +go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= +go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/tests/go.mod b/tests/go.mod index 1f689385e9d5..0ecf80862d16 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -31,7 +31,7 @@ require ( github.com/prometheus/common v0.65.0 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.10.0 - go.etcd.io/bbolt v1.4.2 + go.etcd.io/bbolt v1.4.3 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/cache/v3 v3.6.1 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 diff --git a/tests/go.sum b/tests/go.sum index e72d089e89e3..d9ecbcb0db7a 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -152,8 +152,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.2 h1:IrUHp260R8c+zYx/Tm8QZr04CX+qWS5PGfPdevhdm1I= -go.etcd.io/bbolt v1.4.2/go.mod h1:Is8rSHO/b4f3XigBC0lL0+4FwAQv3HXEEIgFMuKHceM= +go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= +go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= From 18d628322c5a281360b552cc5d33917ade6f51ac Mon Sep 17 00:00:00 2001 From: cuiweixie Date: Thu, 21 Aug 2025 17:12:33 +0800 Subject: [PATCH 0444/1068] server/etcdservere: refactor server to use atomic types Signed-off-by: cuiweixie --- server/etcdserver/server.go | 32 ++++++++++++++++---------------- server/etcdserver/server_test.go | 9 ++++----- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index 59e695d934b0..b611a074e0c2 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -209,11 +209,11 @@ type Server interface { // EtcdServer is the production implementation of the Server interface type EtcdServer struct { // inflightSnapshots holds count the number of snapshots currently inflight. - inflightSnapshots int64 // must use atomic operations to access; keep 64-bit aligned. - appliedIndex uint64 // must use atomic operations to access; keep 64-bit aligned. - committedIndex uint64 // must use atomic operations to access; keep 64-bit aligned. - term uint64 // must use atomic operations to access; keep 64-bit aligned. - lead uint64 // must use atomic operations to access; keep 64-bit aligned. + inflightSnapshots atomic.Int64 // must use atomic operations to access; keep 64-bit aligned. + appliedIndex atomic.Uint64 // must use atomic operations to access; keep 64-bit aligned. + committedIndex atomic.Uint64 // must use atomic operations to access; keep 64-bit aligned. + term atomic.Uint64 // must use atomic operations to access; keep 64-bit aligned. + lead atomic.Uint64 // must use atomic operations to access; keep 64-bit aligned. consistIndex cindex.ConsistentIndexer // consistIndex is used to get/set/save consistentIndex r raftNode // uses 64-bit atomics; keep 64-bit aligned. @@ -1697,35 +1697,35 @@ func (s *EtcdServer) MemberList(ctx context.Context, r *pb.MemberListRequest) ([ } func (s *EtcdServer) setCommittedIndex(v uint64) { - atomic.StoreUint64(&s.committedIndex, v) + s.committedIndex.Store(v) } func (s *EtcdServer) getCommittedIndex() uint64 { - return atomic.LoadUint64(&s.committedIndex) + return s.committedIndex.Load() } func (s *EtcdServer) setAppliedIndex(v uint64) { - atomic.StoreUint64(&s.appliedIndex, v) + s.appliedIndex.Store(v) } func (s *EtcdServer) getAppliedIndex() uint64 { - return atomic.LoadUint64(&s.appliedIndex) + return s.appliedIndex.Load() } func (s *EtcdServer) setTerm(v uint64) { - atomic.StoreUint64(&s.term, v) + s.term.Store(v) } func (s *EtcdServer) getTerm() uint64 { - return atomic.LoadUint64(&s.term) + return s.term.Load() } func (s *EtcdServer) setLead(v uint64) { - atomic.StoreUint64(&s.lead, v) + s.lead.Store(v) } func (s *EtcdServer) getLead() uint64 { - return atomic.LoadUint64(&s.lead) + return s.lead.Load() } func (s *EtcdServer) LeaderChangedNotify() <-chan struct{} { @@ -1865,7 +1865,7 @@ func (s *EtcdServer) publishV3(timeout time.Duration) { } func (s *EtcdServer) sendMergedSnap(merged snap.Message) { - atomic.AddInt64(&s.inflightSnapshots, 1) + s.inflightSnapshots.Add(1) lg := s.Logger() fields := []zap.Field{ @@ -1893,7 +1893,7 @@ func (s *EtcdServer) sendMergedSnap(merged snap.Message) { } } - atomic.AddInt64(&s.inflightSnapshots, -1) + s.inflightSnapshots.Add(-1) lg.Info("sent merged snapshot", append(fields, zap.Duration("took", time.Since(now)))...) @@ -2248,7 +2248,7 @@ func (s *EtcdServer) compactRaftLog(snapi uint64) { // the snapshot sent to catch up. If we do not pause compaction, the log entries right after // the snapshot sent might already be compacted. It happens when the snapshot takes long time // to send and save. Pausing compaction avoids triggering a snapshot sending cycle. - if atomic.LoadInt64(&s.inflightSnapshots) != 0 { + if s.inflightSnapshots.Load() != 0 { lg.Info("skip compaction since there is an inflight snapshot") return } diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index f9753154a51a..31871c3d7a30 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -1618,12 +1618,11 @@ func TestWaitAppliedIndex(t *testing.T) { for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { s := &EtcdServer{ - appliedIndex: tc.appliedIndex, - committedIndex: tc.committedIndex, - stopping: make(chan struct{}, 1), - applyWait: wait.NewTimeList(), + stopping: make(chan struct{}, 1), + applyWait: wait.NewTimeList(), } - + s.appliedIndex.Store(tc.appliedIndex) + s.committedIndex.Store(tc.committedIndex) if tc.action != nil { go tc.action(s) } From 601e51b55d5a6793a25857f111a33a5a327b2ccd Mon Sep 17 00:00:00 2001 From: hwdef Date: Fri, 15 Aug 2025 16:06:46 +0800 Subject: [PATCH 0445/1068] etcdctl: hide global flags Signed-off-by: hwdef --- etcdctl/ctlv3/command/options_command.go | 46 ++++++++++++++++++++++++ etcdctl/ctlv3/ctl.go | 29 ++++++++++++++- 2 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 etcdctl/ctlv3/command/options_command.go diff --git a/etcdctl/ctlv3/command/options_command.go b/etcdctl/ctlv3/command/options_command.go new file mode 100644 index 000000000000..b48185f10366 --- /dev/null +++ b/etcdctl/ctlv3/command/options_command.go @@ -0,0 +1,46 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package command + +import ( + "fmt" + + "github.com/spf13/cobra" + "github.com/spf13/pflag" +) + +func NewOptionsCommand(rootCmd *cobra.Command) *cobra.Command { + cmd := &cobra.Command{ + Use: "options", + Short: "Show the global command-line flags", + Run: func(cmd *cobra.Command, args []string) { + fs := unhideCopy(rootCmd.PersistentFlags()) + fmt.Fprintf(cmd.OutOrStdout(), "The following options can be passed to any command:\n\n") + fmt.Fprint(cmd.OutOrStdout(), fs.FlagUsages()) + }, + GroupID: groupUtilityID, + } + return cmd +} + +func unhideCopy(src *pflag.FlagSet) *pflag.FlagSet { + out := pflag.NewFlagSet("global", pflag.ContinueOnError) + src.VisitAll(func(f *pflag.Flag) { + nf := *f + nf.Hidden = false + out.AddFlag(&nf) + }) + return out +} diff --git a/etcdctl/ctlv3/ctl.go b/etcdctl/ctlv3/ctl.go index 0fc6570719c1..676d95547671 100644 --- a/etcdctl/ctlv3/ctl.go +++ b/etcdctl/ctlv3/ctl.go @@ -16,10 +16,12 @@ package ctlv3 import ( + "fmt" "os" "time" "github.com/spf13/cobra" + "github.com/spf13/pflag" "go.etcd.io/etcd/etcdctl/v3/ctlv3/command" "go.etcd.io/etcd/pkg/v3/cobrautl" @@ -106,9 +108,13 @@ func init() { command.NewCheckCommand(), command.NewCompletionCommand(), command.NewDowngradeCommand(), + command.NewOptionsCommand(rootCmd), ) - command.SetHelpCmdGroup(rootCmd) + + hideAllPersistentFlags() + hideHelpFlag() + addOptionsPrompt() } func Start() error { @@ -124,6 +130,27 @@ func MustStart() { } } +func hideAllPersistentFlags() { + rootCmd.PersistentFlags().VisitAll(func(f *pflag.Flag) { + rootCmd.PersistentFlags().MarkHidden(f.Name) + }) +} + +func hideHelpFlag() { + if rootCmd.Flags().Lookup("help") == nil { + rootCmd.Flags().BoolP("help", "h", false, "help for "+rootCmd.Name()) + } + rootCmd.Flags().MarkHidden("help") +} + +func addOptionsPrompt() { + defaultHelpFunc := rootCmd.HelpFunc() + rootCmd.SetHelpFunc(func(cmd *cobra.Command, args []string) { + defaultHelpFunc(cmd, args) + fmt.Fprintln(cmd.OutOrStdout(), `Use "etcdctl options" for a list of global command-line options (applies to all commands).`) + }) +} + func init() { cobra.EnablePrefixMatching = true } From 3239b18ed7c6aced51c209f75d53c175dc269398 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Thu, 14 Aug 2025 10:08:01 +0200 Subject: [PATCH 0446/1068] Use Span references instead of ResourceSpans in trace tests Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/coverage_test.go | 148 ++++++++++++--------- tests/robustness/coverage/matchers_test.go | 101 +++++++------- 2 files changed, 131 insertions(+), 118 deletions(-) diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index 235b71347564..cc52f85606d0 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -138,6 +138,9 @@ var referenceUsageOfEtcdAPI = map[string]refOp{ {name: "rev", matcher: isRevisionSet}, {name: "physical", matcher: boolAttrSet("is_physical")}, }, + methods: []method{ + {name: "Compact", matcher: all}, + }, }, "etcdserverpb.Watch/Watch": { // Not part of the contract interface (yet) @@ -189,39 +192,21 @@ func testInterfaceUse(t *testing.T, filename string) { if dump.Result == nil { t.Fatalf("missing result data") } - traces := dump.Result - - callsByOperationName := make(map[string][]*tracev1.ResourceSpans) - for _, trace := range traces.GetResourceSpans() { - if getServiceName(trace) != "etcd" { - continue - } - opName := getOperationName(trace) - // Skip put key=_test after healthcheck in command tests. - // https://github.com/kubernetes/kubernetes/blob/release-1.33/hack/lib/etcd.sh#L93 - if opName == "etcdserverpb.KV/Put" && isCommandTestHC(trace) { - continue - } - callsByOperationName[opName] = append(callsByOperationName[opName], trace) - } - if c := len(callsByOperationName[""]); c > 0 { - t.Logf("Found traces that did not go through gRPC: %d", c) - delete(callsByOperationName, "") // Ignoring them. - } - t.Logf("\n%s", printableCallTable(callsByOperationName)) + spansByID := spansMap(t, dump.Result.GetResourceSpans()) + callsByOperationName, countsByGRPC := callsMap(spansByID) + t.Logf("\n%s", printableCallTable(countsByGRPC)) t.Run("only_expected_methods_were_called", func(t *testing.T) { - for opName, traces := range callsByOperationName { + for opName, count := range countsByGRPC { if _, ok := referenceUsageOfEtcdAPI[opName]; !ok { - t.Logf("Example trace to the unknown method: %+v", traces[0]) - t.Errorf("unexpected %d calls to method: %s", len(traces), opName) + t.Errorf("unexpected %d calls to method: %s", count, opName) } } }) for op, td := range referenceUsageOfEtcdAPI { t.Run(op, func(t *testing.T) { - if _, ok := callsByOperationName[op]; !ok { + if _, ok := countsByGRPC[op]; !ok { t.Fatalf("expected %q method to be called at least once", op) } @@ -234,15 +219,16 @@ func testInterfaceUse(t *testing.T, filename string) { tracesWithNoMethod := make(map[string]bool) callCounts := make(map[row]int) - for _, trace := range callsByOperationName[op] { - args := columnsToArgs(trace, td.args) + for _, span := range callsByOperationName[op] { + args := columnsToArgs(span, td.args) - pattern, pFound := extractPattern(trace, td.keyAttrName) + pattern, pFound := extractPattern(span, td.keyAttrName) if !pFound && !tracesWithNoMethod[args] { t.Errorf("New key pattern detected: %s", pattern) + tracesWithNoMethod[args] = true } - method, mFound := extractMethod(td.methods, trace) + method, mFound := extractMethod(td.methods, span) if !mFound && !tracesWithNoMethod[args] { t.Errorf("New call pattern detected: %s(key=%s,%s)", op, pattern, argsToDescription(args, td.args)) tracesWithNoMethod[args] = true @@ -256,11 +242,74 @@ func testInterfaceUse(t *testing.T, filename string) { } } -func extractPattern(trace *tracev1.ResourceSpans, key string) (string, bool) { +func callsMap(spansByID map[string]*tracev1.Span) (map[string][]*tracev1.Span, map[string]int) { + // Add to map only spans that are direct children of Etcd grpc spans. + callsByOperationName := make(map[string][]*tracev1.Span) + grpcCounts := make(map[string]int) + for _, span := range spansByID { + if isEtcdGRPC(span) { + grpcCounts[span.GetName()]++ + continue + } + parent, ok := spansByID[string(span.GetParentSpanId())] + if !ok || !isEtcdGRPC(parent) { + continue + } + opName := parent.GetName() + callsByOperationName[opName] = append(callsByOperationName[opName], span) + } + return callsByOperationName, grpcCounts +} + +func spansMap(t *testing.T, traces []*tracev1.ResourceSpans) map[string]*tracev1.Span { + t.Helper() + + // Mark all traces with at least one span recorded in apiserver. + inApiserver := make(map[string]bool) + for _, trace := range traces { + sn, sFound := serviceName(trace) + if !sFound { + t.Fatalf("resource span without service.name: %+v", trace) + } + if sn != "apiserver" { + continue + } + for _, scopeSpan := range trace.GetScopeSpans() { + for _, span := range scopeSpan.GetSpans() { + inApiserver[string(span.GetTraceId())] = true + } + } + } + + // Map traces by their span ID. + spansByID := make(map[string]*tracev1.Span) + skipped := 0 + for _, trace := range traces { + for _, scopeSpan := range trace.GetScopeSpans() { + for _, span := range scopeSpan.GetSpans() { + if !inApiserver[string(span.GetTraceId())] { + skipped++ + continue + } + id := string(span.GetSpanId()) + if id == "" { + t.Fatalf("span without id: %+v", span) + } + spansByID[id] = span + } + } + } + if skipped > 0 { + t.Logf("WARN: skipped %d spans without traces in apiserver", skipped) + } + return spansByID +} + +func extractPattern(span *tracev1.Span, key string) (string, bool) { if key == "" { return "", true } - k, found := strAttr(trace, key) + k, found := strAttr(span, key) if !found { return "", false } @@ -289,10 +338,10 @@ func extractPattern(trace *tracev1.ResourceSpans, key string) (string, bool) { return k, false } -func columnsToArgs(trace *tracev1.ResourceSpans, cols []column) string { +func columnsToArgs(span *tracev1.Span, cols []column) string { acc := make([]byte, len(cols)) for i, col := range cols { - if col.matcher(trace) { + if col.matcher(span) { acc[i] = 'X' } else { acc[i] = notMatched @@ -309,12 +358,9 @@ func argsToDescription(matched string, cols []column) string { return strings.Join(ret, ",") } -func extractMethod(methodToMatched []method, trace *tracev1.ResourceSpans) (string, bool) { - if len(methodToMatched) == 0 { - return getOperationName(trace), true - } +func extractMethod(methodToMatched []method, span *tracev1.Span) (string, bool) { for _, mm := range methodToMatched { - if mm.matcher(trace) { + if mm.matcher(span) { return mm.name, true } } @@ -333,28 +379,7 @@ type Dump struct { Result *Traces `json:"result"` } -func getServiceName(trace *tracev1.ResourceSpans) string { - for _, kv := range trace.GetResource().GetAttributes() { - if kv.GetKey() == "service.name" { - return kv.GetValue().GetStringValue() - } - } - return "" -} - -func getOperationName(trace *tracev1.ResourceSpans) string { - for _, scopeSpan := range trace.GetScopeSpans() { - for _, span := range scopeSpan.GetSpans() { - name := span.GetName() - if strings.HasPrefix(name, "etcdserverpb") { - return name - } - } - } - return "" -} - -func printableCallTable(callsByOperationName map[string][]*tracev1.ResourceSpans) string { +func printableCallTable(callsByOperationName map[string]int) string { buf := new(bytes.Buffer) cfgBuilder := tablewriter.NewConfigBuilder().WithRowAlignment(tw.AlignRight) table := tablewriter.NewTable(buf, tablewriter.WithConfig(cfgBuilder.Build())) @@ -362,11 +387,10 @@ func printableCallTable(callsByOperationName map[string][]*tracev1.ResourceSpans totalCalls := 0 for _, c := range callsByOperationName { - totalCalls += len(c) + totalCalls += c } - for opName, calls := range callsByOperationName { - callCount := len(calls) + for opName, callCount := range callsByOperationName { table.Append(opName, callCount, fmt.Sprintf("%.2f%%", float64(callCount*100)/float64(totalCalls))) } table.Footer("total", totalCalls, "100.00%") diff --git a/tests/robustness/coverage/matchers_test.go b/tests/robustness/coverage/matchers_test.go index 2db75e0d368a..45eb87beff08 100644 --- a/tests/robustness/coverage/matchers_test.go +++ b/tests/robustness/coverage/matchers_test.go @@ -15,34 +15,31 @@ package coverage_test import ( + "strings" + tracev1 "go.opentelemetry.io/proto/otlp/trace/v1" ) -// Matcher returns true if trace passes the filter. -type Matcher func(trace *tracev1.ResourceSpans) bool +// Matcher returns true if span passes the filter. +type Matcher func(span *tracev1.Span) bool -// isCommandTestHC matches trace produced by curl call to verify Etcd instance -// is working in command tests. -func isCommandTestHC(trace *tracev1.ResourceSpans) bool { - for _, scopeSpan := range trace.GetScopeSpans() { - for _, span := range scopeSpan.GetSpans() { - if span.GetName() != "put" { - continue - } - for _, attr := range span.GetAttributes() { - if attr.GetKey() == "key" { - return attr.GetValue().GetStringValue() == "_test" - } - } +func serviceName(trace *tracev1.ResourceSpans) (string, bool) { + for _, attr := range trace.GetResource().GetAttributes() { + if attr.GetKey() == "service.name" { + return attr.GetValue().GetStringValue(), true } } - return false + return "", false +} + +func isEtcdGRPC(span *tracev1.Span) bool { + return strings.HasPrefix(span.GetName(), "etcdserverpb.") && span.GetKind() == tracev1.Span_SPAN_KIND_SERVER } //nolint:unparam func keyIsEqualInt(key string, want int) Matcher { - return func(trace *tracev1.ResourceSpans) bool { - got, found := intAttr(trace, key) + return func(span *tracev1.Span) bool { + got, found := intAttr(span, key) return found && got == want } } @@ -53,45 +50,37 @@ var ( ) func intAttrSet(key string) Matcher { - return func(trace *tracev1.ResourceSpans) bool { - val, found := intAttr(trace, key) + return func(span *tracev1.Span) bool { + val, found := intAttr(span, key) return found && val > 0 } } -func intAttr(trace *tracev1.ResourceSpans, key string) (int, bool) { - for _, scopeSpan := range trace.GetScopeSpans() { - for _, span := range scopeSpan.GetSpans() { - for _, attr := range span.GetAttributes() { - if attr.GetKey() == key { - return int(attr.GetValue().GetIntValue()), true - } - } +func intAttr(span *tracev1.Span, key string) (int, bool) { + for _, attr := range span.GetAttributes() { + if attr.GetKey() == key { + return int(attr.GetValue().GetIntValue()), true } } return 0, false } func keyIsEqualStr(key string, want string) Matcher { - return func(trace *tracev1.ResourceSpans) bool { - got, found := strAttr(trace, key) + return func(span *tracev1.Span) bool { + got, found := strAttr(span, key) return found && got == want } } -func isRangeEndSet(trace *tracev1.ResourceSpans) bool { - rangeEnd, found := strAttr(trace, "range_end") +func isRangeEndSet(span *tracev1.Span) bool { + rangeEnd, found := strAttr(span, "range_end") return found && len(rangeEnd) > 0 } -func strAttr(trace *tracev1.ResourceSpans, key string) (string, bool) { - for _, scopeSpan := range trace.GetScopeSpans() { - for _, span := range scopeSpan.GetSpans() { - for _, attr := range span.GetAttributes() { - if attr.GetKey() == key { - return attr.Value.GetStringValue(), true - } - } +func strAttr(span *tracev1.Span, key string) (string, bool) { + for _, attr := range span.GetAttributes() { + if attr.GetKey() == key { + return attr.Value.GetStringValue(), true } } return "", false @@ -104,29 +93,25 @@ var ( ) func boolAttrSet(key string) Matcher { - return func(trace *tracev1.ResourceSpans) bool { - val, found := boolAttr(trace, key) + return func(span *tracev1.Span) bool { + val, found := boolAttr(span, key) return found && val } } -func boolAttr(trace *tracev1.ResourceSpans, key string) (bool, bool) { - for _, scopeSpan := range trace.GetScopeSpans() { - for _, span := range scopeSpan.GetSpans() { - for _, attr := range span.GetAttributes() { - if attr.GetKey() == key { - return attr.Value.GetBoolValue(), true - } - } +func boolAttr(span *tracev1.Span, key string) (bool, bool) { + for _, attr := range span.GetAttributes() { + if attr.GetKey() == key { + return attr.Value.GetBoolValue(), true } } return false, false } func orMatcher(l ...Matcher) Matcher { - return func(trace *tracev1.ResourceSpans) bool { + return func(span *tracev1.Span) bool { for _, m := range l { - if m(trace) { + if m(span) { return true } } @@ -135,9 +120,9 @@ func orMatcher(l ...Matcher) Matcher { } func andMatcher(l ...Matcher) Matcher { - return func(trace *tracev1.ResourceSpans) bool { + return func(span *tracev1.Span) bool { for _, m := range l { - if !m(trace) { + if !m(span) { return false } } @@ -146,7 +131,11 @@ func andMatcher(l ...Matcher) Matcher { } func notMatcher(m Matcher) Matcher { - return func(trace *tracev1.ResourceSpans) bool { - return !m(trace) + return func(span *tracev1.Span) bool { + return !m(span) } } + +func all(_ *tracev1.Span) bool { + return true +} From 2b58433640b3ce2330ec961d3e0b698a20c78c49 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Wed, 20 Aug 2025 11:42:50 +0200 Subject: [PATCH 0447/1068] Drop TestCacheWatchOldRevisionCompacted test as it's too flaky Signed-off-by: Marek Siarkowicz --- tests/integration/cache_test.go | 51 --------------------------------- 1 file changed, 51 deletions(-) diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 0a9de0323ecd..28191569b565 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -25,7 +25,6 @@ import ( "github.com/google/go-cmp/cmp" "go.etcd.io/etcd/api/v3/mvccpb" - "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" cache "go.etcd.io/etcd/cache/v3" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/tests/v3/framework/integration" @@ -961,56 +960,6 @@ func TestCacheUnsupportedGetOptions(t *testing.T) { } } -func TestCacheWatchOldRevisionCompacted(t *testing.T) { - integration.BeforeTest(t) - clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) - t.Cleanup(func() { clus.Terminate(t) }) - client := clus.Client(0) - ctx := t.Context() - - const window = 4 - c, err := cache.New(client, "", - cache.WithHistoryWindowSize(window), - cache.WithPerWatcherBufferSize(0), - cache.WithResyncInterval(10*time.Millisecond)) - if err != nil { - t.Fatalf("New(...): %v", err) - } - defer c.Close() - if err = c.WaitReady(ctx); err != nil { - t.Fatalf("cache not ready: %v", err) - } - - putResp, err := client.Put(ctx, "/old/key", "0") - if err != nil { - t.Fatalf("Put: %v", err) - } - oldRev := putResp.Header.Revision - - for i := 1; i < window*2; i++ { - if _, err = client.Put(ctx, fmt.Sprintf("/overflow/%d", i), "x"); err != nil { - t.Fatalf("Put overflow: %v", err) - } - } - - watchCtx, cancel := context.WithTimeout(ctx, 2*time.Second) - defer cancel() - ch := c.Watch(watchCtx, "/old/key", clientv3.WithRev(oldRev)) - - select { - case resp, ok := <-ch: - if !ok || !resp.Canceled { - t.Fatalf("expected canceled watch, got %+v closed=%v", resp, ok) - } - if resp.Err() == nil || (!errors.Is(resp.Err(), rpctypes.ErrCompacted) && - !errors.Is(resp.Err(), cache.ErrUnsupportedRequest)) { - t.Fatalf("expected ErrCompacted (or temporary ErrUnsupportedRequest), got %v", resp.Err()) - } - case <-watchCtx.Done(): - t.Fatal("watch did not cancel with compaction error within timeout") - } -} - func generateEvents(t *testing.T, client *clientv3.Client, prefix string, n int) { t.Helper() for i := 0; i < n; i++ { From 28274bda2dfc1acb9a41b81a748b249aec6a5d17 Mon Sep 17 00:00:00 2001 From: cuiweixie Date: Thu, 21 Aug 2025 17:48:33 +0800 Subject: [PATCH 0448/1068] remove unused comment Signed-off-by: cuiweixie --- server/etcdserver/server.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index b611a074e0c2..2e44d08e3335 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -209,11 +209,11 @@ type Server interface { // EtcdServer is the production implementation of the Server interface type EtcdServer struct { // inflightSnapshots holds count the number of snapshots currently inflight. - inflightSnapshots atomic.Int64 // must use atomic operations to access; keep 64-bit aligned. - appliedIndex atomic.Uint64 // must use atomic operations to access; keep 64-bit aligned. - committedIndex atomic.Uint64 // must use atomic operations to access; keep 64-bit aligned. - term atomic.Uint64 // must use atomic operations to access; keep 64-bit aligned. - lead atomic.Uint64 // must use atomic operations to access; keep 64-bit aligned. + inflightSnapshots atomic.Int64 + appliedIndex atomic.Uint64 + committedIndex atomic.Uint64 + term atomic.Uint64 + lead atomic.Uint64 consistIndex cindex.ConsistentIndexer // consistIndex is used to get/set/save consistentIndex r raftNode // uses 64-bit atomics; keep 64-bit aligned. From b5be502dd0ccc53c26400161d2a8bf9e1c74250a Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Wed, 20 Aug 2025 13:32:52 +0200 Subject: [PATCH 0449/1068] Sort the results so the tables are easier to compare Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/coverage_test.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index cc52f85606d0..804eccf71718 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -18,8 +18,10 @@ import ( "bytes" "encoding/json" "fmt" + "maps" "os" "path/filepath" + "slices" "strconv" "strings" "testing" @@ -400,6 +402,17 @@ func printableCallTable(callsByOperationName map[string]int) string { } func printableMatcherTable(cols []column, res map[row]int) string { + keys := slices.Collect(maps.Keys(res)) + slices.SortFunc(keys, func(a, b row) int { + if a.pattern != b.pattern { + return strings.Compare(a.pattern, b.pattern) + } + if a.method != b.method { + return strings.Compare(a.method, b.method) + } + return strings.Compare(a.args, b.args) + }) + buf := new(bytes.Buffer) width := 2 + len(cols) + 2 alignment := make([]tw.Align, width) @@ -425,7 +438,8 @@ func printableMatcherTable(cols []column, res map[row]int) string { } footer := make([]int, len(cols)) - for r, callCount := range res { + for _, r := range keys { + callCount := res[r] rowPrefix := make([]string, len(cols)) for i := range cols { rowPrefix[i] = string(r.args[i]) From 1745e3eb1b5c51d1f535ee121c7eae3d1e073b97 Mon Sep 17 00:00:00 2001 From: hwdef Date: Thu, 21 Aug 2025 18:32:58 +0800 Subject: [PATCH 0450/1068] CHANGELOG: update 3.7 changelog, hide global flags in etcdctl commands Signed-off-by: hwdef --- CHANGELOG/CHANGELOG-3.7.md | 1 + etcdctl/ctlv3/ctl.go | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG/CHANGELOG-3.7.md b/CHANGELOG/CHANGELOG-3.7.md index 4cd653b5f692..ef9230638ba4 100644 --- a/CHANGELOG/CHANGELOG-3.7.md +++ b/CHANGELOG/CHANGELOG-3.7.md @@ -13,3 +13,4 @@ Previous change logs can be found at [CHANGELOG-3.6](https://github.com/etcd-io/ ### etcdctl - [Organize etcdctl commands](https://github.com/etcd-io/etcd/pull/20162) to make them more concise and easier to understand. +- [Hide the global flags](https://github.com/etcd-io/etcd/pull/20493) to make the output of `etcdctl --help` looks cleaner and is consistent with kubectl. diff --git a/etcdctl/ctlv3/ctl.go b/etcdctl/ctlv3/ctl.go index 676d95547671..039485ddf84d 100644 --- a/etcdctl/ctlv3/ctl.go +++ b/etcdctl/ctlv3/ctl.go @@ -112,7 +112,7 @@ func init() { ) command.SetHelpCmdGroup(rootCmd) - hideAllPersistentFlags() + hideAllGlobalFlags() hideHelpFlag() addOptionsPrompt() } @@ -130,7 +130,7 @@ func MustStart() { } } -func hideAllPersistentFlags() { +func hideAllGlobalFlags() { rootCmd.PersistentFlags().VisitAll(func(f *pflag.Flag) { rootCmd.PersistentFlags().MarkHidden(f.Name) }) From 5d5a9bd1fe21e0cc78c5c3c46839591c6eec941f Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Fri, 15 Aug 2025 15:05:30 +0000 Subject: [PATCH 0451/1068] cache: remove early compaction check from Cache.Watch Signed-off-by: Peter Chang --- cache/cache.go | 26 +++++++++++++------------- cache/demux.go | 25 +++++++++++++++++-------- cache/watcher.go | 27 ++++++++++++++++++--------- 3 files changed, 48 insertions(+), 30 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index 040531dcece8..f8bdffc52085 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -23,6 +23,7 @@ import ( "time" pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" ) @@ -95,18 +96,6 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption op := clientv3.OpWatch(key, opts...) startRev := op.Rev() - if startRev != 0 { - if oldest := c.demux.PeekOldest(); oldest != 0 && startRev < oldest { - ch := make(chan clientv3.WatchResponse, 1) - ch <- clientv3.WatchResponse{ - Canceled: true, - CompactRevision: startRev, - } - close(ch) - return ch - } - } - pred, err := c.validateWatch(key, op) if err != nil { ch := make(chan clientv3.WatchResponse, 1) @@ -132,6 +121,13 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption return case events, ok := <-w.eventQueue: if !ok { + if w.cancelResp != nil { + select { + case <-ctx.Done(): + case <-c.internalCtx.Done(): + case responseChan <- *w.cancelResp: + } + } return } select { @@ -299,7 +295,11 @@ func (c *Cache) watchEvents(watchCh clientv3.WatchChan, applyErr <-chan error, r readyOnce.Do(func() { c.ready.Set() }) if err := resp.Err(); err != nil { c.ready.Reset() - c.demux.Purge() + if errors.Is(err, rpctypes.ErrCompacted) || resp.CompactRevision > 0 { + c.demux.Compact(resp.CompactRevision) + } else { + c.demux.Purge() + } return err } c.demux.Broadcast(resp.Events) diff --git a/cache/demux.go b/cache/demux.go index 1c22e4a4f37b..1b18ddf11d14 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -151,7 +151,7 @@ func (d *demux) Broadcast(events []*clientv3.Event) { } } -// Purge is called when etcd compaction invalidates our cached history, so clients should resubscribe. +// Purge stops all watchers and rebase history on watch errors func (d *demux) Purge() { d.mu.Lock() defer d.mu.Unlock() @@ -166,6 +166,21 @@ func (d *demux) Purge() { d.laggingWatchers = make(map[*watcher]int64) } +// Compact is called when etcd reports a compaction at compactRev to rebase history; +// it keeps provably-too-old watchers for later cancellation, stops others, and clients should resubscribe. +func (d *demux) Compact(compactRev int64) { + d.mu.Lock() + defer d.mu.Unlock() + d.history.RebaseHistory() + + for w, next := range d.activeWatchers { + if next != 0 && next <= compactRev { + delete(d.activeWatchers, w) + d.laggingWatchers[w] = next + } + } +} + func (d *demux) resyncLaggingWatchers() { d.mu.Lock() defer d.mu.Unlock() @@ -177,7 +192,7 @@ func (d *demux) resyncLaggingWatchers() { for w, nextRev := range d.laggingWatchers { if nextRev < oldestRev { - w.Stop() + w.Compact(nextRev) delete(d.laggingWatchers, w) continue } @@ -200,9 +215,3 @@ func (d *demux) resyncLaggingWatchers() { } } } - -func (d *demux) PeekOldest() int64 { - d.mu.RLock() - defer d.mu.RUnlock() - return d.history.PeekOldest() -} diff --git a/cache/watcher.go b/cache/watcher.go index 4269df3a0310..fddeab97a47a 100644 --- a/cache/watcher.go +++ b/cache/watcher.go @@ -15,24 +15,24 @@ package cache import ( - "sync/atomic" + "sync" + "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" ) // watcher holds one client’s buffered stream of events. type watcher struct { eventQueue chan []*clientv3.Event + cancelResp *clientv3.WatchResponse keyPred KeyPredicate - stopped int32 - done chan struct{} // closed together with Stop() + stopOnce sync.Once } func newWatcher(bufSize int, pred KeyPredicate) *watcher { return &watcher{ eventQueue: make(chan []*clientv3.Event, bufSize), keyPred: pred, - done: make(chan struct{}), } } @@ -59,12 +59,21 @@ func (w *watcher) enqueueEvent(eventBatch []*clientv3.Event) bool { } } +func (w *watcher) Compact(compactRev int64) { + resp := &clientv3.WatchResponse{ + Canceled: true, + CompactRevision: compactRev, + CancelReason: rpctypes.ErrCompacted.Error(), + } + w.stopOnce.Do(func() { + w.cancelResp = resp + close(w.eventQueue) + }) +} + // Stop closes the event channel atomically. func (w *watcher) Stop() { - if atomic.CompareAndSwapInt32(&w.stopped, 0, 1) { + w.stopOnce.Do(func() { close(w.eventQueue) - close(w.done) - } + }) } - -func (w *watcher) Done() <-chan struct{} { return w.done } From 6d77ecc52c0131264df18665a0ca0f71003b0500 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Mon, 18 Aug 2025 14:39:18 +0200 Subject: [PATCH 0452/1068] Move trace analysis pattern matching to a new file Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/coverage_test.go | 24 +-- tests/robustness/coverage/key_pattern_test.go | 177 ++++++++++++++++++ 2 files changed, 178 insertions(+), 23 deletions(-) create mode 100644 tests/robustness/coverage/key_pattern_test.go diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index 804eccf71718..c928717336e2 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -315,29 +315,7 @@ func extractPattern(span *tracev1.Span, key string) (string, bool) { if !found { return "", false } - if k == "/registry/health" || k == "compact_rev_key" { - return k, true - } - if !strings.HasPrefix(k, "/registry") { - return k, false - } - suffix := "" - if strings.HasSuffix(k, "/") { - suffix = "/" - } - switch strings.Count(strings.TrimRight(k, "/"), "/") { - case 1: - return "/registry" + suffix, true - case 2: - return "/registry/{resource}" + suffix, true - case 3: - return "/registry/{resource}/{namespace}" + suffix, true - case 4: - return "/registry/{resource}/{namespace}/{name}" + suffix, true - case 5: - return "/registry/{api-group}/{resource}/{namespace}/{name}" + suffix, true - } - return k, false + return pattern(k) } func columnsToArgs(span *tracev1.Span, cols []column) string { diff --git a/tests/robustness/coverage/key_pattern_test.go b/tests/robustness/coverage/key_pattern_test.go new file mode 100644 index 000000000000..0ab8fd0e336a --- /dev/null +++ b/tests/robustness/coverage/key_pattern_test.go @@ -0,0 +1,177 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package coverage_test + +import ( + "strings" + "testing" +) + +func pattern(key string) (string, bool) { + if key == "/registry/health" || key == "compact_rev_key" { + return key, true + } + key, valid := strings.CutPrefix(key, "/registry") + if !valid { + return key, false + } + slash := "" + if strings.HasSuffix(key, "/") { + slash = "/" + } + parts := strings.Split(strings.Trim(key, "/"), "/") + if len(parts[0]) == 0 { + return key, false + } + + apiResource, shift := resourceOrCRD(parts[0]) + parts = parts[shift:] + + switch len(parts) { + case 0: + // Listing all resources. + return "/registry/" + apiResource + slash, true + case 1: + if slash == "" { + // Get on a non-namespaced resource. + return "/registry/" + apiResource + "/{name}", true + } + // Listing all resources in a namespace. + return "/registry/" + apiResource + "/{namespace}" + slash, true + case 2: + if slash == "" { + // Get on a namespaced resource. + return "/registry/" + apiResource + "/{namespace}/{name}", true + } + } + + return key, false +} + +func resourceOrCRD(s string) (string, int) { + if strings.Contains(s, ".") { + // Group name from the Custom Resource Definition. + // Names without dots are technically valid DNS name, but against best practices: + // https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names + // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#customresourcedefinitionspec-v1-apiextensions-k8s-io + return "{api-group}/{resource}", 2 + } + switch s { + case "services": + // services have subresources specs and endpoints. + return "services/{subresource}", 2 + case "masterleases": + // masterleases are not a regular resource. + return "masterleases", 1 + case "events": + // events have watch cache disabled by default and use Etcd leases. + return "events", 1 + } + return "{resource}", 1 +} + +func TestPatternValid(t *testing.T) { + for _, tc := range []struct { + key string + want string + }{ + { + key: "compact_rev_key", + want: "compact_rev_key", + }, + { + key: "/registry/health", + want: "/registry/health", + }, + { + key: "/registry/resource/namespace/object", + want: "/registry/{resource}/{namespace}/{name}", + }, + { + key: "/registry/resource/namespace_list/", + want: "/registry/{resource}/{namespace}/", + }, + { + key: "/registry/services/specs/namespace/object", + want: "/registry/services/{subresource}/{namespace}/{name}", + }, + { + key: "/registry/services/endpoints", + want: "/registry/services/{subresource}", + }, + { + key: "/registry/services/specs/namespace_list/", + want: "/registry/services/{subresource}/{namespace}/", + }, + { + key: "/registry/resource/object_get", + want: "/registry/{resource}/{name}", + }, + { + key: "/registry/resource_rev", + want: "/registry/{resource}", + }, + { + key: "/registry/resource_list/", + want: "/registry/{resource}/", + }, + { + key: "/registry/crd.io/resource/namespace/object_get", + want: "/registry/{api-group}/{resource}/{namespace}/{name}", + }, + { + key: "/registry/crd.io/resource/namespace_list/", + want: "/registry/{api-group}/{resource}/{namespace}/", + }, + { + key: "/registry/crd.io/resource/object_get", + want: "/registry/{api-group}/{resource}/{name}", + }, + { + key: "/registry/crd.io/resource_rev", + want: "/registry/{api-group}/{resource}", + }, + { + key: "/registry/crd.io/resource_list/", + want: "/registry/{api-group}/{resource}/", + }, + } { + name := strings.Trim(strings.ReplaceAll(tc.key, "/", "_"), "_") + t.Run(name, func(t *testing.T) { + got, valid := pattern(tc.key) + if !valid { + t.Fatalf("key=%q, want=valid, got=invalid", tc.key) + } + if got != tc.want { + t.Fatalf("key=%q, want=%s, got=%s", tc.key, tc.want, got) + } + }) + } +} + +func TestPatternInvalid(t *testing.T) { + for _, tc := range []string{ + "/other-registry", + "/registry//", + } { + name := strings.Trim(strings.ReplaceAll(tc, "/", "_"), "_") + t.Run(name, func(t *testing.T) { + got, valid := pattern(tc) + if valid { + t.Fatalf("key=%q, want=invalid, got=valid, pattern=%q", tc, got) + } + }) + } +} From dae0f7bc28813a0f44557d2c596b5117d1a2f4d5 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Thu, 21 Aug 2025 15:52:26 +0100 Subject: [PATCH 0453/1068] Simplify the implementation of ByteOrder Signed-off-by: Benjamin Wang --- bill-of-materials.json | 2 +- pkg/cpuutil/endian.go | 19 ++++++------------- pkg/go.mod | 2 +- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index 8991e0c877f9..115c00671f76 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -706,7 +706,7 @@ ] }, { - "project": "golang.org/x/sys/unix", + "project": "golang.org/x/sys", "licenses": [ { "type": "BSD 3-clause \"New\" or \"Revised\" License", diff --git a/pkg/cpuutil/endian.go b/pkg/cpuutil/endian.go index d654b747664d..ab54d120c772 100644 --- a/pkg/cpuutil/endian.go +++ b/pkg/cpuutil/endian.go @@ -16,21 +16,14 @@ package cpuutil import ( "encoding/binary" - "unsafe" -) - -const intWidth = int(unsafe.Sizeof(0)) -var byteOrder binary.ByteOrder + "golang.org/x/sys/cpu" +) // ByteOrder returns the byte order for the CPU's native endianness. -func ByteOrder() binary.ByteOrder { return byteOrder } - -func init() { - i := 0x1 - if v := (*[intWidth]byte)(unsafe.Pointer(&i)); v[0] == 0 { - byteOrder = binary.BigEndian - } else { - byteOrder = binary.LittleEndian +func ByteOrder() binary.ByteOrder { + if cpu.IsBigEndian { + return binary.BigEndian } + return binary.LittleEndian } diff --git a/pkg/go.mod b/pkg/go.mod index 45bbdd0e5f25..5dd71a83c431 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -13,6 +13,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.37.0 go.uber.org/zap v1.27.0 + golang.org/x/sys v0.35.0 google.golang.org/grpc v1.74.2 ) @@ -25,7 +26,6 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.43.0 // indirect - golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/protobuf v1.36.7 // indirect From 207e00afad7c33e62c1c4b9ba7def49e81d129f8 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Thu, 21 Aug 2025 11:10:00 +0200 Subject: [PATCH 0454/1068] Move trace analysis table sorting to a new file Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/coverage_test.go | 29 +++------- tests/robustness/coverage/sort_test.go | 66 ++++++++++++++++++++++ 2 files changed, 75 insertions(+), 20 deletions(-) create mode 100644 tests/robustness/coverage/sort_test.go diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index c928717336e2..5012591204c0 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -18,10 +18,8 @@ import ( "bytes" "encoding/json" "fmt" - "maps" "os" "path/filepath" - "slices" "strconv" "strings" "testing" @@ -57,8 +55,8 @@ type refOp struct { keyAttrName string } -type row struct { - method, pattern, args string +type Row struct { + Method, Pattern, Args string } const notMatched byte = ' ' @@ -220,7 +218,7 @@ func testInterfaceUse(t *testing.T, filename string) { // new call pattern is found. tracesWithNoMethod := make(map[string]bool) - callCounts := make(map[row]int) + callCounts := make(map[Row]int) for _, span := range callsByOperationName[op] { args := columnsToArgs(span, td.args) @@ -236,7 +234,7 @@ func testInterfaceUse(t *testing.T, filename string) { tracesWithNoMethod[args] = true } - callCounts[row{method, pattern, args}]++ + callCounts[Row{method, pattern, args}]++ } t.Logf("\n%s", printableMatcherTable(td.args, callCounts)) @@ -379,17 +377,8 @@ func printableCallTable(callsByOperationName map[string]int) string { return buf.String() } -func printableMatcherTable(cols []column, res map[row]int) string { - keys := slices.Collect(maps.Keys(res)) - slices.SortFunc(keys, func(a, b row) int { - if a.pattern != b.pattern { - return strings.Compare(a.pattern, b.pattern) - } - if a.method != b.method { - return strings.Compare(a.method, b.method) - } - return strings.Compare(a.args, b.args) - }) +func printableMatcherTable(cols []column, res map[Row]int) string { + keys := sortPatternTable(res) buf := new(bytes.Buffer) width := 2 + len(cols) + 2 @@ -420,14 +409,14 @@ func printableMatcherTable(cols []column, res map[row]int) string { callCount := res[r] rowPrefix := make([]string, len(cols)) for i := range cols { - rowPrefix[i] = string(r.args[i]) - if r.args[i] != notMatched { + rowPrefix[i] = string(r.Args[i]) + if r.Args[i] != notMatched { footer[i] += callCount } } table.Append(append( - []string{r.method, r.pattern}, + []string{r.Method, r.Pattern}, append(rowPrefix, strconv.Itoa(callCount), fmt.Sprintf("%.2f%%", float64(callCount*100)/float64(totalCalls)), diff --git a/tests/robustness/coverage/sort_test.go b/tests/robustness/coverage/sort_test.go new file mode 100644 index 000000000000..7c65fba90dc2 --- /dev/null +++ b/tests/robustness/coverage/sort_test.go @@ -0,0 +1,66 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package coverage_test + +import ( + "maps" + "slices" + "strings" + "testing" + + "github.com/google/go-cmp/cmp" +) + +func sortPatternTable(res map[Row]int) []Row { + keys := slices.Collect(maps.Keys(res)) + slices.SortFunc(keys, func(a, b Row) int { + if a.Pattern != b.Pattern { + return strings.Compare(a.Pattern, b.Pattern) + } + if a.Method != b.Method { + return strings.Compare(a.Method, b.Method) + } + return strings.Compare(a.Args, b.Args) + }) + return keys +} + +func TestSortPatternTable(t *testing.T) { + want := []Row{ + {Pattern: "/registry/events/", Method: "", Args: ""}, + {Pattern: "/registry/events/{namespace}/", Method: "List", Args: ""}, + {Pattern: "/registry/events/{namespace}/{name}", Method: "Get", Args: ""}, + {Pattern: "/registry/health", Method: "Healthcheck", Args: ""}, + {Pattern: "/registry/masterleases/", Method: "List", Args: ""}, + {Pattern: "/registry/masterleases/{name}", Method: "Get", Args: ""}, + {Pattern: "/registry/{api-group}/{resource}/", Method: "List", Args: "XX"}, + {Pattern: "/registry/{api-group}/{resource}/", Method: "List", Args: "XXX"}, + {Pattern: "/registry/{api-group}/{resource}/{name}", Method: "Get", Args: ""}, + {Pattern: "/registry/{resource}", Method: "Get", Args: ""}, + {Pattern: "/registry/{resource}/", Method: "List", Args: ""}, + {Pattern: "/registry/{resource}/{namespace}/{name}", Method: "Get", Args: ""}, + {Pattern: "/registry/{resource}/{name}", Method: "Get", Args: ""}, + {Pattern: "compact_rev_key", Method: "Compaction", Args: ""}, + } + res := make(map[Row]int, len(want)) + for _, r := range want { + res[r] = 0 + } + got := sortPatternTable(res) + if diff := cmp.Diff(want, got); diff != "" { + t.Logf("\n+%#v", got) + t.Errorf("Sort mismatch (-want +got):\n%s", diff) + } +} From 8d33c10c2c5a453beac1e3be0e7dc6ba28a1bc12 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 22 Aug 2025 08:55:58 +0000 Subject: [PATCH 0455/1068] dependency: bump github.com/google/addlicense from 1.1.1 to 1.2.0 Reference: - https://github.com/etcd-io/etcd/pull/20509 Signed-off-by: Chun-Hung Tseng --- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 9d04f13ff215..306ea6456593 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -11,7 +11,7 @@ require ( github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint v1.64.8 - github.com/google/addlicense v1.1.1 + github.com/google/addlicense v1.2.0 github.com/google/yamlfmt v0.17.2 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 go.etcd.io/gofail v0.2.0 diff --git a/tools/mod/go.sum b/tools/mod/go.sum index ca5623e11de8..046fcb4eec8b 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -184,8 +184,8 @@ github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2 github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs= github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ= -github.com/google/addlicense v1.1.1 h1:jpVf9qPbU8rz5MxKo7d+RMcNHkqxi4YJi/laauX4aAE= -github.com/google/addlicense v1.1.1/go.mod h1:Sm/DHu7Jk+T5miFHHehdIjbi4M5+dJDRS3Cq0rncIxA= +github.com/google/addlicense v1.2.0 h1:W+DP4A639JGkcwBGMDvjSurZHvaq2FN0pP7se9czsKA= +github.com/google/addlicense v1.2.0/go.mod h1:Sm/DHu7Jk+T5miFHHehdIjbi4M5+dJDRS3Cq0rncIxA= github.com/google/certificate-transparency-go v1.1.8 h1:LGYKkgZF7satzgTak9R4yzfJXEeYVAjV6/EAEJOf1to= github.com/google/certificate-transparency-go v1.1.8/go.mod h1:bV/o8r0TBKRf1X//iiiSgWrvII4d7/8OiA+3vG26gI8= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= From b1baa37306d56c876d5fe89d4ed91e84a8609993 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Fri, 22 Aug 2025 13:21:06 +0000 Subject: [PATCH 0456/1068] cache: change watcher.eventQueue to respCh Signed-off-by: Peter Chang --- cache/cache.go | 14 ++++++++++---- cache/demux_test.go | 12 +++++++++--- cache/watcher.go | 12 ++++++------ 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index f8bdffc52085..567cdbf57526 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -119,7 +119,7 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption return case <-c.internalCtx.Done(): return - case events, ok := <-w.eventQueue: + case resp, ok := <-w.respCh: if !ok { if w.cancelResp != nil { select { @@ -135,7 +135,7 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption return case <-c.internalCtx.Done(): return - case responseChan <- clientv3.WatchResponse{Events: events}: + case responseChan <- resp: } } } @@ -272,11 +272,17 @@ func (c *Cache) applyStorage(storeW *watcher) error { select { case <-c.internalCtx.Done(): return nil - case events, ok := <-storeW.eventQueue: + case resp, ok := <-storeW.respCh: if !ok { return nil } - if err := c.store.Apply(events); err != nil { + if resp.Canceled { + return nil + } + if len(resp.Events) == 0 { + continue + } + if err := c.store.Apply(resp.Events); err != nil { return err } } diff --git a/cache/demux_test.go b/cache/demux_test.go index abfa6219a063..2bf45eff26ff 100644 --- a/cache/demux_test.go +++ b/cache/demux_test.go @@ -154,9 +154,15 @@ func readBatches(t *testing.T, w *watcher, n int) (revs []int64, sizes []int) { timeout := time.After(2 * time.Second) for len(revs) < n { select { - case batch := <-w.eventQueue: - revs = append(revs, batch[0].Kv.ModRevision) - sizes = append(sizes, len(batch)) + case resp := <-w.respCh: + if resp.Canceled { + t.Fatalf("unexpected canceled response in test: %v", resp.CancelReason) + } + if len(resp.Events) == 0 { + continue + } + revs = append(revs, resp.Events[0].Kv.ModRevision) + sizes = append(sizes, len(resp.Events)) case <-timeout: t.Fatalf("timed out waiting for %d batches; got %d", n, len(revs)) } diff --git a/cache/watcher.go b/cache/watcher.go index fddeab97a47a..031a02532532 100644 --- a/cache/watcher.go +++ b/cache/watcher.go @@ -23,7 +23,7 @@ import ( // watcher holds one client’s buffered stream of events. type watcher struct { - eventQueue chan []*clientv3.Event + respCh chan clientv3.WatchResponse cancelResp *clientv3.WatchResponse keyPred KeyPredicate stopOnce sync.Once @@ -31,8 +31,8 @@ type watcher struct { func newWatcher(bufSize int, pred KeyPredicate) *watcher { return &watcher{ - eventQueue: make(chan []*clientv3.Event, bufSize), - keyPred: pred, + respCh: make(chan clientv3.WatchResponse, bufSize), + keyPred: pred, } } @@ -52,7 +52,7 @@ func (w *watcher) enqueueEvent(eventBatch []*clientv3.Event) bool { eventBatch = filtered } select { - case w.eventQueue <- eventBatch: + case w.respCh <- clientv3.WatchResponse{Events: eventBatch}: return true default: return false @@ -67,13 +67,13 @@ func (w *watcher) Compact(compactRev int64) { } w.stopOnce.Do(func() { w.cancelResp = resp - close(w.eventQueue) + close(w.respCh) }) } // Stop closes the event channel atomically. func (w *watcher) Stop() { w.stopOnce.Do(func() { - close(w.eventQueue) + close(w.respCh) }) } From fe3b6c3f557c702a67d7c7eb5402bef582ddb6b3 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Mon, 25 Aug 2025 10:37:35 +0200 Subject: [PATCH 0457/1068] Add patching instructions to README This is necessary to correctly attribute gRPC calls to Etcd-Kubernetes contract interface. Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/README.md | 30 ++++- ...ry-trace-event-when-passing-through-.patch | 81 ++++++++++++ ...02-Add-kubernetesEtcdContractTracker.patch | 121 ++++++++++++++++++ ...o-Watch-to-ensure-Spans-are-exported.patch | 26 ++++ .../kubernetes/0004-Configure-cmd-tests.patch | 64 +++++++++ 5 files changed, 315 insertions(+), 7 deletions(-) create mode 100644 tests/robustness/coverage/patches/kubernetes/0001-Add-Open-Telemetry-trace-event-when-passing-through-.patch create mode 100644 tests/robustness/coverage/patches/kubernetes/0002-Add-kubernetesEtcdContractTracker.patch create mode 100644 tests/robustness/coverage/patches/kubernetes/0003-Add-1m-timeout-to-Watch-to-ensure-Spans-are-exported.patch create mode 100644 tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch diff --git a/tests/robustness/coverage/README.md b/tests/robustness/coverage/README.md index 04adcf0ee396..1f0e0d84e0f8 100644 --- a/tests/robustness/coverage/README.md +++ b/tests/robustness/coverage/README.md @@ -14,10 +14,26 @@ This information can be used to track the coverage of k8s-etcd contract. At first we will manually set up the cluster, run e2e tests, download traces and then execute the test. +1. Customize and set the environment variables used by the code snippets below: + +```shell +# Used for patches, building kind nodes, and running e2e tests. +export KUBERNETES_REPO="$(go env GOPATH)/src/k8s.io/kubernetes" +# Used when creating kind cluster and running e2e tests. +export KUBECONFIG="${KUBERNETES_REPO}/kind-with-tracing-config" +``` + 1. Set up [KIND cluster](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) with tracing exporting to [Jaeger](https://www.jaegertracing.io/) + 1. Patch and build kubernetes images + + ```shell + git -C "$KUBERNETES_REPO" apply --recount ${PWD}/patches/kubernetes/* + kind build node-image + ``` + 1. Create docker network: ```shell @@ -39,10 +55,12 @@ tracing exporting to [Jaeger](https://www.jaegertracing.io/) jaegertracing/jaeger:2.6.0 --set=extensions.jaeger_storage.backends.some_storage.memory.max_traces=20000000 ``` - 1. Run `etcd`: + 1. Run `etcd` (in root of `etcd` repository): ```shell - etcd --watch-progress-notify-interval=5s \ + make build + cp bin/etcd "${KUBERNETES_REPO}/third_party/etcd/etcd" + bin/etcd --watch-progress-notify-interval=5s \ --listen-client-urls http://192.168.32.1:2379 \ --advertise-client-urls http://192.168.32.1:2379 \ --enable-distributed-tracing \ @@ -55,22 +73,20 @@ tracing exporting to [Jaeger](https://www.jaegertracing.io/) cluster](https://kind.sigs.k8s.io/docs/user/quick-start/#installation): ```shell - export KUBECONFIG="$(pwd)/kind-with-tracing-config" - export KIND_EXPERIMENTAL_DOCKER_NETWORK=kind-with-extrernal-etcd - kind create cluster --config kind-with-tracing.yaml --name kind-with-external-etcd + export KIND_EXPERIMENTAL_DOCKER_NETWORK=kind-with-external-etcd + kind create cluster --config kind-with-tracing.yaml --name kind-with-external-etcd --image kindest/node:latest ``` 1. Exercise Kubernetes API. For example, build and run Conformance tests from Kubernetes repository (this usually takes 30-40m or will time out after 1 hour): ```shell -export KUBECONFIG="$(pwd)/kind-with-tracing-config" -kind export kubeconfig --name kind-with-external-etcd make WHAT="test/e2e/e2e.test" ./_output/bin/e2e.test \ -context kind-kind-with-external-etcd \ -ginkgo.focus="\[sig-apps\].*Conformance" \ -num-nodes 2 +build/run.sh make test-cmd ``` 1. Download traces and put them into `tests/robustness/coverage/testdata` diff --git a/tests/robustness/coverage/patches/kubernetes/0001-Add-Open-Telemetry-trace-event-when-passing-through-.patch b/tests/robustness/coverage/patches/kubernetes/0001-Add-Open-Telemetry-trace-event-when-passing-through-.patch new file mode 100644 index 000000000000..e880453951f9 --- /dev/null +++ b/tests/robustness/coverage/patches/kubernetes/0001-Add-Open-Telemetry-trace-event-when-passing-through-.patch @@ -0,0 +1,81 @@ +From 135c75d2689318dd47b7778b8f87902e75178d52 Mon Sep 17 00:00:00 2001 +From: Aleksander Mistewicz +Date: Wed, 13 Aug 2025 13:45:20 +0200 +Subject: [PATCH 1/4] Add Open Telemetry trace event when passing through + contract interface + +Signed-off-by: Aleksander Mistewicz +--- + .../etcd/client/v3/kubernetes/client.go | 21 +++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/vendor/go.etcd.io/etcd/client/v3/kubernetes/client.go b/vendor/go.etcd.io/etcd/client/v3/kubernetes/client.go +index 11f2a456447..0efab3711d7 100644 +--- a/vendor/go.etcd.io/etcd/client/v3/kubernetes/client.go ++++ b/vendor/go.etcd.io/etcd/client/v3/kubernetes/client.go +@@ -21,6 +21,8 @@ import ( + pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/api/v3/mvccpb" + clientv3 "go.etcd.io/etcd/client/v3" ++ "go.opentelemetry.io/otel/attribute" ++ "go.opentelemetry.io/otel/trace" + ) + + // New creates Client from config. +@@ -45,6 +47,10 @@ type Client struct { + var _ Interface = (*Client)(nil) + + func (k Client) Get(ctx context.Context, key string, opts GetOptions) (resp GetResponse, err error) { ++ trace.SpanFromContext(ctx).AddEvent("contract.Get", trace.WithAttributes( ++ attribute.String("key", key), ++ attribute.Int64("rev", opts.Revision), ++ )) + rangeResp, err := k.KV.Get(ctx, key, clientv3.WithRev(opts.Revision), clientv3.WithLimit(1)) + if err != nil { + return resp, err +@@ -57,6 +63,10 @@ func (k Client) Get(ctx context.Context, key string, opts GetOptions) (resp GetR + } + + func (k Client) List(ctx context.Context, prefix string, opts ListOptions) (resp ListResponse, err error) { ++ trace.SpanFromContext(ctx).AddEvent("contract.List", trace.WithAttributes( ++ attribute.String("prefix", prefix), ++ attribute.Int64("rev", opts.Revision), ++ )) + rangeStart := prefix + if opts.Continue != "" { + rangeStart = opts.Continue +@@ -73,6 +83,9 @@ func (k Client) List(ctx context.Context, prefix string, opts ListOptions) (resp + } + + func (k Client) Count(ctx context.Context, prefix string, _ CountOptions) (int64, error) { ++ trace.SpanFromContext(ctx).AddEvent("contract.Count", trace.WithAttributes( ++ attribute.String("prefix", prefix), ++ )) + resp, err := k.KV.Get(ctx, prefix, clientv3.WithPrefix(), clientv3.WithCountOnly()) + if err != nil { + return 0, err +@@ -81,6 +94,10 @@ func (k Client) Count(ctx context.Context, prefix string, _ CountOptions) (int64 + } + + func (k Client) OptimisticPut(ctx context.Context, key string, value []byte, expectedRevision int64, opts PutOptions) (resp PutResponse, err error) { ++ trace.SpanFromContext(ctx).AddEvent("contract.OptimisticPut", trace.WithAttributes( ++ attribute.String("key", key), ++ attribute.Int64("expected_rev", expectedRevision), ++ )) + txn := k.KV.Txn(ctx).If( + clientv3.Compare(clientv3.ModRevision(key), "=", expectedRevision), + ).Then( +@@ -107,6 +124,10 @@ func (k Client) OptimisticPut(ctx context.Context, key string, value []byte, exp + } + + func (k Client) OptimisticDelete(ctx context.Context, key string, expectedRevision int64, opts DeleteOptions) (resp DeleteResponse, err error) { ++ trace.SpanFromContext(ctx).AddEvent("contract.OptimisticDelete", trace.WithAttributes( ++ attribute.String("key", key), ++ attribute.Int64("expected_rev", expectedRevision), ++ )) + txn := k.KV.Txn(ctx).If( + clientv3.Compare(clientv3.ModRevision(key), "=", expectedRevision), + ).Then( +-- +2.51.0.rc2.233.g662b1ed5c5-goog + diff --git a/tests/robustness/coverage/patches/kubernetes/0002-Add-kubernetesEtcdContractTracker.patch b/tests/robustness/coverage/patches/kubernetes/0002-Add-kubernetesEtcdContractTracker.patch new file mode 100644 index 000000000000..461f7ebdeca9 --- /dev/null +++ b/tests/robustness/coverage/patches/kubernetes/0002-Add-kubernetesEtcdContractTracker.patch @@ -0,0 +1,121 @@ +From 84706912128912a37bfaf47ecf550463fadb805e Mon Sep 17 00:00:00 2001 +From: Aleksander Mistewicz +Date: Mon, 18 Aug 2025 12:32:16 +0200 +Subject: [PATCH 2/4] Add kubernetesEtcdContractTracker + +This decorator will make it easier to ensure that all calls to the +underlying storage that go through the contract interface produce +spans. TracerProvider needs to be passed to the contract tracker to +ensure that all spans will be correctly exported. + +Signed-off-by: Aleksander Mistewicz +--- + .../etcd3/kubernetes_contract_tracker.go | 73 +++++++++++++++++++ + .../storage/storagebackend/factory/etcd3.go | 10 ++- + 2 files changed, 82 insertions(+), 1 deletion(-) + create mode 100644 staging/src/k8s.io/apiserver/pkg/storage/etcd3/kubernetes_contract_tracker.go + +diff --git a/staging/src/k8s.io/apiserver/pkg/storage/etcd3/kubernetes_contract_tracker.go b/staging/src/k8s.io/apiserver/pkg/storage/etcd3/kubernetes_contract_tracker.go +new file mode 100644 +index 00000000000..c16eecb20fa +--- /dev/null ++++ b/staging/src/k8s.io/apiserver/pkg/storage/etcd3/kubernetes_contract_tracker.go +@@ -0,0 +1,73 @@ ++/* ++Copyright 2025 The Kubernetes Authors. ++ ++Licensed under the Apache License, Version 2.0 (the "License"); ++you may not use this file except in compliance with the License. ++You may obtain a copy of the License at ++ ++ http://www.apache.org/licenses/LICENSE-2.0 ++ ++Unless required by applicable law or agreed to in writing, software ++distributed under the License is distributed on an "AS IS" BASIS, ++WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++See the License for the specific language governing permissions and ++limitations under the License. ++*/ ++ ++package etcd3 ++ ++import ( ++ "context" ++ ++ "go.etcd.io/etcd/client/v3/kubernetes" ++ "go.opentelemetry.io/otel/attribute" ++ "go.opentelemetry.io/otel/trace" ++) ++ ++const instrumentationScope = "k8s.io/apiserver/pkg/storage/etcd3" ++ ++func NewKubernetesEtcdContractTracker(delegate kubernetes.Interface, tp trace.TracerProvider) kubernetes.Interface { ++ return &kubernetesEtcdContractTracker{Interface: delegate, tracer: tp.Tracer(instrumentationScope)} ++} ++ ++type kubernetesEtcdContractTracker struct { ++ kubernetes.Interface ++ ++ tracer trace.Tracer ++} ++ ++func (k *kubernetesEtcdContractTracker) Get(ctx context.Context, key string, opts kubernetes.GetOptions) (kubernetes.GetResponse, error) { ++ ctx, span := k.tracer.Start(ctx, "Get kubernetesEtcdContract", ++ trace.WithAttributes(attribute.String("key", key), attribute.Int("rev", int(opts.Revision)))) ++ defer span.End() ++ return k.Interface.Get(ctx, key, opts) ++} ++ ++func (k *kubernetesEtcdContractTracker) List(ctx context.Context, prefix string, opts kubernetes.ListOptions) (kubernetes.ListResponse, error) { ++ ctx, span := k.tracer.Start(ctx, "List kubernetesEtcdContract", ++ trace.WithAttributes(attribute.String("key", prefix), attribute.Int("rev", int(opts.Revision)), attribute.Int("limit", int(opts.Limit)))) ++ defer span.End() ++ return k.Interface.List(ctx, prefix, opts) ++} ++ ++func (k *kubernetesEtcdContractTracker) Count(ctx context.Context, prefix string, opts kubernetes.CountOptions) (int64, error) { ++ ctx, span := k.tracer.Start(ctx, "Count kubernetesEtcdContract", ++ trace.WithNewRoot(), // Count is called periodically from the same context, so it would show up as a single trace otherwise ++ trace.WithAttributes(attribute.String("key", prefix))) ++ defer span.End() ++ return k.Interface.Count(ctx, prefix, opts) ++} ++ ++func (k *kubernetesEtcdContractTracker) OptimisticPut(ctx context.Context, key string, value []byte, expectedRevision int64, opts kubernetes.PutOptions) (kubernetes.PutResponse, error) { ++ ctx, span := k.tracer.Start(ctx, "OptimisticPut kubernetesEtcdContract", ++ trace.WithAttributes(attribute.String("key", key), attribute.Int("rev", int(expectedRevision)), attribute.Int("lease", int(opts.LeaseID)), attribute.Bool("get_on_failure", opts.GetOnFailure))) ++ defer span.End() ++ return k.Interface.OptimisticPut(ctx, key, value, expectedRevision, opts) ++} ++ ++func (k *kubernetesEtcdContractTracker) OptimisticDelete(ctx context.Context, key string, expectedRevision int64, opts kubernetes.DeleteOptions) (kubernetes.DeleteResponse, error) { ++ ctx, span := k.tracer.Start(ctx, "OptimisticDelete kubernetesEtcdContract", ++ trace.WithAttributes(attribute.String("key", key), attribute.Int("rev", int(expectedRevision)), attribute.Bool("get_on_failure", opts.GetOnFailure))) ++ defer span.End() ++ return k.Interface.OptimisticDelete(ctx, key, expectedRevision, opts) ++} +diff --git a/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go b/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go +index c8ee0a12887..8f7f19d78d5 100644 +--- a/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go ++++ b/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go +@@ -351,8 +351,16 @@ var newETCD3Client = func(c storagebackend.TransportConfig) (*kubernetes.Client, + TLS: tlsConfig, + Logger: etcd3ClientLogger, + } ++ client, err := kubernetes.New(cfg) ++ if err != nil { ++ return nil, err ++ } ++ if c.TracerProvider != nil { ++ // Decorate the Kubernetes instance so all events added later will belong to short-lived Spans. ++ client.Kubernetes = etcd3.NewKubernetesEtcdContractTracker(client, c.TracerProvider) ++ } + +- return kubernetes.New(cfg) ++ return client, nil + } + + type runningCompactor struct { +-- +2.51.0.rc2.233.g662b1ed5c5-goog + diff --git a/tests/robustness/coverage/patches/kubernetes/0003-Add-1m-timeout-to-Watch-to-ensure-Spans-are-exported.patch b/tests/robustness/coverage/patches/kubernetes/0003-Add-1m-timeout-to-Watch-to-ensure-Spans-are-exported.patch new file mode 100644 index 000000000000..30a8e4c79aa7 --- /dev/null +++ b/tests/robustness/coverage/patches/kubernetes/0003-Add-1m-timeout-to-Watch-to-ensure-Spans-are-exported.patch @@ -0,0 +1,26 @@ +From 2a848f904aee8cff04d44fd14d2c17a2802f972b Mon Sep 17 00:00:00 2001 +From: Aleksander Mistewicz +Date: Fri, 22 Aug 2025 14:18:07 +0200 +Subject: [PATCH 3/4] Add 1m timeout to Watch to ensure Spans are exported + +Signed-off-by: Aleksander Mistewicz +--- + vendor/go.etcd.io/etcd/client/v3/watch.go | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/vendor/go.etcd.io/etcd/client/v3/watch.go b/vendor/go.etcd.io/etcd/client/v3/watch.go +index a46f98b8e28..ac820cabbb1 100644 +--- a/vendor/go.etcd.io/etcd/client/v3/watch.go ++++ b/vendor/go.etcd.io/etcd/client/v3/watch.go +@@ -273,7 +273,7 @@ func (vc *valCtx) Done() <-chan struct{} { return valCtxCh } + func (vc *valCtx) Err() error { return nil } + + func (w *watcher) newWatcherGRPCStream(inctx context.Context) *watchGRPCStream { +- ctx, cancel := context.WithCancel(&valCtx{inctx}) ++ ctx, cancel := context.WithTimeout(&valCtx{inctx}, time.Minute) + wgs := &watchGRPCStream{ + owner: w, + remote: w.remote, +-- +2.51.0.rc2.233.g662b1ed5c5-goog + diff --git a/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch b/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch new file mode 100644 index 000000000000..4b840033d414 --- /dev/null +++ b/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch @@ -0,0 +1,64 @@ +From 1a689e5bc18757ec1d9127b551585596cee5e679 Mon Sep 17 00:00:00 2001 +From: Aleksander Mistewicz +Date: Mon, 4 Aug 2025 15:56:48 +0200 +Subject: [PATCH 4/4] Configure cmd tests + +--- + hack/lib/etcd.sh | 6 ++++-- + hack/make-rules/test-cmd.sh | 9 +++++++++ + 2 files changed, 13 insertions(+), 2 deletions(-) + +diff --git a/hack/lib/etcd.sh b/hack/lib/etcd.sh +index c6fc45a5fab..1f4fad6774d 100755 +--- a/hack/lib/etcd.sh ++++ b/hack/lib/etcd.sh +@@ -17,6 +17,8 @@ + # A set of helpers for starting/running etcd for tests + + ETCD_VERSION=${ETCD_VERSION:-3.6.4} ++export PATH="${PATH}:/go/src/k8s.io/kubernetes/third_party/etcd" ++ + ETCD_HOST=${ETCD_HOST:-127.0.0.1} + ETCD_PORT=${ETCD_PORT:-2379} + # This is intentionally not called ETCD_LOG_LEVEL: +@@ -84,8 +86,8 @@ kube::etcd::start() { + else + ETCD_LOGFILE=${ETCD_LOGFILE:-"/dev/null"} + fi +- kube::log::info "etcd --advertise-client-urls ${KUBE_INTEGRATION_ETCD_URL} --data-dir ${ETCD_DIR} --listen-client-urls http://${ETCD_HOST}:${ETCD_PORT} --log-level=${ETCD_LOGLEVEL} 2> \"${ETCD_LOGFILE}\" >/dev/null" +- etcd --advertise-client-urls "${KUBE_INTEGRATION_ETCD_URL}" --data-dir "${ETCD_DIR}" --listen-client-urls "${KUBE_INTEGRATION_ETCD_URL}" --log-level="${ETCD_LOGLEVEL}" 2> "${ETCD_LOGFILE}" >/dev/null & ++ kube::log::info "etcd --advertise-client-urls ${KUBE_INTEGRATION_ETCD_URL} --data-dir ${ETCD_DIR} --listen-client-urls http://${ETCD_HOST}:${ETCD_PORT} --log-level=${ETCD_LOGLEVEL} --enable-distributed-tracing --distributed-tracing-address=\"0.0.0.0:4317\" --distributed-tracing-service-name=\"etcd\" --distributed-tracing-sampling-rate=1000000 2> \"${ETCD_LOGFILE}\" >/dev/null" ++ etcd --advertise-client-urls "${KUBE_INTEGRATION_ETCD_URL}" --data-dir "${ETCD_DIR}" --listen-client-urls "${KUBE_INTEGRATION_ETCD_URL}" --log-level="${ETCD_LOGLEVEL}" --enable-distributed-tracing --distributed-tracing-address="192.168.32.1:4317" --distributed-tracing-service-name="etcd" --distributed-tracing-sampling-rate=1000000 2> "${ETCD_LOGFILE}" >/dev/null & + ETCD_PID=$! + + echo "Waiting for etcd to come up." +diff --git a/hack/make-rules/test-cmd.sh b/hack/make-rules/test-cmd.sh +index 7d9fb1db65c..179176533de 100755 +--- a/hack/make-rules/test-cmd.sh ++++ b/hack/make-rules/test-cmd.sh +@@ -69,6 +69,14 @@ function run_kube_apiserver() { + VERSION_OVERRIDE="--version=$("${THIS_PLATFORM_BIN}/kube-apiserver" --version | awk '{print $2}')${CUSTOM_VERSION_SUFFIX:-}" + fi + ++ cat < "/tmp/kube-tracing-file" ++apiVersion: apiserver.config.k8s.io/v1beta1 ++kind: TracingConfiguration ++# default value ++endpoint: 192.168.32.1:4317 ++samplingRatePerMillion: 1000000 ++EOF ++ + "${THIS_PLATFORM_BIN}/kube-apiserver" \ + ${VERSION_OVERRIDE:+"${VERSION_OVERRIDE}"} \ + --bind-address="127.0.0.1" \ +@@ -84,6 +92,7 @@ function run_kube_apiserver() { + --service-account-issuer="https://kubernetes.default.svc" \ + --service-account-signing-key-file="${SERVICE_ACCOUNT_KEY}" \ + --storage-media-type="${KUBE_TEST_API_STORAGE_TYPE-}" \ ++ --tracing-config-file="/tmp/kube-tracing-file" \ + --cert-dir="${TMPDIR:-/tmp/}" \ + --service-cluster-ip-range="10.0.0.0/24" \ + --client-ca-file=hack/testdata/ca/ca.crt \ +-- +2.51.0.rc2.233.g662b1ed5c5-goog + From 84ad2b32f3b5960c973b903c0d1108e52859f320 Mon Sep 17 00:00:00 2001 From: James Blair Date: Sat, 23 Aug 2025 11:14:53 +1200 Subject: [PATCH 0458/1068] Implement OWNERS_ALIASES for sig-etcd roles. Signed-off-by: James Blair --- OWNERS | 36 ++++++++++++++++-------------------- OWNERS_ALIASES | 8 ++++++++ 2 files changed, 24 insertions(+), 20 deletions(-) create mode 100644 OWNERS_ALIASES diff --git a/OWNERS b/OWNERS index 7783e529aa4e..160e57a57c17 100644 --- a/OWNERS +++ b/OWNERS @@ -1,24 +1,20 @@ # See the OWNERS docs at https://go.k8s.io/owners approvers: - - ahrtr # Benjamin Wang - - fuweid # Wei Fu - - jmhbnz # James Blair - - serathius # Marek Siarkowicz - - spzala # Sahdev Zala -reviewers: - - ivanvc # Ivan Valdes - - siyuanfoundation # Siyuan Zhang + - sig-etcd-chairs # Defined in OWNERS_ALIASES + - sig-etcd-tech-leads # Defined in OWNERS_ALIASES + - fuweid # Wei Fu + - spzala # Sahdev Zala emeritus_approvers: - - bdarnell # Ben Darnell - - fanminshi # Fanmin Shi - - gyuho # Gyuho Lee - - hexfusion # Sam Batschelet - - heyitsanthony # Anthony Romano - - jingyih # Jingyi Hu - - jpbetz # Joe Betz - - mitake # Hitoshi Mitake - - philips # Brandon Philips - - ptabor # Piotr Tabor - - wenjiaswe # Wenjia Zhang - - xiang90 # Xiang Li + - bdarnell # Ben Darnell + - fanminshi # Fanmin Shi + - gyuho # Gyuho Lee + - hexfusion # Sam Batschelet + - heyitsanthony # Anthony Romano + - jingyih # Jingyi Hu + - jpbetz # Joe Betz + - mitake # Hitoshi Mitake + - philips # Brandon Philips + - ptabor # Piotr Tabor + - wenjiaswe # Wenjia Zhang + - xiang90 # Xiang Li diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES new file mode 100644 index 000000000000..4ab3aae2ee21 --- /dev/null +++ b/OWNERS_ALIASES @@ -0,0 +1,8 @@ +aliases: + sig-etcd-chairs: + - ivanvc # Ivan Valdes + - jmhbnz # James Blair + - siyuanfoundation # Siyuan Zhang + sig-etcd-tech-leads: + - ahrtr # Benjamin Wang + - serathius # Marek Siarkowicz From 6201f3de459da7773157e651f2075231b5f3c396 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Wed, 20 Aug 2025 13:48:10 +0200 Subject: [PATCH 0459/1068] Add contract classification Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/contract_test.go | 119 +++++++++++++++++++++ tests/robustness/coverage/coverage_test.go | 18 +++- 2 files changed, 134 insertions(+), 3 deletions(-) create mode 100644 tests/robustness/coverage/contract_test.go diff --git a/tests/robustness/coverage/contract_test.go b/tests/robustness/coverage/contract_test.go new file mode 100644 index 000000000000..46fd581467e3 --- /dev/null +++ b/tests/robustness/coverage/contract_test.go @@ -0,0 +1,119 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package coverage_test + +import ( + "iter" + "strings" + "testing" + + tracev1 "go.opentelemetry.io/proto/otlp/trace/v1" +) + +func contract(spansByID map[string]*tracev1.Span, span *tracev1.Span) (string, bool) { + for span := range walk(spansByID, span) { + for _, event := range span.GetEvents() { + name := event.GetName() + if strings.HasPrefix(name, "contract.") { + return name, true + } + } + } + return "", false +} + +// walk iterates over the chain of spans starting from span and then going up +// the tree to parent span if such exists. +func walk(spansByID map[string]*tracev1.Span, span *tracev1.Span) iter.Seq[*tracev1.Span] { + return func(yield func(*tracev1.Span) bool) { + for node := span; node != nil; node = spansByID[string(node.GetParentSpanId())] { + if !yield(node) { + return + } + } + } +} + +func TestContract(t *testing.T) { + spansByID := map[string]*tracev1.Span{ + "child": { + ParentSpanId: []byte("middle"), + }, + "middle": { + ParentSpanId: []byte("parent"), + Events: []*tracev1.Span_Event{ + {Name: "wrong.contract"}, + }, + }, + "parent": { + ParentSpanId: []byte("grandparent"), + Events: []*tracev1.Span_Event{ + {Name: "contract.OptimisticPut"}, + }, + }, + "grandparent": { + Events: []*tracev1.Span_Event{ + {Name: "contract.Get"}, + }, + }, + "outside_delete": { + Events: []*tracev1.Span_Event{ + {Name: "otherEvent"}, + {Name: "contract.OptimisticDelete"}, + }, + }, + "outside_invalid": { + Events: []*tracev1.Span_Event{ + {Name: "contractWrong"}, + }, + }, + } + + for _, tc := range []struct { + name string + source string + want string + found bool + }{ + { + name: "ok_chain", + source: "child", + want: "contract.OptimisticPut", + found: true, + }, + { + name: "ok_single", + source: "outside_delete", + want: "contract.OptimisticDelete", + found: true, + }, + { + name: "not_in_contract_chain", + source: "outside_invalid", + want: "", + found: false, + }, + } { + t.Run(tc.name, func(t *testing.T) { + got, found := contract(spansByID, spansByID[tc.source]) + if found != tc.found { + t.Errorf("got=%v, want=%v", found, tc.found) + } + if got != tc.want { + t.Errorf("got=%v, want=%v", got, tc.want) + } + }) + } +} diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index 5012591204c0..9e19479b1181 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -219,6 +219,7 @@ func testInterfaceUse(t *testing.T, filename string) { tracesWithNoMethod := make(map[string]bool) callCounts := make(map[Row]int) + contractCallCounts := make(map[Row]int) for _, span := range callsByOperationName[op] { args := columnsToArgs(span, td.args) @@ -234,10 +235,14 @@ func testInterfaceUse(t *testing.T, filename string) { tracesWithNoMethod[args] = true } + _, cFound := contract(spansByID, span) + if cFound { + contractCallCounts[Row{method, pattern, args}]++ + } callCounts[Row{method, pattern, args}]++ } - t.Logf("\n%s", printableMatcherTable(td.args, callCounts)) + t.Logf("\n%s", printableMatcherTable(td.args, callCounts, contractCallCounts)) }) } } @@ -377,11 +382,11 @@ func printableCallTable(callsByOperationName map[string]int) string { return buf.String() } -func printableMatcherTable(cols []column, res map[Row]int) string { +func printableMatcherTable(cols []column, res map[Row]int, contract map[Row]int) string { keys := sortPatternTable(res) buf := new(bytes.Buffer) - width := 2 + len(cols) + 2 + width := 2 + len(cols) + 3 alignment := make([]tw.Align, width) alignment[1] = tw.AlignLeft cfgBuilder := tablewriter.NewConfigBuilder(). @@ -395,6 +400,7 @@ func printableMatcherTable(cols []column, res map[Row]int) string { for i, col := range cols { hdr[i+2] = col.name } + hdr[len(hdr)-3] = "contract" hdr[len(hdr)-2] = "calls" hdr[len(hdr)-1] = "percent" table.Header(hdr) @@ -403,6 +409,10 @@ func printableMatcherTable(cols []column, res map[Row]int) string { for _, c := range res { totalCalls += c } + totalContractCalls := 0 + for _, c := range contract { + totalContractCalls += c + } footer := make([]int, len(cols)) for _, r := range keys { @@ -418,6 +428,7 @@ func printableMatcherTable(cols []column, res map[Row]int) string { table.Append(append( []string{r.Method, r.Pattern}, append(rowPrefix, + fmt.Sprintf("%.2f%%", float64(contract[r]*100)/float64(callCount)), strconv.Itoa(callCount), fmt.Sprintf("%.2f%%", float64(callCount*100)/float64(totalCalls)), )...)) @@ -430,6 +441,7 @@ func printableMatcherTable(cols []column, res map[Row]int) string { table.Footer(append([]string{"", ""}, append( footerStr, + strconv.Itoa(totalContractCalls), strconv.Itoa(totalCalls), "100.00%", )...)) From 5285bdb261f7d70ad3004e39deec445cc6eca29b Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 22 Aug 2025 09:55:13 +0100 Subject: [PATCH 0460/1068] Clarify the policy on how to bump go version for projects under etcd-io Signed-off-by: Benjamin Wang --- Documentation/contributor-guide/dependency_management.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Documentation/contributor-guide/dependency_management.md b/Documentation/contributor-guide/dependency_management.md index 5299677bad7c..92f4892cb709 100644 --- a/Documentation/contributor-guide/dependency_management.md +++ b/Documentation/contributor-guide/dependency_management.md @@ -125,7 +125,13 @@ execute it for 3.4. ## Golang versions -The etcd project aims to maintain a development branch that is on the latest [Go version](https://go.dev/dl), ideally, this will align with the Go version in use for Kubernetes project development. For an example of how to update etcd to a new minor release of Go refer to issue and the linked pull requests. +For all libraries that exist as independent subprojects (e.g., bbolt, raft, gofail), we should always stick +to the oldest supported Go minor version for all branches, including main. It's up to the users of these +libraries to choose which [Go version](https://go.dev/dl) they want to use in their own projects. + +For other subprojects that produce binaries or images (e.g. etcd, etcd-operator, auger), the main +branches should use the latest Go minor version for development, while stable releases should use the +latest patch of the previous supported Go minor version to ensure stability. Suggested steps for performing a minor version upgrade for the etcd development branch: From e23ed406a4fec4adbc301abf69d112686d77d56c Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Fri, 22 Aug 2025 15:47:05 +0000 Subject: [PATCH 0461/1068] cache: add unit tests and validation for store Signed-off-by: Peter Chang --- cache/store.go | 25 ++- cache/store_test.go | 380 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 401 insertions(+), 4 deletions(-) create mode 100644 cache/store_test.go diff --git a/cache/store.go b/cache/store.go index e45706a2d97d..fa1c1035eabd 100644 --- a/cache/store.go +++ b/cache/store.go @@ -75,15 +75,16 @@ func (s *store) Apply(events []*clientv3.Event) error { s.mu.Lock() defer s.mu.Unlock() - for _, ev := range events { - if ev.Kv.ModRevision < s.latestRev { - return fmt.Errorf("cache: stale event batch (rev %d < latest %d)", ev.Kv.ModRevision, s.latestRev) - } + if err := validateRevisions(events, s.latestRev); err != nil { + return err } for _, ev := range events { switch ev.Type { case clientv3.EventTypeDelete: + if _, ok := s.kvs[string(ev.Kv.Key)]; !ok { + return fmt.Errorf("cache: delete non-existent key %s)", string(ev.Kv.Key)) + } delete(s.kvs, string(ev.Kv.Key)) case clientv3.EventTypePut: s.kvs[string(ev.Kv.Key)] = ev.Kv @@ -135,3 +136,19 @@ func (s *store) scanRange(startKey, endKey []byte) []*mvccpb.KeyValue { func isPrefixScan(endKey []byte) bool { return len(endKey) == 1 && endKey[0] == 0 } + +func validateRevisions(events []*clientv3.Event, latestRev int64) error { + if len(events) == 0 { + return nil + } + for _, ev := range events { + r := ev.Kv.ModRevision + if r < latestRev { + return fmt.Errorf("cache: stale event batch (rev %d < latest %d)", r, latestRev) + } + if r == latestRev { + return fmt.Errorf("cache: duplicate revision batch breaks atomic guarantee (rev %d == latest %d)", r, latestRev) + } + } + return nil +} diff --git a/cache/store_test.go b/cache/store_test.go new file mode 100644 index 000000000000..d76737c39f39 --- /dev/null +++ b/cache/store_test.go @@ -0,0 +1,380 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cache + +import ( + "errors" + "testing" + + "github.com/google/go-cmp/cmp" + + mvccpb "go.etcd.io/etcd/api/v3/mvccpb" + clientv3 "go.etcd.io/etcd/client/v3" +) + +func TestStoreGet(t *testing.T) { + tests := []struct { + name string + initialKVs []*mvccpb.KeyValue + initialRev int64 + + start []byte + end []byte + + expectedKVs []*mvccpb.KeyValue + expectedRev int64 + expectedErr error + }{ + { + name: "empty_store_returns_ErrNotReady", + initialKVs: nil, + start: []byte("a"), + expectedErr: ErrNotReady, + }, + { + name: "Get_single_key_hit", + initialKVs: []*mvccpb.KeyValue{makeKV("/b", "2", 5), makeKV("/a", "1", 5), makeKV("/c", "3", 5)}, + initialRev: 5, + start: []byte("/b"), + expectedKVs: []*mvccpb.KeyValue{makeKV("/b", "2", 5)}, + expectedRev: 5, + }, + { + name: "Get_single_key_miss_returns_empty", + initialKVs: []*mvccpb.KeyValue{makeKV("/b", "2", 5), makeKV("/a", "1", 5), makeKV("/c", "3", 5)}, + initialRev: 5, + start: []byte("/zzz"), + expectedKVs: nil, + expectedRev: 5, + }, + { + name: "Get_explicit_range", + initialKVs: []*mvccpb.KeyValue{makeKV("/a", "1", 10), makeKV("/b", "2", 10), makeKV("/c", "3", 10), makeKV("/d", "4", 10)}, + initialRev: 10, + start: []byte("/b"), + end: []byte("/d"), + expectedKVs: []*mvccpb.KeyValue{makeKV("/b", "2", 10), makeKV("/c", "3", 10)}, + expectedRev: 10, + }, + { + name: "Get_range_includes_prefix_excludes_end", + initialKVs: []*mvccpb.KeyValue{makeKV("/a", "1", 4), makeKV("/aa", "2", 4), makeKV("/ab", "3", 4), makeKV("/b", "4", 4)}, + initialRev: 4, + start: []byte("/a"), + end: []byte("/b"), + expectedKVs: []*mvccpb.KeyValue{makeKV("/a", "1", 4), makeKV("/aa", "2", 4), makeKV("/ab", "3", 4)}, + expectedRev: 4, + }, + { + name: "Get_empty_range_returns_empty", + initialKVs: []*mvccpb.KeyValue{makeKV("/a", "1", 2), makeKV("/b", "2", 2)}, + initialRev: 2, + start: []byte("/a"), + end: []byte("/a"), + expectedKVs: nil, + expectedRev: 2, + }, + { + name: "Get_invalid_range_returns_empty", + initialKVs: []*mvccpb.KeyValue{makeKV("/a", "1", 6), makeKV("/z", "9", 6)}, + initialRev: 6, + start: []byte("/z"), + end: []byte("/a"), + expectedKVs: nil, + expectedRev: 6, + }, + { + name: "Get_fromKey_scans_ordered", + initialKVs: []*mvccpb.KeyValue{makeKV("/a", "1", 7), makeKV("/b", "2", 7), makeKV("/c", "3", 7), makeKV("/d", "4", 7)}, + initialRev: 7, + start: []byte("/b"), + end: []byte{0}, + expectedKVs: []*mvccpb.KeyValue{makeKV("/b", "2", 7), makeKV("/c", "3", 7), makeKV("/d", "4", 7)}, + expectedRev: 7, + }, + { + name: "Get_fromKey_with_no_results", + initialKVs: []*mvccpb.KeyValue{makeKV("/a", "1", 9), makeKV("/b", "2", 9)}, + initialRev: 9, + start: []byte("/zzz"), + end: []byte{0}, + expectedKVs: nil, + expectedRev: 9, + }, + } + + for _, tt := range tests { + test := tt + t.Run(test.name, func(t *testing.T) { + s := newStore() + if test.initialKVs != nil { + s.Restore(test.initialKVs, test.initialRev) + } + + kvs, rev, err := s.Get(test.start, test.end) + + if test.expectedErr != nil { + if !errors.Is(err, test.expectedErr) { + t.Fatalf("Get error = %v; want %v", err, test.expectedErr) + } + return + } + if err != nil { + t.Fatalf("Get returned unexpected error: %v", err) + } + if rev != test.expectedRev { + t.Fatalf("revision=%d; want %d", rev, test.expectedRev) + } + + if diff := cmp.Diff(test.expectedKVs, kvs); diff != "" { + t.Fatalf("Get mismatch (-want +got):\n%s", diff) + } + }) + } +} + +func TestStoreApply(t *testing.T) { + type testCase struct { + name string + initialKVs []*mvccpb.KeyValue + initialRev int64 + eventBatches [][]*clientv3.Event + + expectedLatestRev int64 + expectedSnapshot []*mvccpb.KeyValue + expectErr bool + } + tests := []testCase{ + { + name: "put_overwrites_key", + initialKVs: []*mvccpb.KeyValue{makeKV("/k", "v1", 10)}, + initialRev: 10, + eventBatches: [][]*clientv3.Event{{makePutEvent("/k", "v2", 11)}}, + expectedLatestRev: 11, + expectedSnapshot: []*mvccpb.KeyValue{makeKV("/k", "v2", 11)}, + }, + { + name: "put_contiguous_revision", + initialKVs: []*mvccpb.KeyValue{makeKV("/a", "A1", 20)}, + initialRev: 20, + eventBatches: [][]*clientv3.Event{ + {makePutEvent("/a", "A2", 21)}, + {makePutEvent("/b", "B1", 22)}, + {makePutEvent("/c", "C1", 23)}, + }, + expectedLatestRev: 23, + expectedSnapshot: []*mvccpb.KeyValue{makeKV("/a", "A2", 21), makeKV("/b", "B1", 22), makeKV("/c", "C1", 23)}, + }, + { + name: "put_single_non_contiguous_batch", + initialKVs: []*mvccpb.KeyValue{makeKV("/a", "A1", 20)}, + initialRev: 20, + eventBatches: [][]*clientv3.Event{{makePutEvent("/a", "A2", 25)}}, + expectedLatestRev: 25, + expectedSnapshot: []*mvccpb.KeyValue{makeKV("/a", "A2", 25)}, + }, + { + name: "put_multiple_non_contiguous_batches", + initialKVs: []*mvccpb.KeyValue{makeKV("/a", "A1", 21), makeKV("/b", "B1", 22)}, + initialRev: 22, + eventBatches: [][]*clientv3.Event{ + {makePutEvent("/a", "A2", 25)}, + {makePutEvent("/b", "B2", 27)}, + }, + expectedLatestRev: 27, + expectedSnapshot: []*mvccpb.KeyValue{makeKV("/a", "A2", 25), makeKV("/b", "B2", 27)}, + }, + { + name: "apply_mixed_operations", + initialKVs: []*mvccpb.KeyValue{makeKV("/a", "A1", 20)}, + initialRev: 20, + eventBatches: [][]*clientv3.Event{ + {makePutEvent("/a", "A2", 21), makePutEvent("/b", "B1", 21), makePutEvent("/c", "C1", 21)}, + {makePutEvent("/b", "B2", 22)}, + {makeDelEvent("/c", 23), makePutEvent("/a", "A3", 23)}, + {makePutEvent("/b", "B3", 24)}, + }, + expectedLatestRev: 24, + expectedSnapshot: []*mvccpb.KeyValue{makeKV("/a", "A3", 23), makeKV("/b", "B3", 24)}, + }, + { + name: "delete_same_key", + initialKVs: []*mvccpb.KeyValue{makeKV("/a", "X", 10)}, + initialRev: 10, + eventBatches: [][]*clientv3.Event{ + {makeDelEvent("/a", 11)}, + }, + expectedLatestRev: 11, + expectedSnapshot: nil, + }, + { + name: "delete_nonexistent_returns_error", + initialKVs: []*mvccpb.KeyValue{makeKV("/p", "X", 5)}, + initialRev: 5, + eventBatches: [][]*clientv3.Event{{makeDelEvent("/zzz", 6)}}, + expectedLatestRev: 5, + expectedSnapshot: []*mvccpb.KeyValue{makeKV("/p", "X", 5)}, + expectErr: true, + }, + { + name: "mixed_delete_nonexistent_returns_error", + initialKVs: []*mvccpb.KeyValue{makeKV("/p", "X", 5)}, + initialRev: 5, + eventBatches: [][]*clientv3.Event{{makeDelEvent("/zzz", 6), makePutEvent("/r", "Y", 6)}}, + expectedLatestRev: 5, + expectedSnapshot: []*mvccpb.KeyValue{makeKV("/p", "X", 5)}, + expectErr: true, + }, + { + name: "delete_then_delete_again_returns_error", + initialKVs: []*mvccpb.KeyValue{makeKV("/p", "X", 5)}, + initialRev: 5, + eventBatches: [][]*clientv3.Event{ + {makeDelEvent("/p", 6)}, + {makeDelEvent("/p", 7)}, + }, + expectedLatestRev: 6, + expectedSnapshot: nil, + expectErr: true, + }, + { + name: "stale_batch_rejected", + initialKVs: []*mvccpb.KeyValue{makeKV("/x", "1", 20)}, + initialRev: 20, + eventBatches: [][]*clientv3.Event{{makePutEvent("/x", "2", 19)}}, + expectedLatestRev: 20, + expectedSnapshot: []*mvccpb.KeyValue{makeKV("/x", "1", 20)}, + expectErr: true, + }, + { + name: "mixed_stale_batch_returns_error", + initialKVs: []*mvccpb.KeyValue{makeKV("/x", "1", 20)}, + initialRev: 20, + eventBatches: [][]*clientv3.Event{ + {makePutEvent("/x", "should-not-apply", 19)}, + {makeDelEvent("/x", 21), makePutEvent("/y", "new", 21)}, + {makeDelEvent("/y", 22)}, + }, + expectedLatestRev: 20, + expectedSnapshot: []*mvccpb.KeyValue{makeKV("/x", "1", 20)}, + expectErr: true, + }, + } + + for _, tt := range tests { + test := tt + t.Run(test.name, func(t *testing.T) { + s := newStore() + s.Restore(test.initialKVs, test.initialRev) + + var gotErr error + for batchIndex, batch := range test.eventBatches { + if err := s.Apply(batch); err != nil { + gotErr = err + if !test.expectErr { + t.Fatalf("Apply(batch %d) unexpected error: %v", batchIndex, err) + } + break + } + } + if test.expectErr && gotErr == nil { + t.Fatalf("expected Apply() to error, but got nil") + } + if latest := s.LatestRev(); latest != test.expectedLatestRev { + t.Fatalf("LatestRev=%d; want %d", latest, test.expectedLatestRev) + } + verifyStoreSnapshot(t, s, test.expectedSnapshot, test.expectedLatestRev) + }) + } +} + +func TestStoreRestore(t *testing.T) { + type restoreSeq struct { + kvs []*mvccpb.KeyValue + rev int64 + } + tests := []struct { + name string + seq []restoreSeq + expectedSnap []*mvccpb.KeyValue + expectedRev int64 + }{ + { + name: "rebuilds_tree_and_resets_rev", + seq: []restoreSeq{ + {[]*mvccpb.KeyValue{makeKV("/a", "1", 3), makeKV("/b", "2", 3)}, 3}, + {[]*mvccpb.KeyValue{makeKV("/c", "3", 15)}, 15}, + }, + expectedSnap: []*mvccpb.KeyValue{makeKV("/c", "3", 15)}, + expectedRev: 15, + }, + { + name: "restore_to_revision_zero_returns_ErrNotReady", + seq: []restoreSeq{ + {[]*mvccpb.KeyValue{makeKV("/a", "1", 5)}, 5}, + {nil, 0}, + }, + expectedSnap: nil, + expectedRev: 0, + }, + { + name: "restore_empty_ready", + seq: []restoreSeq{{nil, 5}}, + expectedSnap: nil, + expectedRev: 5, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s := newStore() + for _, step := range tt.seq { + s.Restore(step.kvs, step.rev) + } + if tt.expectedRev == 0 { + if _, _, err := s.Get([]byte("/"), []byte{0}); !errors.Is(err, ErrNotReady) { + t.Fatalf("Get after restore to rev=0 err=%v; want %v", err, ErrNotReady) + } + return + } + verifyStoreSnapshot(t, s, tt.expectedSnap, tt.expectedRev) + }) + } +} + +func makeKV(key, val string, rev int64) *mvccpb.KeyValue { + return &mvccpb.KeyValue{Key: []byte(key), Value: []byte(val), ModRevision: rev, CreateRevision: rev, Version: 1} +} + +func makePutEvent(key, val string, rev int64) *clientv3.Event { + return &clientv3.Event{Type: clientv3.EventTypePut, Kv: &mvccpb.KeyValue{Key: []byte(key), Value: []byte(val), ModRevision: rev, CreateRevision: rev, Version: 1}} +} + +func makeDelEvent(key string, rev int64) *clientv3.Event { + return &clientv3.Event{Type: clientv3.EventTypeDelete, Kv: &mvccpb.KeyValue{Key: []byte(key), ModRevision: rev}} +} + +func verifyStoreSnapshot(t *testing.T, s *store, want []*mvccpb.KeyValue, wantRev int64) { + kvs, rev, err := s.Get([]byte("/"), []byte{0}) + if err != nil { + t.Fatalf("Get all keys: %v", err) + } + if rev != wantRev { + t.Fatalf("snapshot revision=%d; want %d", rev, wantRev) + } + if diff := cmp.Diff(want, kvs); diff != "" { + t.Fatalf("snapshot mismatch (-want +got):\n%s", diff) + } +} From 79fc1c3e9a7fec6d209798a1039f077fc46ced9e Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Mon, 18 Aug 2025 15:43:06 +0000 Subject: [PATCH 0462/1068] cache: migrate storage layer to B-tree Signed-off-by: Peter Chang --- cache/cache.go | 5 ++- cache/config.go | 7 ++++ cache/go.mod | 1 + cache/go.sum | 2 + cache/store.go | 90 +++++++++++++++++++++------------------------ cache/store_test.go | 6 +-- 6 files changed, 59 insertions(+), 52 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index 567cdbf57526..9fd960d8f2d1 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -59,6 +59,9 @@ func New(client *clientv3.Client, prefix string, opts ...Option) (*Cache, error) if cfg.HistoryWindowSize <= 0 { return nil, fmt.Errorf("invalid HistoryWindowSize %d (must be > 0)", cfg.HistoryWindowSize) } + if cfg.BTreeDegree < 2 { + return nil, fmt.Errorf("invalid BTreeDegree %d (must be >= 2)", cfg.BTreeDegree) + } internalCtx, cancel := context.WithCancel(context.Background()) @@ -67,7 +70,7 @@ func New(client *clientv3.Client, prefix string, opts ...Option) (*Cache, error) cfg: cfg, watcher: client.Watcher, kv: client.KV, - store: newStore(), + store: newStore(cfg.BTreeDegree), ready: newReady(), stop: cancel, internalCtx: internalCtx, diff --git a/cache/config.go b/cache/config.go index b51a52a703f2..cf18ffcc7468 100644 --- a/cache/config.go +++ b/cache/config.go @@ -31,6 +31,8 @@ type Config struct { MaxBackoff time.Duration // GetTimeout is the timeout applied to the first Get() used to bootstrap the cache. GetTimeout time.Duration + // BTreeDegree controls the degree (branching factor) of the in-memory B-tree store. + BTreeDegree int } // TODO: tune via performance/load tests. @@ -42,6 +44,7 @@ func defaultConfig() Config { InitialBackoff: 50 * time.Millisecond, MaxBackoff: 2 * time.Second, GetTimeout: 5 * time.Second, + BTreeDegree: 32, } } @@ -70,3 +73,7 @@ func WithMaxBackoff(d time.Duration) Option { func WithGetTimeout(d time.Duration) Option { return func(c *Config) { c.GetTimeout = d } } + +func WithBTreeDegree(n int) Option { + return func(c *Config) { c.BTreeDegree = n } +} diff --git a/cache/go.mod b/cache/go.mod index 3ba35bbd228e..bd2dcb5e91b6 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -5,6 +5,7 @@ go 1.24 toolchain go1.24.4 require ( + github.com/google/btree v1.1.3 github.com/google/go-cmp v0.7.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 diff --git a/cache/go.sum b/cache/go.sum index 53b6764c206f..888b461480d2 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -17,6 +17,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= diff --git a/cache/store.go b/cache/store.go index fa1c1035eabd..13d140cfa457 100644 --- a/cache/store.go +++ b/cache/store.go @@ -15,11 +15,11 @@ package cache import ( - "bytes" "fmt" - "sort" "sync" + "github.com/google/btree" + "go.etcd.io/etcd/api/v3/mvccpb" clientv3 "go.etcd.io/etcd/client/v3" ) @@ -28,12 +28,29 @@ var ErrNotReady = fmt.Errorf("cache: store not ready") type store struct { mu sync.RWMutex - kvs map[string]*mvccpb.KeyValue + tree *btree.BTree + degree int latestRev int64 } -func newStore() *store { - return &store{kvs: make(map[string]*mvccpb.KeyValue)} +func newStore(degree int) *store { + return &store{ + tree: btree.New(degree), + degree: degree, + } +} + +type kvItem struct { + key string + kv *mvccpb.KeyValue +} + +func newKVItem(kv *mvccpb.KeyValue) *kvItem { + return &kvItem{key: string(kv.Key), kv: kv} +} + +func (a *kvItem) Less(b btree.Item) bool { + return a.key < b.(*kvItem).key } func (s *store) Get(startKey, endKey []byte) ([]*mvccpb.KeyValue, int64, error) { @@ -47,16 +64,22 @@ func (s *store) Get(startKey, endKey []byte) ([]*mvccpb.KeyValue, int64, error) var out []*mvccpb.KeyValue switch { case len(endKey) == 0: - out = s.getSingle(startKey) + if item := s.tree.Get(probeItemFromBytes(startKey)); item != nil { + out = append(out, item.(*kvItem).kv) + } + case isPrefixScan(endKey): - out = s.scanPrefix(startKey) + s.tree.AscendGreaterOrEqual(probeItemFromBytes(startKey), func(item btree.Item) bool { + out = append(out, item.(*kvItem).kv) + return true + }) + default: - out = s.scanRange(startKey, endKey) + s.tree.AscendRange(probeItemFromBytes(startKey), probeItemFromBytes(endKey), func(item btree.Item) bool { + out = append(out, item.(*kvItem).kv) + return true + }) } - - sort.Slice(out, func(i, j int) bool { - return bytes.Compare(out[i].Key, out[j].Key) < 0 // default: lexicographical, ascending‐by‐key sort - }) return out, s.latestRev, nil } @@ -64,9 +87,9 @@ func (s *store) Restore(kvs []*mvccpb.KeyValue, rev int64) { s.mu.Lock() defer s.mu.Unlock() - s.kvs = make(map[string]*mvccpb.KeyValue, len(kvs)) + s.tree = btree.New(s.degree) for _, kv := range kvs { - s.kvs[string(kv.Key)] = kv + s.tree.ReplaceOrInsert(newKVItem(kv)) } s.latestRev = rev } @@ -82,12 +105,11 @@ func (s *store) Apply(events []*clientv3.Event) error { for _, ev := range events { switch ev.Type { case clientv3.EventTypeDelete: - if _, ok := s.kvs[string(ev.Kv.Key)]; !ok { - return fmt.Errorf("cache: delete non-existent key %s)", string(ev.Kv.Key)) + if removed := s.tree.Delete(&kvItem{key: string(ev.Kv.Key)}); removed == nil { + return fmt.Errorf("cache: delete non-existent key %s", string(ev.Kv.Key)) } - delete(s.kvs, string(ev.Kv.Key)) case clientv3.EventTypePut: - s.kvs[string(ev.Kv.Key)] = ev.Kv + s.tree.ReplaceOrInsert(newKVItem(ev.Kv)) } if ev.Kv.ModRevision > s.latestRev { s.latestRev = ev.Kv.ModRevision @@ -102,36 +124,6 @@ func (s *store) LatestRev() int64 { return s.latestRev } -// getSingle fetches one key or nil -func (s *store) getSingle(key []byte) []*mvccpb.KeyValue { - if kv, ok := s.kvs[string(key)]; ok { - return []*mvccpb.KeyValue{kv} - } - return nil -} - -// scanPrefix returns all keys >= startKey -func (s *store) scanPrefix(startKey []byte) []*mvccpb.KeyValue { - var res []*mvccpb.KeyValue - for _, kv := range s.kvs { - if bytes.Compare(kv.Key, startKey) >= 0 { - res = append(res, kv) - } - } - return res -} - -// scanRange returns all keys in [startKey, endKey) -func (s *store) scanRange(startKey, endKey []byte) []*mvccpb.KeyValue { - var res []*mvccpb.KeyValue - for _, kv := range s.kvs { - if bytes.Compare(kv.Key, startKey) >= 0 && bytes.Compare(kv.Key, endKey) < 0 { - res = append(res, kv) - } - } - return res -} - // isPrefixScan detects endKey=={0} semantics func isPrefixScan(endKey []byte) bool { return len(endKey) == 1 && endKey[0] == 0 @@ -152,3 +144,5 @@ func validateRevisions(events []*clientv3.Event, latestRev int64) error { } return nil } + +func probeItemFromBytes(b []byte) *kvItem { return &kvItem{key: string(b)} } diff --git a/cache/store_test.go b/cache/store_test.go index d76737c39f39..e1820985c254 100644 --- a/cache/store_test.go +++ b/cache/store_test.go @@ -118,7 +118,7 @@ func TestStoreGet(t *testing.T) { for _, tt := range tests { test := tt t.Run(test.name, func(t *testing.T) { - s := newStore() + s := newStore(8) if test.initialKVs != nil { s.Restore(test.initialKVs, test.initialRev) } @@ -276,7 +276,7 @@ func TestStoreApply(t *testing.T) { for _, tt := range tests { test := tt t.Run(test.name, func(t *testing.T) { - s := newStore() + s := newStore(4) s.Restore(test.initialKVs, test.initialRev) var gotErr error @@ -339,7 +339,7 @@ func TestStoreRestore(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - s := newStore() + s := newStore(8) for _, step := range tt.seq { s.Restore(step.kvs, step.rev) } From 2c1d1f80b7eadf2f7708e2f55ccbe90c6ceef0b8 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Fri, 22 Aug 2025 15:05:14 +0200 Subject: [PATCH 0463/1068] Update robustness/coverage/README.md Changes: * runs Jeager in docker instead of KiND cluster * uses a separate docker network to make IP address management easier * provides new configuration of apiserver and kind cluster * focuses test execution on sig-apps conformance tests to make them faster Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/README.md | 87 ++++++++++++++----- .../apiserver-shared-conf/tracing.yaml | 5 ++ .../coverage/kind-with-tracing.yaml | 20 +++-- 3 files changed, 85 insertions(+), 27 deletions(-) create mode 100644 tests/robustness/coverage/apiserver-shared-conf/tracing.yaml diff --git a/tests/robustness/coverage/README.md b/tests/robustness/coverage/README.md index 7f0c54f2afd4..04adcf0ee396 100644 --- a/tests/robustness/coverage/README.md +++ b/tests/robustness/coverage/README.md @@ -4,6 +4,8 @@ Go tests in this directory analyze the usage of Etcd API based on collected traces from a Kubernetes cluster. They output information on: 1. Number of calls per gRPC method used by Kubernetes +1. Key pattern +1. Arguments provided to KV, Watch and Lease methods This information can be used to track the coverage of k8s-etcd contract. @@ -12,49 +14,90 @@ This information can be used to track the coverage of k8s-etcd contract. At first we will manually set up the cluster, run e2e tests, download traces and then execute the test. -1\. Set up [KIND +1. Set up [KIND cluster](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) with tracing exporting to [Jaeger](https://www.jaegertracing.io/) -``` -export KUBECONFIG="$(pwd)/kind-with-tracing-config" -kind create cluster --config kind-with-tracing.yaml -kubectl run jaeger --overrides='{ "apiVersion": "v1", "spec": { "hostNetwork": true, "nodeName": "kind-control-plane", "tolerations": [{"effect": "NoExecute", "operator": "Exists"}]} }' \ - --labels='tier=control-plane' \ - --image jaegertracing/jaeger:2.6.0 \ - -- --set=extensions.jaeger_storage.backends.some_storage.memory.max_traces=2000000 -``` + 1. Create docker network: + + ```shell + docker network create kind-with-external-etcd \ + --driver bridge \ + --gateway "192.168.32.1" \ + --subnet "192.168.32.0/24" + ``` + + Note: You will need to adjust the configuration files and commands if you + choose a different subnet. + + 1. Run [Jaeger](https://www.jaegertracing.io/) container: + + ```shell + docker run --rm --name jaeger \ + -p 16686:16686 \ + -p 4317:4317 \ + jaegertracing/jaeger:2.6.0 --set=extensions.jaeger_storage.backends.some_storage.memory.max_traces=20000000 + ``` + + 1. Run `etcd`: + + ```shell + etcd --watch-progress-notify-interval=5s \ + --listen-client-urls http://192.168.32.1:2379 \ + --advertise-client-urls http://192.168.32.1:2379 \ + --enable-distributed-tracing \ + --distributed-tracing-address="192.168.32.1:4317" \ + --distributed-tracing-service-name="etcd" \ + --distributed-tracing-sampling-rate=1000000 + ``` -2\. Exercise Kubernetes API. For example, build and run Conformance tests from + 1. Create [KIND +cluster](https://kind.sigs.k8s.io/docs/user/quick-start/#installation): + + ```shell + export KUBECONFIG="$(pwd)/kind-with-tracing-config" + export KIND_EXPERIMENTAL_DOCKER_NETWORK=kind-with-extrernal-etcd + kind create cluster --config kind-with-tracing.yaml --name kind-with-external-etcd + ``` + +1. Exercise Kubernetes API. For example, build and run Conformance tests from Kubernetes repository (this usually takes 30-40m or will time out after 1 hour): -``` +```shell export KUBECONFIG="$(pwd)/kind-with-tracing-config" -kind export kubeconfig +kind export kubeconfig --name kind-with-external-etcd make WHAT="test/e2e/e2e.test" -./_output/bin/e2e.test -context kind-kind -ginkgo.focus=".*Conformance" -num-nodes 2 +./_output/bin/e2e.test \ + -context kind-kind-with-external-etcd \ + -ginkgo.focus="\[sig-apps\].*Conformance" \ + -num-nodes 2 ``` -3\. Download traces and put them into `tests/robustness/coverage/testdata` +1. Download traces and put them into `tests/robustness/coverage/testdata` directory in Etcd git repository: -``` -kubectl port-forward jaeger --address localhost --address :: 16686:16686 & +```shell curl -v --get --retry 10 --retry-connrefused -o testdata/demo_traces.json \ -H "Content-Type: application/json" \ --data-urlencode "query.start_time_min=$(date --date="5 days ago" -Ins)" \ - --data-urlencode "query.start_time_max=$(date -Ins)" \ + --data-urlencode "query.start_time_max=$(date --date="2 minutes ago" -Ins)" \ --data-urlencode "query.service_name=etcd" \ - "http://127.0.0.1:16686/api/v3/traces" -kill $! + "http://192.168.32.1:16686/api/v3/traces" ``` -4\. Run Go test +1. Run Go test -``` +```shell go test -v -timeout 60s go.etcd.io/etcd/tests/v3/robustness/coverage ``` +1. Clean up the environment + +```shell +kind delete cluster --name kind-with-external-etcd +docker network rm kind-with-external-etcd +``` + ### Automated test execution -Work on improving these tests is tracked in https://github.com/etcd-io/etcd/issues/20182 +Work on improving these tests is tracked in [#20182](https://github.com/etcd-io/etcd/issues/20182). diff --git a/tests/robustness/coverage/apiserver-shared-conf/tracing.yaml b/tests/robustness/coverage/apiserver-shared-conf/tracing.yaml new file mode 100644 index 000000000000..d0f87e0df336 --- /dev/null +++ b/tests/robustness/coverage/apiserver-shared-conf/tracing.yaml @@ -0,0 +1,5 @@ +--- +apiVersion: apiserver.config.k8s.io/v1beta1 +kind: TracingConfiguration +endpoint: 192.168.32.1:4317 +samplingRatePerMillion: 1000000 diff --git a/tests/robustness/coverage/kind-with-tracing.yaml b/tests/robustness/coverage/kind-with-tracing.yaml index 612452821b13..bafaf55dcfb9 100644 --- a/tests/robustness/coverage/kind-with-tracing.yaml +++ b/tests/robustness/coverage/kind-with-tracing.yaml @@ -1,17 +1,27 @@ --- kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 +featureGates: + "APIServerTracing": true nodes: - role: control-plane + extraMounts: + - hostPath: apiserver-shared-conf + containerPath: /apiserver-shared-conf + readOnly: true kubeadmConfigPatches: - | kind: ClusterConfiguration etcd: - local: + external: + endpoints: + - http://192.168.32.1:2379 + apiServer: extraArgs: - experimental-enable-distributed-tracing: "true" - experimental-distributed-tracing-address: "0.0.0.0:4317" - experimental-distributed-tracing-service-name: "etcd" - experimental-distributed-tracing-sampling-rate: "1000000" + tracing-config-file: "/apiserver-shared-conf/tracing.yaml" + extraVolumes: + - name: tracing + hostPath: "/apiserver-shared-conf" + mountPath: "/apiserver-shared-conf" - role: worker - role: worker From e5440caeb2ed4b15be89533c6f35182e53138355 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Mon, 25 Aug 2025 14:13:27 +0200 Subject: [PATCH 0464/1068] Add leases analysis Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/coverage_test.go | 150 ++++++++++++++++++--- 1 file changed, 130 insertions(+), 20 deletions(-) diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index 9e19479b1181..86b601460a5d 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -61,9 +61,14 @@ type Row struct { const notMatched byte = ' ' -var referenceUsageOfEtcdAPI = map[string]refOp{ +type leaseRow struct { + SumUses int + SumTTL int + Calls int +} + +var referenceUsageOfWatchAndKV = map[string]refOp{ "etcdserverpb.KV/Range": { - // All calls should go through etcd-k8s interface args: []column{ {name: "limit", matcher: isLimitSet}, {name: "rangeEnd", matcher: isRangeEndSet}, @@ -114,7 +119,6 @@ var referenceUsageOfEtcdAPI = map[string]refOp{ }, }, "etcdserverpb.KV/Txn": { - // All calls should go through etcd-k8s interface args: []column{ {name: "getOnFailure", matcher: keyIsEqualInt("failure_len", 1)}, {name: "readOnly", matcher: isReadOnly}, @@ -132,8 +136,6 @@ var referenceUsageOfEtcdAPI = map[string]refOp{ }, }, "etcdserverpb.KV/Compact": { - // Compaction should move to using internal Etcd mechanism - // Discussed in https://github.com/kubernetes/kubernetes/issues/80513 args: []column{ {name: "rev", matcher: isRevisionSet}, {name: "physical", matcher: boolAttrSet("is_physical")}, @@ -143,7 +145,6 @@ var referenceUsageOfEtcdAPI = map[string]refOp{ }, }, "etcdserverpb.Watch/Watch": { - // Not part of the contract interface (yet) args: []column{ {name: "range_end", matcher: isRangeEndSet}, {name: "start_rev", matcher: intAttrSet("start_rev")}, @@ -156,12 +157,6 @@ var referenceUsageOfEtcdAPI = map[string]refOp{ {name: "Watch", matcher: notMatcher(keyIsEqualStr("key", "compact_rev_key"))}, }, }, - "etcdserverpb.Lease/LeaseGrant": { - // Used to manage masterleases and events - }, - "etcdserverpb.Maintenance/Status": { - // Used to expose database size on apiserver's metrics endpoint - }, } func TestInterfaceUse(t *testing.T) { @@ -195,25 +190,35 @@ func testInterfaceUse(t *testing.T, filename string) { spansByID := spansMap(t, dump.Result.GetResourceSpans()) callsByOperationName, countsByGRPC := callsMap(spansByID) t.Logf("\n%s", printableCallTable(countsByGRPC)) + spansByLeaseID := leaseMap(callsByOperationName) t.Run("only_expected_methods_were_called", func(t *testing.T) { + expectedEtcdMethodsCalled := map[string]bool{ + // All calls should go through etcd-k8s interface + "etcdserverpb.KV/Range": true, + "etcdserverpb.KV/Txn": true, + // Not part of the contract interface (yet) + "etcdserverpb.Watch/Watch": true, + // Compaction should move to using internal Etcd mechanism + // Discussed in https://github.com/kubernetes/kubernetes/issues/80513 + "etcdserverpb.KV/Compact": true, + // Used to manage masterleases and events + "etcdserverpb.Lease/LeaseGrant": true, + // Used to expose database size on apiserver's metrics endpoint + "etcdserverpb.Maintenance/Status": true, + } + for opName, count := range countsByGRPC { - if _, ok := referenceUsageOfEtcdAPI[opName]; !ok { + if _, ok := expectedEtcdMethodsCalled[opName]; !ok { t.Errorf("unexpected %d calls to method: %s", count, opName) } } }) - - for op, td := range referenceUsageOfEtcdAPI { + for op, td := range referenceUsageOfWatchAndKV { t.Run(op, func(t *testing.T) { if _, ok := countsByGRPC[op]; !ok { t.Fatalf("expected %q method to be called at least once", op) } - - if len(td.args) == 0 { - return - } - // tracesWithNoMethod ensures that we print error only once when a // new call pattern is found. tracesWithNoMethod := make(map[string]bool) @@ -245,6 +250,40 @@ func testInterfaceUse(t *testing.T, filename string) { t.Logf("\n%s", printableMatcherTable(td.args, callCounts, contractCallCounts)) }) } + + t.Run("etcdserverpb.Lease/LeaseGrant", func(t *testing.T) { + op := "etcdserverpb.Lease/LeaseGrant" + if _, ok := countsByGRPC[op]; !ok { + t.Fatalf("expected %q method to be called at least once", op) + } + callCounts := make(map[string]leaseRow) + for _, span := range callsByOperationName[op] { + leaseID, lFound := intAttr(span, "id") + if !lFound { + t.Errorf("Lease without ID: %v", span) + continue + } + txns := spansByLeaseID[leaseID] + + pattern, pFound := extractPatternFromTxns(txns) + if !pFound { + t.Errorf("New key pattern detected: %s", pattern) + continue + } + row := callCounts[pattern] + ttl, found := intAttr(span, "ttl") + if !found { + t.Errorf("Lease without TTL: %v", span) + continue + } + row.SumTTL += ttl + row.SumUses += len(txns) + row.Calls++ + callCounts[pattern] = row + } + + t.Logf("\n%s", printableLeaseTable(callCounts)) + }) } func callsMap(spansByID map[string]*tracev1.Span) (map[string][]*tracev1.Span, map[string]int) { @@ -310,6 +349,46 @@ func spansMap(t *testing.T, traces []*tracev1.ResourceSpans) map[string]*tracev1 return spansByID } +func leaseMap(callsByOperationName map[string][]*tracev1.Span) map[int][]*tracev1.Span { + ret := make(map[int][]*tracev1.Span) + for _, leaseSpan := range callsByOperationName["etcdserverpb.Lease/LeaseGrant"] { + leaseID, lFound := intAttr(leaseSpan, "id") + if !lFound { + continue + } + ret[leaseID] = nil + } + for _, txnSpan := range callsByOperationName["etcdserverpb.KV/Txn"] { + leaseID, lFound := intAttr(txnSpan, "success_first_lease") + if !lFound { + continue + } + ret[leaseID] = append(ret[leaseID], txnSpan) + } + return ret +} + +func extractPatternFromTxns(txns []*tracev1.Span) (string, bool) { + patterns := make(map[string]int) + for _, txn := range txns { + key, kFound := strAttr(txn, "success_first_key") + if kFound { + p, pFound := pattern(key) + if !pFound { + return key, false + } + patterns[p]++ + } + } + if len(patterns) > 1 { + return "multiple key patterns", false + } + for p := range patterns { + return p, true + } + return "no pattern found", false +} + func extractPattern(span *tracev1.Span, key string) (string, bool) { if key == "" { return "", true @@ -449,3 +528,34 @@ func printableMatcherTable(cols []column, res map[Row]int, contract map[Row]int) table.Render() return buf.String() } + +func printableLeaseTable(callCounts map[string]leaseRow) string { + hdr := []string{"pattern", "avg uses", "avg ttl", "calls", "percent"} + buf := new(bytes.Buffer) + alignment := make([]tw.Align, len(hdr)) + alignment[0] = tw.AlignLeft + cfgBuilder := tablewriter.NewConfigBuilder(). + WithRowAlignment(tw.AlignRight). + Row().Alignment().WithPerColumn(alignment).Build() + table := tablewriter.NewTable(buf, tablewriter.WithConfig(cfgBuilder.Build())) + table.Header(hdr) + + totalCalls := 0 + for _, row := range callCounts { + totalCalls += row.Calls + } + + for pattern, row := range callCounts { + table.Append( + pattern, + fmt.Sprintf("%.1f", float64(row.SumUses)/float64(row.Calls)), + fmt.Sprintf("%.1f", float64(row.SumTTL)/float64(row.Calls)), + strconv.Itoa(row.Calls), + fmt.Sprintf("%.2f%%", float64(row.Calls*100)/float64(totalCalls)), + ) + } + + table.Footer([]string{3: strconv.Itoa(totalCalls), 4: "100.00%"}) + table.Render() + return buf.String() +} From 166cf1baf4a7ed8870c6ddcdd7e3a4246a86f906 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Aug 2025 07:19:07 +0000 Subject: [PATCH 0465/1068] build(deps): bump github/codeql-action from 3.29.10 to 3.29.11 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.10 to 3.29.11. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/96f518a34f7a870018057716cc4d7a5c014bd61c...3c3833e0f8c1c83d449a7478aa59c036a9165498) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.29.11 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 72e930721c52..cc7073f0e51b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@96f518a34f7a870018057716cc4d7a5c014bd61c # v3.29.5 + uses: github/codeql-action/init@3c3833e0f8c1c83d449a7478aa59c036a9165498 # v3.29.5 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@96f518a34f7a870018057716cc4d7a5c014bd61c # v3.29.5 + uses: github/codeql-action/autobuild@3c3833e0f8c1c83d449a7478aa59c036a9165498 # v3.29.5 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@96f518a34f7a870018057716cc4d7a5c014bd61c # v3.29.5 + uses: github/codeql-action/analyze@3c3833e0f8c1c83d449a7478aa59c036a9165498 # v3.29.5 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 675436084639..e3e482984568 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@96f518a34f7a870018057716cc4d7a5c014bd61c # v3.29.5 + uses: github/codeql-action/upload-sarif@3c3833e0f8c1c83d449a7478aa59c036a9165498 # v3.29.5 with: sarif_file: results.sarif From d6da7d0b3f601fa60c2cf11155ea826d9e43efb3 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 27 Aug 2025 19:31:14 +0000 Subject: [PATCH 0466/1068] dependency: bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.27.1 to 2.27.2, google.golang.org/grpc from 1.74.2 to 1.75.0, and google.golang.org/genproto/googleapis/rpc from v0.0.0-20250728155136-f173205681a0 to v0.0.0-20250818200422-3122310a409c Reference: - https://github.com/etcd-io/etcd/pull/20562 - https://github.com/etcd-io/etcd/pull/20556 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 11 +++++------ api/go.sum | 19 +++++++++++-------- cache/go.mod | 8 ++++---- cache/go.sum | 18 ++++++++++-------- client/v3/go.mod | 11 ++++------- client/v3/go.sum | 22 ++++++++++++---------- etcdctl/go.mod | 8 ++++---- etcdctl/go.sum | 18 ++++++++++-------- etcdutl/go.mod | 8 ++++---- etcdutl/go.sum | 22 ++++++++++++---------- go.mod | 8 ++++---- go.sum | 22 ++++++++++++---------- pkg/go.mod | 5 ++--- pkg/go.sum | 10 ++++++---- server/go.mod | 8 ++++---- server/go.sum | 22 ++++++++++++---------- tests/go.mod | 8 ++++---- tests/go.sum | 22 ++++++++++++---------- tools/mod/go.mod | 9 +++++---- tools/mod/go.sum | 18 ++++++++++-------- tools/testgrid-analysis/go.mod | 6 ++---- tools/testgrid-analysis/go.sum | 10 ++++++---- 22 files changed, 155 insertions(+), 138 deletions(-) diff --git a/api/go.mod b/api/go.mod index 48099e4715aa..9877a266d592 100644 --- a/api/go.mod +++ b/api/go.mod @@ -8,23 +8,22 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 github.com/stretchr/testify v1.10.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 - google.golang.org/grpc v1.74.2 + google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c + google.golang.org/grpc v1.75.0 google.golang.org/protobuf v1.36.7 ) require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/kr/text v0.2.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - go.opentelemetry.io/otel v1.37.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 8dfd91805967..aa4c334f0cb5 100644 --- a/api/go.sum +++ b/api/go.sum @@ -1,5 +1,6 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= @@ -14,8 +15,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -73,12 +74,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= -google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/cache/go.mod b/cache/go.mod index bd2dcb5e91b6..9d5a44652833 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -16,16 +16,16 @@ require ( github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/grpc v1.74.2 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/grpc v1.75.0 // indirect google.golang.org/protobuf v1.36.7 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index 888b461480d2..ee2880fe42da 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -27,8 +27,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= @@ -96,12 +96,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= -google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index f654c560aa10..96f89101ed61 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.74.2 + google.golang.org/grpc v1.75.0 sigs.k8s.io/yaml v1.6.0 ) @@ -25,22 +25,19 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.16.1 // indirect - go.opentelemetry.io/otel/metric v1.37.0 // indirect - go.opentelemetry.io/otel/sdk v1.37.0 // indirect - go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect google.golang.org/protobuf v1.36.7 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index c5b0ac6d5e75..e21cbfcc94b2 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -27,8 +27,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= @@ -77,8 +77,8 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= -go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= -go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -110,12 +110,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= -google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index de812cf312df..9ec1e764a5ba 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.12.0 - google.golang.org/grpc v1.74.2 + google.golang.org/grpc v1.75.0 ) require ( @@ -29,7 +29,7 @@ require ( github.com/fatih/color v1.18.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -42,8 +42,8 @@ require ( golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect google.golang.org/protobuf v1.36.7 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 6cba9dbe2e40..0fcd17799dcb 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -36,8 +36,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -137,12 +137,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= -google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index c6a6cc94cf8b..00fdf8ced96d 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -54,7 +54,7 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -90,9 +90,9 @@ require ( golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect golang.org/x/time v0.12.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/grpc v1.74.2 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/grpc v1.75.0 // indirect google.golang.org/protobuf v1.36.7 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 49bf4e2d4bbf..c68b821cdaf0 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -43,8 +43,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -141,8 +141,8 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= -go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= -go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -183,12 +183,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= -google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index 49636bdae820..de905e5a9257 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.12.0 - google.golang.org/grpc v1.74.2 + google.golang.org/grpc v1.75.0 google.golang.org/protobuf v1.36.7 ) @@ -60,7 +60,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -97,8 +97,8 @@ require ( golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/go.sum b/go.sum index fd3c43b38ead..26a9c3c0f2d3 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -183,8 +183,8 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= -go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= -go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -242,22 +242,24 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= -google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/go.mod b/pkg/go.mod index 5dd71a83c431..a2d0c3e90e06 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -14,7 +14,7 @@ require ( go.opentelemetry.io/otel/trace v1.37.0 go.uber.org/zap v1.27.0 golang.org/x/sys v0.35.0 - google.golang.org/grpc v1.74.2 + google.golang.org/grpc v1.75.0 ) require ( @@ -23,11 +23,10 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.opentelemetry.io/otel v1.37.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect google.golang.org/protobuf v1.36.7 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index d8a0d3c54837..c6b2acf54699 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -60,10 +60,12 @@ golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= -google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index e713c09c1352..551f9f034b54 100644 --- a/server/go.mod +++ b/server/go.mod @@ -16,7 +16,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.23.0 github.com/prometheus/client_model v0.6.2 @@ -40,8 +40,8 @@ require ( golang.org/x/crypto v0.41.0 golang.org/x/net v0.43.0 golang.org/x/time v0.12.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 - google.golang.org/grpc v1.74.2 + google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c + google.golang.org/grpc v1.75.0 google.golang.org/protobuf v1.36.7 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.6.0 @@ -72,7 +72,7 @@ require ( go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index b0e46b25d624..c4a1407df83c 100644 --- a/server/go.sum +++ b/server/go.sum @@ -43,8 +43,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -126,8 +126,8 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= -go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= -go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -167,12 +167,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= -google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index 0ecf80862d16..b12748bac27d 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -24,7 +24,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 github.com/olekukonko/tablewriter v1.0.9 github.com/prometheus/client_golang v1.23.0 github.com/prometheus/client_model v0.6.2 @@ -50,7 +50,7 @@ require ( golang.org/x/crypto v0.41.0 golang.org/x/sync v0.16.0 golang.org/x/time v0.12.0 - google.golang.org/grpc v1.74.2 + google.golang.org/grpc v1.75.0 google.golang.org/protobuf v1.36.7 ) @@ -100,8 +100,8 @@ require ( golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index d9ecbcb0db7a..ddbfb008cc9f 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -77,8 +77,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -189,8 +189,8 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= -go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= -go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -248,22 +248,24 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= -google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 6d87e94dcfb0..936b995ef5a4 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -13,7 +13,7 @@ require ( github.com/golangci/golangci-lint v1.64.8 github.com/google/addlicense v1.2.0 github.com/google/yamlfmt v0.17.2 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 @@ -213,6 +213,7 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect @@ -225,9 +226,9 @@ require ( golang.org/x/tools v0.35.0 // indirect golang.org/x/tools/go/expect v0.1.1-deprecated // indirect golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/grpc v1.74.2 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/grpc v1.75.0 // indirect google.golang.org/protobuf v1.36.7 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 2d5bf4bfb8e7..221bc12c72e0 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -220,8 +220,8 @@ github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= @@ -527,6 +527,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -690,12 +692,12 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= -google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index c26588f63747..fb4348bcbcec 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -15,11 +15,9 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.7 // indirect - go.opentelemetry.io/otel v1.37.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/grpc v1.74.2 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/grpc v1.75.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 1dc9696585bf..f7f192b01f99 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1607,6 +1607,8 @@ gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJ gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= @@ -1842,8 +1844,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1889,8 +1891,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= -google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 24844359b13d5353e02221af1fd9e3a5c30438b6 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 27 Aug 2025 19:33:07 +0000 Subject: [PATCH 0467/1068] dependency: bump github.com/stretchr/testify from 1.10.0 to 1.11.0 Reference: - https://github.com/etcd-io/etcd/pull/20561 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.sum | 4 ++-- client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 21 files changed, 32 insertions(+), 32 deletions(-) diff --git a/api/go.mod b/api/go.mod index 9877a266d592..6ea1c5fe6cda 100644 --- a/api/go.mod +++ b/api/go.mod @@ -9,7 +9,7 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c google.golang.org/grpc v1.75.0 google.golang.org/protobuf v1.36.7 diff --git a/api/go.sum b/api/go.sum index aa4c334f0cb5..7e43eae2ddda 100644 --- a/api/go.sum +++ b/api/go.sum @@ -27,8 +27,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= +github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/cache/go.sum b/cache/go.sum index ee2880fe42da..a00de7d6d626 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -43,8 +43,8 @@ github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2 github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= +github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 43e0c9f7b3e7..0a39b41f527c 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -6,7 +6,7 @@ toolchain go1.24.3 require ( github.com/coreos/go-systemd/v22 v22.5.0 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.0 go.uber.org/zap v1.27.0 golang.org/x/sys v0.35.0 ) diff --git a/client/pkg/go.sum b/client/pkg/go.sum index f0b3536864b8..4338a1efcf5b 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -17,8 +17,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= +github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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= diff --git a/client/v3/go.mod b/client/v3/go.mod index 96f89101ed61..fbec7c42f984 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -9,7 +9,7 @@ require ( github.com/dustin/go-humanize v1.0.1 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/prometheus/client_golang v1.23.0 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 diff --git a/client/v3/go.sum b/client/v3/go.sum index e21cbfcc94b2..ce8a4ff9f215 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -53,8 +53,8 @@ github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzM github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= +github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 9ec1e764a5ba..91d62945ee54 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -11,7 +11,7 @@ require ( github.com/olekukonko/tablewriter v1.0.9 github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.7 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 0fcd17799dcb..7ed38eb596ce 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -81,8 +81,8 @@ github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wx github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= +github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 00fdf8ced96d..95022f0d3fef 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -25,7 +25,7 @@ require ( github.com/dustin/go-humanize v1.0.1 github.com/olekukonko/tablewriter v1.0.9 github.com/spf13/cobra v1.9.1 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.0 go.etcd.io/bbolt v1.4.3 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 diff --git a/etcdutl/go.sum b/etcdutl/go.sum index c68b821cdaf0..2147e9b2e589 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -101,8 +101,8 @@ github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= +github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= diff --git a/go.mod b/go.mod index de905e5a9257..c8779a840a07 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 github.com/spf13/cobra v1.9.1 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.0 go.etcd.io/bbolt v1.4.3 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 diff --git a/go.sum b/go.sum index 26a9c3c0f2d3..cd821ce114e2 100644 --- a/go.sum +++ b/go.sum @@ -138,8 +138,8 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= +github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= diff --git a/pkg/go.mod b/pkg/go.mod index a2d0c3e90e06..e8ad28d5e016 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -9,7 +9,7 @@ require ( github.com/dustin/go-humanize v1.0.1 github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.7 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.37.0 go.uber.org/zap v1.27.0 diff --git a/pkg/go.sum b/pkg/go.sum index c6b2acf54699..45d93ad3e7b0 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -34,8 +34,8 @@ github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wx github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= +github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= diff --git a/server/go.mod b/server/go.mod index 551f9f034b54..dec1ac36f359 100644 --- a/server/go.mod +++ b/server/go.mod @@ -22,7 +22,7 @@ require ( github.com/prometheus/client_model v0.6.2 github.com/soheilhy/cmux v0.1.5 github.com/spf13/cobra v1.9.1 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.0 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 go.etcd.io/bbolt v1.4.3 diff --git a/server/go.sum b/server/go.sum index c4a1407df83c..2b6f984f0083 100644 --- a/server/go.sum +++ b/server/go.sum @@ -86,8 +86,8 @@ github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= +github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= diff --git a/tests/go.mod b/tests/go.mod index b12748bac27d..3a55dce8be3c 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -30,7 +30,7 @@ require ( github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.65.0 github.com/soheilhy/cmux v0.1.5 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.0 go.etcd.io/bbolt v1.4.3 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/cache/v3 v3.6.1 diff --git a/tests/go.sum b/tests/go.sum index ddbfb008cc9f..4ccd7b36cf81 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -144,8 +144,8 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= +github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 936b995ef5a4..ea849461a99d 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -187,7 +187,7 @@ require ( github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/stretchr/testify v1.10.0 // indirect + github.com/stretchr/testify v1.11.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/tdakkota/asciicheck v0.4.1 // indirect github.com/tetafro/godot v1.5.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 221bc12c72e0..ce6528e76179 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -445,8 +445,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= +github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/tdakkota/asciicheck v0.4.1 h1:bm0tbcmi0jezRA2b5kg4ozmMuGAFotKI3RZfrhfovg8= From 010549fb9847c48d25d22d8957e31999b8d30604 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Wed, 27 Aug 2025 09:12:08 +0200 Subject: [PATCH 0468/1068] Split Optimistic Put and Delete in traces analysis. Also add lease information to Txn details table. Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/coverage_test.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index 86b601460a5d..1d73ef5850ff 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -122,6 +122,7 @@ var referenceUsageOfWatchAndKV = map[string]refOp{ args: []column{ {name: "getOnFailure", matcher: keyIsEqualInt("failure_len", 1)}, {name: "readOnly", matcher: isReadOnly}, + {name: "lease", matcher: intAttrSet("success_first_lease")}, }, keyAttrName: "compare_first_key", methods: []method{ @@ -130,8 +131,22 @@ var referenceUsageOfWatchAndKV = map[string]refOp{ matcher: keyIsEqualStr("compare_first_key", "compact_rev_key"), }, { - name: "OptimisticPutOrDelete", - matcher: andMatcher(keyIsEqualInt("compare_len", 1), keyIsEqualInt("success_len", 1), notMatcher(isReadOnly)), + name: "OptimisticPut", + matcher: andMatcher( + keyIsEqualInt("compare_len", 1), + keyIsEqualInt("success_len", 1), + keyIsEqualStr("success_first_type", "put"), + notMatcher(isReadOnly), + ), + }, + { + name: "OptimisticDelete", + matcher: andMatcher( + keyIsEqualInt("compare_len", 1), + keyIsEqualInt("success_len", 1), + keyIsEqualStr("success_first_type", "delete_range"), + notMatcher(isReadOnly), + ), }, }, }, From d0bc69c0f5be7799f0362db4c5926a58b515a2b9 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Tue, 26 Aug 2025 17:14:28 +0000 Subject: [PATCH 0469/1068] cache: rename TestCacheWithoutPrefixGet test cases for clarity Signed-off-by: Peter Chang --- tests/integration/cache_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 28191569b565..97eb12c8959c 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -490,9 +490,9 @@ func TestCacheWithoutPrefixGet(t *testing.T) { name string initialEvents, followupEvents []*clientv3.Event }{ - {"empty cache", nil, TestGetEvents}, - {"partial load", filterEvents(TestGetEvents, revLessThan(4)), filterEvents(TestGetEvents, revGreaterEqual(4))}, - {"complete load", TestGetEvents, nil}, + {"watch-early (no pre-events)", nil, TestGetEvents}, + {"watch-mid (partial pre-events)", filterEvents(TestGetEvents, revLessThan(4)), filterEvents(TestGetEvents, revGreaterEqual(4))}, + {"watch-late (all pre-events)", TestGetEvents, nil}, } for _, tc := range tcs { From 58b4a08205df77693817bd62e663bd9f9fc99d6f Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 27 Aug 2025 19:35:36 +0000 Subject: [PATCH 0470/1068] dependency: bump github.com/coreos/go-systemd/v22 from 22.5.0 to 22.6.0 Reference: - https://github.com/etcd-io/etcd/pull/20558 Signed-off-by: Chun-Hung Tseng --- cache/go.mod | 2 +- cache/go.sum | 5 ++--- client/pkg/go.mod | 2 +- client/pkg/go.sum | 5 ++--- client/v3/go.mod | 2 +- client/v3/go.sum | 5 ++--- etcdctl/go.mod | 2 +- etcdctl/go.sum | 5 ++--- etcdutl/go.mod | 2 +- etcdutl/go.sum | 5 ++--- go.mod | 2 +- go.sum | 5 ++--- pkg/go.mod | 2 +- pkg/go.sum | 5 ++--- server/go.mod | 2 +- server/go.sum | 5 ++--- tests/go.mod | 2 +- tests/go.sum | 5 ++--- 18 files changed, 27 insertions(+), 36 deletions(-) diff --git a/cache/go.mod b/cache/go.mod index 9d5a44652833..67b4f9b606e7 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -13,7 +13,7 @@ require ( require ( github.com/coreos/go-semver v0.3.1 // indirect - github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect diff --git a/cache/go.sum b/cache/go.sum index a00de7d6d626..750eccb2b1de 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -4,15 +4,14 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 0a39b41f527c..86e22becc30a 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -5,7 +5,7 @@ go 1.24 toolchain go1.24.3 require ( - github.com/coreos/go-systemd/v22 v22.5.0 + github.com/coreos/go-systemd/v22 v22.6.0 github.com/stretchr/testify v1.11.0 go.uber.org/zap v1.27.0 golang.org/x/sys v0.35.0 diff --git a/client/pkg/go.sum b/client/pkg/go.sum index 4338a1efcf5b..188b7aed52dc 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -1,9 +1,8 @@ -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= diff --git a/client/v3/go.mod b/client/v3/go.mod index fbec7c42f984..ab8d6980ea78 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -20,7 +20,7 @@ require ( require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index ce8a4ff9f215..2a883e386185 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -4,8 +4,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= @@ -14,7 +14,6 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 91d62945ee54..e6e8e5446046 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -24,7 +24,7 @@ require ( require ( github.com/VividCortex/ewma v1.2.0 // indirect github.com/coreos/go-semver v0.3.1 // indirect - github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 7ed38eb596ce..54609e59ea68 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -10,8 +10,8 @@ github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -23,7 +23,6 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 95022f0d3fef..6dec57192334 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -40,7 +40,7 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v5 v5.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect github.com/go-logr/logr v1.4.3 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 2147e9b2e589..78ccae696399 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -8,8 +8,8 @@ github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD9 github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -24,7 +24,6 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= diff --git a/go.mod b/go.mod index c8779a840a07..41863b35fd6f 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v5 v5.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect github.com/go-logr/logr v1.4.3 // indirect diff --git a/go.sum b/go.sum index cd821ce114e2..92ebb3091de4 100644 --- a/go.sum +++ b/go.sum @@ -19,8 +19,8 @@ github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD9 github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -42,7 +42,6 @@ github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ4 github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= diff --git a/pkg/go.mod b/pkg/go.mod index e8ad28d5e016..09535bbc3189 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -18,7 +18,7 @@ require ( ) require ( - github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 45d93ad3e7b0..92e7947e498c 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -1,5 +1,5 @@ -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= @@ -11,7 +11,6 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= diff --git a/server/go.mod b/server/go.mod index dec1ac36f359..ef7b27eb7b1d 100644 --- a/server/go.mod +++ b/server/go.mod @@ -6,7 +6,7 @@ toolchain go1.24.3 require ( github.com/coreos/go-semver v0.3.1 - github.com/coreos/go-systemd/v22 v22.5.0 + github.com/coreos/go-systemd/v22 v22.6.0 github.com/dustin/go-humanize v1.0.1 github.com/gogo/protobuf v1.3.2 github.com/golang-jwt/jwt/v5 v5.3.0 diff --git a/server/go.sum b/server/go.sum index 2b6f984f0083..1d0329b6d09f 100644 --- a/server/go.sum +++ b/server/go.sum @@ -8,8 +8,8 @@ github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD9 github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -22,7 +22,6 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= diff --git a/tests/go.mod b/tests/go.mod index 3a55dce8be3c..6487e514d21b 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -61,7 +61,7 @@ require ( github.com/cenkalti/backoff/v5 v5.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cheggaaa/pb/v3 v3.1.7 // indirect - github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/creack/pty v1.1.18 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dustin/go-humanize v1.0.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index 4ccd7b36cf81..8dc551bf6f82 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -23,8 +23,8 @@ github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD9 github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= @@ -48,7 +48,6 @@ github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ4 github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= From a4e83264dd9b15d0efbe7746ff207ce4d7726f9d Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Wed, 27 Aug 2025 09:20:02 +0200 Subject: [PATCH 0471/1068] Add new Etcd API usage in Kubernetes 1.34 to trace analysis Also tighten some matchers to better detect any future changes. Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/coverage_test.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index 1d73ef5850ff..fcb1641f929c 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -101,6 +101,14 @@ var referenceUsageOfWatchAndKV = map[string]refOp{ notMatcher(orMatcher(isKeysOnly, isLimitSet, isRevisionSet)), ), }, + { + name: "Keys", + matcher: andMatcher( + isKeysOnly, + isRangeEndSet, + notMatcher(orMatcher(isCountOnly, isLimitSet, isRevisionSet)), + ), + }, { name: "List", matcher: andMatcher( @@ -169,7 +177,13 @@ var referenceUsageOfWatchAndKV = map[string]refOp{ }, keyAttrName: "key", methods: []method{ - {name: "Watch", matcher: notMatcher(keyIsEqualStr("key", "compact_rev_key"))}, + {name: "Compaction", matcher: keyIsEqualStr("key", "compact_rev_key")}, + {name: "Watch", matcher: andMatcher( + isRangeEndSet, + intAttrSet("start_rev"), + boolAttrSet("prev_kv"), + notMatcher(boolAttrSet("fragment")), + )}, }, }, } From da1f96b60b32ef0a554de754f675fbc420fd0f76 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 27 Aug 2025 19:36:44 +0000 Subject: [PATCH 0472/1068] dependency: bump google.golang.org/protobuf from 1.36.7 to 1.36.8 Reference: - https://github.com/etcd-io/etcd/pull/20557 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 22 files changed, 33 insertions(+), 33 deletions(-) diff --git a/api/go.mod b/api/go.mod index 6ea1c5fe6cda..3c618c765459 100644 --- a/api/go.mod +++ b/api/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.7 + google.golang.org/protobuf v1.36.8 ) require ( diff --git a/api/go.sum b/api/go.sum index 7e43eae2ddda..8cad9c87d75e 100644 --- a/api/go.sum +++ b/api/go.sum @@ -82,8 +82,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/cache/go.mod b/cache/go.mod index 67b4f9b606e7..3c8c29bbb7f6 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -26,7 +26,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect google.golang.org/grpc v1.75.0 // indirect - google.golang.org/protobuf v1.36.7 // indirect + google.golang.org/protobuf v1.36.8 // indirect ) replace ( diff --git a/cache/go.sum b/cache/go.sum index 750eccb2b1de..e610cbd6fb3b 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -103,8 +103,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/client/v3/go.mod b/client/v3/go.mod index ab8d6980ea78..e10d40ce97f6 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -38,7 +38,7 @@ require ( golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect - google.golang.org/protobuf v1.36.7 // indirect + google.golang.org/protobuf v1.36.8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 2a883e386185..6581d7d73b6a 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -117,8 +117,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index e6e8e5446046..3bd76b35305a 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -44,7 +44,7 @@ require ( golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect - google.golang.org/protobuf v1.36.7 // indirect + google.golang.org/protobuf v1.36.8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 54609e59ea68..5aa51112ec2f 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -144,8 +144,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 6dec57192334..9eb7ffca724e 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -93,7 +93,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect google.golang.org/grpc v1.75.0 // indirect - google.golang.org/protobuf v1.36.7 // indirect + google.golang.org/protobuf v1.36.8 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 78ccae696399..0a100c5e1c1b 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -190,8 +190,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/go.mod b/go.mod index 41863b35fd6f..ce11efa1cbda 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/time v0.12.0 google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.7 + google.golang.org/protobuf v1.36.8 ) require ( diff --git a/go.sum b/go.sum index 92ebb3091de4..64273e9fce1a 100644 --- a/go.sum +++ b/go.sum @@ -259,8 +259,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/go.mod b/pkg/go.mod index 09535bbc3189..b8de3220d68e 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -27,7 +27,7 @@ require ( golang.org/x/net v0.43.0 // indirect golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect - google.golang.org/protobuf v1.36.7 // indirect + google.golang.org/protobuf v1.36.8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index 92e7947e498c..a8384be0169e 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -65,8 +65,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/server/go.mod b/server/go.mod index ef7b27eb7b1d..f88b4ea6d2a0 100644 --- a/server/go.mod +++ b/server/go.mod @@ -42,7 +42,7 @@ require ( golang.org/x/time v0.12.0 google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.7 + google.golang.org/protobuf v1.36.8 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.6.0 ) diff --git a/server/go.sum b/server/go.sum index 1d0329b6d09f..170b511321a7 100644 --- a/server/go.sum +++ b/server/go.sum @@ -174,8 +174,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tests/go.mod b/tests/go.mod index 6487e514d21b..85e3e8d96ca6 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -51,7 +51,7 @@ require ( golang.org/x/sync v0.16.0 golang.org/x/time v0.12.0 google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.7 + google.golang.org/protobuf v1.36.8 ) require ( diff --git a/tests/go.sum b/tests/go.sum index 8dc551bf6f82..1945bb63e101 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -265,8 +265,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index ea849461a99d..1c3935af2430 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -229,7 +229,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect google.golang.org/grpc v1.75.0 // indirect - google.golang.org/protobuf v1.36.7 // indirect + google.golang.org/protobuf v1.36.8 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index ce6528e76179..d4a8d0ce7e5c 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -703,8 +703,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index fb4348bcbcec..33d40a9421c1 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -8,7 +8,7 @@ require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 github.com/google/go-github/v60 v60.0.0 github.com/spf13/cobra v1.9.1 - google.golang.org/protobuf v1.36.7 + google.golang.org/protobuf v1.36.8 ) require ( diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index f7f192b01f99..3d93926b6cb6 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1912,8 +1912,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 46a8e1612c530dda6bc7d05b5bca524453649c98 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Tue, 26 Aug 2025 13:37:33 +0000 Subject: [PATCH 0473/1068] cache: implement snapshots & enable cache.Get(rev>0) Signed-off-by: Peter Chang --- cache/cache.go | 10 +-- cache/snapshot.go | 58 ++++++++++++++++ cache/store.go | 114 ++++++++++++++++++-------------- cache/store_test.go | 83 +++++++++++++++++++---- tests/integration/cache_test.go | 83 +++++++++++++++++++++-- 5 files changed, 273 insertions(+), 75 deletions(-) create mode 100644 cache/snapshot.go diff --git a/cache/cache.go b/cache/cache.go index 9fd960d8f2d1..798b72540ac8 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -70,7 +70,7 @@ func New(client *clientv3.Client, prefix string, opts ...Option) (*Cache, error) cfg: cfg, watcher: client.Watcher, kv: client.KV, - store: newStore(cfg.BTreeDegree), + store: newStore(cfg.BTreeDegree, cfg.HistoryWindowSize), ready: newReady(), stop: cancel, internalCtx: internalCtx, @@ -160,13 +160,15 @@ func (c *Cache) Get(ctx context.Context, key string, opts ...clientv3.OpOption) startKey := []byte(key) endKey := op.RangeBytes() - kvs, rev, err := c.store.Get(startKey, endKey) + requestedRev := op.Rev() + + kvs, latestRev, err := c.store.Get(startKey, endKey, requestedRev) if err != nil { return nil, err } return &clientv3.GetResponse{ - Header: &pb.ResponseHeader{Revision: rev}, + Header: &pb.ResponseHeader{Revision: latestRev}, Kvs: kvs, Count: int64(len(kvs)), }, nil @@ -364,8 +366,6 @@ func (c *Cache) validateGet(key string, op clientv3.Op) (KeyPredicate, error) { case op.MaxCreateRev() != 0: return nil, fmt.Errorf("%w: MaxCreateRev(%d) not supported", ErrUnsupportedRequest, op.MaxCreateRev()) // cache now only serves serializable reads of the latest revision (rev == 0). - case op.Rev() != 0: - return nil, fmt.Errorf("%w: Rev(%d) not supported", ErrUnsupportedRequest, op.Rev()) case !op.IsSerializable(): return nil, fmt.Errorf("%w: non-serializable request", ErrUnsupportedRequest) } diff --git a/cache/snapshot.go b/cache/snapshot.go new file mode 100644 index 000000000000..ac6d71f828d4 --- /dev/null +++ b/cache/snapshot.go @@ -0,0 +1,58 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cache + +import ( + "github.com/google/btree" + + "go.etcd.io/etcd/api/v3/mvccpb" +) + +// snapshot captures a full, point-in-time view of the KV state at rev. +type snapshot struct { + rev int64 + tree *btree.BTree +} + +func newClonedSnapshot(rev int64, t *btree.BTree) *snapshot { + return &snapshot{rev: rev, tree: t.Clone()} +} + +func (s *snapshot) Range(startKey, endKey []byte) []*mvccpb.KeyValue { + var out []*mvccpb.KeyValue + switch { + case len(endKey) == 0: + if item := s.tree.Get(probeItemFromKey(startKey)); item != nil { + out = append(out, item.(*kvItem).kv) + } + case isPrefixScan(endKey): + s.tree.AscendGreaterOrEqual(probeItemFromKey(startKey), func(item btree.Item) bool { + out = append(out, item.(*kvItem).kv) + return true + }) + default: + s.tree.AscendRange(probeItemFromKey(startKey), probeItemFromKey(endKey), func(item btree.Item) bool { + out = append(out, item.(*kvItem).kv) + return true + }) + } + return out +} + +func isPrefixScan(endKey []byte) bool { + return len(endKey) == 1 && endKey[0] == 0 +} + +func probeItemFromKey(key []byte) *kvItem { return &kvItem{key: string(key)} } diff --git a/cache/store.go b/cache/store.go index 13d140cfa457..8717ac7f61fb 100644 --- a/cache/store.go +++ b/cache/store.go @@ -21,22 +21,27 @@ import ( "github.com/google/btree" "go.etcd.io/etcd/api/v3/mvccpb" + "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" ) var ErrNotReady = fmt.Errorf("cache: store not ready") +// The store keeps a bounded history of snapshots using ringBuffer so that +// reads at historical revisions can be served until they fall out of the window. type store struct { - mu sync.RWMutex - tree *btree.BTree - degree int - latestRev int64 + mu sync.RWMutex + degree int + latest snapshot // latest is the mutable working snapshot + history ringBuffer[*snapshot] // history stores immutable cloned snapshots } -func newStore(degree int) *store { +func newStore(degree int, historyCapacity int) *store { + tree := btree.New(degree) return &store{ - tree: btree.New(degree), - degree: degree, + degree: degree, + latest: snapshot{rev: 0, tree: tree}, + history: *newRingBuffer(historyCapacity, func(s *snapshot) int64 { return s.rev }), } } @@ -53,67 +58,83 @@ func (a *kvItem) Less(b btree.Item) bool { return a.key < b.(*kvItem).key } -func (s *store) Get(startKey, endKey []byte) ([]*mvccpb.KeyValue, int64, error) { +func (s *store) Get(startKey, endKey []byte, rev int64) ([]*mvccpb.KeyValue, int64, error) { + snapshot, latestRev, err := s.getSnapshot(rev) + if err != nil { + return nil, 0, err + } + return snapshot.Range(startKey, endKey), latestRev, nil +} + +func (s *store) getSnapshot(rev int64) (*snapshot, int64, error) { s.mu.RLock() defer s.mu.RUnlock() - if s.latestRev == 0 { + if s.latest.rev == 0 { return nil, 0, ErrNotReady } + if rev < 0 { + return nil, 0, fmt.Errorf("invalid revision: %d", rev) + } + if rev == 0 { + rev = s.latest.rev + } + if rev > s.latest.rev { + return nil, 0, rpctypes.ErrFutureRev + } + oldestRev := s.history.PeekOldest() + if rev < oldestRev { + return nil, 0, rpctypes.ErrCompacted + } - var out []*mvccpb.KeyValue - switch { - case len(endKey) == 0: - if item := s.tree.Get(probeItemFromBytes(startKey)); item != nil { - out = append(out, item.(*kvItem).kv) - } + var targetSnapshot *snapshot + s.history.AscendGreaterOrEqual(rev, func(rev int64, snap *snapshot) bool { + targetSnapshot = snap + return false + }) - case isPrefixScan(endKey): - s.tree.AscendGreaterOrEqual(probeItemFromBytes(startKey), func(item btree.Item) bool { - out = append(out, item.(*kvItem).kv) - return true - }) - - default: - s.tree.AscendRange(probeItemFromBytes(startKey), probeItemFromBytes(endKey), func(item btree.Item) bool { - out = append(out, item.(*kvItem).kv) - return true - }) - } - return out, s.latestRev, nil + return targetSnapshot, s.latest.rev, nil } +// Restore replaces state with the bootstrap snapshot and resets history. func (s *store) Restore(kvs []*mvccpb.KeyValue, rev int64) { s.mu.Lock() defer s.mu.Unlock() - s.tree = btree.New(s.degree) + s.latest.tree = btree.New(s.degree) for _, kv := range kvs { - s.tree.ReplaceOrInsert(newKVItem(kv)) + s.latest.tree.ReplaceOrInsert(newKVItem(kv)) } - s.latestRev = rev + s.history.RebaseHistory() + s.latest.rev = rev + s.history.Append(newClonedSnapshot(rev, s.latest.tree)) } func (s *store) Apply(events []*clientv3.Event) error { s.mu.Lock() defer s.mu.Unlock() - if err := validateRevisions(events, s.latestRev); err != nil { + if err := validateRevisions(events, s.latest.rev); err != nil { return err } - for _, ev := range events { - switch ev.Type { - case clientv3.EventTypeDelete: - if removed := s.tree.Delete(&kvItem{key: string(ev.Kv.Key)}); removed == nil { - return fmt.Errorf("cache: delete non-existent key %s", string(ev.Kv.Key)) + for i := 0; i < len(events); { + rev := events[i].Kv.ModRevision + + for i < len(events) && events[i].Kv.ModRevision == rev { + ev := events[i] + switch ev.Type { + case clientv3.EventTypeDelete: + if removed := s.latest.tree.Delete(&kvItem{key: string(ev.Kv.Key)}); removed == nil { + return fmt.Errorf("cache: delete non-existent key %s", string(ev.Kv.Key)) + } + case clientv3.EventTypePut: + s.latest.tree.ReplaceOrInsert(newKVItem(ev.Kv)) } - case clientv3.EventTypePut: - s.tree.ReplaceOrInsert(newKVItem(ev.Kv)) - } - if ev.Kv.ModRevision > s.latestRev { - s.latestRev = ev.Kv.ModRevision + i++ } + s.latest.rev = rev + s.history.Append(newClonedSnapshot(rev, s.latest.tree)) } return nil } @@ -121,12 +142,7 @@ func (s *store) Apply(events []*clientv3.Event) error { func (s *store) LatestRev() int64 { s.mu.RLock() defer s.mu.RUnlock() - return s.latestRev -} - -// isPrefixScan detects endKey=={0} semantics -func isPrefixScan(endKey []byte) bool { - return len(endKey) == 1 && endKey[0] == 0 + return s.latest.rev } func validateRevisions(events []*clientv3.Event, latestRev int64) error { @@ -144,5 +160,3 @@ func validateRevisions(events []*clientv3.Event, latestRev int64) error { } return nil } - -func probeItemFromBytes(b []byte) *kvItem { return &kvItem{key: string(b)} } diff --git a/cache/store_test.go b/cache/store_test.go index e1820985c254..4555d9f7e865 100644 --- a/cache/store_test.go +++ b/cache/store_test.go @@ -118,12 +118,12 @@ func TestStoreGet(t *testing.T) { for _, tt := range tests { test := tt t.Run(test.name, func(t *testing.T) { - s := newStore(8) + s := newStore(8, 32) if test.initialKVs != nil { s.Restore(test.initialKVs, test.initialRev) } - kvs, rev, err := s.Get(test.start, test.end) + kvs, rev, err := s.Get(test.start, test.end, 0) if test.expectedErr != nil { if !errors.Is(err, test.expectedErr) { @@ -276,7 +276,7 @@ func TestStoreApply(t *testing.T) { for _, tt := range tests { test := tt t.Run(test.name, func(t *testing.T) { - s := newStore(4) + s := newStore(4, 32) s.Restore(test.initialKVs, test.initialRev) var gotErr error @@ -295,7 +295,7 @@ func TestStoreApply(t *testing.T) { if latest := s.LatestRev(); latest != test.expectedLatestRev { t.Fatalf("LatestRev=%d; want %d", latest, test.expectedLatestRev) } - verifyStoreSnapshot(t, s, test.expectedSnapshot, test.expectedLatestRev) + verifyStoreSnapshot(t, s, test.expectedSnapshot, test.expectedLatestRev, 0) }) } } @@ -339,17 +339,73 @@ func TestStoreRestore(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - s := newStore(8) + s := newStore(8, 32) for _, step := range tt.seq { s.Restore(step.kvs, step.rev) } if tt.expectedRev == 0 { - if _, _, err := s.Get([]byte("/"), []byte{0}); !errors.Is(err, ErrNotReady) { + if _, _, err := s.Get([]byte("/"), []byte{0}, 0); !errors.Is(err, ErrNotReady) { t.Fatalf("Get after restore to rev=0 err=%v; want %v", err, ErrNotReady) } return } - verifyStoreSnapshot(t, s, tt.expectedSnap, tt.expectedRev) + verifyStoreSnapshot(t, s, tt.expectedSnap, tt.expectedRev, 0) + }) + } +} + +func TestRestoreAppendCloneImmutability(t *testing.T) { + tests := []struct { + name string + initialKVs []*mvccpb.KeyValue + initialRev int64 + events []*clientv3.Event + requestedRev int64 + expectedSnap []*mvccpb.KeyValue + expectedLatestSnap []*mvccpb.KeyValue + expectedLatestRev int64 + }{ + { + name: "put_overwrites_key", + initialKVs: []*mvccpb.KeyValue{makeKV("/k", "v1", 5)}, + initialRev: 5, + events: []*clientv3.Event{makePutEvent("/k", "v2", 6)}, + + requestedRev: 5, + expectedSnap: []*mvccpb.KeyValue{makeKV("/k", "v1", 5)}, + expectedLatestSnap: []*mvccpb.KeyValue{makeKV("/k", "v2", 6)}, + expectedLatestRev: 6, + }, + { + name: "delete_key", + initialKVs: []*mvccpb.KeyValue{makeKV("/k", "v1", 5)}, + initialRev: 5, + events: []*clientv3.Event{makeDelEvent("/k", 6)}, + + requestedRev: 5, + expectedSnap: []*mvccpb.KeyValue{makeKV("/k", "v1", 5)}, + expectedLatestSnap: nil, + expectedLatestRev: 6, + }, + } + + for _, tt := range tests { + test := tt + t.Run(test.name, func(t *testing.T) { + s := newStore(8, 32) + if test.initialKVs != nil { + s.Restore(test.initialKVs, test.initialRev) + } + if len(test.events) > 0 { + if err := s.Apply(test.events); err != nil { + t.Fatalf("Apply failed: %v", err) + } + } + + if test.requestedRev != 0 { + verifyStoreSnapshot(t, s, test.expectedSnap, test.expectedLatestRev, test.requestedRev) + } + verifyStoreSnapshot(t, s, test.expectedLatestSnap, test.expectedLatestRev, test.expectedLatestRev) }) } } @@ -366,15 +422,16 @@ func makeDelEvent(key string, rev int64) *clientv3.Event { return &clientv3.Event{Type: clientv3.EventTypeDelete, Kv: &mvccpb.KeyValue{Key: []byte(key), ModRevision: rev}} } -func verifyStoreSnapshot(t *testing.T, s *store, want []*mvccpb.KeyValue, wantRev int64) { - kvs, rev, err := s.Get([]byte("/"), []byte{0}) +func verifyStoreSnapshot(t *testing.T, s *store, want []*mvccpb.KeyValue, wantRev int64, requestedRev int64) { + kvs, headerRev, err := s.Get([]byte("/"), []byte{0}, requestedRev) if err != nil { - t.Fatalf("Get all keys: %v", err) + t.Fatalf("Get all keys (rev=%d): got error: %v", requestedRev, err) } - if rev != wantRev { - t.Fatalf("snapshot revision=%d; want %d", rev, wantRev) + latestRev := s.LatestRev() + if headerRev != latestRev { + t.Fatalf("header rev=%d; want latest %d (requestedRev=%d)", latestRev, wantRev, requestedRev) } if diff := cmp.Diff(want, kvs); diff != "" { - t.Fatalf("snapshot mismatch (-want +got):\n%s", diff) + t.Fatalf("snapshot mismatch (requestedRev=%d) (-want +got):\n%s", requestedRev, diff) } } diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 28191569b565..8beec190d661 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -25,6 +25,7 @@ import ( "github.com/google/go-cmp/cmp" "go.etcd.io/etcd/api/v3/mvccpb" + "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" cache "go.etcd.io/etcd/cache/v3" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/tests/v3/framework/integration" @@ -531,19 +532,19 @@ func TestGet(t *testing.T) { func testGet(t *testing.T, kv clientv3.KV, getReader func() Getter, initialEvents, followupEvents []*clientv3.Event) { ctx := t.Context() t.Log("Setup") - lastRev := applyEvents(ctx, t, kv, initialEvents) + initialRev := applyEvents(ctx, t, kv, initialEvents) reader := getReader() if c, ok := reader.(*cache.Cache); ok { - if err := c.WaitForRevision(ctx, lastRev); err != nil { - t.Fatalf("cache never caught up to rev %d: %v", lastRev, err) + if err := c.WaitForRevision(ctx, initialRev); err != nil { + t.Fatalf("cache never caught up to rev %d: %v", initialRev, err) } } - lastRev = applyEvents(ctx, t, kv, followupEvents) + followupRev := applyEvents(ctx, t, kv, followupEvents) if c, ok := reader.(*cache.Cache); ok { - if err := c.WaitForRevision(ctx, lastRev); err != nil { - t.Fatalf("cache never caught up to rev %d: %v", lastRev, err) + if err := c.WaitForRevision(ctx, followupRev); err != nil { + t.Fatalf("cache never caught up to rev %d: %v", followupRev, err) } } @@ -551,8 +552,14 @@ func testGet(t *testing.T, kv clientv3.KV, getReader func() Getter, initialEvent for _, tc := range getTestCases { tc := tc t.Run(tc.name, func(t *testing.T) { + op := clientv3.OpGet(tc.key, tc.opts...) + requestedRev := op.Rev() resp, err := reader.Get(ctx, tc.key, tc.opts...) if err != nil { + if _, ok := reader.(*cache.Cache); ok && requestedRev > 0 && requestedRev < initialRev && errors.Is(err, rpctypes.ErrCompacted) { + t.Logf("expected ErrCompacted: requestedRev=%d < initialCompleteRev=%d", requestedRev, initialRev) + return + } t.Fatalf("Get %q failed: %v", tc.key, err) } if diff := cmp.Diff(tc.wantKVs, resp.Kvs); diff != "" { @@ -665,6 +672,27 @@ var getTestCases = []getTestCase{ wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv}, wantRevision: 8, }, + { + name: "single key /foo/a at rev=2", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(2)}, + wantKVs: []*mvccpb.KeyValue{Rev2PutFooA.Kv}, + wantRevision: 8, + }, + { + name: "single key /foo/a at rev=7", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(7)}, + wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooA.Kv}, + wantRevision: 8, + }, + { + name: "single key /foo/a at rev=8", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(8)}, + wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv}, + wantRevision: 8, + }, { name: "non-existing key", key: "/doesnotexist", @@ -672,6 +700,13 @@ var getTestCases = []getTestCase{ wantKVs: nil, wantRevision: 8, }, + { + name: "non-existing key at rev=4", + key: "/doesnotexist", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(4)}, + wantKVs: nil, + wantRevision: 8, + }, { name: "prefix /foo", key: "/foo", @@ -679,6 +714,27 @@ var getTestCases = []getTestCase{ wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv, Rev7TxnPutFooB.Kv, Rev4PutFooC.Kv}, wantRevision: 8, }, + { + name: "prefix /foo at rev=5", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix(), clientv3.WithRev(5)}, + wantKVs: []*mvccpb.KeyValue{Rev2PutFooA.Kv, Rev3PutFooB.Kv, Rev4PutFooC.Kv, Rev5PutFooD.Kv}, + wantRevision: 8, + }, + { + name: "prefix /foo/b at rev=4", + key: "/foo/b", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix(), clientv3.WithRev(4)}, + wantKVs: []*mvccpb.KeyValue{Rev3PutFooB.Kv}, + wantRevision: 8, + }, + { + name: "prefix /foo/b at rev=7", + key: "/foo/b", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix(), clientv3.WithRev(7)}, + wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooB.Kv}, + wantRevision: 8, + }, { name: "range [/foo/a, /foo/c)", key: "/foo/a", @@ -686,6 +742,13 @@ var getTestCases = []getTestCase{ wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv, Rev7TxnPutFooB.Kv}, wantRevision: 8, }, + { + name: "range [/foo/a, /foo/d) at rev=5", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/foo/d"), clientv3.WithRev(5)}, + wantKVs: []*mvccpb.KeyValue{Rev2PutFooA.Kv, Rev3PutFooB.Kv, Rev4PutFooC.Kv}, + wantRevision: 8, + }, { name: "fromKey /foo/b", key: "/foo/b", @@ -693,6 +756,13 @@ var getTestCases = []getTestCase{ wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooB.Kv, Rev4PutFooC.Kv}, wantRevision: 8, }, + { + name: "fromKey /foo/b at rev=7", + key: "/foo/b", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithFromKey(), clientv3.WithRev(7)}, + wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooB.Kv, Rev4PutFooC.Kv}, + wantRevision: 8, + }, } func TestCacheWithPrefixGet(t *testing.T) { @@ -945,7 +1015,6 @@ func TestCacheUnsupportedGetOptions(t *testing.T) { {"WithMaxModRevision", []clientv3.OpOption{clientv3.WithMaxModRev(10)}}, {"WithMinCreateRevision", []clientv3.OpOption{clientv3.WithMinCreateRev(3)}}, {"WithMaxCreateRevision", []clientv3.OpOption{clientv3.WithMaxCreateRev(5)}}, - {"WithRev", []clientv3.OpOption{clientv3.WithRev(123)}}, {"NoSerializable", nil}, } From f412f68e73b93b32ad1c307cf6db0d6b0821edb4 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 26 Aug 2025 17:11:43 +0200 Subject: [PATCH 0474/1068] Enable tracing in robustness Signed-off-by: Aleksander Mistewicz --- tests/framework/e2e/cluster.go | 17 +++++++++++++++++ tests/robustness/scenarios/scenarios.go | 5 +++++ 2 files changed, 22 insertions(+) diff --git a/tests/framework/e2e/cluster.go b/tests/framework/e2e/cluster.go index f942a17fbc3f..ad1da3c3e906 100644 --- a/tests/framework/e2e/cluster.go +++ b/tests/framework/e2e/cluster.go @@ -390,6 +390,15 @@ func WithExtensiveMetrics() EPClusterOption { return func(c *EtcdProcessClusterConfig) { c.ServerConfig.Metrics = "extensive" } } +func WithEnableDistributedTracing(addr string) EPClusterOption { + return func(c *EtcdProcessClusterConfig) { + c.ServerConfig.EnableDistributedTracing = true + c.ServerConfig.DistributedTracingServiceName = "etcd" + c.ServerConfig.DistributedTracingAddress = addr + c.ServerConfig.DistributedTracingSamplingRatePerMillion = 1_000_000 + } +} + // NewEtcdProcessCluster launches a new cluster from etcd processes, returning // a new EtcdProcessCluster once all nodes are ready to accept client requests. func NewEtcdProcessCluster(ctx context.Context, tb testing.TB, opts ...EPClusterOption) (*EtcdProcessCluster, error) { @@ -585,6 +594,14 @@ func (cfg *EtcdProcessClusterConfig) EtcdServerProcessConfig(tb testing.TB, i in if !cfg.ServerConfig.StrictReconfigCheck { args = append(args, "--strict-reconfig-check=false") } + if cfg.ServerConfig.EnableDistributedTracing { + args = append(args, + "--enable-distributed-tracing", + fmt.Sprintf("--distributed-tracing-address=%s", cfg.ServerConfig.DistributedTracingAddress), + fmt.Sprintf("--distributed-tracing-service-name=%s", cfg.ServerConfig.DistributedTracingServiceName), + fmt.Sprintf("--distributed-tracing-sampling-rate=%d", cfg.ServerConfig.DistributedTracingSamplingRatePerMillion), + ) + } var murl string if cfg.MetricsURLScheme != "" { diff --git a/tests/robustness/scenarios/scenarios.go b/tests/robustness/scenarios/scenarios.go index cac904281528..d99fe68a0c62 100644 --- a/tests/robustness/scenarios/scenarios.go +++ b/tests/robustness/scenarios/scenarios.go @@ -15,6 +15,7 @@ package scenarios import ( + "os" "path/filepath" "testing" "time" @@ -101,6 +102,10 @@ func Exploratory(_ *testing.T) []TestScenario { e2e.WithWatchProcessNotifyInterval(100 * time.Millisecond), } + if addr := os.Getenv("TRACING_SERVER_ADDR"); addr != "" { + baseOptions = append(baseOptions, e2e.WithEnableDistributedTracing(addr)) + } + if e2e.CouldSetSnapshotCatchupEntries(e2e.BinPath.Etcd) { baseOptions = append(baseOptions, options.WithSnapshotCatchUpEntries(100, etcdserver.DefaultSnapshotCatchUpEntries)) } From 33eae761c267d38853e5fa17d8afc91da7ec535a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Sep 2025 06:33:29 +0000 Subject: [PATCH 0475/1068] build(deps): bump github/codeql-action from 3.29.11 to 3.30.0 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.11 to 3.30.0. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/3c3833e0f8c1c83d449a7478aa59c036a9165498...2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.30.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index cc7073f0e51b..42547e5d64f6 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@3c3833e0f8c1c83d449a7478aa59c036a9165498 # v3.29.5 + uses: github/codeql-action/init@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.29.5 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@3c3833e0f8c1c83d449a7478aa59c036a9165498 # v3.29.5 + uses: github/codeql-action/autobuild@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.29.5 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@3c3833e0f8c1c83d449a7478aa59c036a9165498 # v3.29.5 + uses: github/codeql-action/analyze@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.29.5 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index e3e482984568..f8f9432f0a83 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@3c3833e0f8c1c83d449a7478aa59c036a9165498 # v3.29.5 + uses: github/codeql-action/upload-sarif@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.29.5 with: sarif_file: results.sarif From b1f3b9f1e3de042e51f02058439589202afd841c Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Fri, 29 Aug 2025 14:07:35 +0000 Subject: [PATCH 0476/1068] cache: assert ErrFutureRev in testGet Signed-off-by: Peter Chang --- tests/integration/cache_test.go | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 9c1f7386edb1..96bee0b0a2ae 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -555,6 +555,12 @@ func testGet(t *testing.T, kv clientv3.KV, getReader func() Getter, initialEvent op := clientv3.OpGet(tc.key, tc.opts...) requestedRev := op.Rev() resp, err := reader.Get(ctx, tc.key, tc.opts...) + if tc.expectErr != nil { + if !errors.Is(err, tc.expectErr) { + t.Fatalf("expected %v for Get %q; got %v", tc.expectErr, tc.key, err) + } + return + } if err != nil { if _, ok := reader.(*cache.Cache); ok && requestedRev > 0 && requestedRev < initialRev && errors.Is(err, rpctypes.ErrCompacted) { t.Logf("expected ErrCompacted: requestedRev=%d < initialCompleteRev=%d", requestedRev, initialRev) @@ -662,6 +668,7 @@ type getTestCase struct { opts []clientv3.OpOption wantKVs []*mvccpb.KeyValue wantRevision int64 + expectErr error } var getTestCases = []getTestCase{ @@ -693,6 +700,12 @@ var getTestCases = []getTestCase{ wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv}, wantRevision: 8, }, + { + name: "single key /foo/a at rev=9 (future), returns error", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(9)}, + expectErr: rpctypes.ErrFutureRev, + }, { name: "non-existing key", key: "/doesnotexist", @@ -707,6 +720,12 @@ var getTestCases = []getTestCase{ wantKVs: nil, wantRevision: 8, }, + { + name: "non-existing key at rev=9 (future), returns error", + key: "/doesnotexist", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(9)}, + expectErr: rpctypes.ErrFutureRev, + }, { name: "prefix /foo", key: "/foo", @@ -735,6 +754,13 @@ var getTestCases = []getTestCase{ wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooB.Kv}, wantRevision: 8, }, + { + name: "prefix /foo at rev=9 (future), returns error", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix(), clientv3.WithRev(9)}, + wantKVs: []*mvccpb.KeyValue{Rev2PutFooA.Kv, Rev3PutFooB.Kv, Rev4PutFooC.Kv, Rev5PutFooD.Kv}, + expectErr: rpctypes.ErrFutureRev, + }, { name: "range [/foo/a, /foo/c)", key: "/foo/a", @@ -749,6 +775,12 @@ var getTestCases = []getTestCase{ wantKVs: []*mvccpb.KeyValue{Rev2PutFooA.Kv, Rev3PutFooB.Kv, Rev4PutFooC.Kv}, wantRevision: 8, }, + { + name: "range [/foo/a, /foo/c) at rev=9 (future), returns error", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/foo/c"), clientv3.WithRev(9)}, + expectErr: rpctypes.ErrFutureRev, + }, { name: "fromKey /foo/b", key: "/foo/b", @@ -763,6 +795,12 @@ var getTestCases = []getTestCase{ wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooB.Kv, Rev4PutFooC.Kv}, wantRevision: 8, }, + { + name: "fromKey /foo/b at rev=9 (future), returns error", + key: "/foo/b", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithFromKey(), clientv3.WithRev(9)}, + expectErr: rpctypes.ErrFutureRev, + }, } func TestCacheWithPrefixGet(t *testing.T) { From 99e4a29f546875432318244944676a0077924cec Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Thu, 4 Sep 2025 13:34:30 +0200 Subject: [PATCH 0477/1068] Proceed to process trace dumps without apiserver records Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/coverage_test.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/robustness/coverage/coverage_test.go b/tests/robustness/coverage/coverage_test.go index fcb1641f929c..2bae6415c6e1 100644 --- a/tests/robustness/coverage/coverage_test.go +++ b/tests/robustness/coverage/coverage_test.go @@ -353,6 +353,9 @@ func spansMap(t *testing.T, traces []*tracev1.ResourceSpans) map[string]*tracev1 } } } + if len(inApiserver) == 0 { + t.Logf("WARN: no records of traces from the apiserver") + } // Map traces by their span ID. spansByID := make(map[string]*tracev1.Span) @@ -360,7 +363,7 @@ func spansMap(t *testing.T, traces []*tracev1.ResourceSpans) map[string]*tracev1 for _, trace := range traces { for _, scopeSpan := range trace.GetScopeSpans() { for _, span := range scopeSpan.GetSpans() { - if !inApiserver[string(span.GetTraceId())] { + if len(inApiserver) > 0 && !inApiserver[string(span.GetTraceId())] { skipped++ continue } From 1b3050ca06646000048c78f006503b4e3a28c9bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Sep 2025 07:20:58 +0000 Subject: [PATCH 0478/1068] build(deps): bump distroless/static-debian12 from `2e114d2` to `f2ff10a` Bumps distroless/static-debian12 from `2e114d2` to `f2ff10a`. --- updated-dependencies: - dependency-name: distroless/static-debian12 dependency-version: f2ff10a709b0fd153997059b698ada702e4870745b6077eff03a5f4850ca91b6 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f6ee26f2bdab..7b4b6b605fbc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG ARCH=amd64 -FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:2e114d20aa6371fd271f854aa3d6b2b7d2e70e797bb3ea44fb677afec60db22c +FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:f2ff10a709b0fd153997059b698ada702e4870745b6077eff03a5f4850ca91b6 ADD etcd /usr/local/bin/ ADD etcdctl /usr/local/bin/ From ee5da22fd59fe712078795a600ea30ef4e5922cf Mon Sep 17 00:00:00 2001 From: Kota Date: Sat, 30 Aug 2025 02:12:34 +0900 Subject: [PATCH 0479/1068] tests: migrate hashkv tests(e2e/integration) to common test framework Signed-off-by: Kota --- tests/common/hashkv_test.go | 248 +++++++++++++++++++++++++++++++ tests/e2e/hashkv_test.go | 233 ----------------------------- tests/integration/hashkv_test.go | 82 ---------- 3 files changed, 248 insertions(+), 315 deletions(-) create mode 100644 tests/common/hashkv_test.go delete mode 100644 tests/e2e/hashkv_test.go delete mode 100644 tests/integration/hashkv_test.go diff --git a/tests/common/hashkv_test.go b/tests/common/hashkv_test.go new file mode 100644 index 000000000000..e666e6b75c4b --- /dev/null +++ b/tests/common/hashkv_test.go @@ -0,0 +1,248 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package common + +import ( + "context" + "fmt" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "go.etcd.io/etcd/tests/v3/framework/config" + intf "go.etcd.io/etcd/tests/v3/framework/interfaces" + "go.etcd.io/etcd/tests/v3/framework/testutils" +) + +// TestVerifyHashKVAfterCompact tests that HashKV is consistent across all members after a physical compaction. +// It tests both cases where the compaction is on a tombstone revision and where it is not. +func TestVerifyHashKVAfterCompact(t *testing.T) { + testRunner.BeforeTest(t) + for _, keys := range [][]string{ + {"key0"}, + {"key0", "key1"}, + } { + for _, compactedOnTombstoneRev := range []bool{false, true} { + t.Run(fmt.Sprintf("Keys=%v/CompactedOnTombstone=%v", keys, compactedOnTombstoneRev), func(t *testing.T) { + for _, tc := range clusterTestCases() { + t.Run(tc.name, func(t *testing.T) { + if tc.config.ClusterSize < 2 { + t.Skip("Skipping test for single-member cluster") + } + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) + defer cancel() + + clus := testRunner.NewCluster(ctx, t, config.WithClusterConfig(tc.config)) + defer clus.Close() + + cc := testutils.MustClient(clus.Client()) + tombstoneRevs, latestRev := populateDataForHashKV(t, cc, keys) + + compactedOnRev := tombstoneRevs[0] + + // If compaction revision isn't a tombstone, select a revision in the middle of two tombstones. + if !compactedOnTombstoneRev { + require.Greater(t, len(tombstoneRevs), 1) + compactedOnRev = (tombstoneRevs[0] + tombstoneRevs[1]) / 2 + require.Greater(t, compactedOnRev, tombstoneRevs[0]) + require.Greater(t, tombstoneRevs[1], compactedOnRev) + } + + _, err := cc.Compact(ctx, compactedOnRev, config.CompactOption{Physical: true}) + require.NoError(t, err) + + for rev := compactedOnRev; rev <= latestRev; rev++ { + verifyConsistentHashKVAcrossAllMembers(t, cc, rev) + } + }) + } + }) + } + } +} + +// TestVerifyHashKVAfterTwoCompactsOnTombstone tests that HashKV is consistent +// across all members after two physical compactions on tombstone revisions. +func TestVerifyHashKVAfterTwoCompactsOnTombstone(t *testing.T) { + testRunner.BeforeTest(t) + for _, tc := range clusterTestCases() { + t.Run(tc.name, func(t *testing.T) { + if tc.config.ClusterSize < 2 { + t.Skip("Skipping test for single-member cluster") + } + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) + defer cancel() + + clus := testRunner.NewCluster(ctx, t, config.WithClusterConfig(tc.config)) + defer clus.Close() + + cc := testutils.MustClient(clus.Client()) + tombstoneRevs, latestRev := populateDataForHashKV(t, cc, []string{"key0"}) + require.GreaterOrEqual(t, len(tombstoneRevs), 2) + + firstCompactOnRev := tombstoneRevs[0] + t.Logf("COMPACT rev=%d", firstCompactOnRev) + _, err := cc.Compact(ctx, firstCompactOnRev, config.CompactOption{Physical: true}) + require.NoError(t, err) + + secondCompactOnRev := tombstoneRevs[1] + t.Logf("COMPACT rev=%d", secondCompactOnRev) + _, err = cc.Compact(ctx, secondCompactOnRev, config.CompactOption{Physical: true}) + require.NoError(t, err) + + for rev := secondCompactOnRev; rev <= latestRev; rev++ { + verifyConsistentHashKVAcrossAllMembers(t, cc, rev) + } + }) + } +} + +// TestVerifyHashKVAfterCompactOnLastTombstone tests that HashKV is consistent +// across all members after a physical compaction on the last tombstone revision. +func TestVerifyHashKVAfterCompactOnLastTombstone(t *testing.T) { + testRunner.BeforeTest(t) + + for _, keys := range [][]string{ + {"key0"}, + {"key0", "key1"}, + } { + t.Run(fmt.Sprintf("Keys=%v", keys), func(t *testing.T) { + for _, tc := range clusterTestCases() { + t.Run(tc.name, func(t *testing.T) { + if tc.config.ClusterSize < 2 { + t.Skip("Skipping test for single-member cluster") + } + + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) + defer cancel() + + clus := testRunner.NewCluster(ctx, t, config.WithClusterConfig(tc.config)) + defer clus.Close() + + cc := testutils.MustClient(clus.Client()) + tombstoneRevs, latestRev := populateDataForHashKV(t, cc, keys) + require.NotEmpty(t, tombstoneRevs) + + compactOnRev := tombstoneRevs[len(tombstoneRevs)-1] + t.Logf("COMPACT rev=%d", compactOnRev) + _, err := cc.Compact(ctx, compactOnRev, config.CompactOption{Physical: true}) + require.NoError(t, err) + + for rev := compactOnRev; rev <= latestRev; rev++ { + verifyConsistentHashKVAcrossAllMembers(t, cc, rev) + } + }) + } + }) + } +} + +// TestVerifyHashKVAfterCompactAndDefrag tests that HashKV is consistent +// within a member before and after a physical compaction and defragmentation. +func TestVerifyHashKVAfterCompactAndDefrag(t *testing.T) { + testRunner.BeforeTest(t) + + for _, tc := range clusterTestCases() { + t.Run(tc.name, func(t *testing.T) { + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) + defer cancel() + + clus := testRunner.NewCluster(ctx, t, config.WithClusterConfig(tc.config)) + defer clus.Close() + + cc := testutils.MustClient(clus.Client()) + tombstoneRevs, _ := populateDataForHashKV(t, cc, []string{"key0"}) + require.NotEmpty(t, tombstoneRevs) + + compactOnRev := tombstoneRevs[0] + t.Logf("COMPACT rev=%d", compactOnRev) + + before, err := cc.HashKV(ctx, compactOnRev) + require.NoError(t, err) + + _, err = cc.Compact(ctx, compactOnRev, config.CompactOption{Physical: true}) + require.NoError(t, err) + + err = cc.Defragment(ctx, config.DefragOption{}) + require.NoError(t, err) + + after, err := cc.HashKV(ctx, compactOnRev) + require.NoError(t, err) + + require.Equal(t, len(before), len(after)) + for i := range before { + assert.Equal(t, before[i].Hash, after[i].Hash) + } + }) + } +} + +// populateDataForHashKV populates some sample data, and return a slice of tombstone +// revisions and the latest revision. +func populateDataForHashKV(t *testing.T, cc intf.Client, keys []string) ([]int64, int64) { + t.Helper() + ctx := t.Context() + totalOperations := 40 + + var ( + tombStoneRevs []int64 + latestRev int64 + ) + + deleteStep := 10 // submit a delete operation on every 10 operations + for i := 1; i <= totalOperations; i++ { + if i%deleteStep == 0 { + t.Logf("Deleting key=%s", keys[0]) // Only delete the first key for simplicity + resp, derr := cc.Delete(ctx, keys[0], config.DeleteOptions{}) + require.NoError(t, derr) + latestRev = resp.Header.Revision + tombStoneRevs = append(tombStoneRevs, resp.Header.Revision) + continue + } + + value := fmt.Sprintf("%d", i) + var ops []string + for _, key := range keys { + ops = append(ops, fmt.Sprintf("put %s %s", key, value)) + } + t.Logf("Writing keys: %v, value: %s", keys, value) + resp, terr := cc.Txn(ctx, nil, ops, nil, config.TxnOptions{Interactive: true}) + require.NoError(t, terr) + require.True(t, resp.Succeeded) + require.Len(t, resp.Responses, len(ops)) + latestRev = resp.Header.Revision + } + return tombStoneRevs, latestRev +} + +func verifyConsistentHashKVAcrossAllMembers(t *testing.T, cc intf.Client, hashKVOnRev int64) { + t.Helper() + ctx := t.Context() + + t.Logf("HashKV on rev=%d", hashKVOnRev) + resp, err := cc.HashKV(ctx, hashKVOnRev) + require.NoError(t, err) + + // Ensure that there are multiple members in the cluster. + require.Greater(t, len(resp), 1) + require.NotEqual(t, 0, resp[0].Hash) + t.Logf("One Hash value is %d", resp[0].Hash) + + for i := 1; i < len(resp); i++ { + assert.Equal(t, resp[0].Hash, resp[i].Hash) + } +} diff --git a/tests/e2e/hashkv_test.go b/tests/e2e/hashkv_test.go deleted file mode 100644 index e17ec3d6a787..000000000000 --- a/tests/e2e/hashkv_test.go +++ /dev/null @@ -1,233 +0,0 @@ -// Copyright 2024 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//go:build !cluster_proxy - -package e2e - -import ( - "fmt" - "testing" - - "github.com/stretchr/testify/require" - - "go.etcd.io/etcd/client/pkg/v3/fileutil" - clientv3 "go.etcd.io/etcd/client/v3" - "go.etcd.io/etcd/tests/v3/framework/config" - "go.etcd.io/etcd/tests/v3/framework/e2e" -) - -func TestVerifyHashKVAfterCompact(t *testing.T) { - scenarios := []struct { - clusterVersion e2e.ClusterVersion - keys []string // used for data generators - }{ - { - clusterVersion: e2e.CurrentVersion, - keys: []string{"key0"}, - }, - { - clusterVersion: e2e.CurrentVersion, - keys: []string{"key0", "key1"}, - }, - { - clusterVersion: e2e.QuorumLastVersion, - keys: []string{"key0"}, - }, - { - clusterVersion: e2e.QuorumLastVersion, - keys: []string{"key0", "key1"}, - }, - } - - for _, compactedOnTombstoneRev := range []bool{false, true} { - for _, scenario := range scenarios { - t.Run(fmt.Sprintf("compactedOnTombstone=%v - %s - Keys=%v", compactedOnTombstoneRev, scenario.clusterVersion, scenario.keys), func(t *testing.T) { - e2e.BeforeTest(t) - - if scenario.clusterVersion != e2e.CurrentVersion { - if !fileutil.Exist(e2e.BinPath.EtcdLastRelease) { - t.Skipf("%q does not exist", e2e.BinPath.EtcdLastRelease) - } - } - - ctx := t.Context() - - cfg := e2e.NewConfigClientTLS() - clus, err := e2e.NewEtcdProcessCluster(ctx, t, - e2e.WithConfig(cfg), - e2e.WithClusterSize(3), - e2e.WithVersion(scenario.clusterVersion)) - require.NoError(t, err) - - t.Cleanup(func() { clus.Close() }) - - tombstoneRevs, lastestRev := populateDataForHashKV(t, clus, cfg.Client, scenario.keys) - - compactedOnRev := tombstoneRevs[0] - - // If compaction revision isn't a tombstone, select a revision in the middle of two tombstones. - if !compactedOnTombstoneRev { - compactedOnRev = (tombstoneRevs[0] + tombstoneRevs[1]) / 2 - require.Greater(t, compactedOnRev, tombstoneRevs[0]) - require.Greater(t, tombstoneRevs[1], compactedOnRev) - } - - cli, err := e2e.NewEtcdctl(cfg.Client, clus.EndpointsGRPC()) - require.NoError(t, err) - - t.Logf("COMPACT on rev=%d", compactedOnRev) - _, err = cli.Compact(ctx, compactedOnRev, config.CompactOption{Physical: true}) - require.NoError(t, err) - - for rev := compactedOnRev; rev <= lastestRev; rev++ { - verifyConsistentHashKVAcrossAllMembers(t, cli, rev) - } - }) - } - } -} - -func TestVerifyHashKVAfterTwoCompactionsOnTombstone_MixVersions(t *testing.T) { - e2e.BeforeTest(t) - - if !fileutil.Exist(e2e.BinPath.EtcdLastRelease) { - t.Skipf("%q does not exist", e2e.BinPath.EtcdLastRelease) - } - - ctx := t.Context() - - cfg := e2e.NewConfigClientTLS() - clus, err := e2e.NewEtcdProcessCluster(ctx, t, - e2e.WithConfig(cfg), - e2e.WithClusterSize(3), - e2e.WithVersion(e2e.QuorumLastVersion)) - require.NoError(t, err) - t.Cleanup(func() { clus.Close() }) - - tombstoneRevs, lastestRev := populateDataForHashKV(t, clus, cfg.Client, []string{"key0"}) - - cli, err := e2e.NewEtcdctl(cfg.Client, clus.EndpointsGRPC()) - require.NoError(t, err) - - firstCompactOnRev := tombstoneRevs[0] - t.Logf("COMPACT rev=%d", firstCompactOnRev) - _, err = cli.Compact(ctx, firstCompactOnRev, config.CompactOption{Physical: true}) - require.NoError(t, err) - - secondCompactOnRev := tombstoneRevs[1] - t.Logf("COMPACT rev=%d", secondCompactOnRev) - _, err = cli.Compact(ctx, secondCompactOnRev, config.CompactOption{Physical: true}) - require.NoError(t, err) - - for rev := secondCompactOnRev; rev <= lastestRev; rev++ { - verifyConsistentHashKVAcrossAllMembers(t, cli, rev) - } -} - -func TestVerifyHashKVAfterCompactionOnLastTombstone_MixVersions(t *testing.T) { - e2e.BeforeTest(t) - - if !fileutil.Exist(e2e.BinPath.EtcdLastRelease) { - t.Skipf("%q does not exist", e2e.BinPath.EtcdLastRelease) - } - - for _, keys := range [][]string{ - {"key0"}, - {"key0", "key1"}, - } { - t.Run(fmt.Sprintf("#%v", keys), func(t *testing.T) { - ctx := t.Context() - - cfg := e2e.NewConfigClientTLS() - clus, err := e2e.NewEtcdProcessCluster(ctx, t, - e2e.WithConfig(cfg), - e2e.WithClusterSize(3), - e2e.WithVersion(e2e.QuorumLastVersion)) - require.NoError(t, err) - t.Cleanup(func() { clus.Close() }) - - tombstoneRevs, lastestRev := populateDataForHashKV(t, clus, cfg.Client, keys) - - cli, err := e2e.NewEtcdctl(cfg.Client, clus.EndpointsGRPC()) - require.NoError(t, err) - - compactOnRev := tombstoneRevs[len(tombstoneRevs)-1] - t.Logf("COMPACT rev=%d", compactOnRev) - _, err = cli.Compact(ctx, compactOnRev, config.CompactOption{Physical: true}) - require.NoError(t, err) - - for rev := compactOnRev; rev <= lastestRev; rev++ { - verifyConsistentHashKVAcrossAllMembers(t, cli, rev) - } - }) - } -} - -// populateDataForHashKV populates some sample data, and return a slice of tombstone -// revisions and the latest revision -func populateDataForHashKV(t *testing.T, clus *e2e.EtcdProcessCluster, clientCfg e2e.ClientConfig, keys []string) ([]int64, int64) { - c := newClient(t, clus.EndpointsGRPC(), clientCfg) - defer c.Close() - - ctx := t.Context() - totalOperations := 40 - - var ( - tombStoneRevs []int64 - latestRev int64 - ) - - deleteStep := 10 // submit a delete operation on every 10 operations - for i := 1; i <= totalOperations; i++ { - if i%deleteStep == 0 { - t.Logf("Deleting key=%s", keys[0]) // Only delete the first key for simplicity - resp, derr := c.Delete(ctx, keys[0]) - require.NoError(t, derr) - latestRev = resp.Header.Revision - tombStoneRevs = append(tombStoneRevs, resp.Header.Revision) - continue - } - - value := fmt.Sprintf("%d", i) - var ops []clientv3.Op - for _, key := range keys { - ops = append(ops, clientv3.OpPut(key, value)) - } - - t.Logf("Writing keys: %v, value: %s", keys, value) - resp, terr := c.Txn(ctx).Then(ops...).Commit() - require.NoError(t, terr) - require.True(t, resp.Succeeded) - require.Len(t, resp.Responses, len(ops)) - latestRev = resp.Header.Revision - } - return tombStoneRevs, latestRev -} - -func verifyConsistentHashKVAcrossAllMembers(t *testing.T, cli *e2e.EtcdctlV3, hashKVOnRev int64) { - ctx := t.Context() - - t.Logf("HashKV on rev=%d", hashKVOnRev) - resp, err := cli.HashKV(ctx, hashKVOnRev) - require.NoError(t, err) - - require.Greater(t, len(resp), 1) - require.NotEqual(t, 0, resp[0].Hash) - t.Logf("One Hash value is %d", resp[0].Hash) - - for i := 1; i < len(resp); i++ { - require.Equal(t, resp[0].Hash, resp[i].Hash) - } -} diff --git a/tests/integration/hashkv_test.go b/tests/integration/hashkv_test.go deleted file mode 100644 index a62625bf896e..000000000000 --- a/tests/integration/hashkv_test.go +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2022 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package integration - -import ( - "context" - "net" - "net/http" - "testing" - - "github.com/stretchr/testify/require" - - clientv3 "go.etcd.io/etcd/client/v3" - "go.etcd.io/etcd/server/v3/etcdserver" - "go.etcd.io/etcd/server/v3/storage/mvcc/testutil" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" -) - -// TestCompactionHash tests the compaction hash -// TODO: Change this to fuzz test -func TestCompactionHash(t *testing.T) { - integration2.BeforeTest(t) - - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) - defer clus.Terminate(t) - - cc, err := clus.ClusterClient(t) - require.NoError(t, err) - client := &http.Client{ - Transport: &http.Transport{ - DialContext: func(_ context.Context, _, _ string) (net.Conn, error) { - return net.Dial("unix", clus.Members[0].PeerURLs[0].Host) - }, - }, - } - - testutil.TestCompactionHash(t.Context(), t, hashTestCase{cc, clus.Members[0].GRPCURL, client, clus.Members[0].Server}, 1000) -} - -type hashTestCase struct { - *clientv3.Client - url string - http *http.Client - server *etcdserver.EtcdServer -} - -func (tc hashTestCase) Put(ctx context.Context, key, value string) error { - _, err := tc.Client.Put(ctx, key, value) - return err -} - -func (tc hashTestCase) Delete(ctx context.Context, key string) error { - _, err := tc.Client.Delete(ctx, key) - return err -} - -func (tc hashTestCase) HashByRev(ctx context.Context, rev int64) (testutil.KeyValueHash, error) { - resp, err := etcdserver.HashByRev(ctx, tc.server.Cluster().ID(), tc.http, "http://unix", rev) - return testutil.KeyValueHash{Hash: resp.Hash, CompactRevision: resp.CompactRevision, Revision: resp.Header.Revision}, err -} - -func (tc hashTestCase) Defrag(ctx context.Context) error { - _, err := tc.Client.Defragment(ctx, tc.url) - return err -} - -func (tc hashTestCase) Compact(ctx context.Context, rev int64) error { - _, err := tc.Client.Compact(ctx, rev, clientv3.WithCompactPhysical()) - return err -} From 781ae5ed2eab2d04754d241a7141224ec3b63d8f Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Thu, 4 Sep 2025 14:09:25 +0200 Subject: [PATCH 0480/1068] Add instructions on running robustness tests with tracing Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/README.md | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/tests/robustness/coverage/README.md b/tests/robustness/coverage/README.md index 1f0e0d84e0f8..41c18b6fa48b 100644 --- a/tests/robustness/coverage/README.md +++ b/tests/robustness/coverage/README.md @@ -114,6 +114,46 @@ kind delete cluster --name kind-with-external-etcd docker network rm kind-with-external-etcd ``` +### Manual trace collection from robustness tests + +1. Run [Jaeger](https://www.jaegertracing.io/) container: + + ```shell + docker run --rm --name jaeger \ + -p 16686:16686 \ + -p 4317:4317 \ + jaegertracing/jaeger:2.6.0 --set=extensions.jaeger_storage.backends.some_storage.memory.max_traces=20000000 + ``` + +1. Run robustness tests. For example: + + ```shell + env \ + TRACING_SERVER_ADDR=localhost:4317 \ + GO_TEST_FLAGS='--timeout 10m --count=1 -v --run "^TestRobustness.*/Kubernetes.*"' \ + make test-robustness + ``` + +1. Download traces and put them into `tests/robustness/coverage/testdata` +directory in Etcd git repository: + + ```shell + curl -v --get --retry 10 --retry-connrefused -o testdata/demo_traces.json \ + -H "Content-Type: application/json" \ + --data-urlencode "query.start_time_min=$(date --date="5 days ago" -Ins)" \ + --data-urlencode "query.start_time_max=$(date -Ins)" \ + --data-urlencode "query.service_name=etcd" \ + "http://localhost:16686/api/v3/traces" + ``` + +1. Run Go test + + ```shell + go test -v -timeout 60s go.etcd.io/etcd/tests/v3/robustness/coverage + ``` + + It will show the coverage of Kubernetes-Etcd surface by robustness tests.:w + ### Automated test execution Work on improving these tests is tracked in [#20182](https://github.com/etcd-io/etcd/issues/20182). From ca6ab71375f0c12d73f05faae7fdf2c649794c08 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Wed, 27 Aug 2025 11:35:14 +0200 Subject: [PATCH 0481/1068] Add list[continued] to model describe Signed-off-by: Aleksander Mistewicz --- tests/robustness/model/describe.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/robustness/model/describe.go b/tests/robustness/model/describe.go index 1ffdc563f26a..486eae98694b 100644 --- a/tests/robustness/model/describe.go +++ b/tests/robustness/model/describe.go @@ -223,6 +223,8 @@ func describeRangeRequest(opts RangeOptions, revision int64) string { return fmt.Sprintf("get(%q%s)", opts.Start, kwargsString) case opts.End == clientv3.GetPrefixRangeEnd(opts.Start): return fmt.Sprintf("list(%q%s)", opts.Start, kwargsString) + case strings.HasSuffix(opts.Start, "\x00") && strings.HasSuffix(opts.End, "0") && strings.HasPrefix(opts.Start, opts.End[:len(opts.End)-1]): + return fmt.Sprintf("list[continued](%q%s)", strings.TrimRight(opts.Start, "\x00"), kwargsString) default: return fmt.Sprintf("range(%q..%q%s)", opts.Start, opts.End, kwargsString) } From bb94ee1cb14180f28efa5f7c1f8c700e24ec5495 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Tue, 2 Sep 2025 22:39:57 -0700 Subject: [PATCH 0482/1068] dependency: lock antithesis-trigger-action to v0.9 Signed-off-by: Ivan Valdes --- .github/workflows/antithesis-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index ef2088b93b60..3df65955db4d 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -82,7 +82,7 @@ jobs: docker push $IMAGE - name: Run Antithesis Tests - uses: antithesishq/antithesis-trigger-action@6c0a27302c0a3cd97d87d40bd6704e673abed4bb # main commit on Mar 13, 2025 + uses: antithesishq/antithesis-trigger-action@6c0a27302c0a3cd97d87d40bd6704e673abed4bb # v0.9 with: notebook_name: etcd tenant: linuxfoundation From 5d86fce426da0e4abd95b2bfb290a1626a9fa477 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Thu, 4 Sep 2025 14:22:36 +0200 Subject: [PATCH 0483/1068] Fix markdown layout in robustness/coverage/README Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/README.md | 46 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/tests/robustness/coverage/README.md b/tests/robustness/coverage/README.md index 41c18b6fa48b..09c464f7b62b 100644 --- a/tests/robustness/coverage/README.md +++ b/tests/robustness/coverage/README.md @@ -80,39 +80,39 @@ cluster](https://kind.sigs.k8s.io/docs/user/quick-start/#installation): 1. Exercise Kubernetes API. For example, build and run Conformance tests from Kubernetes repository (this usually takes 30-40m or will time out after 1 hour): -```shell -make WHAT="test/e2e/e2e.test" -./_output/bin/e2e.test \ - -context kind-kind-with-external-etcd \ - -ginkgo.focus="\[sig-apps\].*Conformance" \ - -num-nodes 2 -build/run.sh make test-cmd -``` + ```shell + make WHAT="test/e2e/e2e.test" + ./_output/bin/e2e.test \ + -context kind-kind-with-external-etcd \ + -ginkgo.focus="\[sig-apps\].*Conformance" \ + -num-nodes 2 + build/run.sh make test-cmd + ``` 1. Download traces and put them into `tests/robustness/coverage/testdata` directory in Etcd git repository: -```shell -curl -v --get --retry 10 --retry-connrefused -o testdata/demo_traces.json \ - -H "Content-Type: application/json" \ - --data-urlencode "query.start_time_min=$(date --date="5 days ago" -Ins)" \ - --data-urlencode "query.start_time_max=$(date --date="2 minutes ago" -Ins)" \ - --data-urlencode "query.service_name=etcd" \ - "http://192.168.32.1:16686/api/v3/traces" -``` + ```shell + curl -v --get --retry 10 --retry-connrefused -o testdata/demo_traces.json \ + -H "Content-Type: application/json" \ + --data-urlencode "query.start_time_min=$(date --date="5 days ago" -Ins)" \ + --data-urlencode "query.start_time_max=$(date --date="2 minutes ago" -Ins)" \ + --data-urlencode "query.service_name=etcd" \ + "http://192.168.32.1:16686/api/v3/traces" + ``` 1. Run Go test -```shell -go test -v -timeout 60s go.etcd.io/etcd/tests/v3/robustness/coverage -``` + ```shell + go test -v -timeout 60s go.etcd.io/etcd/tests/v3/robustness/coverage + ``` 1. Clean up the environment -```shell -kind delete cluster --name kind-with-external-etcd -docker network rm kind-with-external-etcd -``` + ```shell + kind delete cluster --name kind-with-external-etcd + docker network rm kind-with-external-etcd + ``` ### Manual trace collection from robustness tests From 2ea8af1341e3a2f746af4c928a868aed4e85bb8e Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Wed, 27 Aug 2025 13:29:23 +0200 Subject: [PATCH 0484/1068] Add StaleRead to robustness Signed-off-by: Aleksander Mistewicz --- tests/robustness/traffic/kubernetes.go | 54 +++++++++++++++++++++----- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/tests/robustness/traffic/kubernetes.go b/tests/robustness/traffic/kubernetes.go index 8d0373919a79..a47fe13793eb 100644 --- a/tests/robustness/traffic/kubernetes.go +++ b/tests/robustness/traffic/kubernetes.go @@ -41,6 +41,11 @@ var ( resource: "pods", namespace: "default", // Please keep the sum of weights equal 100. + readChoices: []random.ChoiceWeight[KubernetesRequestType]{ + {Choice: KubernetesListStale, Weight: 20}, + {Choice: KubernetesListAndWatch, Weight: 80}, + }, + // Please keep the sum of weights equal 100. writeChoices: []random.ChoiceWeight[KubernetesRequestType]{ {Choice: KubernetesUpdate, Weight: 90}, {Choice: KubernetesDelete, Weight: 5}, @@ -53,6 +58,11 @@ var ( resource: "pods", namespace: "default", // Please keep the sum of weights equal 100. + readChoices: []random.ChoiceWeight[KubernetesRequestType]{ + {Choice: KubernetesListStale, Weight: 20}, + {Choice: KubernetesListAndWatch, Weight: 80}, + }, + // Please keep the sum of weights equal 100. writeChoices: []random.ChoiceWeight[KubernetesRequestType]{ {Choice: KubernetesDelete, Weight: 40}, {Choice: KubernetesCreate, Weight: 60}, @@ -64,6 +74,7 @@ type kubernetesTraffic struct { averageKeyCount int resource string namespace string + readChoices []random.ChoiceWeight[KubernetesRequestType] writeChoices []random.ChoiceWeight[KubernetesRequestType] } @@ -76,7 +87,6 @@ func (t kubernetesTraffic) RunTrafficLoop(ctx context.Context, c *client.Recordi s := newStorage() keyPrefix := "/registry/" + t.resource + "/" g := errgroup.Group{} - readLimit := t.averageKeyCount g.Go(func() error { for { @@ -87,11 +97,10 @@ func (t kubernetesTraffic) RunTrafficLoop(ctx context.Context, c *client.Recordi return nil default: } - rev, err := t.Read(ctx, kc, s, limiter, keyPrefix, readLimit) + err := t.Read(ctx, c, s, limiter, keyPrefix) if err != nil { continue } - t.Watch(ctx, c, s, limiter, keyPrefix, rev+1) } }) g.Go(func() error { @@ -106,7 +115,7 @@ func (t kubernetesTraffic) RunTrafficLoop(ctx context.Context, c *client.Recordi } // Avoid multiple failed writes in a row if lastWriteFailed { - _, err := t.Read(ctx, kc, s, limiter, keyPrefix, 0) + _, err := t.List(ctx, kc, s, limiter, keyPrefix, t.averageKeyCount, 0) if err != nil { continue } @@ -121,10 +130,29 @@ func (t kubernetesTraffic) RunTrafficLoop(ctx context.Context, c *client.Recordi g.Wait() } -func (t kubernetesTraffic) Read(ctx context.Context, kc kubernetes.Interface, s *storage, limiter *rate.Limiter, keyPrefix string, limit int) (rev int64, err error) { +func (t kubernetesTraffic) Read(ctx context.Context, c *client.RecordingClient, s *storage, limiter *rate.Limiter, keyPrefix string) error { + kc := kubernetes.Client{Client: &clientv3.Client{KV: c}} + op := random.PickRandom(t.readChoices) + switch op { + case KubernetesListStale: + _, rev := s.PickRandom() + _, err := t.List(ctx, kc, s, limiter, keyPrefix, t.averageKeyCount, rev) + return err + case KubernetesListAndWatch: + rev, err := t.List(ctx, kc, s, limiter, keyPrefix, t.averageKeyCount, 0) + if err != nil { + return err + } + t.Watch(ctx, c, s, limiter, keyPrefix, rev+1) + return nil + default: + panic(fmt.Sprintf("invalid choice: %q", op)) + } +} + +func (t kubernetesTraffic) List(ctx context.Context, kc kubernetes.Interface, s *storage, limiter *rate.Limiter, keyPrefix string, limit int, revision int64) (rev int64, err error) { hasMore := true var kvs []*mvccpb.KeyValue - var revision int64 var cont string for hasMore { @@ -277,9 +305,11 @@ func compact(ctx context.Context, client *client.RecordingClient, t, rev int64) type KubernetesRequestType string const ( - KubernetesDelete KubernetesRequestType = "delete" - KubernetesUpdate KubernetesRequestType = "update" - KubernetesCreate KubernetesRequestType = "create" + KubernetesDelete KubernetesRequestType = "delete" + KubernetesUpdate KubernetesRequestType = "update" + KubernetesCreate KubernetesRequestType = "create" + KubernetesListStale KubernetesRequestType = "list_stale" + KubernetesListAndWatch KubernetesRequestType = "list_watch" ) type storage struct { @@ -333,7 +363,11 @@ func (s *storage) Count() int { func (s *storage) PickRandom() (key string, rev int64) { s.mux.RLock() defer s.mux.RUnlock() - n := rand.Intn(len(s.keyRevision)) + l := len(s.keyRevision) + if l == 0 { + return "", 0 + } + n := rand.Intn(l) i := 0 for k, v := range s.keyRevision { if i == n { From d3a056aea42555313f0c992fe26d23f41a6c30c0 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Mon, 1 Sep 2025 11:26:46 +0100 Subject: [PATCH 0485/1068] Add an e2e test to reproduce lease Renew returns a wrong response If the lease is revoked during the renew process, the renew process may still return success. Signed-off-by: Benjamin Wang --- tests/robustness/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/robustness/Makefile b/tests/robustness/Makefile index fe7748e2a3be..ef485c7f56ae 100644 --- a/tests/robustness/Makefile +++ b/tests/robustness/Makefile @@ -86,7 +86,7 @@ install-gofail: $(GOPATH)/bin/gofail .PHONY: gofail-enable gofail-enable: $(GOPATH)/bin/gofail - $(GOPATH)/bin/gofail enable server/etcdserver/ server/lease/leasehttp server/storage/backend/ server/storage/mvcc/ server/storage/wal/ server/etcdserver/api/v3rpc/ server/etcdserver/api/membership/ server/etcdserver/api/rafthttp/ + $(GOPATH)/bin/gofail enable server/etcdserver/ server/lease server/lease/leasehttp server/storage/backend/ server/storage/mvcc/ server/storage/wal/ server/etcdserver/api/v3rpc/ server/etcdserver/api/membership/ server/etcdserver/api/rafthttp/ cd $(REPOSITORY_ROOT)/server && go get go.etcd.io/gofail@${GOFAIL_VERSION} cd $(REPOSITORY_ROOT)/etcdutl && go get go.etcd.io/gofail@${GOFAIL_VERSION} cd $(REPOSITORY_ROOT)/etcdctl && go get go.etcd.io/gofail@${GOFAIL_VERSION} @@ -94,7 +94,7 @@ gofail-enable: $(GOPATH)/bin/gofail .PHONY: gofail-disable gofail-disable: $(GOPATH)/bin/gofail - $(GOPATH)/bin/gofail disable server/etcdserver/ server/lease/leasehttp server/storage/backend/ server/storage/mvcc/ server/storage/wal/ server/etcdserver/api/v3rpc/ server/etcdserver/api/membership/ server/etcdserver/api/rafthttp/ + $(GOPATH)/bin/gofail disable server/etcdserver/ server/lease server/lease/leasehttp server/storage/backend/ server/storage/mvcc/ server/storage/wal/ server/etcdserver/api/v3rpc/ server/etcdserver/api/membership/ server/etcdserver/api/rafthttp/ cd $(REPOSITORY_ROOT)/server && go mod tidy cd $(REPOSITORY_ROOT)/etcdutl && go mod tidy cd $(REPOSITORY_ROOT)/etcdctl && go mod tidy From 04ada00851528511d9ef3fc72e46d69029f95487 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Thu, 4 Sep 2025 14:44:56 +0200 Subject: [PATCH 0486/1068] Add mention of TRACING_SERVER_ADDR to robustness README Signed-off-by: Aleksander Mistewicz --- tests/robustness/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/robustness/README.md b/tests/robustness/README.md index 598a8fc156d0..642941dafd90 100644 --- a/tests/robustness/README.md +++ b/tests/robustness/README.md @@ -109,6 +109,7 @@ Etcd provides strict serializability for KV operations and eventual consistency * `EXPECT_DEBUG=true` - to get logs from the cluster. * `RESULTS_DIR` - to change the location where the results report will be saved. * `PERSIST_RESULTS` - to persist the results report of the test. By default this will not be persisted in the case of a successful run. + * `TRACING_SERVER_ADDR` - to export Open Telemetry traces from test runs to the collector running at given address, for example: `localhost:4317` ## Re-evaluate existing report From c23fd24830f6067821d18ea749f102b0d247bd2e Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Sun, 7 Sep 2025 10:14:52 +0100 Subject: [PATCH 0487/1068] bump go.opentelemetry.io/otel from 1.37.0 to 1.38.0 Signed-off-by: Benjamin Wang --- api/go.mod | 6 ++--- api/go.sum | 12 +++++----- cache/go.mod | 4 ++-- cache/go.sum | 12 +++++----- client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 6 ++--- client/v3/go.sum | 12 +++++----- etcdctl/go.mod | 6 ++--- etcdctl/go.sum | 20 ++++++++-------- etcdutl/go.mod | 20 ++++++++-------- etcdutl/go.sum | 44 +++++++++++++++++----------------- go.mod | 20 ++++++++-------- go.sum | 44 +++++++++++++++++----------------- pkg/go.mod | 8 +++---- pkg/go.sum | 20 ++++++++-------- server/go.mod | 20 ++++++++-------- server/go.sum | 44 +++++++++++++++++----------------- tests/go.mod | 20 ++++++++-------- tests/go.sum | 44 +++++++++++++++++----------------- tools/mod/go.mod | 6 ++--- tools/mod/go.sum | 12 +++++----- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 24 files changed, 196 insertions(+), 196 deletions(-) diff --git a/api/go.mod b/api/go.mod index 3c618c765459..e247b0340536 100644 --- a/api/go.mod +++ b/api/go.mod @@ -9,8 +9,8 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 - github.com/stretchr/testify v1.11.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c + github.com/stretchr/testify v1.11.1 + google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 google.golang.org/grpc v1.75.0 google.golang.org/protobuf v1.36.8 ) @@ -23,7 +23,7 @@ require ( golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 8cad9c87d75e..c8207a9d4278 100644 --- a/api/go.sum +++ b/api/go.sum @@ -27,8 +27,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= -github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= @@ -76,10 +76,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= diff --git a/cache/go.mod b/cache/go.mod index 3c8c29bbb7f6..8a895857bc34 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -23,8 +23,8 @@ require ( golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/grpc v1.75.0 // indirect google.golang.org/protobuf v1.36.8 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index e610cbd6fb3b..70c3b0a52879 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -42,8 +42,8 @@ github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2 github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= -github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= -github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= @@ -97,10 +97,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 86e22becc30a..4f26ca46ecc9 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -6,7 +6,7 @@ toolchain go1.24.3 require ( github.com/coreos/go-systemd/v22 v22.6.0 - github.com/stretchr/testify v1.11.0 + github.com/stretchr/testify v1.11.1 go.uber.org/zap v1.27.0 golang.org/x/sys v0.35.0 ) diff --git a/client/pkg/go.sum b/client/pkg/go.sum index 188b7aed52dc..a6478e89dc83 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -16,8 +16,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= -github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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= diff --git a/client/v3/go.mod b/client/v3/go.mod index e10d40ce97f6..c7d3816ba91e 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -9,7 +9,7 @@ require ( github.com/dustin/go-humanize v1.0.1 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/prometheus/client_golang v1.23.0 - github.com/stretchr/testify v1.11.0 + github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 @@ -36,8 +36,8 @@ require ( golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/protobuf v1.36.8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 6581d7d73b6a..06cc8399efdb 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -52,8 +52,8 @@ github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzM github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= -github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= @@ -111,10 +111,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 3bd76b35305a..45e7798ec17d 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -11,7 +11,7 @@ require ( github.com/olekukonko/tablewriter v1.0.9 github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.7 - github.com/stretchr/testify v1.11.0 + github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 @@ -42,8 +42,8 @@ require ( golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/protobuf v1.36.8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 5aa51112ec2f..3ed77db1216a 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -80,22 +80,22 @@ github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wx github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= -github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= 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= @@ -138,10 +138,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 9eb7ffca724e..71f2f4371bf1 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -25,7 +25,7 @@ require ( github.com/dustin/go-humanize v1.0.1 github.com/olekukonko/tablewriter v1.0.9 github.com/spf13/cobra v1.9.1 - github.com/stretchr/testify v1.11.0 + github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 @@ -38,7 +38,7 @@ require ( require ( github.com/beorn7/perks v1.0.1 // indirect - github.com/cenkalti/backoff/v5 v5.0.2 // indirect + github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -76,12 +76,12 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect - go.opentelemetry.io/otel v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect - go.opentelemetry.io/otel/metric v1.37.0 // indirect - go.opentelemetry.io/otel/sdk v1.37.0 // indirect - go.opentelemetry.io/otel/trace v1.37.0 // indirect + go.opentelemetry.io/otel v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.38.0 // indirect + go.opentelemetry.io/otel/sdk v1.38.0 // indirect + go.opentelemetry.io/otel/trace v1.38.0 // indirect go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect @@ -90,8 +90,8 @@ require ( golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect golang.org/x/time v0.12.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/grpc v1.75.0 // indirect google.golang.org/protobuf v1.36.8 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 0a100c5e1c1b..9f537c304cd8 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -1,7 +1,7 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= -github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= +github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= +github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= @@ -100,8 +100,8 @@ github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= -github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= @@ -116,20 +116,20 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 h1:EtFWSnwW9hGObjkIdmlnWSydO+Qs8OwzfzXLUPg4xOc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0/go.mod h1:QjUEoiGCPkvFZ/MjK6ZZfNOS6mfVEVKYE99dFhuN2LI= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -184,10 +184,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= diff --git a/go.mod b/go.mod index ce11efa1cbda..1d292b078d3e 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 github.com/spf13/cobra v1.9.1 - github.com/stretchr/testify v1.11.0 + github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 @@ -42,7 +42,7 @@ require ( require ( github.com/VividCortex/ewma v1.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/cenkalti/backoff/v5 v5.0.2 // indirect + github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -84,12 +84,12 @@ require ( go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect - go.opentelemetry.io/otel v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect - go.opentelemetry.io/otel/metric v1.37.0 // indirect - go.opentelemetry.io/otel/sdk v1.37.0 // indirect - go.opentelemetry.io/otel/trace v1.37.0 // indirect + go.opentelemetry.io/otel v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.38.0 // indirect + go.opentelemetry.io/otel/sdk v1.38.0 // indirect + go.opentelemetry.io/otel/trace v1.38.0 // indirect go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect @@ -97,8 +97,8 @@ require ( golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/go.sum b/go.sum index 64273e9fce1a..622fc9c93c2e 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= -github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= +github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= +github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -137,8 +137,8 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= -github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= @@ -155,20 +155,20 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 h1:EtFWSnwW9hGObjkIdmlnWSydO+Qs8OwzfzXLUPg4xOc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0/go.mod h1:QjUEoiGCPkvFZ/MjK6ZZfNOS6mfVEVKYE99dFhuN2LI= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -248,10 +248,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/pkg/go.mod b/pkg/go.mod index b8de3220d68e..3a0cf7d7b025 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -9,9 +9,9 @@ require ( github.com/dustin/go-humanize v1.0.1 github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.7 - github.com/stretchr/testify v1.11.0 + github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.opentelemetry.io/otel/trace v1.37.0 + go.opentelemetry.io/otel/trace v1.38.0 go.uber.org/zap v1.27.0 golang.org/x/sys v0.35.0 google.golang.org/grpc v1.75.0 @@ -22,11 +22,11 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/protobuf v1.36.8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index a8384be0169e..486a28f47772 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -33,20 +33,20 @@ github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wx github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= -github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= 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= @@ -61,8 +61,8 @@ golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= diff --git a/server/go.mod b/server/go.mod index f88b4ea6d2a0..0b47fb7b1c61 100644 --- a/server/go.mod +++ b/server/go.mod @@ -22,7 +22,7 @@ require ( github.com/prometheus/client_model v0.6.2 github.com/soheilhy/cmux v0.1.5 github.com/spf13/cobra v1.9.1 - github.com/stretchr/testify v1.11.0 + github.com/stretchr/testify v1.11.1 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 go.etcd.io/bbolt v1.4.3 @@ -32,15 +32,15 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 - go.opentelemetry.io/otel v1.37.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 - go.opentelemetry.io/otel/sdk v1.37.0 - go.opentelemetry.io/otel/trace v1.37.0 + go.opentelemetry.io/otel v1.38.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 + go.opentelemetry.io/otel/sdk v1.38.0 + go.opentelemetry.io/otel/trace v1.38.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.41.0 golang.org/x/net v0.43.0 golang.org/x/time v0.12.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c + google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 google.golang.org/grpc v1.75.0 google.golang.org/protobuf v1.36.8 gopkg.in/natefinch/lumberjack.v2 v2.2.1 @@ -49,7 +49,7 @@ require ( require ( github.com/beorn7/perks v1.0.1 // indirect - github.com/cenkalti/backoff/v5 v5.0.2 // indirect + github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/go-logr/logr v1.4.3 // indirect @@ -65,14 +65,14 @@ require ( github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.7 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect - go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.38.0 // indirect go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index 170b511321a7..5dcb0f674556 100644 --- a/server/go.sum +++ b/server/go.sum @@ -1,7 +1,7 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= -github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= +github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= +github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= @@ -85,8 +85,8 @@ github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= -github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= @@ -101,20 +101,20 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 h1:EtFWSnwW9hGObjkIdmlnWSydO+Qs8OwzfzXLUPg4xOc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0/go.mod h1:QjUEoiGCPkvFZ/MjK6ZZfNOS6mfVEVKYE99dFhuN2LI= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -168,10 +168,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= diff --git a/tests/go.mod b/tests/go.mod index 85e3e8d96ca6..7fc4e129558c 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -30,7 +30,7 @@ require ( github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.65.0 github.com/soheilhy/cmux v0.1.5 - github.com/stretchr/testify v1.11.0 + github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/cache/v3 v3.6.1 @@ -43,8 +43,8 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 - go.opentelemetry.io/otel v1.37.0 - go.opentelemetry.io/otel/sdk v1.37.0 + go.opentelemetry.io/otel v1.38.0 + go.opentelemetry.io/otel/sdk v1.38.0 go.opentelemetry.io/proto/otlp v1.7.1 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.41.0 @@ -58,7 +58,7 @@ require ( github.com/VividCortex/ewma v1.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/speakeasy v0.2.0 // indirect - github.com/cenkalti/backoff/v5 v5.0.2 // indirect + github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cheggaaa/pb/v3 v3.1.7 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect @@ -91,17 +91,17 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect - go.opentelemetry.io/otel/metric v1.37.0 // indirect - go.opentelemetry.io/otel/trace v1.37.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.38.0 // indirect + go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 1945bb63e101..8fb357b7ab09 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -10,8 +10,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= -github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= +github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= +github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -143,8 +143,8 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= -github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= @@ -161,20 +161,20 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 h1:EtFWSnwW9hGObjkIdmlnWSydO+Qs8OwzfzXLUPg4xOc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0/go.mod h1:QjUEoiGCPkvFZ/MjK6ZZfNOS6mfVEVKYE99dFhuN2LI= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -254,10 +254,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 1c3935af2430..c44eeeea9fd2 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -187,7 +187,7 @@ require ( github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/stretchr/testify v1.11.0 // indirect + github.com/stretchr/testify v1.11.1 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/tdakkota/asciicheck v0.4.1 // indirect github.com/tetafro/godot v1.5.0 // indirect @@ -226,8 +226,8 @@ require ( golang.org/x/tools v0.35.0 // indirect golang.org/x/tools/go/expect v0.1.1-deprecated // indirect golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/grpc v1.75.0 // indirect google.golang.org/protobuf v1.36.8 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index d4a8d0ce7e5c..a057bab76833 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -445,8 +445,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= -github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/tdakkota/asciicheck v0.4.1 h1:bm0tbcmi0jezRA2b5kg4ozmMuGAFotKI3RZfrhfovg8= @@ -692,10 +692,10 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c h1:AtEkQdl5b6zsybXcbz00j1LwNodDuH6hVifIaNqk7NQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 33d40a9421c1..74e6e6fe479e 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -18,6 +18,6 @@ require ( golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/grpc v1.75.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 3d93926b6cb6..d21fa9345fa4 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1844,8 +1844,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= From ca1f3bd64263b9ec2088d42cb3368db3e9fe2e9d Mon Sep 17 00:00:00 2001 From: Efe Kaya Date: Fri, 5 Sep 2025 12:02:22 -0600 Subject: [PATCH 0488/1068] robustness/traffic: scope watch stats revision Signed-off-by: Efe Kaya --- tests/robustness/traffic/traffic.go | 78 +++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index 4ae8710c8f67..fd045e04bef8 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -149,6 +149,9 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 lg.Info("Reporting traffic during failure injection", zap.Int("successes", duringFailpointStats.Successes), zap.Int("failures", duringFailpointStats.Failures), zap.Float64("successRate", duringFailpointStats.SuccessRate()), zap.Duration("period", duringFailpointStats.Period), zap.Float64("qps", duringFailpointStats.QPS())) lg.Info("Reporting traffic after failure injection", zap.Int("successes", afterFailpointStats.Successes), zap.Int("failures", afterFailpointStats.Failures), zap.Float64("successRate", afterFailpointStats.SuccessRate()), zap.Duration("period", afterFailpointStats.Period), zap.Float64("qps", afterFailpointStats.QPS())) + watchTotal := CalculateWatchStats(reports, startTime, endTime) + lg.Info("Reporting complete watch", zap.Int("requests", watchTotal.Requests), zap.Int("events", watchTotal.Events), zap.Float64("eventsQPS", watchTotal.EventsQPS()), zap.Int("progressNotifies", watchTotal.ProgressNotifies), zap.Int("immediateClosures", watchTotal.ImmediateClosures), zap.Duration("period", watchTotal.Period), zap.Duration("avgDuration", watchTotal.AvgDuration())) + if beforeFailpointStats.QPS() < profile.MinimalQPS { t.Errorf("Requiring minimal %f qps before failpoint injection for test results to be reliable, got %f qps", profile.MinimalQPS, beforeFailpointStats.QPS()) } @@ -156,6 +159,81 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 return reports } +func CalculateWatchStats(reports []report.ClientReport, start, end time.Duration) (ws watchStats) { + ws.Period = end - start + if ws.Period <= 0 { + return ws + } + + for _, r := range reports { + for _, w := range r.Watch { + var ( + firstInWindow time.Duration + lastInWindow time.Duration + haveInWindow bool + noEventsYetInWindow = true + closedCounted = false + ) + + for _, resp := range w.Responses { + if resp.Time < start || resp.Time > end { + continue + } + if !haveInWindow { + firstInWindow = resp.Time + haveInWindow = true + } + lastInWindow = resp.Time + if resp.IsProgressNotify { + ws.ProgressNotifies++ + } + if len(resp.Events) > 0 { + ws.Events += len(resp.Events) + noEventsYetInWindow = false + } + if resp.Error != "" && noEventsYetInWindow && !closedCounted { + ws.ImmediateClosures++ + closedCounted = true + } + } + + if haveInWindow { + ws.Requests++ + if lastInWindow > firstInWindow { + ws.SumDuration += lastInWindow - firstInWindow + ws.DurationsCount++ + } + } + } + } + + return ws +} + +type watchStats struct { + Period time.Duration + Requests int + Events int + ProgressNotifies int + ImmediateClosures int + SumDuration time.Duration + DurationsCount int +} + +func (ws *watchStats) AvgDuration() time.Duration { + if ws.DurationsCount == 0 { + return 0 + } + return ws.SumDuration / time.Duration(ws.DurationsCount) +} + +func (ws *watchStats) EventsQPS() float64 { + if ws.Period <= 0 { + return 0 + } + return float64(ws.Events) / ws.Period.Seconds() +} + func CalculateStats(reports []report.ClientReport, start, end time.Duration) (ts trafficStats) { ts.Period = end - start From 12c28f8c0d9c517ea0b30e53062574c2b35f6219 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Sun, 7 Sep 2025 10:42:11 +0100 Subject: [PATCH 0489/1068] bump go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc from 0.62.0 to 0.63.0 Signed-off-by: Benjamin Wang --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 71f2f4371bf1..5df1aea4098d 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -75,7 +75,7 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 9f537c304cd8..18029823f1c3 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -114,8 +114,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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= diff --git a/go.mod b/go.mod index 1d292b078d3e..ba48a2f48173 100644 --- a/go.mod +++ b/go.mod @@ -83,7 +83,7 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect diff --git a/go.sum b/go.sum index 622fc9c93c2e..990125c868b2 100644 --- a/go.sum +++ b/go.sum @@ -153,8 +153,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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= diff --git a/server/go.mod b/server/go.mod index 0b47fb7b1c61..4bb164437f79 100644 --- a/server/go.mod +++ b/server/go.mod @@ -31,7 +31,7 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 go.opentelemetry.io/otel v1.38.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 go.opentelemetry.io/otel/sdk v1.38.0 diff --git a/server/go.sum b/server/go.sum index 5dcb0f674556..b84a4d3609d9 100644 --- a/server/go.sum +++ b/server/go.sum @@ -99,8 +99,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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= diff --git a/tests/go.mod b/tests/go.mod index 7fc4e129558c..bd8121ea4c64 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -42,7 +42,7 @@ require ( go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 go.opentelemetry.io/otel v1.38.0 go.opentelemetry.io/otel/sdk v1.38.0 go.opentelemetry.io/proto/otlp v1.7.1 diff --git a/tests/go.sum b/tests/go.sum index 8fb357b7ab09..f43ad4873a3d 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -159,8 +159,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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= From 73557f2622009f3edc7586ede6949cf304ced375 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Sun, 7 Sep 2025 21:34:30 -0700 Subject: [PATCH 0490/1068] dependency: bump golangci-lint from 1.64.8 to v2.4.0 Signed-off-by: Ivan Valdes --- scripts/verify_golangci-lint_version.sh | 2 +- tools/.golangci.yaml | 243 +++++++++-------- tools/mod/go.mod | 154 ++++++----- tools/mod/go.sum | 337 +++++++++++++----------- tools/mod/tools.go | 2 +- 5 files changed, 396 insertions(+), 342 deletions(-) diff --git a/scripts/verify_golangci-lint_version.sh b/scripts/verify_golangci-lint_version.sh index a4b0b14f20a3..f3ca7e72edf4 100755 --- a/scripts/verify_golangci-lint_version.sh +++ b/scripts/verify_golangci-lint_version.sh @@ -18,7 +18,7 @@ function install_golangci_lint() { curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b "${GOPATH}/bin" "${GOLANGCI_LINT_VERSION}" } -GOLANGCI_LINT_VERSION=$(cd tools/mod && go list -m -f '{{.Version}}' github.com/golangci/golangci-lint) +GOLANGCI_LINT_VERSION=$(cd tools/mod && go list -m -f '{{.Version}}' github.com/golangci/golangci-lint/v2) echo "golangci-lint version: $GOLANGCI_LINT_VERSION" GOLANGCI_LINT_PRESENT=$(which golangci-lint) diff --git a/tools/.golangci.yaml b/tools/.golangci.yaml index 41e7f9d455fb..994d9afb3610 100644 --- a/tools/.golangci.yaml +++ b/tools/.golangci.yaml @@ -1,44 +1,13 @@ --- -run: - timeout: 30m -formatters: - enable: - - gci - settings: # please keep this alphabetized - gci: - sections: - - standard - - default - - prefix(go.etcd.io) -issues: - max-same-issues: 0 - # Excluding configuration per-path, per-linter, per-text and per-source - exclude-rules: - # exclude ineffassing linter for generated files for conversion - - path: conversion\.go - linters: [ineffassign] - - text: "S1000" # TODO: Fix me - linters: - - gosimple - exclude-files: - - ^zz_generated.* +version: "2" linters: - disable-all: true + default: none enable: # please keep this alphabetized - # Don't use soon to deprecated[1] linters that lead to false - # https://github.com/golangci/golangci-lint/issues/1841 - # - deadcode - # - structcheck - # - varcheck - errorlint - - gofumpt - - goimports - - gosimple - ineffassign - nakedret - revive - staticcheck - - stylecheck - testifylint - thelper - unconvert # Remove unnecessary type conversions @@ -47,82 +16,134 @@ linters: - usestdlibvars - usetesting - whitespace -linters-settings: # please keep this alphabetized - goimports: - local-prefixes: go.etcd.io # Put imports beginning with prefix after 3rd-party packages. - nakedret: - # Align with https://github.com/alexkohler/nakedret/blob/v1.0.2/cmd/nakedret/main.go#L10 - max-func-lines: 5 - revive: - confidence: 0.8 + settings: + nakedret: + # Align with https://github.com/alexkohler/nakedret/blob/v1.0.2/cmd/nakedret/main.go#L10 + max-func-lines: 5 + revive: + confidence: 0.8 + rules: + - name: blank-imports + - name: context-as-argument + - name: context-keys-type + - name: dot-imports + - name: early-return + arguments: + - preserveScope + - name: error-return + - name: error-naming + - name: error-strings + - name: errorf + - name: if-return + - name: increment-decrement + - name: indent-error-flow + - name: package-comments + - name: range + - name: receiver-naming + - name: superfluous-else + arguments: + - preserveScope + - name: time-naming + - name: unnecessary-stmt + - name: use-any + - name: var-declaration + - name: var-naming + arguments: + # The following is the configuration for var-naming rule, the first element is the allow list and the second element is the deny list. + - [] # AllowList: leave it empty to use the default (empty, too). This means that we're not relaxing the rule in any way, i.e. elementId will raise a violation, it should be elementID, refer to the next line to see the list of denied initialisms. + # DenyList: Add GRPC and WAL to strict the rule not allowing instances like Wal or Grpc. The default values are located at commonInitialisms, refer to: https://github.com/mgechev/revive/blob/v1.3.7/lint/utils.go#L93-L133. + - - GRPC + - WAL + - name: exported + disabled: true + - name: unexported-return + disabled: true + staticcheck: + checks: + - all + - -SA1019 # TODO(fix) Using a deprecated function, variable, constant or field + - -SA2002 # TODO(fix) Called testing.T.FailNow or SkipNow in a goroutine, which isn’t allowed + - -QF1001 # TODO(fix) Apply De Morgan’s law + - -QF1002 # TODO(fix) Convert untagged switch to tagged switch + - -QF1003 # TODO(fix) Convert if/else-if chain to tagged switch + - -QF1004 # TODO(fix) Use strings.ReplaceAll instead of strings.Replace with n == -1 + - -QF1006 # TODO(fix) Lift if+break into loop condition + - -QF1008 # TODO(fix) Omit embedded fields from selector expression + - -QF1009 # TODO(fix) Use time.Time.Equal instead of == operator + - -QF1012 # TODO(fix) Use fmt.Fprintf(x, ...) instead of x.Write(fmt.Sprintf(...)) + - -ST1003 # TODO(fix) Poorly chosen identifier + - -ST1005 # TODO(fix) Drop unnecessary use of the blank identifier + - ST1019 # Importing the same package multiple times. + testifylint: + enable-all: true + formatter: + # Require f-assertions (e.g. assert.Equalf) if a message is passed to the assertion, even if + # there is no variable-length variables, i.e. require require.NoErrorf for both cases below: + # require.NoErrorf(t, err, "whatever message") + # require.NoErrorf(t, err, "whatever message: %v", v) + # + # Note from golang programming perspective, we still prefer non-f-functions (i.e. fmt.Print) + # to f-functions (i.e. fmt.Printf) when there is no variable-length parameters. It's accepted + # to always require f-functions for stretchr/testify, but not for golang standard lib. + # Also refer to https://github.com/etcd-io/etcd/pull/18741#issuecomment-2422395914 + require-f-funcs: true + thelper: + test: + first: false + begin: false + fuzz: + first: false + begin: false + benchmark: + first: false + begin: false + tb: + first: false + begin: false + usetesting: + os-mkdir-temp: false + exclusions: + generated: lax + presets: + - comments + - common-false-positives + - legacy + - std-error-handling rules: - - name: blank-imports - - name: context-as-argument - - name: context-keys-type - - name: dot-imports - - name: early-return - arguments: - - "preserveScope" - - name: error-return - - name: error-naming - - name: error-strings - - name: errorf - - name: if-return - - name: increment-decrement - - name: indent-error-flow - - name: package-comments - - name: range - - name: receiver-naming - - name: superfluous-else - arguments: - - "preserveScope" - - name: time-naming - - name: unnecessary-stmt - - name: use-any - - name: var-declaration - - name: var-naming - arguments: - # The following is the configuration for var-naming rule, the first element is the allow list and the second element is the deny list. - - [] # AllowList: leave it empty to use the default (empty, too). This means that we're not relaxing the rule in any way, i.e. elementId will raise a violation, it should be elementID, refer to the next line to see the list of denied initialisms. - - ["GRPC", "WAL"] # DenyList: Add GRPC and WAL to strict the rule not allowing instances like Wal or Grpc. The default values are located at commonInitialisms, refer to: https://github.com/mgechev/revive/blob/v1.3.7/lint/utils.go#L93-L133. - # TODO: enable the following rules - - name: exported - disabled: true - - name: unexported-return - disabled: true - staticcheck: - checks: - - all - - -SA1019 # TODO(fix) Using a deprecated function, variable, constant or field - - -SA2002 # TODO(fix) Called testing.T.FailNow or SkipNow in a goroutine, which isn’t allowed - stylecheck: - checks: - - ST1019 # Importing the same package multiple times. - testifylint: - enable-all: true - formatter: - # Require f-assertions (e.g. assert.Equalf) if a message is passed to the assertion, even if - # there is no variable-length variables, i.e. require require.NoErrorf for both cases below: - # require.NoErrorf(t, err, "whatever message") - # require.NoErrorf(t, err, "whatever message: %v", v) - # - # Note from golang programming perspective, we still prefer non-f-functions (i.e. fmt.Print) - # to f-functions (i.e. fmt.Printf) when there is no variable-length parameters. It's accepted - # to always require f-functions for stretchr/testify, but not for golang standard lib. - # Also refer to https://github.com/etcd-io/etcd/pull/18741#issuecomment-2422395914 - require-f-funcs: true - thelper: - test: - first: false - begin: false - benchmark: - first: false - begin: false - tb: - first: false - begin: false - fuzz: - first: false - begin: false - usetesting: - os-mkdir-temp: false + - linters: + - ineffassign + path: conversion\.go + - linters: + - staticcheck + text: S1000 + - linters: + - revive + text: 'var-naming: avoid meaningless package names' + paths: + - ^zz_generated.* + - third_party$ + - builtin$ + - examples$ +issues: + max-same-issues: 0 +formatters: + enable: + - gci + - gofmt + - goimports + settings: # please keep this alphabetized + gci: + sections: + - standard + - default + - prefix(go.etcd.io) + goimports: + local-prefixes: + - go.etcd.io # Put imports beginning with prefix after 3rd-party packages. + exclusions: + generated: lax + paths: + - ^zz_generated.* + - third_party$ + - builtin$ + - examples$ diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 22abf350fb6a..285d85d2c1c0 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/tools/v3 -go 1.24 +go 1.24.0 toolchain go1.24.3 @@ -10,7 +10,7 @@ require ( github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint v1.64.8 + github.com/golangci/golangci-lint/v2 v2.4.0 github.com/google/addlicense v1.2.0 github.com/google/yamlfmt v0.17.2 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 @@ -25,55 +25,67 @@ require ( require ( 4d63.com/gocheckcompilerdirectives v1.3.0 // indirect 4d63.com/gochecknoglobals v0.2.2 // indirect + codeberg.org/chavacava/garif v0.2.0 // indirect + dev.gaijin.team/go/exhaustruct/v4 v4.0.0 // indirect + dev.gaijin.team/go/golib v0.6.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect - github.com/4meepo/tagalign v1.4.2 // indirect - github.com/Abirdcfly/dupword v0.1.3 // indirect - github.com/Antonboom/errname v1.0.0 // indirect - github.com/Antonboom/nilnil v1.0.1 // indirect - github.com/Antonboom/testifylint v1.5.2 // indirect - github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect - github.com/Crocmagnon/fatcontext v0.7.1 // indirect + github.com/4meepo/tagalign v1.4.3 // indirect + github.com/Abirdcfly/dupword v0.1.6 // indirect + github.com/AlwxSin/noinlineerr v1.0.5 // indirect + github.com/Antonboom/errname v1.1.0 // indirect + github.com/Antonboom/nilnil v1.1.0 // indirect + github.com/Antonboom/testifylint v1.6.1 // indirect + github.com/BurntSushi/toml v1.5.0 // indirect github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect - github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 // indirect - github.com/Masterminds/semver/v3 v3.3.0 // indirect + github.com/Masterminds/semver/v3 v3.3.1 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect github.com/akhenakh/hunspellgo v0.0.0-20160221122622-9db38fa26e19 // indirect + github.com/alecthomas/chroma/v2 v2.20.0 // indirect github.com/alecthomas/go-check-sumtype v0.3.1 // indirect - github.com/alexkohler/nakedret/v2 v2.0.5 // indirect + github.com/alexkohler/nakedret/v2 v2.0.6 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect + github.com/alfatraining/structtag v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect - github.com/alingse/nilnesserr v0.1.2 // indirect - github.com/ashanbrown/forbidigo v1.6.0 // indirect - github.com/ashanbrown/makezero v1.2.0 // indirect + github.com/alingse/nilnesserr v0.2.0 // indirect + github.com/ashanbrown/forbidigo/v2 v2.1.0 // indirect + github.com/ashanbrown/makezero/v2 v2.0.1 // indirect + github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bitfield/gotestdox v0.2.2 // indirect github.com/bkielbasa/cyclop v1.2.3 // indirect github.com/blizzy78/varnamelen v0.8.0 // indirect github.com/bmatcuk/doublestar/v4 v4.8.1 // indirect - github.com/bombsimon/wsl/v4 v4.5.0 // indirect - github.com/breml/bidichk v0.3.2 // indirect - github.com/breml/errchkjson v0.4.0 // indirect - github.com/butuzov/ireturn v0.3.1 // indirect + github.com/bombsimon/wsl/v4 v4.7.0 // indirect + github.com/bombsimon/wsl/v5 v5.1.1 // indirect + github.com/breml/bidichk v0.3.3 // indirect + github.com/breml/errchkjson v0.4.1 // indirect + github.com/butuzov/ireturn v0.4.0 // indirect github.com/butuzov/mirror v1.3.0 // indirect - github.com/catenacyber/perfsprint v0.8.2 // indirect - github.com/ccojocar/zxcvbn-go v1.0.2 // indirect + github.com/catenacyber/perfsprint v0.9.1 // indirect + github.com/ccojocar/zxcvbn-go v1.0.4 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charithe/durationcheck v0.0.10 // indirect - github.com/chavacava/garif v0.1.0 // indirect - github.com/ckaznocha/intrange v0.3.0 // indirect + github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect + github.com/charmbracelet/lipgloss v1.1.0 // indirect + github.com/charmbracelet/x/ansi v0.8.0 // indirect + github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect + github.com/charmbracelet/x/term v0.2.1 // indirect + github.com/ckaznocha/intrange v0.3.1 // indirect github.com/curioswitch/go-reassign v0.3.0 // indirect - github.com/daixiang0/gci v0.13.5 // indirect + github.com/daixiang0/gci v0.13.7 // indirect + github.com/dave/dst v0.27.3 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/denis-tingaikin/go-header v0.5.0 // indirect + github.com/dlclark/regexp2 v1.11.5 // indirect github.com/dnephin/pflag v1.0.7 // indirect github.com/ettle/strcase v0.2.0 // indirect github.com/fatih/color v1.18.0 // indirect github.com/fatih/structtag v1.2.0 // indirect - github.com/firefart/nonamedreturns v1.0.5 // indirect + github.com/firefart/nonamedreturns v1.0.6 // indirect github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect - github.com/ghostiam/protogetter v0.3.9 // indirect - github.com/go-critic/go-critic v0.12.0 // indirect + github.com/ghostiam/protogetter v0.3.15 // indirect + github.com/go-critic/go-critic v0.13.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-sql-driver/mysql v1.8.1 // indirect github.com/go-toolsmith/astcast v1.1.0 // indirect @@ -83,7 +95,7 @@ require ( github.com/go-toolsmith/astp v1.1.0 // indirect github.com/go-toolsmith/strparse v1.1.0 // indirect github.com/go-toolsmith/typep v1.1.0 // indirect - github.com/go-viper/mapstructure/v2 v2.2.1 // indirect + github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gofrs/flock v0.12.1 // indirect @@ -91,10 +103,12 @@ require ( github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect github.com/golangci/go-printf-func-name v0.1.0 // indirect github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect - github.com/golangci/misspell v0.6.0 // indirect - github.com/golangci/plugin-module-register v0.1.1 // indirect + github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 // indirect + github.com/golangci/misspell v0.7.0 // indirect + github.com/golangci/plugin-module-register v0.1.2 // indirect github.com/golangci/revgrep v0.8.0 // indirect - github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect + github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e // indirect + github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e // indirect github.com/google/certificate-transparency-go v1.1.8 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect @@ -108,9 +122,9 @@ require ( github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/jgautheron/goconst v1.7.1 // indirect + github.com/jgautheron/goconst v1.8.2 // indirect github.com/jingyugao/rowserrcheck v1.1.1 // indirect - github.com/jjti/go-spancheck v0.6.4 // indirect + github.com/jjti/go-spancheck v0.6.5 // indirect github.com/jmhodges/clock v1.2.0 // indirect github.com/jmoiron/sqlx v1.4.0 // indirect github.com/julz/importas v0.2.0 // indirect @@ -119,16 +133,19 @@ require ( github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 // indirect github.com/kkHAIKE/contextcheck v1.1.6 // indirect github.com/kulti/thelper v0.6.3 // indirect - github.com/kunwardeep/paralleltest v1.0.10 // indirect + github.com/kunwardeep/paralleltest v1.0.14 // indirect github.com/lasiar/canonicalheader v1.1.2 // indirect - github.com/ldez/exptostd v0.4.2 // indirect - github.com/ldez/gomoddirectives v0.6.1 // indirect - github.com/ldez/grignotin v0.9.0 // indirect + github.com/ldez/exptostd v0.4.4 // indirect + github.com/ldez/gomoddirectives v0.7.0 // indirect + github.com/ldez/grignotin v0.10.0 // indirect github.com/ldez/tagliatelle v0.7.1 // indirect - github.com/ldez/usetesting v0.4.2 // indirect + github.com/ldez/usetesting v0.5.0 // indirect github.com/leonklingele/grouper v1.1.2 // indirect github.com/lib/pq v1.10.9 // indirect - github.com/macabu/inamedparam v0.1.3 // indirect + github.com/lucasb-eyer/go-colorful v1.2.0 // indirect + github.com/macabu/inamedparam v0.2.0 // indirect + github.com/manuelarte/embeddedstructfieldcheck v0.3.0 // indirect + github.com/manuelarte/funcorder v0.5.0 // indirect github.com/maratori/testableexamples v1.0.0 // indirect github.com/maratori/testpackage v1.1.1 // indirect github.com/matoous/godox v1.1.0 // indirect @@ -136,27 +153,25 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mattn/go-sqlite3 v1.14.24 // indirect - github.com/mgechev/revive v1.7.0 // indirect + github.com/mgechev/revive v1.11.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moricho/tparallel v0.3.2 // indirect + github.com/muesli/termenv v0.16.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect - github.com/nunnatsa/ginkgolinter v0.19.1 // indirect - github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.0.9 // indirect - github.com/olekukonko/tablewriter v1.0.9 // indirect + github.com/nunnatsa/ginkgolinter v0.20.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/polyfloyd/go-errorlint v1.7.1 // indirect + github.com/polyfloyd/go-errorlint v1.8.0 // indirect github.com/prometheus/client_golang v1.23.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.16.1 // indirect - github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect + github.com/quasilyte/go-ruleguard v0.4.4 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect github.com/quasilyte/gogrep v0.5.0 // indirect github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect @@ -164,22 +179,21 @@ require ( github.com/raeperd/recvcheck v0.2.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - github.com/ryancurrah/gomodguard v1.3.5 // indirect + github.com/ryancurrah/gomodguard v1.4.1 // indirect github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect github.com/sagikazarmark/locafero v0.7.0 // indirect github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect - github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect + github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect - github.com/sashamelentyev/usestdlibvars v1.28.0 // indirect - github.com/securego/gosec/v2 v2.22.2 // indirect + github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect + github.com/securego/gosec/v2 v2.22.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sivchari/containedctx v1.0.3 // indirect - github.com/sivchari/tenv v1.12.1 // indirect - github.com/sonatard/noctx v0.1.0 // indirect + github.com/sonatard/noctx v0.4.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/sourcegraph/go-diff v0.7.0 // indirect - github.com/spf13/afero v1.12.0 // indirect + github.com/spf13/afero v1.14.0 // indirect github.com/spf13/cast v1.7.1 // indirect github.com/spf13/cobra v1.10.1 // indirect github.com/spf13/pflag v1.0.9 // indirect @@ -190,49 +204,49 @@ require ( github.com/stretchr/testify v1.11.1 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/tdakkota/asciicheck v0.4.1 // indirect - github.com/tetafro/godot v1.5.0 // indirect - github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 // indirect - github.com/timonwong/loggercheck v0.10.1 // indirect - github.com/tomarrell/wrapcheck/v2 v2.10.0 // indirect + github.com/tetafro/godot v1.5.1 // indirect + github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 // indirect + github.com/timonwong/loggercheck v0.11.0 // indirect + github.com/tomarrell/wrapcheck/v2 v2.11.0 // indirect github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect github.com/trustmaster/go-aspell v0.0.0-20200701131845-c2b1f55bec8f // indirect github.com/ultraware/funlen v0.2.0 // indirect github.com/ultraware/whitespace v0.2.0 // indirect github.com/uudashr/gocognit v1.2.0 // indirect - github.com/uudashr/iface v1.3.1 // indirect + github.com/uudashr/iface v1.4.1 // indirect github.com/weppos/publicsuffix-go v0.30.3-0.20240510084413-5f1d03393b3d // indirect - github.com/xen0n/gosmopolitan v1.2.2 // indirect + github.com/xen0n/gosmopolitan v1.3.0 // indirect + github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect github.com/yagipy/maintidx v1.0.0 // indirect github.com/yeya24/promlinter v0.3.0 // indirect github.com/ykadowak/zerologlint v0.1.5 // indirect github.com/zmap/zcrypto v0.0.0-20231219022726-a1f61fb1661c // indirect github.com/zmap/zlint/v3 v3.6.0 // indirect gitlab.com/bosi/decorder v0.4.2 // indirect - go-simpler.org/musttag v0.13.0 // indirect - go-simpler.org/sloglint v0.9.0 // indirect + go-simpler.org/musttag v0.13.1 // indirect + go-simpler.org/sloglint v0.11.1 // indirect + go.augendre.info/arangolint v0.2.0 // indirect + go.augendre.info/fatcontext v0.8.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect - golang.org/x/mod v0.26.0 // indirect + golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b // indirect + golang.org/x/mod v0.27.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sync v0.16.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/term v0.34.0 // indirect golang.org/x/text v0.28.0 // indirect - golang.org/x/tools v0.35.0 // indirect - golang.org/x/tools/go/expect v0.1.1-deprecated // indirect - golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated // indirect + golang.org/x/tools v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/grpc v1.75.0 // indirect google.golang.org/protobuf v1.36.8 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect - mvdan.cc/gofumpt v0.7.0 // indirect - mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect + mvdan.cc/gofumpt v0.8.0 // indirect + mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 // indirect ) diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 51086a1ae4bc..e84e76f45493 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -3,28 +3,32 @@ 4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= 4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +codeberg.org/chavacava/garif v0.2.0 h1:F0tVjhYbuOCnvNcU3YSpO6b3Waw6Bimy4K0mM8y6MfY= +codeberg.org/chavacava/garif v0.2.0/go.mod h1:P2BPbVbT4QcvLZrORc2T29szK3xEOlnl0GiPTJmEqBQ= +dev.gaijin.team/go/exhaustruct/v4 v4.0.0 h1:873r7aNneqoBB3IaFIzhvt2RFYTuHgmMjoKfwODoI1Y= +dev.gaijin.team/go/exhaustruct/v4 v4.0.0/go.mod h1:aZ/k2o4Y05aMJtiux15x8iXaumE88YdiB0Ai4fXOzPI= +dev.gaijin.team/go/golib v0.6.0 h1:v6nnznFTs4bppib/NyU1PQxobwDHwCXXl15P7DV5Zgo= +dev.gaijin.team/go/golib v0.6.0/go.mod h1:uY1mShx8Z/aNHWDyAkZTkX+uCi5PdX7KsG1eDQa2AVE= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= -github.com/4meepo/tagalign v1.4.2 h1:0hcLHPGMjDyM1gHG58cS73aQF8J4TdVR96TZViorO9E= -github.com/4meepo/tagalign v1.4.2/go.mod h1:+p4aMyFM+ra7nb41CnFG6aSDXqRxU/w1VQqScKqDARI= -github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE= -github.com/Abirdcfly/dupword v0.1.3/go.mod h1:8VbB2t7e10KRNdwTVoxdBaxla6avbhGzb8sCTygUMhw= -github.com/Antonboom/errname v1.0.0 h1:oJOOWR07vS1kRusl6YRSlat7HFnb3mSfMl6sDMRoTBA= -github.com/Antonboom/errname v1.0.0/go.mod h1:gMOBFzK/vrTiXN9Oh+HFs+e6Ndl0eTFbtsRTSRdXyGI= -github.com/Antonboom/nilnil v1.0.1 h1:C3Tkm0KUxgfO4Duk3PM+ztPncTFlOf0b2qadmS0s4xs= -github.com/Antonboom/nilnil v1.0.1/go.mod h1:CH7pW2JsRNFgEh8B2UaPZTEPhCMuFowP/e8Udp9Nnb0= -github.com/Antonboom/testifylint v1.5.2 h1:4s3Xhuv5AvdIgbd8wOOEeo0uZG7PbDKQyKY5lGoQazk= -github.com/Antonboom/testifylint v1.5.2/go.mod h1:vxy8VJ0bc6NavlYqjZfmp6EfqXMtBgQ4+mhCojwC1P8= -github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= -github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/Crocmagnon/fatcontext v0.7.1 h1:SC/VIbRRZQeQWj/TcQBS6JmrXcfA+BU4OGSVUt54PjM= -github.com/Crocmagnon/fatcontext v0.7.1/go.mod h1:1wMvv3NXEBJucFGfwOJBxSVWcoIO6emV215SMkW9MFU= +github.com/4meepo/tagalign v1.4.3 h1:Bnu7jGWwbfpAie2vyl63Zup5KuRv21olsPIha53BJr8= +github.com/4meepo/tagalign v1.4.3/go.mod h1:00WwRjiuSbrRJnSVeGWPLp2epS5Q/l4UEy0apLLS37c= +github.com/Abirdcfly/dupword v0.1.6 h1:qeL6u0442RPRe3mcaLcbaCi2/Y/hOcdtw6DE9odjz9c= +github.com/Abirdcfly/dupword v0.1.6/go.mod h1:s+BFMuL/I4YSiFv29snqyjwzDp4b65W2Kvy+PKzZ6cw= +github.com/AlwxSin/noinlineerr v1.0.5 h1:RUjt63wk1AYWTXtVXbSqemlbVTb23JOSRiNsshj7TbY= +github.com/AlwxSin/noinlineerr v1.0.5/go.mod h1:+QgkkoYrMH7RHvcdxdlI7vYYEdgeoFOVjU9sUhw/rQc= +github.com/Antonboom/errname v1.1.0 h1:A+ucvdpMwlo/myWrkHEUEBWc/xuXdud23S8tmTb/oAE= +github.com/Antonboom/errname v1.1.0/go.mod h1:O1NMrzgUcVBGIfi3xlVuvX8Q/VP/73sseCaAppfjqZw= +github.com/Antonboom/nilnil v1.1.0 h1:jGxJxjgYS3VUUtOTNk8Z1icwT5ESpLH/426fjmQG+ng= +github.com/Antonboom/nilnil v1.1.0/go.mod h1:b7sAlogQjFa1wV8jUW3o4PMzDVFLbTux+xnQdvzdcIE= +github.com/Antonboom/testifylint v1.6.1 h1:6ZSytkFWatT8mwZlmRCHkWz1gPi+q6UBSbieji2Gj/o= +github.com/Antonboom/testifylint v1.6.1/go.mod h1:k+nEkathI2NFjKO6HvwmSrbzUcQ6FAnbZV+ZRrnXPLI= +github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= +github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= -github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 h1:Sz1JIXEcSfhz7fUi7xHnhpIE0thVASYjvosApmHuD2k= -github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1/go.mod h1:n/LSCXNuIYqVfBlVXyHfMQkZDdp1/mmxfSjADd3z1Zg= -github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= -github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= +github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= @@ -32,26 +36,32 @@ github.com/akhenakh/hunspellgo v0.0.0-20160221122622-9db38fa26e19 h1:bYOD6QJnBJY github.com/akhenakh/hunspellgo v0.0.0-20160221122622-9db38fa26e19/go.mod h1:HcqyLXmWoESd/vPSbCPqvgw5l5cMM5PtoqFOnXLjSeM= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/chroma/v2 v2.20.0 h1:sfIHpxPyR07/Oylvmcai3X/exDlE8+FA820NTz+9sGw= +github.com/alecthomas/chroma/v2 v2.20.0/go.mod h1:e7tViK0xh/Nf4BYHl00ycY6rV7b8iXBksI9E359yNmA= github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU= github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= -github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= -github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/alecthomas/repr v0.5.1 h1:E3G4t2QbHTSNpPKBgMTln5KLkZHLOcU7r37J4pXBuIg= +github.com/alecthomas/repr v0.5.1/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/alexfalkowski/gocovmerge v1.11.0 h1:mHYRBKEBHxjTWveV6RCAnCAhF6l1evO9JYboZRvZmuU= github.com/alexfalkowski/gocovmerge v1.11.0/go.mod h1:gkfERgPiozeXq7FlJBQDmTeXo8FnrNxZwabB4uSGZ3M= -github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU= -github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= +github.com/alexkohler/nakedret/v2 v2.0.6 h1:ME3Qef1/KIKr3kWX3nti3hhgNxw6aqN5pZmQiFSsuzQ= +github.com/alexkohler/nakedret/v2 v2.0.6/go.mod h1:l3RKju/IzOMQHmsEvXwkqMDzHHvurNQfAgE1eVmT40Q= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= +github.com/alfatraining/structtag v1.0.0 h1:2qmcUqNcCoyVJ0up879K614L9PazjBSFruTB0GOFjCc= +github.com/alfatraining/structtag v1.0.0/go.mod h1:p3Xi5SwzTi+Ryj64DqjLWz7XurHxbGsq6y3ubePJPus= github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= -github.com/alingse/nilnesserr v0.1.2 h1:Yf8Iwm3z2hUUrP4muWfW83DF4nE3r1xZ26fGWUKCZlo= -github.com/alingse/nilnesserr v0.1.2/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= +github.com/alingse/nilnesserr v0.2.0 h1:raLem5KG7EFVb4UIDAXgrv3N2JIaffeKNtcEXkEWd/w= +github.com/alingse/nilnesserr v0.2.0/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c h1:xv0ICJ4AO52aNZ+vI2KFUYZBMh7dHvROixZ1vzMMfu8= github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c/go.mod h1:Y5/1I+0gnnhHKyX4z65mgaGTJ08tnz9WUgkoymA/cws= -github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= -github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= -github.com/ashanbrown/makezero v1.2.0 h1:/2Lp1bypdmK9wDIq7uWBlDF1iMUpIIS4A+pF6C9IEUU= -github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8euNO0qjQMtGY4= +github.com/ashanbrown/forbidigo/v2 v2.1.0 h1:NAxZrWqNUQiDz19FKScQ/xvwzmij6BiOw3S0+QUQ+Hs= +github.com/ashanbrown/forbidigo/v2 v2.1.0/go.mod h1:0zZfdNAuZIL7rSComLGthgc/9/n2FqspBOH90xlCHdA= +github.com/ashanbrown/makezero/v2 v2.0.1 h1:r8GtKetWOgoJ4sLyUx97UTwyt2dO7WkGFHizn/Lo8TY= +github.com/ashanbrown/makezero/v2 v2.0.1/go.mod h1:kKU4IMxmYW1M4fiEHMb2vc5SFoPzXvgbMR9gIp5pjSw= +github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= +github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bitfield/gotestdox v0.2.2 h1:x6RcPAbBbErKLnapz1QeAlf3ospg8efBsedU93CDsnE= @@ -63,31 +73,41 @@ github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkAp github.com/bmatcuk/doublestar/v4 v4.0.2/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bmatcuk/doublestar/v4 v4.8.1 h1:54Bopc5c2cAvhLRAzqOGCYHYyhcDHsFF4wWIR5wKP38= github.com/bmatcuk/doublestar/v4 v4.8.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= -github.com/bombsimon/wsl/v4 v4.5.0 h1:iZRsEvDdyhd2La0FVi5k6tYehpOR/R7qIUjmKk7N74A= -github.com/bombsimon/wsl/v4 v4.5.0/go.mod h1:NOQ3aLF4nD7N5YPXMruR6ZXDOAqLoM0GEpLwTdvmOSc= -github.com/breml/bidichk v0.3.2 h1:xV4flJ9V5xWTqxL+/PMFF6dtJPvZLPsyixAoPe8BGJs= -github.com/breml/bidichk v0.3.2/go.mod h1:VzFLBxuYtT23z5+iVkamXO386OB+/sVwZOpIj6zXGos= -github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAdk= -github.com/breml/errchkjson v0.4.0/go.mod h1:AuBOSTHyLSaaAFlWsRSuRBIroCh3eh7ZHh5YeelDIk8= -github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY= -github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M= +github.com/bombsimon/wsl/v4 v4.7.0 h1:1Ilm9JBPRczjyUs6hvOPKvd7VL1Q++PL8M0SXBDf+jQ= +github.com/bombsimon/wsl/v4 v4.7.0/go.mod h1:uV/+6BkffuzSAVYD+yGyld1AChO7/EuLrCF/8xTiapg= +github.com/bombsimon/wsl/v5 v5.1.1 h1:cQg5KJf9FlctAH4cpL9vLKnziYknoCMCdqXl0wjl72Q= +github.com/bombsimon/wsl/v5 v5.1.1/go.mod h1:Gp8lD04z27wm3FANIUPZycXp+8huVsn0oxc+n4qfV9I= +github.com/breml/bidichk v0.3.3 h1:WSM67ztRusf1sMoqH6/c4OBCUlRVTKq+CbSeo0R17sE= +github.com/breml/bidichk v0.3.3/go.mod h1:ISbsut8OnjB367j5NseXEGGgO/th206dVa427kR8YTE= +github.com/breml/errchkjson v0.4.1 h1:keFSS8D7A2T0haP9kzZTi7o26r7kE3vymjZNeNDRDwg= +github.com/breml/errchkjson v0.4.1/go.mod h1:a23OvR6Qvcl7DG/Z4o0el6BRAjKnaReoPQFciAl9U3s= +github.com/butuzov/ireturn v0.4.0 h1:+s76bF/PfeKEdbG8b54aCocxXmi0wvYdOVsWxVO7n8E= +github.com/butuzov/ireturn v0.4.0/go.mod h1:ghI0FrCmap8pDWZwfPisFD1vEc56VKH4NpQUxDHta70= github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/catenacyber/perfsprint v0.8.2 h1:+o9zVmCSVa7M4MvabsWvESEhpsMkhfE7k0sHNGL95yw= -github.com/catenacyber/perfsprint v0.8.2/go.mod h1:q//VWC2fWbcdSLEY1R3l8n0zQCDPdE4IjZwyY1HMunM= -github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg= -github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60= +github.com/catenacyber/perfsprint v0.9.1 h1:5LlTp4RwTooQjJCvGEFV6XksZvWE7wCOUvjD2z0vls0= +github.com/catenacyber/perfsprint v0.9.1/go.mod h1:q//VWC2fWbcdSLEY1R3l8n0zQCDPdE4IjZwyY1HMunM= +github.com/ccojocar/zxcvbn-go v1.0.4 h1:FWnCIRMXPj43ukfX000kvBZvV6raSxakYr1nzyNrUcc= +github.com/ccojocar/zxcvbn-go v1.0.4/go.mod h1:3GxGX+rHmueTUMvm5ium7irpyjmm7ikxYFOSJB21Das= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= -github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc= -github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww= +github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs= +github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk= +github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= +github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30= +github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE= +github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q= +github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8= +github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs= +github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ= +github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg= github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 h1:0wUHjDfbCAROEAZ96zAJGwcNMkPIheFaIjtQyv3QqfM= github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03/go.mod h1:uFE9hX+zXEwvyUThZ4gDb9vkAwc5DoHUnRSEpH0VrOs= -github.com/ckaznocha/intrange v0.3.0 h1:VqnxtK32pxgkhJgYQEeOArVidIPg+ahLP7WBOXZd5ZY= -github.com/ckaznocha/intrange v0.3.0/go.mod h1:+I/o2d2A1FBHgGELbGxzIcyd3/9l9DuwjM8FsbSS3Lo= +github.com/ckaznocha/intrange v0.3.1 h1:j1onQyXvHUsPWujDH6WIjhyH26gkRt/txNlV7LspvJs= +github.com/ckaznocha/intrange v0.3.1/go.mod h1:QVepyz1AkUoFQkpEqksSYpNpUo3c5W7nWh/s6SHIJJk= github.com/cloudflare/cfssl v1.6.5 h1:46zpNkm6dlNkMZH/wMW22ejih6gIaJbzL2du6vD7ZeI= github.com/cloudflare/cfssl v1.6.5/go.mod h1:Bk1si7sq8h2+yVEDrFJiz3d7Aw+pfjjJSZVaD+Taky4= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= @@ -96,16 +116,20 @@ github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSU github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs= github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88= -github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c= -github.com/daixiang0/gci v0.13.5/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk= +github.com/daixiang0/gci v0.13.7 h1:+0bG5eK9vlI08J+J/NWGbWPTNiXPG4WhNLJOkSxWITQ= +github.com/daixiang0/gci v0.13.7/go.mod h1:812WVN6JLFY9S6Tv76twqmNqevN0pa3SX3nih0brVzQ= +github.com/dave/dst v0.27.3 h1:P1HPoMza3cMEquVf9kKy8yXsFirry4zEnWOdYPOoIzY= +github.com/dave/dst v0.27.3/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEyc= +github.com/dave/jennifer v1.7.1 h1:B4jJJDHelWcDhlRQxWeo0Npa/pYKBLrirAQoTN45txo= +github.com/dave/jennifer v1.7.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8= github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY= -github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= -github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ= +github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dnephin/pflag v1.0.7 h1:oxONGlWxhmUct0YzKTgrpQv9AUA1wtPBn7zuSjJqptk= github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= @@ -114,18 +138,18 @@ github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= -github.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6tUTYIdRA= -github.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw= +github.com/firefart/nonamedreturns v1.0.6 h1:vmiBcKV/3EqKY3ZiPxCINmpS431OcE1S47AQUwhrg8E= +github.com/firefart/nonamedreturns v1.0.6/go.mod h1:R8NisJnSIpvPWheCq0mNRXJok6D8h7fagJTF8EMEwCo= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= -github.com/ghostiam/protogetter v0.3.9 h1:j+zlLLWzqLay22Cz/aYwTHKQ88GE2DQ6GkWSYFOI4lQ= -github.com/ghostiam/protogetter v0.3.9/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= -github.com/go-critic/go-critic v0.12.0 h1:iLosHZuye812wnkEz1Xu3aBwn5ocCPfc9yqmFG9pa6w= -github.com/go-critic/go-critic v0.12.0/go.mod h1:DpE0P6OVc6JzVYzmM5gq5jMU31zLr4am5mB/VfFK64w= +github.com/ghostiam/protogetter v0.3.15 h1:1KF5sXel0HE48zh1/vn0Loiw25A9ApyseLzQuif1mLY= +github.com/ghostiam/protogetter v0.3.15/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= +github.com/go-critic/go-critic v0.13.0 h1:kJzM7wzltQasSUXtYyTl6UaPVySO6GkaR1thFnJ6afY= +github.com/go-critic/go-critic v0.13.0/go.mod h1:M/YeuJ3vOCQDnP2SU+ZhjgRzwzcBW87JqLpMJLrZDLI= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= @@ -153,8 +177,8 @@ github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQi github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= +github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY= github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= @@ -174,16 +198,20 @@ github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUP github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint v1.64.8 h1:y5TdeVidMtBGG32zgSC7ZXTFNHrsJkDnpO4ItB3Am+I= -github.com/golangci/golangci-lint v1.64.8/go.mod h1:5cEsUQBSr6zi8XI8OjmcY2Xmliqc4iYL7YoPrL+zLJ4= -github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= -github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= -github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= -github.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc= +github.com/golangci/golangci-lint/v2 v2.4.0 h1:qz6O6vr7kVzXJqyvHjHSz5fA3D+PM8v96QU5gxZCNWM= +github.com/golangci/golangci-lint/v2 v2.4.0/go.mod h1:Oq7vuAf6L1iNL34uHDcsIF6Mnc0amOPdsT3/GlpHD+I= +github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 h1:AkK+w9FZBXlU/xUmBtSJN1+tAI4FIvy5WtnUnY8e4p8= +github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95/go.mod h1:k9mmcyWKSTMcPPvQUCfRWWQ9VHJ1U9Dc0R7kaXAgtnQ= +github.com/golangci/misspell v0.7.0 h1:4GOHr/T1lTW0hhR4tgaaV1WS/lJ+ncvYCoFKmqJsj0c= +github.com/golangci/misspell v0.7.0/go.mod h1:WZyyI2P3hxPY2UVHs3cS8YcllAeyfquQcKfdeE9AFVg= +github.com/golangci/plugin-module-register v0.1.2 h1:e5WM6PO6NIAEcij3B053CohVp3HIYbzSuP53UAYgOpg= +github.com/golangci/plugin-module-register v0.1.2/go.mod h1:1+QGTsKBvAIvPvoY/os+G5eoqxWn70HYDm2uvUyGuVw= github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s= github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= -github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs= -github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ= +github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e h1:ai0EfmVYE2bRA5htgAG9r7s3tHsfjIhN98WshBTJ9jM= +github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e/go.mod h1:Vrn4B5oR9qRwM+f54koyeH3yzphlecwERs0el27Fr/s= +github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e h1:gD6P7NEo7Eqtt0ssnqSJNNndxe69DOQ24A5h7+i3KpM= +github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e/go.mod h1:h+wZwLjUTJnm/P2rwlbJdRPZXOzaT36/FwnPnY2inzc= github.com/google/addlicense v1.2.0 h1:W+DP4A639JGkcwBGMDvjSurZHvaq2FN0pP7se9czsKA= github.com/google/addlicense v1.2.0/go.mod h1:Sm/DHu7Jk+T5miFHHehdIjbi4M5+dJDRS3Cq0rncIxA= github.com/google/certificate-transparency-go v1.1.8 h1:LGYKkgZF7satzgTak9R4yzfJXEeYVAjV6/EAEJOf1to= @@ -192,15 +220,14 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-github/v50 v50.2.0/go.mod h1:VBY8FB6yPIjrtKhozXv4FQupxKLS6H4m6xFZlT43q8Q= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= -github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= -github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a h1://KbezygeMJZCSHH+HgUZiTeSoiuFspbMg1ge+eFj18= +github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/yamlfmt v0.17.2 h1:TkXxhmj7dnpmOnlWGOXog92Gs6MWcTZqnf3kuyp8yFQ= @@ -235,12 +262,12 @@ github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUq github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/jgautheron/goconst v1.7.1 h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5Jkk= -github.com/jgautheron/goconst v1.7.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= +github.com/jgautheron/goconst v1.8.2 h1:y0XF7X8CikZ93fSNT6WBTb/NElBu9IjaY7CCYQrCMX4= +github.com/jgautheron/goconst v1.8.2/go.mod h1:A0oxgBCHy55NQn6sYpO7UdnA9p+h7cPtoOZUmvNIako= github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= -github.com/jjti/go-spancheck v0.6.4 h1:Tl7gQpYf4/TMU7AT84MN83/6PutY21Nb9fuQjFTpRRc= -github.com/jjti/go-spancheck v0.6.4/go.mod h1:yAEYdKJ2lRkDA8g7X+oKUHXOWVAXSBJRv04OhF+QUjk= +github.com/jjti/go-spancheck v0.6.5 h1:lmi7pKxa37oKYIMScialXUK6hP3iY5F1gu+mLBPgYB8= +github.com/jjti/go-spancheck v0.6.5/go.mod h1:aEogkeatBrbYsyW6y5TgDfihCulDYciL1B7rG2vSsrU= github.com/jmhodges/clock v1.2.0 h1:eq4kys+NI0PLngzaHEe7AmPT90XMGIEySD1JfV1PDIs= github.com/jmhodges/clock v1.2.0/go.mod h1:qKjhA7x7u/lQpPB1XAqX1b1lCI/w3/fNuYpI/ZjLynI= github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= @@ -267,26 +294,32 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= -github.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCTdvWJ/lDDs= -github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= +github.com/kunwardeep/paralleltest v1.0.14 h1:wAkMoMeGX/kGfhQBPODT/BL8XhK23ol/nuQ3SwFaUw8= +github.com/kunwardeep/paralleltest v1.0.14/go.mod h1:di4moFqtfz3ToSKxhNjhOZL+696QtJGCFe132CbBLGk= github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= -github.com/ldez/exptostd v0.4.2 h1:l5pOzHBz8mFOlbcifTxzfyYbgEmoUqjxLFHZkjlbHXs= -github.com/ldez/exptostd v0.4.2/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ= -github.com/ldez/gomoddirectives v0.6.1 h1:Z+PxGAY+217f/bSGjNZr/b2KTXcyYLgiWI6geMBN2Qc= -github.com/ldez/gomoddirectives v0.6.1/go.mod h1:cVBiu3AHR9V31em9u2kwfMKD43ayN5/XDgr+cdaFaKs= -github.com/ldez/grignotin v0.9.0 h1:MgOEmjZIVNn6p5wPaGp/0OKWyvq42KnzAt/DAb8O4Ow= -github.com/ldez/grignotin v0.9.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk= +github.com/ldez/exptostd v0.4.4 h1:58AtQjnLcT/tI5W/1KU7xE/O7zW9RAWB6c/ScQAnfus= +github.com/ldez/exptostd v0.4.4/go.mod h1:QfdzPw6oHjFVdNV7ILoPu5sw3OZ3OG1JS0I5JN3J4Js= +github.com/ldez/gomoddirectives v0.7.0 h1:EOx8Dd56BZYSez11LVgdj025lKwlP0/E5OLSl9HDwsY= +github.com/ldez/gomoddirectives v0.7.0/go.mod h1:wR4v8MN9J8kcwvrkzrx6sC9xe9Cp68gWYCsda5xvyGc= +github.com/ldez/grignotin v0.10.0 h1:NQPeh1E/Eza4F0exCeC1WkpnLvgUcQDT8MQ1vOLML0E= +github.com/ldez/grignotin v0.10.0/go.mod h1:oR4iCKUP9fwoeO6vCQeD7M5SMxCT6xdVas4vg0h1LaI= github.com/ldez/tagliatelle v0.7.1 h1:bTgKjjc2sQcsgPiT902+aadvMjCeMHrY7ly2XKFORIk= github.com/ldez/tagliatelle v0.7.1/go.mod h1:3zjxUpsNB2aEZScWiZTHrAXOl1x25t3cRmzfK1mlo2I= -github.com/ldez/usetesting v0.4.2 h1:J2WwbrFGk3wx4cZwSMiCQQ00kjGR0+tuuyW0Lqm4lwA= -github.com/ldez/usetesting v0.4.2/go.mod h1:eEs46T3PpQ+9RgN9VjpY6qWdiw2/QmfiDeWmdZdrjIQ= +github.com/ldez/usetesting v0.5.0 h1:3/QtzZObBKLy1F4F8jLuKJiKBjjVFi1IavpoWbmqLwc= +github.com/ldez/usetesting v0.5.0/go.mod h1:Spnb4Qppf8JTuRgblLrEWb7IE6rDmUpGvxY3iRrzvDQ= github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk= -github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I= +github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= +github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/macabu/inamedparam v0.2.0 h1:VyPYpOc10nkhI2qeNUdh3Zket4fcZjEWe35poddBCpE= +github.com/macabu/inamedparam v0.2.0/go.mod h1:+Pee9/YfGe5LJ62pYXqB89lJ+0k5bsR8Wgz/C0Zlq3U= +github.com/manuelarte/embeddedstructfieldcheck v0.3.0 h1:VhGqK8gANDvFYDxQkjPbv7/gDJtsGU9k6qj/hC2hgso= +github.com/manuelarte/embeddedstructfieldcheck v0.3.0/go.mod h1:LSo/IQpPfx1dXMcX4ibZCYA7Yy6ayZHIaOGM70+1Wy8= +github.com/manuelarte/funcorder v0.5.0 h1:llMuHXXbg7tD0i/LNw8vGnkDTHFpTnWqKPI85Rknc+8= +github.com/manuelarte/funcorder v0.5.0/go.mod h1:Yt3CiUQthSBMBxjShjdXMexmzpP8YGvGLjrxJNkO2hA= github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= @@ -304,8 +337,8 @@ github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/mgechev/revive v1.7.0 h1:JyeQ4yO5K8aZhIKf5rec56u0376h8AlKNQEmjfkjKlY= -github.com/mgechev/revive v1.7.0/go.mod h1:qZnwcNhoguE58dfi96IJeSTPeZQejNeoMQLUZGi4SW4= +github.com/mgechev/revive v1.11.0 h1:b/gLLpBE427o+Xmd8G58gSA+KtBwxWinH/A565Awh0w= +github.com/mgechev/revive v1.11.0/go.mod h1:tI0oLF/2uj+InHCBLrrqfTKfjtFTBCFFfG05auyzgdw= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -314,6 +347,8 @@ github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKH github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U= github.com/mreiferson/go-httpclient v0.0.0-20160630210159-31f0106b4474/go.mod h1:OQA4XLvDbMgS8P0CevmM4m9Q3Jq4phKUzcocxuGJ5m8= github.com/mreiferson/go-httpclient v0.0.0-20201222173833-5e475fde3a4d/go.mod h1:OQA4XLvDbMgS8P0CevmM4m9Q3Jq4phKUzcocxuGJ5m8= +github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc= +github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= @@ -322,18 +357,12 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/nunnatsa/ginkgolinter v0.19.1 h1:mjwbOlDQxZi9Cal+KfbEJTCz327OLNfwNvoZ70NJ+c4= -github.com/nunnatsa/ginkgolinter v0.19.1/go.mod h1:jkQ3naZDmxaZMXPWaS9rblH+i+GWXQCaS/JFIWcOH2s= -github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= -github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= -github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.9 h1:XGwRsYLC2bY7bNd93Dk51bcPZksWZmLYuaTHR0FqfL8= -github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= -github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= -github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= -github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= -github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= +github.com/nunnatsa/ginkgolinter v0.20.0 h1:OmWLkAFO2HUTYcU6mprnKud1Ey5pVdiVNYGO5HVicx8= +github.com/nunnatsa/ginkgolinter v0.20.0/go.mod h1:dCIuFlTPfQerXgGUju3VygfAFPdC5aE1mdacCDKDJcQ= +github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus= +github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8= +github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y= +github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= @@ -344,13 +373,13 @@ github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT9 github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= -github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= +github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polyfloyd/go-errorlint v1.7.1 h1:RyLVXIbosq1gBdk/pChWA8zWYLsq9UEw7a1L5TVMCnA= -github.com/polyfloyd/go-errorlint v1.7.1/go.mod h1:aXjNb1x2TNhoLsk26iv1yl7a+zTnXPhwEMtEXukiLR8= +github.com/polyfloyd/go-errorlint v1.8.0 h1:DL4RestQqRLr8U4LygLw8g2DX6RN1eBJOpa2mzsrl1Q= +github.com/polyfloyd/go-errorlint v1.8.0/go.mod h1:G2W0Q5roxbLCt0ZQbdoxQxXktTjwNyDbEaj3n7jvl4s= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= @@ -361,8 +390,8 @@ github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2 github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= -github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo= -github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI= +github.com/quasilyte/go-ruleguard v0.4.4 h1:53DncefIeLX3qEpjzlS1lyUmQoUEeOWPFWqaTJq9eAQ= +github.com/quasilyte/go-ruleguard v0.4.4/go.mod h1:Vl05zJ538vcEEwu16V/Hdu7IYZWyKSwIy4c88Ro1kRE= github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE= github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= @@ -379,8 +408,8 @@ github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUc github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryancurrah/gomodguard v1.3.5 h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV3oJmPU= -github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkqr+wKjSxTdsNJE= +github.com/ryancurrah/gomodguard v1.4.1 h1:eWC8eUMNZ/wM/PWuZBv7JxxqT5fiIKSIyTvjb7Elr+g= +github.com/ryancurrah/gomodguard v1.4.1/go.mod h1:qnMJwV1hX9m+YJseXEBhd2s90+1Xn6x9dLz11ualI1I= github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= @@ -389,14 +418,16 @@ github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsF github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0= github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4= -github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw= -github.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= -github.com/sashamelentyev/usestdlibvars v1.28.0 h1:jZnudE2zKCtYlGzLVreNp5pmCdOxXUzwsMDBkR21cyQ= -github.com/sashamelentyev/usestdlibvars v1.28.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= -github.com/securego/gosec/v2 v2.22.2 h1:IXbuI7cJninj0nRpZSLCUlotsj8jGusohfONMrHoF6g= -github.com/securego/gosec/v2 v2.22.2/go.mod h1:UEBGA+dSKb+VqM6TdehR7lnQtIIMorYJ4/9CW1KVQBE= +github.com/sashamelentyev/usestdlibvars v1.29.0 h1:8J0MoRrw4/NAXtjQqTHrbW9NN+3iMf7Knkq057v4XOQ= +github.com/sashamelentyev/usestdlibvars v1.29.0/go.mod h1:8PpnjHMk5VdeWlVb4wCdrB8PNbLqZ3wBZTZWkrpZZL8= +github.com/securego/gosec/v2 v2.22.7 h1:8/9P+oTYI4yIpAzccQKVsg1/90Po+JzGtAhqoHImDeM= +github.com/securego/gosec/v2 v2.22.7/go.mod h1:510TFNDMrIPytokyHQAVLvPeDr41Yihn2ak8P+XQfNE= +github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -406,16 +437,14 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= -github.com/sivchari/tenv v1.12.1 h1:+E0QzjktdnExv/wwsnnyk4oqZBUfuh89YMQT1cyuvSY= -github.com/sivchari/tenv v1.12.1/go.mod h1:1LjSOUCc25snIr5n3DtGGrENhX3LuWefcplwVGC24mw= -github.com/sonatard/noctx v0.1.0 h1:JjqOc2WN16ISWAjAk8M5ej0RfExEXtkEyExl2hLW+OM= -github.com/sonatard/noctx v0.1.0/go.mod h1:0RvBxqY8D4j9cTTTWE8ylt2vqj2EPI8fHmrxHdsaZ2c= +github.com/sonatard/noctx v0.4.0 h1:7MC/5Gg4SQ4lhLYR6mvOP6mQVSxCrdyiExo7atBs27o= +github.com/sonatard/noctx v0.4.0/go.mod h1:64XdbzFb18XL4LporKXp8poqZtPKbCrqQ402CV+kJas= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= -github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= -github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= +github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA= +github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZmbYo= github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= @@ -431,19 +460,13 @@ github.com/stbenjam/no-sprintf-host-port v0.2.0 h1:i8pxvGrt1+4G0czLr/WnmyH7zbZ8B github.com/stbenjam/no-sprintf-host-port v0.2.0/go.mod h1:eL0bQ9PasS0hsyTyfTjjG+E80QIyPnBVQbYZyv20Jfk= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= @@ -454,14 +477,14 @@ github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= -github.com/tetafro/godot v1.5.0 h1:aNwfVI4I3+gdxjMgYPus9eHmoBeJIbnajOyqZYStzuw= -github.com/tetafro/godot v1.5.0/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= -github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 h1:y4mJRFlM6fUyPhoXuFg/Yu02fg/nIPFMOY8tOqppoFg= -github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= -github.com/timonwong/loggercheck v0.10.1 h1:uVZYClxQFpw55eh+PIoqM7uAOHMrhVcDoWDery9R8Lg= -github.com/timonwong/loggercheck v0.10.1/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= -github.com/tomarrell/wrapcheck/v2 v2.10.0 h1:SzRCryzy4IrAH7bVGG4cK40tNUhmVmMDuJujy4XwYDg= -github.com/tomarrell/wrapcheck/v2 v2.10.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= +github.com/tetafro/godot v1.5.1 h1:PZnjCol4+FqaEzvZg5+O8IY2P3hfY9JzRBNPv1pEDS4= +github.com/tetafro/godot v1.5.1/go.mod h1:cCdPtEndkmqqrhiCfkmxDodMQJ/f3L1BCNskCUZdTwk= +github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 h1:9LPGD+jzxMlnk5r6+hJnar67cgpDIz/iyD+rfl5r2Vk= +github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= +github.com/timonwong/loggercheck v0.11.0 h1:jdaMpYBl+Uq9mWPXv1r8jc5fC3gyXx4/WGwTnnNKn4M= +github.com/timonwong/loggercheck v0.11.0/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= +github.com/tomarrell/wrapcheck/v2 v2.11.0 h1:BJSt36snX9+4WTIXeJ7nvHBQBcm1h2SjQMSlmQ6aFSU= +github.com/tomarrell/wrapcheck/v2 v2.11.0/go.mod h1:wFL9pDWDAbXhhPZZt+nG8Fu+h29TtnZ2MW6Lx4BRXIU= github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= github.com/trustmaster/go-aspell v0.0.0-20200701131845-c2b1f55bec8f h1:92ZQJRegaqnKjz9HY9an696Sw5EmAqRv0eie/U2IE6k= @@ -472,14 +495,16 @@ github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSW github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= github.com/uudashr/gocognit v1.2.0 h1:3BU9aMr1xbhPlvJLSydKwdLN3tEUUrzPSSM8S4hDYRA= github.com/uudashr/gocognit v1.2.0/go.mod h1:k/DdKPI6XBZO1q7HgoV2juESI2/Ofj9AcHPZhBBdrTU= -github.com/uudashr/iface v1.3.1 h1:bA51vmVx1UIhiIsQFSNq6GZ6VPTk3WNMZgRiCe9R29U= -github.com/uudashr/iface v1.3.1/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= +github.com/uudashr/iface v1.4.1 h1:J16Xl1wyNX9ofhpHmQ9h9gk5rnv2A6lX/2+APLTo0zU= +github.com/uudashr/iface v1.4.1/go.mod h1:pbeBPlbuU2qkNDn0mmfrxP2X+wjPMIQAy+r1MBXSXtg= github.com/weppos/publicsuffix-go v0.13.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= github.com/weppos/publicsuffix-go v0.30.2-0.20230730094716-a20f9abcc222/go.mod h1:s41lQh6dIsDWIC1OWh7ChWJXLH0zkJ9KHZVqA7vHyuQ= github.com/weppos/publicsuffix-go v0.30.3-0.20240510084413-5f1d03393b3d h1:q80YKUcDWRNvvQcziH63e3ammTWARwrhohBCunHaYAg= github.com/weppos/publicsuffix-go v0.30.3-0.20240510084413-5f1d03393b3d/go.mod h1:vLdXKydr/OJssAXmjY0XBgLXUfivBMrNRIBljgtqCnw= -github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= -github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg= +github.com/xen0n/gosmopolitan v1.3.0 h1:zAZI1zefvo7gcpbCOrPSHJZJYA9ZgLfJqtKzZ5pHqQM= +github.com/xen0n/gosmopolitan v1.3.0/go.mod h1:rckfr5T6o4lBtM1ga7mLGKZmLxswUoH1zxHgNXOsEt4= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= github.com/yeya24/promlinter v0.3.0 h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs= @@ -508,10 +533,14 @@ gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo= gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8= go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= -go-simpler.org/musttag v0.13.0 h1:Q/YAW0AHvaoaIbsPj3bvEI5/QFP7w696IMUpnKXQfCE= -go-simpler.org/musttag v0.13.0/go.mod h1:FTzIGeK6OkKlUDVpj0iQUXZLUO1Js9+mvykDQy9C5yM= -go-simpler.org/sloglint v0.9.0 h1:/40NQtjRx9txvsB/RN022KsUJU+zaaSb/9q9BSefSrE= -go-simpler.org/sloglint v0.9.0/go.mod h1:G/OrAF6uxj48sHahCzrbarVMptL2kjWTaUeC8+fOGww= +go-simpler.org/musttag v0.13.1 h1:lw2sJyu7S1X8lc8zWUAdH42y+afdcCnHhWpnkWvd6vU= +go-simpler.org/musttag v0.13.1/go.mod h1:8r450ehpMLQgvpb6sg+hV5Ur47eH6olp/3yEanfG97k= +go-simpler.org/sloglint v0.11.1 h1:xRbPepLT/MHPTCA6TS/wNfZrDzkGvCCqUv4Bdwc3H7s= +go-simpler.org/sloglint v0.11.1/go.mod h1:2PowwiCOK8mjiF+0KGifVOT8ZsCNiFzvfyJeJOIt8MQ= +go.augendre.info/arangolint v0.2.0 h1:2NP/XudpPmfBhQKX4rMk+zDYIj//qbt4hfZmSSTcpj8= +go.augendre.info/arangolint v0.2.0/go.mod h1:Vx4KSJwu48tkE+8uxuf0cbBnAPgnt8O1KWiT7bljq7w= +go.augendre.info/fatcontext v0.8.0 h1:2dfk6CQbDGeu1YocF59Za5Pia7ULeAM6friJ3LP7lmk= +go.augendre.info/fatcontext v0.8.0/go.mod h1:oVJfMgwngMsHO+KB2MdgzcO+RvtNdiCEOlWvSFtax/s= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 h1:QQiUXlqz+d96jyNG71NE+IGTgOK6Xlhdx+PzvfbLHlQ= @@ -548,21 +577,19 @@ golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0 golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac h1:TSSpLIG4v+p0rPv1pNOQtl1I8knsO4S9trOxNMOLVP4= -golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b h1:KdrhdYPDUvJTvrDK9gdjfFd6JTk8vA1WJoldYSi0kHo= +golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b/go.mod h1:LKZHyeOpPuZcMgxeHjJp4p5yvxrCX1xDvH10zYHhjjQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= -golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -575,7 +602,6 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= @@ -617,7 +643,6 @@ golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -632,7 +657,6 @@ golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= @@ -650,7 +674,6 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= @@ -675,13 +698,11 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= -golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= @@ -709,8 +730,6 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -722,7 +741,7 @@ honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -mvdan.cc/gofumpt v0.7.0 h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU= -mvdan.cc/gofumpt v0.7.0/go.mod h1:txVFJy/Sc/mvaycET54pV8SW8gWxTlUuGHVEcncmNUo= -mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U= -mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f/go.mod h1:RSLa7mKKCNeTTMHBw5Hsy2rfJmd6O2ivt9Dw9ZqCQpQ= +mvdan.cc/gofumpt v0.8.0 h1:nZUCeC2ViFaerTcYKstMmfysj6uhQrA2vJe+2vwGU6k= +mvdan.cc/gofumpt v0.8.0/go.mod h1:vEYnSzyGPmjvFkqJWtXkh79UwPWP9/HMxQdGEXZHjpg= +mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 h1:WjUu4yQoT5BHT1w8Zu56SP8367OuBV5jvo+4Ulppyf8= +mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4/go.mod h1:rthT7OuvRbaGcd5ginj6dA2oLE7YNlta9qhBNNdCaLE= diff --git a/tools/mod/tools.go b/tools/mod/tools.go index 8a133579db70..8f22d22576fd 100644 --- a/tools/mod/tools.go +++ b/tools/mod/tools.go @@ -26,7 +26,7 @@ import ( _ "github.com/chzchzchz/goword" _ "github.com/cloudflare/cfssl/cmd/cfssl" _ "github.com/cloudflare/cfssl/cmd/cfssljson" - _ "github.com/golangci/golangci-lint/cmd/golangci-lint" + _ "github.com/golangci/golangci-lint/v2/cmd/golangci-lint" _ "github.com/google/addlicense" _ "github.com/google/yamlfmt/cmd/yamlfmt" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway" From fd526c22f3e1b712d316193d114b64fc40f22cd4 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Thu, 4 Sep 2025 13:23:47 +0200 Subject: [PATCH 0491/1068] Add Get and GetStale to kubernetess robustness tests Signed-off-by: Aleksander Mistewicz --- tests/robustness/traffic/kubernetes.go | 30 ++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/tests/robustness/traffic/kubernetes.go b/tests/robustness/traffic/kubernetes.go index a47fe13793eb..553d75aeee93 100644 --- a/tests/robustness/traffic/kubernetes.go +++ b/tests/robustness/traffic/kubernetes.go @@ -15,6 +15,7 @@ package traffic import ( + "cmp" "context" "errors" "fmt" @@ -42,7 +43,9 @@ var ( namespace: "default", // Please keep the sum of weights equal 100. readChoices: []random.ChoiceWeight[KubernetesRequestType]{ - {Choice: KubernetesListStale, Weight: 20}, + {Choice: KubernetesGet, Weight: 5}, + {Choice: KubernetesGetStale, Weight: 5}, + {Choice: KubernetesListStale, Weight: 10}, {Choice: KubernetesListAndWatch, Weight: 80}, }, // Please keep the sum of weights equal 100. @@ -59,7 +62,9 @@ var ( namespace: "default", // Please keep the sum of weights equal 100. readChoices: []random.ChoiceWeight[KubernetesRequestType]{ - {Choice: KubernetesListStale, Weight: 20}, + {Choice: KubernetesGet, Weight: 5}, + {Choice: KubernetesGetStale, Weight: 5}, + {Choice: KubernetesListStale, Weight: 10}, {Choice: KubernetesListAndWatch, Weight: 80}, }, // Please keep the sum of weights equal 100. @@ -134,6 +139,19 @@ func (t kubernetesTraffic) Read(ctx context.Context, c *client.RecordingClient, kc := kubernetes.Client{Client: &clientv3.Client{KV: c}} op := random.PickRandom(t.readChoices) switch op { + case KubernetesGet: + key, unusedRev := s.PickRandom() + if unusedRev == 0 { + return errors.New("storage empty") + } + return t.Get(ctx, kc, s, limiter, key, 0) + case KubernetesGetStale: + key1, rev1 := s.PickRandom() + key2, rev2 := s.PickRandom() + if rev1 == 0 && rev2 == 0 { + return errors.New("storage empty") + } + return t.Get(ctx, kc, s, limiter, cmp.Or(key1, key2), cmp.Or(rev2, rev1)) case KubernetesListStale: _, rev := s.PickRandom() _, err := t.List(ctx, kc, s, limiter, keyPrefix, t.averageKeyCount, rev) @@ -150,6 +168,12 @@ func (t kubernetesTraffic) Read(ctx context.Context, c *client.RecordingClient, } } +func (t kubernetesTraffic) Get(ctx context.Context, kc kubernetes.Interface, s *storage, limiter *rate.Limiter, key string, rev int64) error { + _, err := kc.Get(ctx, key, kubernetes.GetOptions{Revision: rev}) + limiter.Wait(ctx) + return err +} + func (t kubernetesTraffic) List(ctx context.Context, kc kubernetes.Interface, s *storage, limiter *rate.Limiter, keyPrefix string, limit int, revision int64) (rev int64, err error) { hasMore := true var kvs []*mvccpb.KeyValue @@ -308,6 +332,8 @@ const ( KubernetesDelete KubernetesRequestType = "delete" KubernetesUpdate KubernetesRequestType = "update" KubernetesCreate KubernetesRequestType = "create" + KubernetesGet KubernetesRequestType = "get" + KubernetesGetStale KubernetesRequestType = "get_stale" KubernetesListStale KubernetesRequestType = "list_stale" KubernetesListAndWatch KubernetesRequestType = "list_watch" ) From 370087ac175810624e937d9c34981c9c4545ad71 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Sun, 7 Sep 2025 10:45:10 +0100 Subject: [PATCH 0492/1068] bump github.com/spf13/cobra from 1.9.1 to 1.10.1 Signed-off-by: Benjamin Wang --- etcdctl/go.mod | 4 ++-- etcdctl/go.sum | 9 ++++----- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 9 ++++----- go.mod | 4 ++-- go.sum | 9 ++++----- pkg/go.mod | 4 ++-- pkg/go.sum | 9 ++++----- server/go.mod | 4 ++-- server/go.sum | 9 ++++----- tests/go.mod | 4 ++-- tests/go.sum | 9 ++++----- tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 9 ++++----- tools/rw-heatmaps/go.mod | 4 ++-- tools/rw-heatmaps/go.sum | 9 ++++----- tools/testgrid-analysis/go.mod | 4 ++-- tools/testgrid-analysis/go.sum | 9 ++++----- 18 files changed, 54 insertions(+), 63 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 45e7798ec17d..929ee2e78d16 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -9,8 +9,8 @@ require ( github.com/cheggaaa/pb/v3 v3.1.7 github.com/dustin/go-humanize v1.0.1 github.com/olekukonko/tablewriter v1.0.9 - github.com/spf13/cobra v1.9.1 - github.com/spf13/pflag v1.0.7 + github.com/spf13/cobra v1.10.1 + github.com/spf13/pflag v1.0.9 github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 3ed77db1216a..28bf8b6092ad 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -75,11 +75,10 @@ github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUc github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= -github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 5df1aea4098d..86472474e810 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -24,7 +24,7 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 github.com/olekukonko/tablewriter v1.0.9 - github.com/spf13/cobra v1.9.1 + github.com/spf13/cobra v1.10.1 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 @@ -71,7 +71,7 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect - github.com/spf13/pflag v1.0.7 // indirect + github.com/spf13/pflag v1.0.9 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 18029823f1c3..ad4c582ad337 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -93,11 +93,10 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= -github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= diff --git a/go.mod b/go.mod index ba48a2f48173..adcdb9f1aaca 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/cheggaaa/pb/v3 v3.1.7 github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/spf13/cobra v1.9.1 + github.com/spf13/cobra v1.10.1 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 @@ -78,7 +78,7 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect - github.com/spf13/pflag v1.0.7 // indirect + github.com/spf13/pflag v1.0.9 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/gofail v0.2.0 // indirect diff --git a/go.sum b/go.sum index 990125c868b2..c0a7ff0072be 100644 --- a/go.sum +++ b/go.sum @@ -127,11 +127,10 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= -github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= diff --git a/pkg/go.mod b/pkg/go.mod index 3a0cf7d7b025..73c0e61ea07f 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -7,8 +7,8 @@ toolchain go1.24.3 require ( github.com/creack/pty v1.1.18 github.com/dustin/go-humanize v1.0.1 - github.com/spf13/cobra v1.9.1 - github.com/spf13/pflag v1.0.7 + github.com/spf13/cobra v1.10.1 + github.com/spf13/pflag v1.0.9 github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.38.0 diff --git a/pkg/go.sum b/pkg/go.sum index 486a28f47772..e2b0331f52fb 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -28,11 +28,10 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= -github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/server/go.mod b/server/go.mod index 4bb164437f79..8fb3abc2798f 100644 --- a/server/go.mod +++ b/server/go.mod @@ -21,7 +21,7 @@ require ( github.com/prometheus/client_golang v1.23.0 github.com/prometheus/client_model v0.6.2 github.com/soheilhy/cmux v0.1.5 - github.com/spf13/cobra v1.9.1 + github.com/spf13/cobra v1.10.1 github.com/stretchr/testify v1.11.1 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 @@ -63,7 +63,7 @@ require ( github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/pflag v1.0.7 // indirect + github.com/spf13/pflag v1.0.9 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect diff --git a/server/go.sum b/server/go.sum index b84a4d3609d9..c7691c53f63d 100644 --- a/server/go.sum +++ b/server/go.sum @@ -78,11 +78,10 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= -github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= diff --git a/tests/go.mod b/tests/go.mod index bd8121ea4c64..3b3b7f9b20e1 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -86,8 +86,8 @@ require ( github.com/prometheus/procfs v0.16.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/cobra v1.9.1 // indirect - github.com/spf13/pflag v1.0.7 // indirect + github.com/spf13/cobra v1.10.1 // indirect + github.com/spf13/pflag v1.0.9 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index f43ad4873a3d..2af9ad98d414 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -133,11 +133,10 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= -github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index c44eeeea9fd2..22abf350fb6a 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -181,8 +181,8 @@ require ( github.com/sourcegraph/go-diff v0.7.0 // indirect github.com/spf13/afero v1.12.0 // indirect github.com/spf13/cast v1.7.1 // indirect - github.com/spf13/cobra v1.9.1 // indirect - github.com/spf13/pflag v1.0.7 // indirect + github.com/spf13/cobra v1.10.1 // indirect + github.com/spf13/pflag v1.0.9 // indirect github.com/spf13/viper v1.20.0 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index a057bab76833..51086a1ae4bc 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -418,12 +418,11 @@ github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= -github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.20.0 h1:zrxIyR3RQIOsarIrgL8+sAvALXul9jeEPa06Y0Ph6vY= github.com/spf13/viper v1.20.0/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index dab92e4afad9..6873f2780745 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -5,8 +5,8 @@ go 1.24 toolchain go1.24.3 require ( - github.com/spf13/cobra v1.9.1 - github.com/spf13/pflag v1.0.7 + github.com/spf13/cobra v1.10.1 + github.com/spf13/pflag v1.0.9 gonum.org/v1/plot v0.14.0 ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index ec10b648a421..cb3a4a6734ca 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -29,11 +29,10 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= -github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 74e6e6fe479e..810301b179b2 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -7,14 +7,14 @@ toolchain go1.24.3 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 github.com/google/go-github/v60 v60.0.0 - github.com/spf13/cobra v1.9.1 + github.com/spf13/cobra v1.10.1 google.golang.org/protobuf v1.36.8 ) require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/spf13/pflag v1.0.7 // indirect + github.com/spf13/pflag v1.0.9 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index d21fa9345fa4..5bf8d0500247 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1140,12 +1140,11 @@ github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTd github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= -github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= From 37b9146a699d0e4117689e33bcc91dd335d5c310 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Sun, 7 Sep 2025 21:35:39 -0700 Subject: [PATCH 0493/1068] tests: fix testifylint issue Signed-off-by: Ivan Valdes --- tests/common/hashkv_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/common/hashkv_test.go b/tests/common/hashkv_test.go index e666e6b75c4b..0c0595cdfe57 100644 --- a/tests/common/hashkv_test.go +++ b/tests/common/hashkv_test.go @@ -183,7 +183,7 @@ func TestVerifyHashKVAfterCompactAndDefrag(t *testing.T) { after, err := cc.HashKV(ctx, compactOnRev) require.NoError(t, err) - require.Equal(t, len(before), len(after)) + require.Len(t, before, len(after)) for i := range before { assert.Equal(t, before[i].Hash, after[i].Hash) } From 9da9997fc8af99eae539731bce6b5239d0e75359 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Fri, 5 Sep 2025 11:42:14 +0200 Subject: [PATCH 0494/1068] Add GetRev to Kubernetes robustness tests Signed-off-by: Aleksander Mistewicz --- tests/robustness/traffic/kubernetes.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tests/robustness/traffic/kubernetes.go b/tests/robustness/traffic/kubernetes.go index 553d75aeee93..f1e848b00312 100644 --- a/tests/robustness/traffic/kubernetes.go +++ b/tests/robustness/traffic/kubernetes.go @@ -44,8 +44,9 @@ var ( // Please keep the sum of weights equal 100. readChoices: []random.ChoiceWeight[KubernetesRequestType]{ {Choice: KubernetesGet, Weight: 5}, - {Choice: KubernetesGetStale, Weight: 5}, - {Choice: KubernetesListStale, Weight: 10}, + {Choice: KubernetesGetStale, Weight: 2}, + {Choice: KubernetesGetRev, Weight: 8}, + {Choice: KubernetesListStale, Weight: 5}, {Choice: KubernetesListAndWatch, Weight: 80}, }, // Please keep the sum of weights equal 100. @@ -63,8 +64,9 @@ var ( // Please keep the sum of weights equal 100. readChoices: []random.ChoiceWeight[KubernetesRequestType]{ {Choice: KubernetesGet, Weight: 5}, - {Choice: KubernetesGetStale, Weight: 5}, - {Choice: KubernetesListStale, Weight: 10}, + {Choice: KubernetesGetStale, Weight: 2}, + {Choice: KubernetesGetRev, Weight: 8}, + {Choice: KubernetesListStale, Weight: 5}, {Choice: KubernetesListAndWatch, Weight: 80}, }, // Please keep the sum of weights equal 100. @@ -152,6 +154,8 @@ func (t kubernetesTraffic) Read(ctx context.Context, c *client.RecordingClient, return errors.New("storage empty") } return t.Get(ctx, kc, s, limiter, cmp.Or(key1, key2), cmp.Or(rev2, rev1)) + case KubernetesGetRev: + return t.Get(ctx, kc, s, limiter, "/registry/"+t.resource, 0) case KubernetesListStale: _, rev := s.PickRandom() _, err := t.List(ctx, kc, s, limiter, keyPrefix, t.averageKeyCount, rev) @@ -334,6 +338,7 @@ const ( KubernetesCreate KubernetesRequestType = "create" KubernetesGet KubernetesRequestType = "get" KubernetesGetStale KubernetesRequestType = "get_stale" + KubernetesGetRev KubernetesRequestType = "get_rev" KubernetesListStale KubernetesRequestType = "list_stale" KubernetesListAndWatch KubernetesRequestType = "list_watch" ) From 8b7933e1c74cff0513a13656091b1afd3a52ca5e Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Sun, 7 Sep 2025 10:52:22 +0100 Subject: [PATCH 0495/1068] Update the bom Signed-off-by: Benjamin Wang --- bill-of-materials.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index 115c00671f76..2c9140701329 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -580,7 +580,7 @@ "licenses": [ { "type": "Apache License 2.0", - "confidence": 1 + "confidence": 0.9647812166488794 } ] }, @@ -589,7 +589,7 @@ "licenses": [ { "type": "Apache License 2.0", - "confidence": 1 + "confidence": 0.9647812166488794 } ] }, @@ -598,7 +598,7 @@ "licenses": [ { "type": "Apache License 2.0", - "confidence": 1 + "confidence": 0.9647812166488794 } ] }, @@ -607,7 +607,7 @@ "licenses": [ { "type": "Apache License 2.0", - "confidence": 1 + "confidence": 0.9647812166488794 } ] }, @@ -616,7 +616,7 @@ "licenses": [ { "type": "Apache License 2.0", - "confidence": 1 + "confidence": 0.9647812166488794 } ] }, @@ -625,7 +625,7 @@ "licenses": [ { "type": "Apache License 2.0", - "confidence": 1 + "confidence": 0.9647812166488794 } ] }, @@ -634,7 +634,7 @@ "licenses": [ { "type": "Apache License 2.0", - "confidence": 1 + "confidence": 0.9647812166488794 } ] }, From 020a5fc482703e91ecf56ff5df7d7aefd947d405 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 18:02:15 +0000 Subject: [PATCH 0496/1068] build(deps): bump actions/github-script from 7.0.1 to 8.0.0 Bumps [actions/github-script](https://github.com/actions/github-script) from 7.0.1 to 8.0.0. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/60a0d83039c74a4aee543508d2ffcb1c3799cdea...ed597411d8f924073f98dfc5c65a23a2325f34cd) --- updated-dependencies: - dependency-name: actions/github-script dependency-version: 8.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/gh-workflow-approve.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gh-workflow-approve.yaml b/.github/workflows/gh-workflow-approve.yaml index 1f988637677c..7cc227bdd470 100644 --- a/.github/workflows/gh-workflow-approve.yaml +++ b/.github/workflows/gh-workflow-approve.yaml @@ -21,7 +21,7 @@ jobs: actions: write steps: - name: Update PR - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 continue-on-error: true with: github-token: ${{ secrets.GITHUB_TOKEN }} From 4a73e77645314967ce5adf8358b6101096220aa6 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Fri, 5 Sep 2025 15:20:15 +0200 Subject: [PATCH 0497/1068] Add KeyWithUnrelatedRev to storage in robustness tests It tries to return key and rev that may be not associated with it. Signed-off-by: Aleksander Mistewicz --- tests/robustness/traffic/kubernetes.go | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/tests/robustness/traffic/kubernetes.go b/tests/robustness/traffic/kubernetes.go index f1e848b00312..a5a9075ad78e 100644 --- a/tests/robustness/traffic/kubernetes.go +++ b/tests/robustness/traffic/kubernetes.go @@ -15,7 +15,6 @@ package traffic import ( - "cmp" "context" "errors" "fmt" @@ -148,12 +147,8 @@ func (t kubernetesTraffic) Read(ctx context.Context, c *client.RecordingClient, } return t.Get(ctx, kc, s, limiter, key, 0) case KubernetesGetStale: - key1, rev1 := s.PickRandom() - key2, rev2 := s.PickRandom() - if rev1 == 0 && rev2 == 0 { - return errors.New("storage empty") - } - return t.Get(ctx, kc, s, limiter, cmp.Or(key1, key2), cmp.Or(rev2, rev1)) + key, rev := s.KeyWithUnrelatedRev() + return t.Get(ctx, kc, s, limiter, key, rev) case KubernetesGetRev: return t.Get(ctx, kc, s, limiter, "/registry/"+t.resource, 0) case KubernetesListStale: @@ -394,6 +389,10 @@ func (s *storage) Count() int { func (s *storage) PickRandom() (key string, rev int64) { s.mux.RLock() defer s.mux.RUnlock() + return s.pickRandomLocked() +} + +func (s *storage) pickRandomLocked() (key string, rev int64) { l := len(s.keyRevision) if l == 0 { return "", 0 @@ -408,3 +407,15 @@ func (s *storage) PickRandom() (key string, rev int64) { } return "", 0 } + +func (s *storage) KeyWithUnrelatedRev() (key string, rev int64) { + s.mux.RLock() + defer s.mux.RUnlock() + l := len(s.keyRevision) + if l == 0 { + return "", 0 + } + key, _ = s.pickRandomLocked() + _, rev = s.pickRandomLocked() + return key, rev +} From 8387ccd0ec36aaeaa8fa6d9d7480551291fc69ca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 18:02:12 +0000 Subject: [PATCH 0498/1068] build(deps): bump actions/setup-go from 5.5.0 to 6.0.0 Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.5.0 to 6.0.0. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/d35c59abb061a4a6fb18e82ac0862c26744d6ab5...44694675825211faa026b3c33043df3e48a5fa00) --- updated-dependencies: - dependency-name: actions/setup-go dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/measure-testgrid-flakiness.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/measure-testgrid-flakiness.yaml b/.github/workflows/measure-testgrid-flakiness.yaml index 84b3a69d46c9..c6d61ea38c58 100644 --- a/.github/workflows/measure-testgrid-flakiness.yaml +++ b/.github/workflows/measure-testgrid-flakiness.yaml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - id: goversion run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 + - uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 with: go-version: ${{ steps.goversion.outputs.goversion }} - env: From c878b934b55d81db78820ab3eeeb0289d99e36f8 Mon Sep 17 00:00:00 2001 From: Nont Date: Mon, 1 Sep 2025 22:12:16 -0500 Subject: [PATCH 0499/1068] Initial setup for k8s based antithesis Signed-off-by: Nont --- tests/antithesis/Makefile | 11 ++ tests/antithesis/README.md | 50 +++++++++ .../manifests/default-etcd-3-replicas.yaml | 103 ++++++++++++++++++ 3 files changed, 164 insertions(+) create mode 100644 tests/antithesis/config/manifests/default-etcd-3-replicas.yaml diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 835f5a5befdd..8eb13cb6f5d8 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -75,3 +75,14 @@ validate-node-count: echo "CFG_NODE_COUNT must be either 1 or 3 (got $(CFG_NODE_COUNT))"; \ exit 1; \ fi + +REQUIRED_K8S_TOOLS := kubectl kind + +.PHONY: check-k8s-tools +check-k8s-tools: + @for tool in $(REQUIRED_K8S_TOOLS); do \ + if ! command -v $$tool >/dev/null 2>&1; then \ + echo "Error: '$$tool' is missing. Please install it before continuing." >&2; \ + exit 1; \ + fi \ + done diff --git a/tests/antithesis/README.md b/tests/antithesis/README.md index fb69b576ab1b..c918d47960af 100644 --- a/tests/antithesis/README.md +++ b/tests/antithesis/README.md @@ -1,5 +1,7 @@ This directory enables integration of Antithesis with etcd. There are 4 containers running in this system: 3 that make up an etcd cluster (etcd0, etcd1, etcd2) and one that "[makes the system go](https://antithesis.com/docs/getting_started/basic_test_hookup/)" (client). +# Running tests with docker compose + ## Quickstart ### 1. Build and Tag the Docker Image @@ -106,3 +108,51 @@ make antithesis-clean ## Troubleshooting - **Image Pull Errors**: If Docker can’t pull `etcd-client:latest`, make sure you built it locally (see the “Build and Tag” step) or push it to a registry that Compose can access. + +# Running Tests with Kubernetes (WIP) + +## Prerequisites + +Please make sure that you have the following tools installed on your local: + +- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) +- [kind](https://kind.sigs.k8s.io/docs/user/quick-start#installation) + +## Testing locally + +### Setting up the cluster and deploying the images + +#### 1. Ensure your access to a test kubernetes cluster + +You can use `kind` to create a local cluster to deploy the etcd-server and test client. Once you have `kind` installed, you can use the following command to create a local cluster: + +```bash +kind create cluster +``` + +Alternatively, you can use any existing kubernetes cluster you have access to. + +#### 2. Build and load the images + +Please [build the client and server images](#1-build-and-tag-the-docker-image) first. Then load the images into the `kind` cluster: + +If you use `kind`, the cluster will need to have access to the images using the following commands: + +```bash +kind load docker-image etcd-client:latest +kind load docker-image etcd-server:latest +``` + +If you use something other than `kind`, please make sure the images are accessible to your cluster. This might involve pushing the images to a container registry that your cluster can pull from. + +#### 3. Deploy the kubernetes manifests + +```bash +kubectl apply -f ./config/manifests +``` + +### Tearing down the cluster + +```bash +kind delete cluster --name kind +``` diff --git a/tests/antithesis/config/manifests/default-etcd-3-replicas.yaml b/tests/antithesis/config/manifests/default-etcd-3-replicas.yaml new file mode 100644 index 000000000000..ceaeb8ede006 --- /dev/null +++ b/tests/antithesis/config/manifests/default-etcd-3-replicas.yaml @@ -0,0 +1,103 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: etcd + namespace: default +spec: + type: ClusterIP + clusterIP: None + publishNotReadyAddresses: true + ports: + - name: client + port: 2379 + targetPort: client + - name: peer + port: 2380 + targetPort: peer + selector: + app: etcd +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: etcd + namespace: default +spec: + selector: + matchLabels: + app: etcd + serviceName: etcd + replicas: 3 + podManagementPolicy: Parallel + template: + metadata: + labels: + app: etcd + spec: + terminationGracePeriodSeconds: 10 + containers: + - name: etcd-server + image: etcd-server:latest + imagePullPolicy: Never + env: + - name: ETCD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: CLIENT_PORT + value: "2379" + - name: PEER_PORT + value: "2380" + - name: ETCD_INITIAL_ADVERTISE_PEER_URLS + value: http://$(ETCD_NAME).etcd.default.svc.cluster.local:$(PEER_PORT) + - name: ETCD_LISTEN_PEER_URLS + value: "http://0.0.0.0:$(PEER_PORT)" + - name: ETCD_LISTEN_CLIENT_URLS + value: "http://0.0.0.0:$(CLIENT_PORT)" + - name: ETCD_ADVERTISE_CLIENT_URLS + value: "https://$(ETCD_NAME).etcd:$(CLIENT_PORT)" + - name: ETCD_INITIAL_CLUSTER_TOKEN + value: "etcd-cluster-1" + - name: ETCD_INITIAL_CLUSTER + value: "etcd-0=http://etcd-0.etcd.default.svc.cluster.local:$(PEER_PORT),etcd-1=http://etcd-1.etcd.default.svc.cluster.local:$(PEER_PORT),etcd-2=http://etcd-2.etcd.default.svc.cluster.local:$(PEER_PORT)" + - name: ETCD_INITIAL_CLUSTER_STATE + value: "new" + - name: ETCD_DATA_DIR + value: "/var/etcd/data" + - name: ETCD_SNAPSHOT_CATCHUP_ENTRIES + value: "100" + - name: ETCD_SNAPSHOT_COUNT + value: "50" + - name: ETCD_COMPACTION_BATCH_LIMIT + value: "10" + - name: ETCD_VERIFY + value: "all" + ports: + - containerPort: 2379 + name: client + protocol: TCP + - containerPort: 2380 + name: peer + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: client + livenessProbe: + httpGet: + path: /livez + port: client + volumeMounts: + - name: data + mountPath: /var/etcd/data + volumeClaimTemplates: + - metadata: + name: data + spec: + storageClassName: standard + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 200Mi From 65ad1be00c99a2a5704d5754d7bd0555eff77942 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 18:02:09 +0000 Subject: [PATCH 0500/1068] build(deps): bump github/codeql-action from 3.30.0 to 3.30.1 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.0 to 3.30.1. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d...f1f6e5f6af878fb37288ce1c627459e94dbf7d01) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.30.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 42547e5d64f6..ede594a1918f 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.29.5 + uses: github/codeql-action/init@f1f6e5f6af878fb37288ce1c627459e94dbf7d01 # v3.29.5 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.29.5 + uses: github/codeql-action/autobuild@f1f6e5f6af878fb37288ce1c627459e94dbf7d01 # v3.29.5 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.29.5 + uses: github/codeql-action/analyze@f1f6e5f6af878fb37288ce1c627459e94dbf7d01 # v3.29.5 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index f8f9432f0a83..f02d8180b1ba 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.29.5 + uses: github/codeql-action/upload-sarif@f1f6e5f6af878fb37288ce1c627459e94dbf7d01 # v3.29.5 with: sarif_file: results.sarif From 5bf1e962d729551e2eb124ae8cd0dc445145197d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 18:01:57 +0000 Subject: [PATCH 0501/1068] build(deps): bump actions/stale from 9.1.0 to 10.0.0 Bumps [actions/stale](https://github.com/actions/stale) from 9.1.0 to 10.0.0. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/5bef64f19d7facfb25b37b414482c7164d639639...3a9db7e6a41a89f618792c92c0e97cc736e1b13f) --- updated-dependencies: - dependency-name: actions/stale dependency-version: 10.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/stale.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index 84dfec4476a4..d0f83a312f20 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -13,7 +13,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 #v9.1.0 + - uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f #v10.0.0 with: days-until-stale: 90 days-until-close: 21 From c70bc678e0e2dc5b539a7512a4495042be486b84 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Tue, 9 Sep 2025 07:49:41 +0200 Subject: [PATCH 0502/1068] dependency: bump golang.org/x/time from 0.12.0 to 0.13.0 Reference: - https://github.com/etcd-io/etcd/pull/20629 Signed-off-by: Chun-Hung Tseng --- etcdctl/go.mod | 4 ++-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 4 ++-- go.mod | 4 ++-- go.sum | 4 ++-- server/go.mod | 4 ++-- server/go.sum | 4 ++-- tests/go.mod | 4 ++-- tests/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- 11 files changed, 21 insertions(+), 21 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 929ee2e78d16..61b2e71da371 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/etcdctl/v3 -go 1.24 +go 1.24.0 toolchain go1.24.3 @@ -17,7 +17,7 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - golang.org/x/time v0.12.0 + golang.org/x/time v0.13.0 google.golang.org/grpc v1.75.0 ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 28bf8b6092ad..d8887f04f8e9 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -125,8 +125,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 86472474e810..505c54b50ed5 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/etcdutl/v3 -go 1.24 +go 1.24.0 toolchain go1.24.5 @@ -89,7 +89,7 @@ require ( golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/text v0.28.0 // indirect - golang.org/x/time v0.12.0 // indirect + golang.org/x/time v0.13.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/grpc v1.75.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index ad4c582ad337..7ab34367588e 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -171,8 +171,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/go.mod b/go.mod index adcdb9f1aaca..b7a05f13febf 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/v3 -go 1.24 +go 1.24.0 toolchain go1.24.3 @@ -34,7 +34,7 @@ require ( go.etcd.io/etcd/tests/v3 v3.0.0-00010101000000-000000000000 go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 - golang.org/x/time v0.12.0 + golang.org/x/time v0.13.0 google.golang.org/grpc v1.75.0 google.golang.org/protobuf v1.36.8 ) diff --git a/go.sum b/go.sum index c0a7ff0072be..7c6249f0b5ca 100644 --- a/go.sum +++ b/go.sum @@ -226,8 +226,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= diff --git a/server/go.mod b/server/go.mod index 8fb3abc2798f..85237485149b 100644 --- a/server/go.mod +++ b/server/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/server/v3 -go 1.24 +go 1.24.0 toolchain go1.24.3 @@ -39,7 +39,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/crypto v0.41.0 golang.org/x/net v0.43.0 - golang.org/x/time v0.12.0 + golang.org/x/time v0.13.0 google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 google.golang.org/grpc v1.75.0 google.golang.org/protobuf v1.36.8 diff --git a/server/go.sum b/server/go.sum index c7691c53f63d..2a1a76f7fc46 100644 --- a/server/go.sum +++ b/server/go.sum @@ -155,8 +155,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/tests/go.mod b/tests/go.mod index 3b3b7f9b20e1..b85ed82a5d0f 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/tests/v3 -go 1.24 +go 1.24.0 toolchain go1.24.3 @@ -49,7 +49,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/crypto v0.41.0 golang.org/x/sync v0.16.0 - golang.org/x/time v0.12.0 + golang.org/x/time v0.13.0 google.golang.org/grpc v1.75.0 google.golang.org/protobuf v1.36.8 ) diff --git a/tests/go.sum b/tests/go.sum index 2af9ad98d414..cc4ed6231bd8 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -232,8 +232,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 810301b179b2..0ef02fa54c28 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 -go 1.24 +go 1.24.0 toolchain go1.24.3 From ce03ff9cc67c1c92047f34a485e2a3d7754a6bee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 17:30:05 +0000 Subject: [PATCH 0503/1068] build(deps): bump distroless/static-debian12 from `f2ff10a` to `87bce11` Bumps distroless/static-debian12 from `f2ff10a` to `87bce11`. --- updated-dependencies: - dependency-name: distroless/static-debian12 dependency-version: 87bce11be0af225e4ca761c40babb06d6d559f5767fbf7dc3c47f0f1a466b92c dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7b4b6b605fbc..3e6b7d24931e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG ARCH=amd64 -FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:f2ff10a709b0fd153997059b698ada702e4870745b6077eff03a5f4850ca91b6 +FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:87bce11be0af225e4ca761c40babb06d6d559f5767fbf7dc3c47f0f1a466b92c ADD etcd /usr/local/bin/ ADD etcdctl /usr/local/bin/ From 4695f6b913e2e88762dcaaa14b9f69d8012cf922 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Tue, 9 Sep 2025 07:56:32 +0200 Subject: [PATCH 0504/1068] dependency: bump golang.org/x/text from 0.28.0 to 0.29.0 and golang.org/x/sync from 0.16.0 to 0.17.0 Reference: - https://github.com/etcd-io/etcd/pull/20626 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 4 ++-- api/go.sum | 4 ++-- cache/go.mod | 4 ++-- cache/go.sum | 4 ++-- client/v3/go.mod | 4 ++-- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 8 ++++---- go.mod | 2 +- go.sum | 8 ++++---- pkg/go.mod | 4 ++-- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 8 ++++---- tools/rw-heatmaps/go.mod | 4 ++-- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 24 files changed, 53 insertions(+), 53 deletions(-) diff --git a/api/go.mod b/api/go.mod index e247b0340536..43a3cce73a90 100644 --- a/api/go.mod +++ b/api/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/api/v3 -go 1.24 +go 1.24.0 toolchain go1.24.3 @@ -22,7 +22,7 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect + golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index c8207a9d4278..bdcdaec45642 100644 --- a/api/go.sum +++ b/api/go.sum @@ -64,8 +64,8 @@ golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/cache/go.mod b/cache/go.mod index 8a895857bc34..fdc4a75a3edf 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/cache/v3 -go 1.24 +go 1.24.0 toolchain go1.24.4 @@ -22,7 +22,7 @@ require ( go.uber.org/zap v1.27.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect + golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/grpc v1.75.0 // indirect diff --git a/cache/go.sum b/cache/go.sum index 70c3b0a52879..6ca6b524a628 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -85,8 +85,8 @@ golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/client/v3/go.mod b/client/v3/go.mod index c7d3816ba91e..a56ffce0e0e8 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/client/v3 -go 1.24 +go 1.24.0 toolchain go1.24.3 @@ -35,7 +35,7 @@ require ( go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect + golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/protobuf v1.36.8 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 06cc8399efdb..5db8dd9d7d98 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -99,8 +99,8 @@ golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 61b2e71da371..d0c0db107811 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -41,7 +41,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect + golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/protobuf v1.36.8 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index d8887f04f8e9..8173827760f3 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -123,8 +123,8 @@ golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 505c54b50ed5..b04327100c4d 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -88,7 +88,7 @@ require ( golang.org/x/crypto v0.41.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect + golang.org/x/text v0.29.0 // indirect golang.org/x/time v0.13.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 7ab34367588e..876464f78764 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -158,8 +158,8 @@ golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -169,8 +169,8 @@ golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index b7a05f13febf..4fe4b190a268 100644 --- a/go.mod +++ b/go.mod @@ -96,7 +96,7 @@ require ( golang.org/x/crypto v0.41.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect + golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index 7c6249f0b5ca..169074f0faac 100644 --- a/go.sum +++ b/go.sum @@ -211,8 +211,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -224,8 +224,8 @@ golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/pkg/go.mod b/pkg/go.mod index 73c0e61ea07f..15a2519c5e7c 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/pkg/v3 -go 1.24 +go 1.24.0 toolchain go1.24.3 @@ -25,7 +25,7 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.43.0 // indirect - golang.org/x/text v0.28.0 // indirect + golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/protobuf v1.36.8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index e2b0331f52fb..fb235a4dab75 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -56,8 +56,8 @@ golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= diff --git a/server/go.mod b/server/go.mod index 85237485149b..946e1251662a 100644 --- a/server/go.mod +++ b/server/go.mod @@ -71,7 +71,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect + golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index 2a1a76f7fc46..70645fc00bde 100644 --- a/server/go.sum +++ b/server/go.sum @@ -143,8 +143,8 @@ golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -153,8 +153,8 @@ golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index b85ed82a5d0f..a6e87231808b 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -48,7 +48,7 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.41.0 - golang.org/x/sync v0.16.0 + golang.org/x/sync v0.17.0 golang.org/x/time v0.13.0 google.golang.org/grpc v1.75.0 google.golang.org/protobuf v1.36.8 @@ -99,7 +99,7 @@ require ( go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect + golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index cc4ed6231bd8..65c7b41c69c6 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -217,8 +217,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -230,8 +230,8 @@ golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 285d85d2c1c0..87e64800ab0d 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -236,10 +236,10 @@ require ( golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b // indirect golang.org/x/mod v0.27.0 // indirect golang.org/x/net v0.43.0 // indirect - golang.org/x/sync v0.16.0 // indirect + golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/term v0.34.0 // indirect - golang.org/x/text v0.28.0 // indirect + golang.org/x/text v0.29.0 // indirect golang.org/x/tools v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index e84e76f45493..65ff08d2979f 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -622,8 +622,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -681,8 +681,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 6873f2780745..1187d9b34517 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/tools/rw-heatmaps/v3 -go 1.24 +go 1.24.0 toolchain go1.24.3 @@ -22,5 +22,5 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/image v0.18.0 // indirect - golang.org/x/text v0.28.0 // indirect + golang.org/x/text v0.29.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index cb3a4a6734ca..4d5224411e91 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -53,8 +53,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 0ef02fa54c28..fcab4188e4df 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -17,7 +17,7 @@ require ( github.com/spf13/pflag v1.0.9 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect + golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/grpc v1.75.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 5bf8d0500247..48b298b8ab7b 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1516,8 +1516,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 0b1e9c5c0ab6bca7089ea29222bd8da6f958d289 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Tue, 9 Sep 2025 11:06:13 +0000 Subject: [PATCH 0505/1068] cache: change demux.Broadcast to accept clientv3.WatchResponse Signed-off-by: Peter Chang --- cache/cache.go | 2 +- cache/demux.go | 4 ++-- cache/demux_test.go | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index 798b72540ac8..31402345acb8 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -313,7 +313,7 @@ func (c *Cache) watchEvents(watchCh clientv3.WatchChan, applyErr <-chan error, r } return err } - c.demux.Broadcast(resp.Events) + c.demux.Broadcast(resp) case err := <-applyErr: c.ready.Reset() c.demux.Purge() diff --git a/cache/demux.go b/cache/demux.go index 1b18ddf11d14..08000f752a6b 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -101,8 +101,8 @@ func (d *demux) Unregister(w *watcher) { }() w.Stop() } - -func (d *demux) Broadcast(events []*clientv3.Event) { +func (d *demux) Broadcast(resp clientv3.WatchResponse) { + events := resp.Events if len(events) == 0 { return } diff --git a/cache/demux_test.go b/cache/demux_test.go index 2bf45eff26ff..ac94845d63cb 100644 --- a/cache/demux_test.go +++ b/cache/demux_test.go @@ -58,7 +58,7 @@ func TestBroadcastBatching(t *testing.T) { w := newWatcher(len(tt.input)+1, nil) d.Register(w, 0) - d.Broadcast(eventRevs(tt.input...)) + d.Broadcast(respWithEventRevs(tt.input...)) gotRevs, gotSizes := readBatches(t, w, len(tt.wantRevs)) @@ -106,7 +106,7 @@ func TestSlowWatcherResync(t *testing.T) { w := newWatcher(1, nil) d.Register(w, 0) - d.Broadcast(eventRevs(tt.input...)) + d.Broadcast(respWithEventRevs(tt.input...)) gotInitRevs, gotInitSizes := readBatches(t, w, len(tt.wantInitialRevs)) if diff := cmp.Diff(tt.wantInitialRevs, gotInitRevs); diff != "" { @@ -133,7 +133,7 @@ func TestSlowWatcherResync(t *testing.T) { } } -func eventRevs(revs ...int64) []*clientv3.Event { +func respWithEventRevs(revs ...int64) clientv3.WatchResponse { events := make([]*clientv3.Event, 0, len(revs)) for _, r := range revs { kv := &mvccpb.KeyValue{ @@ -146,7 +146,7 @@ func eventRevs(revs ...int64) []*clientv3.Event { Kv: kv, }) } - return events + return clientv3.WatchResponse{Events: events} } func readBatches(t *testing.T, w *watcher, n int) (revs []int64, sizes []int) { From 07d2f7a7ab5d74aa400c589d131963fc63af6bd6 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Tue, 9 Sep 2025 20:43:45 +0800 Subject: [PATCH 0506/1068] fix func assertKVHash Signed-off-by: shenmu.wy --- tests/e2e/etcd_mix_versions_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/etcd_mix_versions_test.go b/tests/e2e/etcd_mix_versions_test.go index 205a76168419..83c25ecd6c94 100644 --- a/tests/e2e/etcd_mix_versions_test.go +++ b/tests/e2e/etcd_mix_versions_test.go @@ -192,7 +192,7 @@ func assertKVHash(t *testing.T, epc *e2e.EtcdProcessCluster) { } for i := 1; i < clusterSize; i++ { if hashKvs[0].Header.Revision != hashKvs[i].Header.Revision { - t.Logf("Got different revisions, [%d, %d]", hashKvs[0].Header.Revision, hashKvs[1].Header.Revision) + t.Logf("Got different revisions, [%d, %d]", hashKvs[0].Header.Revision, hashKvs[i].Header.Revision) return false } From a57be9634efad11ca270faf30dda092dbb7524cb Mon Sep 17 00:00:00 2001 From: Nont Date: Tue, 9 Sep 2025 08:59:48 -0500 Subject: [PATCH 0507/1068] Reduce the antithesis docker image footprint Signed-off-by: Nont --- tests/antithesis/server/Dockerfile | 9 ++++++--- tests/antithesis/test-template/Dockerfile | 5 ++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/tests/antithesis/server/Dockerfile b/tests/antithesis/server/Dockerfile index b8ec7ea9a0ee..f38b87c6ba61 100644 --- a/tests/antithesis/server/Dockerfile +++ b/tests/antithesis/server/Dockerfile @@ -1,7 +1,7 @@ ARG GO_VERSION=1.24.3 ARG ARCH=amd64 -FROM golang:$GO_VERSION +FROM golang:$GO_VERSION AS build # cloning etcd ARG REF=main @@ -39,7 +39,6 @@ RUN cp -r /etcd_instrumented/symbols/* /symbols EXPOSE 2379 2380 -# start etcd server WORKDIR /etcd_instrumented/customer # Some previous versions hardcode CGO_ENABLED=0 @@ -54,4 +53,8 @@ RUN for d in server etcdutl etcdctl; do (cd ${d} && go mod tidy || true); done # The instrumentation also adds a new main file which clashes with dummy.go found in non release-3.4 branches RUN if [ -f "dummy.go" ]; then sed -i 's/package main_test/package main/' dummy.go; fi RUN CGO_ENABLED=1 make build -CMD ["./bin/etcd"] + +FROM ubuntu:24.04 +COPY --from=build /etcd_instrumented/ /etcd + +CMD ["/etcd/customer/bin/etcd"] diff --git a/tests/antithesis/test-template/Dockerfile b/tests/antithesis/test-template/Dockerfile index 76585231b194..1227360f9f86 100644 --- a/tests/antithesis/test-template/Dockerfile +++ b/tests/antithesis/test-template/Dockerfile @@ -1,7 +1,7 @@ ARG GO_VERSION=1.24.3 ARG ARCH=amd64 -FROM golang:$GO_VERSION +FROM golang:$GO_VERSION AS build ARG CFG_NODE_COUNT=3 WORKDIR /build COPY . . @@ -10,3 +10,6 @@ WORKDIR /build/tests RUN go build -ldflags "-X main.NodeCount=$CFG_NODE_COUNT" -o /opt/antithesis/entrypoint/entrypoint -race ./antithesis/test-template/entrypoint/main.go RUN go build -ldflags "-X main.NodeCount=$CFG_NODE_COUNT" -o /opt/antithesis/test/v1/robustness/singleton_driver_traffic -race ./antithesis/test-template/robustness/traffic/main.go RUN go build -ldflags "-X main.NodeCount=$CFG_NODE_COUNT" -o /opt/antithesis/test/v1/robustness/finally_validation -race ./antithesis/test-template/robustness/finally/main.go + +FROM ubuntu:24.04 +COPY --from=build /opt/ /opt/ From a0cc6ea6a58f09fb484a8c2a4b80ffd4a14bfd8c Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Thu, 11 Sep 2025 17:16:29 +0200 Subject: [PATCH 0508/1068] Use provided DATA_DIR when available Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/collect_kind_traces.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/robustness/coverage/collect_kind_traces.sh b/tests/robustness/coverage/collect_kind_traces.sh index 65dbde5fe588..8a8b8438cdfe 100755 --- a/tests/robustness/coverage/collect_kind_traces.sh +++ b/tests/robustness/coverage/collect_kind_traces.sh @@ -63,7 +63,8 @@ trap "stop_jaeger" EXIT SIGINT echo "Building and starting etcd..." pushd "${ETCD_REPO}" mkdir -p "${KUBERNETES_REPO}/third_party/etcd" -export DATA_DIR="$(mktemp -d)" +DATA_DIR="$(mktemp -d -p "${DATA_DIR:-/tmp}")" +export DATA_DIR cp "./bin/etcd" "${KUBERNETES_REPO}/third_party/etcd/etcd" "./bin/etcd" --watch-progress-notify-interval=5s \ --data-dir "${DATA_DIR}" \ From 997205e77d8312096af6162eb2293390a7d472a9 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Tue, 9 Sep 2025 08:00:32 +0200 Subject: [PATCH 0509/1068] dependency: bump golang.org/x/crypto from 0.41.0 to 0.42.0 and bump golang.org/x/sys from 0.35.0 to 0.36.0 Reference: - https://github.com/etcd-io/etcd/pull/20627 - https://github.com/etcd-io/etcd/pull/20628 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/pkg/go.mod | 4 ++-- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 4 ++-- server/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- tools/mod/go.mod | 6 +++--- tools/mod/go.sum | 12 ++++++------ tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 24 files changed, 55 insertions(+), 55 deletions(-) diff --git a/api/go.mod b/api/go.mod index 43a3cce73a90..d5033c6518b9 100644 --- a/api/go.mod +++ b/api/go.mod @@ -21,7 +21,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect golang.org/x/net v0.43.0 // indirect - golang.org/x/sys v0.35.0 // indirect + golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/api/go.sum b/api/go.sum index bdcdaec45642..00c5c6524c9b 100644 --- a/api/go.sum +++ b/api/go.sum @@ -60,8 +60,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= diff --git a/cache/go.mod b/cache/go.mod index fdc4a75a3edf..03e11f040a17 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -21,7 +21,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect golang.org/x/net v0.43.0 // indirect - golang.org/x/sys v0.35.0 // indirect + golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/cache/go.sum b/cache/go.sum index 6ca6b524a628..e85b6473c982 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -81,8 +81,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 4f26ca46ecc9..1ba1913d223d 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/client/pkg/v3 -go 1.24 +go 1.24.0 toolchain go1.24.3 @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.6.0 github.com/stretchr/testify v1.11.1 go.uber.org/zap v1.27.0 - golang.org/x/sys v0.35.0 + golang.org/x/sys v0.36.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index a6478e89dc83..f62bc37b2bc1 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -24,8 +24,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index a56ffce0e0e8..cdcd7a8662e1 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -34,7 +34,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/net v0.43.0 // indirect - golang.org/x/sys v0.35.0 // indirect + golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 5db8dd9d7d98..a3d9f4351be3 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -95,8 +95,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index d0c0db107811..db3e67eead1b 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -40,7 +40,7 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.43.0 // indirect - golang.org/x/sys v0.35.0 // indirect + golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 8173827760f3..c98f89adc48c 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -119,8 +119,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index b04327100c4d..95b7998ac868 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -85,9 +85,9 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.41.0 // indirect + golang.org/x/crypto v0.42.0 // indirect golang.org/x/net v0.43.0 // indirect - golang.org/x/sys v0.35.0 // indirect + golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect golang.org/x/time v0.13.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 876464f78764..d3a8b43da6f8 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -144,8 +144,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -165,8 +165,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= diff --git a/go.mod b/go.mod index 4fe4b190a268..ccf93561c5dc 100644 --- a/go.mod +++ b/go.mod @@ -93,9 +93,9 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.41.0 // indirect + golang.org/x/crypto v0.42.0 // indirect golang.org/x/net v0.43.0 // indirect - golang.org/x/sys v0.35.0 // indirect + golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/go.sum b/go.sum index 169074f0faac..5aad348fa71a 100644 --- a/go.sum +++ b/go.sum @@ -186,8 +186,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -220,8 +220,8 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= diff --git a/pkg/go.mod b/pkg/go.mod index 15a2519c5e7c..4fc7f3c9834d 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.38.0 go.uber.org/zap v1.27.0 - golang.org/x/sys v0.35.0 + golang.org/x/sys v0.36.0 google.golang.org/grpc v1.75.0 ) diff --git a/pkg/go.sum b/pkg/go.sum index fb235a4dab75..d3c1c8fa4d00 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -54,8 +54,8 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= diff --git a/server/go.mod b/server/go.mod index 946e1251662a..753f6345dcab 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,7 +37,7 @@ require ( go.opentelemetry.io/otel/sdk v1.38.0 go.opentelemetry.io/otel/trace v1.38.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.41.0 + golang.org/x/crypto v0.42.0 golang.org/x/net v0.43.0 golang.org/x/time v0.13.0 google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 @@ -70,7 +70,7 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/sys v0.35.0 // indirect + golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/server/go.sum b/server/go.sum index 70645fc00bde..1b461925d30f 100644 --- a/server/go.sum +++ b/server/go.sum @@ -129,8 +129,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -149,8 +149,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= diff --git a/tests/go.mod b/tests/go.mod index a6e87231808b..0ba7222ed1c0 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -47,7 +47,7 @@ require ( go.opentelemetry.io/otel/sdk v1.38.0 go.opentelemetry.io/proto/otlp v1.7.1 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.41.0 + golang.org/x/crypto v0.42.0 golang.org/x/sync v0.17.0 golang.org/x/time v0.13.0 google.golang.org/grpc v1.75.0 @@ -98,7 +98,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/net v0.43.0 // indirect - golang.org/x/sys v0.35.0 // indirect + golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/tests/go.sum b/tests/go.sum index 65c7b41c69c6..539afe4e48a9 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -192,8 +192,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -226,8 +226,8 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 87e64800ab0d..373f42f4bc54 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -231,14 +231,14 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.41.0 // indirect + golang.org/x/crypto v0.42.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b // indirect golang.org/x/mod v0.27.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/term v0.34.0 // indirect + golang.org/x/sys v0.36.0 // indirect + golang.org/x/term v0.35.0 // indirect golang.org/x/text v0.29.0 // indirect golang.org/x/tools v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 65ff08d2979f..5ad4d7068b2a 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -571,8 +571,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -652,8 +652,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -666,8 +666,8 @@ golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= -golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= +golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= +golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index fcab4188e4df..79225ddc60b3 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -16,7 +16,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.9 // indirect golang.org/x/net v0.43.0 // indirect - golang.org/x/sys v0.35.0 // indirect + golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/grpc v1.75.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 48b298b8ab7b..8a7d3d7f186d 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1484,8 +1484,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From f55f19b3116a70b813eeb76bafda76359f093482 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 9 Sep 2025 14:42:35 +0200 Subject: [PATCH 0510/1068] Add collect_kind_traces.sh This script will be executed as a periodic prowjob to provide information on the changes of Etcd API usage by Kubernetes. Test instructions: ``` git clone https://github.com/kubernetes/kubernetes \ --depth 128 \ /tmp/kubernetes KUBERNETES_REPO=/tmp/kubernetes make k8s-coverage ``` Depth of 128 is needed to get at least one tag for KIND build. Signed-off-by: Aleksander Mistewicz --- tests/robustness/Makefile | 7 + tests/robustness/coverage/README.md | 81 +----------- .../coverage/collect_kind_traces.sh | 120 ++++++++++++++++++ 3 files changed, 134 insertions(+), 74 deletions(-) create mode 100755 tests/robustness/coverage/collect_kind_traces.sh diff --git a/tests/robustness/Makefile b/tests/robustness/Makefile index ef485c7f56ae..0542022458d5 100644 --- a/tests/robustness/Makefile +++ b/tests/robustness/Makefile @@ -75,6 +75,13 @@ test-robustness-issue19179: /tmp/etcd-v3.5.17-failpoints/bin GO_TEST_FLAGS='-v -run=TestRobustnessRegression/Issue19179 -count 200 -failfast --bin-dir=/tmp/etcd-v3.5.17-failpoints/bin' $(TOPLEVEL_MAKE) test-robustness && \ echo "Failed to reproduce" || echo "Successful reproduction" +# Etcd API usage by Kubernetes + +.PHONY: k8s-coverage +k8s-coverage: + $(TOPLEVEL_MAKE) build + @echo "Running k8s coverage script" + ETCD_REPO="$(REPOSITORY_ROOT)" "$(REPOSITORY_ROOT)/tests/robustness/coverage/collect_kind_traces.sh" # Failpoints diff --git a/tests/robustness/coverage/README.md b/tests/robustness/coverage/README.md index 09c464f7b62b..5d6c69f2d80c 100644 --- a/tests/robustness/coverage/README.md +++ b/tests/robustness/coverage/README.md @@ -24,81 +24,12 @@ export KUBECONFIG="${KUBERNETES_REPO}/kind-with-tracing-config" ``` 1. Set up [KIND -cluster](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) with -tracing exporting to [Jaeger](https://www.jaegertracing.io/) - - 1. Patch and build kubernetes images - - ```shell - git -C "$KUBERNETES_REPO" apply --recount ${PWD}/patches/kubernetes/* - kind build node-image - ``` - - 1. Create docker network: - - ```shell - docker network create kind-with-external-etcd \ - --driver bridge \ - --gateway "192.168.32.1" \ - --subnet "192.168.32.0/24" - ``` - - Note: You will need to adjust the configuration files and commands if you - choose a different subnet. - - 1. Run [Jaeger](https://www.jaegertracing.io/) container: - - ```shell - docker run --rm --name jaeger \ - -p 16686:16686 \ - -p 4317:4317 \ - jaegertracing/jaeger:2.6.0 --set=extensions.jaeger_storage.backends.some_storage.memory.max_traces=20000000 - ``` - - 1. Run `etcd` (in root of `etcd` repository): - - ```shell - make build - cp bin/etcd "${KUBERNETES_REPO}/third_party/etcd/etcd" - bin/etcd --watch-progress-notify-interval=5s \ - --listen-client-urls http://192.168.32.1:2379 \ - --advertise-client-urls http://192.168.32.1:2379 \ - --enable-distributed-tracing \ - --distributed-tracing-address="192.168.32.1:4317" \ - --distributed-tracing-service-name="etcd" \ - --distributed-tracing-sampling-rate=1000000 - ``` - - 1. Create [KIND -cluster](https://kind.sigs.k8s.io/docs/user/quick-start/#installation): - - ```shell - export KIND_EXPERIMENTAL_DOCKER_NETWORK=kind-with-external-etcd - kind create cluster --config kind-with-tracing.yaml --name kind-with-external-etcd --image kindest/node:latest - ``` - -1. Exercise Kubernetes API. For example, build and run Conformance tests from -Kubernetes repository (this usually takes 30-40m or will time out after 1 hour): +cluster](https://kind.sigs.k8s.io/docs/user/quick-start/#installation), exercise +Kubernetes API, export traces to [Jaeger](https://www.jaegertracing.io/) and +then download them: ```shell - make WHAT="test/e2e/e2e.test" - ./_output/bin/e2e.test \ - -context kind-kind-with-external-etcd \ - -ginkgo.focus="\[sig-apps\].*Conformance" \ - -num-nodes 2 - build/run.sh make test-cmd - ``` - -1. Download traces and put them into `tests/robustness/coverage/testdata` -directory in Etcd git repository: - - ```shell - curl -v --get --retry 10 --retry-connrefused -o testdata/demo_traces.json \ - -H "Content-Type: application/json" \ - --data-urlencode "query.start_time_min=$(date --date="5 days ago" -Ins)" \ - --data-urlencode "query.start_time_max=$(date --date="2 minutes ago" -Ins)" \ - --data-urlencode "query.service_name=etcd" \ - "http://192.168.32.1:16686/api/v3/traces" + make k8s-coverage ``` 1. Run Go test @@ -156,4 +87,6 @@ directory in Etcd git repository: ### Automated test execution -Work on improving these tests is tracked in [#20182](https://github.com/etcd-io/etcd/issues/20182). +Work on improving these tests is tracked in +[#20182](https://github.com/etcd-io/etcd/issues/20182) and periodic runs in +[#20642](https://github.com/etcd-io/etcd/issues/20642). diff --git a/tests/robustness/coverage/collect_kind_traces.sh b/tests/robustness/coverage/collect_kind_traces.sh new file mode 100755 index 000000000000..65dbde5fe588 --- /dev/null +++ b/tests/robustness/coverage/collect_kind_traces.sh @@ -0,0 +1,120 @@ +#!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This script runs KIND (Kubernetes IN Docker) cluster to collect traces with +# Jaeger for analysis in robustness/coverage tests. +# It is based on instructions from tests/robustness/coverage/README.md + +set -o errexit +set -o nounset +set -o pipefail + +# 1. Customize and set the environment variables +export KUBERNETES_REPO="${KUBERNETES_REPO:-$(go env GOPATH)/src/k8s.io/kubernetes}" +export ETCD_REPO="${ETCD_REPO:-$(go env GOPATH)/src/go.etcd.io/etcd}" +export KUBECONFIG="${KUBERNETES_REPO}/kind-with-tracing-config" + +echo "Using KUBERNETES_REPO: ${KUBERNETES_REPO}" +echo "Using ETCD_REPO: ${KUBERNETES_REPO}" +echo "Using KUBECONFIG: ${KUBECONFIG}" + +echo "Applying patches to Kubernetes repo..." +PATCHES_DIR="${ETCD_REPO}/tests/robustness/coverage/patches/kubernetes" +pushd "${KUBERNETES_REPO}" +git apply --reverse --check "${PATCHES_DIR}/"* || git apply --recount "${PATCHES_DIR}/"* +echo "Building KIND node image..." +kind build node-image +popd + +echo "Creating Docker network..." +docker network create kind-with-external-etcd \ + --driver bridge \ + --gateway "192.168.32.1" \ + --subnet "192.168.32.0/24" || echo "Docker network already exists." +rm_docker_network() { + docker network rm kind-with-external-etcd +} +trap "rm_docker_network" EXIT SIGINT + +echo "Starting Jaeger container..." +docker stop jaeger && docker wait jaeger || echo +docker run --rm --detach --name jaeger \ + -p 16686:16686 \ + -p 4317:4317 \ + jaegertracing/jaeger:2.6.0 --set=extensions.jaeger_storage.backends.some_storage.memory.max_traces=20000000 +stop_jaeger() { + docker stop jaeger + rm_docker_network +} +trap "stop_jaeger" EXIT SIGINT + +echo "Building and starting etcd..." +pushd "${ETCD_REPO}" +mkdir -p "${KUBERNETES_REPO}/third_party/etcd" +export DATA_DIR="$(mktemp -d)" +cp "./bin/etcd" "${KUBERNETES_REPO}/third_party/etcd/etcd" +"./bin/etcd" --watch-progress-notify-interval=5s \ + --data-dir "${DATA_DIR}" \ + --listen-client-urls "http://192.168.32.1:2379" \ + --advertise-client-urls "http://192.168.32.1:2379" \ + --enable-distributed-tracing \ + --distributed-tracing-address="192.168.32.1:4317" \ + --distributed-tracing-service-name="etcd" \ + --distributed-tracing-sampling-rate=1000000 & +ETCD_PID=$! +echo "etcd started with PID: ${ETCD_PID}" +popd +stop_etcd() { + kill "${ETCD_PID}" + rm -rf "${DATA_DIR}" + stop_jaeger +} +trap "stop_etcd" EXIT SIGINT + +echo "Creating KIND cluster..." +export KIND_EXPERIMENTAL_DOCKER_NETWORK=kind-with-external-etcd +kind delete cluster --name kind-with-external-etcd +delete_kind_cluster() { + kind delete cluster --name kind-with-external-etcd + stop_etcd +} +trap "delete_kind_cluster" EXIT SIGINT +pushd "${ETCD_REPO}/tests/robustness/coverage" +kind create cluster --config kind-with-tracing.yaml --name kind-with-external-etcd --image kindest/node:latest +popd + +echo "Running Kubernetes e2e tests..." +pushd "${KUBERNETES_REPO}" +make WHAT="test/e2e/e2e.test" +./_output/bin/e2e.test \ + -context kind-kind-with-external-etcd \ + -ginkgo.focus="\[sig-apps\].*Conformance" \ + -num-nodes 2 +echo "Running Kubernetes cmd tests..." +./build/run.sh make test-cmd +popd + +echo "Downloading traces..." +curl -v --get --retry 10 --retry-connrefused -o "${ETCD_REPO}/tests/robustness/coverage/testdata/traces-$(date -I).json" \ + -H "Content-Type: application/json" \ + --data-urlencode "query.start_time_min=$(date --date="5 days ago" -Ins)" \ + --data-urlencode "query.start_time_max=$(date --date="2 minutes ago" -Ins)" \ + --data-urlencode "query.service_name=etcd" \ + "http://192.168.32.1:16686/api/v3/traces" + +echo "Cleaning up..." +delete_kind_cluster + +echo "Done." From 04832e2cbe625d258004b5f4e147a4840ff7d7a9 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Thu, 11 Sep 2025 17:17:59 +0200 Subject: [PATCH 0511/1068] Use constant name for trace dump It would affect the test name and make it hard to compare in testgrid. Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/collect_kind_traces.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/robustness/coverage/collect_kind_traces.sh b/tests/robustness/coverage/collect_kind_traces.sh index 8a8b8438cdfe..53ff743f3166 100755 --- a/tests/robustness/coverage/collect_kind_traces.sh +++ b/tests/robustness/coverage/collect_kind_traces.sh @@ -108,7 +108,7 @@ echo "Running Kubernetes cmd tests..." popd echo "Downloading traces..." -curl -v --get --retry 10 --retry-connrefused -o "${ETCD_REPO}/tests/robustness/coverage/testdata/traces-$(date -I).json" \ +curl -v --get --retry 10 --retry-connrefused -o "${ETCD_REPO}/tests/robustness/coverage/testdata/traces.json" \ -H "Content-Type: application/json" \ --data-urlencode "query.start_time_min=$(date --date="5 days ago" -Ins)" \ --data-urlencode "query.start_time_max=$(date --date="2 minutes ago" -Ins)" \ From 5141c2ddcd16fa6093fc1527a3efdfbf7945ef2b Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Thu, 11 Sep 2025 10:32:40 +0000 Subject: [PATCH 0512/1068] Split TestCacheWithPrefixGet into client and cache-specific tests Signed-off-by: Peter Chang --- tests/integration/cache_test.go | 182 ++++++++++++++++++++------------ 1 file changed, 117 insertions(+), 65 deletions(-) diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 96bee0b0a2ae..19edae4467b9 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -803,97 +803,149 @@ var getTestCases = []getTestCase{ }, } -func TestCacheWithPrefixGet(t *testing.T) { +func TestCacheWithPrefixGetInScope(t *testing.T) { integration.BeforeTest(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) t.Cleanup(func() { clus.Terminate(t) }) - client := clus.Client(0) + cli := clus.Client(0) + + testWithPrefixGet(t, cli, func() Getter { + c, err := cache.New(cli, "/foo") + if err != nil { + t.Fatalf("cache.New: %v", err) + } + t.Cleanup(c.Close) + if err := c.WaitReady(t.Context()); err != nil { + t.Fatalf("cache.WaitReady: %v", err) + } + return c + }) +} + +func TestWithPrefixGet(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + t.Cleanup(func() { clus.Terminate(t) }) + cli := clus.Client(0) + testWithPrefixGet(t, cli, func() Getter { return cli.KV }) +} + +func testWithPrefixGet(t *testing.T, cli *clientv3.Client, getReader func() Getter) { ctx := t.Context() + seedResp, err := cli.Put(ctx, "/foo/a", "val") + if err != nil { + t.Fatalf("seed put: %v", err) + } + seedRev := seedResp.Header.Revision - tests := []struct { - name string - key string - opts []clientv3.OpOption - expectError bool + reader := getReader() + + expectedFooA := &mvccpb.KeyValue{ + Key: []byte("/foo/a"), + Value: []byte("val"), + CreateRevision: seedRev, + ModRevision: seedRev, + Version: 1, + } + + testCases := []struct { + name string + key string + opts []clientv3.OpOption + wantKVs []*mvccpb.KeyValue + wantRevision int64 }{ { - name: "single key within prefix", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable()}, - expectError: false, - }, - { - name: "single key outside prefix returns error", - key: "/bar/a", - opts: []clientv3.OpOption{clientv3.WithSerializable()}, - expectError: true, - }, - { - name: "prefix() within cache prefix", - key: "/foo", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix()}, - expectError: false, - }, - { - name: "prefix() outside cache prefix returns error", - key: "/bar", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix()}, - expectError: true, - }, - { - name: "range within prefix", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/foo/b")}, - expectError: false, + name: "single key within cache prefix", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable()}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, + wantRevision: seedRev, }, { - name: "range crosses cache prefix boundary returns error /foo/a", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/zzz")}, - expectError: true, + name: "prefix query within cache prefix", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix()}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, + wantRevision: seedRev, }, { - name: "fromKey not allowed when cache has prefix returns error /foo/a", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithFromKey()}, - expectError: true, + name: "range query within cache prefix", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/foo/b")}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, + wantRevision: seedRev, }, } - c, err := cache.New(client, "/foo") + for _, tc := range testCases { + tc := tc + t.Run(tc.name, func(t *testing.T) { + resp, err := reader.Get(ctx, tc.key, tc.opts...) + if err != nil { + t.Fatalf("Get(%q): %v", tc.key, err) + } + + if diff := cmp.Diff(tc.wantKVs, resp.Kvs); diff != "" { + t.Errorf("unexpected KVs (-want +got):\n%s", diff) + } + + if resp.Header.Revision != tc.wantRevision { + t.Errorf("Header.Revision=%d; want: %d", resp.Header.Revision, tc.wantRevision) + } + }) + } +} + +func TestCacheWithPrefixGetOutOfScope(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + t.Cleanup(func() { clus.Terminate(t) }) + cli := clus.Client(0) + c, err := cache.New(cli, "/foo") if err != nil { t.Fatalf("cache.New: %v", err) } defer c.Close() - if err = c.WaitReady(ctx); err != nil { + ctx := t.Context() + if err := c.WaitReady(ctx); err != nil { t.Fatalf("cache.WaitReady: %v", err) } - const testKey = "/foo/a" - putResp, err := client.Put(ctx, testKey, "val") - if err != nil { - t.Fatalf("client.Put(%q, \"val\") failed: %v", testKey, err) - } - if err := c.WaitForRevision(ctx, putResp.Header.Revision); err != nil { - t.Fatalf("cache never caught up to rev %d: %v", putResp.Header.Revision, err) + cases := []struct { + name string + key string + opts []clientv3.OpOption + }{ + { + name: "single key outside prefix", + key: "/bar/a", + opts: []clientv3.OpOption{clientv3.WithSerializable()}, + }, + { + name: "prefix() outside cache prefix", + key: "/bar", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix()}, + }, + { + name: "range crossing cache boundary", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/zzz")}, + }, + { + name: "fromKey disallowed with cache prefix", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithFromKey()}, + }, } - for _, tc := range tests { + for _, tc := range cases { tc := tc t.Run(tc.name, func(t *testing.T) { - resp, err := c.Get(ctx, tc.key, tc.opts...) - if tc.expectError { - if !errors.Is(err, cache.ErrKeyRangeInvalid) { - t.Fatalf("expected ErrKeyRangeInvalid for Get %q, got: %v", tc.key, err) - } - return - } - if err != nil { - t.Fatalf("Get %q failed: %v", tc.key, err) - } - if len(resp.Kvs) == 0 { - t.Fatalf("Get %q returned no KVs, expected at least one", tc.key) + _, err := c.Get(ctx, tc.key, tc.opts...) + if !errors.Is(err, cache.ErrKeyRangeInvalid) { + t.Fatalf("expected ErrKeyRangeInvalid; got %v", err) } }) } From 629d1e94861e03b8b06536638f55e51505f7ed4d Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Thu, 11 Sep 2025 17:20:38 +0200 Subject: [PATCH 0513/1068] Ignore test and cleanup errors KiND creation already exercises most of the API. Major failures will show up in the final test results anyway. test-cmd use tput for colorful output which fails in noninteractive sessions (setting TERM=dumb) is insufficient. Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/collect_kind_traces.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/robustness/coverage/collect_kind_traces.sh b/tests/robustness/coverage/collect_kind_traces.sh index 53ff743f3166..0f9fa2c27030 100755 --- a/tests/robustness/coverage/collect_kind_traces.sh +++ b/tests/robustness/coverage/collect_kind_traces.sh @@ -102,9 +102,9 @@ make WHAT="test/e2e/e2e.test" ./_output/bin/e2e.test \ -context kind-kind-with-external-etcd \ -ginkgo.focus="\[sig-apps\].*Conformance" \ - -num-nodes 2 + -num-nodes 2 || echo "[sig-apps] Conformance tests failed. Ignoring..." echo "Running Kubernetes cmd tests..." -./build/run.sh make test-cmd +./build/run.sh ./hack/jenkins/test-cmd-dockerized.sh || echo "Command tests failed. Ignoring..." popd echo "Downloading traces..." @@ -115,7 +115,9 @@ curl -v --get --retry 10 --retry-connrefused -o "${ETCD_REPO}/tests/robustness/c --data-urlencode "query.service_name=etcd" \ "http://192.168.32.1:16686/api/v3/traces" + echo "Cleaning up..." +set +o errexit delete_kind_cluster echo "Done." From 2948f394e8a5a18a266abc6578477593fa049f4c Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Mon, 8 Sep 2025 16:21:46 -0700 Subject: [PATCH 0514/1068] Install govulncheck from scripts/test.sh Ensure that GOTOOLCHAIN is set by the time it runs, to ensure the binary gets compiled with the right Go version. Signed-off-by: Ivan Valdes --- Makefile | 3 --- scripts/test.sh | 1 + 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 22736f09efe5..b533ef287455 100644 --- a/Makefile +++ b/Makefile @@ -194,9 +194,6 @@ endif .PHONY: run-govulncheck run-govulncheck: -ifeq (, $(shell command -v govulncheck)) - $(shell go install golang.org/x/vuln/cmd/govulncheck@latest) -endif PASSES="govuln" ./scripts/test.sh # Tools diff --git a/scripts/test.sh b/scripts/test.sh index 8201a127bc4e..464a46ce76e4 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -398,6 +398,7 @@ function markdown_marker_pass { } function govuln_pass { + run go install golang.org/x/vuln/cmd/govulncheck@latest run_for_modules run govulncheck -show verbose } From 51184031aa5b83fddee4e6ea84937a99a891be18 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Thu, 11 Sep 2025 15:47:57 +0000 Subject: [PATCH 0515/1068] cache: refactor Broadcast into updateStoreLocked and broadcastLocked Signed-off-by: Peter Chang --- cache/demux.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cache/demux.go b/cache/demux.go index 08000f752a6b..2687541a6413 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -101,6 +101,7 @@ func (d *demux) Unregister(w *watcher) { }() w.Stop() } + func (d *demux) Broadcast(resp clientv3.WatchResponse) { events := resp.Events if len(events) == 0 { @@ -109,7 +110,11 @@ func (d *demux) Broadcast(resp clientv3.WatchResponse) { d.mu.Lock() defer d.mu.Unlock() + d.updateStoreLocked(events) + d.broadcastLocked(events) +} +func (d *demux) updateStoreLocked(events []*clientv3.Event) { batchStart := 0 for end := 1; end < len(events); end++ { if events[end].Kv.ModRevision != events[batchStart].Kv.ModRevision { @@ -122,9 +127,12 @@ func (d *demux) Broadcast(resp clientv3.WatchResponse) { if batchStart < len(events) { d.history.Append(events[batchStart:]) } +} +func (d *demux) broadcastLocked(events []*clientv3.Event) { firstRev := events[0].Kv.ModRevision lastRev := events[len(events)-1].Kv.ModRevision + for w, nextRev := range d.activeWatchers { if nextRev != 0 && firstRev > nextRev { d.laggingWatchers[w] = nextRev From ca8a29d1b5b84cda955bd33c7eb44ce59dc26005 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 11 Sep 2025 22:28:59 -0700 Subject: [PATCH 0516/1068] Add documentation to tool_get_bin Stating that it only works for tools managed by tools/mod. Signed-off-by: Ivan Valdes --- scripts/test_lib.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index 95f8070dee7a..e90bf3e1cb16 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -300,7 +300,8 @@ function tool_exists { fi } -# tool_get_bin [tool] - returns absolute path to a tool binary (or returns error) +# tool_get_bin [tool] - returns absolute path to a tool binary (or returns error). +# This function is only used to run commands that are managed by tools/mod. function tool_get_bin { local tool="$1" local pkg_part="$1" From 985aac459fa45e2fded55b84cd9ac74eef3439de Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 27 Aug 2025 20:22:59 +0000 Subject: [PATCH 0517/1068] Fix typos in source files under the robustness test directory Signed-off-by: Chun-Hung Tseng --- tests/robustness/README.md | 4 ++-- tests/robustness/client/client.go | 4 ++-- tests/robustness/client/watch.go | 2 +- tests/robustness/failpoint/cluster.go | 2 +- tests/robustness/failpoint/gofail.go | 2 +- tests/robustness/failpoint/trigger.go | 2 +- tests/robustness/identity/id.go | 6 +++--- tests/robustness/model/deterministic.go | 12 ++++++------ tests/robustness/model/history.go | 8 ++++---- tests/robustness/model/non_deterministic.go | 6 +++--- tests/robustness/model/replay.go | 2 +- tests/robustness/model/types.go | 2 +- tests/robustness/options/cluster_options.go | 8 ++++---- tests/robustness/report/report.go | 2 +- tests/robustness/report/wal_test.go | 4 ++-- tests/robustness/scenarios/scenarios.go | 4 ++-- tests/robustness/traffic/etcd.go | 2 +- tests/robustness/traffic/key_store.go | 2 +- tests/robustness/traffic/traffic.go | 2 +- tests/robustness/validate/validate.go | 4 ++-- tests/robustness/validate/watch.go | 2 +- 21 files changed, 41 insertions(+), 41 deletions(-) diff --git a/tests/robustness/README.md b/tests/robustness/README.md index 642941dafd90..0f6dc03a3153 100644 --- a/tests/robustness/README.md +++ b/tests/robustness/README.md @@ -11,10 +11,10 @@ The purpose of these tests is to rigorously validate that etcd maintains its [KV | Correctness / Consistency issue | Report | Introduced in | Discovered by | Reproducible by robustness test | Command | | ----------------------------------------------------------------- | ---------- | ----------------- | --------------- | ------------------------------------------------- | ----------------------------------- | | Inconsistent revision caused by crash during high load [#13766] | Mar 2022 | v3.5 | User | Yes, report preceded robustness tests | `make test-robustness-issue13766` | -| Single node cluster can loose a write on crash [#14370] | Aug 2022 | v3.4 or earlier | User | Yes, report preceded robustness tests | `make test-robustness-issue14370` | +| Single node cluster can lose a write on crash [#14370] | Aug 2022 | v3.4 or earlier | User | Yes, report preceded robustness tests | `make test-robustness-issue14370` | | Enabling auth can lead to inconsistency [#14571] | Oct 2022 | v3.4 or earlier | User | No, authorization is not covered. | | | Inconsistent revision caused by crash during defrag [#14685] | Nov 2022 | v3.5 | Robustness | Yes, after covering defragmentation. | `make test-robustness-issue14685` | -| Watch progress notification not synced with steam [#15220] | Jan 2023 | v3.4 or earlier | User | Yes, after covering watch progress notification | `make test-robustness-issue15220` | +| Watch progress notification not synced with stream [#15220] | Jan 2023 | v3.4 or earlier | User | Yes, after covering watch progress notification | `make test-robustness-issue15220` | | Watch traveling back in time after network partition [#15271] | Feb 2023 | v3.4 or earlier | Robustness | Yes, after covering network partitions | `make test-robustness-issue15271` | | Duplicated watch event due to bug in TXN caching [#17247] | Jan 2024 | main branch | Robustness | Yes, prevented regression in v3.6 | | | Watch events lost during stream starvation [#17529] | Mar 2024 | v3.4 or earlier | User | Yes, after covering of slow watch | `make test-robustness-issue17529` | diff --git a/tests/robustness/client/client.go b/tests/robustness/client/client.go index 9eb2141a92f1..1bd5ee9aa302 100644 --- a/tests/robustness/client/client.go +++ b/tests/robustness/client/client.go @@ -30,9 +30,9 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/report" ) -// RecordingClient provides a semi etcd client (different interface than +// RecordingClient provides a semi-etcd client (different interface than // clientv3.Client) that records all the requests and responses made. Doesn't -// allow for concurrent requests to confirm to model.AppendableHistory requirements. +// allow for concurrent requests to conform to model.AppendableHistory requirements. type RecordingClient struct { ID int client clientv3.Client diff --git a/tests/robustness/client/watch.go b/tests/robustness/client/watch.go index dd35de89cf44..9b5c9b354a92 100644 --- a/tests/robustness/client/watch.go +++ b/tests/robustness/client/watch.go @@ -58,7 +58,7 @@ type WatchConfig struct { RequestProgress bool } -// watchUntilRevision watches all changes until context is cancelled, it has observed revision provided via maxRevisionChan or maxRevisionChan was closed. +// watchUntilRevision watches all changes until context is canceled, it has observed the revision provided via maxRevisionChan or maxRevisionChan was closed. func watchUntilRevision(ctx context.Context, lg *zap.Logger, c *RecordingClient, maxRevisionChan <-chan int64, cfg WatchConfig) error { var maxRevision int64 var lastRevision int64 = 1 diff --git a/tests/robustness/failpoint/cluster.go b/tests/robustness/failpoint/cluster.go index eb619036875e..e72c54a1b2df 100644 --- a/tests/robustness/failpoint/cluster.go +++ b/tests/robustness/failpoint/cluster.go @@ -236,7 +236,7 @@ func (f memberDowngradeUpgrade) Inject(ctx context.Context, t *testing.T, lg *za // NOTE: By default, the leader can cancel the downgrade once all members // have reached the target version. However, determining the final stable // cluster version after an upgrade can be challenging. To ensure stability, - // we should wait for leader to cancel downgrade process. + // we should wait for the leader to cancel the downgrade process. e2e.AssertProcessLogs(t, clus.Procs[clus.WaitLeader(t)], "the cluster has been downgraded") // partial upgrade the cluster diff --git a/tests/robustness/failpoint/gofail.go b/tests/robustness/failpoint/gofail.go index 3ce2ff39a535..ac23be5fe706 100644 --- a/tests/robustness/failpoint/gofail.go +++ b/tests/robustness/failpoint/gofail.go @@ -194,7 +194,7 @@ func (f killAndGofailSleep) Inject(ctx context.Context, t *testing.T, lg *zap.Lo if err != nil { return nil, err } - // TODO: Check gofail status (https://github.com/etcd-io/gofail/pull/47) and wait for sleep to beis executed at least once. + // TODO: Check gofail status (https://github.com/etcd-io/gofail/pull/47) and wait for sleep to be executed at least once. return nil, nil } diff --git a/tests/robustness/failpoint/trigger.go b/tests/robustness/failpoint/trigger.go index a75feb71d2cc..be5b606cc513 100644 --- a/tests/robustness/failpoint/trigger.go +++ b/tests/robustness/failpoint/trigger.go @@ -91,7 +91,7 @@ func (t triggerCompact) Available(config e2e.EtcdProcessClusterConfig, _ e2e.Etc if profile.ForbidCompaction { return false } - // Since introduction of compaction into traffic, injecting compaction failpoints started interfeering with peer proxy. + // Since the introduction of compaction into traffic, injecting compaction failpoints started interfering with the peer proxy. // TODO: Re-enable the peer proxy for compact failpoints when we confirm the root cause. if config.PeerProxy { return false diff --git a/tests/robustness/identity/id.go b/tests/robustness/identity/id.go index 149544853912..74e070df66cb 100644 --- a/tests/robustness/identity/id.go +++ b/tests/robustness/identity/id.go @@ -17,11 +17,11 @@ package identity import "sync/atomic" type Provider interface { - // NewStreamID returns an integer starting from zero to make it render nicely by porcupine visualization. + // NewStreamID returns an integer starting from zero to make it render nicely by the porcupine visualization. NewStreamID() int - // NewRequestID returns unique identification used to make write requests unique. + // NewRequestID returns a unique identification used to make write requests unique. NewRequestID() int - // NewClientID returns unique identification for client and their reports. + // NewClientID returns a unique identification for client and their reports. NewClientID() int } diff --git a/tests/robustness/model/deterministic.go b/tests/robustness/model/deterministic.go index b4e789296838..6142b1a0cb02 100644 --- a/tests/robustness/model/deterministic.go +++ b/tests/robustness/model/deterministic.go @@ -28,17 +28,17 @@ import ( ) // DeterministicModel assumes a deterministic execution of etcd requests. All -// requests that client called were executed and persisted by etcd. This +// requests that the client called were executed and persisted by etcd. This // assumption is good for simulating etcd behavior (aka writing a fake), but not // for validating correctness as requests might be lost or interrupted. It -// requires perfect knowledge of what happened to request which is not possible +// requires perfect knowledge of what happened to a request, which is not possible // in real systems. // -// Model can still respond with error or partial response. +// Model can still respond with an error or partial response. // - Error for etcd known errors, like future revision or compacted revision. -// - Incomplete response when requests is correct, but model doesn't have all -// to provide a full response. For example stale reads as model doesn't store -// whole change history as real etcd does. +// - Incomplete response when the request is correct, but the model doesn't have all +// the data to provide a full response. For example, stale reads as the model doesn't store +// the whole change history as real etcd does. var DeterministicModel = porcupine.Model{ Init: func() any { return freshEtcdState() diff --git a/tests/robustness/model/history.go b/tests/robustness/model/history.go index 338c7a23cb0e..9e64a922e5ee 100644 --- a/tests/robustness/model/history.go +++ b/tests/robustness/model/history.go @@ -28,13 +28,13 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/identity" ) -// AppendableHistory allows to collect history of sequential operations. +// AppendableHistory allows collecting the history of sequential operations. // -// Ensures that operation history is compatible with porcupine library, by preventing concurrent requests sharing the -// same stream id. For failed requests, we don't know their return time, so generate new stream id. +// Ensures that the operation history is compatible with the porcupine library by preventing concurrent requests from sharing the +// same stream id. For failed requests, we don't know their return time, so we generate a new stream id. // // Appending needs to be done in order of operation execution time (start, end time). -// Operations time should be calculated as time.Since common base time to ensure that Go monotonic time is used. +// Operation time should be calculated as time.Since a common base time to ensure that Go monotonic time is used. // More in https://github.com/golang/go/blob/96add980ad27faed627f26ef1ab09e8fe45d6bd1/src/time/time.go#L10. type AppendableHistory struct { // streamID for the next operation. Used for porcupine.Operation.ClientId as porcupine assumes no concurrent requests. diff --git a/tests/robustness/model/non_deterministic.go b/tests/robustness/model/non_deterministic.go index b9516342c4f7..c1c9839063da 100644 --- a/tests/robustness/model/non_deterministic.go +++ b/tests/robustness/model/non_deterministic.go @@ -24,9 +24,9 @@ import ( "github.com/anishathalye/porcupine" ) -// NonDeterministicModel extends DeterministicModel to allow for clients with imperfect knowledge of request destiny. -// Unknown/error response doesn't inform whether request was persisted or not, so model -// considers both cases. This is represented as multiple equally possible deterministic states. +// NonDeterministicModel extends DeterministicModel to allow for clients with imperfect knowledge of the request's destiny. +// An unknown/error response doesn't inform whether the request was persisted or not, so the model +// considers both cases. This is represented as multiple, equally possible deterministic states. // Failed requests fork the possible states, while successful requests merge and filter them. var NonDeterministicModel = porcupine.Model{ Init: func() any { diff --git a/tests/robustness/model/replay.go b/tests/robustness/model/replay.go index ab2ca79ebbb7..22f087cebd86 100644 --- a/tests/robustness/model/replay.go +++ b/tests/robustness/model/replay.go @@ -22,7 +22,7 @@ import ( func NewReplay(persistedRequests []EtcdRequest) *EtcdReplay { state := freshEtcdState() - // Padding for index 0 and 1, so index matches revision.. + // Padding for index 0 and 1, so the index matches the revision. revisionToEtcdState := []EtcdState{state, state} var events []PersistedEvent for _, request := range persistedRequests { diff --git a/tests/robustness/model/types.go b/tests/robustness/model/types.go index 0f605659a8f1..08a174215d7c 100644 --- a/tests/robustness/model/types.go +++ b/tests/robustness/model/types.go @@ -122,7 +122,7 @@ type DefragmentRequest struct{} // Possible response state information: // * Normal response. Client observed response. Only EtcdResponse is set. // * Persisted. Client didn't observe response, but we know it was persisted by etcd. Only Persisted is set -// * Persisted with Revision. Client didn't observe response, but we know that it was persisted, and it's revision. Both Persisted and PersistedRevision is set. +// * Persisted with Revision. Client didn't observe a response, but we know that it was persisted, and its revision. Both Persisted and PersistedRevision is set. // * Error response. Client observed error, but we don't know if it was persisted. Only Error is set. type MaybeEtcdResponse struct { EtcdResponse diff --git a/tests/robustness/options/cluster_options.go b/tests/robustness/options/cluster_options.go index 01031e218469..455d78322416 100644 --- a/tests/robustness/options/cluster_options.go +++ b/tests/robustness/options/cluster_options.go @@ -25,8 +25,8 @@ var internalRand = rand.New(rand.NewSource(time.Now().UnixNano())) type ClusterOptions []e2e.EPClusterOption -// WithClusterOptionGroups takes an array of EPClusterOption arrays, and randomly picks one EPClusterOption array when constructing the config. -// This function is mainly used to group strongly coupled config options together, so that we can dynamically test different groups of options. +// WithClusterOptionGroups takes an array of EPClusterOption arrays and randomly picks one EPClusterOption array when constructing the config. +// This function is mainly used to group strongly coupled config options together so that we can dynamically test different groups of options. func WithClusterOptionGroups(input ...ClusterOptions) e2e.EPClusterOption { return func(c *e2e.EtcdProcessClusterConfig) { optsPicked := input[internalRand.Intn(len(input))] @@ -36,10 +36,10 @@ func WithClusterOptionGroups(input ...ClusterOptions) e2e.EPClusterOption { } } -// WithSubsetOptions randomly select a subset of input options, and apply the subset to the cluster config. +// WithSubsetOptions randomly selects a subset of input options and applies the subset to the cluster config. func WithSubsetOptions(input ...e2e.EPClusterOption) e2e.EPClusterOption { return func(c *e2e.EtcdProcessClusterConfig) { - // selects random subsetLen (0 to len(input)) elements from the input array. + // selects a random subsetLen (0 to len(input)) elements from the input array. subsetLen := internalRand.Intn(len(input) + 1) perm := internalRand.Perm(len(input)) for i := 0; i < subsetLen; i++ { diff --git a/tests/robustness/report/report.go b/tests/robustness/report/report.go index e02a8b9e19e4..47c11237e4b8 100644 --- a/tests/robustness/report/report.go +++ b/tests/robustness/report/report.go @@ -43,7 +43,7 @@ func (r *TestReport) Report(path string) error { } for server, dataPath := range r.ServersDataPath { serverReportPath := filepath.Join(path, fmt.Sprintf("server-%s", server)) - r.Logger.Info("Saving member data dir", zap.String("member", server), zap.String("data-dir", dataPath), zap.String("path", serverReportPath)) + r.Logger.Info("Saving member data directory", zap.String("member", server), zap.String("path", serverReportPath)) if err := os.CopyFS(serverReportPath, os.DirFS(dataPath)); err != nil { return err } diff --git a/tests/robustness/report/wal_test.go b/tests/robustness/report/wal_test.go index 5ff9f34e6e43..374b672d99e2 100644 --- a/tests/robustness/report/wal_test.go +++ b/tests/robustness/report/wal_test.go @@ -42,7 +42,7 @@ func TestMergeMemberEntries(t *testing.T) { expectErr: "no WAL entries matched", }, { - name: "Error when one member cluster didn't observed index", + name: "Error when one member cluster didn't observe the index", memberEntries: [][]raftpb.Entry{ { raftpb.Entry{Index: 1, Data: []byte("a")}, @@ -157,7 +157,7 @@ func TestMergeMemberEntries(t *testing.T) { }, }, { - name: "Success if members didn't observe whole history", + name: "Success if members didn't observe the whole history", memberEntries: [][]raftpb.Entry{ { raftpb.Entry{Index: 1, Data: []byte("a")}, diff --git a/tests/robustness/scenarios/scenarios.go b/tests/robustness/scenarios/scenarios.go index d99fe68a0c62..2368c2733b8c 100644 --- a/tests/robustness/scenarios/scenarios.go +++ b/tests/robustness/scenarios/scenarios.go @@ -97,7 +97,7 @@ func Exploratory(_ *testing.T) []TestScenario { options.WithSnapshotCount(50, 100, 1000), options.WithSubsetOptions(randomizableOptions...), e2e.WithGoFailEnabled(true), - // Set low minimal compaction batch limit to allow for triggering multi batch compaction failpoints. + // Set a low minimal compaction batch limit to allow for triggering multi batch compaction failpoints. options.WithCompactionBatchLimit(10, 100, 1000), e2e.WithWatchProcessNotifyInterval(100 * time.Millisecond), } @@ -140,7 +140,7 @@ func Exploratory(_ *testing.T) []TestScenario { if e2e.BinPath.LazyFSAvailable() { newScenarios := scenarios for _, s := range scenarios { - // LazyFS increases the load on CPU, so we run it with more lightweight case. + // LazyFS increases the load on the CPU, so we run it with a more lightweight case. if s.Profile.MinimalQPS <= 100 && s.Cluster.ClusterSize == 1 { lazyfsCluster := s.Cluster lazyfsCluster.LazyFSEnabled = true diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index 5483e48bb2a5..39521cf7384e 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -363,7 +363,7 @@ func (c etcdTrafficClient) pickMultiTxnOps(keyStore *keyStore) (ops []clientv3.O case model.DeleteOperation: ops = append(ops, clientv3.OpDelete(key)) default: - panic("unsuported choice type") + panic("unsupported choice type") } } return ops diff --git a/tests/robustness/traffic/key_store.go b/tests/robustness/traffic/key_store.go index 95b6769d0e66..a95bc194be8e 100644 --- a/tests/robustness/traffic/key_store.go +++ b/tests/robustness/traffic/key_store.go @@ -111,7 +111,7 @@ func (k *keyStore) GetPrefix() string { // 3. Maintaining the key store size by removing the higher numbered keys. // // Notice that higher numbered keys will eventually be added -// again into the keystore, so it is safe to temporarily remove them from the. +// again into the keystore, so it is safe to temporarily remove them from the // key store. func (k *keyStore) SyncKeys(resp *clientv3.GetResponse) { k.mu.Lock() diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index fd045e04bef8..dd75668f03bc 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -155,7 +155,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 if beforeFailpointStats.QPS() < profile.MinimalQPS { t.Errorf("Requiring minimal %f qps before failpoint injection for test results to be reliable, got %f qps", profile.MinimalQPS, beforeFailpointStats.QPS()) } - // TODO: Validate QPS post failpoint injection to ensure the that we sufficiently cover period when cluster recovers. + // TODO: Validate QPS post failpoint injection to ensure that we sufficiently cover the period when the cluster recovers. return reports } diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index 3b3af2f8ea9e..775eb0d62c52 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -71,13 +71,13 @@ func prepareAndCategorizeOperations(reports []report.ClientReport) (linearizable if isSerializable(request, response) { serializable = append(serializable, op) } - // Operation that will not be linearized need to be added separetly to visualization. + // Operations that will not be linearized need to be added separately to the visualization. if !isLinearizable(request, response) { forVisualization = append(forVisualization, op) continue } // For linearization, we set the return time of failed requests to MaxInt64. - // Failed requests can still be persisted, however we don't know when request has taken effect. + // Failed requests can still be persisted, however we don't know when the request has taken effect. if response.Error != "" { op.Return = math.MaxInt64 } diff --git a/tests/robustness/validate/watch.go b/tests/robustness/validate/watch.go index 5f8e8b77cb85..0efb7d6adedd 100644 --- a/tests/robustness/validate/watch.go +++ b/tests/robustness/validate/watch.go @@ -27,7 +27,7 @@ import ( ) var ( - errBrokeBookmarkable = errors.New("broke Bookmarkable - Progress notification events guarantee that all events up to a revision have been already delivered") + errBrokeBookmarkable = errors.New("broke Bookmarkable - Progress notification events guarantee that all events up to a revision have already been delivered") errBrokeOrdered = errors.New("broke Ordered - events are ordered by revision; an event will never appear on a watch if it precedes an event in time that has already been posted") errBrokeUnique = errors.New("broke Unique - an event will never appear on a watch twice") errBrokeAtomic = errors.New("broke Atomic - a list of events is guaranteed to encompass complete revisions; updates in the same revision over multiple keys will not be split over several lists of events") From 675a83b9d51450a9f089c98f295751361b00e461 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 12 Sep 2025 10:36:31 +0200 Subject: [PATCH 0518/1068] Fix symbols for antithesis docker image Signed-off-by: Marek Siarkowicz --- tests/antithesis/server/Dockerfile | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/antithesis/server/Dockerfile b/tests/antithesis/server/Dockerfile index f38b87c6ba61..3f11a22e3337 100644 --- a/tests/antithesis/server/Dockerfile +++ b/tests/antithesis/server/Dockerfile @@ -33,11 +33,6 @@ RUN go mod tidy # compile etcd server with instrumentor RUN mkdir /etcd_instrumented RUN `go env GOPATH`/bin/antithesis-go-instrumentor /etcd /etcd_instrumented -RUN rm -rf /etcd -RUN mkdir -p /symbols -RUN cp -r /etcd_instrumented/symbols/* /symbols - -EXPOSE 2379 2380 WORKDIR /etcd_instrumented/customer @@ -56,5 +51,8 @@ RUN CGO_ENABLED=1 make build FROM ubuntu:24.04 COPY --from=build /etcd_instrumented/ /etcd +# Move symbols to /symbols directory https://antithesis.com/docs/instrumentation/#symbolization +RUN mv /etcd/symbols /symbols +EXPOSE 2379 2380 CMD ["/etcd/customer/bin/etcd"] From 9c4963a9b5448faeff2b0f50c5c4bdfe7e1cb6a1 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 12 Sep 2025 11:08:58 +0200 Subject: [PATCH 0519/1068] Fix accidental editing of a log line in the robustness test report Signed-off-by: Chun-Hung Tseng --- tests/robustness/report/report.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/robustness/report/report.go b/tests/robustness/report/report.go index 47c11237e4b8..e02a8b9e19e4 100644 --- a/tests/robustness/report/report.go +++ b/tests/robustness/report/report.go @@ -43,7 +43,7 @@ func (r *TestReport) Report(path string) error { } for server, dataPath := range r.ServersDataPath { serverReportPath := filepath.Join(path, fmt.Sprintf("server-%s", server)) - r.Logger.Info("Saving member data directory", zap.String("member", server), zap.String("path", serverReportPath)) + r.Logger.Info("Saving member data dir", zap.String("member", server), zap.String("data-dir", dataPath), zap.String("path", serverReportPath)) if err := os.CopyFS(serverReportPath, os.DirFS(dataPath)); err != nil { return err } From 2a9af9407c161b85a632d528b9574c735c7e36cd Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 12 Sep 2025 18:20:43 +0200 Subject: [PATCH 0520/1068] Fix race condition in robustness watch creation due to slices reallocation Signed-off-by: Marek Siarkowicz --- tests/robustness/client/client.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/robustness/client/client.go b/tests/robustness/client/client.go index 1bd5ee9aa302..2c13b25a3058 100644 --- a/tests/robustness/client/client.go +++ b/tests/robustness/client/client.go @@ -306,10 +306,11 @@ func (c *RecordingClient) watch(ctx context.Context, request model.WatchRequest) } respCh := make(chan clientv3.WatchResponse) + responses := []model.WatchResponse{} c.watchMux.Lock() c.watchOperations = append(c.watchOperations, model.WatchOperation{ Request: request, - Responses: []model.WatchResponse{}, + Responses: responses, }) index := len(c.watchOperations) - 1 c.watchMux.Unlock() @@ -317,7 +318,10 @@ func (c *RecordingClient) watch(ctx context.Context, request model.WatchRequest) go func() { defer close(respCh) for r := range c.client.Watch(ctx, request.Key, ops...) { - c.watchOperations[index].Responses = append(c.watchOperations[index].Responses, ToWatchResponse(r, c.baseTime)) + responses = append(responses, ToWatchResponse(r, c.baseTime)) + c.watchMux.Lock() + c.watchOperations[index].Responses = responses + c.watchMux.Unlock() select { case respCh <- r: case <-ctx.Done(): From 6f9f084465ba7042df931a290178ca5b20ff1270 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sun, 14 Sep 2025 00:14:50 +0200 Subject: [PATCH 0521/1068] Fix minor linter warning in robustness tests Signed-off-by: Chun-Hung Tseng --- tests/robustness/client/watch.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/robustness/client/watch.go b/tests/robustness/client/watch.go index 9b5c9b354a92..3de7e776604c 100644 --- a/tests/robustness/client/watch.go +++ b/tests/robustness/client/watch.go @@ -69,10 +69,10 @@ resetWatch: for { if closing { if maxRevision == 0 { - return errors.New("Client didn't collect all events, max revision not set") + return errors.New("client didn't collect all events, max revision not set") } if lastRevision < maxRevision { - return fmt.Errorf("Client didn't collect all events, got: %d, expected: %d", lastRevision, maxRevision) + return fmt.Errorf("client didn't collect all events, got: %d, expected: %d", lastRevision, maxRevision) } return nil } From 62a5b2e4225f9046400251f6eaa01afe85b2e8a6 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sun, 14 Sep 2025 00:02:21 +0200 Subject: [PATCH 0522/1068] Improve test-robustness-reports target to skip non-directory during test Signed-off-by: Chun-Hung Tseng --- tests/robustness/validate/validate_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/robustness/validate/validate_test.go b/tests/robustness/validate/validate_test.go index 70b15959029b..3d1ff653237d 100644 --- a/tests/robustness/validate/validate_test.go +++ b/tests/robustness/validate/validate_test.go @@ -35,7 +35,7 @@ func TestDataReports(t *testing.T) { files, err := os.ReadDir(testdataPath) require.NoError(t, err) for _, file := range files { - if file.Name() == ".gitignore" { + if !file.IsDir() { continue } t.Run(file.Name(), func(t *testing.T) { From e80f6f9442882d7b3241bdb886c39baa1d3a41ac Mon Sep 17 00:00:00 2001 From: Kota Date: Mon, 8 Sep 2025 23:01:46 +0900 Subject: [PATCH 0523/1068] tests: Migrate ctl_v3_watch_no_cov_test to ctl_v3_watch_test No need to separate files. Signed-off-by: Kota --- tests/e2e/ctl_v3_watch_no_cov_test.go | 150 -------------------------- tests/e2e/ctl_v3_watch_test.go | 130 ++++++++++++++++++++++ 2 files changed, 130 insertions(+), 150 deletions(-) delete mode 100644 tests/e2e/ctl_v3_watch_no_cov_test.go diff --git a/tests/e2e/ctl_v3_watch_no_cov_test.go b/tests/e2e/ctl_v3_watch_no_cov_test.go deleted file mode 100644 index 9df7cc60078a..000000000000 --- a/tests/e2e/ctl_v3_watch_no_cov_test.go +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright 2018 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package e2e - -import ( - "os" - "testing" - - "go.etcd.io/etcd/tests/v3/framework/e2e" -) - -func TestCtlV3Watch(t *testing.T) { testCtl(t, watchTest) } -func TestCtlV3WatchNoTLS(t *testing.T) { testCtl(t, watchTest, withCfg(*e2e.NewConfigNoTLS())) } -func TestCtlV3WatchClientTLS(t *testing.T) { testCtl(t, watchTest, withCfg(*e2e.NewConfigClientTLS())) } -func TestCtlV3WatchPeerTLS(t *testing.T) { testCtl(t, watchTest, withCfg(*e2e.NewConfigPeerTLS())) } -func TestCtlV3WatchTimeout(t *testing.T) { testCtl(t, watchTest, withDefaultDialTimeout()) } - -func TestCtlV3WatchInteractive(t *testing.T) { - testCtl(t, watchTest, withInteractive()) -} - -func TestCtlV3WatchInteractiveNoTLS(t *testing.T) { - testCtl(t, watchTest, withInteractive(), withCfg(*e2e.NewConfigNoTLS())) -} - -func TestCtlV3WatchInteractiveClientTLS(t *testing.T) { - testCtl(t, watchTest, withInteractive(), withCfg(*e2e.NewConfigClientTLS())) -} - -func TestCtlV3WatchInteractivePeerTLS(t *testing.T) { - testCtl(t, watchTest, withInteractive(), withCfg(*e2e.NewConfigPeerTLS())) -} - -func watchTest(cx ctlCtx) { - tests := []struct { - puts []kv - envKey string - envRange string - args []string - - wkv []kvExec - }{ - { // watch 1 key with env - puts: []kv{{"sample", "value"}}, - envKey: "sample", - args: []string{"--rev", "1"}, - wkv: []kvExec{{key: "sample", val: "value"}}, - }, - { // watch 1 key with ${ETCD_WATCH_VALUE} - puts: []kv{{"sample", "value"}}, - args: []string{"sample", "--rev", "1", "--", "env"}, - wkv: []kvExec{{key: "sample", val: "value", execOutput: `ETCD_WATCH_VALUE="value"`}}, - }, - { // watch 1 key with "echo watch event received", with env - puts: []kv{{"sample", "value"}}, - envKey: "sample", - args: []string{"--rev", "1", "--", "echo", "watch event received"}, - wkv: []kvExec{{key: "sample", val: "value", execOutput: "watch event received"}}, - }, - { // watch 1 key with "echo watch event received" - puts: []kv{{"sample", "value"}}, - args: []string{"--rev", "1", "sample", "--", "echo", "watch event received"}, - wkv: []kvExec{{key: "sample", val: "value", execOutput: "watch event received"}}, - }, - { // watch 1 key with "echo \"Hello World!\"" - puts: []kv{{"sample", "value"}}, - args: []string{"--rev", "1", "sample", "--", "echo", "\"Hello World!\""}, - wkv: []kvExec{{key: "sample", val: "value", execOutput: "Hello World!"}}, - }, - { // watch 1 key with "echo watch event received" - puts: []kv{{"sample", "value"}}, - args: []string{"sample", "samplx", "--rev", "1", "--", "echo", "watch event received"}, - wkv: []kvExec{{key: "sample", val: "value", execOutput: "watch event received"}}, - }, - { // watch 1 key with "echo watch event received" - puts: []kv{{"sample", "value"}}, - envKey: "sample", - envRange: "samplx", - args: []string{"--rev", "1", "--", "echo", "watch event received"}, - wkv: []kvExec{{key: "sample", val: "value", execOutput: "watch event received"}}, - }, - { // watch 1 key with "echo watch event received" - puts: []kv{{"sample", "value"}}, - args: []string{"sample", "--rev", "1", "samplx", "--", "echo", "watch event received"}, - wkv: []kvExec{{key: "sample", val: "value", execOutput: "watch event received"}}, - }, - { // watch 3 keys by prefix, with env - puts: []kv{{"key1", "val1"}, {"key2", "val2"}, {"key3", "val3"}}, - envKey: "key", - args: []string{"--rev", "1", "--prefix"}, - wkv: []kvExec{{key: "key1", val: "val1"}, {key: "key2", val: "val2"}, {key: "key3", val: "val3"}}, - }, - { // watch 3 keys by range, with env - puts: []kv{{"key1", "val1"}, {"key3", "val3"}, {"key2", "val2"}}, - envKey: "key", - envRange: "key3", - args: []string{"--rev", "1"}, - wkv: []kvExec{{key: "key1", val: "val1"}, {key: "key2", val: "val2"}}, - }, - } - - for i, tt := range tests { - donec := make(chan struct{}) - go func(i int, puts []kv) { - for j := range puts { - if err := ctlV3Put(cx, puts[j].key, puts[j].val, ""); err != nil { - cx.t.Errorf("watchTest #%d-%d: ctlV3Put error (%v)", i, j, err) - } - } - close(donec) - }(i, tt.puts) - - unsetEnv := func() {} - if tt.envKey != "" || tt.envRange != "" { - if tt.envKey != "" { - os.Setenv("ETCDCTL_WATCH_KEY", tt.envKey) - unsetEnv = func() { os.Unsetenv("ETCDCTL_WATCH_KEY") } - } - if tt.envRange != "" { - os.Setenv("ETCDCTL_WATCH_RANGE_END", tt.envRange) - unsetEnv = func() { os.Unsetenv("ETCDCTL_WATCH_RANGE_END") } - } - if tt.envKey != "" && tt.envRange != "" { - unsetEnv = func() { - os.Unsetenv("ETCDCTL_WATCH_KEY") - os.Unsetenv("ETCDCTL_WATCH_RANGE_END") - } - } - } - if err := ctlV3Watch(cx, tt.args, tt.wkv...); err != nil { - if cx.dialTimeout > 0 && !isGRPCTimedout(err) { - cx.t.Errorf("watchTest #%d: ctlV3Watch error (%v)", i, err) - } - } - unsetEnv() - <-donec - } -} diff --git a/tests/e2e/ctl_v3_watch_test.go b/tests/e2e/ctl_v3_watch_test.go index bec43224e4c6..85bf82f90700 100644 --- a/tests/e2e/ctl_v3_watch_test.go +++ b/tests/e2e/ctl_v3_watch_test.go @@ -15,7 +15,9 @@ package e2e import ( + "os" "strings" + "testing" "go.etcd.io/etcd/tests/v3/framework/e2e" ) @@ -91,3 +93,131 @@ func ctlV3WatchFailPerm(cx ctlCtx, args []string) error { } return proc.Close() } + +func TestCtlV3Watch(t *testing.T) { testCtl(t, watchTest) } +func TestCtlV3WatchNoTLS(t *testing.T) { testCtl(t, watchTest, withCfg(*e2e.NewConfigNoTLS())) } +func TestCtlV3WatchClientTLS(t *testing.T) { testCtl(t, watchTest, withCfg(*e2e.NewConfigClientTLS())) } +func TestCtlV3WatchPeerTLS(t *testing.T) { testCtl(t, watchTest, withCfg(*e2e.NewConfigPeerTLS())) } +func TestCtlV3WatchTimeout(t *testing.T) { testCtl(t, watchTest, withDefaultDialTimeout()) } + +func TestCtlV3WatchInteractive(t *testing.T) { + testCtl(t, watchTest, withInteractive()) +} + +func TestCtlV3WatchInteractiveNoTLS(t *testing.T) { + testCtl(t, watchTest, withInteractive(), withCfg(*e2e.NewConfigNoTLS())) +} + +func TestCtlV3WatchInteractiveClientTLS(t *testing.T) { + testCtl(t, watchTest, withInteractive(), withCfg(*e2e.NewConfigClientTLS())) +} + +func TestCtlV3WatchInteractivePeerTLS(t *testing.T) { + testCtl(t, watchTest, withInteractive(), withCfg(*e2e.NewConfigPeerTLS())) +} + +func watchTest(cx ctlCtx) { + tests := []struct { + puts []kv + envKey string + envRange string + args []string + + wkv []kvExec + }{ + { // watch 1 key with env + puts: []kv{{"sample", "value"}}, + envKey: "sample", + args: []string{"--rev", "1"}, + wkv: []kvExec{{key: "sample", val: "value"}}, + }, + { // watch 1 key with ${ETCD_WATCH_VALUE} + puts: []kv{{"sample", "value"}}, + args: []string{"sample", "--rev", "1", "--", "env"}, + wkv: []kvExec{{key: "sample", val: "value", execOutput: `ETCD_WATCH_VALUE="value"`}}, + }, + { // watch 1 key with "echo watch event received", with env + puts: []kv{{"sample", "value"}}, + envKey: "sample", + args: []string{"--rev", "1", "--", "echo", "watch event received"}, + wkv: []kvExec{{key: "sample", val: "value", execOutput: "watch event received"}}, + }, + { // watch 1 key with "echo watch event received" + puts: []kv{{"sample", "value"}}, + args: []string{"--rev", "1", "sample", "--", "echo", "watch event received"}, + wkv: []kvExec{{key: "sample", val: "value", execOutput: "watch event received"}}, + }, + { // watch 1 key with "echo \"Hello World!\"" + puts: []kv{{"sample", "value"}}, + args: []string{"--rev", "1", "sample", "--", "echo", "\"Hello World!\""}, + wkv: []kvExec{{key: "sample", val: "value", execOutput: "Hello World!"}}, + }, + { // watch 1 key with "echo watch event received" + puts: []kv{{"sample", "value"}}, + args: []string{"sample", "samplx", "--rev", "1", "--", "echo", "watch event received"}, + wkv: []kvExec{{key: "sample", val: "value", execOutput: "watch event received"}}, + }, + { // watch 1 key with "echo watch event received" + puts: []kv{{"sample", "value"}}, + envKey: "sample", + envRange: "samplx", + args: []string{"--rev", "1", "--", "echo", "watch event received"}, + wkv: []kvExec{{key: "sample", val: "value", execOutput: "watch event received"}}, + }, + { // watch 1 key with "echo watch event received" + puts: []kv{{"sample", "value"}}, + args: []string{"sample", "--rev", "1", "samplx", "--", "echo", "watch event received"}, + wkv: []kvExec{{key: "sample", val: "value", execOutput: "watch event received"}}, + }, + { // watch 3 keys by prefix, with env + puts: []kv{{"key1", "val1"}, {"key2", "val2"}, {"key3", "val3"}}, + envKey: "key", + args: []string{"--rev", "1", "--prefix"}, + wkv: []kvExec{{key: "key1", val: "val1"}, {key: "key2", val: "val2"}, {key: "key3", val: "val3"}}, + }, + { // watch 3 keys by range, with env + puts: []kv{{"key1", "val1"}, {"key3", "val3"}, {"key2", "val2"}}, + envKey: "key", + envRange: "key3", + args: []string{"--rev", "1"}, + wkv: []kvExec{{key: "key1", val: "val1"}, {key: "key2", val: "val2"}}, + }, + } + + for i, tt := range tests { + donec := make(chan struct{}) + go func(i int, puts []kv) { + for j := range puts { + if err := ctlV3Put(cx, puts[j].key, puts[j].val, ""); err != nil { + cx.t.Errorf("watchTest #%d-%d: ctlV3Put error (%v)", i, j, err) + } + } + close(donec) + }(i, tt.puts) + + unsetEnv := func() {} + if tt.envKey != "" || tt.envRange != "" { + if tt.envKey != "" { + os.Setenv("ETCDCTL_WATCH_KEY", tt.envKey) + unsetEnv = func() { os.Unsetenv("ETCDCTL_WATCH_KEY") } + } + if tt.envRange != "" { + os.Setenv("ETCDCTL_WATCH_RANGE_END", tt.envRange) + unsetEnv = func() { os.Unsetenv("ETCDCTL_WATCH_RANGE_END") } + } + if tt.envKey != "" && tt.envRange != "" { + unsetEnv = func() { + os.Unsetenv("ETCDCTL_WATCH_KEY") + os.Unsetenv("ETCDCTL_WATCH_RANGE_END") + } + } + } + if err := ctlV3Watch(cx, tt.args, tt.wkv...); err != nil { + if cx.dialTimeout > 0 && !isGRPCTimedout(err) { + cx.t.Errorf("watchTest #%d: ctlV3Watch error (%v)", i, err) + } + } + unsetEnv() + <-donec + } +} From efcadd12cde81d6de316263056f519ccf402c3ab Mon Sep 17 00:00:00 2001 From: Kishen Viswanathan Date: Sun, 14 Sep 2025 13:59:50 +0530 Subject: [PATCH 0524/1068] benchmark: Minor tweaks to make the perfdash data more parseable Signed-off-by: Kishen Viswanathan --- pkg/report/perfdash.go | 9 +++++---- pkg/report/report.go | 20 ++++++++++---------- pkg/report/weighted.go | 4 ++-- tools/benchmark/cmd/util.go | 12 ++++++------ 4 files changed, 23 insertions(+), 22 deletions(-) diff --git a/pkg/report/perfdash.go b/pkg/report/perfdash.go index 2fe9f8dad69d..bd0fd0ed3af8 100644 --- a/pkg/report/perfdash.go +++ b/pkg/report/perfdash.go @@ -20,6 +20,7 @@ import ( "math" "os" "path/filepath" + "strings" "time" ) @@ -30,7 +31,7 @@ type Metrics struct { } type Labels struct { - Metric string `json:"Metric"` + Operation string `json:"Operation"` } type DataItem struct { @@ -44,7 +45,7 @@ type perfdashFormattedReport struct { DataItems []DataItem `json:"dataItems"` } -func (r *report) writePerfDashReport(reportName string) { +func (r *report) writePerfDashReport(benchmarkOp string) { pcls, data := Percentiles(r.stats.Lats) pclsData := make(map[float64]float64) for i := 0; i < len(pcls); i++ { @@ -61,7 +62,7 @@ func (r *report) writePerfDashReport(reportName string) { }, Unit: "ms", Labels: Labels{ - Metric: "APIResponsiveness", + Operation: strings.ToUpper(benchmarkOp), }, }, }, @@ -73,7 +74,7 @@ func (r *report) writePerfDashReport(reportName string) { artifactsDir = "./_artifacts" } - fileName := fmt.Sprintf("etcd_perf_%s_%s.json", reportName, time.Now().UTC().Format(time.RFC3339)) + fileName := fmt.Sprintf("EtcdAPI_benchmark_%s.json", time.Now().UTC().Format(time.RFC3339)) err := os.MkdirAll(artifactsDir, 0o755) if err != nil { fmt.Println("Error creating artifacts directory:", err) diff --git a/pkg/report/report.go b/pkg/report/report.go index 3f578e9f1eec..657018ed424d 100644 --- a/pkg/report/report.go +++ b/pkg/report/report.go @@ -42,7 +42,7 @@ func (res *Result) Duration() time.Duration { return res.End.Sub(res.Start) } type report struct { generatePerfReport bool - reportName string + benchmarkOp string precision string results chan Result @@ -83,23 +83,23 @@ type Report interface { Stats() <-chan Stats } -func NewReport(precision, reportName string, generatePerfReport bool) Report { - return newReport(precision, reportName, generatePerfReport) +func NewReport(precision, benchmarkOp string, generatePerfReport bool) Report { + return newReport(precision, benchmarkOp, generatePerfReport) } -func newReport(precision, reportName string, generatePerfReport bool) *report { +func newReport(precision, benchmarkOp string, generatePerfReport bool) *report { r := &report{ results: make(chan Result, 16), precision: precision, generatePerfReport: generatePerfReport, - reportName: reportName, + benchmarkOp: benchmarkOp, } r.stats.ErrorDist = make(map[string]int) return r } -func NewReportSample(precision, reportName string, generatePerfReport bool) Report { - r := NewReport(precision, reportName, generatePerfReport).(*report) +func NewReportSample(precision, benchmarkOp string, generatePerfReport bool) Report { + r := NewReport(precision, benchmarkOp, generatePerfReport).(*report) r.sps = newSecondPoints() return r } @@ -112,7 +112,7 @@ func (r *report) Run() <-chan string { defer close(donec) r.processResults() if r.generatePerfReport { - r.writePerfDashReport(r.reportName) + r.writePerfDashReport(r.benchmarkOp) } donec <- r.String() }() @@ -164,8 +164,8 @@ func (r *report) sec2str(sec float64) string { return fmt.Sprintf(r.precision+" type reportRate struct{ *report } -func NewReportRate(precision, reportName string, generatePerfReport bool) Report { - return &reportRate{NewReport(precision, reportName, generatePerfReport).(*report)} +func NewReportRate(precision, benchmarkOp string, generatePerfReport bool) Report { + return &reportRate{NewReport(precision, benchmarkOp, generatePerfReport).(*report)} } func (r *reportRate) String() string { diff --git a/pkg/report/weighted.go b/pkg/report/weighted.go index a06b593742eb..efaa9af7446f 100644 --- a/pkg/report/weighted.go +++ b/pkg/report/weighted.go @@ -30,10 +30,10 @@ type weightedReport struct { // NewWeightedReport returns a report that includes // both weighted and unweighted statistics. -func NewWeightedReport(r Report, precision, reportName string, generatePerfReport bool) Report { +func NewWeightedReport(r Report, precision, benchmarkOp string, generatePerfReport bool) Report { return &weightedReport{ baseReport: r, - report: newReport(precision, reportName, generatePerfReport), + report: newReport(precision, benchmarkOp, generatePerfReport), results: make(chan Result, 16), } } diff --git a/tools/benchmark/cmd/util.go b/tools/benchmark/cmd/util.go index 4233b8477d2b..9f5077c62ce2 100644 --- a/tools/benchmark/cmd/util.go +++ b/tools/benchmark/cmd/util.go @@ -157,24 +157,24 @@ func mustRandBytes(n int) []byte { return rb } -func newReport(reportName string) report.Report { +func newReport(benchmarkOp string) report.Report { p := "%4.4f" if precise { p = "%g" } if sample { - return report.NewReportSample(p, reportName, generatePerfReport) + return report.NewReportSample(p, benchmarkOp, generatePerfReport) } - return report.NewReport(p, reportName, generatePerfReport) + return report.NewReport(p, benchmarkOp, generatePerfReport) } -func newWeightedReport(reportName string) report.Report { +func newWeightedReport(benchmarkOp string) report.Report { p := "%4.4f" if precise { p = "%g" } if sample { - return report.NewReportSample(p, reportName, generatePerfReport) + return report.NewReportSample(p, benchmarkOp, generatePerfReport) } - return report.NewWeightedReport(report.NewReport(p, reportName, generatePerfReport), p, reportName, generatePerfReport) + return report.NewWeightedReport(report.NewReport(p, benchmarkOp, generatePerfReport), p, benchmarkOp, generatePerfReport) } From a31abacb35ea74e39ce1b65ad403b1f00a563deb Mon Sep 17 00:00:00 2001 From: joshjms Date: Sun, 14 Sep 2025 21:23:52 +0800 Subject: [PATCH 0525/1068] mkdir only when shouldReport is true Signed-off-by: joshjms --- tests/robustness/main_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index 4d1ef5295058..c1f0d83c71be 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -101,8 +101,8 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s scenari defer func() { _, persistResults := os.LookupEnv("PERSIST_RESULTS") shouldReport := t.Failed() || panicked || persistResults - path := testResultsDirectory(t) if shouldReport { + path := testResultsDirectory(t) if err := r.Report(path); err != nil { t.Error(err) } From 30daffac5f74f962dec444687175f212ae036659 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Sep 2025 17:46:51 +0000 Subject: [PATCH 0526/1068] build(deps): bump github/codeql-action from 3.30.1 to 3.30.3 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.1 to 3.30.3. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/f1f6e5f6af878fb37288ce1c627459e94dbf7d01...192325c86100d080feab897ff886c34abd4c83a3) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.30.3 dependency-type: direct:production update-type: version-update:semver-patch ... Co-authored--by: dependabot[bot] Signed-off-by: Ivan Valdes --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ede594a1918f..f19358864d83 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@f1f6e5f6af878fb37288ce1c627459e94dbf7d01 # v3.29.5 + uses: github/codeql-action/init@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@f1f6e5f6af878fb37288ce1c627459e94dbf7d01 # v3.29.5 + uses: github/codeql-action/autobuild@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@f1f6e5f6af878fb37288ce1c627459e94dbf7d01 # v3.29.5 + uses: github/codeql-action/analyze@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index f02d8180b1ba..1e6f25752f60 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@f1f6e5f6af878fb37288ce1c627459e94dbf7d01 # v3.29.5 + uses: github/codeql-action/upload-sarif@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 with: sarif_file: results.sarif From c5ffcc092865c76e1577611df38b0b4b0c6f2d7d Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 15 Sep 2025 23:06:58 +0200 Subject: [PATCH 0527/1068] Refactor RunTrafficLoop, RunCompactLoop, and CollectClusterWatchEvents in Robustness test. In light of ever-increasing number of configuration options that we have passed in and will be passing in, a refactoring is performed for improving readability and maintainability. Signed-off-by: Chun-Hung Tseng --- .../test-template/robustness/traffic/main.go | 46 ++++++++++++------- tests/robustness/client/watch.go | 22 ++++++--- tests/robustness/main_test.go | 8 +++- tests/robustness/traffic/etcd.go | 30 ++++++------ tests/robustness/traffic/kubernetes.go | 22 ++++----- tests/robustness/traffic/traffic.go | 46 +++++++++++++++++-- 6 files changed, 119 insertions(+), 55 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 75424b92b89f..7a0acfae451d 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -120,7 +120,13 @@ func runTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, hosts [ watchSet := client.NewSet(ids, baseTime) defer watchSet.Close() g.Go(func() error { - err := client.CollectClusterWatchEvents(ctx, lg, hosts, maxRevisionChan, watchConfig, watchSet) + err := client.CollectClusterWatchEvents(ctx, client.CollectClusterWatchEventsParam{ + Lg: lg, + Endpoints: hosts, + MaxRevisionChan: maxRevisionChan, + Cfg: watchConfig, + ClientSet: watchSet, + }) return err }) if err := g.Wait(); err != nil { @@ -152,13 +158,15 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl go func(c *client.RecordingClient) { defer wg.Done() defer c.Close() - tf.RunTrafficLoop(ctx, c, limiter, - clientSet.IdentityProvider(), - storage, - concurrencyLimiter, - keyStore, - finish, - ) + tf.RunTrafficLoop(ctx, traffic.RunTrafficLoopParam{ + Client: c, + QPSLimiter: limiter, + IDs: clientSet.IdentityProvider(), + LeaseIDStorage: storage, + NonUniqueRequestConcurrencyLimiter: concurrencyLimiter, + KeyStore: keyStore, + Finish: finish, + }) }(c) } for range profile.ClusterClientCount { @@ -167,13 +175,15 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl go func(c *client.RecordingClient) { defer wg.Done() defer c.Close() - tf.RunTrafficLoop(ctx, c, limiter, - clientSet.IdentityProvider(), - storage, - concurrencyLimiter, - keyStore, - finish, - ) + tf.RunTrafficLoop(ctx, traffic.RunTrafficLoopParam{ + Client: c, + QPSLimiter: limiter, + IDs: clientSet.IdentityProvider(), + LeaseIDStorage: storage, + NonUniqueRequestConcurrencyLimiter: concurrencyLimiter, + KeyStore: keyStore, + Finish: finish, + }) }(c) } wg.Add(1) @@ -181,7 +191,11 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl go func(c *client.RecordingClient) { defer wg.Done() defer c.Close() - tf.RunCompactLoop(ctx, c, traffic.DefaultCompactionPeriod, finish) + tf.RunCompactLoop(ctx, traffic.RunCompactLoopParam{ + Client: c, + Period: traffic.DefaultCompactionPeriod, + Finish: finish, + }) }(compactClient) defragPeriod := traffic.DefaultCompactionPeriod * time.Duration(len(hosts)) for _, h := range hosts { diff --git a/tests/robustness/client/watch.go b/tests/robustness/client/watch.go index 3de7e776604c..b33724812d02 100644 --- a/tests/robustness/client/watch.go +++ b/tests/robustness/client/watch.go @@ -25,27 +25,35 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/report" ) -func CollectClusterWatchEvents(ctx context.Context, lg *zap.Logger, endpoints []string, maxRevisionChan <-chan int64, cfg WatchConfig, clientSet *ClientSet) error { +type CollectClusterWatchEventsParam struct { + Lg *zap.Logger + Endpoints []string + MaxRevisionChan <-chan int64 + Cfg WatchConfig + ClientSet *ClientSet +} + +func CollectClusterWatchEvents(ctx context.Context, param CollectClusterWatchEventsParam) error { var g errgroup.Group - reports := make([]report.ClientReport, len(endpoints)) - memberMaxRevisionChans := make([]chan int64, len(endpoints)) - for i, endpoint := range endpoints { + reports := make([]report.ClientReport, len(param.Endpoints)) + memberMaxRevisionChans := make([]chan int64, len(param.Endpoints)) + for i, endpoint := range param.Endpoints { memberMaxRevisionChan := make(chan int64, 1) memberMaxRevisionChans[i] = memberMaxRevisionChan g.Go(func() error { - c, err := clientSet.NewClient([]string{endpoint}) + c, err := param.ClientSet.NewClient([]string{endpoint}) if err != nil { return err } defer c.Close() - err = watchUntilRevision(ctx, lg, c, memberMaxRevisionChan, cfg) + err = watchUntilRevision(ctx, param.Lg, c, memberMaxRevisionChan, param.Cfg) reports[i] = c.Report() return err }) } g.Go(func() error { - maxRevision := <-maxRevisionChan + maxRevision := <-param.MaxRevisionChan for _, memberChan := range memberMaxRevisionChans { memberChan <- maxRevision } diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index c1f0d83c71be..be053f2356eb 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -167,7 +167,13 @@ func runScenario(ctx context.Context, t *testing.T, s scenarios.TestScenario, lg defer watchSet.Close() g.Go(func() error { endpoints := processEndpoints(clus) - err := client.CollectClusterWatchEvents(ctx, lg, endpoints, maxRevisionChan, s.Watch, watchSet) + err := client.CollectClusterWatchEvents(ctx, client.CollectClusterWatchEventsParam{ + Lg: lg, + Endpoints: endpoints, + MaxRevisionChan: maxRevisionChan, + Cfg: s.Watch, + ClientSet: watchSet, + }) return err }) err := g.Wait() diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index 39521cf7384e..c39409d0fb2e 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -109,23 +109,23 @@ func (t etcdTraffic) Name() string { return "Etcd" } -func (t etcdTraffic) RunTrafficLoop(ctx context.Context, c *client.RecordingClient, limiter *rate.Limiter, ids identity.Provider, lm identity.LeaseIDStorage, nonUniqueWriteLimiter ConcurrencyLimiter, keyStore *keyStore, finish <-chan struct{}) { +func (t etcdTraffic) RunTrafficLoop(ctx context.Context, p RunTrafficLoopParam) { lastOperationSucceeded := true var lastRev int64 var requestType etcdRequestType client := etcdTrafficClient{ etcdTraffic: t, - keyStore: keyStore, - client: c, - limiter: limiter, - idProvider: ids, - leaseStorage: lm, + keyStore: p.KeyStore, + client: p.Client, + limiter: p.QPSLimiter, + idProvider: p.IDs, + leaseStorage: p.LeaseIDStorage, } for { select { case <-ctx.Done(): return - case <-finish: + case <-p.Finish: return default: } @@ -134,7 +134,7 @@ func (t etcdTraffic) RunTrafficLoop(ctx context.Context, c *client.RecordingClie // Avoid multiple failed writes in a row if lastOperationSucceeded { choices := t.requests - if shouldReturn = nonUniqueWriteLimiter.Take(); !shouldReturn { + if shouldReturn = p.NonUniqueRequestConcurrencyLimiter.Take(); !shouldReturn { choices = filterOutNonUniqueEtcdWrites(choices) } requestType = random.PickRandom(choices) @@ -143,7 +143,7 @@ func (t etcdTraffic) RunTrafficLoop(ctx context.Context, c *client.RecordingClie } rev, err := client.Request(ctx, requestType, lastRev) if shouldReturn { - nonUniqueWriteLimiter.Return() + p.NonUniqueRequestConcurrencyLimiter.Return() } lastOperationSucceeded = err == nil if err != nil { @@ -152,24 +152,24 @@ func (t etcdTraffic) RunTrafficLoop(ctx context.Context, c *client.RecordingClie if rev != 0 { lastRev = rev } - limiter.Wait(ctx) + p.QPSLimiter.Wait(ctx) } } -func (t etcdTraffic) RunCompactLoop(ctx context.Context, c *client.RecordingClient, period time.Duration, finish <-chan struct{}) { +func (t etcdTraffic) RunCompactLoop(ctx context.Context, param RunCompactLoopParam) { var lastRev int64 = 2 - ticker := time.NewTicker(period) + ticker := time.NewTicker(param.Period) defer ticker.Stop() for { select { case <-ctx.Done(): return - case <-finish: + case <-param.Finish: return case <-ticker.C: } statusCtx, cancel := context.WithTimeout(ctx, RequestTimeout) - resp, err := c.Status(statusCtx, c.Endpoints()[0]) + resp, err := param.Client.Status(statusCtx, param.Client.Endpoints()[0]) cancel() if err != nil { continue @@ -177,7 +177,7 @@ func (t etcdTraffic) RunCompactLoop(ctx context.Context, c *client.RecordingClie // Range allows for both revision has been compacted and future revision errors compactRev := random.RandRange(lastRev, resp.Header.Revision+5) - _, err = c.Compact(ctx, compactRev) + _, err = param.Client.Compact(ctx, compactRev) if err != nil { continue } diff --git a/tests/robustness/traffic/kubernetes.go b/tests/robustness/traffic/kubernetes.go index a5a9075ad78e..7dfb19c8f24b 100644 --- a/tests/robustness/traffic/kubernetes.go +++ b/tests/robustness/traffic/kubernetes.go @@ -88,8 +88,8 @@ func (t kubernetesTraffic) ExpectUniqueRevision() bool { return true } -func (t kubernetesTraffic) RunTrafficLoop(ctx context.Context, c *client.RecordingClient, limiter *rate.Limiter, ids identity.Provider, lm identity.LeaseIDStorage, nonUniqueWriteLimiter ConcurrencyLimiter, keyStore *keyStore, finish <-chan struct{}) { - kc := kubernetes.Client{Client: &clientv3.Client{KV: c}} +func (t kubernetesTraffic) RunTrafficLoop(ctx context.Context, p RunTrafficLoopParam) { + kc := kubernetes.Client{Client: &clientv3.Client{KV: p.Client}} s := newStorage() keyPrefix := "/registry/" + t.resource + "/" g := errgroup.Group{} @@ -99,11 +99,11 @@ func (t kubernetesTraffic) RunTrafficLoop(ctx context.Context, c *client.Recordi select { case <-ctx.Done(): return ctx.Err() - case <-finish: + case <-p.Finish: return nil default: } - err := t.Read(ctx, c, s, limiter, keyPrefix) + err := t.Read(ctx, p.Client, s, p.QPSLimiter, keyPrefix) if err != nil { continue } @@ -115,18 +115,18 @@ func (t kubernetesTraffic) RunTrafficLoop(ctx context.Context, c *client.Recordi select { case <-ctx.Done(): return ctx.Err() - case <-finish: + case <-p.Finish: return nil default: } // Avoid multiple failed writes in a row if lastWriteFailed { - _, err := t.List(ctx, kc, s, limiter, keyPrefix, t.averageKeyCount, 0) + _, err := t.List(ctx, kc, s, p.QPSLimiter, keyPrefix, t.averageKeyCount, 0) if err != nil { continue } } - err := t.Write(ctx, kc, ids, s, limiter, nonUniqueWriteLimiter) + err := t.Write(ctx, kc, p.IDs, s, p.QPSLimiter, p.NonUniqueRequestConcurrencyLimiter) lastWriteFailed = err != nil if err != nil { continue @@ -271,21 +271,21 @@ func (t kubernetesTraffic) generateKey() string { return fmt.Sprintf("/registry/%s/%s/%s", t.resource, t.namespace, stringutil.RandString(5)) } -func (t kubernetesTraffic) RunCompactLoop(ctx context.Context, c *client.RecordingClient, interval time.Duration, finish <-chan struct{}) { +func (t kubernetesTraffic) RunCompactLoop(ctx context.Context, param RunCompactLoopParam) { // Based on https://github.com/kubernetes/apiserver/blob/7dd4904f1896e11244ba3c5a59797697709de6b6/pkg/storage/etcd3/compact.go#L112-L127 var compactTime int64 var rev int64 var err error for { select { - case <-time.After(interval): + case <-time.After(param.Period): case <-ctx.Done(): return - case <-finish: + case <-param.Finish: return } - compactTime, rev, err = compact(ctx, c, compactTime, rev) + compactTime, rev, err = compact(ctx, param.Client, compactTime, rev) if err != nil { continue } diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index dd75668f03bc..e939dd6ae007 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -84,7 +84,15 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 defer wg.Done() defer c.Close() - traffic.RunTrafficLoop(ctx, c, limiter, clientSet.IdentityProvider(), lm, nonUniqueWriteLimiter, keyStore, finish) + traffic.RunTrafficLoop(ctx, RunTrafficLoopParam{ + Client: c, + QPSLimiter: limiter, + IDs: clientSet.IdentityProvider(), + LeaseIDStorage: lm, + NonUniqueRequestConcurrencyLimiter: nonUniqueWriteLimiter, + KeyStore: keyStore, + Finish: finish, + }) }(c) } for range profile.ClusterClientCount { @@ -96,7 +104,15 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 defer wg.Done() defer c.Close() - traffic.RunTrafficLoop(ctx, c, limiter, clientSet.IdentityProvider(), lm, nonUniqueWriteLimiter, keyStore, finish) + traffic.RunTrafficLoop(ctx, RunTrafficLoopParam{ + Client: c, + QPSLimiter: limiter, + IDs: clientSet.IdentityProvider(), + LeaseIDStorage: lm, + NonUniqueRequestConcurrencyLimiter: nonUniqueWriteLimiter, + KeyStore: keyStore, + Finish: finish, + }) }(c) } if !profile.ForbidCompaction { @@ -114,7 +130,11 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 compactionPeriod = profile.CompactPeriod } - traffic.RunCompactLoop(ctx, c, compactionPeriod, finish) + traffic.RunCompactLoop(ctx, RunCompactLoopParam{ + Client: c, + Period: compactionPeriod, + Finish: finish, + }) }(c) } var fr *report.FailpointInjection @@ -287,9 +307,25 @@ func (p Profile) WithCompactionPeriod(cp time.Duration) Profile { return p } +type RunTrafficLoopParam struct { + Client *client.RecordingClient + QPSLimiter *rate.Limiter + IDs identity.Provider + LeaseIDStorage identity.LeaseIDStorage + NonUniqueRequestConcurrencyLimiter ConcurrencyLimiter + KeyStore *keyStore + Finish <-chan struct{} +} + +type RunCompactLoopParam struct { + Client *client.RecordingClient + Period time.Duration + Finish <-chan struct{} +} + type Traffic interface { - RunTrafficLoop(ctx context.Context, c *client.RecordingClient, qpsLimiter *rate.Limiter, ids identity.Provider, lm identity.LeaseIDStorage, nonUniqueWriteLimiter ConcurrencyLimiter, keyStore *keyStore, finish <-chan struct{}) - RunCompactLoop(ctx context.Context, c *client.RecordingClient, period time.Duration, finish <-chan struct{}) + RunTrafficLoop(ctx context.Context, param RunTrafficLoopParam) + RunCompactLoop(ctx context.Context, param RunCompactLoopParam) ExpectUniqueRevision() bool } From bbe2c11cdebe6e62ec8957566865654a6267b362 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 15 Sep 2025 21:29:16 +0200 Subject: [PATCH 0528/1068] dependency: bump gotest.tools/gotestsum from 1.12.3 to 1.13.0 Reference: - https://github.com/etcd-io/etcd/pull/20678 Signed-off-by: Chun-Hung Tseng --- tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index f0e503bb2244..ee24e3e1d4f0 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -17,7 +17,7 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 - gotest.tools/gotestsum v1.12.3 + gotest.tools/gotestsum v1.13.0 gotest.tools/v3 v3.5.2 honnef.co/go/tools v0.6.1 ) @@ -82,7 +82,7 @@ require ( github.com/fatih/color v1.18.0 // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/firefart/nonamedreturns v1.0.6 // indirect - github.com/fsnotify/fsnotify v1.8.0 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect github.com/ghostiam/protogetter v0.3.15 // indirect github.com/go-critic/go-critic v0.13.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 5ad4d7068b2a..8543c8d16868 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -142,8 +142,8 @@ github.com/firefart/nonamedreturns v1.0.6 h1:vmiBcKV/3EqKY3ZiPxCINmpS431OcE1S47A github.com/firefart/nonamedreturns v1.0.6/go.mod h1:R8NisJnSIpvPWheCq0mNRXJok6D8h7fagJTF8EMEwCo= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= -github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= github.com/ghostiam/protogetter v0.3.15 h1:1KF5sXel0HE48zh1/vn0Loiw25A9ApyseLzQuif1mLY= @@ -733,8 +733,8 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/gotestsum v1.12.3 h1:jFwenGJ0RnPkuKh2VzAYl1mDOJgbhobBDeL2W1iEycs= -gotest.tools/gotestsum v1.12.3/go.mod h1:Y1+e0Iig4xIRtdmYbEV7K7H6spnjc1fX4BOuUhWw2Wk= +gotest.tools/gotestsum v1.13.0 h1:+Lh454O9mu9AMG1APV4o0y7oDYKyik/3kBOiCqiEpRo= +gotest.tools/gotestsum v1.13.0/go.mod h1:7f0NS5hFb0dWr4NtcsAsF0y1kzjEFfAil0HiBQJE03Q= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= From 627e478993e08ee37207aa25fab2dee0f8e2940c Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 15 Sep 2025 21:31:14 +0200 Subject: [PATCH 0529/1068] dependency: bump github.com/prometheus/client_golang from 1.23.0 to 1.23.2 and github.com/prometheus/common from 0.65.0 to 0.66.1 Reference: - https://github.com/etcd-io/etcd/pull/20675 - https://github.com/etcd-io/etcd/pull/20676 Signed-off-by: Chun-Hung Tseng --- cache/go.sum | 10 ++++++---- client/v3/go.mod | 4 ++-- client/v3/go.sum | 8 ++++---- etcdctl/go.sum | 10 ++++++---- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- server/go.mod | 4 ++-- server/go.sum | 8 ++++---- tests/e2e/cmux_test.go | 3 ++- tests/framework/e2e/metrics.go | 3 ++- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- tools/mod/go.mod | 5 +++-- tools/mod/go.sum | 10 ++++++---- 16 files changed, 55 insertions(+), 46 deletions(-) diff --git a/cache/go.sum b/cache/go.sum index e85b6473c982..6ddc106a27c9 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -34,12 +34,12 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= -github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= -github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= @@ -64,6 +64,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= diff --git a/client/v3/go.mod b/client/v3/go.mod index 33b3a5dd385a..ee4b13ec419c 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 - github.com/prometheus/client_golang v1.23.0 + github.com/prometheus/client_golang v1.23.2 github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 @@ -29,7 +29,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.65.0 // indirect + github.com/prometheus/common v0.66.1 // indirect github.com/prometheus/procfs v0.16.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index a3d9f4351be3..cd86b8e0a33c 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -42,12 +42,12 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= -github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= -github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index c98f89adc48c..7925531f8a87 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -61,12 +61,12 @@ github.com/olekukonko/tablewriter v1.0.9 h1:XGwRsYLC2bY7bNd93Dk51bcPZksWZmLYuaTH github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= -github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= -github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= @@ -101,6 +101,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 1302017db9f7..afaf27831768 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -64,9 +64,9 @@ require ( github.com/olekukonko/errors v1.1.0 // indirect github.com/olekukonko/ll v0.0.9 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.23.0 // indirect + github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.65.0 // indirect + github.com/prometheus/common v0.66.1 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index d3a8b43da6f8..c1be6a017bab 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -75,12 +75,12 @@ github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfB github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= -github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= -github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/go.mod b/go.mod index e43d9a09cf51..2264f1d7f753 100644 --- a/go.mod +++ b/go.mod @@ -71,9 +71,9 @@ require ( github.com/olekukonko/ll v0.0.9 // indirect github.com/olekukonko/tablewriter v1.0.9 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.23.0 // indirect + github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.65.0 // indirect + github.com/prometheus/common v0.66.1 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect diff --git a/go.sum b/go.sum index 5aad348fa71a..fbe547cd36ca 100644 --- a/go.sum +++ b/go.sum @@ -107,13 +107,13 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= -github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= -github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/server/go.mod b/server/go.mod index ae34adc4c7cf..cb94414977b9 100644 --- a/server/go.mod +++ b/server/go.mod @@ -18,7 +18,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 github.com/jonboulle/clockwork v0.5.0 - github.com/prometheus/client_golang v1.23.0 + github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 github.com/soheilhy/cmux v0.1.5 github.com/spf13/cobra v1.10.1 @@ -60,7 +60,7 @@ require ( github.com/kylelemons/godebug v1.1.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/common v0.65.0 // indirect + github.com/prometheus/common v0.66.1 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.9 // indirect diff --git a/server/go.sum b/server/go.sum index 1b461925d30f..e85c6db74e09 100644 --- a/server/go.sum +++ b/server/go.sum @@ -63,12 +63,12 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= -github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= -github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/tests/e2e/cmux_test.go b/tests/e2e/cmux_test.go index 7d9596dbe112..20c6ed3c489e 100644 --- a/tests/e2e/cmux_test.go +++ b/tests/e2e/cmux_test.go @@ -27,6 +27,7 @@ import ( "testing" "github.com/prometheus/common/expfmt" + "github.com/prometheus/common/model" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -189,7 +190,7 @@ func fetchMetrics(t *testing.T, endpoint string, httpVersion string, connType e2 } respData := string(rawData) - var parser expfmt.TextParser + parser := expfmt.NewTextParser(model.LegacyValidation) _, err = parser.TextToMetricFamilies(strings.NewReader(strings.ReplaceAll(respData, "\r\n", "\n"))) return err } diff --git a/tests/framework/e2e/metrics.go b/tests/framework/e2e/metrics.go index e28661206049..41137acd7915 100644 --- a/tests/framework/e2e/metrics.go +++ b/tests/framework/e2e/metrics.go @@ -21,6 +21,7 @@ import ( dto "github.com/prometheus/client_model/go" "github.com/prometheus/common/expfmt" + "github.com/prometheus/common/model" ) func GetMetrics(metricsURL string) (map[string]*dto.MetricFamily, error) { @@ -36,6 +37,6 @@ func GetMetrics(metricsURL string) (map[string]*dto.MetricFamily, error) { return nil, err } - var parser expfmt.TextParser + parser := expfmt.NewTextParser(model.LegacyValidation) return parser.TextToMetricFamilies(bytes.NewReader(data)) } diff --git a/tests/go.mod b/tests/go.mod index 6999c0ce8c4f..2792acc7165c 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -26,9 +26,9 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 github.com/olekukonko/tablewriter v1.0.9 - github.com/prometheus/client_golang v1.23.0 + github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.65.0 + github.com/prometheus/common v0.66.1 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 diff --git a/tests/go.sum b/tests/go.sum index 539afe4e48a9..16abb2a75d00 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -113,13 +113,13 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= -github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= -github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index ee24e3e1d4f0..1c5b2a4f5c83 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -167,9 +167,9 @@ require ( github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/polyfloyd/go-errorlint v1.8.0 // indirect - github.com/prometheus/client_golang v1.23.0 // indirect + github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.65.0 // indirect + github.com/prometheus/common v0.66.1 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/quasilyte/go-ruleguard v0.4.4 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect @@ -230,6 +230,7 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.42.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 8543c8d16868..ebe57a943197 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -382,12 +382,12 @@ github.com/polyfloyd/go-errorlint v1.8.0 h1:DL4RestQqRLr8U4LygLw8g2DX6RN1eBJOpa2 github.com/polyfloyd/go-errorlint v1.8.0/go.mod h1:G2W0Q5roxbLCt0ZQbdoxQxXktTjwNyDbEaj3n7jvl4s= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= -github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= -github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/quasilyte/go-ruleguard v0.4.4 h1:53DncefIeLX3qEpjzlS1lyUmQoUEeOWPFWqaTJq9eAQ= @@ -555,6 +555,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= From 7997b8ad8ec8ecfb765f017d2326141189c8f147 Mon Sep 17 00:00:00 2001 From: zhoujiaweii Date: Wed, 17 Sep 2025 16:04:49 +0800 Subject: [PATCH 0530/1068] refactor: omit unnecessary reassignment Signed-off-by: zhoujiaweii --- tools/benchmark/cmd/watch_latency.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/benchmark/cmd/watch_latency.go b/tools/benchmark/cmd/watch_latency.go index 4afe636d88cf..28e9aa15b27e 100644 --- a/tools/benchmark/cmd/watch_latency.go +++ b/tools/benchmark/cmd/watch_latency.go @@ -75,8 +75,6 @@ func watchLatencyFunc(cmd *cobra.Command, _ []string) { eventTimes := make([][]time.Time, len(wchs)) for i, wch := range wchs { - wch := wch - i := i eventTimes[i] = make([]time.Time, watchLPutTotal) wg.Add(1) go func() { From 322fe78e9e568b77794d350fd66ab5894970b862 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 15 Sep 2025 21:32:32 +0200 Subject: [PATCH 0531/1068] dependency: bump google.golang.org/grpc from 1.75.0 to 1.75.1 Reference: - https://github.com/etcd-io/etcd/pull/20674 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 22 files changed, 33 insertions(+), 33 deletions(-) diff --git a/api/go.mod b/api/go.mod index 93c7344914b9..3ab001257101 100644 --- a/api/go.mod +++ b/api/go.mod @@ -11,7 +11,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 github.com/stretchr/testify v1.11.1 google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 - google.golang.org/grpc v1.75.0 + google.golang.org/grpc v1.75.1 google.golang.org/protobuf v1.36.8 ) diff --git a/api/go.sum b/api/go.sum index 00c5c6524c9b..f14bec48648b 100644 --- a/api/go.sum +++ b/api/go.sum @@ -80,8 +80,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/cache/go.mod b/cache/go.mod index 308a2bc2fcb3..42b8b4fc231b 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -25,7 +25,7 @@ require ( golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/grpc v1.75.0 // indirect + google.golang.org/grpc v1.75.1 // indirect google.golang.org/protobuf v1.36.8 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index 6ddc106a27c9..9eafa8889ac5 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -103,8 +103,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index ee4b13ec419c..c10e9e37e741 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.75.0 + google.golang.org/grpc v1.75.1 sigs.k8s.io/yaml v1.6.0 ) diff --git a/client/v3/go.sum b/client/v3/go.sum index cd86b8e0a33c..311c2630ae0f 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -115,8 +115,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index c4350f4ea6ec..3739f30c9f38 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.13.0 - google.golang.org/grpc v1.75.0 + google.golang.org/grpc v1.75.1 ) require ( diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 7925531f8a87..8177f0248577 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -143,8 +143,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index afaf27831768..d1328c00d2fc 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -92,7 +92,7 @@ require ( golang.org/x/time v0.13.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/grpc v1.75.0 // indirect + google.golang.org/grpc v1.75.1 // indirect google.golang.org/protobuf v1.36.8 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index c1be6a017bab..53f0b6fbdcf4 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -187,8 +187,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index 2264f1d7f753..31c22aa67bd1 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.13.0 - google.golang.org/grpc v1.75.0 + google.golang.org/grpc v1.75.1 google.golang.org/protobuf v1.36.8 ) diff --git a/go.sum b/go.sum index fbe547cd36ca..0ccd1ef22ae0 100644 --- a/go.sum +++ b/go.sum @@ -256,8 +256,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/go.mod b/pkg/go.mod index 19613fb6ab5c..01e56bad3fb8 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -14,7 +14,7 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 go.uber.org/zap v1.27.0 golang.org/x/sys v0.36.0 - google.golang.org/grpc v1.75.0 + google.golang.org/grpc v1.75.1 ) require ( diff --git a/pkg/go.sum b/pkg/go.sum index d3c1c8fa4d00..a4ab11dfacf0 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -62,8 +62,8 @@ gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index cb94414977b9..54af55c21663 100644 --- a/server/go.mod +++ b/server/go.mod @@ -41,7 +41,7 @@ require ( golang.org/x/net v0.43.0 golang.org/x/time v0.13.0 google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 - google.golang.org/grpc v1.75.0 + google.golang.org/grpc v1.75.1 google.golang.org/protobuf v1.36.8 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.6.0 diff --git a/server/go.sum b/server/go.sum index e85c6db74e09..90d7d85aa012 100644 --- a/server/go.sum +++ b/server/go.sum @@ -171,8 +171,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index 2792acc7165c..177be8515311 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -50,7 +50,7 @@ require ( golang.org/x/crypto v0.42.0 golang.org/x/sync v0.17.0 golang.org/x/time v0.13.0 - google.golang.org/grpc v1.75.0 + google.golang.org/grpc v1.75.1 google.golang.org/protobuf v1.36.8 ) diff --git a/tests/go.sum b/tests/go.sum index 16abb2a75d00..daaddab21154 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -262,8 +262,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 1c5b2a4f5c83..571de6ce8585 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -244,7 +244,7 @@ require ( golang.org/x/tools v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/grpc v1.75.0 // indirect + google.golang.org/grpc v1.75.1 // indirect google.golang.org/protobuf v1.36.8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index ebe57a943197..47daf92b619c 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -718,8 +718,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 59a05ec8e562..657f917306bb 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -19,5 +19,5 @@ require ( golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/grpc v1.75.0 // indirect + google.golang.org/grpc v1.75.1 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 8a7d3d7f186d..3f0e53d746e4 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1890,8 +1890,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From a4d6a745f86ef05740ffdc72484cd6706b6ceb85 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Sat, 13 Sep 2025 17:31:32 +0800 Subject: [PATCH 0532/1068] update logs of the e2e test TestIssue20271 Signed-off-by: shenmu.wy --- tests/e2e/reproduce_20271_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/reproduce_20271_test.go b/tests/e2e/reproduce_20271_test.go index 86275b6a2580..73c7fbb13e1b 100644 --- a/tests/e2e/reproduce_20271_test.go +++ b/tests/e2e/reproduce_20271_test.go @@ -70,7 +70,7 @@ func TestIssue20271(t *testing.T) { require.NoError(t, err) } - t.Log("Step 4: Restarting the first two members to change term and trigger new leader to send snapshot file to the third member.") + t.Log("Step 4: Restarting the first two members to re-connect to the paused member, so the inflight messages will be dropped. This will trigger new leader to send snapshot file to the third member.") for _, proc := range epc.Procs[:2] { require.NoError(t, proc.Restart(ctx)) } From b4a5c26b2ede24b2421718b1d6faddb7d9ee2a93 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 19 Sep 2025 16:42:16 +0200 Subject: [PATCH 0533/1068] Use reflect.DeepEqual to speed up comparison Reduced watch reliable runtime from 50s to 5s. Signed-off-by: Marek Siarkowicz --- tests/robustness/validate/watch.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tests/robustness/validate/watch.go b/tests/robustness/validate/watch.go index 0efb7d6adedd..eb840e527526 100644 --- a/tests/robustness/validate/watch.go +++ b/tests/robustness/validate/watch.go @@ -16,10 +16,11 @@ package validate import ( "errors" + "fmt" + "reflect" "time" "github.com/google/go-cmp/cmp" - "github.com/google/go-cmp/cmp/cmpopts" "go.uber.org/zap" "go.etcd.io/etcd/tests/v3/robustness/model" @@ -76,15 +77,15 @@ func validateWatchError(lg *zap.Logger, cfg Config, reports []report.ClientRepor if err != nil { return err } - err = validateReliable(lg, replay, r) + err = validateIsCreate(lg, replay, r) if err != nil { return err } - err = validatePrevKV(lg, replay, r) + err = validateReliable(lg, replay, r) if err != nil { return err } - err = validateIsCreate(lg, replay, r) + err = validatePrevKV(lg, replay, r) if err != nil { return err } @@ -216,8 +217,10 @@ func validateReliable(lg *zap.Logger, replay *model.EtcdReplay, report report.Cl gotEvents = append(gotEvents, event.PersistedEvent) } } - if diff := cmp.Diff(wantEvents, gotEvents, cmpopts.IgnoreFields(model.PersistedEvent{}, "IsCreate")); diff != "" { - lg.Error("Broke watch guarantee", zap.String("guarantee", "reliable"), zap.Int("client", report.ClientID), zap.String("diff", diff)) + if !reflect.DeepEqual(wantEvents, gotEvents) { + lg.Error("Broke watch guarantee", zap.String("guarantee", "reliable"), zap.Int("client", report.ClientID)) + // Directly print to console to avoid escaping newline. + fmt.Print(cmp.Diff(wantEvents, gotEvents)) err = errBrokeReliable } } From 18f17b837eb275b219bc108d46299169153e5db1 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 15 Sep 2025 21:33:26 +0200 Subject: [PATCH 0534/1068] dependency: bump go.opentelemetry.io/proto/otlp from 1.7.1 to 1.8.0 Reference: - https://github.com/etcd-io/etcd/pull/20673 Signed-off-by: Chun-Hung Tseng --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index d1328c00d2fc..84a214d2c24d 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -82,7 +82,7 @@ require ( go.opentelemetry.io/otel/metric v1.38.0 // indirect go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect - go.opentelemetry.io/proto/otlp v1.7.1 // indirect + go.opentelemetry.io/proto/otlp v1.8.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/crypto v0.42.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 53f0b6fbdcf4..508c4c7e4e94 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -129,8 +129,8 @@ go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6 go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= -go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= +go.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE= +go.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0= 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= diff --git a/go.mod b/go.mod index 31c22aa67bd1..1d953c8b2bc7 100644 --- a/go.mod +++ b/go.mod @@ -90,7 +90,7 @@ require ( go.opentelemetry.io/otel/metric v1.38.0 // indirect go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect - go.opentelemetry.io/proto/otlp v1.7.1 // indirect + go.opentelemetry.io/proto/otlp v1.8.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/crypto v0.42.0 // indirect diff --git a/go.sum b/go.sum index 0ccd1ef22ae0..b12c152b661f 100644 --- a/go.sum +++ b/go.sum @@ -168,8 +168,8 @@ go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6 go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= -go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= +go.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE= +go.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= 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/server/go.mod b/server/go.mod index 54af55c21663..cc59bf5da4bc 100644 --- a/server/go.mod +++ b/server/go.mod @@ -67,7 +67,7 @@ require ( go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/proto/otlp v1.7.1 // indirect + go.opentelemetry.io/proto/otlp v1.8.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/sys v0.36.0 // indirect diff --git a/server/go.sum b/server/go.sum index 90d7d85aa012..2afa642469d1 100644 --- a/server/go.sum +++ b/server/go.sum @@ -114,8 +114,8 @@ go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6 go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= -go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= +go.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE= +go.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0= 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= diff --git a/tests/go.mod b/tests/go.mod index 177be8515311..5e33d5bfa03c 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -45,7 +45,7 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 go.opentelemetry.io/otel v1.38.0 go.opentelemetry.io/otel/sdk v1.38.0 - go.opentelemetry.io/proto/otlp v1.7.1 + go.opentelemetry.io/proto/otlp v1.8.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.42.0 golang.org/x/sync v0.17.0 diff --git a/tests/go.sum b/tests/go.sum index daaddab21154..10fa74e228a5 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -174,8 +174,8 @@ go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6 go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= -go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= +go.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE= +go.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= From d42961740d4550dac923a9c19f99a30a63ef0f86 Mon Sep 17 00:00:00 2001 From: hwdef Date: Tue, 9 Sep 2025 16:31:40 +0800 Subject: [PATCH 0535/1068] benchmark: Connect to all endpoints instead of polling them Signed-off-by: hwdef --- tools/benchmark/cmd/root.go | 2 -- tools/benchmark/cmd/util.go | 47 +------------------------------------ 2 files changed, 1 insertion(+), 48 deletions(-) diff --git a/tools/benchmark/cmd/root.go b/tools/benchmark/cmd/root.go index 95aadde05639..f3768db1006c 100644 --- a/tools/benchmark/cmd/root.go +++ b/tools/benchmark/cmd/root.go @@ -53,7 +53,6 @@ var ( dialTimeout time.Duration - targetLeader bool autoSyncInterval time.Duration generatePerfReport bool @@ -74,7 +73,6 @@ func init() { RootCmd.PersistentFlags().StringVar(&user, "user", "", "provide username[:password] and prompt if password is not supplied.") RootCmd.PersistentFlags().DurationVar(&dialTimeout, "dial-timeout", 0, "dial timeout for client connections") - RootCmd.PersistentFlags().BoolVar(&targetLeader, "target-leader", false, "connect only to the leader node") RootCmd.PersistentFlags().DurationVar(&autoSyncInterval, "auto-sync-interval", time.Duration(0), "AutoSyncInterval is the interval to update endpoints with its latest members") RootCmd.PersistentFlags().BoolVar(&generatePerfReport, "report-perfdash", false, "Generate benchmark report in perfdash format") diff --git a/tools/benchmark/cmd/util.go b/tools/benchmark/cmd/util.go index 4233b8477d2b..2c32eccffe8e 100644 --- a/tools/benchmark/cmd/util.go +++ b/tools/benchmark/cmd/util.go @@ -15,7 +15,6 @@ package cmd import ( - "context" "crypto/rand" "fmt" "os" @@ -29,44 +28,11 @@ import ( ) var ( - // dialTotal counts the number of mustCreateConn calls so that endpoint - // connections can be handed out in round-robin order - dialTotal int - - // leaderEps is a cache for holding endpoints of a leader node - leaderEps []string - // cache the username and password for multiple connections globalUserName string globalPassword string ) -func mustFindLeaderEndpoints(c *clientv3.Client) { - resp, lerr := c.MemberList(context.TODO()) - if lerr != nil { - fmt.Fprintf(os.Stderr, "failed to get a member list: %s\n", lerr) - os.Exit(1) - } - - leaderID := uint64(0) - for _, ep := range c.Endpoints() { - if sresp, serr := c.Status(context.TODO(), ep); serr == nil { - leaderID = sresp.Leader - break - } - } - - for _, m := range resp.Members { - if m.ID == leaderID { - leaderEps = m.ClientURLs - return - } - } - - fmt.Fprint(os.Stderr, "failed to find a leader endpoint\n") - os.Exit(1) -} - func getUsernamePassword(usernameFlag string) (string, string, error) { if globalUserName != "" && globalPassword != "" { return globalUserName, globalPassword, nil @@ -88,14 +54,9 @@ func getUsernamePassword(usernameFlag string) (string, string, error) { } func mustCreateConn() *clientv3.Client { - connEndpoints := leaderEps - if len(connEndpoints) == 0 { - connEndpoints = []string{endpoints[dialTotal%len(endpoints)]} - dialTotal++ - } cfg := clientv3.Config{ AutoSyncInterval: autoSyncInterval, - Endpoints: connEndpoints, + Endpoints: endpoints, DialTimeout: dialTimeout, } if !tls.Empty() || tls.TrustedCAFile != "" { @@ -118,12 +79,6 @@ func mustCreateConn() *clientv3.Client { } client, err := clientv3.New(cfg) - if targetLeader && len(leaderEps) == 0 { - mustFindLeaderEndpoints(client) - client.Close() - return mustCreateConn() - } - grpclog.SetLoggerV2(grpclog.NewLoggerV2(os.Stderr, os.Stderr, os.Stderr)) if err != nil { From 25a75f041e29772c2cd2f7efacd340060dcf80bb Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Tue, 16 Sep 2025 21:47:50 +0200 Subject: [PATCH 0536/1068] Implement a feature to periodically open watches in robustness test and make it configurable Reference: - https://github.com/etcd-io/etcd/issues/20349 Signed-off-by: Chun-Hung Tseng Signed-off-by: Marek Siarkowicz Co-authored-by: Marek Siarkowicz --- .../test-template/robustness/traffic/main.go | 16 ++++-- tests/robustness/client/watch.go | 55 ++++++++++++++++++- tests/robustness/main_test.go | 11 ++-- tests/robustness/options/options.go | 22 ++++++++ tests/robustness/traffic/traffic.go | 12 ++++ 5 files changed, 105 insertions(+), 11 deletions(-) create mode 100644 tests/robustness/options/options.go diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 7a0acfae451d..0fdaf546c333 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -33,6 +33,7 @@ import ( "go.etcd.io/etcd/tests/v3/antithesis/test-template/robustness/common" "go.etcd.io/etcd/tests/v3/robustness/client" "go.etcd.io/etcd/tests/v3/robustness/identity" + "go.etcd.io/etcd/tests/v3/robustness/options" robustnessrand "go.etcd.io/etcd/tests/v3/robustness/random" "go.etcd.io/etcd/tests/v3/robustness/report" "go.etcd.io/etcd/tests/v3/robustness/traffic" @@ -46,6 +47,10 @@ var ( MemberClientCount: 3, ClusterClientCount: 1, MaxNonUniqueRequestConcurrency: 3, + BackgroundWatchConfig: options.BackgroundWatchConfig{ + Interval: 0, + RevisionOffset: 0, + }, } trafficNames = []string{ "etcd", @@ -121,11 +126,12 @@ func runTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, hosts [ defer watchSet.Close() g.Go(func() error { err := client.CollectClusterWatchEvents(ctx, client.CollectClusterWatchEventsParam{ - Lg: lg, - Endpoints: hosts, - MaxRevisionChan: maxRevisionChan, - Cfg: watchConfig, - ClientSet: watchSet, + Lg: lg, + Endpoints: hosts, + MaxRevisionChan: maxRevisionChan, + Cfg: watchConfig, + ClientSet: watchSet, + BackgroundWatchConfig: profile.BackgroundWatchConfig, }) return err }) diff --git a/tests/robustness/client/watch.go b/tests/robustness/client/watch.go index b33724812d02..288c6adf028b 100644 --- a/tests/robustness/client/watch.go +++ b/tests/robustness/client/watch.go @@ -18,10 +18,12 @@ import ( "context" "errors" "fmt" + "time" "go.uber.org/zap" "golang.org/x/sync/errgroup" + "go.etcd.io/etcd/tests/v3/robustness/options" "go.etcd.io/etcd/tests/v3/robustness/report" ) @@ -31,6 +33,7 @@ type CollectClusterWatchEventsParam struct { MaxRevisionChan <-chan int64 Cfg WatchConfig ClientSet *ClientSet + options.BackgroundWatchConfig } func CollectClusterWatchEvents(ctx context.Context, param CollectClusterWatchEventsParam) error { @@ -51,14 +54,29 @@ func CollectClusterWatchEvents(ctx context.Context, param CollectClusterWatchEve return err }) } - + finish := make(chan struct{}) g.Go(func() error { maxRevision := <-param.MaxRevisionChan for _, memberChan := range memberMaxRevisionChans { memberChan <- maxRevision } + close(finish) return nil }) + + if param.BackgroundWatchConfig.Interval > 0 { + for _, endpoint := range param.Endpoints { + g.Go(func() error { + c, err := param.ClientSet.NewClient([]string{endpoint}) + if err != nil { + return err + } + defer c.Close() + return openWatchPeriodically(ctx, &g, c, param.BackgroundWatchConfig, finish) + }) + } + } + return g.Wait() } @@ -130,3 +148,38 @@ resetWatch: } } } + +func openWatchPeriodically(ctx context.Context, g *errgroup.Group, c *RecordingClient, backgroundWatchConfig options.BackgroundWatchConfig, finish <-chan struct{}) error { + for { + select { + case <-ctx.Done(): + return ctx.Err() + case <-finish: + return nil + case <-time.After(backgroundWatchConfig.Interval): + } + g.Go(func() error { + resp, err := c.Get(ctx, "/key") + if err != nil { + return err + } + rev := resp.Header.Revision + backgroundWatchConfig.RevisionOffset + + watchCtx, cancel := context.WithCancel(ctx) + defer cancel() + w := c.Watch(watchCtx, "", rev, true, true, true) + for { + select { + case <-ctx.Done(): + return ctx.Err() + case <-finish: + return nil + case _, ok := <-w: + if !ok { + return nil + } + } + } + }) + } +} diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index be053f2356eb..affc2348018e 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -168,11 +168,12 @@ func runScenario(ctx context.Context, t *testing.T, s scenarios.TestScenario, lg g.Go(func() error { endpoints := processEndpoints(clus) err := client.CollectClusterWatchEvents(ctx, client.CollectClusterWatchEventsParam{ - Lg: lg, - Endpoints: endpoints, - MaxRevisionChan: maxRevisionChan, - Cfg: s.Watch, - ClientSet: watchSet, + Lg: lg, + Endpoints: endpoints, + MaxRevisionChan: maxRevisionChan, + Cfg: s.Watch, + ClientSet: watchSet, + BackgroundWatchConfig: s.Profile.BackgroundWatchConfig, }) return err }) diff --git a/tests/robustness/options/options.go b/tests/robustness/options/options.go new file mode 100644 index 000000000000..7e97cc7d85bf --- /dev/null +++ b/tests/robustness/options/options.go @@ -0,0 +1,22 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package options + +import "time" + +type BackgroundWatchConfig struct { + Interval time.Duration + RevisionOffset int64 +} diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index e939dd6ae007..b5aba5fab995 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -28,6 +28,7 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/client" "go.etcd.io/etcd/tests/v3/robustness/identity" "go.etcd.io/etcd/tests/v3/robustness/model" + "go.etcd.io/etcd/tests/v3/robustness/options" "go.etcd.io/etcd/tests/v3/robustness/report" "go.etcd.io/etcd/tests/v3/robustness/validate" ) @@ -295,6 +296,7 @@ type Profile struct { ClusterClientCount int ForbidCompaction bool CompactPeriod time.Duration + options.BackgroundWatchConfig } func (p Profile) WithoutCompaction() Profile { @@ -307,6 +309,16 @@ func (p Profile) WithCompactionPeriod(cp time.Duration) Profile { return p } +func (p Profile) WithBackgroundWatchConfigInterval(interval time.Duration) Profile { + p.BackgroundWatchConfig.Interval = interval + return p +} + +func (p Profile) WithBackgroundWatchConfigRevisionOffset(offset int64) Profile { + p.BackgroundWatchConfig.RevisionOffset = offset + return p +} + type RunTrafficLoopParam struct { Client *client.RecordingClient QPSLimiter *rate.Limiter From bd2b9fd398850a638991151cab4e4802f316813c Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sun, 21 Sep 2025 20:46:04 +0200 Subject: [PATCH 0537/1068] Clean up unused reports in robustness test Signed-off-by: Chun-Hung Tseng --- tests/robustness/client/watch.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/robustness/client/watch.go b/tests/robustness/client/watch.go index 288c6adf028b..63a0f261b0ea 100644 --- a/tests/robustness/client/watch.go +++ b/tests/robustness/client/watch.go @@ -24,7 +24,6 @@ import ( "golang.org/x/sync/errgroup" "go.etcd.io/etcd/tests/v3/robustness/options" - "go.etcd.io/etcd/tests/v3/robustness/report" ) type CollectClusterWatchEventsParam struct { @@ -38,7 +37,6 @@ type CollectClusterWatchEventsParam struct { func CollectClusterWatchEvents(ctx context.Context, param CollectClusterWatchEventsParam) error { var g errgroup.Group - reports := make([]report.ClientReport, len(param.Endpoints)) memberMaxRevisionChans := make([]chan int64, len(param.Endpoints)) for i, endpoint := range param.Endpoints { memberMaxRevisionChan := make(chan int64, 1) @@ -49,9 +47,7 @@ func CollectClusterWatchEvents(ctx context.Context, param CollectClusterWatchEve return err } defer c.Close() - err = watchUntilRevision(ctx, param.Lg, c, memberMaxRevisionChan, param.Cfg) - reports[i] = c.Report() - return err + return watchUntilRevision(ctx, param.Lg, c, memberMaxRevisionChan, param.Cfg) }) } finish := make(chan struct{}) From 420fc7e8787c78b35a76937157ac2bb0c7bc9852 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 15 Sep 2025 21:34:18 +0200 Subject: [PATCH 0538/1068] dependency: bump github.com/spf13/pflag from 1.0.9 to 1.0.10 Reference: - https://github.com/etcd-io/etcd/pull/20672 Signed-off-by: Chun-Hung Tseng --- etcdctl/go.mod | 2 +- etcdctl/go.sum | 3 ++- etcdutl/go.mod | 2 +- etcdutl/go.sum | 3 ++- go.mod | 2 +- go.sum | 3 ++- pkg/go.mod | 2 +- pkg/go.sum | 3 ++- server/go.mod | 2 +- server/go.sum | 3 ++- tests/go.mod | 2 +- tests/go.sum | 3 ++- tools/mod/go.mod | 2 +- tools/mod/go.sum | 3 ++- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 3 ++- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 3 ++- 18 files changed, 27 insertions(+), 18 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 3739f30c9f38..7e985588404d 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -10,7 +10,7 @@ require ( github.com/dustin/go-humanize v1.0.1 github.com/olekukonko/tablewriter v1.0.9 github.com/spf13/cobra v1.10.1 - github.com/spf13/pflag v1.0.9 + github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 8177f0248577..aa64b3a0087b 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -77,8 +77,9 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7 github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= -github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 84a214d2c24d..0614220c1e5a 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -71,7 +71,7 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect - github.com/spf13/pflag v1.0.9 // indirect + github.com/spf13/pflag v1.0.10 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 508c4c7e4e94..3f22295bffb0 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -95,8 +95,9 @@ github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= -github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= diff --git a/go.mod b/go.mod index 1d953c8b2bc7..5910ca1207c3 100644 --- a/go.mod +++ b/go.mod @@ -78,7 +78,7 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect - github.com/spf13/pflag v1.0.9 // indirect + github.com/spf13/pflag v1.0.10 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/gofail v0.2.0 // indirect diff --git a/go.sum b/go.sum index b12c152b661f..a66286f20826 100644 --- a/go.sum +++ b/go.sum @@ -129,8 +129,9 @@ github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= -github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= diff --git a/pkg/go.mod b/pkg/go.mod index 01e56bad3fb8..d3ea4e6eafe5 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/creack/pty v1.1.18 github.com/dustin/go-humanize v1.0.1 github.com/spf13/cobra v1.10.1 - github.com/spf13/pflag v1.0.9 + github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.38.0 diff --git a/pkg/go.sum b/pkg/go.sum index a4ab11dfacf0..fa51371bb762 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -30,8 +30,9 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7 github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= -github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/server/go.mod b/server/go.mod index cc59bf5da4bc..983a259becf3 100644 --- a/server/go.mod +++ b/server/go.mod @@ -63,7 +63,7 @@ require ( github.com/prometheus/common v0.66.1 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/pflag v1.0.9 // indirect + github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect diff --git a/server/go.sum b/server/go.sum index 2afa642469d1..28b6f4270d97 100644 --- a/server/go.sum +++ b/server/go.sum @@ -80,8 +80,9 @@ github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= -github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= diff --git a/tests/go.mod b/tests/go.mod index 5e33d5bfa03c..63f2136de208 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -87,7 +87,7 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/cobra v1.10.1 // indirect - github.com/spf13/pflag v1.0.9 // indirect + github.com/spf13/pflag v1.0.10 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 10fa74e228a5..f25ab4801163 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -135,8 +135,9 @@ github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= -github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 571de6ce8585..d06b0e7156aa 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -196,7 +196,7 @@ require ( github.com/spf13/afero v1.14.0 // indirect github.com/spf13/cast v1.7.1 // indirect github.com/spf13/cobra v1.10.1 // indirect - github.com/spf13/pflag v1.0.9 // indirect + github.com/spf13/pflag v1.0.10 // indirect github.com/spf13/viper v1.20.0 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 47daf92b619c..eda4ee9c5ae3 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -450,8 +450,9 @@ github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cA github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.20.0 h1:zrxIyR3RQIOsarIrgL8+sAvALXul9jeEPa06Y0Ph6vY= github.com/spf13/viper v1.20.0/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index eba5926a672e..900f2f1b225d 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -6,7 +6,7 @@ toolchain go1.25.1 require ( github.com/spf13/cobra v1.10.1 - github.com/spf13/pflag v1.0.9 + github.com/spf13/pflag v1.0.10 gonum.org/v1/plot v0.14.0 ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 4d5224411e91..17c94b97b56f 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -31,8 +31,9 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= -github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 657f917306bb..ab03af6f310a 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -14,7 +14,7 @@ require ( require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/spf13/pflag v1.0.9 // indirect + github.com/spf13/pflag v1.0.10 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 3f0e53d746e4..2f337493a19d 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1143,8 +1143,9 @@ github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcD github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= From 00fcc346e4ea059c3c83b520233f16467a45bd93 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 22 Sep 2025 20:34:23 +0200 Subject: [PATCH 0539/1068] dependency: bump github.com/olekukonko/tablewriter from 1.0.9 to 1.1.0 Reference: - https://github.com/etcd-io/etcd/pull/20702 Signed-off-by: Chun-Hung Tseng --- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 7e985588404d..473c3a4a7706 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -8,7 +8,7 @@ require ( github.com/bgentry/speakeasy v0.2.0 github.com/cheggaaa/pb/v3 v3.1.7 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.0.9 + github.com/olekukonko/tablewriter v1.1.0 github.com/spf13/cobra v1.10.1 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 diff --git a/etcdctl/go.sum b/etcdctl/go.sum index aa64b3a0087b..96b29c291dea 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -57,8 +57,8 @@ github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5 github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.9 h1:XGwRsYLC2bY7bNd93Dk51bcPZksWZmLYuaTHR0FqfL8= -github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= +github.com/olekukonko/tablewriter v1.1.0 h1:N0LHrshF4T39KvI96fn6GT8HEjXRXYNDrDjKFDB7RIY= +github.com/olekukonko/tablewriter v1.1.0/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 0614220c1e5a..20917c5a32ae 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -23,7 +23,7 @@ replace ( require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.0.9 + github.com/olekukonko/tablewriter v1.1.0 github.com/spf13/cobra v1.10.1 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 3f22295bffb0..4c45dd5985e2 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -70,8 +70,8 @@ github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5 github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.9 h1:XGwRsYLC2bY7bNd93Dk51bcPZksWZmLYuaTHR0FqfL8= -github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= +github.com/olekukonko/tablewriter v1.1.0 h1:N0LHrshF4T39KvI96fn6GT8HEjXRXYNDrDjKFDB7RIY= +github.com/olekukonko/tablewriter v1.1.0/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/go.mod b/go.mod index 5910ca1207c3..980c52bc6fba 100644 --- a/go.mod +++ b/go.mod @@ -69,7 +69,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/errors v1.1.0 // indirect github.com/olekukonko/ll v0.0.9 // indirect - github.com/olekukonko/tablewriter v1.0.9 // indirect + github.com/olekukonko/tablewriter v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/go.sum b/go.sum index a66286f20826..d46c09b3bb25 100644 --- a/go.sum +++ b/go.sum @@ -100,8 +100,8 @@ github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5 github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.9 h1:XGwRsYLC2bY7bNd93Dk51bcPZksWZmLYuaTHR0FqfL8= -github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= +github.com/olekukonko/tablewriter v1.1.0 h1:N0LHrshF4T39KvI96fn6GT8HEjXRXYNDrDjKFDB7RIY= +github.com/olekukonko/tablewriter v1.1.0/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/tests/go.mod b/tests/go.mod index 63f2136de208..335d0853bb16 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -25,7 +25,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 - github.com/olekukonko/tablewriter v1.0.9 + github.com/olekukonko/tablewriter v1.1.0 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.66.1 diff --git a/tests/go.sum b/tests/go.sum index f25ab4801163..ceb90782ac39 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -106,8 +106,8 @@ github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5 github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.9 h1:XGwRsYLC2bY7bNd93Dk51bcPZksWZmLYuaTHR0FqfL8= -github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= +github.com/olekukonko/tablewriter v1.1.0 h1:N0LHrshF4T39KvI96fn6GT8HEjXRXYNDrDjKFDB7RIY= +github.com/olekukonko/tablewriter v1.1.0/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= From c9e35c146441f90ec81b03bfbacdcf9de4163cc8 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 22 Sep 2025 20:36:35 +0200 Subject: [PATCH 0540/1068] dependency: bump google.golang.org/protobuf from 1.36.8 to 1.36.9 Reference: - https://github.com/etcd-io/etcd/pull/20699 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 22 files changed, 33 insertions(+), 33 deletions(-) diff --git a/api/go.mod b/api/go.mod index 3ab001257101..44ee4b9d5d8f 100644 --- a/api/go.mod +++ b/api/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.11.1 google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 google.golang.org/grpc v1.75.1 - google.golang.org/protobuf v1.36.8 + google.golang.org/protobuf v1.36.9 ) require ( diff --git a/api/go.sum b/api/go.sum index f14bec48648b..38a163710d6f 100644 --- a/api/go.sum +++ b/api/go.sum @@ -82,8 +82,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/cache/go.mod b/cache/go.mod index 083d3327be02..c02beb813508 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -29,7 +29,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/grpc v1.75.1 // indirect - google.golang.org/protobuf v1.36.8 // indirect + google.golang.org/protobuf v1.36.9 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index 749e0263bf48..1283d6b7d9bc 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -111,8 +111,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index c10e9e37e741..4a6464ec0520 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -38,7 +38,7 @@ require ( golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/protobuf v1.36.8 // indirect + google.golang.org/protobuf v1.36.9 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 311c2630ae0f..acc2c76b6e16 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -117,8 +117,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 473c3a4a7706..b175801d5a19 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -44,7 +44,7 @@ require ( golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/protobuf v1.36.8 // indirect + google.golang.org/protobuf v1.36.9 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 96b29c291dea..44042c6200cf 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -146,8 +146,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 20917c5a32ae..68d6d287aea4 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -93,7 +93,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/grpc v1.75.1 // indirect - google.golang.org/protobuf v1.36.8 // indirect + google.golang.org/protobuf v1.36.9 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 4c45dd5985e2..6635eab5ad05 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -190,8 +190,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/go.mod b/go.mod index 980c52bc6fba..43f967694b4e 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/time v0.13.0 google.golang.org/grpc v1.75.1 - google.golang.org/protobuf v1.36.8 + google.golang.org/protobuf v1.36.9 ) require ( diff --git a/go.sum b/go.sum index d46c09b3bb25..91332ca5c01c 100644 --- a/go.sum +++ b/go.sum @@ -259,8 +259,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/go.mod b/pkg/go.mod index d3ea4e6eafe5..05b5578ed3f0 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -27,7 +27,7 @@ require ( golang.org/x/net v0.43.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/protobuf v1.36.8 // indirect + google.golang.org/protobuf v1.36.9 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index fa51371bb762..d94eac6b922a 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -65,8 +65,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/server/go.mod b/server/go.mod index 983a259becf3..e6bd483fb65f 100644 --- a/server/go.mod +++ b/server/go.mod @@ -42,7 +42,7 @@ require ( golang.org/x/time v0.13.0 google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 google.golang.org/grpc v1.75.1 - google.golang.org/protobuf v1.36.8 + google.golang.org/protobuf v1.36.9 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.6.0 ) diff --git a/server/go.sum b/server/go.sum index 28b6f4270d97..b7de6077361b 100644 --- a/server/go.sum +++ b/server/go.sum @@ -174,8 +174,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tests/go.mod b/tests/go.mod index 335d0853bb16..27a424b7127d 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -51,7 +51,7 @@ require ( golang.org/x/sync v0.17.0 golang.org/x/time v0.13.0 google.golang.org/grpc v1.75.1 - google.golang.org/protobuf v1.36.8 + google.golang.org/protobuf v1.36.9 ) require ( diff --git a/tests/go.sum b/tests/go.sum index ceb90782ac39..37d59068a3be 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -265,8 +265,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index fc19957a8fea..b367d0e0f6cd 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -245,7 +245,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/grpc v1.75.1 // indirect - google.golang.org/protobuf v1.36.8 // indirect + google.golang.org/protobuf v1.36.9 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect mvdan.cc/gofumpt v0.8.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index eda4ee9c5ae3..ffa4bfe401d3 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -726,8 +726,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index ab03af6f310a..8f0258db4c12 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -8,7 +8,7 @@ require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 github.com/google/go-github/v60 v60.0.0 github.com/spf13/cobra v1.10.1 - google.golang.org/protobuf v1.36.8 + google.golang.org/protobuf v1.36.9 ) require ( diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 2f337493a19d..ef80fc2d6db3 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1912,8 +1912,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From ac16e39d0708107c2c0d0115c4f32efb797230ce Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 22 Sep 2025 20:38:47 +0200 Subject: [PATCH 0541/1068] dependency: bump github.com/golangci/golangci-lint/v2 from 2.4.0 to 2.5.0 and golang.org/x/net from 0.43.0 to 0.44.0 Reference: - https://github.com/etcd-io/etcd/pull/20698 - https://github.com/etcd-io/etcd/pull/20697 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 +- cache/go.mod | 2 +- cache/go.sum | 4 +- client/v3/go.mod | 2 +- client/v3/go.sum | 4 +- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 +- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 +- go.mod | 2 +- go.sum | 4 +- pkg/go.mod | 2 +- pkg/go.sum | 4 +- server/go.mod | 2 +- server/go.sum | 4 +- tests/go.mod | 2 +- tests/go.sum | 4 +- tools/mod/go.mod | 56 ++++++++------- tools/mod/go.sum | 122 +++++++++++++++++---------------- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 +- 22 files changed, 122 insertions(+), 116 deletions(-) diff --git a/api/go.mod b/api/go.mod index 44ee4b9d5d8f..35fe1f78c4b3 100644 --- a/api/go.mod +++ b/api/go.mod @@ -20,7 +20,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - golang.org/x/net v0.43.0 // indirect + golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/api/go.sum b/api/go.sum index 38a163710d6f..2f0aef2bdc0c 100644 --- a/api/go.sum +++ b/api/go.sum @@ -52,8 +52,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/cache/go.mod b/cache/go.mod index c02beb813508..c8afe7c1587f 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -23,7 +23,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/net v0.43.0 // indirect + golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/cache/go.sum b/cache/go.sum index 1283d6b7d9bc..0e9170dcbb20 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -81,8 +81,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/client/v3/go.mod b/client/v3/go.mod index 4a6464ec0520..2d68d3cb1e51 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -33,7 +33,7 @@ require ( github.com/prometheus/procfs v0.16.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/net v0.43.0 // indirect + golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index acc2c76b6e16..c9ae7569eef6 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -87,8 +87,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index b175801d5a19..4299d3d371e8 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -39,7 +39,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.43.0 // indirect + golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 44042c6200cf..aa3be394d76e 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -113,8 +113,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 68d6d287aea4..654cbff5f69e 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -86,7 +86,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/crypto v0.42.0 // indirect - golang.org/x/net v0.43.0 // indirect + golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect golang.org/x/time v0.13.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 6635eab5ad05..4737925380c7 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -154,8 +154,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/go.mod b/go.mod index 43f967694b4e..00ac86b88719 100644 --- a/go.mod +++ b/go.mod @@ -94,7 +94,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/crypto v0.42.0 // indirect - golang.org/x/net v0.43.0 // indirect + golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/go.sum b/go.sum index 91332ca5c01c..283c8f2ee3ab 100644 --- a/go.sum +++ b/go.sum @@ -204,8 +204,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/pkg/go.mod b/pkg/go.mod index 05b5578ed3f0..3459fcb7265f 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -24,7 +24,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.opentelemetry.io/otel v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.43.0 // indirect + golang.org/x/net v0.44.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/protobuf v1.36.9 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index d94eac6b922a..dd04253d415e 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -53,8 +53,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= diff --git a/server/go.mod b/server/go.mod index e6bd483fb65f..b40f0937e463 100644 --- a/server/go.mod +++ b/server/go.mod @@ -38,7 +38,7 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.42.0 - golang.org/x/net v0.43.0 + golang.org/x/net v0.44.0 golang.org/x/time v0.13.0 google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 google.golang.org/grpc v1.75.1 diff --git a/server/go.sum b/server/go.sum index b7de6077361b..ef447a3c7cf5 100644 --- a/server/go.sum +++ b/server/go.sum @@ -139,8 +139,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tests/go.mod b/tests/go.mod index 27a424b7127d..a4db42e113c3 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -97,7 +97,7 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/net v0.43.0 // indirect + golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/tests/go.sum b/tests/go.sum index 37d59068a3be..d99678c68597 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -210,8 +210,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index b367d0e0f6cd..366e98a97921 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -10,14 +10,14 @@ require ( github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint/v2 v2.4.0 + github.com/golangci/golangci-lint/v2 v2.5.0 github.com/google/addlicense v1.2.0 github.com/google/yamlfmt v0.17.2 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 - golang.org/x/tools v0.36.0 + golang.org/x/tools v0.37.0 gotest.tools/gotestsum v1.13.0 gotest.tools/v3 v3.5.2 honnef.co/go/tools v0.6.1 @@ -32,13 +32,15 @@ require ( filippo.io/edwards25519 v1.1.0 // indirect github.com/4meepo/tagalign v1.4.3 // indirect github.com/Abirdcfly/dupword v0.1.6 // indirect + github.com/AdminBenni/iota-mixing v1.0.0 // indirect github.com/AlwxSin/noinlineerr v1.0.5 // indirect - github.com/Antonboom/errname v1.1.0 // indirect - github.com/Antonboom/nilnil v1.1.0 // indirect - github.com/Antonboom/testifylint v1.6.1 // indirect + github.com/Antonboom/errname v1.1.1 // indirect + github.com/Antonboom/nilnil v1.1.1 // indirect + github.com/Antonboom/testifylint v1.6.4 // indirect github.com/BurntSushi/toml v1.5.0 // indirect - github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect + github.com/Djarvur/go-err113 v0.1.1 // indirect github.com/Masterminds/semver/v3 v3.3.1 // indirect + github.com/MirrexOne/unqueryvet v1.2.1 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect github.com/akhenakh/hunspellgo v0.0.0-20160221122622-9db38fa26e19 // indirect github.com/alecthomas/chroma/v2 v2.20.0 // indirect @@ -57,7 +59,7 @@ require ( github.com/blizzy78/varnamelen v0.8.0 // indirect github.com/bmatcuk/doublestar/v4 v4.8.1 // indirect github.com/bombsimon/wsl/v4 v4.7.0 // indirect - github.com/bombsimon/wsl/v5 v5.1.1 // indirect + github.com/bombsimon/wsl/v5 v5.2.0 // indirect github.com/breml/bidichk v0.3.3 // indirect github.com/breml/errchkjson v0.4.1 // indirect github.com/butuzov/ireturn v0.4.0 // indirect @@ -85,7 +87,7 @@ require ( github.com/firefart/nonamedreturns v1.0.6 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect - github.com/ghostiam/protogetter v0.3.15 // indirect + github.com/ghostiam/protogetter v0.3.16 // indirect github.com/go-critic/go-critic v0.13.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-sql-driver/mysql v1.8.1 // indirect @@ -99,13 +101,16 @@ require ( github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect github.com/gobwas/glob v0.2.3 // indirect + github.com/godoc-lint/godoc-lint v0.10.0 // indirect github.com/gofrs/flock v0.12.1 // indirect github.com/golang/protobuf v1.5.4 // indirect + github.com/golangci/asciicheck v0.5.0 // indirect github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect - github.com/golangci/go-printf-func-name v0.1.0 // indirect + github.com/golangci/go-printf-func-name v0.1.1 // indirect github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 // indirect github.com/golangci/misspell v0.7.0 // indirect + github.com/golangci/nilerr v0.0.0-20250918000102-015671e622fe // indirect github.com/golangci/plugin-module-register v0.1.2 // indirect github.com/golangci/revgrep v0.8.0 // indirect github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e // indirect @@ -113,11 +118,10 @@ require ( github.com/google/certificate-transparency-go v1.1.8 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/gordonklaus/ineffassign v0.1.0 // indirect + github.com/gordonklaus/ineffassign v0.2.0 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect github.com/gostaticanalysis/comment v1.5.0 // indirect github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect - github.com/gostaticanalysis/nilerr v0.1.1 // indirect github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect @@ -133,19 +137,19 @@ require ( github.com/kisielk/errcheck v1.9.0 // indirect github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 // indirect github.com/kkHAIKE/contextcheck v1.1.6 // indirect - github.com/kulti/thelper v0.6.3 // indirect + github.com/kulti/thelper v0.7.1 // indirect github.com/kunwardeep/paralleltest v1.0.14 // indirect github.com/lasiar/canonicalheader v1.1.2 // indirect github.com/ldez/exptostd v0.4.4 // indirect github.com/ldez/gomoddirectives v0.7.0 // indirect - github.com/ldez/grignotin v0.10.0 // indirect - github.com/ldez/tagliatelle v0.7.1 // indirect + github.com/ldez/grignotin v0.10.1 // indirect + github.com/ldez/tagliatelle v0.7.2 // indirect github.com/ldez/usetesting v0.5.0 // indirect github.com/leonklingele/grouper v1.1.2 // indirect github.com/lib/pq v1.10.9 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/macabu/inamedparam v0.2.0 // indirect - github.com/manuelarte/embeddedstructfieldcheck v0.3.0 // indirect + github.com/manuelarte/embeddedstructfieldcheck v0.4.0 // indirect github.com/manuelarte/funcorder v0.5.0 // indirect github.com/maratori/testableexamples v1.0.0 // indirect github.com/maratori/testpackage v1.1.1 // indirect @@ -154,7 +158,7 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mattn/go-sqlite3 v1.14.24 // indirect - github.com/mgechev/revive v1.11.0 // indirect + github.com/mgechev/revive v1.12.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moricho/tparallel v0.3.2 // indirect @@ -163,7 +167,7 @@ require ( github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect - github.com/nunnatsa/ginkgolinter v0.20.0 // indirect + github.com/nunnatsa/ginkgolinter v0.21.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect @@ -188,7 +192,7 @@ require ( github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect - github.com/securego/gosec/v2 v2.22.7 // indirect + github.com/securego/gosec/v2 v2.22.8 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sivchari/containedctx v1.0.3 // indirect github.com/sonatard/noctx v0.4.0 // indirect @@ -204,8 +208,7 @@ require ( github.com/stretchr/objx v0.5.2 // indirect github.com/stretchr/testify v1.11.1 // indirect github.com/subosito/gotenv v1.6.0 // indirect - github.com/tdakkota/asciicheck v0.4.1 // indirect - github.com/tetafro/godot v1.5.1 // indirect + github.com/tetafro/godot v1.5.4 // indirect github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 // indirect github.com/timonwong/loggercheck v0.11.0 // indirect github.com/tomarrell/wrapcheck/v2 v2.11.0 // indirect @@ -224,10 +227,10 @@ require ( github.com/zmap/zcrypto v0.0.0-20231219022726-a1f61fb1661c // indirect github.com/zmap/zlint/v3 v3.6.0 // indirect gitlab.com/bosi/decorder v0.4.2 // indirect - go-simpler.org/musttag v0.13.1 // indirect + go-simpler.org/musttag v0.14.0 // indirect go-simpler.org/sloglint v0.11.1 // indirect go.augendre.info/arangolint v0.2.0 // indirect - go.augendre.info/fatcontext v0.8.0 // indirect + go.augendre.info/fatcontext v0.8.1 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect @@ -235,11 +238,12 @@ require ( go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.42.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b // indirect - golang.org/x/mod v0.27.0 // indirect - golang.org/x/net v0.43.0 // indirect + golang.org/x/exp/typeparams v0.0.0-20250911091902-df9299821621 // indirect + golang.org/x/mod v0.28.0 // indirect + golang.org/x/net v0.44.0 // indirect golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.36.0 // indirect + golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053 // indirect golang.org/x/term v0.35.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect @@ -248,6 +252,6 @@ require ( google.golang.org/protobuf v1.36.9 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect - mvdan.cc/gofumpt v0.8.0 // indirect + mvdan.cc/gofumpt v0.9.1 // indirect mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 // indirect ) diff --git a/tools/mod/go.sum b/tools/mod/go.sum index ffa4bfe401d3..a10d69feb0df 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -15,20 +15,24 @@ github.com/4meepo/tagalign v1.4.3 h1:Bnu7jGWwbfpAie2vyl63Zup5KuRv21olsPIha53BJr8 github.com/4meepo/tagalign v1.4.3/go.mod h1:00WwRjiuSbrRJnSVeGWPLp2epS5Q/l4UEy0apLLS37c= github.com/Abirdcfly/dupword v0.1.6 h1:qeL6u0442RPRe3mcaLcbaCi2/Y/hOcdtw6DE9odjz9c= github.com/Abirdcfly/dupword v0.1.6/go.mod h1:s+BFMuL/I4YSiFv29snqyjwzDp4b65W2Kvy+PKzZ6cw= +github.com/AdminBenni/iota-mixing v1.0.0 h1:Os6lpjG2dp/AE5fYBPAA1zfa2qMdCAWwPMCgpwKq7wo= +github.com/AdminBenni/iota-mixing v1.0.0/go.mod h1:i4+tpAaB+qMVIV9OK3m4/DAynOd5bQFaOu+2AhtBCNY= github.com/AlwxSin/noinlineerr v1.0.5 h1:RUjt63wk1AYWTXtVXbSqemlbVTb23JOSRiNsshj7TbY= github.com/AlwxSin/noinlineerr v1.0.5/go.mod h1:+QgkkoYrMH7RHvcdxdlI7vYYEdgeoFOVjU9sUhw/rQc= -github.com/Antonboom/errname v1.1.0 h1:A+ucvdpMwlo/myWrkHEUEBWc/xuXdud23S8tmTb/oAE= -github.com/Antonboom/errname v1.1.0/go.mod h1:O1NMrzgUcVBGIfi3xlVuvX8Q/VP/73sseCaAppfjqZw= -github.com/Antonboom/nilnil v1.1.0 h1:jGxJxjgYS3VUUtOTNk8Z1icwT5ESpLH/426fjmQG+ng= -github.com/Antonboom/nilnil v1.1.0/go.mod h1:b7sAlogQjFa1wV8jUW3o4PMzDVFLbTux+xnQdvzdcIE= -github.com/Antonboom/testifylint v1.6.1 h1:6ZSytkFWatT8mwZlmRCHkWz1gPi+q6UBSbieji2Gj/o= -github.com/Antonboom/testifylint v1.6.1/go.mod h1:k+nEkathI2NFjKO6HvwmSrbzUcQ6FAnbZV+ZRrnXPLI= +github.com/Antonboom/errname v1.1.1 h1:bllB7mlIbTVzO9jmSWVWLjxTEbGBVQ1Ff/ClQgtPw9Q= +github.com/Antonboom/errname v1.1.1/go.mod h1:gjhe24xoxXp0ScLtHzjiXp0Exi1RFLKJb0bVBtWKCWQ= +github.com/Antonboom/nilnil v1.1.1 h1:9Mdr6BYd8WHCDngQnNVV0b554xyisFioEKi30sksufQ= +github.com/Antonboom/nilnil v1.1.1/go.mod h1:yCyAmSw3doopbOWhJlVci+HuyNRuHJKIv6V2oYQa8II= +github.com/Antonboom/testifylint v1.6.4 h1:gs9fUEy+egzxkEbq9P4cpcMB6/G0DYdMeiFS87UiqmQ= +github.com/Antonboom/testifylint v1.6.4/go.mod h1:YO33FROXX2OoUfwjz8g+gUxQXio5i9qpVy7nXGbxDD4= github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= +github.com/Djarvur/go-err113 v0.1.1 h1:eHfopDqXRwAi+YmCUas75ZE0+hoBHJ2GQNLYRSxao4g= +github.com/Djarvur/go-err113 v0.1.1/go.mod h1:IaWJdYFLg76t2ihfflPZnM1LIQszWOsFDh2hhhAVF6k= github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/MirrexOne/unqueryvet v1.2.1 h1:M+zdXMq84g+E1YOLa7g7ExN3dWfZQrdDSTCM7gC+m/A= +github.com/MirrexOne/unqueryvet v1.2.1/go.mod h1:IWwCwMQlSWjAIteW0t+28Q5vouyktfujzYznSIWiuOg= github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= @@ -75,8 +79,8 @@ github.com/bmatcuk/doublestar/v4 v4.8.1 h1:54Bopc5c2cAvhLRAzqOGCYHYyhcDHsFF4wWIR github.com/bmatcuk/doublestar/v4 v4.8.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bombsimon/wsl/v4 v4.7.0 h1:1Ilm9JBPRczjyUs6hvOPKvd7VL1Q++PL8M0SXBDf+jQ= github.com/bombsimon/wsl/v4 v4.7.0/go.mod h1:uV/+6BkffuzSAVYD+yGyld1AChO7/EuLrCF/8xTiapg= -github.com/bombsimon/wsl/v5 v5.1.1 h1:cQg5KJf9FlctAH4cpL9vLKnziYknoCMCdqXl0wjl72Q= -github.com/bombsimon/wsl/v5 v5.1.1/go.mod h1:Gp8lD04z27wm3FANIUPZycXp+8huVsn0oxc+n4qfV9I= +github.com/bombsimon/wsl/v5 v5.2.0 h1:PyCCwd3Q7abGs3e34IW4jLYlBS+FbsU6iK+Tb3NnDp4= +github.com/bombsimon/wsl/v5 v5.2.0/go.mod h1:Gp8lD04z27wm3FANIUPZycXp+8huVsn0oxc+n4qfV9I= github.com/breml/bidichk v0.3.3 h1:WSM67ztRusf1sMoqH6/c4OBCUlRVTKq+CbSeo0R17sE= github.com/breml/bidichk v0.3.3/go.mod h1:ISbsut8OnjB367j5NseXEGGgO/th206dVa427kR8YTE= github.com/breml/errchkjson v0.4.1 h1:keFSS8D7A2T0haP9kzZTi7o26r7kE3vymjZNeNDRDwg= @@ -146,8 +150,8 @@ github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= -github.com/ghostiam/protogetter v0.3.15 h1:1KF5sXel0HE48zh1/vn0Loiw25A9ApyseLzQuif1mLY= -github.com/ghostiam/protogetter v0.3.15/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= +github.com/ghostiam/protogetter v0.3.16 h1:UkrisuJBYLnZW6FcYUNBDJOqY3X22RtoYMlCsiNlFFA= +github.com/ghostiam/protogetter v0.3.16/go.mod h1:4SRRIv6PcjkIMpUkRUsP4TsUTqO/N3Fmvwivuc/sCHA= github.com/go-critic/go-critic v0.13.0 h1:kJzM7wzltQasSUXtYyTl6UaPVySO6GkaR1thFnJ6afY= github.com/go-critic/go-critic v0.13.0/go.mod h1:M/YeuJ3vOCQDnP2SU+ZhjgRzwzcBW87JqLpMJLrZDLI= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= @@ -183,6 +187,8 @@ github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUW github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/godoc-lint/godoc-lint v0.10.0 h1:OcyrziBi18sQSEpib6NesVHEJ/Xcng97NunePBA48g4= +github.com/godoc-lint/godoc-lint v0.10.0/go.mod h1:KleLcHu/CGSvkjUH2RvZyoK1MBC7pDQg4NxMYLcBBsw= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -192,18 +198,22 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golangci/asciicheck v0.5.0 h1:jczN/BorERZwK8oiFBOGvlGPknhvq0bjnysTj4nUfo0= +github.com/golangci/asciicheck v0.5.0/go.mod h1:5RMNAInbNFw2krqN6ibBxN/zfRFa9S6tA1nPdM0l8qQ= github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 h1:WUvBfQL6EW/40l6OmeSBYQJNSif4O11+bmWEz+C7FYw= github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E= -github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUPPyAKJuzv8pEJU= -github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= +github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarogrvjO9AfiW3B4U= +github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint/v2 v2.4.0 h1:qz6O6vr7kVzXJqyvHjHSz5fA3D+PM8v96QU5gxZCNWM= -github.com/golangci/golangci-lint/v2 v2.4.0/go.mod h1:Oq7vuAf6L1iNL34uHDcsIF6Mnc0amOPdsT3/GlpHD+I= +github.com/golangci/golangci-lint/v2 v2.5.0 h1:BDRg4ASm4J1y/DSRY6zwJ5tr5Yy8ZqbZ79XrCeFxaQo= +github.com/golangci/golangci-lint/v2 v2.5.0/go.mod h1:IJtWJBZkLbx7AVrIUzLd8Oi3ADtwaNpWbR3wthVWHcc= github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 h1:AkK+w9FZBXlU/xUmBtSJN1+tAI4FIvy5WtnUnY8e4p8= github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95/go.mod h1:k9mmcyWKSTMcPPvQUCfRWWQ9VHJ1U9Dc0R7kaXAgtnQ= github.com/golangci/misspell v0.7.0 h1:4GOHr/T1lTW0hhR4tgaaV1WS/lJ+ncvYCoFKmqJsj0c= github.com/golangci/misspell v0.7.0/go.mod h1:WZyyI2P3hxPY2UVHs3cS8YcllAeyfquQcKfdeE9AFVg= +github.com/golangci/nilerr v0.0.0-20250918000102-015671e622fe h1:F1pK9tBy41i7eesBFkSNMldwtiAaWiU+3fT/24sTnNI= +github.com/golangci/nilerr v0.0.0-20250918000102-015671e622fe/go.mod h1:CtTxAluxD2ng9aIT9bPrVoMuISFWCD+SaxtvYtdWA2k= github.com/golangci/plugin-module-register v0.1.2 h1:e5WM6PO6NIAEcij3B053CohVp3HIYbzSuP53UAYgOpg= github.com/golangci/plugin-module-register v0.1.2/go.mod h1:1+QGTsKBvAIvPvoY/os+G5eoqxWn70HYDm2uvUyGuVw= github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s= @@ -216,7 +226,6 @@ github.com/google/addlicense v1.2.0 h1:W+DP4A639JGkcwBGMDvjSurZHvaq2FN0pP7se9czs github.com/google/addlicense v1.2.0/go.mod h1:Sm/DHu7Jk+T5miFHHehdIjbi4M5+dJDRS3Cq0rncIxA= github.com/google/certificate-transparency-go v1.1.8 h1:LGYKkgZF7satzgTak9R4yzfJXEeYVAjV6/EAEJOf1to= github.com/google/certificate-transparency-go v1.1.8/go.mod h1:bV/o8r0TBKRf1X//iiiSgWrvII4d7/8OiA+3vG26gI8= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -232,18 +241,15 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaU github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/yamlfmt v0.17.2 h1:TkXxhmj7dnpmOnlWGOXog92Gs6MWcTZqnf3kuyp8yFQ= github.com/google/yamlfmt v0.17.2/go.mod h1:gs0UEklJOYkUJ+OOCG0hg9n+DzucKDPlJElTUasVNK8= -github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s= -github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= +github.com/gordonklaus/ineffassign v0.2.0 h1:Uths4KnmwxNJNzq87fwQQDDnbNb7De00VOk9Nu0TySs= +github.com/gordonklaus/ineffassign v0.2.0/go.mod h1:TIpymnagPSexySzs7F9FnO1XFTy8IT3a59vmZp5Y9Lw= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= -github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= github.com/gostaticanalysis/comment v1.5.0 h1:X82FLl+TswsUMpMh17srGRuKaaXprTaytmEpgnKIDu8= github.com/gostaticanalysis/comment v1.5.0/go.mod h1:V6eb3gpCv9GNVqb6amXzEUX3jXLVK/AdA+IrAMSqvEc= github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk= github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY= -github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= -github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= @@ -292,8 +298,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= -github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= +github.com/kulti/thelper v0.7.1 h1:fI8QITAoFVLx+y+vSyuLBP+rcVIB8jKooNSCT2EiI98= +github.com/kulti/thelper v0.7.1/go.mod h1:NsMjfQEy6sd+9Kfw8kCP61W1I0nerGSYSFnGaxQkcbs= github.com/kunwardeep/paralleltest v1.0.14 h1:wAkMoMeGX/kGfhQBPODT/BL8XhK23ol/nuQ3SwFaUw8= github.com/kunwardeep/paralleltest v1.0.14/go.mod h1:di4moFqtfz3ToSKxhNjhOZL+696QtJGCFe132CbBLGk= github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= @@ -302,10 +308,10 @@ github.com/ldez/exptostd v0.4.4 h1:58AtQjnLcT/tI5W/1KU7xE/O7zW9RAWB6c/ScQAnfus= github.com/ldez/exptostd v0.4.4/go.mod h1:QfdzPw6oHjFVdNV7ILoPu5sw3OZ3OG1JS0I5JN3J4Js= github.com/ldez/gomoddirectives v0.7.0 h1:EOx8Dd56BZYSez11LVgdj025lKwlP0/E5OLSl9HDwsY= github.com/ldez/gomoddirectives v0.7.0/go.mod h1:wR4v8MN9J8kcwvrkzrx6sC9xe9Cp68gWYCsda5xvyGc= -github.com/ldez/grignotin v0.10.0 h1:NQPeh1E/Eza4F0exCeC1WkpnLvgUcQDT8MQ1vOLML0E= -github.com/ldez/grignotin v0.10.0/go.mod h1:oR4iCKUP9fwoeO6vCQeD7M5SMxCT6xdVas4vg0h1LaI= -github.com/ldez/tagliatelle v0.7.1 h1:bTgKjjc2sQcsgPiT902+aadvMjCeMHrY7ly2XKFORIk= -github.com/ldez/tagliatelle v0.7.1/go.mod h1:3zjxUpsNB2aEZScWiZTHrAXOl1x25t3cRmzfK1mlo2I= +github.com/ldez/grignotin v0.10.1 h1:keYi9rYsgbvqAZGI1liek5c+jv9UUjbvdj3Tbn5fn4o= +github.com/ldez/grignotin v0.10.1/go.mod h1:UlDbXFCARrXbWGNGP3S5vsysNXAPhnSuBufpTEbwOas= +github.com/ldez/tagliatelle v0.7.2 h1:KuOlL70/fu9paxuxbeqlicJnCspCRjH0x8FW+NfgYUk= +github.com/ldez/tagliatelle v0.7.2/go.mod h1:PtGgm163ZplJfZMZ2sf5nhUT170rSuPgBimoyYtdaSI= github.com/ldez/usetesting v0.5.0 h1:3/QtzZObBKLy1F4F8jLuKJiKBjjVFi1IavpoWbmqLwc= github.com/ldez/usetesting v0.5.0/go.mod h1:Spnb4Qppf8JTuRgblLrEWb7IE6rDmUpGvxY3iRrzvDQ= github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= @@ -316,8 +322,8 @@ github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69 github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/macabu/inamedparam v0.2.0 h1:VyPYpOc10nkhI2qeNUdh3Zket4fcZjEWe35poddBCpE= github.com/macabu/inamedparam v0.2.0/go.mod h1:+Pee9/YfGe5LJ62pYXqB89lJ+0k5bsR8Wgz/C0Zlq3U= -github.com/manuelarte/embeddedstructfieldcheck v0.3.0 h1:VhGqK8gANDvFYDxQkjPbv7/gDJtsGU9k6qj/hC2hgso= -github.com/manuelarte/embeddedstructfieldcheck v0.3.0/go.mod h1:LSo/IQpPfx1dXMcX4ibZCYA7Yy6ayZHIaOGM70+1Wy8= +github.com/manuelarte/embeddedstructfieldcheck v0.4.0 h1:3mAIyaGRtjK6EO9E73JlXLtiy7ha80b2ZVGyacxgfww= +github.com/manuelarte/embeddedstructfieldcheck v0.4.0/go.mod h1:z8dFSyXqp+fC6NLDSljRJeNQJJDWnY7RoWFzV3PC6UM= github.com/manuelarte/funcorder v0.5.0 h1:llMuHXXbg7tD0i/LNw8vGnkDTHFpTnWqKPI85Rknc+8= github.com/manuelarte/funcorder v0.5.0/go.mod h1:Yt3CiUQthSBMBxjShjdXMexmzpP8YGvGLjrxJNkO2hA= github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= @@ -337,8 +343,8 @@ github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/mgechev/revive v1.11.0 h1:b/gLLpBE427o+Xmd8G58gSA+KtBwxWinH/A565Awh0w= -github.com/mgechev/revive v1.11.0/go.mod h1:tI0oLF/2uj+InHCBLrrqfTKfjtFTBCFFfG05auyzgdw= +github.com/mgechev/revive v1.12.0 h1:Q+/kkbbwerrVYPv9d9efaPGmAO/NsxwW/nE6ahpQaCU= +github.com/mgechev/revive v1.12.0/go.mod h1:VXsY2LsTigk8XU9BpZauVLjVrhICMOV3k1lpB3CXrp8= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -357,12 +363,12 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/nunnatsa/ginkgolinter v0.20.0 h1:OmWLkAFO2HUTYcU6mprnKud1Ey5pVdiVNYGO5HVicx8= -github.com/nunnatsa/ginkgolinter v0.20.0/go.mod h1:dCIuFlTPfQerXgGUju3VygfAFPdC5aE1mdacCDKDJcQ= +github.com/nunnatsa/ginkgolinter v0.21.0 h1:IYwuX+ajy3G1MezlMLB1BENRtFj16+Evyi4uki1NOOQ= +github.com/nunnatsa/ginkgolinter v0.21.0/go.mod h1:QlzY9UP9zaqu58FjYxhp9bnjuwXwG1bfW5rid9ChNMw= github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus= github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8= -github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y= -github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0= +github.com/onsi/gomega v1.38.0 h1:c/WX+w8SLAinvuKKQFh77WEucCnPk4j2OTUr7lt7BeY= +github.com/onsi/gomega v1.38.0/go.mod h1:OcXcwId0b9QsE7Y49u+BTrL4IdKOBOKnD6VQNTJEB6o= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= @@ -424,8 +430,8 @@ github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tM github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= github.com/sashamelentyev/usestdlibvars v1.29.0 h1:8J0MoRrw4/NAXtjQqTHrbW9NN+3iMf7Knkq057v4XOQ= github.com/sashamelentyev/usestdlibvars v1.29.0/go.mod h1:8PpnjHMk5VdeWlVb4wCdrB8PNbLqZ3wBZTZWkrpZZL8= -github.com/securego/gosec/v2 v2.22.7 h1:8/9P+oTYI4yIpAzccQKVsg1/90Po+JzGtAhqoHImDeM= -github.com/securego/gosec/v2 v2.22.7/go.mod h1:510TFNDMrIPytokyHQAVLvPeDr41Yihn2ak8P+XQfNE= +github.com/securego/gosec/v2 v2.22.8 h1:3NMpmfXO8wAVFZPNsd3EscOTa32Jyo6FLLlW53bexMI= +github.com/securego/gosec/v2 v2.22.8/go.mod h1:ZAw8K2ikuH9qDlfdV87JmNghnVfKB1XC7+TVzk6Utto= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= @@ -472,14 +478,12 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/tdakkota/asciicheck v0.4.1 h1:bm0tbcmi0jezRA2b5kg4ozmMuGAFotKI3RZfrhfovg8= -github.com/tdakkota/asciicheck v0.4.1/go.mod h1:0k7M3rCfRXb0Z6bwgvkEIMleKH3kXNz9UqJ9Xuqopr8= github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= -github.com/tetafro/godot v1.5.1 h1:PZnjCol4+FqaEzvZg5+O8IY2P3hfY9JzRBNPv1pEDS4= -github.com/tetafro/godot v1.5.1/go.mod h1:cCdPtEndkmqqrhiCfkmxDodMQJ/f3L1BCNskCUZdTwk= +github.com/tetafro/godot v1.5.4 h1:u1ww+gqpRLiIA16yF2PV1CV1n/X3zhyezbNXC3E14Sg= +github.com/tetafro/godot v1.5.4/go.mod h1:eOkMrVQurDui411nBY2FA05EYH01r14LuWY/NrVDVcU= github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 h1:9LPGD+jzxMlnk5r6+hJnar67cgpDIz/iyD+rfl5r2Vk= github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= github.com/timonwong/loggercheck v0.11.0 h1:jdaMpYBl+Uq9mWPXv1r8jc5fC3gyXx4/WGwTnnNKn4M= @@ -534,14 +538,14 @@ gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo= gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8= go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= -go-simpler.org/musttag v0.13.1 h1:lw2sJyu7S1X8lc8zWUAdH42y+afdcCnHhWpnkWvd6vU= -go-simpler.org/musttag v0.13.1/go.mod h1:8r450ehpMLQgvpb6sg+hV5Ur47eH6olp/3yEanfG97k= +go-simpler.org/musttag v0.14.0 h1:XGySZATqQYSEV3/YTy+iX+aofbZZllJaqwFWs+RTtSo= +go-simpler.org/musttag v0.14.0/go.mod h1:uP8EymctQjJ4Z1kUnjX0u2l60WfUdQxCwSNKzE1JEOE= go-simpler.org/sloglint v0.11.1 h1:xRbPepLT/MHPTCA6TS/wNfZrDzkGvCCqUv4Bdwc3H7s= go-simpler.org/sloglint v0.11.1/go.mod h1:2PowwiCOK8mjiF+0KGifVOT8ZsCNiFzvfyJeJOIt8MQ= go.augendre.info/arangolint v0.2.0 h1:2NP/XudpPmfBhQKX4rMk+zDYIj//qbt4hfZmSSTcpj8= go.augendre.info/arangolint v0.2.0/go.mod h1:Vx4KSJwu48tkE+8uxuf0cbBnAPgnt8O1KWiT7bljq7w= -go.augendre.info/fatcontext v0.8.0 h1:2dfk6CQbDGeu1YocF59Za5Pia7ULeAM6friJ3LP7lmk= -go.augendre.info/fatcontext v0.8.0/go.mod h1:oVJfMgwngMsHO+KB2MdgzcO+RvtNdiCEOlWvSFtax/s= +go.augendre.info/fatcontext v0.8.1 h1:/T4+cCjpL9g71gJpcFAgVo/K5VFpqlN+NPU7QXxD5+A= +go.augendre.info/fatcontext v0.8.1/go.mod h1:r3Qz4ZOzex66wfyyj5VZ1xUcl81vzvHQ6/GWzzlMEwA= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 h1:QQiUXlqz+d96jyNG71NE+IGTgOK6Xlhdx+PzvfbLHlQ= @@ -580,8 +584,8 @@ golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0 golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b h1:KdrhdYPDUvJTvrDK9gdjfFd6JTk8vA1WJoldYSi0kHo= -golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b/go.mod h1:LKZHyeOpPuZcMgxeHjJp4p5yvxrCX1xDvH10zYHhjjQ= +golang.org/x/exp/typeparams v0.0.0-20250911091902-df9299821621 h1:Yl4H5w2RV7L/dvSHp2GerziT5K2CORgFINPaMFxWGWw= +golang.org/x/exp/typeparams v0.0.0-20250911091902-df9299821621/go.mod h1:4Mzdyp/6jzw9auFDJ3OMF5qksa7UvPnzKqTVGcb04ms= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -591,8 +595,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= +golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U= +golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -613,8 +617,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -657,6 +661,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053 h1:dHQOQddU4YHS5gY33/6klKjq7Gp3WwMyOXGNp5nzRj8= +golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053/go.mod h1:+nZKN+XVh4LCiA9DV3ywrzN4gumyCnKjau3NGb9SGoE= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -688,24 +694,20 @@ golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= -golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE= +golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= @@ -744,7 +746,7 @@ honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -mvdan.cc/gofumpt v0.8.0 h1:nZUCeC2ViFaerTcYKstMmfysj6uhQrA2vJe+2vwGU6k= -mvdan.cc/gofumpt v0.8.0/go.mod h1:vEYnSzyGPmjvFkqJWtXkh79UwPWP9/HMxQdGEXZHjpg= +mvdan.cc/gofumpt v0.9.1 h1:p5YT2NfFWsYyTieYgwcQ8aKV3xRvFH4uuN/zB2gBbMQ= +mvdan.cc/gofumpt v0.9.1/go.mod h1:3xYtNemnKiXaTh6R4VtlqDATFwBbdXI8lJvH/4qk7mw= mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 h1:WjUu4yQoT5BHT1w8Zu56SP8367OuBV5jvo+4Ulppyf8= mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4/go.mod h1:rthT7OuvRbaGcd5ginj6dA2oLE7YNlta9qhBNNdCaLE= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 8f0258db4c12..2d30717729df 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -15,7 +15,7 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.10 // indirect - golang.org/x/net v0.43.0 // indirect + golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index ef80fc2d6db3..780957695829 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1337,8 +1337,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From fa3ea64972ecab53405061f54d396704b1afe54f Mon Sep 17 00:00:00 2001 From: asttool Date: Fri, 26 Sep 2025 16:15:32 +0800 Subject: [PATCH 0542/1068] refactor: use WaitGroup.Go to simplify code Signed-off-by: asttool --- contrib/raftexample/raftexample_test.go | 6 ++---- tools/benchmark/cmd/lease.go | 6 ++---- tools/benchmark/cmd/watch_latency.go | 6 ++---- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/contrib/raftexample/raftexample_test.go b/contrib/raftexample/raftexample_test.go index cda01204a188..ceeba379179e 100644 --- a/contrib/raftexample/raftexample_test.go +++ b/contrib/raftexample/raftexample_test.go @@ -155,14 +155,12 @@ func TestCloseProposerInflight(t *testing.T) { defer clus.closeNoErrors(t) var wg sync.WaitGroup - wg.Add(1) // some inflight ops - go func() { - defer wg.Done() + wg.Go(func() { clus.proposeC[0] <- "foo" clus.proposeC[0] <- "bar" - }() + }) // wait for one message if c, ok := <-clus.commitC[0]; !ok || c.data[0] != "foo" { diff --git a/tools/benchmark/cmd/lease.go b/tools/benchmark/cmd/lease.go index 941c98828cec..6eb26bff1e74 100644 --- a/tools/benchmark/cmd/lease.go +++ b/tools/benchmark/cmd/lease.go @@ -65,14 +65,12 @@ func leaseKeepaliveFunc(cmd *cobra.Command, _ []string) { }(clients[i]) } - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { for i := 0; i < leaseKeepaliveTotal; i++ { requests <- struct{}{} } close(requests) - }() + }) rc := r.Run() wg.Wait() diff --git a/tools/benchmark/cmd/watch_latency.go b/tools/benchmark/cmd/watch_latency.go index 28e9aa15b27e..59fa689b4148 100644 --- a/tools/benchmark/cmd/watch_latency.go +++ b/tools/benchmark/cmd/watch_latency.go @@ -76,9 +76,7 @@ func watchLatencyFunc(cmd *cobra.Command, _ []string) { for i, wch := range wchs { eventTimes[i] = make([]time.Time, watchLPutTotal) - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { eventCount := 0 for eventCount < watchLPutTotal { resp := <-wch @@ -88,7 +86,7 @@ func watchLatencyFunc(cmd *cobra.Command, _ []string) { bar.Increment() } } - }() + }) } putReport := newReport(cmd.Name() + "-put") From 5d48dbb7fa6175f246526134238d97d4d32ca36c Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Fri, 19 Sep 2025 15:05:41 +0000 Subject: [PATCH 0543/1068] cache: refactor demux to maintain min/max revision range Signed-off-by: Peter Chang --- cache/cache.go | 39 ++++---- cache/cache_test.go | 27 +++-- cache/demux.go | 72 ++++++++++---- cache/demux_test.go | 207 +++++++++++++++++++++++++++++++++++++++ cache/ringbuffer.go | 6 +- cache/ringbuffer_test.go | 54 ++++++++++ 6 files changed, 351 insertions(+), 54 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index 31402345acb8..1f3e0c654635 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -23,7 +23,6 @@ import ( "time" pb "go.etcd.io/etcd/api/v3/etcdserverpb" - "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" ) @@ -254,16 +253,7 @@ func (c *Cache) watch(rev int64) error { close(applyErr) }() - watchCh := c.watcher.Watch( - c.internalCtx, - c.prefix, - clientv3.WithPrefix(), - clientv3.WithRev(rev), - clientv3.WithProgressNotify(), - clientv3.WithCreatedNotify(), - ) - - err := c.watchEvents(watchCh, applyErr, &readyOnce) + err := c.watchEvents(rev, applyErr, &readyOnce) c.demux.Unregister(storeW) if err != nil { @@ -294,7 +284,15 @@ func (c *Cache) applyStorage(storeW *watcher) error { } } -func (c *Cache) watchEvents(watchCh clientv3.WatchChan, applyErr <-chan error, readyOnce *sync.Once) error { +func (c *Cache) watchEvents(rev int64, applyErr <-chan error, readyOnce *sync.Once) error { + watchCh := c.watcher.Watch( + c.internalCtx, + c.prefix, + clientv3.WithPrefix(), + clientv3.WithRev(rev), + clientv3.WithProgressNotify(), + clientv3.WithCreatedNotify(), + ) for { select { case <-c.internalCtx.Done(): @@ -303,20 +301,21 @@ func (c *Cache) watchEvents(watchCh clientv3.WatchChan, applyErr <-chan error, r if !ok { return nil } - readyOnce.Do(func() { c.ready.Set() }) + readyOnce.Do(func() { + c.demux.Init(rev) + c.ready.Set() + }) if err := resp.Err(); err != nil { c.ready.Reset() - if errors.Is(err, rpctypes.ErrCompacted) || resp.CompactRevision > 0 { - c.demux.Compact(resp.CompactRevision) - } else { - c.demux.Purge() - } return err } - c.demux.Broadcast(resp) + err := c.demux.Broadcast(resp) + if err != nil { + c.ready.Reset() + return err + } case err := <-applyErr: c.ready.Reset() - c.demux.Purge() return err } } diff --git a/cache/cache_test.go b/cache/cache_test.go index 2724230871ab..1d8851754a2f 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -440,7 +440,6 @@ func TestCacheCompactionResync(t *testing.T) { mw.errorCompacted(10) waitUntil(t, time.Second, 10*time.Millisecond, func() bool { return !cache.Ready() }) - start := time.Now() ctxGet, cancelGet := context.WithTimeout(t.Context(), 100*time.Millisecond) defer cancelGet() @@ -457,26 +456,18 @@ func TestCacheCompactionResync(t *testing.T) { t.Log("Phase 3: resync after compaction") mw.triggerCreatedNotify() - if err = cache.WaitReady(t.Context()); err != nil { - t.Fatalf("second WaitReady: %v", err) - } - elapsed := time.Since(start) - if elapsed > time.Second { - t.Fatalf("cache was unready for %v; want: < 1 s", elapsed) + expectSnapshotRev := int64(20) + ctxResync, cancelResync := context.WithTimeout(t.Context(), time.Second) + defer cancelResync() + if err = cache.WaitForRevision(ctxResync, expectSnapshotRev); err != nil { + t.Fatalf("cache failed to resync to rev=%d within 1s: %v", expectSnapshotRev, err) } - expectSnapshotRev := int64(20) expectedWatchStart := secondSnapshot.Header.Revision + 1 - if gotWatchStart := mw.lastStartRev; gotWatchStart != expectedWatchStart { + if gotWatchStart := mw.getLastStartRev(); gotWatchStart != expectedWatchStart { t.Errorf("Watch started at rev=%d; want %d", gotWatchStart, expectedWatchStart) } - ctx, cancel := context.WithTimeout(t.Context(), time.Second) - defer cancel() - if err = cache.WaitForRevision(ctx, expectSnapshotRev); err != nil { - t.Fatalf("cache never reached rev=%d: %v", expectSnapshotRev, err) - } - gotSnapshot, err := cache.Get(t.Context(), "foo", clientv3.WithSerializable()) if err != nil { t.Fatalf("Get after resync: %v", err) @@ -560,6 +551,12 @@ func (m *mockWatcher) recordStartRev(rev int64) { m.lastStartRev = rev } +func (m *mockWatcher) getLastStartRev() int64 { + m.mu.Lock() + defer m.mu.Unlock() + return m.lastStartRev +} + func (m *mockWatcher) signalRegistration() { select { case <-m.registered: diff --git a/cache/demux.go b/cache/demux.go index 2687541a6413..56d6f3cf544c 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -27,8 +27,12 @@ type demux struct { // activeWatchers & laggingWatchers hold the first revision the watcher still needs (nextRev). activeWatchers map[*watcher]int64 laggingWatchers map[*watcher]int64 - history ringBuffer[[]*clientv3.Event] resyncInterval time.Duration + // Range of revisions maintained for demux operations, inclusive. Broader than history as event revision is not contious. + // maxRev tracks highest seen revision; minRev sets watcher compaction threshold (updated to evictedRev+1 on history overflow) + minRev, maxRev int64 + // History stores events within [minRev, maxRev]. + history ringBuffer[[]*clientv3.Event] } func NewDemux(ctx context.Context, wg *sync.WaitGroup, historyWindowSize int, resyncInterval time.Duration) *demux { @@ -70,8 +74,7 @@ func (d *demux) Register(w *watcher, startingRev int64) { d.mu.Lock() defer d.mu.Unlock() - latestRev := d.history.PeekLatest() - if latestRev == 0 { + if d.maxRev == 0 { if startingRev == 0 { d.activeWatchers[w] = 0 } else { @@ -82,10 +85,10 @@ func (d *demux) Register(w *watcher, startingRev int64) { // Special case: 0 means “newest”. if startingRev == 0 { - startingRev = latestRev + 1 + startingRev = d.maxRev + 1 } - if startingRev <= latestRev { + if startingRev <= d.maxRev { d.laggingWatchers[w] = startingRev } else { d.activeWatchers[w] = startingRev @@ -102,16 +105,44 @@ func (d *demux) Unregister(w *watcher) { w.Stop() } -func (d *demux) Broadcast(resp clientv3.WatchResponse) { +func (d *demux) Init(minRev int64) { + d.mu.Lock() + defer d.mu.Unlock() + if d.minRev == 0 { + // Watch started for empty demux + d.minRev = minRev + return + } + if d.maxRev == 0 { + // Watch started on initialized demux that never got any event. + d.purge() + d.minRev = minRev + return + } + if minRev == d.maxRev+1 { + // Watch continuing from last revision it observed. + return + } + // Watch opened on revision mismatching dmux last observed revision. + d.purge() + d.minRev = minRev +} + +func (d *demux) Broadcast(resp clientv3.WatchResponse) error { events := resp.Events if len(events) == 0 { - return + return nil } d.mu.Lock() defer d.mu.Unlock() + err := validateRevisions(events, d.maxRev) + if err != nil { + return err + } d.updateStoreLocked(events) d.broadcastLocked(events) + return nil } func (d *demux) updateStoreLocked(events []*clientv3.Event) { @@ -119,14 +150,21 @@ func (d *demux) updateStoreLocked(events []*clientv3.Event) { for end := 1; end < len(events); end++ { if events[end].Kv.ModRevision != events[batchStart].Kv.ModRevision { if end > batchStart { + if end+1 == len(events) && d.history.full() { + d.minRev = d.history.PeekOldest() + 1 + } d.history.Append(events[batchStart:end]) } batchStart = end } } if batchStart < len(events) { + if d.history.full() { + d.minRev = d.history.PeekOldest() + 1 + } d.history.Append(events[batchStart:]) } + d.maxRev = events[len(events)-1].Kv.ModRevision } func (d *demux) broadcastLocked(events []*clientv3.Event) { @@ -163,6 +201,12 @@ func (d *demux) broadcastLocked(events []*clientv3.Event) { func (d *demux) Purge() { d.mu.Lock() defer d.mu.Unlock() + d.purge() +} + +func (d *demux) purge() { + d.maxRev = 0 + d.minRev = 0 d.history.RebaseHistory() for w := range d.activeWatchers { w.Stop() @@ -179,27 +223,19 @@ func (d *demux) Purge() { func (d *demux) Compact(compactRev int64) { d.mu.Lock() defer d.mu.Unlock() - d.history.RebaseHistory() - - for w, next := range d.activeWatchers { - if next != 0 && next <= compactRev { - delete(d.activeWatchers, w) - d.laggingWatchers[w] = next - } - } + d.purge() } func (d *demux) resyncLaggingWatchers() { d.mu.Lock() defer d.mu.Unlock() - oldestRev := d.history.PeekOldest() - if oldestRev == 0 { + if d.minRev == 0 { return } for w, nextRev := range d.laggingWatchers { - if nextRev < oldestRev { + if nextRev < d.minRev { w.Compact(nextRev) delete(d.laggingWatchers, w) continue diff --git a/cache/demux_test.go b/cache/demux_test.go index ac94845d63cb..cd6e70e85e0c 100644 --- a/cache/demux_test.go +++ b/cache/demux_test.go @@ -24,6 +24,213 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" ) +func TestInit(t *testing.T) { + type want struct { + min int64 + max int64 + historyRevs []int64 + } + tests := []struct { + name string + capacity int + initRev int64 + eventRevs []int64 + shouldReinit bool + reinitRev int64 + want want + }{ + { + name: "first init sets only min", + capacity: 8, + initRev: 5, + eventRevs: nil, + shouldReinit: false, + want: want{min: 5, max: 0, historyRevs: nil}, + }, + { + name: "init on empty demux with events", + capacity: 8, + initRev: 5, + eventRevs: []int64{7, 9, 13}, + shouldReinit: false, + want: want{min: 5, max: 13, historyRevs: []int64{7, 9, 13}}, + }, + { + name: "continuation at max+1 preserves range and history", + capacity: 8, + initRev: 10, + eventRevs: []int64{13, 15, 21}, + shouldReinit: true, + reinitRev: 22, + want: want{min: 10, max: 21, historyRevs: []int64{13, 15, 21}}, + }, + { + name: "gap from max triggers purge and clears history", + capacity: 8, + initRev: 10, + eventRevs: []int64{13, 15, 21}, + shouldReinit: true, + reinitRev: 30, + want: want{min: 30, max: 0, historyRevs: nil}, + }, + { + name: "idempotent reinit at same revision clears history", + capacity: 8, + initRev: 7, + eventRevs: []int64{8, 9, 10}, + shouldReinit: true, + reinitRev: 7, + want: want{min: 7, max: 0, historyRevs: nil}, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + d := newDemux(tt.capacity, 10*time.Millisecond) + + d.Init(tt.initRev) + + if len(tt.eventRevs) > 0 { + if err := d.Broadcast(respWithEventRevs(tt.eventRevs...)); err != nil { + t.Fatalf("Broadcast(%v) failed: %v", tt.eventRevs, err) + } + } + + if tt.shouldReinit { + d.Init(tt.reinitRev) + } + + if d.minRev != tt.want.min || d.maxRev != tt.want.max { + t.Fatalf("revision range: got(min=%d, max=%d), want(min=%d, max=%d)", + d.minRev, d.maxRev, tt.want.min, tt.want.max) + } + + var actualHistoryRevs []int64 + d.history.AscendGreaterOrEqual(0, func(rev int64, events []*clientv3.Event) bool { + actualHistoryRevs = append(actualHistoryRevs, rev) + return true + }) + + if diff := cmp.Diff(tt.want.historyRevs, actualHistoryRevs); diff != "" { + t.Fatalf("history validation failed (-want +got):\n%s", diff) + } + }) + } +} + +func TestBroadcast(t *testing.T) { + type want struct { + min int64 + max int64 + shouldError bool + } + + tests := []struct { + name string + capacity int + initRev int64 + initialRevs []int64 + followupRevs []int64 + want want + }{ + { + name: "history not full", + capacity: 2, + initRev: 1, + initialRevs: []int64{2}, + want: want{min: 1, max: 2, shouldError: false}, + }, + { + name: "history at exact capacity", + capacity: 2, + initRev: 1, + initialRevs: []int64{2, 3}, + want: want{min: 1, max: 3, shouldError: false}, + }, + { + name: "history overflow with eviction", + capacity: 2, + initRev: 1, + initialRevs: []int64{2, 3, 4}, + want: want{min: 3, max: 4, shouldError: false}, + }, + { + name: "history overflow not continuous", + capacity: 2, + initRev: 2, + initialRevs: []int64{4, 8, 16}, + want: want{min: 5, max: 16, shouldError: false}, + }, + { + name: "empty broadcast is no-op", + capacity: 8, + initRev: 10, + initialRevs: []int64{}, + want: want{min: 10, max: 0, shouldError: false}, + }, + { + name: "revisions below maxRev are rejected", + capacity: 8, + initRev: 4, + initialRevs: []int64{5, 6}, + followupRevs: []int64{4}, + want: want{shouldError: true}, + }, + { + name: "revisions equal to maxRev are rejected", + capacity: 8, + initRev: 4, + initialRevs: []int64{5, 6}, + followupRevs: []int64{6}, + want: want{shouldError: true}, + }, + { + name: "revisions above maxRev are accepted", + capacity: 8, + initRev: 4, + initialRevs: []int64{5, 6}, + followupRevs: []int64{9, 14, 17}, + want: want{min: 4, max: 17, shouldError: false}, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + d := newDemux(tt.capacity, 10*time.Millisecond) + d.Init(tt.initRev) + + if len(tt.initialRevs) > 0 { + if err := d.Broadcast(respWithEventRevs(tt.initialRevs...)); err != nil { + t.Fatalf("unexpected error broadcasting initial revisions %v: %v", tt.initialRevs, err) + } + } + + if len(tt.followupRevs) > 0 { + err := d.Broadcast(respWithEventRevs(tt.followupRevs...)) + + if tt.want.shouldError { + if err == nil { + t.Errorf("expected error for revisions %v after maxRev %d; got nil", + tt.followupRevs, tt.initialRevs[len(tt.initialRevs)-1]) + } + return + } + if err != nil { + t.Errorf("unexpected error for valid revisions %v: %v", tt.followupRevs, err) + return + } + } + + if d.minRev != tt.want.min || d.maxRev != tt.want.max { + t.Fatalf("revision range: got(min=%d, max=%d), want(min=%d, max=%d)", + d.minRev, d.maxRev, tt.want.min, tt.want.max) + } + }) + } +} + func TestBroadcastBatching(t *testing.T) { tests := []struct { name string diff --git a/cache/ringbuffer.go b/cache/ringbuffer.go index 18be79c18368..b1a9da416e79 100644 --- a/cache/ringbuffer.go +++ b/cache/ringbuffer.go @@ -42,7 +42,7 @@ func newRingBuffer[T any](capacity int, revisionOf RevisionOf[T]) *ringBuffer[T] func (r *ringBuffer[T]) Append(item T) { entry := entry[T]{revision: r.revisionOf(item), item: item} - if r.size == len(r.buffer) { + if r.full() { r.tail = (r.tail + 1) % len(r.buffer) } else { r.size++ @@ -51,6 +51,10 @@ func (r *ringBuffer[T]) Append(item T) { r.head = (r.head + 1) % len(r.buffer) } +func (r *ringBuffer[T]) full() bool { + return r.size == len(r.buffer) +} + // AscendGreaterOrEqual iterates through entries in ascending order starting from the first entry with revision >= pivot. // TODO: use binary search on the ring buffer to locate the first entry >= nextRev instead of a full scan func (r *ringBuffer[T]) AscendGreaterOrEqual(pivot int64, iter IterFunc[T]) { diff --git a/cache/ringbuffer_test.go b/cache/ringbuffer_test.go index d030ea517c35..20b58471234c 100644 --- a/cache/ringbuffer_test.go +++ b/cache/ringbuffer_test.go @@ -484,6 +484,60 @@ func TestRebaseHistory(t *testing.T) { } } +func TestFull(t *testing.T) { + tests := []struct { + name string + capacity int + numAppends int + expectedFull bool + }{ + { + name: "empty_buffer", + capacity: 3, + numAppends: 0, + expectedFull: false, + }, + { + name: "partially_filled", + capacity: 5, + numAppends: 3, + expectedFull: false, + }, + { + name: "exactly_at_capacity", + capacity: 3, + numAppends: 3, + expectedFull: true, + }, + { + name: "beyond_capacity_wrapping", + capacity: 3, + numAppends: 5, + expectedFull: true, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + rb := newRingBuffer(tt.capacity, func(batch []*clientv3.Event) int64 { return batch[0].Kv.ModRevision }) + + for i := 1; i <= tt.numAppends; i++ { + batch, err := makeEventBatch(int64(i), "k", 1) + if err != nil { + t.Fatalf("makeEventBatch(%d, k, 1) failed: %v", i, err) + } + rb.Append(batch) + } + + if got := rb.full(); got != tt.expectedFull { + t.Fatalf("full()=%t, want=%t (capacity=%d, appends=%d)", + got, tt.expectedFull, tt.capacity, tt.numAppends) + } + }) + } +} + func setupRingBuffer(t *testing.T, capacity int, revs []int64) *ringBuffer[[]*clientv3.Event] { rb := newRingBuffer(capacity, func(batch []*clientv3.Event) int64 { return batch[0].Kv.ModRevision }) for _, r := range revs { From bfe0e0ea3ede10283ea347993d39a4c2252e9dfc Mon Sep 17 00:00:00 2001 From: Marcus Hodgson Date: Wed, 24 Sep 2025 16:01:00 -0400 Subject: [PATCH 0544/1068] workflows: add the antithesis debugger as a github action Signed-off-by: Marcus Hodgson --- .github/workflows/antithesis.debugger.yml | 44 +++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .github/workflows/antithesis.debugger.yml diff --git a/.github/workflows/antithesis.debugger.yml b/.github/workflows/antithesis.debugger.yml new file mode 100644 index 000000000000..07ec7299831a --- /dev/null +++ b/.github/workflows/antithesis.debugger.yml @@ -0,0 +1,44 @@ +--- +name: Trigger Antithesis debugger + +on: + workflow_dispatch: + inputs: + session_id: + description: "The session_id of a test. Found at the bottom of a report." + required: true + type: string + input_hash: + description: "The input hash of a moment." + required: true + type: string + vtime: + description: "The vtime of a moment." + required: true + type: string + email: + description: 'Email notification recipient(s) (separate with ;)' + required: false + type: string + +# Declare default permissions as read only. +permissions: read-all + +jobs: + trigger-debugger: + runs-on: ubuntu-latest + environment: Antithesis + steps: + - name: Trigger Antithesis Debugger + uses: antithesishq/antithesis-trigger-action@6c0a27302c0a3cd97d87d40bd6704e673abed4bb # v0.9 + with: + notebook_name: debugging + tenant: linuxfoundation + username: ${{ secrets.ANTITHESIS_WEBHOOK_USERNAME }} + password: ${{ secrets.ANTITHESIS_WEBHOOK_PASSWORD }} + github_token: ${{ secrets.GH_PAT }} + email_recipients: ${{ inputs.email || 'siarkowicz@google.com' }} + additional_parameters: |- + antithesis.debugging.session_id = ${{ inputs.session_id }} + antithesis.debugging.input_hash = ${{ inputs.input_hash }} + antithesis.debugging.vtime = ${{ inputs.vtime }} From 0ebeb1790afcb247d95b2b4db144a86eadd0e22e Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Tue, 23 Sep 2025 10:14:19 +0200 Subject: [PATCH 0545/1068] Fix an error discovered by etcd-pull-verify Signed-off-by: Chun-Hung Tseng --- tests/integration/clientv3/lease/lease_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/clientv3/lease/lease_test.go b/tests/integration/clientv3/lease/lease_test.go index af07c8b1a8f5..9ee6694018e7 100644 --- a/tests/integration/clientv3/lease/lease_test.go +++ b/tests/integration/clientv3/lease/lease_test.go @@ -573,7 +573,7 @@ func TestLeaseTimeToLiveLeaseNotFound(t *testing.T) { require.NotNilf(t, lresp, "expected lresp not to be nil") require.NotNilf(t, lresp.ResponseHeader, "expected ResponseHeader not to be nil") require.Equalf(t, lresp.ID, resp.ID, "expected Lease ID %v, but got %v", resp.ID, lresp.ID) - require.Equalf(t, lresp.TTL, int64(-1), "expected TTL %v, but got %v", lresp.TTL, lresp.TTL) + require.Equalf(t, int64(-1), lresp.TTL, "expected TTL %v, but got %v", int64(-1), lresp.TTL) } func TestLeaseLeases(t *testing.T) { From 42fb7671149a0b1801abdf98d87fdc2d0c444bd8 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 21 Sep 2025 13:17:48 +0200 Subject: [PATCH 0546/1068] Collect all watch tests in single directory Signed-off-by: Marek Siarkowicz --- .../watch}/v3_watch_restore_test.go | 2 +- .../{ => clientv3/watch}/v3_watch_test.go | 2 +- .../{ => watch}/watch_fragment_test.go | 2 +- .../clientv3/{ => watch}/watch_test.go | 21 +++++++++++++++++-- 4 files changed, 22 insertions(+), 5 deletions(-) rename tests/integration/{ => clientv3/watch}/v3_watch_restore_test.go (99%) rename tests/integration/{ => clientv3/watch}/v3_watch_test.go (99%) rename tests/integration/clientv3/{ => watch}/watch_fragment_test.go (99%) rename tests/integration/clientv3/{ => watch}/watch_test.go (98%) diff --git a/tests/integration/v3_watch_restore_test.go b/tests/integration/clientv3/watch/v3_watch_restore_test.go similarity index 99% rename from tests/integration/v3_watch_restore_test.go rename to tests/integration/clientv3/watch/v3_watch_restore_test.go index 7ce49c0001f7..618c6b0ab8ac 100644 --- a/tests/integration/v3_watch_restore_test.go +++ b/tests/integration/clientv3/watch/v3_watch_restore_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package integration +package watch import ( "context" diff --git a/tests/integration/v3_watch_test.go b/tests/integration/clientv3/watch/v3_watch_test.go similarity index 99% rename from tests/integration/v3_watch_test.go rename to tests/integration/clientv3/watch/v3_watch_test.go index 362b08dcc543..79dc38ca5a9f 100644 --- a/tests/integration/v3_watch_test.go +++ b/tests/integration/clientv3/watch/v3_watch_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package integration +package watch import ( "bytes" diff --git a/tests/integration/clientv3/watch_fragment_test.go b/tests/integration/clientv3/watch/watch_fragment_test.go similarity index 99% rename from tests/integration/clientv3/watch_fragment_test.go rename to tests/integration/clientv3/watch/watch_fragment_test.go index 05b20bd0ab5e..f284c6ee2125 100644 --- a/tests/integration/clientv3/watch_fragment_test.go +++ b/tests/integration/clientv3/watch/watch_fragment_test.go @@ -14,7 +14,7 @@ //go:build !cluster_proxy -package clientv3test +package watch import ( "fmt" diff --git a/tests/integration/clientv3/watch_test.go b/tests/integration/clientv3/watch/watch_test.go similarity index 98% rename from tests/integration/clientv3/watch_test.go rename to tests/integration/clientv3/watch/watch_test.go index 1e35f5dc305f..4a077eef924f 100644 --- a/tests/integration/clientv3/watch_test.go +++ b/tests/integration/clientv3/watch/watch_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package clientv3test +package watch import ( "context" @@ -27,7 +27,9 @@ import ( "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" mvccpb "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" @@ -499,7 +501,7 @@ func TestWatchCompactRevision(t *testing.T) { } } -func TestWatchWithProgressNotify(t *testing.T) { testWatchWithProgressNotify(t, true) } +func TestWatchWithProgressNotify2(t *testing.T) { testWatchWithProgressNotify(t, true) } func TestWatchWithProgressNotifyNoEvent(t *testing.T) { testWatchWithProgressNotify(t, false) } func testWatchWithProgressNotify(t *testing.T, watchOnPut bool) { @@ -741,6 +743,21 @@ func TestWatchErrConnClosed(t *testing.T) { } } +func IsCanceled(err error) bool { + if err == nil { + return false + } + if errors.Is(err, context.Canceled) { + return true + } + ev, ok := status.FromError(err) + if !ok { + return false + } + code := ev.Code() + return code == codes.Canceled +} + func TestWatchAfterClose(t *testing.T) { integration2.BeforeTest(t) From 8cee78f7bf8d9bdf477ca8c339099e75aba9f52b Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Wed, 24 Sep 2025 18:36:17 +0000 Subject: [PATCH 0547/1068] cache: clean up error assertions in TestBroadcast Signed-off-by: Peter Chang --- cache/demux_test.go | 12 +++--------- cache/go.mod | 4 ++++ cache/go.sum | 8 ++++++++ 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/cache/demux_test.go b/cache/demux_test.go index cd6e70e85e0c..9d200bf59f9b 100644 --- a/cache/demux_test.go +++ b/cache/demux_test.go @@ -19,6 +19,7 @@ import ( "time" "github.com/google/go-cmp/cmp" + "github.com/stretchr/testify/require" "go.etcd.io/etcd/api/v3/mvccpb" clientv3 "go.etcd.io/etcd/client/v3" @@ -209,18 +210,11 @@ func TestBroadcast(t *testing.T) { if len(tt.followupRevs) > 0 { err := d.Broadcast(respWithEventRevs(tt.followupRevs...)) - if tt.want.shouldError { - if err == nil { - t.Errorf("expected error for revisions %v after maxRev %d; got nil", - tt.followupRevs, tt.initialRevs[len(tt.initialRevs)-1]) - } - return - } - if err != nil { - t.Errorf("unexpected error for valid revisions %v: %v", tt.followupRevs, err) + require.Error(t, err) return } + require.NoError(t, err) } if d.minRev != tt.want.min || d.maxRev != tt.want.max { diff --git a/cache/go.mod b/cache/go.mod index 42b8b4fc231b..083d3327be02 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -7,6 +7,7 @@ toolchain go1.25.1 require ( github.com/google/btree v1.1.3 github.com/google/go-cmp v0.7.0 + github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 ) @@ -14,9 +15,11 @@ require ( require ( github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect @@ -27,6 +30,7 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/grpc v1.75.1 // indirect google.golang.org/protobuf v1.36.8 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) replace ( diff --git a/cache/go.sum b/cache/go.sum index 9eafa8889ac5..749e0263bf48 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -30,6 +30,10 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnV github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= @@ -42,6 +46,8 @@ github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9Z github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -108,5 +114,7 @@ google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 7611d939b83051759f53173f81c354723ab04b9e Mon Sep 17 00:00:00 2001 From: Kota Date: Tue, 23 Sep 2025 17:28:11 +0900 Subject: [PATCH 0548/1068] tests: enhance consistency verification in hashkv tests by using eventually assertion Signed-off-by: Kota --- tests/common/hashkv_test.go | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/tests/common/hashkv_test.go b/tests/common/hashkv_test.go index 0c0595cdfe57..56229b4fdf9d 100644 --- a/tests/common/hashkv_test.go +++ b/tests/common/hashkv_test.go @@ -234,15 +234,27 @@ func verifyConsistentHashKVAcrossAllMembers(t *testing.T, cc intf.Client, hashKV ctx := t.Context() t.Logf("HashKV on rev=%d", hashKVOnRev) - resp, err := cc.HashKV(ctx, hashKVOnRev) - require.NoError(t, err) - // Ensure that there are multiple members in the cluster. - require.Greater(t, len(resp), 1) - require.NotEqual(t, 0, resp[0].Hash) - t.Logf("One Hash value is %d", resp[0].Hash) + assert.Eventually(t, func() bool { + resp, err := cc.HashKV(ctx, hashKVOnRev) + if err != nil { + t.Logf("HashKV failed: %v", err) + return false + } - for i := 1; i < len(resp); i++ { - assert.Equal(t, resp[0].Hash, resp[i].Hash) - } + // Ensure that there are multiple members in the cluster. + if len(resp) <= 1 { + t.Logf("Expected multiple members, got %d", len(resp)) + return false + } + + // Check if all members have the same hash + for i := 1; i < len(resp); i++ { + if resp[i].Hash != resp[0].Hash { + t.Logf("There is a chance that the physical compaction is not yet completed on the followers: Leader hash=%d, Follower hash=%d", resp[0].Hash, resp[i].Hash) + return false + } + } + return true + }, 3*time.Second, 100*time.Millisecond) } From a40a41a288d5d9293599562a8e6ac0539ebd9f8f Mon Sep 17 00:00:00 2001 From: dongjiang Date: Thu, 18 Sep 2025 10:34:20 +0800 Subject: [PATCH 0549/1068] Update ca-csr.json Signed-off-by: dongjiang --- hack/tls-setup/config/ca-csr.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hack/tls-setup/config/ca-csr.json b/hack/tls-setup/config/ca-csr.json index 78b95159942f..7a0686fda7c3 100644 --- a/hack/tls-setup/config/ca-csr.json +++ b/hack/tls-setup/config/ca-csr.json @@ -12,5 +12,8 @@ "ST": "California", "C": "US" } - ] + ], + "ca": { + "expiry": "876000h" + } } From 2499f94b9d459a6912b7119241c14f092e03783c Mon Sep 17 00:00:00 2001 From: letreturn Date: Fri, 26 Sep 2025 19:44:55 +0800 Subject: [PATCH 0550/1068] chore: fix inconsistent function name in comment Signed-off-by: letreturn --- Documentation/dev-guide/apispec/swagger/rpc.swagger.json | 2 +- api/etcdserverpb/rpc.pb.go | 4 ++-- api/etcdserverpb/rpc.proto | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/dev-guide/apispec/swagger/rpc.swagger.json b/Documentation/dev-guide/apispec/swagger/rpc.swagger.json index 34fc55dff23f..44ac1ee8bb98 100644 --- a/Documentation/dev-guide/apispec/swagger/rpc.swagger.json +++ b/Documentation/dev-guide/apispec/swagger/rpc.swagger.json @@ -495,7 +495,7 @@ }, "/v3/auth/user/grant": { "post": { - "summary": "UserGrant grants a role to a specified user.", + "summary": "UserGrantRole grants a role to a specified user.", "operationId": "Auth_UserGrantRole", "responses": { "200": { diff --git a/api/etcdserverpb/rpc.pb.go b/api/etcdserverpb/rpc.pb.go index 42bf641db6b5..eb12da698dfe 100644 --- a/api/etcdserverpb/rpc.pb.go +++ b/api/etcdserverpb/rpc.pb.go @@ -7869,7 +7869,7 @@ type AuthClient interface { UserDelete(ctx context.Context, in *AuthUserDeleteRequest, opts ...grpc.CallOption) (*AuthUserDeleteResponse, error) // UserChangePassword changes the password of a specified user. UserChangePassword(ctx context.Context, in *AuthUserChangePasswordRequest, opts ...grpc.CallOption) (*AuthUserChangePasswordResponse, error) - // UserGrant grants a role to a specified user. + // UserGrantRole grants a role to a specified user. UserGrantRole(ctx context.Context, in *AuthUserGrantRoleRequest, opts ...grpc.CallOption) (*AuthUserGrantRoleResponse, error) // UserRevokeRole revokes a role of specified user. UserRevokeRole(ctx context.Context, in *AuthUserRevokeRoleRequest, opts ...grpc.CallOption) (*AuthUserRevokeRoleResponse, error) @@ -8068,7 +8068,7 @@ type AuthServer interface { UserDelete(context.Context, *AuthUserDeleteRequest) (*AuthUserDeleteResponse, error) // UserChangePassword changes the password of a specified user. UserChangePassword(context.Context, *AuthUserChangePasswordRequest) (*AuthUserChangePasswordResponse, error) - // UserGrant grants a role to a specified user. + // UserGrantRole grants a role to a specified user. UserGrantRole(context.Context, *AuthUserGrantRoleRequest) (*AuthUserGrantRoleResponse, error) // UserRevokeRole revokes a role of specified user. UserRevokeRole(context.Context, *AuthUserRevokeRoleRequest) (*AuthUserRevokeRoleResponse, error) diff --git a/api/etcdserverpb/rpc.proto b/api/etcdserverpb/rpc.proto index 983dc01725f4..c9710b8dfa86 100644 --- a/api/etcdserverpb/rpc.proto +++ b/api/etcdserverpb/rpc.proto @@ -345,7 +345,7 @@ service Auth { }; } - // UserGrant grants a role to a specified user. + // UserGrantRole grants a role to a specified user. rpc UserGrantRole(AuthUserGrantRoleRequest) returns (AuthUserGrantRoleResponse) { option (google.api.http) = { post: "/v3/auth/user/grant" From 29b7ebfeb1fe1a41243575ac12aa8179402f9d1d Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Wed, 24 Sep 2025 11:39:53 +0200 Subject: [PATCH 0551/1068] Remove "2" from integration import Signed-off-by: Marek Siarkowicz --- tests/integration/clientv3/cluster_test.go | 46 ++--- .../clientv3/concurrency/election_test.go | 4 +- .../clientv3/concurrency/mutex_test.go | 6 +- .../clientv3/concurrency/session_test.go | 8 +- .../clientv3/connectivity/black_hole_test.go | 16 +- .../clientv3/connectivity/dial_test.go | 40 ++--- .../connectivity/network_partition_test.go | 30 ++-- .../connectivity/server_shutdown_test.go | 34 ++-- .../clientv3/examples/main_test.go | 4 +- .../experimental/recipes/v3_barrier_test.go | 14 +- .../recipes/v3_double_barrier_test.go | 14 +- .../experimental/recipes/v3_lock_test.go | 54 +++--- .../experimental/recipes/v3_queue_test.go | 30 ++-- tests/integration/clientv3/kv_test.go | 92 +++++----- .../integration/clientv3/lease/lease_test.go | 96 +++++----- .../clientv3/lease/leasing_test.go | 168 +++++++++--------- .../integration/clientv3/maintenance_test.go | 40 ++--- tests/integration/clientv3/metrics_test.go | 8 +- .../integration/clientv3/mirror_auth_test.go | 8 +- tests/integration/clientv3/mirror_test.go | 10 +- tests/integration/clientv3/namespace_test.go | 10 +- .../clientv3/naming/endpoints_test.go | 14 +- .../clientv3/naming/resolver_test.go | 12 +- .../integration/clientv3/ordering_kv_test.go | 14 +- .../clientv3/ordering_util_test.go | 14 +- .../clientv3/snapshot/v3_snapshot_test.go | 6 +- tests/integration/clientv3/txn_test.go | 26 +-- tests/integration/clientv3/user_test.go | 28 +-- tests/integration/clientv3/util.go | 4 +- .../clientv3/watch/watch_fragment_test.go | 8 +- .../integration/clientv3/watch/watch_test.go | 102 +++++------ tests/integration/embed/embed_test.go | 6 +- .../proxy/grpcproxy/cluster_test.go | 10 +- tests/integration/proxy/grpcproxy/kv_test.go | 10 +- .../proxy/grpcproxy/register_test.go | 6 +- tests/integration/snapshot/member_test.go | 10 +- .../integration/snapshot/v3_snapshot_test.go | 22 +-- tests/integration/testing_test.go | 4 +- tests/integration/v2store/store_tag_test.go | 4 +- tests/integration/v3_failover_test.go | 18 +- 40 files changed, 525 insertions(+), 525 deletions(-) diff --git a/tests/integration/clientv3/cluster_test.go b/tests/integration/clientv3/cluster_test.go index 5abc46eca252..0e2eaaff67a3 100644 --- a/tests/integration/clientv3/cluster_test.go +++ b/tests/integration/clientv3/cluster_test.go @@ -26,13 +26,13 @@ import ( "github.com/stretchr/testify/require" "go.etcd.io/etcd/client/pkg/v3/types" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestMemberList(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) capi := clus.RandClient() @@ -48,9 +48,9 @@ func TestMemberList(t *testing.T) { } func TestMemberAdd(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) defer clus.Terminate(t) capi := clus.RandClient() @@ -67,9 +67,9 @@ func TestMemberAdd(t *testing.T) { } func TestMemberAddWithExistingURLs(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) defer clus.Terminate(t) capi := clus.RandClient() @@ -91,9 +91,9 @@ func TestMemberAddWithExistingURLs(t *testing.T) { } func TestMemberRemove(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) defer clus.Terminate(t) capi := clus.Client(1) @@ -129,9 +129,9 @@ func TestMemberRemove(t *testing.T) { } func TestMemberUpdate(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) capi := clus.RandClient() @@ -157,9 +157,9 @@ func TestMemberUpdate(t *testing.T) { } func TestMemberAddUpdateWrongURLs(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) capi := clus.RandClient() @@ -190,9 +190,9 @@ func TestMemberAddUpdateWrongURLs(t *testing.T) { } func TestMemberAddForLearner(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) defer clus.Terminate(t) capi := clus.RandClient() @@ -219,9 +219,9 @@ func TestMemberAddForLearner(t *testing.T) { } func TestMemberPromote(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) defer clus.Terminate(t) // member promote request can be sent to any server in cluster, @@ -295,9 +295,9 @@ func TestMemberPromote(t *testing.T) { // TestMemberPromoteMemberNotLearner ensures that promoting a voting member fails. func TestMemberPromoteMemberNotLearner(t *testing.T) { - integration2.BeforeTest(t, integration2.WithFailpoint("raftBeforeAdvance", `sleep(100)`)) + integration.BeforeTest(t, integration.WithFailpoint("raftBeforeAdvance", `sleep(100)`)) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) // member promote request can be sent to any server in cluster, @@ -331,9 +331,9 @@ func TestMemberPromoteMemberNotLearner(t *testing.T) { // TestMemberPromoteMemberNotExist ensures that promoting a member that does not exist in cluster fails. func TestMemberPromoteMemberNotExist(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) // member promote request can be sent to any server in cluster, @@ -380,10 +380,10 @@ func TestMemberPromoteMemberNotExist(t *testing.T) { // TestMaxLearnerInCluster verifies that the maximum number of learners allowed in a cluster func TestMaxLearnerInCluster(t *testing.T) { - integration2.BeforeTest(t, integration2.WithFailpoint("raftBeforeAdvance", `sleep(100)`)) + integration.BeforeTest(t, integration.WithFailpoint("raftBeforeAdvance", `sleep(100)`)) // 1. start with a cluster with 3 voting member and max learner 2 - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, MaxLearners: 2, DisableStrictReconfigCheck: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, MaxLearners: 2, DisableStrictReconfigCheck: true}) defer clus.Terminate(t) // 2. adding 2 learner members should succeed diff --git a/tests/integration/clientv3/concurrency/election_test.go b/tests/integration/clientv3/concurrency/election_test.go index 1dc00e6b838b..d814a4a48b70 100644 --- a/tests/integration/clientv3/concurrency/election_test.go +++ b/tests/integration/clientv3/concurrency/election_test.go @@ -25,13 +25,13 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/concurrency" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestResumeElection(t *testing.T) { const prefix = "/resume-election/" - cli, err := integration2.NewClient(t, clientv3.Config{Endpoints: exampleEndpoints()}) + cli, err := integration.NewClient(t, clientv3.Config{Endpoints: exampleEndpoints()}) if err != nil { log.Fatal(err) } diff --git a/tests/integration/clientv3/concurrency/mutex_test.go b/tests/integration/clientv3/concurrency/mutex_test.go index 3d8ea858c7d7..2f45fd6882e2 100644 --- a/tests/integration/clientv3/concurrency/mutex_test.go +++ b/tests/integration/clientv3/concurrency/mutex_test.go @@ -22,11 +22,11 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/concurrency" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestMutexLockSessionExpired(t *testing.T) { - cli, err := integration2.NewClient(t, clientv3.Config{Endpoints: exampleEndpoints()}) + cli, err := integration.NewClient(t, clientv3.Config{Endpoints: exampleEndpoints()}) require.NoError(t, err) defer cli.Close() @@ -61,7 +61,7 @@ func TestMutexLockSessionExpired(t *testing.T) { } func TestMutexUnlock(t *testing.T) { - cli, err := integration2.NewClient(t, clientv3.Config{Endpoints: exampleEndpoints()}) + cli, err := integration.NewClient(t, clientv3.Config{Endpoints: exampleEndpoints()}) require.NoError(t, err) defer cli.Close() diff --git a/tests/integration/clientv3/concurrency/session_test.go b/tests/integration/clientv3/concurrency/session_test.go index 21691bdf188d..646044726a28 100644 --- a/tests/integration/clientv3/concurrency/session_test.go +++ b/tests/integration/clientv3/concurrency/session_test.go @@ -24,11 +24,11 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/concurrency" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestSessionOptions(t *testing.T) { - cli, err := integration2.NewClient(t, clientv3.Config{Endpoints: exampleEndpoints()}) + cli, err := integration.NewClient(t, clientv3.Config{Endpoints: exampleEndpoints()}) require.NoError(t, err) defer cli.Close() lease, err := cli.Grant(t.Context(), 100) @@ -47,7 +47,7 @@ func TestSessionOptions(t *testing.T) { } func TestSessionTTLOptions(t *testing.T) { - cli, err := integration2.NewClient(t, clientv3.Config{Endpoints: exampleEndpoints()}) + cli, err := integration.NewClient(t, clientv3.Config{Endpoints: exampleEndpoints()}) require.NoError(t, err) defer cli.Close() @@ -74,7 +74,7 @@ func TestSessionTTLOptions(t *testing.T) { } func TestSessionCtx(t *testing.T) { - cli, err := integration2.NewClient(t, clientv3.Config{Endpoints: exampleEndpoints()}) + cli, err := integration.NewClient(t, clientv3.Config{Endpoints: exampleEndpoints()}) require.NoError(t, err) defer cli.Close() lease, err := cli.Grant(t.Context(), 100) diff --git a/tests/integration/clientv3/connectivity/black_hole_test.go b/tests/integration/clientv3/connectivity/black_hole_test.go index 38c463126231..af316f8e0f6d 100644 --- a/tests/integration/clientv3/connectivity/black_hole_test.go +++ b/tests/integration/clientv3/connectivity/black_hole_test.go @@ -27,7 +27,7 @@ import ( "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" clientv3test "go.etcd.io/etcd/tests/v3/integration/clientv3" ) @@ -35,9 +35,9 @@ import ( // blackholed endpoint, client balancer switches to healthy one. // TODO: test server-to-client keepalive ping func TestBalancerUnderBlackholeKeepAliveWatch(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{ + clus := integration.NewCluster(t, &integration.ClusterConfig{ Size: 2, GRPCKeepAliveMinTime: time.Millisecond, // avoid too_many_pings UseBridge: true, @@ -60,9 +60,9 @@ func TestBalancerUnderBlackholeKeepAliveWatch(t *testing.T) { // TODO: only send healthy endpoint to gRPC so gRPC wont waste time to // dial for unhealthy endpoint. // then we can reduce 3s to 1s. - timeout := pingInterval + integration2.RequestWaitTimeout + timeout := pingInterval + integration.RequestWaitTimeout - cli, err := integration2.NewClient(t, ccfg) + cli, err := integration.NewClient(t, ccfg) require.NoError(t, err) defer cli.Close() @@ -162,9 +162,9 @@ func TestBalancerUnderBlackholeNoKeepAliveSerializableGet(t *testing.T) { // testBalancerUnderBlackholeNoKeepAlive ensures that first request to blackholed endpoint // fails due to context timeout, but succeeds on next try, with endpoint switch. func testBalancerUnderBlackholeNoKeepAlive(t *testing.T, op func(*clientv3.Client, context.Context) error) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{ + clus := integration.NewCluster(t, &integration.ClusterConfig{ Size: 2, UseBridge: true, }) @@ -177,7 +177,7 @@ func testBalancerUnderBlackholeNoKeepAlive(t *testing.T, op func(*clientv3.Clien DialTimeout: 1 * time.Second, DialOptions: []grpc.DialOption{grpc.WithBlock()}, } - cli, err := integration2.NewClient(t, ccfg) + cli, err := integration.NewClient(t, ccfg) require.NoError(t, err) defer cli.Close() diff --git a/tests/integration/clientv3/connectivity/dial_test.go b/tests/integration/clientv3/connectivity/dial_test.go index 527d50096666..5c7cb7c5c257 100644 --- a/tests/integration/clientv3/connectivity/dial_test.go +++ b/tests/integration/clientv3/connectivity/dial_test.go @@ -27,7 +27,7 @@ import ( pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/client/pkg/v3/transport" clientv3 "go.etcd.io/etcd/client/v3" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" "go.etcd.io/etcd/tests/v3/framework/testutils" clientv3test "go.etcd.io/etcd/tests/v3/integration/clientv3" ) @@ -50,14 +50,14 @@ var ( // TestDialTLSExpired tests client with expired certs fails to dial. func TestDialTLSExpired(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, PeerTLS: &testTLSInfo, ClientTLS: &testTLSInfo}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, PeerTLS: &testTLSInfo, ClientTLS: &testTLSInfo}) defer clus.Terminate(t) tls, err := testTLSInfoExpired.ClientConfig() require.NoError(t, err) // expect remote errors "tls: bad certificate" - _, err = integration2.NewClient(t, clientv3.Config{ + _, err = integration.NewClient(t, clientv3.Config{ Endpoints: []string{clus.Members[0].GRPCURL}, DialTimeout: 3 * time.Second, DialOptions: []grpc.DialOption{grpc.WithBlock()}, @@ -69,11 +69,11 @@ func TestDialTLSExpired(t *testing.T) { // TestDialTLSNoConfig ensures the client fails to dial / times out // when TLS endpoints (https, unixs) are given but no tls config. func TestDialTLSNoConfig(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, ClientTLS: &testTLSInfo}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, ClientTLS: &testTLSInfo}) defer clus.Terminate(t) // expect "signed by unknown authority" - c, err := integration2.NewClient(t, clientv3.Config{ + c, err := integration.NewClient(t, clientv3.Config{ Endpoints: []string{clus.Members[0].GRPCURL}, DialTimeout: time.Second, DialOptions: []grpc.DialOption{grpc.WithBlock()}, @@ -98,8 +98,8 @@ func TestDialSetEndpointsAfterFail(t *testing.T) { // testDialSetEndpoints ensures SetEndpoints can replace unavailable endpoints with available ones. func testDialSetEndpoints(t *testing.T, setBefore bool) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) // get endpoint list @@ -114,7 +114,7 @@ func testDialSetEndpoints(t *testing.T, setBefore bool) { DialTimeout: 1 * time.Second, DialOptions: []grpc.DialOption{grpc.WithBlock()}, } - cli, err := integration2.NewClient(t, cfg) + cli, err := integration.NewClient(t, cfg) require.NoError(t, err) defer cli.Close() @@ -129,7 +129,7 @@ func testDialSetEndpoints(t *testing.T, setBefore bool) { cli.SetEndpoints(eps[toKill%3], eps[(toKill+1)%3]) } time.Sleep(time.Second * 2) - ctx, cancel := context.WithTimeout(t.Context(), integration2.RequestWaitTimeout) + ctx, cancel := context.WithTimeout(t.Context(), integration.RequestWaitTimeout) _, err = cli.Get(ctx, "foo", clientv3.WithSerializable()) require.NoError(t, err) cancel() @@ -138,8 +138,8 @@ func testDialSetEndpoints(t *testing.T, setBefore bool) { // TestSwitchSetEndpoints ensures SetEndpoints can switch one endpoint // with a new one that doesn't include original endpoint. func TestSwitchSetEndpoints(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) // get non partitioned members endpoints @@ -157,9 +157,9 @@ func TestSwitchSetEndpoints(t *testing.T) { } func TestRejectOldCluster(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) // 2 endpoints to test multi-endpoint Status - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 2}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 2}) defer clus.Terminate(t) cfg := clientv3.Config{ @@ -168,7 +168,7 @@ func TestRejectOldCluster(t *testing.T) { DialOptions: []grpc.DialOption{grpc.WithBlock()}, RejectOldCluster: true, } - cli, err := integration2.NewClient(t, cfg) + cli, err := integration.NewClient(t, cfg) require.NoError(t, err) cli.Close() } @@ -176,8 +176,8 @@ func TestRejectOldCluster(t *testing.T) { // TestDialForeignEndpoint checks an endpoint that is not registered // with the balancer can be dialed. func TestDialForeignEndpoint(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 2}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 2}) defer clus.Terminate(t) conn, err := clus.Client(0).Dial(clus.Client(1).Endpoints()[0]) @@ -196,8 +196,8 @@ func TestDialForeignEndpoint(t *testing.T) { // TestSetEndpointAndPut checks that a Put following a SetEndpoints // to a working endpoint will always succeed. func TestSetEndpointAndPut(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 2}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 2}) defer clus.Terminate(t) clus.Client(1).SetEndpoints(clus.Members[0].GRPCURL) diff --git a/tests/integration/clientv3/connectivity/network_partition_test.go b/tests/integration/clientv3/connectivity/network_partition_test.go index c5f034ecb2a9..0d9fec62d930 100644 --- a/tests/integration/clientv3/connectivity/network_partition_test.go +++ b/tests/integration/clientv3/connectivity/network_partition_test.go @@ -28,7 +28,7 @@ import ( pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" clientv3test "go.etcd.io/etcd/tests/v3/integration/clientv3" ) @@ -109,9 +109,9 @@ func TestBalancerUnderNetworkPartitionSerializableGet(t *testing.T) { } func testBalancerUnderNetworkPartition(t *testing.T, op func(*clientv3.Client, context.Context) error, timeout time.Duration) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{ + clus := integration.NewCluster(t, &integration.ClusterConfig{ Size: 3, }) defer clus.Terminate(t) @@ -124,7 +124,7 @@ func testBalancerUnderNetworkPartition(t *testing.T, op func(*clientv3.Client, c DialTimeout: 3 * time.Second, DialOptions: []grpc.DialOption{grpc.WithBlock()}, } - cli, err := integration2.NewClient(t, ccfg) + cli, err := integration.NewClient(t, ccfg) require.NoError(t, err) defer cli.Close() // wait for eps[0] to be pinned @@ -162,9 +162,9 @@ func testBalancerUnderNetworkPartition(t *testing.T, op func(*clientv3.Client, c // switches endpoint when leader fails and linearizable get requests returns // "etcdserver: request timed out". func TestBalancerUnderNetworkPartitionLinearizableGetLeaderElection(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{ + clus := integration.NewCluster(t, &integration.ClusterConfig{ Size: 3, }) defer clus.Terminate(t) @@ -174,7 +174,7 @@ func TestBalancerUnderNetworkPartitionLinearizableGetLeaderElection(t *testing.T timeout := 3 * clus.Members[(lead+1)%2].ServerConfig.ReqTimeout() - cli, err := integration2.NewClient(t, clientv3.Config{ + cli, err := integration.NewClient(t, clientv3.Config{ Endpoints: []string{eps[(lead+1)%2]}, DialTimeout: 2 * time.Second, DialOptions: []grpc.DialOption{grpc.WithBlock()}, @@ -212,9 +212,9 @@ func TestBalancerUnderNetworkPartitionWatchFollower(t *testing.T) { // testBalancerUnderNetworkPartitionWatch ensures watch stream // to a partitioned node be closed when context requires leader. func testBalancerUnderNetworkPartitionWatch(t *testing.T, isolateLeader bool) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{ + clus := integration.NewCluster(t, &integration.ClusterConfig{ Size: 3, }) defer clus.Terminate(t) @@ -227,7 +227,7 @@ func testBalancerUnderNetworkPartitionWatch(t *testing.T, isolateLeader bool) { } // pin eps[target] - watchCli, err := integration2.NewClient(t, clientv3.Config{Endpoints: []string{eps[target]}}) + watchCli, err := integration.NewClient(t, clientv3.Config{Endpoints: []string{eps[target]}}) require.NoError(t, err) t.Logf("watchCli created to: %v", target) defer watchCli.Close() @@ -243,7 +243,7 @@ func testBalancerUnderNetworkPartitionWatch(t *testing.T, isolateLeader bool) { wch := watchCli.Watch(clientv3.WithRequireLeader(t.Context()), "foo", clientv3.WithCreatedNotify()) select { case <-wch: - case <-time.After(integration2.RequestWaitTimeout): + case <-time.After(integration.RequestWaitTimeout): t.Fatal("took too long to create watch") } @@ -261,15 +261,15 @@ func testBalancerUnderNetworkPartitionWatch(t *testing.T, isolateLeader bool) { t.Fatal("expected no event") } require.ErrorIs(t, ev.Err(), rpctypes.ErrNoLeader) - case <-time.After(integration2.RequestWaitTimeout): // enough time to detect leader lost + case <-time.After(integration.RequestWaitTimeout): // enough time to detect leader lost t.Fatal("took too long to detect leader lost") } } func TestDropReadUnderNetworkPartition(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{ + clus := integration.NewCluster(t, &integration.ClusterConfig{ Size: 3, }) defer clus.Terminate(t) @@ -281,7 +281,7 @@ func TestDropReadUnderNetworkPartition(t *testing.T) { DialTimeout: 10 * time.Second, DialOptions: []grpc.DialOption{grpc.WithBlock()}, } - cli, err := integration2.NewClient(t, ccfg) + cli, err := integration.NewClient(t, ccfg) require.NoError(t, err) defer cli.Close() diff --git a/tests/integration/clientv3/connectivity/server_shutdown_test.go b/tests/integration/clientv3/connectivity/server_shutdown_test.go index bb053ac10dbc..3fc338a66318 100644 --- a/tests/integration/clientv3/connectivity/server_shutdown_test.go +++ b/tests/integration/clientv3/connectivity/server_shutdown_test.go @@ -26,16 +26,16 @@ import ( "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" clientv3test "go.etcd.io/etcd/tests/v3/integration/clientv3" ) // TestBalancerUnderServerShutdownWatch expects that watch client // switch its endpoints when the member of the pinned endpoint fails. func TestBalancerUnderServerShutdownWatch(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{ + clus := integration.NewCluster(t, &integration.ClusterConfig{ Size: 3, UseBridge: true, }) @@ -46,7 +46,7 @@ func TestBalancerUnderServerShutdownWatch(t *testing.T) { lead := clus.WaitLeader(t) // pin eps[lead] - watchCli, err := integration2.NewClient(t, clientv3.Config{Endpoints: []string{eps[lead]}}) + watchCli, err := integration.NewClient(t, clientv3.Config{Endpoints: []string{eps[lead]}}) require.NoError(t, err) defer watchCli.Close() @@ -61,7 +61,7 @@ func TestBalancerUnderServerShutdownWatch(t *testing.T) { wch := watchCli.Watch(t.Context(), key, clientv3.WithCreatedNotify()) select { case <-wch: - case <-time.After(integration2.RequestWaitTimeout): + case <-time.After(integration.RequestWaitTimeout): t.Fatal("took too long to create watch") } @@ -90,7 +90,7 @@ func TestBalancerUnderServerShutdownWatch(t *testing.T) { clus.Members[lead].Terminate(t) // writes to eps[lead+1] - putCli, err := integration2.NewClient(t, clientv3.Config{Endpoints: []string{eps[(lead+1)%3]}}) + putCli, err := integration.NewClient(t, clientv3.Config{Endpoints: []string{eps[(lead+1)%3]}}) require.NoError(t, err) defer putCli.Close() for { @@ -141,9 +141,9 @@ func TestBalancerUnderServerShutdownTxn(t *testing.T) { // the pinned endpoint is shut down, the balancer switches its endpoints // and all subsequent put/delete/txn requests succeed with new endpoints. func testBalancerUnderServerShutdownMutable(t *testing.T, op func(*clientv3.Client, context.Context) error) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{ + clus := integration.NewCluster(t, &integration.ClusterConfig{ Size: 3, }) defer clus.Terminate(t) @@ -151,7 +151,7 @@ func testBalancerUnderServerShutdownMutable(t *testing.T, op func(*clientv3.Clie eps := []string{clus.Members[0].GRPCURL, clus.Members[1].GRPCURL, clus.Members[2].GRPCURL} // pin eps[0] - cli, err := integration2.NewClient(t, clientv3.Config{Endpoints: []string{eps[0]}}) + cli, err := integration.NewClient(t, clientv3.Config{Endpoints: []string{eps[0]}}) require.NoError(t, err) defer cli.Close() @@ -194,9 +194,9 @@ func TestBalancerUnderServerShutdownGetSerializable(t *testing.T) { // the pinned endpoint is shut down, the balancer switches its endpoints // and all subsequent range requests succeed with new endpoints. func testBalancerUnderServerShutdownImmutable(t *testing.T, op func(*clientv3.Client, context.Context) error, timeout time.Duration) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{ + clus := integration.NewCluster(t, &integration.ClusterConfig{ Size: 3, }) defer clus.Terminate(t) @@ -204,7 +204,7 @@ func testBalancerUnderServerShutdownImmutable(t *testing.T, op func(*clientv3.Cl eps := []string{clus.Members[0].GRPCURL, clus.Members[1].GRPCURL, clus.Members[2].GRPCURL} // pin eps[0] - cli, err := integration2.NewClient(t, clientv3.Config{Endpoints: []string{eps[0]}}) + cli, err := integration.NewClient(t, clientv3.Config{Endpoints: []string{eps[0]}}) if err != nil { t.Errorf("failed to create client: %v", err) } @@ -266,9 +266,9 @@ type pinTestOpt struct { // testBalancerUnderServerStopInflightRangeOnRestart expects // inflight range request reconnects on server restart. func testBalancerUnderServerStopInflightRangeOnRestart(t *testing.T, linearizable bool, opt pinTestOpt) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - cfg := &integration2.ClusterConfig{ + cfg := &integration.ClusterConfig{ Size: 2, UseBridge: true, } @@ -276,7 +276,7 @@ func testBalancerUnderServerStopInflightRangeOnRestart(t *testing.T, linearizabl cfg.Size = 3 } - clus := integration2.NewCluster(t, cfg) + clus := integration.NewCluster(t, cfg) defer clus.Terminate(t) eps := []string{clus.Members[0].GRPCURL, clus.Members[1].GRPCURL} if linearizable { @@ -291,7 +291,7 @@ func testBalancerUnderServerStopInflightRangeOnRestart(t *testing.T, linearizabl } // pin eps[target] - cli, err := integration2.NewClient(t, clientv3.Config{Endpoints: []string{eps[target]}}) + cli, err := integration.NewClient(t, clientv3.Config{Endpoints: []string{eps[target]}}) if err != nil { t.Errorf("failed to create client: %v", err) } @@ -352,7 +352,7 @@ func testBalancerUnderServerStopInflightRangeOnRestart(t *testing.T, linearizabl clus.Members[target].Restart(t) select { - case <-time.After(clientTimeout + integration2.RequestWaitTimeout): + case <-time.After(clientTimeout + integration.RequestWaitTimeout): t.Fatalf("timed out waiting for Get [linearizable: %v, opt: %+v]", linearizable, opt) case <-donec: } diff --git a/tests/integration/clientv3/examples/main_test.go b/tests/integration/clientv3/examples/main_test.go index 338a1ed64684..5c0a76aa57fd 100644 --- a/tests/integration/clientv3/examples/main_test.go +++ b/tests/integration/clientv3/examples/main_test.go @@ -21,7 +21,7 @@ import ( "time" "go.etcd.io/etcd/client/pkg/v3/testutil" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + framework "go.etcd.io/etcd/tests/v3/framework/integration" "go.etcd.io/etcd/tests/v3/integration" ) @@ -31,7 +31,7 @@ const ( ) var lazyCluster = integration.NewLazyClusterWithConfig( - integration2.ClusterConfig{ + framework.ClusterConfig{ Size: 3, WatchProgressNotifyInterval: 200 * time.Millisecond, DisableStrictReconfigCheck: true, diff --git a/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go b/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go index 70f30ea3df7c..06b1540a5e1c 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go @@ -22,19 +22,19 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" recipe "go.etcd.io/etcd/client/v3/experimental/recipes" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestBarrierSingleNode(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) testBarrier(t, 5, func() *clientv3.Client { return clus.Client(0) }) } func TestBarrierMultiNode(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) testBarrier(t, 5, func() *clientv3.Client { return clus.RandClient() }) } @@ -85,8 +85,8 @@ func testBarrier(t *testing.T, waiters int, chooseClient func() *clientv3.Client } func TestBarrierWaitNonexistentKey(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) diff --git a/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go b/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go index 85bf219c04ac..9b1637d05270 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go @@ -26,13 +26,13 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/concurrency" recipe "go.etcd.io/etcd/client/v3/experimental/recipes" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestDoubleBarrier(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) waiters := 10 @@ -102,9 +102,9 @@ func TestDoubleBarrier(t *testing.T) { } func TestDoubleBarrierTooManyClients(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) waiters := 10 @@ -164,9 +164,9 @@ func TestDoubleBarrierTooManyClients(t *testing.T) { } func TestDoubleBarrierFailover(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) waiters := 10 diff --git a/tests/integration/clientv3/experimental/recipes/v3_lock_test.go b/tests/integration/clientv3/experimental/recipes/v3_lock_test.go index 4bf2d8249ecb..3e50fc1b45c4 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_lock_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_lock_test.go @@ -29,29 +29,29 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/concurrency" recipe "go.etcd.io/etcd/client/v3/experimental/recipes" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestMutexLockSingleNode(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) var clients []*clientv3.Client - testMutexLock(t, 5, integration2.MakeSingleNodeClients(t, clus, &clients)) - integration2.CloseClients(t, clients) + testMutexLock(t, 5, integration.MakeSingleNodeClients(t, clus, &clients)) + integration.CloseClients(t, clients) } func TestMutexLockMultiNode(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) var clients []*clientv3.Client - testMutexLock(t, 5, integration2.MakeMultiNodeClients(t, clus, &clients)) - integration2.CloseClients(t, clients) + testMutexLock(t, 5, integration.MakeMultiNodeClients(t, clus, &clients)) + integration.CloseClients(t, clients) } func testMutexLock(t *testing.T, waiters int, chooseClient func() *clientv3.Client) { @@ -100,23 +100,23 @@ func testMutexLock(t *testing.T, waiters int, chooseClient func() *clientv3.Clie } func TestMutexTryLockSingleNode(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) t.Logf("3 nodes cluster created...") var clients []*clientv3.Client - testMutexTryLock(t, 5, integration2.MakeSingleNodeClients(t, clus, &clients)) - integration2.CloseClients(t, clients) + testMutexTryLock(t, 5, integration.MakeSingleNodeClients(t, clus, &clients)) + integration.CloseClients(t, clients) } func TestMutexTryLockMultiNode(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) var clients []*clientv3.Client - testMutexTryLock(t, 5, integration2.MakeMultiNodeClients(t, clus, &clients)) - integration2.CloseClients(t, clients) + testMutexTryLock(t, 5, integration.MakeMultiNodeClients(t, clus, &clients)) + integration.CloseClients(t, clients) } func testMutexTryLock(t *testing.T, lockers int, chooseClient func() *clientv3.Client) { @@ -172,9 +172,9 @@ func testMutexTryLock(t *testing.T, lockers int, chooseClient func() *clientv3.C // TestMutexSessionRelock ensures that acquiring the same lock with the same // session will not result in deadlock. func TestMutexSessionRelock(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) session, err := concurrency.NewSession(clus.RandClient()) if err != nil { @@ -192,9 +192,9 @@ func TestMutexSessionRelock(t *testing.T) { // waiters older than the new owner are gone by testing the case where // the waiter prior to the acquirer expires before the current holder. func TestMutexWaitsOnCurrentHolder(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cctx := t.Context() @@ -288,9 +288,9 @@ func TestMutexWaitsOnCurrentHolder(t *testing.T) { } func BenchmarkMutex4Waiters(b *testing.B) { - integration2.BeforeTest(b) + integration.BeforeTest(b) // XXX switch tests to use TB interface - clus := integration2.NewCluster(nil, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(nil, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(nil) for i := 0; i < b.N; i++ { testMutexLock(nil, 4, func() *clientv3.Client { return clus.RandClient() }) @@ -298,15 +298,15 @@ func BenchmarkMutex4Waiters(b *testing.B) { } func TestRWMutexSingleNode(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) testRWMutex(t, 5, func() *clientv3.Client { return clus.Client(0) }) } func TestRWMutexMultiNode(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) testRWMutex(t, 5, func() *clientv3.Client { return clus.RandClient() }) } diff --git a/tests/integration/clientv3/experimental/recipes/v3_queue_test.go b/tests/integration/clientv3/experimental/recipes/v3_queue_test.go index 89172dfec20b..ce5ed92ee876 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_queue_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_queue_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/require" recipe "go.etcd.io/etcd/client/v3/experimental/recipes" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) const ( @@ -33,9 +33,9 @@ const ( // TestQueueOneReaderOneWriter confirms the queue is FIFO func TestQueueOneReaderOneWriter(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) done := make(chan struct{}) @@ -78,10 +78,10 @@ func TestQueueManyReaderManyWriter(t *testing.T) { // BenchmarkQueue benchmarks Queues using many/many readers/writers func BenchmarkQueue(b *testing.B) { - integration2.BeforeTest(b) + integration.BeforeTest(b) // XXX switch tests to use TB interface - clus := integration2.NewCluster(nil, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(nil, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(nil) for i := 0; i < b.N; i++ { testQueueNReaderMWriter(nil, manyQueueClients, manyQueueClients) @@ -90,9 +90,9 @@ func BenchmarkQueue(b *testing.B) { // TestPrQueueOneReaderOneWriter tests whether priority queues respect priorities. func TestPrQueueOneReaderOneWriter(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) // write out five items with random priority @@ -117,9 +117,9 @@ func TestPrQueueOneReaderOneWriter(t *testing.T) { } func TestPrQueueManyReaderManyWriter(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) rqs := newPriorityQueues(clus, manyQueueClients) wqs := newPriorityQueues(clus, manyQueueClients) @@ -128,10 +128,10 @@ func TestPrQueueManyReaderManyWriter(t *testing.T) { // BenchmarkPrQueueOneReaderOneWriter benchmarks Queues using n/n readers/writers func BenchmarkPrQueueOneReaderOneWriter(b *testing.B) { - integration2.BeforeTest(b) + integration.BeforeTest(b) // XXX switch tests to use TB interface - clus := integration2.NewCluster(nil, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(nil, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(nil) rqs := newPriorityQueues(clus, 1) wqs := newPriorityQueues(clus, 1) @@ -141,13 +141,13 @@ func BenchmarkPrQueueOneReaderOneWriter(b *testing.B) { } func testQueueNReaderMWriter(t *testing.T, n int, m int) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) testReadersWriters(t, newQueues(clus, n), newQueues(clus, m)) } -func newQueues(clus *integration2.Cluster, n int) (qs []testQueue) { +func newQueues(clus *integration.Cluster, n int) (qs []testQueue) { for i := 0; i < n; i++ { etcdc := clus.RandClient() qs = append(qs, recipe.NewQueue(etcdc, "q")) @@ -155,7 +155,7 @@ func newQueues(clus *integration2.Cluster, n int) (qs []testQueue) { return qs } -func newPriorityQueues(clus *integration2.Cluster, n int) (qs []testQueue) { +func newPriorityQueues(clus *integration.Cluster, n int) (qs []testQueue) { for i := 0; i < n; i++ { etcdc := clus.RandClient() q := &flatPriorityQueue{recipe.NewPriorityQueue(etcdc, "prq")} diff --git a/tests/integration/clientv3/kv_test.go b/tests/integration/clientv3/kv_test.go index 5b996516e04d..75b1b3d81c63 100644 --- a/tests/integration/clientv3/kv_test.go +++ b/tests/integration/clientv3/kv_test.go @@ -35,17 +35,17 @@ import ( "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" "go.etcd.io/etcd/api/v3/version" clientv3 "go.etcd.io/etcd/client/v3" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestKVPutError(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) var ( maxReqBytes = 1.5 * 1024 * 1024 // hard coded max in v3_server.go quota = int64(int(maxReqBytes*1.2) + 8*os.Getpagesize()) // make sure we have enough overhead in backend quota. See discussion in #6486. ) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, QuotaBackendBytes: quota, ClientMaxCallSendMsgSize: 100 * 1024 * 1024}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, QuotaBackendBytes: quota, ClientMaxCallSendMsgSize: 100 * 1024 * 1024}) defer clus.Terminate(t) kv := clus.RandClient() @@ -73,9 +73,9 @@ func TestKVPutError(t *testing.T) { } func TestKVPutWithLease(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) lapi := clus.RandClient() @@ -110,9 +110,9 @@ func TestKVPutWithLease(t *testing.T) { // TestKVPutWithIgnoreValue ensures that Put with WithIgnoreValue does not clobber the old value. func TestKVPutWithIgnoreValue(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) kv := clus.RandClient() @@ -139,9 +139,9 @@ func TestKVPutWithIgnoreValue(t *testing.T) { // TestKVPutWithIgnoreLease ensures that Put with WithIgnoreLease does not affect the existing lease for the key. func TestKVPutWithIgnoreLease(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) kv := clus.RandClient() @@ -174,9 +174,9 @@ func TestKVPutWithIgnoreLease(t *testing.T) { } func TestKVPutWithRequireLeader(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) clus.Members[1].Stop(t) @@ -216,9 +216,9 @@ func TestKVPutWithRequireLeader(t *testing.T) { } func TestKVRange(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) kv := clus.RandClient() @@ -277,9 +277,9 @@ func TestKVRange(t *testing.T) { } func TestKVGetErrConnClosed(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) @@ -297,16 +297,16 @@ func TestKVGetErrConnClosed(t *testing.T) { }() select { - case <-time.After(integration2.RequestWaitTimeout): + case <-time.After(integration.RequestWaitTimeout): t.Fatal("kv.Get took too long") case <-donec: } } func TestKVNewAfterClose(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) @@ -322,16 +322,16 @@ func TestKVNewAfterClose(t *testing.T) { close(donec) }() select { - case <-time.After(integration2.RequestWaitTimeout): + case <-time.After(integration.RequestWaitTimeout): t.Fatal("kv.Get took too long") case <-donec: } } func TestKVDeleteRange(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) kv := clus.RandClient() @@ -378,9 +378,9 @@ func TestKVDeleteRange(t *testing.T) { } func TestKVCompactError(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) kv := clus.RandClient() @@ -408,9 +408,9 @@ func TestKVCompactError(t *testing.T) { } func TestKVCompact(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) kv := clus.RandClient() @@ -463,10 +463,10 @@ func TestKVCompact(t *testing.T) { // TestKVGetRetry ensures get will retry on disconnect. func TestKVGetRetry(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) clusterSize := 3 - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: clusterSize, UseBridge: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: clusterSize, UseBridge: true}) defer clus.Terminate(t) // because killing leader and following election @@ -516,9 +516,9 @@ func TestKVGetRetry(t *testing.T) { // TestKVPutFailGetRetry ensures a get will retry following a failed put. func TestKVPutFailGetRetry(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) kv := clus.Client(0) @@ -556,9 +556,9 @@ func TestKVPutFailGetRetry(t *testing.T) { // TestKVGetCancel tests that a context cancel on a Get terminates as expected. func TestKVGetCancel(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) oldconn := clus.Client(0).ActiveConnection() @@ -579,9 +579,9 @@ func TestKVGetCancel(t *testing.T) { // TestKVGetStoppedServerAndClose ensures closing after a failed Get works. func TestKVGetStoppedServerAndClose(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) @@ -597,9 +597,9 @@ func TestKVGetStoppedServerAndClose(t *testing.T) { // TestKVPutStoppedServerAndClose ensures closing after a failed Put works. func TestKVPutStoppedServerAndClose(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) @@ -628,8 +628,8 @@ func TestKVPutStoppedServerAndClose(t *testing.T) { // TestKVPutAtMostOnce ensures that a Put will only occur at most once // in the presence of network errors. func TestKVPutAtMostOnce(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) _, err := clus.Client(0).Put(t.Context(), "k", "1") @@ -661,7 +661,7 @@ func TestKVPutAtMostOnce(t *testing.T) { // TestKVLargeRequests tests various client/server side request limits. func TestKVLargeRequests(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) tests := []struct { // make sure that "MaxCallSendMsgSize" < server-side default send/recv limit maxRequestBytesServer uint @@ -718,8 +718,8 @@ func TestKVLargeRequests(t *testing.T) { }, } for i, test := range tests { - clus := integration2.NewCluster(t, - &integration2.ClusterConfig{ + clus := integration.NewCluster(t, + &integration.ClusterConfig{ Size: 1, MaxRequestBytes: test.maxRequestBytesServer, ClientMaxCallSendMsgSize: test.maxCallSendBytesClient, @@ -752,9 +752,9 @@ func TestKVLargeRequests(t *testing.T) { // TestKVForLearner ensures learner member only accepts serializable read request. func TestKVForLearner(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) defer clus.Terminate(t) // we have to add and launch learner member after initial cluster was created, because @@ -783,7 +783,7 @@ func TestKVForLearner(t *testing.T) { DialOptions: []grpc.DialOption{grpc.WithBlock()}, } // this client only has endpoint of the learner member - cli, err := integration2.NewClient(t, cfg) + cli, err := integration.NewClient(t, cfg) if err != nil { t.Fatalf("failed to create clientv3: %v", err) } @@ -831,9 +831,9 @@ func TestKVForLearner(t *testing.T) { // TestBalancerSupportLearner verifies that balancer's retry and failover mechanism supports cluster with learner member func TestBalancerSupportLearner(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) defer clus.Terminate(t) // we have to add and launch learner member after initial cluster was created, because @@ -855,7 +855,7 @@ func TestBalancerSupportLearner(t *testing.T) { DialTimeout: 5 * time.Second, DialOptions: []grpc.DialOption{grpc.WithBlock()}, } - cli, err := integration2.NewClient(t, cfg) + cli, err := integration.NewClient(t, cfg) if err != nil { t.Fatalf("failed to create clientv3: %v", err) } diff --git a/tests/integration/clientv3/lease/lease_test.go b/tests/integration/clientv3/lease/lease_test.go index 0cdd96ab7bcf..af07c8b1a8f5 100644 --- a/tests/integration/clientv3/lease/lease_test.go +++ b/tests/integration/clientv3/lease/lease_test.go @@ -29,13 +29,13 @@ import ( "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/concurrency" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestLeaseNotFoundError(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) kv := clus.RandClient() @@ -45,9 +45,9 @@ func TestLeaseNotFoundError(t *testing.T) { } func TestLeaseGrant(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) lapi := clus.RandClient() @@ -67,9 +67,9 @@ func TestLeaseGrant(t *testing.T) { } func TestLeaseRevoke(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) lapi := clus.RandClient() @@ -91,9 +91,9 @@ func TestLeaseRevoke(t *testing.T) { } func TestLeaseKeepAliveOnce(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) lapi := clus.RandClient() @@ -115,9 +115,9 @@ func TestLeaseKeepAliveOnce(t *testing.T) { } func TestLeaseKeepAlive(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) lapi := clus.Client(0) @@ -180,9 +180,9 @@ func TestLeaseKeepAlive(t *testing.T) { } func TestLeaseKeepAliveSeconds(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) @@ -209,9 +209,9 @@ func TestLeaseKeepAliveSeconds(t *testing.T) { func TestLeaseKeepAliveHandleFailure(t *testing.T) { t.Skip("test it when we have a cluster client") - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) // TODO: change this line to get a cluster client @@ -264,9 +264,9 @@ type leaseCh struct { // TestLeaseKeepAliveNotFound ensures a revoked lease won't halt other leases. func TestLeaseKeepAliveNotFound(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.RandClient() @@ -292,9 +292,9 @@ func TestLeaseKeepAliveNotFound(t *testing.T) { } func TestLeaseGrantErrConnClosed(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) @@ -312,7 +312,7 @@ func TestLeaseGrantErrConnClosed(t *testing.T) { }() select { - case <-time.After(integration2.RequestWaitTimeout): + case <-time.After(integration.RequestWaitTimeout): t.Fatal("le.Grant took too long") case <-donec: } @@ -322,9 +322,9 @@ func TestLeaseGrantErrConnClosed(t *testing.T) { // queue is full thus dropping keepalive response sends, // keepalive request is sent with the same rate of TTL / 3. func TestLeaseKeepAliveFullResponseQueue(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lapi := clus.Client(0) @@ -356,9 +356,9 @@ func TestLeaseKeepAliveFullResponseQueue(t *testing.T) { } func TestLeaseGrantNewAfterClose(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) @@ -374,16 +374,16 @@ func TestLeaseGrantNewAfterClose(t *testing.T) { close(donec) }() select { - case <-time.After(integration2.RequestWaitTimeout): + case <-time.After(integration.RequestWaitTimeout): t.Fatal("le.Grant took too long") case <-donec: } } func TestLeaseRevokeNewAfterClose(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) @@ -404,7 +404,7 @@ func TestLeaseRevokeNewAfterClose(t *testing.T) { } }() select { - case <-time.After(integration2.RequestWaitTimeout): + case <-time.After(integration.RequestWaitTimeout): t.Fatal("le.Revoke took too long") case errMsg := <-errMsgCh: require.Empty(t, errMsg) @@ -414,9 +414,9 @@ func TestLeaseRevokeNewAfterClose(t *testing.T) { // TestLeaseKeepAliveCloseAfterDisconnectRevoke ensures the keep alive channel is closed // following a disconnection, lease revoke, then reconnect. func TestLeaseKeepAliveCloseAfterDisconnectRevoke(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) cli := clus.Client(0) @@ -453,9 +453,9 @@ func TestLeaseKeepAliveCloseAfterDisconnectRevoke(t *testing.T) { // TestLeaseKeepAliveInitTimeout ensures the keep alive channel closes if // the initial keep alive request never gets a response. func TestLeaseKeepAliveInitTimeout(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) cli := clus.Client(0) @@ -480,9 +480,9 @@ func TestLeaseKeepAliveInitTimeout(t *testing.T) { // TestLeaseKeepAliveTTLTimeout ensures the keep alive channel closes if // a keep alive request after the first never gets a response. func TestLeaseKeepAliveTTLTimeout(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) cli := clus.Client(0) @@ -508,9 +508,9 @@ func TestLeaseKeepAliveTTLTimeout(t *testing.T) { } func TestLeaseTimeToLive(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) c := clus.RandClient() @@ -552,9 +552,9 @@ func TestLeaseTimeToLive(t *testing.T) { } func TestLeaseTimeToLiveLeaseNotFound(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.RandClient() @@ -577,9 +577,9 @@ func TestLeaseTimeToLiveLeaseNotFound(t *testing.T) { } func TestLeaseLeases(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.RandClient() @@ -604,9 +604,9 @@ func TestLeaseLeases(t *testing.T) { // TestLeaseRenewLostQuorum ensures keepalives work after losing quorum // for a while. func TestLeaseRenewLostQuorum(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) cli := clus.Client(0) @@ -646,9 +646,9 @@ func TestLeaseRenewLostQuorum(t *testing.T) { } func TestLeaseKeepAliveLoopExit(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) ctx := t.Context() @@ -668,8 +668,8 @@ func TestLeaseKeepAliveLoopExit(t *testing.T) { // before, during, and after quorum loss to confirm Grant/KeepAlive tolerates // transient cluster failure. func TestV3LeaseFailureOverlap(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 2, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 2, UseBridge: true}) defer clus.Terminate(t) numReqs := 5 @@ -721,9 +721,9 @@ func TestV3LeaseFailureOverlap(t *testing.T) { // TestLeaseWithRequireLeader checks keep-alive channel close when no leader. func TestLeaseWithRequireLeader(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 2, UseBridge: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 2, UseBridge: true}) defer clus.Terminate(t) c := clus.Client(0) diff --git a/tests/integration/clientv3/lease/leasing_test.go b/tests/integration/clientv3/lease/leasing_test.go index 09dd1cf44fb8..f5556aaefbba 100644 --- a/tests/integration/clientv3/lease/leasing_test.go +++ b/tests/integration/clientv3/lease/leasing_test.go @@ -30,13 +30,13 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/concurrency" "go.etcd.io/etcd/client/v3/leasing" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestLeasingPutGet(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) lKV1, closeLKV1, err := leasing.NewKV(clus.Client(0), "foo/") @@ -86,8 +86,8 @@ func TestLeasingPutGet(t *testing.T) { // TestLeasingInterval checks the leasing KV fetches key intervals. func TestLeasingInterval(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -116,8 +116,8 @@ func TestLeasingInterval(t *testing.T) { // TestLeasingPutInvalidateNew checks the leasing KV updates its cache on a Put to a new key. func TestLeasingPutInvalidateNew(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -138,8 +138,8 @@ func TestLeasingPutInvalidateNew(t *testing.T) { // TestLeasingPutInvalidateExisting checks the leasing KV updates its cache on a Put to an existing key. func TestLeasingPutInvalidateExisting(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) _, err := clus.Client(0).Put(t.Context(), "k", "abc") @@ -163,8 +163,8 @@ func TestLeasingPutInvalidateExisting(t *testing.T) { // TestLeasingGetNoLeaseTTL checks a key with a TTL is not leased. func TestLeasingGetNoLeaseTTL(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -192,8 +192,8 @@ func TestLeasingGetNoLeaseTTL(t *testing.T) { // TestLeasingGetSerializable checks the leasing KV can make serialized requests // when the etcd cluster is partitioned. func TestLeasingGetSerializable(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 2, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 2, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -224,8 +224,8 @@ func TestLeasingGetSerializable(t *testing.T) { // TestLeasingPrevKey checks the cache respects WithPrevKV on puts. func TestLeasingPrevKey(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 2}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 2}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -246,8 +246,8 @@ func TestLeasingPrevKey(t *testing.T) { // TestLeasingRevGet checks the cache respects Get by Revision. func TestLeasingRevGet(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -275,8 +275,8 @@ func TestLeasingRevGet(t *testing.T) { // TestLeasingGetWithOpts checks options that can be served through the cache do not depend on the server. func TestLeasingGetWithOpts(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -316,8 +316,8 @@ func TestLeasingGetWithOpts(t *testing.T) { // TestLeasingConcurrentPut ensures that a get after concurrent puts returns // the recently put data. func TestLeasingConcurrentPut(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -360,8 +360,8 @@ func TestLeasingConcurrentPut(t *testing.T) { } func TestLeasingDisconnectedGet(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -385,8 +385,8 @@ func TestLeasingDisconnectedGet(t *testing.T) { } func TestLeasingDeleteOwner(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -411,8 +411,8 @@ func TestLeasingDeleteOwner(t *testing.T) { } func TestLeasingDeleteNonOwner(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv1, closeLKV1, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -439,8 +439,8 @@ func TestLeasingDeleteNonOwner(t *testing.T) { } func TestLeasingOverwriteResponse(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -468,8 +468,8 @@ func TestLeasingOverwriteResponse(t *testing.T) { } func TestLeasingOwnerPutResponse(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -499,8 +499,8 @@ func TestLeasingOwnerPutResponse(t *testing.T) { } func TestLeasingTxnOwnerGetRange(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -523,8 +523,8 @@ func TestLeasingTxnOwnerGetRange(t *testing.T) { } func TestLeasingTxnOwnerGet(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) client := clus.Client(0) @@ -596,8 +596,8 @@ func TestLeasingTxnOwnerGet(t *testing.T) { } func TestLeasingTxnOwnerDeleteRange(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -625,8 +625,8 @@ func TestLeasingTxnOwnerDeleteRange(t *testing.T) { } func TestLeasingTxnOwnerDelete(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -649,8 +649,8 @@ func TestLeasingTxnOwnerDelete(t *testing.T) { } func TestLeasingTxnOwnerIf(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -739,8 +739,8 @@ func TestLeasingTxnOwnerIf(t *testing.T) { } func TestLeasingTxnCancel(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) lkv1, closeLKV1, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -770,8 +770,8 @@ func TestLeasingTxnCancel(t *testing.T) { } func TestLeasingTxnNonOwnerPut(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -836,8 +836,8 @@ func TestLeasingTxnNonOwnerPut(t *testing.T) { // TestLeasingTxnRandIfThenOrElse randomly leases keys two separate clients, then // issues a random If/{Then,Else} transaction on those keys to one client. func TestLeasingTxnRandIfThenOrElse(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv1, closeLKV1, err1 := leasing.NewKV(clus.Client(0), "pfx/") @@ -934,8 +934,8 @@ func TestLeasingTxnRandIfThenOrElse(t *testing.T) { } func TestLeasingOwnerPutError(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -953,8 +953,8 @@ func TestLeasingOwnerPutError(t *testing.T) { } func TestLeasingOwnerDeleteError(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -972,8 +972,8 @@ func TestLeasingOwnerDeleteError(t *testing.T) { } func TestLeasingNonOwnerPutError(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "pfx/") @@ -996,8 +996,8 @@ func TestLeasingOwnerDeleteFrom(t *testing.T) { } func testLeasingOwnerDelete(t *testing.T, del clientv3.Op) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "0/") @@ -1036,8 +1036,8 @@ func testLeasingOwnerDelete(t *testing.T, del clientv3.Op) { } func TestLeasingDeleteRangeBounds(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) delkv, closeDelKV, err := leasing.NewKV(clus.Client(0), "0/") @@ -1085,8 +1085,8 @@ func TestLeaseDeleteRangeContendDel(t *testing.T) { } func testLeasingDeleteRangeContend(t *testing.T, op clientv3.Op) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) delkv, closeDelKV, err := leasing.NewKV(clus.Client(0), "0/") @@ -1140,8 +1140,8 @@ func testLeasingDeleteRangeContend(t *testing.T, op clientv3.Op) { } func TestLeasingPutGetDeleteConcurrent(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkvs := make([]clientv3.KV, 16) @@ -1188,8 +1188,8 @@ func TestLeasingPutGetDeleteConcurrent(t *testing.T) { // TestLeasingReconnectOwnerRevoke checks that revocation works if // disconnected when trying to submit revoke txn. func TestLeasingReconnectOwnerRevoke(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) lkv1, closeLKV1, err1 := leasing.NewKV(clus.Client(0), "foo/") @@ -1248,8 +1248,8 @@ func TestLeasingReconnectOwnerRevoke(t *testing.T) { // TestLeasingReconnectOwnerRevokeCompact checks that revocation works if // disconnected and the watch is compacted. func TestLeasingReconnectOwnerRevokeCompact(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) lkv1, closeLKV1, err1 := leasing.NewKV(clus.Client(0), "foo/") @@ -1290,8 +1290,8 @@ func TestLeasingReconnectOwnerRevokeCompact(t *testing.T) { // TestLeasingReconnectOwnerConsistency checks a write error on an owner will // not cause inconsistency between the server and the client. func TestLeasingReconnectOwnerConsistency(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "foo/") @@ -1355,8 +1355,8 @@ func TestLeasingReconnectOwnerConsistency(t *testing.T) { } func TestLeasingTxnAtomicCache(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "foo/") @@ -1439,8 +1439,8 @@ func TestLeasingTxnAtomicCache(t *testing.T) { // TestLeasingReconnectTxn checks that Txn is resilient to disconnects. func TestLeasingReconnectTxn(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "foo/") @@ -1472,8 +1472,8 @@ func TestLeasingReconnectTxn(t *testing.T) { // TestLeasingReconnectNonOwnerGet checks a get error on an owner will // not cause inconsistency between the server and the client. func TestLeasingReconnectNonOwnerGet(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "foo/") @@ -1516,8 +1516,8 @@ func TestLeasingReconnectNonOwnerGet(t *testing.T) { } func TestLeasingTxnRangeCmp(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "foo/") @@ -1543,8 +1543,8 @@ func TestLeasingTxnRangeCmp(t *testing.T) { } func TestLeasingDo(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "foo/") @@ -1581,8 +1581,8 @@ func TestLeasingDo(t *testing.T) { } func TestLeasingTxnOwnerPutBranch(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "foo/") @@ -1665,8 +1665,8 @@ func randCmps(pfx string, dat []*clientv3.PutResponse) (cmps []clientv3.Cmp, the } func TestLeasingSessionExpire(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "foo/", concurrency.WithTTL(1)) @@ -1687,7 +1687,7 @@ func TestLeasingSessionExpire(t *testing.T) { require.NoError(t, err) waitForExpireAck(t, lkv) clus.Members[0].Restart(t) - integration2.WaitClientV3(t, lkv2) + integration.WaitClientV3(t, lkv2) _, err = lkv2.Put(t.Context(), "abc", "def") require.NoError(t, err) @@ -1734,8 +1734,8 @@ func TestLeasingSessionExpireCancel(t *testing.T) { } for i := range tests { t.Run(fmt.Sprintf("test %d", i), func(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) lkv, closeLKV, err := leasing.NewKV(clus.Client(0), "foo/", concurrency.WithTTL(1)) diff --git a/tests/integration/clientv3/maintenance_test.go b/tests/integration/clientv3/maintenance_test.go index 62a204816f0a..ca8b140bfcb7 100644 --- a/tests/integration/clientv3/maintenance_test.go +++ b/tests/integration/clientv3/maintenance_test.go @@ -42,13 +42,13 @@ import ( "go.etcd.io/etcd/server/v3/storage/backend" "go.etcd.io/etcd/server/v3/storage/mvcc" "go.etcd.io/etcd/server/v3/storage/mvcc/testutil" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestMaintenanceHashKV(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) for i := 0; i < 3; i++ { @@ -77,9 +77,9 @@ func TestMaintenanceHashKV(t *testing.T) { // TestCompactionHash tests compaction hash // TODO: Change this to fuzz test func TestCompactionHash(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cc, err := clus.ClusterClient(t) @@ -121,9 +121,9 @@ func (tc hashTestCase) Compact(ctx context.Context, rev int64) error { } func TestMaintenanceMoveLeader(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) oldLeadIdx := clus.WaitLeader(t) @@ -150,9 +150,9 @@ func TestMaintenanceMoveLeader(t *testing.T) { // TestMaintenanceSnapshotCancel ensures that context cancel // before snapshot reading returns corresponding context errors. func TestMaintenanceSnapshotCancel(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) // reading snapshot with canceled context should error out @@ -207,9 +207,9 @@ func TestMaintenanceSnapshotTimeout(t *testing.T) { // testMaintenanceSnapshotTimeout given snapshot function ensures that it // returns corresponding context errors when context timeout happened before snapshot reading func testMaintenanceSnapshotTimeout(t *testing.T, snapshot func(context.Context, *clientv3.Client) (io.ReadCloser, error)) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) // reading snapshot with deadline exceeded should error out @@ -273,10 +273,10 @@ func TestMaintenanceSnapshotErrorInflight(t *testing.T) { // testMaintenanceSnapshotErrorInflight given snapshot function ensures that ReaderCloser returned by it // will fail to read with corresponding context errors on inflight context cancel timeout. func testMaintenanceSnapshotErrorInflight(t *testing.T, snapshot func(context.Context, *clientv3.Client) (io.ReadCloser, error)) { - integration2.BeforeTest(t) + integration.BeforeTest(t) lg := zaptest.NewLogger(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) // take about 1-second to read snapshot @@ -327,10 +327,10 @@ func testMaintenanceSnapshotErrorInflight(t *testing.T, snapshot func(context.Co // TestMaintenanceSnapshotWithVersionVersion ensures that SnapshotWithVersion returns correct version value. func TestMaintenanceSnapshotWithVersionVersion(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) // Set SnapshotCount to 1 to force raft snapshot to ensure that storage version is set - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, SnapshotCount: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, SnapshotCount: 1}) defer clus.Terminate(t) // Put some keys to ensure that wal snapshot is triggered @@ -348,9 +348,9 @@ func TestMaintenanceSnapshotWithVersionVersion(t *testing.T) { } func TestMaintenanceSnapshotContentDigest(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) populateDataIntoCluster(t, clus, 3, 1024*1024) @@ -394,9 +394,9 @@ func TestMaintenanceSnapshotContentDigest(t *testing.T) { } func TestMaintenanceStatus(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, QuotaBackendBytes: storage.DefaultQuotaBytes}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, QuotaBackendBytes: storage.DefaultQuotaBytes}) defer clus.Terminate(t) t.Logf("Waiting for leader...") @@ -409,7 +409,7 @@ func TestMaintenanceStatus(t *testing.T) { } t.Logf("Creating client...") - cli, err := integration2.NewClient(t, clientv3.Config{Endpoints: eps, DialOptions: []grpc.DialOption{grpc.WithBlock()}}) + cli, err := integration.NewClient(t, clientv3.Config{Endpoints: eps, DialOptions: []grpc.DialOption{grpc.WithBlock()}}) require.NoError(t, err) defer cli.Close() t.Logf("Creating client [DONE]") diff --git a/tests/integration/clientv3/metrics_test.go b/tests/integration/clientv3/metrics_test.go index 31d004006e07..0115a4f981e8 100644 --- a/tests/integration/clientv3/metrics_test.go +++ b/tests/integration/clientv3/metrics_test.go @@ -34,11 +34,11 @@ import ( "go.etcd.io/etcd/client/pkg/v3/transport" clientv3 "go.etcd.io/etcd/client/v3" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestV3ClientMetrics(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) var ( addr = "localhost:27989" @@ -72,7 +72,7 @@ func TestV3ClientMetrics(t *testing.T) { url := "unix://" + addr + "/metrics" - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) clientMetrics := grpcprom.NewClientMetrics() @@ -85,7 +85,7 @@ func TestV3ClientMetrics(t *testing.T) { grpc.WithStreamInterceptor(clientMetrics.StreamClientInterceptor()), }, } - cli, cerr := integration2.NewClient(t, cfg) + cli, cerr := integration.NewClient(t, cfg) require.NoError(t, cerr) defer cli.Close() diff --git a/tests/integration/clientv3/mirror_auth_test.go b/tests/integration/clientv3/mirror_auth_test.go index fb5d3a123921..122fad04af52 100644 --- a/tests/integration/clientv3/mirror_auth_test.go +++ b/tests/integration/clientv3/mirror_auth_test.go @@ -27,12 +27,12 @@ import ( "go.etcd.io/etcd/api/v3/mvccpb" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/mirror" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestMirrorSync_Authenticated(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) initialClient := clus.Client(0) @@ -58,7 +58,7 @@ func TestMirrorSync_Authenticated(t *testing.T) { Username: "syncer", Password: "syncfoo", } - syncClient, err := integration2.NewClient(t, cfg) + syncClient, err := integration.NewClient(t, cfg) require.NoError(t, err) defer syncClient.Close() diff --git a/tests/integration/clientv3/mirror_test.go b/tests/integration/clientv3/mirror_test.go index 4baacecb7c48..4ed6151ab168 100644 --- a/tests/integration/clientv3/mirror_test.go +++ b/tests/integration/clientv3/mirror_test.go @@ -25,13 +25,13 @@ import ( "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/client/v3/mirror" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestMirrorSync(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) c := clus.Client(0) @@ -69,9 +69,9 @@ func TestMirrorSync(t *testing.T) { } func TestMirrorSyncBase(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - cluster := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + cluster := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer cluster.Terminate(t) cli := cluster.Client(0) diff --git a/tests/integration/clientv3/namespace_test.go b/tests/integration/clientv3/namespace_test.go index b56d7adfc7fd..3244a7037a4b 100644 --- a/tests/integration/clientv3/namespace_test.go +++ b/tests/integration/clientv3/namespace_test.go @@ -23,13 +23,13 @@ import ( "go.etcd.io/etcd/api/v3/mvccpb" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/namespace" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestNamespacePutGet(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) c := clus.Client(0) @@ -51,9 +51,9 @@ func TestNamespacePutGet(t *testing.T) { } func TestNamespaceWatch(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) c := clus.Client(0) diff --git a/tests/integration/clientv3/naming/endpoints_test.go b/tests/integration/clientv3/naming/endpoints_test.go index 229ae6f7dcbb..f072cc89b511 100644 --- a/tests/integration/clientv3/naming/endpoints_test.go +++ b/tests/integration/clientv3/naming/endpoints_test.go @@ -23,13 +23,13 @@ import ( etcd "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/naming/endpoints" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestEndpointManager(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) em, err := endpoints.NewManager(clus.RandClient(), "foo") @@ -83,9 +83,9 @@ func TestEndpointManager(t *testing.T) { // correctly with multiple hosts and correctly receive multiple // updates in a single revision. func TestEndpointManagerAtomicity(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) c := clus.RandClient() @@ -118,9 +118,9 @@ func TestEndpointManagerAtomicity(t *testing.T) { } func TestEndpointManagerCRUD(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) em, err := endpoints.NewManager(clus.RandClient(), "foo") diff --git a/tests/integration/clientv3/naming/resolver_test.go b/tests/integration/clientv3/naming/resolver_test.go index 4a5e1a6aeade..b79b754456b8 100644 --- a/tests/integration/clientv3/naming/resolver_test.go +++ b/tests/integration/clientv3/naming/resolver_test.go @@ -29,7 +29,7 @@ import ( "go.etcd.io/etcd/client/v3/naming/endpoints" "go.etcd.io/etcd/client/v3/naming/resolver" "go.etcd.io/etcd/pkg/v3/grpctesting" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func testEtcdGRPCResolver(t *testing.T, lbPolicy string) { @@ -48,7 +48,7 @@ func testEtcdGRPCResolver(t *testing.T, lbPolicy string) { defer s2.Stop() // Create new cluster with endpoint manager with two endpoints - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) em, err := endpoints.NewManager(clus.Client(0), "foo") @@ -126,7 +126,7 @@ func testEtcdGRPCResolver(t *testing.T, lbPolicy string) { // TestEtcdGrpcResolverPickFirst mimics scenarios described in grpc_naming.md doc. func TestEtcdGrpcResolverPickFirst(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) // Pick first is the default load balancer policy for grpc-go testEtcdGRPCResolver(t, "pick_first") @@ -134,14 +134,14 @@ func TestEtcdGrpcResolverPickFirst(t *testing.T) { // TestEtcdGrpcResolverRoundRobin mimics scenarios described in grpc_naming.md doc. func TestEtcdGrpcResolverRoundRobin(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) // Round robin is a common alternative for more production oriented scenarios testEtcdGRPCResolver(t, "round_robin") } func TestEtcdEndpointManager(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) s1PayloadBody := []byte{'1'} s1 := grpctesting.NewDummyStubServer(s1PayloadBody) @@ -155,7 +155,7 @@ func TestEtcdEndpointManager(t *testing.T) { require.NoError(t, err) defer s2.Stop() - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) // Check if any endpoint with the same prefix "foo" will not break the logic with multiple endpoints diff --git a/tests/integration/clientv3/ordering_kv_test.go b/tests/integration/clientv3/ordering_kv_test.go index bc6792f22002..4d81a6ad0296 100644 --- a/tests/integration/clientv3/ordering_kv_test.go +++ b/tests/integration/clientv3/ordering_kv_test.go @@ -24,14 +24,14 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/ordering" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestDetectKvOrderViolation(t *testing.T) { errOrderViolation := errors.New("DetectedOrderViolation") - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) cfg := clientv3.Config{ @@ -41,7 +41,7 @@ func TestDetectKvOrderViolation(t *testing.T) { clus.Members[2].GRPCURL, }, } - cli, err := integration2.NewClient(t, cfg) + cli, err := integration.NewClient(t, cfg) require.NoError(t, err) defer func() { assert.NoError(t, cli.Close()) }() ctx := t.Context() @@ -89,8 +89,8 @@ func TestDetectKvOrderViolation(t *testing.T) { func TestDetectTxnOrderViolation(t *testing.T) { errOrderViolation := errors.New("DetectedOrderViolation") - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) cfg := clientv3.Config{ @@ -100,7 +100,7 @@ func TestDetectTxnOrderViolation(t *testing.T) { clus.Members[2].GRPCURL, }, } - cli, err := integration2.NewClient(t, cfg) + cli, err := integration.NewClient(t, cfg) require.NoError(t, err) defer func() { assert.NoError(t, cli.Close()) }() ctx := t.Context() diff --git a/tests/integration/clientv3/ordering_util_test.go b/tests/integration/clientv3/ordering_util_test.go index 751309b27524..cd4d072ac081 100644 --- a/tests/integration/clientv3/ordering_util_test.go +++ b/tests/integration/clientv3/ordering_util_test.go @@ -23,15 +23,15 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/ordering" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) // TestEndpointSwitchResolvesViolation ensures // - ErrNoGreaterRev error is returned from partitioned member when it has stale revision // - no more error after partition recovers func TestEndpointSwitchResolvesViolation(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) eps := []string{ clus.Members[0].GRPCURL, @@ -39,7 +39,7 @@ func TestEndpointSwitchResolvesViolation(t *testing.T) { clus.Members[2].GRPCURL, } cfg := clientv3.Config{Endpoints: []string{clus.Members[0].GRPCURL}} - cli, err := integration2.NewClient(t, cfg) + cli, err := integration.NewClient(t, cfg) require.NoError(t, err) defer cli.Close() @@ -87,8 +87,8 @@ func TestEndpointSwitchResolvesViolation(t *testing.T) { // TestUnresolvableOrderViolation ensures ErrNoGreaterRev error is returned when available members only have stale revisions func TestUnresolvableOrderViolation(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 5, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 5, UseBridge: true}) defer clus.Terminate(t) cfg := clientv3.Config{ Endpoints: []string{ @@ -99,7 +99,7 @@ func TestUnresolvableOrderViolation(t *testing.T) { clus.Members[4].GRPCURL, }, } - cli, err := integration2.NewClient(t, cfg) + cli, err := integration.NewClient(t, cfg) require.NoError(t, err) defer cli.Close() eps := cli.Endpoints() diff --git a/tests/integration/clientv3/snapshot/v3_snapshot_test.go b/tests/integration/clientv3/snapshot/v3_snapshot_test.go index 24d566b5d28e..3148f680b4ee 100644 --- a/tests/integration/clientv3/snapshot/v3_snapshot_test.go +++ b/tests/integration/clientv3/snapshot/v3_snapshot_test.go @@ -32,7 +32,7 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/snapshot" "go.etcd.io/etcd/server/v3/embed" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) // TestSaveSnapshotFilePermissions ensures that the snapshot is saved with @@ -74,7 +74,7 @@ func newEmbedConfig(t *testing.T) *embed.Config { clusterN := 1 urls := newEmbedURLs(clusterN * 2) cURLs, pURLs := urls[:clusterN], urls[clusterN:] - cfg := integration2.NewEmbedConfig(t, "default") + cfg := integration.NewEmbedConfig(t, "default") cfg.ClusterState = "new" cfg.ListenClientUrls, cfg.AdvertiseClientUrls = cURLs, cURLs cfg.ListenPeerUrls, cfg.AdvertisePeerUrls = pURLs, pURLs @@ -99,7 +99,7 @@ func createSnapshotFile(t *testing.T, cfg *embed.Config, kvs []kv) (version stri } ccfg := clientv3.Config{Endpoints: []string{cfg.AdvertiseClientUrls[0].String()}} - cli, err := integration2.NewClient(t, ccfg) + cli, err := integration.NewClient(t, ccfg) require.NoError(t, err) defer cli.Close() for i := range kvs { diff --git a/tests/integration/clientv3/txn_test.go b/tests/integration/clientv3/txn_test.go index 9f62ff5a3c6b..985136ba8a3f 100644 --- a/tests/integration/clientv3/txn_test.go +++ b/tests/integration/clientv3/txn_test.go @@ -26,13 +26,13 @@ import ( "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/server/v3/embed" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestTxnError(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) kv := clus.RandClient() @@ -54,9 +54,9 @@ func TestTxnError(t *testing.T) { } func TestTxnWriteFail(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) kv := clus.Client(0) @@ -104,9 +104,9 @@ func TestTxnWriteFail(t *testing.T) { func TestTxnReadRetry(t *testing.T) { t.Skipf("skipping txn read retry test: re-enable after we do retry on txn read request") - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) kv := clus.Client(0) @@ -143,9 +143,9 @@ func TestTxnReadRetry(t *testing.T) { } func TestTxnSuccess(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) kv := clus.Client(0) @@ -162,9 +162,9 @@ func TestTxnSuccess(t *testing.T) { } func TestTxnCompareRange(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) kv := clus.Client(0) @@ -184,9 +184,9 @@ func TestTxnCompareRange(t *testing.T) { } func TestTxnNested(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) kv := clus.Client(0) diff --git a/tests/integration/clientv3/user_test.go b/tests/integration/clientv3/user_test.go index 18593dff0b84..3244d931e3b8 100644 --- a/tests/integration/clientv3/user_test.go +++ b/tests/integration/clientv3/user_test.go @@ -25,13 +25,13 @@ import ( "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestUserError(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) authapi := clus.RandClient() @@ -50,9 +50,9 @@ func TestUserError(t *testing.T) { } func TestAddUserAfterDelete(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) authapi := clus.RandClient() @@ -63,7 +63,7 @@ func TestAddUserAfterDelete(t *testing.T) { DialOptions: []grpc.DialOption{grpc.WithBlock()}, } cfg.Username, cfg.Password = "root", "123" - authed, err := integration2.NewClient(t, cfg) + authed, err := integration.NewClient(t, cfg) require.NoError(t, err) defer authed.Close() @@ -100,9 +100,9 @@ func TestAddUserAfterDelete(t *testing.T) { } func TestUserErrorAuth(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) authapi := clus.RandClient() @@ -119,14 +119,14 @@ func TestUserErrorAuth(t *testing.T) { DialOptions: []grpc.DialOption{grpc.WithBlock()}, } cfg.Username, cfg.Password = "wrong-id", "123" - _, err = integration2.NewClient(t, cfg) + _, err = integration.NewClient(t, cfg) require.ErrorIsf(t, err, rpctypes.ErrAuthFailed, "expected %v, got %v", rpctypes.ErrAuthFailed, err) cfg.Username, cfg.Password = "root", "wrong-pass" - _, err = integration2.NewClient(t, cfg) + _, err = integration.NewClient(t, cfg) require.ErrorIsf(t, err, rpctypes.ErrAuthFailed, "expected %v, got %v", rpctypes.ErrAuthFailed, err) cfg.Username, cfg.Password = "root", "123" - authed, err := integration2.NewClient(t, cfg) + authed, err := integration.NewClient(t, cfg) require.NoError(t, err) defer authed.Close() @@ -148,9 +148,9 @@ func authSetupRoot(t *testing.T, auth clientv3.Auth) { // TestGetTokenWithoutAuth is when Client can connect to etcd even if they // supply credentials and the server is in AuthDisable mode. func TestGetTokenWithoutAuth(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 2}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 2}) defer clus.Terminate(t) authapi := clus.RandClient() @@ -170,7 +170,7 @@ func TestGetTokenWithoutAuth(t *testing.T) { Password: "123", } - client, err = integration2.NewClient(t, cfg) + client, err = integration.NewClient(t, cfg) if err == nil { defer client.Close() } diff --git a/tests/integration/clientv3/util.go b/tests/integration/clientv3/util.go index b7887339e84c..e2fd11d25f3b 100644 --- a/tests/integration/clientv3/util.go +++ b/tests/integration/clientv3/util.go @@ -26,7 +26,7 @@ import ( "google.golang.org/grpc/status" clientv3 "go.etcd.io/etcd/client/v3" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) // MustWaitPinReady waits up to 3-second until connection is up (pin endpoint). @@ -108,7 +108,7 @@ func IsUnavailable(err error) bool { // populateDataIntoCluster populates the key-value pairs into cluster and the // key will be named by testing.T.Name()-index. -func populateDataIntoCluster(t *testing.T, cluster *integration2.Cluster, numKeys int, valueSize int) { +func populateDataIntoCluster(t *testing.T, cluster *integration.Cluster, numKeys int, valueSize int) { ctx := t.Context() for i := 0; i < numKeys; i++ { diff --git a/tests/integration/clientv3/watch/watch_fragment_test.go b/tests/integration/clientv3/watch/watch_fragment_test.go index f284c6ee2125..3c28e73d8a72 100644 --- a/tests/integration/clientv3/watch/watch_fragment_test.go +++ b/tests/integration/clientv3/watch/watch_fragment_test.go @@ -26,7 +26,7 @@ import ( "go.etcd.io/etcd/client/pkg/v3/testutil" clientv3 "go.etcd.io/etcd/client/v3" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) // TestWatchFragmentDisable ensures that large watch @@ -64,16 +64,16 @@ func TestWatchFragmentEnableWithGRPCLimit(t *testing.T) { // testWatchFragment triggers watch response that spans over multiple // revisions exceeding server request limits when combined. func testWatchFragment(t *testing.T, fragment, exceedRecvLimit bool) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - cfg := &integration2.ClusterConfig{ + cfg := &integration.ClusterConfig{ Size: 1, MaxRequestBytes: 1.5 * 1024 * 1024, } if exceedRecvLimit { cfg.ClientMaxCallRecvMsgSize = 1.5 * 1024 * 1024 } - clus := integration2.NewCluster(t, cfg) + clus := integration.NewCluster(t, cfg) defer clus.Terminate(t) cli := clus.Client(0) diff --git a/tests/integration/clientv3/watch/watch_test.go b/tests/integration/clientv3/watch/watch_test.go index 4a077eef924f..ce32153e21b8 100644 --- a/tests/integration/clientv3/watch/watch_test.go +++ b/tests/integration/clientv3/watch/watch_test.go @@ -36,13 +36,13 @@ import ( "go.etcd.io/etcd/api/v3/version" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/server/v3/etcdserver/api/v3rpc" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) type watcherTest func(*testing.T, *watchctx) type watchctx struct { - clus *integration2.Cluster + clus *integration.Cluster w clientv3.Watcher kv clientv3.KV wclientMember int @@ -51,9 +51,9 @@ type watchctx struct { } func runWatchTest(t *testing.T, f watcherTest) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) wclientMember := rand.Intn(3) @@ -337,8 +337,8 @@ func putAndWatch(t *testing.T, wctx *watchctx, key, val string) { // TestWatchResumeAfterDisconnect tests watch resume after member disconnects then connects. // It ensures that correct events are returned corresponding to the start revision. func TestWatchResumeAfterDisconnect(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) cli := clus.Client(0) @@ -392,9 +392,9 @@ func TestWatchResumeAfterDisconnect(t *testing.T) { // either a compaction error or all keys by staying in sync before the compaction // is finally applied. func TestWatchResumeCompacted(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, UseBridge: true}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true}) defer clus.Terminate(t) // create a waiting watcher at rev 1 @@ -465,9 +465,9 @@ func TestWatchResumeCompacted(t *testing.T) { // TestWatchCompactRevision ensures the CompactRevision error is given on a // compaction event ahead of a watcher. func TestWatchCompactRevision(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) // set some keys @@ -505,7 +505,7 @@ func TestWatchWithProgressNotify2(t *testing.T) { testWatchWithProgressNot func TestWatchWithProgressNotifyNoEvent(t *testing.T) { testWatchWithProgressNotify(t, false) } func testWatchWithProgressNotify(t *testing.T, watchOnPut bool) { - integration2.BeforeTest(t) + integration.BeforeTest(t) // accelerate report interval so test terminates quickly oldpi := v3rpc.GetProgressReportInterval() @@ -514,7 +514,7 @@ func testWatchWithProgressNotify(t *testing.T, watchOnPut bool) { pi := 3 * time.Second defer func() { v3rpc.SetProgressReportInterval(oldpi) }() - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) wc := clus.RandClient() @@ -560,11 +560,11 @@ func testWatchWithProgressNotify(t *testing.T, watchOnPut bool) { } func TestConfigurableWatchProgressNotifyInterval(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) progressInterval := 200 * time.Millisecond - clus := integration2.NewCluster(t, - &integration2.ClusterConfig{ + clus := integration.NewCluster(t, + &integration.ClusterConfig{ Size: 3, WatchProgressNotifyInterval: progressInterval, }) @@ -586,7 +586,7 @@ func TestConfigurableWatchProgressNotifyInterval(t *testing.T) { } func TestWatchRequestProgress(t *testing.T) { - if integration2.ThroughProxy { + if integration.ThroughProxy { t.Skipf("grpc-proxy does not support WatchProgress yet") } testCases := []struct { @@ -600,11 +600,11 @@ func TestWatchRequestProgress(t *testing.T) { for _, c := range testCases { t.Run(c.name, func(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) watchTimeout := 3 * time.Second - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) wc := clus.RandClient() @@ -648,9 +648,9 @@ func TestWatchRequestProgress(t *testing.T) { } func TestWatchEventType(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - cluster := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + cluster := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer cluster.Terminate(t) client := cluster.RandClient() @@ -716,9 +716,9 @@ func TestWatchEventType(t *testing.T) { } func TestWatchErrConnClosed(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) @@ -737,7 +737,7 @@ func TestWatchErrConnClosed(t *testing.T) { clus.TakeClient(0) select { - case <-time.After(integration2.RequestWaitTimeout): + case <-time.After(integration.RequestWaitTimeout): t.Fatal("wc.Watch took too long") case <-donec: } @@ -759,9 +759,9 @@ func IsCanceled(err error) bool { } func TestWatchAfterClose(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) @@ -777,7 +777,7 @@ func TestWatchAfterClose(t *testing.T) { close(donec) }() select { - case <-time.After(integration2.RequestWaitTimeout): + case <-time.After(integration.RequestWaitTimeout): t.Fatal("wc.Watch took too long") case <-donec: } @@ -785,9 +785,9 @@ func TestWatchAfterClose(t *testing.T) { // TestWatchWithRequireLeader checks the watch channel closes when no leader. func TestWatchWithRequireLeader(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) defer clus.Terminate(t) // Put a key for the non-require leader watch to read as an event. @@ -818,14 +818,14 @@ func TestWatchWithRequireLeader(t *testing.T) { case resp, ok := <-chLeader: require.Truef(t, ok, "expected %v watch channel, got closed channel", rpctypes.ErrNoLeader) require.ErrorIsf(t, resp.Err(), rpctypes.ErrNoLeader, "expected %v watch response error, got %+v", rpctypes.ErrNoLeader, resp) - case <-time.After(integration2.RequestWaitTimeout): + case <-time.After(integration.RequestWaitTimeout): t.Fatal("watch without leader took too long to close") } select { case resp, ok := <-chLeader: require.Falsef(t, ok, "expected closed channel, got response %v", resp) - case <-time.After(integration2.RequestWaitTimeout): + case <-time.After(integration.RequestWaitTimeout): t.Fatal("waited too long for channel to close") } @@ -845,9 +845,9 @@ func TestWatchWithRequireLeader(t *testing.T) { // TestWatchWithFilter checks that watch filtering works. func TestWatchWithFilter(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - cluster := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + cluster := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer cluster.Terminate(t) client := cluster.RandClient() @@ -882,9 +882,9 @@ func TestWatchWithFilter(t *testing.T) { // TestWatchWithCreatedNotification checks that WithCreatedNotify returns a // Created watch response. func TestWatchWithCreatedNotification(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - cluster := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + cluster := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer cluster.Terminate(t) client := cluster.RandClient() @@ -902,9 +902,9 @@ func TestWatchWithCreatedNotification(t *testing.T) { // a watcher with created notify does not post duplicate // created events from disconnect. func TestWatchWithCreatedNotificationDropConn(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - cluster := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + cluster := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer cluster.Terminate(t) client := cluster.RandClient() @@ -929,9 +929,9 @@ func TestWatchWithCreatedNotificationDropConn(t *testing.T) { // TestWatchCancelOnServer ensures client watcher cancels propagate back to the server. func TestWatchCancelOnServer(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - cluster := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + cluster := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer cluster.Terminate(t) client := cluster.RandClient() @@ -993,20 +993,20 @@ func TestWatchCancelOnServer(t *testing.T) { // 4. watcher client finishes tearing down stream on "ctx" // 5. w2 comes back canceled func TestWatchOverlapContextCancel(t *testing.T) { - f := func(clus *integration2.Cluster) {} + f := func(clus *integration.Cluster) {} testWatchOverlapContextCancel(t, f) } func TestWatchOverlapDropConnContextCancel(t *testing.T) { - f := func(clus *integration2.Cluster) { + f := func(clus *integration.Cluster) { clus.Members[0].Bridge().DropConnections() } testWatchOverlapContextCancel(t, f) } -func testWatchOverlapContextCancel(t *testing.T, f func(*integration2.Cluster)) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) +func testWatchOverlapContextCancel(t *testing.T, f func(*integration.Cluster)) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) n := 100 @@ -1073,8 +1073,8 @@ func testWatchOverlapContextCancel(t *testing.T, f func(*integration2.Cluster)) // TestWatchCancelAndCloseClient ensures that canceling a watcher then immediately // closing the client does not return a client closing error. func TestWatchCancelAndCloseClient(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) ctx, cancel := context.WithCancel(t.Context()) @@ -1101,8 +1101,8 @@ func TestWatchCancelAndCloseClient(t *testing.T) { // to put them in resuming mode, cancels them so some resumes by cancel fail, // then closes the watcher interface to ensure correct clean up. func TestWatchStressResumeClose(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) defer clus.Terminate(t) cli := clus.Client(0) @@ -1121,8 +1121,8 @@ func TestWatchStressResumeClose(t *testing.T) { // TestWatchCancelDisconnected ensures canceling a watcher works when // its grpc stream is disconnected / reconnecting. func TestWatchCancelDisconnected(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) ctx, cancel := context.WithCancel(t.Context()) @@ -1153,8 +1153,8 @@ func testWatchClose(t *testing.T, wctx *watchctx) { } func TestWatch(t *testing.T) { - integration2.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) t.Cleanup(func() { clus.Terminate(t) }) client := clus.Client(0) diff --git a/tests/integration/embed/embed_test.go b/tests/integration/embed/embed_test.go index b7de67c7abf1..bab48dbf2bdf 100644 --- a/tests/integration/embed/embed_test.go +++ b/tests/integration/embed/embed_test.go @@ -35,7 +35,7 @@ import ( "go.etcd.io/etcd/client/pkg/v3/transport" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/server/v3/embed" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" "go.etcd.io/etcd/tests/v3/framework/testutils" ) @@ -154,7 +154,7 @@ func testEmbedEtcdGracefulStop(t *testing.T, secure bool) { clientCfg.TLS, err = testTLSInfo.ClientConfig() require.NoError(t, err) } - cli, err := integration2.NewClient(t, clientCfg) + cli, err := integration.NewClient(t, clientCfg) require.NoError(t, err) defer cli.Close() @@ -218,7 +218,7 @@ func TestEmbedEtcdAutoCompactionRetentionRetained(t *testing.T) { } func TestEmbedEtcdStopDuringBootstrapping(t *testing.T) { - integration2.BeforeTest(t, integration2.WithFailpoint("beforePublishing", `sleep("2s")`)) + integration.BeforeTest(t, integration.WithFailpoint("beforePublishing", `sleep("2s")`)) done := make(chan struct{}) go func() { diff --git a/tests/integration/proxy/grpcproxy/cluster_test.go b/tests/integration/proxy/grpcproxy/cluster_test.go index b7276c78f383..3d398b75a438 100644 --- a/tests/integration/proxy/grpcproxy/cluster_test.go +++ b/tests/integration/proxy/grpcproxy/cluster_test.go @@ -30,13 +30,13 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/naming/endpoints" "go.etcd.io/etcd/server/v3/proxy/grpcproxy" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestClusterProxyMemberList(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) lg := zaptest.NewLogger(t) @@ -50,7 +50,7 @@ func TestClusterProxyMemberList(t *testing.T) { Endpoints: []string{cts.caddr}, DialTimeout: 5 * time.Second, } - client, err := integration2.NewClient(t, cfg) + client, err := integration.NewClient(t, cfg) require.NoErrorf(t, err, "err %v, want nil", err) defer client.Close() @@ -115,7 +115,7 @@ func newClusterProxyServer(lg *zap.Logger, endpoints []string, prefix string, t Endpoints: endpoints, DialTimeout: 5 * time.Second, } - client, err := integration2.NewClient(t, cfg) + client, err := integration.NewClient(t, cfg) require.NoError(t, err) cts := &clusterproxyTestServer{ diff --git a/tests/integration/proxy/grpcproxy/kv_test.go b/tests/integration/proxy/grpcproxy/kv_test.go index 8fd274f149a9..9748de9d3279 100644 --- a/tests/integration/proxy/grpcproxy/kv_test.go +++ b/tests/integration/proxy/grpcproxy/kv_test.go @@ -25,13 +25,13 @@ import ( pb "go.etcd.io/etcd/api/v3/etcdserverpb" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/server/v3/proxy/grpcproxy" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestKVProxyRange(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) kvts := newKVProxyServer([]string{clus.Members[0].GRPCURL}, t) @@ -42,7 +42,7 @@ func TestKVProxyRange(t *testing.T) { Endpoints: []string{kvts.l.Addr().String()}, DialTimeout: 5 * time.Second, } - client, err := integration2.NewClient(t, cfg) + client, err := integration.NewClient(t, cfg) require.NoErrorf(t, err, "err = %v, want nil", err) _, err = client.Get(t.Context(), "foo") require.NoErrorf(t, err, "err = %v, want nil", err) @@ -67,7 +67,7 @@ func newKVProxyServer(endpoints []string, t *testing.T) *kvproxyTestServer { Endpoints: endpoints, DialTimeout: 5 * time.Second, } - client, err := integration2.NewClient(t, cfg) + client, err := integration.NewClient(t, cfg) require.NoError(t, err) kvp, _ := grpcproxy.NewKvProxy(client) diff --git a/tests/integration/proxy/grpcproxy/register_test.go b/tests/integration/proxy/grpcproxy/register_test.go index 855975360802..1ea252e16a59 100644 --- a/tests/integration/proxy/grpcproxy/register_test.go +++ b/tests/integration/proxy/grpcproxy/register_test.go @@ -24,13 +24,13 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/naming/endpoints" "go.etcd.io/etcd/server/v3/proxy/grpcproxy" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestRegister(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) cli := clus.Client(0) paddr := clus.Members[0].GRPCURL diff --git a/tests/integration/snapshot/member_test.go b/tests/integration/snapshot/member_test.go index e25ab885311a..de4baec62c0c 100644 --- a/tests/integration/snapshot/member_test.go +++ b/tests/integration/snapshot/member_test.go @@ -26,14 +26,14 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/server/v3/embed" "go.etcd.io/etcd/server/v3/etcdserver" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) // TestSnapshotV3RestoreMultiMemberAdd ensures that multiple members // can boot into the same cluster after being restored from a same // snapshot file, and also be able to add another member to the cluster. func TestSnapshotV3RestoreMultiMemberAdd(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) kvs := []kv{{"foo1", "bar1"}, {"foo2", "bar2"}, {"foo3", "bar3"}} dbPath := createSnapshotFile(t, kvs) @@ -50,7 +50,7 @@ func TestSnapshotV3RestoreMultiMemberAdd(t *testing.T) { // wait for health interval + leader election time.Sleep(etcdserver.HealthInterval + 2*time.Second) - cli, err := integration2.NewClient(t, clientv3.Config{Endpoints: []string{cURLs[0].String()}}) + cli, err := integration.NewClient(t, clientv3.Config{Endpoints: []string{cURLs[0].String()}}) require.NoError(t, err) defer cli.Close() @@ -62,7 +62,7 @@ func TestSnapshotV3RestoreMultiMemberAdd(t *testing.T) { // wait for membership reconfiguration apply time.Sleep(testutil.ApplyTimeout) - cfg := integration2.NewEmbedConfig(t, "3") + cfg := integration.NewEmbedConfig(t, "3") cfg.InitialClusterToken = testClusterTkn cfg.ClusterState = "existing" cfg.ListenClientUrls, cfg.AdvertiseClientUrls = newCURLs, newCURLs @@ -85,7 +85,7 @@ func TestSnapshotV3RestoreMultiMemberAdd(t *testing.T) { t.Fatalf("failed to start the newly added etcd member") } - cli2, err := integration2.NewClient(t, clientv3.Config{Endpoints: []string{newCURLs[0].String()}}) + cli2, err := integration.NewClient(t, clientv3.Config{Endpoints: []string{newCURLs[0].String()}}) require.NoError(t, err) defer cli2.Close() diff --git a/tests/integration/snapshot/v3_snapshot_test.go b/tests/integration/snapshot/v3_snapshot_test.go index edbf20e9861e..4ceba94d5949 100644 --- a/tests/integration/snapshot/v3_snapshot_test.go +++ b/tests/integration/snapshot/v3_snapshot_test.go @@ -34,14 +34,14 @@ import ( "go.etcd.io/etcd/etcdutl/v3/snapshot" "go.etcd.io/etcd/pkg/v3/cpuutil" "go.etcd.io/etcd/server/v3/embed" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" "go.etcd.io/etcd/tests/v3/framework/testutils" ) // TestSnapshotV3RestoreSingle tests single node cluster restoring // from a snapshot file. func TestSnapshotV3RestoreSingle(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) kvs := []kv{{"foo1", "bar1"}, {"foo2", "bar2"}, {"foo3", "bar3"}} dbPath := createSnapshotFile(t, kvs) @@ -49,7 +49,7 @@ func TestSnapshotV3RestoreSingle(t *testing.T) { urls := newEmbedURLs(t, clusterN*2) cURLs, pURLs := urls[:clusterN], urls[clusterN:] - cfg := integration2.NewEmbedConfig(t, "s1") + cfg := integration.NewEmbedConfig(t, "s1") cfg.InitialClusterToken = testClusterTkn cfg.ClusterState = "existing" cfg.ListenClientUrls, cfg.AdvertiseClientUrls = cURLs, cURLs @@ -83,7 +83,7 @@ func TestSnapshotV3RestoreSingle(t *testing.T) { } var cli *clientv3.Client - cli, err = integration2.NewClient(t, clientv3.Config{Endpoints: []string{cfg.AdvertiseClientUrls[0].String()}}) + cli, err = integration.NewClient(t, clientv3.Config{Endpoints: []string{cfg.AdvertiseClientUrls[0].String()}}) require.NoError(t, err) defer cli.Close() for i := range kvs { @@ -98,7 +98,7 @@ func TestSnapshotV3RestoreSingle(t *testing.T) { // can boot into the same cluster after being restored from a same // snapshot file. func TestSnapshotV3RestoreMulti(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) kvs := []kv{{"foo1", "bar1"}, {"foo2", "bar2"}, {"foo3", "bar3"}} dbPath := createSnapshotFile(t, kvs) @@ -114,7 +114,7 @@ func TestSnapshotV3RestoreMulti(t *testing.T) { time.Sleep(time.Second) for i := 0; i < clusterN; i++ { - cli, err := integration2.NewClient(t, clientv3.Config{Endpoints: []string{cURLs[i].String()}}) + cli, err := integration.NewClient(t, clientv3.Config{Endpoints: []string{cURLs[i].String()}}) require.NoError(t, err) defer cli.Close() for i := range kvs { @@ -132,7 +132,7 @@ func TestCorruptedBackupFileCheck(t *testing.T) { t.Skipf("skipping on big endian platforms since testdata/corrupted_backup.db is in little endian format") } dbPath := testutils.MustAbsPath("testdata/corrupted_backup.db") - integration2.BeforeTest(t) + integration.BeforeTest(t) _, err := os.Stat(dbPath) require.NoErrorf(t, err, "test file [%s] does not exist: %v", dbPath, err) @@ -166,7 +166,7 @@ func createSnapshotFile(t *testing.T, kvs []kv) string { urls := newEmbedURLs(t, clusterN*2) cURLs, pURLs := urls[:clusterN], urls[clusterN:] - cfg := integration2.NewEmbedConfig(t, "default") + cfg := integration.NewEmbedConfig(t, "default") cfg.ClusterState = "new" cfg.ListenClientUrls, cfg.AdvertiseClientUrls = cURLs, cURLs cfg.ListenPeerUrls, cfg.AdvertisePeerUrls = pURLs, pURLs @@ -183,7 +183,7 @@ func createSnapshotFile(t *testing.T, kvs []kv) string { } ccfg := clientv3.Config{Endpoints: []string{cfg.AdvertiseClientUrls[0].String()}} - cli, err := integration2.NewClient(t, ccfg) + cli, err := integration.NewClient(t, ccfg) require.NoError(t, err) defer cli.Close() for i := range kvs { @@ -218,7 +218,7 @@ func restoreCluster(t *testing.T, clusterN int, dbPath string) ( cfgs := make([]*embed.Config, clusterN) for i := 0; i < clusterN; i++ { - cfg := integration2.NewEmbedConfig(t, fmt.Sprintf("m%d", i)) + cfg := integration.NewEmbedConfig(t, fmt.Sprintf("m%d", i)) cfg.InitialClusterToken = testClusterTkn cfg.ClusterState = "existing" cfg.ListenClientUrls, cfg.AdvertiseClientUrls = []url.URL{cURLs[i]}, []url.URL{cURLs[i]} @@ -270,7 +270,7 @@ func restoreCluster(t *testing.T, clusterN int, dbPath string) ( func newEmbedURLs(t testutil.TB, n int) (urls []url.URL) { urls = make([]url.URL, n) for i := 0; i < n; i++ { - l := integration2.NewLocalListener(t) + l := integration.NewLocalListener(t) defer l.Close() u, err := url.Parse(fmt.Sprintf("unix://%s", l.Addr())) diff --git a/tests/integration/testing_test.go b/tests/integration/testing_test.go index f49e58d83d77..3f7e4229c7f2 100644 --- a/tests/integration/testing_test.go +++ b/tests/integration/testing_test.go @@ -17,11 +17,11 @@ package integration_test import ( "testing" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) func TestBeforeTestWithoutLeakDetection(t *testing.T) { - integration2.BeforeTest(t, integration2.WithoutGoLeakDetection(), integration2.WithoutSkipInShort()) + integration.BeforeTest(t, integration.WithoutGoLeakDetection(), integration.WithoutSkipInShort()) // Intentional leak that should get ignored go func() { }() diff --git a/tests/integration/v2store/store_tag_test.go b/tests/integration/v2store/store_tag_test.go index b735104e8224..81196d9382b8 100644 --- a/tests/integration/v2store/store_tag_test.go +++ b/tests/integration/v2store/store_tag_test.go @@ -21,12 +21,12 @@ import ( "github.com/stretchr/testify/require" "go.etcd.io/etcd/server/v3/etcdserver/api/v2store" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" ) // TestStoreRecover ensures that the store can recover from a previously saved state. func TestStoreRecover(t *testing.T) { - integration2.BeforeTest(t) + integration.BeforeTest(t) s := v2store.New() var eidx uint64 = 4 s.Create("/foo", true, "", false, v2store.TTLOptionSet{ExpireTime: v2store.Permanent}) diff --git a/tests/integration/v3_failover_test.go b/tests/integration/v3_failover_test.go index f6daef67b0b6..489fd34b4f6d 100644 --- a/tests/integration/v3_failover_test.go +++ b/tests/integration/v3_failover_test.go @@ -27,14 +27,14 @@ import ( "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" - integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "go.etcd.io/etcd/tests/v3/framework/integration" clientv3test "go.etcd.io/etcd/tests/v3/integration/clientv3" ) func TestFailover(t *testing.T) { cases := []struct { name string - testFunc func(*testing.T, *tls.Config, *integration2.Cluster) (*clientv3.Client, error) + testFunc func(*testing.T, *tls.Config, *integration.Cluster) (*clientv3.Client, error) }{ { name: "create client before the first server down", @@ -49,14 +49,14 @@ func TestFailover(t *testing.T) { for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { t.Logf("Starting test [%s]", tc.name) - integration2.BeforeTest(t) + integration.BeforeTest(t) // Launch an etcd cluster with 3 members t.Logf("Launching an etcd cluster with 3 members [%s]", tc.name) - clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 3, ClientTLS: &integration2.TestTLSInfo}) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, ClientTLS: &integration.TestTLSInfo}) defer clus.Terminate(t) - cc, err := integration2.TestTLSInfo.ClientConfig() + cc, err := integration.TestTLSInfo.ClientConfig() require.NoError(t, err) // Create an etcd client before or after first server down t.Logf("Creating an etcd client [%s]", tc.name) @@ -75,7 +75,7 @@ func TestFailover(t *testing.T) { } } -func createClientBeforeServerDown(t *testing.T, cc *tls.Config, clus *integration2.Cluster) (*clientv3.Client, error) { +func createClientBeforeServerDown(t *testing.T, cc *tls.Config, clus *integration.Cluster) (*clientv3.Client, error) { cli, err := createClient(t, cc, clus) if err != nil { return nil, err @@ -84,13 +84,13 @@ func createClientBeforeServerDown(t *testing.T, cc *tls.Config, clus *integratio return cli, nil } -func createClientAfterServerDown(t *testing.T, cc *tls.Config, clus *integration2.Cluster) (*clientv3.Client, error) { +func createClientAfterServerDown(t *testing.T, cc *tls.Config, clus *integration.Cluster) (*clientv3.Client, error) { clus.Members[0].Close() return createClient(t, cc, clus) } -func createClient(t *testing.T, cc *tls.Config, clus *integration2.Cluster) (*clientv3.Client, error) { - cli, err := integration2.NewClient(t, clientv3.Config{ +func createClient(t *testing.T, cc *tls.Config, clus *integration.Cluster) (*clientv3.Client, error) { + cli, err := integration.NewClient(t, clientv3.Config{ Endpoints: clus.Endpoints(), DialTimeout: 5 * time.Second, DialOptions: []grpc.DialOption{grpc.WithBlock()}, From d37c1432b519baf185d71967f8b150d9164a5441 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 24 Sep 2025 22:24:26 -0700 Subject: [PATCH 0552/1068] Add golang.org/x/tools/cmd/goimports tool dependency This missing dependency was caught by the weekly dependency bump from 2025-09-22 (#20703). Even though golang.org/x/tools/cmd/goimports is installed through `tools/mod`, it was never defined in that module. Signed-off-by: Ivan Valdes --- tools/mod/go.mod | 2 +- tools/mod/tools.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index d06b0e7156aa..fc19957a8fea 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -17,6 +17,7 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 + golang.org/x/tools v0.36.0 gotest.tools/gotestsum v1.13.0 gotest.tools/v3 v3.5.2 honnef.co/go/tools v0.6.1 @@ -241,7 +242,6 @@ require ( golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.35.0 // indirect golang.org/x/text v0.29.0 // indirect - golang.org/x/tools v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect google.golang.org/grpc v1.75.1 // indirect diff --git a/tools/mod/tools.go b/tools/mod/tools.go index 8f22d22576fd..cb62ea2afff1 100644 --- a/tools/mod/tools.go +++ b/tools/mod/tools.go @@ -31,6 +31,7 @@ import ( _ "github.com/google/yamlfmt/cmd/yamlfmt" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2" + _ "golang.org/x/tools/cmd/goimports" _ "gotest.tools/gotestsum" _ "gotest.tools/v3" _ "honnef.co/go/tools/cmd/staticcheck" From 7e1457085005647d7141b283c7fbc514383cd905 Mon Sep 17 00:00:00 2001 From: yajianggroup Date: Sun, 28 Sep 2025 16:00:23 +0800 Subject: [PATCH 0553/1068] chore: fix some typos in comment Signed-off-by: yajianggroup --- client/pkg/testutil/leak.go | 2 +- client/v3/client_test.go | 2 +- client/v3/watch.go | 2 +- pkg/expect/expect.go | 2 +- pkg/grpctesting/stub_server.go | 2 +- server/etcdserver/api/v3discovery/discovery_test.go | 2 +- server/proxy/grpcproxy/watch_broadcasts.go | 2 +- server/storage/mvcc/watchable_store_test.go | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/client/pkg/testutil/leak.go b/client/pkg/testutil/leak.go index ce859ef530fa..31db0e5fdf16 100644 --- a/client/pkg/testutil/leak.go +++ b/client/pkg/testutil/leak.go @@ -112,7 +112,7 @@ func RegisterLeakDetection(t TB) { // It will detect common goroutine leaks, retrying in case there are goroutines // not synchronously torn down, and fail the test if any goroutines are stuck. func afterTest(t TB) { - // If test-failed the leaked goroutines list is hidding the real + // If the test fails, the leaked goroutines list may hide the real // source of problem. if !t.Failed() { if err := CheckAfterTest(1 * time.Second); err != nil { diff --git a/client/v3/client_test.go b/client/v3/client_test.go index 14b4af2df0bd..151c24166920 100644 --- a/client/v3/client_test.go +++ b/client/v3/client_test.go @@ -353,7 +353,7 @@ func TestNewWithOnlyJWT(t *testing.T) { } if tok, ok := meta[rpctypes.TokenFieldNameGRPC]; !ok { - t.Error("Token was not successfuly set in the auth bundle") + t.Error("Token was not successfully set in the auth bundle") } else if tok != "foo" { t.Errorf("Incorrect token set in auth bundle, got '%s', expected 'foo'", tok) } diff --git a/client/v3/watch.go b/client/v3/watch.go index c68ea7d7e208..389738d1c4d4 100644 --- a/client/v3/watch.go +++ b/client/v3/watch.go @@ -896,7 +896,7 @@ func (w *watchGRPCStream) newWatchClient() (pb.Watch_WatchClient, error) { w.resuming = resuming w.substreams = make(map[int64]*watcherStream) - // connect to grpc stream while accepting watcher cancelation + // connect to grpc stream while accepting watcher cancellation stopc := make(chan struct{}) donec := w.waitCancelSubstreams(stopc) wc, err := w.openWatchClient() diff --git a/pkg/expect/expect.go b/pkg/expect/expect.go index 8aab16e52a4e..2904e4bc98ff 100644 --- a/pkg/expect/expect.go +++ b/pkg/expect/expect.go @@ -198,7 +198,7 @@ func (ep *ExpectProcess) ExpectFunc(ctx context.Context, f func(string) bool) (s } select { - // NOTE: we wait readCloseCh for ep.read() to complete draining the log before acquring the lock. + // NOTE: we wait readCloseCh for ep.read() to complete draining the log before acquiring the lock. case <-ep.readCloseCh: case <-ctx.Done(): return "", fmt.Errorf("context done before to found matching log") diff --git a/pkg/grpctesting/stub_server.go b/pkg/grpctesting/stub_server.go index bdc991cbed20..fbd7e3f4ae81 100644 --- a/pkg/grpctesting/stub_server.go +++ b/pkg/grpctesting/stub_server.go @@ -25,7 +25,7 @@ import ( testpb "google.golang.org/grpc/interop/grpc_testing" ) -// StubServer is borrowed from the interal package of grpc-go. +// StubServer is borrowed from the internal package of grpc-go. // See https://github.com/grpc/grpc-go/blob/master/internal/stubserver/stubserver.go // Since it cannot be imported directly, we have to copy and paste it here, // and useless code for our testing is removed. diff --git a/server/etcdserver/api/v3discovery/discovery_test.go b/server/etcdserver/api/v3discovery/discovery_test.go index a442ba9bcf0b..e0834f9825c1 100644 --- a/server/etcdserver/api/v3discovery/discovery_test.go +++ b/server/etcdserver/api/v3discovery/discovery_test.go @@ -496,7 +496,7 @@ func TestRegisterSelf(t *testing.T) { } if err := d.registerSelf(tc.expectedRegValue); err != nil { - t.Errorf("Error occuring on register member self: %v", err) + t.Errorf("Error occurring on register member self: %v", err) } if fkv.retries != 0 { diff --git a/server/proxy/grpcproxy/watch_broadcasts.go b/server/proxy/grpcproxy/watch_broadcasts.go index dacd3007d1de..0b99b22cc958 100644 --- a/server/proxy/grpcproxy/watch_broadcasts.go +++ b/server/proxy/grpcproxy/watch_broadcasts.go @@ -30,7 +30,7 @@ type watchBroadcasts struct { donec chan struct{} } -// maxCoalesceRecievers prevents a popular watchBroadcast from being coalseced. +// maxCoalesceRecievers prevents a popular watchBroadcast from being coalesced. const maxCoalesceReceivers = 5 func newWatchBroadcasts(wp *watchProxy) *watchBroadcasts { diff --git a/server/storage/mvcc/watchable_store_test.go b/server/storage/mvcc/watchable_store_test.go index cd3c06e0b874..ecfe03bfb14d 100644 --- a/server/storage/mvcc/watchable_store_test.go +++ b/server/storage/mvcc/watchable_store_test.go @@ -615,7 +615,7 @@ func testWatchRestore(t *testing.T, delayBeforeRestore, delayAfterRestore time.D }, }, { - name: "revsion before first write", + name: "revision before first write", startRevision: 1, wantEvents: []mvccpb.Event{ {Type: mvccpb.PUT, Kv: &mvccpb.KeyValue{Key: testKey, Value: testValue, CreateRevision: 2, ModRevision: 2, Version: 1}}, From a444b46a9f3789c7a9f167df1e764afe1e679de7 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 27 Sep 2025 15:28:42 +0200 Subject: [PATCH 0554/1068] Split apply.go into file per type of applier Signed-off-by: Marek Siarkowicz --- .../apply/{apply_auth.go => auth.go} | 0 .../{apply_auth_test.go => auth_test.go} | 0 .../etcdserver/apply/{apply.go => backend.go} | 157 +----------------- server/etcdserver/apply/capped.go | 46 +++++ server/etcdserver/apply/interface.go | 118 +++++++++++++ server/etcdserver/apply/quota.go | 61 +++++++ server/etcdserver/apply/uber_applier.go | 2 +- 7 files changed, 227 insertions(+), 157 deletions(-) rename server/etcdserver/apply/{apply_auth.go => auth.go} (100%) rename server/etcdserver/apply/{apply_auth_test.go => auth_test.go} (100%) rename server/etcdserver/apply/{apply.go => backend.go} (63%) create mode 100644 server/etcdserver/apply/capped.go create mode 100644 server/etcdserver/apply/interface.go create mode 100644 server/etcdserver/apply/quota.go diff --git a/server/etcdserver/apply/apply_auth.go b/server/etcdserver/apply/auth.go similarity index 100% rename from server/etcdserver/apply/apply_auth.go rename to server/etcdserver/apply/auth.go diff --git a/server/etcdserver/apply/apply_auth_test.go b/server/etcdserver/apply/auth_test.go similarity index 100% rename from server/etcdserver/apply/apply_auth_test.go rename to server/etcdserver/apply/auth_test.go diff --git a/server/etcdserver/apply/apply.go b/server/etcdserver/apply/backend.go similarity index 63% rename from server/etcdserver/apply/apply.go rename to server/etcdserver/apply/backend.go index 9948d2a39f1f..ef2f23f76f32 100644 --- a/server/etcdserver/apply/apply.go +++ b/server/etcdserver/apply/backend.go @@ -1,4 +1,4 @@ -// Copyright 2016 The etcd Authors +// Copyright 2025 The etcd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -16,10 +16,8 @@ package apply import ( "context" - "time" "github.com/coreos/go-semver/semver" - "github.com/gogo/protobuf/proto" "go.uber.org/zap" pb "go.etcd.io/etcd/api/v3/etcdserverpb" @@ -29,105 +27,12 @@ import ( "go.etcd.io/etcd/server/v3/auth" "go.etcd.io/etcd/server/v3/etcdserver/api" "go.etcd.io/etcd/server/v3/etcdserver/api/membership" - "go.etcd.io/etcd/server/v3/etcdserver/api/v3alarm" - "go.etcd.io/etcd/server/v3/etcdserver/cindex" - "go.etcd.io/etcd/server/v3/etcdserver/errors" mvcctxn "go.etcd.io/etcd/server/v3/etcdserver/txn" "go.etcd.io/etcd/server/v3/etcdserver/version" "go.etcd.io/etcd/server/v3/lease" - serverstorage "go.etcd.io/etcd/server/v3/storage" - "go.etcd.io/etcd/server/v3/storage/backend" "go.etcd.io/etcd/server/v3/storage/mvcc" ) -const ( - v3Version = "v3" -) - -// RaftStatusGetter represents etcd server and Raft progress. -type RaftStatusGetter interface { - MemberID() types.ID - Leader() types.ID - CommittedIndex() uint64 - AppliedIndex() uint64 - Term() uint64 -} - -type Result struct { - Resp proto.Message - Err error - // Physc signals the physical effect of the request has completed in addition - // to being logically reflected by the node. Currently, only used for - // Compaction requests. - Physc <-chan struct{} - Trace *traceutil.Trace -} - -type applyFunc func(*pb.InternalRaftRequest, membership.ShouldApplyV3) *Result - -// applierV3 is the interface for processing V3 raft messages -type applierV3 interface { - // Apply executes the generic portion of application logic for the current applier, but - // delegates the actual execution to the applyFunc method. - Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3, applyFunc applyFunc) *Result - - Put(p *pb.PutRequest) (*pb.PutResponse, *traceutil.Trace, error) - Range(r *pb.RangeRequest) (*pb.RangeResponse, *traceutil.Trace, error) - DeleteRange(dr *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, *traceutil.Trace, error) - Txn(rt *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) - Compaction(compaction *pb.CompactionRequest) (*pb.CompactionResponse, <-chan struct{}, *traceutil.Trace, error) - - LeaseGrant(lc *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error) - LeaseRevoke(lc *pb.LeaseRevokeRequest) (*pb.LeaseRevokeResponse, error) - - LeaseCheckpoint(lc *pb.LeaseCheckpointRequest) (*pb.LeaseCheckpointResponse, error) - - Alarm(*pb.AlarmRequest) (*pb.AlarmResponse, error) - - Authenticate(r *pb.InternalAuthenticateRequest) (*pb.AuthenticateResponse, error) - - AuthEnable() (*pb.AuthEnableResponse, error) - AuthDisable() (*pb.AuthDisableResponse, error) - AuthStatus() (*pb.AuthStatusResponse, error) - - UserAdd(ua *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse, error) - UserDelete(ua *pb.AuthUserDeleteRequest) (*pb.AuthUserDeleteResponse, error) - UserChangePassword(ua *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error) - UserGrantRole(ua *pb.AuthUserGrantRoleRequest) (*pb.AuthUserGrantRoleResponse, error) - UserGet(ua *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error) - UserRevokeRole(ua *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error) - RoleAdd(ua *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error) - RoleGrantPermission(ua *pb.AuthRoleGrantPermissionRequest) (*pb.AuthRoleGrantPermissionResponse, error) - RoleGet(ua *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error) - RoleRevokePermission(ua *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error) - RoleDelete(ua *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error) - UserList(ua *pb.AuthUserListRequest) (*pb.AuthUserListResponse, error) - RoleList(ua *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error) - ClusterVersionSet(r *membershippb.ClusterVersionSetRequest, shouldApplyV3 membership.ShouldApplyV3) - ClusterMemberAttrSet(r *membershippb.ClusterMemberAttrSetRequest, shouldApplyV3 membership.ShouldApplyV3) - DowngradeInfoSet(r *membershippb.DowngradeInfoSetRequest, shouldApplyV3 membership.ShouldApplyV3) -} - -type ApplierOptions struct { - Logger *zap.Logger - KV mvcc.KV - AlarmStore *v3alarm.AlarmStore - AuthStore auth.AuthStore - Lessor lease.Lessor - Cluster *membership.RaftCluster - RaftStatus RaftStatusGetter - SnapshotServer SnapshotServer - ConsistentIndex cindex.ConsistentIndexer - TxnModeWriteWithSharedBuffer bool - Backend backend.Backend - QuotaBackendBytesCfg int64 - WarningApplyDuration time.Duration -} - -type SnapshotServer interface { - ForceSnapshot() -} - type applierV3backend struct { options ApplierOptions } @@ -230,30 +135,6 @@ func (a *applierV3backend) Alarm(ar *pb.AlarmRequest) (*pb.AlarmResponse, error) return resp, nil } -type applierV3Capped struct { - applierV3 - q serverstorage.BackendQuota -} - -// newApplierV3Capped creates an applyV3 that will reject Puts and transactions -// with Puts so that the number of keys in the store is capped. -func newApplierV3Capped(base applierV3) applierV3 { return &applierV3Capped{applierV3: base} } - -func (a *applierV3Capped) Put(_ *pb.PutRequest) (*pb.PutResponse, *traceutil.Trace, error) { - return nil, nil, errors.ErrNoSpace -} - -func (a *applierV3Capped) Txn(r *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) { - if a.q.Cost(r) > 0 { - return nil, nil, errors.ErrNoSpace - } - return a.applierV3.Txn(r) -} - -func (a *applierV3Capped) LeaseGrant(_ *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error) { - return nil, errors.ErrNoSpace -} - func (a *applierV3backend) AuthEnable() (*pb.AuthEnableResponse, error) { err := a.options.AuthStore.AuthEnable() if err != nil { @@ -422,42 +303,6 @@ func (a *applierV3backend) DowngradeInfoSet(r *membershippb.DowngradeInfoSetRequ a.options.Cluster.SetDowngradeInfo(&d, shouldApplyV3) } -type quotaApplierV3 struct { - applierV3 - q serverstorage.Quota -} - -func newQuotaApplierV3(lg *zap.Logger, quotaBackendBytesCfg int64, be backend.Backend, app applierV3) applierV3 { - return "aApplierV3{app, serverstorage.NewBackendQuota(lg, quotaBackendBytesCfg, be, "v3-applier")} -} - -func (a *quotaApplierV3) Put(p *pb.PutRequest) (*pb.PutResponse, *traceutil.Trace, error) { - ok := a.q.Available(p) - resp, trace, err := a.applierV3.Put(p) - if err == nil && !ok { - err = errors.ErrNoSpace - } - return resp, trace, err -} - -func (a *quotaApplierV3) Txn(rt *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) { - ok := a.q.Available(rt) - resp, trace, err := a.applierV3.Txn(rt) - if err == nil && !ok { - err = errors.ErrNoSpace - } - return resp, trace, err -} - -func (a *quotaApplierV3) LeaseGrant(lc *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error) { - ok := a.q.Available(lc) - resp, err := a.applierV3.LeaseGrant(lc) - if err == nil && !ok { - err = errors.ErrNoSpace - } - return resp, err -} - func (a *applierV3backend) newHeader() *pb.ResponseHeader { return &pb.ResponseHeader{ ClusterId: uint64(a.options.Cluster.ID()), diff --git a/server/etcdserver/apply/capped.go b/server/etcdserver/apply/capped.go new file mode 100644 index 000000000000..312eeb52c904 --- /dev/null +++ b/server/etcdserver/apply/capped.go @@ -0,0 +1,46 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package apply + +import ( + pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/pkg/v3/traceutil" + "go.etcd.io/etcd/server/v3/etcdserver/errors" + serverstorage "go.etcd.io/etcd/server/v3/storage" +) + +type applierV3Capped struct { + applierV3 + q serverstorage.BackendQuota +} + +// newApplierV3Capped creates an applyV3 that will reject Puts and transactions +// with Puts so that the number of keys in the store is capped. +func newApplierV3Capped(base applierV3) applierV3 { return &applierV3Capped{applierV3: base} } + +func (a *applierV3Capped) Put(_ *pb.PutRequest) (*pb.PutResponse, *traceutil.Trace, error) { + return nil, nil, errors.ErrNoSpace +} + +func (a *applierV3Capped) Txn(r *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) { + if a.q.Cost(r) > 0 { + return nil, nil, errors.ErrNoSpace + } + return a.applierV3.Txn(r) +} + +func (a *applierV3Capped) LeaseGrant(_ *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error) { + return nil, errors.ErrNoSpace +} diff --git a/server/etcdserver/apply/interface.go b/server/etcdserver/apply/interface.go new file mode 100644 index 000000000000..85bfb6109d57 --- /dev/null +++ b/server/etcdserver/apply/interface.go @@ -0,0 +1,118 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package apply + +import ( + "time" + + "github.com/gogo/protobuf/proto" + "go.uber.org/zap" + + pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/api/v3/membershippb" + "go.etcd.io/etcd/client/pkg/v3/types" + "go.etcd.io/etcd/pkg/v3/traceutil" + "go.etcd.io/etcd/server/v3/auth" + "go.etcd.io/etcd/server/v3/etcdserver/api/membership" + "go.etcd.io/etcd/server/v3/etcdserver/api/v3alarm" + "go.etcd.io/etcd/server/v3/etcdserver/cindex" + "go.etcd.io/etcd/server/v3/lease" + "go.etcd.io/etcd/server/v3/storage/backend" + "go.etcd.io/etcd/server/v3/storage/mvcc" +) + +// applierV3 is the interface for processing V3 raft messages +type applierV3 interface { + // Apply executes the generic portion of application logic for the current applier, but + // delegates the actual execution to the applyFunc method. + Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3, applyFunc applyFunc) *Result + + Put(p *pb.PutRequest) (*pb.PutResponse, *traceutil.Trace, error) + Range(r *pb.RangeRequest) (*pb.RangeResponse, *traceutil.Trace, error) + DeleteRange(dr *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, *traceutil.Trace, error) + Txn(rt *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) + Compaction(compaction *pb.CompactionRequest) (*pb.CompactionResponse, <-chan struct{}, *traceutil.Trace, error) + + LeaseGrant(lc *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error) + LeaseRevoke(lc *pb.LeaseRevokeRequest) (*pb.LeaseRevokeResponse, error) + + LeaseCheckpoint(lc *pb.LeaseCheckpointRequest) (*pb.LeaseCheckpointResponse, error) + + Alarm(*pb.AlarmRequest) (*pb.AlarmResponse, error) + + Authenticate(r *pb.InternalAuthenticateRequest) (*pb.AuthenticateResponse, error) + + AuthEnable() (*pb.AuthEnableResponse, error) + AuthDisable() (*pb.AuthDisableResponse, error) + AuthStatus() (*pb.AuthStatusResponse, error) + + UserAdd(ua *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse, error) + UserDelete(ua *pb.AuthUserDeleteRequest) (*pb.AuthUserDeleteResponse, error) + UserChangePassword(ua *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error) + UserGrantRole(ua *pb.AuthUserGrantRoleRequest) (*pb.AuthUserGrantRoleResponse, error) + UserGet(ua *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error) + UserRevokeRole(ua *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error) + RoleAdd(ua *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error) + RoleGrantPermission(ua *pb.AuthRoleGrantPermissionRequest) (*pb.AuthRoleGrantPermissionResponse, error) + RoleGet(ua *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error) + RoleRevokePermission(ua *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error) + RoleDelete(ua *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error) + UserList(ua *pb.AuthUserListRequest) (*pb.AuthUserListResponse, error) + RoleList(ua *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error) + ClusterVersionSet(r *membershippb.ClusterVersionSetRequest, shouldApplyV3 membership.ShouldApplyV3) + ClusterMemberAttrSet(r *membershippb.ClusterMemberAttrSetRequest, shouldApplyV3 membership.ShouldApplyV3) + DowngradeInfoSet(r *membershippb.DowngradeInfoSetRequest, shouldApplyV3 membership.ShouldApplyV3) +} + +type ApplierOptions struct { + Logger *zap.Logger + KV mvcc.KV + AlarmStore *v3alarm.AlarmStore + AuthStore auth.AuthStore + Lessor lease.Lessor + Cluster *membership.RaftCluster + RaftStatus RaftStatusGetter + SnapshotServer SnapshotServer + ConsistentIndex cindex.ConsistentIndexer + TxnModeWriteWithSharedBuffer bool + Backend backend.Backend + QuotaBackendBytesCfg int64 + WarningApplyDuration time.Duration +} + +type SnapshotServer interface { + ForceSnapshot() +} + +// RaftStatusGetter represents etcd server and Raft progress. +type RaftStatusGetter interface { + MemberID() types.ID + Leader() types.ID + CommittedIndex() uint64 + AppliedIndex() uint64 + Term() uint64 +} + +type Result struct { + Resp proto.Message + Err error + // Physc signals the physical effect of the request has completed in addition + // to being logically reflected by the node. Currently, only used for + // Compaction requests. + Physc <-chan struct{} + Trace *traceutil.Trace +} + +type applyFunc func(*pb.InternalRaftRequest, membership.ShouldApplyV3) *Result diff --git a/server/etcdserver/apply/quota.go b/server/etcdserver/apply/quota.go new file mode 100644 index 000000000000..e1cef6016fb7 --- /dev/null +++ b/server/etcdserver/apply/quota.go @@ -0,0 +1,61 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package apply + +import ( + "go.uber.org/zap" + + pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/pkg/v3/traceutil" + "go.etcd.io/etcd/server/v3/etcdserver/errors" + serverstorage "go.etcd.io/etcd/server/v3/storage" + "go.etcd.io/etcd/server/v3/storage/backend" +) + +type quotaApplierV3 struct { + applierV3 + q serverstorage.Quota +} + +func newQuotaApplierV3(lg *zap.Logger, quotaBackendBytesCfg int64, be backend.Backend, app applierV3) applierV3 { + return "aApplierV3{app, serverstorage.NewBackendQuota(lg, quotaBackendBytesCfg, be, "v3-applier")} +} + +func (a *quotaApplierV3) Put(p *pb.PutRequest) (*pb.PutResponse, *traceutil.Trace, error) { + ok := a.q.Available(p) + resp, trace, err := a.applierV3.Put(p) + if err == nil && !ok { + err = errors.ErrNoSpace + } + return resp, trace, err +} + +func (a *quotaApplierV3) Txn(rt *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) { + ok := a.q.Available(rt) + resp, trace, err := a.applierV3.Txn(rt) + if err == nil && !ok { + err = errors.ErrNoSpace + } + return resp, trace, err +} + +func (a *quotaApplierV3) LeaseGrant(lc *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error) { + ok := a.q.Available(lc) + resp, err := a.applierV3.LeaseGrant(lc) + if err == nil && !ok { + err = errors.ErrNoSpace + } + return resp, err +} diff --git a/server/etcdserver/apply/uber_applier.go b/server/etcdserver/apply/uber_applier.go index 2da2019d1901..0eb76e3d4209 100644 --- a/server/etcdserver/apply/uber_applier.go +++ b/server/etcdserver/apply/uber_applier.go @@ -95,7 +95,7 @@ func (a *uberApplier) dispatch(r *pb.InternalRaftRequest, shouldApplyV3 membersh ar := &Result{} defer func(start time.Time) { success := ar.Err == nil || errors.Is(ar.Err, mvcc.ErrCompacted) - txn.ApplySecObserve(v3Version, op, success, time.Since(start)) + txn.ApplySecObserve("v3", op, success, time.Since(start)) txn.WarnOfExpensiveRequest(a.lg, a.warningApplyDuration, start, &pb.InternalRaftStringer{Request: r}, ar.Resp, ar.Err) if !success { txn.WarnOfFailedRequest(a.lg, start, &pb.InternalRaftStringer{Request: r}, ar.Resp, ar.Err) From d15b16adbec49e657ee1c446c90b5410e72e933e Mon Sep 17 00:00:00 2001 From: Kota Date: Sat, 27 Sep 2025 16:45:39 +0900 Subject: [PATCH 0555/1068] tests: add minimal E2E test configuration for faster CI runs Signed-off-by: Kota --- tests/common/e2e_test.go | 83 ++++++++++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 29 deletions(-) diff --git a/tests/common/e2e_test.go b/tests/common/e2e_test.go index 37f534843ebb..eeba55702811 100644 --- a/tests/common/e2e_test.go +++ b/tests/common/e2e_test.go @@ -17,6 +17,10 @@ package common import ( + "fmt" + "os" + "strconv" + "go.etcd.io/etcd/client/pkg/v3/fileutil" "go.etcd.io/etcd/tests/v3/framework" "go.etcd.io/etcd/tests/v3/framework/config" @@ -28,49 +32,70 @@ func init() { clusterTestCases = e2eClusterTestCases } +const ( + // minimalE2eEnabledEnvVarName is for reducing e2e test matrix, leading to faster CI runtimes in some cases(e.g., presubmits). + // See https://github.com/etcd-io/etcd/issues/18983 for background. + minimalE2eEnabledEnvVarName = "E2E_TEST_MINIMAL" +) + +func minimalE2eEnabled() bool { + v, ok := os.LookupEnv(minimalE2eEnabledEnvVarName) + if !ok { + return false + } + parsed, err := strconv.ParseBool(v) + if err != nil { + fmt.Printf("Invalid %s value %q: %v\n", minimalE2eEnabledEnvVarName, v, err) + return false + } + return parsed +} + func e2eClusterTestCases() []testCase { - tcs := []testCase{ + minimalTestCases := []testCase{ { name: "NoTLS", config: config.ClusterConfig{ClusterSize: 1}, }, { - name: "PeerTLS", - config: config.ClusterConfig{ClusterSize: 3, PeerTLS: config.ManualTLS}, - }, - { - name: "PeerAutoTLS", - config: config.ClusterConfig{ClusterSize: 3, PeerTLS: config.AutoTLS}, - }, - { - name: "ClientTLS", - config: config.ClusterConfig{ClusterSize: 1, ClientTLS: config.ManualTLS}, - }, - { - name: "ClientAutoTLS", - config: config.ClusterConfig{ClusterSize: 1, ClientTLS: config.AutoTLS}, + name: "PeerTLS and ClientTLS", + config: config.ClusterConfig{ClusterSize: 3, PeerTLS: config.ManualTLS, ClientTLS: config.ManualTLS}, }, } + if minimalE2eEnabled() { + return minimalTestCases + } + + tcs := append(minimalTestCases, + testCase{ + name: "PeerAutoTLS and ClientAutoTLS", + config: config.ClusterConfig{ClusterSize: 3, PeerTLS: config.AutoTLS, ClientTLS: config.AutoTLS}, + }, + ) + if fileutil.Exist(e2e.BinPath.EtcdLastRelease) { - tcs = append(tcs, testCase{ - name: "MinorityLastVersion", - config: config.ClusterConfig{ - ClusterSize: 3, - ClusterContext: &e2e.ClusterContext{ - Version: e2e.MinorityLastVersion, + tcs = append(tcs, + testCase{ + name: "MinorityLastVersion", + config: config.ClusterConfig{ + ClusterSize: 3, + ClusterContext: &e2e.ClusterContext{ + Version: e2e.MinorityLastVersion, + }, }, }, - }, testCase{ - name: "QuorumLastVersion", - config: config.ClusterConfig{ - ClusterSize: 3, - ClusterContext: &e2e.ClusterContext{ - Version: e2e.QuorumLastVersion, + testCase{ + name: "QuorumLastVersion", + config: config.ClusterConfig{ + ClusterSize: 3, + ClusterContext: &e2e.ClusterContext{ + Version: e2e.QuorumLastVersion, + }, }, - }, - }) + }) } + return tcs } From a44b31aa1a1a551088ad067261eaa2ed2d01c367 Mon Sep 17 00:00:00 2001 From: Kota Date: Sun, 28 Sep 2025 22:51:03 +0900 Subject: [PATCH 0556/1068] tests: fix integration test matrix Signed-off-by: Kota --- tests/common/integration_test.go | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/tests/common/integration_test.go b/tests/common/integration_test.go index 338b78b9b597..e8987ebf4021 100644 --- a/tests/common/integration_test.go +++ b/tests/common/integration_test.go @@ -34,20 +34,12 @@ func integrationClusterTestCases() []testCase { config: config.ClusterConfig{ClusterSize: 1}, }, { - name: "PeerTLS", - config: config.ClusterConfig{ClusterSize: 3, PeerTLS: config.ManualTLS}, + name: "PeerTLS and ClientTLS", + config: config.ClusterConfig{ClusterSize: 3, PeerTLS: config.ManualTLS, ClientTLS: config.ManualTLS}, }, { - name: "PeerAutoTLS", - config: config.ClusterConfig{ClusterSize: 3, PeerTLS: config.AutoTLS}, - }, - { - name: "ClientTLS", - config: config.ClusterConfig{ClusterSize: 1, ClientTLS: config.ManualTLS}, - }, - { - name: "ClientAutoTLS", - config: config.ClusterConfig{ClusterSize: 1, ClientTLS: config.AutoTLS}, + name: "PeerAutoTLS and ClientAutoTLS", + config: config.ClusterConfig{ClusterSize: 3, PeerTLS: config.AutoTLS, ClientTLS: config.AutoTLS}, }, } } From bd8a898f1def7671f0f09608b1d8016b7a05888b Mon Sep 17 00:00:00 2001 From: Kota Date: Mon, 29 Sep 2025 22:05:40 +0900 Subject: [PATCH 0557/1068] tests: extend context deadline of TestKVGet to 30s Signed-off-by: Kota --- tests/common/kv_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index 323d263db7e4..f32b6b291883 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -55,7 +55,7 @@ func TestKVGet(t *testing.T) { testRunner.BeforeTest(t) for _, tc := range clusterTestCases() { t.Run(tc.name, func(t *testing.T) { - ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) + ctx, cancel := context.WithTimeout(t.Context(), 30*time.Second) defer cancel() clus := testRunner.NewCluster(ctx, t, config.WithClusterConfig(tc.config)) defer clus.Close() From 4a128c65a9ff9ccdefc3006503a7f5512fdd8eaf Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Thu, 4 Sep 2025 14:41:08 +0800 Subject: [PATCH 0558/1068] install dependencies for darwin arm64 when running verify_golangci-lint_version.sh and verify_genproto.sh Signed-off-by: shenmu.wy --- scripts/genproto.sh | 23 ++++++++++++++++++----- scripts/verify_golangci-lint_version.sh | 2 +- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/scripts/genproto.sh b/scripts/genproto.sh index 31b66bf7bc14..53e257608cc3 100755 --- a/scripts/genproto.sh +++ b/scripts/genproto.sh @@ -25,13 +25,21 @@ if ! [[ "$0" =~ scripts/genproto.sh ]]; then exit 255 fi +if [ -z "${OS:-}" ]; then + OS=$(uname -s | tr '[:upper:]' '[:lower:]') +fi + # Set SED variable if LANG=C sed --help 2>&1 | grep -q GNU; then SED="sed" elif command -v gsed &>/dev/null; then SED="gsed" +elif [ "$OS" == "darwin" ]; then + echo "You are on Mac, running: brew install gnu-sed" + brew install gnu-sed + SED="/opt/homebrew/opt/gnu-sed/libexec/gnubin/sed" else - echo "Failed to find GNU sed as sed or gsed. If you are on Mac: brew install gnu-sed." >&2 + echo "Failed to find GNU sed as sed or gsed." >&2 exit 1 fi @@ -51,11 +59,16 @@ if [[ $(protoc --version | cut -f2 -d' ') != "3.20.3" ]]; then ;; esac - download_url="https://github.com/protocolbuffers/protobuf/releases/download/v3.20.3/protoc-3.20.3-linux-${file}.zip" - echo "Running on ${arch}." + protoc_download_file="protoc-3.20.3-linux-${file}.zip" + if [ "$OS" == "darwin" ]; then + # protoc-3.20.3 does not have pre-built binaries for darwin_arm64. Thanks to Rosetta, we could use x86_64 binary. + protoc_download_file="protoc-3.20.3-osx-x86_64.zip" + fi + download_url="https://github.com/protocolbuffers/protobuf/releases/download/v3.20.3/${protoc_download_file}" + echo "Running on ${OS} ${arch}. Downloading ${protoc_download_file}" mkdir -p bin - wget ${download_url} && unzip -p protoc-3.20.3-linux-${file}.zip bin/protoc > tmpFile && mv tmpFile bin/protoc - rm protoc-3.20.3-linux-${file}.zip + wget ${download_url} && unzip -p ${protoc_download_file} bin/protoc > tmpFile && mv tmpFile bin/protoc + rm ${protoc_download_file} chmod +x bin/protoc PATH=$PATH:$(pwd)/bin export PATH diff --git a/scripts/verify_golangci-lint_version.sh b/scripts/verify_golangci-lint_version.sh index f3ca7e72edf4..2c5b61055821 100755 --- a/scripts/verify_golangci-lint_version.sh +++ b/scripts/verify_golangci-lint_version.sh @@ -27,7 +27,7 @@ if [ -z "$GOLANGCI_LINT_PRESENT" ]; then install_golangci_lint exit 0 fi -GOLANGCI_LINT_INSTALLED=v$(golangci-lint version | grep -oP 'version \K[0-9.]+') +GOLANGCI_LINT_INSTALLED=v$(golangci-lint version | grep -Eo 'version [0-9.]+' | grep -Eo '[0-9.]+') if [ "$GOLANGCI_LINT_VERSION" != "$GOLANGCI_LINT_INSTALLED" ]; then echo "different golangci-lint version installed: $GOLANGCI_LINT_INSTALLED" From 3f0b3570c80dda495d6fdefed631ee47a3fb11ba Mon Sep 17 00:00:00 2001 From: Upamanyu Sharma Date: Fri, 26 Sep 2025 13:11:32 -0400 Subject: [PATCH 0559/1068] idutil: document event window as 2^48 6 byte suffix means event window is 2^48, not 2^56. Signed-off-by: Upamanyu Sharma --- pkg/idutil/id.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/idutil/id.go b/pkg/idutil/id.go index 63a02cd73461..b185b1a58e1f 100644 --- a/pkg/idutil/id.go +++ b/pkg/idutil/id.go @@ -43,7 +43,7 @@ const ( // // It increases suffix to generate the next id. // The count field may overflow to timestamp field, which is intentional. -// It helps to extend the event window to 2^56. This doesn't break that +// It helps to extend the event window to 2^48. This doesn't break that // id generated after restart is unique because etcd throughput is << // 256req/ms(250k reqs/second). type Generator struct { From f6a802099595f15089cffd98c1977765b26217b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Sep 2025 21:30:10 +0000 Subject: [PATCH 0560/1068] build(deps): bump github/codeql-action from 3.30.3 to 3.30.5 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.3 to 3.30.5. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/192325c86100d080feab897ff886c34abd4c83a3...3599b3baa15b485a2e49ef411a7a4bb2452e7f93) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.30.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f19358864d83..a60768342091 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 + uses: github/codeql-action/init@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 + uses: github/codeql-action/autobuild@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 + uses: github/codeql-action/analyze@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 1e6f25752f60..f969db27ff1a 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 + uses: github/codeql-action/upload-sarif@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 with: sarif_file: results.sarif From c4eeabf5f71327bf6f36d21243bd796d4070b7bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Sep 2025 20:46:29 +0000 Subject: [PATCH 0561/1068] build(deps): bump docker/login-action from 3.5.0 to 3.6.0 Bumps [docker/login-action](https://github.com/docker/login-action) from 3.5.0 to 3.6.0. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/184bdaa0721073962dff0199f1fb9940f07167d1...5e57cd118135c172c3672efd75eb46360885c0ef) --- updated-dependencies: - dependency-name: docker/login-action dependency-version: 3.6.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 3df65955db4d..c4ceff17ceaf 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -51,7 +51,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Login to Antithesis Docker Registry - uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0 + uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 with: registry: ${{ env.REGISTRY }} username: _json_key From 9d7109eb10996a397f6e03962bd27de38a7c7d76 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Fri, 5 Sep 2025 13:48:54 +0000 Subject: [PATCH 0562/1068] cache: make cache progress-aware Signed-off-by: Peter Chang --- cache/cache.go | 8 +-- cache/demux.go | 88 ++++++++++++++++++++++----- cache/demux_test.go | 2 + cache/store.go | 42 +++++++++++-- cache/store_test.go | 6 +- cache/watcher.go | 12 ++-- tests/integration/cache_test.go | 104 +++++++++++++++++++++++++++++++- 7 files changed, 224 insertions(+), 38 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index 1f3e0c654635..41df1086298d 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -271,13 +271,7 @@ func (c *Cache) applyStorage(storeW *watcher) error { if !ok { return nil } - if resp.Canceled { - return nil - } - if len(resp.Events) == 0 { - continue - } - if err := c.store.Apply(resp.Events); err != nil { + if err := c.store.Apply(resp); err != nil { return err } } diff --git a/cache/demux.go b/cache/demux.go index 56d6f3cf544c..1c4d05860b3c 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -16,9 +16,11 @@ package cache import ( "context" + "errors" "sync" "time" + "go.etcd.io/etcd/api/v3/etcdserverpb" clientv3 "go.etcd.io/etcd/client/v3" ) @@ -108,6 +110,9 @@ func (d *demux) Unregister(w *watcher) { func (d *demux) Init(minRev int64) { d.mu.Lock() defer d.mu.Unlock() + if minRev == 0 { + return + } if d.minRev == 0 { // Watch started for empty demux d.minRev = minRev @@ -129,23 +134,35 @@ func (d *demux) Init(minRev int64) { } func (d *demux) Broadcast(resp clientv3.WatchResponse) error { - events := resp.Events - if len(events) == 0 { - return nil - } - d.mu.Lock() defer d.mu.Unlock() - err := validateRevisions(events, d.maxRev) + if d.minRev == 0 { + return errors.New("demux: not initialized") + } + err := validateRevisions(resp, d.maxRev) if err != nil { return err } - d.updateStoreLocked(events) - d.broadcastLocked(events) + d.updateStoreLocked(resp) + d.broadcastLocked(resp) return nil } -func (d *demux) updateStoreLocked(events []*clientv3.Event) { +func (d *demux) LatestRev() int64 { + d.mu.RLock() + defer d.mu.RUnlock() + return d.maxRev +} + +func (d *demux) updateStoreLocked(resp clientv3.WatchResponse) { + if resp.IsProgressNotify() { + d.maxRev = resp.Header.Revision + return + } + if len(resp.Events) == 0 { + return + } + events := resp.Events batchStart := 0 for end := 1; end < len(events); end++ { if events[end].Kv.ModRevision != events[batchStart].Kv.ModRevision { @@ -167,7 +184,33 @@ func (d *demux) updateStoreLocked(events []*clientv3.Event) { d.maxRev = events[len(events)-1].Kv.ModRevision } -func (d *demux) broadcastLocked(events []*clientv3.Event) { +func (d *demux) broadcastLocked(resp clientv3.WatchResponse) { + switch { + case resp.IsProgressNotify(): + d.broadcastProgressLocked(resp.Header.Revision) + case len(resp.Events) != 0: + d.broadcastEventsLocked(resp.Events) + default: + } +} + +func (d *demux) broadcastProgressLocked(progressRev int64) { + for w, nextRev := range d.activeWatchers { + if nextRev >= progressRev { + continue + } + resp := clientv3.WatchResponse{ + Header: etcdserverpb.ResponseHeader{ + Revision: progressRev, + }, + } + if w.enqueueResponse(resp) { + d.activeWatchers[w] = progressRev + 1 + } + } +} + +func (d *demux) broadcastEventsLocked(events []*clientv3.Event) { firstRev := events[0].Kv.ModRevision lastRev := events[len(events)-1].Kv.ModRevision @@ -177,6 +220,7 @@ func (d *demux) broadcastLocked(events []*clientv3.Event) { delete(d.activeWatchers, w) continue } + sendStart := len(events) for i, ev := range events { if ev.Kv.ModRevision >= nextRev { @@ -184,11 +228,14 @@ func (d *demux) broadcastLocked(events []*clientv3.Event) { break } } + if sendStart == len(events) { continue } - if !w.enqueueEvent(events[sendStart:]) { // overflow → lagging + if !w.enqueueResponse(clientv3.WatchResponse{ + Events: events[sendStart:], + }) { // overflow → lagging d.laggingWatchers[w] = nextRev delete(d.activeWatchers, w) } else { @@ -241,17 +288,26 @@ func (d *demux) resyncLaggingWatchers() { continue } // TODO: re-enable key‐predicate in Filter when non‐zero startRev or performance tuning is needed - enqueueFailed := false + resyncSuccess := true d.history.AscendGreaterOrEqual(nextRev, func(rev int64, eventBatch []*clientv3.Event) bool { - if !w.enqueueEvent(eventBatch) { // buffer overflow: watcher still lagging - enqueueFailed = true + resp := clientv3.WatchResponse{ + Events: eventBatch, + } + if !w.enqueueResponse(resp) { // buffer overflow: watcher still lagging + resyncSuccess = false return false } nextRev = rev + 1 return true }) - - if !enqueueFailed { + // Send progress to just resync. + if resyncSuccess { + resp := clientv3.WatchResponse{ + Header: etcdserverpb.ResponseHeader{Revision: d.maxRev}, + } + if d.maxRev > nextRev && w.enqueueResponse(resp) { + nextRev = d.maxRev + 1 + } delete(d.laggingWatchers, w) d.activeWatchers[w] = nextRev } else { diff --git a/cache/demux_test.go b/cache/demux_test.go index cd6e70e85e0c..4ee81ecfd129 100644 --- a/cache/demux_test.go +++ b/cache/demux_test.go @@ -263,6 +263,7 @@ func TestBroadcastBatching(t *testing.T) { t.Run(tt.name, func(t *testing.T) { d := newDemux(16, 10*time.Millisecond) w := newWatcher(len(tt.input)+1, nil) + d.Init(1) d.Register(w, 0) d.Broadcast(respWithEventRevs(tt.input...)) @@ -311,6 +312,7 @@ func TestSlowWatcherResync(t *testing.T) { t.Run(tt.name, func(t *testing.T) { d := newDemux(16, 10*time.Millisecond) w := newWatcher(1, nil) + d.Init(1) d.Register(w, 0) d.Broadcast(respWithEventRevs(tt.input...)) diff --git a/cache/store.go b/cache/store.go index 8717ac7f61fb..c9f02408c042 100644 --- a/cache/store.go +++ b/cache/store.go @@ -15,6 +15,7 @@ package cache import ( + "errors" "fmt" "sync" @@ -92,6 +93,10 @@ func (s *store) getSnapshot(rev int64) (*snapshot, int64, error) { targetSnapshot = snap return false }) + // If s.history < rev < s.latest.rev serve latest. + if targetSnapshot == nil { + targetSnapshot = &s.latest + } return targetSnapshot, s.latest.rev, nil } @@ -110,14 +115,36 @@ func (s *store) Restore(kvs []*mvccpb.KeyValue, rev int64) { s.history.Append(newClonedSnapshot(rev, s.latest.tree)) } -func (s *store) Apply(events []*clientv3.Event) error { +func (s *store) Apply(resp clientv3.WatchResponse) error { + if resp.Canceled { + return errors.New("canceled") + } + s.mu.Lock() defer s.mu.Unlock() - - if err := validateRevisions(events, s.latest.rev); err != nil { + if err := validateRevisions(resp, s.latest.rev); err != nil { return err } + switch { + case resp.IsProgressNotify(): + s.applyProgressNotifyLocked(resp.Header.Revision) + return nil + case len(resp.Events) != 0: + return s.applyEventsLocked(resp.Events) + default: + return nil + } +} + +func (s *store) applyProgressNotifyLocked(revision int64) { + if s.latest.rev == 0 { + return + } + s.latest.rev = revision +} + +func (s *store) applyEventsLocked(events []*clientv3.Event) error { for i := 0; i < len(events); { rev := events[i].Kv.ModRevision @@ -145,7 +172,14 @@ func (s *store) LatestRev() int64 { return s.latest.rev } -func validateRevisions(events []*clientv3.Event, latestRev int64) error { +func validateRevisions(resp clientv3.WatchResponse, latestRev int64) error { + if resp.IsProgressNotify() { + if resp.Header.Revision < latestRev { + return fmt.Errorf("cache: progress notification out of order (progress %d < latest %d)", resp.Header.Revision, latestRev) + } + return nil + } + events := resp.Events if len(events) == 0 { return nil } diff --git a/cache/store_test.go b/cache/store_test.go index 4555d9f7e865..8437f1e78f91 100644 --- a/cache/store_test.go +++ b/cache/store_test.go @@ -281,7 +281,8 @@ func TestStoreApply(t *testing.T) { var gotErr error for batchIndex, batch := range test.eventBatches { - if err := s.Apply(batch); err != nil { + resp := clientv3.WatchResponse{Events: batch} + if err := s.Apply(resp); err != nil { gotErr = err if !test.expectErr { t.Fatalf("Apply(batch %d) unexpected error: %v", batchIndex, err) @@ -397,7 +398,8 @@ func TestRestoreAppendCloneImmutability(t *testing.T) { s.Restore(test.initialKVs, test.initialRev) } if len(test.events) > 0 { - if err := s.Apply(test.events); err != nil { + resp := clientv3.WatchResponse{Events: test.events} + if err := s.Apply(resp); err != nil { t.Fatalf("Apply failed: %v", err) } } diff --git a/cache/watcher.go b/cache/watcher.go index 031a02532532..219911c67853 100644 --- a/cache/watcher.go +++ b/cache/watcher.go @@ -38,10 +38,10 @@ func newWatcher(bufSize int, pred KeyPredicate) *watcher { // true -> events delivered (or filtered/duplicate) // false -> buffer full (caller should mark watcher “lagging”) -func (w *watcher) enqueueEvent(eventBatch []*clientv3.Event) bool { - if w.keyPred != nil { - filtered := make([]*clientv3.Event, 0, len(eventBatch)) - for _, event := range eventBatch { +func (w *watcher) enqueueResponse(resp clientv3.WatchResponse) bool { + if !resp.IsProgressNotify() && w.keyPred != nil { + filtered := make([]*clientv3.Event, 0, len(resp.Events)) + for _, event := range resp.Events { if w.keyPred(event.Kv.Key) { filtered = append(filtered, event) } @@ -49,10 +49,10 @@ func (w *watcher) enqueueEvent(eventBatch []*clientv3.Event) bool { if len(filtered) == 0 { return true } - eventBatch = filtered + resp.Events = filtered } select { - case w.respCh <- clientv3.WatchResponse{Events: eventBatch}: + case w.respCh <- resp: return true default: return false diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 19edae4467b9..3e53d7627876 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -486,6 +486,64 @@ func TestCacheWithPrefixWatch(t *testing.T) { } } +func TestCacheWatchPrefixProgressNotify(t *testing.T) { + if integration.ThroughProxy { + t.Skip("grpc proxy currently does not support requesting progress notifications") + } + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + t.Cleanup(func() { clus.Terminate(t) }) + client := clus.Client(0) + + ctx := t.Context() + + c, err := cache.New(client, "/foo") + if err != nil { + t.Fatalf("cache.New: %v", err) + } + t.Cleanup(c.Close) + if err := c.WaitReady(ctx); err != nil { + t.Fatalf("cache.WaitReady: %v", err) + } + + wctx, cancel := context.WithTimeout(ctx, 3*time.Second) + defer cancel() + watchCh := c.Watch(wctx, "/foo", clientv3.WithPrefix()) + + var latestRev int64 + for i := 0; i < 5; i++ { + resp, err := client.Put(ctx, fmt.Sprintf("/bar/out-%d", i), "v") + if err != nil { + t.Fatalf("Put(/bar/out-%d): %v", i, err) + } + latestRev = resp.Header.Revision + } + + if err := client.RequestProgress(ctx); err != nil { + t.Fatalf("RequestProgress: %v", err) + } + + var progressRev int64 + select { + case resp, ok := <-watchCh: + if !ok || resp.Canceled { + t.Fatalf("expected active watch (not canceled), got %+v (closed=%v)", resp, !ok) + } + if len(resp.Events) != 0 { + t.Fatalf("expected a progress notification (no events), got %d event(s)", len(resp.Events)) + } + if !resp.IsProgressNotify() { + t.Fatalf("expected IsProgressNotify()==true, got false (resp: %+v)", resp) + } + progressRev = resp.Header.Revision + if progressRev < latestRev { + t.Fatalf("progress revision %d < latest outside-prefix rev %d", progressRev, latestRev) + } + case <-wctx.Done(): + t.Fatalf("timed out waiting for progress notification: %v", wctx.Err()) + } +} + func TestCacheWithoutPrefixGet(t *testing.T) { tcs := []struct { name string @@ -841,6 +899,25 @@ func testWithPrefixGet(t *testing.T, cli *clientv3.Client, getReader func() Gett reader := getReader() + var latestRev int64 + for i := 0; i < 5; i++ { + r, err := cli.Put(ctx, fmt.Sprintf("/bar/x%d", i), fmt.Sprintf("%d", i)) + if err != nil { + t.Fatalf("advance put: %v", err) + } + latestRev = r.Header.Revision + } + + if err := cli.RequestProgress(ctx); err != nil { + t.Fatalf("RequestProgress: %v", err) + } + + if c, ok := reader.(*cache.Cache); ok { + if err := c.WaitForRevision(ctx, latestRev); err != nil { + t.Fatalf("cache didn’t observe progress to rev %d: %v", latestRev, err) + } + } + expectedFooA := &mvccpb.KeyValue{ Key: []byte("/foo/a"), Value: []byte("val"), @@ -861,21 +938,42 @@ func testWithPrefixGet(t *testing.T, cli *clientv3.Client, getReader func() Gett key: "/foo/a", opts: []clientv3.OpOption{clientv3.WithSerializable()}, wantKVs: []*mvccpb.KeyValue{expectedFooA}, - wantRevision: seedRev, + wantRevision: latestRev, + }, + { + name: "single key within cache prefix at latest/progress rev", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(latestRev)}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, + wantRevision: latestRev, }, { name: "prefix query within cache prefix", key: "/foo", opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix()}, wantKVs: []*mvccpb.KeyValue{expectedFooA}, - wantRevision: seedRev, + wantRevision: latestRev, + }, + { + name: "prefix query within cache prefix at latest/progress rev", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix(), clientv3.WithRev(latestRev)}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, + wantRevision: latestRev, }, { name: "range query within cache prefix", key: "/foo/a", opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/foo/b")}, wantKVs: []*mvccpb.KeyValue{expectedFooA}, - wantRevision: seedRev, + wantRevision: latestRev, + }, + { + name: "range query within cache prefix at latest/progress rev", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/foo/z"), clientv3.WithRev(latestRev)}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, + wantRevision: latestRev, }, } From e27a16bbc6db4c57ad3a133e0d9e2bb9f5a28c32 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Tue, 10 Dec 2024 17:00:43 -0800 Subject: [PATCH 0563/1068] Enable Go workspace Introduce a new Go workspace that references all the current submodules. To preserve the current behavior, point all of the current FORBIDDEN_DEPENCENCY virtual dependencies to the same path. Add scripts/update_go_workspace.sh that generates the Go workspace file (go.work) based on the submodules found in the project (excluding the tools) and creates the go.work.sum file after running go mod download. Added this script to the fix Makefile target. Even though, the number of modules in the etcd repository is small, by adding an automated way of updating the go.work modules future proofs the project in case there are new modules or removal of them. Remove the workaround to forbid dependencies through the FORBIDDEN_DEPENDENCY replace. This can be done through a linter rather than at the go.mod level. Using the go.mod approach also brings issues with the workspace, as all the dependencies (including replaces) need to have a consistent version and point to the same place. Co-authored-by: Tim Hockin Signed-off-by: Ivan Valdes --- Makefile | 6 +- api/go.mod | 2 +- cache/go.mod | 2 +- client/pkg/go.mod | 2 +- client/v3/go.mod | 2 +- etcdctl/go.mod | 2 +- etcdutl/go.mod | 2 +- go.mod | 2 +- go.work | 21 + go.work.sum | 1393 ++++++++++++++++++++++++++++++++ pkg/go.mod | 2 +- scripts/update_go_workspace.sh | 43 + server/go.mod | 2 +- tests/go.mod | 2 +- tools/rw-heatmaps/go.mod | 2 +- tools/testgrid-analysis/go.mod | 2 +- 16 files changed, 1474 insertions(+), 13 deletions(-) create mode 100644 go.work create mode 100644 go.work.sum create mode 100755 scripts/update_go_workspace.sh diff --git a/Makefile b/Makefile index b920da607b04..3499ee8b9709 100644 --- a/Makefile +++ b/Makefile @@ -102,7 +102,7 @@ verify: verify-gofmt verify-bom verify-lint verify-dep verify-shellcheck verify- verify-govet-shadow verify-markdown-marker verify-go-versions verify-gomodguard .PHONY: fix -fix: fix-bom fix-lint fix-yamllint sync-toolchain-directive +fix: fix-bom fix-lint fix-yamllint sync-toolchain-directive update-go-workspace ./scripts/fix.sh .PHONY: verify-gofmt @@ -244,3 +244,7 @@ sync-toolchain-directive: .PHONY: markdown-diff-lint markdown-diff-lint: ./scripts/markdown_diff_lint.sh + +.PHONY: update-go-workspace +update-go-workspace: + ./scripts/update_go_workspace.sh diff --git a/api/go.mod b/api/go.mod index 0ae545b08c32..78987acbc455 100644 --- a/api/go.mod +++ b/api/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/api/v3 -go 1.25 +go 1.25.0 toolchain go1.25.1 diff --git a/cache/go.mod b/cache/go.mod index c8afe7c1587f..11dba8037697 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/cache/v3 -go 1.25 +go 1.25.0 toolchain go1.25.1 diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 891f5e3e50fd..9451e8b4eadc 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/client/pkg/v3 -go 1.25 +go 1.25.0 toolchain go1.25.1 diff --git a/client/v3/go.mod b/client/v3/go.mod index 8d2e19c75372..33a2a0de822d 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/client/v3 -go 1.25 +go 1.25.0 toolchain go1.25.1 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 9fa074f3d660..e48f00e18843 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/etcdctl/v3 -go 1.25 +go 1.25.0 toolchain go1.25.1 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index babc3671e270..e7c70831b857 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/etcdutl/v3 -go 1.25 +go 1.25.0 toolchain go1.25.1 diff --git a/go.mod b/go.mod index 00ac86b88719..89cb79dcead8 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/v3 -go 1.25 +go 1.25.0 toolchain go1.25.1 diff --git a/go.work b/go.work new file mode 100644 index 000000000000..a28bf146f67a --- /dev/null +++ b/go.work @@ -0,0 +1,21 @@ +// This is a generated file. Do not edit directly. + +go 1.25.0 + +toolchain go1.25.1 + +use ( + . + ./api + ./cache + ./client/pkg + ./client/v3 + ./etcdctl + ./etcdutl + ./pkg + ./server + ./tests + ./tools/mod + ./tools/rw-heatmaps + ./tools/testgrid-analysis +) diff --git a/go.work.sum b/go.work.sum new file mode 100644 index 000000000000..450cbe8fb47e --- /dev/null +++ b/go.work.sum @@ -0,0 +1,1393 @@ +bitbucket.org/creachadair/shell v0.0.8 h1:3yM6JcAfaGWzjzcCamTblzSIWXm/YSs0PFGIzBm2HTo= +bitbucket.org/creachadair/shell v0.0.8/go.mod h1:vINzudofoUXZSJ5tREgpy+Etyjsag3ait5WOWImEVZ0= +bitbucket.org/creachadair/stringset v0.0.11 h1:6Sv4CCv14Wm+OipW4f3tWOb0SQVpBDLW0knnJqUnmZ8= +bitbucket.org/liamstask/goose v0.0.0-20150115234039-8488cc47d90c h1:bkb2NMGo3/Du52wvYj9Whth5KZfMV6d3O0Vbr3nz/UE= +bitbucket.org/liamstask/goose v0.0.0-20150115234039-8488cc47d90c/go.mod h1:hSVuE3qU7grINVSwrmzHfpg9k87ALBk+XaualNyUzI4= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20230802163732-1c33ebd9ecfa.1 h1:tdpHgTbmbvEIARu+bixzmleMi14+3imnpoFXz+Qzjp4= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20230802163732-1c33ebd9ecfa.1/go.mod h1:xafc+XIsTxTy76GJQ1TKgvJWsSugFBqMaN27WhUblew= +cel.dev/expr v0.15.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg= +cel.dev/expr v0.20.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= +cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= +cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= +cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= +cloud.google.com/go v0.118.2/go.mod h1:CFO4UPEPi8oV21xoezZCrd3d81K4fFkDTEJu4R8K+9M= +cloud.google.com/go v0.118.3/go.mod h1:Lhs3YLnBlwJ4KA6nuObNMZ/fCbOQBPuWKPoE0Wa/9Vc= +cloud.google.com/go v0.120.0/go.mod h1:/beW32s8/pGRuj4IILWQNd4uuebeT4dkOhKmkfit64Q= +cloud.google.com/go v0.121.0/go.mod h1:rS7Kytwheu/y9buoDmu5EIpMMCI4Mb8ND4aeN4Vwj7Q= +cloud.google.com/go v0.121.2 h1:v2qQpN6Dx9x2NmwrqlesOt3Ys4ol5/lFZ6Mg1B7OJCg= +cloud.google.com/go v0.121.2/go.mod h1:nRFlrHq39MNVWu+zESP2PosMWA0ryJw8KUBZ2iZpxbw= +cloud.google.com/go/accessapproval v1.7.4/go.mod h1:/aTEh45LzplQgFYdQdwPMR9YdX0UlhBmvB84uAmQKUc= +cloud.google.com/go/accessapproval v1.8.3/go.mod h1:3speETyAv63TDrDmo5lIkpVueFkQcQchkiw/TAMbBo4= +cloud.google.com/go/accessapproval v1.8.6 h1:UkmDPCKvj24bkGVrvgJPcgSDkmIPw/bAmOiDb9avOiE= +cloud.google.com/go/accessapproval v1.8.6/go.mod h1:FfmTs7Emex5UvfnnpMkhuNkRCP85URnBFt5ClLxhZaQ= +cloud.google.com/go/accesscontextmanager v1.8.4/go.mod h1:ParU+WbMpD34s5JFEnGAnPBYAgUHozaTmDJU7aCU9+M= +cloud.google.com/go/accesscontextmanager v1.9.3/go.mod h1:S1MEQV5YjkAKBoMekpGrkXKfrBdsi4x6Dybfq6gZ8BU= +cloud.google.com/go/accesscontextmanager v1.9.6 h1:2LnncRqfYB8NEdh9+FeYxAt9POTW/0zVboktnRlO11w= +cloud.google.com/go/accesscontextmanager v1.9.6/go.mod h1:884XHwy1AQpCX5Cj2VqYse77gfLaq9f8emE2bYriilk= +cloud.google.com/go/ai v0.12.1 h1:m1n/VjUuHS+pEO/2R4/VbuuEIkgk0w67fDQvFaMngM0= +cloud.google.com/go/ai v0.12.1/go.mod h1:5vIPNe1ZQsVZqCliXIPL4QnhObQQY4d9hAGHdVc4iw4= +cloud.google.com/go/aiplatform v1.58.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= +cloud.google.com/go/aiplatform v1.74.0/go.mod h1:hVEw30CetNut5FrblYd1AJUWRVSIjoyIvp0EVUh51HA= +cloud.google.com/go/aiplatform v1.89.0 h1:niSJYc6ldWWVM9faXPo1Et1MVSQoLvVGriD7fwbJdtE= +cloud.google.com/go/aiplatform v1.89.0/go.mod h1:TzZtegPkinfXTtXVvZZpxx7noINFMVDrLkE7cEWhYEk= +cloud.google.com/go/analytics v0.22.0/go.mod h1:eiROFQKosh4hMaNhF85Oc9WO97Cpa7RggD40e/RBy8w= +cloud.google.com/go/analytics v0.26.0/go.mod h1:KZWJfs8uX/+lTjdIjvT58SFa86V9KM6aPXwZKK6uNVI= +cloud.google.com/go/analytics v0.28.1 h1:W2ft49J/LeEj9A07Jsd5Q2kAzajK0j0IffOyyzbxw04= +cloud.google.com/go/analytics v0.28.1/go.mod h1:iPaIVr5iXPB3JzkKPW1JddswksACRFl3NSHgVHsuYC4= +cloud.google.com/go/apigateway v1.6.4/go.mod h1:0EpJlVGH5HwAN4VF4Iec8TAzGN1aQgbxAWGJsnPCGGY= +cloud.google.com/go/apigateway v1.7.3/go.mod h1:uK0iRHdl2rdTe79bHW/bTsKhhXPcFihjUdb7RzhTPf4= +cloud.google.com/go/apigateway v1.7.6 h1:do+u3rjDYuTxD2ypRfv4uwTMoy/VHFLclvaYcb5Mv6I= +cloud.google.com/go/apigateway v1.7.6/go.mod h1:SiBx36VPjShaOCk8Emf63M2t2c1yF+I7mYZaId7OHiA= +cloud.google.com/go/apigeeconnect v1.6.4/go.mod h1:CapQCWZ8TCjnU0d7PobxhpOdVz/OVJ2Hr/Zcuu1xFx0= +cloud.google.com/go/apigeeconnect v1.7.3/go.mod h1:2ZkT5VCAqhYrDqf4dz7lGp4N/+LeNBSfou8Qs5bIuSg= +cloud.google.com/go/apigeeconnect v1.7.6 h1:ijEJSni5xROOn1YyiHgqcW0B0TWr0di9VgIi2gvyNjY= +cloud.google.com/go/apigeeconnect v1.7.6/go.mod h1:zqDhHY99YSn2li6OeEjFpAlhXYnXKl6DFb/fGu0ye2w= +cloud.google.com/go/apigeeregistry v0.8.2/go.mod h1:h4v11TDGdeXJDJvImtgK2AFVvMIgGWjSb0HRnBSjcX8= +cloud.google.com/go/apigeeregistry v0.9.3/go.mod h1:oNCP2VjOeI6U8yuOuTmU4pkffdcXzR5KxeUD71gF+Dg= +cloud.google.com/go/apigeeregistry v0.9.6 h1:TgdjAoGoRY81DEc2LYsYvi/OqCFImMzAk/TVKiSRsQw= +cloud.google.com/go/apigeeregistry v0.9.6/go.mod h1:AFEepJBKPtGDfgabG2HWaLH453VVWWFFs3P4W00jbPs= +cloud.google.com/go/apikeys v0.6.0 h1:B9CdHFZTFjVti89tmyXXrO+7vSNo2jvZuHG8zD5trdQ= +cloud.google.com/go/appengine v1.8.4/go.mod h1:TZ24v+wXBujtkK77CXCpjZbnuTvsFNT41MUaZ28D6vg= +cloud.google.com/go/appengine v1.9.3/go.mod h1:DtLsE/z3JufM/pCEIyVYebJ0h9UNPpN64GZQrYgOSyM= +cloud.google.com/go/appengine v1.9.6 h1:JJyY8icMmQeWfQ+d36IhkGvd3Guzvw0UAkvxT0wmUx8= +cloud.google.com/go/appengine v1.9.6/go.mod h1:jPp9T7Opvzl97qytaRGPwoH7pFI3GAcLDaui1K8PNjY= +cloud.google.com/go/area120 v0.8.4/go.mod h1:jfawXjxf29wyBXr48+W+GyX/f8fflxp642D/bb9v68M= +cloud.google.com/go/area120 v0.9.3/go.mod h1:F3vxS/+hqzrjJo55Xvda3Jznjjbd+4Foo43SN5eMd8M= +cloud.google.com/go/area120 v0.9.6 h1:iJrZ6AleZr4l+q0/fWVANFOhs90KiSB1Ccait5OYyNg= +cloud.google.com/go/area120 v0.9.6/go.mod h1:qKSokqe0iTmwBDA3tbLWonMEnh0pMAH4YxiceiHUed4= +cloud.google.com/go/artifactregistry v1.14.6/go.mod h1:np9LSFotNWHcjnOgh8UVK0RFPCTUGbO0ve3384xyHfE= +cloud.google.com/go/artifactregistry v1.16.1/go.mod h1:sPvFPZhfMavpiongKwfg93EOwJ18Tnj9DIwTU9xWUgs= +cloud.google.com/go/artifactregistry v1.17.1 h1:A20kj2S2HO9vlyBVyVFHPxArjxkXvLP5LjcdE7NhaPc= +cloud.google.com/go/artifactregistry v1.17.1/go.mod h1:06gLv5QwQPWtaudI2fWO37gfwwRUHwxm3gA8Fe568Hc= +cloud.google.com/go/asset v1.17.0/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= +cloud.google.com/go/asset v1.20.4/go.mod h1:DP09pZ+SoFWUZyPZx26xVroHk+6+9umnQv+01yfJxbM= +cloud.google.com/go/asset v1.21.1 h1:i55wWC/EwVdHMyJgRfbLp/L6ez4nQuOpZwSxkuqN9ek= +cloud.google.com/go/asset v1.21.1/go.mod h1:7AzY1GCC+s1O73yzLM1IpHFLHz3ws2OigmCpOQHwebk= +cloud.google.com/go/assuredworkloads v1.11.4/go.mod h1:4pwwGNwy1RP0m+y12ef3Q/8PaiWrIDQ6nD2E8kvWI9U= +cloud.google.com/go/assuredworkloads v1.12.3/go.mod h1:iGBkyMGdtlsxhCi4Ys5SeuvIrPTeI6HeuEJt7qJgJT8= +cloud.google.com/go/assuredworkloads v1.12.6 h1:ip/shfJYx6lrHBWYADjrrrubcm7uZzy50TTF5tPG7ek= +cloud.google.com/go/assuredworkloads v1.12.6/go.mod h1:QyZHd7nH08fmZ+G4ElihV1zoZ7H0FQCpgS0YWtwjCKo= +cloud.google.com/go/auth v0.14.1/go.mod h1:4JHUxlGXisL0AW8kXPtUF6ztuOksyfUQNFjfsOCXkPM= +cloud.google.com/go/auth v0.16.0/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= +cloud.google.com/go/auth v0.16.1/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= +cloud.google.com/go/auth v0.16.3 h1:kabzoQ9/bobUmnseYnBO6qQG7q4a/CffFRlJSxv2wCc= +cloud.google.com/go/auth v0.16.3/go.mod h1:NucRGjaXfzP1ltpcQ7On/VTZ0H4kWB5Jy+Y9Dnm76fA= +cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= +cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= +cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= +cloud.google.com/go/automl v1.13.4/go.mod h1:ULqwX/OLZ4hBVfKQaMtxMSTlPx0GqGbWN8uA/1EqCP8= +cloud.google.com/go/automl v1.14.4/go.mod h1:sVfsJ+g46y7QiQXpVs9nZ/h8ntdujHm5xhjHW32b3n4= +cloud.google.com/go/automl v1.14.7 h1:ZLj48Ur2Qcso4M3bgOtjsOmeV5Ee92N14wuOc8OW+L0= +cloud.google.com/go/automl v1.14.7/go.mod h1:8a4XbIH5pdvrReOU72oB+H3pOw2JBxo9XTk39oljObE= +cloud.google.com/go/baremetalsolution v1.2.3/go.mod h1:/UAQ5xG3faDdy180rCUv47e0jvpp3BFxT+Cl0PFjw5g= +cloud.google.com/go/baremetalsolution v1.3.3/go.mod h1:uF9g08RfmXTF6ZKbXxixy5cGMGFcG6137Z99XjxLOUI= +cloud.google.com/go/baremetalsolution v1.3.6 h1:9bdGlpY1LgLONQjFsDwrkjLzdPTlROpfU+GhA97YpOk= +cloud.google.com/go/baremetalsolution v1.3.6/go.mod h1:7/CS0LzpLccRGO0HL3q2Rofxas2JwjREKut414sE9iM= +cloud.google.com/go/batch v1.7.0/go.mod h1:J64gD4vsNSA2O5TtDB5AAux3nJ9iV8U3ilg3JDBYejU= +cloud.google.com/go/batch v1.12.0/go.mod h1:CATSBh/JglNv+tEU/x21Z47zNatLQ/gpGnpyKOzbbcM= +cloud.google.com/go/batch v1.12.2 h1:gWQdvdPplptpvrkqF6ibtxZkOsYKLTFbxYawHa/TvCg= +cloud.google.com/go/batch v1.12.2/go.mod h1:tbnuTN/Iw59/n1yjAYKV2aZUjvMM2VJqAgvUgft6UEU= +cloud.google.com/go/beyondcorp v1.0.3/go.mod h1:HcBvnEd7eYr+HGDd5ZbuVmBYX019C6CEXBonXbCVwJo= +cloud.google.com/go/beyondcorp v1.1.3/go.mod h1:3SlVKnlczNTSQFuH5SSyLuRd4KaBSc8FH/911TuF/Cc= +cloud.google.com/go/beyondcorp v1.1.6 h1:4FcR+4QmcNGkhVij6TrYS4AQVNLBo7PBXKxNrKzpclQ= +cloud.google.com/go/beyondcorp v1.1.6/go.mod h1:V1PigSWPGh5L/vRRmyutfnjAbkxLI2aWqJDdxKbwvsQ= +cloud.google.com/go/bigquery v1.58.0/go.mod h1:0eh4mWNY0KrBTjUzLjoYImapGORq9gEPT7MWjCy9lik= +cloud.google.com/go/bigquery v1.66.2/go.mod h1:+Yd6dRyW8D/FYEjUGodIbu0QaoEmgav7Lwhotup6njo= +cloud.google.com/go/bigquery v1.69.0 h1:rZvHnjSUs5sHK3F9awiuFk2PeOaB8suqNuim21GbaTc= +cloud.google.com/go/bigquery v1.69.0/go.mod h1:TdGLquA3h/mGg+McX+GsqG9afAzTAcldMjqhdjHTLew= +cloud.google.com/go/bigtable v1.35.0/go.mod h1:EabtwwmTcOJFXp+oMZAT/jZkyDIjNwrv53TrS4DGrrM= +cloud.google.com/go/bigtable v1.37.0 h1:Q+x7y04lQ0B+WXp03wc1/FLhFt4CwcQdkwWT0M4Jp3w= +cloud.google.com/go/bigtable v1.37.0/go.mod h1:HXqddP6hduwzrtiTCqZPpj9ij4hGZb4Zy1WF/dT+yaU= +cloud.google.com/go/billing v1.18.0/go.mod h1:5DOYQStCxquGprqfuid/7haD7th74kyMBHkjO/OvDtk= +cloud.google.com/go/billing v1.20.1/go.mod h1:DhT80hUZ9gz5UqaxtK/LNoDELfxH73704VTce+JZqrY= +cloud.google.com/go/billing v1.20.4 h1:pqM5/c9UGydB9H90IPCxSvfCNLUPazAOSMsZkz5q5P4= +cloud.google.com/go/billing v1.20.4/go.mod h1:hBm7iUmGKGCnBm6Wp439YgEdt+OnefEq/Ib9SlJYxIU= +cloud.google.com/go/binaryauthorization v1.8.0/go.mod h1:VQ/nUGRKhrStlGr+8GMS8f6/vznYLkdK5vaKfdCIpvU= +cloud.google.com/go/binaryauthorization v1.9.3/go.mod h1:f3xcb/7vWklDoF+q2EaAIS+/A/e1278IgiYxonRX+Jk= +cloud.google.com/go/binaryauthorization v1.9.5 h1:T0zYEroXT+y0O/x/yZd5SwQdFv4UbUINjvJyJKzDm0Q= +cloud.google.com/go/binaryauthorization v1.9.5/go.mod h1:CV5GkS2eiY461Bzv+OH3r5/AsuB6zny+MruRju3ccB8= +cloud.google.com/go/certificatemanager v1.7.4/go.mod h1:FHAylPe/6IIKuaRmHbjbdLhGhVQ+CWHSD5Jq0k4+cCE= +cloud.google.com/go/certificatemanager v1.9.3/go.mod h1:O5T4Lg/dHbDHLFFooV2Mh/VsT3Mj2CzPEWRo4qw5prc= +cloud.google.com/go/certificatemanager v1.9.5 h1:+ZPglfDurCcsv4azizDFpBucD1IkRjWjbnU7zceyjfY= +cloud.google.com/go/certificatemanager v1.9.5/go.mod h1:kn7gxT/80oVGhjL8rurMUYD36AOimgtzSBPadtAeffs= +cloud.google.com/go/channel v1.17.4/go.mod h1:QcEBuZLGGrUMm7kNj9IbU1ZfmJq2apotsV83hbxX7eE= +cloud.google.com/go/channel v1.19.2/go.mod h1:syX5opXGXFt17DHCyCdbdlM464Tx0gHMi46UlEWY9Gg= +cloud.google.com/go/channel v1.19.5 h1:UI+ZsRkS15hi9DRF+WAvTVLVuSeZiRmvCU8cjkjOwUU= +cloud.google.com/go/channel v1.19.5/go.mod h1:vevu+LK8Oy1Yuf7lcpDbkQQQm5I7oiY5fFTn3uwfQLY= +cloud.google.com/go/cloudbuild v1.15.0/go.mod h1:eIXYWmRt3UtggLnFGx4JvXcMj4kShhVzGndL1LwleEM= +cloud.google.com/go/cloudbuild v1.22.0/go.mod h1:p99MbQrzcENHb/MqU3R6rpqFRk/X+lNG3PdZEIhM95Y= +cloud.google.com/go/cloudbuild v1.22.2 h1:4LlrIFa3IFLgD1mGEXmUE4cm9fYoU71OLwTvjM7Dg3c= +cloud.google.com/go/cloudbuild v1.22.2/go.mod h1:rPyXfINSgMqMZvuTk1DbZcbKYtvbYF/i9IXQ7eeEMIM= +cloud.google.com/go/clouddms v1.7.3/go.mod h1:fkN2HQQNUYInAU3NQ3vRLkV2iWs8lIdmBKOx4nrL6Hc= +cloud.google.com/go/clouddms v1.8.4/go.mod h1:RadeJ3KozRwy4K/gAs7W74ZU3GmGgVq5K8sRqNs3HfA= +cloud.google.com/go/clouddms v1.8.7 h1:IWJbQBEECTaNanDRN1XdR7FU53MJ1nylTl3s9T3MuyI= +cloud.google.com/go/clouddms v1.8.7/go.mod h1:DhWLd3nzHP8GoHkA6hOhso0R9Iou+IGggNqlVaq/KZ4= +cloud.google.com/go/cloudtasks v1.12.4/go.mod h1:BEPu0Gtt2dU6FxZHNqqNdGqIG86qyWKBPGnsb7udGY0= +cloud.google.com/go/cloudtasks v1.13.3/go.mod h1:f9XRvmuFTm3VhIKzkzLCPyINSU3rjjvFUsFVGR5wi24= +cloud.google.com/go/cloudtasks v1.13.6 h1:Fwan19UiNoFD+3KY0MnNHE5DyixOxNzS1mZ4ChOdpy0= +cloud.google.com/go/cloudtasks v1.13.6/go.mod h1:/IDaQqGKMixD+ayM43CfsvWF2k36GeomEuy9gL4gLmU= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= +cloud.google.com/go/compute v1.23.4/go.mod h1:/EJMj55asU6kAFnuZET8zqgwgJ9FvXWXOkkfQZa4ioI= +cloud.google.com/go/compute v1.34.0/go.mod h1:zWZwtLwZQyonEvIQBuIa0WvraMYK69J5eDCOw9VZU4g= +cloud.google.com/go/compute v1.38.0 h1:MilCLYQW2m7Dku8hRIIKo4r0oKastlD74sSu16riYKs= +cloud.google.com/go/compute v1.38.0/go.mod h1:oAFNIuXOmXbK/ssXm3z4nZB8ckPdjltJ7xhHCdbWFZM= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= +cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= +cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/contactcenterinsights v1.12.1/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= +cloud.google.com/go/contactcenterinsights v1.17.1/go.mod h1:n8OiNv7buLA2AkGVkfuvtW3HU13AdTmEwAlAu46bfxY= +cloud.google.com/go/contactcenterinsights v1.17.3 h1:lenyU3uzHwKDveCwmpfNxHYvLS3uEBWdn+O7+rSxy+Q= +cloud.google.com/go/contactcenterinsights v1.17.3/go.mod h1:7Uu2CpxS3f6XxhRdlEzYAkrChpR5P5QfcdGAFEdHOG8= +cloud.google.com/go/container v1.29.0/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= +cloud.google.com/go/container v1.42.2/go.mod h1:y71YW7uR5Ck+9Vsbst0AF2F3UMgqmsN4SP8JR9xEsR8= +cloud.google.com/go/container v1.43.0 h1:A6J92FJPfxTvyX7MHF+w4t2W9WCqvHOi9UB5SAeSy3w= +cloud.google.com/go/container v1.43.0/go.mod h1:ETU9WZ1KM9ikEKLzrhRVao7KHtalDQu6aPqM34zDr/U= +cloud.google.com/go/containeranalysis v0.11.3/go.mod h1:kMeST7yWFQMGjiG9K7Eov+fPNQcGhb8mXj/UcTiWw9U= +cloud.google.com/go/containeranalysis v0.13.3/go.mod h1:0SYnagA1Ivb7qPqKNYPkCtphhkJn3IzgaSp3mj+9XAY= +cloud.google.com/go/containeranalysis v0.14.1 h1:1SoHlNqL3XrhqcoozB+3eoHif2sRUFtp/JeASQTtGKo= +cloud.google.com/go/containeranalysis v0.14.1/go.mod h1:28e+tlZgauWGHmEbnI5UfIsjMmrkoR1tFN0K2i71jBI= +cloud.google.com/go/datacatalog v1.19.2/go.mod h1:2YbODwmhpLM4lOFe3PuEhHK9EyTzQJ5AXgIy7EDKTEE= +cloud.google.com/go/datacatalog v1.24.3/go.mod h1:Z4g33XblDxWGHngDzcpfeOU0b1ERlDPTuQoYG6NkF1s= +cloud.google.com/go/datacatalog v1.26.0 h1:eFgygb3DTufTWWUB8ARk+dSuXz+aefNJXTlkWlQcWwE= +cloud.google.com/go/datacatalog v1.26.0/go.mod h1:bLN2HLBAwB3kLTFT5ZKLHVPj/weNz6bR0c7nYp0LE14= +cloud.google.com/go/dataflow v0.9.4/go.mod h1:4G8vAkHYCSzU8b/kmsoR2lWyHJD85oMJPHMtan40K8w= +cloud.google.com/go/dataflow v0.10.3/go.mod h1:5EuVGDh5Tg4mDePWXMMGAG6QYAQhLNyzxdNQ0A1FfW4= +cloud.google.com/go/dataflow v0.11.0 h1:AdhB4cAkMOC9NtrHJxpKOVvO/VqBLaIyk0tEEhbGjYM= +cloud.google.com/go/dataflow v0.11.0/go.mod h1:gNHC9fUjlV9miu0hd4oQaXibIuVYTQvZhMdPievKsPk= +cloud.google.com/go/dataform v0.9.1/go.mod h1:pWTg+zGQ7i16pyn0bS1ruqIE91SdL2FDMvEYu/8oQxs= +cloud.google.com/go/dataform v0.10.3/go.mod h1:8SruzxHYCxtvG53gXqDZvZCx12BlsUchuV/JQFtyTCw= +cloud.google.com/go/dataform v0.12.0 h1:0eCPTPUC/RZ863aVfXTJLkg0tEpdpn62VD6ywSmmzxM= +cloud.google.com/go/dataform v0.12.0/go.mod h1:PuDIEY0lSVuPrZqcFji1fmr5RRvz3DGz4YP/cONc8g4= +cloud.google.com/go/datafusion v1.7.4/go.mod h1:BBs78WTOLYkT4GVZIXQCZT3GFpkpDN4aBY4NDX/jVlM= +cloud.google.com/go/datafusion v1.8.3/go.mod h1:hyglMzE57KRf0Rf/N2VRPcHCwKfZAAucx+LATY6Jc6Q= +cloud.google.com/go/datafusion v1.8.6 h1:GZ6J+CR8CEeWAj8luRCtr8GvImSQRkArIIqGiZOnzBA= +cloud.google.com/go/datafusion v1.8.6/go.mod h1:fCyKJF2zUKC+O3hc2F9ja5EUCAbT4zcH692z8HiFZFw= +cloud.google.com/go/datalabeling v0.8.4/go.mod h1:Z1z3E6LHtffBGrNUkKwbwbDxTiXEApLzIgmymj8A3S8= +cloud.google.com/go/datalabeling v0.9.3/go.mod h1:3LDFUgOx+EuNUzDyjU7VElO8L+b5LeaZEFA/ZU1O1XU= +cloud.google.com/go/datalabeling v0.9.6 h1:VOZ5U+78ttnhNCEID7qdeogqZQzK5N+LPHIQ9Q3YDsc= +cloud.google.com/go/datalabeling v0.9.6/go.mod h1:n7o4x0vtPensZOoFwFa4UfZgkSZm8Qs0Pg/T3kQjXSM= +cloud.google.com/go/dataplex v1.14.0/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= +cloud.google.com/go/dataplex v1.22.0/go.mod h1:g166QMCGHvwc3qlTG4p34n+lHwu7JFfaNpMfI2uO7b8= +cloud.google.com/go/dataplex v1.25.3 h1:Xr0Toh6wyBlmL3H4EPu1YKwxUtkDSzzq+IP0iLc88kk= +cloud.google.com/go/dataplex v1.25.3/go.mod h1:wOJXnOg6bem0tyslu4hZBTncfqcPNDpYGKzed3+bd+E= +cloud.google.com/go/dataproc v1.12.0 h1:W47qHL3W4BPkAIbk4SWmIERwsWBaNnWm0P2sdx3YgGU= +cloud.google.com/go/dataproc/v2 v2.3.0/go.mod h1:G5R6GBc9r36SXv/RtZIVfB8SipI+xVn0bX5SxUzVYbY= +cloud.google.com/go/dataproc/v2 v2.11.0/go.mod h1:9vgGrn57ra7KBqz+B2KD+ltzEXvnHAUClFgq/ryU99g= +cloud.google.com/go/dataproc/v2 v2.11.2 h1:KhC8wdLILpAs17yeTG6Miwg1v0nOP/OXD+9QNg3w6AQ= +cloud.google.com/go/dataproc/v2 v2.11.2/go.mod h1:xwukBjtfiO4vMEa1VdqyFLqJmcv7t3lo+PbLDcTEw+g= +cloud.google.com/go/dataqna v0.8.4/go.mod h1:mySRKjKg5Lz784P6sCov3p1QD+RZQONRMRjzGNcFd0c= +cloud.google.com/go/dataqna v0.9.3/go.mod h1:PiAfkXxa2LZYxMnOWVYWz3KgY7txdFg9HEMQPb4u1JA= +cloud.google.com/go/dataqna v0.9.7 h1:qTRAG/E3T63Xj1orefRlwupfwH9c9ERUAnWSRGp75so= +cloud.google.com/go/dataqna v0.9.7/go.mod h1:4ac3r7zm7Wqm8NAc8sDIDM0v7Dz7d1e/1Ka1yMFanUM= +cloud.google.com/go/datastore v1.15.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= +cloud.google.com/go/datastore v1.20.0 h1:NNpXoyEqIJmZFc0ACcwBEaXnmscUpcG4NkKnbCePmiM= +cloud.google.com/go/datastore v1.20.0/go.mod h1:uFo3e+aEpRfHgtp5pp0+6M0o147KoPaYNaPAKpfh8Ew= +cloud.google.com/go/datastream v1.10.3/go.mod h1:YR0USzgjhqA/Id0Ycu1VvZe8hEWwrkjuXrGbzeDOSEA= +cloud.google.com/go/datastream v1.13.0/go.mod h1:GrL2+KC8mV4GjbVG43Syo5yyDXp3EH+t6N2HnZb1GOQ= +cloud.google.com/go/datastream v1.14.1 h1:j+y0lUKm9pbDjJn0YcWxPI/hXNGUQ80GE6yrFuJC/JA= +cloud.google.com/go/datastream v1.14.1/go.mod h1:JqMKXq/e0OMkEgfYe0nP+lDye5G2IhIlmencWxmesMo= +cloud.google.com/go/deploy v1.17.0/go.mod h1:XBr42U5jIr64t92gcpOXxNrqL2PStQCXHuKK5GRUuYo= +cloud.google.com/go/deploy v1.26.2/go.mod h1:XpS3sG/ivkXCfzbzJXY9DXTeCJ5r68gIyeOgVGxGNEs= +cloud.google.com/go/deploy v1.27.2 h1:C0VqBhFyQFp6+xgPHZAD7LeRA4XGy5YLzGmPQ2NhlLk= +cloud.google.com/go/deploy v1.27.2/go.mod h1:4NHWE7ENry2A4O1i/4iAPfXHnJCZ01xckAKpZQwhg1M= +cloud.google.com/go/dialogflow v1.48.1/go.mod h1:C1sjs2/g9cEwjCltkKeYp3FFpz8BOzNondEaAlCpt+A= +cloud.google.com/go/dialogflow v1.66.0/go.mod h1:BPiRTnnXP/tHLot5h/U62Xcp+i6ekRj/bq6uq88p+Lw= +cloud.google.com/go/dialogflow v1.68.2 h1:bXpoqPRf37KKxB79PKr20B/TAU/Z5iA0FnB6C5N2jrA= +cloud.google.com/go/dialogflow v1.68.2/go.mod h1:E0Ocrhf5/nANZzBju8RX8rONf0PuIvz2fVj3XkbAhiY= +cloud.google.com/go/dlp v1.11.1/go.mod h1:/PA2EnioBeXTL/0hInwgj0rfsQb3lpE3R8XUJxqUNKI= +cloud.google.com/go/dlp v1.21.0/go.mod h1:Y9HOVtPoArpL9sI1O33aN/vK9QRwDERU9PEJJfM8DvE= +cloud.google.com/go/dlp v1.23.0 h1:3xWRKylXxhysaQaV+DLev1YcIywFUCc7yJEE6R7ZGDQ= +cloud.google.com/go/dlp v1.23.0/go.mod h1:vVT4RlyPMEMcVHexdPT6iMVac3seq3l6b8UPdYpgFrg= +cloud.google.com/go/documentai v1.23.7/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g= +cloud.google.com/go/documentai v1.35.2/go.mod h1:oh/0YXosgEq3hVhyH4ZQ7VNXPaveRO4eLVM3tBSZOsI= +cloud.google.com/go/documentai v1.37.0 h1:7fla8GcarupO15eatRTUveXCob6DOSW1Wa+1i63CM3Q= +cloud.google.com/go/documentai v1.37.0/go.mod h1:qAf3ewuIUJgvSHQmmUWvM3Ogsr5A16U2WPHmiJldvLA= +cloud.google.com/go/domains v0.9.4/go.mod h1:27jmJGShuXYdUNjyDG0SodTfT5RwLi7xmH334Gvi3fY= +cloud.google.com/go/domains v0.10.3/go.mod h1:m7sLe18p0PQab56bVH3JATYOJqyRHhmbye6gz7isC7o= +cloud.google.com/go/domains v0.10.6 h1:TI+Aavwc31KD8huOquJz0ISchCq1zSEWc9M+JcPJyxc= +cloud.google.com/go/domains v0.10.6/go.mod h1:3xzG+hASKsVBA8dOPc4cIaoV3OdBHl1qgUpAvXK7pGY= +cloud.google.com/go/edgecontainer v1.1.4/go.mod h1:AvFdVuZuVGdgaE5YvlL1faAoa1ndRR/5XhXZvPBHbsE= +cloud.google.com/go/edgecontainer v1.4.1/go.mod h1:ubMQvXSxsvtEjJLyqcPFrdWrHfvjQxdoyt+SUrAi5ek= +cloud.google.com/go/edgecontainer v1.4.3 h1:9tfGCicvrki927T+hGMB0yYmwIbRuZY6JR1/awrKiZ0= +cloud.google.com/go/edgecontainer v1.4.3/go.mod h1:q9Ojw2ox0uhAvFisnfPRAXFTB1nfRIOIXVWzdXMZLcE= +cloud.google.com/go/errorreporting v0.3.2 h1:isaoPwWX8kbAOea4qahcmttoS79+gQhvKsfg5L5AgH8= +cloud.google.com/go/errorreporting v0.3.2/go.mod h1:s5kjs5r3l6A8UUyIsgvAhGq6tkqyBCUss0FRpsoVTww= +cloud.google.com/go/essentialcontacts v1.6.5/go.mod h1:jjYbPzw0x+yglXC890l6ECJWdYeZ5dlYACTFL0U/VuM= +cloud.google.com/go/essentialcontacts v1.7.3/go.mod h1:uimfZgDbhWNCmBpwUUPHe4vcMY2azsq/axC9f7vZFKI= +cloud.google.com/go/essentialcontacts v1.7.6 h1:ysHZ4gr4plW1CL1Ur/AucUUfh20hDjSFbfjxSK0q/sk= +cloud.google.com/go/essentialcontacts v1.7.6/go.mod h1:/Ycn2egr4+XfmAfxpLYsJeJlVf9MVnq9V7OMQr9R4lA= +cloud.google.com/go/eventarc v1.13.3/go.mod h1:RWH10IAZIRcj1s/vClXkBgMHwh59ts7hSWcqD3kaclg= +cloud.google.com/go/eventarc v1.15.1/go.mod h1:K2luolBpwaVOujZQyx6wdG4n2Xum4t0q1cMBmY1xVyI= +cloud.google.com/go/eventarc v1.15.5 h1:bZW7ZMM+XXNErg6rOZcgxUzAgz4vpReRDP3ZiGf7/sI= +cloud.google.com/go/eventarc v1.15.5/go.mod h1:vDCqGqyY7SRiickhEGt1Zhuj81Ya4F/NtwwL3OZNskg= +cloud.google.com/go/filestore v1.8.0/go.mod h1:S5JCxIbFjeBhWMTfIYH2Jx24J6BqjwpkkPl+nBA5DlI= +cloud.google.com/go/filestore v1.9.3/go.mod h1:Me0ZRT5JngT/aZPIKpIK6N4JGMzrFHRtGHd9ayUS4R4= +cloud.google.com/go/filestore v1.10.2 h1:LjoAyp9TvVNBns3sUUzPaNsQiGpR2BReGmTS3bUCuBE= +cloud.google.com/go/filestore v1.10.2/go.mod h1:w0Pr8uQeSRQfCPRsL0sYKW6NKyooRgixCkV9yyLykR4= +cloud.google.com/go/firestore v1.14.0/go.mod h1:96MVaHLsEhbvkBEdZgfN+AS/GIkco1LRpH9Xp9YZfzQ= +cloud.google.com/go/firestore v1.18.0 h1:cuydCaLS7Vl2SatAeivXyhbhDEIR8BDmtn4egDhIn2s= +cloud.google.com/go/firestore v1.18.0/go.mod h1:5ye0v48PhseZBdcl0qbl3uttu7FIEwEYVaWm0UIEOEU= +cloud.google.com/go/functions v1.15.4/go.mod h1:CAsTc3VlRMVvx+XqXxKqVevguqJpnVip4DdonFsX28I= +cloud.google.com/go/functions v1.19.3/go.mod h1:nOZ34tGWMmwfiSJjoH/16+Ko5106x+1Iji29wzrBeOo= +cloud.google.com/go/functions v1.19.6 h1:vJgWlvxtJG6p/JrbXAkz83DbgwOyFhZZI1Y32vUddjY= +cloud.google.com/go/functions v1.19.6/go.mod h1:0G0RnIlbM4MJEycfbPZlCzSf2lPOjL7toLDwl+r0ZBw= +cloud.google.com/go/gaming v1.10.1 h1:5qZmZEWzMf8GEFgm9NeC3bjFRpt7x4S6U7oLbxaf7N8= +cloud.google.com/go/gkebackup v1.3.4/go.mod h1:gLVlbM8h/nHIs09ns1qx3q3eaXcGSELgNu1DWXYz1HI= +cloud.google.com/go/gkebackup v1.6.3/go.mod h1:JJzGsA8/suXpTDtqI7n9RZW97PXa2CIp+n8aRC/y57k= +cloud.google.com/go/gkebackup v1.8.0 h1:eBqOt61yEChvj7I/GDPBbdCCRdUPudD1qrQYfYWV3Ok= +cloud.google.com/go/gkebackup v1.8.0/go.mod h1:FjsjNldDilC9MWKEHExnK3kKJyTDaSdO1vF0QeWSOPU= +cloud.google.com/go/gkeconnect v0.8.4/go.mod h1:84hZz4UMlDCKl8ifVW8layK4WHlMAFeq8vbzjU0yJkw= +cloud.google.com/go/gkeconnect v0.12.1/go.mod h1:L1dhGY8LjINmWfR30vneozonQKRSIi5DWGIHjOqo58A= +cloud.google.com/go/gkeconnect v0.12.4 h1:67/rnPmF/I1Wmf7jWyKH+z4OWjU8ZUI0Vmzxvmzf3KY= +cloud.google.com/go/gkeconnect v0.12.4/go.mod h1:bvpU9EbBpZnXGo3nqJ1pzbHWIfA9fYqgBMJ1VjxaZdk= +cloud.google.com/go/gkehub v0.14.4/go.mod h1:Xispfu2MqnnFt8rV/2/3o73SK1snL8s9dYJ9G2oQMfc= +cloud.google.com/go/gkehub v0.15.3/go.mod h1:nzFT/Q+4HdQES/F+FP1QACEEWR9Hd+Sh00qgiH636cU= +cloud.google.com/go/gkehub v0.15.6 h1:9iogrmNNa+drDPf/zkLH/6KGgUf7FuuyokmithoGwMQ= +cloud.google.com/go/gkehub v0.15.6/go.mod h1:sRT0cOPAgI1jUJrS3gzwdYCJ1NEzVVwmnMKEwrS2QaM= +cloud.google.com/go/gkemulticloud v1.1.0/go.mod h1:7NpJBN94U6DY1xHIbsDqB2+TFZUfjLUKLjUX8NGLor0= +cloud.google.com/go/gkemulticloud v1.5.1/go.mod h1:OdmhfSPXuJ0Kn9dQ2I3Ou7XZ3QK8caV4XVOJZwrIa3s= +cloud.google.com/go/gkemulticloud v1.5.3 h1:334aZmOzIt3LVBpguCof8IHaLaftcZlx+L0TGBukYkY= +cloud.google.com/go/gkemulticloud v1.5.3/go.mod h1:KPFf+/RcfvmuScqwS9/2MF5exZAmXSuoSLPuaQ98Xlk= +cloud.google.com/go/grafeas v0.3.15 h1:lBjwKmhpiqOAFaE0xdqF8CqO74a99s8tUT5mCkBBxPs= +cloud.google.com/go/grafeas v0.3.15/go.mod h1:irwcwIQOBlLBotGdMwme8PipnloOPqILfIvMwlmu8Pk= +cloud.google.com/go/gsuiteaddons v1.6.4/go.mod h1:rxtstw7Fx22uLOXBpsvb9DUbC+fiXs7rF4U29KHM/pE= +cloud.google.com/go/gsuiteaddons v1.7.4/go.mod h1:gpE2RUok+HUhuK7RPE/fCOEgnTffS0lCHRaAZLxAMeE= +cloud.google.com/go/gsuiteaddons v1.7.7 h1:sk0SxpCGIA7tIO//XdiiG29f2vrF6Pq/dsxxyBGiRBY= +cloud.google.com/go/gsuiteaddons v1.7.7/go.mod h1:zTGmmKG/GEBCONsvMOY2ckDiEsq3FN+lzWGUiXccF9o= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/iam v1.4.0/go.mod h1:gMBgqPaERlriaOV0CUl//XUzDhSfXevn4OEUbg6VRs4= +cloud.google.com/go/iam v1.5.2 h1:qgFRAGEmd8z6dJ/qyEchAuL9jpswyODjA2lS+w234g8= +cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE= +cloud.google.com/go/iap v1.9.3/go.mod h1:DTdutSZBqkkOm2HEOTBzhZxh2mwwxshfD/h3yofAiCw= +cloud.google.com/go/iap v1.10.3/go.mod h1:xKgn7bocMuCFYhzRizRWP635E2LNPnIXT7DW0TlyPJ8= +cloud.google.com/go/iap v1.11.2 h1:VIioCrYsyWiRGx7Y8RDNylpI6d4t1Qx5ZgSLUVmWWPo= +cloud.google.com/go/iap v1.11.2/go.mod h1:Bh99DMUpP5CitL9lK0BC8MYgjjYO4b3FbyhgW1VHJvg= +cloud.google.com/go/ids v1.4.4/go.mod h1:z+WUc2eEl6S/1aZWzwtVNWoSZslgzPxAboS0lZX0HjI= +cloud.google.com/go/ids v1.5.3/go.mod h1:a2MX8g18Eqs7yxD/pnEdid42SyBUm9LIzSWf8Jux9OY= +cloud.google.com/go/ids v1.5.6 h1:uKGuaWozDcjg3wyf54Gd7tCH2YK8BFeH9qo1xBNiPKE= +cloud.google.com/go/ids v1.5.6/go.mod h1:y3SGLmEf9KiwKsH7OHvYYVNIJAtXybqsD2z8gppsziQ= +cloud.google.com/go/iot v1.7.4/go.mod h1:3TWqDVvsddYBG++nHSZmluoCAVGr1hAcabbWZNKEZLk= +cloud.google.com/go/iot v1.8.3/go.mod h1:dYhrZh+vUxIQ9m3uajyKRSW7moF/n0rYmA2PhYAkMFE= +cloud.google.com/go/iot v1.8.6 h1:A3AhugnIViAZkC3/lHAQDaXBIk2ZOPBZS0XQCyZsjjc= +cloud.google.com/go/iot v1.8.6/go.mod h1:MThnkiihNkMysWNeNje2Hp0GSOpEq2Wkb/DkBCVYa0U= +cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= +cloud.google.com/go/kms v1.21.0/go.mod h1:zoFXMhVVK7lQ3JC9xmhHMoQhnjEDZFoLAr5YMwzBLtk= +cloud.google.com/go/kms v1.22.0 h1:dBRIj7+GDeeEvatJeTB19oYZNV0aj6wEqSIT/7gLqtk= +cloud.google.com/go/kms v1.22.0/go.mod h1:U7mf8Sva5jpOb4bxYZdtw/9zsbIjrklYwPcvMk34AL8= +cloud.google.com/go/language v1.12.2/go.mod h1:9idWapzr/JKXBBQ4lWqVX/hcadxB194ry20m/bTrhWc= +cloud.google.com/go/language v1.14.3/go.mod h1:hjamj+KH//QzF561ZuU2J+82DdMlFUjmiGVWpovGGSA= +cloud.google.com/go/language v1.14.5 h1:BVJ/POtlnJ55LElvnQY19UOxpMVtHoHHkFJW2uHJsVU= +cloud.google.com/go/language v1.14.5/go.mod h1:nl2cyAVjcBct1Hk73tzxuKebk0t2eULFCaruhetdZIA= +cloud.google.com/go/lifesciences v0.9.4/go.mod h1:bhm64duKhMi7s9jR9WYJYvjAFJwRqNj+Nia7hF0Z7JA= +cloud.google.com/go/lifesciences v0.10.3/go.mod h1:hnUUFht+KcZcliixAg+iOh88FUwAzDQQt5tWd7iIpNg= +cloud.google.com/go/lifesciences v0.10.6 h1:Vu7XF4s5KJ8+mSLIL4eaQM6JTyWXvSB54oqC+CUZH20= +cloud.google.com/go/lifesciences v0.10.6/go.mod h1:1nnZwaZcBThDujs9wXzECnd1S5d+UiDkPuJWAmhRi7Q= +cloud.google.com/go/logging v1.9.0/go.mod h1:1Io0vnZv4onoUnsVUQY3HZ3Igb1nBchky0A0y7BBBhE= +cloud.google.com/go/logging v1.13.0 h1:7j0HgAp0B94o1YRDqiqm26w4q1rDMH7XNRU34lJXHYc= +cloud.google.com/go/logging v1.13.0/go.mod h1:36CoKh6KA/M0PbhPKMq6/qety2DCAErbhXT62TuXALA= +cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= +cloud.google.com/go/longrunning v0.6.4/go.mod h1:ttZpLCe6e7EXvn9OxpBRx7kZEB0efv8yBO6YnVMfhJs= +cloud.google.com/go/longrunning v0.6.6/go.mod h1:hyeGJUrPHcx0u2Uu1UFSoYZLn4lkMrccJig0t4FI7yw= +cloud.google.com/go/longrunning v0.6.7 h1:IGtfDWHhQCgCjwQjV9iiLnUta9LBCo8R9QmAFsS/PrE= +cloud.google.com/go/longrunning v0.6.7/go.mod h1:EAFV3IZAKmM56TyiE6VAP3VoTzhZzySwI/YI1s/nRsY= +cloud.google.com/go/managedidentities v1.6.4/go.mod h1:WgyaECfHmF00t/1Uk8Oun3CQ2PGUtjc3e9Alh79wyiM= +cloud.google.com/go/managedidentities v1.7.3/go.mod h1:H9hO2aMkjlpY+CNnKWRh+WoQiUIDO8457wWzUGsdtLA= +cloud.google.com/go/managedidentities v1.7.6 h1:zrZVWXZJlmHnfpyCrTQIbDBGUBHrcOOvrsjMjoXRxrk= +cloud.google.com/go/managedidentities v1.7.6/go.mod h1:pYCWPaI1AvR8Q027Vtp+SFSM/VOVgbjBF4rxp1/z5p4= +cloud.google.com/go/maps v1.6.3/go.mod h1:VGAn809ADswi1ASofL5lveOHPnE6Rk/SFTTBx1yuOLw= +cloud.google.com/go/maps v1.19.0/go.mod h1:goHUXrmzoZvQjUVd0KGhH8t3AYRm17P8b+fsyR1UAmQ= +cloud.google.com/go/maps v1.21.0 h1:El61AfMxC1sU/RU8Wzs9dkZEgltyunKM86aKF9aDlaE= +cloud.google.com/go/maps v1.21.0/go.mod h1:cqzZ7+DWUKKbPTgqE+KuNQtiCRyg/o7WZF9zDQk+HQs= +cloud.google.com/go/mediatranslation v0.8.4/go.mod h1:9WstgtNVAdN53m6TQa5GjIjLqKQPXe74hwSCxUP6nj4= +cloud.google.com/go/mediatranslation v0.9.3/go.mod h1:KTrFV0dh7duYKDjmuzjM++2Wn6yw/I5sjZQVV5k3BAA= +cloud.google.com/go/mediatranslation v0.9.6 h1:SDGatA73TgZ8iCvILVXpk/1qhTK5DJyufUDEWgbmbV8= +cloud.google.com/go/mediatranslation v0.9.6/go.mod h1:WS3QmObhRtr2Xu5laJBQSsjnWFPPthsyetlOyT9fJvE= +cloud.google.com/go/memcache v1.10.4/go.mod h1:v/d8PuC8d1gD6Yn5+I3INzLR01IDn0N4Ym56RgikSI0= +cloud.google.com/go/memcache v1.11.3/go.mod h1:UeWI9cmY7hvjU1EU6dwJcQb6EFG4GaM3KNXOO2OFsbI= +cloud.google.com/go/memcache v1.11.6 h1:33IVqQEmFiITsBXwGHeTkUhWz0kLNKr90nV3e22uLPs= +cloud.google.com/go/memcache v1.11.6/go.mod h1:ZM6xr1mw3F8TWO+In7eq9rKlJc3jlX2MDt4+4H+/+cc= +cloud.google.com/go/metastore v1.13.3/go.mod h1:K+wdjXdtkdk7AQg4+sXS8bRrQa9gcOr+foOMF2tqINE= +cloud.google.com/go/metastore v1.14.3/go.mod h1:HlbGVOvg0ubBLVFRk3Otj3gtuzInuzO/TImOBwsKlG4= +cloud.google.com/go/metastore v1.14.7 h1:dLm59AHHZCorveCylj7c2iWhkQsmMIeWTsV+tG/BXtY= +cloud.google.com/go/metastore v1.14.7/go.mod h1:0dka99KQofeUgdfu+K/Jk1KeT9veWZlxuZdJpZPtuYU= +cloud.google.com/go/monitoring v1.17.0/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw= +cloud.google.com/go/monitoring v1.24.0/go.mod h1:Bd1PRK5bmQBQNnuGwHBfUamAV1ys9049oEPHnn4pcsc= +cloud.google.com/go/monitoring v1.24.2 h1:5OTsoJ1dXYIiMiuL+sYscLc9BumrL3CarVLL7dd7lHM= +cloud.google.com/go/monitoring v1.24.2/go.mod h1:x7yzPWcgDRnPEv3sI+jJGBkwl5qINf+6qY4eq0I9B4U= +cloud.google.com/go/networkconnectivity v1.14.3/go.mod h1:4aoeFdrJpYEXNvrnfyD5kIzs8YtHg945Og4koAjHQek= +cloud.google.com/go/networkconnectivity v1.16.1/go.mod h1:GBC1iOLkblcnhcnfRV92j4KzqGBrEI6tT7LP52nZCTk= +cloud.google.com/go/networkconnectivity v1.17.1 h1:RQcG1rZNCNV5Dn3tnINs4TYswDXk2hKH+85eh+JvoWU= +cloud.google.com/go/networkconnectivity v1.17.1/go.mod h1:DTZCq8POTkHgAlOAAEDQF3cMEr/B9k1ZbpklqvHEBtg= +cloud.google.com/go/networkmanagement v1.9.3/go.mod h1:y7WMO1bRLaP5h3Obm4tey+NquUvB93Co1oh4wpL+XcU= +cloud.google.com/go/networkmanagement v1.18.0/go.mod h1:yTxpAFuvQOOKgL3W7+k2Rp1bSKTxyRcZ5xNHGdHUM6w= +cloud.google.com/go/networkmanagement v1.19.1 h1:ecukgArkYCVcK5w2h7WDDd+nHgmBAp9Bst7ClmVKz5A= +cloud.google.com/go/networkmanagement v1.19.1/go.mod h1:icgk265dNnilxQzpr6rO9WuAuuCmUOqq9H6WBeM2Af4= +cloud.google.com/go/networksecurity v0.9.4/go.mod h1:E9CeMZ2zDsNBkr8axKSYm8XyTqNhiCHf1JO/Vb8mD1w= +cloud.google.com/go/networksecurity v0.10.3/go.mod h1:G85ABVcPscEgpw+gcu+HUxNZJWjn3yhTqEU7+SsltFM= +cloud.google.com/go/networksecurity v0.10.6 h1:6b6fcCG9BFNcmtNO+VuPE04vkZb5TKNX9+7ZhYMgstE= +cloud.google.com/go/networksecurity v0.10.6/go.mod h1:FTZvabFPvK2kR/MRIH3l/OoQ/i53eSix2KA1vhBMJec= +cloud.google.com/go/notebooks v1.11.2/go.mod h1:z0tlHI/lREXC8BS2mIsUeR3agM1AkgLiS+Isov3SS70= +cloud.google.com/go/notebooks v1.12.3/go.mod h1:I0pMxZct+8Rega2LYrXL8jGAGZgLchSmh8Ksc+0xNyA= +cloud.google.com/go/notebooks v1.12.6 h1:nCfZwVihArMPP2atRoxRrXOXJ/aC9rAgpBQGCc2zpYw= +cloud.google.com/go/notebooks v1.12.6/go.mod h1:3Z4TMEqAKP3pu6DI/U+aEXrNJw9hGZIVbp+l3zw8EuA= +cloud.google.com/go/optimization v1.6.2/go.mod h1:mWNZ7B9/EyMCcwNl1frUGEuY6CPijSkz88Fz2vwKPOY= +cloud.google.com/go/optimization v1.7.3/go.mod h1:GlYFp4Mju0ybK5FlOUtV6zvWC00TIScdbsPyF6Iv144= +cloud.google.com/go/optimization v1.7.6 h1:jDvIuSxDsXI2P7l2sYXm6CoX1YBIIT6Khm5m0hq0/KQ= +cloud.google.com/go/optimization v1.7.6/go.mod h1:4MeQslrSJGv+FY4rg0hnZBR/tBX2awJ1gXYp6jZpsYY= +cloud.google.com/go/orchestration v1.8.4/go.mod h1:d0lywZSVYtIoSZXb0iFjv9SaL13PGyVOKDxqGxEf/qI= +cloud.google.com/go/orchestration v1.11.4/go.mod h1:UKR2JwogaZmDGnAcBgAQgCPn89QMqhXFUCYVhHd31vs= +cloud.google.com/go/orchestration v1.11.9 h1:PnlZ/O4R/eiounpxUkhI9ZXRMWbG7vFqxc6L6sR+31k= +cloud.google.com/go/orchestration v1.11.9/go.mod h1:KKXK67ROQaPt7AxUS1V/iK0Gs8yabn3bzJ1cLHw4XBg= +cloud.google.com/go/orgpolicy v1.12.0/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= +cloud.google.com/go/orgpolicy v1.14.2/go.mod h1:2fTDMT3X048iFKxc6DEgkG+a/gN+68qEgtPrHItKMzo= +cloud.google.com/go/orgpolicy v1.15.0 h1:uQziDu3UKYk9ZwUgneZAW5aWxZFKgOXXsuVKFKh0z7Y= +cloud.google.com/go/orgpolicy v1.15.0/go.mod h1:NTQLwgS8N5cJtdfK55tAnMGtvPSsy95JJhESwYHaJVs= +cloud.google.com/go/osconfig v1.12.4/go.mod h1:B1qEwJ/jzqSRslvdOCI8Kdnp0gSng0xW4LOnIebQomA= +cloud.google.com/go/osconfig v1.14.3/go.mod h1:9D2MS1Etne18r/mAeW5jtto3toc9H1qu9wLNDG3NvQg= +cloud.google.com/go/osconfig v1.14.6 h1:4uJrA1obzMBp1I+DF15y/MvsXKIODevuANpq3QhvX30= +cloud.google.com/go/osconfig v1.14.6/go.mod h1:LS39HDBH0IJDFgOUkhSZUHFQzmcWaCpYXLrc3A4CVzI= +cloud.google.com/go/oslogin v1.13.0/go.mod h1:xPJqLwpTZ90LSE5IL1/svko+6c5avZLluiyylMb/sRA= +cloud.google.com/go/oslogin v1.14.3/go.mod h1:fDEGODTG/W9ZGUTHTlMh8euXWC1fTcgjJ9Kcxxy14a8= +cloud.google.com/go/oslogin v1.14.6 h1:BDKVcxo1OO4ZT+PbuFchZjnbrlUGfChilt6+pITY1VI= +cloud.google.com/go/oslogin v1.14.6/go.mod h1:xEvcRZTkMXHfNSKdZ8adxD6wvRzeyAq3cQX3F3kbMRw= +cloud.google.com/go/phishingprotection v0.8.4/go.mod h1:6b3kNPAc2AQ6jZfFHioZKg9MQNybDg4ixFd4RPZZ2nE= +cloud.google.com/go/phishingprotection v0.9.3/go.mod h1:ylzN9HruB/X7dD50I4sk+FfYzuPx9fm5JWsYI0t7ncc= +cloud.google.com/go/phishingprotection v0.9.6 h1:yl572bBQbPjflX250SOflN6gwO2uYoddN2uRp36fDTo= +cloud.google.com/go/phishingprotection v0.9.6/go.mod h1:VmuGg03DCI0wRp/FLSvNyjFj+J8V7+uITgHjCD/x4RQ= +cloud.google.com/go/policytroubleshooter v1.10.2/go.mod h1:m4uF3f6LseVEnMV6nknlN2vYGRb+75ylQwJdnOXfnv0= +cloud.google.com/go/policytroubleshooter v1.11.3/go.mod h1:AFHlORqh4AnMC0twc2yPKfzlozp3DO0yo9OfOd9aNOs= +cloud.google.com/go/policytroubleshooter v1.11.6 h1:Z8+tO2z21MY1arBBuJjwrOjbw8fbZb13AZTHXdzkl2U= +cloud.google.com/go/policytroubleshooter v1.11.6/go.mod h1:jdjYGIveoYolk38Dm2JjS5mPkn8IjVqPsDHccTMu3mY= +cloud.google.com/go/privatecatalog v0.9.4/go.mod h1:SOjm93f+5hp/U3PqMZAHTtBtluqLygrDrVO8X8tYtG0= +cloud.google.com/go/privatecatalog v0.10.4/go.mod h1:n/vXBT+Wq8B4nSRUJNDsmqla5BYjbVxOlHzS6PjiF+w= +cloud.google.com/go/privatecatalog v0.10.7 h1:R951ikhxIanXEijBCu0xnoUAOteS5m/Xplek0YvsNTE= +cloud.google.com/go/privatecatalog v0.10.7/go.mod h1:Fo/PF/B6m4A9vUYt0nEF1xd0U6Kk19/Je3eZGrQ6l60= +cloud.google.com/go/pubsub v1.34.0/go.mod h1:alj4l4rBg+N3YTFDDC+/YyFTs6JAjam2QfYsddcAW4c= +cloud.google.com/go/pubsub v1.47.0/go.mod h1:LaENesmga+2u0nDtLkIOILskxsfvn/BXX9Ak1NFxOs8= +cloud.google.com/go/pubsub v1.49.0 h1:5054IkbslnrMCgA2MAEPcsN3Ky+AyMpEZcii/DoySPo= +cloud.google.com/go/pubsub v1.49.0/go.mod h1:K1FswTWP+C1tI/nfi3HQecoVeFvL4HUOB1tdaNXKhUY= +cloud.google.com/go/pubsublite v1.8.2 h1:jLQozsEVr+c6tOU13vDugtnaBSUy/PD5zK6mhm+uF1Y= +cloud.google.com/go/pubsublite v1.8.2/go.mod h1:4r8GSa9NznExjuLPEJlF1VjOPOpgf3IT6k8x/YgaOPI= +cloud.google.com/go/recaptchaenterprise v1.3.1 h1:u6EznTGzIdsyOsvm+Xkw0aSuKFXQlyjGE9a4exk6iNQ= +cloud.google.com/go/recaptchaenterprise/v2 v2.9.0/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= +cloud.google.com/go/recaptchaenterprise/v2 v2.19.4/go.mod h1:WaglfocMJGkqZVdXY/FVB7OhoVRONPS4uXqtNn6HfX0= +cloud.google.com/go/recaptchaenterprise/v2 v2.20.4 h1:P4QMryKcWdi4LIe1Sx0b2ZOAQv5gVfdzPt2peXcN32Y= +cloud.google.com/go/recaptchaenterprise/v2 v2.20.4/go.mod h1:3H8nb8j8N7Ss2eJ+zr+/H7gyorfzcxiDEtVBDvDjwDQ= +cloud.google.com/go/recommendationengine v0.8.4/go.mod h1:GEteCf1PATl5v5ZsQ60sTClUE0phbWmo3rQ1Js8louU= +cloud.google.com/go/recommendationengine v0.9.3/go.mod h1:QRnX5aM7DCvtqtSs7I0zay5Zfq3fzxqnsPbZF7pa1G8= +cloud.google.com/go/recommendationengine v0.9.6 h1:slN7h23vswGccW8x3f+xUXCu9Yo18/GNkazH93LJbFk= +cloud.google.com/go/recommendationengine v0.9.6/go.mod h1:nZnjKJu1vvoxbmuRvLB5NwGuh6cDMMQdOLXTnkukUOE= +cloud.google.com/go/recommender v1.12.0/go.mod h1:+FJosKKJSId1MBFeJ/TTyoGQZiEelQQIZMKYYD8ruK4= +cloud.google.com/go/recommender v1.13.3/go.mod h1:6yAmcfqJRKglZrVuTHsieTFEm4ai9JtY3nQzmX4TC0Q= +cloud.google.com/go/recommender v1.13.5 h1:cIsyRKGNw4LpCfY5c8CCQadhlp54jP4fHtP+d5Sy2xE= +cloud.google.com/go/recommender v1.13.5/go.mod h1:v7x/fzk38oC62TsN5Qkdpn0eoMBh610UgArJtDIgH/E= +cloud.google.com/go/redis v1.14.1/go.mod h1:MbmBxN8bEnQI4doZPC1BzADU4HGocHBk2de3SbgOkqs= +cloud.google.com/go/redis v1.18.0/go.mod h1:fJ8dEQJQ7DY+mJRMkSafxQCuc8nOyPUwo9tXJqjvNEY= +cloud.google.com/go/redis v1.18.2 h1:JlHLceAOILEmbn+NIS7l+vmUKkFuobLToCWTxL7NGcQ= +cloud.google.com/go/redis v1.18.2/go.mod h1:q6mPRhLiR2uLf584Lcl4tsiRn0xiFlu6fnJLwCORMtY= +cloud.google.com/go/resourcemanager v1.9.4/go.mod h1:N1dhP9RFvo3lUfwtfLWVxfUWq8+KUQ+XLlHLH3BoFJ0= +cloud.google.com/go/resourcemanager v1.10.3/go.mod h1:JSQDy1JA3K7wtaFH23FBGld4dMtzqCoOpwY55XYR8gs= +cloud.google.com/go/resourcemanager v1.10.6 h1:LIa8kKE8HF71zm976oHMqpWFiaDHVw/H1YMO71lrGmo= +cloud.google.com/go/resourcemanager v1.10.6/go.mod h1:VqMoDQ03W4yZmxzLPrB+RuAoVkHDS5tFUUQUhOtnRTg= +cloud.google.com/go/resourcesettings v1.6.4/go.mod h1:pYTTkWdv2lmQcjsthbZLNBP4QW140cs7wqA3DuqErVI= +cloud.google.com/go/resourcesettings v1.8.3 h1:13HOFU7v4cEvIHXSAQbinF4wp2Baybbq7q9FMctg1Ek= +cloud.google.com/go/resourcesettings v1.8.3/go.mod h1:BzgfXFHIWOOmHe6ZV9+r3OWfpHJgnqXy8jqwx4zTMLw= +cloud.google.com/go/retail v1.14.4/go.mod h1:l/N7cMtY78yRnJqp5JW8emy7MB1nz8E4t2yfOmklYfg= +cloud.google.com/go/retail v1.19.2/go.mod h1:71tRFYAcR4MhrZ1YZzaJxr030LvaZiIcupH7bXfFBcY= +cloud.google.com/go/retail v1.21.0 h1:8jgWgtAg1mk91WmaoWRTlL9CcvazPwqZ3YT9n6Gva9U= +cloud.google.com/go/retail v1.21.0/go.mod h1:LuG+QvBdLfKfO+7nnF3eA3l1j4TQw3Sg+UqlUorquRc= +cloud.google.com/go/run v1.3.3/go.mod h1:WSM5pGyJ7cfYyYbONVQBN4buz42zFqwG67Q3ch07iK4= +cloud.google.com/go/run v1.9.0/go.mod h1:Dh0+mizUbtBOpPEzeXMM22t8qYQpyWpfmUiWQ0+94DU= +cloud.google.com/go/run v1.10.0 h1:CDhz0PPzI/cVpmNFyHe3Yp21jNpiAqtkfRxuoLi+JU0= +cloud.google.com/go/run v1.10.0/go.mod h1:z7/ZidaHOCjdn5dV0eojRbD+p8RczMk3A7Qi2L+koHg= +cloud.google.com/go/scheduler v1.10.5/go.mod h1:MTuXcrJC9tqOHhixdbHDFSIuh7xZF2IysiINDuiq6NI= +cloud.google.com/go/scheduler v1.11.4/go.mod h1:0ylvH3syJnRi8EDVo9ETHW/vzpITR/b+XNnoF+GPSz4= +cloud.google.com/go/scheduler v1.11.7 h1:zkMEJ0UbEJ3O7NwEUlKLIp6eXYv1L7wHjbxyxznajKM= +cloud.google.com/go/scheduler v1.11.7/go.mod h1:gqYs8ndLx2M5D0oMJh48aGS630YYvC432tHCnVWN13s= +cloud.google.com/go/secretmanager v1.11.4/go.mod h1:wreJlbS9Zdq21lMzWmJ0XhWW2ZxgPeahsqeV/vZoJ3w= +cloud.google.com/go/secretmanager v1.14.5/go.mod h1:GXznZF3qqPZDGZQqETZwZqHw4R6KCaYVvcGiRBA+aqY= +cloud.google.com/go/secretmanager v1.14.7 h1:VkscIRzj7GcmZyO4z9y1EH7Xf81PcoiAo7MtlD+0O80= +cloud.google.com/go/secretmanager v1.14.7/go.mod h1:uRuB4F6NTFbg0vLQ6HsT7PSsfbY7FqHbtJP1J94qxGc= +cloud.google.com/go/security v1.15.4/go.mod h1:oN7C2uIZKhxCLiAAijKUCuHLZbIt/ghYEo8MqwD/Ty4= +cloud.google.com/go/security v1.18.3/go.mod h1:NmlSnEe7vzenMRoTLehUwa/ZTZHDQE59IPRevHcpCe4= +cloud.google.com/go/security v1.18.5 h1:6hqzvuwC8za9jyCTxygmEHnp4vZ8hfhwKVArxSCAVCo= +cloud.google.com/go/security v1.18.5/go.mod h1:D1wuUkDwGqTKD0Nv7d4Fn2Dc53POJSmO4tlg1K1iS7s= +cloud.google.com/go/securitycenter v1.24.3/go.mod h1:l1XejOngggzqwr4Fa2Cn+iWZGf+aBLTXtB/vXjy5vXM= +cloud.google.com/go/securitycenter v1.36.0/go.mod h1:AErAQqIvrSrk8cpiItJG1+ATl7SD7vQ6lgTFy/Tcs4Q= +cloud.google.com/go/securitycenter v1.36.2 h1:hLA58IBYmWrNiXDIONvuCUQ4sHLVPy8JvDo2j1wSYCw= +cloud.google.com/go/securitycenter v1.36.2/go.mod h1:80ocoXS4SNWxmpqeEPhttYrmlQzCPVGaPzL3wVcoJvE= +cloud.google.com/go/servicecontrol v1.11.1 h1:d0uV7Qegtfaa7Z2ClDzr9HJmnbJW7jn0WhZ7wOX6hLE= +cloud.google.com/go/servicedirectory v1.11.3/go.mod h1:LV+cHkomRLr67YoQy3Xq2tUXBGOs5z5bPofdq7qtiAw= +cloud.google.com/go/servicedirectory v1.12.3/go.mod h1:dwTKSCYRD6IZMrqoBCIvZek+aOYK/6+jBzOGw8ks5aY= +cloud.google.com/go/servicedirectory v1.12.6 h1:pl/KUNvFzlXpxgnPgzQjyTQQcv5WsQ97zCHaPrLQlYA= +cloud.google.com/go/servicedirectory v1.12.6/go.mod h1:OojC1KhOMDYC45oyTn3Mup08FY/S0Kj7I58dxUMMTpg= +cloud.google.com/go/servicemanagement v1.8.0 h1:fopAQI/IAzlxnVeiKn/8WiV6zKndjFkvi+gzu+NjywY= +cloud.google.com/go/serviceusage v1.6.0 h1:rXyq+0+RSIm3HFypctp7WoXxIA563rn206CfMWdqXX4= +cloud.google.com/go/shell v1.7.4/go.mod h1:yLeXB8eKLxw0dpEmXQ/FjriYrBijNsONpwnWsdPqlKM= +cloud.google.com/go/shell v1.8.3/go.mod h1:OYcrgWF6JSp/uk76sNTtYFlMD0ho2+Cdzc7U3P/bF54= +cloud.google.com/go/shell v1.8.6 h1:jLWyztGlNWBx55QXBM4HbWvfv7aiRjPzRKTUkZA8dXk= +cloud.google.com/go/shell v1.8.6/go.mod h1:GNbTWf1QA/eEtYa+kWSr+ef/XTCDkUzRpV3JPw0LqSk= +cloud.google.com/go/spanner v1.55.0/go.mod h1:HXEznMUVhC+PC+HDyo9YFG2Ajj5BQDkcbqB9Z2Ffxi0= +cloud.google.com/go/spanner v1.76.1/go.mod h1:YtwoE+zObKY7+ZeDCBtZ2ukM+1/iPaMfUM+KnTh/sx0= +cloud.google.com/go/spanner v1.82.0 h1:w9uO8RqEoBooBLX4nqV1RtgudyU2ZX780KTLRgeVg60= +cloud.google.com/go/spanner v1.82.0/go.mod h1:BzybQHFQ/NqGxvE/M+/iU29xgutJf7Q85/4U9RWMto0= +cloud.google.com/go/speech v1.21.0/go.mod h1:wwolycgONvfz2EDU8rKuHRW3+wc9ILPsAWoikBEWavY= +cloud.google.com/go/speech v1.26.0/go.mod h1:78bqDV2SgwFlP/M4n3i3PwLthFq6ta7qmyG6lUV7UCA= +cloud.google.com/go/speech v1.27.1 h1:+OktATNlQc+4WH78OrQadIP4CzXb9mBucdDGCO1NrlI= +cloud.google.com/go/speech v1.27.1/go.mod h1:efCfklHFL4Flxcdt9gpEMEJh9MupaBzw3QiSOVeJ6ck= +cloud.google.com/go/storage v1.53.0 h1:gg0ERZwL17pJ+Cz3cD2qS60w1WMDnwcm5YPAIQBHUAw= +cloud.google.com/go/storage v1.53.0/go.mod h1:7/eO2a/srr9ImZW9k5uufcNahT2+fPb8w5it1i5boaA= +cloud.google.com/go/storagetransfer v1.10.3/go.mod h1:Up8LY2p6X68SZ+WToswpQbQHnJpOty/ACcMafuey8gc= +cloud.google.com/go/storagetransfer v1.12.1/go.mod h1:hQqbfs8/LTmObJyCC0KrlBw8yBJ2bSFlaGila0qBMk4= +cloud.google.com/go/storagetransfer v1.13.0 h1:uqKX3OgcYzR1W1YI943ZZ45id0RqA2eXXoCBSPstlbw= +cloud.google.com/go/storagetransfer v1.13.0/go.mod h1:+aov7guRxXBYgR3WCqedkyibbTICdQOiXOdpPcJCKl8= +cloud.google.com/go/talent v1.6.5/go.mod h1:Mf5cma696HmE+P2BWJ/ZwYqeJXEeU0UqjHFXVLadEDI= +cloud.google.com/go/talent v1.8.0/go.mod h1:/gvOzSrtMcfTL/9xWhdYaZATaxUNhQ+L+3ZaGOGs7bA= +cloud.google.com/go/talent v1.8.3 h1:wDP+++O/P1cTJBMkYlSY46k0a6atSoyO+UkBGuU9+Ao= +cloud.google.com/go/talent v1.8.3/go.mod h1:oD3/BilJpJX8/ad8ZUAxlXHCslTg2YBbafFH3ciZSLQ= +cloud.google.com/go/texttospeech v1.7.4/go.mod h1:vgv0002WvR4liGuSd5BJbWy4nDn5Ozco0uJymY5+U74= +cloud.google.com/go/texttospeech v1.11.0/go.mod h1:7M2ro3I2QfIEvArFk1TJ+pqXJqhszDtxUpnIv/150As= +cloud.google.com/go/texttospeech v1.13.0 h1:oWWFQp0yFl4EJOr3opDkKH9304wUsZjgPjrTDS6S1a8= +cloud.google.com/go/texttospeech v1.13.0/go.mod h1:g/tW/m0VJnulGncDrAoad6WdELMTes8eb77Idz+4HCo= +cloud.google.com/go/tpu v1.6.4/go.mod h1:NAm9q3Rq2wIlGnOhpYICNI7+bpBebMJbh0yyp3aNw1Y= +cloud.google.com/go/tpu v1.8.0/go.mod h1:XyNzyK1xc55WvL5rZEML0Z9/TUHDfnq0uICkQw6rWMo= +cloud.google.com/go/tpu v1.8.3 h1:S4Ptq+yFIPNLEzQ/OQwiIYDNzk5I2vYmhf0SmFQOmWo= +cloud.google.com/go/tpu v1.8.3/go.mod h1:Do6Gq+/Jx6Xs3LcY2WhHyGwKDKVw++9jIJp+X+0rxRE= +cloud.google.com/go/trace v1.10.4/go.mod h1:Nso99EDIK8Mj5/zmB+iGr9dosS/bzWCJ8wGmE6TXNWY= +cloud.google.com/go/trace v1.11.3/go.mod h1:pt7zCYiDSQjC9Y2oqCsh9jF4GStB/hmjrYLsxRR27q8= +cloud.google.com/go/trace v1.11.6 h1:2O2zjPzqPYAHrn3OKl029qlqG6W8ZdYaOWRyr8NgMT4= +cloud.google.com/go/trace v1.11.6/go.mod h1:GA855OeDEBiBMzcckLPE2kDunIpC72N+Pq8WFieFjnI= +cloud.google.com/go/translate v1.10.0/go.mod h1:Kbq9RggWsbqZ9W5YpM94Q1Xv4dshw/gr/SHfsl5yCZ0= +cloud.google.com/go/translate v1.12.3/go.mod h1:qINOVpgmgBnY4YTFHdfVO4nLrSBlpvlIyosqpGEgyEg= +cloud.google.com/go/translate v1.12.5 h1:QPMNi4WCtHwc2PPfxbyUMwdN/0+cyCGLaKi2tig41J8= +cloud.google.com/go/translate v1.12.5/go.mod h1:o/v+QG/bdtBV1d1edmtau0PwTfActvxPk/gtqdSDBi4= +cloud.google.com/go/video v1.20.3/go.mod h1:TnH/mNZKVHeNtpamsSPygSR0iHtvrR/cW1/GDjN5+GU= +cloud.google.com/go/video v1.23.3/go.mod h1:Kvh/BheubZxGZDXSb0iO6YX7ZNcaYHbLjnnaC8Qyy3g= +cloud.google.com/go/video v1.24.0 h1:KTB2BEXjGm2K/JcKxQXEgx3nSoMTByepnPZa4kln064= +cloud.google.com/go/video v1.24.0/go.mod h1:h6Bw4yUbGNEa9dH4qMtUMnj6cEf+OyOv/f2tb70G6Fk= +cloud.google.com/go/videointelligence v1.11.4/go.mod h1:kPBMAYsTPFiQxMLmmjpcZUMklJp3nC9+ipJJtprccD8= +cloud.google.com/go/videointelligence v1.12.3/go.mod h1:dUA6V+NH7CVgX6TePq0IelVeBMGzvehxKPR4FGf1dtw= +cloud.google.com/go/videointelligence v1.12.6 h1:heq7jEO39sH5TycBh8TGFJ827XCxK0tIWatmBY/n0jI= +cloud.google.com/go/videointelligence v1.12.6/go.mod h1:/l34WMndN5/bt04lHodxiYchLVuWPQjCU6SaiTswrIw= +cloud.google.com/go/vision v1.2.0 h1:/CsSTkbmO9HC8iQpxbK8ATms3OQaX3YQUeTMGCxlaK4= +cloud.google.com/go/vision/v2 v2.7.5/go.mod h1:GcviprJLFfK9OLf0z8Gm6lQb6ZFUulvpZws+mm6yPLM= +cloud.google.com/go/vision/v2 v2.9.3/go.mod h1:weAcT8aNYSgrWWVTC2PuJTc7fcXKvUeAyDq8B6HkLSg= +cloud.google.com/go/vision/v2 v2.9.5 h1:UJZ0H6UlOaYKgCn6lWG2iMAOJIsJZLnseEfzBR8yIqQ= +cloud.google.com/go/vision/v2 v2.9.5/go.mod h1:1SiNZPpypqZDbOzU052ZYRiyKjwOcyqgGgqQCI/nlx8= +cloud.google.com/go/vmmigration v1.7.4/go.mod h1:yBXCmiLaB99hEl/G9ZooNx2GyzgsjKnw5fWcINRgD70= +cloud.google.com/go/vmmigration v1.8.3/go.mod h1:8CzUpK9eBzohgpL4RvBVtW4sY/sDliVyQonTFQfWcJ4= +cloud.google.com/go/vmmigration v1.8.6 h1:68hOQDhs1DOITrCrhritrwr8xy6s8QMdwDyMzMiFleU= +cloud.google.com/go/vmmigration v1.8.6/go.mod h1:uZ6/KXmekwK3JmC8PzBM/cKQmq404TTfWtThF6bbf0U= +cloud.google.com/go/vmwareengine v1.0.3/go.mod h1:QSpdZ1stlbfKtyt6Iu19M6XRxjmXO+vb5a/R6Fvy2y4= +cloud.google.com/go/vmwareengine v1.3.3/go.mod h1:G7vz05KGijha0c0dj1INRKyDAaQW8TRMZt/FrfOZVXc= +cloud.google.com/go/vmwareengine v1.3.5 h1:OsGd1SB91y9fDuzdzFngMv4UcT4cqmRxjsCsS4Xmcu8= +cloud.google.com/go/vmwareengine v1.3.5/go.mod h1:QuVu2/b/eo8zcIkxBYY5QSwiyEcAy6dInI7N+keI+Jg= +cloud.google.com/go/vpcaccess v1.7.4/go.mod h1:lA0KTvhtEOb/VOdnH/gwPuOzGgM+CWsmGu6bb4IoMKk= +cloud.google.com/go/vpcaccess v1.8.3/go.mod h1:bqOhyeSh/nEmLIsIUoCiQCBHeNPNjaK9M3bIvKxFdsY= +cloud.google.com/go/vpcaccess v1.8.6 h1:RYtUB9rQEijX9Tc6lQcGst58ZOzPgaYTkz6+2pyPQTM= +cloud.google.com/go/vpcaccess v1.8.6/go.mod h1:61yymNplV1hAbo8+kBOFO7Vs+4ZHYI244rSFgmsHC6E= +cloud.google.com/go/webrisk v1.9.4/go.mod h1:w7m4Ib4C+OseSr2GL66m0zMBywdrVNTDKsdEsfMl7X0= +cloud.google.com/go/webrisk v1.10.3/go.mod h1:rRAqCA5/EQOX8ZEEF4HMIrLHGTK/Y1hEQgWMnih+jAw= +cloud.google.com/go/webrisk v1.11.1 h1:yZKNB7zRxOMriLrhP5WDE+BjxXVl0wJHHZSdaYzbdVU= +cloud.google.com/go/webrisk v1.11.1/go.mod h1:+9SaepGg2lcp1p0pXuHyz3R2Yi2fHKKb4c1Q9y0qbtA= +cloud.google.com/go/websecurityscanner v1.6.4/go.mod h1:mUiyMQ+dGpPPRkHgknIZeCzSHJ45+fY4F52nZFDHm2o= +cloud.google.com/go/websecurityscanner v1.7.3/go.mod h1:gy0Kmct4GNLoCePWs9xkQym1D7D59ld5AjhXrjipxSs= +cloud.google.com/go/websecurityscanner v1.7.6 h1:cIPKJKZA3l7D8DfL4nxce8HGOWXBw3WAUBF0ymOW9GQ= +cloud.google.com/go/websecurityscanner v1.7.6/go.mod h1:ucaaTO5JESFn5f2pjdX01wGbQ8D6h79KHrmO2uGZeiY= +cloud.google.com/go/workflows v1.12.3/go.mod h1:fmOUeeqEwPzIU81foMjTRQIdwQHADi/vEr1cx9R1m5g= +cloud.google.com/go/workflows v1.13.3/go.mod h1:Xi7wggEt/ljoEcyk+CB/Oa1AHBCk0T1f5UH/exBB5CE= +cloud.google.com/go/workflows v1.14.2 h1:phBz5TOAES0YGogxZ6Q7ISSudaf618lRhE3euzBpE9U= +cloud.google.com/go/workflows v1.14.2/go.mod h1:5nqKjMD+MsJs41sJhdVrETgvD5cOK3hUcAs8ygqYvXQ= +codeberg.org/go-fonts/dejavu v0.4.0 h1:2yn58Vkh4CFK3ipacWUAIE3XVBGNa0y1bc95Bmfx91I= +codeberg.org/go-fonts/dejavu v0.4.0/go.mod h1:abni088lmhQJvso2Lsb7azCKzwkfcnttl6tL1UTWKzg= +codeberg.org/go-fonts/latin-modern v0.4.0 h1:vkRCc1y3whKA7iL9Ep0fSGVuJfqjix0ica9UflHORO8= +codeberg.org/go-fonts/latin-modern v0.4.0/go.mod h1:BF68mZznJ9QHn+hic9ks2DaFl4sR5YhfM6xTYaP9vNw= +codeberg.org/go-fonts/liberation v0.4.1/go.mod h1:Gu6FTZHMMpGxPBfc8WFL8RfwMYFTvG7TIFOMx8oM4B8= +codeberg.org/go-fonts/liberation v0.5.0 h1:SsKoMO1v1OZmzkG2DY+7ZkCL9U+rrWI09niOLfQ5Bo0= +codeberg.org/go-fonts/liberation v0.5.0/go.mod h1:zS/2e1354/mJ4pGzIIaEtm/59VFCFnYC7YV6YdGl5GU= +codeberg.org/go-fonts/stix v0.3.0 h1:vHI1LmLWEcAdcf+5aRMtA1eYKJJ9ZjetVstBD/dRe1Q= +codeberg.org/go-fonts/stix v0.3.0/go.mod h1:1OSJSnA/PoHqbW2tjkkqTmNPp5xTtJQN2GRXJjO/+WA= +codeberg.org/go-latex/latex v0.0.1/go.mod h1:AiC91vVG2uURZRd4ZN1j3mAac0XBrLsxK6+ZNa7O9ok= +codeberg.org/go-latex/latex v0.1.0 h1:hoGO86rIbWVyjtlDLzCqZPjNykpWQ9YuTZqAzPcfL3c= +codeberg.org/go-latex/latex v0.1.0/go.mod h1:LA0q/AyWIYrqVd+A9Upkgsb+IqPcmSTKc9Dny04MHMw= +codeberg.org/go-pdf/fpdf v0.10.0 h1:u+w669foDDx5Ds43mpiiayp40Ov6sZalgcPMDBcZRd4= +codeberg.org/go-pdf/fpdf v0.10.0/go.mod h1:Y0DGRAdZ0OmnZPvjbMp/1bYxmIPxm0ws4tfoPOc4LjU= +contrib.go.opencensus.io/exporter/stackdriver v0.13.14 h1:zBakwHardp9Jcb8sQHcHpXy/0+JIb1M8KjigCJzx7+4= +contrib.go.opencensus.io/exporter/stackdriver v0.13.14/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20221208032759-85de2813cf6b h1:a26Bdkl2B9PmYN6vGXnnfB2UGKjz0Moif1aEg+xTd7M= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20221208032759-85de2813cf6b/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +eliasnaur.com/font v0.0.0-20230308162249-dd43949cb42d h1:ARo7NCVvN2NdhLlJE9xAbKweuI9L6UgfTbYb0YwPacY= +eliasnaur.com/font v0.0.0-20230308162249-dd43949cb42d/go.mod h1:OYVuxibdk9OSLX8vAqydtRPP87PyTFcT9uH3MlEGBQA= +gioui.org v0.0.0-20210822154628-43a7030f6e0b/go.mod h1:jmZ349gZNGWyc5FIv/VWLBQ32Ki/FOvTgEz64kh9lnk= +gioui.org v0.2.0 h1:RbzDn1h/pCVf/q44ImQSa/J3MIFpY3OWphzT/Tyei+w= +gioui.org v0.2.0/go.mod h1:1H72sKEk/fNFV+l0JNeM2Dt3co3Y4uaQcD+I+/GQ0e4= +gioui.org/cpu v0.0.0-20210808092351-bfe733dd3334/go.mod h1:A8M0Cn5o+vY5LTMlnRoK3O5kG+rH0kWfJjeKd9QpBmQ= +gioui.org/cpu v0.0.0-20210817075930-8d6a761490d2/go.mod h1:A8M0Cn5o+vY5LTMlnRoK3O5kG+rH0kWfJjeKd9QpBmQ= +gioui.org/cpu v0.0.0-20220412190645-f1e9e8c3b1f7 h1:tNJdnP5CgM39PRc+KWmBRRYX/zJ+rd5XaYxY5d5veqA= +gioui.org/cpu v0.0.0-20220412190645-f1e9e8c3b1f7/go.mod h1:A8M0Cn5o+vY5LTMlnRoK3O5kG+rH0kWfJjeKd9QpBmQ= +gioui.org/shader v1.0.0/go.mod h1:mWdiME581d/kV7/iEhLmUgUK5iZ09XR5XpduXzbePVM= +gioui.org/shader v1.0.6 h1:cvZmU+eODFR2545X+/8XucgZdTtEjR3QWW6W65b0q5Y= +gioui.org/shader v1.0.6/go.mod h1:mWdiME581d/kV7/iEhLmUgUK5iZ09XR5XpduXzbePVM= +gioui.org/x v0.2.0 h1:/MbdjKH19F16auv19UiQxli2n6BYPw7eyh9XBOTgmEw= +gioui.org/x v0.2.0/go.mod h1:rCGN2nZ8ZHqrtseJoQxCMZpt2xrZUrdZ2WuMRLBJmYs= +git.sr.ht/~jackmordaunt/go-toast v1.0.0 h1:bbRox6VkotdOj3QcWimZQ84APoszIsA/pSIj8ypDdV8= +git.sr.ht/~jackmordaunt/go-toast v1.0.0/go.mod h1:aIuRX/HdBOz7yRS8rOVYQCwJQlFS7DbYBTpUV0SHeeg= +git.sr.ht/~sbinet/gg v0.6.0 h1:RIzgkizAk+9r7uPzf/VfbJHBMKUr0F5hRFxTUGMnt38= +git.sr.ht/~sbinet/gg v0.6.0/go.mod h1:uucygbfC9wVPQIfrmwM2et0imr8L7KQWywX0xpFMm94= +git.wow.st/gmp/jni v0.0.0-20210610011705-34026c7e22d0 h1:bGG/g4ypjrCJoSvFrP5hafr9PPB5aw8SjcOWWila7ZI= +git.wow.st/gmp/jni v0.0.0-20210610011705-34026c7e22d0/go.mod h1:+axXBRUTIDlCeE73IKeD/os7LoEnTKdkp8/gQOFjqyo= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= +github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.2 h1:DBjmt6/otSdULyJdVg2BlG0qGZO5tKL4VzOs0jpvw5Q= +github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.2/go.mod h1:dppbR7CwXD4pgtV9t3wD1812RaLDcBjtblcDF5f1vI0= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 h1:fYE9p3esPxA/C0rQ0AHhP0drtPXDRhaWiwg1DPqO7IU= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0/go.mod h1:BnBReJLvVYx2CS/UHOgVz2BXKXD9wsQPxZug20nZhd0= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0 h1:OqVGm6Ei3x5+yZmSJG1Mh2NwHvpVmZ08CB5qJhT9Nuk= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0/go.mod h1:SZiPHWGOOk3bl8tkevxkoiwPgsIl6CwrWcbwjfHZpdM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 h1:6/0iUd0xrnX7qt+mLNRwg5c0PGv8wpE8K90ryANQwMI= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0/go.mod h1:otE2jQekW/PqXk1Awf5lmfokJx4uwuqcj1ab5SpGeW0= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0= +github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= +github.com/Shopify/sarama v1.19.0 h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 h1:rFw4nCn9iMW+Vajsk51NtYIcwSTkXr+JGrMd36kTDJw= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9 h1:7kQgkwGRoLzC9K0oyXdJo7nve/bynv/KwUsxbiTlzAM= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19 h1:iXUgAaqDcIUGbRoy2TdeofRG/j1zpGRSEmNK05T+bi8= +github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY= +github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= +github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0 h1:uF5Q/hWnDU1XZeT6CsrRSxHLroUSEYYO3kgES+yd+So= +github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0/go.mod h1:ccdDYaY5+gO+cbnQdFxEXqfy0RkoV25H3jLXUDNM3wg= +github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= +github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9 h1:goHVqTbFX3AIo0tzGr14pgfAW2ZfPChKO21Z9MGf/gk= +github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= +github.com/apache/arrow/go/v10 v10.0.1 h1:n9dERvixoC/1JjDmBcs9FPaEryoANa2sCgVFo6ez9cI= +github.com/apache/arrow/go/v11 v11.0.0 h1:hqauxvFQxww+0mEU/2XHG6LT7eZternCZq+A5Yly2uM= +github.com/apache/arrow/go/v12 v12.0.1 h1:JsR2+hzYYjgSUkBSaahpqCetqZMr76djX80fF/DiJbg= +github.com/apache/arrow/go/v12 v12.0.1/go.mod h1:weuTY7JvTG/HDPtMQxEUp7pU73vkLWMLpY67QwZ/WWw= +github.com/apache/arrow/go/v15 v15.0.2 h1:60IliRbiyTWCWjERBCkO1W4Qun9svcYoZrSLcyOsMLE= +github.com/apache/arrow/go/v15 v15.0.2/go.mod h1:DGXsR3ajT524njufqf95822i+KTh+yea1jass9YXgjA= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a h1:pv34s756C4pEXnjgPfGYgdhg/ZdajGhyOvzx8k+23nw= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= +github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.46.4 h1:48tKgtm9VMPkb6y7HuYlsfhQmoIRAsTEXTsWLVlty4M= +github.com/aws/aws-sdk-go v1.46.4/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go-v2 v0.18.0 h1:qZ+woO4SamnH/eEbjM2IDLhRNwIwND/RQyVlBLp3Jqg= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWpi6yML8= +github.com/aymanbagabas/go-udiff v0.2.0/go.mod h1:RE4Ex0qsGkTAJoQdQQCA0uG+nAzJO/pI/QwceO5fgrA= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= +github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= +github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= +github.com/bufbuild/protovalidate-go v0.2.1 h1:pJr07sYhliyfj/STAM7hU4J3FKpVeLVKvOBmOTN8j+s= +github.com/bufbuild/protovalidate-go v0.2.1/go.mod h1:e7XXDtlxj5vlEyAgsrxpzayp4cEMKCSSb8ZCkin+MVA= +github.com/bwesterb/go-ristretto v1.2.0 h1:xxWOVbN5m8NNKiSDZXE1jtZvZnC6JSJ9cYFADiZcWtw= +github.com/casbin/casbin/v2 v2.1.2 h1:bTwon/ECRx9dwBy2ewRVr5OiqjeXSGiTUY74sDPQi/g= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a h1:G99klV19u0QnhiizODirwVksQB91TJKV/UaTnACcG30= +github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U= +github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec h1:EdRZT3IeKQmfCSrgo8SZ8V3MEnskuJP0wCYNpe+aiXo= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= +github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a h1:8d1CEOF1xldesKds5tRG3tExBsMOgWYownMHNCsev54= +github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a/go.mod h1:rzgs2ZOiguV6/NpiDgADjRLPNyZlApIWxKpkT+X8SdY= +github.com/cloudflare/circl v1.1.0 h1:bZgT/A+cikZnKIwn7xL2OBj012Bmvho/o6RpRvv3GKY= +github.com/cloudflare/redoctober v0.0.0-20211013234631-6a74ccc611f6 h1:QKzett0dn5FhjcIHNKSClEilabfhWCnsdijq3ftm9Ms= +github.com/cloudflare/redoctober v0.0.0-20211013234631-6a74ccc611f6/go.mod h1:Ikt4Wfpln1YOrak+auA8BNxgiilj0Y2y7nO+aN2eMzk= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nCtnAiZdYFd45cYZPs8vOOIYKfk= +github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= +github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf h1:CAKfRE2YtTUIjjh1bkBtyYFaUT/WmOqsJjgtihT0vMI= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/cristalhq/acmd v0.12.0 h1:RdlKnxjN+txbQosg8p/TRNZ+J1Rdne43MVQZ1zDhGWk= +github.com/cristalhq/acmd v0.12.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw= +github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= +github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= +github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= +github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= +github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= +github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= +github.com/esiqveland/notify v0.11.0 h1:0WJ/xW+3Ln8uRBYntG7f0XihXxnlOaQTdha1yyzXz30= +github.com/esiqveland/notify v0.11.0/go.mod h1:63UbVSaeJwF0LVJARHFuPgUAoM7o1BEvCZyknsuonBc= +github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db h1:gb2Z18BhTPJPpLQWj4T+rfKHYCHxRHCtRxhKKjRidVw= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8 h1:a9ENSRDFBUPkJ5lCgVZh26+ZbGyoVJG7yb5SSzF5H54= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/fullstorydev/grpcurl v1.8.9 h1:JMvZXK8lHDGyLmTQ0ZdGDnVVGuwjbpaumf8p42z0d+c= +github.com/fullstorydev/grpcurl v1.8.9/go.mod h1:PNNKevV5VNAV2loscyLISrEnWQI61eqR0F8l3bVadAA= +github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw= +github.com/getsentry/sentry-go v0.11.0 h1:qro8uttJGvNAMr5CLcFI9CHR0aDzXl0Vs3Pmw/oTPg8= +github.com/getsentry/sentry-go v0.11.0/go.mod h1:KBQIxiZAetw62Cj8Ri964vAEWVdgfaUCn30Q3bCvANo= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= +github.com/go-chi/chi v1.5.4 h1:QHdzF2szwjqVV4wmByUnTcsbIg7UGaQ0tPF2t5GcAIs= +github.com/go-fonts/dejavu v0.3.2 h1:3XlHi0JBYX+Cp8n98c6qSoHrxPa4AUKDMKdrh/0sUdk= +github.com/go-fonts/dejavu v0.3.2/go.mod h1:m+TzKY7ZEl09/a17t1593E4VYW8L1VaBXHzFZOIjGEY= +github.com/go-fonts/latin-modern v0.3.2 h1:M+Sq24Dp0ZRPf3TctPnG1MZxRblqyWC/cRUL9WmdaFc= +github.com/go-fonts/latin-modern v0.3.2/go.mod h1:9odJt4NbRrbdj4UAMuLVd4zEukf6aAEKnDaQga0whqQ= +github.com/go-fonts/liberation v0.3.2 h1:XuwG0vGHFBPRRI8Qwbi5tIvR3cku9LUfZGq/Ar16wlQ= +github.com/go-fonts/liberation v0.3.2/go.mod h1:N0QsDLVUQPy3UYg9XAc3Uh3UDMp2Z7M1o4+X98dXkmI= +github.com/go-fonts/stix v0.2.2 h1:v9krocr13J1llaOHLEol1eaHsv8S43UuFX/1bFgEJJ4= +github.com/go-fonts/stix v0.2.2/go.mod h1:SUxggC9dxd/Q+rb5PkJuvfvTbOPtNc2Qaua00fIp9iU= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231223183121-56fa3ac82ce7 h1:7tf/0aw5DxRQjr7WaNqgtjidub6v21L2cogKIbMcTYw= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231223183121-56fa3ac82ce7/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-jose/go-jose/v4 v4.0.4/go.mod h1:NKb5HO1EZccyMpiZNbdUw/14tiXNyUJh188dfnMCAfc= +github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI= +github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA= +github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/log v0.1.0 h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ= +github.com/go-latex/latex v0.0.0-20231108140139-5c1ce85aa4ea h1:DfZQkvEbdmOe+JK2TMtBM+0I9GSdzE2y/L1/AmD8xKc= +github.com/go-latex/latex v0.0.0-20231108140139-5c1ce85aa4ea/go.mod h1:Y7Vld91/HRbTBm7JwoI7HejdDB0u+e9AUBO9MB7yuZk= +github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= +github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-pdf/fpdf v0.9.0 h1:PPvSaUuo1iMi9KkaAn90NuKi+P4gwMedWPHhj8YlJQw= +github.com/go-pdf/fpdf v0.9.0/go.mod h1:oO8N111TkmKb9D7VvWGLvLJlaZUQVPM+6V42pp3iV4Y= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= +github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372 h1:FQivqchis6bE2/9uF70M2gmmLpe82esEm2QadL0TEJo= +github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372/go.mod h1:evDBbvNR/KaVFZ2ZlDSOWWXIUKq0wCOEtzLxRM8SG3k= +github.com/go-text/typesetting-utils v0.0.0-20230616150549-2a7df14b6a22 h1:LBQTFxP2MfsyEDqSKmUBZaDuDHN1vpqDyOZjcqS7MYI= +github.com/go-text/typesetting-utils v0.0.0-20230616150549-2a7df14b6a22/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o= +github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198 h1:FSii2UQeSLngl3jFoR4tUKZLprO7qUlh/TKKticc0BM= +github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198/go.mod h1:DTh/Y2+NbnOVVoypCCQrovMPDKUGp4yZpSbWg5D0XIM= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= +github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/googleapis v1.1.0 h1:kFkMAZBNAn4j7K0GiZr8cRYzejq68VbheufiV3YuyFI= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I= +github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= +github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/google/cel-go v0.17.1 h1:s2151PDGy/eqpCI80/8dl4VL3xTkqI/YubXLXCFw0mw= +github.com/google/cel-go v0.17.1/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= +github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= +github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/generative-ai-go v0.20.1 h1:6dEIujpgN2V0PgLhr6c/M1ynRdc7ARtiIDPFzj45uNQ= +github.com/google/generative-ai-go v0.20.1/go.mod h1:TjOnZJmZKzarWbjUJgy+r3Ee7HGBRVLhOIgupnwR4Bg= +github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-github/v50 v50.2.0 h1:j2FyongEHlO9nxXLc+LP3wuBSVU9mVxfpdYUexMpIfk= +github.com/google/go-pkcs11 v0.3.0 h1:PVRnTgtArZ3QQqTGtbtjtnIkzl2iY2kt24yqbrf7td8= +github.com/google/go-pkcs11 v0.3.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= +github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= +github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= +github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= +github.com/google/trillian v1.6.0 h1:jMBeDBIkINFvS2n6oV5maDqfRlxREAc6CW9QYWQ0qT4= +github.com/google/trillian v1.6.0/go.mod h1:Yu3nIMITzNhhMJEHjAtp6xKiu+H/iHu2Oq5FjV2mCWI= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/cloud-bigtable-clients-test v0.0.3 h1:afMKTvA/jc6jSTMkeHBZGFDTt8Cc+kb1ATFzqMK85hw= +github.com/googleapis/cloud-bigtable-clients-test v0.0.3/go.mod h1:TWtDzrrAI70C3dNLDY+nZN3gxHtFdZIbpL9rCTFyxE0= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= +github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= +github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= +github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= +github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= +github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= +github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= +github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8 h1:tlyzajkF3030q6M8SvmJSemC9DTHL/xaMa18b65+JM4= +github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= +github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/hashicorp/consul/api v1.3.0 h1:HXNYlRkkM/t+Y/Yhxtwcy02dlYwIaoxzvxPnS+cqy78= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0 h1:UOxjlb4xVNF93jak1mzzoBatyFju9nrkxpVwIp/QqxQ= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hudl/fargo v1.3.0 h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.4.3 h1:cxFyXhxlvAifxnkKKdlxv8XqUf59tDlYjnV5YYfsJJY= +github.com/jackc/pgx/v5 v5.4.3/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA= +github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= +github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jezek/xgb v1.1.1 h1:bE/r8ZZtSv7l9gk6nU0mYx51aXrvnyb44892TwSaqS4= +github.com/jezek/xgb v1.1.1/go.mod h1:nrhwO0FX/enq75I7Y7G8iN1ubpSGZEiA3v9e9GyRFlk= +github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= +github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5 h1:PJr+ZMXIecYc1Ey2zucXdR73SMBtgjPgwa31099IMv0= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= +github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= +github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= +github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= +github.com/kylelemons/go-gypsy v1.0.0 h1:7/wQ7A3UL1bnqRMnZ6T8cwCOArfZCxFmb1iTxaOOo1s= +github.com/kylelemons/go-gypsy v1.0.0/go.mod h1:chkXM0zjdpXOiqkCW1XcCHDfjfk14PH2KKkQWxfJUcU= +github.com/letsencrypt/pkcs11key/v4 v4.0.0 h1:qLc/OznH7xMr5ARJgkZCCWk+EomQkiNTOoOF5LAgagc= +github.com/letsencrypt/pkcs11key/v4 v4.0.0/go.mod h1:EFUvBDay26dErnNb70Nd0/VW3tJiIbETBPTl9ATXQag= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743 h1:143Bb8f8DuGWck/xpNUOckBVYfFbBTnLevfRZ1aVVqo= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1 h1:vi1F1IQ8N7hNWytK9DpJsUfQhGuNSc19z330K6vl4zk= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/lyft/protoc-gen-star v0.6.1 h1:erE0rdztuaDq3bpGifD95wfoPrSZc95nGA6tbiNYh6M= +github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4 h1:sIXJOMrYnQZJu7OB7ANSF4MYri2fTEGIsRLz6LwI4xE= +github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= +github.com/lyft/protoc-gen-validate v0.0.13 h1:KNt/RhmQTOLr7Aj8PsJ7mTronaFyx80mRTT9qF261dA= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magefile/mage v1.14.0 h1:6QDX3g6z1YvJ4olPhT1wksUcSa/V0a1B+pJb73fBjyo= +github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= +github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/mgechev/dots v1.0.0 h1:o+4OJ3OjWzgQHGJXKfJ8rbH4dqDugu5BiEy84nxg0k4= +github.com/mgechev/dots v1.0.0/go.mod h1:rykuMydC9t3wfkM+ccYH3U3ss03vZGg6h3hmOznXLH0= +github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU= +github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI= +github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5 h1:0KqC6/sLy7fDpBdybhVkkv4Yz+PmB7c9Dz9z3dLW804= +github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= +github.com/mreiferson/go-httpclient v0.0.0-20201222173833-5e475fde3a4d h1:tLWCMSjfL8XyZwpu1RzI2UpJSPbZCOZ6DVHQFnlpL7A= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2 h1:i2Ly0B+1+rzNZHHWtD4ZwKi+OU5l+uQo1iDHZ2PmiIc= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1 h1:ik3HbLhZ0YABLto7iX80pZLPw/6dx3T+++MZJwLnMrQ= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3 h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/oklog/oklog v0.3.2 h1:wVfs8F+in6nTBMkA7CbRw+zZMIB7nNM825cM1wuzoTk= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0 h1:LiZB1h0GIcudcDci2bxbqI6DXV8bF8POAnArqvRrIyw= +github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0/go.mod h1:F/7q8/HZz+TXjlsoZQQKVYvXTZaFH4QRa3y+j1p7MS0= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0 h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2 h1:nY8Hti+WKaP0cRsSeQ026wU03QsM762XBeCXBb9NAWI= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/otiai10/curr v1.0.0 h1:TJIWdbX0B+kpNagQrjgq8bCMrbhiuX73M2XwgtDMoOI= +github.com/otiai10/mint v1.3.1 h1:BCmzIS3n71sGfHB5NMNDB3lHYPz8fWSkCAErHed//qc= +github.com/pact-foundation/pact-go v1.0.4 h1:OYkFijGHoZAYbOIb1LWXrwKQbMMRUv1oQ89blD2Mh2Q= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/performancecopilot/speed v3.0.0+incompatible h1:2WnRzIquHa5QxaJKShDkLM+sc0JPuwhXzK8OYOyt3Vg= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/phpdave11/gofpdf v1.4.2 h1:KPKiIbfwbvC/wOncwhrpRdXVj2CZTCFlw4wnoyjtHfQ= +github.com/phpdave11/gofpdi v1.0.13 h1:o61duiW8M9sMlkVXWlvP92sZJtGKENvW3VExs6dZukQ= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= +github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/profile v1.2.1 h1:F++O52m40owAmADcojzM+9gyjmMOY/T4oYJkgFDH8RE= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.13.1 h1:I2qBYMChEhIjOgazfJmV3/mZM256btk6wkCDRmW7JYs= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= +github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= +github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/prometheus v0.47.2 h1:jWcnuQHz1o1Wu3MZ6nMJDuTI0kU5yJp9pkxh8XEkNvI= +github.com/prometheus/prometheus v0.47.2/go.mod h1:J/bmOSjgH7lFxz2gZhrWEZs2i64vMS+HIuZfmYNhJ/M= +github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71 h1:CNooiryw5aisadVfzneSZPswRWvnVW8hF1bS/vo8ReI= +github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= +github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.21.0 h1:Q3vdXlfLNT+OftyBHsU0Y445MD+8m8axjKgf2si0QcM= +github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= +github.com/shirou/gopsutil/v4 v4.25.8 h1:NnAsw9lN7587WHxjJA9ryDnqhJpFH6A+wagYWTOH970= +github.com/shirou/gopsutil/v4 v4.25.8/go.mod h1:q9QdMmfAOVIw7a+eF86P7ISEU6ka+NLgkUxlopV4RwI= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= +github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1 h1:oMnRNZXX5j85zso6xCPRNPtmAycat+WcoKbklScLDgQ= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= +github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= +github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= +github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= +github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271 h1:WhxRHzgeVGETMlmVfqhRn8RIeeNoPr2Czh33I4Zdccw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a h1:AhmOdSHeswKHBjhsLs/7+1voOxT+LLrSk/Nxvk35fug= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= +github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= +github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= +github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= +github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc= +github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= +github.com/transparency-dev/merkle v0.0.2 h1:Q9nBoQcZcgPamMkGn7ghV8XiTZ/kRxn1yCG81+twTK4= +github.com/transparency-dev/merkle v0.0.2/go.mod h1:pqSy+OXefQ1EDUVmAJ8MUhHB9TXGuzVAT58PqBoHz1A= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.14 h1:ebbhrRiGK2i4naQJr+1Xj92HXZCrK7MsyTS/ob3HnAk= +github.com/urfave/cli v1.22.14/go.mod h1:X0eDS6pD6Exaclxm99NJ3FiCDRED7vIHpx2mDOHLvkA= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/quicktemplate v1.8.0 h1:zU0tjbIqTRgKQzFY1L42zq0qR3eh4WoQQdIdqCysW5k= +github.com/valyala/quicktemplate v1.8.0/go.mod h1:qIqW8/igXt8fdrUln5kOSb+KWMaJ4Y8QUsfd1k6L2jM= +github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= +github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= +github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= +github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= +github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= +github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= +github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= +github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= +github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 h1:Nzukz5fNOBIHOsnP+6I79kPx3QhLv8nBy2mfFhBRq30= +github.com/zmap/zcertificate v0.0.1 h1:2X15TRx4Fr6qzKItfwUdww294OeRSmHILLa+Xn2Uv+s= +go.einride.tech/aip v0.68.1 h1:16/AfSxcQISGN5z9C5lM+0mLYXihrHbQ1onvYTr93aQ= +go.einride.tech/aip v0.68.1/go.mod h1:XaFtaj4HuA3Zwk9xoBtTWgNubZ0ZZXv9BZJCkuKuWbg= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738 h1:VcrIfasaLFkyjk6KNlXQSzO+B0fZcnECiDrKJsfxka0= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.etcd.io/etcd/client/v2 v2.305.12 h1:0m4ovXYo1CHaA/Mp3X/Fak5sRNIWf01wk/X1/G3sGKI= +go.etcd.io/etcd/client/v2 v2.305.12/go.mod h1:aQ/yhsxMu+Oht1FOupSr60oBvcS9cKXHrzBpDsPTf9E= +go.etcd.io/etcd/raft/v3 v3.5.12 h1:7r22RufdDsq2z3STjoR7Msz6fYH8tmbkdheGfwJNRmU= +go.etcd.io/etcd/raft/v3 v3.5.12/go.mod h1:ERQuZVe79PI6vcC3DlKBukDCLja/L7YMu29B74Iwj4U= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= +go.opentelemetry.io/contrib/detectors/gcp v1.36.0 h1:F7q2tNlCaHY9nMKHR6XH9/qkp8FktLnIcy6jJNyOCQw= +go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= +go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY= +go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= +go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/oteltest v0.20.0 h1:HiITxCawalo5vQzdHfKeZurV8x7ljcqAgiWzF6Vaeaw= +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.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= +go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= +go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= +golang.org/x/exp v0.0.0-20210722180016-6781d3edade3/go.mod h1:DVyR6MI7P4kEQgvZJSj1fQGrWIi2RzIrfYWycwheUAc= +golang.org/x/exp v0.0.0-20221012211006-4de253d81b95/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= +golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= +golang.org/x/exp/shiny v0.0.0-20220827204233-334a2380cb91/go.mod h1:VjAR7z0ngyATZTELrBSkxOOHhhlnVUxDye4mcjx5h/8= +golang.org/x/exp/shiny v0.0.0-20240707233637-46b078467d37/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= +golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c h1:jTMrjjZRcSH/BDxWhXCP6OWsfVgmnwI7J+F4/nyVXaU= +golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= +golang.org/x/image v0.5.0/go.mod h1:FVC7BI/5Ym8R25iw5OLsgshdUBbT1h5jZTpA+mvAdZ4= +golang.org/x/image v0.12.0/go.mod h1:Lu90jvHG7GfemOIcldsh9A2hS01ocl6oNO7ype5mEnk= +golang.org/x/image v0.13.0/go.mod h1:6mmbMOeV28HuMTgA6OSRkdXKYw/t5W9Uwn2Yv1r3Yxk= +golang.org/x/image v0.14.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE= +golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78= +golang.org/x/image v0.24.0/go.mod h1:4b/ITuLfqYq1hqZcjofwctIhi7sZh2WaCjvsBNjjya8= +golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ= +golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/mobile v0.0.0-20201217150744-e6ae53a27f4f/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4= +golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a h1:sYbmY3FwUWCBTodZL1S3JUuOvaW6kM2o+clDzzDNBWg= +golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a/go.mod h1:Ede7gF0KGoHlj822RtphAHK1jLdrcuRBZg0sF1Q+SPc= +golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= +golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= +golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= +golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= +golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= +golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +gonum.org/v1/gonum v0.15.1/go.mod h1:eZTZuRFrzu5pcyjN5wJhcIhnUdNijYxX1T2IcrOGY0o= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= +gonum.org/v1/plot v0.15.2 h1:Tlfh/jBk2tqjLZ4/P8ZIwGrLEWQSPDLRm/SNWKNXiGI= +gonum.org/v1/plot v0.15.2/go.mod h1:DX+x+DWso3LTha+AdkJEv5Txvi+Tql3KAGkehP0/Ubg= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.160.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= +google.golang.org/api v0.222.0/go.mod h1:efZia3nXpWELrwMlN5vyQrD4GmJN1Vw0x68Et3r+a9c= +google.golang.org/api v0.229.0/go.mod h1:wyDfmq5g1wYJWn29O22FDWN48P7Xcz0xz+LBpptYvB0= +google.golang.org/api v0.232.0/go.mod h1:p9QCfBWZk1IJETUdbTKloR5ToFdKbYh2fkjsUL6vNoY= +google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= +google.golang.org/api v0.246.0 h1:H0ODDs5PnMZVZAEtdLMn2Ul2eQi7QNjqM2DIFp8TlTM= +google.golang.org/api v0.246.0/go.mod h1:dMVhVcylamkirHdzEBAIQWUCgqY885ivNeZYd7VAVr8= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= +google.golang.org/genproto v0.0.0-20250122153221-138b5a5a4fd4/go.mod h1:qbZzneIOXSq+KFAFut9krLfRLZiFLzZL5u2t8SV83EE= +google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE= +google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= +google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/api v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:B5xPO//w8qmBDjGReYLpR6UJPnkldGkCSMoH/2vxJeg= +google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/api v0.0.0-20250219182151-9fdb1cabc7b2/go.mod h1:W9ynFDP/shebLB1Hl/ESTOap2jHd6pmLXPNZC7SVDbA= +google.golang.org/genproto/googleapis/api v0.0.0-20250227231956-55c901821b1e/go.mod h1:Xsh8gBVxGCcbV8ZeTB9wI5XPyZ5RvC6V3CTeeplHbiA= +google.golang.org/genproto/googleapis/api v0.0.0-20250414145226-207652e42e2e/go.mod h1:085qFyf2+XaZlRdCgKNCIZ3afY2p4HHZdoIRpId8F4A= +google.golang.org/genproto/googleapis/api v0.0.0-20250425173222-7b384671a197/go.mod h1:Cd8IzgPo5Akum2c9R6FsXNaZbH3Jpa2gpHlW89FqlyQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:pKLAc5OolXC3ViWGI62vvC0n10CpwAtRcTNCFwTKBEw= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20250728155136-f173205681a0 h1:HyHZz/b6hYFm/aS2F0DOAyjK5mQw0Jh8YiZyqlXMfic= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20250728155136-f173205681a0/go.mod h1:h6yxum/C2qRb4txaZRLDHK8RyS0H/o2oEDeKY4onY/Y= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250212204824-5a70512c5d8b/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250227231956-55c901821b1e/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250414145226-207652e42e2e/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= +google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= +google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20 h1:MLBCGN1O7GzIx+cBiwfYPwtmZ41U3Mn/cotLJciaArI= +google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20/go.mod h1:Nr5H8+MlGWr5+xX/STzdoEqJrO+YteqFbMyCsrb6mH0= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= +gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg= +gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +k8s.io/api v0.27.4 h1:0pCo/AN9hONazBKlNUdhQymmnfLRbSZjd5H5H3f0bSs= +k8s.io/apimachinery v0.27.4 h1:CdxflD4AF61yewuid0fLl6bM4a3q04jWel0IlP+aYjs= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c h1:GohjlNKauSai7gN4wsJkeZ3WAJx4Sh+oT/b5IYn5suA= +k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f h1:2kWPakN3i/k81b0gvD5C5FJ2kxm1WrQFanWchyKuqGg= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= +lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= +modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw= +modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw= +modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= +modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= +modernc.org/libc v1.22.2 h1:4U7v51GyhlWqQmwCHj28Rdq2Yzwk55ovjFrdPjs8Hb0= +modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= +modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= +modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= +modernc.org/sqlite v1.18.2 h1:S2uFiaNPd/vTAP/4EmyY8Qe2Quzu26A2L1e25xRNTio= +modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= +modernc.org/tcl v1.13.2 h1:5PQgL/29XkQ9wsEmmNPjzKs+7iPCaYqUJAhzPvQbjDA= +modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= +modernc.org/z v1.5.1 h1:RTNHdsrOpeoSeOF4FbzTo8gBYByaJ5xT7NgZ9ZqRiJM= +rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= +rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= +rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= +sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= +sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/pkg/go.mod b/pkg/go.mod index bf1d4c851e7a..7d8ede259deb 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/pkg/v3 -go 1.25 +go 1.25.0 toolchain go1.25.1 diff --git a/scripts/update_go_workspace.sh b/scripts/update_go_workspace.sh new file mode 100755 index 000000000000..c453a3596359 --- /dev/null +++ b/scripts/update_go_workspace.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# +# Copyright 2024 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Based on k/k scripts/update-go-workspace.sh: +# https://github.com/kubernetes/kubernetes/blob/e2b96b25661849775dedf441b2f5c555392caa84/hack/update-go-workspace.sh + +# This script generates go.work so that it includes all Go packages +# in this repo, with a few exceptions. + +set -euo pipefail + +source ./scripts/test_lib.sh + +# Avoid issues and remove the workspace files. +rm -f go.work go.work.sum + +# Generate the workspace. +go work init +sed -i -e '1i\// This is a generated file. Do not edit directly.\n' go.work + +# Include all submodules from the repository. +git ls-files -z ':(glob)**/go.mod' \ + | xargs -0 -n1 dirname -z \ + | xargs -0 -n1 go work edit -use + +go work edit -toolchain "go$(cat .go-version)" +go work edit -go "$(go mod edit -json | jq -r .Go)" + +# generate go.work.sum +go mod download diff --git a/server/go.mod b/server/go.mod index c112fc903bd0..7c3ccda90958 100644 --- a/server/go.mod +++ b/server/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/server/v3 -go 1.25 +go 1.25.0 toolchain go1.25.1 diff --git a/tests/go.mod b/tests/go.mod index a4db42e113c3..fde1bca8d8bb 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/tests/v3 -go 1.25 +go 1.25.0 toolchain go1.25.1 diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 900f2f1b225d..9454ce75cd47 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/tools/rw-heatmaps/v3 -go 1.25 +go 1.25.0 toolchain go1.25.1 diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 2d30717729df..4f2deebf3eb2 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -1,6 +1,6 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 -go 1.25 +go 1.25.0 toolchain go1.25.1 From fef127a3cd01356c5ac3f499e908888c98fd6fe5 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 19 Dec 2024 16:01:11 -0800 Subject: [PATCH 0564/1068] Add verify-go-workspace make target Introduce a new `verify-go-workspace` make target executed by the `verify` target. The pull-etcd-verify presubmit prow job will execute it. It ensures that the Go workspace (`go.work` and `go.work.sum`) is in sync. Signed-off-by: Ivan Valdes --- Makefile | 7 ++++++- scripts/test.sh | 11 +++++++++++ scripts/update_go_workspace.sh | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 3499ee8b9709..16383a62ec32 100644 --- a/Makefile +++ b/Makefile @@ -99,7 +99,8 @@ fuzz: verify: verify-gofmt verify-bom verify-lint verify-dep verify-shellcheck verify-goword \ verify-govet verify-license-header verify-mod-tidy \ verify-shellws verify-proto-annotations verify-genproto verify-yamllint \ - verify-govet-shadow verify-markdown-marker verify-go-versions verify-gomodguard + verify-govet-shadow verify-markdown-marker verify-go-versions verify-gomodguard \ + verify-go-workspace .PHONY: fix fix: fix-bom fix-lint fix-yamllint sync-toolchain-directive update-go-workspace @@ -237,6 +238,10 @@ verify-go-versions: verify-gomodguard: PASSES="gomodguard" ./scripts/test.sh +.PHONY: verify-go-workspace +verify-go-workspace: + PASSES="go_workspace" ./scripts/test.sh + .PHONY: sync-toolchain-directive sync-toolchain-directive: ./scripts/sync_go_toolchain_directive.sh diff --git a/scripts/test.sh b/scripts/test.sh index 72a19c1c410d..85cd58ad9ae3 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -698,6 +698,17 @@ function genproto_pass { "${ETCD_ROOT_DIR}/scripts/verify_genproto.sh" } +function go_workspace_pass { + log_callout "Ensuring go workspace is in sync." + + run go mod download + if [ -n "$(git status --porcelain go.work.sum)" ]; then + log_error "Go workspace not in sync." + log_warning "Suggestion: run \"make fix\" to address the issue." + return 255 + fi +} + ########### MAIN ############################################################### function run_pass { diff --git a/scripts/update_go_workspace.sh b/scripts/update_go_workspace.sh index c453a3596359..5b307c942410 100755 --- a/scripts/update_go_workspace.sh +++ b/scripts/update_go_workspace.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright 2024 The etcd Authors +# Copyright 2025 The etcd Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. From 4f016f58927bbe920e6d401014904c9d23e89285 Mon Sep 17 00:00:00 2001 From: James Blair Date: Fri, 26 Sep 2025 07:44:54 +1200 Subject: [PATCH 0565/1068] Ensure new maintainers receive list and service desk permissions. Signed-off-by: James Blair --- Documentation/contributor-guide/community-membership.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/contributor-guide/community-membership.md b/Documentation/contributor-guide/community-membership.md index 15d5615a0ca3..9b0db2791916 100644 --- a/Documentation/contributor-guide/community-membership.md +++ b/Documentation/contributor-guide/community-membership.md @@ -125,6 +125,8 @@ depend on to make decisions in the best interest of the project in a consistent - Request to join the private slack channel for etcd maintainers on [kubernetes slack](http://slack.kubernetes.io/) - Request access to etcd-development GCP project where we publish releases - Request access to passwords shared between maintainers + - Request cncf service desk access by emailing + - Raise cncf service desk ticket to be addded to [cncf-etcd-maintainers mailing list](https://lists.cncf.io/g/cncf-etcd-maintainers/directory) ### Responsibilities and privileges From f3162701ee6dad4d300bf7751edab0a298f2c86d Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Tue, 30 Sep 2025 11:36:21 -0700 Subject: [PATCH 0566/1068] Add gomodguard to verify forbidden dependencies Signed-off-by: Ivan Valdes --- Makefile | 6 +++++- scripts/test.sh | 12 ++++++++++++ tools/mod/go.mod | 3 ++- tools/mod/go.sum | 2 ++ tools/mod/tools.go | 1 + 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index b533ef287455..b920da607b04 100644 --- a/Makefile +++ b/Makefile @@ -99,7 +99,7 @@ fuzz: verify: verify-gofmt verify-bom verify-lint verify-dep verify-shellcheck verify-goword \ verify-govet verify-license-header verify-mod-tidy \ verify-shellws verify-proto-annotations verify-genproto verify-yamllint \ - verify-govet-shadow verify-markdown-marker verify-go-versions + verify-govet-shadow verify-markdown-marker verify-go-versions verify-gomodguard .PHONY: fix fix: fix-bom fix-lint fix-yamllint sync-toolchain-directive @@ -233,6 +233,10 @@ clean: verify-go-versions: ./scripts/verify_go_versions.sh +.PHONY: verify-gomodguard +verify-gomodguard: + PASSES="gomodguard" ./scripts/test.sh + .PHONY: sync-toolchain-directive sync-toolchain-directive: ./scripts/sync_go_toolchain_directive.sh diff --git a/scripts/test.sh b/scripts/test.sh index 464a46ce76e4..72a19c1c410d 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -540,6 +540,18 @@ function bom_pass { rm bom-now.json.tmp } +function gomodguard_for_module { + if [ ! -f .gomodguard.yaml ]; then + # Nothing to validate, return. + return + fi + run_go_tool github.com/ryancurrah/gomodguard/cmd/gomodguard +} + +function gomodguard_pass { + run_for_modules gomodguard_for_module +} + ######## VARIOUS CHECKERS ###################################################### function dump_deps_of_module() { diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 366e98a97921..0b72dad41d45 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -14,6 +14,7 @@ require ( github.com/google/addlicense v1.2.0 github.com/google/yamlfmt v0.17.2 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 + github.com/ryancurrah/gomodguard v1.4.1 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 @@ -170,6 +171,7 @@ require ( github.com/nunnatsa/ginkgolinter v0.21.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/polyfloyd/go-errorlint v1.8.0 // indirect github.com/prometheus/client_golang v1.23.2 // indirect @@ -184,7 +186,6 @@ require ( github.com/raeperd/recvcheck v0.2.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - github.com/ryancurrah/gomodguard v1.4.1 // indirect github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect github.com/sagikazarmark/locafero v0.7.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index a10d69feb0df..26934bfd1695 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -381,6 +381,8 @@ github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3v github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= +github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d h1:CdDQnGF8Nq9ocOS/xlSptM1N3BbrA6/kmaep5ggwaIA= +github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/tools/mod/tools.go b/tools/mod/tools.go index cb62ea2afff1..d2ce1c619514 100644 --- a/tools/mod/tools.go +++ b/tools/mod/tools.go @@ -31,6 +31,7 @@ import ( _ "github.com/google/yamlfmt/cmd/yamlfmt" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2" + _ "github.com/ryancurrah/gomodguard/cmd/gomodguard" _ "golang.org/x/tools/cmd/goimports" _ "gotest.tools/gotestsum" _ "gotest.tools/v3" From 0ef8cfb4fb54458d491905e6881bd770e781cfc8 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 14 Feb 2025 21:05:54 -0800 Subject: [PATCH 0567/1068] Migrate verify-go-versions to use a Go workspace Add checking for the Go toolchain directive in the go.work file too. Signed-off-by: Ivan Valdes --- scripts/sync_go_toolchain_directive.sh | 1 + scripts/verify_go_versions.sh | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/scripts/sync_go_toolchain_directive.sh b/scripts/sync_go_toolchain_directive.sh index fb1abe5aff9b..7bb61f287607 100755 --- a/scripts/sync_go_toolchain_directive.sh +++ b/scripts/sync_go_toolchain_directive.sh @@ -25,3 +25,4 @@ source ./scripts/test_lib.sh TARGET_GO_VERSION="${TARGET_GO_VERSION:-"$(cat "${ETCD_ROOT_DIR}/.go-version")"}" find . -name 'go.mod' -exec go mod edit -toolchain=go"${TARGET_GO_VERSION}" {} \; +go work edit -toolchain=go"${TARGET_GO_VERSION}" diff --git a/scripts/verify_go_versions.sh b/scripts/verify_go_versions.sh index f752b251621a..157191ec3b45 100755 --- a/scripts/verify_go_versions.sh +++ b/scripts/verify_go_versions.sh @@ -47,6 +47,20 @@ function verify_go_versions() { fi } +# Workaround to get go.work's toolchain, as go work edit -json doesn't return +# the toolchain as of Go 1.24. When this is fixed, we can replace these two +# checks with verify_go_versions go.work +toolchain_version="$(grep toolchain go.work | cut -d' ' -f2)" +if [[ "go${target_go_version}" != "${toolchain_version}" ]]; then + log_error "go toolchain directive out of sync for go.work, got: ${toolchain_version}" + toolchain_out_of_sync="true" +fi +go_line_version="$(go work edit -json | jq -r .Go)" +if ! printf '%s\n' "${go_line_version}" "${target_go_version}" | sort --check=silent --version-sort; then + log_error "go directive in go.work is greater than maximum allowed: go${target_go_version}" + go_line_violation="true" +fi + while read -r mod; do verify_go_versions "${mod}"; done < <(find . -name 'go.mod') @@ -64,3 +78,5 @@ fi if [[ "${go_line_violation}" == "true" ]] || [[ "${toolchain_out_of_sync}" == "true" ]]; then exit 1 fi + +log_success "SUCCESS: Go toolchain directive in sync" From a8aa61ab701f9771c1ebc2f3f914c56d8bcbd733 Mon Sep 17 00:00:00 2001 From: James Blair Date: Sun, 28 Sep 2025 23:17:16 +1300 Subject: [PATCH 0568/1068] Ensure new maintainers receive list and service desk permissions. Signed-off-by: James Blair --- .../contributor-guide/community-membership.md | 71 +++++++++---------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/Documentation/contributor-guide/community-membership.md b/Documentation/contributor-guide/community-membership.md index 9b0db2791916..388db9e38a54 100644 --- a/Documentation/contributor-guide/community-membership.md +++ b/Documentation/contributor-guide/community-membership.md @@ -1,6 +1,6 @@ # Community membership -This doc outlines the various responsibilities of contributor roles in etcd. +This doc outlines the various responsibilities of contributor roles in etcd. | Role | Responsibilities | Requirements | Defined by | |------------|----------------------------------------------|---------------------------------------------------------------|-------------------------------| @@ -25,38 +25,38 @@ below. ## Member Members are continuously active contributors to the community. They can have -issues and PRs assigned to them. Members are expected to remain active +issues and PRs assigned to them. Members are expected to remain active contributors to the community. **Defined by:** Member of the etcd GitHub organization. -### Requirements +### Member requirements - Enabled [two-factor authentication] on their GitHub account - Have made multiple contributions to the project or community. Contribution may include, but is not limited to: - - Authoring or reviewing PRs on GitHub. At least one PR must be **merged**. - - Filing or commenting on issues on GitHub - - Contributing to community discussions (e.g. meetings, Slack, email discussion + - Authoring or reviewing PRs on GitHub. At least one PR must be **merged**. + - Filing or commenting on issues on GitHub + - Contributing to community discussions (e.g. meetings, Slack, email discussion forums, Stack Overflow) - Subscribed to [etcd-dev@googlegroups.com](https://groups.google.com/g/etcd-dev) - Have read the [contributor guide] - Sponsored by two active maintainers or reviewers. - - Sponsors must be from multiple member companies to demonstrate integration across the community. - - With no objections from other maintainers + - Sponsors must be from multiple member companies to demonstrate integration across the community. + - With no objections from other maintainers - Open a [membership nomination] issue against the `kubernetes/org` repo - - Ensure your sponsors are @mentioned on the issue - - Make sure that the list of contributions included is representative of your work on the project. + - Ensure your sponsors are @mentioned on the issue + - Make sure that the list of contributions included is representative of your work on the project. - Members can be removed by a supermajority of the maintainers or can resign by notifying the maintainers. -### Responsibilities and privileges +### Member responsibilities and privileges - Responsive to issues and PRs assigned to them - Granted "triage access" to etcd project - Active owner of code they have contributed (unless ownership is explicitly transferred) - - Code is well-tested - - Tests consistently pass - - Addresses bugs or issues discovered after code is accepted + - Code is well-tested + - Tests consistently pass + - Addresses bugs or issues discovered after code is accepted **Note:** Members who frequently contribute code are expected to proactively perform code reviews and work towards becoming a *reviewer*. @@ -64,31 +64,31 @@ perform code reviews and work towards becoming a *reviewer*. ## Reviewers Reviewers are contributors who have demonstrated greater skill in -reviewing the code from other contributors. They are knowledgeable about both +reviewing the code from other contributors. They are knowledgeable about both the codebase and software engineering principles. Their LGTM counts towards merging a code change into the project. A reviewer is generally on the ladder towards -maintainership. +maintainership. **Defined by:** *reviewers* entry in the [OWNERS] file. -### Requirements +### Reviewer requirements - member for at least 3 months. - Primary reviewer for at least 5 PRs to the codebase. - Reviewed or contributed at least 20 substantial PRs to the codebase. - Knowledgeable about the codebase. - Sponsored by two active maintainers. - - Sponsors must be from multiple member companies to demonstrate integration across the community. - - With no objections from other maintainers + - Sponsors must be from multiple member companies to demonstrate integration across the community. + - With no objections from other maintainers - Reviewers can be removed by a supermajority of the maintainers or can resign by notifying the maintainers. -### Responsibilities and privileges +### Reviewer responsibilities and privileges - Code reviewer status may be a precondition to accepting large code contributions - Responsible for project quality control via code reviews - - Focus on code quality and correctness, including testing and factoring - - May also review for more holistic issues, but not a requirement + - Focus on code quality and correctness, including testing and factoring + - May also review for more holistic issues, but not a requirement - Expected to be responsive to review requests - Assigned PRs to review related to area of expertise - Assigned test bugs related to area of expertise @@ -103,24 +103,24 @@ depend on to make decisions in the best interest of the project in a consistent **Defined by:** *approvers* entry in the [OWNERS] file. -### Requirements +### Maintainer requirements - Deep understanding of the technical goals and direction of the project - Deep understanding of the technical domain of the project - Sustained contributions to design and direction by doing all of: - - Authoring and reviewing proposals - - Initiating, contributing, and resolving discussions (emails, GitHub issues, meetings) - - Identifying subtle or complex issues in the designs and implementation of PRs + - Authoring and reviewing proposals + - Initiating, contributing, and resolving discussions (emails, GitHub issues, meetings) + - Identifying subtle or complex issues in the designs and implementation of PRs - Directly contributed to the project through implementation and/or review - Sponsored by two active maintainers and elected by supermajority - - Sponsors must be from multiple member companies to demonstrate integration across the community. -- To become a maintainer send an email with your candidacy to etcd-maintainers-private@googlegroups.com - - Ensure your sponsors are @mentioned in the email - - Include a list of contributions representative of your work on the project. - - Existing maintainers vote will privately and respond to the email with either acceptance or feedback for suggested improvement. + - Sponsors must be from multiple member companies to demonstrate integration across the community. +- To become a maintainer send an email with your candidacy to + - Ensure your sponsors are @mentioned in the email + - Include a list of contributions representative of your work on the project. + - Existing maintainers vote will privately and respond to the email with either acceptance or feedback for suggested improvement. - With your membership approved you are expected to: - Open a PR and add an entry to the [OWNERS] file - - Subscribe to etcd-maintainers@googlegroups.com and etcd-maintainers-private@googlegroups.com + - Subscribe to and - Request to join [etcd-maintainer teams of etcd organization of GitHub](https://github.com/orgs/etcd-io/teams/maintainers-etcd) - Request to join the private slack channel for etcd maintainers on [kubernetes slack](http://slack.kubernetes.io/) - Request access to etcd-development GCP project where we publish releases @@ -128,7 +128,7 @@ depend on to make decisions in the best interest of the project in a consistent - Request cncf service desk access by emailing - Raise cncf service desk ticket to be addded to [cncf-etcd-maintainers mailing list](https://lists.cncf.io/g/cncf-etcd-maintainers/directory) -### Responsibilities and privileges +### Maintainer responsibilities and privileges - Make and approve technical design decisions - Set technical direction and priorities @@ -136,8 +136,8 @@ depend on to make decisions in the best interest of the project in a consistent - Mentor and guide reviewers, and contributors to the project. - Participate when called upon in the [security disclosure and release process] - Ensure the continued health of the project - - Adequate test coverage to confidently release - - Tests are passing reliably (i.e. not flaky) and are fixed when they fail + - Adequate test coverage to confidently release + - Tests are passing reliably (i.e. not flaky) and are fixed when they fail - Ensure a healthy process for discussion and decision-making is in place. - Work with other maintainers to maintain the project's overall health and success holistically @@ -168,4 +168,3 @@ Contributor roles and responsibilities were written based on [Kubernetes communi [emeritus maintainers]: /README.md#etcd-emeritus-maintainers [security disclosure and release process]: /security/README.md [two-factor authentication]: https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/about-two-factor-authentication - From 47daf33b005c4cadc15111d5d19d784681ce3c9f Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Tue, 30 Sep 2025 11:37:37 -0700 Subject: [PATCH 0569/1068] Replace FORBIDDEN_DEPENDENCIES with gomodguard Signed-off-by: Ivan Valdes --- api/.gomodguard.yaml | 13 +++++++++++++ api/go.mod | 10 ---------- client/v3/.gomodguard.yaml | 11 +++++++++++ client/v3/go.mod | 9 --------- etcdctl/.gomodguard.yaml | 9 +++++++++ etcdctl/go.mod | 8 -------- etcdutl/.gomodguard.yaml | 9 +++++++++ etcdutl/go.mod | 8 -------- pkg/.gomodguard.yaml | 11 +++++++++++ pkg/go.mod | 11 ----------- server/.gomodguard.yaml | 9 +++++++++ server/go.mod | 6 ------ 12 files changed, 62 insertions(+), 52 deletions(-) create mode 100644 api/.gomodguard.yaml create mode 100644 client/v3/.gomodguard.yaml create mode 100644 etcdctl/.gomodguard.yaml create mode 100644 etcdutl/.gomodguard.yaml create mode 100644 pkg/.gomodguard.yaml create mode 100644 server/.gomodguard.yaml diff --git a/api/.gomodguard.yaml b/api/.gomodguard.yaml new file mode 100644 index 000000000000..e8ec3066834a --- /dev/null +++ b/api/.gomodguard.yaml @@ -0,0 +1,13 @@ +--- +blocked: + modules: + - go.etcd.io/etcd: + reason: "Forbidden dependency" + - go.etcd.io/etcd/api/v3: + reason: "Forbidden dependency" + - go.etcd.io/etcd/pkg/v3: + reason: "Forbidden dependency" + - go.etcd.io/etcd/tests/v3: + reason: "Forbidden dependency" + - go.etcd.io/etcd/v3: + reason: "Forbidden dependency" diff --git a/api/go.mod b/api/go.mod index 35fe1f78c4b3..0ae545b08c32 100644 --- a/api/go.mod +++ b/api/go.mod @@ -26,13 +26,3 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) - -// Bad imports are sometimes causing attempts to pull that code. -// This makes the error more explicit. -replace ( - go.etcd.io/etcd => ./FORBIDDEN_DEPENDENCY - go.etcd.io/etcd/api/v3 => ./FORBIDDEN_DEPENDENCY - go.etcd.io/etcd/pkg/v3 => ./FORBIDDEN_DEPENDENCY - go.etcd.io/etcd/tests/v3 => ./FORBIDDEN_DEPENDENCY - go.etcd.io/etcd/v3 => ./FORBIDDEN_DEPENDENCY -) diff --git a/client/v3/.gomodguard.yaml b/client/v3/.gomodguard.yaml new file mode 100644 index 000000000000..06361930e7c1 --- /dev/null +++ b/client/v3/.gomodguard.yaml @@ -0,0 +1,11 @@ +--- +blocked: + modules: + - go.etcd.io/etcd: + reason: "Forbidden dependency" + - go.etcd.io/etcd/pkg/v3: + reason: "Forbidden dependency" + - go.etcd.io/etcd/tests/v3: + reason: "Forbidden dependency" + - go.etcd.io/etcd/v3: + reason: "Forbidden dependency" diff --git a/client/v3/go.mod b/client/v3/go.mod index 2d68d3cb1e51..8d2e19c75372 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -46,12 +46,3 @@ replace ( go.etcd.io/etcd/api/v3 => ../../api go.etcd.io/etcd/client/pkg/v3 => ../pkg ) - -// Bad imports are sometimes causing attempts to pull that code. -// This makes the error more explicit. -replace ( - go.etcd.io/etcd => ./FORBIDDEN_DEPENDENCY - go.etcd.io/etcd/pkg/v3 => ./FORBIDDEN_DEPENDENCY - go.etcd.io/etcd/v3 => ./FORBIDDEN_DEPENDENCY - go.etcd.io/tests/v3 => ./FORBIDDEN_DEPENDENCY -) diff --git a/etcdctl/.gomodguard.yaml b/etcdctl/.gomodguard.yaml new file mode 100644 index 000000000000..18ffc6800c1f --- /dev/null +++ b/etcdctl/.gomodguard.yaml @@ -0,0 +1,9 @@ +--- +blocked: + modules: + - go.etcd.io/etcd: + reason: "Forbidden dependency" + - go.etcd.io/etcd/tests/v3: + reason: "Forbidden dependency" + - go.etcd.io/etcd/v3: + reason: "Forbidden dependency" diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 4299d3d371e8..9fa074f3d660 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -54,11 +54,3 @@ replace ( go.etcd.io/etcd/client/v3 => ../client/v3 go.etcd.io/etcd/pkg/v3 => ../pkg ) - -// Bad imports are sometimes causing attempts to pull that code. -// This makes the error more explicit. -replace ( - go.etcd.io/etcd => ./FORBIDDEN_DEPENDENCY - go.etcd.io/etcd/v3 => ./FORBIDDEN_DEPENDENCY - go.etcd.io/tests/v3 => ./FORBIDDEN_DEPENDENCY -) diff --git a/etcdutl/.gomodguard.yaml b/etcdutl/.gomodguard.yaml new file mode 100644 index 000000000000..18ffc6800c1f --- /dev/null +++ b/etcdutl/.gomodguard.yaml @@ -0,0 +1,9 @@ +--- +blocked: + modules: + - go.etcd.io/etcd: + reason: "Forbidden dependency" + - go.etcd.io/etcd/tests/v3: + reason: "Forbidden dependency" + - go.etcd.io/etcd/v3: + reason: "Forbidden dependency" diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 654cbff5f69e..babc3671e270 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -12,14 +12,6 @@ replace ( go.etcd.io/etcd/server/v3 => ../server ) -// Bad imports are sometimes causing attempts to pull that code. -// This makes the error more explicit. -replace ( - go.etcd.io/etcd => ./FORBIDDEN_DEPENDENCY - go.etcd.io/etcd/v3 => ./FORBIDDEN_DEPENDENCY - go.etcd.io/tests/v3 => ./FORBIDDEN_DEPENDENCY -) - require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 diff --git a/pkg/.gomodguard.yaml b/pkg/.gomodguard.yaml new file mode 100644 index 000000000000..a641b7086fe9 --- /dev/null +++ b/pkg/.gomodguard.yaml @@ -0,0 +1,11 @@ +--- +blocked: + modules: + - go.etcd.io/etcd: + reason: "Forbidden dependency" + - go.etcd.io/etcd/api/v3: + reason: "Forbidden dependency" + - go.etcd.io/etcd/tests/v3: + reason: "Forbidden dependency" + - go.etcd.io/etcd/v3: + reason: "Forbidden dependency" diff --git a/pkg/go.mod b/pkg/go.mod index 3459fcb7265f..bf1d4c851e7a 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -32,14 +32,3 @@ require ( ) replace go.etcd.io/etcd/client/pkg/v3 => ../client/pkg - -// Bad imports are sometimes causing attempts to pull that code. -// This makes the error more explicit. -// Etcd contains lots of packages and dependency relationship. -// Shouldn't import unnecessary dependencies -replace ( - go.etcd.io/etcd => ./FORBIDDEN_DEPENDENCY - go.etcd.io/etcd/api/v3 => ./FORBIDDEN_DEPENDENCY - go.etcd.io/etcd/tests/v3 => ./FORBIDDEN_DEPENDENCY - go.etcd.io/etcd/v3 => ./FORBIDDEN_DEPENDENCY -) diff --git a/server/.gomodguard.yaml b/server/.gomodguard.yaml new file mode 100644 index 000000000000..18ffc6800c1f --- /dev/null +++ b/server/.gomodguard.yaml @@ -0,0 +1,9 @@ +--- +blocked: + modules: + - go.etcd.io/etcd: + reason: "Forbidden dependency" + - go.etcd.io/etcd/tests/v3: + reason: "Forbidden dependency" + - go.etcd.io/etcd/v3: + reason: "Forbidden dependency" diff --git a/server/go.mod b/server/go.mod index b40f0937e463..c112fc903bd0 100644 --- a/server/go.mod +++ b/server/go.mod @@ -82,9 +82,3 @@ replace ( go.etcd.io/etcd/client/v3 => ../client/v3 go.etcd.io/etcd/pkg/v3 => ../pkg ) - -// Bad imports are sometimes causing attempts to pull that code. -// This makes the error more explicit. -replace go.etcd.io/etcd => ./FORBIDDEN_DEPENDENCY - -replace go.etcd.io/tests/v3 => ./FORBIDDEN_DEPENDENCY From 6154805fbc8f2d1a380cd9d43e056a322981a988 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 14 Feb 2025 21:23:44 -0800 Subject: [PATCH 0570/1068] Migrate bom command to use a Go workspace Remove `GOFLAGS=-mod=mod` from the execution of license-bill-of-materials. Signed-off-by: Ivan Valdes --- scripts/test.sh | 2 +- scripts/updatebom.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index 85cd58ad9ae3..35fdb128751a 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -519,7 +519,7 @@ function bom_pass { # BOM file should be generated for linux. Otherwise running this command on other operating systems such as OSX # results in certain dependencies being excluded from the BOM file, such as procfs. # For more info, https://github.com/etcd-io/etcd/issues/19665 - output=$(GOOS=linux GOFLAGS=-mod=mod run_go_tool github.com/appscodelabs/license-bill-of-materials \ + output=$(GOOS=linux run_go_tool github.com/appscodelabs/license-bill-of-materials \ --override-file ./bill-of-materials.override.json \ "${modules[@]}") code="$?" diff --git a/scripts/updatebom.sh b/scripts/updatebom.sh index e0d412e81ac0..8338d48dd2e3 100755 --- a/scripts/updatebom.sh +++ b/scripts/updatebom.sh @@ -30,7 +30,7 @@ function bom_fixlet { # BOM file should be generated for linux. Otherwise running this command on other operating systems such as OSX # results in certain dependencies being excluded from the BOM file, such as procfs. # For more info, https://github.com/etcd-io/etcd/issues/19665 - if GOOS=linux GOFLAGS=-mod=mod run_go_tool "github.com/appscodelabs/license-bill-of-materials" \ + if GOOS=linux run_go_tool "github.com/appscodelabs/license-bill-of-materials" \ --override-file ./bill-of-materials.override.json \ "${modules[@]}" > ./bill-of-materials.json.tmp; then cp ./bill-of-materials.json.tmp ./bill-of-materials.json From 623b9c964d7b67eabde6951fd91c2e9784830af3 Mon Sep 17 00:00:00 2001 From: James Blair Date: Sat, 4 Oct 2025 12:50:12 +1300 Subject: [PATCH 0571/1068] Ensure new maintainers receive list and service desk permissions. Signed-off-by: James Blair --- .../contributor-guide/community-membership.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Documentation/contributor-guide/community-membership.md b/Documentation/contributor-guide/community-membership.md index 388db9e38a54..a61832664f78 100644 --- a/Documentation/contributor-guide/community-membership.md +++ b/Documentation/contributor-guide/community-membership.md @@ -120,10 +120,10 @@ depend on to make decisions in the best interest of the project in a consistent - Existing maintainers vote will privately and respond to the email with either acceptance or feedback for suggested improvement. - With your membership approved you are expected to: - Open a PR and add an entry to the [OWNERS] file - - Subscribe to and - - Request to join [etcd-maintainer teams of etcd organization of GitHub](https://github.com/orgs/etcd-io/teams/maintainers-etcd) + - Request to be added to the and mailing lists + - Request to join [etcd-maintainer teams of the etcd-io organization in GitHub](https://github.com/orgs/etcd-io/teams/maintainers-etcd) - Request to join the private slack channel for etcd maintainers on [kubernetes slack](http://slack.kubernetes.io/) - - Request access to etcd-development GCP project where we publish releases + - Request access to `etcd-development` GCP project where we publish releases - Request access to passwords shared between maintainers - Request cncf service desk access by emailing - Raise cncf service desk ticket to be addded to [cncf-etcd-maintainers mailing list](https://lists.cncf.io/g/cncf-etcd-maintainers/directory) @@ -146,8 +146,7 @@ depend on to make decisions in the best interest of the project in a consistent Life priorities, interests, and passions can change. Maintainers can retire and move to [emeritus maintainers]. If a maintainer needs to step down, they should inform other maintainers and, if possible, help find someone to pick up the related -work. At the very least, ensure the related work can be continued. Afterward, -they can remove themselves from the list of existing maintainers. +work. At the very least, ensure the related work can be continued. If a maintainer has not been performing their duties for 12 months, they can be removed by other maintainers. In that case, the inactive maintainer will @@ -157,6 +156,14 @@ so by renewing their contributions. Active maintainers should welcome such a mov Retiring other maintainers or regaining the status should require the approval of at least two active maintainers. +Retiring maintainers must: + +- Open a PR and move to emeritus approvers in the [OWNERS] file +- Open a PR to be removed from the [etcd-maintainer teams of the etcd-io organization in GitHub](https://github.com/orgs/etcd-io/teams/maintainers-etcd) +- Remove their access to `etcd-development` GCP project where we publish releases +- Raise cncf service desk ticket to be removed as a [cncf-etcd-maintainers mailing list](https://lists.cncf.io/g/cncf-etcd-maintainers/directory) admin +- Request to be removed as a member of the [etcd-maintainers](https://groups.google.com/g/etcd-maintainers) and [etcd-maintainers-private](https://groups.google.com/g/etcd-maintainers-private) Google groups + ## Acknowledgements Contributor roles and responsibilities were written based on [Kubernetes community membership] From 766aec089ba53eb81d7386635277e49a5791323d Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 3 Oct 2025 15:03:34 -0700 Subject: [PATCH 0572/1068] Fix running BOM on fresh clones Signed-off-by: Ivan Valdes --- scripts/test.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/test.sh b/scripts/test.sh index 35fdb128751a..2cf68305d40e 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -516,8 +516,13 @@ function bom_pass { run cp go.sum go.sum.tmp || return 2 run cp go.mod go.mod.tmp || return 2 + # Intentionally run the command once first, so it fetches dependencies. The exit code on the first + # run in a just cloned repository is always dirty. + GOOS=linux run_go_tool github.com/appscodelabs/license-bill-of-materials \ + --override-file ./bill-of-materials.override.json "${modules[@]}" + # BOM file should be generated for linux. Otherwise running this command on other operating systems such as OSX - # results in certain dependencies being excluded from the BOM file, such as procfs. + # results in certain dependencies being excluded from the BOM file, such as procfs. # For more info, https://github.com/etcd-io/etcd/issues/19665 output=$(GOOS=linux run_go_tool github.com/appscodelabs/license-bill-of-materials \ --override-file ./bill-of-materials.override.json \ From 8a544b832a6422c739ee4d202d5d5de9c39b4a2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Oct 2025 17:03:25 +0000 Subject: [PATCH 0573/1068] build(deps): bump actions/stale from 10.0.0 to 10.1.0 Bumps [actions/stale](https://github.com/actions/stale) from 10.0.0 to 10.1.0. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/3a9db7e6a41a89f618792c92c0e97cc736e1b13f...5f858e3efba33a5ca4407a664cc011ad407f2008) --- updated-dependencies: - dependency-name: actions/stale dependency-version: 10.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/stale.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index d0f83a312f20..a1cd7165821e 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -13,7 +13,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f #v10.0.0 + - uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 #v10.1.0 with: days-until-stale: 90 days-until-close: 21 From a74c0a575affa2600cdb22c9e9a2e7fa36d976f0 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Sat, 4 Oct 2025 16:30:40 +0100 Subject: [PATCH 0574/1068] Add client/pkg/.gomodguard.yaml and prevent pkg, api and client/v3 from depending on server/v3 Signed-off-by: Benjamin Wang --- api/.gomodguard.yaml | 2 ++ client/pkg/.gomodguard.yaml | 15 +++++++++++++++ client/v3/.gomodguard.yaml | 2 ++ pkg/.gomodguard.yaml | 2 ++ 4 files changed, 21 insertions(+) create mode 100644 client/pkg/.gomodguard.yaml diff --git a/api/.gomodguard.yaml b/api/.gomodguard.yaml index e8ec3066834a..83a99c219c1f 100644 --- a/api/.gomodguard.yaml +++ b/api/.gomodguard.yaml @@ -7,6 +7,8 @@ blocked: reason: "Forbidden dependency" - go.etcd.io/etcd/pkg/v3: reason: "Forbidden dependency" + - go.etcd.io/etcd/server/v3: + reason: "Forbidden dependency" - go.etcd.io/etcd/tests/v3: reason: "Forbidden dependency" - go.etcd.io/etcd/v3: diff --git a/client/pkg/.gomodguard.yaml b/client/pkg/.gomodguard.yaml new file mode 100644 index 000000000000..83a99c219c1f --- /dev/null +++ b/client/pkg/.gomodguard.yaml @@ -0,0 +1,15 @@ +--- +blocked: + modules: + - go.etcd.io/etcd: + reason: "Forbidden dependency" + - go.etcd.io/etcd/api/v3: + reason: "Forbidden dependency" + - go.etcd.io/etcd/pkg/v3: + reason: "Forbidden dependency" + - go.etcd.io/etcd/server/v3: + reason: "Forbidden dependency" + - go.etcd.io/etcd/tests/v3: + reason: "Forbidden dependency" + - go.etcd.io/etcd/v3: + reason: "Forbidden dependency" diff --git a/client/v3/.gomodguard.yaml b/client/v3/.gomodguard.yaml index 06361930e7c1..138dedc4f724 100644 --- a/client/v3/.gomodguard.yaml +++ b/client/v3/.gomodguard.yaml @@ -5,6 +5,8 @@ blocked: reason: "Forbidden dependency" - go.etcd.io/etcd/pkg/v3: reason: "Forbidden dependency" + - go.etcd.io/etcd/server/v3: + reason: "Forbidden dependency" - go.etcd.io/etcd/tests/v3: reason: "Forbidden dependency" - go.etcd.io/etcd/v3: diff --git a/pkg/.gomodguard.yaml b/pkg/.gomodguard.yaml index a641b7086fe9..0f60ed482358 100644 --- a/pkg/.gomodguard.yaml +++ b/pkg/.gomodguard.yaml @@ -5,6 +5,8 @@ blocked: reason: "Forbidden dependency" - go.etcd.io/etcd/api/v3: reason: "Forbidden dependency" + - go.etcd.io/etcd/server/v3: + reason: "Forbidden dependency" - go.etcd.io/etcd/tests/v3: reason: "Forbidden dependency" - go.etcd.io/etcd/v3: From 1ad41e28d2bca6f7cf2b9c3305596ef4a4e35754 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Oct 2025 17:03:22 +0000 Subject: [PATCH 0575/1068] build(deps): bump github/codeql-action from 3.30.5 to 3.30.6 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.5 to 3.30.6. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/3599b3baa15b485a2e49ef411a7a4bb2452e7f93...64d10c13136e1c5bce3e5fbde8d4906eeaafc885) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.30.6 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index a60768342091..096b4be0fa24 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 + uses: github/codeql-action/init@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 + uses: github/codeql-action/autobuild@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 + uses: github/codeql-action/analyze@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index f969db27ff1a..d9743a564be7 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 + uses: github/codeql-action/upload-sarif@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 with: sarif_file: results.sarif From 812cefe4214e9663d7ab3efb2fac22654e3988f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Oct 2025 17:03:09 +0000 Subject: [PATCH 0576/1068] build(deps): bump ossf/scorecard-action from 2.4.2 to 2.4.3 Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.2 to 2.4.3. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/05b42c624433fc40578a4040d5cf5e36ddca8cde...4eaacf0543bb3f2c246792bd56e8cdeffafb205a) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-version: 2.4.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index f969db27ff1a..48a697d20558 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -28,7 +28,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2 + uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3 with: results_file: results.sarif results_format: sarif From c9f0623982b8b68d71510b919838d795487717b9 Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 7 Oct 2025 23:11:03 +0800 Subject: [PATCH 0577/1068] dependency: bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.27.2 to 2.27.3 Signed-off-by: joshjms --- api/go.mod | 8 +- api/go.sum | 16 +- cache/go.mod | 8 +- cache/go.sum | 16 +- client/v3/go.mod | 8 +- client/v3/go.sum | 16 +- etcdctl/go.mod | 8 +- etcdctl/go.sum | 16 +- etcdutl/go.mod | 8 +- etcdutl/go.sum | 16 +- go.mod | 8 +- go.sum | 16 +- go.work.sum | 1773 ++++++++++++++++++++++++++++++++ pkg/go.mod | 4 +- pkg/go.sum | 8 +- server/go.mod | 8 +- server/go.sum | 16 +- tests/go.mod | 8 +- tests/go.sum | 16 +- tools/mod/go.mod | 8 +- tools/mod/go.sum | 16 +- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 +- 23 files changed, 1890 insertions(+), 117 deletions(-) diff --git a/api/go.mod b/api/go.mod index 78987acbc455..3ca5db8885cc 100644 --- a/api/go.mod +++ b/api/go.mod @@ -8,11 +8,11 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/stretchr/testify v1.11.1 - google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 + google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 google.golang.org/grpc v1.75.1 - google.golang.org/protobuf v1.36.9 + google.golang.org/protobuf v1.36.10 ) require ( @@ -23,6 +23,6 @@ require ( golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 2f0aef2bdc0c..f354a0f288c5 100644 --- a/api/go.sum +++ b/api/go.sum @@ -15,8 +15,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -76,14 +76,14 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/cache/go.mod b/cache/go.mod index 11dba8037697..0496c9966fb3 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -18,7 +18,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect @@ -26,10 +26,10 @@ require ( golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/grpc v1.75.1 // indirect - google.golang.org/protobuf v1.36.9 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index 0e9170dcbb20..6f53e8ece35d 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -26,8 +26,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -105,14 +105,14 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index 33a2a0de822d..c17ab64ddc51 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -25,7 +25,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect @@ -36,9 +36,9 @@ require ( golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/protobuf v1.36.9 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index c9ae7569eef6..9f411aeff446 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -26,8 +26,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= @@ -111,14 +111,14 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index e48f00e18843..74b996dac58b 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -29,7 +29,7 @@ require ( github.com/fatih/color v1.18.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -42,9 +42,9 @@ require ( golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/protobuf v1.36.9 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index aa3be394d76e..1db7edd1c66c 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -35,8 +35,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -140,14 +140,14 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index e7c70831b857..d502e9108e8e 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -46,7 +46,7 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -82,10 +82,10 @@ require ( golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect golang.org/x/time v0.13.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/grpc v1.75.1 // indirect - google.golang.org/protobuf v1.36.9 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 4737925380c7..4ccfb6d8ce44 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -42,8 +42,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -184,14 +184,14 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/go.mod b/go.mod index 89cb79dcead8..3e301a25e457 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/time v0.13.0 google.golang.org/grpc v1.75.1 - google.golang.org/protobuf v1.36.9 + google.golang.org/protobuf v1.36.10 ) require ( @@ -60,7 +60,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -97,8 +97,8 @@ require ( golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/go.sum b/go.sum index 283c8f2ee3ab..fd1550e5cbd7 100644 --- a/go.sum +++ b/go.sum @@ -70,8 +70,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -248,10 +248,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -259,8 +259,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/go.work.sum b/go.work.sum index 450cbe8fb47e..d0c07afd496f 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,6 +1,7 @@ bitbucket.org/creachadair/shell v0.0.8 h1:3yM6JcAfaGWzjzcCamTblzSIWXm/YSs0PFGIzBm2HTo= bitbucket.org/creachadair/shell v0.0.8/go.mod h1:vINzudofoUXZSJ5tREgpy+Etyjsag3ait5WOWImEVZ0= bitbucket.org/creachadair/stringset v0.0.11 h1:6Sv4CCv14Wm+OipW4f3tWOb0SQVpBDLW0knnJqUnmZ8= +bitbucket.org/creachadair/stringset v0.0.11/go.mod h1:wh0BHewFe+j0HrzWz7KcGbSNpFzWwnpmgPRlB57U5jU= bitbucket.org/liamstask/goose v0.0.0-20150115234039-8488cc47d90c h1:bkb2NMGo3/Du52wvYj9Whth5KZfMV6d3O0Vbr3nz/UE= bitbucket.org/liamstask/goose v0.0.0-20150115234039-8488cc47d90c/go.mod h1:hSVuE3qU7grINVSwrmzHfpg9k87ALBk+XaualNyUzI4= buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20230802163732-1c33ebd9ecfa.1 h1:tdpHgTbmbvEIARu+bixzmleMi14+3imnpoFXz+Qzjp4= @@ -9,6 +10,47 @@ cel.dev/expr v0.15.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg= cel.dev/expr v0.20.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= +cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= +cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.6/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= cloud.google.com/go v0.118.2/go.mod h1:CFO4UPEPi8oV21xoezZCrd3d81K4fFkDTEJu4R8K+9M= cloud.google.com/go v0.118.3/go.mod h1:Lhs3YLnBlwJ4KA6nuObNMZ/fCbOQBPuWKPoE0Wa/9Vc= @@ -16,53 +58,129 @@ cloud.google.com/go v0.120.0/go.mod h1:/beW32s8/pGRuj4IILWQNd4uuebeT4dkOhKmkfit6 cloud.google.com/go v0.121.0/go.mod h1:rS7Kytwheu/y9buoDmu5EIpMMCI4Mb8ND4aeN4Vwj7Q= cloud.google.com/go v0.121.2 h1:v2qQpN6Dx9x2NmwrqlesOt3Ys4ol5/lFZ6Mg1B7OJCg= cloud.google.com/go v0.121.2/go.mod h1:nRFlrHq39MNVWu+zESP2PosMWA0ryJw8KUBZ2iZpxbw= +cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= +cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= +cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= +cloud.google.com/go/accessapproval v1.7.1/go.mod h1:JYczztsHRMK7NTXb6Xw+dwbs/WnOJxbo/2mTI+Kgg68= cloud.google.com/go/accessapproval v1.7.4/go.mod h1:/aTEh45LzplQgFYdQdwPMR9YdX0UlhBmvB84uAmQKUc= cloud.google.com/go/accessapproval v1.8.3/go.mod h1:3speETyAv63TDrDmo5lIkpVueFkQcQchkiw/TAMbBo4= cloud.google.com/go/accessapproval v1.8.6 h1:UkmDPCKvj24bkGVrvgJPcgSDkmIPw/bAmOiDb9avOiE= cloud.google.com/go/accessapproval v1.8.6/go.mod h1:FfmTs7Emex5UvfnnpMkhuNkRCP85URnBFt5ClLxhZaQ= +cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= +cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= +cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= +cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= +cloud.google.com/go/accesscontextmanager v1.8.0/go.mod h1:uI+AI/r1oyWK99NN8cQ3UK76AMelMzgZCvJfsi2c+ps= +cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= cloud.google.com/go/accesscontextmanager v1.8.4/go.mod h1:ParU+WbMpD34s5JFEnGAnPBYAgUHozaTmDJU7aCU9+M= cloud.google.com/go/accesscontextmanager v1.9.3/go.mod h1:S1MEQV5YjkAKBoMekpGrkXKfrBdsi4x6Dybfq6gZ8BU= cloud.google.com/go/accesscontextmanager v1.9.6 h1:2LnncRqfYB8NEdh9+FeYxAt9POTW/0zVboktnRlO11w= cloud.google.com/go/accesscontextmanager v1.9.6/go.mod h1:884XHwy1AQpCX5Cj2VqYse77gfLaq9f8emE2bYriilk= cloud.google.com/go/ai v0.12.1 h1:m1n/VjUuHS+pEO/2R4/VbuuEIkgk0w67fDQvFaMngM0= cloud.google.com/go/ai v0.12.1/go.mod h1:5vIPNe1ZQsVZqCliXIPL4QnhObQQY4d9hAGHdVc4iw4= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= +cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= +cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= +cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= +cloud.google.com/go/aiplatform v1.45.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= +cloud.google.com/go/aiplatform v1.48.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= cloud.google.com/go/aiplatform v1.58.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= cloud.google.com/go/aiplatform v1.74.0/go.mod h1:hVEw30CetNut5FrblYd1AJUWRVSIjoyIvp0EVUh51HA= cloud.google.com/go/aiplatform v1.89.0 h1:niSJYc6ldWWVM9faXPo1Et1MVSQoLvVGriD7fwbJdtE= cloud.google.com/go/aiplatform v1.89.0/go.mod h1:TzZtegPkinfXTtXVvZZpxx7noINFMVDrLkE7cEWhYEk= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= +cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= +cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= +cloud.google.com/go/analytics v0.21.2/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= +cloud.google.com/go/analytics v0.21.3/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= cloud.google.com/go/analytics v0.22.0/go.mod h1:eiROFQKosh4hMaNhF85Oc9WO97Cpa7RggD40e/RBy8w= cloud.google.com/go/analytics v0.26.0/go.mod h1:KZWJfs8uX/+lTjdIjvT58SFa86V9KM6aPXwZKK6uNVI= cloud.google.com/go/analytics v0.28.1 h1:W2ft49J/LeEj9A07Jsd5Q2kAzajK0j0IffOyyzbxw04= cloud.google.com/go/analytics v0.28.1/go.mod h1:iPaIVr5iXPB3JzkKPW1JddswksACRFl3NSHgVHsuYC4= +cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= +cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= +cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= +cloud.google.com/go/apigateway v1.6.1/go.mod h1:ufAS3wpbRjqfZrzpvLC2oh0MFlpRJm2E/ts25yyqmXA= cloud.google.com/go/apigateway v1.6.4/go.mod h1:0EpJlVGH5HwAN4VF4Iec8TAzGN1aQgbxAWGJsnPCGGY= cloud.google.com/go/apigateway v1.7.3/go.mod h1:uK0iRHdl2rdTe79bHW/bTsKhhXPcFihjUdb7RzhTPf4= cloud.google.com/go/apigateway v1.7.6 h1:do+u3rjDYuTxD2ypRfv4uwTMoy/VHFLclvaYcb5Mv6I= cloud.google.com/go/apigateway v1.7.6/go.mod h1:SiBx36VPjShaOCk8Emf63M2t2c1yF+I7mYZaId7OHiA= +cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= +cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= +cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= +cloud.google.com/go/apigeeconnect v1.6.1/go.mod h1:C4awq7x0JpLtrlQCr8AzVIzAaYgngRqWf9S5Uhg+wWs= cloud.google.com/go/apigeeconnect v1.6.4/go.mod h1:CapQCWZ8TCjnU0d7PobxhpOdVz/OVJ2Hr/Zcuu1xFx0= cloud.google.com/go/apigeeconnect v1.7.3/go.mod h1:2ZkT5VCAqhYrDqf4dz7lGp4N/+LeNBSfou8Qs5bIuSg= cloud.google.com/go/apigeeconnect v1.7.6 h1:ijEJSni5xROOn1YyiHgqcW0B0TWr0di9VgIi2gvyNjY= cloud.google.com/go/apigeeconnect v1.7.6/go.mod h1:zqDhHY99YSn2li6OeEjFpAlhXYnXKl6DFb/fGu0ye2w= +cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= +cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= +cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= +cloud.google.com/go/apigeeregistry v0.7.1/go.mod h1:1XgyjZye4Mqtw7T9TsY4NW10U7BojBvG4RMD+vRDrIw= cloud.google.com/go/apigeeregistry v0.8.2/go.mod h1:h4v11TDGdeXJDJvImtgK2AFVvMIgGWjSb0HRnBSjcX8= cloud.google.com/go/apigeeregistry v0.9.3/go.mod h1:oNCP2VjOeI6U8yuOuTmU4pkffdcXzR5KxeUD71gF+Dg= cloud.google.com/go/apigeeregistry v0.9.6 h1:TgdjAoGoRY81DEc2LYsYvi/OqCFImMzAk/TVKiSRsQw= cloud.google.com/go/apigeeregistry v0.9.6/go.mod h1:AFEepJBKPtGDfgabG2HWaLH453VVWWFFs3P4W00jbPs= +cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= +cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= cloud.google.com/go/apikeys v0.6.0 h1:B9CdHFZTFjVti89tmyXXrO+7vSNo2jvZuHG8zD5trdQ= +cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= +cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= +cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= +cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= +cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= +cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= +cloud.google.com/go/appengine v1.8.1/go.mod h1:6NJXGLVhZCN9aQ/AEDvmfzKEfoYBlfB80/BHiKVputY= cloud.google.com/go/appengine v1.8.4/go.mod h1:TZ24v+wXBujtkK77CXCpjZbnuTvsFNT41MUaZ28D6vg= cloud.google.com/go/appengine v1.9.3/go.mod h1:DtLsE/z3JufM/pCEIyVYebJ0h9UNPpN64GZQrYgOSyM= cloud.google.com/go/appengine v1.9.6 h1:JJyY8icMmQeWfQ+d36IhkGvd3Guzvw0UAkvxT0wmUx8= cloud.google.com/go/appengine v1.9.6/go.mod h1:jPp9T7Opvzl97qytaRGPwoH7pFI3GAcLDaui1K8PNjY= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= +cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= +cloud.google.com/go/area120 v0.8.1/go.mod h1:BVfZpGpB7KFVNxPiQBuHkX6Ed0rS51xIgmGyjrAfzsg= cloud.google.com/go/area120 v0.8.4/go.mod h1:jfawXjxf29wyBXr48+W+GyX/f8fflxp642D/bb9v68M= cloud.google.com/go/area120 v0.9.3/go.mod h1:F3vxS/+hqzrjJo55Xvda3Jznjjbd+4Foo43SN5eMd8M= cloud.google.com/go/area120 v0.9.6 h1:iJrZ6AleZr4l+q0/fWVANFOhs90KiSB1Ccait5OYyNg= cloud.google.com/go/area120 v0.9.6/go.mod h1:qKSokqe0iTmwBDA3tbLWonMEnh0pMAH4YxiceiHUed4= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= +cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= +cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= +cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= +cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= +cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= +cloud.google.com/go/artifactregistry v1.14.1/go.mod h1:nxVdG19jTaSTu7yA7+VbWL346r3rIdkZ142BSQqhn5E= cloud.google.com/go/artifactregistry v1.14.6/go.mod h1:np9LSFotNWHcjnOgh8UVK0RFPCTUGbO0ve3384xyHfE= cloud.google.com/go/artifactregistry v1.16.1/go.mod h1:sPvFPZhfMavpiongKwfg93EOwJ18Tnj9DIwTU9xWUgs= cloud.google.com/go/artifactregistry v1.17.1 h1:A20kj2S2HO9vlyBVyVFHPxArjxkXvLP5LjcdE7NhaPc= cloud.google.com/go/artifactregistry v1.17.1/go.mod h1:06gLv5QwQPWtaudI2fWO37gfwwRUHwxm3gA8Fe568Hc= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= +cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= +cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= +cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= +cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= +cloud.google.com/go/asset v1.14.1/go.mod h1:4bEJ3dnHCqWCDbWJ/6Vn7GVI9LerSi7Rfdi03hd+WTQ= cloud.google.com/go/asset v1.17.0/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= cloud.google.com/go/asset v1.20.4/go.mod h1:DP09pZ+SoFWUZyPZx26xVroHk+6+9umnQv+01yfJxbM= cloud.google.com/go/asset v1.21.1 h1:i55wWC/EwVdHMyJgRfbLp/L6ez4nQuOpZwSxkuqN9ek= cloud.google.com/go/asset v1.21.1/go.mod h1:7AzY1GCC+s1O73yzLM1IpHFLHz3ws2OigmCpOQHwebk= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= +cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= +cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= +cloud.google.com/go/assuredworkloads v1.11.1/go.mod h1:+F04I52Pgn5nmPG36CWFtxmav6+7Q+c5QyJoL18Lry0= cloud.google.com/go/assuredworkloads v1.11.4/go.mod h1:4pwwGNwy1RP0m+y12ef3Q/8PaiWrIDQ6nD2E8kvWI9U= cloud.google.com/go/assuredworkloads v1.12.3/go.mod h1:iGBkyMGdtlsxhCi4Ys5SeuvIrPTeI6HeuEJt7qJgJT8= cloud.google.com/go/assuredworkloads v1.12.6 h1:ip/shfJYx6lrHBWYADjrrrubcm7uZzy50TTF5tPG7ek= @@ -75,22 +193,57 @@ cloud.google.com/go/auth v0.16.3/go.mod h1:NucRGjaXfzP1ltpcQ7On/VTZ0H4kWB5Jy+Y9D cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= +cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= +cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= +cloud.google.com/go/automl v1.13.1/go.mod h1:1aowgAHWYZU27MybSCFiukPO7xnyawv7pt3zK4bheQE= cloud.google.com/go/automl v1.13.4/go.mod h1:ULqwX/OLZ4hBVfKQaMtxMSTlPx0GqGbWN8uA/1EqCP8= cloud.google.com/go/automl v1.14.4/go.mod h1:sVfsJ+g46y7QiQXpVs9nZ/h8ntdujHm5xhjHW32b3n4= cloud.google.com/go/automl v1.14.7 h1:ZLj48Ur2Qcso4M3bgOtjsOmeV5Ee92N14wuOc8OW+L0= cloud.google.com/go/automl v1.14.7/go.mod h1:8a4XbIH5pdvrReOU72oB+H3pOw2JBxo9XTk39oljObE= +cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= +cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= +cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= +cloud.google.com/go/baremetalsolution v1.1.1/go.mod h1:D1AV6xwOksJMV4OSlWHtWuFNZZYujJknMAP4Qa27QIA= cloud.google.com/go/baremetalsolution v1.2.3/go.mod h1:/UAQ5xG3faDdy180rCUv47e0jvpp3BFxT+Cl0PFjw5g= cloud.google.com/go/baremetalsolution v1.3.3/go.mod h1:uF9g08RfmXTF6ZKbXxixy5cGMGFcG6137Z99XjxLOUI= cloud.google.com/go/baremetalsolution v1.3.6 h1:9bdGlpY1LgLONQjFsDwrkjLzdPTlROpfU+GhA97YpOk= cloud.google.com/go/baremetalsolution v1.3.6/go.mod h1:7/CS0LzpLccRGO0HL3q2Rofxas2JwjREKut414sE9iM= +cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= +cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= +cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= +cloud.google.com/go/batch v1.3.1/go.mod h1:VguXeQKXIYaeeIYbuozUmBR13AfL4SJP7IltNPS+A4A= cloud.google.com/go/batch v1.7.0/go.mod h1:J64gD4vsNSA2O5TtDB5AAux3nJ9iV8U3ilg3JDBYejU= cloud.google.com/go/batch v1.12.0/go.mod h1:CATSBh/JglNv+tEU/x21Z47zNatLQ/gpGnpyKOzbbcM= cloud.google.com/go/batch v1.12.2 h1:gWQdvdPplptpvrkqF6ibtxZkOsYKLTFbxYawHa/TvCg= cloud.google.com/go/batch v1.12.2/go.mod h1:tbnuTN/Iw59/n1yjAYKV2aZUjvMM2VJqAgvUgft6UEU= +cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= +cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= +cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= +cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= +cloud.google.com/go/beyondcorp v0.6.1/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= +cloud.google.com/go/beyondcorp v1.0.0/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= cloud.google.com/go/beyondcorp v1.0.3/go.mod h1:HcBvnEd7eYr+HGDd5ZbuVmBYX019C6CEXBonXbCVwJo= cloud.google.com/go/beyondcorp v1.1.3/go.mod h1:3SlVKnlczNTSQFuH5SSyLuRd4KaBSc8FH/911TuF/Cc= cloud.google.com/go/beyondcorp v1.1.6 h1:4FcR+4QmcNGkhVij6TrYS4AQVNLBo7PBXKxNrKzpclQ= cloud.google.com/go/beyondcorp v1.1.6/go.mod h1:V1PigSWPGh5L/vRRmyutfnjAbkxLI2aWqJDdxKbwvsQ= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= +cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= +cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= +cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= +cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= +cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= +cloud.google.com/go/bigquery v1.52.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= +cloud.google.com/go/bigquery v1.53.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= cloud.google.com/go/bigquery v1.58.0/go.mod h1:0eh4mWNY0KrBTjUzLjoYImapGORq9gEPT7MWjCy9lik= cloud.google.com/go/bigquery v1.66.2/go.mod h1:+Yd6dRyW8D/FYEjUGodIbu0QaoEmgav7Lwhotup6njo= cloud.google.com/go/bigquery v1.69.0 h1:rZvHnjSUs5sHK3F9awiuFk2PeOaB8suqNuim21GbaTc= @@ -98,403 +251,1003 @@ cloud.google.com/go/bigquery v1.69.0/go.mod h1:TdGLquA3h/mGg+McX+GsqG9afAzTAcldM cloud.google.com/go/bigtable v1.35.0/go.mod h1:EabtwwmTcOJFXp+oMZAT/jZkyDIjNwrv53TrS4DGrrM= cloud.google.com/go/bigtable v1.37.0 h1:Q+x7y04lQ0B+WXp03wc1/FLhFt4CwcQdkwWT0M4Jp3w= cloud.google.com/go/bigtable v1.37.0/go.mod h1:HXqddP6hduwzrtiTCqZPpj9ij4hGZb4Zy1WF/dT+yaU= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= +cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= +cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= +cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= +cloud.google.com/go/billing v1.16.0/go.mod h1:y8vx09JSSJG02k5QxbycNRrN7FGZB6F3CAcgum7jvGA= cloud.google.com/go/billing v1.18.0/go.mod h1:5DOYQStCxquGprqfuid/7haD7th74kyMBHkjO/OvDtk= cloud.google.com/go/billing v1.20.1/go.mod h1:DhT80hUZ9gz5UqaxtK/LNoDELfxH73704VTce+JZqrY= cloud.google.com/go/billing v1.20.4 h1:pqM5/c9UGydB9H90IPCxSvfCNLUPazAOSMsZkz5q5P4= cloud.google.com/go/billing v1.20.4/go.mod h1:hBm7iUmGKGCnBm6Wp439YgEdt+OnefEq/Ib9SlJYxIU= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= +cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= +cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= +cloud.google.com/go/binaryauthorization v1.6.1/go.mod h1:TKt4pa8xhowwffiBmbrbcxijJRZED4zrqnwZ1lKH51U= cloud.google.com/go/binaryauthorization v1.8.0/go.mod h1:VQ/nUGRKhrStlGr+8GMS8f6/vznYLkdK5vaKfdCIpvU= cloud.google.com/go/binaryauthorization v1.9.3/go.mod h1:f3xcb/7vWklDoF+q2EaAIS+/A/e1278IgiYxonRX+Jk= cloud.google.com/go/binaryauthorization v1.9.5 h1:T0zYEroXT+y0O/x/yZd5SwQdFv4UbUINjvJyJKzDm0Q= cloud.google.com/go/binaryauthorization v1.9.5/go.mod h1:CV5GkS2eiY461Bzv+OH3r5/AsuB6zny+MruRju3ccB8= +cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= +cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= +cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= +cloud.google.com/go/certificatemanager v1.7.1/go.mod h1:iW8J3nG6SaRYImIa+wXQ0g8IgoofDFRp5UMzaNk1UqI= cloud.google.com/go/certificatemanager v1.7.4/go.mod h1:FHAylPe/6IIKuaRmHbjbdLhGhVQ+CWHSD5Jq0k4+cCE= cloud.google.com/go/certificatemanager v1.9.3/go.mod h1:O5T4Lg/dHbDHLFFooV2Mh/VsT3Mj2CzPEWRo4qw5prc= cloud.google.com/go/certificatemanager v1.9.5 h1:+ZPglfDurCcsv4azizDFpBucD1IkRjWjbnU7zceyjfY= cloud.google.com/go/certificatemanager v1.9.5/go.mod h1:kn7gxT/80oVGhjL8rurMUYD36AOimgtzSBPadtAeffs= +cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= +cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= +cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= +cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= +cloud.google.com/go/channel v1.16.0/go.mod h1:eN/q1PFSl5gyu0dYdmxNXscY/4Fi7ABmeHCJNf/oHmc= cloud.google.com/go/channel v1.17.4/go.mod h1:QcEBuZLGGrUMm7kNj9IbU1ZfmJq2apotsV83hbxX7eE= cloud.google.com/go/channel v1.19.2/go.mod h1:syX5opXGXFt17DHCyCdbdlM464Tx0gHMi46UlEWY9Gg= cloud.google.com/go/channel v1.19.5 h1:UI+ZsRkS15hi9DRF+WAvTVLVuSeZiRmvCU8cjkjOwUU= cloud.google.com/go/channel v1.19.5/go.mod h1:vevu+LK8Oy1Yuf7lcpDbkQQQm5I7oiY5fFTn3uwfQLY= +cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= +cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= +cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= +cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= +cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= +cloud.google.com/go/cloudbuild v1.10.1/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= +cloud.google.com/go/cloudbuild v1.13.0/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= cloud.google.com/go/cloudbuild v1.15.0/go.mod h1:eIXYWmRt3UtggLnFGx4JvXcMj4kShhVzGndL1LwleEM= cloud.google.com/go/cloudbuild v1.22.0/go.mod h1:p99MbQrzcENHb/MqU3R6rpqFRk/X+lNG3PdZEIhM95Y= cloud.google.com/go/cloudbuild v1.22.2 h1:4LlrIFa3IFLgD1mGEXmUE4cm9fYoU71OLwTvjM7Dg3c= cloud.google.com/go/cloudbuild v1.22.2/go.mod h1:rPyXfINSgMqMZvuTk1DbZcbKYtvbYF/i9IXQ7eeEMIM= +cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= +cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= +cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= +cloud.google.com/go/clouddms v1.6.1/go.mod h1:Ygo1vL52Ov4TBZQquhz5fiw2CQ58gvu+PlS6PVXCpZI= cloud.google.com/go/clouddms v1.7.3/go.mod h1:fkN2HQQNUYInAU3NQ3vRLkV2iWs8lIdmBKOx4nrL6Hc= cloud.google.com/go/clouddms v1.8.4/go.mod h1:RadeJ3KozRwy4K/gAs7W74ZU3GmGgVq5K8sRqNs3HfA= cloud.google.com/go/clouddms v1.8.7 h1:IWJbQBEECTaNanDRN1XdR7FU53MJ1nylTl3s9T3MuyI= cloud.google.com/go/clouddms v1.8.7/go.mod h1:DhWLd3nzHP8GoHkA6hOhso0R9Iou+IGggNqlVaq/KZ4= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= +cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= +cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= +cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= +cloud.google.com/go/cloudtasks v1.11.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= +cloud.google.com/go/cloudtasks v1.12.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= cloud.google.com/go/cloudtasks v1.12.4/go.mod h1:BEPu0Gtt2dU6FxZHNqqNdGqIG86qyWKBPGnsb7udGY0= cloud.google.com/go/cloudtasks v1.13.3/go.mod h1:f9XRvmuFTm3VhIKzkzLCPyINSU3rjjvFUsFVGR5wi24= cloud.google.com/go/cloudtasks v1.13.6 h1:Fwan19UiNoFD+3KY0MnNHE5DyixOxNzS1mZ4ChOdpy0= cloud.google.com/go/cloudtasks v1.13.6/go.mod h1:/IDaQqGKMixD+ayM43CfsvWF2k36GeomEuy9gL4gLmU= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= +cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= +cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= +cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= +cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= +cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute v1.23.4/go.mod h1:/EJMj55asU6kAFnuZET8zqgwgJ9FvXWXOkkfQZa4ioI= cloud.google.com/go/compute v1.34.0/go.mod h1:zWZwtLwZQyonEvIQBuIa0WvraMYK69J5eDCOw9VZU4g= cloud.google.com/go/compute v1.38.0 h1:MilCLYQW2m7Dku8hRIIKo4r0oKastlD74sSu16riYKs= cloud.google.com/go/compute v1.38.0/go.mod h1:oAFNIuXOmXbK/ssXm3z4nZB8ckPdjltJ7xhHCdbWFZM= +cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= +cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= +cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= +cloud.google.com/go/contactcenterinsights v1.9.1/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= +cloud.google.com/go/contactcenterinsights v1.10.0/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= cloud.google.com/go/contactcenterinsights v1.12.1/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= cloud.google.com/go/contactcenterinsights v1.17.1/go.mod h1:n8OiNv7buLA2AkGVkfuvtW3HU13AdTmEwAlAu46bfxY= cloud.google.com/go/contactcenterinsights v1.17.3 h1:lenyU3uzHwKDveCwmpfNxHYvLS3uEBWdn+O7+rSxy+Q= cloud.google.com/go/contactcenterinsights v1.17.3/go.mod h1:7Uu2CpxS3f6XxhRdlEzYAkrChpR5P5QfcdGAFEdHOG8= +cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= +cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= +cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= +cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= +cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= +cloud.google.com/go/container v1.22.1/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= +cloud.google.com/go/container v1.24.0/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= cloud.google.com/go/container v1.29.0/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= cloud.google.com/go/container v1.42.2/go.mod h1:y71YW7uR5Ck+9Vsbst0AF2F3UMgqmsN4SP8JR9xEsR8= cloud.google.com/go/container v1.43.0 h1:A6J92FJPfxTvyX7MHF+w4t2W9WCqvHOi9UB5SAeSy3w= cloud.google.com/go/container v1.43.0/go.mod h1:ETU9WZ1KM9ikEKLzrhRVao7KHtalDQu6aPqM34zDr/U= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= +cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= +cloud.google.com/go/containeranalysis v0.10.1/go.mod h1:Ya2jiILITMY68ZLPaogjmOMNkwsDrWBSTyBubGXO7j0= cloud.google.com/go/containeranalysis v0.11.3/go.mod h1:kMeST7yWFQMGjiG9K7Eov+fPNQcGhb8mXj/UcTiWw9U= cloud.google.com/go/containeranalysis v0.13.3/go.mod h1:0SYnagA1Ivb7qPqKNYPkCtphhkJn3IzgaSp3mj+9XAY= cloud.google.com/go/containeranalysis v0.14.1 h1:1SoHlNqL3XrhqcoozB+3eoHif2sRUFtp/JeASQTtGKo= cloud.google.com/go/containeranalysis v0.14.1/go.mod h1:28e+tlZgauWGHmEbnI5UfIsjMmrkoR1tFN0K2i71jBI= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= +cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= +cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= +cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= +cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= +cloud.google.com/go/datacatalog v1.14.0/go.mod h1:h0PrGtlihoutNMp/uvwhawLQ9+c63Kz65UFqh49Yo+E= +cloud.google.com/go/datacatalog v1.14.1/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= +cloud.google.com/go/datacatalog v1.16.0/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= cloud.google.com/go/datacatalog v1.19.2/go.mod h1:2YbODwmhpLM4lOFe3PuEhHK9EyTzQJ5AXgIy7EDKTEE= cloud.google.com/go/datacatalog v1.24.3/go.mod h1:Z4g33XblDxWGHngDzcpfeOU0b1ERlDPTuQoYG6NkF1s= cloud.google.com/go/datacatalog v1.26.0 h1:eFgygb3DTufTWWUB8ARk+dSuXz+aefNJXTlkWlQcWwE= cloud.google.com/go/datacatalog v1.26.0/go.mod h1:bLN2HLBAwB3kLTFT5ZKLHVPj/weNz6bR0c7nYp0LE14= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= +cloud.google.com/go/dataflow v0.9.1/go.mod h1:Wp7s32QjYuQDWqJPFFlnBKhkAtiFpMTdg00qGbnIHVw= cloud.google.com/go/dataflow v0.9.4/go.mod h1:4G8vAkHYCSzU8b/kmsoR2lWyHJD85oMJPHMtan40K8w= cloud.google.com/go/dataflow v0.10.3/go.mod h1:5EuVGDh5Tg4mDePWXMMGAG6QYAQhLNyzxdNQ0A1FfW4= cloud.google.com/go/dataflow v0.11.0 h1:AdhB4cAkMOC9NtrHJxpKOVvO/VqBLaIyk0tEEhbGjYM= cloud.google.com/go/dataflow v0.11.0/go.mod h1:gNHC9fUjlV9miu0hd4oQaXibIuVYTQvZhMdPievKsPk= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= +cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= +cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= +cloud.google.com/go/dataform v0.8.1/go.mod h1:3BhPSiw8xmppbgzeBbmDvmSWlwouuJkXsXsb8UBih9M= cloud.google.com/go/dataform v0.9.1/go.mod h1:pWTg+zGQ7i16pyn0bS1ruqIE91SdL2FDMvEYu/8oQxs= cloud.google.com/go/dataform v0.10.3/go.mod h1:8SruzxHYCxtvG53gXqDZvZCx12BlsUchuV/JQFtyTCw= cloud.google.com/go/dataform v0.12.0 h1:0eCPTPUC/RZ863aVfXTJLkg0tEpdpn62VD6ywSmmzxM= cloud.google.com/go/dataform v0.12.0/go.mod h1:PuDIEY0lSVuPrZqcFji1fmr5RRvz3DGz4YP/cONc8g4= +cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= +cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= +cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= +cloud.google.com/go/datafusion v1.7.1/go.mod h1:KpoTBbFmoToDExJUso/fcCiguGDk7MEzOWXUsJo0wsI= cloud.google.com/go/datafusion v1.7.4/go.mod h1:BBs78WTOLYkT4GVZIXQCZT3GFpkpDN4aBY4NDX/jVlM= cloud.google.com/go/datafusion v1.8.3/go.mod h1:hyglMzE57KRf0Rf/N2VRPcHCwKfZAAucx+LATY6Jc6Q= cloud.google.com/go/datafusion v1.8.6 h1:GZ6J+CR8CEeWAj8luRCtr8GvImSQRkArIIqGiZOnzBA= cloud.google.com/go/datafusion v1.8.6/go.mod h1:fCyKJF2zUKC+O3hc2F9ja5EUCAbT4zcH692z8HiFZFw= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= +cloud.google.com/go/datalabeling v0.8.1/go.mod h1:XS62LBSVPbYR54GfYQsPXZjTW8UxCK2fkDciSrpRFdY= cloud.google.com/go/datalabeling v0.8.4/go.mod h1:Z1z3E6LHtffBGrNUkKwbwbDxTiXEApLzIgmymj8A3S8= cloud.google.com/go/datalabeling v0.9.3/go.mod h1:3LDFUgOx+EuNUzDyjU7VElO8L+b5LeaZEFA/ZU1O1XU= cloud.google.com/go/datalabeling v0.9.6 h1:VOZ5U+78ttnhNCEID7qdeogqZQzK5N+LPHIQ9Q3YDsc= cloud.google.com/go/datalabeling v0.9.6/go.mod h1:n7o4x0vtPensZOoFwFa4UfZgkSZm8Qs0Pg/T3kQjXSM= +cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= +cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= +cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= +cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= +cloud.google.com/go/dataplex v1.8.1/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= +cloud.google.com/go/dataplex v1.9.0/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= cloud.google.com/go/dataplex v1.14.0/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= cloud.google.com/go/dataplex v1.22.0/go.mod h1:g166QMCGHvwc3qlTG4p34n+lHwu7JFfaNpMfI2uO7b8= cloud.google.com/go/dataplex v1.25.3 h1:Xr0Toh6wyBlmL3H4EPu1YKwxUtkDSzzq+IP0iLc88kk= cloud.google.com/go/dataplex v1.25.3/go.mod h1:wOJXnOg6bem0tyslu4hZBTncfqcPNDpYGKzed3+bd+E= +cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= +cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= cloud.google.com/go/dataproc v1.12.0 h1:W47qHL3W4BPkAIbk4SWmIERwsWBaNnWm0P2sdx3YgGU= +cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= +cloud.google.com/go/dataproc/v2 v2.0.1/go.mod h1:7Ez3KRHdFGcfY7GcevBbvozX+zyWGcwLJvvAMwCaoZ4= cloud.google.com/go/dataproc/v2 v2.3.0/go.mod h1:G5R6GBc9r36SXv/RtZIVfB8SipI+xVn0bX5SxUzVYbY= cloud.google.com/go/dataproc/v2 v2.11.0/go.mod h1:9vgGrn57ra7KBqz+B2KD+ltzEXvnHAUClFgq/ryU99g= cloud.google.com/go/dataproc/v2 v2.11.2 h1:KhC8wdLILpAs17yeTG6Miwg1v0nOP/OXD+9QNg3w6AQ= cloud.google.com/go/dataproc/v2 v2.11.2/go.mod h1:xwukBjtfiO4vMEa1VdqyFLqJmcv7t3lo+PbLDcTEw+g= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= +cloud.google.com/go/dataqna v0.8.1/go.mod h1:zxZM0Bl6liMePWsHA8RMGAfmTG34vJMapbHAxQ5+WA8= cloud.google.com/go/dataqna v0.8.4/go.mod h1:mySRKjKg5Lz784P6sCov3p1QD+RZQONRMRjzGNcFd0c= cloud.google.com/go/dataqna v0.9.3/go.mod h1:PiAfkXxa2LZYxMnOWVYWz3KgY7txdFg9HEMQPb4u1JA= cloud.google.com/go/dataqna v0.9.7 h1:qTRAG/E3T63Xj1orefRlwupfwH9c9ERUAnWSRGp75so= cloud.google.com/go/dataqna v0.9.7/go.mod h1:4ac3r7zm7Wqm8NAc8sDIDM0v7Dz7d1e/1Ka1yMFanUM= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= +cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= +cloud.google.com/go/datastore v1.12.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= +cloud.google.com/go/datastore v1.12.1/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= +cloud.google.com/go/datastore v1.13.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= cloud.google.com/go/datastore v1.15.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= cloud.google.com/go/datastore v1.20.0 h1:NNpXoyEqIJmZFc0ACcwBEaXnmscUpcG4NkKnbCePmiM= cloud.google.com/go/datastore v1.20.0/go.mod h1:uFo3e+aEpRfHgtp5pp0+6M0o147KoPaYNaPAKpfh8Ew= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= +cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= +cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= +cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= +cloud.google.com/go/datastream v1.9.1/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= +cloud.google.com/go/datastream v1.10.0/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= cloud.google.com/go/datastream v1.10.3/go.mod h1:YR0USzgjhqA/Id0Ycu1VvZe8hEWwrkjuXrGbzeDOSEA= cloud.google.com/go/datastream v1.13.0/go.mod h1:GrL2+KC8mV4GjbVG43Syo5yyDXp3EH+t6N2HnZb1GOQ= cloud.google.com/go/datastream v1.14.1 h1:j+y0lUKm9pbDjJn0YcWxPI/hXNGUQ80GE6yrFuJC/JA= cloud.google.com/go/datastream v1.14.1/go.mod h1:JqMKXq/e0OMkEgfYe0nP+lDye5G2IhIlmencWxmesMo= +cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= +cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= +cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= +cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= +cloud.google.com/go/deploy v1.11.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= +cloud.google.com/go/deploy v1.13.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= cloud.google.com/go/deploy v1.17.0/go.mod h1:XBr42U5jIr64t92gcpOXxNrqL2PStQCXHuKK5GRUuYo= cloud.google.com/go/deploy v1.26.2/go.mod h1:XpS3sG/ivkXCfzbzJXY9DXTeCJ5r68gIyeOgVGxGNEs= cloud.google.com/go/deploy v1.27.2 h1:C0VqBhFyQFp6+xgPHZAD7LeRA4XGy5YLzGmPQ2NhlLk= cloud.google.com/go/deploy v1.27.2/go.mod h1:4NHWE7ENry2A4O1i/4iAPfXHnJCZ01xckAKpZQwhg1M= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= +cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= +cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= +cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= +cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= +cloud.google.com/go/dialogflow v1.38.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= +cloud.google.com/go/dialogflow v1.40.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= cloud.google.com/go/dialogflow v1.48.1/go.mod h1:C1sjs2/g9cEwjCltkKeYp3FFpz8BOzNondEaAlCpt+A= cloud.google.com/go/dialogflow v1.66.0/go.mod h1:BPiRTnnXP/tHLot5h/U62Xcp+i6ekRj/bq6uq88p+Lw= cloud.google.com/go/dialogflow v1.68.2 h1:bXpoqPRf37KKxB79PKr20B/TAU/Z5iA0FnB6C5N2jrA= cloud.google.com/go/dialogflow v1.68.2/go.mod h1:E0Ocrhf5/nANZzBju8RX8rONf0PuIvz2fVj3XkbAhiY= +cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= +cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= +cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= +cloud.google.com/go/dlp v1.10.1/go.mod h1:IM8BWz1iJd8njcNcG0+Kyd9OPnqnRNkDV8j42VT5KOI= cloud.google.com/go/dlp v1.11.1/go.mod h1:/PA2EnioBeXTL/0hInwgj0rfsQb3lpE3R8XUJxqUNKI= cloud.google.com/go/dlp v1.21.0/go.mod h1:Y9HOVtPoArpL9sI1O33aN/vK9QRwDERU9PEJJfM8DvE= cloud.google.com/go/dlp v1.23.0 h1:3xWRKylXxhysaQaV+DLev1YcIywFUCc7yJEE6R7ZGDQ= cloud.google.com/go/dlp v1.23.0/go.mod h1:vVT4RlyPMEMcVHexdPT6iMVac3seq3l6b8UPdYpgFrg= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= +cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= +cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= +cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= +cloud.google.com/go/documentai v1.20.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= +cloud.google.com/go/documentai v1.22.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= cloud.google.com/go/documentai v1.23.7/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g= cloud.google.com/go/documentai v1.35.2/go.mod h1:oh/0YXosgEq3hVhyH4ZQ7VNXPaveRO4eLVM3tBSZOsI= cloud.google.com/go/documentai v1.37.0 h1:7fla8GcarupO15eatRTUveXCob6DOSW1Wa+1i63CM3Q= cloud.google.com/go/documentai v1.37.0/go.mod h1:qAf3ewuIUJgvSHQmmUWvM3Ogsr5A16U2WPHmiJldvLA= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= +cloud.google.com/go/domains v0.9.1/go.mod h1:aOp1c0MbejQQ2Pjf1iJvnVyT+z6R6s8pX66KaCSDYfE= cloud.google.com/go/domains v0.9.4/go.mod h1:27jmJGShuXYdUNjyDG0SodTfT5RwLi7xmH334Gvi3fY= cloud.google.com/go/domains v0.10.3/go.mod h1:m7sLe18p0PQab56bVH3JATYOJqyRHhmbye6gz7isC7o= cloud.google.com/go/domains v0.10.6 h1:TI+Aavwc31KD8huOquJz0ISchCq1zSEWc9M+JcPJyxc= cloud.google.com/go/domains v0.10.6/go.mod h1:3xzG+hASKsVBA8dOPc4cIaoV3OdBHl1qgUpAvXK7pGY= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= +cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= +cloud.google.com/go/edgecontainer v1.1.1/go.mod h1:O5bYcS//7MELQZs3+7mabRqoWQhXCzenBu0R8bz2rwk= cloud.google.com/go/edgecontainer v1.1.4/go.mod h1:AvFdVuZuVGdgaE5YvlL1faAoa1ndRR/5XhXZvPBHbsE= cloud.google.com/go/edgecontainer v1.4.1/go.mod h1:ubMQvXSxsvtEjJLyqcPFrdWrHfvjQxdoyt+SUrAi5ek= cloud.google.com/go/edgecontainer v1.4.3 h1:9tfGCicvrki927T+hGMB0yYmwIbRuZY6JR1/awrKiZ0= cloud.google.com/go/edgecontainer v1.4.3/go.mod h1:q9Ojw2ox0uhAvFisnfPRAXFTB1nfRIOIXVWzdXMZLcE= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= cloud.google.com/go/errorreporting v0.3.2 h1:isaoPwWX8kbAOea4qahcmttoS79+gQhvKsfg5L5AgH8= cloud.google.com/go/errorreporting v0.3.2/go.mod h1:s5kjs5r3l6A8UUyIsgvAhGq6tkqyBCUss0FRpsoVTww= +cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= +cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= +cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= +cloud.google.com/go/essentialcontacts v1.6.2/go.mod h1:T2tB6tX+TRak7i88Fb2N9Ok3PvY3UNbUsMag9/BARh4= cloud.google.com/go/essentialcontacts v1.6.5/go.mod h1:jjYbPzw0x+yglXC890l6ECJWdYeZ5dlYACTFL0U/VuM= cloud.google.com/go/essentialcontacts v1.7.3/go.mod h1:uimfZgDbhWNCmBpwUUPHe4vcMY2azsq/axC9f7vZFKI= cloud.google.com/go/essentialcontacts v1.7.6 h1:ysHZ4gr4plW1CL1Ur/AucUUfh20hDjSFbfjxSK0q/sk= cloud.google.com/go/essentialcontacts v1.7.6/go.mod h1:/Ycn2egr4+XfmAfxpLYsJeJlVf9MVnq9V7OMQr9R4lA= +cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= +cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= +cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= +cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= +cloud.google.com/go/eventarc v1.12.1/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= +cloud.google.com/go/eventarc v1.13.0/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= cloud.google.com/go/eventarc v1.13.3/go.mod h1:RWH10IAZIRcj1s/vClXkBgMHwh59ts7hSWcqD3kaclg= cloud.google.com/go/eventarc v1.15.1/go.mod h1:K2luolBpwaVOujZQyx6wdG4n2Xum4t0q1cMBmY1xVyI= cloud.google.com/go/eventarc v1.15.5 h1:bZW7ZMM+XXNErg6rOZcgxUzAgz4vpReRDP3ZiGf7/sI= cloud.google.com/go/eventarc v1.15.5/go.mod h1:vDCqGqyY7SRiickhEGt1Zhuj81Ya4F/NtwwL3OZNskg= +cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= +cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= +cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= +cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= +cloud.google.com/go/filestore v1.7.1/go.mod h1:y10jsorq40JJnjR/lQ8AfFbbcGlw3g+Dp8oN7i7FjV4= cloud.google.com/go/filestore v1.8.0/go.mod h1:S5JCxIbFjeBhWMTfIYH2Jx24J6BqjwpkkPl+nBA5DlI= cloud.google.com/go/filestore v1.9.3/go.mod h1:Me0ZRT5JngT/aZPIKpIK6N4JGMzrFHRtGHd9ayUS4R4= cloud.google.com/go/filestore v1.10.2 h1:LjoAyp9TvVNBns3sUUzPaNsQiGpR2BReGmTS3bUCuBE= cloud.google.com/go/filestore v1.10.2/go.mod h1:w0Pr8uQeSRQfCPRsL0sYKW6NKyooRgixCkV9yyLykR4= +cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= +cloud.google.com/go/firestore v1.11.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4= cloud.google.com/go/firestore v1.14.0/go.mod h1:96MVaHLsEhbvkBEdZgfN+AS/GIkco1LRpH9Xp9YZfzQ= cloud.google.com/go/firestore v1.18.0 h1:cuydCaLS7Vl2SatAeivXyhbhDEIR8BDmtn4egDhIn2s= cloud.google.com/go/firestore v1.18.0/go.mod h1:5ye0v48PhseZBdcl0qbl3uttu7FIEwEYVaWm0UIEOEU= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= +cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= +cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= +cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= +cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= +cloud.google.com/go/functions v1.15.1/go.mod h1:P5yNWUTkyU+LvW/S9O6V+V423VZooALQlqoXdoPz5AE= cloud.google.com/go/functions v1.15.4/go.mod h1:CAsTc3VlRMVvx+XqXxKqVevguqJpnVip4DdonFsX28I= cloud.google.com/go/functions v1.19.3/go.mod h1:nOZ34tGWMmwfiSJjoH/16+Ko5106x+1Iji29wzrBeOo= cloud.google.com/go/functions v1.19.6 h1:vJgWlvxtJG6p/JrbXAkz83DbgwOyFhZZI1Y32vUddjY= cloud.google.com/go/functions v1.19.6/go.mod h1:0G0RnIlbM4MJEycfbPZlCzSf2lPOjL7toLDwl+r0ZBw= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= +cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= +cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= cloud.google.com/go/gaming v1.10.1 h1:5qZmZEWzMf8GEFgm9NeC3bjFRpt7x4S6U7oLbxaf7N8= +cloud.google.com/go/gaming v1.10.1/go.mod h1:XQQvtfP8Rb9Rxnxm5wFVpAp9zCQkJi2bLIb7iHGwB3s= +cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= +cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= +cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= +cloud.google.com/go/gkebackup v1.3.0/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= cloud.google.com/go/gkebackup v1.3.4/go.mod h1:gLVlbM8h/nHIs09ns1qx3q3eaXcGSELgNu1DWXYz1HI= cloud.google.com/go/gkebackup v1.6.3/go.mod h1:JJzGsA8/suXpTDtqI7n9RZW97PXa2CIp+n8aRC/y57k= cloud.google.com/go/gkebackup v1.8.0 h1:eBqOt61yEChvj7I/GDPBbdCCRdUPudD1qrQYfYWV3Ok= cloud.google.com/go/gkebackup v1.8.0/go.mod h1:FjsjNldDilC9MWKEHExnK3kKJyTDaSdO1vF0QeWSOPU= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= +cloud.google.com/go/gkeconnect v0.8.1/go.mod h1:KWiK1g9sDLZqhxB2xEuPV8V9NYzrqTUmQR9shJHpOZw= cloud.google.com/go/gkeconnect v0.8.4/go.mod h1:84hZz4UMlDCKl8ifVW8layK4WHlMAFeq8vbzjU0yJkw= cloud.google.com/go/gkeconnect v0.12.1/go.mod h1:L1dhGY8LjINmWfR30vneozonQKRSIi5DWGIHjOqo58A= cloud.google.com/go/gkeconnect v0.12.4 h1:67/rnPmF/I1Wmf7jWyKH+z4OWjU8ZUI0Vmzxvmzf3KY= cloud.google.com/go/gkeconnect v0.12.4/go.mod h1:bvpU9EbBpZnXGo3nqJ1pzbHWIfA9fYqgBMJ1VjxaZdk= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= +cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= +cloud.google.com/go/gkehub v0.14.1/go.mod h1:VEXKIJZ2avzrbd7u+zeMtW00Y8ddk/4V9511C9CQGTY= cloud.google.com/go/gkehub v0.14.4/go.mod h1:Xispfu2MqnnFt8rV/2/3o73SK1snL8s9dYJ9G2oQMfc= cloud.google.com/go/gkehub v0.15.3/go.mod h1:nzFT/Q+4HdQES/F+FP1QACEEWR9Hd+Sh00qgiH636cU= cloud.google.com/go/gkehub v0.15.6 h1:9iogrmNNa+drDPf/zkLH/6KGgUf7FuuyokmithoGwMQ= cloud.google.com/go/gkehub v0.15.6/go.mod h1:sRT0cOPAgI1jUJrS3gzwdYCJ1NEzVVwmnMKEwrS2QaM= +cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= +cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= +cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= +cloud.google.com/go/gkemulticloud v0.6.1/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= +cloud.google.com/go/gkemulticloud v1.0.0/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= cloud.google.com/go/gkemulticloud v1.1.0/go.mod h1:7NpJBN94U6DY1xHIbsDqB2+TFZUfjLUKLjUX8NGLor0= cloud.google.com/go/gkemulticloud v1.5.1/go.mod h1:OdmhfSPXuJ0Kn9dQ2I3Ou7XZ3QK8caV4XVOJZwrIa3s= cloud.google.com/go/gkemulticloud v1.5.3 h1:334aZmOzIt3LVBpguCof8IHaLaftcZlx+L0TGBukYkY= cloud.google.com/go/gkemulticloud v1.5.3/go.mod h1:KPFf+/RcfvmuScqwS9/2MF5exZAmXSuoSLPuaQ98Xlk= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/grafeas v0.3.0/go.mod h1:P7hgN24EyONOTMyeJH6DxG4zD7fwiYa5Q6GUgyFSOU8= cloud.google.com/go/grafeas v0.3.15 h1:lBjwKmhpiqOAFaE0xdqF8CqO74a99s8tUT5mCkBBxPs= cloud.google.com/go/grafeas v0.3.15/go.mod h1:irwcwIQOBlLBotGdMwme8PipnloOPqILfIvMwlmu8Pk= +cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= +cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= +cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= +cloud.google.com/go/gsuiteaddons v1.6.1/go.mod h1:CodrdOqRZcLp5WOwejHWYBjZvfY0kOphkAKpF/3qdZY= cloud.google.com/go/gsuiteaddons v1.6.4/go.mod h1:rxtstw7Fx22uLOXBpsvb9DUbC+fiXs7rF4U29KHM/pE= cloud.google.com/go/gsuiteaddons v1.7.4/go.mod h1:gpE2RUok+HUhuK7RPE/fCOEgnTffS0lCHRaAZLxAMeE= cloud.google.com/go/gsuiteaddons v1.7.7 h1:sk0SxpCGIA7tIO//XdiiG29f2vrF6Pq/dsxxyBGiRBY= cloud.google.com/go/gsuiteaddons v1.7.7/go.mod h1:zTGmmKG/GEBCONsvMOY2ckDiEsq3FN+lzWGUiXccF9o= +cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= +cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= +cloud.google.com/go/iam v1.0.1/go.mod h1:yR3tmSL8BcZB4bxByRv2jkSIahVmCtfKZwLYGBalRE8= +cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= +cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= cloud.google.com/go/iam v1.4.0/go.mod h1:gMBgqPaERlriaOV0CUl//XUzDhSfXevn4OEUbg6VRs4= cloud.google.com/go/iam v1.5.2 h1:qgFRAGEmd8z6dJ/qyEchAuL9jpswyODjA2lS+w234g8= cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE= +cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= +cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= +cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= +cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= +cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= +cloud.google.com/go/iap v1.8.1/go.mod h1:sJCbeqg3mvWLqjZNsI6dfAtbbV1DL2Rl7e1mTyXYREQ= cloud.google.com/go/iap v1.9.3/go.mod h1:DTdutSZBqkkOm2HEOTBzhZxh2mwwxshfD/h3yofAiCw= cloud.google.com/go/iap v1.10.3/go.mod h1:xKgn7bocMuCFYhzRizRWP635E2LNPnIXT7DW0TlyPJ8= cloud.google.com/go/iap v1.11.2 h1:VIioCrYsyWiRGx7Y8RDNylpI6d4t1Qx5ZgSLUVmWWPo= cloud.google.com/go/iap v1.11.2/go.mod h1:Bh99DMUpP5CitL9lK0BC8MYgjjYO4b3FbyhgW1VHJvg= +cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= +cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= +cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= +cloud.google.com/go/ids v1.4.1/go.mod h1:np41ed8YMU8zOgv53MMMoCntLTn2lF+SUzlM+O3u/jw= cloud.google.com/go/ids v1.4.4/go.mod h1:z+WUc2eEl6S/1aZWzwtVNWoSZslgzPxAboS0lZX0HjI= cloud.google.com/go/ids v1.5.3/go.mod h1:a2MX8g18Eqs7yxD/pnEdid42SyBUm9LIzSWf8Jux9OY= cloud.google.com/go/ids v1.5.6 h1:uKGuaWozDcjg3wyf54Gd7tCH2YK8BFeH9qo1xBNiPKE= cloud.google.com/go/ids v1.5.6/go.mod h1:y3SGLmEf9KiwKsH7OHvYYVNIJAtXybqsD2z8gppsziQ= +cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= +cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= +cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= +cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= +cloud.google.com/go/iot v1.7.1/go.mod h1:46Mgw7ev1k9KqK1ao0ayW9h0lI+3hxeanz+L1zmbbbk= cloud.google.com/go/iot v1.7.4/go.mod h1:3TWqDVvsddYBG++nHSZmluoCAVGr1hAcabbWZNKEZLk= cloud.google.com/go/iot v1.8.3/go.mod h1:dYhrZh+vUxIQ9m3uajyKRSW7moF/n0rYmA2PhYAkMFE= cloud.google.com/go/iot v1.8.6 h1:A3AhugnIViAZkC3/lHAQDaXBIk2ZOPBZS0XQCyZsjjc= cloud.google.com/go/iot v1.8.6/go.mod h1:MThnkiihNkMysWNeNje2Hp0GSOpEq2Wkb/DkBCVYa0U= +cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= +cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= +cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= +cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= +cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= +cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= +cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= +cloud.google.com/go/kms v1.11.0/go.mod h1:hwdiYC0xjnWsKQQCQQmIQnS9asjYVSK6jtXm+zFqXLM= +cloud.google.com/go/kms v1.12.1/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= +cloud.google.com/go/kms v1.15.0/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= cloud.google.com/go/kms v1.21.0/go.mod h1:zoFXMhVVK7lQ3JC9xmhHMoQhnjEDZFoLAr5YMwzBLtk= cloud.google.com/go/kms v1.22.0 h1:dBRIj7+GDeeEvatJeTB19oYZNV0aj6wEqSIT/7gLqtk= cloud.google.com/go/kms v1.22.0/go.mod h1:U7mf8Sva5jpOb4bxYZdtw/9zsbIjrklYwPcvMk34AL8= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= +cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= +cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= +cloud.google.com/go/language v1.10.1/go.mod h1:CPp94nsdVNiQEt1CNjF5WkTcisLiHPyIbMhvR8H2AW0= cloud.google.com/go/language v1.12.2/go.mod h1:9idWapzr/JKXBBQ4lWqVX/hcadxB194ry20m/bTrhWc= cloud.google.com/go/language v1.14.3/go.mod h1:hjamj+KH//QzF561ZuU2J+82DdMlFUjmiGVWpovGGSA= cloud.google.com/go/language v1.14.5 h1:BVJ/POtlnJ55LElvnQY19UOxpMVtHoHHkFJW2uHJsVU= cloud.google.com/go/language v1.14.5/go.mod h1:nl2cyAVjcBct1Hk73tzxuKebk0t2eULFCaruhetdZIA= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= +cloud.google.com/go/lifesciences v0.9.1/go.mod h1:hACAOd1fFbCGLr/+weUKRAJas82Y4vrL3O5326N//Wc= cloud.google.com/go/lifesciences v0.9.4/go.mod h1:bhm64duKhMi7s9jR9WYJYvjAFJwRqNj+Nia7hF0Z7JA= cloud.google.com/go/lifesciences v0.10.3/go.mod h1:hnUUFht+KcZcliixAg+iOh88FUwAzDQQt5tWd7iIpNg= cloud.google.com/go/lifesciences v0.10.6 h1:Vu7XF4s5KJ8+mSLIL4eaQM6JTyWXvSB54oqC+CUZH20= cloud.google.com/go/lifesciences v0.10.6/go.mod h1:1nnZwaZcBThDujs9wXzECnd1S5d+UiDkPuJWAmhRi7Q= +cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= +cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= cloud.google.com/go/logging v1.9.0/go.mod h1:1Io0vnZv4onoUnsVUQY3HZ3Igb1nBchky0A0y7BBBhE= cloud.google.com/go/logging v1.13.0 h1:7j0HgAp0B94o1YRDqiqm26w4q1rDMH7XNRU34lJXHYc= cloud.google.com/go/logging v1.13.0/go.mod h1:36CoKh6KA/M0PbhPKMq6/qety2DCAErbhXT62TuXALA= +cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= +cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= +cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= +cloud.google.com/go/longrunning v0.4.2/go.mod h1:OHrnaYyLUV6oqwh0xiS7e5sLQhP1m0QU9R+WhGDMgIQ= +cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= +cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= cloud.google.com/go/longrunning v0.6.4/go.mod h1:ttZpLCe6e7EXvn9OxpBRx7kZEB0efv8yBO6YnVMfhJs= cloud.google.com/go/longrunning v0.6.6/go.mod h1:hyeGJUrPHcx0u2Uu1UFSoYZLn4lkMrccJig0t4FI7yw= cloud.google.com/go/longrunning v0.6.7 h1:IGtfDWHhQCgCjwQjV9iiLnUta9LBCo8R9QmAFsS/PrE= cloud.google.com/go/longrunning v0.6.7/go.mod h1:EAFV3IZAKmM56TyiE6VAP3VoTzhZzySwI/YI1s/nRsY= +cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= +cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= +cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= +cloud.google.com/go/managedidentities v1.6.1/go.mod h1:h/irGhTN2SkZ64F43tfGPMbHnypMbu4RB3yl8YcuEak= cloud.google.com/go/managedidentities v1.6.4/go.mod h1:WgyaECfHmF00t/1Uk8Oun3CQ2PGUtjc3e9Alh79wyiM= cloud.google.com/go/managedidentities v1.7.3/go.mod h1:H9hO2aMkjlpY+CNnKWRh+WoQiUIDO8457wWzUGsdtLA= cloud.google.com/go/managedidentities v1.7.6 h1:zrZVWXZJlmHnfpyCrTQIbDBGUBHrcOOvrsjMjoXRxrk= cloud.google.com/go/managedidentities v1.7.6/go.mod h1:pYCWPaI1AvR8Q027Vtp+SFSM/VOVgbjBF4rxp1/z5p4= +cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= +cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= +cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= +cloud.google.com/go/maps v1.3.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= +cloud.google.com/go/maps v1.4.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= cloud.google.com/go/maps v1.6.3/go.mod h1:VGAn809ADswi1ASofL5lveOHPnE6Rk/SFTTBx1yuOLw= cloud.google.com/go/maps v1.19.0/go.mod h1:goHUXrmzoZvQjUVd0KGhH8t3AYRm17P8b+fsyR1UAmQ= cloud.google.com/go/maps v1.21.0 h1:El61AfMxC1sU/RU8Wzs9dkZEgltyunKM86aKF9aDlaE= cloud.google.com/go/maps v1.21.0/go.mod h1:cqzZ7+DWUKKbPTgqE+KuNQtiCRyg/o7WZF9zDQk+HQs= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= +cloud.google.com/go/mediatranslation v0.8.1/go.mod h1:L/7hBdEYbYHQJhX2sldtTO5SZZ1C1vkapubj0T2aGig= cloud.google.com/go/mediatranslation v0.8.4/go.mod h1:9WstgtNVAdN53m6TQa5GjIjLqKQPXe74hwSCxUP6nj4= cloud.google.com/go/mediatranslation v0.9.3/go.mod h1:KTrFV0dh7duYKDjmuzjM++2Wn6yw/I5sjZQVV5k3BAA= cloud.google.com/go/mediatranslation v0.9.6 h1:SDGatA73TgZ8iCvILVXpk/1qhTK5DJyufUDEWgbmbV8= cloud.google.com/go/mediatranslation v0.9.6/go.mod h1:WS3QmObhRtr2Xu5laJBQSsjnWFPPthsyetlOyT9fJvE= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= +cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= +cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= +cloud.google.com/go/memcache v1.10.1/go.mod h1:47YRQIarv4I3QS5+hoETgKO40InqzLP6kpNLvyXuyaA= cloud.google.com/go/memcache v1.10.4/go.mod h1:v/d8PuC8d1gD6Yn5+I3INzLR01IDn0N4Ym56RgikSI0= cloud.google.com/go/memcache v1.11.3/go.mod h1:UeWI9cmY7hvjU1EU6dwJcQb6EFG4GaM3KNXOO2OFsbI= cloud.google.com/go/memcache v1.11.6 h1:33IVqQEmFiITsBXwGHeTkUhWz0kLNKr90nV3e22uLPs= cloud.google.com/go/memcache v1.11.6/go.mod h1:ZM6xr1mw3F8TWO+In7eq9rKlJc3jlX2MDt4+4H+/+cc= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= +cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= +cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= +cloud.google.com/go/metastore v1.11.1/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= +cloud.google.com/go/metastore v1.12.0/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= cloud.google.com/go/metastore v1.13.3/go.mod h1:K+wdjXdtkdk7AQg4+sXS8bRrQa9gcOr+foOMF2tqINE= cloud.google.com/go/metastore v1.14.3/go.mod h1:HlbGVOvg0ubBLVFRk3Otj3gtuzInuzO/TImOBwsKlG4= cloud.google.com/go/metastore v1.14.7 h1:dLm59AHHZCorveCylj7c2iWhkQsmMIeWTsV+tG/BXtY= cloud.google.com/go/metastore v1.14.7/go.mod h1:0dka99KQofeUgdfu+K/Jk1KeT9veWZlxuZdJpZPtuYU= +cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= +cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= +cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= +cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= +cloud.google.com/go/monitoring v1.15.1/go.mod h1:lADlSAlFdbqQuwwpaImhsJXu1QSdd3ojypXrFSMr2rM= cloud.google.com/go/monitoring v1.17.0/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw= cloud.google.com/go/monitoring v1.24.0/go.mod h1:Bd1PRK5bmQBQNnuGwHBfUamAV1ys9049oEPHnn4pcsc= cloud.google.com/go/monitoring v1.24.2 h1:5OTsoJ1dXYIiMiuL+sYscLc9BumrL3CarVLL7dd7lHM= cloud.google.com/go/monitoring v1.24.2/go.mod h1:x7yzPWcgDRnPEv3sI+jJGBkwl5qINf+6qY4eq0I9B4U= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= +cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= +cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= +cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= +cloud.google.com/go/networkconnectivity v1.12.1/go.mod h1:PelxSWYM7Sh9/guf8CFhi6vIqf19Ir/sbfZRUwXh92E= cloud.google.com/go/networkconnectivity v1.14.3/go.mod h1:4aoeFdrJpYEXNvrnfyD5kIzs8YtHg945Og4koAjHQek= cloud.google.com/go/networkconnectivity v1.16.1/go.mod h1:GBC1iOLkblcnhcnfRV92j4KzqGBrEI6tT7LP52nZCTk= cloud.google.com/go/networkconnectivity v1.17.1 h1:RQcG1rZNCNV5Dn3tnINs4TYswDXk2hKH+85eh+JvoWU= cloud.google.com/go/networkconnectivity v1.17.1/go.mod h1:DTZCq8POTkHgAlOAAEDQF3cMEr/B9k1ZbpklqvHEBtg= +cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= +cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= +cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= +cloud.google.com/go/networkmanagement v1.8.0/go.mod h1:Ho/BUGmtyEqrttTgWEe7m+8vDdK74ibQc+Be0q7Fof0= cloud.google.com/go/networkmanagement v1.9.3/go.mod h1:y7WMO1bRLaP5h3Obm4tey+NquUvB93Co1oh4wpL+XcU= cloud.google.com/go/networkmanagement v1.18.0/go.mod h1:yTxpAFuvQOOKgL3W7+k2Rp1bSKTxyRcZ5xNHGdHUM6w= cloud.google.com/go/networkmanagement v1.19.1 h1:ecukgArkYCVcK5w2h7WDDd+nHgmBAp9Bst7ClmVKz5A= cloud.google.com/go/networkmanagement v1.19.1/go.mod h1:icgk265dNnilxQzpr6rO9WuAuuCmUOqq9H6WBeM2Af4= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= +cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= +cloud.google.com/go/networksecurity v0.9.1/go.mod h1:MCMdxOKQ30wsBI1eI659f9kEp4wuuAueoC9AJKSPWZQ= cloud.google.com/go/networksecurity v0.9.4/go.mod h1:E9CeMZ2zDsNBkr8axKSYm8XyTqNhiCHf1JO/Vb8mD1w= cloud.google.com/go/networksecurity v0.10.3/go.mod h1:G85ABVcPscEgpw+gcu+HUxNZJWjn3yhTqEU7+SsltFM= cloud.google.com/go/networksecurity v0.10.6 h1:6b6fcCG9BFNcmtNO+VuPE04vkZb5TKNX9+7ZhYMgstE= cloud.google.com/go/networksecurity v0.10.6/go.mod h1:FTZvabFPvK2kR/MRIH3l/OoQ/i53eSix2KA1vhBMJec= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= +cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= +cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= +cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= +cloud.google.com/go/notebooks v1.9.1/go.mod h1:zqG9/gk05JrzgBt4ghLzEepPHNwE5jgPcHZRKhlC1A8= cloud.google.com/go/notebooks v1.11.2/go.mod h1:z0tlHI/lREXC8BS2mIsUeR3agM1AkgLiS+Isov3SS70= cloud.google.com/go/notebooks v1.12.3/go.mod h1:I0pMxZct+8Rega2LYrXL8jGAGZgLchSmh8Ksc+0xNyA= cloud.google.com/go/notebooks v1.12.6 h1:nCfZwVihArMPP2atRoxRrXOXJ/aC9rAgpBQGCc2zpYw= cloud.google.com/go/notebooks v1.12.6/go.mod h1:3Z4TMEqAKP3pu6DI/U+aEXrNJw9hGZIVbp+l3zw8EuA= +cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= +cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= +cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= +cloud.google.com/go/optimization v1.4.1/go.mod h1:j64vZQP7h9bO49m2rVaTVoNM0vEBEN5eKPUPbZyXOrk= cloud.google.com/go/optimization v1.6.2/go.mod h1:mWNZ7B9/EyMCcwNl1frUGEuY6CPijSkz88Fz2vwKPOY= cloud.google.com/go/optimization v1.7.3/go.mod h1:GlYFp4Mju0ybK5FlOUtV6zvWC00TIScdbsPyF6Iv144= cloud.google.com/go/optimization v1.7.6 h1:jDvIuSxDsXI2P7l2sYXm6CoX1YBIIT6Khm5m0hq0/KQ= cloud.google.com/go/optimization v1.7.6/go.mod h1:4MeQslrSJGv+FY4rg0hnZBR/tBX2awJ1gXYp6jZpsYY= +cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= +cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= +cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= +cloud.google.com/go/orchestration v1.8.1/go.mod h1:4sluRF3wgbYVRqz7zJ1/EUNc90TTprliq9477fGobD8= cloud.google.com/go/orchestration v1.8.4/go.mod h1:d0lywZSVYtIoSZXb0iFjv9SaL13PGyVOKDxqGxEf/qI= cloud.google.com/go/orchestration v1.11.4/go.mod h1:UKR2JwogaZmDGnAcBgAQgCPn89QMqhXFUCYVhHd31vs= cloud.google.com/go/orchestration v1.11.9 h1:PnlZ/O4R/eiounpxUkhI9ZXRMWbG7vFqxc6L6sR+31k= cloud.google.com/go/orchestration v1.11.9/go.mod h1:KKXK67ROQaPt7AxUS1V/iK0Gs8yabn3bzJ1cLHw4XBg= +cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= +cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= +cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= +cloud.google.com/go/orgpolicy v1.11.0/go.mod h1:2RK748+FtVvnfuynxBzdnyu7sygtoZa1za/0ZfpOs1M= +cloud.google.com/go/orgpolicy v1.11.1/go.mod h1:8+E3jQcpZJQliP+zaFfayC2Pg5bmhuLK755wKhIIUCE= cloud.google.com/go/orgpolicy v1.12.0/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= cloud.google.com/go/orgpolicy v1.14.2/go.mod h1:2fTDMT3X048iFKxc6DEgkG+a/gN+68qEgtPrHItKMzo= cloud.google.com/go/orgpolicy v1.15.0 h1:uQziDu3UKYk9ZwUgneZAW5aWxZFKgOXXsuVKFKh0z7Y= cloud.google.com/go/orgpolicy v1.15.0/go.mod h1:NTQLwgS8N5cJtdfK55tAnMGtvPSsy95JJhESwYHaJVs= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= +cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= +cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= +cloud.google.com/go/osconfig v1.12.0/go.mod h1:8f/PaYzoS3JMVfdfTubkowZYGmAhUCjjwnjqWI7NVBc= +cloud.google.com/go/osconfig v1.12.1/go.mod h1:4CjBxND0gswz2gfYRCUoUzCm9zCABp91EeTtWXyz0tE= cloud.google.com/go/osconfig v1.12.4/go.mod h1:B1qEwJ/jzqSRslvdOCI8Kdnp0gSng0xW4LOnIebQomA= cloud.google.com/go/osconfig v1.14.3/go.mod h1:9D2MS1Etne18r/mAeW5jtto3toc9H1qu9wLNDG3NvQg= cloud.google.com/go/osconfig v1.14.6 h1:4uJrA1obzMBp1I+DF15y/MvsXKIODevuANpq3QhvX30= cloud.google.com/go/osconfig v1.14.6/go.mod h1:LS39HDBH0IJDFgOUkhSZUHFQzmcWaCpYXLrc3A4CVzI= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= +cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= +cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= +cloud.google.com/go/oslogin v1.10.1/go.mod h1:x692z7yAue5nE7CsSnoG0aaMbNoRJRXO4sn73R+ZqAs= cloud.google.com/go/oslogin v1.13.0/go.mod h1:xPJqLwpTZ90LSE5IL1/svko+6c5avZLluiyylMb/sRA= cloud.google.com/go/oslogin v1.14.3/go.mod h1:fDEGODTG/W9ZGUTHTlMh8euXWC1fTcgjJ9Kcxxy14a8= cloud.google.com/go/oslogin v1.14.6 h1:BDKVcxo1OO4ZT+PbuFchZjnbrlUGfChilt6+pITY1VI= cloud.google.com/go/oslogin v1.14.6/go.mod h1:xEvcRZTkMXHfNSKdZ8adxD6wvRzeyAq3cQX3F3kbMRw= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= +cloud.google.com/go/phishingprotection v0.8.1/go.mod h1:AxonW7GovcA8qdEk13NfHq9hNx5KPtfxXNeUxTDxB6I= cloud.google.com/go/phishingprotection v0.8.4/go.mod h1:6b3kNPAc2AQ6jZfFHioZKg9MQNybDg4ixFd4RPZZ2nE= cloud.google.com/go/phishingprotection v0.9.3/go.mod h1:ylzN9HruB/X7dD50I4sk+FfYzuPx9fm5JWsYI0t7ncc= cloud.google.com/go/phishingprotection v0.9.6 h1:yl572bBQbPjflX250SOflN6gwO2uYoddN2uRp36fDTo= cloud.google.com/go/phishingprotection v0.9.6/go.mod h1:VmuGg03DCI0wRp/FLSvNyjFj+J8V7+uITgHjCD/x4RQ= +cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= +cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= +cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= +cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= +cloud.google.com/go/policytroubleshooter v1.7.1/go.mod h1:0NaT5v3Ag1M7U5r0GfDCpUFkWd9YqpubBWsQlhanRv0= +cloud.google.com/go/policytroubleshooter v1.8.0/go.mod h1:tmn5Ir5EToWe384EuboTcVQT7nTag2+DuH3uHmKd1HU= cloud.google.com/go/policytroubleshooter v1.10.2/go.mod h1:m4uF3f6LseVEnMV6nknlN2vYGRb+75ylQwJdnOXfnv0= cloud.google.com/go/policytroubleshooter v1.11.3/go.mod h1:AFHlORqh4AnMC0twc2yPKfzlozp3DO0yo9OfOd9aNOs= cloud.google.com/go/policytroubleshooter v1.11.6 h1:Z8+tO2z21MY1arBBuJjwrOjbw8fbZb13AZTHXdzkl2U= cloud.google.com/go/policytroubleshooter v1.11.6/go.mod h1:jdjYGIveoYolk38Dm2JjS5mPkn8IjVqPsDHccTMu3mY= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= +cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= +cloud.google.com/go/privatecatalog v0.9.1/go.mod h1:0XlDXW2unJXdf9zFz968Hp35gl/bhF4twwpXZAW50JA= cloud.google.com/go/privatecatalog v0.9.4/go.mod h1:SOjm93f+5hp/U3PqMZAHTtBtluqLygrDrVO8X8tYtG0= cloud.google.com/go/privatecatalog v0.10.4/go.mod h1:n/vXBT+Wq8B4nSRUJNDsmqla5BYjbVxOlHzS6PjiF+w= cloud.google.com/go/privatecatalog v0.10.7 h1:R951ikhxIanXEijBCu0xnoUAOteS5m/Xplek0YvsNTE= cloud.google.com/go/privatecatalog v0.10.7/go.mod h1:Fo/PF/B6m4A9vUYt0nEF1xd0U6Kk19/Je3eZGrQ6l60= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= +cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= +cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= +cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= +cloud.google.com/go/pubsub v1.32.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= +cloud.google.com/go/pubsub v1.33.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= cloud.google.com/go/pubsub v1.34.0/go.mod h1:alj4l4rBg+N3YTFDDC+/YyFTs6JAjam2QfYsddcAW4c= cloud.google.com/go/pubsub v1.47.0/go.mod h1:LaENesmga+2u0nDtLkIOILskxsfvn/BXX9Ak1NFxOs8= cloud.google.com/go/pubsub v1.49.0 h1:5054IkbslnrMCgA2MAEPcsN3Ky+AyMpEZcii/DoySPo= cloud.google.com/go/pubsub v1.49.0/go.mod h1:K1FswTWP+C1tI/nfi3HQecoVeFvL4HUOB1tdaNXKhUY= +cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= +cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= +cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= +cloud.google.com/go/pubsublite v1.8.1/go.mod h1:fOLdU4f5xldK4RGJrBMm+J7zMWNj/k4PxwEZXy39QS0= cloud.google.com/go/pubsublite v1.8.2 h1:jLQozsEVr+c6tOU13vDugtnaBSUy/PD5zK6mhm+uF1Y= cloud.google.com/go/pubsublite v1.8.2/go.mod h1:4r8GSa9NznExjuLPEJlF1VjOPOpgf3IT6k8x/YgaOPI= cloud.google.com/go/recaptchaenterprise v1.3.1 h1:u6EznTGzIdsyOsvm+Xkw0aSuKFXQlyjGE9a4exk6iNQ= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= +cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= +cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= +cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= +cloud.google.com/go/recaptchaenterprise/v2 v2.7.2/go.mod h1:kR0KjsJS7Jt1YSyWFkseQ756D45kaYNTlDPPaRAvDBU= cloud.google.com/go/recaptchaenterprise/v2 v2.9.0/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= cloud.google.com/go/recaptchaenterprise/v2 v2.19.4/go.mod h1:WaglfocMJGkqZVdXY/FVB7OhoVRONPS4uXqtNn6HfX0= cloud.google.com/go/recaptchaenterprise/v2 v2.20.4 h1:P4QMryKcWdi4LIe1Sx0b2ZOAQv5gVfdzPt2peXcN32Y= cloud.google.com/go/recaptchaenterprise/v2 v2.20.4/go.mod h1:3H8nb8j8N7Ss2eJ+zr+/H7gyorfzcxiDEtVBDvDjwDQ= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= +cloud.google.com/go/recommendationengine v0.8.1/go.mod h1:MrZihWwtFYWDzE6Hz5nKcNz3gLizXVIDI/o3G1DLcrE= cloud.google.com/go/recommendationengine v0.8.4/go.mod h1:GEteCf1PATl5v5ZsQ60sTClUE0phbWmo3rQ1Js8louU= cloud.google.com/go/recommendationengine v0.9.3/go.mod h1:QRnX5aM7DCvtqtSs7I0zay5Zfq3fzxqnsPbZF7pa1G8= cloud.google.com/go/recommendationengine v0.9.6 h1:slN7h23vswGccW8x3f+xUXCu9Yo18/GNkazH93LJbFk= cloud.google.com/go/recommendationengine v0.9.6/go.mod h1:nZnjKJu1vvoxbmuRvLB5NwGuh6cDMMQdOLXTnkukUOE= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= +cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= +cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= +cloud.google.com/go/recommender v1.10.1/go.mod h1:XFvrE4Suqn5Cq0Lf+mCP6oBHD/yRMA8XxP5sb7Q7gpA= cloud.google.com/go/recommender v1.12.0/go.mod h1:+FJosKKJSId1MBFeJ/TTyoGQZiEelQQIZMKYYD8ruK4= cloud.google.com/go/recommender v1.13.3/go.mod h1:6yAmcfqJRKglZrVuTHsieTFEm4ai9JtY3nQzmX4TC0Q= cloud.google.com/go/recommender v1.13.5 h1:cIsyRKGNw4LpCfY5c8CCQadhlp54jP4fHtP+d5Sy2xE= cloud.google.com/go/recommender v1.13.5/go.mod h1:v7x/fzk38oC62TsN5Qkdpn0eoMBh610UgArJtDIgH/E= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= +cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= +cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= +cloud.google.com/go/redis v1.13.1/go.mod h1:VP7DGLpE91M6bcsDdMuyCm2hIpB6Vp2hI090Mfd1tcg= cloud.google.com/go/redis v1.14.1/go.mod h1:MbmBxN8bEnQI4doZPC1BzADU4HGocHBk2de3SbgOkqs= cloud.google.com/go/redis v1.18.0/go.mod h1:fJ8dEQJQ7DY+mJRMkSafxQCuc8nOyPUwo9tXJqjvNEY= cloud.google.com/go/redis v1.18.2 h1:JlHLceAOILEmbn+NIS7l+vmUKkFuobLToCWTxL7NGcQ= cloud.google.com/go/redis v1.18.2/go.mod h1:q6mPRhLiR2uLf584Lcl4tsiRn0xiFlu6fnJLwCORMtY= +cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= +cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= +cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= +cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= +cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= +cloud.google.com/go/resourcemanager v1.9.1/go.mod h1:dVCuosgrh1tINZ/RwBufr8lULmWGOkPS8gL5gqyjdT8= cloud.google.com/go/resourcemanager v1.9.4/go.mod h1:N1dhP9RFvo3lUfwtfLWVxfUWq8+KUQ+XLlHLH3BoFJ0= cloud.google.com/go/resourcemanager v1.10.3/go.mod h1:JSQDy1JA3K7wtaFH23FBGld4dMtzqCoOpwY55XYR8gs= cloud.google.com/go/resourcemanager v1.10.6 h1:LIa8kKE8HF71zm976oHMqpWFiaDHVw/H1YMO71lrGmo= cloud.google.com/go/resourcemanager v1.10.6/go.mod h1:VqMoDQ03W4yZmxzLPrB+RuAoVkHDS5tFUUQUhOtnRTg= +cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= +cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= +cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= +cloud.google.com/go/resourcesettings v1.6.1/go.mod h1:M7mk9PIZrC5Fgsu1kZJci6mpgN8o0IUzVx3eJU3y4Jw= cloud.google.com/go/resourcesettings v1.6.4/go.mod h1:pYTTkWdv2lmQcjsthbZLNBP4QW140cs7wqA3DuqErVI= cloud.google.com/go/resourcesettings v1.8.3 h1:13HOFU7v4cEvIHXSAQbinF4wp2Baybbq7q9FMctg1Ek= cloud.google.com/go/resourcesettings v1.8.3/go.mod h1:BzgfXFHIWOOmHe6ZV9+r3OWfpHJgnqXy8jqwx4zTMLw= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= +cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= +cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= +cloud.google.com/go/retail v1.14.1/go.mod h1:y3Wv3Vr2k54dLNIrCzenyKG8g8dhvhncT2NcNjb/6gE= cloud.google.com/go/retail v1.14.4/go.mod h1:l/N7cMtY78yRnJqp5JW8emy7MB1nz8E4t2yfOmklYfg= cloud.google.com/go/retail v1.19.2/go.mod h1:71tRFYAcR4MhrZ1YZzaJxr030LvaZiIcupH7bXfFBcY= cloud.google.com/go/retail v1.21.0 h1:8jgWgtAg1mk91WmaoWRTlL9CcvazPwqZ3YT9n6Gva9U= cloud.google.com/go/retail v1.21.0/go.mod h1:LuG+QvBdLfKfO+7nnF3eA3l1j4TQw3Sg+UqlUorquRc= +cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= +cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= +cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= +cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= +cloud.google.com/go/run v1.2.0/go.mod h1:36V1IlDzQ0XxbQjUx6IYbw8H3TJnWvhii963WW3B/bo= cloud.google.com/go/run v1.3.3/go.mod h1:WSM5pGyJ7cfYyYbONVQBN4buz42zFqwG67Q3ch07iK4= cloud.google.com/go/run v1.9.0/go.mod h1:Dh0+mizUbtBOpPEzeXMM22t8qYQpyWpfmUiWQ0+94DU= cloud.google.com/go/run v1.10.0 h1:CDhz0PPzI/cVpmNFyHe3Yp21jNpiAqtkfRxuoLi+JU0= cloud.google.com/go/run v1.10.0/go.mod h1:z7/ZidaHOCjdn5dV0eojRbD+p8RczMk3A7Qi2L+koHg= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= +cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= +cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= +cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= +cloud.google.com/go/scheduler v1.10.1/go.mod h1:R63Ldltd47Bs4gnhQkmNDse5w8gBRrhObZ54PxgR2Oo= cloud.google.com/go/scheduler v1.10.5/go.mod h1:MTuXcrJC9tqOHhixdbHDFSIuh7xZF2IysiINDuiq6NI= cloud.google.com/go/scheduler v1.11.4/go.mod h1:0ylvH3syJnRi8EDVo9ETHW/vzpITR/b+XNnoF+GPSz4= cloud.google.com/go/scheduler v1.11.7 h1:zkMEJ0UbEJ3O7NwEUlKLIp6eXYv1L7wHjbxyxznajKM= cloud.google.com/go/scheduler v1.11.7/go.mod h1:gqYs8ndLx2M5D0oMJh48aGS630YYvC432tHCnVWN13s= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= +cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= +cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= +cloud.google.com/go/secretmanager v1.11.1/go.mod h1:znq9JlXgTNdBeQk9TBW/FnR/W4uChEKGeqQWAJ8SXFw= cloud.google.com/go/secretmanager v1.11.4/go.mod h1:wreJlbS9Zdq21lMzWmJ0XhWW2ZxgPeahsqeV/vZoJ3w= cloud.google.com/go/secretmanager v1.14.5/go.mod h1:GXznZF3qqPZDGZQqETZwZqHw4R6KCaYVvcGiRBA+aqY= cloud.google.com/go/secretmanager v1.14.7 h1:VkscIRzj7GcmZyO4z9y1EH7Xf81PcoiAo7MtlD+0O80= cloud.google.com/go/secretmanager v1.14.7/go.mod h1:uRuB4F6NTFbg0vLQ6HsT7PSsfbY7FqHbtJP1J94qxGc= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= +cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= +cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= +cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= +cloud.google.com/go/security v1.15.1/go.mod h1:MvTnnbsWnehoizHi09zoiZob0iCHVcL4AUBj76h9fXA= cloud.google.com/go/security v1.15.4/go.mod h1:oN7C2uIZKhxCLiAAijKUCuHLZbIt/ghYEo8MqwD/Ty4= cloud.google.com/go/security v1.18.3/go.mod h1:NmlSnEe7vzenMRoTLehUwa/ZTZHDQE59IPRevHcpCe4= cloud.google.com/go/security v1.18.5 h1:6hqzvuwC8za9jyCTxygmEHnp4vZ8hfhwKVArxSCAVCo= cloud.google.com/go/security v1.18.5/go.mod h1:D1wuUkDwGqTKD0Nv7d4Fn2Dc53POJSmO4tlg1K1iS7s= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= +cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= +cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= +cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= +cloud.google.com/go/securitycenter v1.23.0/go.mod h1:8pwQ4n+Y9WCWM278R8W3nF65QtY172h4S8aXyI9/hsQ= cloud.google.com/go/securitycenter v1.24.3/go.mod h1:l1XejOngggzqwr4Fa2Cn+iWZGf+aBLTXtB/vXjy5vXM= cloud.google.com/go/securitycenter v1.36.0/go.mod h1:AErAQqIvrSrk8cpiItJG1+ATl7SD7vQ6lgTFy/Tcs4Q= cloud.google.com/go/securitycenter v1.36.2 h1:hLA58IBYmWrNiXDIONvuCUQ4sHLVPy8JvDo2j1wSYCw= cloud.google.com/go/securitycenter v1.36.2/go.mod h1:80ocoXS4SNWxmpqeEPhttYrmlQzCPVGaPzL3wVcoJvE= +cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= +cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= +cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= +cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= cloud.google.com/go/servicecontrol v1.11.1 h1:d0uV7Qegtfaa7Z2ClDzr9HJmnbJW7jn0WhZ7wOX6hLE= +cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= +cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= +cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= +cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= +cloud.google.com/go/servicedirectory v1.10.1/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= +cloud.google.com/go/servicedirectory v1.11.0/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= cloud.google.com/go/servicedirectory v1.11.3/go.mod h1:LV+cHkomRLr67YoQy3Xq2tUXBGOs5z5bPofdq7qtiAw= cloud.google.com/go/servicedirectory v1.12.3/go.mod h1:dwTKSCYRD6IZMrqoBCIvZek+aOYK/6+jBzOGw8ks5aY= cloud.google.com/go/servicedirectory v1.12.6 h1:pl/KUNvFzlXpxgnPgzQjyTQQcv5WsQ97zCHaPrLQlYA= cloud.google.com/go/servicedirectory v1.12.6/go.mod h1:OojC1KhOMDYC45oyTn3Mup08FY/S0Kj7I58dxUMMTpg= +cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= +cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= +cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= cloud.google.com/go/servicemanagement v1.8.0 h1:fopAQI/IAzlxnVeiKn/8WiV6zKndjFkvi+gzu+NjywY= +cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= +cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= +cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= +cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= cloud.google.com/go/serviceusage v1.6.0 h1:rXyq+0+RSIm3HFypctp7WoXxIA563rn206CfMWdqXX4= +cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= +cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= +cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= +cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= +cloud.google.com/go/shell v1.7.1/go.mod h1:u1RaM+huXFaTojTbW4g9P5emOrrmLE69KrxqQahKn4g= cloud.google.com/go/shell v1.7.4/go.mod h1:yLeXB8eKLxw0dpEmXQ/FjriYrBijNsONpwnWsdPqlKM= cloud.google.com/go/shell v1.8.3/go.mod h1:OYcrgWF6JSp/uk76sNTtYFlMD0ho2+Cdzc7U3P/bF54= cloud.google.com/go/shell v1.8.6 h1:jLWyztGlNWBx55QXBM4HbWvfv7aiRjPzRKTUkZA8dXk= cloud.google.com/go/shell v1.8.6/go.mod h1:GNbTWf1QA/eEtYa+kWSr+ef/XTCDkUzRpV3JPw0LqSk= +cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= +cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= +cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= +cloud.google.com/go/spanner v1.47.0/go.mod h1:IXsJwVW2j4UKs0eYDqodab6HgGuA1bViSqW4uH9lfUI= cloud.google.com/go/spanner v1.55.0/go.mod h1:HXEznMUVhC+PC+HDyo9YFG2Ajj5BQDkcbqB9Z2Ffxi0= cloud.google.com/go/spanner v1.76.1/go.mod h1:YtwoE+zObKY7+ZeDCBtZ2ukM+1/iPaMfUM+KnTh/sx0= cloud.google.com/go/spanner v1.82.0 h1:w9uO8RqEoBooBLX4nqV1RtgudyU2ZX780KTLRgeVg60= cloud.google.com/go/spanner v1.82.0/go.mod h1:BzybQHFQ/NqGxvE/M+/iU29xgutJf7Q85/4U9RWMto0= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= +cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= +cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= +cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= +cloud.google.com/go/speech v1.17.1/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= +cloud.google.com/go/speech v1.19.0/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= cloud.google.com/go/speech v1.21.0/go.mod h1:wwolycgONvfz2EDU8rKuHRW3+wc9ILPsAWoikBEWavY= cloud.google.com/go/speech v1.26.0/go.mod h1:78bqDV2SgwFlP/M4n3i3PwLthFq6ta7qmyG6lUV7UCA= cloud.google.com/go/speech v1.27.1 h1:+OktATNlQc+4WH78OrQadIP4CzXb9mBucdDGCO1NrlI= cloud.google.com/go/speech v1.27.1/go.mod h1:efCfklHFL4Flxcdt9gpEMEJh9MupaBzw3QiSOVeJ6ck= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= +cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +cloud.google.com/go/storage v1.31.0/go.mod h1:81ams1PrhW16L4kF7qg+4mTq7SRs5HsbDTM0bWvrwJ0= cloud.google.com/go/storage v1.53.0 h1:gg0ERZwL17pJ+Cz3cD2qS60w1WMDnwcm5YPAIQBHUAw= cloud.google.com/go/storage v1.53.0/go.mod h1:7/eO2a/srr9ImZW9k5uufcNahT2+fPb8w5it1i5boaA= +cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= +cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= +cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= +cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= +cloud.google.com/go/storagetransfer v1.10.0/go.mod h1:DM4sTlSmGiNczmV6iZyceIh2dbs+7z2Ayg6YAiQlYfA= cloud.google.com/go/storagetransfer v1.10.3/go.mod h1:Up8LY2p6X68SZ+WToswpQbQHnJpOty/ACcMafuey8gc= cloud.google.com/go/storagetransfer v1.12.1/go.mod h1:hQqbfs8/LTmObJyCC0KrlBw8yBJ2bSFlaGila0qBMk4= cloud.google.com/go/storagetransfer v1.13.0 h1:uqKX3OgcYzR1W1YI943ZZ45id0RqA2eXXoCBSPstlbw= cloud.google.com/go/storagetransfer v1.13.0/go.mod h1:+aov7guRxXBYgR3WCqedkyibbTICdQOiXOdpPcJCKl8= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= +cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= +cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= +cloud.google.com/go/talent v1.6.2/go.mod h1:CbGvmKCG61mkdjcqTcLOkb2ZN1SrQI8MDyma2l7VD24= cloud.google.com/go/talent v1.6.5/go.mod h1:Mf5cma696HmE+P2BWJ/ZwYqeJXEeU0UqjHFXVLadEDI= cloud.google.com/go/talent v1.8.0/go.mod h1:/gvOzSrtMcfTL/9xWhdYaZATaxUNhQ+L+3ZaGOGs7bA= cloud.google.com/go/talent v1.8.3 h1:wDP+++O/P1cTJBMkYlSY46k0a6atSoyO+UkBGuU9+Ao= cloud.google.com/go/talent v1.8.3/go.mod h1:oD3/BilJpJX8/ad8ZUAxlXHCslTg2YBbafFH3ciZSLQ= +cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= +cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= +cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= +cloud.google.com/go/texttospeech v1.7.1/go.mod h1:m7QfG5IXxeneGqTapXNxv2ItxP/FS0hCZBwXYqucgSk= cloud.google.com/go/texttospeech v1.7.4/go.mod h1:vgv0002WvR4liGuSd5BJbWy4nDn5Ozco0uJymY5+U74= cloud.google.com/go/texttospeech v1.11.0/go.mod h1:7M2ro3I2QfIEvArFk1TJ+pqXJqhszDtxUpnIv/150As= cloud.google.com/go/texttospeech v1.13.0 h1:oWWFQp0yFl4EJOr3opDkKH9304wUsZjgPjrTDS6S1a8= cloud.google.com/go/texttospeech v1.13.0/go.mod h1:g/tW/m0VJnulGncDrAoad6WdELMTes8eb77Idz+4HCo= +cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= +cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= +cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= +cloud.google.com/go/tpu v1.6.1/go.mod h1:sOdcHVIgDEEOKuqUoi6Fq53MKHJAtOwtz0GuKsWSH3E= cloud.google.com/go/tpu v1.6.4/go.mod h1:NAm9q3Rq2wIlGnOhpYICNI7+bpBebMJbh0yyp3aNw1Y= cloud.google.com/go/tpu v1.8.0/go.mod h1:XyNzyK1xc55WvL5rZEML0Z9/TUHDfnq0uICkQw6rWMo= cloud.google.com/go/tpu v1.8.3 h1:S4Ptq+yFIPNLEzQ/OQwiIYDNzk5I2vYmhf0SmFQOmWo= cloud.google.com/go/tpu v1.8.3/go.mod h1:Do6Gq+/Jx6Xs3LcY2WhHyGwKDKVw++9jIJp+X+0rxRE= +cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= +cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= +cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= +cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= +cloud.google.com/go/trace v1.10.1/go.mod h1:gbtL94KE5AJLH3y+WVpfWILmqgc6dXcqgNXdOPAQTYk= cloud.google.com/go/trace v1.10.4/go.mod h1:Nso99EDIK8Mj5/zmB+iGr9dosS/bzWCJ8wGmE6TXNWY= cloud.google.com/go/trace v1.11.3/go.mod h1:pt7zCYiDSQjC9Y2oqCsh9jF4GStB/hmjrYLsxRR27q8= cloud.google.com/go/trace v1.11.6 h1:2O2zjPzqPYAHrn3OKl029qlqG6W8ZdYaOWRyr8NgMT4= cloud.google.com/go/trace v1.11.6/go.mod h1:GA855OeDEBiBMzcckLPE2kDunIpC72N+Pq8WFieFjnI= +cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= +cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= +cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= +cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.8.1/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= +cloud.google.com/go/translate v1.8.2/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= cloud.google.com/go/translate v1.10.0/go.mod h1:Kbq9RggWsbqZ9W5YpM94Q1Xv4dshw/gr/SHfsl5yCZ0= cloud.google.com/go/translate v1.12.3/go.mod h1:qINOVpgmgBnY4YTFHdfVO4nLrSBlpvlIyosqpGEgyEg= cloud.google.com/go/translate v1.12.5 h1:QPMNi4WCtHwc2PPfxbyUMwdN/0+cyCGLaKi2tig41J8= cloud.google.com/go/translate v1.12.5/go.mod h1:o/v+QG/bdtBV1d1edmtau0PwTfActvxPk/gtqdSDBi4= +cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= +cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= +cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= +cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= +cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/video v1.17.1/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= +cloud.google.com/go/video v1.19.0/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= cloud.google.com/go/video v1.20.3/go.mod h1:TnH/mNZKVHeNtpamsSPygSR0iHtvrR/cW1/GDjN5+GU= cloud.google.com/go/video v1.23.3/go.mod h1:Kvh/BheubZxGZDXSb0iO6YX7ZNcaYHbLjnnaC8Qyy3g= cloud.google.com/go/video v1.24.0 h1:KTB2BEXjGm2K/JcKxQXEgx3nSoMTByepnPZa4kln064= cloud.google.com/go/video v1.24.0/go.mod h1:h6Bw4yUbGNEa9dH4qMtUMnj6cEf+OyOv/f2tb70G6Fk= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= +cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= +cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= +cloud.google.com/go/videointelligence v1.11.1/go.mod h1:76xn/8InyQHarjTWsBR058SmlPCwQjgcvoW0aZykOvo= cloud.google.com/go/videointelligence v1.11.4/go.mod h1:kPBMAYsTPFiQxMLmmjpcZUMklJp3nC9+ipJJtprccD8= cloud.google.com/go/videointelligence v1.12.3/go.mod h1:dUA6V+NH7CVgX6TePq0IelVeBMGzvehxKPR4FGf1dtw= cloud.google.com/go/videointelligence v1.12.6 h1:heq7jEO39sH5TycBh8TGFJ827XCxK0tIWatmBY/n0jI= cloud.google.com/go/videointelligence v1.12.6/go.mod h1:/l34WMndN5/bt04lHodxiYchLVuWPQjCU6SaiTswrIw= cloud.google.com/go/vision v1.2.0 h1:/CsSTkbmO9HC8iQpxbK8ATms3OQaX3YQUeTMGCxlaK4= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= +cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= +cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= +cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= +cloud.google.com/go/vision/v2 v2.7.2/go.mod h1:jKa8oSYBWhYiXarHPvP4USxYANYUEdEsQrloLjrSwJU= cloud.google.com/go/vision/v2 v2.7.5/go.mod h1:GcviprJLFfK9OLf0z8Gm6lQb6ZFUulvpZws+mm6yPLM= cloud.google.com/go/vision/v2 v2.9.3/go.mod h1:weAcT8aNYSgrWWVTC2PuJTc7fcXKvUeAyDq8B6HkLSg= cloud.google.com/go/vision/v2 v2.9.5 h1:UJZ0H6UlOaYKgCn6lWG2iMAOJIsJZLnseEfzBR8yIqQ= cloud.google.com/go/vision/v2 v2.9.5/go.mod h1:1SiNZPpypqZDbOzU052ZYRiyKjwOcyqgGgqQCI/nlx8= +cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= +cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= +cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= +cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= +cloud.google.com/go/vmmigration v1.7.1/go.mod h1:WD+5z7a/IpZ5bKK//YmT9E047AD+rjycCAvyMxGJbro= cloud.google.com/go/vmmigration v1.7.4/go.mod h1:yBXCmiLaB99hEl/G9ZooNx2GyzgsjKnw5fWcINRgD70= cloud.google.com/go/vmmigration v1.8.3/go.mod h1:8CzUpK9eBzohgpL4RvBVtW4sY/sDliVyQonTFQfWcJ4= cloud.google.com/go/vmmigration v1.8.6 h1:68hOQDhs1DOITrCrhritrwr8xy6s8QMdwDyMzMiFleU= cloud.google.com/go/vmmigration v1.8.6/go.mod h1:uZ6/KXmekwK3JmC8PzBM/cKQmq404TTfWtThF6bbf0U= +cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= +cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= +cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= +cloud.google.com/go/vmwareengine v0.4.1/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= +cloud.google.com/go/vmwareengine v1.0.0/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= cloud.google.com/go/vmwareengine v1.0.3/go.mod h1:QSpdZ1stlbfKtyt6Iu19M6XRxjmXO+vb5a/R6Fvy2y4= cloud.google.com/go/vmwareengine v1.3.3/go.mod h1:G7vz05KGijha0c0dj1INRKyDAaQW8TRMZt/FrfOZVXc= cloud.google.com/go/vmwareengine v1.3.5 h1:OsGd1SB91y9fDuzdzFngMv4UcT4cqmRxjsCsS4Xmcu8= cloud.google.com/go/vmwareengine v1.3.5/go.mod h1:QuVu2/b/eo8zcIkxBYY5QSwiyEcAy6dInI7N+keI+Jg= +cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= +cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= +cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= +cloud.google.com/go/vpcaccess v1.7.1/go.mod h1:FogoD46/ZU+JUBX9D606X21EnxiszYi2tArQwLY4SXs= cloud.google.com/go/vpcaccess v1.7.4/go.mod h1:lA0KTvhtEOb/VOdnH/gwPuOzGgM+CWsmGu6bb4IoMKk= cloud.google.com/go/vpcaccess v1.8.3/go.mod h1:bqOhyeSh/nEmLIsIUoCiQCBHeNPNjaK9M3bIvKxFdsY= cloud.google.com/go/vpcaccess v1.8.6 h1:RYtUB9rQEijX9Tc6lQcGst58ZOzPgaYTkz6+2pyPQTM= cloud.google.com/go/vpcaccess v1.8.6/go.mod h1:61yymNplV1hAbo8+kBOFO7Vs+4ZHYI244rSFgmsHC6E= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= +cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= +cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= +cloud.google.com/go/webrisk v1.9.1/go.mod h1:4GCmXKcOa2BZcZPn6DCEvE7HypmEJcJkr4mtM+sqYPc= cloud.google.com/go/webrisk v1.9.4/go.mod h1:w7m4Ib4C+OseSr2GL66m0zMBywdrVNTDKsdEsfMl7X0= cloud.google.com/go/webrisk v1.10.3/go.mod h1:rRAqCA5/EQOX8ZEEF4HMIrLHGTK/Y1hEQgWMnih+jAw= cloud.google.com/go/webrisk v1.11.1 h1:yZKNB7zRxOMriLrhP5WDE+BjxXVl0wJHHZSdaYzbdVU= cloud.google.com/go/webrisk v1.11.1/go.mod h1:+9SaepGg2lcp1p0pXuHyz3R2Yi2fHKKb4c1Q9y0qbtA= +cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= +cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= +cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= +cloud.google.com/go/websecurityscanner v1.6.1/go.mod h1:Njgaw3rttgRHXzwCB8kgCYqv5/rGpFCsBOvPbYgszpg= cloud.google.com/go/websecurityscanner v1.6.4/go.mod h1:mUiyMQ+dGpPPRkHgknIZeCzSHJ45+fY4F52nZFDHm2o= cloud.google.com/go/websecurityscanner v1.7.3/go.mod h1:gy0Kmct4GNLoCePWs9xkQym1D7D59ld5AjhXrjipxSs= cloud.google.com/go/websecurityscanner v1.7.6 h1:cIPKJKZA3l7D8DfL4nxce8HGOWXBw3WAUBF0ymOW9GQ= cloud.google.com/go/websecurityscanner v1.7.6/go.mod h1:ucaaTO5JESFn5f2pjdX01wGbQ8D6h79KHrmO2uGZeiY= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= +cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= +cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= +cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvofaL6FqlET6g= cloud.google.com/go/workflows v1.12.3/go.mod h1:fmOUeeqEwPzIU81foMjTRQIdwQHADi/vEr1cx9R1m5g= cloud.google.com/go/workflows v1.13.3/go.mod h1:Xi7wggEt/ljoEcyk+CB/Oa1AHBCk0T1f5UH/exBB5CE= cloud.google.com/go/workflows v1.14.2 h1:phBz5TOAES0YGogxZ6Q7ISSudaf618lRhE3euzBpE9U= @@ -515,11 +1268,13 @@ codeberg.org/go-pdf/fpdf v0.10.0 h1:u+w669foDDx5Ds43mpiiayp40Ov6sZalgcPMDBcZRd4= codeberg.org/go-pdf/fpdf v0.10.0/go.mod h1:Y0DGRAdZ0OmnZPvjbMp/1bYxmIPxm0ws4tfoPOc4LjU= contrib.go.opencensus.io/exporter/stackdriver v0.13.14 h1:zBakwHardp9Jcb8sQHcHpXy/0+JIb1M8KjigCJzx7+4= contrib.go.opencensus.io/exporter/stackdriver v0.13.14/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20221208032759-85de2813cf6b h1:a26Bdkl2B9PmYN6vGXnnfB2UGKjz0Moif1aEg+xTd7M= dmitri.shuralyov.com/gpu/mtl v0.0.0-20221208032759-85de2813cf6b/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= eliasnaur.com/font v0.0.0-20230308162249-dd43949cb42d h1:ARo7NCVvN2NdhLlJE9xAbKweuI9L6UgfTbYb0YwPacY= eliasnaur.com/font v0.0.0-20230308162249-dd43949cb42d/go.mod h1:OYVuxibdk9OSLX8vAqydtRPP87PyTFcT9uH3MlEGBQA= +gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= gioui.org v0.0.0-20210822154628-43a7030f6e0b/go.mod h1:jmZ349gZNGWyc5FIv/VWLBQ32Ki/FOvTgEz64kh9lnk= gioui.org v0.2.0 h1:RbzDn1h/pCVf/q44ImQSa/J3MIFpY3OWphzT/Tyei+w= gioui.org v0.2.0/go.mod h1:1H72sKEk/fNFV+l0JNeM2Dt3co3Y4uaQcD+I+/GQ0e4= @@ -534,11 +1289,13 @@ gioui.org/x v0.2.0 h1:/MbdjKH19F16auv19UiQxli2n6BYPw7eyh9XBOTgmEw= gioui.org/x v0.2.0/go.mod h1:rCGN2nZ8ZHqrtseJoQxCMZpt2xrZUrdZ2WuMRLBJmYs= git.sr.ht/~jackmordaunt/go-toast v1.0.0 h1:bbRox6VkotdOj3QcWimZQ84APoszIsA/pSIj8ypDdV8= git.sr.ht/~jackmordaunt/go-toast v1.0.0/go.mod h1:aIuRX/HdBOz7yRS8rOVYQCwJQlFS7DbYBTpUV0SHeeg= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= git.sr.ht/~sbinet/gg v0.6.0 h1:RIzgkizAk+9r7uPzf/VfbJHBMKUr0F5hRFxTUGMnt38= git.sr.ht/~sbinet/gg v0.6.0/go.mod h1:uucygbfC9wVPQIfrmwM2et0imr8L7KQWywX0xpFMm94= git.wow.st/gmp/jni v0.0.0-20210610011705-34026c7e22d0 h1:bGG/g4ypjrCJoSvFrP5hafr9PPB5aw8SjcOWWila7ZI= git.wow.st/gmp/jni v0.0.0-20210610011705-34026c7e22d0/go.mod h1:+axXBRUTIDlCeE73IKeD/os7LoEnTKdkp8/gQOFjqyo= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.2 h1:DBjmt6/otSdULyJdVg2BlG0qGZO5tKL4VzOs0jpvw5Q= github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.2/go.mod h1:dppbR7CwXD4pgtV9t3wD1812RaLDcBjtblcDF5f1vI0= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY= @@ -550,13 +1307,18 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0/go.mod h1:SZiPHWGOOk3bl8tkevxkoiwPgsIl6CwrWcbwjfHZpdM= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 h1:6/0iUd0xrnX7qt+mLNRwg5c0PGv8wpE8K90ryANQwMI= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0/go.mod h1:otE2jQekW/PqXk1Awf5lmfokJx4uwuqcj1ab5SpGeW0= +github.com/GoogleCloudPlatform/testgrid v0.0.173 h1:NyHqWe5gJW9G22VjwTBYpQniMfgQFKNm5OpLaRop97s= +github.com/GoogleCloudPlatform/testgrid v0.0.173/go.mod h1:lOKP2QzzzIDB4D0nJs1BcNMzJErjrlTNqG3vsCddx8c= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= github.com/Shopify/sarama v1.19.0 h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= @@ -568,19 +1330,30 @@ github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 h1:rFw4nCn9iMW+Vaj github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9 h1:7kQgkwGRoLzC9K0oyXdJo7nve/bynv/KwUsxbiTlzAM= github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19 h1:iXUgAaqDcIUGbRoy2TdeofRG/j1zpGRSEmNK05T+bi8= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY= github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0 h1:uF5Q/hWnDU1XZeT6CsrRSxHLroUSEYYO3kgES+yd+So= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0/go.mod h1:ccdDYaY5+gO+cbnQdFxEXqfy0RkoV25H3jLXUDNM3wg= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9 h1:goHVqTbFX3AIo0tzGr14pgfAW2ZfPChKO21Z9MGf/gk= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= github.com/apache/arrow/go/v10 v10.0.1 h1:n9dERvixoC/1JjDmBcs9FPaEryoANa2sCgVFo6ez9cI= +github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= github.com/apache/arrow/go/v11 v11.0.0 h1:hqauxvFQxww+0mEU/2XHG6LT7eZternCZq+A5Yly2uM= +github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= +github.com/apache/arrow/go/v12 v12.0.0/go.mod h1:d+tV/eHZZ7Dz7RPrFKtPK02tpr+c9/PEd/zm8mDS9Vg= github.com/apache/arrow/go/v12 v12.0.1 h1:JsR2+hzYYjgSUkBSaahpqCetqZMr76djX80fF/DiJbg= github.com/apache/arrow/go/v12 v12.0.1/go.mod h1:weuTY7JvTG/HDPtMQxEUp7pU73vkLWMLpY67QwZ/WWw= github.com/apache/arrow/go/v15 v15.0.2 h1:60IliRbiyTWCWjERBCkO1W4Qun9svcYoZrSLcyOsMLE= @@ -588,6 +1361,7 @@ github.com/apache/arrow/go/v15 v15.0.2/go.mod h1:DGXsR3ajT524njufqf95822i+KTh+ye github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY= +github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= @@ -595,9 +1369,11 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a h1:pv34s756C4pEXnjgPfGYgdhg/ZdajGhyOvzx8k+23nw= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= @@ -609,8 +1385,12 @@ github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWp github.com/aymanbagabas/go-udiff v0.2.0/go.mod h1:RE4Ex0qsGkTAJoQdQQCA0uG+nAzJO/pI/QwceO5fgrA= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= github.com/bufbuild/protovalidate-go v0.2.1 h1:pJr07sYhliyfj/STAM7hU4J3FKpVeLVKvOBmOTN8j+s= @@ -622,13 +1402,21 @@ github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEe github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a h1:G99klV19u0QnhiizODirwVksQB91TJKV/UaTnACcG30= github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec h1:EdRZT3IeKQmfCSrgo8SZ8V3MEnskuJP0wCYNpe+aiXo= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= @@ -637,7 +1425,20 @@ github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a/go.mod h1:rzgs2 github.com/cloudflare/circl v1.1.0 h1:bZgT/A+cikZnKIwn7xL2OBj012Bmvho/o6RpRvv3GKY= github.com/cloudflare/redoctober v0.0.0-20211013234631-6a74ccc611f6 h1:QKzett0dn5FhjcIHNKSClEilabfhWCnsdijq3ftm9Ms= github.com/cloudflare/redoctober v0.0.0-20211013234631-6a74ccc611f6/go.mod h1:Ikt4Wfpln1YOrak+auA8BNxgiilj0Y2y7nO+aN2eMzk= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nCtnAiZdYFd45cYZPs8vOOIYKfk= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= @@ -658,7 +1459,9 @@ github.com/cristalhq/acmd v0.12.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgB github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= @@ -670,124 +1473,271 @@ github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= +github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= +github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI= +github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= +github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= +github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= +github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/esiqveland/notify v0.11.0 h1:0WJ/xW+3Ln8uRBYntG7f0XihXxnlOaQTdha1yyzXz30= github.com/esiqveland/notify v0.11.0/go.mod h1:63UbVSaeJwF0LVJARHFuPgUAoM7o1BEvCZyknsuonBc= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db h1:gb2Z18BhTPJPpLQWj4T+rfKHYCHxRHCtRxhKKjRidVw= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8 h1:a9ENSRDFBUPkJ5lCgVZh26+ZbGyoVJG7yb5SSzF5H54= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fullstorydev/grpcurl v1.8.9 h1:JMvZXK8lHDGyLmTQ0ZdGDnVVGuwjbpaumf8p42z0d+c= github.com/fullstorydev/grpcurl v1.8.9/go.mod h1:PNNKevV5VNAV2loscyLISrEnWQI61eqR0F8l3bVadAA= github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw= +github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/getsentry/sentry-go v0.11.0 h1:qro8uttJGvNAMr5CLcFI9CHR0aDzXl0Vs3Pmw/oTPg8= github.com/getsentry/sentry-go v0.11.0/go.mod h1:KBQIxiZAetw62Cj8Ri964vAEWVdgfaUCn30Q3bCvANo= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-chi/chi v1.5.4 h1:QHdzF2szwjqVV4wmByUnTcsbIg7UGaQ0tPF2t5GcAIs= +github.com/go-chi/chi v1.5.4/go.mod h1:uaf8YgoFazUOkPBG7fxPftUylNumIev9awIWOENIuEg= github.com/go-fonts/dejavu v0.3.2 h1:3XlHi0JBYX+Cp8n98c6qSoHrxPa4AUKDMKdrh/0sUdk= github.com/go-fonts/dejavu v0.3.2/go.mod h1:m+TzKY7ZEl09/a17t1593E4VYW8L1VaBXHzFZOIjGEY= +github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= github.com/go-fonts/latin-modern v0.3.2 h1:M+Sq24Dp0ZRPf3TctPnG1MZxRblqyWC/cRUL9WmdaFc= github.com/go-fonts/latin-modern v0.3.2/go.mod h1:9odJt4NbRrbdj4UAMuLVd4zEukf6aAEKnDaQga0whqQ= +github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= github.com/go-fonts/liberation v0.3.2 h1:XuwG0vGHFBPRRI8Qwbi5tIvR3cku9LUfZGq/Ar16wlQ= github.com/go-fonts/liberation v0.3.2/go.mod h1:N0QsDLVUQPy3UYg9XAc3Uh3UDMp2Z7M1o4+X98dXkmI= +github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-fonts/stix v0.2.2 h1:v9krocr13J1llaOHLEol1eaHsv8S43UuFX/1bFgEJJ4= github.com/go-fonts/stix v0.2.2/go.mod h1:SUxggC9dxd/Q+rb5PkJuvfvTbOPtNc2Qaua00fIp9iU= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231223183121-56fa3ac82ce7 h1:7tf/0aw5DxRQjr7WaNqgtjidub6v21L2cogKIbMcTYw= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231223183121-56fa3ac82ce7/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-jose/go-jose/v4 v4.0.4/go.mod h1:NKb5HO1EZccyMpiZNbdUw/14tiXNyUJh188dfnMCAfc= github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI= github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/log v0.1.0 h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-latex/latex v0.0.0-20231108140139-5c1ce85aa4ea h1:DfZQkvEbdmOe+JK2TMtBM+0I9GSdzE2y/L1/AmD8xKc= github.com/go-latex/latex v0.0.0-20231108140139-5c1ce85aa4ea/go.mod h1:Y7Vld91/HRbTBm7JwoI7HejdDB0u+e9AUBO9MB7yuZk= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= +github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.9.0 h1:PPvSaUuo1iMi9KkaAn90NuKi+P4gwMedWPHhj8YlJQw= github.com/go-pdf/fpdf v0.9.0/go.mod h1:oO8N111TkmKb9D7VvWGLvLJlaZUQVPM+6V42pp3iV4Y= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372 h1:FQivqchis6bE2/9uF70M2gmmLpe82esEm2QadL0TEJo= github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372/go.mod h1:evDBbvNR/KaVFZ2ZlDSOWWXIUKq0wCOEtzLxRM8SG3k= github.com/go-text/typesetting-utils v0.0.0-20230616150549-2a7df14b6a22 h1:LBQTFxP2MfsyEDqSKmUBZaDuDHN1vpqDyOZjcqS7MYI= github.com/go-text/typesetting-utils v0.0.0-20230616150549-2a7df14b6a22/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o= github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198 h1:FSii2UQeSLngl3jFoR4tUKZLprO7qUlh/TKKticc0BM= github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198/go.mod h1:DTh/Y2+NbnOVVoypCCQrovMPDKUGp4yZpSbWg5D0XIM= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/googleapis v1.1.0 h1:kFkMAZBNAn4j7K0GiZr8cRYzejq68VbheufiV3YuyFI= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I= github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/cel-go v0.17.1 h1:s2151PDGy/eqpCI80/8dl4VL3xTkqI/YubXLXCFw0mw= github.com/google/cel-go v0.17.1/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= +github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/generative-ai-go v0.20.1 h1:6dEIujpgN2V0PgLhr6c/M1ynRdc7ARtiIDPFzj45uNQ= github.com/google/generative-ai-go v0.20.1/go.mod h1:TjOnZJmZKzarWbjUJgy+r3Ee7HGBRVLhOIgupnwR4Bg= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= +github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v50 v50.2.0 h1:j2FyongEHlO9nxXLc+LP3wuBSVU9mVxfpdYUexMpIfk= +github.com/google/go-github/v60 v60.0.0 h1:oLG98PsLauFvvu4D/YPxq374jhSxFYdzQGNCyONLfn8= +github.com/google/go-github/v60 v60.0.0/go.mod h1:ByhX2dP9XT9o/ll2yXAu2VD8l5eNVg8hD4Cr0S/LmQk= +github.com/google/go-pkcs11 v0.2.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= github.com/google/go-pkcs11 v0.3.0 h1:PVRnTgtArZ3QQqTGtbtjtnIkzl2iY2kt24yqbrf7td8= github.com/google/go-pkcs11 v0.3.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM= +github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= github.com/google/trillian v1.6.0 h1:jMBeDBIkINFvS2n6oV5maDqfRlxREAc6CW9QYWQ0qT4= github.com/google/trillian v1.6.0/go.mod h1:Yu3nIMITzNhhMJEHjAtp6xKiu+H/iHu2Oq5FjV2mCWI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/cloud-bigtable-clients-test v0.0.3 h1:afMKTvA/jc6jSTMkeHBZGFDTt8Cc+kb1ATFzqMK85hw= github.com/googleapis/cloud-bigtable-clients-test v0.0.3/go.mod h1:TWtDzrrAI70C3dNLDY+nZN3gxHtFdZIbpL9rCTFyxE0= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= +github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8 h1:tlyzajkF3030q6M8SvmJSemC9DTHL/xaMa18b65+JM4= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= @@ -799,6 +1749,7 @@ github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= @@ -806,11 +1757,16 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92Bcuy github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/hashicorp/consul/api v1.3.0 h1:HXNYlRkkM/t+Y/Yhxtwcy02dlYwIaoxzvxPnS+cqy78= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.3.0 h1:UOxjlb4xVNF93jak1mzzoBatyFju9nrkxpVwIp/QqxQ= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= @@ -819,6 +1775,7 @@ github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqk github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= @@ -830,7 +1787,9 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= @@ -842,11 +1801,15 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0 h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= @@ -867,24 +1830,44 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5 h1:PJr+ZMXIecYc1Ey2zucXdR73SMBtgjPgwa31099IMv0= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= +github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/kylelemons/go-gypsy v1.0.0 h1:7/wQ7A3UL1bnqRMnZ6T8cwCOArfZCxFmb1iTxaOOo1s= github.com/kylelemons/go-gypsy v1.0.0/go.mod h1:chkXM0zjdpXOiqkCW1XcCHDfjfk14PH2KKkQWxfJUcU= @@ -896,7 +1879,10 @@ github.com/lightstep/lightstep-tracer-go v0.18.1 h1:vi1F1IQ8N7hNWytK9DpJsUfQhGuN github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star v0.6.1 h1:erE0rdztuaDq3bpGifD95wfoPrSZc95nGA6tbiNYh6M= +github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4 h1:sIXJOMrYnQZJu7OB7ANSF4MYri2fTEGIsRLz6LwI4xE= github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/lyft/protoc-gen-validate v0.0.13 h1:KNt/RhmQTOLr7Aj8PsJ7mTronaFyx80mRTT9qF261dA= @@ -906,11 +1892,18 @@ github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXq github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mgechev/dots v1.0.0 h1:o+4OJ3OjWzgQHGJXKfJ8rbH4dqDugu5BiEy84nxg0k4= github.com/mgechev/dots v1.0.0/go.mod h1:rykuMydC9t3wfkM+ccYH3U3ss03vZGg6h3hmOznXLH0= github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA= @@ -918,7 +1911,9 @@ github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3N github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU= github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -929,14 +1924,25 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5 h1:0KqC6/sLy7fDpBdybhVkkv4Yz+PmB7c9Dz9z3dLW804= github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= github.com/mreiferson/go-httpclient v0.0.0-20201222173833-5e475fde3a4d h1:tLWCMSjfL8XyZwpu1RzI2UpJSPbZCOZ6DVHQFnlpL7A= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= @@ -949,7 +1955,9 @@ github.com/nats-io/nkeys v0.1.3 h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/oklog v0.3.2 h1:wVfs8F+in6nTBMkA7CbRw+zZMIB7nNM825cM1wuzoTk= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= @@ -957,9 +1965,35 @@ github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQ github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0 h1:LiZB1h0GIcudcDci2bxbqI6DXV8bF8POAnArqvRrIyw= github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0/go.mod h1:F/7q8/HZz+TXjlsoZQQKVYvXTZaFH4QRa3y+j1p7MS0= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= +github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= +github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0= +github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= +github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw= +github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= +github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc= +github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk= +github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= +github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= +github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM= +github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= +github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM= +github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= +github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= +github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw= +github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= @@ -984,40 +2018,69 @@ github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtP github.com/performancecopilot/speed v3.0.0+incompatible h1:2WnRzIquHa5QxaJKShDkLM+sc0JPuwhXzK8OYOyt3Vg= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/phpdave11/gofpdf v1.4.2 h1:KPKiIbfwbvC/wOncwhrpRdXVj2CZTCFlw4wnoyjtHfQ= +github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= +github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/phpdave11/gofpdi v1.0.13 h1:o61duiW8M9sMlkVXWlvP92sZJtGKENvW3VExs6dZukQ= +github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1 h1:F++O52m40owAmADcojzM+9gyjmMOY/T4oYJkgFDH8RE= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1 h1:I2qBYMChEhIjOgazfJmV3/mZM256btk6wkCDRmW7JYs= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/prometheus v0.47.2 h1:jWcnuQHz1o1Wu3MZ6nMJDuTI0kU5yJp9pkxh8XEkNvI= github.com/prometheus/prometheus v0.47.2/go.mod h1:J/bmOSjgH7lFxz2gZhrWEZs2i64vMS+HIuZfmYNhJ/M= github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71 h1:CNooiryw5aisadVfzneSZPswRWvnVW8hF1bS/vo8ReI= github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= @@ -1027,7 +2090,9 @@ github.com/rs/zerolog v1.21.0 h1:Q3vdXlfLNT+OftyBHsU0Y445MD+8m8axjKgf2si0QcM= github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= @@ -1035,12 +2100,15 @@ github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0 github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= +github.com/sethvargo/go-retry v0.2.4/go.mod h1:1afjQuvh7s4gflMObvjLPaWgluLLyhA1wmVZ6KLpICw= github.com/shirou/gopsutil/v4 v4.25.8 h1:NnAsw9lN7587WHxjJA9ryDnqhJpFH6A+wagYWTOH970= github.com/shirou/gopsutil/v4 v4.25.8/go.mod h1:q9QdMmfAOVIw7a+eF86P7ISEU6ka+NLgkUxlopV4RwI= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= @@ -1050,6 +2118,11 @@ github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4k github.com/sony/gobreaker v0.4.1 h1:oMnRNZXX5j85zso6xCPRNPtmAycat+WcoKbklScLDgQ= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= @@ -1057,6 +2130,7 @@ github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0 github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -1064,6 +2138,14 @@ github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271 h1:WhxRHzgeVGETMlmV github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a h1:AhmOdSHeswKHBjhsLs/7+1voOxT+LLrSk/Nxvk35fug= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= @@ -1092,9 +2174,11 @@ github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 h1:Nzukz5fNOBIHOsnP+6I79kPx3QhLv8nBy2mfFhBRq30= @@ -1110,7 +2194,15 @@ go.etcd.io/etcd/raft/v3 v3.5.12 h1:7r22RufdDsq2z3STjoR7Msz6fYH8tmbkdheGfwJNRmU= go.etcd.io/etcd/raft/v3 v3.5.12/go.mod h1:ERQuZVe79PI6vcC3DlKBukDCLja/L7YMu29B74Iwj4U= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= go.opentelemetry.io/contrib/detectors/gcp v1.36.0 h1:F7q2tNlCaHY9nMKHR6XH9/qkp8FktLnIcy6jJNyOCQw= go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k= @@ -1147,6 +2239,9 @@ go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40 go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -1164,21 +2259,57 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20210722180016-6781d3edade3/go.mod h1:DVyR6MI7P4kEQgvZJSj1fQGrWIi2RzIrfYWycwheUAc= +golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/exp v0.0.0-20221012211006-4de253d81b95/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= golang.org/x/exp/shiny v0.0.0-20220827204233-334a2380cb91/go.mod h1:VjAR7z0ngyATZTELrBSkxOOHhhlnVUxDye4mcjx5h/8= golang.org/x/exp/shiny v0.0.0-20240707233637-46b078467d37/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c h1:jTMrjjZRcSH/BDxWhXCP6OWsfVgmnwI7J+F4/nyVXaU= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/image v0.5.0/go.mod h1:FVC7BI/5Ym8R25iw5OLsgshdUBbT1h5jZTpA+mvAdZ4= golang.org/x/image v0.12.0/go.mod h1:Lu90jvHG7GfemOIcldsh9A2hS01ocl6oNO7ype5mEnk= golang.org/x/image v0.13.0/go.mod h1:6mmbMOeV28HuMTgA6OSRkdXKYw/t5W9Uwn2Yv1r3Yxk= @@ -1187,21 +2318,90 @@ golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78 golang.org/x/image v0.24.0/go.mod h1:4b/ITuLfqYq1hqZcjofwctIhi7sZh2WaCjvsBNjjya8= golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ= golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mobile v0.0.0-20201217150744-e6ae53a27f4f/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4= golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a h1:sYbmY3FwUWCBTodZL1S3JUuOvaW6kM2o+clDzzDNBWg= golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a/go.mod h1:Ede7gF0KGoHlj822RtphAHK1jLdrcuRBZg0sF1Q+SPc= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= @@ -1212,25 +2412,136 @@ golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= +golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= +golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= +golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -1239,6 +2550,20 @@ golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= @@ -1249,28 +2574,167 @@ golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= +gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= gonum.org/v1/gonum v0.15.1/go.mod h1:eZTZuRFrzu5pcyjN5wJhcIhnUdNijYxX1T2IcrOGY0o= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= gonum.org/v1/plot v0.15.2 h1:Tlfh/jBk2tqjLZ4/P8ZIwGrLEWQSPDLRm/SNWKNXiGI= gonum.org/v1/plot v0.15.2/go.mod h1:DX+x+DWso3LTha+AdkJEv5Txvi+Tql3KAGkehP0/Ubg= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= +google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= +google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= +google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= +google.golang.org/api v0.118.0/go.mod h1:76TtD3vkgmZ66zZzp72bUUklpmQmKlhh6sYtIjYK+5E= +google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= +google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= +google.golang.org/api v0.125.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= +google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= +google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= +google.golang.org/api v0.134.0/go.mod h1:sjRL3UnjTx5UqNQS9EWr9N8p7xbHpy1k0XGRLCf3Spk= google.golang.org/api v0.160.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= google.golang.org/api v0.222.0/go.mod h1:efZia3nXpWELrwMlN5vyQrD4GmJN1Vw0x68Et3r+a9c= google.golang.org/api v0.229.0/go.mod h1:wyDfmq5g1wYJWn29O22FDWN48P7Xcz0xz+LBpptYvB0= @@ -1279,15 +2743,166 @@ google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkK google.golang.org/api v0.246.0 h1:H0ODDs5PnMZVZAEtdLMn2Ul2eQi7QNjqM2DIFp8TlTM= google.golang.org/api v0.246.0/go.mod h1:dMVhVcylamkirHdzEBAIQWUCgqY885ivNeZYd7VAVr8= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= +google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= +google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= +google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY= +google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= +google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= +google.golang.org/genproto v0.0.0-20230629202037-9506855d4529/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= +google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y= +google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:0ggbjUrZYpy1q+ANUS30SEoGZ53cdfwtbuG7Ptgy108= +google.golang.org/genproto v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= google.golang.org/genproto v0.0.0-20250122153221-138b5a5a4fd4/go.mod h1:qbZzneIOXSq+KFAFut9krLfRLZiFLzZL5u2t8SV83EE= google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE= google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:mPBs5jNgx2GuQGvFwUvVKqtn6HsUw9nP64BedgvqEsQ= +google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= google.golang.org/genproto/googleapis/api v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:B5xPO//w8qmBDjGReYLpR6UJPnkldGkCSMoH/2vxJeg= google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= @@ -1299,8 +2914,19 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2/go. google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20230720185612-659f7aaaa771/go.mod h1:3QoBVwTHkXbY1oRGzlhwhOykfcATQN43LJ6iT8Wy8kE= google.golang.org/genproto/googleapis/bytestream v0.0.0-20250728155136-f173205681a0 h1:HyHZz/b6hYFm/aS2F0DOAyjK5mQw0Jh8YiZyqlXMfic= google.golang.org/genproto/googleapis/bytestream v0.0.0-20250728155136-f173205681a0/go.mod h1:h6yxum/C2qRb4txaZRLDHK8RyS0H/o2oEDeKY4onY/Y= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= @@ -1315,11 +2941,53 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= +google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= +google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= @@ -1332,8 +3000,23 @@ google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7E google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20 h1:MLBCGN1O7GzIx+cBiwfYPwtmZ41U3Mn/cotLJciaArI= google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20/go.mod h1:Nr5H8+MlGWr5+xX/STzdoEqJrO+YteqFbMyCsrb6mH0= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= @@ -1341,14 +3024,19 @@ google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojt google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= @@ -1356,38 +3044,123 @@ gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg= gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.27.4 h1:0pCo/AN9hONazBKlNUdhQymmnfLRbSZjd5H5H3f0bSs= +k8s.io/api v0.27.4/go.mod h1:O3smaaX15NfxjzILfiln1D8Z3+gEYpjEpiNA/1EVK1Y= k8s.io/apimachinery v0.27.4 h1:CdxflD4AF61yewuid0fLl6bM4a3q04jWel0IlP+aYjs= +k8s.io/apimachinery v0.27.4/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c h1:GohjlNKauSai7gN4wsJkeZ3WAJx4Sh+oT/b5IYn5suA= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f h1:2kWPakN3i/k81b0gvD5C5FJ2kxm1WrQFanWchyKuqGg= +k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f/go.mod h1:byini6yhqGC14c3ebc/QwanvYwhuMWF6yz2F8uwW8eg= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20230209194617-a36077c30491/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.37.0/go.mod h1:vtL+3mdHx/wcj3iEGz84rQa8vEqR6XM84v5Lcvfph20= modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw= +modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= +modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= +modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= +modernc.org/ccgo/v3 v3.0.0-20220904174949-82d86e1b6d56/go.mod h1:YSXjPL62P2AMSxBphRHPn7IkzhVHqkvOnRKAKh+W6ZI= +modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= +modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= +modernc.org/ccgo/v3 v3.16.13-0.20221017192402-261537637ce8/go.mod h1:fUB3Vn0nVPReA+7IG7yZDfjv1TMWjhQP8gCxrFAtL5g= modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw= +modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= +modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= +modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= +modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= +modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= +modernc.org/libc v1.17.4/go.mod h1:WNg2ZH56rDEwdropAJeZPQkXmDwh+JCA1s/htl6r2fA= +modernc.org/libc v1.18.0/go.mod h1:vj6zehR5bfc98ipowQOM2nIDUZnVew/wNC/2tOGS+q0= +modernc.org/libc v1.20.3/go.mod h1:ZRfIaEkgrYgZDl6pa4W39HgN5G/yDW+NRmNKZBDFrk0= +modernc.org/libc v1.21.4/go.mod h1:przBsL5RDOZajTVslkugzLBj1evTue36jEomFQOoYuI= modernc.org/libc v1.22.2 h1:4U7v51GyhlWqQmwCHj28Rdq2Yzwk55ovjFrdPjs8Hb0= +modernc.org/libc v1.22.2/go.mod h1:uvQavJ1pZ0hIoC/jfqNoMLURIMhKzINIWypNM17puug= +modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/memory v1.3.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/memory v1.4.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= +modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= modernc.org/sqlite v1.18.2 h1:S2uFiaNPd/vTAP/4EmyY8Qe2Quzu26A2L1e25xRNTio= +modernc.org/sqlite v1.18.2/go.mod h1:kvrTLEWgxUcHa2GfHBQtanR1H9ht3hTJNtKpzH9k1u0= +modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= modernc.org/tcl v1.13.2 h1:5PQgL/29XkQ9wsEmmNPjzKs+7iPCaYqUJAhzPvQbjDA= +modernc.org/tcl v1.13.2/go.mod h1:7CLiGIPo1M8Rv1Mitpv5akc2+8fxUd2y2UzC/MfMzy0= +modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= +modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/z v1.5.1 h1:RTNHdsrOpeoSeOF4FbzTo8gBYByaJ5xT7NgZ9ZqRiJM= +modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= +sigs.k8s.io/structured-merge-diff/v4 v4.3.0/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/pkg/go.mod b/pkg/go.mod index 7d8ede259deb..2532c8f35098 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -26,8 +26,8 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.44.0 // indirect golang.org/x/text v0.29.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/protobuf v1.36.9 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index dd04253d415e..cbed1e92f66e 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -61,12 +61,12 @@ golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/server/go.mod b/server/go.mod index 7c3ccda90958..cb18b8bcd7c5 100644 --- a/server/go.mod +++ b/server/go.mod @@ -16,7 +16,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 @@ -40,9 +40,9 @@ require ( golang.org/x/crypto v0.42.0 golang.org/x/net v0.44.0 golang.org/x/time v0.13.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 + google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 google.golang.org/grpc v1.75.1 - google.golang.org/protobuf v1.36.9 + google.golang.org/protobuf v1.36.10 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.6.0 ) @@ -72,7 +72,7 @@ require ( go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index ef447a3c7cf5..63030f1a8f8e 100644 --- a/server/go.sum +++ b/server/go.sum @@ -42,8 +42,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -168,14 +168,14 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tests/go.mod b/tests/go.mod index fde1bca8d8bb..fcb53aaabb22 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -24,7 +24,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/olekukonko/tablewriter v1.1.0 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 @@ -51,7 +51,7 @@ require ( golang.org/x/sync v0.17.0 golang.org/x/time v0.13.0 google.golang.org/grpc v1.75.1 - google.golang.org/protobuf v1.36.9 + google.golang.org/protobuf v1.36.10 ) require ( @@ -100,8 +100,8 @@ require ( golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index d99678c68597..6e8739066ffc 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -76,8 +76,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -254,10 +254,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -265,8 +265,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 0b72dad41d45..8227a0ff30e6 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -13,7 +13,7 @@ require ( github.com/golangci/golangci-lint/v2 v2.5.0 github.com/google/addlicense v1.2.0 github.com/google/yamlfmt v0.17.2 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/ryancurrah/gomodguard v1.4.1 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 @@ -247,10 +247,10 @@ require ( golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053 // indirect golang.org/x/term v0.35.0 // indirect golang.org/x/text v0.29.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/grpc v1.75.1 // indirect - google.golang.org/protobuf v1.36.9 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect mvdan.cc/gofumpt v0.9.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 26934bfd1695..f335d1967bac 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -253,8 +253,8 @@ github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXS github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= @@ -719,10 +719,10 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= @@ -730,8 +730,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 4f2deebf3eb2..44d451d8c652 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -18,6 +18,6 @@ require ( golang.org/x/net v0.44.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/grpc v1.75.1 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 780957695829..e2aa9b4ccc17 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1844,8 +1844,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= From 457875770cfb757592d9f953bfc82188351f6be1 Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 7 Oct 2025 23:15:24 +0800 Subject: [PATCH 0578/1068] dependency: bump google.golang.org/protobuf from 1.36.9 to 1.36.10 Signed-off-by: joshjms --- go.work.sum | 1772 +------------------------------- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 +- 3 files changed, 4 insertions(+), 1774 deletions(-) diff --git a/go.work.sum b/go.work.sum index d0c07afd496f..d483ea319dbb 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,7 +1,6 @@ bitbucket.org/creachadair/shell v0.0.8 h1:3yM6JcAfaGWzjzcCamTblzSIWXm/YSs0PFGIzBm2HTo= bitbucket.org/creachadair/shell v0.0.8/go.mod h1:vINzudofoUXZSJ5tREgpy+Etyjsag3ait5WOWImEVZ0= bitbucket.org/creachadair/stringset v0.0.11 h1:6Sv4CCv14Wm+OipW4f3tWOb0SQVpBDLW0knnJqUnmZ8= -bitbucket.org/creachadair/stringset v0.0.11/go.mod h1:wh0BHewFe+j0HrzWz7KcGbSNpFzWwnpmgPRlB57U5jU= bitbucket.org/liamstask/goose v0.0.0-20150115234039-8488cc47d90c h1:bkb2NMGo3/Du52wvYj9Whth5KZfMV6d3O0Vbr3nz/UE= bitbucket.org/liamstask/goose v0.0.0-20150115234039-8488cc47d90c/go.mod h1:hSVuE3qU7grINVSwrmzHfpg9k87ALBk+XaualNyUzI4= buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20230802163732-1c33ebd9ecfa.1 h1:tdpHgTbmbvEIARu+bixzmleMi14+3imnpoFXz+Qzjp4= @@ -10,47 +9,6 @@ cel.dev/expr v0.15.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg= cel.dev/expr v0.20.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= -cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= -cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= -cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= -cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= -cloud.google.com/go v0.110.6/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= -cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= cloud.google.com/go v0.118.2/go.mod h1:CFO4UPEPi8oV21xoezZCrd3d81K4fFkDTEJu4R8K+9M= cloud.google.com/go v0.118.3/go.mod h1:Lhs3YLnBlwJ4KA6nuObNMZ/fCbOQBPuWKPoE0Wa/9Vc= @@ -58,129 +16,53 @@ cloud.google.com/go v0.120.0/go.mod h1:/beW32s8/pGRuj4IILWQNd4uuebeT4dkOhKmkfit6 cloud.google.com/go v0.121.0/go.mod h1:rS7Kytwheu/y9buoDmu5EIpMMCI4Mb8ND4aeN4Vwj7Q= cloud.google.com/go v0.121.2 h1:v2qQpN6Dx9x2NmwrqlesOt3Ys4ol5/lFZ6Mg1B7OJCg= cloud.google.com/go v0.121.2/go.mod h1:nRFlrHq39MNVWu+zESP2PosMWA0ryJw8KUBZ2iZpxbw= -cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= -cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= -cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= -cloud.google.com/go/accessapproval v1.7.1/go.mod h1:JYczztsHRMK7NTXb6Xw+dwbs/WnOJxbo/2mTI+Kgg68= cloud.google.com/go/accessapproval v1.7.4/go.mod h1:/aTEh45LzplQgFYdQdwPMR9YdX0UlhBmvB84uAmQKUc= cloud.google.com/go/accessapproval v1.8.3/go.mod h1:3speETyAv63TDrDmo5lIkpVueFkQcQchkiw/TAMbBo4= cloud.google.com/go/accessapproval v1.8.6 h1:UkmDPCKvj24bkGVrvgJPcgSDkmIPw/bAmOiDb9avOiE= cloud.google.com/go/accessapproval v1.8.6/go.mod h1:FfmTs7Emex5UvfnnpMkhuNkRCP85URnBFt5ClLxhZaQ= -cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= -cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= -cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= -cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= -cloud.google.com/go/accesscontextmanager v1.8.0/go.mod h1:uI+AI/r1oyWK99NN8cQ3UK76AMelMzgZCvJfsi2c+ps= -cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= cloud.google.com/go/accesscontextmanager v1.8.4/go.mod h1:ParU+WbMpD34s5JFEnGAnPBYAgUHozaTmDJU7aCU9+M= cloud.google.com/go/accesscontextmanager v1.9.3/go.mod h1:S1MEQV5YjkAKBoMekpGrkXKfrBdsi4x6Dybfq6gZ8BU= cloud.google.com/go/accesscontextmanager v1.9.6 h1:2LnncRqfYB8NEdh9+FeYxAt9POTW/0zVboktnRlO11w= cloud.google.com/go/accesscontextmanager v1.9.6/go.mod h1:884XHwy1AQpCX5Cj2VqYse77gfLaq9f8emE2bYriilk= cloud.google.com/go/ai v0.12.1 h1:m1n/VjUuHS+pEO/2R4/VbuuEIkgk0w67fDQvFaMngM0= cloud.google.com/go/ai v0.12.1/go.mod h1:5vIPNe1ZQsVZqCliXIPL4QnhObQQY4d9hAGHdVc4iw4= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= -cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= -cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= -cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= -cloud.google.com/go/aiplatform v1.45.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= -cloud.google.com/go/aiplatform v1.48.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= cloud.google.com/go/aiplatform v1.58.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= cloud.google.com/go/aiplatform v1.74.0/go.mod h1:hVEw30CetNut5FrblYd1AJUWRVSIjoyIvp0EVUh51HA= cloud.google.com/go/aiplatform v1.89.0 h1:niSJYc6ldWWVM9faXPo1Et1MVSQoLvVGriD7fwbJdtE= cloud.google.com/go/aiplatform v1.89.0/go.mod h1:TzZtegPkinfXTtXVvZZpxx7noINFMVDrLkE7cEWhYEk= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= -cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= -cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= -cloud.google.com/go/analytics v0.21.2/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= -cloud.google.com/go/analytics v0.21.3/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= cloud.google.com/go/analytics v0.22.0/go.mod h1:eiROFQKosh4hMaNhF85Oc9WO97Cpa7RggD40e/RBy8w= cloud.google.com/go/analytics v0.26.0/go.mod h1:KZWJfs8uX/+lTjdIjvT58SFa86V9KM6aPXwZKK6uNVI= cloud.google.com/go/analytics v0.28.1 h1:W2ft49J/LeEj9A07Jsd5Q2kAzajK0j0IffOyyzbxw04= cloud.google.com/go/analytics v0.28.1/go.mod h1:iPaIVr5iXPB3JzkKPW1JddswksACRFl3NSHgVHsuYC4= -cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= -cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= -cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= -cloud.google.com/go/apigateway v1.6.1/go.mod h1:ufAS3wpbRjqfZrzpvLC2oh0MFlpRJm2E/ts25yyqmXA= cloud.google.com/go/apigateway v1.6.4/go.mod h1:0EpJlVGH5HwAN4VF4Iec8TAzGN1aQgbxAWGJsnPCGGY= cloud.google.com/go/apigateway v1.7.3/go.mod h1:uK0iRHdl2rdTe79bHW/bTsKhhXPcFihjUdb7RzhTPf4= cloud.google.com/go/apigateway v1.7.6 h1:do+u3rjDYuTxD2ypRfv4uwTMoy/VHFLclvaYcb5Mv6I= cloud.google.com/go/apigateway v1.7.6/go.mod h1:SiBx36VPjShaOCk8Emf63M2t2c1yF+I7mYZaId7OHiA= -cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= -cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= -cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= -cloud.google.com/go/apigeeconnect v1.6.1/go.mod h1:C4awq7x0JpLtrlQCr8AzVIzAaYgngRqWf9S5Uhg+wWs= cloud.google.com/go/apigeeconnect v1.6.4/go.mod h1:CapQCWZ8TCjnU0d7PobxhpOdVz/OVJ2Hr/Zcuu1xFx0= cloud.google.com/go/apigeeconnect v1.7.3/go.mod h1:2ZkT5VCAqhYrDqf4dz7lGp4N/+LeNBSfou8Qs5bIuSg= cloud.google.com/go/apigeeconnect v1.7.6 h1:ijEJSni5xROOn1YyiHgqcW0B0TWr0di9VgIi2gvyNjY= cloud.google.com/go/apigeeconnect v1.7.6/go.mod h1:zqDhHY99YSn2li6OeEjFpAlhXYnXKl6DFb/fGu0ye2w= -cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= -cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= -cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= -cloud.google.com/go/apigeeregistry v0.7.1/go.mod h1:1XgyjZye4Mqtw7T9TsY4NW10U7BojBvG4RMD+vRDrIw= cloud.google.com/go/apigeeregistry v0.8.2/go.mod h1:h4v11TDGdeXJDJvImtgK2AFVvMIgGWjSb0HRnBSjcX8= cloud.google.com/go/apigeeregistry v0.9.3/go.mod h1:oNCP2VjOeI6U8yuOuTmU4pkffdcXzR5KxeUD71gF+Dg= cloud.google.com/go/apigeeregistry v0.9.6 h1:TgdjAoGoRY81DEc2LYsYvi/OqCFImMzAk/TVKiSRsQw= cloud.google.com/go/apigeeregistry v0.9.6/go.mod h1:AFEepJBKPtGDfgabG2HWaLH453VVWWFFs3P4W00jbPs= -cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= -cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= cloud.google.com/go/apikeys v0.6.0 h1:B9CdHFZTFjVti89tmyXXrO+7vSNo2jvZuHG8zD5trdQ= -cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= -cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= -cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= -cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= -cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= -cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= -cloud.google.com/go/appengine v1.8.1/go.mod h1:6NJXGLVhZCN9aQ/AEDvmfzKEfoYBlfB80/BHiKVputY= cloud.google.com/go/appengine v1.8.4/go.mod h1:TZ24v+wXBujtkK77CXCpjZbnuTvsFNT41MUaZ28D6vg= cloud.google.com/go/appengine v1.9.3/go.mod h1:DtLsE/z3JufM/pCEIyVYebJ0h9UNPpN64GZQrYgOSyM= cloud.google.com/go/appengine v1.9.6 h1:JJyY8icMmQeWfQ+d36IhkGvd3Guzvw0UAkvxT0wmUx8= cloud.google.com/go/appengine v1.9.6/go.mod h1:jPp9T7Opvzl97qytaRGPwoH7pFI3GAcLDaui1K8PNjY= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= -cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= -cloud.google.com/go/area120 v0.8.1/go.mod h1:BVfZpGpB7KFVNxPiQBuHkX6Ed0rS51xIgmGyjrAfzsg= cloud.google.com/go/area120 v0.8.4/go.mod h1:jfawXjxf29wyBXr48+W+GyX/f8fflxp642D/bb9v68M= cloud.google.com/go/area120 v0.9.3/go.mod h1:F3vxS/+hqzrjJo55Xvda3Jznjjbd+4Foo43SN5eMd8M= cloud.google.com/go/area120 v0.9.6 h1:iJrZ6AleZr4l+q0/fWVANFOhs90KiSB1Ccait5OYyNg= cloud.google.com/go/area120 v0.9.6/go.mod h1:qKSokqe0iTmwBDA3tbLWonMEnh0pMAH4YxiceiHUed4= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= -cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= -cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= -cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= -cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= -cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= -cloud.google.com/go/artifactregistry v1.14.1/go.mod h1:nxVdG19jTaSTu7yA7+VbWL346r3rIdkZ142BSQqhn5E= cloud.google.com/go/artifactregistry v1.14.6/go.mod h1:np9LSFotNWHcjnOgh8UVK0RFPCTUGbO0ve3384xyHfE= cloud.google.com/go/artifactregistry v1.16.1/go.mod h1:sPvFPZhfMavpiongKwfg93EOwJ18Tnj9DIwTU9xWUgs= cloud.google.com/go/artifactregistry v1.17.1 h1:A20kj2S2HO9vlyBVyVFHPxArjxkXvLP5LjcdE7NhaPc= cloud.google.com/go/artifactregistry v1.17.1/go.mod h1:06gLv5QwQPWtaudI2fWO37gfwwRUHwxm3gA8Fe568Hc= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= -cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= -cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= -cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= -cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= -cloud.google.com/go/asset v1.14.1/go.mod h1:4bEJ3dnHCqWCDbWJ/6Vn7GVI9LerSi7Rfdi03hd+WTQ= cloud.google.com/go/asset v1.17.0/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= cloud.google.com/go/asset v1.20.4/go.mod h1:DP09pZ+SoFWUZyPZx26xVroHk+6+9umnQv+01yfJxbM= cloud.google.com/go/asset v1.21.1 h1:i55wWC/EwVdHMyJgRfbLp/L6ez4nQuOpZwSxkuqN9ek= cloud.google.com/go/asset v1.21.1/go.mod h1:7AzY1GCC+s1O73yzLM1IpHFLHz3ws2OigmCpOQHwebk= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= -cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= -cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= -cloud.google.com/go/assuredworkloads v1.11.1/go.mod h1:+F04I52Pgn5nmPG36CWFtxmav6+7Q+c5QyJoL18Lry0= cloud.google.com/go/assuredworkloads v1.11.4/go.mod h1:4pwwGNwy1RP0m+y12ef3Q/8PaiWrIDQ6nD2E8kvWI9U= cloud.google.com/go/assuredworkloads v1.12.3/go.mod h1:iGBkyMGdtlsxhCi4Ys5SeuvIrPTeI6HeuEJt7qJgJT8= cloud.google.com/go/assuredworkloads v1.12.6 h1:ip/shfJYx6lrHBWYADjrrrubcm7uZzy50TTF5tPG7ek= @@ -193,57 +75,22 @@ cloud.google.com/go/auth v0.16.3/go.mod h1:NucRGjaXfzP1ltpcQ7On/VTZ0H4kWB5Jy+Y9D cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= -cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= -cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= -cloud.google.com/go/automl v1.13.1/go.mod h1:1aowgAHWYZU27MybSCFiukPO7xnyawv7pt3zK4bheQE= cloud.google.com/go/automl v1.13.4/go.mod h1:ULqwX/OLZ4hBVfKQaMtxMSTlPx0GqGbWN8uA/1EqCP8= cloud.google.com/go/automl v1.14.4/go.mod h1:sVfsJ+g46y7QiQXpVs9nZ/h8ntdujHm5xhjHW32b3n4= cloud.google.com/go/automl v1.14.7 h1:ZLj48Ur2Qcso4M3bgOtjsOmeV5Ee92N14wuOc8OW+L0= cloud.google.com/go/automl v1.14.7/go.mod h1:8a4XbIH5pdvrReOU72oB+H3pOw2JBxo9XTk39oljObE= -cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= -cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= -cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= -cloud.google.com/go/baremetalsolution v1.1.1/go.mod h1:D1AV6xwOksJMV4OSlWHtWuFNZZYujJknMAP4Qa27QIA= cloud.google.com/go/baremetalsolution v1.2.3/go.mod h1:/UAQ5xG3faDdy180rCUv47e0jvpp3BFxT+Cl0PFjw5g= cloud.google.com/go/baremetalsolution v1.3.3/go.mod h1:uF9g08RfmXTF6ZKbXxixy5cGMGFcG6137Z99XjxLOUI= cloud.google.com/go/baremetalsolution v1.3.6 h1:9bdGlpY1LgLONQjFsDwrkjLzdPTlROpfU+GhA97YpOk= cloud.google.com/go/baremetalsolution v1.3.6/go.mod h1:7/CS0LzpLccRGO0HL3q2Rofxas2JwjREKut414sE9iM= -cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= -cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= -cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= -cloud.google.com/go/batch v1.3.1/go.mod h1:VguXeQKXIYaeeIYbuozUmBR13AfL4SJP7IltNPS+A4A= cloud.google.com/go/batch v1.7.0/go.mod h1:J64gD4vsNSA2O5TtDB5AAux3nJ9iV8U3ilg3JDBYejU= cloud.google.com/go/batch v1.12.0/go.mod h1:CATSBh/JglNv+tEU/x21Z47zNatLQ/gpGnpyKOzbbcM= cloud.google.com/go/batch v1.12.2 h1:gWQdvdPplptpvrkqF6ibtxZkOsYKLTFbxYawHa/TvCg= cloud.google.com/go/batch v1.12.2/go.mod h1:tbnuTN/Iw59/n1yjAYKV2aZUjvMM2VJqAgvUgft6UEU= -cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= -cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= -cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= -cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= -cloud.google.com/go/beyondcorp v0.6.1/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= -cloud.google.com/go/beyondcorp v1.0.0/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= cloud.google.com/go/beyondcorp v1.0.3/go.mod h1:HcBvnEd7eYr+HGDd5ZbuVmBYX019C6CEXBonXbCVwJo= cloud.google.com/go/beyondcorp v1.1.3/go.mod h1:3SlVKnlczNTSQFuH5SSyLuRd4KaBSc8FH/911TuF/Cc= cloud.google.com/go/beyondcorp v1.1.6 h1:4FcR+4QmcNGkhVij6TrYS4AQVNLBo7PBXKxNrKzpclQ= cloud.google.com/go/beyondcorp v1.1.6/go.mod h1:V1PigSWPGh5L/vRRmyutfnjAbkxLI2aWqJDdxKbwvsQ= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= -cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= -cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= -cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= -cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= -cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= -cloud.google.com/go/bigquery v1.52.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= -cloud.google.com/go/bigquery v1.53.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= cloud.google.com/go/bigquery v1.58.0/go.mod h1:0eh4mWNY0KrBTjUzLjoYImapGORq9gEPT7MWjCy9lik= cloud.google.com/go/bigquery v1.66.2/go.mod h1:+Yd6dRyW8D/FYEjUGodIbu0QaoEmgav7Lwhotup6njo= cloud.google.com/go/bigquery v1.69.0 h1:rZvHnjSUs5sHK3F9awiuFk2PeOaB8suqNuim21GbaTc= @@ -251,1003 +98,403 @@ cloud.google.com/go/bigquery v1.69.0/go.mod h1:TdGLquA3h/mGg+McX+GsqG9afAzTAcldM cloud.google.com/go/bigtable v1.35.0/go.mod h1:EabtwwmTcOJFXp+oMZAT/jZkyDIjNwrv53TrS4DGrrM= cloud.google.com/go/bigtable v1.37.0 h1:Q+x7y04lQ0B+WXp03wc1/FLhFt4CwcQdkwWT0M4Jp3w= cloud.google.com/go/bigtable v1.37.0/go.mod h1:HXqddP6hduwzrtiTCqZPpj9ij4hGZb4Zy1WF/dT+yaU= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= -cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= -cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= -cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= -cloud.google.com/go/billing v1.16.0/go.mod h1:y8vx09JSSJG02k5QxbycNRrN7FGZB6F3CAcgum7jvGA= cloud.google.com/go/billing v1.18.0/go.mod h1:5DOYQStCxquGprqfuid/7haD7th74kyMBHkjO/OvDtk= cloud.google.com/go/billing v1.20.1/go.mod h1:DhT80hUZ9gz5UqaxtK/LNoDELfxH73704VTce+JZqrY= cloud.google.com/go/billing v1.20.4 h1:pqM5/c9UGydB9H90IPCxSvfCNLUPazAOSMsZkz5q5P4= cloud.google.com/go/billing v1.20.4/go.mod h1:hBm7iUmGKGCnBm6Wp439YgEdt+OnefEq/Ib9SlJYxIU= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= -cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= -cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= -cloud.google.com/go/binaryauthorization v1.6.1/go.mod h1:TKt4pa8xhowwffiBmbrbcxijJRZED4zrqnwZ1lKH51U= cloud.google.com/go/binaryauthorization v1.8.0/go.mod h1:VQ/nUGRKhrStlGr+8GMS8f6/vznYLkdK5vaKfdCIpvU= cloud.google.com/go/binaryauthorization v1.9.3/go.mod h1:f3xcb/7vWklDoF+q2EaAIS+/A/e1278IgiYxonRX+Jk= cloud.google.com/go/binaryauthorization v1.9.5 h1:T0zYEroXT+y0O/x/yZd5SwQdFv4UbUINjvJyJKzDm0Q= cloud.google.com/go/binaryauthorization v1.9.5/go.mod h1:CV5GkS2eiY461Bzv+OH3r5/AsuB6zny+MruRju3ccB8= -cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= -cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= -cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= -cloud.google.com/go/certificatemanager v1.7.1/go.mod h1:iW8J3nG6SaRYImIa+wXQ0g8IgoofDFRp5UMzaNk1UqI= cloud.google.com/go/certificatemanager v1.7.4/go.mod h1:FHAylPe/6IIKuaRmHbjbdLhGhVQ+CWHSD5Jq0k4+cCE= cloud.google.com/go/certificatemanager v1.9.3/go.mod h1:O5T4Lg/dHbDHLFFooV2Mh/VsT3Mj2CzPEWRo4qw5prc= cloud.google.com/go/certificatemanager v1.9.5 h1:+ZPglfDurCcsv4azizDFpBucD1IkRjWjbnU7zceyjfY= cloud.google.com/go/certificatemanager v1.9.5/go.mod h1:kn7gxT/80oVGhjL8rurMUYD36AOimgtzSBPadtAeffs= -cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= -cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= -cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= -cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= -cloud.google.com/go/channel v1.16.0/go.mod h1:eN/q1PFSl5gyu0dYdmxNXscY/4Fi7ABmeHCJNf/oHmc= cloud.google.com/go/channel v1.17.4/go.mod h1:QcEBuZLGGrUMm7kNj9IbU1ZfmJq2apotsV83hbxX7eE= cloud.google.com/go/channel v1.19.2/go.mod h1:syX5opXGXFt17DHCyCdbdlM464Tx0gHMi46UlEWY9Gg= cloud.google.com/go/channel v1.19.5 h1:UI+ZsRkS15hi9DRF+WAvTVLVuSeZiRmvCU8cjkjOwUU= cloud.google.com/go/channel v1.19.5/go.mod h1:vevu+LK8Oy1Yuf7lcpDbkQQQm5I7oiY5fFTn3uwfQLY= -cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= -cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= -cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= -cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= -cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= -cloud.google.com/go/cloudbuild v1.10.1/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= -cloud.google.com/go/cloudbuild v1.13.0/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= cloud.google.com/go/cloudbuild v1.15.0/go.mod h1:eIXYWmRt3UtggLnFGx4JvXcMj4kShhVzGndL1LwleEM= cloud.google.com/go/cloudbuild v1.22.0/go.mod h1:p99MbQrzcENHb/MqU3R6rpqFRk/X+lNG3PdZEIhM95Y= cloud.google.com/go/cloudbuild v1.22.2 h1:4LlrIFa3IFLgD1mGEXmUE4cm9fYoU71OLwTvjM7Dg3c= cloud.google.com/go/cloudbuild v1.22.2/go.mod h1:rPyXfINSgMqMZvuTk1DbZcbKYtvbYF/i9IXQ7eeEMIM= -cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= -cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= -cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= -cloud.google.com/go/clouddms v1.6.1/go.mod h1:Ygo1vL52Ov4TBZQquhz5fiw2CQ58gvu+PlS6PVXCpZI= cloud.google.com/go/clouddms v1.7.3/go.mod h1:fkN2HQQNUYInAU3NQ3vRLkV2iWs8lIdmBKOx4nrL6Hc= cloud.google.com/go/clouddms v1.8.4/go.mod h1:RadeJ3KozRwy4K/gAs7W74ZU3GmGgVq5K8sRqNs3HfA= cloud.google.com/go/clouddms v1.8.7 h1:IWJbQBEECTaNanDRN1XdR7FU53MJ1nylTl3s9T3MuyI= cloud.google.com/go/clouddms v1.8.7/go.mod h1:DhWLd3nzHP8GoHkA6hOhso0R9Iou+IGggNqlVaq/KZ4= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= -cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= -cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= -cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= -cloud.google.com/go/cloudtasks v1.11.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= -cloud.google.com/go/cloudtasks v1.12.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= cloud.google.com/go/cloudtasks v1.12.4/go.mod h1:BEPu0Gtt2dU6FxZHNqqNdGqIG86qyWKBPGnsb7udGY0= cloud.google.com/go/cloudtasks v1.13.3/go.mod h1:f9XRvmuFTm3VhIKzkzLCPyINSU3rjjvFUsFVGR5wi24= cloud.google.com/go/cloudtasks v1.13.6 h1:Fwan19UiNoFD+3KY0MnNHE5DyixOxNzS1mZ4ChOdpy0= cloud.google.com/go/cloudtasks v1.13.6/go.mod h1:/IDaQqGKMixD+ayM43CfsvWF2k36GeomEuy9gL4gLmU= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= -cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= -cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= -cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= -cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= -cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= -cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= -cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= -cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute v1.23.4/go.mod h1:/EJMj55asU6kAFnuZET8zqgwgJ9FvXWXOkkfQZa4ioI= cloud.google.com/go/compute v1.34.0/go.mod h1:zWZwtLwZQyonEvIQBuIa0WvraMYK69J5eDCOw9VZU4g= cloud.google.com/go/compute v1.38.0 h1:MilCLYQW2m7Dku8hRIIKo4r0oKastlD74sSu16riYKs= cloud.google.com/go/compute v1.38.0/go.mod h1:oAFNIuXOmXbK/ssXm3z4nZB8ckPdjltJ7xhHCdbWFZM= -cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= -cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= -cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= -cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= -cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= -cloud.google.com/go/contactcenterinsights v1.9.1/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= -cloud.google.com/go/contactcenterinsights v1.10.0/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= cloud.google.com/go/contactcenterinsights v1.12.1/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= cloud.google.com/go/contactcenterinsights v1.17.1/go.mod h1:n8OiNv7buLA2AkGVkfuvtW3HU13AdTmEwAlAu46bfxY= cloud.google.com/go/contactcenterinsights v1.17.3 h1:lenyU3uzHwKDveCwmpfNxHYvLS3uEBWdn+O7+rSxy+Q= cloud.google.com/go/contactcenterinsights v1.17.3/go.mod h1:7Uu2CpxS3f6XxhRdlEzYAkrChpR5P5QfcdGAFEdHOG8= -cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= -cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= -cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= -cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= -cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= -cloud.google.com/go/container v1.22.1/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= -cloud.google.com/go/container v1.24.0/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= cloud.google.com/go/container v1.29.0/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= cloud.google.com/go/container v1.42.2/go.mod h1:y71YW7uR5Ck+9Vsbst0AF2F3UMgqmsN4SP8JR9xEsR8= cloud.google.com/go/container v1.43.0 h1:A6J92FJPfxTvyX7MHF+w4t2W9WCqvHOi9UB5SAeSy3w= cloud.google.com/go/container v1.43.0/go.mod h1:ETU9WZ1KM9ikEKLzrhRVao7KHtalDQu6aPqM34zDr/U= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= -cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= -cloud.google.com/go/containeranalysis v0.10.1/go.mod h1:Ya2jiILITMY68ZLPaogjmOMNkwsDrWBSTyBubGXO7j0= cloud.google.com/go/containeranalysis v0.11.3/go.mod h1:kMeST7yWFQMGjiG9K7Eov+fPNQcGhb8mXj/UcTiWw9U= cloud.google.com/go/containeranalysis v0.13.3/go.mod h1:0SYnagA1Ivb7qPqKNYPkCtphhkJn3IzgaSp3mj+9XAY= cloud.google.com/go/containeranalysis v0.14.1 h1:1SoHlNqL3XrhqcoozB+3eoHif2sRUFtp/JeASQTtGKo= cloud.google.com/go/containeranalysis v0.14.1/go.mod h1:28e+tlZgauWGHmEbnI5UfIsjMmrkoR1tFN0K2i71jBI= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= -cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= -cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= -cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= -cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= -cloud.google.com/go/datacatalog v1.14.0/go.mod h1:h0PrGtlihoutNMp/uvwhawLQ9+c63Kz65UFqh49Yo+E= -cloud.google.com/go/datacatalog v1.14.1/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= -cloud.google.com/go/datacatalog v1.16.0/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= cloud.google.com/go/datacatalog v1.19.2/go.mod h1:2YbODwmhpLM4lOFe3PuEhHK9EyTzQJ5AXgIy7EDKTEE= cloud.google.com/go/datacatalog v1.24.3/go.mod h1:Z4g33XblDxWGHngDzcpfeOU0b1ERlDPTuQoYG6NkF1s= cloud.google.com/go/datacatalog v1.26.0 h1:eFgygb3DTufTWWUB8ARk+dSuXz+aefNJXTlkWlQcWwE= cloud.google.com/go/datacatalog v1.26.0/go.mod h1:bLN2HLBAwB3kLTFT5ZKLHVPj/weNz6bR0c7nYp0LE14= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= -cloud.google.com/go/dataflow v0.9.1/go.mod h1:Wp7s32QjYuQDWqJPFFlnBKhkAtiFpMTdg00qGbnIHVw= cloud.google.com/go/dataflow v0.9.4/go.mod h1:4G8vAkHYCSzU8b/kmsoR2lWyHJD85oMJPHMtan40K8w= cloud.google.com/go/dataflow v0.10.3/go.mod h1:5EuVGDh5Tg4mDePWXMMGAG6QYAQhLNyzxdNQ0A1FfW4= cloud.google.com/go/dataflow v0.11.0 h1:AdhB4cAkMOC9NtrHJxpKOVvO/VqBLaIyk0tEEhbGjYM= cloud.google.com/go/dataflow v0.11.0/go.mod h1:gNHC9fUjlV9miu0hd4oQaXibIuVYTQvZhMdPievKsPk= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= -cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= -cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= -cloud.google.com/go/dataform v0.8.1/go.mod h1:3BhPSiw8xmppbgzeBbmDvmSWlwouuJkXsXsb8UBih9M= cloud.google.com/go/dataform v0.9.1/go.mod h1:pWTg+zGQ7i16pyn0bS1ruqIE91SdL2FDMvEYu/8oQxs= cloud.google.com/go/dataform v0.10.3/go.mod h1:8SruzxHYCxtvG53gXqDZvZCx12BlsUchuV/JQFtyTCw= cloud.google.com/go/dataform v0.12.0 h1:0eCPTPUC/RZ863aVfXTJLkg0tEpdpn62VD6ywSmmzxM= cloud.google.com/go/dataform v0.12.0/go.mod h1:PuDIEY0lSVuPrZqcFji1fmr5RRvz3DGz4YP/cONc8g4= -cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= -cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= -cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= -cloud.google.com/go/datafusion v1.7.1/go.mod h1:KpoTBbFmoToDExJUso/fcCiguGDk7MEzOWXUsJo0wsI= cloud.google.com/go/datafusion v1.7.4/go.mod h1:BBs78WTOLYkT4GVZIXQCZT3GFpkpDN4aBY4NDX/jVlM= cloud.google.com/go/datafusion v1.8.3/go.mod h1:hyglMzE57KRf0Rf/N2VRPcHCwKfZAAucx+LATY6Jc6Q= cloud.google.com/go/datafusion v1.8.6 h1:GZ6J+CR8CEeWAj8luRCtr8GvImSQRkArIIqGiZOnzBA= cloud.google.com/go/datafusion v1.8.6/go.mod h1:fCyKJF2zUKC+O3hc2F9ja5EUCAbT4zcH692z8HiFZFw= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= -cloud.google.com/go/datalabeling v0.8.1/go.mod h1:XS62LBSVPbYR54GfYQsPXZjTW8UxCK2fkDciSrpRFdY= cloud.google.com/go/datalabeling v0.8.4/go.mod h1:Z1z3E6LHtffBGrNUkKwbwbDxTiXEApLzIgmymj8A3S8= cloud.google.com/go/datalabeling v0.9.3/go.mod h1:3LDFUgOx+EuNUzDyjU7VElO8L+b5LeaZEFA/ZU1O1XU= cloud.google.com/go/datalabeling v0.9.6 h1:VOZ5U+78ttnhNCEID7qdeogqZQzK5N+LPHIQ9Q3YDsc= cloud.google.com/go/datalabeling v0.9.6/go.mod h1:n7o4x0vtPensZOoFwFa4UfZgkSZm8Qs0Pg/T3kQjXSM= -cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= -cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= -cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= -cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= -cloud.google.com/go/dataplex v1.8.1/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= -cloud.google.com/go/dataplex v1.9.0/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= cloud.google.com/go/dataplex v1.14.0/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= cloud.google.com/go/dataplex v1.22.0/go.mod h1:g166QMCGHvwc3qlTG4p34n+lHwu7JFfaNpMfI2uO7b8= cloud.google.com/go/dataplex v1.25.3 h1:Xr0Toh6wyBlmL3H4EPu1YKwxUtkDSzzq+IP0iLc88kk= cloud.google.com/go/dataplex v1.25.3/go.mod h1:wOJXnOg6bem0tyslu4hZBTncfqcPNDpYGKzed3+bd+E= -cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= -cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= cloud.google.com/go/dataproc v1.12.0 h1:W47qHL3W4BPkAIbk4SWmIERwsWBaNnWm0P2sdx3YgGU= -cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= -cloud.google.com/go/dataproc/v2 v2.0.1/go.mod h1:7Ez3KRHdFGcfY7GcevBbvozX+zyWGcwLJvvAMwCaoZ4= cloud.google.com/go/dataproc/v2 v2.3.0/go.mod h1:G5R6GBc9r36SXv/RtZIVfB8SipI+xVn0bX5SxUzVYbY= cloud.google.com/go/dataproc/v2 v2.11.0/go.mod h1:9vgGrn57ra7KBqz+B2KD+ltzEXvnHAUClFgq/ryU99g= cloud.google.com/go/dataproc/v2 v2.11.2 h1:KhC8wdLILpAs17yeTG6Miwg1v0nOP/OXD+9QNg3w6AQ= cloud.google.com/go/dataproc/v2 v2.11.2/go.mod h1:xwukBjtfiO4vMEa1VdqyFLqJmcv7t3lo+PbLDcTEw+g= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= -cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= -cloud.google.com/go/dataqna v0.8.1/go.mod h1:zxZM0Bl6liMePWsHA8RMGAfmTG34vJMapbHAxQ5+WA8= cloud.google.com/go/dataqna v0.8.4/go.mod h1:mySRKjKg5Lz784P6sCov3p1QD+RZQONRMRjzGNcFd0c= cloud.google.com/go/dataqna v0.9.3/go.mod h1:PiAfkXxa2LZYxMnOWVYWz3KgY7txdFg9HEMQPb4u1JA= cloud.google.com/go/dataqna v0.9.7 h1:qTRAG/E3T63Xj1orefRlwupfwH9c9ERUAnWSRGp75so= cloud.google.com/go/dataqna v0.9.7/go.mod h1:4ac3r7zm7Wqm8NAc8sDIDM0v7Dz7d1e/1Ka1yMFanUM= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= -cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= -cloud.google.com/go/datastore v1.12.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= -cloud.google.com/go/datastore v1.12.1/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= -cloud.google.com/go/datastore v1.13.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= cloud.google.com/go/datastore v1.15.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= cloud.google.com/go/datastore v1.20.0 h1:NNpXoyEqIJmZFc0ACcwBEaXnmscUpcG4NkKnbCePmiM= cloud.google.com/go/datastore v1.20.0/go.mod h1:uFo3e+aEpRfHgtp5pp0+6M0o147KoPaYNaPAKpfh8Ew= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= -cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= -cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= -cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= -cloud.google.com/go/datastream v1.9.1/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= -cloud.google.com/go/datastream v1.10.0/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= cloud.google.com/go/datastream v1.10.3/go.mod h1:YR0USzgjhqA/Id0Ycu1VvZe8hEWwrkjuXrGbzeDOSEA= cloud.google.com/go/datastream v1.13.0/go.mod h1:GrL2+KC8mV4GjbVG43Syo5yyDXp3EH+t6N2HnZb1GOQ= cloud.google.com/go/datastream v1.14.1 h1:j+y0lUKm9pbDjJn0YcWxPI/hXNGUQ80GE6yrFuJC/JA= cloud.google.com/go/datastream v1.14.1/go.mod h1:JqMKXq/e0OMkEgfYe0nP+lDye5G2IhIlmencWxmesMo= -cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= -cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= -cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= -cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= -cloud.google.com/go/deploy v1.11.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= -cloud.google.com/go/deploy v1.13.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= cloud.google.com/go/deploy v1.17.0/go.mod h1:XBr42U5jIr64t92gcpOXxNrqL2PStQCXHuKK5GRUuYo= cloud.google.com/go/deploy v1.26.2/go.mod h1:XpS3sG/ivkXCfzbzJXY9DXTeCJ5r68gIyeOgVGxGNEs= cloud.google.com/go/deploy v1.27.2 h1:C0VqBhFyQFp6+xgPHZAD7LeRA4XGy5YLzGmPQ2NhlLk= cloud.google.com/go/deploy v1.27.2/go.mod h1:4NHWE7ENry2A4O1i/4iAPfXHnJCZ01xckAKpZQwhg1M= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= -cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= -cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= -cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= -cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= -cloud.google.com/go/dialogflow v1.38.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= -cloud.google.com/go/dialogflow v1.40.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= cloud.google.com/go/dialogflow v1.48.1/go.mod h1:C1sjs2/g9cEwjCltkKeYp3FFpz8BOzNondEaAlCpt+A= cloud.google.com/go/dialogflow v1.66.0/go.mod h1:BPiRTnnXP/tHLot5h/U62Xcp+i6ekRj/bq6uq88p+Lw= cloud.google.com/go/dialogflow v1.68.2 h1:bXpoqPRf37KKxB79PKr20B/TAU/Z5iA0FnB6C5N2jrA= cloud.google.com/go/dialogflow v1.68.2/go.mod h1:E0Ocrhf5/nANZzBju8RX8rONf0PuIvz2fVj3XkbAhiY= -cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= -cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= -cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= -cloud.google.com/go/dlp v1.10.1/go.mod h1:IM8BWz1iJd8njcNcG0+Kyd9OPnqnRNkDV8j42VT5KOI= cloud.google.com/go/dlp v1.11.1/go.mod h1:/PA2EnioBeXTL/0hInwgj0rfsQb3lpE3R8XUJxqUNKI= cloud.google.com/go/dlp v1.21.0/go.mod h1:Y9HOVtPoArpL9sI1O33aN/vK9QRwDERU9PEJJfM8DvE= cloud.google.com/go/dlp v1.23.0 h1:3xWRKylXxhysaQaV+DLev1YcIywFUCc7yJEE6R7ZGDQ= cloud.google.com/go/dlp v1.23.0/go.mod h1:vVT4RlyPMEMcVHexdPT6iMVac3seq3l6b8UPdYpgFrg= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= -cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= -cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= -cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= -cloud.google.com/go/documentai v1.20.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= -cloud.google.com/go/documentai v1.22.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= cloud.google.com/go/documentai v1.23.7/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g= cloud.google.com/go/documentai v1.35.2/go.mod h1:oh/0YXosgEq3hVhyH4ZQ7VNXPaveRO4eLVM3tBSZOsI= cloud.google.com/go/documentai v1.37.0 h1:7fla8GcarupO15eatRTUveXCob6DOSW1Wa+1i63CM3Q= cloud.google.com/go/documentai v1.37.0/go.mod h1:qAf3ewuIUJgvSHQmmUWvM3Ogsr5A16U2WPHmiJldvLA= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= -cloud.google.com/go/domains v0.9.1/go.mod h1:aOp1c0MbejQQ2Pjf1iJvnVyT+z6R6s8pX66KaCSDYfE= cloud.google.com/go/domains v0.9.4/go.mod h1:27jmJGShuXYdUNjyDG0SodTfT5RwLi7xmH334Gvi3fY= cloud.google.com/go/domains v0.10.3/go.mod h1:m7sLe18p0PQab56bVH3JATYOJqyRHhmbye6gz7isC7o= cloud.google.com/go/domains v0.10.6 h1:TI+Aavwc31KD8huOquJz0ISchCq1zSEWc9M+JcPJyxc= cloud.google.com/go/domains v0.10.6/go.mod h1:3xzG+hASKsVBA8dOPc4cIaoV3OdBHl1qgUpAvXK7pGY= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= -cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= -cloud.google.com/go/edgecontainer v1.1.1/go.mod h1:O5bYcS//7MELQZs3+7mabRqoWQhXCzenBu0R8bz2rwk= cloud.google.com/go/edgecontainer v1.1.4/go.mod h1:AvFdVuZuVGdgaE5YvlL1faAoa1ndRR/5XhXZvPBHbsE= cloud.google.com/go/edgecontainer v1.4.1/go.mod h1:ubMQvXSxsvtEjJLyqcPFrdWrHfvjQxdoyt+SUrAi5ek= cloud.google.com/go/edgecontainer v1.4.3 h1:9tfGCicvrki927T+hGMB0yYmwIbRuZY6JR1/awrKiZ0= cloud.google.com/go/edgecontainer v1.4.3/go.mod h1:q9Ojw2ox0uhAvFisnfPRAXFTB1nfRIOIXVWzdXMZLcE= -cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= cloud.google.com/go/errorreporting v0.3.2 h1:isaoPwWX8kbAOea4qahcmttoS79+gQhvKsfg5L5AgH8= cloud.google.com/go/errorreporting v0.3.2/go.mod h1:s5kjs5r3l6A8UUyIsgvAhGq6tkqyBCUss0FRpsoVTww= -cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= -cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= -cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= -cloud.google.com/go/essentialcontacts v1.6.2/go.mod h1:T2tB6tX+TRak7i88Fb2N9Ok3PvY3UNbUsMag9/BARh4= cloud.google.com/go/essentialcontacts v1.6.5/go.mod h1:jjYbPzw0x+yglXC890l6ECJWdYeZ5dlYACTFL0U/VuM= cloud.google.com/go/essentialcontacts v1.7.3/go.mod h1:uimfZgDbhWNCmBpwUUPHe4vcMY2azsq/axC9f7vZFKI= cloud.google.com/go/essentialcontacts v1.7.6 h1:ysHZ4gr4plW1CL1Ur/AucUUfh20hDjSFbfjxSK0q/sk= cloud.google.com/go/essentialcontacts v1.7.6/go.mod h1:/Ycn2egr4+XfmAfxpLYsJeJlVf9MVnq9V7OMQr9R4lA= -cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= -cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= -cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= -cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= -cloud.google.com/go/eventarc v1.12.1/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= -cloud.google.com/go/eventarc v1.13.0/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= cloud.google.com/go/eventarc v1.13.3/go.mod h1:RWH10IAZIRcj1s/vClXkBgMHwh59ts7hSWcqD3kaclg= cloud.google.com/go/eventarc v1.15.1/go.mod h1:K2luolBpwaVOujZQyx6wdG4n2Xum4t0q1cMBmY1xVyI= cloud.google.com/go/eventarc v1.15.5 h1:bZW7ZMM+XXNErg6rOZcgxUzAgz4vpReRDP3ZiGf7/sI= cloud.google.com/go/eventarc v1.15.5/go.mod h1:vDCqGqyY7SRiickhEGt1Zhuj81Ya4F/NtwwL3OZNskg= -cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= -cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= -cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= -cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= -cloud.google.com/go/filestore v1.7.1/go.mod h1:y10jsorq40JJnjR/lQ8AfFbbcGlw3g+Dp8oN7i7FjV4= cloud.google.com/go/filestore v1.8.0/go.mod h1:S5JCxIbFjeBhWMTfIYH2Jx24J6BqjwpkkPl+nBA5DlI= cloud.google.com/go/filestore v1.9.3/go.mod h1:Me0ZRT5JngT/aZPIKpIK6N4JGMzrFHRtGHd9ayUS4R4= cloud.google.com/go/filestore v1.10.2 h1:LjoAyp9TvVNBns3sUUzPaNsQiGpR2BReGmTS3bUCuBE= cloud.google.com/go/filestore v1.10.2/go.mod h1:w0Pr8uQeSRQfCPRsL0sYKW6NKyooRgixCkV9yyLykR4= -cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= -cloud.google.com/go/firestore v1.11.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4= cloud.google.com/go/firestore v1.14.0/go.mod h1:96MVaHLsEhbvkBEdZgfN+AS/GIkco1LRpH9Xp9YZfzQ= cloud.google.com/go/firestore v1.18.0 h1:cuydCaLS7Vl2SatAeivXyhbhDEIR8BDmtn4egDhIn2s= cloud.google.com/go/firestore v1.18.0/go.mod h1:5ye0v48PhseZBdcl0qbl3uttu7FIEwEYVaWm0UIEOEU= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= -cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= -cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= -cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= -cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= -cloud.google.com/go/functions v1.15.1/go.mod h1:P5yNWUTkyU+LvW/S9O6V+V423VZooALQlqoXdoPz5AE= cloud.google.com/go/functions v1.15.4/go.mod h1:CAsTc3VlRMVvx+XqXxKqVevguqJpnVip4DdonFsX28I= cloud.google.com/go/functions v1.19.3/go.mod h1:nOZ34tGWMmwfiSJjoH/16+Ko5106x+1Iji29wzrBeOo= cloud.google.com/go/functions v1.19.6 h1:vJgWlvxtJG6p/JrbXAkz83DbgwOyFhZZI1Y32vUddjY= cloud.google.com/go/functions v1.19.6/go.mod h1:0G0RnIlbM4MJEycfbPZlCzSf2lPOjL7toLDwl+r0ZBw= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= -cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= -cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= cloud.google.com/go/gaming v1.10.1 h1:5qZmZEWzMf8GEFgm9NeC3bjFRpt7x4S6U7oLbxaf7N8= -cloud.google.com/go/gaming v1.10.1/go.mod h1:XQQvtfP8Rb9Rxnxm5wFVpAp9zCQkJi2bLIb7iHGwB3s= -cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= -cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= -cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= -cloud.google.com/go/gkebackup v1.3.0/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= cloud.google.com/go/gkebackup v1.3.4/go.mod h1:gLVlbM8h/nHIs09ns1qx3q3eaXcGSELgNu1DWXYz1HI= cloud.google.com/go/gkebackup v1.6.3/go.mod h1:JJzGsA8/suXpTDtqI7n9RZW97PXa2CIp+n8aRC/y57k= cloud.google.com/go/gkebackup v1.8.0 h1:eBqOt61yEChvj7I/GDPBbdCCRdUPudD1qrQYfYWV3Ok= cloud.google.com/go/gkebackup v1.8.0/go.mod h1:FjsjNldDilC9MWKEHExnK3kKJyTDaSdO1vF0QeWSOPU= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= -cloud.google.com/go/gkeconnect v0.8.1/go.mod h1:KWiK1g9sDLZqhxB2xEuPV8V9NYzrqTUmQR9shJHpOZw= cloud.google.com/go/gkeconnect v0.8.4/go.mod h1:84hZz4UMlDCKl8ifVW8layK4WHlMAFeq8vbzjU0yJkw= cloud.google.com/go/gkeconnect v0.12.1/go.mod h1:L1dhGY8LjINmWfR30vneozonQKRSIi5DWGIHjOqo58A= cloud.google.com/go/gkeconnect v0.12.4 h1:67/rnPmF/I1Wmf7jWyKH+z4OWjU8ZUI0Vmzxvmzf3KY= cloud.google.com/go/gkeconnect v0.12.4/go.mod h1:bvpU9EbBpZnXGo3nqJ1pzbHWIfA9fYqgBMJ1VjxaZdk= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= -cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= -cloud.google.com/go/gkehub v0.14.1/go.mod h1:VEXKIJZ2avzrbd7u+zeMtW00Y8ddk/4V9511C9CQGTY= cloud.google.com/go/gkehub v0.14.4/go.mod h1:Xispfu2MqnnFt8rV/2/3o73SK1snL8s9dYJ9G2oQMfc= cloud.google.com/go/gkehub v0.15.3/go.mod h1:nzFT/Q+4HdQES/F+FP1QACEEWR9Hd+Sh00qgiH636cU= cloud.google.com/go/gkehub v0.15.6 h1:9iogrmNNa+drDPf/zkLH/6KGgUf7FuuyokmithoGwMQ= cloud.google.com/go/gkehub v0.15.6/go.mod h1:sRT0cOPAgI1jUJrS3gzwdYCJ1NEzVVwmnMKEwrS2QaM= -cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= -cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= -cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= -cloud.google.com/go/gkemulticloud v0.6.1/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= -cloud.google.com/go/gkemulticloud v1.0.0/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= cloud.google.com/go/gkemulticloud v1.1.0/go.mod h1:7NpJBN94U6DY1xHIbsDqB2+TFZUfjLUKLjUX8NGLor0= cloud.google.com/go/gkemulticloud v1.5.1/go.mod h1:OdmhfSPXuJ0Kn9dQ2I3Ou7XZ3QK8caV4XVOJZwrIa3s= cloud.google.com/go/gkemulticloud v1.5.3 h1:334aZmOzIt3LVBpguCof8IHaLaftcZlx+L0TGBukYkY= cloud.google.com/go/gkemulticloud v1.5.3/go.mod h1:KPFf+/RcfvmuScqwS9/2MF5exZAmXSuoSLPuaQ98Xlk= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/grafeas v0.3.0/go.mod h1:P7hgN24EyONOTMyeJH6DxG4zD7fwiYa5Q6GUgyFSOU8= cloud.google.com/go/grafeas v0.3.15 h1:lBjwKmhpiqOAFaE0xdqF8CqO74a99s8tUT5mCkBBxPs= cloud.google.com/go/grafeas v0.3.15/go.mod h1:irwcwIQOBlLBotGdMwme8PipnloOPqILfIvMwlmu8Pk= -cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= -cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= -cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= -cloud.google.com/go/gsuiteaddons v1.6.1/go.mod h1:CodrdOqRZcLp5WOwejHWYBjZvfY0kOphkAKpF/3qdZY= cloud.google.com/go/gsuiteaddons v1.6.4/go.mod h1:rxtstw7Fx22uLOXBpsvb9DUbC+fiXs7rF4U29KHM/pE= cloud.google.com/go/gsuiteaddons v1.7.4/go.mod h1:gpE2RUok+HUhuK7RPE/fCOEgnTffS0lCHRaAZLxAMeE= cloud.google.com/go/gsuiteaddons v1.7.7 h1:sk0SxpCGIA7tIO//XdiiG29f2vrF6Pq/dsxxyBGiRBY= cloud.google.com/go/gsuiteaddons v1.7.7/go.mod h1:zTGmmKG/GEBCONsvMOY2ckDiEsq3FN+lzWGUiXccF9o= -cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= -cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= -cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= -cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= -cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= -cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= -cloud.google.com/go/iam v1.0.1/go.mod h1:yR3tmSL8BcZB4bxByRv2jkSIahVmCtfKZwLYGBalRE8= -cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= -cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= cloud.google.com/go/iam v1.4.0/go.mod h1:gMBgqPaERlriaOV0CUl//XUzDhSfXevn4OEUbg6VRs4= cloud.google.com/go/iam v1.5.2 h1:qgFRAGEmd8z6dJ/qyEchAuL9jpswyODjA2lS+w234g8= cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE= -cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= -cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= -cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= -cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= -cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= -cloud.google.com/go/iap v1.8.1/go.mod h1:sJCbeqg3mvWLqjZNsI6dfAtbbV1DL2Rl7e1mTyXYREQ= cloud.google.com/go/iap v1.9.3/go.mod h1:DTdutSZBqkkOm2HEOTBzhZxh2mwwxshfD/h3yofAiCw= cloud.google.com/go/iap v1.10.3/go.mod h1:xKgn7bocMuCFYhzRizRWP635E2LNPnIXT7DW0TlyPJ8= cloud.google.com/go/iap v1.11.2 h1:VIioCrYsyWiRGx7Y8RDNylpI6d4t1Qx5ZgSLUVmWWPo= cloud.google.com/go/iap v1.11.2/go.mod h1:Bh99DMUpP5CitL9lK0BC8MYgjjYO4b3FbyhgW1VHJvg= -cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= -cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= -cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= -cloud.google.com/go/ids v1.4.1/go.mod h1:np41ed8YMU8zOgv53MMMoCntLTn2lF+SUzlM+O3u/jw= cloud.google.com/go/ids v1.4.4/go.mod h1:z+WUc2eEl6S/1aZWzwtVNWoSZslgzPxAboS0lZX0HjI= cloud.google.com/go/ids v1.5.3/go.mod h1:a2MX8g18Eqs7yxD/pnEdid42SyBUm9LIzSWf8Jux9OY= cloud.google.com/go/ids v1.5.6 h1:uKGuaWozDcjg3wyf54Gd7tCH2YK8BFeH9qo1xBNiPKE= cloud.google.com/go/ids v1.5.6/go.mod h1:y3SGLmEf9KiwKsH7OHvYYVNIJAtXybqsD2z8gppsziQ= -cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= -cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= -cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= -cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= -cloud.google.com/go/iot v1.7.1/go.mod h1:46Mgw7ev1k9KqK1ao0ayW9h0lI+3hxeanz+L1zmbbbk= cloud.google.com/go/iot v1.7.4/go.mod h1:3TWqDVvsddYBG++nHSZmluoCAVGr1hAcabbWZNKEZLk= cloud.google.com/go/iot v1.8.3/go.mod h1:dYhrZh+vUxIQ9m3uajyKRSW7moF/n0rYmA2PhYAkMFE= cloud.google.com/go/iot v1.8.6 h1:A3AhugnIViAZkC3/lHAQDaXBIk2ZOPBZS0XQCyZsjjc= cloud.google.com/go/iot v1.8.6/go.mod h1:MThnkiihNkMysWNeNje2Hp0GSOpEq2Wkb/DkBCVYa0U= -cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= -cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= -cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= -cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= -cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= -cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= -cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= -cloud.google.com/go/kms v1.11.0/go.mod h1:hwdiYC0xjnWsKQQCQQmIQnS9asjYVSK6jtXm+zFqXLM= -cloud.google.com/go/kms v1.12.1/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= -cloud.google.com/go/kms v1.15.0/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= cloud.google.com/go/kms v1.21.0/go.mod h1:zoFXMhVVK7lQ3JC9xmhHMoQhnjEDZFoLAr5YMwzBLtk= cloud.google.com/go/kms v1.22.0 h1:dBRIj7+GDeeEvatJeTB19oYZNV0aj6wEqSIT/7gLqtk= cloud.google.com/go/kms v1.22.0/go.mod h1:U7mf8Sva5jpOb4bxYZdtw/9zsbIjrklYwPcvMk34AL8= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= -cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= -cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= -cloud.google.com/go/language v1.10.1/go.mod h1:CPp94nsdVNiQEt1CNjF5WkTcisLiHPyIbMhvR8H2AW0= cloud.google.com/go/language v1.12.2/go.mod h1:9idWapzr/JKXBBQ4lWqVX/hcadxB194ry20m/bTrhWc= cloud.google.com/go/language v1.14.3/go.mod h1:hjamj+KH//QzF561ZuU2J+82DdMlFUjmiGVWpovGGSA= cloud.google.com/go/language v1.14.5 h1:BVJ/POtlnJ55LElvnQY19UOxpMVtHoHHkFJW2uHJsVU= cloud.google.com/go/language v1.14.5/go.mod h1:nl2cyAVjcBct1Hk73tzxuKebk0t2eULFCaruhetdZIA= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= -cloud.google.com/go/lifesciences v0.9.1/go.mod h1:hACAOd1fFbCGLr/+weUKRAJas82Y4vrL3O5326N//Wc= cloud.google.com/go/lifesciences v0.9.4/go.mod h1:bhm64duKhMi7s9jR9WYJYvjAFJwRqNj+Nia7hF0Z7JA= cloud.google.com/go/lifesciences v0.10.3/go.mod h1:hnUUFht+KcZcliixAg+iOh88FUwAzDQQt5tWd7iIpNg= cloud.google.com/go/lifesciences v0.10.6 h1:Vu7XF4s5KJ8+mSLIL4eaQM6JTyWXvSB54oqC+CUZH20= cloud.google.com/go/lifesciences v0.10.6/go.mod h1:1nnZwaZcBThDujs9wXzECnd1S5d+UiDkPuJWAmhRi7Q= -cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= -cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= cloud.google.com/go/logging v1.9.0/go.mod h1:1Io0vnZv4onoUnsVUQY3HZ3Igb1nBchky0A0y7BBBhE= cloud.google.com/go/logging v1.13.0 h1:7j0HgAp0B94o1YRDqiqm26w4q1rDMH7XNRU34lJXHYc= cloud.google.com/go/logging v1.13.0/go.mod h1:36CoKh6KA/M0PbhPKMq6/qety2DCAErbhXT62TuXALA= -cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= -cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= -cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= -cloud.google.com/go/longrunning v0.4.2/go.mod h1:OHrnaYyLUV6oqwh0xiS7e5sLQhP1m0QU9R+WhGDMgIQ= -cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= -cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= cloud.google.com/go/longrunning v0.6.4/go.mod h1:ttZpLCe6e7EXvn9OxpBRx7kZEB0efv8yBO6YnVMfhJs= cloud.google.com/go/longrunning v0.6.6/go.mod h1:hyeGJUrPHcx0u2Uu1UFSoYZLn4lkMrccJig0t4FI7yw= cloud.google.com/go/longrunning v0.6.7 h1:IGtfDWHhQCgCjwQjV9iiLnUta9LBCo8R9QmAFsS/PrE= cloud.google.com/go/longrunning v0.6.7/go.mod h1:EAFV3IZAKmM56TyiE6VAP3VoTzhZzySwI/YI1s/nRsY= -cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= -cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= -cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= -cloud.google.com/go/managedidentities v1.6.1/go.mod h1:h/irGhTN2SkZ64F43tfGPMbHnypMbu4RB3yl8YcuEak= cloud.google.com/go/managedidentities v1.6.4/go.mod h1:WgyaECfHmF00t/1Uk8Oun3CQ2PGUtjc3e9Alh79wyiM= cloud.google.com/go/managedidentities v1.7.3/go.mod h1:H9hO2aMkjlpY+CNnKWRh+WoQiUIDO8457wWzUGsdtLA= cloud.google.com/go/managedidentities v1.7.6 h1:zrZVWXZJlmHnfpyCrTQIbDBGUBHrcOOvrsjMjoXRxrk= cloud.google.com/go/managedidentities v1.7.6/go.mod h1:pYCWPaI1AvR8Q027Vtp+SFSM/VOVgbjBF4rxp1/z5p4= -cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= -cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= -cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= -cloud.google.com/go/maps v1.3.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= -cloud.google.com/go/maps v1.4.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= cloud.google.com/go/maps v1.6.3/go.mod h1:VGAn809ADswi1ASofL5lveOHPnE6Rk/SFTTBx1yuOLw= cloud.google.com/go/maps v1.19.0/go.mod h1:goHUXrmzoZvQjUVd0KGhH8t3AYRm17P8b+fsyR1UAmQ= cloud.google.com/go/maps v1.21.0 h1:El61AfMxC1sU/RU8Wzs9dkZEgltyunKM86aKF9aDlaE= cloud.google.com/go/maps v1.21.0/go.mod h1:cqzZ7+DWUKKbPTgqE+KuNQtiCRyg/o7WZF9zDQk+HQs= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= -cloud.google.com/go/mediatranslation v0.8.1/go.mod h1:L/7hBdEYbYHQJhX2sldtTO5SZZ1C1vkapubj0T2aGig= cloud.google.com/go/mediatranslation v0.8.4/go.mod h1:9WstgtNVAdN53m6TQa5GjIjLqKQPXe74hwSCxUP6nj4= cloud.google.com/go/mediatranslation v0.9.3/go.mod h1:KTrFV0dh7duYKDjmuzjM++2Wn6yw/I5sjZQVV5k3BAA= cloud.google.com/go/mediatranslation v0.9.6 h1:SDGatA73TgZ8iCvILVXpk/1qhTK5DJyufUDEWgbmbV8= cloud.google.com/go/mediatranslation v0.9.6/go.mod h1:WS3QmObhRtr2Xu5laJBQSsjnWFPPthsyetlOyT9fJvE= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= -cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= -cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= -cloud.google.com/go/memcache v1.10.1/go.mod h1:47YRQIarv4I3QS5+hoETgKO40InqzLP6kpNLvyXuyaA= cloud.google.com/go/memcache v1.10.4/go.mod h1:v/d8PuC8d1gD6Yn5+I3INzLR01IDn0N4Ym56RgikSI0= cloud.google.com/go/memcache v1.11.3/go.mod h1:UeWI9cmY7hvjU1EU6dwJcQb6EFG4GaM3KNXOO2OFsbI= cloud.google.com/go/memcache v1.11.6 h1:33IVqQEmFiITsBXwGHeTkUhWz0kLNKr90nV3e22uLPs= cloud.google.com/go/memcache v1.11.6/go.mod h1:ZM6xr1mw3F8TWO+In7eq9rKlJc3jlX2MDt4+4H+/+cc= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= -cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= -cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= -cloud.google.com/go/metastore v1.11.1/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= -cloud.google.com/go/metastore v1.12.0/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= cloud.google.com/go/metastore v1.13.3/go.mod h1:K+wdjXdtkdk7AQg4+sXS8bRrQa9gcOr+foOMF2tqINE= cloud.google.com/go/metastore v1.14.3/go.mod h1:HlbGVOvg0ubBLVFRk3Otj3gtuzInuzO/TImOBwsKlG4= cloud.google.com/go/metastore v1.14.7 h1:dLm59AHHZCorveCylj7c2iWhkQsmMIeWTsV+tG/BXtY= cloud.google.com/go/metastore v1.14.7/go.mod h1:0dka99KQofeUgdfu+K/Jk1KeT9veWZlxuZdJpZPtuYU= -cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= -cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= -cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= -cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= -cloud.google.com/go/monitoring v1.15.1/go.mod h1:lADlSAlFdbqQuwwpaImhsJXu1QSdd3ojypXrFSMr2rM= cloud.google.com/go/monitoring v1.17.0/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw= cloud.google.com/go/monitoring v1.24.0/go.mod h1:Bd1PRK5bmQBQNnuGwHBfUamAV1ys9049oEPHnn4pcsc= cloud.google.com/go/monitoring v1.24.2 h1:5OTsoJ1dXYIiMiuL+sYscLc9BumrL3CarVLL7dd7lHM= cloud.google.com/go/monitoring v1.24.2/go.mod h1:x7yzPWcgDRnPEv3sI+jJGBkwl5qINf+6qY4eq0I9B4U= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= -cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= -cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= -cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= -cloud.google.com/go/networkconnectivity v1.12.1/go.mod h1:PelxSWYM7Sh9/guf8CFhi6vIqf19Ir/sbfZRUwXh92E= cloud.google.com/go/networkconnectivity v1.14.3/go.mod h1:4aoeFdrJpYEXNvrnfyD5kIzs8YtHg945Og4koAjHQek= cloud.google.com/go/networkconnectivity v1.16.1/go.mod h1:GBC1iOLkblcnhcnfRV92j4KzqGBrEI6tT7LP52nZCTk= cloud.google.com/go/networkconnectivity v1.17.1 h1:RQcG1rZNCNV5Dn3tnINs4TYswDXk2hKH+85eh+JvoWU= cloud.google.com/go/networkconnectivity v1.17.1/go.mod h1:DTZCq8POTkHgAlOAAEDQF3cMEr/B9k1ZbpklqvHEBtg= -cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= -cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= -cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= -cloud.google.com/go/networkmanagement v1.8.0/go.mod h1:Ho/BUGmtyEqrttTgWEe7m+8vDdK74ibQc+Be0q7Fof0= cloud.google.com/go/networkmanagement v1.9.3/go.mod h1:y7WMO1bRLaP5h3Obm4tey+NquUvB93Co1oh4wpL+XcU= cloud.google.com/go/networkmanagement v1.18.0/go.mod h1:yTxpAFuvQOOKgL3W7+k2Rp1bSKTxyRcZ5xNHGdHUM6w= cloud.google.com/go/networkmanagement v1.19.1 h1:ecukgArkYCVcK5w2h7WDDd+nHgmBAp9Bst7ClmVKz5A= cloud.google.com/go/networkmanagement v1.19.1/go.mod h1:icgk265dNnilxQzpr6rO9WuAuuCmUOqq9H6WBeM2Af4= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= -cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= -cloud.google.com/go/networksecurity v0.9.1/go.mod h1:MCMdxOKQ30wsBI1eI659f9kEp4wuuAueoC9AJKSPWZQ= cloud.google.com/go/networksecurity v0.9.4/go.mod h1:E9CeMZ2zDsNBkr8axKSYm8XyTqNhiCHf1JO/Vb8mD1w= cloud.google.com/go/networksecurity v0.10.3/go.mod h1:G85ABVcPscEgpw+gcu+HUxNZJWjn3yhTqEU7+SsltFM= cloud.google.com/go/networksecurity v0.10.6 h1:6b6fcCG9BFNcmtNO+VuPE04vkZb5TKNX9+7ZhYMgstE= cloud.google.com/go/networksecurity v0.10.6/go.mod h1:FTZvabFPvK2kR/MRIH3l/OoQ/i53eSix2KA1vhBMJec= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= -cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= -cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= -cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= -cloud.google.com/go/notebooks v1.9.1/go.mod h1:zqG9/gk05JrzgBt4ghLzEepPHNwE5jgPcHZRKhlC1A8= cloud.google.com/go/notebooks v1.11.2/go.mod h1:z0tlHI/lREXC8BS2mIsUeR3agM1AkgLiS+Isov3SS70= cloud.google.com/go/notebooks v1.12.3/go.mod h1:I0pMxZct+8Rega2LYrXL8jGAGZgLchSmh8Ksc+0xNyA= cloud.google.com/go/notebooks v1.12.6 h1:nCfZwVihArMPP2atRoxRrXOXJ/aC9rAgpBQGCc2zpYw= cloud.google.com/go/notebooks v1.12.6/go.mod h1:3Z4TMEqAKP3pu6DI/U+aEXrNJw9hGZIVbp+l3zw8EuA= -cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= -cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= -cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= -cloud.google.com/go/optimization v1.4.1/go.mod h1:j64vZQP7h9bO49m2rVaTVoNM0vEBEN5eKPUPbZyXOrk= cloud.google.com/go/optimization v1.6.2/go.mod h1:mWNZ7B9/EyMCcwNl1frUGEuY6CPijSkz88Fz2vwKPOY= cloud.google.com/go/optimization v1.7.3/go.mod h1:GlYFp4Mju0ybK5FlOUtV6zvWC00TIScdbsPyF6Iv144= cloud.google.com/go/optimization v1.7.6 h1:jDvIuSxDsXI2P7l2sYXm6CoX1YBIIT6Khm5m0hq0/KQ= cloud.google.com/go/optimization v1.7.6/go.mod h1:4MeQslrSJGv+FY4rg0hnZBR/tBX2awJ1gXYp6jZpsYY= -cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= -cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= -cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= -cloud.google.com/go/orchestration v1.8.1/go.mod h1:4sluRF3wgbYVRqz7zJ1/EUNc90TTprliq9477fGobD8= cloud.google.com/go/orchestration v1.8.4/go.mod h1:d0lywZSVYtIoSZXb0iFjv9SaL13PGyVOKDxqGxEf/qI= cloud.google.com/go/orchestration v1.11.4/go.mod h1:UKR2JwogaZmDGnAcBgAQgCPn89QMqhXFUCYVhHd31vs= cloud.google.com/go/orchestration v1.11.9 h1:PnlZ/O4R/eiounpxUkhI9ZXRMWbG7vFqxc6L6sR+31k= cloud.google.com/go/orchestration v1.11.9/go.mod h1:KKXK67ROQaPt7AxUS1V/iK0Gs8yabn3bzJ1cLHw4XBg= -cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= -cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= -cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= -cloud.google.com/go/orgpolicy v1.11.0/go.mod h1:2RK748+FtVvnfuynxBzdnyu7sygtoZa1za/0ZfpOs1M= -cloud.google.com/go/orgpolicy v1.11.1/go.mod h1:8+E3jQcpZJQliP+zaFfayC2Pg5bmhuLK755wKhIIUCE= cloud.google.com/go/orgpolicy v1.12.0/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= cloud.google.com/go/orgpolicy v1.14.2/go.mod h1:2fTDMT3X048iFKxc6DEgkG+a/gN+68qEgtPrHItKMzo= cloud.google.com/go/orgpolicy v1.15.0 h1:uQziDu3UKYk9ZwUgneZAW5aWxZFKgOXXsuVKFKh0z7Y= cloud.google.com/go/orgpolicy v1.15.0/go.mod h1:NTQLwgS8N5cJtdfK55tAnMGtvPSsy95JJhESwYHaJVs= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= -cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= -cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= -cloud.google.com/go/osconfig v1.12.0/go.mod h1:8f/PaYzoS3JMVfdfTubkowZYGmAhUCjjwnjqWI7NVBc= -cloud.google.com/go/osconfig v1.12.1/go.mod h1:4CjBxND0gswz2gfYRCUoUzCm9zCABp91EeTtWXyz0tE= cloud.google.com/go/osconfig v1.12.4/go.mod h1:B1qEwJ/jzqSRslvdOCI8Kdnp0gSng0xW4LOnIebQomA= cloud.google.com/go/osconfig v1.14.3/go.mod h1:9D2MS1Etne18r/mAeW5jtto3toc9H1qu9wLNDG3NvQg= cloud.google.com/go/osconfig v1.14.6 h1:4uJrA1obzMBp1I+DF15y/MvsXKIODevuANpq3QhvX30= cloud.google.com/go/osconfig v1.14.6/go.mod h1:LS39HDBH0IJDFgOUkhSZUHFQzmcWaCpYXLrc3A4CVzI= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= -cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= -cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= -cloud.google.com/go/oslogin v1.10.1/go.mod h1:x692z7yAue5nE7CsSnoG0aaMbNoRJRXO4sn73R+ZqAs= cloud.google.com/go/oslogin v1.13.0/go.mod h1:xPJqLwpTZ90LSE5IL1/svko+6c5avZLluiyylMb/sRA= cloud.google.com/go/oslogin v1.14.3/go.mod h1:fDEGODTG/W9ZGUTHTlMh8euXWC1fTcgjJ9Kcxxy14a8= cloud.google.com/go/oslogin v1.14.6 h1:BDKVcxo1OO4ZT+PbuFchZjnbrlUGfChilt6+pITY1VI= cloud.google.com/go/oslogin v1.14.6/go.mod h1:xEvcRZTkMXHfNSKdZ8adxD6wvRzeyAq3cQX3F3kbMRw= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= -cloud.google.com/go/phishingprotection v0.8.1/go.mod h1:AxonW7GovcA8qdEk13NfHq9hNx5KPtfxXNeUxTDxB6I= cloud.google.com/go/phishingprotection v0.8.4/go.mod h1:6b3kNPAc2AQ6jZfFHioZKg9MQNybDg4ixFd4RPZZ2nE= cloud.google.com/go/phishingprotection v0.9.3/go.mod h1:ylzN9HruB/X7dD50I4sk+FfYzuPx9fm5JWsYI0t7ncc= cloud.google.com/go/phishingprotection v0.9.6 h1:yl572bBQbPjflX250SOflN6gwO2uYoddN2uRp36fDTo= cloud.google.com/go/phishingprotection v0.9.6/go.mod h1:VmuGg03DCI0wRp/FLSvNyjFj+J8V7+uITgHjCD/x4RQ= -cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= -cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= -cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= -cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= -cloud.google.com/go/policytroubleshooter v1.7.1/go.mod h1:0NaT5v3Ag1M7U5r0GfDCpUFkWd9YqpubBWsQlhanRv0= -cloud.google.com/go/policytroubleshooter v1.8.0/go.mod h1:tmn5Ir5EToWe384EuboTcVQT7nTag2+DuH3uHmKd1HU= cloud.google.com/go/policytroubleshooter v1.10.2/go.mod h1:m4uF3f6LseVEnMV6nknlN2vYGRb+75ylQwJdnOXfnv0= cloud.google.com/go/policytroubleshooter v1.11.3/go.mod h1:AFHlORqh4AnMC0twc2yPKfzlozp3DO0yo9OfOd9aNOs= cloud.google.com/go/policytroubleshooter v1.11.6 h1:Z8+tO2z21MY1arBBuJjwrOjbw8fbZb13AZTHXdzkl2U= cloud.google.com/go/policytroubleshooter v1.11.6/go.mod h1:jdjYGIveoYolk38Dm2JjS5mPkn8IjVqPsDHccTMu3mY= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= -cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= -cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= -cloud.google.com/go/privatecatalog v0.9.1/go.mod h1:0XlDXW2unJXdf9zFz968Hp35gl/bhF4twwpXZAW50JA= cloud.google.com/go/privatecatalog v0.9.4/go.mod h1:SOjm93f+5hp/U3PqMZAHTtBtluqLygrDrVO8X8tYtG0= cloud.google.com/go/privatecatalog v0.10.4/go.mod h1:n/vXBT+Wq8B4nSRUJNDsmqla5BYjbVxOlHzS6PjiF+w= cloud.google.com/go/privatecatalog v0.10.7 h1:R951ikhxIanXEijBCu0xnoUAOteS5m/Xplek0YvsNTE= cloud.google.com/go/privatecatalog v0.10.7/go.mod h1:Fo/PF/B6m4A9vUYt0nEF1xd0U6Kk19/Je3eZGrQ6l60= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= -cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= -cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= -cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= -cloud.google.com/go/pubsub v1.32.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= -cloud.google.com/go/pubsub v1.33.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= cloud.google.com/go/pubsub v1.34.0/go.mod h1:alj4l4rBg+N3YTFDDC+/YyFTs6JAjam2QfYsddcAW4c= cloud.google.com/go/pubsub v1.47.0/go.mod h1:LaENesmga+2u0nDtLkIOILskxsfvn/BXX9Ak1NFxOs8= cloud.google.com/go/pubsub v1.49.0 h1:5054IkbslnrMCgA2MAEPcsN3Ky+AyMpEZcii/DoySPo= cloud.google.com/go/pubsub v1.49.0/go.mod h1:K1FswTWP+C1tI/nfi3HQecoVeFvL4HUOB1tdaNXKhUY= -cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= -cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= -cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= -cloud.google.com/go/pubsublite v1.8.1/go.mod h1:fOLdU4f5xldK4RGJrBMm+J7zMWNj/k4PxwEZXy39QS0= cloud.google.com/go/pubsublite v1.8.2 h1:jLQozsEVr+c6tOU13vDugtnaBSUy/PD5zK6mhm+uF1Y= cloud.google.com/go/pubsublite v1.8.2/go.mod h1:4r8GSa9NznExjuLPEJlF1VjOPOpgf3IT6k8x/YgaOPI= cloud.google.com/go/recaptchaenterprise v1.3.1 h1:u6EznTGzIdsyOsvm+Xkw0aSuKFXQlyjGE9a4exk6iNQ= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= -cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= -cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= -cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= -cloud.google.com/go/recaptchaenterprise/v2 v2.7.2/go.mod h1:kR0KjsJS7Jt1YSyWFkseQ756D45kaYNTlDPPaRAvDBU= cloud.google.com/go/recaptchaenterprise/v2 v2.9.0/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= cloud.google.com/go/recaptchaenterprise/v2 v2.19.4/go.mod h1:WaglfocMJGkqZVdXY/FVB7OhoVRONPS4uXqtNn6HfX0= cloud.google.com/go/recaptchaenterprise/v2 v2.20.4 h1:P4QMryKcWdi4LIe1Sx0b2ZOAQv5gVfdzPt2peXcN32Y= cloud.google.com/go/recaptchaenterprise/v2 v2.20.4/go.mod h1:3H8nb8j8N7Ss2eJ+zr+/H7gyorfzcxiDEtVBDvDjwDQ= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= -cloud.google.com/go/recommendationengine v0.8.1/go.mod h1:MrZihWwtFYWDzE6Hz5nKcNz3gLizXVIDI/o3G1DLcrE= cloud.google.com/go/recommendationengine v0.8.4/go.mod h1:GEteCf1PATl5v5ZsQ60sTClUE0phbWmo3rQ1Js8louU= cloud.google.com/go/recommendationengine v0.9.3/go.mod h1:QRnX5aM7DCvtqtSs7I0zay5Zfq3fzxqnsPbZF7pa1G8= cloud.google.com/go/recommendationengine v0.9.6 h1:slN7h23vswGccW8x3f+xUXCu9Yo18/GNkazH93LJbFk= cloud.google.com/go/recommendationengine v0.9.6/go.mod h1:nZnjKJu1vvoxbmuRvLB5NwGuh6cDMMQdOLXTnkukUOE= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= -cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= -cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= -cloud.google.com/go/recommender v1.10.1/go.mod h1:XFvrE4Suqn5Cq0Lf+mCP6oBHD/yRMA8XxP5sb7Q7gpA= cloud.google.com/go/recommender v1.12.0/go.mod h1:+FJosKKJSId1MBFeJ/TTyoGQZiEelQQIZMKYYD8ruK4= cloud.google.com/go/recommender v1.13.3/go.mod h1:6yAmcfqJRKglZrVuTHsieTFEm4ai9JtY3nQzmX4TC0Q= cloud.google.com/go/recommender v1.13.5 h1:cIsyRKGNw4LpCfY5c8CCQadhlp54jP4fHtP+d5Sy2xE= cloud.google.com/go/recommender v1.13.5/go.mod h1:v7x/fzk38oC62TsN5Qkdpn0eoMBh610UgArJtDIgH/E= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= -cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= -cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= -cloud.google.com/go/redis v1.13.1/go.mod h1:VP7DGLpE91M6bcsDdMuyCm2hIpB6Vp2hI090Mfd1tcg= cloud.google.com/go/redis v1.14.1/go.mod h1:MbmBxN8bEnQI4doZPC1BzADU4HGocHBk2de3SbgOkqs= cloud.google.com/go/redis v1.18.0/go.mod h1:fJ8dEQJQ7DY+mJRMkSafxQCuc8nOyPUwo9tXJqjvNEY= cloud.google.com/go/redis v1.18.2 h1:JlHLceAOILEmbn+NIS7l+vmUKkFuobLToCWTxL7NGcQ= cloud.google.com/go/redis v1.18.2/go.mod h1:q6mPRhLiR2uLf584Lcl4tsiRn0xiFlu6fnJLwCORMtY= -cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= -cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= -cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= -cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= -cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= -cloud.google.com/go/resourcemanager v1.9.1/go.mod h1:dVCuosgrh1tINZ/RwBufr8lULmWGOkPS8gL5gqyjdT8= cloud.google.com/go/resourcemanager v1.9.4/go.mod h1:N1dhP9RFvo3lUfwtfLWVxfUWq8+KUQ+XLlHLH3BoFJ0= cloud.google.com/go/resourcemanager v1.10.3/go.mod h1:JSQDy1JA3K7wtaFH23FBGld4dMtzqCoOpwY55XYR8gs= cloud.google.com/go/resourcemanager v1.10.6 h1:LIa8kKE8HF71zm976oHMqpWFiaDHVw/H1YMO71lrGmo= cloud.google.com/go/resourcemanager v1.10.6/go.mod h1:VqMoDQ03W4yZmxzLPrB+RuAoVkHDS5tFUUQUhOtnRTg= -cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= -cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= -cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= -cloud.google.com/go/resourcesettings v1.6.1/go.mod h1:M7mk9PIZrC5Fgsu1kZJci6mpgN8o0IUzVx3eJU3y4Jw= cloud.google.com/go/resourcesettings v1.6.4/go.mod h1:pYTTkWdv2lmQcjsthbZLNBP4QW140cs7wqA3DuqErVI= cloud.google.com/go/resourcesettings v1.8.3 h1:13HOFU7v4cEvIHXSAQbinF4wp2Baybbq7q9FMctg1Ek= cloud.google.com/go/resourcesettings v1.8.3/go.mod h1:BzgfXFHIWOOmHe6ZV9+r3OWfpHJgnqXy8jqwx4zTMLw= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= -cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= -cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= -cloud.google.com/go/retail v1.14.1/go.mod h1:y3Wv3Vr2k54dLNIrCzenyKG8g8dhvhncT2NcNjb/6gE= cloud.google.com/go/retail v1.14.4/go.mod h1:l/N7cMtY78yRnJqp5JW8emy7MB1nz8E4t2yfOmklYfg= cloud.google.com/go/retail v1.19.2/go.mod h1:71tRFYAcR4MhrZ1YZzaJxr030LvaZiIcupH7bXfFBcY= cloud.google.com/go/retail v1.21.0 h1:8jgWgtAg1mk91WmaoWRTlL9CcvazPwqZ3YT9n6Gva9U= cloud.google.com/go/retail v1.21.0/go.mod h1:LuG+QvBdLfKfO+7nnF3eA3l1j4TQw3Sg+UqlUorquRc= -cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= -cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= -cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= -cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= -cloud.google.com/go/run v1.2.0/go.mod h1:36V1IlDzQ0XxbQjUx6IYbw8H3TJnWvhii963WW3B/bo= cloud.google.com/go/run v1.3.3/go.mod h1:WSM5pGyJ7cfYyYbONVQBN4buz42zFqwG67Q3ch07iK4= cloud.google.com/go/run v1.9.0/go.mod h1:Dh0+mizUbtBOpPEzeXMM22t8qYQpyWpfmUiWQ0+94DU= cloud.google.com/go/run v1.10.0 h1:CDhz0PPzI/cVpmNFyHe3Yp21jNpiAqtkfRxuoLi+JU0= cloud.google.com/go/run v1.10.0/go.mod h1:z7/ZidaHOCjdn5dV0eojRbD+p8RczMk3A7Qi2L+koHg= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= -cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= -cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= -cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= -cloud.google.com/go/scheduler v1.10.1/go.mod h1:R63Ldltd47Bs4gnhQkmNDse5w8gBRrhObZ54PxgR2Oo= cloud.google.com/go/scheduler v1.10.5/go.mod h1:MTuXcrJC9tqOHhixdbHDFSIuh7xZF2IysiINDuiq6NI= cloud.google.com/go/scheduler v1.11.4/go.mod h1:0ylvH3syJnRi8EDVo9ETHW/vzpITR/b+XNnoF+GPSz4= cloud.google.com/go/scheduler v1.11.7 h1:zkMEJ0UbEJ3O7NwEUlKLIp6eXYv1L7wHjbxyxznajKM= cloud.google.com/go/scheduler v1.11.7/go.mod h1:gqYs8ndLx2M5D0oMJh48aGS630YYvC432tHCnVWN13s= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= -cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= -cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= -cloud.google.com/go/secretmanager v1.11.1/go.mod h1:znq9JlXgTNdBeQk9TBW/FnR/W4uChEKGeqQWAJ8SXFw= cloud.google.com/go/secretmanager v1.11.4/go.mod h1:wreJlbS9Zdq21lMzWmJ0XhWW2ZxgPeahsqeV/vZoJ3w= cloud.google.com/go/secretmanager v1.14.5/go.mod h1:GXznZF3qqPZDGZQqETZwZqHw4R6KCaYVvcGiRBA+aqY= cloud.google.com/go/secretmanager v1.14.7 h1:VkscIRzj7GcmZyO4z9y1EH7Xf81PcoiAo7MtlD+0O80= cloud.google.com/go/secretmanager v1.14.7/go.mod h1:uRuB4F6NTFbg0vLQ6HsT7PSsfbY7FqHbtJP1J94qxGc= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= -cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= -cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= -cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= -cloud.google.com/go/security v1.15.1/go.mod h1:MvTnnbsWnehoizHi09zoiZob0iCHVcL4AUBj76h9fXA= cloud.google.com/go/security v1.15.4/go.mod h1:oN7C2uIZKhxCLiAAijKUCuHLZbIt/ghYEo8MqwD/Ty4= cloud.google.com/go/security v1.18.3/go.mod h1:NmlSnEe7vzenMRoTLehUwa/ZTZHDQE59IPRevHcpCe4= cloud.google.com/go/security v1.18.5 h1:6hqzvuwC8za9jyCTxygmEHnp4vZ8hfhwKVArxSCAVCo= cloud.google.com/go/security v1.18.5/go.mod h1:D1wuUkDwGqTKD0Nv7d4Fn2Dc53POJSmO4tlg1K1iS7s= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= -cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= -cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= -cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= -cloud.google.com/go/securitycenter v1.23.0/go.mod h1:8pwQ4n+Y9WCWM278R8W3nF65QtY172h4S8aXyI9/hsQ= cloud.google.com/go/securitycenter v1.24.3/go.mod h1:l1XejOngggzqwr4Fa2Cn+iWZGf+aBLTXtB/vXjy5vXM= cloud.google.com/go/securitycenter v1.36.0/go.mod h1:AErAQqIvrSrk8cpiItJG1+ATl7SD7vQ6lgTFy/Tcs4Q= cloud.google.com/go/securitycenter v1.36.2 h1:hLA58IBYmWrNiXDIONvuCUQ4sHLVPy8JvDo2j1wSYCw= cloud.google.com/go/securitycenter v1.36.2/go.mod h1:80ocoXS4SNWxmpqeEPhttYrmlQzCPVGaPzL3wVcoJvE= -cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= -cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= -cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= -cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= cloud.google.com/go/servicecontrol v1.11.1 h1:d0uV7Qegtfaa7Z2ClDzr9HJmnbJW7jn0WhZ7wOX6hLE= -cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= -cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= -cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= -cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= -cloud.google.com/go/servicedirectory v1.10.1/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= -cloud.google.com/go/servicedirectory v1.11.0/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= cloud.google.com/go/servicedirectory v1.11.3/go.mod h1:LV+cHkomRLr67YoQy3Xq2tUXBGOs5z5bPofdq7qtiAw= cloud.google.com/go/servicedirectory v1.12.3/go.mod h1:dwTKSCYRD6IZMrqoBCIvZek+aOYK/6+jBzOGw8ks5aY= cloud.google.com/go/servicedirectory v1.12.6 h1:pl/KUNvFzlXpxgnPgzQjyTQQcv5WsQ97zCHaPrLQlYA= cloud.google.com/go/servicedirectory v1.12.6/go.mod h1:OojC1KhOMDYC45oyTn3Mup08FY/S0Kj7I58dxUMMTpg= -cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= -cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= -cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= cloud.google.com/go/servicemanagement v1.8.0 h1:fopAQI/IAzlxnVeiKn/8WiV6zKndjFkvi+gzu+NjywY= -cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= -cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= -cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= -cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= cloud.google.com/go/serviceusage v1.6.0 h1:rXyq+0+RSIm3HFypctp7WoXxIA563rn206CfMWdqXX4= -cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= -cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= -cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= -cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= -cloud.google.com/go/shell v1.7.1/go.mod h1:u1RaM+huXFaTojTbW4g9P5emOrrmLE69KrxqQahKn4g= cloud.google.com/go/shell v1.7.4/go.mod h1:yLeXB8eKLxw0dpEmXQ/FjriYrBijNsONpwnWsdPqlKM= cloud.google.com/go/shell v1.8.3/go.mod h1:OYcrgWF6JSp/uk76sNTtYFlMD0ho2+Cdzc7U3P/bF54= cloud.google.com/go/shell v1.8.6 h1:jLWyztGlNWBx55QXBM4HbWvfv7aiRjPzRKTUkZA8dXk= cloud.google.com/go/shell v1.8.6/go.mod h1:GNbTWf1QA/eEtYa+kWSr+ef/XTCDkUzRpV3JPw0LqSk= -cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= -cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= -cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= -cloud.google.com/go/spanner v1.47.0/go.mod h1:IXsJwVW2j4UKs0eYDqodab6HgGuA1bViSqW4uH9lfUI= cloud.google.com/go/spanner v1.55.0/go.mod h1:HXEznMUVhC+PC+HDyo9YFG2Ajj5BQDkcbqB9Z2Ffxi0= cloud.google.com/go/spanner v1.76.1/go.mod h1:YtwoE+zObKY7+ZeDCBtZ2ukM+1/iPaMfUM+KnTh/sx0= cloud.google.com/go/spanner v1.82.0 h1:w9uO8RqEoBooBLX4nqV1RtgudyU2ZX780KTLRgeVg60= cloud.google.com/go/spanner v1.82.0/go.mod h1:BzybQHFQ/NqGxvE/M+/iU29xgutJf7Q85/4U9RWMto0= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= -cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= -cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= -cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= -cloud.google.com/go/speech v1.17.1/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= -cloud.google.com/go/speech v1.19.0/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= cloud.google.com/go/speech v1.21.0/go.mod h1:wwolycgONvfz2EDU8rKuHRW3+wc9ILPsAWoikBEWavY= cloud.google.com/go/speech v1.26.0/go.mod h1:78bqDV2SgwFlP/M4n3i3PwLthFq6ta7qmyG6lUV7UCA= cloud.google.com/go/speech v1.27.1 h1:+OktATNlQc+4WH78OrQadIP4CzXb9mBucdDGCO1NrlI= cloud.google.com/go/speech v1.27.1/go.mod h1:efCfklHFL4Flxcdt9gpEMEJh9MupaBzw3QiSOVeJ6ck= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= -cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= -cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= -cloud.google.com/go/storage v1.31.0/go.mod h1:81ams1PrhW16L4kF7qg+4mTq7SRs5HsbDTM0bWvrwJ0= cloud.google.com/go/storage v1.53.0 h1:gg0ERZwL17pJ+Cz3cD2qS60w1WMDnwcm5YPAIQBHUAw= cloud.google.com/go/storage v1.53.0/go.mod h1:7/eO2a/srr9ImZW9k5uufcNahT2+fPb8w5it1i5boaA= -cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= -cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= -cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= -cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= -cloud.google.com/go/storagetransfer v1.10.0/go.mod h1:DM4sTlSmGiNczmV6iZyceIh2dbs+7z2Ayg6YAiQlYfA= cloud.google.com/go/storagetransfer v1.10.3/go.mod h1:Up8LY2p6X68SZ+WToswpQbQHnJpOty/ACcMafuey8gc= cloud.google.com/go/storagetransfer v1.12.1/go.mod h1:hQqbfs8/LTmObJyCC0KrlBw8yBJ2bSFlaGila0qBMk4= cloud.google.com/go/storagetransfer v1.13.0 h1:uqKX3OgcYzR1W1YI943ZZ45id0RqA2eXXoCBSPstlbw= cloud.google.com/go/storagetransfer v1.13.0/go.mod h1:+aov7guRxXBYgR3WCqedkyibbTICdQOiXOdpPcJCKl8= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= -cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= -cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= -cloud.google.com/go/talent v1.6.2/go.mod h1:CbGvmKCG61mkdjcqTcLOkb2ZN1SrQI8MDyma2l7VD24= cloud.google.com/go/talent v1.6.5/go.mod h1:Mf5cma696HmE+P2BWJ/ZwYqeJXEeU0UqjHFXVLadEDI= cloud.google.com/go/talent v1.8.0/go.mod h1:/gvOzSrtMcfTL/9xWhdYaZATaxUNhQ+L+3ZaGOGs7bA= cloud.google.com/go/talent v1.8.3 h1:wDP+++O/P1cTJBMkYlSY46k0a6atSoyO+UkBGuU9+Ao= cloud.google.com/go/talent v1.8.3/go.mod h1:oD3/BilJpJX8/ad8ZUAxlXHCslTg2YBbafFH3ciZSLQ= -cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= -cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= -cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= -cloud.google.com/go/texttospeech v1.7.1/go.mod h1:m7QfG5IXxeneGqTapXNxv2ItxP/FS0hCZBwXYqucgSk= cloud.google.com/go/texttospeech v1.7.4/go.mod h1:vgv0002WvR4liGuSd5BJbWy4nDn5Ozco0uJymY5+U74= cloud.google.com/go/texttospeech v1.11.0/go.mod h1:7M2ro3I2QfIEvArFk1TJ+pqXJqhszDtxUpnIv/150As= cloud.google.com/go/texttospeech v1.13.0 h1:oWWFQp0yFl4EJOr3opDkKH9304wUsZjgPjrTDS6S1a8= cloud.google.com/go/texttospeech v1.13.0/go.mod h1:g/tW/m0VJnulGncDrAoad6WdELMTes8eb77Idz+4HCo= -cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= -cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= -cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= -cloud.google.com/go/tpu v1.6.1/go.mod h1:sOdcHVIgDEEOKuqUoi6Fq53MKHJAtOwtz0GuKsWSH3E= cloud.google.com/go/tpu v1.6.4/go.mod h1:NAm9q3Rq2wIlGnOhpYICNI7+bpBebMJbh0yyp3aNw1Y= cloud.google.com/go/tpu v1.8.0/go.mod h1:XyNzyK1xc55WvL5rZEML0Z9/TUHDfnq0uICkQw6rWMo= cloud.google.com/go/tpu v1.8.3 h1:S4Ptq+yFIPNLEzQ/OQwiIYDNzk5I2vYmhf0SmFQOmWo= cloud.google.com/go/tpu v1.8.3/go.mod h1:Do6Gq+/Jx6Xs3LcY2WhHyGwKDKVw++9jIJp+X+0rxRE= -cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= -cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= -cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= -cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= -cloud.google.com/go/trace v1.10.1/go.mod h1:gbtL94KE5AJLH3y+WVpfWILmqgc6dXcqgNXdOPAQTYk= cloud.google.com/go/trace v1.10.4/go.mod h1:Nso99EDIK8Mj5/zmB+iGr9dosS/bzWCJ8wGmE6TXNWY= cloud.google.com/go/trace v1.11.3/go.mod h1:pt7zCYiDSQjC9Y2oqCsh9jF4GStB/hmjrYLsxRR27q8= cloud.google.com/go/trace v1.11.6 h1:2O2zjPzqPYAHrn3OKl029qlqG6W8ZdYaOWRyr8NgMT4= cloud.google.com/go/trace v1.11.6/go.mod h1:GA855OeDEBiBMzcckLPE2kDunIpC72N+Pq8WFieFjnI= -cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= -cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= -cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= -cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= -cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= -cloud.google.com/go/translate v1.8.1/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= -cloud.google.com/go/translate v1.8.2/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= cloud.google.com/go/translate v1.10.0/go.mod h1:Kbq9RggWsbqZ9W5YpM94Q1Xv4dshw/gr/SHfsl5yCZ0= cloud.google.com/go/translate v1.12.3/go.mod h1:qINOVpgmgBnY4YTFHdfVO4nLrSBlpvlIyosqpGEgyEg= cloud.google.com/go/translate v1.12.5 h1:QPMNi4WCtHwc2PPfxbyUMwdN/0+cyCGLaKi2tig41J8= cloud.google.com/go/translate v1.12.5/go.mod h1:o/v+QG/bdtBV1d1edmtau0PwTfActvxPk/gtqdSDBi4= -cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= -cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= -cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= -cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= -cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= -cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= -cloud.google.com/go/video v1.17.1/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= -cloud.google.com/go/video v1.19.0/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= cloud.google.com/go/video v1.20.3/go.mod h1:TnH/mNZKVHeNtpamsSPygSR0iHtvrR/cW1/GDjN5+GU= cloud.google.com/go/video v1.23.3/go.mod h1:Kvh/BheubZxGZDXSb0iO6YX7ZNcaYHbLjnnaC8Qyy3g= cloud.google.com/go/video v1.24.0 h1:KTB2BEXjGm2K/JcKxQXEgx3nSoMTByepnPZa4kln064= cloud.google.com/go/video v1.24.0/go.mod h1:h6Bw4yUbGNEa9dH4qMtUMnj6cEf+OyOv/f2tb70G6Fk= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= -cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= -cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= -cloud.google.com/go/videointelligence v1.11.1/go.mod h1:76xn/8InyQHarjTWsBR058SmlPCwQjgcvoW0aZykOvo= cloud.google.com/go/videointelligence v1.11.4/go.mod h1:kPBMAYsTPFiQxMLmmjpcZUMklJp3nC9+ipJJtprccD8= cloud.google.com/go/videointelligence v1.12.3/go.mod h1:dUA6V+NH7CVgX6TePq0IelVeBMGzvehxKPR4FGf1dtw= cloud.google.com/go/videointelligence v1.12.6 h1:heq7jEO39sH5TycBh8TGFJ827XCxK0tIWatmBY/n0jI= cloud.google.com/go/videointelligence v1.12.6/go.mod h1:/l34WMndN5/bt04lHodxiYchLVuWPQjCU6SaiTswrIw= cloud.google.com/go/vision v1.2.0 h1:/CsSTkbmO9HC8iQpxbK8ATms3OQaX3YQUeTMGCxlaK4= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= -cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= -cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= -cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= -cloud.google.com/go/vision/v2 v2.7.2/go.mod h1:jKa8oSYBWhYiXarHPvP4USxYANYUEdEsQrloLjrSwJU= cloud.google.com/go/vision/v2 v2.7.5/go.mod h1:GcviprJLFfK9OLf0z8Gm6lQb6ZFUulvpZws+mm6yPLM= cloud.google.com/go/vision/v2 v2.9.3/go.mod h1:weAcT8aNYSgrWWVTC2PuJTc7fcXKvUeAyDq8B6HkLSg= cloud.google.com/go/vision/v2 v2.9.5 h1:UJZ0H6UlOaYKgCn6lWG2iMAOJIsJZLnseEfzBR8yIqQ= cloud.google.com/go/vision/v2 v2.9.5/go.mod h1:1SiNZPpypqZDbOzU052ZYRiyKjwOcyqgGgqQCI/nlx8= -cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= -cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= -cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= -cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= -cloud.google.com/go/vmmigration v1.7.1/go.mod h1:WD+5z7a/IpZ5bKK//YmT9E047AD+rjycCAvyMxGJbro= cloud.google.com/go/vmmigration v1.7.4/go.mod h1:yBXCmiLaB99hEl/G9ZooNx2GyzgsjKnw5fWcINRgD70= cloud.google.com/go/vmmigration v1.8.3/go.mod h1:8CzUpK9eBzohgpL4RvBVtW4sY/sDliVyQonTFQfWcJ4= cloud.google.com/go/vmmigration v1.8.6 h1:68hOQDhs1DOITrCrhritrwr8xy6s8QMdwDyMzMiFleU= cloud.google.com/go/vmmigration v1.8.6/go.mod h1:uZ6/KXmekwK3JmC8PzBM/cKQmq404TTfWtThF6bbf0U= -cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= -cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= -cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= -cloud.google.com/go/vmwareengine v0.4.1/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= -cloud.google.com/go/vmwareengine v1.0.0/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= cloud.google.com/go/vmwareengine v1.0.3/go.mod h1:QSpdZ1stlbfKtyt6Iu19M6XRxjmXO+vb5a/R6Fvy2y4= cloud.google.com/go/vmwareengine v1.3.3/go.mod h1:G7vz05KGijha0c0dj1INRKyDAaQW8TRMZt/FrfOZVXc= cloud.google.com/go/vmwareengine v1.3.5 h1:OsGd1SB91y9fDuzdzFngMv4UcT4cqmRxjsCsS4Xmcu8= cloud.google.com/go/vmwareengine v1.3.5/go.mod h1:QuVu2/b/eo8zcIkxBYY5QSwiyEcAy6dInI7N+keI+Jg= -cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= -cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= -cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= -cloud.google.com/go/vpcaccess v1.7.1/go.mod h1:FogoD46/ZU+JUBX9D606X21EnxiszYi2tArQwLY4SXs= cloud.google.com/go/vpcaccess v1.7.4/go.mod h1:lA0KTvhtEOb/VOdnH/gwPuOzGgM+CWsmGu6bb4IoMKk= cloud.google.com/go/vpcaccess v1.8.3/go.mod h1:bqOhyeSh/nEmLIsIUoCiQCBHeNPNjaK9M3bIvKxFdsY= cloud.google.com/go/vpcaccess v1.8.6 h1:RYtUB9rQEijX9Tc6lQcGst58ZOzPgaYTkz6+2pyPQTM= cloud.google.com/go/vpcaccess v1.8.6/go.mod h1:61yymNplV1hAbo8+kBOFO7Vs+4ZHYI244rSFgmsHC6E= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= -cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= -cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= -cloud.google.com/go/webrisk v1.9.1/go.mod h1:4GCmXKcOa2BZcZPn6DCEvE7HypmEJcJkr4mtM+sqYPc= cloud.google.com/go/webrisk v1.9.4/go.mod h1:w7m4Ib4C+OseSr2GL66m0zMBywdrVNTDKsdEsfMl7X0= cloud.google.com/go/webrisk v1.10.3/go.mod h1:rRAqCA5/EQOX8ZEEF4HMIrLHGTK/Y1hEQgWMnih+jAw= cloud.google.com/go/webrisk v1.11.1 h1:yZKNB7zRxOMriLrhP5WDE+BjxXVl0wJHHZSdaYzbdVU= cloud.google.com/go/webrisk v1.11.1/go.mod h1:+9SaepGg2lcp1p0pXuHyz3R2Yi2fHKKb4c1Q9y0qbtA= -cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= -cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= -cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= -cloud.google.com/go/websecurityscanner v1.6.1/go.mod h1:Njgaw3rttgRHXzwCB8kgCYqv5/rGpFCsBOvPbYgszpg= cloud.google.com/go/websecurityscanner v1.6.4/go.mod h1:mUiyMQ+dGpPPRkHgknIZeCzSHJ45+fY4F52nZFDHm2o= cloud.google.com/go/websecurityscanner v1.7.3/go.mod h1:gy0Kmct4GNLoCePWs9xkQym1D7D59ld5AjhXrjipxSs= cloud.google.com/go/websecurityscanner v1.7.6 h1:cIPKJKZA3l7D8DfL4nxce8HGOWXBw3WAUBF0ymOW9GQ= cloud.google.com/go/websecurityscanner v1.7.6/go.mod h1:ucaaTO5JESFn5f2pjdX01wGbQ8D6h79KHrmO2uGZeiY= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= -cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= -cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= -cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvofaL6FqlET6g= cloud.google.com/go/workflows v1.12.3/go.mod h1:fmOUeeqEwPzIU81foMjTRQIdwQHADi/vEr1cx9R1m5g= cloud.google.com/go/workflows v1.13.3/go.mod h1:Xi7wggEt/ljoEcyk+CB/Oa1AHBCk0T1f5UH/exBB5CE= cloud.google.com/go/workflows v1.14.2 h1:phBz5TOAES0YGogxZ6Q7ISSudaf618lRhE3euzBpE9U= @@ -1268,13 +515,11 @@ codeberg.org/go-pdf/fpdf v0.10.0 h1:u+w669foDDx5Ds43mpiiayp40Ov6sZalgcPMDBcZRd4= codeberg.org/go-pdf/fpdf v0.10.0/go.mod h1:Y0DGRAdZ0OmnZPvjbMp/1bYxmIPxm0ws4tfoPOc4LjU= contrib.go.opencensus.io/exporter/stackdriver v0.13.14 h1:zBakwHardp9Jcb8sQHcHpXy/0+JIb1M8KjigCJzx7+4= contrib.go.opencensus.io/exporter/stackdriver v0.13.14/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20221208032759-85de2813cf6b h1:a26Bdkl2B9PmYN6vGXnnfB2UGKjz0Moif1aEg+xTd7M= dmitri.shuralyov.com/gpu/mtl v0.0.0-20221208032759-85de2813cf6b/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= eliasnaur.com/font v0.0.0-20230308162249-dd43949cb42d h1:ARo7NCVvN2NdhLlJE9xAbKweuI9L6UgfTbYb0YwPacY= eliasnaur.com/font v0.0.0-20230308162249-dd43949cb42d/go.mod h1:OYVuxibdk9OSLX8vAqydtRPP87PyTFcT9uH3MlEGBQA= -gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= gioui.org v0.0.0-20210822154628-43a7030f6e0b/go.mod h1:jmZ349gZNGWyc5FIv/VWLBQ32Ki/FOvTgEz64kh9lnk= gioui.org v0.2.0 h1:RbzDn1h/pCVf/q44ImQSa/J3MIFpY3OWphzT/Tyei+w= gioui.org v0.2.0/go.mod h1:1H72sKEk/fNFV+l0JNeM2Dt3co3Y4uaQcD+I+/GQ0e4= @@ -1289,13 +534,11 @@ gioui.org/x v0.2.0 h1:/MbdjKH19F16auv19UiQxli2n6BYPw7eyh9XBOTgmEw= gioui.org/x v0.2.0/go.mod h1:rCGN2nZ8ZHqrtseJoQxCMZpt2xrZUrdZ2WuMRLBJmYs= git.sr.ht/~jackmordaunt/go-toast v1.0.0 h1:bbRox6VkotdOj3QcWimZQ84APoszIsA/pSIj8ypDdV8= git.sr.ht/~jackmordaunt/go-toast v1.0.0/go.mod h1:aIuRX/HdBOz7yRS8rOVYQCwJQlFS7DbYBTpUV0SHeeg= -git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= git.sr.ht/~sbinet/gg v0.6.0 h1:RIzgkizAk+9r7uPzf/VfbJHBMKUr0F5hRFxTUGMnt38= git.sr.ht/~sbinet/gg v0.6.0/go.mod h1:uucygbfC9wVPQIfrmwM2et0imr8L7KQWywX0xpFMm94= git.wow.st/gmp/jni v0.0.0-20210610011705-34026c7e22d0 h1:bGG/g4ypjrCJoSvFrP5hafr9PPB5aw8SjcOWWila7ZI= git.wow.st/gmp/jni v0.0.0-20210610011705-34026c7e22d0/go.mod h1:+axXBRUTIDlCeE73IKeD/os7LoEnTKdkp8/gQOFjqyo= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.2 h1:DBjmt6/otSdULyJdVg2BlG0qGZO5tKL4VzOs0jpvw5Q= github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.2/go.mod h1:dppbR7CwXD4pgtV9t3wD1812RaLDcBjtblcDF5f1vI0= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY= @@ -1307,18 +550,13 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0/go.mod h1:SZiPHWGOOk3bl8tkevxkoiwPgsIl6CwrWcbwjfHZpdM= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 h1:6/0iUd0xrnX7qt+mLNRwg5c0PGv8wpE8K90ryANQwMI= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0/go.mod h1:otE2jQekW/PqXk1Awf5lmfokJx4uwuqcj1ab5SpGeW0= -github.com/GoogleCloudPlatform/testgrid v0.0.173 h1:NyHqWe5gJW9G22VjwTBYpQniMfgQFKNm5OpLaRop97s= -github.com/GoogleCloudPlatform/testgrid v0.0.173/go.mod h1:lOKP2QzzzIDB4D0nJs1BcNMzJErjrlTNqG3vsCddx8c= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU= -github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= github.com/Shopify/sarama v1.19.0 h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= @@ -1330,30 +568,19 @@ github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 h1:rFw4nCn9iMW+Vaj github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9 h1:7kQgkwGRoLzC9K0oyXdJo7nve/bynv/KwUsxbiTlzAM= github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19 h1:iXUgAaqDcIUGbRoy2TdeofRG/j1zpGRSEmNK05T+bi8= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY= github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= -github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0 h1:uF5Q/hWnDU1XZeT6CsrRSxHLroUSEYYO3kgES+yd+So= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0/go.mod h1:ccdDYaY5+gO+cbnQdFxEXqfy0RkoV25H3jLXUDNM3wg= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9 h1:goHVqTbFX3AIo0tzGr14pgfAW2ZfPChKO21Z9MGf/gk= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= github.com/apache/arrow/go/v10 v10.0.1 h1:n9dERvixoC/1JjDmBcs9FPaEryoANa2sCgVFo6ez9cI= -github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= github.com/apache/arrow/go/v11 v11.0.0 h1:hqauxvFQxww+0mEU/2XHG6LT7eZternCZq+A5Yly2uM= -github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= -github.com/apache/arrow/go/v12 v12.0.0/go.mod h1:d+tV/eHZZ7Dz7RPrFKtPK02tpr+c9/PEd/zm8mDS9Vg= github.com/apache/arrow/go/v12 v12.0.1 h1:JsR2+hzYYjgSUkBSaahpqCetqZMr76djX80fF/DiJbg= github.com/apache/arrow/go/v12 v12.0.1/go.mod h1:weuTY7JvTG/HDPtMQxEUp7pU73vkLWMLpY67QwZ/WWw= github.com/apache/arrow/go/v15 v15.0.2 h1:60IliRbiyTWCWjERBCkO1W4Qun9svcYoZrSLcyOsMLE= @@ -1361,7 +588,6 @@ github.com/apache/arrow/go/v15 v15.0.2/go.mod h1:DGXsR3ajT524njufqf95822i+KTh+ye github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY= -github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= @@ -1369,11 +595,9 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a h1:pv34s756C4pEXnjgPfGYgdhg/ZdajGhyOvzx8k+23nw= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= @@ -1385,12 +609,8 @@ github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWp github.com/aymanbagabas/go-udiff v0.2.0/go.mod h1:RE4Ex0qsGkTAJoQdQQCA0uG+nAzJO/pI/QwceO5fgrA= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= -github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= github.com/bufbuild/protovalidate-go v0.2.1 h1:pJr07sYhliyfj/STAM7hU4J3FKpVeLVKvOBmOTN8j+s= @@ -1402,21 +622,13 @@ github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEe github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= -github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a h1:G99klV19u0QnhiizODirwVksQB91TJKV/UaTnACcG30= github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec h1:EdRZT3IeKQmfCSrgo8SZ8V3MEnskuJP0wCYNpe+aiXo= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= @@ -1425,20 +637,7 @@ github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a/go.mod h1:rzgs2 github.com/cloudflare/circl v1.1.0 h1:bZgT/A+cikZnKIwn7xL2OBj012Bmvho/o6RpRvv3GKY= github.com/cloudflare/redoctober v0.0.0-20211013234631-6a74ccc611f6 h1:QKzett0dn5FhjcIHNKSClEilabfhWCnsdijq3ftm9Ms= github.com/cloudflare/redoctober v0.0.0-20211013234631-6a74ccc611f6/go.mod h1:Ikt4Wfpln1YOrak+auA8BNxgiilj0Y2y7nO+aN2eMzk= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nCtnAiZdYFd45cYZPs8vOOIYKfk= -github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= @@ -1459,9 +658,7 @@ github.com/cristalhq/acmd v0.12.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgB github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= @@ -1473,271 +670,124 @@ github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= -github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= -github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI= -github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= -github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= -github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= -github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= -github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/esiqveland/notify v0.11.0 h1:0WJ/xW+3Ln8uRBYntG7f0XihXxnlOaQTdha1yyzXz30= github.com/esiqveland/notify v0.11.0/go.mod h1:63UbVSaeJwF0LVJARHFuPgUAoM7o1BEvCZyknsuonBc= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= -github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= -github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db h1:gb2Z18BhTPJPpLQWj4T+rfKHYCHxRHCtRxhKKjRidVw= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8 h1:a9ENSRDFBUPkJ5lCgVZh26+ZbGyoVJG7yb5SSzF5H54= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fullstorydev/grpcurl v1.8.9 h1:JMvZXK8lHDGyLmTQ0ZdGDnVVGuwjbpaumf8p42z0d+c= github.com/fullstorydev/grpcurl v1.8.9/go.mod h1:PNNKevV5VNAV2loscyLISrEnWQI61eqR0F8l3bVadAA= github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw= -github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/getsentry/sentry-go v0.11.0 h1:qro8uttJGvNAMr5CLcFI9CHR0aDzXl0Vs3Pmw/oTPg8= github.com/getsentry/sentry-go v0.11.0/go.mod h1:KBQIxiZAetw62Cj8Ri964vAEWVdgfaUCn30Q3bCvANo= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-chi/chi v1.5.4 h1:QHdzF2szwjqVV4wmByUnTcsbIg7UGaQ0tPF2t5GcAIs= -github.com/go-chi/chi v1.5.4/go.mod h1:uaf8YgoFazUOkPBG7fxPftUylNumIev9awIWOENIuEg= github.com/go-fonts/dejavu v0.3.2 h1:3XlHi0JBYX+Cp8n98c6qSoHrxPa4AUKDMKdrh/0sUdk= github.com/go-fonts/dejavu v0.3.2/go.mod h1:m+TzKY7ZEl09/a17t1593E4VYW8L1VaBXHzFZOIjGEY= -github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= github.com/go-fonts/latin-modern v0.3.2 h1:M+Sq24Dp0ZRPf3TctPnG1MZxRblqyWC/cRUL9WmdaFc= github.com/go-fonts/latin-modern v0.3.2/go.mod h1:9odJt4NbRrbdj4UAMuLVd4zEukf6aAEKnDaQga0whqQ= -github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= github.com/go-fonts/liberation v0.3.2 h1:XuwG0vGHFBPRRI8Qwbi5tIvR3cku9LUfZGq/Ar16wlQ= github.com/go-fonts/liberation v0.3.2/go.mod h1:N0QsDLVUQPy3UYg9XAc3Uh3UDMp2Z7M1o4+X98dXkmI= -github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-fonts/stix v0.2.2 h1:v9krocr13J1llaOHLEol1eaHsv8S43UuFX/1bFgEJJ4= github.com/go-fonts/stix v0.2.2/go.mod h1:SUxggC9dxd/Q+rb5PkJuvfvTbOPtNc2Qaua00fIp9iU= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231223183121-56fa3ac82ce7 h1:7tf/0aw5DxRQjr7WaNqgtjidub6v21L2cogKIbMcTYw= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231223183121-56fa3ac82ce7/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-jose/go-jose/v4 v4.0.4/go.mod h1:NKb5HO1EZccyMpiZNbdUw/14tiXNyUJh188dfnMCAfc= github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI= github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/log v0.1.0 h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= -github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-latex/latex v0.0.0-20231108140139-5c1ce85aa4ea h1:DfZQkvEbdmOe+JK2TMtBM+0I9GSdzE2y/L1/AmD8xKc= github.com/go-latex/latex v0.0.0-20231108140139-5c1ce85aa4ea/go.mod h1:Y7Vld91/HRbTBm7JwoI7HejdDB0u+e9AUBO9MB7yuZk= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= -github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.9.0 h1:PPvSaUuo1iMi9KkaAn90NuKi+P4gwMedWPHhj8YlJQw= github.com/go-pdf/fpdf v0.9.0/go.mod h1:oO8N111TkmKb9D7VvWGLvLJlaZUQVPM+6V42pp3iV4Y= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372 h1:FQivqchis6bE2/9uF70M2gmmLpe82esEm2QadL0TEJo= github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372/go.mod h1:evDBbvNR/KaVFZ2ZlDSOWWXIUKq0wCOEtzLxRM8SG3k= github.com/go-text/typesetting-utils v0.0.0-20230616150549-2a7df14b6a22 h1:LBQTFxP2MfsyEDqSKmUBZaDuDHN1vpqDyOZjcqS7MYI= github.com/go-text/typesetting-utils v0.0.0-20230616150549-2a7df14b6a22/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o= github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198 h1:FSii2UQeSLngl3jFoR4tUKZLprO7qUlh/TKKticc0BM= github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198/go.mod h1:DTh/Y2+NbnOVVoypCCQrovMPDKUGp4yZpSbWg5D0XIM= -github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/googleapis v1.1.0 h1:kFkMAZBNAn4j7K0GiZr8cRYzejq68VbheufiV3YuyFI= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I= github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/cel-go v0.17.1 h1:s2151PDGy/eqpCI80/8dl4VL3xTkqI/YubXLXCFw0mw= github.com/google/cel-go v0.17.1/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= -github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/generative-ai-go v0.20.1 h1:6dEIujpgN2V0PgLhr6c/M1ynRdc7ARtiIDPFzj45uNQ= github.com/google/generative-ai-go v0.20.1/go.mod h1:TjOnZJmZKzarWbjUJgy+r3Ee7HGBRVLhOIgupnwR4Bg= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= -github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v50 v50.2.0 h1:j2FyongEHlO9nxXLc+LP3wuBSVU9mVxfpdYUexMpIfk= -github.com/google/go-github/v60 v60.0.0 h1:oLG98PsLauFvvu4D/YPxq374jhSxFYdzQGNCyONLfn8= -github.com/google/go-github/v60 v60.0.0/go.mod h1:ByhX2dP9XT9o/ll2yXAu2VD8l5eNVg8hD4Cr0S/LmQk= -github.com/google/go-pkcs11 v0.2.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= github.com/google/go-pkcs11 v0.3.0 h1:PVRnTgtArZ3QQqTGtbtjtnIkzl2iY2kt24yqbrf7td8= github.com/google/go-pkcs11 v0.3.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= -github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM= -github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= -github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= github.com/google/trillian v1.6.0 h1:jMBeDBIkINFvS2n6oV5maDqfRlxREAc6CW9QYWQ0qT4= github.com/google/trillian v1.6.0/go.mod h1:Yu3nIMITzNhhMJEHjAtp6xKiu+H/iHu2Oq5FjV2mCWI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/cloud-bigtable-clients-test v0.0.3 h1:afMKTvA/jc6jSTMkeHBZGFDTt8Cc+kb1ATFzqMK85hw= github.com/googleapis/cloud-bigtable-clients-test v0.0.3/go.mod h1:TWtDzrrAI70C3dNLDY+nZN3gxHtFdZIbpL9rCTFyxE0= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= -github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= -github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8 h1:tlyzajkF3030q6M8SvmJSemC9DTHL/xaMa18b65+JM4= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= @@ -1749,7 +799,6 @@ github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= @@ -1757,16 +806,11 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92Bcuy github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/hashicorp/consul/api v1.3.0 h1:HXNYlRkkM/t+Y/Yhxtwcy02dlYwIaoxzvxPnS+cqy78= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.3.0 h1:UOxjlb4xVNF93jak1mzzoBatyFju9nrkxpVwIp/QqxQ= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= -github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= @@ -1775,7 +819,6 @@ github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqk github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= -github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= @@ -1787,9 +830,7 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= @@ -1801,15 +842,11 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0 h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= @@ -1830,44 +867,24 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5 h1:PJr+ZMXIecYc1Ey2zucXdR73SMBtgjPgwa31099IMv0= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= -github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/kylelemons/go-gypsy v1.0.0 h1:7/wQ7A3UL1bnqRMnZ6T8cwCOArfZCxFmb1iTxaOOo1s= github.com/kylelemons/go-gypsy v1.0.0/go.mod h1:chkXM0zjdpXOiqkCW1XcCHDfjfk14PH2KKkQWxfJUcU= @@ -1879,10 +896,7 @@ github.com/lightstep/lightstep-tracer-go v0.18.1 h1:vi1F1IQ8N7hNWytK9DpJsUfQhGuN github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star v0.6.1 h1:erE0rdztuaDq3bpGifD95wfoPrSZc95nGA6tbiNYh6M= -github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= -github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4 h1:sIXJOMrYnQZJu7OB7ANSF4MYri2fTEGIsRLz6LwI4xE= github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/lyft/protoc-gen-validate v0.0.13 h1:KNt/RhmQTOLr7Aj8PsJ7mTronaFyx80mRTT9qF261dA= @@ -1892,18 +906,11 @@ github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXq github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= -github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mgechev/dots v1.0.0 h1:o+4OJ3OjWzgQHGJXKfJ8rbH4dqDugu5BiEy84nxg0k4= github.com/mgechev/dots v1.0.0/go.mod h1:rykuMydC9t3wfkM+ccYH3U3ss03vZGg6h3hmOznXLH0= github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA= @@ -1911,9 +918,7 @@ github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3N github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU= github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= -github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI= -github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -1924,25 +929,14 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5 h1:0KqC6/sLy7fDpBdybhVkkv4Yz+PmB7c9Dz9z3dLW804= github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= github.com/mreiferson/go-httpclient v0.0.0-20201222173833-5e475fde3a4d h1:tLWCMSjfL8XyZwpu1RzI2UpJSPbZCOZ6DVHQFnlpL7A= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= @@ -1955,9 +949,7 @@ github.com/nats-io/nkeys v0.1.3 h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/oklog v0.3.2 h1:wVfs8F+in6nTBMkA7CbRw+zZMIB7nNM825cM1wuzoTk= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= @@ -1965,35 +957,9 @@ github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQ github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0 h1:LiZB1h0GIcudcDci2bxbqI6DXV8bF8POAnArqvRrIyw= github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0/go.mod h1:F/7q8/HZz+TXjlsoZQQKVYvXTZaFH4QRa3y+j1p7MS0= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= -github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= -github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0= -github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= -github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw= -github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= -github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc= -github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk= -github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= -github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= -github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM= -github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= -github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM= -github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= -github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= -github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw= -github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= @@ -2018,69 +984,40 @@ github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtP github.com/performancecopilot/speed v3.0.0+incompatible h1:2WnRzIquHa5QxaJKShDkLM+sc0JPuwhXzK8OYOyt3Vg= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/phpdave11/gofpdf v1.4.2 h1:KPKiIbfwbvC/wOncwhrpRdXVj2CZTCFlw4wnoyjtHfQ= -github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= -github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/phpdave11/gofpdi v1.0.13 h1:o61duiW8M9sMlkVXWlvP92sZJtGKENvW3VExs6dZukQ= -github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1 h1:F++O52m40owAmADcojzM+9gyjmMOY/T4oYJkgFDH8RE= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1 h1:I2qBYMChEhIjOgazfJmV3/mZM256btk6wkCDRmW7JYs= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/prometheus v0.47.2 h1:jWcnuQHz1o1Wu3MZ6nMJDuTI0kU5yJp9pkxh8XEkNvI= github.com/prometheus/prometheus v0.47.2/go.mod h1:J/bmOSjgH7lFxz2gZhrWEZs2i64vMS+HIuZfmYNhJ/M= github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71 h1:CNooiryw5aisadVfzneSZPswRWvnVW8hF1bS/vo8ReI= github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= -github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= @@ -2090,9 +1027,7 @@ github.com/rs/zerolog v1.21.0 h1:Q3vdXlfLNT+OftyBHsU0Y445MD+8m8axjKgf2si0QcM= github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY= -github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= @@ -2100,15 +1035,12 @@ github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0 github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= -github.com/sethvargo/go-retry v0.2.4/go.mod h1:1afjQuvh7s4gflMObvjLPaWgluLLyhA1wmVZ6KLpICw= github.com/shirou/gopsutil/v4 v4.25.8 h1:NnAsw9lN7587WHxjJA9ryDnqhJpFH6A+wagYWTOH970= github.com/shirou/gopsutil/v4 v4.25.8/go.mod h1:q9QdMmfAOVIw7a+eF86P7ISEU6ka+NLgkUxlopV4RwI= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= @@ -2118,11 +1050,6 @@ github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4k github.com/sony/gobreaker v0.4.1 h1:oMnRNZXX5j85zso6xCPRNPtmAycat+WcoKbklScLDgQ= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= @@ -2130,7 +1057,6 @@ github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0 github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -2138,14 +1064,6 @@ github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271 h1:WhxRHzgeVGETMlmV github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a h1:AhmOdSHeswKHBjhsLs/7+1voOxT+LLrSk/Nxvk35fug= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= @@ -2174,11 +1092,9 @@ github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= -github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= -github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 h1:Nzukz5fNOBIHOsnP+6I79kPx3QhLv8nBy2mfFhBRq30= @@ -2194,15 +1110,7 @@ go.etcd.io/etcd/raft/v3 v3.5.12 h1:7r22RufdDsq2z3STjoR7Msz6fYH8tmbkdheGfwJNRmU= go.etcd.io/etcd/raft/v3 v3.5.12/go.mod h1:ERQuZVe79PI6vcC3DlKBukDCLja/L7YMu29B74Iwj4U= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= go.opentelemetry.io/contrib/detectors/gcp v1.36.0 h1:F7q2tNlCaHY9nMKHR6XH9/qkp8FktLnIcy6jJNyOCQw= go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k= @@ -2239,9 +1147,6 @@ go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40 go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -2259,57 +1164,21 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20210722180016-6781d3edade3/go.mod h1:DVyR6MI7P4kEQgvZJSj1fQGrWIi2RzIrfYWycwheUAc= -golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/exp v0.0.0-20221012211006-4de253d81b95/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= golang.org/x/exp/shiny v0.0.0-20220827204233-334a2380cb91/go.mod h1:VjAR7z0ngyATZTELrBSkxOOHhhlnVUxDye4mcjx5h/8= golang.org/x/exp/shiny v0.0.0-20240707233637-46b078467d37/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c h1:jTMrjjZRcSH/BDxWhXCP6OWsfVgmnwI7J+F4/nyVXaU= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/image v0.5.0/go.mod h1:FVC7BI/5Ym8R25iw5OLsgshdUBbT1h5jZTpA+mvAdZ4= golang.org/x/image v0.12.0/go.mod h1:Lu90jvHG7GfemOIcldsh9A2hS01ocl6oNO7ype5mEnk= golang.org/x/image v0.13.0/go.mod h1:6mmbMOeV28HuMTgA6OSRkdXKYw/t5W9Uwn2Yv1r3Yxk= @@ -2318,90 +1187,21 @@ golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78 golang.org/x/image v0.24.0/go.mod h1:4b/ITuLfqYq1hqZcjofwctIhi7sZh2WaCjvsBNjjya8= golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ= golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mobile v0.0.0-20201217150744-e6ae53a27f4f/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4= golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a h1:sYbmY3FwUWCBTodZL1S3JUuOvaW6kM2o+clDzzDNBWg= golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a/go.mod h1:Ede7gF0KGoHlj822RtphAHK1jLdrcuRBZg0sF1Q+SPc= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= @@ -2412,136 +1212,25 @@ golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= -golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= -golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= -golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -2550,20 +1239,6 @@ golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= -golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= -golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= @@ -2574,167 +1249,28 @@ golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= -golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= -golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= -golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= -gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= gonum.org/v1/gonum v0.15.1/go.mod h1:eZTZuRFrzu5pcyjN5wJhcIhnUdNijYxX1T2IcrOGY0o= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= -gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= gonum.org/v1/plot v0.15.2 h1:Tlfh/jBk2tqjLZ4/P8ZIwGrLEWQSPDLRm/SNWKNXiGI= gonum.org/v1/plot v0.15.2/go.mod h1:DX+x+DWso3LTha+AdkJEv5Txvi+Tql3KAGkehP0/Ubg= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= -google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= -google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= -google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= -google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.118.0/go.mod h1:76TtD3vkgmZ66zZzp72bUUklpmQmKlhh6sYtIjYK+5E= -google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= -google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= -google.golang.org/api v0.125.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= -google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= -google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= -google.golang.org/api v0.134.0/go.mod h1:sjRL3UnjTx5UqNQS9EWr9N8p7xbHpy1k0XGRLCf3Spk= google.golang.org/api v0.160.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= google.golang.org/api v0.222.0/go.mod h1:efZia3nXpWELrwMlN5vyQrD4GmJN1Vw0x68Et3r+a9c= google.golang.org/api v0.229.0/go.mod h1:wyDfmq5g1wYJWn29O22FDWN48P7Xcz0xz+LBpptYvB0= @@ -2743,166 +1279,15 @@ google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkK google.golang.org/api v0.246.0 h1:H0ODDs5PnMZVZAEtdLMn2Ul2eQi7QNjqM2DIFp8TlTM= google.golang.org/api v0.246.0/go.mod h1:dMVhVcylamkirHdzEBAIQWUCgqY885ivNeZYd7VAVr8= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= -google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= -google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= -google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= -google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= -google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= -google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= -google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= -google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY= -google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= -google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= -google.golang.org/genproto v0.0.0-20230629202037-9506855d4529/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= -google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y= -google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:0ggbjUrZYpy1q+ANUS30SEoGZ53cdfwtbuG7Ptgy108= -google.golang.org/genproto v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= google.golang.org/genproto v0.0.0-20250122153221-138b5a5a4fd4/go.mod h1:qbZzneIOXSq+KFAFut9krLfRLZiFLzZL5u2t8SV83EE= google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE= google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s= -google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8= -google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:mPBs5jNgx2GuQGvFwUvVKqtn6HsUw9nP64BedgvqEsQ= -google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= google.golang.org/genproto/googleapis/api v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:B5xPO//w8qmBDjGReYLpR6UJPnkldGkCSMoH/2vxJeg= google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= @@ -2914,19 +1299,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2/go. google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= -google.golang.org/genproto/googleapis/bytestream v0.0.0-20230720185612-659f7aaaa771/go.mod h1:3QoBVwTHkXbY1oRGzlhwhOykfcATQN43LJ6iT8Wy8kE= google.golang.org/genproto/googleapis/bytestream v0.0.0-20250728155136-f173205681a0 h1:HyHZz/b6hYFm/aS2F0DOAyjK5mQw0Jh8YiZyqlXMfic= google.golang.org/genproto/googleapis/bytestream v0.0.0-20250728155136-f173205681a0/go.mod h1:h6yxum/C2qRb4txaZRLDHK8RyS0H/o2oEDeKY4onY/Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= @@ -2945,49 +1319,9 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= -google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= -google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= -google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= -google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= -google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= @@ -3000,43 +1334,24 @@ google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7E google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20 h1:MLBCGN1O7GzIx+cBiwfYPwtmZ41U3Mn/cotLJciaArI= google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20/go.mod h1:Nr5H8+MlGWr5+xX/STzdoEqJrO+YteqFbMyCsrb6mH0= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= @@ -3044,123 +1359,38 @@ gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg= gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.27.4 h1:0pCo/AN9hONazBKlNUdhQymmnfLRbSZjd5H5H3f0bSs= -k8s.io/api v0.27.4/go.mod h1:O3smaaX15NfxjzILfiln1D8Z3+gEYpjEpiNA/1EVK1Y= k8s.io/apimachinery v0.27.4 h1:CdxflD4AF61yewuid0fLl6bM4a3q04jWel0IlP+aYjs= -k8s.io/apimachinery v0.27.4/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c h1:GohjlNKauSai7gN4wsJkeZ3WAJx4Sh+oT/b5IYn5suA= -k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f h1:2kWPakN3i/k81b0gvD5C5FJ2kxm1WrQFanWchyKuqGg= -k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f/go.mod h1:byini6yhqGC14c3ebc/QwanvYwhuMWF6yz2F8uwW8eg= -k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20230209194617-a36077c30491/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= -lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= -modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v3 v3.37.0/go.mod h1:vtL+3mdHx/wcj3iEGz84rQa8vEqR6XM84v5Lcvfph20= modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw= -modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= -modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= -modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= -modernc.org/ccgo/v3 v3.0.0-20220904174949-82d86e1b6d56/go.mod h1:YSXjPL62P2AMSxBphRHPn7IkzhVHqkvOnRKAKh+W6ZI= -modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= -modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= -modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= -modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= -modernc.org/ccgo/v3 v3.16.13-0.20221017192402-261537637ce8/go.mod h1:fUB3Vn0nVPReA+7IG7yZDfjv1TMWjhQP8gCxrFAtL5g= modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw= -modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= -modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= -modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= -modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= -modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= -modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= -modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= -modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= -modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= -modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= -modernc.org/libc v1.17.4/go.mod h1:WNg2ZH56rDEwdropAJeZPQkXmDwh+JCA1s/htl6r2fA= -modernc.org/libc v1.18.0/go.mod h1:vj6zehR5bfc98ipowQOM2nIDUZnVew/wNC/2tOGS+q0= -modernc.org/libc v1.20.3/go.mod h1:ZRfIaEkgrYgZDl6pa4W39HgN5G/yDW+NRmNKZBDFrk0= -modernc.org/libc v1.21.4/go.mod h1:przBsL5RDOZajTVslkugzLBj1evTue36jEomFQOoYuI= modernc.org/libc v1.22.2 h1:4U7v51GyhlWqQmwCHj28Rdq2Yzwk55ovjFrdPjs8Hb0= -modernc.org/libc v1.22.2/go.mod h1:uvQavJ1pZ0hIoC/jfqNoMLURIMhKzINIWypNM17puug= -modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= -modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= -modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= -modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= -modernc.org/memory v1.3.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= -modernc.org/memory v1.4.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= -modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= -modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= -modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= modernc.org/sqlite v1.18.2 h1:S2uFiaNPd/vTAP/4EmyY8Qe2Quzu26A2L1e25xRNTio= -modernc.org/sqlite v1.18.2/go.mod h1:kvrTLEWgxUcHa2GfHBQtanR1H9ht3hTJNtKpzH9k1u0= -modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= -modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= -modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= modernc.org/tcl v1.13.2 h1:5PQgL/29XkQ9wsEmmNPjzKs+7iPCaYqUJAhzPvQbjDA= -modernc.org/tcl v1.13.2/go.mod h1:7CLiGIPo1M8Rv1Mitpv5akc2+8fxUd2y2UzC/MfMzy0= -modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= -modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/z v1.5.1 h1:RTNHdsrOpeoSeOF4FbzTo8gBYByaJ5xT7NgZ9ZqRiJM= -modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= -sigs.k8s.io/structured-merge-diff/v4 v4.3.0/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 44d451d8c652..aae86c8fba03 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -8,7 +8,7 @@ require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 github.com/google/go-github/v60 v60.0.0 github.com/spf13/cobra v1.10.1 - google.golang.org/protobuf v1.36.9 + google.golang.org/protobuf v1.36.10 ) require ( diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index e2aa9b4ccc17..1b6f35ceb91e 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1912,8 +1912,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 189764bf92a1867ce4269ec5ee5812f1bc619409 Mon Sep 17 00:00:00 2001 From: joshjms Date: Wed, 8 Oct 2025 02:02:15 +0800 Subject: [PATCH 0579/1068] update go.work.sum Signed-off-by: joshjms --- go.work.sum | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.work.sum b/go.work.sum index d483ea319dbb..98bcea6f27eb 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1263,7 +1263,6 @@ golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxb golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/gonum v0.15.1/go.mod h1:eZTZuRFrzu5pcyjN5wJhcIhnUdNijYxX1T2IcrOGY0o= @@ -1314,7 +1313,6 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= From 15fb19f26f45033dca00e7c3462a4125f9094dc6 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Tue, 7 Oct 2025 13:24:44 -0700 Subject: [PATCH 0580/1068] Update contributing guides to use fix target The documentation calls to use `./scripts/fix.sh`, but this script doesn't trigger all the steps that are in the `fix` Makefile target. Signed-off-by: Ivan Valdes --- Documentation/contributor-guide/dependency_management.md | 4 ++-- Documentation/contributor-guide/modules.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/contributor-guide/dependency_management.md b/Documentation/contributor-guide/dependency_management.md index 92f4892cb709..d886346cb69e 100644 --- a/Documentation/contributor-guide/dependency_management.md +++ b/Documentation/contributor-guide/dependency_management.md @@ -57,7 +57,7 @@ cd ${ETCD_ROOT_DIR}/etcdctl go get github.com/spf13/cobra@v1.7.0 go mod tidy cd .. -./scripts/fix.sh +make fix # This will update the bill of materials, Go modules and workspace, etc. ``` Execute the same steps for all other modules. When you finish bumping the dependency for all modules, then commit the change, @@ -120,7 +120,7 @@ and everyone is welcome to participate; you just need to register your name in t Usually, we don't proactively bump dependencies for stable releases unless there are any CVEs or bugs that affect etcd. -If we have to do it, then follow the same guidance above. Note that there is no `./scripts/fix.sh` in release-3.4, so no need to +If we have to do it, then follow the same guidance above. Note that there is no `./scripts/fix.sh`/`make fix` in release-3.4, so no need to execute it for 3.4. ## Golang versions diff --git a/Documentation/contributor-guide/modules.md b/Documentation/contributor-guide/modules.md index dcee156747ca..cce3efc91a79 100644 --- a/Documentation/contributor-guide/modules.md +++ b/Documentation/contributor-guide/modules.md @@ -71,7 +71,7 @@ There are the following modules: 5. To trigger actions across all modules (e.g. auto-format all files), please use/expand the following script: ```shell script - % ./scripts/fix.sh + % make fix ``` ### Future From 2dbe533ec30a36265580b16e534949c269223546 Mon Sep 17 00:00:00 2001 From: Ashwani Kumar Kamal Date: Mon, 6 Oct 2025 14:54:42 +0530 Subject: [PATCH 0581/1068] clientv3: disable auth retry when token is set Signed-off-by: Ashwani Kumar Kamal --- client/v3/retry_interceptor.go | 5 +++++ client/v3/retry_interceptor_test.go | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/client/v3/retry_interceptor.go b/client/v3/retry_interceptor.go index 9b4bd0219b41..00baff97db0c 100644 --- a/client/v3/retry_interceptor.go +++ b/client/v3/retry_interceptor.go @@ -150,6 +150,11 @@ func (c *Client) streamClientInterceptor(optFuncs ...retryOption) grpc.StreamCli // shouldRefreshToken checks whether there's a need to refresh the token based on the error and callOptions, // and returns a boolean value. func (c *Client) shouldRefreshToken(err error, callOpts *options) bool { + if c.Token != "" { + // do not try to refresh the token as it is set by user + return false + } + if errors.Is(rpctypes.Error(err), rpctypes.ErrUserEmpty) { // refresh the token when username, password is present but the server returns ErrUserEmpty // which is possible when the client token is cleared somehow diff --git a/client/v3/retry_interceptor_test.go b/client/v3/retry_interceptor_test.go index 393bb9bbe5cb..323704e7f2e8 100644 --- a/client/v3/retry_interceptor_test.go +++ b/client/v3/retry_interceptor_test.go @@ -35,6 +35,7 @@ func (d dummyAuthTokenBundle) UpdateAuthToken(token string) { func TestClientShouldRefreshToken(t *testing.T) { type fields struct { authTokenBundle credentials.PerRPCCredentialsBundle + token string } type args struct { err error @@ -118,11 +119,21 @@ func TestClientShouldRefreshToken(t *testing.T) { args: args{rpctypes.ErrGRPCAuthFailed, optsWithFalse}, want: false, }, + { + name: "User provided token, ErrGRPCInvalidAuthToken", + fields: fields{ + authTokenBundle: nil, + token: "user-supplied-token", + }, + args: args{rpctypes.ErrGRPCInvalidAuthToken, optsWithTrue}, + want: false, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { c := &Client{ authTokenBundle: tt.fields.authTokenBundle, + Token: tt.fields.token, } if got := c.shouldRefreshToken(tt.args.err, tt.args.callOpts); got != tt.want { t.Errorf("shouldRefreshToken() = %v, want %v", got, tt.want) From 242db62e46bf3cb3b59a482210bacf78e82987b2 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 9 Oct 2025 09:20:13 -0700 Subject: [PATCH 0582/1068] Fix Antithesis artifact building Use the base image defined by the Go workspace version. Set the toolchain to the actual version. Therefore, in the Docker image, the GOVERSION variable is set to our defined Go version (i.e., 1.25.0), and we set the GOWORKSPACE (i.e., 1.25.1). Signed-off-by: Ivan Valdes --- tests/antithesis/Makefile | 9 ++++++++- tests/antithesis/server/Dockerfile | 20 +++++--------------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 8eb13cb6f5d8..5f09b7d1110d 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -1,3 +1,4 @@ +ANTITHESIS_ROOT :=$(dir $(realpath $(lastword $(MAKEFILE_LIST)))) REPOSITORY_ROOT := $(shell git rev-parse --show-toplevel) USER_ID := $(shell id -u) GROUP_ID := $(shell id -g) @@ -16,7 +17,13 @@ antithesis-build-client-docker-image: validate-node-count .PHONY: antithesis-build-etcd-image antithesis-build-etcd-image: - docker build --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) --build-arg REF=$(REF) $(REPOSITORY_ROOT)/tests/antithesis/server/ -t etcd-server:latest + # Use the Workspace Go version from the go directive. This is the base image + # later in the Dockerfile, we'll set the correct toolchain. + docker build \ + --build-arg GO_IMAGE_TAG=$(shell go work edit -json | jq .Go) \ + --build-arg REF=$(REF) \ + --tag etcd-server:latest \ + $(ANTITHESIS_ROOT)/server/ .PHONY: antithesis-build-etcd-image-release-3.4 antithesis-build-etcd-image-release-3.4: REF=release-3.4 diff --git a/tests/antithesis/server/Dockerfile b/tests/antithesis/server/Dockerfile index 6d9d23fcc358..656af0c26dff 100644 --- a/tests/antithesis/server/Dockerfile +++ b/tests/antithesis/server/Dockerfile @@ -1,11 +1,12 @@ -ARG GO_VERSION=1.25.1 ARG ARCH=amd64 +ARG GO_IMAGE_TAG -FROM golang:$GO_VERSION AS build +FROM golang:$GO_IMAGE_TAG AS build # cloning etcd ARG REF=main RUN git clone --depth=1 https://github.com/etcd-io/etcd.git --branch=${REF} /etcd +RUN go env -w GOTOOLCHAIN="go$(cat .go-version)" # inject assertions in place of gofail WORKDIR /etcd/server @@ -35,11 +36,6 @@ RUN mkdir /etcd_instrumented RUN `go env GOPATH`/bin/antithesis-go-instrumentor /etcd /etcd_instrumented WORKDIR /etcd_instrumented/customer -RUN go mod edit -go=$(\ - cd /etcd && go mod edit -json | awk -F'"' 'match($0, /"Go": "/) {print $4}' \ - ) && go mod edit -toolchain=$(\ - cd /etcd && go mod edit -json | awk -F'"' 'match($0, /"Toolchain": "/) {print $4}' \ - ) # Some previous versions hardcode CGO_ENABLED=0 RUN find . -type f -exec sed -i 's/CGO_ENABLED=0/CGO_ENABLED=${CGO_ENABLED}/' {} + @@ -50,14 +46,8 @@ RUN if [ -d "vendor" ]; then go mod vendor; fi # The instrumentation adds code and packages. Need go mod tidy for all modules before building RUN for d in server etcdutl etcdctl; do \ - (cd ${d} && \ - go mod tidy && \ - go mod edit -go=$(\ - cd /etcd && go mod edit -json | awk -F'"' 'match($0, /"Go": "/) {print $4}' \ - ) \ - && go mod edit -toolchain=$(\ - cd /etcd && go mod edit -json | awk -F'"' 'match($0, /"Toolchain": "/) {print $4}' \ - ) || true); done + (cd ${d} && go mod tidy || true); \ + done # The instrumentation also adds a new main file which clashes with dummy.go found in non release-3.4 branches RUN if [ -f "dummy.go" ]; then sed -i 's/package main_test/package main/' dummy.go; fi From b688a59cad1e3c2776695740e945c761be864bbd Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 8 Oct 2025 21:30:42 +0000 Subject: [PATCH 0583/1068] Upgrade devcontainer to 1.25 Reference: - https://mcr.microsoft.com/v2/devcontainers/go/tags/list Signed-off-by: Chun-Hung Tseng --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 0e1a770af1ed..63070531bd45 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,7 +3,7 @@ { "name": "Go", // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - "image": "mcr.microsoft.com/devcontainers/go:1.24-bookworm", + "image": "mcr.microsoft.com/devcontainers/go:1.25-bookworm", // Features to add to the dev container. More info: https://containers.dev/features. "features": { "ghcr.io/devcontainers/features/docker-in-docker:2": {}, From 16b2b1efb70b84fe84bdc8497eeaa628f0ec1a9b Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 9 Oct 2025 15:20:24 -0700 Subject: [PATCH 0584/1068] Standardize building Antithesis images Use the argument `GO_IMAGE_TAG`, which is undefined, to simplify version bumps. These Dockerfiles are built through the Makefile, which sets the proper version tags. Signed-off-by: Ivan Valdes --- tests/antithesis/Makefile | 8 ++++++-- tests/antithesis/test-template/Dockerfile | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 5f09b7d1110d..20e216f44fd6 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -10,10 +10,14 @@ CFG_NODE_COUNT ?= 3 .PHONY: antithesis-build-client-docker-image antithesis-build-client-docker-image: validate-node-count + # This is a release image using go build without our tooling. Using the + # version defined in .go-version is the correct image tag. docker build \ - --build-arg GO_VERSION=$(shell cat $(REPOSITORY_ROOT)/.go-version) \ + --build-arg GO_IMAGE_TAG=$(shell cat $(REPOSITORY_ROOT)/.go-version) \ --build-arg CFG_NODE_COUNT=$(CFG_NODE_COUNT) \ - -f $(REPOSITORY_ROOT)/tests/antithesis/test-template/Dockerfile $(REPOSITORY_ROOT) -t etcd-client:latest + --file $(ANTITHESIS_ROOT)/test-template/Dockerfile \ + --tag etcd-client:latest \ + $(REPOSITORY_ROOT) .PHONY: antithesis-build-etcd-image antithesis-build-etcd-image: diff --git a/tests/antithesis/test-template/Dockerfile b/tests/antithesis/test-template/Dockerfile index 09b0e8110062..b877da6c94cd 100644 --- a/tests/antithesis/test-template/Dockerfile +++ b/tests/antithesis/test-template/Dockerfile @@ -1,7 +1,7 @@ -ARG GO_VERSION=1.25.1 +ARG GO_IMAGE_TAG ARG ARCH=amd64 -FROM golang:$GO_VERSION AS build +FROM golang:$GO_IMAGE_TAG AS build ARG CFG_NODE_COUNT=3 WORKDIR /build COPY . . From fe152f303b65642eafdc5b3303a9521d88f2803f Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 8 Oct 2025 23:31:36 -0700 Subject: [PATCH 0585/1068] Fix Antithesis image building Use the project Go and Toolchain versions rather than relying on the environment variables defined by the Docker FROM image. Signed-off-by: Ivan Valdes --- tests/antithesis/server/Dockerfile | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/antithesis/server/Dockerfile b/tests/antithesis/server/Dockerfile index 1df0752832e6..6d9d23fcc358 100644 --- a/tests/antithesis/server/Dockerfile +++ b/tests/antithesis/server/Dockerfile @@ -35,6 +35,11 @@ RUN mkdir /etcd_instrumented RUN `go env GOPATH`/bin/antithesis-go-instrumentor /etcd /etcd_instrumented WORKDIR /etcd_instrumented/customer +RUN go mod edit -go=$(\ + cd /etcd && go mod edit -json | awk -F'"' 'match($0, /"Go": "/) {print $4}' \ + ) && go mod edit -toolchain=$(\ + cd /etcd && go mod edit -json | awk -F'"' 'match($0, /"Toolchain": "/) {print $4}' \ + ) # Some previous versions hardcode CGO_ENABLED=0 RUN find . -type f -exec sed -i 's/CGO_ENABLED=0/CGO_ENABLED=${CGO_ENABLED}/' {} + @@ -44,7 +49,16 @@ RUN go install github.com/myitcv/gobin@v0.0.14 RUN if [ -d "vendor" ]; then go mod vendor; fi # The instrumentation adds code and packages. Need go mod tidy for all modules before building -RUN for d in server etcdutl etcdctl; do (cd ${d} && go mod tidy || true); done +RUN for d in server etcdutl etcdctl; do \ + (cd ${d} && \ + go mod tidy && \ + go mod edit -go=$(\ + cd /etcd && go mod edit -json | awk -F'"' 'match($0, /"Go": "/) {print $4}' \ + ) \ + && go mod edit -toolchain=$(\ + cd /etcd && go mod edit -json | awk -F'"' 'match($0, /"Toolchain": "/) {print $4}' \ + ) || true); done + # The instrumentation also adds a new main file which clashes with dummy.go found in non release-3.4 branches RUN if [ -f "dummy.go" ]; then sed -i 's/package main_test/package main/' dummy.go; fi RUN CGO_ENABLED=1 make build From 65b99ec75cf2af97e7e14625ea15e978f6d0b7f8 Mon Sep 17 00:00:00 2001 From: Nont Date: Thu, 9 Oct 2025 23:10:22 -0500 Subject: [PATCH 0586/1068] Always collect and return the report Signed-off-by: Nont --- tests/robustness/failpoint/trigger.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/robustness/failpoint/trigger.go b/tests/robustness/failpoint/trigger.go index be5b606cc513..05caded26df1 100644 --- a/tests/robustness/failpoint/trigger.go +++ b/tests/robustness/failpoint/trigger.go @@ -81,10 +81,13 @@ func (t triggerCompact) Trigger(ctx context.Context, _ *testing.T, member e2e.Et time.Sleep(50 * time.Millisecond) } _, err = cc.Compact(ctx, rev) + + reports := []report.ClientReport{cc.Report()} + if err != nil && !connectionError(err) { - return nil, fmt.Errorf("failed to compact: %w", err) + return reports, fmt.Errorf("failed to compact: %w", err) } - return []report.ClientReport{cc.Report()}, nil + return reports, nil } func (t triggerCompact) Available(config e2e.EtcdProcessClusterConfig, _ e2e.EtcdProcess, profile traffic.Profile) bool { From f162036bde99ba45136a8f8540c06cc59e19ddd7 Mon Sep 17 00:00:00 2001 From: Nont Date: Wed, 8 Oct 2025 22:14:24 -0500 Subject: [PATCH 0587/1068] Rename DATA_PATH as prefix Signed-off-by: Nont --- .../config/docker-compose-1-node.yml | 6 +++--- .../config/docker-compose-3-node.yml | 18 +++++++++--------- .../test-template/robustness/common/path.go | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/antithesis/config/docker-compose-1-node.yml b/tests/antithesis/config/docker-compose-1-node.yml index fcf2d97dbc3a..a18651c0b0e8 100644 --- a/tests/antithesis/config/docker-compose-1-node.yml +++ b/tests/antithesis/config/docker-compose-1-node.yml @@ -9,7 +9,7 @@ services: group_add: - '${GROUP_ID:-root}' volumes: - - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcddata0 + - ${ETCD_ROBUSTNESS_DATA_PATH_PREFIX:-/tmp/etcddata}0:/var/etcddata0 - ${ETCD_ROBUSTNESS_REPORT_PATH:-/tmp/etcdreport}:/var/report command: - /bin/sh @@ -43,7 +43,7 @@ services: ports: - 12379:2379 volumes: - - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcd/data + - ${ETCD_ROBUSTNESS_DATA_PATH_PREFIX:-/tmp/etcddata}0:/var/etcd/data client: image: 'etcd-client:${IMAGE_TAG:-latest}' @@ -54,5 +54,5 @@ services: etcd0: condition: service_started volumes: - - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcddata0 + - ${ETCD_ROBUSTNESS_DATA_PATH_PREFIX:-/tmp/etcddata}0:/var/etcddata0 - ${ETCD_ROBUSTNESS_REPORT_PATH:-/tmp/etcdreport}:/var/report diff --git a/tests/antithesis/config/docker-compose-3-node.yml b/tests/antithesis/config/docker-compose-3-node.yml index 4a0bf7253dba..c5160ddf10f3 100644 --- a/tests/antithesis/config/docker-compose-3-node.yml +++ b/tests/antithesis/config/docker-compose-3-node.yml @@ -9,9 +9,9 @@ services: group_add: - '${GROUP_ID:-root}' volumes: - - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcddata0 - - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}1:/var/etcddata1 - - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}2:/var/etcddata2 + - ${ETCD_ROBUSTNESS_DATA_PATH_PREFIX:-/tmp/etcddata}0:/var/etcddata0 + - ${ETCD_ROBUSTNESS_DATA_PATH_PREFIX:-/tmp/etcddata}1:/var/etcddata1 + - ${ETCD_ROBUSTNESS_DATA_PATH_PREFIX:-/tmp/etcddata}2:/var/etcddata2 - ${ETCD_ROBUSTNESS_REPORT_PATH:-/tmp/etcdreport}:/var/report command: - /bin/sh @@ -45,7 +45,7 @@ services: ports: - 12379:2379 volumes: - - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcd/data + - ${ETCD_ROBUSTNESS_DATA_PATH_PREFIX:-/tmp/etcddata}0:/var/etcd/data etcd1: image: 'etcd-server:${IMAGE_TAG:-latest}' @@ -72,7 +72,7 @@ services: ports: - 22379:2379 volumes: - - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}1:/var/etcd/data + - ${ETCD_ROBUSTNESS_DATA_PATH_PREFIX:-/tmp/etcddata}1:/var/etcd/data etcd2: image: 'etcd-server:${IMAGE_TAG:-latest}' @@ -99,7 +99,7 @@ services: ports: - 32379:2379 volumes: - - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}2:/var/etcd/data + - ${ETCD_ROBUSTNESS_DATA_PATH_PREFIX:-/tmp/etcddata}2:/var/etcd/data client: image: 'etcd-client:${IMAGE_TAG:-latest}' @@ -114,7 +114,7 @@ services: etcd2: condition: service_started volumes: - - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}0:/var/etcddata0 - - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}1:/var/etcddata1 - - ${ETCD_ROBUSTNESS_DATA_PATH:-/tmp/etcddata}2:/var/etcddata2 + - ${ETCD_ROBUSTNESS_DATA_PATH_PREFIX:-/tmp/etcddata}0:/var/etcddata0 + - ${ETCD_ROBUSTNESS_DATA_PATH_PREFIX:-/tmp/etcddata}1:/var/etcddata1 + - ${ETCD_ROBUSTNESS_DATA_PATH_PREFIX:-/tmp/etcddata}2:/var/etcddata2 - ${ETCD_ROBUSTNESS_REPORT_PATH:-/tmp/etcdreport}:/var/report diff --git a/tests/antithesis/test-template/robustness/common/path.go b/tests/antithesis/test-template/robustness/common/path.go index 492da9ea2a80..99d1cd167272 100644 --- a/tests/antithesis/test-template/robustness/common/path.go +++ b/tests/antithesis/test-template/robustness/common/path.go @@ -34,7 +34,7 @@ const ( localetcd2 = "127.0.0.1:32379" // used by default when running the client locally defaultetcdLocalDataPath = "/tmp/etcddata%d" - localetcdDataPathEnv = "ETCD_ROBUSTNESS_DATA_PATH" + localetcdDataPathEnv = "ETCD_ROBUSTNESS_DATA_PATH_PREFIX" localReportPath = "report" ) From 78970f5d3bc7fb832e56f1a6d721f046c7c67209 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Tue, 7 Oct 2025 11:28:09 +0200 Subject: [PATCH 0588/1068] Update kubernetes patches used in etcd-k8s coverage tests Use `git format-patch --no-signature --minimal -p --zero-commit` to get results that are easier to maintain. Signed-off-by: Aleksander Mistewicz --- ...ry-trace-event-when-passing-through-.patch | 8 +---- ...02-Add-kubernetesEtcdContractTracker.patch | 12 ++------ ...o-Watch-to-ensure-Spans-are-exported.patch | 8 +---- .../kubernetes/0004-Configure-cmd-tests.patch | 30 +++++++------------ 4 files changed, 15 insertions(+), 43 deletions(-) diff --git a/tests/robustness/coverage/patches/kubernetes/0001-Add-Open-Telemetry-trace-event-when-passing-through-.patch b/tests/robustness/coverage/patches/kubernetes/0001-Add-Open-Telemetry-trace-event-when-passing-through-.patch index e880453951f9..e88b9e3e8ad2 100644 --- a/tests/robustness/coverage/patches/kubernetes/0001-Add-Open-Telemetry-trace-event-when-passing-through-.patch +++ b/tests/robustness/coverage/patches/kubernetes/0001-Add-Open-Telemetry-trace-event-when-passing-through-.patch @@ -1,13 +1,10 @@ -From 135c75d2689318dd47b7778b8f87902e75178d52 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Wed, 13 Aug 2025 13:45:20 +0200 Subject: [PATCH 1/4] Add Open Telemetry trace event when passing through contract interface Signed-off-by: Aleksander Mistewicz ---- - .../etcd/client/v3/kubernetes/client.go | 21 +++++++++++++++++++ - 1 file changed, 21 insertions(+) diff --git a/vendor/go.etcd.io/etcd/client/v3/kubernetes/client.go b/vendor/go.etcd.io/etcd/client/v3/kubernetes/client.go index 11f2a456447..0efab3711d7 100644 @@ -76,6 +73,3 @@ index 11f2a456447..0efab3711d7 100644 txn := k.KV.Txn(ctx).If( clientv3.Compare(clientv3.ModRevision(key), "=", expectedRevision), ).Then( --- -2.51.0.rc2.233.g662b1ed5c5-goog - diff --git a/tests/robustness/coverage/patches/kubernetes/0002-Add-kubernetesEtcdContractTracker.patch b/tests/robustness/coverage/patches/kubernetes/0002-Add-kubernetesEtcdContractTracker.patch index 461f7ebdeca9..88a27653ca4f 100644 --- a/tests/robustness/coverage/patches/kubernetes/0002-Add-kubernetesEtcdContractTracker.patch +++ b/tests/robustness/coverage/patches/kubernetes/0002-Add-kubernetesEtcdContractTracker.patch @@ -1,4 +1,4 @@ -From 84706912128912a37bfaf47ecf550463fadb805e Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Mon, 18 Aug 2025 12:32:16 +0200 Subject: [PATCH 2/4] Add kubernetesEtcdContractTracker @@ -9,11 +9,6 @@ spans. TracerProvider needs to be passed to the contract tracker to ensure that all spans will be correctly exported. Signed-off-by: Aleksander Mistewicz ---- - .../etcd3/kubernetes_contract_tracker.go | 73 +++++++++++++++++++ - .../storage/storagebackend/factory/etcd3.go | 10 ++- - 2 files changed, 82 insertions(+), 1 deletion(-) - create mode 100644 staging/src/k8s.io/apiserver/pkg/storage/etcd3/kubernetes_contract_tracker.go diff --git a/staging/src/k8s.io/apiserver/pkg/storage/etcd3/kubernetes_contract_tracker.go b/staging/src/k8s.io/apiserver/pkg/storage/etcd3/kubernetes_contract_tracker.go new file mode 100644 @@ -95,7 +90,7 @@ index 00000000000..c16eecb20fa + return k.Interface.OptimisticDelete(ctx, key, expectedRevision, opts) +} diff --git a/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go b/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go -index c8ee0a12887..8f7f19d78d5 100644 +index 53fc9f97a70..8870369d471 100644 --- a/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go +++ b/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go @@ -351,8 +351,16 @@ var newETCD3Client = func(c storagebackend.TransportConfig) (*kubernetes.Client, @@ -116,6 +111,3 @@ index c8ee0a12887..8f7f19d78d5 100644 } type runningCompactor struct { --- -2.51.0.rc2.233.g662b1ed5c5-goog - diff --git a/tests/robustness/coverage/patches/kubernetes/0003-Add-1m-timeout-to-Watch-to-ensure-Spans-are-exported.patch b/tests/robustness/coverage/patches/kubernetes/0003-Add-1m-timeout-to-Watch-to-ensure-Spans-are-exported.patch index 30a8e4c79aa7..8d79533a6aed 100644 --- a/tests/robustness/coverage/patches/kubernetes/0003-Add-1m-timeout-to-Watch-to-ensure-Spans-are-exported.patch +++ b/tests/robustness/coverage/patches/kubernetes/0003-Add-1m-timeout-to-Watch-to-ensure-Spans-are-exported.patch @@ -1,12 +1,9 @@ -From 2a848f904aee8cff04d44fd14d2c17a2802f972b Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Fri, 22 Aug 2025 14:18:07 +0200 Subject: [PATCH 3/4] Add 1m timeout to Watch to ensure Spans are exported Signed-off-by: Aleksander Mistewicz ---- - vendor/go.etcd.io/etcd/client/v3/watch.go | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/go.etcd.io/etcd/client/v3/watch.go b/vendor/go.etcd.io/etcd/client/v3/watch.go index a46f98b8e28..ac820cabbb1 100644 @@ -21,6 +18,3 @@ index a46f98b8e28..ac820cabbb1 100644 wgs := &watchGRPCStream{ owner: w, remote: w.remote, --- -2.51.0.rc2.233.g662b1ed5c5-goog - diff --git a/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch b/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch index 4b840033d414..62d9318341df 100644 --- a/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch +++ b/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch @@ -1,26 +1,22 @@ -From 1a689e5bc18757ec1d9127b551585596cee5e679 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Mon, 4 Aug 2025 15:56:48 +0200 Subject: [PATCH 4/4] Configure cmd tests ---- - hack/lib/etcd.sh | 6 ++++-- - hack/make-rules/test-cmd.sh | 9 +++++++++ - 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/hack/lib/etcd.sh b/hack/lib/etcd.sh -index c6fc45a5fab..1f4fad6774d 100755 +index 6e99d244c80..62af49e3e5c 100755 --- a/hack/lib/etcd.sh +++ b/hack/lib/etcd.sh -@@ -17,6 +17,8 @@ - # A set of helpers for starting/running etcd for tests +@@ -25,6 +25,8 @@ ETCD_PORT=${ETCD_PORT:-2379} + ETCD_LOGLEVEL=${ETCD_LOGLEVEL:-warn} + export KUBE_INTEGRATION_ETCD_URL="http://${ETCD_HOST}:${ETCD_PORT}" - ETCD_VERSION=${ETCD_VERSION:-3.6.4} +export PATH="${PATH}:/go/src/k8s.io/kubernetes/third_party/etcd" + - ETCD_HOST=${ETCD_HOST:-127.0.0.1} - ETCD_PORT=${ETCD_PORT:-2379} - # This is intentionally not called ETCD_LOG_LEVEL: + kube::etcd::validate() { + # validate if in path + command -v etcd >/dev/null || { @@ -84,8 +86,8 @@ kube::etcd::start() { else ETCD_LOGFILE=${ETCD_LOGFILE:-"/dev/null"} @@ -33,17 +29,16 @@ index c6fc45a5fab..1f4fad6774d 100755 echo "Waiting for etcd to come up." diff --git a/hack/make-rules/test-cmd.sh b/hack/make-rules/test-cmd.sh -index 7d9fb1db65c..179176533de 100755 +index 7d9fb1db65c..be3b95341bb 100755 --- a/hack/make-rules/test-cmd.sh +++ b/hack/make-rules/test-cmd.sh -@@ -69,6 +69,14 @@ function run_kube_apiserver() { +@@ -69,6 +69,13 @@ function run_kube_apiserver() { VERSION_OVERRIDE="--version=$("${THIS_PLATFORM_BIN}/kube-apiserver" --version | awk '{print $2}')${CUSTOM_VERSION_SUFFIX:-}" fi + cat < "/tmp/kube-tracing-file" +apiVersion: apiserver.config.k8s.io/v1beta1 +kind: TracingConfiguration -+# default value +endpoint: 192.168.32.1:4317 +samplingRatePerMillion: 1000000 +EOF @@ -51,7 +46,7 @@ index 7d9fb1db65c..179176533de 100755 "${THIS_PLATFORM_BIN}/kube-apiserver" \ ${VERSION_OVERRIDE:+"${VERSION_OVERRIDE}"} \ --bind-address="127.0.0.1" \ -@@ -84,6 +92,7 @@ function run_kube_apiserver() { +@@ -84,6 +91,7 @@ function run_kube_apiserver() { --service-account-issuer="https://kubernetes.default.svc" \ --service-account-signing-key-file="${SERVICE_ACCOUNT_KEY}" \ --storage-media-type="${KUBE_TEST_API_STORAGE_TYPE-}" \ @@ -59,6 +54,3 @@ index 7d9fb1db65c..179176533de 100755 --cert-dir="${TMPDIR:-/tmp/}" \ --service-cluster-ip-range="10.0.0.0/24" \ --client-ca-file=hack/testdata/ca/ca.crt \ --- -2.51.0.rc2.233.g662b1ed5c5-goog - From d2e2edc6bc8eee96c041612405587a0c0ea00271 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 10 Oct 2025 17:10:15 +0100 Subject: [PATCH 0589/1068] Fix endpoint status not retuning the correct storage quota Signed-off-by: Benjamin Wang --- .../integration/clientv3/maintenance_test.go | 109 +++++++++++------- 1 file changed, 66 insertions(+), 43 deletions(-) diff --git a/tests/integration/clientv3/maintenance_test.go b/tests/integration/clientv3/maintenance_test.go index ca8b140bfcb7..5c4cd928931a 100644 --- a/tests/integration/clientv3/maintenance_test.go +++ b/tests/integration/clientv3/maintenance_test.go @@ -394,49 +394,72 @@ func TestMaintenanceSnapshotContentDigest(t *testing.T) { } func TestMaintenanceStatus(t *testing.T) { - integration.BeforeTest(t) - - clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, QuotaBackendBytes: storage.DefaultQuotaBytes}) - defer clus.Terminate(t) - - t.Logf("Waiting for leader...") - clus.WaitLeader(t) - t.Logf("Leader established.") - - eps := make([]string, 3) - for i := 0; i < 3; i++ { - eps[i] = clus.Members[i].GRPCURL - } - - t.Logf("Creating client...") - cli, err := integration.NewClient(t, clientv3.Config{Endpoints: eps, DialOptions: []grpc.DialOption{grpc.WithBlock()}}) - require.NoError(t, err) - defer cli.Close() - t.Logf("Creating client [DONE]") - - prevID, leaderFound := uint64(0), false - for i := 0; i < 3; i++ { - resp, err := cli.Status(t.Context(), eps[i]) - require.NoError(t, err) - t.Logf("Response from %v: %v", i, resp) - if resp.DbSizeQuota != storage.DefaultQuotaBytes { - t.Errorf("unexpected backend default quota returned: %d, expected %d", resp.DbSizeQuota, storage.DefaultQuotaBytes) - } - if prevID == 0 { - prevID, leaderFound = resp.Header.MemberId, resp.Header.MemberId == resp.Leader - continue - } - if prevID == resp.Header.MemberId { - t.Errorf("#%d: status returned duplicate member ID with %016x", i, prevID) - } - if leaderFound && resp.Header.MemberId == resp.Leader { - t.Errorf("#%d: leader already found, but found another %016x", i, resp.Header.MemberId) - } - if !leaderFound { - leaderFound = resp.Header.MemberId == resp.Leader - } + testCases := []struct { + name string + quotaCfg int64 + expectedQuota int64 + }{ + { + name: "0 quota", + quotaCfg: 0, + expectedQuota: storage.DefaultQuotaBytes, + }, + { + name: "default quota", + quotaCfg: storage.DefaultQuotaBytes, + expectedQuota: storage.DefaultQuotaBytes, + }, + { + name: "customized quota", + quotaCfg: 300010002000, + expectedQuota: 300010002000, + }, } - if !leaderFound { - t.Fatal("no leader found") + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + integration.BeforeTest(t) + + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, QuotaBackendBytes: tc.quotaCfg}) + defer clus.Terminate(t) + + t.Logf("Waiting for leader...") + clus.WaitLeader(t) + t.Logf("Leader established.") + + eps := make([]string, 3) + for i := 0; i < 3; i++ { + eps[i] = clus.Members[i].GRPCURL + } + + t.Logf("Creating client...") + cli, err := integration.NewClient(t, clientv3.Config{Endpoints: eps, DialOptions: []grpc.DialOption{grpc.WithBlock()}}) + require.NoError(t, err) + defer cli.Close() + t.Logf("Creating client [DONE]") + + prevID, leaderFound := uint64(0), false + for i := 0; i < 3; i++ { + resp, err := cli.Status(t.Context(), eps[i]) + require.NoError(t, err) + t.Logf("Response from %v: %v", i, resp) + require.Equal(t, tc.expectedQuota, resp.DbSizeQuota) + if prevID == 0 { + prevID, leaderFound = resp.Header.MemberId, resp.Header.MemberId == resp.Leader + continue + } + if prevID == resp.Header.MemberId { + t.Errorf("#%d: status returned duplicate member ID with %016x", i, prevID) + } + if leaderFound && resp.Header.MemberId == resp.Leader { + t.Errorf("#%d: leader already found, but found another %016x", i, resp.Header.MemberId) + } + if !leaderFound { + leaderFound = resp.Header.MemberId == resp.Leader + } + } + if !leaderFound { + t.Fatal("no leader found") + } + }) } } From f230436e264c8d17523f54a515f74d8b0d837b5f Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 17 Oct 2025 13:16:16 -0700 Subject: [PATCH 0590/1068] Enable misspell linter Signed-off-by: Ivan Valdes --- tools/.golangci.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/.golangci.yaml b/tools/.golangci.yaml index 5ed476caa4e2..0651f4ac5db3 100644 --- a/tools/.golangci.yaml +++ b/tools/.golangci.yaml @@ -6,6 +6,7 @@ linters: - errorlint - govet - ineffassign + - misspell - nakedret - revive - staticcheck From a2d58337216ec4759ec5d84cbb50e4e6284ee04f Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 16 Oct 2025 09:31:47 -0700 Subject: [PATCH 0591/1068] Run govet from golangci-lint Signed-off-by: Ivan Valdes --- Makefile | 6 +----- scripts/test.sh | 4 ---- tools/.golangci.yaml | 1 + 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 16383a62ec32..d965a93ff2b0 100644 --- a/Makefile +++ b/Makefile @@ -97,7 +97,7 @@ fuzz: # Static analysis .PHONY: verify verify: verify-gofmt verify-bom verify-lint verify-dep verify-shellcheck verify-goword \ - verify-govet verify-license-header verify-mod-tidy \ + verify-license-header verify-mod-tidy \ verify-shellws verify-proto-annotations verify-genproto verify-yamllint \ verify-govet-shadow verify-markdown-marker verify-go-versions verify-gomodguard \ verify-go-workspace @@ -138,10 +138,6 @@ verify-shellcheck: verify-goword: PASSES="goword" ./scripts/test.sh -.PHONY: verify-govet -verify-govet: - PASSES="govet" ./scripts/test.sh - .PHONY: verify-license-header verify-license-header: PASSES="license_header" ./scripts/test.sh diff --git a/scripts/test.sh b/scripts/test.sh index b5515b3f0265..66651eb6e075 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -402,10 +402,6 @@ function govuln_pass { run_for_modules run govulncheck -show verbose } -function govet_pass { - run_for_modules generic_checker run go vet -} - function govet_shadow_per_package { local shadow shadow=$1 diff --git a/tools/.golangci.yaml b/tools/.golangci.yaml index 994d9afb3610..229f1ae31c3e 100644 --- a/tools/.golangci.yaml +++ b/tools/.golangci.yaml @@ -4,6 +4,7 @@ linters: default: none enable: # please keep this alphabetized - errorlint + - govet - ineffassign - nakedret - revive From 8440080e8d90115e530d30886633ad87f988e586 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 17 Oct 2025 13:26:23 -0700 Subject: [PATCH 0592/1068] Address misspell linter issues Signed-off-by: Ivan Valdes --- etcdctl/ctlv3/command/snapshot_command.go | 2 +- tests/common/lease_test.go | 4 ++-- tests/e2e/reproduce_20271_test.go | 2 +- tests/integration/tracing_test.go | 6 +++--- tools/etcd-dump-db/scan.go | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/etcdctl/ctlv3/command/snapshot_command.go b/etcdctl/ctlv3/command/snapshot_command.go index d98c93b0b2cb..dcdab90ee6c0 100644 --- a/etcdctl/ctlv3/command/snapshot_command.go +++ b/etcdctl/ctlv3/command/snapshot_command.go @@ -37,7 +37,7 @@ var snapshotExample = util.Normalize(` # Get snapshot from given address with certificates etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/etcd/ca.crt --cert=/etc/etcd/etcd.crt --key=/etc/etcd/etcd.key snapshot save /backup/etcd-snapshot.db - # Get snapshot wih certain user and password + # Get snapshot with certain user and password etcdctl --user=root --password=password123 snapshot save /backup/etcd-snapshot.db # Get snapshot from given address with timeout diff --git a/tests/common/lease_test.go b/tests/common/lease_test.go index 4d6c136f2fc4..6dc8861723c8 100644 --- a/tests/common/lease_test.go +++ b/tests/common/lease_test.go @@ -143,7 +143,7 @@ func TestLeaseGrantTimeToLiveExpired(t *testing.T) { // back to follower and ignores the lease revoking. // The new leader will restart TTL counting. If so, // we should call time.Sleep again and wait for revoking. - // It can't avoid flakey but reduce flakey possiblility. + // It can't avoid flakey but reduce flakey possibility. for i := 0; i < 3; i++ { currentLeader := clus.WaitLeader(t) t.Logf("[%d] current leader index %d", i, currentLeader) @@ -192,7 +192,7 @@ func TestLeaseGrantKeepAliveOnce(t *testing.T) { // back to follower and ignores the lease revoking. // The new leader will restart TTL counting. If so, // we should call time.Sleep again and wait for revoking. - // It can't avoid flakey but reduce flakey possiblility. + // It can't avoid flakey but reduce flakey possibility. for i := 0; i < 3; i++ { currentLeader := clus.WaitLeader(t) t.Logf("[%d] current leader index %d", i, currentLeader) diff --git a/tests/e2e/reproduce_20271_test.go b/tests/e2e/reproduce_20271_test.go index 73c7fbb13e1b..ff1c823812f5 100644 --- a/tests/e2e/reproduce_20271_test.go +++ b/tests/e2e/reproduce_20271_test.go @@ -90,7 +90,7 @@ to override boltdb file. So, for the following changes, the third member will co require.NoError(t, err) } - t.Log("Step 7: Restart the third member. It recovers from the new boltdb file. Therefore, data writen in Step 6 is lost.") + t.Log("Step 7: Restart the third member. It recovers from the new boltdb file. Therefore, data written in Step 6 is lost.") require.NoError(t, epc.Procs[2].Restart(ctx)) t.Log("Step 8: Check hashkv of each member") diff --git a/tests/integration/tracing_test.go b/tests/integration/tracing_test.go index 9ba7129efe11..b91b248ed1b9 100644 --- a/tests/integration/tracing_test.go +++ b/tests/integration/tracing_test.go @@ -168,7 +168,7 @@ func TestTracing(t *testing.T) { rpc: func(ctx context.Context, cli *clientv3.Client) error { _, err := cli.KeepAliveOnce(ctx, 2345) if err != nil && strings.Contains(err.Error(), "requested lease not found") { - // errors.Is does not work accross gRPC bounduaries. + // errors.Is does not work across gRPC bounduaries. return nil } return err @@ -188,7 +188,7 @@ func TestTracing(t *testing.T) { rpc: func(ctx context.Context, cli *clientv3.Client) error { _, err := cli.Revoke(ctx, 1234) if err != nil && strings.Contains(err.Error(), "requested lease not found") { - // errors.Is does not work accross gRPC bounduaries. + // errors.Is does not work across gRPC bounduaries. return nil } return err @@ -329,7 +329,7 @@ func testRPCTracing(t *testing.T, wantSpan *v1.Span, clientAction func(context.C cfg.EnableDistributedTracing = true cfg.DistributedTracingAddress = listener.Addr().String() cfg.DistributedTracingServiceName = "integration-test-tracing" - cfg.DistributedTracingSamplingRatePerMillion = 100 // overriden later in the test + cfg.DistributedTracingSamplingRatePerMillion = 100 // overridden later in the test // start an etcd instance with tracing enabled etcdSrv, err := embed.StartEtcd(cfg) diff --git a/tools/etcd-dump-db/scan.go b/tools/etcd-dump-db/scan.go index 3898459d2608..838ccab11ac1 100644 --- a/tools/etcd-dump-db/scan.go +++ b/tools/etcd-dump-db/scan.go @@ -31,7 +31,7 @@ func scanKeys(dbPath string, startRev int64) error { for pageID := uint64(2); pageID < hwm; { p, _, err := readPage(dbPath, pgSize, pageID) if err != nil { - fmt.Fprintf(os.Stderr, "Reading page %d failed: %v. Continuting...\n", pageID, err) + fmt.Fprintf(os.Stderr, "Reading page %d failed: %v. Continuing...\n", pageID, err) pageID++ continue } From cf0d4d8d28484a0c999111fde2a9190fa050eb18 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 16 Oct 2025 09:56:02 -0700 Subject: [PATCH 0593/1068] Run govet shadow using golangci-lint Using shadow from golangci-lint doesn't lint generated files (protobufs), so it's safe to include all the files. Signed-off-by: Ivan Valdes --- Makefile | 6 +----- scripts/test.sh | 41 ----------------------------------------- tools/.golangci.yaml | 3 +++ 3 files changed, 4 insertions(+), 46 deletions(-) diff --git a/Makefile b/Makefile index d965a93ff2b0..0057ea488078 100644 --- a/Makefile +++ b/Makefile @@ -99,7 +99,7 @@ fuzz: verify: verify-gofmt verify-bom verify-lint verify-dep verify-shellcheck verify-goword \ verify-license-header verify-mod-tidy \ verify-shellws verify-proto-annotations verify-genproto verify-yamllint \ - verify-govet-shadow verify-markdown-marker verify-go-versions verify-gomodguard \ + verify-markdown-marker verify-go-versions verify-gomodguard \ verify-go-workspace .PHONY: fix @@ -172,10 +172,6 @@ else yamllint --config-file tools/.yamllint . endif -.PHONY: verify-govet-shadow -verify-govet-shadow: - PASSES="govet_shadow" ./scripts/test.sh - .PHONY: verify-markdown-marker verify-markdown-marker: PASSES="markdown_marker" ./scripts/test.sh diff --git a/scripts/test.sh b/scripts/test.sh index 66651eb6e075..d9c555cf9c0e 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -402,47 +402,6 @@ function govuln_pass { run_for_modules run govulncheck -show verbose } -function govet_shadow_per_package { - local shadow - shadow=$1 - - # skip grpc_gateway packages because - # - # stderr: etcdserverpb/gw/rpc.pb.gw.go:2100:3: declaration of "ctx" shadows declaration at line 2005 - local skip_pkgs=( - "go.etcd.io/etcd/api/v3/etcdserverpb/gw" - "go.etcd.io/etcd/server/v3/etcdserver/api/v3lock/v3lockpb/gw" - "go.etcd.io/etcd/server/v3/etcdserver/api/v3election/v3electionpb/gw" - ) - - local pkgs=() - while IFS= read -r line; do - local in_skip_pkgs="false" - - for pkg in "${skip_pkgs[@]}"; do - if [ "${pkg}" == "${line}" ]; then - in_skip_pkgs="true" - break - fi - done - - if [ "${in_skip_pkgs}" == "true" ]; then - continue - fi - - pkgs+=("${line}") - done < <(go list ./...) - - run go vet -all -vettool="${shadow}" "${pkgs[@]}" -} - -function govet_shadow_pass { - local shadow - shadow=$(tool_get_bin "golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow") - - run_for_modules generic_checker govet_shadow_per_package "${shadow}" -} - function lint_pass { run_for_all_workspace_modules golangci-lint run --config "${ETCD_ROOT_DIR}/tools/.golangci.yaml" } diff --git a/tools/.golangci.yaml b/tools/.golangci.yaml index 229f1ae31c3e..5ed476caa4e2 100644 --- a/tools/.golangci.yaml +++ b/tools/.golangci.yaml @@ -18,6 +18,9 @@ linters: - usetesting - whitespace settings: + govet: + enable: + - shadow nakedret: # Align with https://github.com/alexkohler/nakedret/blob/v1.0.2/cmd/nakedret/main.go#L10 max-func-lines: 5 From 78eabe2e8a1d4859167cb752f17923cc3834b749 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Sat, 11 Oct 2025 00:27:19 -0700 Subject: [PATCH 0594/1068] scripts: add run_for_all_workspace_modules function Adds workspace_relative_modules, and run_for_all_workspace_modules which runs a given function for all the workspace module from the top-level of the repository, without iterating by module/directory. Signed-off-by: Ivan Valdes --- scripts/test_lib.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index e90bf3e1cb16..3108b9c3e33a 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -126,6 +126,24 @@ function modules_for_bom() { done } +# returns all workspace modules in relative Go format. +function workspace_relative_modules() { + go work edit -json | jq -r '.Use[].DiskPath + "/..."' +} + +# run_for_all_workspace_modules [cmd] +# run given command across all workspace modules +# (unless the set is limited using ${PKG} or / ${USERMOD}) +function run_for_all_workspace_modules { + local pkg="${PKG:-./...}" + if [ -z "${USERMOD:-}" ]; then + # shellcheck disable=SC2046 + run "$@" $(workspace_relative_modules) + else + run_for_module "${USERMOD}" "$@" "${pkg}" || return "$?" + fi +} + # run_for_modules [cmd] # run given command across all modules and packages # (unless the set is limited using ${PKG} or / ${USERMOD}) From 660a398510fcae2167e848d28b8fe37234effdfe Mon Sep 17 00:00:00 2001 From: hwdef Date: Wed, 15 Oct 2025 10:16:46 +0800 Subject: [PATCH 0595/1068] dependency: Bump Go from 1.25.1 to 1.25.3 Signed-off-by: hwdef --- .go-version | 2 +- api/go.mod | 2 +- cache/go.mod | 2 +- client/pkg/go.mod | 2 +- client/v3/go.mod | 2 +- etcdctl/go.mod | 2 +- etcdutl/go.mod | 2 +- go.mod | 2 +- go.work | 2 +- pkg/go.mod | 2 +- server/go.mod | 2 +- tests/antithesis/config/Dockerfile | 2 +- tests/go.mod | 2 +- tools/mod/go.mod | 2 +- tools/rw-heatmaps/go.mod | 2 +- tools/testgrid-analysis/go.mod | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.go-version b/.go-version index d905a6d1d619..5bb76b575e1f 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.25.1 +1.25.3 diff --git a/api/go.mod b/api/go.mod index 3ca5db8885cc..67c51075ef9e 100644 --- a/api/go.mod +++ b/api/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/api/v3 go 1.25.0 -toolchain go1.25.1 +toolchain go1.25.3 require ( github.com/coreos/go-semver v0.3.1 diff --git a/cache/go.mod b/cache/go.mod index 0496c9966fb3..32ff0a26e040 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/cache/v3 go 1.25.0 -toolchain go1.25.1 +toolchain go1.25.3 require ( github.com/google/btree v1.1.3 diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 9451e8b4eadc..6735c8f2b5f9 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/pkg/v3 go 1.25.0 -toolchain go1.25.1 +toolchain go1.25.3 require ( github.com/coreos/go-systemd/v22 v22.6.0 diff --git a/client/v3/go.mod b/client/v3/go.mod index c17ab64ddc51..cedc8bb53b52 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/v3 go 1.25.0 -toolchain go1.25.1 +toolchain go1.25.3 require ( github.com/coreos/go-semver v0.3.1 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 74b996dac58b..8509c11de047 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdctl/v3 go 1.25.0 -toolchain go1.25.1 +toolchain go1.25.3 require ( github.com/bgentry/speakeasy v0.2.0 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index d502e9108e8e..3224775089cd 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdutl/v3 go 1.25.0 -toolchain go1.25.1 +toolchain go1.25.3 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/go.mod b/go.mod index 3e301a25e457..28d288382a38 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/v3 go 1.25.0 -toolchain go1.25.1 +toolchain go1.25.3 replace ( go.etcd.io/etcd/api/v3 => ./api diff --git a/go.work b/go.work index a28bf146f67a..e9ae8785d537 100644 --- a/go.work +++ b/go.work @@ -2,7 +2,7 @@ go 1.25.0 -toolchain go1.25.1 +toolchain go1.25.3 use ( . diff --git a/pkg/go.mod b/pkg/go.mod index 2532c8f35098..03017b5fd48f 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/pkg/v3 go 1.25.0 -toolchain go1.25.1 +toolchain go1.25.3 require ( github.com/creack/pty v1.1.18 diff --git a/server/go.mod b/server/go.mod index cb18b8bcd7c5..4201ec33731b 100644 --- a/server/go.mod +++ b/server/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/server/v3 go 1.25.0 -toolchain go1.25.1 +toolchain go1.25.3 require ( github.com/coreos/go-semver v0.3.1 diff --git a/tests/antithesis/config/Dockerfile b/tests/antithesis/config/Dockerfile index 09d030dce1fc..2c4694f5131e 100644 --- a/tests/antithesis/config/Dockerfile +++ b/tests/antithesis/config/Dockerfile @@ -1,4 +1,4 @@ -ARG GO_VERSION=1.25.1 +ARG GO_VERSION=1.25.3 FROM golang:$GO_VERSION AS build RUN go install github.com/a8m/envsubst/cmd/envsubst@v1.4.3 diff --git a/tests/go.mod b/tests/go.mod index fcb53aaabb22..585ecbf6c3b9 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tests/v3 go 1.25.0 -toolchain go1.25.1 +toolchain go1.25.3 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 8227a0ff30e6..0dfe66fe0fea 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/v3 go 1.25.0 -toolchain go1.25.1 +toolchain go1.25.3 require ( github.com/alexfalkowski/gocovmerge v1.11.0 diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 9454ce75cd47..4af82a6b7f81 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/rw-heatmaps/v3 go 1.25.0 -toolchain go1.25.1 +toolchain go1.25.3 require ( github.com/spf13/cobra v1.10.1 diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index aae86c8fba03..2b6e807860dc 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 go 1.25.0 -toolchain go1.25.1 +toolchain go1.25.3 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 From b834338bb77f4218b685004576205b9fd3c3f87f Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 17 Oct 2025 13:40:15 -0700 Subject: [PATCH 0596/1068] Remove goword linter This is replaced by golangci-lint's misspell. Signed-off-by: Ivan Valdes --- Makefile | 6 +----- scripts/test.sh | 30 ------------------------------ tools/mod/go.mod | 3 --- tools/mod/go.sum | 6 ------ tools/mod/tools.go | 1 - 5 files changed, 1 insertion(+), 45 deletions(-) diff --git a/Makefile b/Makefile index 0057ea488078..785f378db2db 100644 --- a/Makefile +++ b/Makefile @@ -96,7 +96,7 @@ fuzz: # Static analysis .PHONY: verify -verify: verify-gofmt verify-bom verify-lint verify-dep verify-shellcheck verify-goword \ +verify: verify-gofmt verify-bom verify-lint verify-dep verify-shellcheck \ verify-license-header verify-mod-tidy \ verify-shellws verify-proto-annotations verify-genproto verify-yamllint \ verify-markdown-marker verify-go-versions verify-gomodguard \ @@ -134,10 +134,6 @@ fix-lint: verify-shellcheck: PASSES="shellcheck" ./scripts/test.sh -.PHONY: verify-goword -verify-goword: - PASSES="goword" ./scripts/test.sh - .PHONY: verify-license-header verify-license-header: PASSES="license_header" ./scripts/test.sh diff --git a/scripts/test.sh b/scripts/test.sh index d9c555cf9c0e..0ea8d434a37a 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -421,36 +421,6 @@ function license_header_pass { run_for_modules generic_checker license_header_per_module } -# goword_for_package package -# checks spelling and comments in the 'package' in the current module -# -function goword_for_package { - # bash 3.x compatible replacement of: mapfile -t gofiles < <(go_srcs_in_module) - local gofiles=() - while IFS= read -r line; do gofiles+=("$line"); done < <(go_srcs_in_module) - - local gowordRes - - # spellchecking can be enabled with GOBINARGS="--tags=spell" - # but it requires heavy dependencies installation, like: - # apt-get install libaspell-dev libhunspell-dev hunspell-en-us aspell-en - - # only check for broke exported godocs - if gowordRes=$(run_go_tool "github.com/chzchzchz/goword" -use-spell=false "${gofiles[@]}" | grep godoc-export | sort); then - log_error -e "goword checking failed:\\n${gowordRes}" - return 255 - fi - if [ -n "$gowordRes" ]; then - log_error -e "goword checking returned output:\\n${gowordRes}" - return 255 - fi -} - - -function goword_pass { - run_for_modules goword_for_package || return 255 -} - function go_fmt_for_package { # We utilize 'go fmt' to find all files suitable for formatting, # but reuse full power gofmt to perform just RO check. diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 0dfe66fe0fea..5e5d39af4141 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -7,7 +7,6 @@ toolchain go1.25.3 require ( github.com/alexfalkowski/gocovmerge v1.11.0 github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c - github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint/v2 v2.5.0 @@ -43,7 +42,6 @@ require ( github.com/Masterminds/semver/v3 v3.3.1 // indirect github.com/MirrexOne/unqueryvet v1.2.1 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect - github.com/akhenakh/hunspellgo v0.0.0-20160221122622-9db38fa26e19 // indirect github.com/alecthomas/chroma/v2 v2.20.0 // indirect github.com/alecthomas/go-check-sumtype v0.3.1 // indirect github.com/alexkohler/nakedret/v2 v2.0.6 // indirect @@ -214,7 +212,6 @@ require ( github.com/timonwong/loggercheck v0.11.0 // indirect github.com/tomarrell/wrapcheck/v2 v2.11.0 // indirect github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect - github.com/trustmaster/go-aspell v0.0.0-20200701131845-c2b1f55bec8f // indirect github.com/ultraware/funlen v0.2.0 // indirect github.com/ultraware/whitespace v0.2.0 // indirect github.com/uudashr/gocognit v1.2.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index f335d1967bac..b3ed3440b9f3 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -36,8 +36,6 @@ github.com/MirrexOne/unqueryvet v1.2.1/go.mod h1:IWwCwMQlSWjAIteW0t+28Q5vouyktfu github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= -github.com/akhenakh/hunspellgo v0.0.0-20160221122622-9db38fa26e19 h1:bYOD6QJnBJY79MJQR1i9cyQePG5oNDZXDKL2bhN/uvE= -github.com/akhenakh/hunspellgo v0.0.0-20160221122622-9db38fa26e19/go.mod h1:HcqyLXmWoESd/vPSbCPqvgw5l5cMM5PtoqFOnXLjSeM= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/chroma/v2 v2.20.0 h1:sfIHpxPyR07/Oylvmcai3X/exDlE8+FA820NTz+9sGw= @@ -108,8 +106,6 @@ github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0G github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs= github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ= github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg= -github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03 h1:0wUHjDfbCAROEAZ96zAJGwcNMkPIheFaIjtQyv3QqfM= -github.com/chzchzchz/goword v0.0.0-20170907005317-a9744cb52b03/go.mod h1:uFE9hX+zXEwvyUThZ4gDb9vkAwc5DoHUnRSEpH0VrOs= github.com/ckaznocha/intrange v0.3.1 h1:j1onQyXvHUsPWujDH6WIjhyH26gkRt/txNlV7LspvJs= github.com/ckaznocha/intrange v0.3.1/go.mod h1:QVepyz1AkUoFQkpEqksSYpNpUo3c5W7nWh/s6SHIJJk= github.com/cloudflare/cfssl v1.6.5 h1:46zpNkm6dlNkMZH/wMW22ejih6gIaJbzL2du6vD7ZeI= @@ -494,8 +490,6 @@ github.com/tomarrell/wrapcheck/v2 v2.11.0 h1:BJSt36snX9+4WTIXeJ7nvHBQBcm1h2SjQMS github.com/tomarrell/wrapcheck/v2 v2.11.0/go.mod h1:wFL9pDWDAbXhhPZZt+nG8Fu+h29TtnZ2MW6Lx4BRXIU= github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= -github.com/trustmaster/go-aspell v0.0.0-20200701131845-c2b1f55bec8f h1:92ZQJRegaqnKjz9HY9an696Sw5EmAqRv0eie/U2IE6k= -github.com/trustmaster/go-aspell v0.0.0-20200701131845-c2b1f55bec8f/go.mod h1:wxUiQ1klFJmwnM41kQI7IT2g8jjOKbtuL54LdjkxAI0= github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI= github.com/ultraware/funlen v0.2.0/go.mod h1:ZE0q4TsJ8T1SQcjmkhN/w+MceuatI6pBFSxxyteHIJA= github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSWoFa+g= diff --git a/tools/mod/tools.go b/tools/mod/tools.go index d2ce1c619514..6163c94b62c7 100644 --- a/tools/mod/tools.go +++ b/tools/mod/tools.go @@ -23,7 +23,6 @@ package tools import ( _ "github.com/alexfalkowski/gocovmerge" _ "github.com/appscodelabs/license-bill-of-materials" - _ "github.com/chzchzchz/goword" _ "github.com/cloudflare/cfssl/cmd/cfssl" _ "github.com/cloudflare/cfssl/cmd/cfssljson" _ "github.com/golangci/golangci-lint/v2/cmd/golangci-lint" From 015d6ca06b61821ed9b4dcbdfb87b5239ae9ebd5 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Sat, 11 Oct 2025 00:28:16 -0700 Subject: [PATCH 0597/1068] Update golangci-lint to work with Go workspace Signed-off-by: Ivan Valdes --- scripts/test.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index 2cf68305d40e..b5515b3f0265 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -448,11 +448,11 @@ function govet_shadow_pass { } function lint_pass { - run_for_modules generic_checker run golangci-lint run --config "${ETCD_ROOT_DIR}/tools/.golangci.yaml" --show-stats=false + run_for_all_workspace_modules golangci-lint run --config "${ETCD_ROOT_DIR}/tools/.golangci.yaml" } function lint_fix_pass { - run_for_modules generic_checker run golangci-lint run --config "${ETCD_ROOT_DIR}/tools/.golangci.yaml" --fix --show-stats=false + run_for_all_workspace_modules golangci-lint run --config "${ETCD_ROOT_DIR}/tools/.golangci.yaml" --fix } function license_header_per_module { From 29b78e0d3a1b0e11f2314a252f54bcf79b569cc2 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Sun, 19 Oct 2025 21:36:39 -0700 Subject: [PATCH 0598/1068] Enable goheader golangi-lint linter Update source code files that were missing or had incorrect license headers. For those that had the incorrect license, set the date to 2025. Signed-off-by: Ivan Valdes --- client/pkg/logutil/zap_test.go | 2 +- client/pkg/pathutil/path.go | 16 +++++++++++++--- client/pkg/testutil/leak.go | 16 +++++++++++++--- pkg/crc/crc.go | 16 +++++++++++++--- pkg/crc/crc_test.go | 16 +++++++++++++--- server/auth/main_test.go | 16 +++++++++++++--- server/etcdmain/help.go | 1 - server/proxy/grpcproxy/election.go | 2 +- server/proxy/grpcproxy/lock.go | 2 +- tests/e2e/defrag_no_space_test.go | 2 +- tests/e2e/main_test.go | 16 +++++++++++++--- .../clientv3/connectivity/main_test.go | 16 +++++++++++++--- tests/integration/clientv3/lease/main_test.go | 16 +++++++++++++--- tests/integration/clientv3/main_test.go | 16 +++++++++++++--- .../integration/clientv3/naming/main_test.go | 16 +++++++++++++--- tests/integration/main_test.go | 16 +++++++++++++--- tests/robustness/client/kvhash.go | 2 +- tests/robustness/model/history_test.go | 2 +- tools/.golangci.yaml | 19 +++++++++++++++++++ tools/etcd-dump-logs/raw_test.go | 3 ++- 20 files changed, 170 insertions(+), 41 deletions(-) diff --git a/client/pkg/logutil/zap_test.go b/client/pkg/logutil/zap_test.go index ac12e1aee88f..4ccee8bb7440 100644 --- a/client/pkg/logutil/zap_test.go +++ b/client/pkg/logutil/zap_test.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, diff --git a/client/pkg/pathutil/path.go b/client/pkg/pathutil/path.go index f26254ba933e..6e968922b42b 100644 --- a/client/pkg/pathutil/path.go +++ b/client/pkg/pathutil/path.go @@ -1,6 +1,16 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // Package pathutil implements utility functions for handling slash-separated // paths. diff --git a/client/pkg/testutil/leak.go b/client/pkg/testutil/leak.go index 31db0e5fdf16..61e7554edd7e 100644 --- a/client/pkg/testutil/leak.go +++ b/client/pkg/testutil/leak.go @@ -1,6 +1,16 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package testutil diff --git a/pkg/crc/crc.go b/pkg/crc/crc.go index 4b998a48455f..dc4a19d86e3b 100644 --- a/pkg/crc/crc.go +++ b/pkg/crc/crc.go @@ -1,6 +1,16 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // Package crc provides utility function for cyclic redundancy check // algorithms. diff --git a/pkg/crc/crc_test.go b/pkg/crc/crc_test.go index 38990fac68ce..732b343ee04b 100644 --- a/pkg/crc/crc_test.go +++ b/pkg/crc/crc_test.go @@ -1,6 +1,16 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package crc diff --git a/server/auth/main_test.go b/server/auth/main_test.go index 30ff6fb9a368..79a9d83b7d81 100644 --- a/server/auth/main_test.go +++ b/server/auth/main_test.go @@ -1,6 +1,16 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package auth diff --git a/server/etcdmain/help.go b/server/etcdmain/help.go index bf03c34ed547..195bb3810076 100644 --- a/server/etcdmain/help.go +++ b/server/etcdmain/help.go @@ -1,5 +1,4 @@ // Copyright 2015 The etcd Authors -// Copyright 2015 The etcd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/server/proxy/grpcproxy/election.go b/server/proxy/grpcproxy/election.go index 9ea8d9615760..a52abef686d5 100644 --- a/server/proxy/grpcproxy/election.go +++ b/server/proxy/grpcproxy/election.go @@ -1,4 +1,4 @@ -// Copyright 2017 The etcd Lockors +// Copyright 2017 The etcd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/server/proxy/grpcproxy/lock.go b/server/proxy/grpcproxy/lock.go index 9458080db7b8..a7c1af5c7e3e 100644 --- a/server/proxy/grpcproxy/lock.go +++ b/server/proxy/grpcproxy/lock.go @@ -1,4 +1,4 @@ -// Copyright 2017 The etcd Lockors +// Copyright 2017 The etcd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/tests/e2e/defrag_no_space_test.go b/tests/e2e/defrag_no_space_test.go index f3c70c744478..feccb2ba4562 100644 --- a/tests/e2e/defrag_no_space_test.go +++ b/tests/e2e/defrag_no_space_test.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, diff --git a/tests/e2e/main_test.go b/tests/e2e/main_test.go index 58d7efb95da6..7ad5f207e50b 100644 --- a/tests/e2e/main_test.go +++ b/tests/e2e/main_test.go @@ -1,6 +1,16 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package e2e diff --git a/tests/integration/clientv3/connectivity/main_test.go b/tests/integration/clientv3/connectivity/main_test.go index 39a188823da7..fb46e5a05da7 100644 --- a/tests/integration/clientv3/connectivity/main_test.go +++ b/tests/integration/clientv3/connectivity/main_test.go @@ -1,6 +1,16 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package connectivity diff --git a/tests/integration/clientv3/lease/main_test.go b/tests/integration/clientv3/lease/main_test.go index 1057c4ab86e0..0064ea6adf0a 100644 --- a/tests/integration/clientv3/lease/main_test.go +++ b/tests/integration/clientv3/lease/main_test.go @@ -1,6 +1,16 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package lease_test diff --git a/tests/integration/clientv3/main_test.go b/tests/integration/clientv3/main_test.go index 9481beebcb55..e1755896171a 100644 --- a/tests/integration/clientv3/main_test.go +++ b/tests/integration/clientv3/main_test.go @@ -1,6 +1,16 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package clientv3test diff --git a/tests/integration/clientv3/naming/main_test.go b/tests/integration/clientv3/naming/main_test.go index 92a58a54c7e4..bbebf1c918e2 100644 --- a/tests/integration/clientv3/naming/main_test.go +++ b/tests/integration/clientv3/naming/main_test.go @@ -1,6 +1,16 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package naming_test diff --git a/tests/integration/main_test.go b/tests/integration/main_test.go index e783205834f5..748da914dcfc 100644 --- a/tests/integration/main_test.go +++ b/tests/integration/main_test.go @@ -1,6 +1,16 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Copyright 2022 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package integration diff --git a/tests/robustness/client/kvhash.go b/tests/robustness/client/kvhash.go index e4fc2b482093..5d982e04e9c9 100644 --- a/tests/robustness/client/kvhash.go +++ b/tests/robustness/client/kvhash.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, diff --git a/tests/robustness/model/history_test.go b/tests/robustness/model/history_test.go index 9b6d22f31553..263441dca1f1 100644 --- a/tests/robustness/model/history_test.go +++ b/tests/robustness/model/history_test.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, diff --git a/tools/.golangci.yaml b/tools/.golangci.yaml index 0651f4ac5db3..536b539e998f 100644 --- a/tools/.golangci.yaml +++ b/tools/.golangci.yaml @@ -4,6 +4,7 @@ linters: default: none enable: # please keep this alphabetized - errorlint + - goheader - govet - ineffassign - misspell @@ -19,6 +20,24 @@ linters: - usetesting - whitespace settings: + goheader: + values: + regexp: + ORIGINAL_YEAR: 20[1-2][0-9] + template: |- + Copyright {{ORIGINAL_YEAR}} The etcd Authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. govet: enable: - shadow diff --git a/tools/etcd-dump-logs/raw_test.go b/tools/etcd-dump-logs/raw_test.go index 3deb4bc390fc..c30537769921 100644 --- a/tools/etcd-dump-logs/raw_test.go +++ b/tools/etcd-dump-logs/raw_test.go @@ -4,13 +4,14 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + package main import ( From 9a475802a32b216db9cd7c96572f302de0292def Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 16 Oct 2025 21:18:25 -0700 Subject: [PATCH 0599/1068] Remove gofmt static check The gofmt static check is already part of golangci-lint's gofmt formatter. Therefore, it's a duplicate check. We can simplify and let golangci-lint do the heavy lifting. Signed-off-by: Ivan Valdes --- Makefile | 6 +----- scripts/test.sh | 11 +---------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 785f378db2db..0ae688d1c6df 100644 --- a/Makefile +++ b/Makefile @@ -96,7 +96,7 @@ fuzz: # Static analysis .PHONY: verify -verify: verify-gofmt verify-bom verify-lint verify-dep verify-shellcheck \ +verify: verify-bom verify-lint verify-dep verify-shellcheck \ verify-license-header verify-mod-tidy \ verify-shellws verify-proto-annotations verify-genproto verify-yamllint \ verify-markdown-marker verify-go-versions verify-gomodguard \ @@ -106,10 +106,6 @@ verify: verify-gofmt verify-bom verify-lint verify-dep verify-shellcheck \ fix: fix-bom fix-lint fix-yamllint sync-toolchain-directive update-go-workspace ./scripts/fix.sh -.PHONY: verify-gofmt -verify-gofmt: - PASSES="gofmt" ./scripts/test.sh - .PHONY: verify-bom verify-bom: PASSES="bom" ./scripts/test.sh diff --git a/scripts/test.sh b/scripts/test.sh index 0ea8d434a37a..eae3b05fb30e 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -70,7 +70,7 @@ if [ -n "${OUTPUT_FILE}" ]; then exec > >(tee -a "${OUTPUT_FILE}") 2>&1 fi -PASSES=${PASSES:-"gofmt bom dep build unit"} +PASSES=${PASSES:-"bom dep build unit"} KEEP_GOING_SUITE=${KEEP_GOING_SUITE:-false} PKG=${PKG:-} SHELLCHECK_VERSION=${SHELLCHECK_VERSION:-"v0.10.0"} @@ -421,15 +421,6 @@ function license_header_pass { run_for_modules generic_checker license_header_per_module } -function go_fmt_for_package { - # We utilize 'go fmt' to find all files suitable for formatting, - # but reuse full power gofmt to perform just RO check. - go fmt -n "$1" | sed 's| -w | -d |g' | sh -} - -function gofmt_pass { - run_for_modules generic_checker go_fmt_for_package -} function bom_pass { log_callout "Checking bill of materials..." From b4657a56147eb80615cd964879a3988baa3e050f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Oct 2025 17:18:16 +0000 Subject: [PATCH 0600/1068] build(deps): bump github/codeql-action from 3.30.6 to 4.30.9 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.6 to 4.30.9. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/64d10c13136e1c5bce3e5fbde8d4906eeaafc885...16140ae1a102900babc80a33c44059580f687047) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.30.9 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 096b4be0fa24..18243240f95f 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 + uses: github/codeql-action/init@16140ae1a102900babc80a33c44059580f687047 # v4.30.9 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 + uses: github/codeql-action/autobuild@16140ae1a102900babc80a33c44059580f687047 # v4.30.9 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 + uses: github/codeql-action/analyze@16140ae1a102900babc80a33c44059580f687047 # v4.30.9 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 5e68b1bf2b95..9c2291e209e4 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 + uses: github/codeql-action/upload-sarif@16140ae1a102900babc80a33c44059580f687047 # v4.30.9 with: sarif_file: results.sarif From 00e15a3bc119619af6e51a0cbb6b3376e5786b00 Mon Sep 17 00:00:00 2001 From: Nont Date: Mon, 13 Oct 2025 22:04:58 -0500 Subject: [PATCH 0601/1068] Migrate from fixed paths to env-based vars Signed-off-by: Nont --- .../config/docker-compose-1-node.yml | 4 ++ .../config/docker-compose-3-node.yml | 4 ++ .../test-template/entrypoint/main.go | 15 +++---- .../test-template/robustness/common/path.go | 43 ++++++++++++++++++- .../test-template/robustness/finally/main.go | 2 +- .../test-template/robustness/traffic/main.go | 2 +- 6 files changed, 59 insertions(+), 11 deletions(-) diff --git a/tests/antithesis/config/docker-compose-1-node.yml b/tests/antithesis/config/docker-compose-1-node.yml index a18651c0b0e8..265f5fd9e84b 100644 --- a/tests/antithesis/config/docker-compose-1-node.yml +++ b/tests/antithesis/config/docker-compose-1-node.yml @@ -50,6 +50,10 @@ services: container_name: client entrypoint: ["/opt/antithesis/entrypoint/entrypoint"] user: "${USER_ID:-root}:${GROUP_ID:-root}" + environment: + ETCD_ROBUSTNESS_ENDPOINTS: "etcd0:2379" + ETCD_ROBUSTNESS_DATA_PATHS: "/var/etcddata0" + ETCD_ROBUSTNESS_REPORT_PATH: "/var/report" depends_on: etcd0: condition: service_started diff --git a/tests/antithesis/config/docker-compose-3-node.yml b/tests/antithesis/config/docker-compose-3-node.yml index c5160ddf10f3..bc779af0de48 100644 --- a/tests/antithesis/config/docker-compose-3-node.yml +++ b/tests/antithesis/config/docker-compose-3-node.yml @@ -106,6 +106,10 @@ services: container_name: client entrypoint: ["/opt/antithesis/entrypoint/entrypoint"] user: "${USER_ID:-root}:${GROUP_ID:-root}" + environment: + ETCD_ROBUSTNESS_ENDPOINTS: "etcd0:2379,etcd1:2379,etcd2:2379" + ETCD_ROBUSTNESS_DATA_PATHS: "/var/etcddata0,/var/etcddata1,/var/etcddata2" + ETCD_ROBUSTNESS_REPORT_PATH: "/var/report" depends_on: etcd0: condition: service_started diff --git a/tests/antithesis/test-template/entrypoint/main.go b/tests/antithesis/test-template/entrypoint/main.go index ab9e365b3dd6..0457dc242516 100644 --- a/tests/antithesis/test-template/entrypoint/main.go +++ b/tests/antithesis/test-template/entrypoint/main.go @@ -35,17 +35,16 @@ var NodeCount = "3" // CheckHealth checks health of all etcd nodes func CheckHealth() bool { cfg := common.MakeConfig(NodeCount) + hosts, _, _ := common.GetPaths(cfg) - nodeOptions := []string{"etcd0", "etcd1", "etcd2"}[:cfg.NodeCount] - - // iterate over each node and check health - for _, node := range nodeOptions { + // iterate over each host and check health + for _, host := range hosts { cli, err := clientv3.New(clientv3.Config{ - Endpoints: []string{fmt.Sprintf("http://%s:2379", node)}, + Endpoints: []string{fmt.Sprintf("http://%s", host)}, DialTimeout: 5 * time.Second, }) if err != nil { - fmt.Printf("Client [entrypoint]: connection failed with %s\n", node) + fmt.Printf("Client [entrypoint]: connection failed with %s\n", host) fmt.Printf("Client [entrypoint]: error: %v\n", err) return false } @@ -60,12 +59,12 @@ func CheckHealth() bool { // fetch the key setting-up to confirm that the node is available _, err = cli.Get(context.Background(), "setting-up") if err != nil { - fmt.Printf("Client [entrypoint]: connection failed with %s\n", node) + fmt.Printf("Client [entrypoint]: connection failed with %s\n", host) fmt.Printf("Client [entrypoint]: error: %v\n", err) return false } - fmt.Printf("Client [entrypoint]: connection successful with %s\n", node) + fmt.Printf("Client [entrypoint]: connection successful with %s\n", host) } return true diff --git a/tests/antithesis/test-template/robustness/common/path.go b/tests/antithesis/test-template/robustness/common/path.go index 99d1cd167272..d7bff6dfc301 100644 --- a/tests/antithesis/test-template/robustness/common/path.go +++ b/tests/antithesis/test-template/robustness/common/path.go @@ -19,6 +19,7 @@ package common import ( "fmt" "os" + "strings" ) const ( @@ -36,9 +37,49 @@ const ( defaultetcdLocalDataPath = "/tmp/etcddata%d" localetcdDataPathEnv = "ETCD_ROBUSTNESS_DATA_PATH_PREFIX" localReportPath = "report" + + endpointsEnv = "ETCD_ROBUSTNESS_ENDPOINTS" + dataPathsEnv = "ETCD_ROBUSTNESS_DATA_PATHS" + reportPathEnv = "ETCD_ROBUSTNESS_REPORT_PATH" ) -func DefaultPaths(cfg *Config) (hosts []string, reportPath string, dataPaths map[string]string) { +func GetPaths(cfg *Config) (hosts []string, reportPath string, dataPaths map[string]string) { + // Check for environment variable overrides first + envDataPathsStr := os.Getenv(dataPathsEnv) + envReportPath := os.Getenv(reportPathEnv) + envEndpointsStr := os.Getenv(endpointsEnv) + + defaultHosts, defaultReportPath, defaultDataPaths := defaultPaths(cfg) + + hosts = defaultHosts + if envEndpointsStr != "" { + hosts = strings.Split(envEndpointsStr, ",") + for i, host := range hosts { + hosts[i] = strings.TrimSpace(host) + } + } + + reportPath = defaultReportPath + if envReportPath != "" { + reportPath = envReportPath + } + + dataPaths = defaultDataPaths + if envDataPathsStr != "" { + envDataPaths := strings.Split(envDataPathsStr, ",") + if len(envDataPaths) != len(hosts) { + panic(fmt.Sprintf("Mismatched number of endpoints and data paths: %d endpoints, %d data paths", len(hosts), len(envDataPaths))) + } + + dataPaths = make(map[string]string) + for i, endpoint := range hosts { + dataPaths[endpoint] = strings.TrimSpace(envDataPaths[i]) + } + } + return hosts, reportPath, dataPaths +} + +func defaultPaths(cfg *Config) (hosts []string, reportPath string, dataPaths map[string]string) { hosts = []string{defaultetcd0, defaultetcd1, defaultetcd2}[:cfg.NodeCount] reportPath = defaultReportPath dataPaths = etcdDataPaths(defaultetcdDataPath, cfg.NodeCount) diff --git a/tests/antithesis/test-template/robustness/finally/main.go b/tests/antithesis/test-template/robustness/finally/main.go index da9b87e591f8..aeffc9735951 100644 --- a/tests/antithesis/test-template/robustness/finally/main.go +++ b/tests/antithesis/test-template/robustness/finally/main.go @@ -44,7 +44,7 @@ func main() { cfg := common.MakeConfig(NodeCount) - _, reportPath, dirs := common.DefaultPaths(cfg) + _, reportPath, dirs := common.GetPaths(cfg) if *local { _, reportPath, dirs = common.LocalPaths(cfg) } diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 0fdaf546c333..b4ac6d6a3764 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -69,7 +69,7 @@ func main() { cfg := common.MakeConfig(NodeCount) - hosts, reportPath, etcdetcdDataPaths := common.DefaultPaths(cfg) + hosts, reportPath, etcdetcdDataPaths := common.GetPaths(cfg) if *local { hosts, reportPath, etcdetcdDataPaths = common.LocalPaths(cfg) } From f36a07a33d0e7dbe9b9bc43617ba2ff61c8df0fa Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Sun, 19 Oct 2025 21:40:35 -0700 Subject: [PATCH 0602/1068] Remove verify-license-header check This is now replaced by the golangci-lint goheader linter. Deletes the bash helper go_srcs_in_module, as it is not used anymore by any other static check functions. Signed-off-by: Ivan Valdes --- Makefile | 7 +------ scripts/test.sh | 12 ------------ scripts/test_lib.sh | 6 ------ tools/mod/go.mod | 1 - tools/mod/go.sum | 3 --- tools/mod/tools.go | 1 - 6 files changed, 1 insertion(+), 29 deletions(-) diff --git a/Makefile b/Makefile index 0ae688d1c6df..01cda1f7f235 100644 --- a/Makefile +++ b/Makefile @@ -96,8 +96,7 @@ fuzz: # Static analysis .PHONY: verify -verify: verify-bom verify-lint verify-dep verify-shellcheck \ - verify-license-header verify-mod-tidy \ +verify: verify-bom verify-lint verify-dep verify-shellcheck verify-mod-tidy \ verify-shellws verify-proto-annotations verify-genproto verify-yamllint \ verify-markdown-marker verify-go-versions verify-gomodguard \ verify-go-workspace @@ -130,10 +129,6 @@ fix-lint: verify-shellcheck: PASSES="shellcheck" ./scripts/test.sh -.PHONY: verify-license-header -verify-license-header: - PASSES="license_header" ./scripts/test.sh - .PHONY: verify-mod-tidy verify-mod-tidy: PASSES="mod_tidy" ./scripts/test.sh diff --git a/scripts/test.sh b/scripts/test.sh index eae3b05fb30e..c779cdba4a72 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -410,18 +410,6 @@ function lint_fix_pass { run_for_all_workspace_modules golangci-lint run --config "${ETCD_ROOT_DIR}/tools/.golangci.yaml" --fix } -function license_header_per_module { - # bash 3.x compatible replacement of: mapfile -t gofiles < <(go_srcs_in_module) - local gofiles=() - while IFS= read -r line; do gofiles+=("$line"); done < <(go_srcs_in_module) - run_go_tool "github.com/google/addlicense" --check "${gofiles[@]}" -} - -function license_header_pass { - run_for_modules generic_checker license_header_per_module -} - - function bom_pass { log_callout "Checking bill of materials..." # https://github.com/golang/go/commit/7c388cc89c76bc7167287fb488afcaf5a4aa12bf diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index 3108b9c3e33a..3314d8fe2124 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -32,12 +32,6 @@ set_root_dir #### Discovery of files/packages within a go module ##### -# go_srcs_in_module -# returns list of all not-generated go sources in the current (dir) module. -function go_srcs_in_module { - go list -f "{{with \$c:=.}}{{range \$f:=\$c.GoFiles }}{{\$c.Dir}}/{{\$f}}{{\"\n\"}}{{end}}{{range \$f:=\$c.TestGoFiles }}{{\$c.Dir}}/{{\$f}}{{\"\n\"}}{{end}}{{range \$f:=\$c.XTestGoFiles }}{{\$c.Dir}}/{{\$f}}{{\"\n\"}}{{end}}{{end}}" ./... | grep -vE "(\\.pb\\.go|\\.pb\\.gw.go)" -} - # pkgs_in_module [optional:package_pattern] # returns list of all packages in the current (dir) module. # if the package_pattern is given, its being resolved. diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 5e5d39af4141..fbf448d49d9b 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -10,7 +10,6 @@ require ( github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint/v2 v2.5.0 - github.com/google/addlicense v1.2.0 github.com/google/yamlfmt v0.17.2 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/ryancurrah/gomodguard v1.4.1 diff --git a/tools/mod/go.sum b/tools/mod/go.sum index b3ed3440b9f3..bfe97a88a105 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -72,7 +72,6 @@ github.com/bkielbasa/cyclop v1.2.3 h1:faIVMIGDIANuGPWH031CZJTi2ymOQBULs9H21HSMa5 github.com/bkielbasa/cyclop v1.2.3/go.mod h1:kHTwA9Q0uZqOADdupvcFJQtp/ksSnytRMe8ztxG8Fuo= github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= -github.com/bmatcuk/doublestar/v4 v4.0.2/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bmatcuk/doublestar/v4 v4.8.1 h1:54Bopc5c2cAvhLRAzqOGCYHYyhcDHsFF4wWIR5wKP38= github.com/bmatcuk/doublestar/v4 v4.8.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bombsimon/wsl/v4 v4.7.0 h1:1Ilm9JBPRczjyUs6hvOPKvd7VL1Q++PL8M0SXBDf+jQ= @@ -218,8 +217,6 @@ github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e h1:ai0EfmVYE2b github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e/go.mod h1:Vrn4B5oR9qRwM+f54koyeH3yzphlecwERs0el27Fr/s= github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e h1:gD6P7NEo7Eqtt0ssnqSJNNndxe69DOQ24A5h7+i3KpM= github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e/go.mod h1:h+wZwLjUTJnm/P2rwlbJdRPZXOzaT36/FwnPnY2inzc= -github.com/google/addlicense v1.2.0 h1:W+DP4A639JGkcwBGMDvjSurZHvaq2FN0pP7se9czsKA= -github.com/google/addlicense v1.2.0/go.mod h1:Sm/DHu7Jk+T5miFHHehdIjbi4M5+dJDRS3Cq0rncIxA= github.com/google/certificate-transparency-go v1.1.8 h1:LGYKkgZF7satzgTak9R4yzfJXEeYVAjV6/EAEJOf1to= github.com/google/certificate-transparency-go v1.1.8/go.mod h1:bV/o8r0TBKRf1X//iiiSgWrvII4d7/8OiA+3vG26gI8= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= diff --git a/tools/mod/tools.go b/tools/mod/tools.go index 6163c94b62c7..e88aa4a7a1ca 100644 --- a/tools/mod/tools.go +++ b/tools/mod/tools.go @@ -26,7 +26,6 @@ import ( _ "github.com/cloudflare/cfssl/cmd/cfssl" _ "github.com/cloudflare/cfssl/cmd/cfssljson" _ "github.com/golangci/golangci-lint/v2/cmd/golangci-lint" - _ "github.com/google/addlicense" _ "github.com/google/yamlfmt/cmd/yamlfmt" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2" From 476b205661a3dfa97399a586e7b55a9974897739 Mon Sep 17 00:00:00 2001 From: Kota Date: Sun, 12 Oct 2025 22:51:50 +0900 Subject: [PATCH 0603/1068] tests: Refactor ClusterContext option in e2e and integration tests Signed-off-by: Kota --- tests/common/e2e_test.go | 30 +++------------------- tests/common/integration_test.go | 22 +++------------- tests/framework/e2e/config.go | 37 +++++++++++++++++++++++++++ tests/framework/integration/config.go | 30 ++++++++++++++++++++++ 4 files changed, 73 insertions(+), 46 deletions(-) diff --git a/tests/common/e2e_test.go b/tests/common/e2e_test.go index eeba55702811..2453740175fb 100644 --- a/tests/common/e2e_test.go +++ b/tests/common/e2e_test.go @@ -112,37 +112,13 @@ func WithEndpoints(endpoints []string) config.ClientOption { } func WithHTTP2Debug() config.ClusterOption { - return func(c *config.ClusterConfig) { - ctx := ensureE2EClusterContext(c) - if ctx.EnvVars == nil { - ctx.EnvVars = map[string]string{} - } - // Enable debug mode to get logs with http2 headers (including authority) - ctx.EnvVars["GODEBUG"] = "http2debug=2" - c.ClusterContext = ctx - } + return e2e.WithHTTP2Debug() } func WithUnixClient() config.ClusterOption { - return func(c *config.ClusterConfig) { - ctx := ensureE2EClusterContext(c) - ctx.UseUnix = true - c.ClusterContext = ctx - } + return e2e.WithUnixClient() } func WithTCPClient() config.ClusterOption { - return func(c *config.ClusterConfig) { - ctx := ensureE2EClusterContext(c) - ctx.UseUnix = false - c.ClusterContext = ctx - } -} - -func ensureE2EClusterContext(c *config.ClusterConfig) *e2e.ClusterContext { - ctx, _ := c.ClusterContext.(*e2e.ClusterContext) - if ctx == nil { - ctx = &e2e.ClusterContext{} - } - return ctx + return e2e.WithTCPClient() } diff --git a/tests/common/integration_test.go b/tests/common/integration_test.go index e8987ebf4021..53234cd04bc3 100644 --- a/tests/common/integration_test.go +++ b/tests/common/integration_test.go @@ -57,29 +57,13 @@ func WithEndpoints(endpoints []string) config.ClientOption { } func WithHTTP2Debug() config.ClusterOption { - return func(c *config.ClusterConfig) {} + return integration.WithHTTP2Debug() } func WithUnixClient() config.ClusterOption { - return func(c *config.ClusterConfig) { - ctx := ensureIntegrationClusterContext(c) - ctx.UseUnix = true - c.ClusterContext = ctx - } + return integration.WithUnixClient() } func WithTCPClient() config.ClusterOption { - return func(c *config.ClusterConfig) { - ctx := ensureIntegrationClusterContext(c) - ctx.UseUnix = false - c.ClusterContext = ctx - } -} - -func ensureIntegrationClusterContext(c *config.ClusterConfig) *integration.ClusterContext { - ctx, _ := c.ClusterContext.(*integration.ClusterContext) - if ctx == nil { - ctx = &integration.ClusterContext{} - } - return ctx + return integration.WithTCPClient() } diff --git a/tests/framework/e2e/config.go b/tests/framework/e2e/config.go index 4e0405468624..d05d9a1058c8 100644 --- a/tests/framework/e2e/config.go +++ b/tests/framework/e2e/config.go @@ -21,6 +21,7 @@ import ( "github.com/coreos/go-semver/semver" "go.etcd.io/etcd/api/v3/version" + "go.etcd.io/etcd/tests/v3/framework/config" ) type ClusterVersion string @@ -45,6 +46,42 @@ type ClusterContext struct { UseUnix bool } +func WithHTTP2Debug() config.ClusterOption { + return func(c *config.ClusterConfig) { + ctx := ensureE2EClusterContext(c) + if ctx.EnvVars == nil { + ctx.EnvVars = map[string]string{} + } + // Enable debug mode to get logs with http2 headers (including authority) + ctx.EnvVars["GODEBUG"] = "http2debug=2" + c.ClusterContext = ctx + } +} + +func WithUnixClient() config.ClusterOption { + return func(c *config.ClusterConfig) { + ctx := ensureE2EClusterContext(c) + ctx.UseUnix = true + c.ClusterContext = ctx + } +} + +func WithTCPClient() config.ClusterOption { + return func(c *config.ClusterConfig) { + ctx := ensureE2EClusterContext(c) + ctx.UseUnix = false + c.ClusterContext = ctx + } +} + +func ensureE2EClusterContext(c *config.ClusterConfig) *ClusterContext { + ctx, _ := c.ClusterContext.(*ClusterContext) + if ctx == nil { + ctx = &ClusterContext{} + } + return ctx +} + var experimentalFlags = map[string]struct{}{ "compact-hash-check-time": {}, "corrupt-check-time": {}, diff --git a/tests/framework/integration/config.go b/tests/framework/integration/config.go index b1b246006a4c..c969f1ca7495 100644 --- a/tests/framework/integration/config.go +++ b/tests/framework/integration/config.go @@ -14,6 +14,36 @@ package integration +import "go.etcd.io/etcd/tests/v3/framework/config" + type ClusterContext struct { UseUnix bool } + +func WithHTTP2Debug() config.ClusterOption { + return func(c *config.ClusterConfig) {} +} + +func WithUnixClient() config.ClusterOption { + return func(c *config.ClusterConfig) { + ctx := ensureIntegrationClusterContext(c) + ctx.UseUnix = true + c.ClusterContext = ctx + } +} + +func WithTCPClient() config.ClusterOption { + return func(c *config.ClusterConfig) { + ctx := ensureIntegrationClusterContext(c) + ctx.UseUnix = false + c.ClusterContext = ctx + } +} + +func ensureIntegrationClusterContext(c *config.ClusterConfig) *ClusterContext { + ctx, _ := c.ClusterContext.(*ClusterContext) + if ctx == nil { + ctx = &ClusterContext{} + } + return ctx +} From 1fcad2a1159ee3d64f56370c108856c5dc7575f7 Mon Sep 17 00:00:00 2001 From: joshjms Date: Thu, 23 Oct 2025 00:46:07 +0800 Subject: [PATCH 0604/1068] dependency: bump golang.org/x/net from 0.44.0 to 0.46.0 Signed-off-by: joshjms --- api/go.mod | 6 +++--- api/go.sum | 12 ++++++------ cache/go.mod | 6 +++--- cache/go.sum | 12 ++++++------ client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 6 +++--- client/v3/go.sum | 12 ++++++------ etcdctl/go.mod | 6 +++--- etcdctl/go.sum | 12 ++++++------ etcdutl/go.mod | 8 ++++---- etcdutl/go.sum | 16 ++++++++-------- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- go.work.sum | 4 +++- pkg/go.mod | 6 +++--- pkg/go.sum | 12 ++++++------ server/go.mod | 8 ++++---- server/go.sum | 16 ++++++++-------- tests/go.mod | 8 ++++---- tests/go.sum | 16 ++++++++-------- tools/mod/go.mod | 10 +++++----- tools/mod/go.sum | 20 ++++++++++---------- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 6 +++--- tools/testgrid-analysis/go.sum | 12 ++++++------ 27 files changed, 126 insertions(+), 124 deletions(-) diff --git a/api/go.mod b/api/go.mod index 67c51075ef9e..a98e88c8b424 100644 --- a/api/go.mod +++ b/api/go.mod @@ -20,9 +20,9 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - golang.org/x/net v0.44.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/net v0.46.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index f354a0f288c5..b4cbfc5437e6 100644 --- a/api/go.sum +++ b/api/go.sum @@ -52,20 +52,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/cache/go.mod b/cache/go.mod index 32ff0a26e040..0103725cc645 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -23,9 +23,9 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/net v0.44.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/net v0.46.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/grpc v1.75.1 // indirect diff --git a/cache/go.sum b/cache/go.sum index 6f53e8ece35d..dd53fbb88a31 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -81,20 +81,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 6735c8f2b5f9..40d07a73147b 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.6.0 github.com/stretchr/testify v1.11.1 go.uber.org/zap v1.27.0 - golang.org/x/sys v0.36.0 + golang.org/x/sys v0.37.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index f62bc37b2bc1..5184537b72d9 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -24,8 +24,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index cedc8bb53b52..3b50d1dd3075 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -33,9 +33,9 @@ require ( github.com/prometheus/procfs v0.16.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/net v0.44.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/net v0.46.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/protobuf v1.36.10 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 9f411aeff446..beba610191c4 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -87,20 +87,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 8509c11de047..c2afa1f3e9ed 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -39,9 +39,9 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.44.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/net v0.46.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/protobuf v1.36.10 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 1db7edd1c66c..bd02e205e0ba 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -113,8 +113,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -122,12 +122,12 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 3224775089cd..dd8b664996a3 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -77,10 +77,10 @@ require ( go.opentelemetry.io/proto/otlp v1.8.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.42.0 // indirect - golang.org/x/net v0.44.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/crypto v0.43.0 // indirect + golang.org/x/net v0.46.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 4ccfb6d8ce44..59f51ca3d254 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -145,8 +145,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= -golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= +golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= +golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -154,8 +154,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -166,12 +166,12 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index 28d288382a38..5742e3866152 100644 --- a/go.mod +++ b/go.mod @@ -93,10 +93,10 @@ require ( go.opentelemetry.io/proto/otlp v1.8.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.42.0 // indirect - golang.org/x/net v0.44.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/crypto v0.43.0 // indirect + golang.org/x/net v0.46.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index fd1550e5cbd7..cfeb90a1edcc 100644 --- a/go.sum +++ b/go.sum @@ -187,8 +187,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= -golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= +golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= +golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -204,8 +204,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -221,12 +221,12 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.work.sum b/go.work.sum index 98bcea6f27eb..43de97ab599f 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1195,7 +1195,6 @@ golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hM golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1212,6 +1211,8 @@ golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.45.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= @@ -1239,6 +1240,7 @@ golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= diff --git a/pkg/go.mod b/pkg/go.mod index 03017b5fd48f..1533cbacbf77 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.38.0 go.uber.org/zap v1.27.0 - golang.org/x/sys v0.36.0 + golang.org/x/sys v0.37.0 google.golang.org/grpc v1.75.1 ) @@ -24,8 +24,8 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.opentelemetry.io/otel v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.44.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/net v0.46.0 // indirect + golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index cbed1e92f66e..4ed6e94c7667 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -53,12 +53,12 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= diff --git a/server/go.mod b/server/go.mod index 4201ec33731b..7d3e2e50ed99 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,8 +37,8 @@ require ( go.opentelemetry.io/otel/sdk v1.38.0 go.opentelemetry.io/otel/trace v1.38.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.42.0 - golang.org/x/net v0.44.0 + golang.org/x/crypto v0.43.0 + golang.org/x/net v0.46.0 golang.org/x/time v0.13.0 google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 google.golang.org/grpc v1.75.1 @@ -70,8 +70,8 @@ require ( go.opentelemetry.io/proto/otlp v1.8.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index 63030f1a8f8e..1acf7aa308f7 100644 --- a/server/go.sum +++ b/server/go.sum @@ -130,8 +130,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= -golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= +golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= +golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -139,8 +139,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -150,12 +150,12 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index 585ecbf6c3b9..05e7b362aee8 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -47,7 +47,7 @@ require ( go.opentelemetry.io/otel/sdk v1.38.0 go.opentelemetry.io/proto/otlp v1.8.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.42.0 + golang.org/x/crypto v0.43.0 golang.org/x/sync v0.17.0 golang.org/x/time v0.13.0 google.golang.org/grpc v1.75.1 @@ -97,9 +97,9 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/net v0.44.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/net v0.46.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index 6e8739066ffc..92564a506f1d 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -193,8 +193,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= -golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= +golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= +golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -210,8 +210,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -227,12 +227,12 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index fbf448d49d9b..bcc18b8e7582 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -233,16 +233,16 @@ require ( go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.42.0 // indirect + golang.org/x/crypto v0.43.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20250911091902-df9299821621 // indirect golang.org/x/mod v0.28.0 // indirect - golang.org/x/net v0.44.0 // indirect + golang.org/x/net v0.46.0 // indirect golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.36.0 // indirect + golang.org/x/sys v0.37.0 // indirect golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053 // indirect - golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/term v0.36.0 // indirect + golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/grpc v1.75.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index bfe97a88a105..ed1f749330f0 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -571,8 +571,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= -golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= +golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= +golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -610,8 +610,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -652,8 +652,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053 h1:dHQOQddU4YHS5gY33/6klKjq7Gp3WwMyOXGNp5nzRj8= golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053/go.mod h1:+nZKN+XVh4LCiA9DV3ywrzN4gumyCnKjau3NGb9SGoE= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -668,8 +668,8 @@ golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= -golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= +golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= +golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -683,8 +683,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 4af82a6b7f81..51bdcb5b54f5 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -22,5 +22,5 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/image v0.18.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 17c94b97b56f..b2e59c39336a 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -54,8 +54,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 2b6e807860dc..63882a118125 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -15,9 +15,9 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.10 // indirect - golang.org/x/net v0.44.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/net v0.46.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/grpc v1.75.1 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 1b6f35ceb91e..c3c1e6fc78c3 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1337,8 +1337,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1485,8 +1485,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1517,8 +1517,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 4b4951de996285f4a7193ca1f33abffca7a5900f Mon Sep 17 00:00:00 2001 From: joshjms Date: Thu, 23 Oct 2025 00:47:31 +0800 Subject: [PATCH 0605/1068] dependency: bump github.com/prometheus/common from 0.66.1 to 0.67.1 Signed-off-by: joshjms --- cache/go.sum | 8 ++++---- client/v3/go.mod | 4 ++-- client/v3/go.sum | 8 ++++---- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- go.work.sum | 8 +++++--- server/go.mod | 4 ++-- server/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 8 ++++---- 15 files changed, 49 insertions(+), 47 deletions(-) diff --git a/cache/go.sum b/cache/go.sum index dd53fbb88a31..244b0084a4ef 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -42,8 +42,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= +github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -70,8 +70,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= diff --git a/client/v3/go.mod b/client/v3/go.mod index 3b50d1dd3075..9359eaec360b 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -29,10 +29,10 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/common v0.67.1 // indirect github.com/prometheus/procfs v0.16.1 // indirect go.uber.org/multierr v1.11.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.46.0 // indirect golang.org/x/sys v0.37.0 // indirect golang.org/x/text v0.30.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index beba610191c4..ca0983c1357f 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -46,8 +46,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= +github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -74,8 +74,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index bd02e205e0ba..6423a7d5a0f4 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -65,8 +65,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= +github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= @@ -102,8 +102,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index dd8b664996a3..4f58fd3cbe28 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -58,7 +58,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/common v0.67.1 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect @@ -76,7 +76,7 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 // indirect go.opentelemetry.io/proto/otlp v1.8.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.43.0 // indirect golang.org/x/net v0.46.0 // indirect golang.org/x/sys v0.37.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 59f51ca3d254..60c68b664486 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -79,8 +79,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= +github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= @@ -138,8 +138,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/go.mod b/go.mod index 5742e3866152..2f53494a5df3 100644 --- a/go.mod +++ b/go.mod @@ -73,7 +73,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/common v0.67.1 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect @@ -92,7 +92,7 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 // indirect go.opentelemetry.io/proto/otlp v1.8.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.43.0 // indirect golang.org/x/net v0.46.0 // indirect golang.org/x/sys v0.37.0 // indirect diff --git a/go.sum b/go.sum index cfeb90a1edcc..a75675b9ca6f 100644 --- a/go.sum +++ b/go.sum @@ -112,8 +112,8 @@ github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UH github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= +github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= @@ -180,8 +180,8 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/go.work.sum b/go.work.sum index 43de97ab599f..1329de11fbed 100644 --- a/go.work.sum +++ b/go.work.sum @@ -571,8 +571,8 @@ github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19 h1:iXUgAaqD github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY= github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= +github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs= github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0 h1:uF5Q/hWnDU1XZeT6CsrRSxHLroUSEYYO3kgES+yd+So= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0/go.mod h1:ccdDYaY5+gO+cbnQdFxEXqfy0RkoV25H3jLXUDNM3wg= @@ -1217,8 +1217,9 @@ golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2 golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= +golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= @@ -1283,6 +1284,7 @@ google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215 h1:0Uz5jLJQioKgVozXa1gzGbzYxbb/rhQEVvSWxzw5oUs= google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= google.golang.org/genproto v0.0.0-20250122153221-138b5a5a4fd4/go.mod h1:qbZzneIOXSq+KFAFut9krLfRLZiFLzZL5u2t8SV83EE= diff --git a/server/go.mod b/server/go.mod index 7d3e2e50ed99..b2c85c402b86 100644 --- a/server/go.mod +++ b/server/go.mod @@ -60,7 +60,7 @@ require ( github.com/kylelemons/godebug v1.1.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/common v0.67.1 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.10 // indirect @@ -69,7 +69,7 @@ require ( go.opentelemetry.io/otel/metric v1.38.0 // indirect go.opentelemetry.io/proto/otlp v1.8.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/sys v0.37.0 // indirect golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect diff --git a/server/go.sum b/server/go.sum index 1acf7aa308f7..4b36dd424b28 100644 --- a/server/go.sum +++ b/server/go.sum @@ -67,8 +67,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= +github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -123,8 +123,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/tests/go.mod b/tests/go.mod index 05e7b362aee8..d57f05a1db2f 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -28,7 +28,7 @@ require ( github.com/olekukonko/tablewriter v1.1.0 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.66.1 + github.com/prometheus/common v0.67.1 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 @@ -96,7 +96,7 @@ require ( go.opentelemetry.io/otel/metric v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.46.0 // indirect golang.org/x/sys v0.37.0 // indirect golang.org/x/text v0.30.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 92564a506f1d..b8a46b8ac850 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -118,8 +118,8 @@ github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UH github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= +github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= @@ -186,8 +186,8 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index bcc18b8e7582..0ba55cd667ef 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -173,7 +173,7 @@ require ( github.com/polyfloyd/go-errorlint v1.8.0 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/common v0.67.1 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/quasilyte/go-ruleguard v0.4.4 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect @@ -231,7 +231,7 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.43.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index ed1f749330f0..6c2d61ea73fc 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -387,8 +387,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= +github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/quasilyte/go-ruleguard v0.4.4 h1:53DncefIeLX3qEpjzlS1lyUmQoUEeOWPFWqaTJq9eAQ= @@ -553,8 +553,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= From 0fb6f2c98e0331063a4a5d565dde6087aaba504b Mon Sep 17 00:00:00 2001 From: joshjms Date: Thu, 23 Oct 2025 00:48:22 +0800 Subject: [PATCH 0606/1068] dependency: bump golang.org/x/tools from 0.37.0 to 0.38.0 Signed-off-by: joshjms --- go.work.sum | 6 ++---- tools/mod/go.mod | 6 +++--- tools/mod/go.sum | 12 ++++++------ 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/go.work.sum b/go.work.sum index 1329de11fbed..61129b2cfda6 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1195,6 +1195,7 @@ golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hM golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1211,7 +1212,6 @@ golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/net v0.45.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -1241,7 +1241,6 @@ golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= @@ -1265,7 +1264,7 @@ golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= -golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/gonum v0.15.1/go.mod h1:eZTZuRFrzu5pcyjN5wJhcIhnUdNijYxX1T2IcrOGY0o= @@ -1284,7 +1283,6 @@ google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215 h1:0Uz5jLJQioKgVozXa1gzGbzYxbb/rhQEVvSWxzw5oUs= google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= google.golang.org/genproto v0.0.0-20250122153221-138b5a5a4fd4/go.mod h1:qbZzneIOXSq+KFAFut9krLfRLZiFLzZL5u2t8SV83EE= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 0ba55cd667ef..d7ba578a9c01 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -16,7 +16,7 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 - golang.org/x/tools v0.37.0 + golang.org/x/tools v0.38.0 gotest.tools/gotestsum v1.13.0 gotest.tools/v3 v3.5.2 honnef.co/go/tools v0.6.1 @@ -236,11 +236,11 @@ require ( golang.org/x/crypto v0.43.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20250911091902-df9299821621 // indirect - golang.org/x/mod v0.28.0 // indirect + golang.org/x/mod v0.29.0 // indirect golang.org/x/net v0.46.0 // indirect golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.37.0 // indirect - golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053 // indirect + golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 // indirect golang.org/x/term v0.36.0 // indirect golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 6c2d61ea73fc..348971f736ea 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -588,8 +588,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U= -golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= +golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= +golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -654,8 +654,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053 h1:dHQOQddU4YHS5gY33/6klKjq7Gp3WwMyOXGNp5nzRj8= -golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053/go.mod h1:+nZKN+XVh4LCiA9DV3ywrzN4gumyCnKjau3NGb9SGoE= +golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 h1:LvzTn0GQhWuvKH/kVRS3R3bVAsdQWI7hvfLHGgh9+lU= +golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8/go.mod h1:Pi4ztBfryZoJEkyFTI5/Ocsu2jXyDr6iSdgJiYE/uwE= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -699,8 +699,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE= -golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= +golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= +golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= From 1db38ea3ed74049d52752af68f2a212525fc13b6 Mon Sep 17 00:00:00 2001 From: Chuanye Gao Date: Wed, 22 Oct 2025 20:10:50 +0800 Subject: [PATCH 0607/1068] docs: fix TestGrid badge link in CONTRIBUTING.md The presubmit unit-test tab was renamed from `pull-etcd-unit-test` to `pull-etcd-unit-test-amd64`. Update both the badge (tests_status) and the summary link in CONTRIBUTING.md. Verified locally that the badge renders and links correctly. Signed-off-by: Chuanye Gao --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 08d1807e9879..73c04eda604b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -55,7 +55,7 @@ For more, because etcd uses Kubernetes' prow infrastructure to run CI jobs, the | periodics e2e-amd64 | [![sig-etcd-periodics/ci-etcd-e2e-amd64](https://testgrid.k8s.io/q/summary/sig-etcd-periodics/ci-etcd-e2e-amd64/tests_status?style=svg)](https://testgrid.k8s.io/q/summary/sig-etcd-periodics/ci-etcd-e2e-amd64) | | presubmit build | [![sig-etcd-presubmits/pull-etcd-build](https://testgrid.k8s.io/q/summary/sig-etcd-presubmits/pull-etcd-build/tests_status?style=svg)](https://testgrid.k8s.io/q/summary/sig-etcd-presubmits/pull-etcd-build) | | presubmit e2e-amd64 | [![sig-etcd-presubmits/pull-etcd-e2e-amd64](https://testgrid.k8s.io/q/summary/sig-etcd-presubmits/pull-etcd-e2e-amd64/tests_status?style=svg)](https://testgrid.k8s.io/q/summary/sig-etcd-presubmits/pull-etcd-e2e-amd64) | -| presubmit unit-test | [![sig-etcd-presubmits/pull-etcd-unit-test](https://testgrid.k8s.io/q/summary/sig-etcd-presubmits/pull-etcd-unit-test/tests_status?style=svg)](https://testgrid.k8s.io/q/summary/sig-etcd-presubmits/pull-etcd-unit-test) | +| presubmit unit-test-amd64 | [![sig-etcd-presubmits/pull-etcd-unit-test-amd64](https://testgrid.k8s.io/q/summary/sig-etcd-presubmits/pull-etcd-unit-test-amd64/tests_status?style=svg)](https://testgrid.k8s.io/q/summary/sig-etcd-presubmits/pull-etcd-unit-test-amd64) | | presubmit verify | [![sig-etcd-presubmits/pull-etcd-verify](https://testgrid.k8s.io/q/summary/sig-etcd-presubmits/pull-etcd-verify/tests_status?style=svg)](https://testgrid.k8s.io/q/summary/sig-etcd-presubmits/pull-etcd-verify) | | postsubmit build | [![sig-etcd-postsubmits/post-etcd-build](https://testgrid.k8s.io/q/summary/sig-etcd-postsubmits/post-etcd-build/tests_status?style=svg)](https://testgrid.k8s.io/q/summary/sig-etcd-postsubmits/post-etcd-build) | From 27ab340791e791126b2171dc2abd8879237ec549 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 22 Oct 2025 09:24:40 -0700 Subject: [PATCH 0608/1068] Run update-go-workspace late in the fix Makefile target The file ./scripts/fix.sh is the one that updates the go modules to make them tidy. However, we're running the update to the workspace before running go mod tidy. Therefore, it is required to run make fix twice right now. Therefore, because we can't change the order of prerequisites (as scripts/fix.sh is not a prereq), call make update-go-workspace after the fix.sh script. Signed-off-by: Ivan Valdes --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 01cda1f7f235..2e1972c4a068 100644 --- a/Makefile +++ b/Makefile @@ -102,8 +102,9 @@ verify: verify-bom verify-lint verify-dep verify-shellcheck verify-mod-tidy \ verify-go-workspace .PHONY: fix -fix: fix-bom fix-lint fix-yamllint sync-toolchain-directive update-go-workspace +fix: fix-bom fix-lint fix-yamllint sync-toolchain-directive ./scripts/fix.sh + $(MAKE) update-go-workspace .PHONY: verify-bom verify-bom: From bc7e03082ae5ea94045c171f7a67b5767da4fbb2 Mon Sep 17 00:00:00 2001 From: joshjms Date: Thu, 23 Oct 2025 00:49:02 +0800 Subject: [PATCH 0609/1068] dependency: bump golang.org/x/time from 0.13.0 to 0.14.0 Signed-off-by: joshjms --- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index c2afa1f3e9ed..c8f11037676c 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -17,7 +17,7 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - golang.org/x/time v0.13.0 + golang.org/x/time v0.14.0 google.golang.org/grpc v1.75.1 ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 6423a7d5a0f4..5c9c55460378 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -128,8 +128,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= -golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= -golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 4f58fd3cbe28..00167d416fc4 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -81,7 +81,7 @@ require ( golang.org/x/net v0.46.0 // indirect golang.org/x/sys v0.37.0 // indirect golang.org/x/text v0.30.0 // indirect - golang.org/x/time v0.13.0 // indirect + golang.org/x/time v0.14.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/grpc v1.75.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 60c68b664486..38ecfe32a003 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -172,8 +172,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= -golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= -golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/go.mod b/go.mod index 2f53494a5df3..f5e64c54a64c 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( go.etcd.io/etcd/tests/v3 v3.0.0-00010101000000-000000000000 go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 - golang.org/x/time v0.13.0 + golang.org/x/time v0.14.0 google.golang.org/grpc v1.75.1 google.golang.org/protobuf v1.36.10 ) diff --git a/go.sum b/go.sum index a75675b9ca6f..6964f6b91183 100644 --- a/go.sum +++ b/go.sum @@ -227,8 +227,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= -golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= -golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= diff --git a/server/go.mod b/server/go.mod index b2c85c402b86..ec226964f2ba 100644 --- a/server/go.mod +++ b/server/go.mod @@ -39,7 +39,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/crypto v0.43.0 golang.org/x/net v0.46.0 - golang.org/x/time v0.13.0 + golang.org/x/time v0.14.0 google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 google.golang.org/grpc v1.75.1 google.golang.org/protobuf v1.36.10 diff --git a/server/go.sum b/server/go.sum index 4b36dd424b28..ec69ca8bd826 100644 --- a/server/go.sum +++ b/server/go.sum @@ -156,8 +156,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= -golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= -golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/tests/go.mod b/tests/go.mod index d57f05a1db2f..85762294f32a 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -49,7 +49,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/crypto v0.43.0 golang.org/x/sync v0.17.0 - golang.org/x/time v0.13.0 + golang.org/x/time v0.14.0 google.golang.org/grpc v1.75.1 google.golang.org/protobuf v1.36.10 ) diff --git a/tests/go.sum b/tests/go.sum index b8a46b8ac850..a5974923dba6 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -233,8 +233,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= -golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= -golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= From 2e0b489b886f844a16a047777f940d892a62d29d Mon Sep 17 00:00:00 2001 From: Jonathan Albrecht Date: Mon, 20 Oct 2025 16:56:18 -0400 Subject: [PATCH 0610/1068] tests: Change max retries when removing a member from a cluster In CI, the TestGateway and TestMixVersionsSnapshotByAddingMember are flaky due to the TestMixVersionsSnapshotByAddingMember test sometimes not closing the second etcd process. This happens if the second process has not had enough time to become healthy according to the logic in EtcdServer.mayRemoveMember. Fix this by retrying member removal for twice the etcdserver.HealthInterval in EtcdProcessCluster.CloseProc. Signed-off-by: Jonathan Albrecht --- tests/framework/e2e/cluster.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/framework/e2e/cluster.go b/tests/framework/e2e/cluster.go index ad1da3c3e906..7c4c94ac0ac5 100644 --- a/tests/framework/e2e/cluster.go +++ b/tests/framework/e2e/cluster.go @@ -16,7 +16,6 @@ package e2e import ( "context" - "errors" "flag" "fmt" "maps" @@ -834,19 +833,21 @@ func (epc *EtcdProcessCluster) CloseProc(ctx context.Context, finder func(EtcdPr return fmt.Errorf("failed to find member ID: %w", err) } + sleepDuration := 500 * time.Millisecond + maxRetries := int((2 * etcdserver.HealthInterval) / sleepDuration) memberRemoved := false - for i := 0; i < 10; i++ { + for i := 0; i < maxRetries; i++ { _, err := memberCtl.MemberRemove(ctx, memberID) if err != nil && strings.Contains(err.Error(), "member not found") { memberRemoved = true break } - time.Sleep(500 * time.Millisecond) + time.Sleep(sleepDuration) } if !memberRemoved { - return errors.New("failed to remove member after 10 tries") + return fmt.Errorf("failed to remove member after %d tries", maxRetries) } epc.lg.Info("successfully removed member", zap.String("acurl", proc.Config().ClientURL)) From 9d7895eacda99e5bb00ef0ff7a73de41f48e0f4c Mon Sep 17 00:00:00 2001 From: joshjms Date: Thu, 23 Oct 2025 00:49:42 +0800 Subject: [PATCH 0611/1068] dependency: bump github.com/google/yamlfmt from 0.17.2 to 0.19.0 Signed-off-by: joshjms --- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index d7ba578a9c01..2603e79aad9b 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -10,7 +10,7 @@ require ( github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint/v2 v2.5.0 - github.com/google/yamlfmt v0.17.2 + github.com/google/yamlfmt v0.19.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/ryancurrah/gomodguard v1.4.1 go.etcd.io/gofail v0.2.0 diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 348971f736ea..a611134d0004 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -232,8 +232,8 @@ github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a h1://KbezygeMJZCSHH+H github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/yamlfmt v0.17.2 h1:TkXxhmj7dnpmOnlWGOXog92Gs6MWcTZqnf3kuyp8yFQ= -github.com/google/yamlfmt v0.17.2/go.mod h1:gs0UEklJOYkUJ+OOCG0hg9n+DzucKDPlJElTUasVNK8= +github.com/google/yamlfmt v0.19.0 h1:CX1eZYMIJFjSvQn87hhYNAS6ZYQYSfxnpLezdbZC3qo= +github.com/google/yamlfmt v0.19.0/go.mod h1:gs0UEklJOYkUJ+OOCG0hg9n+DzucKDPlJElTUasVNK8= github.com/gordonklaus/ineffassign v0.2.0 h1:Uths4KnmwxNJNzq87fwQQDDnbNb7De00VOk9Nu0TySs= github.com/gordonklaus/ineffassign v0.2.0/go.mod h1:TIpymnagPSexySzs7F9FnO1XFTy8IT3a59vmZp5Y9Lw= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= From e598cc514dead008142a5210218e6349ccf3efdf Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 22 Oct 2025 11:39:22 -0700 Subject: [PATCH 0612/1068] Replace force word splitting with a Bash array Currently, we need to force word splitting, as we need to pass multiple arguments, not a single one, to the command that will run using the workspace modules. To properly remove this exception, we need to use an array. The problem with Bash arrays is that you can't return them in a function. So, the way to build an array is by reference. Otherwise, we'll end up rebuilding the arrays every time we need to call these functions. Signed-off-by: Ivan Valdes --- scripts/test_lib.sh | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index 3314d8fe2124..0f8592eed965 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -120,9 +120,12 @@ function modules_for_bom() { done } -# returns all workspace modules in relative Go format. -function workspace_relative_modules() { - go work edit -json | jq -r '.Use[].DiskPath + "/..."' +# Receives a reference to an array variable, and returns the workspace relative modules. +function load_workspace_relative_modules() { + local -n _relative_modules=$1 + while IFS= read -r line; do _relative_modules+=("$line"); done < <( + go work edit -json | jq -r '.Use[].DiskPath + "/..."' + ) } # run_for_all_workspace_modules [cmd] @@ -131,8 +134,9 @@ function workspace_relative_modules() { function run_for_all_workspace_modules { local pkg="${PKG:-./...}" if [ -z "${USERMOD:-}" ]; then - # shellcheck disable=SC2046 - run "$@" $(workspace_relative_modules) + local _modules=() + load_workspace_relative_modules _modules + run "$@" "${_modules[@]}" else run_for_module "${USERMOD}" "$@" "${pkg}" || return "$?" fi From 8dc2c0fd4a55f5a459169c6c87f6e0cddddc5c20 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 16 Oct 2025 11:36:52 -0700 Subject: [PATCH 0613/1068] Silence BOM first run expected error The tool github.com/appscodelabs/license-bill-of-materials fails during the first run in a recently cloned/fresh repository. Because it captures the output, and the first run shows the download of dependencies. In 8b0241630167ba48133c7b9a9bfb149e8af15c2e, we intentionally added a new execution before evaluating whether the BOM is up to date. However, this is polluting the logs as it has the expected failure. Redirecting the output to /dev/null alleviates the issue. Signed-off-by: Ivan Valdes --- scripts/test.sh | 2 +- scripts/updatebom.sh | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/test.sh b/scripts/test.sh index b5515b3f0265..0e61cedf3e5e 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -519,7 +519,7 @@ function bom_pass { # Intentionally run the command once first, so it fetches dependencies. The exit code on the first # run in a just cloned repository is always dirty. GOOS=linux run_go_tool github.com/appscodelabs/license-bill-of-materials \ - --override-file ./bill-of-materials.override.json "${modules[@]}" + --override-file ./bill-of-materials.override.json "${modules[@]}" &> /dev/null # BOM file should be generated for linux. Otherwise running this command on other operating systems such as OSX # results in certain dependencies being excluded from the BOM file, such as procfs. diff --git a/scripts/updatebom.sh b/scripts/updatebom.sh index 8338d48dd2e3..32f815d1b09f 100755 --- a/scripts/updatebom.sh +++ b/scripts/updatebom.sh @@ -27,6 +27,9 @@ function bom_fixlet { # shellcheck disable=SC2207 modules=($(modules_for_bom)) + GOOS=linux run_go_tool "github.com/appscodelabs/license-bill-of-materials" \ + --override-file ./bill-of-materials.override.json "${modules[@]}" &> /dev/null + # BOM file should be generated for linux. Otherwise running this command on other operating systems such as OSX # results in certain dependencies being excluded from the BOM file, such as procfs. # For more info, https://github.com/etcd-io/etcd/issues/19665 From cd7919580e10b4f7e22070c1e597215ee29dd247 Mon Sep 17 00:00:00 2001 From: letreturn Date: Tue, 14 Oct 2025 11:30:12 +0800 Subject: [PATCH 0614/1068] chore: fix comment for client/v3/concurrency/stm.go Signed-off-by: letreturn --- client/v3/concurrency/stm.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/v3/concurrency/stm.go b/client/v3/concurrency/stm.go index 49a82181db70..fee17f113616 100644 --- a/client/v3/concurrency/stm.go +++ b/client/v3/concurrency/stm.go @@ -47,7 +47,7 @@ const ( // for write conflicts. SerializableSnapshot Isolation = iota // Serializable reads within the same transaction attempt return data - // from the at the revision of the first read. + // from the revision of the first read. Serializable // RepeatableReads reads within the same transaction attempt always // return the same data. From 400b4be4578d17dcbc8784b9cd9edc9453051cf7 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Mon, 20 Oct 2025 21:10:02 -0700 Subject: [PATCH 0615/1068] Use workspace modules for verify bom Signed-off-by: Ivan Valdes --- scripts/test.sh | 11 +++++------ scripts/test_lib.sh | 14 +++++++++++++- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index 2e1dd0cbdc31..55c3a8e7c7e5 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -412,9 +412,8 @@ function lint_fix_pass { function bom_pass { log_callout "Checking bill of materials..." - # https://github.com/golang/go/commit/7c388cc89c76bc7167287fb488afcaf5a4aa12bf - # shellcheck disable=SC2207 - modules=($(modules_for_bom)) + local _bom_modules=() + load_workspace_relative_modules_for_bom _bom_modules # Internally license-bill-of-materials tends to modify go.sum run cp go.sum go.sum.tmp || return 2 @@ -423,15 +422,15 @@ function bom_pass { # Intentionally run the command once first, so it fetches dependencies. The exit code on the first # run in a just cloned repository is always dirty. GOOS=linux run_go_tool github.com/appscodelabs/license-bill-of-materials \ - --override-file ./bill-of-materials.override.json "${modules[@]}" &> /dev/null + --override-file ./bill-of-materials.override.json "${_bom_modules[@]}" &>/dev/null # BOM file should be generated for linux. Otherwise running this command on other operating systems such as OSX # results in certain dependencies being excluded from the BOM file, such as procfs. # For more info, https://github.com/etcd-io/etcd/issues/19665 output=$(GOOS=linux run_go_tool github.com/appscodelabs/license-bill-of-materials \ --override-file ./bill-of-materials.override.json \ - "${modules[@]}") - code="$?" + "${_bom_modules[@]}") + local code="$?" run cp go.sum.tmp go.sum || return 2 run cp go.mod.tmp go.mod || return 2 diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index 0f8592eed965..496d2f2c3e57 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -118,7 +118,6 @@ function modules_for_bom() { for m in $(modules); do echo -n "${m}/... " done -} # Receives a reference to an array variable, and returns the workspace relative modules. function load_workspace_relative_modules() { @@ -128,6 +127,19 @@ function load_workspace_relative_modules() { ) } +# Receives a reference to an array variable, and returns the workspace relative modules, not +# including the tools, as they are not considered to be added to the bill for materials. +function load_workspace_relative_modules_for_bom() { + local -n relative_modules_for_bom=$1 + local modules=() + load_workspace_relative_modules modules + for module in "${modules[@]}"; do + if [[ ! "${module}" =~ ^./tools ]]; then + relative_modules_for_bom+=("${module}") + fi + done +} + # run_for_all_workspace_modules [cmd] # run given command across all workspace modules # (unless the set is limited using ${PKG} or / ${USERMOD}) From 466457a997beb0df0c780b298e2e2204c3f5fb05 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Mon, 20 Oct 2025 21:23:11 -0700 Subject: [PATCH 0616/1068] Use workspace modules to generate the bom Signed-off-by: Ivan Valdes --- scripts/test_lib.sh | 5 ----- scripts/updatebom.sh | 24 +++++++++--------------- 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index 496d2f2c3e57..abf27b7076ab 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -114,11 +114,6 @@ function modules() { echo "${modules[@]}" } -function modules_for_bom() { - for m in $(modules); do - echo -n "${m}/... " - done - # Receives a reference to an array variable, and returns the workspace relative modules. function load_workspace_relative_modules() { local -n _relative_modules=$1 diff --git a/scripts/updatebom.sh b/scripts/updatebom.sh index 32f815d1b09f..710ffac17134 100755 --- a/scripts/updatebom.sh +++ b/scripts/updatebom.sh @@ -17,25 +17,26 @@ set -euo pipefail source ./scripts/test_lib.sh -function bom_fixlet { +function bom_fix { log_callout "generating bill-of-materials.json" cp go.mod go.mod.tmp cp go.sum go.sum.tmp - local modules - # shellcheck disable=SC2207 - modules=($(modules_for_bom)) + local _bom_modules=() + load_workspace_relative_modules_for_bom _bom_modules - GOOS=linux run_go_tool "github.com/appscodelabs/license-bill-of-materials" \ - --override-file ./bill-of-materials.override.json "${modules[@]}" &> /dev/null + # Intentionally run the command once first, so it fetches dependencies. The exit code on the first + # run in a just cloned repository is always dirty. + GOOS=linux run_go_tool github.com/appscodelabs/license-bill-of-materials \ + --override-file ./bill-of-materials.override.json "${_bom_modules[@]}" &>/dev/null # BOM file should be generated for linux. Otherwise running this command on other operating systems such as OSX - # results in certain dependencies being excluded from the BOM file, such as procfs. + # results in certain dependencies being excluded from the BOM file, such as procfs. # For more info, https://github.com/etcd-io/etcd/issues/19665 if GOOS=linux run_go_tool "github.com/appscodelabs/license-bill-of-materials" \ --override-file ./bill-of-materials.override.json \ - "${modules[@]}" > ./bill-of-materials.json.tmp; then + "${_bom_modules[@]}" > ./bill-of-materials.json.tmp; then cp ./bill-of-materials.json.tmp ./bill-of-materials.json log_success "bom refreshed" else @@ -48,13 +49,6 @@ function bom_fixlet { mv go.sum.tmp go.sum } -function bom_fix { - # We regenerate bom from the tests directory, as it's a module - # that depends on all other modules, so we can generate comprehensive content. - # TODO: Migrate to root module, when root module depends on everything (including server & tests). - run_for_module "." bom_fixlet -} - # only build when called directly, not sourced if [[ "$0" =~ updatebom.sh$ ]]; then bom_fix From 52f056534b02a6d24a9eb86dd4a7891423c3034d Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Mon, 20 Oct 2025 21:23:23 -0700 Subject: [PATCH 0617/1068] Fix BOM by adding the cache module Signed-off-by: Ivan Valdes --- bill-of-materials.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/bill-of-materials.json b/bill-of-materials.json index 2c9140701329..cd2dfc3c1672 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -476,6 +476,15 @@ } ] }, + { + "project": "go.etcd.io/etcd/cache/v3", + "licenses": [ + { + "type": "Apache License 2.0", + "confidence": 0.9988925802879292 + } + ] + }, { "project": "go.etcd.io/etcd/client/pkg/v3", "licenses": [ From 7396892036edc11fd7e5cf02dcbddd3d0b5d126a Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 23 Oct 2025 15:30:02 -0700 Subject: [PATCH 0618/1068] Update gomodguard to use workspace modules Optimize running the gomodguard binary, by only installing it once. Signed-off-by: Ivan Valdes --- scripts/test.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index 815aff9e1f21..d7b0fb4a41f7 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -448,16 +448,20 @@ function bom_pass { rm bom-now.json.tmp } -function gomodguard_for_module { +function module_gomodguard { if [ ! -f .gomodguard.yaml ]; then # Nothing to validate, return. return fi - run_go_tool github.com/ryancurrah/gomodguard/cmd/gomodguard + + local tool_bin="$1" + run "${tool_bin}" } function gomodguard_pass { - run_for_modules gomodguard_for_module + local tool_bin + tool_bin=$(tool_get_bin github.com/ryancurrah/gomodguard/cmd/gomodguard) + run_for_workspace_modules module_gomodguard "${tool_bin}" } ######## VARIOUS CHECKERS ###################################################### From ed2b33882f4fcd2f786b1530d9ba9c1d1ede529b Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 23 Oct 2025 09:31:47 +0200 Subject: [PATCH 0619/1068] Replace local command line flag with environment variables Signed-off-by: Marek Siarkowicz --- tests/antithesis/Makefile | 6 ++++-- .../test-template/robustness/common/path.go | 20 ------------------- .../test-template/robustness/finally/main.go | 8 -------- .../test-template/robustness/traffic/main.go | 8 -------- 4 files changed, 4 insertions(+), 38 deletions(-) diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index 20e216f44fd6..b8a04546288d 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -68,11 +68,13 @@ antithesis-run-container-validation: validate-node-count .PHONY: antithesis-run-local-traffic antithesis-run-local-traffic: - go run -ldflags "-X main.NodeCount=$(CFG_NODE_COUNT)" --race ./test-template/robustness/traffic/main.go --local + export ETCD_ROBUSTNESS_DATA_PATHS=/tmp/etcddata0,/tmp/etcddata1,/tmp/etcddata2 && export ETCD_ROBUSTNESS_REPORT_PATH=report && export ETCD_ROBUSTNESS_ENDPOINTS=127.0.0.1:12379,127.0.0.1:22379,127.0.0.1:32379 && \ + go run -ldflags "-X main.NodeCount=$(CFG_NODE_COUNT)" --race ./test-template/robustness/traffic/main.go .PHONY: antithesis-run-local-validation antithesis-run-local-validation: - go run -ldflags "-X main.NodeCount=$(CFG_NODE_COUNT)" --race ./test-template/robustness/finally/main.go --local + export ETCD_ROBUSTNESS_DATA_PATHS=/tmp/etcddata0,/tmp/etcddata1,/tmp/etcddata2 && export ETCD_ROBUSTNESS_REPORT_PATH=report && export ETCD_ROBUSTNESS_ENDPOINTS=127.0.0.1:12379,127.0.0.1:22379,127.0.0.1:32379 && \ + go run -ldflags "-X main.NodeCount=$(CFG_NODE_COUNT)" --race ./test-template/robustness/finally/main.go .PHONY: antithesis-clean antithesis-clean: validate-node-count diff --git a/tests/antithesis/test-template/robustness/common/path.go b/tests/antithesis/test-template/robustness/common/path.go index d7bff6dfc301..b54723cdd551 100644 --- a/tests/antithesis/test-template/robustness/common/path.go +++ b/tests/antithesis/test-template/robustness/common/path.go @@ -30,14 +30,6 @@ const ( defaultetcdDataPath = "/var/etcddata%d" defaultReportPath = "/var/report/" - localetcd0 = "127.0.0.1:12379" - localetcd1 = "127.0.0.1:22379" - localetcd2 = "127.0.0.1:32379" - // used by default when running the client locally - defaultetcdLocalDataPath = "/tmp/etcddata%d" - localetcdDataPathEnv = "ETCD_ROBUSTNESS_DATA_PATH_PREFIX" - localReportPath = "report" - endpointsEnv = "ETCD_ROBUSTNESS_ENDPOINTS" dataPathsEnv = "ETCD_ROBUSTNESS_DATA_PATHS" reportPathEnv = "ETCD_ROBUSTNESS_REPORT_PATH" @@ -86,18 +78,6 @@ func defaultPaths(cfg *Config) (hosts []string, reportPath string, dataPaths map return hosts, reportPath, dataPaths } -func LocalPaths(cfg *Config) (hosts []string, reportPath string, dataPaths map[string]string) { - hosts = []string{localetcd0, localetcd1, localetcd2}[:cfg.NodeCount] - reportPath = localReportPath - etcdDataPath := defaultetcdLocalDataPath - envPath := os.Getenv(localetcdDataPathEnv) - if envPath != "" { - etcdDataPath = envPath + "%d" - } - dataPaths = etcdDataPaths(etcdDataPath, cfg.NodeCount) - return hosts, reportPath, dataPaths -} - func etcdDataPaths(dir string, amount int) map[string]string { dataPaths := make(map[string]string) for i := range amount { diff --git a/tests/antithesis/test-template/robustness/finally/main.go b/tests/antithesis/test-template/robustness/finally/main.go index aeffc9735951..88360aa5f75b 100644 --- a/tests/antithesis/test-template/robustness/finally/main.go +++ b/tests/antithesis/test-template/robustness/finally/main.go @@ -17,7 +17,6 @@ package main import ( - "flag" "maps" "os" "path/filepath" @@ -39,15 +38,8 @@ const ( var NodeCount = "3" func main() { - local := flag.Bool("local", false, "run finally locally and connect to etcd instances via localhost") - flag.Parse() - cfg := common.MakeConfig(NodeCount) - _, reportPath, dirs := common.GetPaths(cfg) - if *local { - _, reportPath, dirs = common.LocalPaths(cfg) - } lg, err := zap.NewProduction() if err != nil { diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index b4ac6d6a3764..26d99ecb32a1 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -18,7 +18,6 @@ package main import ( "context" - "flag" "math/rand/v2" "os" "slices" @@ -64,15 +63,8 @@ var ( ) func main() { - local := flag.Bool("local", false, "run tests locally and connect to etcd instances via localhost") - flag.Parse() - cfg := common.MakeConfig(NodeCount) - hosts, reportPath, etcdetcdDataPaths := common.GetPaths(cfg) - if *local { - hosts, reportPath, etcdetcdDataPaths = common.LocalPaths(cfg) - } ctx := context.Background() baseTime := time.Now() From 7ad5ba186489dd97eb200c92fbbc827e667288eb Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 23 Oct 2025 16:12:29 -0700 Subject: [PATCH 0620/1068] Move go mod tidy to a test.sh pass Use the new workspace helper functions. By moving it to a test.sh pass, we can chain it in the fix Makefile target prerequisites, and it can be called before update-go-workspace. Signed-off-by: Ivan Valdes --- Makefile | 8 ++++++-- scripts/fix.sh | 9 --------- scripts/test.sh | 9 +++++++++ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 2e1972c4a068..eea266367e93 100644 --- a/Makefile +++ b/Makefile @@ -102,9 +102,9 @@ verify: verify-bom verify-lint verify-dep verify-shellcheck verify-mod-tidy \ verify-go-workspace .PHONY: fix -fix: fix-bom fix-lint fix-yamllint sync-toolchain-directive +fix: fix-mod-tidy fix-bom fix-lint fix-yamllint sync-toolchain-directive \ + update-go-workspace ./scripts/fix.sh - $(MAKE) update-go-workspace .PHONY: verify-bom verify-bom: @@ -134,6 +134,10 @@ verify-shellcheck: verify-mod-tidy: PASSES="mod_tidy" ./scripts/test.sh +.PHONY: fix-mod-tidy +fix-mod-tidy: + PASSES="mod_tidy_fix" ./scripts/test.sh + .PHONY: verify-shellws verify-shellws: PASSES="shellws" ./scripts/test.sh diff --git a/scripts/fix.sh b/scripts/fix.sh index 17c7bf234d46..bb021f77cd8d 100755 --- a/scripts/fix.sh +++ b/scripts/fix.sh @@ -15,9 +15,6 @@ set -euo pipefail -# Top level problems with modules can lead to test_lib being not functional -go mod tidy - source ./scripts/test_lib.sh source ./scripts/updatebom.sh @@ -27,11 +24,6 @@ source ./scripts/updatebom.sh # GO_CMD="gotip" GO_CMD="go" -function mod_tidy_fix { - run rm ./go.sum - run ${GO_CMD} mod tidy || return 2 -} - function bash_ws_fix { TAB=$'\t' @@ -44,7 +36,6 @@ function bash_ws_fix { log_callout -e "\\nFixing etcd code for you...\n" -run_for_modules mod_tidy_fix || exit 2 run_for_modules run ${GO_CMD} fmt || exit 2 bash_ws_fix || exit 2 diff --git a/scripts/test.sh b/scripts/test.sh index 815aff9e1f21..2c8dcb06be8d 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -594,6 +594,15 @@ function mod_tidy_pass { run_for_workspace_modules run go mod tidy -diff } +function module_mod_tidy_fix { + run rm ./go.sum + run go mod tidy || return 2 +} + +function mod_tidy_fix_pass { + run_for_workspace_modules module_mod_tidy_fix +} + function proto_annotations_pass { "${ETCD_ROOT_DIR}/scripts/verify_proto_annotations.sh" } From 4e39afbd95943dd6f3298f487f323efad0e5f8f1 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Mon, 20 Oct 2025 16:10:05 -0700 Subject: [PATCH 0621/1068] Update mod tidy check to use the workspace modules Use a new function for commands that need to change directories to the Go workspace module sub directory. For example, go mod doesn't receive arguments, it needs to run from the directory that has the go.mod file. Signed-off-by: Ivan Valdes --- scripts/test.sh | 6 +----- scripts/test_lib.sh | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index 2e1dd0cbdc31..7cbfa4d520a1 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -591,12 +591,8 @@ EOF VERSION="${VERSION}" run "${ETCD_ROOT_DIR}/scripts/test_images.sh" } -function mod_tidy_for_module { - run go mod tidy -diff -} - function mod_tidy_pass { - run_for_modules generic_checker mod_tidy_for_module + run_for_workspace_modules run go mod tidy -diff } function proto_annotations_pass { diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index 0f8592eed965..36ede7df8f98 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -142,6 +142,35 @@ function run_for_all_workspace_modules { fi } +# run_for_workspace_modules [cmd] +# run given command in each individual workspace module +# (unless the set is limited using ${PKG} or / ${USERMOD}) +function run_for_workspace_modules { + local keep_going_module=${KEEP_GOING_MODULE:-false} + local fail_mod=false + local pkg="${PKG:-./...}" + + if [ -z "${USERMOD:-}" ]; then + local _modules=() + load_workspace_relative_modules _modules + for module in "${_modules[@]}"; do + if ! run_for_module "${module%...}" "$@"; then + if [ "$keep_going_module" = false ]; then + log_error "There was a Failure in module ${module}, aborting..." + return 1 + fi + log_error "There was a Failure in module ${module}, keep going..." + fail_mod=true + fi + done + if [ "$fail_mod" = true ]; then + return 1 + fi + else + run_for_module "${USERMOD}" "$@" "${pkg}" || return "$?" + fi +} + # run_for_modules [cmd] # run given command across all modules and packages # (unless the set is limited using ${PKG} or / ${USERMOD}) From 1ce1c624d847d20e086af14fd14adc03de74db0f Mon Sep 17 00:00:00 2001 From: Nont Date: Wed, 22 Oct 2025 22:38:19 -0500 Subject: [PATCH 0622/1068] Move to using paths from environment variables Signed-off-by: Nont --- .../test-template/entrypoint/main.go | 3 +- .../test-template/robustness/common/path.go | 34 +++++++++++++++++++ .../test-template/robustness/finally/main.go | 3 +- .../test-template/robustness/traffic/main.go | 3 +- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/tests/antithesis/test-template/entrypoint/main.go b/tests/antithesis/test-template/entrypoint/main.go index 0457dc242516..0b85194868a2 100644 --- a/tests/antithesis/test-template/entrypoint/main.go +++ b/tests/antithesis/test-template/entrypoint/main.go @@ -34,8 +34,7 @@ var NodeCount = "3" // CheckHealth checks health of all etcd nodes func CheckHealth() bool { - cfg := common.MakeConfig(NodeCount) - hosts, _, _ := common.GetPaths(cfg) + hosts, _, _ := common.GetPathsFromEnv() // iterate over each host and check health for _, host := range hosts { diff --git a/tests/antithesis/test-template/robustness/common/path.go b/tests/antithesis/test-template/robustness/common/path.go index b54723cdd551..7acc37a728b7 100644 --- a/tests/antithesis/test-template/robustness/common/path.go +++ b/tests/antithesis/test-template/robustness/common/path.go @@ -71,6 +71,40 @@ func GetPaths(cfg *Config) (hosts []string, reportPath string, dataPaths map[str return hosts, reportPath, dataPaths } +func GetPathsFromEnv() (hosts []string, reportPath string, dataPaths map[string]string) { + envDataPathsStr := os.Getenv(dataPathsEnv) + envReportPath := os.Getenv(reportPathEnv) + envEndpointsStr := os.Getenv(endpointsEnv) + + if envEndpointsStr == "" { + panic(fmt.Sprintf("No endpoints specified in %s", endpointsEnv)) + } + hosts = strings.Split(envEndpointsStr, ",") + for i, host := range hosts { + hosts[i] = strings.TrimSpace(host) + } + + if envReportPath == "" { + panic(fmt.Sprintf("No report path specified in %s", reportPathEnv)) + } + reportPath = envReportPath + + if envDataPathsStr == "" { + panic(fmt.Sprintf("No data paths specified in %s", dataPathsEnv)) + } + + envDataPaths := strings.Split(envDataPathsStr, ",") + if len(envDataPaths) != len(hosts) { + panic(fmt.Sprintf("Mismatched number of endpoints and data paths: %d endpoints, %d data paths", len(hosts), len(envDataPaths))) + } + + dataPaths = make(map[string]string) + for i, endpoint := range hosts { + dataPaths[endpoint] = strings.TrimSpace(envDataPaths[i]) + } + return hosts, reportPath, dataPaths +} + func defaultPaths(cfg *Config) (hosts []string, reportPath string, dataPaths map[string]string) { hosts = []string{defaultetcd0, defaultetcd1, defaultetcd2}[:cfg.NodeCount] reportPath = defaultReportPath diff --git a/tests/antithesis/test-template/robustness/finally/main.go b/tests/antithesis/test-template/robustness/finally/main.go index 88360aa5f75b..2a4549dce6c6 100644 --- a/tests/antithesis/test-template/robustness/finally/main.go +++ b/tests/antithesis/test-template/robustness/finally/main.go @@ -38,8 +38,7 @@ const ( var NodeCount = "3" func main() { - cfg := common.MakeConfig(NodeCount) - _, reportPath, dirs := common.GetPaths(cfg) + _, reportPath, dirs := common.GetPathsFromEnv() lg, err := zap.NewProduction() if err != nil { diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 26d99ecb32a1..c0c15d566370 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -63,8 +63,7 @@ var ( ) func main() { - cfg := common.MakeConfig(NodeCount) - hosts, reportPath, etcdetcdDataPaths := common.GetPaths(cfg) + hosts, reportPath, etcdetcdDataPaths := common.GetPathsFromEnv() ctx := context.Background() baseTime := time.Now() From 265c960aca88b9da85a4fd8ba1805e77d6477122 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 24 Oct 2025 10:45:42 +0100 Subject: [PATCH 0623/1068] Fix the golangci-lint installation script to get the correct GOPATH Signed-off-by: Benjamin Wang --- Makefile | 2 +- scripts/verify_golangci-lint_version.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index eea266367e93..94f8819a9626 100644 --- a/Makefile +++ b/Makefile @@ -123,7 +123,7 @@ verify-lint: install-golangci-lint PASSES="lint" ./scripts/test.sh .PHONY: fix-lint -fix-lint: +fix-lint: install-golangci-lint PASSES="lint_fix" ./scripts/test.sh .PHONY: verify-shellcheck diff --git a/scripts/verify_golangci-lint_version.sh b/scripts/verify_golangci-lint_version.sh index 2c5b61055821..1c4956c05eb3 100755 --- a/scripts/verify_golangci-lint_version.sh +++ b/scripts/verify_golangci-lint_version.sh @@ -15,7 +15,7 @@ function install_golangci_lint() { echo "Installing golangci-lint ${GOLANGCI_LINT_VERSION}" - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b "${GOPATH}/bin" "${GOLANGCI_LINT_VERSION}" + curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b "$(go env GOPATH)/bin" "${GOLANGCI_LINT_VERSION}" } GOLANGCI_LINT_VERSION=$(cd tools/mod && go list -m -f '{{.Version}}' github.com/golangci/golangci-lint/v2) From 66b42add5de97c1e5962c158e6c4c763473f6712 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 23 Oct 2025 15:11:24 -0700 Subject: [PATCH 0624/1068] Update verify-dep to use workspace helpers There's no need to add an exception for tools/mod anymore, as this is considered part of the workspace. Signed-off-by: Ivan Valdes --- scripts/test.sh | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index 815aff9e1f21..0932da04e062 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -462,44 +462,43 @@ function gomodguard_pass { ######## VARIOUS CHECKERS ###################################################### -function dump_deps_of_module() { +function dump_module_deps() { + local json_mod + json_mod=$(run go mod edit -json) + local module - if ! module=$(run go mod edit -json | jq -r .Module.Path); then + if ! module=$(echo "${json_mod}" | jq -r .Module.Path); then return 255 fi + local require - require=$(run go mod edit -json | jq -r '.Require') + require=$(echo "${json_mod}" | jq -r '.Require') if [ "$require" == "null" ]; then return 0 fi + echo "$require" | jq -r '.[] | .Path+","+.Version+","+if .Indirect then " (indirect)" else "" end+",'"${module}"'"' } # Checks whether dependencies are consistent across modules function dep_pass { local all_dependencies - local tools_mod_dependencies - all_dependencies=$(run_for_modules dump_deps_of_module | sort) || return 2 - # tools/mod is a special case. It is a module that is not included in the - # module list from test_lib.sh. However, we need to ensure that the - # dependency versions match the rest of the project. Therefore, explicitly - # execute the command for tools/mod, and append its dependencies to the list. - tools_mod_dependencies=$(run_for_module "tools/mod" dump_deps_of_module "./...") || return 2 - all_dependencies="${all_dependencies}"$'\n'"${tools_mod_dependencies}" + all_dependencies=$(run_for_workspace_modules dump_module_deps | sort) || return 2 local duplicates duplicates=$(echo "${all_dependencies}" | cut -d ',' -f 1,2 | sort | uniq | cut -d ',' -f 1 | sort | uniq -d) || return 2 - for dup in ${duplicates}; do - log_error "FAIL: inconsistent versions for dependency: ${dup}" - echo "${all_dependencies}" | grep "${dup}," | sed 's|\([^,]*\),\([^,]*\),\([^,]*\),\([^,]*\)| - \1@\2\3 from: \4|g' - done if [[ -n "${duplicates}" ]]; then + for dup in ${duplicates}; do + log_error "FAIL: inconsistent versions for dependency: ${dup}" + echo "${all_dependencies}" | grep "${dup}," | sed 's|\([^,]*\),\([^,]*\),\([^,]*\),\([^,]*\)| - \1@\2\3 from: \4|g' + done + log_error "FAIL: inconsistent dependencies" return 2 - else - log_success "SUCCESS: dependencies are consistent across modules" fi + + log_success "SUCCESS: dependencies are consistent across modules" } function release_pass { From 3ce0830a89a62795af66ce61026b0f3ad74ede6b Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 24 Oct 2025 10:57:46 +0200 Subject: [PATCH 0625/1068] Code review Signed-off-by: Marek Siarkowicz --- .../test-template/entrypoint/main.go | 2 +- .../test-template/robustness/common/path.go | 70 +++---------------- .../test-template/robustness/finally/main.go | 2 +- .../test-template/robustness/traffic/main.go | 2 +- 4 files changed, 12 insertions(+), 64 deletions(-) diff --git a/tests/antithesis/test-template/entrypoint/main.go b/tests/antithesis/test-template/entrypoint/main.go index 0b85194868a2..94977fbb2849 100644 --- a/tests/antithesis/test-template/entrypoint/main.go +++ b/tests/antithesis/test-template/entrypoint/main.go @@ -34,7 +34,7 @@ var NodeCount = "3" // CheckHealth checks health of all etcd nodes func CheckHealth() bool { - hosts, _, _ := common.GetPathsFromEnv() + hosts, _, _ := common.GetPaths() // iterate over each host and check health for _, host := range hosts { diff --git a/tests/antithesis/test-template/robustness/common/path.go b/tests/antithesis/test-template/robustness/common/path.go index 7acc37a728b7..ccf81b44097d 100644 --- a/tests/antithesis/test-template/robustness/common/path.go +++ b/tests/antithesis/test-template/robustness/common/path.go @@ -23,40 +23,34 @@ import ( ) const ( - defaultetcd0 = "etcd0:2379" - defaultetcd1 = "etcd1:2379" - defaultetcd2 = "etcd2:2379" - // mounted by the client in docker compose - defaultetcdDataPath = "/var/etcddata%d" - defaultReportPath = "/var/report/" - endpointsEnv = "ETCD_ROBUSTNESS_ENDPOINTS" dataPathsEnv = "ETCD_ROBUSTNESS_DATA_PATHS" reportPathEnv = "ETCD_ROBUSTNESS_REPORT_PATH" ) -func GetPaths(cfg *Config) (hosts []string, reportPath string, dataPaths map[string]string) { +func GetPaths() (hosts []string, reportPath string, dataPaths map[string]string) { // Check for environment variable overrides first envDataPathsStr := os.Getenv(dataPathsEnv) envReportPath := os.Getenv(reportPathEnv) envEndpointsStr := os.Getenv(endpointsEnv) - defaultHosts, defaultReportPath, defaultDataPaths := defaultPaths(cfg) - - hosts = defaultHosts + // Temporary disable to make PR simpler to review + //revive:disable:early-return if envEndpointsStr != "" { hosts = strings.Split(envEndpointsStr, ",") for i, host := range hosts { hosts[i] = strings.TrimSpace(host) } + } else { + panic(fmt.Sprintf("No endpoints specified in %s", endpointsEnv)) } - reportPath = defaultReportPath if envReportPath != "" { reportPath = envReportPath + } else { + panic(fmt.Sprintf("No report path specified in %s", reportPathEnv)) } - dataPaths = defaultDataPaths if envDataPathsStr != "" { envDataPaths := strings.Split(envDataPathsStr, ",") if len(envDataPaths) != len(hosts) { @@ -67,55 +61,9 @@ func GetPaths(cfg *Config) (hosts []string, reportPath string, dataPaths map[str for i, endpoint := range hosts { dataPaths[endpoint] = strings.TrimSpace(envDataPaths[i]) } - } - return hosts, reportPath, dataPaths -} - -func GetPathsFromEnv() (hosts []string, reportPath string, dataPaths map[string]string) { - envDataPathsStr := os.Getenv(dataPathsEnv) - envReportPath := os.Getenv(reportPathEnv) - envEndpointsStr := os.Getenv(endpointsEnv) - - if envEndpointsStr == "" { - panic(fmt.Sprintf("No endpoints specified in %s", endpointsEnv)) - } - hosts = strings.Split(envEndpointsStr, ",") - for i, host := range hosts { - hosts[i] = strings.TrimSpace(host) - } - - if envReportPath == "" { - panic(fmt.Sprintf("No report path specified in %s", reportPathEnv)) - } - reportPath = envReportPath - - if envDataPathsStr == "" { + } else { panic(fmt.Sprintf("No data paths specified in %s", dataPathsEnv)) } - - envDataPaths := strings.Split(envDataPathsStr, ",") - if len(envDataPaths) != len(hosts) { - panic(fmt.Sprintf("Mismatched number of endpoints and data paths: %d endpoints, %d data paths", len(hosts), len(envDataPaths))) - } - - dataPaths = make(map[string]string) - for i, endpoint := range hosts { - dataPaths[endpoint] = strings.TrimSpace(envDataPaths[i]) - } - return hosts, reportPath, dataPaths -} - -func defaultPaths(cfg *Config) (hosts []string, reportPath string, dataPaths map[string]string) { - hosts = []string{defaultetcd0, defaultetcd1, defaultetcd2}[:cfg.NodeCount] - reportPath = defaultReportPath - dataPaths = etcdDataPaths(defaultetcdDataPath, cfg.NodeCount) + //revive:enable:early-return return hosts, reportPath, dataPaths } - -func etcdDataPaths(dir string, amount int) map[string]string { - dataPaths := make(map[string]string) - for i := range amount { - dataPaths[fmt.Sprintf("etcd%d", i)] = fmt.Sprintf(dir, i) - } - return dataPaths -} diff --git a/tests/antithesis/test-template/robustness/finally/main.go b/tests/antithesis/test-template/robustness/finally/main.go index 2a4549dce6c6..bc744855eae2 100644 --- a/tests/antithesis/test-template/robustness/finally/main.go +++ b/tests/antithesis/test-template/robustness/finally/main.go @@ -38,7 +38,7 @@ const ( var NodeCount = "3" func main() { - _, reportPath, dirs := common.GetPathsFromEnv() + _, reportPath, dirs := common.GetPaths() lg, err := zap.NewProduction() if err != nil { diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index c0c15d566370..96c584fc8baf 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -63,7 +63,7 @@ var ( ) func main() { - hosts, reportPath, etcdetcdDataPaths := common.GetPathsFromEnv() + hosts, reportPath, etcdetcdDataPaths := common.GetPaths() ctx := context.Background() baseTime := time.Now() From 33838f5275e46e0e8b87c731d26137a578674eeb Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 23 Oct 2025 15:51:58 -0700 Subject: [PATCH 0626/1068] Update fix-yamllint to use a new stand-alone script Implement a new stand-alone script to move the target body out of the Makefile. Signed-off-by: Ivan Valdes --- Makefile | 7 +------ scripts/fix/yamllint.sh | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 6 deletions(-) create mode 100755 scripts/fix/yamllint.sh diff --git a/Makefile b/Makefile index 2e1972c4a068..53aac4495438 100644 --- a/Makefile +++ b/Makefile @@ -164,14 +164,9 @@ endif verify-markdown-marker: PASSES="markdown_marker" ./scripts/test.sh -YAMLFMT_VERSION = $(shell cd tools/mod && go list -m -f '{{.Version}}' github.com/google/yamlfmt) - .PHONY: fix-yamllint fix-yamllint: -ifeq (, $(shell command -v yamlfmt)) - $(shell go install github.com/google/yamlfmt/cmd/yamlfmt@$(YAMLFMT_VERSION)) -endif - yamlfmt -conf tools/.yamlfmt . + ./scripts/fix/yamllint.sh .PHONY: run-govulncheck run-govulncheck: diff --git a/scripts/fix/yamllint.sh b/scripts/fix/yamllint.sh new file mode 100755 index 000000000000..e603d356b715 --- /dev/null +++ b/scripts/fix/yamllint.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Fixes linter issues in YAML files. + +set -euo pipefail + +ETCD_ROOT_DIR=${ETCD_ROOT_DIR:-$(git rev-parse --show-toplevel)} +source "${ETCD_ROOT_DIR}/scripts/test_lib.sh" + +function main { + run_go_tool github.com/google/yamlfmt/cmd/yamlfmt \ + -conf "${ETCD_ROOT_DIR}/tools/.yamlfmt" . +} + +# only run when called directly, not sourced +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + main +fi From 281cc52f630ea420af02e587e45600141054dc70 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Sat, 25 Oct 2025 23:12:55 -0700 Subject: [PATCH 0627/1068] Don't manually run go fmt We're already calling golangci-lint --fix. We require the gofmt formatter, and it supports autofix. Therefore, running go fmt manually after golangci-lint --fix runs doesn't have any effect. Signed-off-by: Ivan Valdes --- scripts/fix.sh | 7 ------- 1 file changed, 7 deletions(-) diff --git a/scripts/fix.sh b/scripts/fix.sh index bb021f77cd8d..4b11fbba9dd5 100755 --- a/scripts/fix.sh +++ b/scripts/fix.sh @@ -18,12 +18,6 @@ set -euo pipefail source ./scripts/test_lib.sh source ./scripts/updatebom.sh -# To fix according to newer version of go: -# go get golang.org/dl/gotip -# gotip download -# GO_CMD="gotip" -GO_CMD="go" - function bash_ws_fix { TAB=$'\t' @@ -36,7 +30,6 @@ function bash_ws_fix { log_callout -e "\\nFixing etcd code for you...\n" -run_for_modules run ${GO_CMD} fmt || exit 2 bash_ws_fix || exit 2 log_success -e "\\nSUCCESS: etcd code is fixed :)" From b000cc78928b172f9bd555929ec805785a3972b1 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Mon, 27 Oct 2025 11:39:41 +0800 Subject: [PATCH 0628/1068] fix assert message in clientv3 leasing_test Signed-off-by: shenmu.wy --- tests/integration/clientv3/lease/leasing_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/integration/clientv3/lease/leasing_test.go b/tests/integration/clientv3/lease/leasing_test.go index f5556aaefbba..68060e8d00ef 100644 --- a/tests/integration/clientv3/lease/leasing_test.go +++ b/tests/integration/clientv3/lease/leasing_test.go @@ -65,7 +65,7 @@ func TestLeasingPutGet(t *testing.T) { t.Errorf("expected key=%q, got key=%q", "abc", resp.Kvs[0].Key) } if string(resp.Kvs[0].Value) != "def" { - t.Errorf("expected value=%q, got value=%q", "bar", resp.Kvs[0].Value) + t.Errorf("expected value=%q, got value=%q", "def", resp.Kvs[0].Value) } _, err = lKV3.Get(t.Context(), "abc") @@ -80,7 +80,7 @@ func TestLeasingPutGet(t *testing.T) { } if string(resp.Kvs[0].Value) != "ghi" { - t.Errorf("expected value=%q, got value=%q", "bar", resp.Kvs[0].Value) + t.Errorf("expected value=%q, got value=%q", "ghi", resp.Kvs[0].Value) } } From f08fccd2e0ae3951f8306030bc37883bb8cbbe3c Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Sun, 26 Oct 2025 23:13:31 -0700 Subject: [PATCH 0629/1068] Move fix-bashws to its own script Follow the approach of a script per Makefile target. Rename it to shell_ws for consistency with the verify target. Signed-off-by: Ivan Valdes --- Makefile | 6 +++++- scripts/fix.sh | 10 ---------- scripts/fix/shell_ws.sh | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 11 deletions(-) create mode 100755 scripts/fix/shell_ws.sh diff --git a/Makefile b/Makefile index 8d27cd960aa3..61d62afc7b40 100644 --- a/Makefile +++ b/Makefile @@ -103,7 +103,7 @@ verify: verify-bom verify-lint verify-dep verify-shellcheck verify-mod-tidy \ .PHONY: fix fix: fix-mod-tidy fix-bom fix-lint fix-yamllint sync-toolchain-directive \ - update-go-workspace + update-go-workspace fix-shell-ws ./scripts/fix.sh .PHONY: verify-bom @@ -142,6 +142,10 @@ fix-mod-tidy: verify-shellws: PASSES="shellws" ./scripts/test.sh +.PHONY: fix-shell-ws +fix-shell-ws: + ./scripts/fix/shell_ws.sh + .PHONY: verify-proto-annotations verify-proto-annotations: PASSES="proto_annotations" ./scripts/test.sh diff --git a/scripts/fix.sh b/scripts/fix.sh index 4b11fbba9dd5..08745301e5bf 100755 --- a/scripts/fix.sh +++ b/scripts/fix.sh @@ -18,18 +18,8 @@ set -euo pipefail source ./scripts/test_lib.sh source ./scripts/updatebom.sh -function bash_ws_fix { - TAB=$'\t' - - log_callout "Fixing whitespaces in the bash scripts" - # Makes sure all bash scripts do use ' ' (double space) for indention. - log_cmd "find ./ -name '*.sh' -print0 | xargs -0 sed -i.bak 's|${TAB}| |g'" - find ./ -name '*.sh' -print0 | xargs -0 sed -i.bak "s|${TAB}| |g" - find ./ -name '*.sh.bak' -print0 | xargs -0 rm -} log_callout -e "\\nFixing etcd code for you...\n" -bash_ws_fix || exit 2 log_success -e "\\nSUCCESS: etcd code is fixed :)" diff --git a/scripts/fix/shell_ws.sh b/scripts/fix/shell_ws.sh new file mode 100755 index 000000000000..67f864c7da60 --- /dev/null +++ b/scripts/fix/shell_ws.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# Copyright 2025 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Fixes whitespaces in bash scripts. +set -euo pipefail + +ETCD_ROOT_DIR=${ETCD_ROOT_DIR:-$(git rev-parse --show-toplevel)} +source "${ETCD_ROOT_DIR}/scripts/test_lib.sh" + +function main { + local TAB=$'\t' + + log_callout "Fixing whitespaces in bash scripts" + # Makes sure all bash scripts do use ' ' (double space) for indention. + log_cmd "find "${ETCD_ROOT_DIR}" -name '*.sh' -exec sed -i.bak 's|${TAB}| |g' {} \;" + find "${ETCD_ROOT_DIR}" -name '*.sh' -exec sed -i.bak "s|${TAB}| |g" {} \; + find "${ETCD_ROOT_DIR}" -name '*.sh.bak' -delete +} + +# only run when called directly, not sourced +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + main +fi From 7f997f089533ff77bfc385a65e36bd1b82ab3b8a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Oct 2025 17:43:56 +0000 Subject: [PATCH 0630/1068] build(deps): bump github/codeql-action from 4.30.9 to 4.31.0 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.30.9 to 4.31.0. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/16140ae1a102900babc80a33c44059580f687047...4e94bd11f71e507f7f87df81788dff88d1dacbfb) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.31.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 18243240f95f..7ee1a3b6361e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@16140ae1a102900babc80a33c44059580f687047 # v4.30.9 + uses: github/codeql-action/init@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@16140ae1a102900babc80a33c44059580f687047 # v4.30.9 + uses: github/codeql-action/autobuild@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@16140ae1a102900babc80a33c44059580f687047 # v4.30.9 + uses: github/codeql-action/analyze@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 9c2291e209e4..79d75614e04c 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@16140ae1a102900babc80a33c44059580f687047 # v4.30.9 + uses: github/codeql-action/upload-sarif@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0 with: sarif_file: results.sarif From 290b648020ca22cc42fe326a18ed213b9596f774 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Oct 2025 17:32:08 +0000 Subject: [PATCH 0631/1068] build(deps): bump actions/upload-artifact from 4.6.2 to 5.0.0 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.2 to 5.0.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/ea165f8d65b6e75b540449e92b4886f43607fa02...330a01c490aca151604b8cf639adc76d48f6c5d4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 9c2291e209e4..70dac37598b4 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -42,7 +42,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: SARIF file path: results.sarif From cd289e347343e48594c2e701fb6fe3b88cbf31b3 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Mon, 27 Oct 2025 23:16:21 -0700 Subject: [PATCH 0632/1068] Delete scripts/fix.sh All of the passes have been moved out to different script files. Signed-off-by: Ivan Valdes --- Makefile | 1 - scripts/fix.sh | 25 ------------------------- scripts/fix/shell_ws.sh | 5 ++--- 3 files changed, 2 insertions(+), 29 deletions(-) delete mode 100755 scripts/fix.sh diff --git a/Makefile b/Makefile index 61d62afc7b40..facdcf0ecbbb 100644 --- a/Makefile +++ b/Makefile @@ -104,7 +104,6 @@ verify: verify-bom verify-lint verify-dep verify-shellcheck verify-mod-tidy \ .PHONY: fix fix: fix-mod-tidy fix-bom fix-lint fix-yamllint sync-toolchain-directive \ update-go-workspace fix-shell-ws - ./scripts/fix.sh .PHONY: verify-bom verify-bom: diff --git a/scripts/fix.sh b/scripts/fix.sh deleted file mode 100755 index 08745301e5bf..000000000000 --- a/scripts/fix.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2025 The etcd Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -euo pipefail - -source ./scripts/test_lib.sh -source ./scripts/updatebom.sh - - -log_callout -e "\\nFixing etcd code for you...\n" - - -log_success -e "\\nSUCCESS: etcd code is fixed :)" diff --git a/scripts/fix/shell_ws.sh b/scripts/fix/shell_ws.sh index 67f864c7da60..ad3c376714ea 100755 --- a/scripts/fix/shell_ws.sh +++ b/scripts/fix/shell_ws.sh @@ -24,9 +24,8 @@ function main { log_callout "Fixing whitespaces in bash scripts" # Makes sure all bash scripts do use ' ' (double space) for indention. - log_cmd "find "${ETCD_ROOT_DIR}" -name '*.sh' -exec sed -i.bak 's|${TAB}| |g' {} \;" - find "${ETCD_ROOT_DIR}" -name '*.sh' -exec sed -i.bak "s|${TAB}| |g" {} \; - find "${ETCD_ROOT_DIR}" -name '*.sh.bak' -delete + run find "${ETCD_ROOT_DIR}" -name '*.sh' -exec sed -i.bak "s|${TAB}| |g" {} \; + run find "${ETCD_ROOT_DIR}" -name '*.sh.bak' -delete } # only run when called directly, not sourced From 2de1396b03c49bc49c74db396d70089ba9895586 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Tue, 28 Oct 2025 21:23:55 -0400 Subject: [PATCH 0633/1068] docs: mark downgrade feature as completed in roadmap.md Signed-off-by: Wei Fu --- Documentation/contributor-guide/roadmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/contributor-guide/roadmap.md b/Documentation/contributor-guide/roadmap.md index f683490e7193..9721a1b4ecce 100644 --- a/Documentation/contributor-guide/roadmap.md +++ b/Documentation/contributor-guide/roadmap.md @@ -14,7 +14,7 @@ For a full list of tasks in `v3.6.0`, please see [milestone etcd-v3.6](https://g | Title | Priority | Status | Note | |--------------------------------------------------------------------------------------------------------------------|-----------------------------|-------------|--------------------------------------------------------------------------------------------------------------| -| [Support downgrade](https://github.com/etcd-io/etcd/issues/11716) | priority/important-soon | In progress | etcd will support downgrade starting from 3.6.0. But it will also support offline downgrade from 3.5 to 3.4. | +| [Support downgrade](https://github.com/etcd-io/etcd/issues/11716) | priority/important-soon | Completed | etcd will support downgrade starting from 3.6.0. But it will also support offline downgrade from 3.5 to 3.4. | | [StoreV2 deprecation](https://github.com/etcd-io/etcd/issues/12913) | priority/important-soon | In progress | This task will be covered in both 3.6 and 3.7. | | [Release raft 3.6.0](https://github.com/etcd-io/raft/issues/89) | priority/important-soon | Completed | etcd 3.6.0 will depends on raft 3.6.0 | | [Release bbolt 1.4.0](https://github.com/etcd-io/bbolt/issues/553) | priority/important-soon | Completed | etcd 3.6.0 will depends on bbolt 1.4.0 | From 0aa813e385bdfe2ee776ea065fc218ed6bfaf4d0 Mon Sep 17 00:00:00 2001 From: Nont Date: Tue, 28 Oct 2025 21:56:49 -0500 Subject: [PATCH 0634/1068] Clean up CFG_NODE_COUNT where it's not needed Signed-off-by: Nont --- .github/workflows/antithesis-test.yml | 6 ---- .github/workflows/antithesis-verify.yml | 2 +- tests/antithesis/Makefile | 5 ++-- tests/antithesis/test-template/Dockerfile | 7 ++--- .../test-template/entrypoint/main.go | 2 -- .../test-template/robustness/common/config.go | 29 ------------------- .../test-template/robustness/finally/main.go | 2 -- .../test-template/robustness/traffic/main.go | 1 - 8 files changed, 6 insertions(+), 48 deletions(-) delete mode 100644 tests/antithesis/test-template/robustness/common/config.go diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index c4ceff17ceaf..8312464e0fcf 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -28,10 +28,6 @@ on: description: 'Additional email notification recipient (separate with ;)' required: true type: string - cfg_node_count: - description: 'Number of nodes in the etcd cluster' - required: false - type: int # Declare default permissions as read only. permissions: read-all @@ -44,8 +40,6 @@ jobs: build-and-push-and-test: runs-on: ubuntu-latest environment: Antithesis - env: - CFG_NODE_COUNT: ${{ inputs.cfg_node_count || 3 }} steps: - name: Checkout the code uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 diff --git a/.github/workflows/antithesis-verify.yml b/.github/workflows/antithesis-verify.yml index 2a09971b5ff6..a0255c8dd471 100644 --- a/.github/workflows/antithesis-verify.yml +++ b/.github/workflows/antithesis-verify.yml @@ -27,7 +27,7 @@ jobs: - name: Build etcd-server and etcd-client images run: | make -C tests/antithesis antithesis-build-etcd-image - make -C tests/antithesis antithesis-build-client-docker-image CFG_NODE_COUNT=${{ matrix.node-count }} + make -C tests/antithesis antithesis-build-client-docker-image - name: Run docker-compose up working-directory: ./tests/antithesis diff --git a/tests/antithesis/Makefile b/tests/antithesis/Makefile index b8a04546288d..c2a00b56e0d1 100644 --- a/tests/antithesis/Makefile +++ b/tests/antithesis/Makefile @@ -14,7 +14,6 @@ antithesis-build-client-docker-image: validate-node-count # version defined in .go-version is the correct image tag. docker build \ --build-arg GO_IMAGE_TAG=$(shell cat $(REPOSITORY_ROOT)/.go-version) \ - --build-arg CFG_NODE_COUNT=$(CFG_NODE_COUNT) \ --file $(ANTITHESIS_ROOT)/test-template/Dockerfile \ --tag etcd-client:latest \ $(REPOSITORY_ROOT) @@ -69,12 +68,12 @@ antithesis-run-container-validation: validate-node-count .PHONY: antithesis-run-local-traffic antithesis-run-local-traffic: export ETCD_ROBUSTNESS_DATA_PATHS=/tmp/etcddata0,/tmp/etcddata1,/tmp/etcddata2 && export ETCD_ROBUSTNESS_REPORT_PATH=report && export ETCD_ROBUSTNESS_ENDPOINTS=127.0.0.1:12379,127.0.0.1:22379,127.0.0.1:32379 && \ - go run -ldflags "-X main.NodeCount=$(CFG_NODE_COUNT)" --race ./test-template/robustness/traffic/main.go + go run --race ./test-template/robustness/traffic/main.go .PHONY: antithesis-run-local-validation antithesis-run-local-validation: export ETCD_ROBUSTNESS_DATA_PATHS=/tmp/etcddata0,/tmp/etcddata1,/tmp/etcddata2 && export ETCD_ROBUSTNESS_REPORT_PATH=report && export ETCD_ROBUSTNESS_ENDPOINTS=127.0.0.1:12379,127.0.0.1:22379,127.0.0.1:32379 && \ - go run -ldflags "-X main.NodeCount=$(CFG_NODE_COUNT)" --race ./test-template/robustness/finally/main.go + go run --race ./test-template/robustness/finally/main.go .PHONY: antithesis-clean antithesis-clean: validate-node-count diff --git a/tests/antithesis/test-template/Dockerfile b/tests/antithesis/test-template/Dockerfile index b877da6c94cd..9f40a31db433 100644 --- a/tests/antithesis/test-template/Dockerfile +++ b/tests/antithesis/test-template/Dockerfile @@ -2,14 +2,13 @@ ARG GO_IMAGE_TAG ARG ARCH=amd64 FROM golang:$GO_IMAGE_TAG AS build -ARG CFG_NODE_COUNT=3 WORKDIR /build COPY . . WORKDIR /build/tests -RUN go build -ldflags "-X main.NodeCount=$CFG_NODE_COUNT" -o /opt/antithesis/entrypoint/entrypoint -race ./antithesis/test-template/entrypoint/main.go -RUN go build -ldflags "-X main.NodeCount=$CFG_NODE_COUNT" -o /opt/antithesis/test/v1/robustness/singleton_driver_traffic -race ./antithesis/test-template/robustness/traffic/main.go -RUN go build -ldflags "-X main.NodeCount=$CFG_NODE_COUNT" -o /opt/antithesis/test/v1/robustness/finally_validation -race ./antithesis/test-template/robustness/finally/main.go +RUN go build -o /opt/antithesis/entrypoint/entrypoint -race ./antithesis/test-template/entrypoint/main.go +RUN go build -o /opt/antithesis/test/v1/robustness/singleton_driver_traffic -race ./antithesis/test-template/robustness/traffic/main.go +RUN go build -o /opt/antithesis/test/v1/robustness/finally_validation -race ./antithesis/test-template/robustness/finally/main.go FROM ubuntu:24.04 COPY --from=build /opt/ /opt/ diff --git a/tests/antithesis/test-template/entrypoint/main.go b/tests/antithesis/test-template/entrypoint/main.go index 94977fbb2849..9d68c3292118 100644 --- a/tests/antithesis/test-template/entrypoint/main.go +++ b/tests/antithesis/test-template/entrypoint/main.go @@ -30,8 +30,6 @@ import ( // Sleep duration const SLEEP = 10 -var NodeCount = "3" - // CheckHealth checks health of all etcd nodes func CheckHealth() bool { hosts, _, _ := common.GetPaths() diff --git a/tests/antithesis/test-template/robustness/common/config.go b/tests/antithesis/test-template/robustness/common/config.go deleted file mode 100644 index 97a8ef39637a..000000000000 --- a/tests/antithesis/test-template/robustness/common/config.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2025 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package common - -import "strconv" - -type Config struct { - NodeCount int -} - -func MakeConfig(nodeCount string) *Config { - cfg := &Config{} - - cfg.NodeCount, _ = strconv.Atoi(nodeCount) - - return cfg -} diff --git a/tests/antithesis/test-template/robustness/finally/main.go b/tests/antithesis/test-template/robustness/finally/main.go index bc744855eae2..0f715fd0fc7d 100644 --- a/tests/antithesis/test-template/robustness/finally/main.go +++ b/tests/antithesis/test-template/robustness/finally/main.go @@ -35,8 +35,6 @@ const ( reportFileName = "history.html" ) -var NodeCount = "3" - func main() { _, reportPath, dirs := common.GetPaths() diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 96c584fc8baf..3912403633ed 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -59,7 +59,6 @@ var ( traffic.EtcdPutDeleteLease, traffic.Kubernetes, } - NodeCount = "3" ) func main() { From 2c25dc66dca7d6ac4daf9f5ee8ecbe7572df6d65 Mon Sep 17 00:00:00 2001 From: EduardoVega Date: Mon, 22 Sep 2025 21:59:36 -0600 Subject: [PATCH 0635/1068] etcdutl: enable global timeout flag for all cmds that open etcd's db file using bolt Signed-off-by: EduardoVega --- CHANGELOG/CHANGELOG-3.7.md | 4 ++++ etcdutl/ctl.go | 3 +++ etcdutl/etcdutl/bucket_command.go | 17 +++-------------- etcdutl/etcdutl/common.go | 4 ++++ etcdutl/etcdutl/defrag_command.go | 27 ++++++--------------------- etcdutl/etcdutl/hashkv_command.go | 4 +--- etcdutl/etcdutl/migrate_command.go | 2 +- server/storage/backend/backend.go | 10 ++++++++++ 8 files changed, 32 insertions(+), 39 deletions(-) diff --git a/CHANGELOG/CHANGELOG-3.7.md b/CHANGELOG/CHANGELOG-3.7.md index ef9230638ba4..6e25758556aa 100644 --- a/CHANGELOG/CHANGELOG-3.7.md +++ b/CHANGELOG/CHANGELOG-3.7.md @@ -14,3 +14,7 @@ Previous change logs can be found at [CHANGELOG-3.6](https://github.com/etcd-io/ - [Organize etcdctl commands](https://github.com/etcd-io/etcd/pull/20162) to make them more concise and easier to understand. - [Hide the global flags](https://github.com/etcd-io/etcd/pull/20493) to make the output of `etcdctl --help` looks cleaner and is consistent with kubectl. + +### etcdutl + +- [Add a timeout flag to all etcdutl commands](https://github.com/etcd-io/etcd/pull/20708) when waiting to acquire a file lock on the database file. diff --git a/etcdutl/ctl.go b/etcdutl/ctl.go index 5e91c14cf7fb..fe8d89fe02a9 100644 --- a/etcdutl/ctl.go +++ b/etcdutl/ctl.go @@ -16,6 +16,8 @@ package main import ( + "time" + "github.com/spf13/cobra" "go.etcd.io/etcd/etcdutl/v3/etcdutl" @@ -33,6 +35,7 @@ var rootCmd = &cobra.Command{ } func init() { + rootCmd.PersistentFlags().DurationVar(&etcdutl.FlockTimeout, "timeout", 10*time.Second, "time to wait to obtain a file lock on db file, 0 to block indefinitely") rootCmd.PersistentFlags().StringVarP(&etcdutl.OutputFormat, "write-out", "w", "simple", "set the output format (fields, json, protobuf, simple, table)") rootCmd.RegisterFlagCompletionFunc("write-out", func(_ *cobra.Command, _ []string, _ string) ([]string, cobra.ShellCompDirective) { return []string{"fields", "json", "protobuf", "simple", "table"}, cobra.ShellCompDirectiveDefault diff --git a/etcdutl/etcdutl/bucket_command.go b/etcdutl/etcdutl/bucket_command.go index ba2461e6d2e0..57caf1cc690c 100644 --- a/etcdutl/etcdutl/bucket_command.go +++ b/etcdutl/etcdutl/bucket_command.go @@ -19,7 +19,6 @@ import ( "fmt" "path/filepath" "strings" - "time" "github.com/spf13/cobra" "go.uber.org/zap" @@ -36,8 +35,6 @@ import ( ) var ( - // TODO: add this configure to top level etcdutl command - flockTimeout time.Duration iterateBucketLimit uint64 iterateBucketDecode bool ) @@ -50,9 +47,6 @@ func NewListBucketCommand() *cobra.Command { Run: listBucketCommandFunc, } - // TODO: add this flag to top level etctutl command - cmd.PersistentFlags().DurationVar(&flockTimeout, "timeout", 10*time.Second, "time to wait to obtain a file lock on db file, 0 to block indefinitely") - return cmd } @@ -64,8 +58,6 @@ func NewIterateBucketCommand() *cobra.Command { Run: iterateBucketCommandFunc, } - // TODO: add this flag to top level etctutl command - cmd.PersistentFlags().DurationVar(&flockTimeout, "timeout", 10*time.Second, "time to wait to obtain a file lock on db file, 0 to block indefinitely") cmd.PersistentFlags().Uint64Var(&iterateBucketLimit, "limit", 0, "max number of key-value pairs to iterate (0 to iterate all)") cmd.PersistentFlags().BoolVar(&iterateBucketDecode, "decode", false, "true to decode Protocol Buffer encoded data") @@ -80,9 +72,6 @@ func NewHashCommand() *cobra.Command { Run: getHashCommandFunc, } - // TODO: add this flag to top level etctutl command - cmd.PersistentFlags().DurationVar(&flockTimeout, "timeout", 10*time.Second, "time to wait to obtain a file lock on db file, 0 to block indefinitely") - return cmd } @@ -107,7 +96,7 @@ func listBucketCommandFunc(_ *cobra.Command, args []string) { } func getBuckets(dbPath string) (buckets []string, err error) { - db, derr := bolt.Open(dbPath, 0o600, &bolt.Options{Timeout: flockTimeout}) + db, derr := bolt.Open(dbPath, 0o600, &bolt.Options{Timeout: FlockTimeout}) if derr != nil { return nil, fmt.Errorf("failed to open bolt DB %w", derr) } @@ -218,7 +207,7 @@ func metaDecoder(k, v []byte) { } func iterateBucket(dbPath, bucket string, limit uint64, decode bool) (err error) { - db, err := bolt.Open(dbPath, 0o600, &bolt.Options{Timeout: flockTimeout}) + db, err := bolt.Open(dbPath, 0o600, &bolt.Options{Timeout: FlockTimeout}) if err != nil { return fmt.Errorf("failed to open bolt DB %w", err) } @@ -271,6 +260,6 @@ func getHashCommandFunc(_ *cobra.Command, args []string) { } func getHash(dbPath string) (hash uint32, err error) { - b := backend.NewDefaultBackend(zap.NewNop(), dbPath) + b := backend.NewDefaultBackend(zap.NewNop(), dbPath, backend.WithTimeout(FlockTimeout)) return b.Hash(schema.DefaultIgnores) } diff --git a/etcdutl/etcdutl/common.go b/etcdutl/etcdutl/common.go index c7473cc7fd7b..b7e42959e2a2 100644 --- a/etcdutl/etcdutl/common.go +++ b/etcdutl/etcdutl/common.go @@ -16,6 +16,7 @@ package etcdutl import ( "errors" + "time" "go.uber.org/zap" "go.uber.org/zap/zapcore" @@ -29,6 +30,9 @@ import ( "go.etcd.io/raft/v3/raftpb" ) +// FlockTimeout is the duration to wait to obtain a file lock on db file. +var FlockTimeout time.Duration + func GetLogger() *zap.Logger { config := logutil.DefaultZapLoggerConfig config.Encoding = "console" diff --git a/etcdutl/etcdutl/defrag_command.go b/etcdutl/etcdutl/defrag_command.go index 5135f5f5eb85..183e21c0cfed 100644 --- a/etcdutl/etcdutl/defrag_command.go +++ b/etcdutl/etcdutl/defrag_command.go @@ -16,8 +16,6 @@ package etcdutl import ( "fmt" - "os" - "time" "github.com/spf13/cobra" @@ -50,23 +48,10 @@ func defragCommandFunc(cmd *cobra.Command, args []string) { } func DefragData(dataDir string) error { - var be backend.Backend - lg := GetLogger() - bch := make(chan struct{}) - dbDir := datadir.ToBackendFileName(dataDir) - go func() { - defer close(bch) - cfg := backend.DefaultBackendConfig(lg) - cfg.Logger = lg - cfg.Path = dbDir - be = backend.New(cfg) - }() - select { - case <-bch: - case <-time.After(time.Second): - fmt.Fprintf(os.Stderr, "waiting for etcd to close and release its lock on %q. "+ - "To defrag a running etcd instance, use `etcdctl defrag` instead.\n", dbDir) - <-bch - } - return be.Defrag() + b := backend.NewDefaultBackend( + GetLogger(), + datadir.ToBackendFileName(dataDir), + backend.WithTimeout(FlockTimeout)) + + return b.Defrag() } diff --git a/etcdutl/etcdutl/hashkv_command.go b/etcdutl/etcdutl/hashkv_command.go index 20c47a514521..3aa701f7b630 100644 --- a/etcdutl/etcdutl/hashkv_command.go +++ b/etcdutl/etcdutl/hashkv_command.go @@ -54,9 +54,7 @@ type HashKV struct { } func calculateHashKV(dbPath string, rev int64) (HashKV, error) { - cfg := backend.DefaultBackendConfig(zap.NewNop()) - cfg.Path = dbPath - b := backend.New(cfg) + b := backend.NewDefaultBackend(zap.NewNop(), dbPath, backend.WithTimeout(FlockTimeout)) st := mvcc.NewStore(zap.NewNop(), b, nil, mvcc.StoreConfig{}) hst := mvcc.NewHashStorage(zap.NewNop(), st) diff --git a/etcdutl/etcdutl/migrate_command.go b/etcdutl/etcdutl/migrate_command.go index a7f3d849f168..7620c54059ce 100644 --- a/etcdutl/etcdutl/migrate_command.go +++ b/etcdutl/etcdutl/migrate_command.go @@ -123,7 +123,7 @@ func (c *migrateConfig) finalize() error { func migrateCommandFunc(c *migrateConfig) error { dbPath := datadir.ToBackendFileName(c.dataDir) - be := backend.NewDefaultBackend(GetLogger(), dbPath) + be := backend.NewDefaultBackend(GetLogger(), dbPath, backend.WithTimeout(FlockTimeout)) defer be.Close() tx := be.BatchTx() diff --git a/server/storage/backend/backend.go b/server/storage/backend/backend.go index 275064f083b2..8f5f76429c74 100644 --- a/server/storage/backend/backend.go +++ b/server/storage/backend/backend.go @@ -147,6 +147,9 @@ type BackendConfig struct { UnsafeNoFsync bool `json:"unsafe-no-fsync"` // Mlock prevents backend database file to be swapped Mlock bool + // Timeout is the amount of time to wait to obtain a file lock. + // When set to zero it will wait indefinitely. + Timeout time.Duration // Hooks are getting executed during lifecycle of Backend's transactions. Hooks Hooks @@ -173,6 +176,12 @@ func WithMmapSize(size uint64) BackendConfigOption { } } +func WithTimeout(timeout time.Duration) BackendConfigOption { + return func(bcfg *BackendConfig) { + bcfg.Timeout = timeout + } +} + func NewDefaultBackend(lg *zap.Logger, path string, opts ...BackendConfigOption) Backend { bcfg := DefaultBackendConfig(lg) bcfg.Path = path @@ -199,6 +208,7 @@ func newBackend(bcfg BackendConfig) *backend { bopts.NoGrowSync = bcfg.UnsafeNoFsync bopts.Mlock = bcfg.Mlock bopts.Logger = newBoltLoggerZap(bcfg) + bopts.Timeout = bcfg.Timeout db, err := bolt.Open(bcfg.Path, 0o600, bopts) if err != nil { From dccf92a5ddc6c38c14f981040895a7491691fec2 Mon Sep 17 00:00:00 2001 From: xUser5000 Date: Wed, 29 Oct 2025 00:45:37 +0300 Subject: [PATCH 0636/1068] tests: use WaitLeader() in memberPromoteWithAuth() Signed-off-by: xUser5000 --- tests/e2e/ctl_v3_member_test.go | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/tests/e2e/ctl_v3_member_test.go b/tests/e2e/ctl_v3_member_test.go index 2893e572c3dd..b3a54292b377 100644 --- a/tests/e2e/ctl_v3_member_test.go +++ b/tests/e2e/ctl_v3_member_test.go @@ -277,18 +277,15 @@ func memberPromoteWithAuth(fromFollower bool) func(cx ctlCtx) { return func(cx ctlCtx) { ctx := context.Background() - require.NoError(cx.t, authEnable(cx)) - cx.user, cx.pass = "root", "root" - // Add a regular member - _, err := cx.epc.StartNewProc(ctx, nil, cx.t, false, e2e.WithAuth("root", "root")) + _, err := cx.epc.StartNewProc(ctx, nil, cx.t, false) require.NoError(cx.t, err) var learnerID uint64 var addErr error for { // Add a learner once the cluster is healthy - learnerID, addErr = cx.epc.StartNewProc(ctx, nil, cx.t, true, e2e.WithAuth("root", "root")) + learnerID, addErr = cx.epc.StartNewProc(ctx, nil, cx.t, true) if addErr != nil { if strings.Contains(addErr.Error(), "etcdserver: unhealthy cluster") { time.Sleep(1 * time.Second) @@ -299,20 +296,11 @@ func memberPromoteWithAuth(fromFollower bool) func(cx ctlCtx) { } require.NoError(cx.t, addErr) - var leaderIdx int - var followerIdx int - - // Determine the index of the leader and the follower - for idx, proc := range cx.epc.Procs[:2] { - status, err := proc.Etcdctl(e2e.WithAuth("root", "root")).Status(ctx) - require.NoError(cx.t, err) + leaderIdx := cx.epc.WaitLeader(cx.t) + followerIdx := (leaderIdx + 1) % len(cx.epc.Procs) - if status[0].Header.MemberId == status[0].Leader { - leaderIdx = idx - } else { - followerIdx = idx - } - } + require.NoError(cx.t, authEnable(cx)) + cx.user, cx.pass = "root", "root" if fromFollower { _, err = cx.epc.Procs[followerIdx]. From d65ebf06d19d32147344cce63ed959a90508badc Mon Sep 17 00:00:00 2001 From: Kishen Viswanathan Date: Tue, 4 Nov 2025 17:04:12 +0530 Subject: [PATCH 0637/1068] Add benchmark type to perfdash filename Signed-off-by: Kishen Viswanathan --- pkg/report/perfdash.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/report/perfdash.go b/pkg/report/perfdash.go index bd0fd0ed3af8..794d0f0878e3 100644 --- a/pkg/report/perfdash.go +++ b/pkg/report/perfdash.go @@ -74,7 +74,7 @@ func (r *report) writePerfDashReport(benchmarkOp string) { artifactsDir = "./_artifacts" } - fileName := fmt.Sprintf("EtcdAPI_benchmark_%s.json", time.Now().UTC().Format(time.RFC3339)) + fileName := fmt.Sprintf("EtcdAPI_benchmark_%s_%s.json", benchmarkOp, time.Now().UTC().Format(time.RFC3339)) err := os.MkdirAll(artifactsDir, 0o755) if err != nil { fmt.Println("Error creating artifacts directory:", err) From b3127994f174b7939c78e539e17775b622ac8a1d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:18:24 +0000 Subject: [PATCH 0638/1068] build(deps): bump github/codeql-action from 4.31.0 to 4.31.2 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.0 to 4.31.2. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/4e94bd11f71e507f7f87df81788dff88d1dacbfb...0499de31b99561a6d14a36a5f662c2a54f91beee) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.31.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 7ee1a3b6361e..06bb4c0b677d 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0 + uses: github/codeql-action/init@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0 + uses: github/codeql-action/autobuild@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0 + uses: github/codeql-action/analyze@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index afeefdd449c5..d2d4e2580a66 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0 + uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 with: sarif_file: results.sarif From a7fd4b462ec5e94ffee9253f8299fb5a9040a5cb Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 30 Oct 2025 10:14:06 -0700 Subject: [PATCH 0639/1068] Replace GOLANG_TEST_SHORT with testing.Short() Remove the custom environment variable GOLANG_TEST_SHORT. It is currently used by Main tests (TestMain), as we can't skip tests because testing.M doesn't implement testing.TB. It is possible to do a clean os.Exit(0) (current behavior), but calling testing.Short() fails because this function expects flags to be parsed before. So, it is possible to remove the custom behavior (GOLANG_TEST_SHORT) by parsing flags (if required) before calling testing.Short(), then immediately exit if the result is true (-short flag is set). Signed-off-by: Ivan Valdes --- client/pkg/testutil/testutil.go | 11 ++++++++--- scripts/test.sh | 4 ++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/client/pkg/testutil/testutil.go b/client/pkg/testutil/testutil.go index 425c9f3b6b56..b5505b7dd52e 100644 --- a/client/pkg/testutil/testutil.go +++ b/client/pkg/testutil/testutil.go @@ -16,6 +16,8 @@ package testutil import ( + "flag" + "log" "net/url" "os" "runtime" @@ -100,10 +102,13 @@ func SkipTestIfShortMode(t TB, reason string) { // ExitInShortMode closes the current process (with 0) if the short test mode detected. // // To be used in Test-main, where test context (testing.TB) is not available. -// -// Requires custom env-variable (GOLANG_TEST_SHORT) apart of `go test --short flag`. func ExitInShortMode(reason string) { - if os.Getenv("GOLANG_TEST_SHORT") == "true" { + // Calling testing.Short() requires flags to be parsed before. + if !flag.Parsed() { + flag.Parse() + } + if testing.Short() { + log.Println(reason) os.Exit(0) } } diff --git a/scripts/test.sh b/scripts/test.sh index 17bbcf937d6a..20f6231e3879 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -130,7 +130,7 @@ function run_unit_tests { local pkgs="${1:-./...}" shift 1 # shellcheck disable=SC2068 #For context see - https://github.com/etcd-io/etcd/pull/16433#issuecomment-1684312755 - GOLANG_TEST_SHORT=true go_test "${pkgs}" "parallel" : -short -timeout="${TIMEOUT:-3m}" ${COMMON_TEST_FLAGS[@]:-} ${RUN_ARG[@]:-} "$@" + go_test "${pkgs}" "parallel" : -short -timeout="${TIMEOUT:-3m}" ${COMMON_TEST_FLAGS[@]:-} ${RUN_ARG[@]:-} "$@" } function unit_pass { @@ -309,7 +309,7 @@ function cov_pass { log_callout "[$(date)] Collecting coverage from unit tests ..." for m in $(module_dirs); do - GOLANG_TEST_SHORT=true run_for_module "${m}" go_test "./..." "parallel" "pkg_to_coverprofileflag unit_${m}" -short -timeout=30m \ + run_for_module "${m}" go_test "./..." "parallel" "pkg_to_coverprofileflag unit_${m}" -short -timeout=30m \ "${gocov_build_flags[@]}" "$@" || failed="$failed unit" done From 89ab4325d19d3b3744fa3f3ea4562026f87c1e26 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 7 Nov 2025 15:19:37 -0800 Subject: [PATCH 0640/1068] build(deps): bump github.com/google/yamlfmt from 0.19.0 to 0.20.0 Reference: https://github.com/etcd-io/etcd/pull/20864 Signed-off-by: Ivan Valdes --- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index a10d888acf39..6b22da185d6c 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -10,7 +10,7 @@ require ( github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint/v2 v2.5.0 - github.com/google/yamlfmt v0.19.0 + github.com/google/yamlfmt v0.20.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/ryancurrah/gomodguard v1.4.1 go.etcd.io/gofail v0.2.0 diff --git a/tools/mod/go.sum b/tools/mod/go.sum index a611134d0004..27a723546dd4 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -232,8 +232,8 @@ github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a h1://KbezygeMJZCSHH+H github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/yamlfmt v0.19.0 h1:CX1eZYMIJFjSvQn87hhYNAS6ZYQYSfxnpLezdbZC3qo= -github.com/google/yamlfmt v0.19.0/go.mod h1:gs0UEklJOYkUJ+OOCG0hg9n+DzucKDPlJElTUasVNK8= +github.com/google/yamlfmt v0.20.0 h1:EfMuMFEZGnXPn2NY+KgJTH9sNs6P+am/Of6IwE2K6P8= +github.com/google/yamlfmt v0.20.0/go.mod h1:gs0UEklJOYkUJ+OOCG0hg9n+DzucKDPlJElTUasVNK8= github.com/gordonklaus/ineffassign v0.2.0 h1:Uths4KnmwxNJNzq87fwQQDDnbNb7De00VOk9Nu0TySs= github.com/gordonklaus/ineffassign v0.2.0/go.mod h1:TIpymnagPSexySzs7F9FnO1XFTy8IT3a59vmZp5Y9Lw= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= From 9e67ea879673d9207cf89a38d3ae07a6abbffde9 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 7 Nov 2025 15:54:00 -0800 Subject: [PATCH 0641/1068] build(deps): bump google.golang.org/grpc from 1.75.1 to 1.76.0 Reference: https://github.com/etcd-io/etcd/pull/20866 Signed-off-by: Ivan Valdes --- api/go.mod | 2 +- api/go.sum | 4 +- cache/go.mod | 2 +- cache/go.sum | 4 +- client/v3/go.mod | 2 +- client/v3/go.sum | 4 +- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 +- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 +- go.mod | 2 +- go.sum | 4 +- go.work.sum | 382 ++------------------------------- pkg/go.mod | 2 +- pkg/go.sum | 4 +- server/go.mod | 2 +- server/go.sum | 4 +- tests/go.mod | 2 +- tests/go.sum | 4 +- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 +- tools/rw-heatmaps/go.mod | 13 +- tools/rw-heatmaps/go.sum | 36 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 +- 25 files changed, 72 insertions(+), 425 deletions(-) diff --git a/api/go.mod b/api/go.mod index b73ecdbb794b..29d245a57f74 100644 --- a/api/go.mod +++ b/api/go.mod @@ -11,7 +11,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/stretchr/testify v1.11.1 google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 - google.golang.org/grpc v1.75.1 + google.golang.org/grpc v1.76.0 google.golang.org/protobuf v1.36.10 ) diff --git a/api/go.sum b/api/go.sum index b4cbfc5437e6..d4d434751550 100644 --- a/api/go.sum +++ b/api/go.sum @@ -80,8 +80,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/cache/go.mod b/cache/go.mod index 62c10cec9fe3..f06e6df61c94 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -28,7 +28,7 @@ require ( golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect - google.golang.org/grpc v1.75.1 // indirect + google.golang.org/grpc v1.76.0 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index 244b0084a4ef..a076766aadbd 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -109,8 +109,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index 012e77f0ccdb..8241df11d1d0 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 - google.golang.org/grpc v1.75.1 + google.golang.org/grpc v1.76.0 sigs.k8s.io/yaml v1.6.0 ) diff --git a/client/v3/go.sum b/client/v3/go.sum index ca0983c1357f..e4ea1fd1aff6 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -115,8 +115,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index e93b75f25067..a4836fcc3ca3 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.75.1 + google.golang.org/grpc v1.76.0 ) require ( diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 5c9c55460378..b7965184ee0c 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -144,8 +144,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index f616e5f34168..8db86b97cf85 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -84,7 +84,7 @@ require ( golang.org/x/time v0.14.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect - google.golang.org/grpc v1.75.1 // indirect + google.golang.org/grpc v1.76.0 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 38ecfe32a003..2289d486e9b0 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -188,8 +188,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index f9f98588a043..49ce4b5c9c8d 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.0 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.75.1 + google.golang.org/grpc v1.76.0 google.golang.org/protobuf v1.36.10 ) diff --git a/go.sum b/go.sum index 6964f6b91183..739736238d6d 100644 --- a/go.sum +++ b/go.sum @@ -257,8 +257,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.work.sum b/go.work.sum index 61129b2cfda6..cbd3309b69d9 100644 --- a/go.work.sum +++ b/go.work.sum @@ -499,45 +499,19 @@ cloud.google.com/go/workflows v1.12.3/go.mod h1:fmOUeeqEwPzIU81foMjTRQIdwQHADi/v cloud.google.com/go/workflows v1.13.3/go.mod h1:Xi7wggEt/ljoEcyk+CB/Oa1AHBCk0T1f5UH/exBB5CE= cloud.google.com/go/workflows v1.14.2 h1:phBz5TOAES0YGogxZ6Q7ISSudaf618lRhE3euzBpE9U= cloud.google.com/go/workflows v1.14.2/go.mod h1:5nqKjMD+MsJs41sJhdVrETgvD5cOK3hUcAs8ygqYvXQ= -codeberg.org/go-fonts/dejavu v0.4.0 h1:2yn58Vkh4CFK3ipacWUAIE3XVBGNa0y1bc95Bmfx91I= -codeberg.org/go-fonts/dejavu v0.4.0/go.mod h1:abni088lmhQJvso2Lsb7azCKzwkfcnttl6tL1UTWKzg= -codeberg.org/go-fonts/latin-modern v0.4.0 h1:vkRCc1y3whKA7iL9Ep0fSGVuJfqjix0ica9UflHORO8= -codeberg.org/go-fonts/latin-modern v0.4.0/go.mod h1:BF68mZznJ9QHn+hic9ks2DaFl4sR5YhfM6xTYaP9vNw= -codeberg.org/go-fonts/liberation v0.4.1/go.mod h1:Gu6FTZHMMpGxPBfc8WFL8RfwMYFTvG7TIFOMx8oM4B8= -codeberg.org/go-fonts/liberation v0.5.0 h1:SsKoMO1v1OZmzkG2DY+7ZkCL9U+rrWI09niOLfQ5Bo0= -codeberg.org/go-fonts/liberation v0.5.0/go.mod h1:zS/2e1354/mJ4pGzIIaEtm/59VFCFnYC7YV6YdGl5GU= codeberg.org/go-fonts/stix v0.3.0 h1:vHI1LmLWEcAdcf+5aRMtA1eYKJJ9ZjetVstBD/dRe1Q= codeberg.org/go-fonts/stix v0.3.0/go.mod h1:1OSJSnA/PoHqbW2tjkkqTmNPp5xTtJQN2GRXJjO/+WA= -codeberg.org/go-latex/latex v0.0.1/go.mod h1:AiC91vVG2uURZRd4ZN1j3mAac0XBrLsxK6+ZNa7O9ok= -codeberg.org/go-latex/latex v0.1.0 h1:hoGO86rIbWVyjtlDLzCqZPjNykpWQ9YuTZqAzPcfL3c= -codeberg.org/go-latex/latex v0.1.0/go.mod h1:LA0q/AyWIYrqVd+A9Upkgsb+IqPcmSTKc9Dny04MHMw= -codeberg.org/go-pdf/fpdf v0.10.0 h1:u+w669foDDx5Ds43mpiiayp40Ov6sZalgcPMDBcZRd4= -codeberg.org/go-pdf/fpdf v0.10.0/go.mod h1:Y0DGRAdZ0OmnZPvjbMp/1bYxmIPxm0ws4tfoPOc4LjU= contrib.go.opencensus.io/exporter/stackdriver v0.13.14 h1:zBakwHardp9Jcb8sQHcHpXy/0+JIb1M8KjigCJzx7+4= contrib.go.opencensus.io/exporter/stackdriver v0.13.14/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20221208032759-85de2813cf6b h1:a26Bdkl2B9PmYN6vGXnnfB2UGKjz0Moif1aEg+xTd7M= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20221208032759-85de2813cf6b/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -eliasnaur.com/font v0.0.0-20230308162249-dd43949cb42d h1:ARo7NCVvN2NdhLlJE9xAbKweuI9L6UgfTbYb0YwPacY= -eliasnaur.com/font v0.0.0-20230308162249-dd43949cb42d/go.mod h1:OYVuxibdk9OSLX8vAqydtRPP87PyTFcT9uH3MlEGBQA= -gioui.org v0.0.0-20210822154628-43a7030f6e0b/go.mod h1:jmZ349gZNGWyc5FIv/VWLBQ32Ki/FOvTgEz64kh9lnk= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= gioui.org v0.2.0 h1:RbzDn1h/pCVf/q44ImQSa/J3MIFpY3OWphzT/Tyei+w= gioui.org v0.2.0/go.mod h1:1H72sKEk/fNFV+l0JNeM2Dt3co3Y4uaQcD+I+/GQ0e4= -gioui.org/cpu v0.0.0-20210808092351-bfe733dd3334/go.mod h1:A8M0Cn5o+vY5LTMlnRoK3O5kG+rH0kWfJjeKd9QpBmQ= -gioui.org/cpu v0.0.0-20210817075930-8d6a761490d2/go.mod h1:A8M0Cn5o+vY5LTMlnRoK3O5kG+rH0kWfJjeKd9QpBmQ= gioui.org/cpu v0.0.0-20220412190645-f1e9e8c3b1f7 h1:tNJdnP5CgM39PRc+KWmBRRYX/zJ+rd5XaYxY5d5veqA= gioui.org/cpu v0.0.0-20220412190645-f1e9e8c3b1f7/go.mod h1:A8M0Cn5o+vY5LTMlnRoK3O5kG+rH0kWfJjeKd9QpBmQ= -gioui.org/shader v1.0.0/go.mod h1:mWdiME581d/kV7/iEhLmUgUK5iZ09XR5XpduXzbePVM= gioui.org/shader v1.0.6 h1:cvZmU+eODFR2545X+/8XucgZdTtEjR3QWW6W65b0q5Y= gioui.org/shader v1.0.6/go.mod h1:mWdiME581d/kV7/iEhLmUgUK5iZ09XR5XpduXzbePVM= gioui.org/x v0.2.0 h1:/MbdjKH19F16auv19UiQxli2n6BYPw7eyh9XBOTgmEw= gioui.org/x v0.2.0/go.mod h1:rCGN2nZ8ZHqrtseJoQxCMZpt2xrZUrdZ2WuMRLBJmYs= -git.sr.ht/~jackmordaunt/go-toast v1.0.0 h1:bbRox6VkotdOj3QcWimZQ84APoszIsA/pSIj8ypDdV8= -git.sr.ht/~jackmordaunt/go-toast v1.0.0/go.mod h1:aIuRX/HdBOz7yRS8rOVYQCwJQlFS7DbYBTpUV0SHeeg= -git.sr.ht/~sbinet/gg v0.6.0 h1:RIzgkizAk+9r7uPzf/VfbJHBMKUr0F5hRFxTUGMnt38= -git.sr.ht/~sbinet/gg v0.6.0/go.mod h1:uucygbfC9wVPQIfrmwM2et0imr8L7KQWywX0xpFMm94= -git.wow.st/gmp/jni v0.0.0-20210610011705-34026c7e22d0 h1:bGG/g4ypjrCJoSvFrP5hafr9PPB5aw8SjcOWWila7ZI= -git.wow.st/gmp/jni v0.0.0-20210610011705-34026c7e22d0/go.mod h1:+axXBRUTIDlCeE73IKeD/os7LoEnTKdkp8/gQOFjqyo= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.2 h1:DBjmt6/otSdULyJdVg2BlG0qGZO5tKL4VzOs0jpvw5Q= github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.2/go.mod h1:dppbR7CwXD4pgtV9t3wD1812RaLDcBjtblcDF5f1vI0= @@ -551,21 +525,11 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 h1:6/0iUd0xrnX7qt+mLNRwg5c0PGv8wpE8K90ryANQwMI= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0/go.mod h1:otE2jQekW/PqXk1Awf5lmfokJx4uwuqcj1ab5SpGeW0= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= -github.com/Shopify/sarama v1.19.0 h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 h1:rFw4nCn9iMW+Vajsk51NtYIcwSTkXr+JGrMd36kTDJw= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9 h1:7kQgkwGRoLzC9K0oyXdJo7nve/bynv/KwUsxbiTlzAM= github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19 h1:iXUgAaqDcIUGbRoy2TdeofRG/j1zpGRSEmNK05T+bi8= github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY= @@ -585,41 +549,21 @@ github.com/apache/arrow/go/v12 v12.0.1 h1:JsR2+hzYYjgSUkBSaahpqCetqZMr76djX80fF/ github.com/apache/arrow/go/v12 v12.0.1/go.mod h1:weuTY7JvTG/HDPtMQxEUp7pU73vkLWMLpY67QwZ/WWw= github.com/apache/arrow/go/v15 v15.0.2 h1:60IliRbiyTWCWjERBCkO1W4Qun9svcYoZrSLcyOsMLE= github.com/apache/arrow/go/v15 v15.0.2/go.mod h1:DGXsR3ajT524njufqf95822i+KTh+yea1jass9YXgjA= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a h1:pv34s756C4pEXnjgPfGYgdhg/ZdajGhyOvzx8k+23nw= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= -github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.46.4 h1:48tKgtm9VMPkb6y7HuYlsfhQmoIRAsTEXTsWLVlty4M= github.com/aws/aws-sdk-go v1.46.4/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go-v2 v0.18.0 h1:qZ+woO4SamnH/eEbjM2IDLhRNwIwND/RQyVlBLp3Jqg= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWpi6yML8= github.com/aymanbagabas/go-udiff v0.2.0/go.mod h1:RE4Ex0qsGkTAJoQdQQCA0uG+nAzJO/pI/QwceO5fgrA= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= github.com/bufbuild/protovalidate-go v0.2.1 h1:pJr07sYhliyfj/STAM7hU4J3FKpVeLVKvOBmOTN8j+s= github.com/bufbuild/protovalidate-go v0.2.1/go.mod h1:e7XXDtlxj5vlEyAgsrxpzayp4cEMKCSSb8ZCkin+MVA= github.com/bwesterb/go-ristretto v1.2.0 h1:xxWOVbN5m8NNKiSDZXE1jtZvZnC6JSJ9cYFADiZcWtw= -github.com/casbin/casbin/v2 v2.1.2 h1:bTwon/ECRx9dwBy2ewRVr5OiqjeXSGiTUY74sDPQi/g= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= @@ -629,8 +573,6 @@ github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a/go.mod github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec h1:EdRZT3IeKQmfCSrgo8SZ8V3MEnskuJP0wCYNpe+aiXo= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a h1:8d1CEOF1xldesKds5tRG3tExBsMOgWYownMHNCsev54= github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a/go.mod h1:rzgs2ZOiguV6/NpiDgADjRLPNyZlApIWxKpkT+X8SdY= @@ -641,36 +583,13 @@ github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nC github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf h1:CAKfRE2YtTUIjjh1bkBtyYFaUT/WmOqsJjgtihT0vMI= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/cristalhq/acmd v0.12.0 h1:RdlKnxjN+txbQosg8p/TRNZ+J1Rdne43MVQZ1zDhGWk= github.com/cristalhq/acmd v0.12.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= -github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw= github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= -github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= @@ -680,17 +599,10 @@ github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJP github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= -github.com/esiqveland/notify v0.11.0 h1:0WJ/xW+3Ln8uRBYntG7f0XihXxnlOaQTdha1yyzXz30= -github.com/esiqveland/notify v0.11.0/go.mod h1:63UbVSaeJwF0LVJARHFuPgUAoM7o1BEvCZyknsuonBc= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db h1:gb2Z18BhTPJPpLQWj4T+rfKHYCHxRHCtRxhKKjRidVw= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8 h1:a9ENSRDFBUPkJ5lCgVZh26+ZbGyoVJG7yb5SSzF5H54= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/fullstorydev/grpcurl v1.8.9 h1:JMvZXK8lHDGyLmTQ0ZdGDnVVGuwjbpaumf8p42z0d+c= github.com/fullstorydev/grpcurl v1.8.9/go.mod h1:PNNKevV5VNAV2loscyLISrEnWQI61eqR0F8l3bVadAA= github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw= @@ -698,27 +610,19 @@ github.com/getsentry/sentry-go v0.11.0 h1:qro8uttJGvNAMr5CLcFI9CHR0aDzXl0Vs3Pmw/ github.com/getsentry/sentry-go v0.11.0/go.mod h1:KBQIxiZAetw62Cj8Ri964vAEWVdgfaUCn30Q3bCvANo= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/go-chi/chi v1.5.4 h1:QHdzF2szwjqVV4wmByUnTcsbIg7UGaQ0tPF2t5GcAIs= -github.com/go-fonts/dejavu v0.3.2 h1:3XlHi0JBYX+Cp8n98c6qSoHrxPa4AUKDMKdrh/0sUdk= -github.com/go-fonts/dejavu v0.3.2/go.mod h1:m+TzKY7ZEl09/a17t1593E4VYW8L1VaBXHzFZOIjGEY= -github.com/go-fonts/latin-modern v0.3.2 h1:M+Sq24Dp0ZRPf3TctPnG1MZxRblqyWC/cRUL9WmdaFc= -github.com/go-fonts/latin-modern v0.3.2/go.mod h1:9odJt4NbRrbdj4UAMuLVd4zEukf6aAEKnDaQga0whqQ= -github.com/go-fonts/liberation v0.3.2 h1:XuwG0vGHFBPRRI8Qwbi5tIvR3cku9LUfZGq/Ar16wlQ= -github.com/go-fonts/liberation v0.3.2/go.mod h1:N0QsDLVUQPy3UYg9XAc3Uh3UDMp2Z7M1o4+X98dXkmI= -github.com/go-fonts/stix v0.2.2 h1:v9krocr13J1llaOHLEol1eaHsv8S43UuFX/1bFgEJJ4= -github.com/go-fonts/stix v0.2.2/go.mod h1:SUxggC9dxd/Q+rb5PkJuvfvTbOPtNc2Qaua00fIp9iU= +github.com/go-fonts/dejavu v0.1.0 h1:JSajPXURYqpr+Cu8U9bt8K+XcACIHWqWrvWCKyeFmVQ= +github.com/go-fonts/latin-modern v0.2.0 h1:5/Tv1Ek/QCr20C6ZOz15vw3g7GELYL98KWr8Hgo+3vk= +github.com/go-fonts/liberation v0.2.0 h1:jAkAWJP4S+OsrPLZM4/eC9iW7CtHy+HBXrEwZXWo5VM= +github.com/go-fonts/stix v0.1.0 h1:UlZlgrvvmT/58o573ot7NFw0vZasZ5I6bcIft/oMdgg= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231223183121-56fa3ac82ce7 h1:7tf/0aw5DxRQjr7WaNqgtjidub6v21L2cogKIbMcTYw= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231223183121-56fa3ac82ce7/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I= github.com/go-jose/go-jose/v4 v4.0.4/go.mod h1:NKb5HO1EZccyMpiZNbdUw/14tiXNyUJh188dfnMCAfc= -github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI= -github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA= -github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-jose/go-jose/v4 v4.1.2 h1:TK/7NqRQZfgAh+Td8AlsrvtPoUyiHh0LqVvokh+1vHI= +github.com/go-jose/go-jose/v4 v4.1.2/go.mod h1:22cg9HWM1pOlnRiY+9cQYJ9XHmya1bYW8OeDM6Ku6Oo= +github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk= github.com/go-kit/log v0.1.0 h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ= -github.com/go-latex/latex v0.0.0-20231108140139-5c1ce85aa4ea h1:DfZQkvEbdmOe+JK2TMtBM+0I9GSdzE2y/L1/AmD8xKc= -github.com/go-latex/latex v0.0.0-20231108140139-5c1ce85aa4ea/go.mod h1:Y7Vld91/HRbTBm7JwoI7HejdDB0u+e9AUBO9MB7yuZk= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 h1:6zl3BbBhdnMkpSj2YY30qV3gDcVBGtFgVsV3+/i+mKQ= github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= -github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= @@ -726,33 +630,23 @@ github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiU github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= -github.com/go-pdf/fpdf v0.9.0 h1:PPvSaUuo1iMi9KkaAn90NuKi+P4gwMedWPHhj8YlJQw= -github.com/go-pdf/fpdf v0.9.0/go.mod h1:oO8N111TkmKb9D7VvWGLvLJlaZUQVPM+6V42pp3iV4Y= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-pdf/fpdf v0.6.0 h1:MlgtGIfsdMEEQJr2le6b/HNr1ZlQwxyWr77r2aj2U/8= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372 h1:FQivqchis6bE2/9uF70M2gmmLpe82esEm2QadL0TEJo= github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372/go.mod h1:evDBbvNR/KaVFZ2ZlDSOWWXIUKq0wCOEtzLxRM8SG3k= -github.com/go-text/typesetting-utils v0.0.0-20230616150549-2a7df14b6a22 h1:LBQTFxP2MfsyEDqSKmUBZaDuDHN1vpqDyOZjcqS7MYI= -github.com/go-text/typesetting-utils v0.0.0-20230616150549-2a7df14b6a22/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o= github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198 h1:FSii2UQeSLngl3jFoR4tUKZLprO7qUlh/TKKticc0BM= github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198/go.mod h1:DTh/Y2+NbnOVVoypCCQrovMPDKUGp4yZpSbWg5D0XIM= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/googleapis v1.1.0 h1:kFkMAZBNAn4j7K0GiZr8cRYzejq68VbheufiV3YuyFI= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I= github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/google/cel-go v0.17.1 h1:s2151PDGy/eqpCI80/8dl4VL3xTkqI/YubXLXCFw0mw= github.com/google/cel-go v0.17.1/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= @@ -775,7 +669,6 @@ github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= github.com/google/trillian v1.6.0 h1:jMBeDBIkINFvS2n6oV5maDqfRlxREAc6CW9QYWQ0qT4= github.com/google/trillian v1.6.0/go.mod h1:Yu3nIMITzNhhMJEHjAtp6xKiu+H/iHu2Oq5FjV2mCWI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/cloud-bigtable-clients-test v0.0.3 h1:afMKTvA/jc6jSTMkeHBZGFDTt8Cc+kb1ATFzqMK85hw= github.com/googleapis/cloud-bigtable-clients-test v0.0.3/go.mod h1:TWtDzrrAI70C3dNLDY+nZN3gxHtFdZIbpL9rCTFyxE0= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= @@ -790,66 +683,22 @@ github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2 github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8 h1:tlyzajkF3030q6M8SvmJSemC9DTHL/xaMa18b65+JM4= github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= -github.com/hashicorp/consul/api v1.3.0 h1:HXNYlRkkM/t+Y/Yhxtwcy02dlYwIaoxzvxPnS+cqy78= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.3.0 h1:UOxjlb4xVNF93jak1mzzoBatyFju9nrkxpVwIp/QqxQ= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= -github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= -github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= -github.com/hudl/fargo v1.3.0 h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= @@ -858,26 +707,17 @@ github.com/jackc/pgx/v5 v5.4.3 h1:cxFyXhxlvAifxnkKKdlxv8XqUf59tDlYjnV5YYfsJJY= github.com/jackc/pgx/v5 v5.4.3/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA= github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= -github.com/jezek/xgb v1.1.1 h1:bE/r8ZZtSv7l9gk6nU0mYx51aXrvnyb44892TwSaqS4= -github.com/jezek/xgb v1.1.1/go.mod h1:nrhwO0FX/enq75I7Y7G8iN1ubpSGZEiA3v9e9GyRFlk= github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5 h1:PJr+ZMXIecYc1Ey2zucXdR73SMBtgjPgwa31099IMv0= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= @@ -890,45 +730,23 @@ github.com/kylelemons/go-gypsy v1.0.0 h1:7/wQ7A3UL1bnqRMnZ6T8cwCOArfZCxFmb1iTxaO github.com/kylelemons/go-gypsy v1.0.0/go.mod h1:chkXM0zjdpXOiqkCW1XcCHDfjfk14PH2KKkQWxfJUcU= github.com/letsencrypt/pkcs11key/v4 v4.0.0 h1:qLc/OznH7xMr5ARJgkZCCWk+EomQkiNTOoOF5LAgagc= github.com/letsencrypt/pkcs11key/v4 v4.0.0/go.mod h1:EFUvBDay26dErnNb70Nd0/VW3tJiIbETBPTl9ATXQag= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743 h1:143Bb8f8DuGWck/xpNUOckBVYfFbBTnLevfRZ1aVVqo= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1 h1:vi1F1IQ8N7hNWytK9DpJsUfQhGuNSc19z330K6vl4zk= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lyft/protoc-gen-star v0.6.1 h1:erE0rdztuaDq3bpGifD95wfoPrSZc95nGA6tbiNYh6M= github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4 h1:sIXJOMrYnQZJu7OB7ANSF4MYri2fTEGIsRLz6LwI4xE= github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= -github.com/lyft/protoc-gen-validate v0.0.13 h1:KNt/RhmQTOLr7Aj8PsJ7mTronaFyx80mRTT9qF261dA= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magefile/mage v1.14.0 h1:6QDX3g6z1YvJ4olPhT1wksUcSa/V0a1B+pJb73fBjyo= github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/mgechev/dots v1.0.0 h1:o+4OJ3OjWzgQHGJXKfJ8rbH4dqDugu5BiEy84nxg0k4= github.com/mgechev/dots v1.0.0/go.mod h1:rykuMydC9t3wfkM+ccYH3U3ss03vZGg6h3hmOznXLH0= -github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU= github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI= -github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= @@ -937,147 +755,61 @@ github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5/go.mod h1: github.com/mreiferson/go-httpclient v0.0.0-20201222173833-5e475fde3a4d h1:tLWCMSjfL8XyZwpu1RzI2UpJSPbZCOZ6DVHQFnlpL7A= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2 h1:i2Ly0B+1+rzNZHHWtD4ZwKi+OU5l+uQo1iDHZ2PmiIc= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1 h1:ik3HbLhZ0YABLto7iX80pZLPw/6dx3T+++MZJwLnMrQ= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3 h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/oklog/oklog v0.3.2 h1:wVfs8F+in6nTBMkA7CbRw+zZMIB7nNM825cM1wuzoTk= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0 h1:LiZB1h0GIcudcDci2bxbqI6DXV8bF8POAnArqvRrIyw= github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0/go.mod h1:F/7q8/HZz+TXjlsoZQQKVYvXTZaFH4QRa3y+j1p7MS0= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0 h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2 h1:nY8Hti+WKaP0cRsSeQ026wU03QsM762XBeCXBb9NAWI= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/otiai10/curr v1.0.0 h1:TJIWdbX0B+kpNagQrjgq8bCMrbhiuX73M2XwgtDMoOI= github.com/otiai10/mint v1.3.1 h1:BCmzIS3n71sGfHB5NMNDB3lHYPz8fWSkCAErHed//qc= -github.com/pact-foundation/pact-go v1.0.4 h1:OYkFijGHoZAYbOIb1LWXrwKQbMMRUv1oQ89blD2Mh2Q= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/performancecopilot/speed v3.0.0+incompatible h1:2WnRzIquHa5QxaJKShDkLM+sc0JPuwhXzK8OYOyt3Vg= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/phpdave11/gofpdf v1.4.2 h1:KPKiIbfwbvC/wOncwhrpRdXVj2CZTCFlw4wnoyjtHfQ= github.com/phpdave11/gofpdi v1.0.13 h1:o61duiW8M9sMlkVXWlvP92sZJtGKENvW3VExs6dZukQ= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/profile v1.2.1 h1:F++O52m40owAmADcojzM+9gyjmMOY/T4oYJkgFDH8RE= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/sftp v1.13.1 h1:I2qBYMChEhIjOgazfJmV3/mZM256btk6wkCDRmW7JYs= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= -github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/prometheus v0.47.2 h1:jWcnuQHz1o1Wu3MZ6nMJDuTI0kU5yJp9pkxh8XEkNvI= github.com/prometheus/prometheus v0.47.2/go.mod h1:J/bmOSjgH7lFxz2gZhrWEZs2i64vMS+HIuZfmYNhJ/M= github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71 h1:CNooiryw5aisadVfzneSZPswRWvnVW8hF1bS/vo8ReI= github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/zerolog v1.21.0 h1:Q3vdXlfLNT+OftyBHsU0Y445MD+8m8axjKgf2si0QcM= -github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= github.com/shirou/gopsutil/v4 v4.25.8 h1:NnAsw9lN7587WHxjJA9ryDnqhJpFH6A+wagYWTOH970= github.com/shirou/gopsutil/v4 v4.25.8/go.mod h1:q9QdMmfAOVIw7a+eF86P7ISEU6ka+NLgkUxlopV4RwI= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1 h1:oMnRNZXX5j85zso6xCPRNPtmAycat+WcoKbklScLDgQ= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271 h1:WhxRHzgeVGETMlmVfqhRn8RIeeNoPr2Czh33I4Zdccw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a h1:AhmOdSHeswKHBjhsLs/7+1voOxT+LLrSk/Nxvk35fug= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/transparency-dev/merkle v0.0.2 h1:Q9nBoQcZcgPamMkGn7ghV8XiTZ/kRxn1yCG81+twTK4= github.com/transparency-dev/merkle v0.0.2/go.mod h1:pqSy+OXefQ1EDUVmAJ8MUhHB9TXGuzVAT58PqBoHz1A= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.14 h1:ebbhrRiGK2i4naQJr+1Xj92HXZCrK7MsyTS/ob3HnAk= github.com/urfave/cli v1.22.14/go.mod h1:X0eDS6pD6Exaclxm99NJ3FiCDRED7vIHpx2mDOHLvkA= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= @@ -1101,15 +833,10 @@ github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 h1:Nzukz5fNOBIHOsnP+6I79k github.com/zmap/zcertificate v0.0.1 h1:2X15TRx4Fr6qzKItfwUdww294OeRSmHILLa+Xn2Uv+s= go.einride.tech/aip v0.68.1 h1:16/AfSxcQISGN5z9C5lM+0mLYXihrHbQ1onvYTr93aQ= go.einride.tech/aip v0.68.1/go.mod h1:XaFtaj4HuA3Zwk9xoBtTWgNubZ0ZZXv9BZJCkuKuWbg= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738 h1:VcrIfasaLFkyjk6KNlXQSzO+B0fZcnECiDrKJsfxka0= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd/client/v2 v2.305.12 h1:0m4ovXYo1CHaA/Mp3X/Fak5sRNIWf01wk/X1/G3sGKI= go.etcd.io/etcd/client/v2 v2.305.12/go.mod h1:aQ/yhsxMu+Oht1FOupSr60oBvcS9cKXHrzBpDsPTf9E= go.etcd.io/etcd/raft/v3 v3.5.12 h1:7r22RufdDsq2z3STjoR7Msz6fYH8tmbkdheGfwJNRmU= go.etcd.io/etcd/raft/v3 v3.5.12/go.mod h1:ERQuZVe79PI6vcC3DlKBukDCLja/L7YMu29B74Iwj4U= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= go.opentelemetry.io/contrib/detectors/gcp v1.36.0 h1:F7q2tNlCaHY9nMKHR6XH9/qkp8FktLnIcy6jJNyOCQw= @@ -1121,86 +848,46 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1: go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/oteltest v0.20.0 h1:HiITxCawalo5vQzdHfKeZurV8x7ljcqAgiWzF6Vaeaw= -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.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= -golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= -golang.org/x/exp v0.0.0-20210722180016-6781d3edade3/go.mod h1:DVyR6MI7P4kEQgvZJSj1fQGrWIi2RzIrfYWycwheUAc= -golang.org/x/exp v0.0.0-20221012211006-4de253d81b95/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= -golang.org/x/exp/shiny v0.0.0-20220827204233-334a2380cb91/go.mod h1:VjAR7z0ngyATZTELrBSkxOOHhhlnVUxDye4mcjx5h/8= -golang.org/x/exp/shiny v0.0.0-20240707233637-46b078467d37/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c h1:jTMrjjZRcSH/BDxWhXCP6OWsfVgmnwI7J+F4/nyVXaU= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= -golang.org/x/image v0.5.0/go.mod h1:FVC7BI/5Ym8R25iw5OLsgshdUBbT1h5jZTpA+mvAdZ4= -golang.org/x/image v0.12.0/go.mod h1:Lu90jvHG7GfemOIcldsh9A2hS01ocl6oNO7ype5mEnk= -golang.org/x/image v0.13.0/go.mod h1:6mmbMOeV28HuMTgA6OSRkdXKYw/t5W9Uwn2Yv1r3Yxk= -golang.org/x/image v0.14.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE= -golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78= -golang.org/x/image v0.24.0/go.mod h1:4b/ITuLfqYq1hqZcjofwctIhi7sZh2WaCjvsBNjjya8= -golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ= -golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/mobile v0.0.0-20201217150744-e6ae53a27f4f/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4= -golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a h1:sYbmY3FwUWCBTodZL1S3JUuOvaW6kM2o+clDzzDNBWg= -golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a/go.mod h1:Ede7gF0KGoHlj822RtphAHK1jLdrcuRBZg0sF1Q+SPc= -golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= @@ -1220,19 +907,11 @@ golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -1241,7 +920,6 @@ golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= @@ -1250,28 +928,15 @@ golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= -golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= -gonum.org/v1/gonum v0.15.1/go.mod h1:eZTZuRFrzu5pcyjN5wJhcIhnUdNijYxX1T2IcrOGY0o= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= -gonum.org/v1/plot v0.15.2 h1:Tlfh/jBk2tqjLZ4/P8ZIwGrLEWQSPDLRm/SNWKNXiGI= -gonum.org/v1/plot v0.15.2/go.mod h1:DX+x+DWso3LTha+AdkJEv5Txvi+Tql3KAGkehP0/Ubg= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.160.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= google.golang.org/api v0.222.0/go.mod h1:efZia3nXpWELrwMlN5vyQrD4GmJN1Vw0x68Et3r+a9c= google.golang.org/api v0.229.0/go.mod h1:wyDfmq5g1wYJWn29O22FDWN48P7Xcz0xz+LBpptYvB0= @@ -1279,10 +944,8 @@ google.golang.org/api v0.232.0/go.mod h1:p9QCfBWZk1IJETUdbTKloR5ToFdKbYh2fkjsUL6 google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= google.golang.org/api v0.246.0 h1:H0ODDs5PnMZVZAEtdLMn2Ul2eQi7QNjqM2DIFp8TlTM= google.golang.org/api v0.246.0/go.mod h1:dMVhVcylamkirHdzEBAIQWUCgqY885ivNeZYd7VAVr8= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= google.golang.org/genproto v0.0.0-20250122153221-138b5a5a4fd4/go.mod h1:qbZzneIOXSq+KFAFut9krLfRLZiFLzZL5u2t8SV83EE= @@ -1299,7 +962,7 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250425173222-7b384671a197/go. google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:pKLAc5OolXC3ViWGI62vvC0n10CpwAtRcTNCFwTKBEw= google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= +google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:oDOGiMSXHL4sDTJvFvIB9nRQCGdLP1o/iVaqQK8zB+M= google.golang.org/genproto/googleapis/bytestream v0.0.0-20250728155136-f173205681a0 h1:HyHZz/b6hYFm/aS2F0DOAyjK5mQw0Jh8YiZyqlXMfic= google.golang.org/genproto/googleapis/bytestream v0.0.0-20250728155136-f173205681a0/go.mod h1:h6yxum/C2qRb4txaZRLDHK8RyS0H/o2oEDeKY4onY/Y= google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= @@ -1313,15 +976,10 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250505200425-f936aa4a68b2/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= @@ -1344,27 +1002,18 @@ google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/ google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= -gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg= gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= k8s.io/api v0.27.4 h1:0pCo/AN9hONazBKlNUdhQymmnfLRbSZjd5H5H3f0bSs= k8s.io/apimachinery v0.27.4 h1:CdxflD4AF61yewuid0fLl6bM4a3q04jWel0IlP+aYjs= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c h1:GohjlNKauSai7gN4wsJkeZ3WAJx4Sh+oT/b5IYn5suA= @@ -1391,6 +1040,3 @@ sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMm sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/pkg/go.mod b/pkg/go.mod index 73db60053e60..17dde3256a3e 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -14,7 +14,7 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 go.uber.org/zap v1.27.0 golang.org/x/sys v0.37.0 - google.golang.org/grpc v1.75.1 + google.golang.org/grpc v1.76.0 ) require ( diff --git a/pkg/go.sum b/pkg/go.sum index 4ed6e94c7667..4e676b596589 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -63,8 +63,8 @@ gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index 978f78f31ad7..f01a4c91da78 100644 --- a/server/go.mod +++ b/server/go.mod @@ -41,7 +41,7 @@ require ( golang.org/x/net v0.46.0 golang.org/x/time v0.14.0 google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 - google.golang.org/grpc v1.75.1 + google.golang.org/grpc v1.76.0 google.golang.org/protobuf v1.36.10 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.6.0 diff --git a/server/go.sum b/server/go.sum index ec69ca8bd826..b1b7e97f62a9 100644 --- a/server/go.sum +++ b/server/go.sum @@ -172,8 +172,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index 0f415e88775c..79eaad8b8642 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -50,7 +50,7 @@ require ( golang.org/x/crypto v0.43.0 golang.org/x/sync v0.17.0 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.75.1 + google.golang.org/grpc v1.76.0 google.golang.org/protobuf v1.36.10 ) diff --git a/tests/go.sum b/tests/go.sum index a5974923dba6..571f1ef0608e 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -263,8 +263,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 6b22da185d6c..e966e37c1f08 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -245,7 +245,7 @@ require ( golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect - google.golang.org/grpc v1.75.1 // indirect + google.golang.org/grpc v1.76.0 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 27a723546dd4..40d91ed22725 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -714,8 +714,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1: google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index c5ff8394ca41..ce6ac8bb25b5 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -7,20 +7,21 @@ toolchain go1.25.4 require ( github.com/spf13/cobra v1.10.1 github.com/spf13/pflag v1.0.10 - gonum.org/v1/plot v0.14.0 + gonum.org/v1/plot v0.15.2 ) require ( - git.sr.ht/~sbinet/gg v0.5.0 // indirect + codeberg.org/go-fonts/liberation v0.5.0 // indirect + codeberg.org/go-latex/latex v0.1.0 // indirect + codeberg.org/go-pdf/fpdf v0.10.0 // indirect + git.sr.ht/~sbinet/gg v0.6.0 // indirect github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b // indirect github.com/campoy/embedmd v1.0.0 // indirect - github.com/go-fonts/liberation v0.3.1 // indirect - github.com/go-latex/latex v0.0.0-20230307184459-12ec69307ad9 // indirect - github.com/go-pdf/fpdf v0.8.0 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/image v0.18.0 // indirect + golang.org/x/image v0.25.0 // indirect golang.org/x/text v0.30.0 // indirect + gonum.org/v1/gonum v0.16.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index b2e59c39336a..13a93cad8687 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -1,7 +1,17 @@ +codeberg.org/go-fonts/dejavu v0.4.0 h1:2yn58Vkh4CFK3ipacWUAIE3XVBGNa0y1bc95Bmfx91I= +codeberg.org/go-fonts/dejavu v0.4.0/go.mod h1:abni088lmhQJvso2Lsb7azCKzwkfcnttl6tL1UTWKzg= +codeberg.org/go-fonts/latin-modern v0.4.0 h1:vkRCc1y3whKA7iL9Ep0fSGVuJfqjix0ica9UflHORO8= +codeberg.org/go-fonts/latin-modern v0.4.0/go.mod h1:BF68mZznJ9QHn+hic9ks2DaFl4sR5YhfM6xTYaP9vNw= +codeberg.org/go-fonts/liberation v0.5.0 h1:SsKoMO1v1OZmzkG2DY+7ZkCL9U+rrWI09niOLfQ5Bo0= +codeberg.org/go-fonts/liberation v0.5.0/go.mod h1:zS/2e1354/mJ4pGzIIaEtm/59VFCFnYC7YV6YdGl5GU= +codeberg.org/go-latex/latex v0.1.0 h1:hoGO86rIbWVyjtlDLzCqZPjNykpWQ9YuTZqAzPcfL3c= +codeberg.org/go-latex/latex v0.1.0/go.mod h1:LA0q/AyWIYrqVd+A9Upkgsb+IqPcmSTKc9Dny04MHMw= +codeberg.org/go-pdf/fpdf v0.10.0 h1:u+w669foDDx5Ds43mpiiayp40Ov6sZalgcPMDBcZRd4= +codeberg.org/go-pdf/fpdf v0.10.0/go.mod h1:Y0DGRAdZ0OmnZPvjbMp/1bYxmIPxm0ws4tfoPOc4LjU= git.sr.ht/~sbinet/cmpimg v0.1.0 h1:E0zPRk2muWuCqSKSVZIWsgtU9pjsw3eKHi8VmQeScxo= git.sr.ht/~sbinet/cmpimg v0.1.0/go.mod h1:FU12psLbF4TfNXkKH2ZZQ29crIqoiqTZmeQ7dkp/pxE= -git.sr.ht/~sbinet/gg v0.5.0 h1:6V43j30HM623V329xA9Ntq+WJrMjDxRjuAB1LFWF5m8= -git.sr.ht/~sbinet/gg v0.5.0/go.mod h1:G2C0eRESqlKhS7ErsNey6HHrqU1PwsnCQlekFi9Q2Oo= +git.sr.ht/~sbinet/gg v0.6.0 h1:RIzgkizAk+9r7uPzf/VfbJHBMKUr0F5hRFxTUGMnt38= +git.sr.ht/~sbinet/gg v0.6.0/go.mod h1:uucygbfC9wVPQIfrmwM2et0imr8L7KQWywX0xpFMm94= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= @@ -10,16 +20,6 @@ github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGW github.com/campoy/embedmd v1.0.0 h1:V4kI2qTJJLf4J29RzI/MAt2c3Bl4dQSYPuflzwFH2hY= github.com/campoy/embedmd v1.0.0/go.mod h1:oxyr9RCiSXg0M3VJ3ks0UGfp98BpSSGr0kpiX3MzVl8= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= -github.com/go-fonts/dejavu v0.1.0 h1:JSajPXURYqpr+Cu8U9bt8K+XcACIHWqWrvWCKyeFmVQ= -github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= -github.com/go-fonts/latin-modern v0.3.1 h1:/cT8A7uavYKvglYXvrdDw4oS5ZLkcOU22fa2HJ1/JVM= -github.com/go-fonts/latin-modern v0.3.1/go.mod h1:ysEQXnuT/sCDOAONxC7ImeEDVINbltClhasMAqEtRK0= -github.com/go-fonts/liberation v0.3.1 h1:9RPT2NhUpxQ7ukUvz3jeUckmN42T9D9TpjtQcqK/ceM= -github.com/go-fonts/liberation v0.3.1/go.mod h1:jdJ+cqF+F4SUL2V+qxBth8fvBpBDS7yloUL5Fi8GTGY= -github.com/go-latex/latex v0.0.0-20230307184459-12ec69307ad9 h1:NxXI5pTAtpEaU49bpLpQoDsu1zrteW/vxzTz8Cd2UAs= -github.com/go-latex/latex v0.0.0-20230307184459-12ec69307ad9/go.mod h1:gWuR/CrFDDeVRFQwHPvsv9soJVB/iqymhuZQuJ3a9OM= -github.com/go-pdf/fpdf v0.8.0 h1:IJKpdaagnWUeSkUFUjTcSzTppFxmv8ucGQyNPQWxYOQ= -github.com/go-pdf/fpdf v0.8.0/go.mod h1:gfqhcNwXrsd3XYKte9a7vM3smvU/jB4ZRDrmWSxpfdc= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= @@ -40,8 +40,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= -golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ= -golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E= +golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ= +golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -62,10 +62,10 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.14.0 h1:2NiG67LD1tEH0D7kM+ps2V+fXmsAnpUeec7n8tcr4S0= -gonum.org/v1/gonum v0.14.0/go.mod h1:AoWeoz0becf9QMWtE8iWXNXc27fK4fNeHNf/oMejGfU= -gonum.org/v1/plot v0.14.0 h1:+LBDVFYwFe4LHhdP8coW6296MBEY4nQ+Y4vuUpJopcE= -gonum.org/v1/plot v0.14.0/go.mod h1:MLdR9424SJed+5VqC6MsouEpig9pZX2VZ57H9ko2bXU= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/plot v0.15.2 h1:Tlfh/jBk2tqjLZ4/P8ZIwGrLEWQSPDLRm/SNWKNXiGI= +gonum.org/v1/plot v0.15.2/go.mod h1:DX+x+DWso3LTha+AdkJEv5Txvi+Tql3KAGkehP0/Ubg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index d4f4bfbf312f..a1afcbacd5e2 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -19,5 +19,5 @@ require ( golang.org/x/sys v0.37.0 // indirect golang.org/x/text v0.30.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect - google.golang.org/grpc v1.75.1 // indirect + google.golang.org/grpc v1.76.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index c3c1e6fc78c3..bfa68b1437a7 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1891,8 +1891,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From cb9f17e7ca078e6ba86a51096a5f90b0e8c1bebe Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 7 Nov 2025 15:57:01 -0800 Subject: [PATCH 0642/1068] build(deps): bump github.com/golangci/golangci-lint/v2 from 2.5.0 to 2.6.0 Reference: https://github.com/etcd-io/etcd/pull/20880 Signed-off-by: Ivan Valdes --- go.work.sum | 54 ++++++++++++++---------- tools/mod/go.mod | 48 ++++++++++----------- tools/mod/go.sum | 108 +++++++++++++++++++++++------------------------ 3 files changed, 110 insertions(+), 100 deletions(-) diff --git a/go.work.sum b/go.work.sum index cbd3309b69d9..bb1e594a91f1 100644 --- a/go.work.sum +++ b/go.work.sum @@ -24,8 +24,6 @@ cloud.google.com/go/accesscontextmanager v1.8.4/go.mod h1:ParU+WbMpD34s5JFEnGAnP cloud.google.com/go/accesscontextmanager v1.9.3/go.mod h1:S1MEQV5YjkAKBoMekpGrkXKfrBdsi4x6Dybfq6gZ8BU= cloud.google.com/go/accesscontextmanager v1.9.6 h1:2LnncRqfYB8NEdh9+FeYxAt9POTW/0zVboktnRlO11w= cloud.google.com/go/accesscontextmanager v1.9.6/go.mod h1:884XHwy1AQpCX5Cj2VqYse77gfLaq9f8emE2bYriilk= -cloud.google.com/go/ai v0.12.1 h1:m1n/VjUuHS+pEO/2R4/VbuuEIkgk0w67fDQvFaMngM0= -cloud.google.com/go/ai v0.12.1/go.mod h1:5vIPNe1ZQsVZqCliXIPL4QnhObQQY4d9hAGHdVc4iw4= cloud.google.com/go/aiplatform v1.58.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= cloud.google.com/go/aiplatform v1.74.0/go.mod h1:hVEw30CetNut5FrblYd1AJUWRVSIjoyIvp0EVUh51HA= cloud.google.com/go/aiplatform v1.89.0 h1:niSJYc6ldWWVM9faXPo1Et1MVSQoLvVGriD7fwbJdtE= @@ -70,8 +68,9 @@ cloud.google.com/go/assuredworkloads v1.12.6/go.mod h1:QyZHd7nH08fmZ+G4ElihV1zoZ cloud.google.com/go/auth v0.14.1/go.mod h1:4JHUxlGXisL0AW8kXPtUF6ztuOksyfUQNFjfsOCXkPM= cloud.google.com/go/auth v0.16.0/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= cloud.google.com/go/auth v0.16.1/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= -cloud.google.com/go/auth v0.16.3 h1:kabzoQ9/bobUmnseYnBO6qQG7q4a/CffFRlJSxv2wCc= -cloud.google.com/go/auth v0.16.3/go.mod h1:NucRGjaXfzP1ltpcQ7On/VTZ0H4kWB5Jy+Y9Dnm76fA= +cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= +cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI= +cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ= cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= @@ -133,8 +132,9 @@ cloud.google.com/go/compute v1.38.0 h1:MilCLYQW2m7Dku8hRIIKo4r0oKastlD74sSu16riY cloud.google.com/go/compute v1.38.0/go.mod h1:oAFNIuXOmXbK/ssXm3z4nZB8ckPdjltJ7xhHCdbWFZM= cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/compute/metadata v0.8.0 h1:HxMRIbao8w17ZX6wBnjhcDkW6lTFpgcaobyVfZWqRLA= +cloud.google.com/go/compute/metadata v0.8.0/go.mod h1:sYOGTp851OV9bOFJ9CH7elVvyzopvWQFNNghtDQ/Biw= cloud.google.com/go/contactcenterinsights v1.12.1/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= cloud.google.com/go/contactcenterinsights v1.17.1/go.mod h1:n8OiNv7buLA2AkGVkfuvtW3HU13AdTmEwAlAu46bfxY= cloud.google.com/go/contactcenterinsights v1.17.3 h1:lenyU3uzHwKDveCwmpfNxHYvLS3uEBWdn+O7+rSxy+Q= @@ -540,6 +540,8 @@ github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4 github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0 h1:uF5Q/hWnDU1XZeT6CsrRSxHLroUSEYYO3kgES+yd+So= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0/go.mod h1:ccdDYaY5+gO+cbnQdFxEXqfy0RkoV25H3jLXUDNM3wg= +github.com/anthropics/anthropic-sdk-go v1.13.0 h1:Bhbe8sRoDPtipttg8bQYrMCKe2b79+q6rFW1vOKEUKI= +github.com/anthropics/anthropic-sdk-go v1.13.0/go.mod h1:WTz31rIUHUHqai2UslPpw5CwXrQP3geYBioRV4WOLvE= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9 h1:goHVqTbFX3AIo0tzGr14pgfAW2ZfPChKO21Z9MGf/gk= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= @@ -587,8 +589,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo github.com/cristalhq/acmd v0.12.0 h1:RdlKnxjN+txbQosg8p/TRNZ+J1Rdne43MVQZ1zDhGWk= github.com/cristalhq/acmd v0.12.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ= -github.com/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw= -github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/ebitengine/purego v0.9.0 h1:mh0zpKBIXDceC63hpvPuGLiJ8ZAa3DfrFTudmfi8A4k= +github.com/ebitengine/purego v0.9.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= @@ -652,8 +654,6 @@ github.com/google/cel-go v0.17.1 h1:s2151PDGy/eqpCI80/8dl4VL3xTkqI/YubXLXCFw0mw= github.com/google/cel-go v0.17.1/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/generative-ai-go v0.20.1 h1:6dEIujpgN2V0PgLhr6c/M1ynRdc7ARtiIDPFzj45uNQ= -github.com/google/generative-ai-go v0.20.1/go.mod h1:TjOnZJmZKzarWbjUJgy+r3Ee7HGBRVLhOIgupnwR4Bg= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v50 v50.2.0 h1:j2FyongEHlO9nxXLc+LP3wuBSVU9mVxfpdYUexMpIfk= @@ -681,10 +681,12 @@ github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81 github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8 h1:tlyzajkF3030q6M8SvmJSemC9DTHL/xaMa18b65+JM4= -github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= -github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= +github.com/gookit/color v1.6.0 h1:JjJXBTk1ETNyqyilJhkTXJYYigHG24TM9Xa2M1xAhRA= +github.com/gookit/color v1.6.0/go.mod h1:9ACFc7/1IpHGBW8RwuDm/0YEnhg3dwwXpoMsmtyHfjs= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= @@ -750,8 +752,8 @@ github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8D github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5 h1:0KqC6/sLy7fDpBdybhVkkv4Yz+PmB7c9Dz9z3dLW804= -github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= +github.com/mozilla/tls-observatory v0.0.0-20250923143331-eef96233227e h1:gOlpekCwR+xjqedQsHo1c7aUSixaQUIe3sAcEeDCMLc= +github.com/mozilla/tls-observatory v0.0.0-20250923143331-eef96233227e/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= github.com/mreiferson/go-httpclient v0.0.0-20201222173833-5e475fde3a4d h1:tLWCMSjfL8XyZwpu1RzI2UpJSPbZCOZ6DVHQFnlpL7A= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= @@ -786,8 +788,8 @@ github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY= github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= -github.com/shirou/gopsutil/v4 v4.25.8 h1:NnAsw9lN7587WHxjJA9ryDnqhJpFH6A+wagYWTOH970= -github.com/shirou/gopsutil/v4 v4.25.8/go.mod h1:q9QdMmfAOVIw7a+eF86P7ISEU6ka+NLgkUxlopV4RwI= +github.com/shirou/gopsutil/v4 v4.25.9 h1:JImNpf6gCVhKgZhtaAHJ0serfFGtlfIlSC08eaKdTrU= +github.com/shirou/gopsutil/v4 v4.25.9/go.mod h1:gxIxoC+7nQRwUl/xNhutXlD8lq+jxTgpIkEf3rADHL8= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= @@ -800,6 +802,14 @@ github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GB github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= @@ -881,6 +891,7 @@ golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5 golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c h1:jTMrjjZRcSH/BDxWhXCP6OWsfVgmnwI7J+F4/nyVXaU= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= @@ -902,7 +913,6 @@ golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/net v0.45.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= -golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= @@ -941,11 +951,12 @@ google.golang.org/api v0.160.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9 google.golang.org/api v0.222.0/go.mod h1:efZia3nXpWELrwMlN5vyQrD4GmJN1Vw0x68Et3r+a9c= google.golang.org/api v0.229.0/go.mod h1:wyDfmq5g1wYJWn29O22FDWN48P7Xcz0xz+LBpptYvB0= google.golang.org/api v0.232.0/go.mod h1:p9QCfBWZk1IJETUdbTKloR5ToFdKbYh2fkjsUL6vNoY= +google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= -google.golang.org/api v0.246.0 h1:H0ODDs5PnMZVZAEtdLMn2Ul2eQi7QNjqM2DIFp8TlTM= -google.golang.org/api v0.246.0/go.mod h1:dMVhVcylamkirHdzEBAIQWUCgqY885ivNeZYd7VAVr8= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= +google.golang.org/genai v1.30.0 h1:7021aneIvl24nEBLbtQFEWleHsMbjzpcQvkT4WcJ1dc= +google.golang.org/genai v1.30.0/go.mod h1:7pAilaICJlQBonjKKJNhftDFv3SREhZcTe9F6nRcjbg= google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= google.golang.org/genproto v0.0.0-20250122153221-138b5a5a4fd4/go.mod h1:qbZzneIOXSq+KFAFut9krLfRLZiFLzZL5u2t8SV83EE= @@ -963,8 +974,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2/go. google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:oDOGiMSXHL4sDTJvFvIB9nRQCGdLP1o/iVaqQK8zB+M= -google.golang.org/genproto/googleapis/bytestream v0.0.0-20250728155136-f173205681a0 h1:HyHZz/b6hYFm/aS2F0DOAyjK5mQw0Jh8YiZyqlXMfic= -google.golang.org/genproto/googleapis/bytestream v0.0.0-20250728155136-f173205681a0/go.mod h1:h6yxum/C2qRb4txaZRLDHK8RyS0H/o2oEDeKY4onY/Y= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20250603155806-513f23925822 h1:zWFRixYR5QlotL+Uv3YfsPRENIrQFXiGs+iwqel6fOQ= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20250603155806-513f23925822/go.mod h1:h6yxum/C2qRb4txaZRLDHK8RyS0H/o2oEDeKY4onY/Y= google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= @@ -973,10 +984,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250227231956-55c901821b1e/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20250414145226-207652e42e2e/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= @@ -999,6 +1008,7 @@ google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWn google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index e966e37c1f08..a505ec36a58f 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -9,7 +9,7 @@ require ( github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint/v2 v2.5.0 + github.com/golangci/golangci-lint/v2 v2.6.0 github.com/google/yamlfmt v0.20.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/ryancurrah/gomodguard v1.4.1 @@ -30,7 +30,7 @@ require ( dev.gaijin.team/go/golib v0.6.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/4meepo/tagalign v1.4.3 // indirect - github.com/Abirdcfly/dupword v0.1.6 // indirect + github.com/Abirdcfly/dupword v0.1.7 // indirect github.com/AdminBenni/iota-mixing v1.0.0 // indirect github.com/AlwxSin/noinlineerr v1.0.5 // indirect github.com/Antonboom/errname v1.1.1 // indirect @@ -38,7 +38,7 @@ require ( github.com/Antonboom/testifylint v1.6.4 // indirect github.com/BurntSushi/toml v1.5.0 // indirect github.com/Djarvur/go-err113 v0.1.1 // indirect - github.com/Masterminds/semver/v3 v3.3.1 // indirect + github.com/Masterminds/semver/v3 v3.4.0 // indirect github.com/MirrexOne/unqueryvet v1.2.1 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect github.com/alecthomas/chroma/v2 v2.20.0 // indirect @@ -48,8 +48,8 @@ require ( github.com/alfatraining/structtag v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect github.com/alingse/nilnesserr v0.2.0 // indirect - github.com/ashanbrown/forbidigo/v2 v2.1.0 // indirect - github.com/ashanbrown/makezero/v2 v2.0.1 // indirect + github.com/ashanbrown/forbidigo/v2 v2.3.0 // indirect + github.com/ashanbrown/makezero/v2 v2.1.0 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bitfield/gotestdox v0.2.2 // indirect @@ -57,15 +57,15 @@ require ( github.com/blizzy78/varnamelen v0.8.0 // indirect github.com/bmatcuk/doublestar/v4 v4.8.1 // indirect github.com/bombsimon/wsl/v4 v4.7.0 // indirect - github.com/bombsimon/wsl/v5 v5.2.0 // indirect + github.com/bombsimon/wsl/v5 v5.3.0 // indirect github.com/breml/bidichk v0.3.3 // indirect github.com/breml/errchkjson v0.4.1 // indirect github.com/butuzov/ireturn v0.4.0 // indirect github.com/butuzov/mirror v1.3.0 // indirect - github.com/catenacyber/perfsprint v0.9.1 // indirect + github.com/catenacyber/perfsprint v0.10.0 // indirect github.com/ccojocar/zxcvbn-go v1.0.4 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/charithe/durationcheck v0.0.10 // indirect + github.com/charithe/durationcheck v0.0.11 // indirect github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect github.com/charmbracelet/lipgloss v1.1.0 // indirect github.com/charmbracelet/x/ansi v0.8.0 // indirect @@ -85,8 +85,8 @@ require ( github.com/firefart/nonamedreturns v1.0.6 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect - github.com/ghostiam/protogetter v0.3.16 // indirect - github.com/go-critic/go-critic v0.13.0 // indirect + github.com/ghostiam/protogetter v0.3.17 // indirect + github.com/go-critic/go-critic v0.14.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-sql-driver/mysql v1.8.1 // indirect github.com/go-toolsmith/astcast v1.1.0 // indirect @@ -99,8 +99,8 @@ require ( github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/godoc-lint/godoc-lint v0.10.0 // indirect - github.com/gofrs/flock v0.12.1 // indirect + github.com/godoc-lint/godoc-lint v0.10.1 // indirect + github.com/gofrs/flock v0.13.0 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golangci/asciicheck v0.5.0 // indirect github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect @@ -108,7 +108,6 @@ require ( github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 // indirect github.com/golangci/misspell v0.7.0 // indirect - github.com/golangci/nilerr v0.0.0-20250918000102-015671e622fe // indirect github.com/golangci/plugin-module-register v0.1.2 // indirect github.com/golangci/revgrep v0.8.0 // indirect github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e // indirect @@ -120,6 +119,7 @@ require ( github.com/gostaticanalysis/analysisutil v0.7.1 // indirect github.com/gostaticanalysis/comment v1.5.0 // indirect github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect + github.com/gostaticanalysis/nilerr v0.1.2 // indirect github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect @@ -136,10 +136,10 @@ require ( github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 // indirect github.com/kkHAIKE/contextcheck v1.1.6 // indirect github.com/kulti/thelper v0.7.1 // indirect - github.com/kunwardeep/paralleltest v1.0.14 // indirect + github.com/kunwardeep/paralleltest v1.0.15 // indirect github.com/lasiar/canonicalheader v1.1.2 // indirect - github.com/ldez/exptostd v0.4.4 // indirect - github.com/ldez/gomoddirectives v0.7.0 // indirect + github.com/ldez/exptostd v0.4.5 // indirect + github.com/ldez/gomoddirectives v0.7.1 // indirect github.com/ldez/grignotin v0.10.1 // indirect github.com/ldez/tagliatelle v0.7.2 // indirect github.com/ldez/usetesting v0.5.0 // indirect @@ -165,7 +165,7 @@ require ( github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect - github.com/nunnatsa/ginkgolinter v0.21.0 // indirect + github.com/nunnatsa/ginkgolinter v0.21.2 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d // indirect @@ -176,7 +176,7 @@ require ( github.com/prometheus/common v0.67.1 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/quasilyte/go-ruleguard v0.4.4 // indirect - github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect + github.com/quasilyte/go-ruleguard/dsl v0.3.23 // indirect github.com/quasilyte/gogrep v0.5.0 // indirect github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect @@ -190,7 +190,7 @@ require ( github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect - github.com/securego/gosec/v2 v2.22.8 // indirect + github.com/securego/gosec/v2 v2.22.10 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sivchari/containedctx v1.0.3 // indirect github.com/sonatard/noctx v0.4.0 // indirect @@ -226,8 +226,8 @@ require ( gitlab.com/bosi/decorder v0.4.2 // indirect go-simpler.org/musttag v0.14.0 // indirect go-simpler.org/sloglint v0.11.1 // indirect - go.augendre.info/arangolint v0.2.0 // indirect - go.augendre.info/fatcontext v0.8.1 // indirect + go.augendre.info/arangolint v0.3.1 // indirect + go.augendre.info/fatcontext v0.9.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect @@ -235,7 +235,7 @@ require ( go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.43.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/exp/typeparams v0.0.0-20250911091902-df9299821621 // indirect + golang.org/x/exp/typeparams v0.0.0-20251002181428-27f1f14c8bb9 // indirect golang.org/x/mod v0.29.0 // indirect golang.org/x/net v0.46.0 // indirect golang.org/x/sync v0.17.0 // indirect @@ -249,6 +249,6 @@ require ( google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect - mvdan.cc/gofumpt v0.9.1 // indirect - mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 // indirect + mvdan.cc/gofumpt v0.9.2 // indirect + mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15 // indirect ) diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 40d91ed22725..a66ca21d36a2 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -13,8 +13,8 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/4meepo/tagalign v1.4.3 h1:Bnu7jGWwbfpAie2vyl63Zup5KuRv21olsPIha53BJr8= github.com/4meepo/tagalign v1.4.3/go.mod h1:00WwRjiuSbrRJnSVeGWPLp2epS5Q/l4UEy0apLLS37c= -github.com/Abirdcfly/dupword v0.1.6 h1:qeL6u0442RPRe3mcaLcbaCi2/Y/hOcdtw6DE9odjz9c= -github.com/Abirdcfly/dupword v0.1.6/go.mod h1:s+BFMuL/I4YSiFv29snqyjwzDp4b65W2Kvy+PKzZ6cw= +github.com/Abirdcfly/dupword v0.1.7 h1:2j8sInznrje4I0CMisSL6ipEBkeJUJAmK1/lfoNGWrQ= +github.com/Abirdcfly/dupword v0.1.7/go.mod h1:K0DkBeOebJ4VyOICFdppB23Q0YMOgVafM0zYW0n9lF4= github.com/AdminBenni/iota-mixing v1.0.0 h1:Os6lpjG2dp/AE5fYBPAA1zfa2qMdCAWwPMCgpwKq7wo= github.com/AdminBenni/iota-mixing v1.0.0/go.mod h1:i4+tpAaB+qMVIV9OK3m4/DAynOd5bQFaOu+2AhtBCNY= github.com/AlwxSin/noinlineerr v1.0.5 h1:RUjt63wk1AYWTXtVXbSqemlbVTb23JOSRiNsshj7TbY= @@ -29,8 +29,8 @@ github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/Djarvur/go-err113 v0.1.1 h1:eHfopDqXRwAi+YmCUas75ZE0+hoBHJ2GQNLYRSxao4g= github.com/Djarvur/go-err113 v0.1.1/go.mod h1:IaWJdYFLg76t2ihfflPZnM1LIQszWOsFDh2hhhAVF6k= -github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= -github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= +github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/MirrexOne/unqueryvet v1.2.1 h1:M+zdXMq84g+E1YOLa7g7ExN3dWfZQrdDSTCM7gC+m/A= github.com/MirrexOne/unqueryvet v1.2.1/go.mod h1:IWwCwMQlSWjAIteW0t+28Q5vouyktfujzYznSIWiuOg= github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= @@ -58,10 +58,10 @@ github.com/alingse/nilnesserr v0.2.0 h1:raLem5KG7EFVb4UIDAXgrv3N2JIaffeKNtcEXkEW github.com/alingse/nilnesserr v0.2.0/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c h1:xv0ICJ4AO52aNZ+vI2KFUYZBMh7dHvROixZ1vzMMfu8= github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c/go.mod h1:Y5/1I+0gnnhHKyX4z65mgaGTJ08tnz9WUgkoymA/cws= -github.com/ashanbrown/forbidigo/v2 v2.1.0 h1:NAxZrWqNUQiDz19FKScQ/xvwzmij6BiOw3S0+QUQ+Hs= -github.com/ashanbrown/forbidigo/v2 v2.1.0/go.mod h1:0zZfdNAuZIL7rSComLGthgc/9/n2FqspBOH90xlCHdA= -github.com/ashanbrown/makezero/v2 v2.0.1 h1:r8GtKetWOgoJ4sLyUx97UTwyt2dO7WkGFHizn/Lo8TY= -github.com/ashanbrown/makezero/v2 v2.0.1/go.mod h1:kKU4IMxmYW1M4fiEHMb2vc5SFoPzXvgbMR9gIp5pjSw= +github.com/ashanbrown/forbidigo/v2 v2.3.0 h1:OZZDOchCgsX5gvToVtEBoV2UWbFfI6RKQTir2UZzSxo= +github.com/ashanbrown/forbidigo/v2 v2.3.0/go.mod h1:5p6VmsG5/1xx3E785W9fouMxIOkvY2rRV9nMdWadd6c= +github.com/ashanbrown/makezero/v2 v2.1.0 h1:snuKYMbqosNokUKm+R6/+vOPs8yVAi46La7Ck6QYSaE= +github.com/ashanbrown/makezero/v2 v2.1.0/go.mod h1:aEGT/9q3S8DHeE57C88z2a6xydvgx8J5hgXIGWgo0MY= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -76,8 +76,8 @@ github.com/bmatcuk/doublestar/v4 v4.8.1 h1:54Bopc5c2cAvhLRAzqOGCYHYyhcDHsFF4wWIR github.com/bmatcuk/doublestar/v4 v4.8.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bombsimon/wsl/v4 v4.7.0 h1:1Ilm9JBPRczjyUs6hvOPKvd7VL1Q++PL8M0SXBDf+jQ= github.com/bombsimon/wsl/v4 v4.7.0/go.mod h1:uV/+6BkffuzSAVYD+yGyld1AChO7/EuLrCF/8xTiapg= -github.com/bombsimon/wsl/v5 v5.2.0 h1:PyCCwd3Q7abGs3e34IW4jLYlBS+FbsU6iK+Tb3NnDp4= -github.com/bombsimon/wsl/v5 v5.2.0/go.mod h1:Gp8lD04z27wm3FANIUPZycXp+8huVsn0oxc+n4qfV9I= +github.com/bombsimon/wsl/v5 v5.3.0 h1:nZWREJFL6U3vgW/B1lfDOigl+tEF6qgs6dGGbFeR0UM= +github.com/bombsimon/wsl/v5 v5.3.0/go.mod h1:Gp8lD04z27wm3FANIUPZycXp+8huVsn0oxc+n4qfV9I= github.com/breml/bidichk v0.3.3 h1:WSM67ztRusf1sMoqH6/c4OBCUlRVTKq+CbSeo0R17sE= github.com/breml/bidichk v0.3.3/go.mod h1:ISbsut8OnjB367j5NseXEGGgO/th206dVa427kR8YTE= github.com/breml/errchkjson v0.4.1 h1:keFSS8D7A2T0haP9kzZTi7o26r7kE3vymjZNeNDRDwg= @@ -87,14 +87,14 @@ github.com/butuzov/ireturn v0.4.0/go.mod h1:ghI0FrCmap8pDWZwfPisFD1vEc56VKH4NpQU github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/catenacyber/perfsprint v0.9.1 h1:5LlTp4RwTooQjJCvGEFV6XksZvWE7wCOUvjD2z0vls0= -github.com/catenacyber/perfsprint v0.9.1/go.mod h1:q//VWC2fWbcdSLEY1R3l8n0zQCDPdE4IjZwyY1HMunM= +github.com/catenacyber/perfsprint v0.10.0 h1:AZj1mYyxbxLRqmnYOeguZXEQwWOgQGm2wzLI5d7Hl/0= +github.com/catenacyber/perfsprint v0.10.0/go.mod h1:DJTGsi/Zufpuus6XPGJyKOTMELe347o6akPvWG9Zcsc= github.com/ccojocar/zxcvbn-go v1.0.4 h1:FWnCIRMXPj43ukfX000kvBZvV6raSxakYr1nzyNrUcc= github.com/ccojocar/zxcvbn-go v1.0.4/go.mod h1:3GxGX+rHmueTUMvm5ium7irpyjmm7ikxYFOSJB21Das= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= -github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= +github.com/charithe/durationcheck v0.0.11 h1:g1/EX1eIiKS57NTWsYtHDZ/APfeXKhye1DidBcABctk= +github.com/charithe/durationcheck v0.0.11/go.mod h1:x5iZaixRNl8ctbM+3B2RrPG5t856TxRyVQEnbIEM2X4= github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs= github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk= github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= @@ -145,10 +145,10 @@ github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= -github.com/ghostiam/protogetter v0.3.16 h1:UkrisuJBYLnZW6FcYUNBDJOqY3X22RtoYMlCsiNlFFA= -github.com/ghostiam/protogetter v0.3.16/go.mod h1:4SRRIv6PcjkIMpUkRUsP4TsUTqO/N3Fmvwivuc/sCHA= -github.com/go-critic/go-critic v0.13.0 h1:kJzM7wzltQasSUXtYyTl6UaPVySO6GkaR1thFnJ6afY= -github.com/go-critic/go-critic v0.13.0/go.mod h1:M/YeuJ3vOCQDnP2SU+ZhjgRzwzcBW87JqLpMJLrZDLI= +github.com/ghostiam/protogetter v0.3.17 h1:sjGPErP9o7i2Ym+z3LsQzBdLCNaqbYy2iJQPxGXg04Q= +github.com/ghostiam/protogetter v0.3.17/go.mod h1:AivIX1eKA/TcUmzZdzbl+Tb8tjIe8FcyG6JFyemQAH4= +github.com/go-critic/go-critic v0.14.0 h1:fzA7pGprRPwgA2LwoiaHuWzZzmUEM7dZjihfFpiZQpQ= +github.com/go-critic/go-critic v0.14.0/go.mod h1:/2QgW4QJIJ9aYCYTQ9RWKc+1KnMFouAJ/FmPylhzOoU= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= @@ -182,10 +182,10 @@ github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUW github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/godoc-lint/godoc-lint v0.10.0 h1:OcyrziBi18sQSEpib6NesVHEJ/Xcng97NunePBA48g4= -github.com/godoc-lint/godoc-lint v0.10.0/go.mod h1:KleLcHu/CGSvkjUH2RvZyoK1MBC7pDQg4NxMYLcBBsw= -github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= -github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= +github.com/godoc-lint/godoc-lint v0.10.1 h1:ZPUVzlDtJfA+P688JfPJPkI/SuzcBr/753yGIk5bOPA= +github.com/godoc-lint/godoc-lint v0.10.1/go.mod h1:KleLcHu/CGSvkjUH2RvZyoK1MBC7pDQg4NxMYLcBBsw= +github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= +github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -201,14 +201,12 @@ github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarog github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint/v2 v2.5.0 h1:BDRg4ASm4J1y/DSRY6zwJ5tr5Yy8ZqbZ79XrCeFxaQo= -github.com/golangci/golangci-lint/v2 v2.5.0/go.mod h1:IJtWJBZkLbx7AVrIUzLd8Oi3ADtwaNpWbR3wthVWHcc= +github.com/golangci/golangci-lint/v2 v2.6.0 h1:hgjuaMTwbWrBf1kvMrmWmyCRKq9wU7Cvi84O0METZHc= +github.com/golangci/golangci-lint/v2 v2.6.0/go.mod h1:qKA7VpZt6X2uo+ylnFYaNpdmJnm4tBSzdZiD0xDOIJE= github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 h1:AkK+w9FZBXlU/xUmBtSJN1+tAI4FIvy5WtnUnY8e4p8= github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95/go.mod h1:k9mmcyWKSTMcPPvQUCfRWWQ9VHJ1U9Dc0R7kaXAgtnQ= github.com/golangci/misspell v0.7.0 h1:4GOHr/T1lTW0hhR4tgaaV1WS/lJ+ncvYCoFKmqJsj0c= github.com/golangci/misspell v0.7.0/go.mod h1:WZyyI2P3hxPY2UVHs3cS8YcllAeyfquQcKfdeE9AFVg= -github.com/golangci/nilerr v0.0.0-20250918000102-015671e622fe h1:F1pK9tBy41i7eesBFkSNMldwtiAaWiU+3fT/24sTnNI= -github.com/golangci/nilerr v0.0.0-20250918000102-015671e622fe/go.mod h1:CtTxAluxD2ng9aIT9bPrVoMuISFWCD+SaxtvYtdWA2k= github.com/golangci/plugin-module-register v0.1.2 h1:e5WM6PO6NIAEcij3B053CohVp3HIYbzSuP53UAYgOpg= github.com/golangci/plugin-module-register v0.1.2/go.mod h1:1+QGTsKBvAIvPvoY/os+G5eoqxWn70HYDm2uvUyGuVw= github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s= @@ -228,8 +226,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-github/v50 v50.2.0/go.mod h1:VBY8FB6yPIjrtKhozXv4FQupxKLS6H4m6xFZlT43q8Q= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= -github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a h1://KbezygeMJZCSHH+HgUZiTeSoiuFspbMg1ge+eFj18= -github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= +github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6 h1:EEHtgt9IwisQ2AZ4pIsMjahcegHh6rmhqxzIRQIyepY= +github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/yamlfmt v0.20.0 h1:EfMuMFEZGnXPn2NY+KgJTH9sNs6P+am/Of6IwE2K6P8= @@ -243,6 +241,8 @@ github.com/gostaticanalysis/comment v1.5.0 h1:X82FLl+TswsUMpMh17srGRuKaaXprTaytm github.com/gostaticanalysis/comment v1.5.0/go.mod h1:V6eb3gpCv9GNVqb6amXzEUX3jXLVK/AdA+IrAMSqvEc= github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk= github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY= +github.com/gostaticanalysis/nilerr v0.1.2 h1:S6nk8a9N8g062nsx63kUkF6AzbHGw7zzyHMcpu52xQU= +github.com/gostaticanalysis/nilerr v0.1.2/go.mod h1:A19UHhoY3y8ahoL7YKz6sdjDtduwTSI4CsymaC2htPA= github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= @@ -293,14 +293,14 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kulti/thelper v0.7.1 h1:fI8QITAoFVLx+y+vSyuLBP+rcVIB8jKooNSCT2EiI98= github.com/kulti/thelper v0.7.1/go.mod h1:NsMjfQEy6sd+9Kfw8kCP61W1I0nerGSYSFnGaxQkcbs= -github.com/kunwardeep/paralleltest v1.0.14 h1:wAkMoMeGX/kGfhQBPODT/BL8XhK23ol/nuQ3SwFaUw8= -github.com/kunwardeep/paralleltest v1.0.14/go.mod h1:di4moFqtfz3ToSKxhNjhOZL+696QtJGCFe132CbBLGk= +github.com/kunwardeep/paralleltest v1.0.15 h1:ZMk4Qt306tHIgKISHWFJAO1IDQJLc6uDyJMLyncOb6w= +github.com/kunwardeep/paralleltest v1.0.15/go.mod h1:di4moFqtfz3ToSKxhNjhOZL+696QtJGCFe132CbBLGk= github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= -github.com/ldez/exptostd v0.4.4 h1:58AtQjnLcT/tI5W/1KU7xE/O7zW9RAWB6c/ScQAnfus= -github.com/ldez/exptostd v0.4.4/go.mod h1:QfdzPw6oHjFVdNV7ILoPu5sw3OZ3OG1JS0I5JN3J4Js= -github.com/ldez/gomoddirectives v0.7.0 h1:EOx8Dd56BZYSez11LVgdj025lKwlP0/E5OLSl9HDwsY= -github.com/ldez/gomoddirectives v0.7.0/go.mod h1:wR4v8MN9J8kcwvrkzrx6sC9xe9Cp68gWYCsda5xvyGc= +github.com/ldez/exptostd v0.4.5 h1:kv2ZGUVI6VwRfp/+bcQ6Nbx0ghFWcGIKInkG/oFn1aQ= +github.com/ldez/exptostd v0.4.5/go.mod h1:QRjHRMXJrCTIm9WxVNH6VW7oN7KrGSht69bIRwvdFsM= +github.com/ldez/gomoddirectives v0.7.1 h1:FaULkvUIG36hj6chpwa+FdCNGZBsD7/fO+p7CCsM6pE= +github.com/ldez/gomoddirectives v0.7.1/go.mod h1:auDNtakWJR1rC+YX7ar+HmveqXATBAyEK1KYpsIRW/8= github.com/ldez/grignotin v0.10.1 h1:keYi9rYsgbvqAZGI1liek5c+jv9UUjbvdj3Tbn5fn4o= github.com/ldez/grignotin v0.10.1/go.mod h1:UlDbXFCARrXbWGNGP3S5vsysNXAPhnSuBufpTEbwOas= github.com/ldez/tagliatelle v0.7.2 h1:KuOlL70/fu9paxuxbeqlicJnCspCRjH0x8FW+NfgYUk= @@ -356,12 +356,12 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/nunnatsa/ginkgolinter v0.21.0 h1:IYwuX+ajy3G1MezlMLB1BENRtFj16+Evyi4uki1NOOQ= -github.com/nunnatsa/ginkgolinter v0.21.0/go.mod h1:QlzY9UP9zaqu58FjYxhp9bnjuwXwG1bfW5rid9ChNMw= -github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus= -github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8= -github.com/onsi/gomega v1.38.0 h1:c/WX+w8SLAinvuKKQFh77WEucCnPk4j2OTUr7lt7BeY= -github.com/onsi/gomega v1.38.0/go.mod h1:OcXcwId0b9QsE7Y49u+BTrL4IdKOBOKnD6VQNTJEB6o= +github.com/nunnatsa/ginkgolinter v0.21.2 h1:khzWfm2/Br8ZemX8QM1pl72LwM+rMeW6VUbQ4rzh0Po= +github.com/nunnatsa/ginkgolinter v0.21.2/go.mod h1:GItSI5fw7mCGLPmkvGYrr1kEetZe7B593jcyOpyabsY= +github.com/onsi/ginkgo/v2 v2.26.0 h1:1J4Wut1IlYZNEAWIV3ALrT9NfiaGW2cDCJQSFQMs/gE= +github.com/onsi/ginkgo/v2 v2.26.0/go.mod h1:qhEywmzWTBUY88kfO0BRvX4py7scov9yR+Az2oavUzw= +github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A= +github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= @@ -393,8 +393,8 @@ github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzM github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/quasilyte/go-ruleguard v0.4.4 h1:53DncefIeLX3qEpjzlS1lyUmQoUEeOWPFWqaTJq9eAQ= github.com/quasilyte/go-ruleguard v0.4.4/go.mod h1:Vl05zJ538vcEEwu16V/Hdu7IYZWyKSwIy4c88Ro1kRE= -github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE= -github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= +github.com/quasilyte/go-ruleguard/dsl v0.3.23 h1:lxjt5B6ZCiBeeNO8/oQsegE6fLeCzuMRoVWSkXC4uvY= +github.com/quasilyte/go-ruleguard/dsl v0.3.23/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU= @@ -425,8 +425,8 @@ github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tM github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= github.com/sashamelentyev/usestdlibvars v1.29.0 h1:8J0MoRrw4/NAXtjQqTHrbW9NN+3iMf7Knkq057v4XOQ= github.com/sashamelentyev/usestdlibvars v1.29.0/go.mod h1:8PpnjHMk5VdeWlVb4wCdrB8PNbLqZ3wBZTZWkrpZZL8= -github.com/securego/gosec/v2 v2.22.8 h1:3NMpmfXO8wAVFZPNsd3EscOTa32Jyo6FLLlW53bexMI= -github.com/securego/gosec/v2 v2.22.8/go.mod h1:ZAw8K2ikuH9qDlfdV87JmNghnVfKB1XC7+TVzk6Utto= +github.com/securego/gosec/v2 v2.22.10 h1:ntbBqdWXnu46DUOXn+R2SvPo3PiJCDugTCgTW2g4tQg= +github.com/securego/gosec/v2 v2.22.10/go.mod h1:9UNjK3tLpv/w2b0+7r82byV43wCJDNtEDQMeS+H/g2w= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= @@ -535,10 +535,10 @@ go-simpler.org/musttag v0.14.0 h1:XGySZATqQYSEV3/YTy+iX+aofbZZllJaqwFWs+RTtSo= go-simpler.org/musttag v0.14.0/go.mod h1:uP8EymctQjJ4Z1kUnjX0u2l60WfUdQxCwSNKzE1JEOE= go-simpler.org/sloglint v0.11.1 h1:xRbPepLT/MHPTCA6TS/wNfZrDzkGvCCqUv4Bdwc3H7s= go-simpler.org/sloglint v0.11.1/go.mod h1:2PowwiCOK8mjiF+0KGifVOT8ZsCNiFzvfyJeJOIt8MQ= -go.augendre.info/arangolint v0.2.0 h1:2NP/XudpPmfBhQKX4rMk+zDYIj//qbt4hfZmSSTcpj8= -go.augendre.info/arangolint v0.2.0/go.mod h1:Vx4KSJwu48tkE+8uxuf0cbBnAPgnt8O1KWiT7bljq7w= -go.augendre.info/fatcontext v0.8.1 h1:/T4+cCjpL9g71gJpcFAgVo/K5VFpqlN+NPU7QXxD5+A= -go.augendre.info/fatcontext v0.8.1/go.mod h1:r3Qz4ZOzex66wfyyj5VZ1xUcl81vzvHQ6/GWzzlMEwA= +go.augendre.info/arangolint v0.3.1 h1:n2E6p8f+zfXSFLa2e2WqFPp4bfvcuRdd50y6cT65pSo= +go.augendre.info/arangolint v0.3.1/go.mod h1:6ZKzEzIZuBQwoSvlKT+qpUfIbBfFCE5gbAoTg0/117g= +go.augendre.info/fatcontext v0.9.0 h1:Gt5jGD4Zcj8CDMVzjOJITlSb9cEch54hjRRlN3qDojE= +go.augendre.info/fatcontext v0.9.0/go.mod h1:L94brOAT1OOUNue6ph/2HnwxoNlds9aXDF2FcUntbNw= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 h1:QQiUXlqz+d96jyNG71NE+IGTgOK6Xlhdx+PzvfbLHlQ= @@ -577,8 +577,8 @@ golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0 golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20250911091902-df9299821621 h1:Yl4H5w2RV7L/dvSHp2GerziT5K2CORgFINPaMFxWGWw= -golang.org/x/exp/typeparams v0.0.0-20250911091902-df9299821621/go.mod h1:4Mzdyp/6jzw9auFDJ3OMF5qksa7UvPnzKqTVGcb04ms= +golang.org/x/exp/typeparams v0.0.0-20251002181428-27f1f14c8bb9 h1:EvjuVHWMoRaAxH402KMgrQpGUjoBy/OWvZjLOqQnwNk= +golang.org/x/exp/typeparams v0.0.0-20251002181428-27f1f14c8bb9/go.mod h1:4Mzdyp/6jzw9auFDJ3OMF5qksa7UvPnzKqTVGcb04ms= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -739,7 +739,7 @@ honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -mvdan.cc/gofumpt v0.9.1 h1:p5YT2NfFWsYyTieYgwcQ8aKV3xRvFH4uuN/zB2gBbMQ= -mvdan.cc/gofumpt v0.9.1/go.mod h1:3xYtNemnKiXaTh6R4VtlqDATFwBbdXI8lJvH/4qk7mw= -mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 h1:WjUu4yQoT5BHT1w8Zu56SP8367OuBV5jvo+4Ulppyf8= -mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4/go.mod h1:rthT7OuvRbaGcd5ginj6dA2oLE7YNlta9qhBNNdCaLE= +mvdan.cc/gofumpt v0.9.2 h1:zsEMWL8SVKGHNztrx6uZrXdp7AX8r421Vvp23sz7ik4= +mvdan.cc/gofumpt v0.9.2/go.mod h1:iB7Hn+ai8lPvofHd9ZFGVg2GOr8sBUw1QUWjNbmIL/s= +mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15 h1:ssMzja7PDPJV8FStj7hq9IKiuiKhgz9ErWw+m68e7DI= +mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15/go.mod h1:4M5MMXl2kW6fivUT6yRGpLLPNfuGtU2Z0cPvFquGDYU= From 0e0c71225482ae1ab52956a0fa96ccc59c6d4c81 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Thu, 6 Nov 2025 11:50:29 +0000 Subject: [PATCH 0643/1068] Add an e2e test cases to reproduce the '--force-new-cluster' can't remove learner issue Signed-off-by: Benjamin Wang --- tests/e2e/force_new_cluster_test.go | 67 +++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/tests/e2e/force_new_cluster_test.go b/tests/e2e/force_new_cluster_test.go index b62d2651010c..f2b35fd75c05 100644 --- a/tests/e2e/force_new_cluster_test.go +++ b/tests/e2e/force_new_cluster_test.go @@ -18,6 +18,7 @@ package e2e import ( "encoding/json" + "strings" "testing" "time" @@ -29,6 +30,7 @@ import ( "go.etcd.io/etcd/server/v3/storage/schema" "go.etcd.io/etcd/tests/v3/framework/config" "go.etcd.io/etcd/tests/v3/framework/e2e" + "go.etcd.io/etcd/tests/v3/framework/testutils" ) // TestForceNewCluster verified that etcd works as expected when --force-new-cluster. @@ -111,6 +113,71 @@ func TestForceNewCluster_MemberCount(t *testing.T) { require.Len(t, members, 1) } +// TestForceNewCluster_AddLearner_MemberCount verifies that `--force-new-cluster` +// should always be able to clean up all other members, including learners. +func TestForceNewCluster_AddLearner_MemberCount(t *testing.T) { + e2e.BeforeTest(t) + + testCases := []struct { + name string + snapcount int + }{ + { + name: "no snapshot after adding learner", + snapcount: 0, + }, + { + name: "create a snapshot after adding learner", + snapcount: 5, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + cfg := e2e.NewConfig(e2e.WithClusterSize(3)) + epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg), e2e.WithSnapshotCount(uint64(tc.snapcount)), e2e.WithKeepDataDir(true)) + require.NoError(t, err) + + t.Log("Adding a learner member") + testutils.ExecuteWithTimeout(t, 1*time.Minute, func() { + for { + _, aerr := epc.StartNewProc(t.Context(), nil, t, true) + if aerr != nil { + if strings.Contains(aerr.Error(), "etcdserver: unhealthy cluster") { + time.Sleep(1 * time.Second) + continue + } + } + break + } + }) + + for i := 0; i < tc.snapcount; i++ { + werr := epc.Etcdctl().Put(t.Context(), "foo", "bar", config.PutOptions{}) + require.NoError(t, werr) + } + require.NoError(t, epc.Close()) + + m := epc.Procs[0] + t.Logf("Forcibly create a one-member cluster with member: %s", m.Config().Name) + m.Config().Args = append(m.Config().Args, "--force-new-cluster") + require.NoError(t, m.Start(t.Context())) + + t.Log("Restarting the member") + require.NoError(t, m.Restart(t.Context())) + defer func() { + t.Log("Closing the member") + require.NoError(t, m.Close()) + }() + + t.Log("Checking member count") + resp, merr := m.Etcdctl().MemberList(t.Context(), false) + require.NoError(t, merr) + require.Len(t, resp.Members, 1) + }) + } +} + func mustReadMembersFromBoltDB(t *testing.T, dataDir string) []*membership.Member { dbPath := datadir.ToBackendFileName(dataDir) db, err := bbolt.Open(dbPath, 0o400, &bbolt.Options{ReadOnly: true}) From e5060dc2e3cbbc46c2cd44f210961ff31722e4ad Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 7 Nov 2025 16:01:06 -0800 Subject: [PATCH 0644/1068] build(deps): bump go.opentelemetry.io/proto/otlp from 1.8.0 to 1.9.0 Reference: https://github.com/etcd-io/etcd/pull/20882 Signed-off-by: Ivan Valdes --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 8db86b97cf85..09acd3aaf85d 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -74,7 +74,7 @@ require ( go.opentelemetry.io/otel/metric v1.38.0 // indirect go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect - go.opentelemetry.io/proto/otlp v1.8.0 // indirect + go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.43.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 2289d486e9b0..8ee9933e7bf5 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -130,8 +130,8 @@ go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6 go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -go.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE= -go.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0= +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.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= diff --git a/go.mod b/go.mod index 49ce4b5c9c8d..d20f2c688f09 100644 --- a/go.mod +++ b/go.mod @@ -90,7 +90,7 @@ require ( go.opentelemetry.io/otel/metric v1.38.0 // indirect go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect - go.opentelemetry.io/proto/otlp v1.8.0 // indirect + go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.43.0 // indirect diff --git a/go.sum b/go.sum index 739736238d6d..454360dfe232 100644 --- a/go.sum +++ b/go.sum @@ -169,8 +169,8 @@ go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6 go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -go.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE= -go.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0= +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.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= 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/server/go.mod b/server/go.mod index f01a4c91da78..6ade305a083b 100644 --- a/server/go.mod +++ b/server/go.mod @@ -67,7 +67,7 @@ require ( go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/proto/otlp v1.8.0 // indirect + go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/sys v0.37.0 // indirect diff --git a/server/go.sum b/server/go.sum index b1b7e97f62a9..376a7e8f4a56 100644 --- a/server/go.sum +++ b/server/go.sum @@ -115,8 +115,8 @@ go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6 go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -go.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE= -go.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0= +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.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= diff --git a/tests/go.mod b/tests/go.mod index 79eaad8b8642..f5dd54e6bf9e 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -45,7 +45,7 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 go.opentelemetry.io/otel v1.38.0 go.opentelemetry.io/otel/sdk v1.38.0 - go.opentelemetry.io/proto/otlp v1.8.0 + go.opentelemetry.io/proto/otlp v1.9.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.43.0 golang.org/x/sync v0.17.0 diff --git a/tests/go.sum b/tests/go.sum index 571f1ef0608e..506704d35697 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -175,8 +175,8 @@ go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6 go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -go.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE= -go.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0= +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.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= From b1657b8ef41e1404cd6a44d063960d0adf77684d Mon Sep 17 00:00:00 2001 From: ronaldngounou Date: Thu, 6 Nov 2025 21:01:19 -0800 Subject: [PATCH 0645/1068] Bump Go from 1.25.3 to 1.25.4 Signed-off-by: ronaldngounou --- .go-version | 2 +- api/go.mod | 2 +- cache/go.mod | 2 +- client/pkg/go.mod | 2 +- client/v3/go.mod | 2 +- etcdctl/go.mod | 2 +- etcdutl/go.mod | 2 +- go.mod | 2 +- go.work | 2 +- pkg/go.mod | 2 +- server/go.mod | 2 +- tests/antithesis/config/Dockerfile | 2 +- tests/go.mod | 2 +- tools/mod/go.mod | 2 +- tools/rw-heatmaps/go.mod | 2 +- tools/testgrid-analysis/go.mod | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.go-version b/.go-version index 5bb76b575e1f..26a9e99b38be 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.25.3 +1.25.4 diff --git a/api/go.mod b/api/go.mod index a98e88c8b424..b73ecdbb794b 100644 --- a/api/go.mod +++ b/api/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/api/v3 go 1.25.0 -toolchain go1.25.3 +toolchain go1.25.4 require ( github.com/coreos/go-semver v0.3.1 diff --git a/cache/go.mod b/cache/go.mod index 0103725cc645..62c10cec9fe3 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/cache/v3 go 1.25.0 -toolchain go1.25.3 +toolchain go1.25.4 require ( github.com/google/btree v1.1.3 diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 40d07a73147b..1e2767821c83 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/pkg/v3 go 1.25.0 -toolchain go1.25.3 +toolchain go1.25.4 require ( github.com/coreos/go-systemd/v22 v22.6.0 diff --git a/client/v3/go.mod b/client/v3/go.mod index 9359eaec360b..012e77f0ccdb 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/v3 go 1.25.0 -toolchain go1.25.3 +toolchain go1.25.4 require ( github.com/coreos/go-semver v0.3.1 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index c8f11037676c..e93b75f25067 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdctl/v3 go 1.25.0 -toolchain go1.25.3 +toolchain go1.25.4 require ( github.com/bgentry/speakeasy v0.2.0 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 00167d416fc4..f616e5f34168 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdutl/v3 go 1.25.0 -toolchain go1.25.3 +toolchain go1.25.4 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/go.mod b/go.mod index f5e64c54a64c..f9f98588a043 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/v3 go 1.25.0 -toolchain go1.25.3 +toolchain go1.25.4 replace ( go.etcd.io/etcd/api/v3 => ./api diff --git a/go.work b/go.work index e9ae8785d537..0064d46bcfff 100644 --- a/go.work +++ b/go.work @@ -2,7 +2,7 @@ go 1.25.0 -toolchain go1.25.3 +toolchain go1.25.4 use ( . diff --git a/pkg/go.mod b/pkg/go.mod index 1533cbacbf77..73db60053e60 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/pkg/v3 go 1.25.0 -toolchain go1.25.3 +toolchain go1.25.4 require ( github.com/creack/pty v1.1.18 diff --git a/server/go.mod b/server/go.mod index ec226964f2ba..978f78f31ad7 100644 --- a/server/go.mod +++ b/server/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/server/v3 go 1.25.0 -toolchain go1.25.3 +toolchain go1.25.4 require ( github.com/coreos/go-semver v0.3.1 diff --git a/tests/antithesis/config/Dockerfile b/tests/antithesis/config/Dockerfile index 2c4694f5131e..00e1c731ad6f 100644 --- a/tests/antithesis/config/Dockerfile +++ b/tests/antithesis/config/Dockerfile @@ -1,4 +1,4 @@ -ARG GO_VERSION=1.25.3 +ARG GO_VERSION=1.25.4 FROM golang:$GO_VERSION AS build RUN go install github.com/a8m/envsubst/cmd/envsubst@v1.4.3 diff --git a/tests/go.mod b/tests/go.mod index 85762294f32a..0f415e88775c 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tests/v3 go 1.25.0 -toolchain go1.25.3 +toolchain go1.25.4 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 2603e79aad9b..a10d888acf39 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/v3 go 1.25.0 -toolchain go1.25.3 +toolchain go1.25.4 require ( github.com/alexfalkowski/gocovmerge v1.11.0 diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 51bdcb5b54f5..c5ff8394ca41 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/rw-heatmaps/v3 go 1.25.0 -toolchain go1.25.3 +toolchain go1.25.4 require ( github.com/spf13/cobra v1.10.1 diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 63882a118125..d4f4bfbf312f 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 go 1.25.0 -toolchain go1.25.3 +toolchain go1.25.4 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 From 1463c45d3dc5b0b514a19e223b7ec9f076d97dd3 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 7 Nov 2025 16:03:24 -0800 Subject: [PATCH 0646/1068] build(deps): bump github.com/prometheus/common from 0.67.1 to 0.67.2 Reference: https://github.com/etcd-io/etcd/pull/20883 Signed-off-by: Ivan Valdes --- cache/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- go.work.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 15 files changed, 24 insertions(+), 24 deletions(-) diff --git a/cache/go.sum b/cache/go.sum index a076766aadbd..3c85d9ac8c83 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -42,8 +42,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= -github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= +github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= +github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/client/v3/go.mod b/client/v3/go.mod index 8241df11d1d0..e105139134cc 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -29,7 +29,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.1 // indirect + github.com/prometheus/common v0.67.2 // indirect github.com/prometheus/procfs v0.16.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index e4ea1fd1aff6..f73f104aaa58 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -46,8 +46,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= -github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= +github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= +github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index b7965184ee0c..8d2cbeb08ff4 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -65,8 +65,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= -github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= +github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= +github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 09acd3aaf85d..99ea5d0c45d3 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -58,7 +58,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.1 // indirect + github.com/prometheus/common v0.67.2 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 8ee9933e7bf5..2e85f142b669 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -79,8 +79,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= -github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= +github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= +github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/go.mod b/go.mod index d20f2c688f09..105bf97cc0ee 100644 --- a/go.mod +++ b/go.mod @@ -73,7 +73,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.1 // indirect + github.com/prometheus/common v0.67.2 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect diff --git a/go.sum b/go.sum index 454360dfe232..f7c230f9ccf5 100644 --- a/go.sum +++ b/go.sum @@ -112,8 +112,8 @@ github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UH github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= -github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= +github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= +github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/go.work.sum b/go.work.sum index bb1e594a91f1..f2e797ebbaed 100644 --- a/go.work.sum +++ b/go.work.sum @@ -915,8 +915,8 @@ golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2 golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= -golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= -golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= diff --git a/server/go.mod b/server/go.mod index 6ade305a083b..f894bd2e7a67 100644 --- a/server/go.mod +++ b/server/go.mod @@ -60,7 +60,7 @@ require ( github.com/kylelemons/godebug v1.1.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/common v0.67.1 // indirect + github.com/prometheus/common v0.67.2 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.10 // indirect diff --git a/server/go.sum b/server/go.sum index 376a7e8f4a56..10e7484b85b4 100644 --- a/server/go.sum +++ b/server/go.sum @@ -67,8 +67,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= -github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= +github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= +github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/tests/go.mod b/tests/go.mod index f5dd54e6bf9e..3c8d323bb903 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -28,7 +28,7 @@ require ( github.com/olekukonko/tablewriter v1.1.0 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.67.1 + github.com/prometheus/common v0.67.2 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 diff --git a/tests/go.sum b/tests/go.sum index 506704d35697..6f5110d3a065 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -118,8 +118,8 @@ github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UH github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= -github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= +github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= +github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index a505ec36a58f..3e1a0039965d 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -173,7 +173,7 @@ require ( github.com/polyfloyd/go-errorlint v1.8.0 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.1 // indirect + github.com/prometheus/common v0.67.2 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/quasilyte/go-ruleguard v0.4.4 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.23 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index a66ca21d36a2..f364553f0f40 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -387,8 +387,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= -github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= +github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= +github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/quasilyte/go-ruleguard v0.4.4 h1:53DncefIeLX3qEpjzlS1lyUmQoUEeOWPFWqaTJq9eAQ= From 7534b4159fbefe9c3f6ba33cd5fa30558830cd14 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 29 Oct 2025 23:07:46 -0700 Subject: [PATCH 0647/1068] Migrate unit tests to use Go workspace Introduce the new functions: run_go_tests and run_go_test_expanding_packages, which implement (without Shellcheck exceptions) the old behavior from go_test, simplifying the arguments received. Replaced the three possible values mode with: 1. keep_going: By using the KEEP_GOING_TESTS environment variable. This mode expanded the relative modules; it can be run by using run_go_tests_expanding_packages. 2. parallel: It worked without expanding the relative modules with the absolute modules. Therefore, this mode can be run directly using run_go_tests. 3. fail_fast: By adding an argument "-failfast", and not setting the KEEP_GOING_TESTS environment variable. The argument flags_for_package_func can be replaced by regular arguments passed to the function. These two changes simplify the complexity of the go test wrapper function and allow further customization in the callers. The JUnit XML generation works the same way, by reading the JUNIT_REPORT_DIR or ARTIFACTS environment variable. It generates the same reports. Temporarily introduce the get_junit_filename_prefix function, as a replacement for junitFilenamePrefix. The latter will be removed once all test targets are using the new functions. Finally, update the unit tests function to make use of the new functions, and allow running the tests by using the workspace (i.e., there's no need to change directories anymore). Signed-off-by: Ivan Valdes --- scripts/test.sh | 15 +++---- scripts/test_lib.sh | 101 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+), 9 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index 20f6231e3879..f3f07e45e91e 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -125,16 +125,13 @@ function build_pass { ################# REGULAR TESTS ################################################ -# run_unit_tests [pkgs] runs unit tests for a current module and givesn set of [pkgs] -function run_unit_tests { - local pkgs="${1:-./...}" - shift 1 - # shellcheck disable=SC2068 #For context see - https://github.com/etcd-io/etcd/pull/16433#issuecomment-1684312755 - go_test "${pkgs}" "parallel" : -short -timeout="${TIMEOUT:-3m}" ${COMMON_TEST_FLAGS[@]:-} ${RUN_ARG[@]:-} "$@" -} - function unit_pass { - run_for_modules run_unit_tests "$@" + run_for_all_workspace_modules \ + run_go_tests -short \ + -timeout="${TIMEOUT:-3m}" \ + "${COMMON_TEST_FLAGS[@]}" \ + "${RUN_ARG[@]}" \ + "$@" } function integration_extra { diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index d464af2f363e..2b0438a008fb 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -206,6 +206,17 @@ function run_for_modules { fi } +function get_junit_filename_prefix { + local junit_report_dir="$1" + if [[ -z "${junit_report_dir}" ]]; then + echo "" + return + fi + + mkdir -p "${junit_report_dir}" + mktemp --dry-run "${junit_report_dir}/junit_XXXXXXXXXX" +} + junitFilenamePrefix() { if [[ -z "${JUNIT_REPORT_DIR:-}" ]]; then echo "" @@ -335,6 +346,96 @@ function go_test { fi } +# run_go_tests_expanding_packages [arguments to pass to go test] +# Expands the packages in the list of arguments, i.e. ./... into a list of +# packages for that given module. Then, it calls run_go_tests with the expanded +# packages. +function run_go_tests_expanding_packages { + local packages=() + local args=() + for arg in "$@"; do + if [[ "${arg}" =~ ./ ]]; then + packages+=("${arg}") + else + args+=("${arg}") + fi + done + + # Expanding patterns (like ./...) into list of packages + local unpacked_packages=() + while IFS='' read -r line; do unpacked_packages+=("$line"); done < <( + go list "${packages[@]}" + ) + + run_go_tests "${unpacked_packages[@]}" "${args[@]}" +} + +# run_go_test [arguments to pass to go test] +# The following environment variables affect how the tests run: +# - KEEP_GOING_TESTS: If set to true it will keep executing tests even after +# a failure. It collects all failures and reports them at +# the end, if there are failures the return code is 2. +# Defaults to false. +# - JUNIT_REPORT_DIR/ARTIFACTS: Enables collecting JUnit XML reports. +# - VERBOSE: Sets a verbose output. +# +# Example: +# KEEP_GOING_TESTS=true run_go_tests "./..." --short +# +# The function returns != 0 code in case of test failure. +function run_go_tests { + local go_test_flags=() + + local packages=() + local args=() + for arg in "$@"; do + if [[ "${arg}" =~ ^\./ || "${arg}" =~ ^go\.etcd\.io/etcd ]]; then + packages+=("${arg}") + else + args+=("${arg}") + fi + done + + local keep_going=${KEEP_GOING_TESTS:-false} + + # If JUNIT_REPORT_DIR is unset, and ARTIFACTS is set, then have them match. + local junit_report_dir=${JUNIT_REPORT_DIR:-${ARTIFACTS:-}} + + local go_test_grep_pattern=".*" + if [[ -n "${junit_report_dir}" ]]; then + # Show only summary lines by matching lines like "status package/test" + go_test_grep_pattern="^[^[:space:]]\+[[:space:]]\+[^[:space:]]\+/[^[[:space:]]\+" + fi + + if [[ -n "${junit_report_dir}" || "${VERBOSE:-}" == "1" ]]; then + go_test_flags+=("-v" "-json") + fi + + local failures=() + # execution of tests against packages: + for pkg in "${packages[@]}"; do + local cmd=(go test "${go_test_flags[@]}" "${pkg}" "${args[@]}") + + local junit_filename_prefix + junit_filename_prefix=$(get_junit_filename_prefix "${junit_report_dir}") + + if ! run env ETCD_VERIFY="${ETCD_VERIFY}" "${cmd[@]}" | tee ${junit_filename_prefix:+"${junit_filename_prefix}.stdout"} | grep --binary-files=text "${go_test_grep_pattern}" ; then + if [ "${keep_going}" = "true" ]; then + failures+=("${pkg}") + else + produce_junit_xmlreport "${junit_filename_prefix}" + return 2 + fi + fi + produce_junit_xmlreport "${junit_filename_prefix}" + done + + if [ -n "${failures[*]}" ]; then + log_error -e "FAIL: Tests for following packages failed:\\n ${failures[*]}" + return 2 + fi +} + #### Other #### # tool_exists [tool] [instruction] From cc30d804667c5bc282b67aa3b537ad088b8eb2d7 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 10 Nov 2025 15:10:07 -0500 Subject: [PATCH 0648/1068] Add delve to Antithesis etcd server image Signed-off-by: Marek Siarkowicz --- tests/antithesis/server/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/antithesis/server/Dockerfile b/tests/antithesis/server/Dockerfile index 656af0c26dff..b162fb97fb2b 100644 --- a/tests/antithesis/server/Dockerfile +++ b/tests/antithesis/server/Dockerfile @@ -52,8 +52,10 @@ RUN for d in server etcdutl etcdctl; do \ # The instrumentation also adds a new main file which clashes with dummy.go found in non release-3.4 branches RUN if [ -f "dummy.go" ]; then sed -i 's/package main_test/package main/' dummy.go; fi RUN CGO_ENABLED=1 make build +RUN go install github.com/go-delve/delve/cmd/dlv@latest FROM ubuntu:24.04 +COPY --from=build /go/bin/dlv /bin/dlv COPY --from=build /etcd_instrumented/ /etcd # Move symbols to /symbols directory https://antithesis.com/docs/instrumentation/#symbolization RUN mv /etcd/symbols /symbols From d0a30e79040dc0d7c725efd747a6442886424b69 Mon Sep 17 00:00:00 2001 From: Ashwani Kumar Kamal Date: Mon, 10 Nov 2025 18:21:33 +0530 Subject: [PATCH 0649/1068] tests: Patch unique delete ops in robustness Signed-off-by: Ashwani Kumar Kamal --- tests/robustness/validate/patch_history.go | 221 +++++++++++++----- .../robustness/validate/patch_history_test.go | 58 ++++- 2 files changed, 212 insertions(+), 67 deletions(-) diff --git a/tests/robustness/validate/patch_history.go b/tests/robustness/validate/patch_history.go index ac5df56c2d62..edbf0ba329c6 100644 --- a/tests/robustness/validate/patch_history.go +++ b/tests/robustness/validate/patch_history.go @@ -24,16 +24,51 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/report" ) +type patchArgs struct { + returnTime int64 + clientCount int64 + persistedCount int64 + revision int64 +} + func patchLinearizableOperations(operations []porcupine.Operation, reports []report.ClientReport, persistedRequests []model.EtcdRequest) []porcupine.Operation { - putRevision := putRevision(reports) + putRevision, delRevision := watchRevisions(reports) persistedPutCount := countPersistedPuts(persistedRequests) clientPutCount := countClientPuts(reports) - putReturnTime := uniquePutReturnTime(operations, persistedRequests, clientPutCount) - return patchOperations(operations, putRevision, putReturnTime, clientPutCount, persistedPutCount) + + persistedDeleteCount := countPersistedDeletes(persistedRequests) + clientDeleteCount := countClientDeletes(reports) + + putReturnTime, delReturnTime := uniqueOperationReturnTime(operations, persistedRequests, clientPutCount, clientDeleteCount) + + putArgs := make(map[model.PutOptions]patchArgs) + for opts, c := range clientPutCount { + putArgs[opts] = patchArgs{ + clientCount: c, + persistedCount: persistedPutCount[opts], + returnTime: putReturnTime[opts], + revision: putRevision[opts], + } + } + delArgs := make(map[model.DeleteOptions]patchArgs) + for opts, c := range clientDeleteCount { + delArgs[opts] = patchArgs{ + clientCount: c, + persistedCount: persistedDeleteCount[opts], + returnTime: delReturnTime[opts], + revision: delRevision[opts], + } + } + + return patchOperations( + operations, putArgs, delArgs, + ) } -func putRevision(reports []report.ClientReport) map[keyValue]int64 { - requestRevision := map[keyValue]int64{} +func watchRevisions(reports []report.ClientReport) (map[model.PutOptions]int64, map[model.DeleteOptions]int64) { + putRevisions := map[model.PutOptions]int64{} + delRevisions := map[model.DeleteOptions]int64{} + for _, client := range reports { for _, watch := range client.Watch { for _, resp := range watch.Responses { @@ -41,9 +76,11 @@ func putRevision(reports []report.ClientReport) map[keyValue]int64 { switch event.Type { case model.RangeOperation: case model.PutOperation: - kv := keyValue{Key: event.Key, Value: event.Value} - requestRevision[kv] = event.Revision + kv := model.PutOptions{Key: event.Key, Value: event.Value} + putRevisions[kv] = event.Revision case model.DeleteOperation: + kv := model.DeleteOptions{Key: event.Key} // ADD: Track delete revisions + delRevisions[kv] = event.Revision default: panic(fmt.Sprintf("unknown event type %q", event.Type)) } @@ -51,10 +88,14 @@ func putRevision(reports []report.ClientReport) map[keyValue]int64 { } } } - return requestRevision + return putRevisions, delRevisions } -func patchOperations(operations []porcupine.Operation, watchRevision, putReturnTime, clientPutCount, persistedPutCount map[keyValue]int64) []porcupine.Operation { +func patchOperations( + operations []porcupine.Operation, + putArgs map[model.PutOptions]patchArgs, + delArgs map[model.DeleteOptions]patchArgs, +) []porcupine.Operation { newOperations := make([]porcupine.Operation, 0, len(operations)) for _, op := range operations { @@ -70,26 +111,47 @@ func patchOperations(operations []porcupine.Operation, watchRevision, putReturnT for _, etcdOp := range append(request.Txn.OperationsOnSuccess, request.Txn.OperationsOnFailure...) { switch etcdOp.Type { case model.PutOperation: - kv := keyValue{Key: etcdOp.Put.Key, Value: etcdOp.Put.Value} - if _, ok := persistedPutCount[kv]; ok { + kv := model.PutOptions{Key: etcdOp.Put.Key, Value: etcdOp.Put.Value} + arg, ok := putArgs[kv] + if !ok { + continue + } + if arg.persistedCount > 0 { persisted = true } - if count := clientPutCount[kv]; count != 1 { + if arg.clientCount != 1 { continue } - if revision, ok := watchRevision[kv]; ok { - txnRevision = revision + if arg.revision > 0 { + txnRevision = arg.revision } - if returnTime, ok := putReturnTime[kv]; ok { - op.Return = min(op.Return, returnTime) + if arg.returnTime > 0 { + op.Return = min(op.Return, arg.returnTime) } case model.DeleteOperation: + kv := model.DeleteOptions{Key: etcdOp.Delete.Key} + arg, ok := delArgs[kv] + if !ok { + continue + } + if arg.persistedCount > 0 { + persisted = true + } + if arg.clientCount != 1 { + continue + } + if arg.revision > 0 { + txnRevision = arg.revision + } + if arg.returnTime > 0 { + op.Return = min(op.Return, arg.returnTime) + } case model.RangeOperation: default: panic(fmt.Sprintf("unknown operation type %q", etcdOp.Type)) } } - if isUniqueTxn(request.Txn, clientPutCount) { + if isUniqueTxn(request.Txn, putArgs, delArgs) { if !persisted { // Remove non persisted operations continue @@ -106,12 +168,12 @@ func patchOperations(operations []porcupine.Operation, watchRevision, putReturnT return newOperations } -func isUniqueTxn(request *model.TxnRequest, clientRequestCount map[keyValue]int64) bool { - return isUniqueOps(request.OperationsOnSuccess, clientRequestCount) && isUniqueOps(request.OperationsOnFailure, clientRequestCount) +func isUniqueTxn(request *model.TxnRequest, putArgs map[model.PutOptions]patchArgs, delArgs map[model.DeleteOptions]patchArgs) bool { + return isUniqueOps(request.OperationsOnSuccess, putArgs, delArgs) && isUniqueOps(request.OperationsOnFailure, putArgs, delArgs) } -func isUniqueOps(ops []model.EtcdOperation, clientRequestCount map[keyValue]int64) bool { - return hasUniqueWriteOperation(ops, clientRequestCount) || !hasWriteOperation(ops) +func isUniqueOps(ops []model.EtcdOperation, putArgs map[model.PutOptions]patchArgs, delArgs map[model.DeleteOptions]patchArgs) bool { + return hasUniqueWriteOperation(ops, putArgs, delArgs) || !hasWriteOperation(ops) } func hasWriteOperation(ops []model.EtcdOperation) bool { @@ -123,15 +185,19 @@ func hasWriteOperation(ops []model.EtcdOperation) bool { return false } -func hasUniqueWriteOperation(ops []model.EtcdOperation, clientRequestCount map[keyValue]int64) bool { +func hasUniqueWriteOperation(ops []model.EtcdOperation, putArgs map[model.PutOptions]patchArgs, delArgs map[model.DeleteOptions]patchArgs) bool { for _, operation := range ops { switch operation.Type { case model.PutOperation: - kv := keyValue{Key: operation.Put.Key, Value: operation.Put.Value} - if count := clientRequestCount[kv]; count == 1 { + kv := model.PutOptions{Key: operation.Put.Key, Value: operation.Put.Value} + if arg, ok := putArgs[kv]; ok && arg.clientCount == 1 { return true } case model.DeleteOperation: + kv := model.DeleteOptions{Key: operation.Delete.Key} + if arg, ok := delArgs[kv]; ok && arg.clientCount == 1 { + return true + } case model.RangeOperation: default: panic(fmt.Sprintf("unknown operation type %q", operation.Type)) @@ -140,25 +206,33 @@ func hasUniqueWriteOperation(ops []model.EtcdOperation, clientRequestCount map[k return false } -func uniquePutReturnTime(allOperations []porcupine.Operation, persistedRequests []model.EtcdRequest, clientPutCount map[keyValue]int64) map[keyValue]int64 { - earliestReturnTime := map[keyValue]int64{} +func uniqueOperationReturnTime(allOperations []porcupine.Operation, persistedRequests []model.EtcdRequest, clientPutCount map[model.PutOptions]int64, clientDeleteCount map[model.DeleteOptions]int64) (map[model.PutOptions]int64, map[model.DeleteOptions]int64) { + putTimes := map[model.PutOptions]int64{} + delTimes := map[model.DeleteOptions]int64{} var lastReturnTime int64 for _, op := range allOperations { request := op.Input.(model.EtcdRequest) switch request.Type { case model.Txn: for _, etcdOp := range append(request.Txn.OperationsOnSuccess, request.Txn.OperationsOnFailure...) { - if etcdOp.Type != model.PutOperation { - continue - } - kv := keyValue{Key: etcdOp.Put.Key, Value: etcdOp.Put.Value} - if count := clientPutCount[kv]; count > 1 { - continue - } - if returnTime, ok := earliestReturnTime[kv]; !ok || returnTime > op.Return { - earliestReturnTime[kv] = op.Return + switch etcdOp.Type { + case model.PutOperation: + kv := model.PutOptions{Key: etcdOp.Put.Key, Value: etcdOp.Put.Value} + if clientPutCount[kv] > 1 { + continue + } + if returnTime, ok := putTimes[kv]; !ok || returnTime > op.Return { + putTimes[kv] = op.Return + } + case model.DeleteOperation: + kv := model.DeleteOptions{Key: etcdOp.Delete.Key} + if clientDeleteCount[kv] > 1 { + continue + } + if returnTime, ok := delTimes[kv]; !ok || returnTime > op.Return { + delTimes[kv] = op.Return + } } - earliestReturnTime[kv] = op.Return } case model.Range: case model.LeaseGrant: @@ -181,17 +255,25 @@ func uniquePutReturnTime(allOperations []porcupine.Operation, persistedRequests lastReturnTime-- } for _, op := range request.Txn.OperationsOnSuccess { - if op.Type != model.PutOperation { - continue - } - kv := keyValue{Key: op.Put.Key, Value: op.Put.Value} - if count := clientPutCount[kv]; count > 1 { - continue - } - returnTime, ok := earliestReturnTime[kv] - if ok { - lastReturnTime = min(returnTime, lastReturnTime) - earliestReturnTime[kv] = lastReturnTime + switch op.Type { + case model.PutOperation: + kv := model.PutOptions{Key: op.Put.Key, Value: op.Put.Value} + if clientPutCount[kv] > 1 { + continue + } + if returnTime, ok := putTimes[kv]; ok { + lastReturnTime = min(returnTime, lastReturnTime) + putTimes[kv] = lastReturnTime + } + case model.DeleteOperation: + kv := model.DeleteOptions{Key: op.Delete.Key} + if clientDeleteCount[kv] > 1 { + continue + } + if returnTime, ok := delTimes[kv]; ok { + lastReturnTime = min(returnTime, lastReturnTime) + delTimes[kv] = lastReturnTime + } } } case model.LeaseGrant: @@ -201,11 +283,11 @@ func uniquePutReturnTime(allOperations []porcupine.Operation, persistedRequests panic(fmt.Sprintf("Unknown request type: %q", request.Type)) } } - return earliestReturnTime + return putTimes, delTimes } -func countClientPuts(reports []report.ClientReport) map[keyValue]int64 { - counter := map[keyValue]int64{} +func countClientPuts(reports []report.ClientReport) map[model.PutOptions]int64 { + counter := map[model.PutOptions]int64{} for _, client := range reports { for _, op := range client.KeyValue { request := op.Input.(model.EtcdRequest) @@ -215,21 +297,21 @@ func countClientPuts(reports []report.ClientReport) map[keyValue]int64 { return counter } -func countPersistedPuts(requests []model.EtcdRequest) map[keyValue]int64 { - counter := map[keyValue]int64{} +func countPersistedPuts(requests []model.EtcdRequest) map[model.PutOptions]int64 { + counter := map[model.PutOptions]int64{} for _, request := range requests { countPuts(counter, request) } return counter } -func countPuts(counter map[keyValue]int64, request model.EtcdRequest) { +func countPuts(counter map[model.PutOptions]int64, request model.EtcdRequest) { switch request.Type { case model.Txn: for _, operation := range append(request.Txn.OperationsOnSuccess, request.Txn.OperationsOnFailure...) { switch operation.Type { case model.PutOperation: - kv := keyValue{Key: operation.Put.Key, Value: operation.Put.Value} + kv := model.PutOptions{Key: operation.Put.Key, Value: operation.Put.Value} counter[kv]++ case model.DeleteOperation: case model.RangeOperation: @@ -247,7 +329,32 @@ func countPuts(counter map[keyValue]int64, request model.EtcdRequest) { } } -type keyValue struct { - Key string - Value model.ValueOrHash +func countClientDeletes(reports []report.ClientReport) map[model.DeleteOptions]int64 { + counter := map[model.DeleteOptions]int64{} + for _, client := range reports { + for _, op := range client.KeyValue { + request := op.Input.(model.EtcdRequest) + countDeletes(counter, request) + } + } + return counter +} + +func countPersistedDeletes(requests []model.EtcdRequest) map[model.DeleteOptions]int64 { + counter := map[model.DeleteOptions]int64{} + for _, req := range requests { + countDeletes(counter, req) + } + return counter +} + +func countDeletes(counter map[model.DeleteOptions]int64, request model.EtcdRequest) { + if request.Type != model.Txn { + return + } + for _, operation := range append(request.Txn.OperationsOnSuccess, request.Txn.OperationsOnFailure...) { + if operation.Type == model.DeleteOperation { + counter[operation.Delete]++ + } + } } diff --git a/tests/robustness/validate/patch_history_test.go b/tests/robustness/validate/patch_history_test.go index 45294d3b8219..edc2dc98aa31 100644 --- a/tests/robustness/validate/patch_history_test.go +++ b/tests/robustness/validate/patch_history_test.go @@ -224,17 +224,18 @@ func TestPatchHistory(t *testing.T) { }, }, { - name: "failed delete remains, time untouched regardless of persisted event and watch", + name: "failed delete remains, time patched based on persisted event and watch", historyFunc: func(h *model.AppendableHistory) { h.AppendDelete("key", 100, 200, nil, errors.New("failed")) h.AppendPut("key", "value", 300, 400, &clientv3.PutResponse{}, nil) }, persistedRequest: []model.EtcdRequest{ + deleteRequest("key"), putRequest("key", "value"), }, watchOperations: watchResponse(3, deleteEvent("key", 2)), expectedRemainingOperations: []porcupine.Operation{ - {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: 399, Output: model.MaybeEtcdResponse{Persisted: true, PersistedRevision: 2}}, {Return: 400, Output: putResponse(0, model.EtcdOperationResult{})}, }, }, @@ -269,8 +270,11 @@ func TestPatchHistory(t *testing.T) { historyFunc: func(h *model.AppendableHistory) { h.AppendTxn(nil, []clientv3.Op{clientv3.OpDelete("key")}, []clientv3.Op{}, 100, 200, nil, errors.New("failed")) }, + persistedRequest: []model.EtcdRequest{ + deleteRequest("key"), + }, expectedRemainingOperations: []porcupine.Operation{ - {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Persisted: true}}, }, }, { @@ -278,26 +282,31 @@ func TestPatchHistory(t *testing.T) { historyFunc: func(h *model.AppendableHistory) { h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value")}, []clientv3.Op{clientv3.OpDelete("key")}, 100, 200, &clientv3.TxnResponse{Succeeded: true}, nil) }, + persistedRequest: []model.EtcdRequest{ + putRequest("key", "value"), + }, expectedRemainingOperations: []porcupine.Operation{ + // It's successful, so it remains as-is with its original response {Return: 200, Output: putResponse(0)}, }, }, { - name: "failed txn put/delete remains", + name: "failed txn empty/delete is dropped", historyFunc: func(h *model.AppendableHistory) { - h.AppendTxn(nil, []clientv3.Op{clientv3.OpPut("key", "value")}, []clientv3.Op{clientv3.OpDelete("key")}, 100, 200, nil, errors.New("failed")) - }, - expectedRemainingOperations: []porcupine.Operation{ - {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, + h.AppendTxn(nil, []clientv3.Op{}, []clientv3.Op{clientv3.OpDelete("key")}, 100, 200, nil, errors.New("failed")) }, + expectedRemainingOperations: []porcupine.Operation{}, }, { name: "failed txn delete/put remains", historyFunc: func(h *model.AppendableHistory) { h.AppendTxn(nil, []clientv3.Op{clientv3.OpDelete("key")}, []clientv3.Op{clientv3.OpPut("key", "value")}, 100, 200, nil, errors.New("failed")) }, + persistedRequest: []model.EtcdRequest{ + deleteRequest("key"), + }, expectedRemainingOperations: []porcupine.Operation{ - {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Persisted: true}}, }, }, { @@ -376,8 +385,11 @@ func TestPatchHistory(t *testing.T) { historyFunc: func(h *model.AppendableHistory) { h.AppendTxn(nil, []clientv3.Op{}, []clientv3.Op{clientv3.OpDelete("key")}, 100, 200, nil, errors.New("failed")) }, + persistedRequest: []model.EtcdRequest{ + deleteRequest("key"), + }, expectedRemainingOperations: []porcupine.Operation{ - {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: infinite, Output: model.MaybeEtcdResponse{Persisted: true}}, }, }, { @@ -401,6 +413,32 @@ func TestPatchHistory(t *testing.T) { }, expectedRemainingOperations: []porcupine.Operation{}, }, + { + name: "failed delete remains, time untouched due to non-uniqueness", + historyFunc: func(h *model.AppendableHistory) { + h.AppendDelete("key", 100, 200, nil, errors.New("failed")) + h.AppendDelete("key", 300, 400, &clientv3.DeleteResponse{}, nil) + h.AppendPut("key", "value", 500, 600, &clientv3.PutResponse{}, nil) + }, + persistedRequest: []model.EtcdRequest{ + deleteRequest("key"), + deleteRequest("key"), + putRequest("key", "value"), + }, + watchOperations: watchResponse(250, deleteEvent("key", 2)), + expectedRemainingOperations: []porcupine.Operation{ + {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: 400, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 600, Output: putResponse(0, model.EtcdOperationResult{})}, + }, + }, + { + name: "failed txn delete is dropped when not persisted", + historyFunc: func(h *model.AppendableHistory) { + h.AppendTxn(nil, []clientv3.Op{clientv3.OpDelete("key")}, []clientv3.Op{}, 100, 200, nil, errors.New("failed")) + }, + expectedRemainingOperations: []porcupine.Operation{}, + }, } { t.Run(tc.name, func(t *testing.T) { history := model.NewAppendableHistory(identity.NewIDProvider()) From 7e204be13cc4c29c98f8cc41071995c8b85e0c32 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 12 Nov 2025 09:59:29 -0500 Subject: [PATCH 0650/1068] Migrate e2e tests to use Go workspace Signed-off-by: Ivan Valdes --- scripts/test.sh | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index f3f07e45e91e..573dcce08d64 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -152,11 +152,18 @@ function integration_pass { } function e2e_pass { - # e2e tests are running pre-build binary. Settings like --race,-cover,-cpu does not have any impact. - # shellcheck disable=SC2068 - run_for_module "tests" go_test "./e2e/..." "keep_going" : -timeout="${TIMEOUT:-30m}" ${RUN_ARG[@]:-} "$@" || return $? - # shellcheck disable=SC2068 - run_for_module "tests" go_test "./common/..." "keep_going" : --tags=e2e -timeout="${TIMEOUT:-30m}" ${RUN_ARG[@]:-} "$@" + # e2e tests are running pre-build binary. Settings like --race,-cover,-cpu do not have any impact. + KEEP_GOING_TESTS=true \ + run_go_tests_expanding_packages ./tests/e2e/... \ + -timeout="${TIMEOUT:-30m}" \ + "${RUN_ARG[@]}" \ + "$@" + KEEP_GOING_TESTS=true \ + run_go_tests_expanding_packages ./tests/common/... \ + -tags=e2e \ + -timeout="${TIMEOUT:-30m}" \ + "${RUN_ARG[@]}" \ + "$@" } function robustness_pass { From c60f6608cf298e7d0daf6acd8055391bc534b907 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Sun, 9 Nov 2025 16:04:46 -0500 Subject: [PATCH 0651/1068] Migrate integration tests to use Go workspace Signed-off-by: Ivan Valdes --- scripts/test.sh | 27 +++++++++++++++++++++------ scripts/test_lib.sh | 2 +- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index f3f07e45e91e..c406b2c1ad74 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -136,18 +136,33 @@ function unit_pass { function integration_extra { if [ -z "${PKG}" ] ; then - # shellcheck disable=SC2068 - run_for_module "tests" go_test "./integration/v2store/..." "keep_going" : -timeout="${TIMEOUT:-5m}" ${COMMON_TEST_FLAGS[@]:-} ${RUN_ARG[@]:-} "$@" || return $? + KEEP_GOING_TESTS=true \ + run_go_tests_expanding_packages ./tests/integration/v2store/... \ + -timeout="${TIMEOUT:-5m}" \ + "${COMMON_TEST_FLAGS[@]}" \ + "${RUN_ARG[@]}" \ + "$@" else log_warning "integration_extra ignored when PKG is specified" fi } function integration_pass { - # shellcheck disable=SC2068 - run_for_module "tests" go_test "./integration/..." "parallel" : -timeout="${TIMEOUT:-15m}" ${COMMON_TEST_FLAGS[@]:-} ${RUN_ARG[@]:-} -p=2 "$@" || return $? - # shellcheck disable=SC2068 - run_for_module "tests" go_test "./common/..." "parallel" : --tags=integration -timeout="${TIMEOUT:-15m}" ${COMMON_TEST_FLAGS[@]:-} ${RUN_ARG[@]:-} -p=2 "$@" || return $? + run_go_tests ./tests/integration/... \ + -p=2 \ + -timeout="${TIMEOUT:-15m}" \ + "${COMMON_TEST_FLAGS[@]}" \ + "${RUN_ARG[@]}" \ + "$@" + + run_go_tests ./tests/common/... \ + -p=2 \ + -tags=integration \ + -timeout="${TIMEOUT:-15m}" \ + "${COMMON_TEST_FLAGS[@]}" \ + "${RUN_ARG[@]}" \ + "$@" + integration_extra "$@" } diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index 2b0438a008fb..c1b3dad8b9f0 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -349,7 +349,7 @@ function go_test { # run_go_tests_expanding_packages [arguments to pass to go test] # Expands the packages in the list of arguments, i.e. ./... into a list of # packages for that given module. Then, it calls run_go_tests with the expanded -# packages. +# packages. Implements the legacy modes for non-parallel testing. function run_go_tests_expanding_packages { local packages=() local args=() From 5200c50c078dc007b4f2161f27877a4198d5103d Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 13 Nov 2025 09:31:53 -0500 Subject: [PATCH 0652/1068] Fix setting revision of delete operation based on watch event generated by lease revoke Signed-off-by: Marek Siarkowicz --- tests/robustness/validate/patch_history.go | 3 +- .../robustness/validate/patch_history_test.go | 55 ++++++++++++++++++- 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/tests/robustness/validate/patch_history.go b/tests/robustness/validate/patch_history.go index edbf0ba329c6..cacf08c1b182 100644 --- a/tests/robustness/validate/patch_history.go +++ b/tests/robustness/validate/patch_history.go @@ -79,8 +79,7 @@ func watchRevisions(reports []report.ClientReport) (map[model.PutOptions]int64, kv := model.PutOptions{Key: event.Key, Value: event.Value} putRevisions[kv] = event.Revision case model.DeleteOperation: - kv := model.DeleteOptions{Key: event.Key} // ADD: Track delete revisions - delRevisions[kv] = event.Revision + // Delete events are also created by leaseRevoke rquest. default: panic(fmt.Sprintf("unknown event type %q", event.Type)) } diff --git a/tests/robustness/validate/patch_history_test.go b/tests/robustness/validate/patch_history_test.go index edc2dc98aa31..a64302873bf3 100644 --- a/tests/robustness/validate/patch_history_test.go +++ b/tests/robustness/validate/patch_history_test.go @@ -224,7 +224,39 @@ func TestPatchHistory(t *testing.T) { }, }, { - name: "failed delete remains, time patched based on persisted event and watch", + name: "failed delete with lease is dropped", + historyFunc: func(h *model.AppendableHistory) { + h.AppendDelete("key", 100, 200, nil, errors.New("failed")) + }, + expectedRemainingOperations: []porcupine.Operation{}, + }, + { + name: "failed delete remains, if there is a persisted request", + historyFunc: func(h *model.AppendableHistory) { + h.AppendDelete("key", 100, 200, nil, errors.New("failed")) + }, + persistedRequest: []model.EtcdRequest{ + deleteRequest("key"), + }, + expectedRemainingOperations: []porcupine.Operation{ + {Return: infinite, Output: model.MaybeEtcdResponse{Persisted: true}}, + }, + }, + { + name: "failed delete remains, if there is a persisted request, revision is not patched based on watch due to leaseRevoke also triggering delete watch events", + historyFunc: func(h *model.AppendableHistory) { + h.AppendDelete("key", 100, 200, nil, errors.New("failed")) + }, + persistedRequest: []model.EtcdRequest{ + deleteRequest("key"), + }, + watchOperations: watchResponse(3, deleteEvent("key", 2)), + expectedRemainingOperations: []porcupine.Operation{ + {Return: infinite, Output: model.MaybeEtcdResponse{Persisted: true}}, + }, + }, + { + name: "failed delete remains, if there is a matching persisted request, uniqueness of this operation and following operation allows patching based on following operation", historyFunc: func(h *model.AppendableHistory) { h.AppendDelete("key", 100, 200, nil, errors.New("failed")) h.AppendPut("key", "value", 300, 400, &clientv3.PutResponse{}, nil) @@ -233,12 +265,29 @@ func TestPatchHistory(t *testing.T) { deleteRequest("key"), putRequest("key", "value"), }, - watchOperations: watchResponse(3, deleteEvent("key", 2)), expectedRemainingOperations: []porcupine.Operation{ - {Return: 399, Output: model.MaybeEtcdResponse{Persisted: true, PersistedRevision: 2}}, + {Return: 399, Output: model.MaybeEtcdResponse{Persisted: true}}, {Return: 400, Output: putResponse(0, model.EtcdOperationResult{})}, }, }, + { + name: "failed delete remains if there is a matching persisted request, lack of uniqueness of this operation prevents patching based on following operation", + historyFunc: func(h *model.AppendableHistory) { + h.AppendDelete("key", 100, 200, nil, errors.New("failed")) + h.AppendPut("key", "value", 300, 400, &clientv3.PutResponse{}, nil) + h.AppendDelete("key", 500, 600, &clientv3.DeleteResponse{}, nil) + }, + persistedRequest: []model.EtcdRequest{ + deleteRequest("key"), + putRequest("key", "value"), + deleteRequest("key"), + }, + expectedRemainingOperations: []porcupine.Operation{ + {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: 400, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 600, Output: putResponse(0, model.EtcdOperationResult{})}, + }, + }, { name: "failed empty txn is dropped", historyFunc: func(h *model.AppendableHistory) { From 0d0afe04d10faa83a9864ecfc957c7dfcc23cb1d Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 13 Nov 2025 09:43:44 -0500 Subject: [PATCH 0653/1068] Unify how operations are extracted from TxnRequest Signed-off-by: Marek Siarkowicz --- tests/robustness/model/types.go | 5 +++++ tests/robustness/validate/patch_history.go | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/tests/robustness/model/types.go b/tests/robustness/model/types.go index 08a174215d7c..22cbd4602535 100644 --- a/tests/robustness/model/types.go +++ b/tests/robustness/model/types.go @@ -19,6 +19,7 @@ import ( "hash/fnv" "maps" "reflect" + "slices" ) // RevisionForNonLinearizableResponse is a fake revision value used to @@ -89,6 +90,10 @@ type TxnRequest struct { OperationsOnFailure []EtcdOperation } +func (txn *TxnRequest) AllOperations() []EtcdOperation { + return slices.Concat(txn.OperationsOnSuccess, txn.OperationsOnFailure) +} + type EtcdCondition struct { Key string ExpectedRevision int64 diff --git a/tests/robustness/validate/patch_history.go b/tests/robustness/validate/patch_history.go index edbf0ba329c6..33cb322d2a96 100644 --- a/tests/robustness/validate/patch_history.go +++ b/tests/robustness/validate/patch_history.go @@ -108,7 +108,7 @@ func patchOperations( } var txnRevision int64 var persisted bool - for _, etcdOp := range append(request.Txn.OperationsOnSuccess, request.Txn.OperationsOnFailure...) { + for _, etcdOp := range request.Txn.AllOperations() { switch etcdOp.Type { case model.PutOperation: kv := model.PutOptions{Key: etcdOp.Put.Key, Value: etcdOp.Put.Value} @@ -214,7 +214,7 @@ func uniqueOperationReturnTime(allOperations []porcupine.Operation, persistedReq request := op.Input.(model.EtcdRequest) switch request.Type { case model.Txn: - for _, etcdOp := range append(request.Txn.OperationsOnSuccess, request.Txn.OperationsOnFailure...) { + for _, etcdOp := range request.Txn.AllOperations() { switch etcdOp.Type { case model.PutOperation: kv := model.PutOptions{Key: etcdOp.Put.Key, Value: etcdOp.Put.Value} @@ -254,7 +254,7 @@ func uniqueOperationReturnTime(allOperations []porcupine.Operation, persistedReq if lastReturnTime != math.MaxInt64 { lastReturnTime-- } - for _, op := range request.Txn.OperationsOnSuccess { + for _, op := range request.Txn.AllOperations() { switch op.Type { case model.PutOperation: kv := model.PutOptions{Key: op.Put.Key, Value: op.Put.Value} @@ -308,7 +308,7 @@ func countPersistedPuts(requests []model.EtcdRequest) map[model.PutOptions]int64 func countPuts(counter map[model.PutOptions]int64, request model.EtcdRequest) { switch request.Type { case model.Txn: - for _, operation := range append(request.Txn.OperationsOnSuccess, request.Txn.OperationsOnFailure...) { + for _, operation := range request.Txn.AllOperations() { switch operation.Type { case model.PutOperation: kv := model.PutOptions{Key: operation.Put.Key, Value: operation.Put.Value} @@ -352,7 +352,7 @@ func countDeletes(counter map[model.DeleteOptions]int64, request model.EtcdReque if request.Type != model.Txn { return } - for _, operation := range append(request.Txn.OperationsOnSuccess, request.Txn.OperationsOnFailure...) { + for _, operation := range request.Txn.AllOperations() { if operation.Type == model.DeleteOperation { counter[operation.Delete]++ } From 392ef450f0d042ae18fd347c16c00db7c2831fbd Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 15 Nov 2025 09:49:13 +0100 Subject: [PATCH 0654/1068] Rename putResponse to txnReponse as it doesn't specify put and is also used for delete Signed-off-by: Marek Siarkowicz --- tests/robustness/validate/operations_test.go | 2 +- .../robustness/validate/patch_history_test.go | 40 +++++++++---------- tests/robustness/validate/validate_test.go | 4 +- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/tests/robustness/validate/operations_test.go b/tests/robustness/validate/operations_test.go index e5f8cbe28f39..e6ffd9fcaf79 100644 --- a/tests/robustness/validate/operations_test.go +++ b/tests/robustness/validate/operations_test.go @@ -322,7 +322,7 @@ func allPutSuccesses(concurrencyCount int) []porcupine.Operation { ops = append(ops, porcupine.Operation{ ClientId: i, Input: putRequest("key", "value"), - Output: putResponse(int64(i)+2, model.EtcdOperationResult{}), + Output: txnResponse(int64(i)+2, model.EtcdOperationResult{}), Call: int64(i), Return: int64(i) + int64(concurrencyCount), }) diff --git a/tests/robustness/validate/patch_history_test.go b/tests/robustness/validate/patch_history_test.go index a64302873bf3..57d1263909cc 100644 --- a/tests/robustness/validate/patch_history_test.go +++ b/tests/robustness/validate/patch_history_test.go @@ -59,7 +59,7 @@ func TestPatchHistory(t *testing.T) { putRequest("key", "value"), }, expectedRemainingOperations: []porcupine.Operation{ - {Return: 200, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 200, Output: txnResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -86,7 +86,7 @@ func TestPatchHistory(t *testing.T) { }, expectedRemainingOperations: []porcupine.Operation{ {Return: 399, Output: model.MaybeEtcdResponse{Persisted: true}}, - {Return: 400, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 400, Output: txnResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -115,7 +115,7 @@ func TestPatchHistory(t *testing.T) { watchOperations: watchResponse(3, putEvent("key", "value", 2), putEvent("key", "value", 3)), expectedRemainingOperations: []porcupine.Operation{ {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, - {Return: 4, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 4, Output: txnResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -128,7 +128,7 @@ func TestPatchHistory(t *testing.T) { putRequest("key2", "value"), }, expectedRemainingOperations: []porcupine.Operation{ - {Return: 200, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 200, Output: txnResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -141,7 +141,7 @@ func TestPatchHistory(t *testing.T) { putRequest("key", "value2"), }, expectedRemainingOperations: []porcupine.Operation{ - {Return: 200, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 200, Output: txnResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -168,7 +168,7 @@ func TestPatchHistory(t *testing.T) { }, expectedRemainingOperations: []porcupine.Operation{ {Return: 399, Output: model.MaybeEtcdResponse{Persisted: true}}, - {Return: 400, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 400, Output: txnResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -197,7 +197,7 @@ func TestPatchHistory(t *testing.T) { watchOperations: watchResponse(3, putEvent("key", "value", 2), putEvent("key", "value", 3)), expectedRemainingOperations: []porcupine.Operation{ {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, - {Return: 4, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 4, Output: txnResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -220,7 +220,7 @@ func TestPatchHistory(t *testing.T) { h.AppendDelete("key", 100, 200, &clientv3.DeleteResponse{}, nil) }, expectedRemainingOperations: []porcupine.Operation{ - {Return: 200, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 200, Output: txnResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -267,7 +267,7 @@ func TestPatchHistory(t *testing.T) { }, expectedRemainingOperations: []porcupine.Operation{ {Return: 399, Output: model.MaybeEtcdResponse{Persisted: true}}, - {Return: 400, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 400, Output: txnResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -284,8 +284,8 @@ func TestPatchHistory(t *testing.T) { }, expectedRemainingOperations: []porcupine.Operation{ {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, - {Return: 400, Output: putResponse(0, model.EtcdOperationResult{})}, - {Return: 600, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 400, Output: txnResponse(0, model.EtcdOperationResult{})}, + {Return: 600, Output: txnResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -336,7 +336,7 @@ func TestPatchHistory(t *testing.T) { }, expectedRemainingOperations: []porcupine.Operation{ // It's successful, so it remains as-is with its original response - {Return: 200, Output: putResponse(0)}, + {Return: 200, Output: txnResponse(0)}, }, }, { @@ -389,7 +389,7 @@ func TestPatchHistory(t *testing.T) { }, expectedRemainingOperations: []porcupine.Operation{ {Return: 599, Output: model.MaybeEtcdResponse{Persisted: true}}, - {Return: 600, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 600, Output: txnResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -405,9 +405,9 @@ func TestPatchHistory(t *testing.T) { putRequest("key2", "value2"), }, expectedRemainingOperations: []porcupine.Operation{ - {Return: 200, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 200, Output: txnResponse(0, model.EtcdOperationResult{})}, {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, - {Return: 600, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 600, Output: txnResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -423,10 +423,10 @@ func TestPatchHistory(t *testing.T) { putRequest("key2", "value2"), }, expectedRemainingOperations: []porcupine.Operation{ - {Return: 200, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 200, Output: txnResponse(0, model.EtcdOperationResult{})}, // TODO: We can infer that failed operation finished before last operation matching following. {Return: infinite, Output: model.MaybeEtcdResponse{Persisted: true}}, - {Return: 600, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 600, Output: txnResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -477,8 +477,8 @@ func TestPatchHistory(t *testing.T) { watchOperations: watchResponse(250, deleteEvent("key", 2)), expectedRemainingOperations: []porcupine.Operation{ {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, - {Return: 400, Output: putResponse(0, model.EtcdOperationResult{})}, - {Return: 600, Output: putResponse(0, model.EtcdOperationResult{})}, + {Return: 400, Output: txnResponse(0, model.EtcdOperationResult{})}, + {Return: 600, Output: txnResponse(0, model.EtcdOperationResult{})}, }, }, { @@ -511,7 +511,7 @@ func TestPatchHistory(t *testing.T) { } } -func putResponse(rev int64, result ...model.EtcdOperationResult) model.MaybeEtcdResponse { +func txnResponse(rev int64, result ...model.EtcdOperationResult) model.MaybeEtcdResponse { return model.MaybeEtcdResponse{EtcdResponse: model.EtcdResponse{Revision: rev, Txn: &model.TxnResponse{Results: result}}} } diff --git a/tests/robustness/validate/validate_test.go b/tests/robustness/validate/validate_test.go index 3d1ff653237d..925e500544a7 100644 --- a/tests/robustness/validate/validate_test.go +++ b/tests/robustness/validate/validate_test.go @@ -121,7 +121,7 @@ func TestValidateAndReturnVisualize(t *testing.T) { ClientId: 0, Input: putRequest("key", "value"), Call: 300, - Output: putResponse(2, model.EtcdOperationResult{}), + Output: txnResponse(2, model.EtcdOperationResult{}), Return: 400, }, }, @@ -154,7 +154,7 @@ func TestValidateAndReturnVisualize(t *testing.T) { ClientId: 0, Input: putRequest("key", "value"), Call: 300, - Output: putResponse(2, model.EtcdOperationResult{}), + Output: txnResponse(2, model.EtcdOperationResult{}), Return: 400, }, }, From 7b6a6bdf98b3da8d3b169e965dba422d2fdbbcb3 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 15 Nov 2025 10:48:01 +0100 Subject: [PATCH 0655/1068] Allow WAL entries to conflict if they are above commited index, select entry with the highest term Signed-off-by: Marek Siarkowicz --- tests/robustness/report/wal.go | 26 +++++++++++++---- tests/robustness/report/wal_test.go | 44 +++++++++++++++++++++++++---- 2 files changed, 59 insertions(+), 11 deletions(-) diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index 08663711c4fe..8394011aef4d 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -18,6 +18,7 @@ import ( "errors" "fmt" "io" + "math" "os" "path/filepath" "reflect" @@ -62,14 +63,17 @@ func PersistedRequests(lg *zap.Logger, dataDirs []string) ([]model.EtcdRequest, return nil, errors.New("no data dirs") } entriesPersistedInWAL := make([][]raftpb.Entry, len(dataDirs)) + var minCommitIndex uint64 = math.MaxUint64 for i, dir := range dataDirs { - _, entries, err := ReadWAL(lg, dir) + state, entries, err := ReadWAL(lg, dir) if err != nil { lg.Error("Failed to read WAL", zap.Error(err), zap.String("data-dir", dir)) + continue } + minCommitIndex = min(minCommitIndex, state.Commit) entriesPersistedInWAL[i] = entries } - entries, err := mergeMembersEntries(entriesPersistedInWAL) + entries, err := mergeMembersEntries(minCommitIndex, entriesPersistedInWAL) if err != nil { return nil, err } @@ -89,7 +93,7 @@ func PersistedRequests(lg *zap.Logger, dataDirs []string) ([]model.EtcdRequest, return persistedRequests, nil } -func mergeMembersEntries(memberEntries [][]raftpb.Entry) ([]raftpb.Entry, error) { +func mergeMembersEntries(minCommitIndex uint64, memberEntries [][]raftpb.Entry) ([]raftpb.Entry, error) { for _, entries := range memberEntries { var lastIndex uint64 for _, e := range entries { @@ -162,10 +166,20 @@ func mergeMembersEntries(memberEntries [][]raftpb.Entry) ([]raftpb.Entry, error) if vote != topVotes { continue } - if entryWithMostVotes != nil && !reflect.DeepEqual(*entryWithMostVotes, memberEntries[i][memberIndices[i]]) { - return nil, fmt.Errorf("mismatching entries on raft index %d", raftIndex) + entry := memberEntries[i][memberIndices[i]] + if entryWithMostVotes == nil { + entryWithMostVotes = &entry + continue + } + if entryWithMostVotes.Term != entry.Term && entry.Index > minCommitIndex { + if entryWithMostVotes.Term < entry.Term { + entryWithMostVotes = &entry + } + continue + } + if !reflect.DeepEqual(*entryWithMostVotes, entry) { + return nil, fmt.Errorf("mismatching entries on raft index %d, mostVotes: %+v, other: %+v", raftIndex, *entryWithMostVotes, entry) } - entryWithMostVotes = &memberEntries[i][memberIndices[i]] } mergedHistory = append(mergedHistory, *entryWithMostVotes) } diff --git a/tests/robustness/report/wal_test.go b/tests/robustness/report/wal_test.go index 374b672d99e2..39d0216df8a4 100644 --- a/tests/robustness/report/wal_test.go +++ b/tests/robustness/report/wal_test.go @@ -24,10 +24,11 @@ import ( func TestMergeMemberEntries(t *testing.T) { tcs := []struct { - name string - memberEntries [][]raftpb.Entry - expectErr string - expectEntries []raftpb.Entry + name string + minCommitIndex uint64 + memberEntries [][]raftpb.Entry + expectErr string + expectEntries []raftpb.Entry }{ { name: "Error when empty data dir", @@ -314,10 +315,43 @@ func TestMergeMemberEntries(t *testing.T) { }, expectErr: "mismatching entries on raft index 1", }, + { + name: "Error if entries mismatch on index before minCommitIndex", + minCommitIndex: 2, + memberEntries: [][]raftpb.Entry{ + { + raftpb.Entry{Index: 1, Term: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Term: 1, Data: []byte("b")}, + }, + { + raftpb.Entry{Index: 1, Term: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Term: 2, Data: []byte("c")}, + }, + }, + expectErr: "mismatching entries on raft index 2", + }, + { + name: "Select entry with higher term if they conflict on uncommitted index", + minCommitIndex: 1, + memberEntries: [][]raftpb.Entry{ + { + raftpb.Entry{Index: 1, Term: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Term: 1, Data: []byte("b")}, + }, + { + raftpb.Entry{Index: 1, Term: 1, Data: []byte("a")}, + raftpb.Entry{Index: 2, Term: 2, Data: []byte("x")}, + }, + }, + expectEntries: []raftpb.Entry{ + {Index: 1, Term: 1, Data: []byte("a")}, + {Index: 2, Term: 2, Data: []byte("x")}, + }, + }, } for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - entries, err := mergeMembersEntries(tc.memberEntries) + entries, err := mergeMembersEntries(tc.minCommitIndex, tc.memberEntries) if tc.expectErr == "" { require.NoError(t, err) } else { From 759003d673c4d2a4469342c97263fab36d5035be Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 16 Nov 2025 21:40:49 +0100 Subject: [PATCH 0656/1068] Disable optimization and inlining for Antithesis to make using debugger easier Signed-off-by: Marek Siarkowicz --- scripts/build_lib.sh | 4 ++++ tests/antithesis/server/Dockerfile | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/build_lib.sh b/scripts/build_lib.sh index 14f384bd5ecc..d005890cc3ff 100755 --- a/scripts/build_lib.sh +++ b/scripts/build_lib.sh @@ -31,6 +31,7 @@ CGO_ENABLED="${CGO_ENABLED:-0}" # Set GO_LDFLAGS="-s" for building without symbols for debugging. # shellcheck disable=SC2206 GO_LDFLAGS=(${GO_LDFLAGS:-} "-X=${VERSION_SYMBOL}=${GIT_SHA}") +GO_GCFLAGS=${GO_GCFLAGS:-} GO_BUILD_ENV=("CGO_ENABLED=${CGO_ENABLED}" "GO_BUILD_FLAGS=${GO_BUILD_FLAGS}" "GOOS=${GOOS}" "GOARCH=${GOARCH}") etcd_build() { @@ -46,6 +47,7 @@ etcd_build() { -trimpath \ -installsuffix=cgo \ "-ldflags=${GO_LDFLAGS[*]}" \ + -gcflags="${GO_GCFLAGS}" \ -o="../${out}/etcd" . || return 2 ) || return 2 @@ -57,6 +59,7 @@ etcd_build() { -trimpath \ -installsuffix=cgo \ "-ldflags=${GO_LDFLAGS[*]}" \ + -gcflags="${GO_GCFLAGS}" \ -o="../${out}/etcdutl" . || return 2 ) || return 2 @@ -68,6 +71,7 @@ etcd_build() { -trimpath \ -installsuffix=cgo \ "-ldflags=${GO_LDFLAGS[*]}" \ + -gcflags="${GO_GCFLAGS}" \ -o="../${out}/etcdctl" . || return 2 ) || return 2 # Verify whether symbol we overwrote exists diff --git a/tests/antithesis/server/Dockerfile b/tests/antithesis/server/Dockerfile index b162fb97fb2b..121a60b5e3e2 100644 --- a/tests/antithesis/server/Dockerfile +++ b/tests/antithesis/server/Dockerfile @@ -51,7 +51,7 @@ RUN for d in server etcdutl etcdctl; do \ # The instrumentation also adds a new main file which clashes with dummy.go found in non release-3.4 branches RUN if [ -f "dummy.go" ]; then sed -i 's/package main_test/package main/' dummy.go; fi -RUN CGO_ENABLED=1 make build +RUN CGO_ENABLED=1 GO_GCFLAGS="all=-N -l" make build RUN go install github.com/go-delve/delve/cmd/dlv@latest FROM ubuntu:24.04 From d9f96ef98653f6016ae613a1dc051f3553d08f72 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Mon, 17 Nov 2025 11:12:12 +0000 Subject: [PATCH 0657/1068] Print token fingerpriont instead of the original tokens Signed-off-by: Benjamin Wang --- server/auth/jwt.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/auth/jwt.go b/server/auth/jwt.go index cab3f3eb9035..ccfd8fe59012 100644 --- a/server/auth/jwt.go +++ b/server/auth/jwt.go @@ -115,12 +115,12 @@ func (t *tokenJWT) assign(ctx context.Context, username string, revision uint64) return "", err } - t.lg.Debug( - "created/assigned a new JWT token", - zap.String("user-name", username), - zap.Uint64("revision", revision), - zap.String("token", token), - ) + if ce := t.lg.Check(zap.DebugLevel, "created/assigned a new JWT token"); ce != nil { + tokenFingerprint := redactToken(token) + ce.Write(zap.String("user-name", username), + zap.Uint64("revision", revision), + zap.String("token-fingerprint", tokenFingerprint)) + } return token, nil } From 6e9e62f1e76e14c055e38627a6a2909a709ecba3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Nov 2025 17:03:50 +0000 Subject: [PATCH 0658/1068] build(deps): bump actions/checkout from 5.0.0 to 5.0.1 Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0 to 5.0.1. - [Release notes](https://github.com/actions/checkout/releases) - [Commits](https://github.com/actions/checkout/compare/v5...v5.0.1) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 5.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 2 +- .github/workflows/antithesis-verify.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/measure-testgrid-flakiness.yaml | 2 +- .github/workflows/scorecards.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 8312464e0fcf..17bda2aba3bd 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -42,7 +42,7 @@ jobs: environment: Antithesis steps: - name: Checkout the code - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - name: Login to Antithesis Docker Registry uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 diff --git a/.github/workflows/antithesis-verify.yml b/.github/workflows/antithesis-verify.yml index a0255c8dd471..db875fa91bfe 100644 --- a/.github/workflows/antithesis-verify.yml +++ b/.github/workflows/antithesis-verify.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v5.0.1 - name: Build etcd-server and etcd-client images run: | diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 06bb4c0b677d..05cd7345e80c 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -37,7 +37,7 @@ jobs: language: ['go'] steps: - name: Checkout repository - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 diff --git a/.github/workflows/measure-testgrid-flakiness.yaml b/.github/workflows/measure-testgrid-flakiness.yaml index c6d61ea38c58..4cb2894284cf 100644 --- a/.github/workflows/measure-testgrid-flakiness.yaml +++ b/.github/workflows/measure-testgrid-flakiness.yaml @@ -12,7 +12,7 @@ jobs: name: Measure TestGrid Flakiness runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - id: goversion run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index d2d4e2580a66..525e7bb31cdc 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -23,7 +23,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 with: persist-credentials: false From f29f4b4d9171f8eea74da706a901d865b2243ab8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Nov 2025 20:35:20 +0000 Subject: [PATCH 0659/1068] build(deps): bump github/codeql-action from 4.31.2 to 4.31.3 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.2 to 4.31.3. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/0499de31b99561a6d14a36a5f662c2a54f91beee...014f16e7ab1402f30e7c3329d33797e7948572db) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.31.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 05cd7345e80c..998956b617b3 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 + uses: github/codeql-action/init@014f16e7ab1402f30e7c3329d33797e7948572db # v4.31.3 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 + uses: github/codeql-action/autobuild@014f16e7ab1402f30e7c3329d33797e7948572db # v4.31.3 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 + uses: github/codeql-action/analyze@014f16e7ab1402f30e7c3329d33797e7948572db # v4.31.3 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 525e7bb31cdc..fcbc1dc373de 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 + uses: github/codeql-action/upload-sarif@014f16e7ab1402f30e7c3329d33797e7948572db # v4.31.3 with: sarif_file: results.sarif From a48d688d6d840ee9dd9096c4fc645d739348e4fb Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 19 Nov 2025 14:53:59 -0800 Subject: [PATCH 0660/1068] build(deps): bump github.com/grpc-ecosystem/go-grpc-middleware/v2 Bumps [github.com/grpc-ecosystem/go-grpc-middleware/v2](https://github.com/grpc-ecosystem/go-grpc-middleware) from 2.1.0 to 2.3.3. - [Release notes](https://github.com/grpc-ecosystem/go-grpc-middleware/releases) - [Commits](grpc-ecosystem/go-grpc-middleware@v2.1.0...v2.3.3) Signed-off-by: Ivan Valdes --- updated-dependencies: - dependency-name: github.com/grpc-ecosystem/go-grpc-middleware/v2 dependency-version: 2.3.3 dependency-type: indirect update-type: version-update:semver-minor ... Reference: https://github.com/etcd-io/etcd/pull/20911 Signed-off-by: Ivan Valdes --- cache/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- go.work.sum | 49 ++++++++---------------------------------------- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 13 files changed, 27 insertions(+), 60 deletions(-) diff --git a/cache/go.sum b/cache/go.sum index a9e131f8650e..039a3f36c057 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -24,8 +24,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= diff --git a/client/v3/go.mod b/client/v3/go.mod index 886c01b2bef6..0d69685133e7 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -24,7 +24,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect + github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 19b02cfff288..9b10dbedbb1c 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -24,8 +24,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 0c7764807082..304bdba6a6bc 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -39,8 +39,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 0e354cab383d..2e73b5d26850 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -48,7 +48,7 @@ require ( github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect + github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 931f74029963..1f20cb604d97 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -46,8 +46,8 @@ github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWm github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= diff --git a/go.mod b/go.mod index 52373eb18b15..4349ad226a68 100644 --- a/go.mod +++ b/go.mod @@ -62,7 +62,7 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect + github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect diff --git a/go.sum b/go.sum index 5f87a108edc6..e4052a7bfc6b 100644 --- a/go.sum +++ b/go.sum @@ -74,8 +74,8 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaW github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= diff --git a/go.work.sum b/go.work.sum index 7ace7ebba035..be3648479eea 100644 --- a/go.work.sum +++ b/go.work.sum @@ -3,17 +3,17 @@ bitbucket.org/creachadair/shell v0.0.8/go.mod h1:vINzudofoUXZSJ5tREgpy+Etyjsag3a bitbucket.org/creachadair/stringset v0.0.11 h1:6Sv4CCv14Wm+OipW4f3tWOb0SQVpBDLW0knnJqUnmZ8= bitbucket.org/liamstask/goose v0.0.0-20150115234039-8488cc47d90c h1:bkb2NMGo3/Du52wvYj9Whth5KZfMV6d3O0Vbr3nz/UE= bitbucket.org/liamstask/goose v0.0.0-20150115234039-8488cc47d90c/go.mod h1:hSVuE3qU7grINVSwrmzHfpg9k87ALBk+XaualNyUzI4= -buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20230802163732-1c33ebd9ecfa.1 h1:tdpHgTbmbvEIARu+bixzmleMi14+3imnpoFXz+Qzjp4= -buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20230802163732-1c33ebd9ecfa.1/go.mod h1:xafc+XIsTxTy76GJQ1TKgvJWsSugFBqMaN27WhUblew= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250425153114-8976f5be98c1.1 h1:YhMSc48s25kr7kv31Z8vf7sPUIq5YJva9z1mn/hAt0M= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250425153114-8976f5be98c1.1/go.mod h1:avRlCjnFzl98VPaeCtJ24RrV/wwHFzB8sWXhj26+n/U= +buf.build/go/protovalidate v0.12.0 h1:4GKJotbspQjRCcqZMGVSuC8SjwZ/FmgtSuKDpKUTZew= +buf.build/go/protovalidate v0.12.0/go.mod h1:q3PFfbzI05LeqxSwq+begW2syjy2Z6hLxZSkP1OH/D0= cel.dev/expr v0.15.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg= cel.dev/expr v0.20.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= -cloud.google.com/go v0.118.2/go.mod h1:CFO4UPEPi8oV21xoezZCrd3d81K4fFkDTEJu4R8K+9M= cloud.google.com/go v0.118.3/go.mod h1:Lhs3YLnBlwJ4KA6nuObNMZ/fCbOQBPuWKPoE0Wa/9Vc= cloud.google.com/go v0.120.0/go.mod h1:/beW32s8/pGRuj4IILWQNd4uuebeT4dkOhKmkfit64Q= -cloud.google.com/go v0.121.0/go.mod h1:rS7Kytwheu/y9buoDmu5EIpMMCI4Mb8ND4aeN4Vwj7Q= cloud.google.com/go v0.121.2 h1:v2qQpN6Dx9x2NmwrqlesOt3Ys4ol5/lFZ6Mg1B7OJCg= cloud.google.com/go v0.121.2/go.mod h1:nRFlrHq39MNVWu+zESP2PosMWA0ryJw8KUBZ2iZpxbw= cloud.google.com/go/accessapproval v1.7.4/go.mod h1:/aTEh45LzplQgFYdQdwPMR9YdX0UlhBmvB84uAmQKUc= @@ -65,13 +65,11 @@ cloud.google.com/go/assuredworkloads v1.11.4/go.mod h1:4pwwGNwy1RP0m+y12ef3Q/8Pa cloud.google.com/go/assuredworkloads v1.12.3/go.mod h1:iGBkyMGdtlsxhCi4Ys5SeuvIrPTeI6HeuEJt7qJgJT8= cloud.google.com/go/assuredworkloads v1.12.6 h1:ip/shfJYx6lrHBWYADjrrrubcm7uZzy50TTF5tPG7ek= cloud.google.com/go/assuredworkloads v1.12.6/go.mod h1:QyZHd7nH08fmZ+G4ElihV1zoZ7H0FQCpgS0YWtwjCKo= -cloud.google.com/go/auth v0.14.1/go.mod h1:4JHUxlGXisL0AW8kXPtUF6ztuOksyfUQNFjfsOCXkPM= cloud.google.com/go/auth v0.16.0/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= cloud.google.com/go/auth v0.16.1/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI= cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ= -cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= cloud.google.com/go/automl v1.13.4/go.mod h1:ULqwX/OLZ4hBVfKQaMtxMSTlPx0GqGbWN8uA/1EqCP8= @@ -126,7 +124,6 @@ cloud.google.com/go/cloudtasks v1.13.3/go.mod h1:f9XRvmuFTm3VhIKzkzLCPyINSU3rjjv cloud.google.com/go/cloudtasks v1.13.6 h1:Fwan19UiNoFD+3KY0MnNHE5DyixOxNzS1mZ4ChOdpy0= cloud.google.com/go/cloudtasks v1.13.6/go.mod h1:/IDaQqGKMixD+ayM43CfsvWF2k36GeomEuy9gL4gLmU= cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= -cloud.google.com/go/compute v1.23.4/go.mod h1:/EJMj55asU6kAFnuZET8zqgwgJ9FvXWXOkkfQZa4ioI= cloud.google.com/go/compute v1.34.0/go.mod h1:zWZwtLwZQyonEvIQBuIa0WvraMYK69J5eDCOw9VZU4g= cloud.google.com/go/compute v1.38.0 h1:MilCLYQW2m7Dku8hRIIKo4r0oKastlD74sSu16riYKs= cloud.google.com/go/compute v1.38.0/go.mod h1:oAFNIuXOmXbK/ssXm3z4nZB8ckPdjltJ7xhHCdbWFZM= @@ -543,8 +540,8 @@ github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0/go.mod h1:ccdDY github.com/anthropics/anthropic-sdk-go v1.13.0 h1:Bhbe8sRoDPtipttg8bQYrMCKe2b79+q6rFW1vOKEUKI= github.com/anthropics/anthropic-sdk-go v1.13.0/go.mod h1:WTz31rIUHUHqai2UslPpw5CwXrQP3geYBioRV4WOLvE= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= -github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9 h1:goHVqTbFX3AIo0tzGr14pgfAW2ZfPChKO21Z9MGf/gk= -github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= +github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= +github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= github.com/apache/arrow/go/v10 v10.0.1 h1:n9dERvixoC/1JjDmBcs9FPaEryoANa2sCgVFo6ez9cI= github.com/apache/arrow/go/v11 v11.0.0 h1:hqauxvFQxww+0mEU/2XHG6LT7eZternCZq+A5Yly2uM= github.com/apache/arrow/go/v12 v12.0.1 h1:JsR2+hzYYjgSUkBSaahpqCetqZMr76djX80fF/DiJbg= @@ -563,8 +560,6 @@ github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZx github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= -github.com/bufbuild/protovalidate-go v0.2.1 h1:pJr07sYhliyfj/STAM7hU4J3FKpVeLVKvOBmOTN8j+s= -github.com/bufbuild/protovalidate-go v0.2.1/go.mod h1:e7XXDtlxj5vlEyAgsrxpzayp4cEMKCSSb8ZCkin+MVA= github.com/bwesterb/go-ristretto v1.2.0 h1:xxWOVbN5m8NNKiSDZXE1jtZvZnC6JSJ9cYFADiZcWtw= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= @@ -625,7 +620,6 @@ github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk= github.com/go-kit/log v0.1.0 h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 h1:6zl3BbBhdnMkpSj2YY30qV3gDcVBGtFgVsV3+/i+mKQ= github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= @@ -650,8 +644,8 @@ github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwm github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= -github.com/google/cel-go v0.17.1 h1:s2151PDGy/eqpCI80/8dl4VL3xTkqI/YubXLXCFw0mw= -github.com/google/cel-go v0.17.1/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= +github.com/google/cel-go v0.25.0 h1:jsFw9Fhn+3y2kBbltZR4VEz5xKkcIFRPDnuEzAGv5GY= +github.com/google/cel-go v0.25.0/go.mod h1:hjEb6r5SuOSlhCHmFoLzu8HGCERvIsDAbxDAyNU/MmI= github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= @@ -664,15 +658,12 @@ github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPg github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= github.com/google/trillian v1.6.0 h1:jMBeDBIkINFvS2n6oV5maDqfRlxREAc6CW9QYWQ0qT4= github.com/google/trillian v1.6.0/go.mod h1:Yu3nIMITzNhhMJEHjAtp6xKiu+H/iHu2Oq5FjV2mCWI= github.com/googleapis/cloud-bigtable-clients-test v0.0.3 h1:afMKTvA/jc6jSTMkeHBZGFDTt8Cc+kb1ATFzqMK85hw= github.com/googleapis/cloud-bigtable-clients-test v0.0.3/go.mod h1:TWtDzrrAI70C3dNLDY+nZN3gxHtFdZIbpL9rCTFyxE0= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= @@ -853,29 +844,19 @@ go.opentelemetry.io/contrib/detectors/gcp v1.36.0 h1:F7q2tNlCaHY9nMKHR6XH9/qkp8F go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= -go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= -go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY= -go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= -go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= -go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= -go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= @@ -886,8 +867,6 @@ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9i go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= @@ -910,8 +889,6 @@ golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= -golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= -golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= @@ -948,8 +925,6 @@ golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= -google.golang.org/api v0.160.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= -google.golang.org/api v0.222.0/go.mod h1:efZia3nXpWELrwMlN5vyQrD4GmJN1Vw0x68Et3r+a9c= google.golang.org/api v0.229.0/go.mod h1:wyDfmq5g1wYJWn29O22FDWN48P7Xcz0xz+LBpptYvB0= google.golang.org/api v0.232.0/go.mod h1:p9QCfBWZk1IJETUdbTKloR5ToFdKbYh2fkjsUL6vNoY= google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= @@ -958,20 +933,15 @@ google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAs google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genai v1.30.0 h1:7021aneIvl24nEBLbtQFEWleHsMbjzpcQvkT4WcJ1dc= google.golang.org/genai v1.30.0/go.mod h1:7pAilaICJlQBonjKKJNhftDFv3SREhZcTe9F6nRcjbg= -google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= -google.golang.org/genproto v0.0.0-20250122153221-138b5a5a4fd4/go.mod h1:qbZzneIOXSq+KFAFut9krLfRLZiFLzZL5u2t8SV83EE= google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE= google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s= google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= google.golang.org/genproto/googleapis/api v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:B5xPO//w8qmBDjGReYLpR6UJPnkldGkCSMoH/2vxJeg= -google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= -google.golang.org/genproto/googleapis/api v0.0.0-20250219182151-9fdb1cabc7b2/go.mod h1:W9ynFDP/shebLB1Hl/ESTOap2jHd6pmLXPNZC7SVDbA= google.golang.org/genproto/googleapis/api v0.0.0-20250227231956-55c901821b1e/go.mod h1:Xsh8gBVxGCcbV8ZeTB9wI5XPyZ5RvC6V3CTeeplHbiA= google.golang.org/genproto/googleapis/api v0.0.0-20250414145226-207652e42e2e/go.mod h1:085qFyf2+XaZlRdCgKNCIZ3afY2p4HHZdoIRpId8F4A= google.golang.org/genproto/googleapis/api v0.0.0-20250425173222-7b384671a197/go.mod h1:Cd8IzgPo5Akum2c9R6FsXNaZbH3Jpa2gpHlW89FqlyQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:pKLAc5OolXC3ViWGI62vvC0n10CpwAtRcTNCFwTKBEw= google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:oDOGiMSXHL4sDTJvFvIB9nRQCGdLP1o/iVaqQK8zB+M= @@ -980,10 +950,8 @@ google.golang.org/genproto/googleapis/bytestream v0.0.0-20250603155806-513f23925 google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250212204824-5a70512c5d8b/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= google.golang.org/genproto/googleapis/rpc v0.0.0-20250227231956-55c901821b1e/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/genproto/googleapis/rpc v0.0.0-20250414145226-207652e42e2e/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= @@ -992,7 +960,6 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= -google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= diff --git a/server/go.mod b/server/go.mod index dcf7de38d3e8..94319fdbb44b 100644 --- a/server/go.mod +++ b/server/go.mod @@ -15,7 +15,7 @@ require ( github.com/google/btree v1.1.3 github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 - github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 + github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.23.2 diff --git a/server/go.sum b/server/go.sum index 6ad0a1515af3..e3404c90c0b8 100644 --- a/server/go.sum +++ b/server/go.sum @@ -40,8 +40,8 @@ github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWm github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= diff --git a/tests/go.mod b/tests/go.mod index 2420942ce7ca..3fb5268dc0ac 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -76,7 +76,7 @@ require ( github.com/google/btree v1.1.3 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect + github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect diff --git a/tests/go.sum b/tests/go.sum index df63be541358..4cb5a8531b41 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -80,8 +80,8 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaW github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= From 39f688702dc3b8a101bb62c029ec02e494adced4 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 19 Nov 2025 14:58:13 -0800 Subject: [PATCH 0661/1068] build(deps): bump golang.org/x/crypto from 0.44.0 to 0.45.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.44.0 to 0.45.0. - [Commits](golang/crypto@v0.44.0...v0.45.0) Signed-off-by: Ivan Valdes --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.45.0 dependency-type: direct:production ... Addresses CVE-2025-58181 and CVE-2025-47914. Reference: https://github.com/etcd-io/etcd/pull/20956. Signed-off-by: Ivan Valdes --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- go.work.sum | 1 + server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 11 files changed, 16 insertions(+), 15 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 2e73b5d26850..4a556b337686 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -80,7 +80,7 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.44.0 // indirect + golang.org/x/crypto v0.45.0 // indirect golang.org/x/net v0.47.0 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/text v0.31.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 1f20cb604d97..3a4ab34ad3e9 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -150,8 +150,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= -golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= +golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= +golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= diff --git a/go.mod b/go.mod index 4349ad226a68..b6dba178e5e0 100644 --- a/go.mod +++ b/go.mod @@ -96,7 +96,7 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.44.0 // indirect + golang.org/x/crypto v0.45.0 // indirect golang.org/x/net v0.47.0 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/text v0.31.0 // indirect diff --git a/go.sum b/go.sum index e4052a7bfc6b..d78c5efde585 100644 --- a/go.sum +++ b/go.sum @@ -192,8 +192,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= -golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= +golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= +golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= diff --git a/go.work.sum b/go.work.sum index be3648479eea..7dff881d6cad 100644 --- a/go.work.sum +++ b/go.work.sum @@ -871,6 +871,7 @@ golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbV golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c h1:jTMrjjZRcSH/BDxWhXCP6OWsfVgmnwI7J+F4/nyVXaU= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= diff --git a/server/go.mod b/server/go.mod index 94319fdbb44b..60a02931591f 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,7 +37,7 @@ require ( go.opentelemetry.io/otel/sdk v1.38.0 go.opentelemetry.io/otel/trace v1.38.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.44.0 + golang.org/x/crypto v0.45.0 golang.org/x/net v0.47.0 golang.org/x/time v0.14.0 google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 diff --git a/server/go.sum b/server/go.sum index e3404c90c0b8..212f9b84ce61 100644 --- a/server/go.sum +++ b/server/go.sum @@ -130,8 +130,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= -golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= +golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= +golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= diff --git a/tests/go.mod b/tests/go.mod index 3fb5268dc0ac..ef7bc664472d 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -47,7 +47,7 @@ require ( go.opentelemetry.io/otel/sdk v1.38.0 go.opentelemetry.io/proto/otlp v1.9.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.44.0 + golang.org/x/crypto v0.45.0 golang.org/x/sync v0.18.0 golang.org/x/time v0.14.0 google.golang.org/grpc v1.76.0 diff --git a/tests/go.sum b/tests/go.sum index 4cb5a8531b41..4181820d837b 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -198,8 +198,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= -golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= +golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= +golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index b56b55ee48a7..3b6ed518a969 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -234,7 +234,7 @@ require ( go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.44.0 // indirect + golang.org/x/crypto v0.45.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546 // indirect golang.org/x/mod v0.29.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 23e530f37a1b..0fd60c8dfc14 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -572,8 +572,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= -golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= +golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= +golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= From b19541765cc9eda66f7914faf860cc6189dcb20d Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 19 Nov 2025 14:14:50 -0800 Subject: [PATCH 0662/1068] Migrate grpcproxy tests to use Go workspace Switch the grpcproxy integration and e2e tests to use the new run_go_tests function. Signed-off-by: Ivan Valdes --- scripts/test.sh | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index c93360545c55..5dfd59d6b258 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -215,13 +215,21 @@ function grpcproxy_pass { } function grpcproxy_integration_pass { - # shellcheck disable=SC2068 - run_for_module "tests" go_test "./integration/..." "fail_fast" : -timeout=30m -tags cluster_proxy ${COMMON_TEST_FLAGS[@]:-} "$@" + run_go_tests_expanding_packages ./tests/integration/... \ + -tags=cluster_proxy \ + -timeout="${TIMEOUT:-30m}" \ + "${COMMON_TEST_FLAGS[@]}" \ + "${RUN_ARG[@]}" \ + "$@" } function grpcproxy_e2e_pass { - # shellcheck disable=SC2068 - run_for_module "tests" go_test "./e2e" "fail_fast" : -timeout=30m -tags cluster_proxy ${COMMON_TEST_FLAGS[@]:-} "$@" + run_go_tests_expanding_packages ./tests/e2e/... \ + -tags=cluster_proxy \ + -timeout="${TIMEOUT:-30m}" \ + "${COMMON_TEST_FLAGS[@]}" \ + "${RUN_ARG[@]}" \ + "$@" } ################# COVERAGE ##################################################### From 8207a80da6536e5d5b83774098c491fdd9205799 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 20 Nov 2025 15:01:49 -0800 Subject: [PATCH 0663/1068] Migrate robustness tests to use Go workspace Switch the robustness tests to use the new run_go_tests function. Signed-off-by: Ivan Valdes --- scripts/test.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index 5dfd59d6b258..a6e0b0992a5c 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -183,8 +183,11 @@ function e2e_pass { function robustness_pass { # e2e tests are running pre-build binary. Settings like --race,-cover,-cpu does not have any impact. - # shellcheck disable=SC2068 - run_for_module "tests" go_test "./robustness" "keep_going" : -timeout="${TIMEOUT:-30m}" ${RUN_ARG[@]:-} "$@" + KEEP_GOING_TESTS=true \ + run_go_tests_expanding_packages ./tests/robustness/... \ + -timeout="${TIMEOUT:-30m}" \ + "${RUN_ARG[@]}" \ + "$@" } function integration_e2e_pass { From 6efbeeffabecd41fc389b06f17aba191467e2ced Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 19 Nov 2025 20:35:18 +0530 Subject: [PATCH 0664/1068] dependency: bump golang.org/x/net from 0.46.0 to 0.47.0 This PR will bump golang.org/x/net from 0.46.0 to 0.47.0 Additioanlly also updates the following dependent modules: - golang.org/x/sys v0.38.0 - golang.org/x/text v0.31.0 - golang.org/x/crypto v0.44.0 - golang.org/x/sync v0.18.0 Signed-off-by: ArkaSaha30 --- api/go.mod | 6 +++--- api/go.sum | 12 ++++++------ cache/go.mod | 6 +++--- cache/go.sum | 12 ++++++------ client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 6 +++--- client/v3/go.sum | 12 ++++++------ etcdctl/go.mod | 6 +++--- etcdctl/go.sum | 12 ++++++------ etcdutl/go.mod | 8 ++++---- etcdutl/go.sum | 20 ++++++++++---------- go.mod | 8 ++++---- go.sum | 20 ++++++++++---------- go.work.sum | 5 +++-- pkg/go.mod | 6 +++--- pkg/go.sum | 12 ++++++------ server/go.mod | 8 ++++---- server/go.sum | 20 ++++++++++---------- tests/go.mod | 10 +++++----- tests/go.sum | 20 ++++++++++---------- tools/mod/go.mod | 12 ++++++------ tools/mod/go.sum | 24 ++++++++++++------------ tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 6 +++--- tools/testgrid-analysis/go.sum | 12 ++++++------ 27 files changed, 138 insertions(+), 137 deletions(-) diff --git a/api/go.mod b/api/go.mod index 29d245a57f74..b042684b743d 100644 --- a/api/go.mod +++ b/api/go.mod @@ -20,9 +20,9 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index d4d434751550..5affa9e808a1 100644 --- a/api/go.sum +++ b/api/go.sum @@ -52,20 +52,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/cache/go.mod b/cache/go.mod index f06e6df61c94..af243c78d20e 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -23,9 +23,9 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/grpc v1.76.0 // indirect diff --git a/cache/go.sum b/cache/go.sum index 3c85d9ac8c83..a9e131f8650e 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -81,20 +81,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 1e2767821c83..fbc14b70bcce 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.6.0 github.com/stretchr/testify v1.11.1 go.uber.org/zap v1.27.0 - golang.org/x/sys v0.37.0 + golang.org/x/sys v0.38.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index 5184537b72d9..52aa02e2addf 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -24,8 +24,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index e105139134cc..886c01b2bef6 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -33,9 +33,9 @@ require ( github.com/prometheus/procfs v0.16.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/protobuf v1.36.10 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index f73f104aaa58..19b02cfff288 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -87,20 +87,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index a4836fcc3ca3..68550489efe4 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -39,9 +39,9 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/protobuf v1.36.10 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 8d2cbeb08ff4..b1117648fe01 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -113,8 +113,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -122,12 +122,12 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 99ea5d0c45d3..fa87d5d326a3 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -77,10 +77,10 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.43.0 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/crypto v0.44.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 2e85f142b669..cb9ddab2e167 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -145,8 +145,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -154,24 +154,24 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index 105bf97cc0ee..6d2fac8de01a 100644 --- a/go.mod +++ b/go.mod @@ -93,10 +93,10 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.43.0 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/crypto v0.44.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index f7c230f9ccf5..488fe6be4d9c 100644 --- a/go.sum +++ b/go.sum @@ -187,8 +187,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -204,16 +204,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -221,12 +221,12 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.work.sum b/go.work.sum index f2e797ebbaed..df7823b39a33 100644 --- a/go.work.sum +++ b/go.work.sum @@ -898,7 +898,6 @@ golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhp golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= @@ -910,7 +909,7 @@ golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/net v0.45.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= @@ -921,6 +920,7 @@ golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -930,6 +930,7 @@ golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= diff --git a/pkg/go.mod b/pkg/go.mod index 17dde3256a3e..a82c019cf328 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.38.0 go.uber.org/zap v1.27.0 - golang.org/x/sys v0.37.0 + golang.org/x/sys v0.38.0 google.golang.org/grpc v1.76.0 ) @@ -24,8 +24,8 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.opentelemetry.io/otel v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 4e676b596589..3cb48597a394 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -53,12 +53,12 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= diff --git a/server/go.mod b/server/go.mod index f894bd2e7a67..dcf7de38d3e8 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,8 +37,8 @@ require ( go.opentelemetry.io/otel/sdk v1.38.0 go.opentelemetry.io/otel/trace v1.38.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.43.0 - golang.org/x/net v0.46.0 + golang.org/x/crypto v0.44.0 + golang.org/x/net v0.47.0 golang.org/x/time v0.14.0 google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 google.golang.org/grpc v1.76.0 @@ -70,8 +70,8 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index 10e7484b85b4..6ad0a1515af3 100644 --- a/server/go.sum +++ b/server/go.sum @@ -130,8 +130,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -139,23 +139,23 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index 3c8d323bb903..55759f2687c1 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -47,8 +47,8 @@ require ( go.opentelemetry.io/otel/sdk v1.38.0 go.opentelemetry.io/proto/otlp v1.9.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.43.0 - golang.org/x/sync v0.17.0 + golang.org/x/crypto v0.44.0 + golang.org/x/sync v0.18.0 golang.org/x/time v0.14.0 google.golang.org/grpc v1.76.0 google.golang.org/protobuf v1.36.10 @@ -97,9 +97,9 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index 6f5110d3a065..98bafbf4adfe 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -193,8 +193,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -210,16 +210,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -227,12 +227,12 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 3e1a0039965d..8c1223ed421a 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -233,16 +233,16 @@ require ( go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.43.0 // indirect + golang.org/x/crypto v0.44.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20251002181428-27f1f14c8bb9 // indirect golang.org/x/mod v0.29.0 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/grpc v1.76.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index f364553f0f40..19413ccdaa29 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -571,8 +571,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -610,8 +610,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -622,8 +622,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -652,8 +652,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 h1:LvzTn0GQhWuvKH/kVRS3R3bVAsdQWI7hvfLHGgh9+lU= golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8/go.mod h1:Pi4ztBfryZoJEkyFTI5/Ocsu2jXyDr6iSdgJiYE/uwE= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -668,8 +668,8 @@ golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -683,8 +683,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index ce6ac8bb25b5..17096b172085 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -22,6 +22,6 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/image v0.25.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/text v0.31.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 13a93cad8687..e5a8d723131b 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -54,8 +54,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index a1afcbacd5e2..f8e7e6e52143 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -15,9 +15,9 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.10 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/grpc v1.76.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index bfa68b1437a7..431be51bb6ce 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1337,8 +1337,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1485,8 +1485,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1517,8 +1517,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From c30f96da6a4cc7906e543a7da19129026174485e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Nov 2025 17:51:41 +0000 Subject: [PATCH 0665/1068] build(deps): bump actions/checkout from 5.0.1 to 6.0.0 Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.1 to 6.0.0. - [Release notes](https://github.com/actions/checkout/releases) - [Commits](https://github.com/actions/checkout/compare/v5.0.1...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 2 +- .github/workflows/antithesis-verify.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/measure-testgrid-flakiness.yaml | 2 +- .github/workflows/scorecards.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 17bda2aba3bd..e8401e6a0599 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -42,7 +42,7 @@ jobs: environment: Antithesis steps: - name: Checkout the code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - name: Login to Antithesis Docker Registry uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 diff --git a/.github/workflows/antithesis-verify.yml b/.github/workflows/antithesis-verify.yml index db875fa91bfe..bd0b450a030a 100644 --- a/.github/workflows/antithesis-verify.yml +++ b/.github/workflows/antithesis-verify.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v5.0.1 + uses: actions/checkout@v6.0.0 - name: Build etcd-server and etcd-client images run: | diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 998956b617b3..3f2cde35e01f 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -37,7 +37,7 @@ jobs: language: ['go'] steps: - name: Checkout repository - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@014f16e7ab1402f30e7c3329d33797e7948572db # v4.31.3 diff --git a/.github/workflows/measure-testgrid-flakiness.yaml b/.github/workflows/measure-testgrid-flakiness.yaml index 4cb2894284cf..80c81e8952bc 100644 --- a/.github/workflows/measure-testgrid-flakiness.yaml +++ b/.github/workflows/measure-testgrid-flakiness.yaml @@ -12,7 +12,7 @@ jobs: name: Measure TestGrid Flakiness runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - id: goversion run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index fcbc1dc373de..67e9d2d35e90 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -23,7 +23,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false From d73e15a826c45d48f42858dd23e0e14c9abb2ee9 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 19 Nov 2025 21:27:47 +0530 Subject: [PATCH 0666/1068] dependency: bump github.com/golangci/golangci-lint/v2 from 2.6.0 to 2.6.1 This commit will bump github.com/golangci/golangci-lint/v2 from 2.6.0 to 2.6.1 Signed-off-by: ArkaSaha30 --- go.work.sum | 4 ++-- tools/mod/go.mod | 10 +++++----- tools/mod/go.sum | 20 ++++++++++---------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/go.work.sum b/go.work.sum index df7823b39a33..7ace7ebba035 100644 --- a/go.work.sum +++ b/go.work.sum @@ -788,8 +788,8 @@ github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY= github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= -github.com/shirou/gopsutil/v4 v4.25.9 h1:JImNpf6gCVhKgZhtaAHJ0serfFGtlfIlSC08eaKdTrU= -github.com/shirou/gopsutil/v4 v4.25.9/go.mod h1:gxIxoC+7nQRwUl/xNhutXlD8lq+jxTgpIkEf3rADHL8= +github.com/shirou/gopsutil/v4 v4.25.10 h1:at8lk/5T1OgtuCp+AwrDofFRjnvosn0nkN2OLQ6g8tA= +github.com/shirou/gopsutil/v4 v4.25.10/go.mod h1:+kSwyC8DRUD9XXEHCAFjK+0nuArFJM0lva+StQAcskM= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 8c1223ed421a..9b6673590ff0 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -9,7 +9,7 @@ require ( github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint/v2 v2.6.0 + github.com/golangci/golangci-lint/v2 v2.6.1 github.com/google/yamlfmt v0.20.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/ryancurrah/gomodguard v1.4.1 @@ -86,7 +86,7 @@ require ( github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect github.com/ghostiam/protogetter v0.3.17 // indirect - github.com/go-critic/go-critic v0.14.0 // indirect + github.com/go-critic/go-critic v0.14.2 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-sql-driver/mysql v1.8.1 // indirect github.com/go-toolsmith/astcast v1.1.0 // indirect @@ -131,7 +131,7 @@ require ( github.com/jmhodges/clock v1.2.0 // indirect github.com/jmoiron/sqlx v1.4.0 // indirect github.com/julz/importas v0.2.0 // indirect - github.com/karamaru-alpha/copyloopvar v1.2.1 // indirect + github.com/karamaru-alpha/copyloopvar v1.2.2 // indirect github.com/kisielk/errcheck v1.9.0 // indirect github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 // indirect github.com/kkHAIKE/contextcheck v1.1.6 // indirect @@ -175,7 +175,7 @@ require ( github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.2 // indirect github.com/prometheus/procfs v0.16.1 // indirect - github.com/quasilyte/go-ruleguard v0.4.4 // indirect + github.com/quasilyte/go-ruleguard v0.4.5 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.23 // indirect github.com/quasilyte/gogrep v0.5.0 // indirect github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect @@ -235,7 +235,7 @@ require ( go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.44.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/exp/typeparams v0.0.0-20251002181428-27f1f14c8bb9 // indirect + golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546 // indirect golang.org/x/mod v0.29.0 // indirect golang.org/x/net v0.47.0 // indirect golang.org/x/sync v0.18.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 19413ccdaa29..48761d7e44c2 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -147,8 +147,8 @@ github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= github.com/ghostiam/protogetter v0.3.17 h1:sjGPErP9o7i2Ym+z3LsQzBdLCNaqbYy2iJQPxGXg04Q= github.com/ghostiam/protogetter v0.3.17/go.mod h1:AivIX1eKA/TcUmzZdzbl+Tb8tjIe8FcyG6JFyemQAH4= -github.com/go-critic/go-critic v0.14.0 h1:fzA7pGprRPwgA2LwoiaHuWzZzmUEM7dZjihfFpiZQpQ= -github.com/go-critic/go-critic v0.14.0/go.mod h1:/2QgW4QJIJ9aYCYTQ9RWKc+1KnMFouAJ/FmPylhzOoU= +github.com/go-critic/go-critic v0.14.2 h1:PMvP5f+LdR8p6B29npvChUXbD1vrNlKDf60NJtgMBOo= +github.com/go-critic/go-critic v0.14.2/go.mod h1:xwntfW6SYAd7h1OqDzmN6hBX/JxsEKl5up/Y2bsxgVQ= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= @@ -201,8 +201,8 @@ github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarog github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint/v2 v2.6.0 h1:hgjuaMTwbWrBf1kvMrmWmyCRKq9wU7Cvi84O0METZHc= -github.com/golangci/golangci-lint/v2 v2.6.0/go.mod h1:qKA7VpZt6X2uo+ylnFYaNpdmJnm4tBSzdZiD0xDOIJE= +github.com/golangci/golangci-lint/v2 v2.6.1 h1:yTYVG6BJ4eG9QE815BAQDrC2xBbTB8lW11jg+YQ0b1c= +github.com/golangci/golangci-lint/v2 v2.6.1/go.mod h1:zlg/a5aw46LvRBHZ3OOwwsCtkjWTrn3wm5qowoteCRg= github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 h1:AkK+w9FZBXlU/xUmBtSJN1+tAI4FIvy5WtnUnY8e4p8= github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95/go.mod h1:k9mmcyWKSTMcPPvQUCfRWWQ9VHJ1U9Dc0R7kaXAgtnQ= github.com/golangci/misspell v0.7.0 h1:4GOHr/T1lTW0hhR4tgaaV1WS/lJ+ncvYCoFKmqJsj0c= @@ -273,8 +273,8 @@ github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY= github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ= github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY= -github.com/karamaru-alpha/copyloopvar v1.2.1 h1:wmZaZYIjnJ0b5UoKDjUHrikcV0zuPyyxI4SVplLd2CI= -github.com/karamaru-alpha/copyloopvar v1.2.1/go.mod h1:nFmMlFNlClC2BPvNaHMdkirmTJxVCY0lhxBtlfOypMM= +github.com/karamaru-alpha/copyloopvar v1.2.2 h1:yfNQvP9YaGQR7VaWLYcfZUlRP2eo2vhExWKxD/fP6q0= +github.com/karamaru-alpha/copyloopvar v1.2.2/go.mod h1:oY4rGZqZ879JkJMtX3RRkcXRkmUvH0x35ykgaKgsgJY= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/errcheck v1.9.0 h1:9xt1zI9EBfcYBvdU1nVrzMzzUPUtPKs9bVSIM3TAb3M= github.com/kisielk/errcheck v1.9.0/go.mod h1:kQxWMMVZgIkDq7U8xtG/n2juOjbLgZtedi0D+/VL/i8= @@ -391,8 +391,8 @@ github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyA github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= -github.com/quasilyte/go-ruleguard v0.4.4 h1:53DncefIeLX3qEpjzlS1lyUmQoUEeOWPFWqaTJq9eAQ= -github.com/quasilyte/go-ruleguard v0.4.4/go.mod h1:Vl05zJ538vcEEwu16V/Hdu7IYZWyKSwIy4c88Ro1kRE= +github.com/quasilyte/go-ruleguard v0.4.5 h1:AGY0tiOT5hJX9BTdx/xBdoCubQUAE2grkqY2lSwvZcA= +github.com/quasilyte/go-ruleguard v0.4.5/go.mod h1:Vl05zJ538vcEEwu16V/Hdu7IYZWyKSwIy4c88Ro1kRE= github.com/quasilyte/go-ruleguard/dsl v0.3.23 h1:lxjt5B6ZCiBeeNO8/oQsegE6fLeCzuMRoVWSkXC4uvY= github.com/quasilyte/go-ruleguard/dsl v0.3.23/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= @@ -577,8 +577,8 @@ golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0 golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20251002181428-27f1f14c8bb9 h1:EvjuVHWMoRaAxH402KMgrQpGUjoBy/OWvZjLOqQnwNk= -golang.org/x/exp/typeparams v0.0.0-20251002181428-27f1f14c8bb9/go.mod h1:4Mzdyp/6jzw9auFDJ3OMF5qksa7UvPnzKqTVGcb04ms= +golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546 h1:HDjDiATsGqvuqvkDvgJjD1IgPrVekcSXVVE21JwvzGE= +golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546/go.mod h1:4Mzdyp/6jzw9auFDJ3OMF5qksa7UvPnzKqTVGcb04ms= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= From 5edf2917e16caf77e3d2ac11073fb50c5f4cbbfb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Nov 2025 10:00:02 +0000 Subject: [PATCH 0667/1068] build(deps): bump actions/setup-go from 6.0.0 to 6.1.0 Bumps [actions/setup-go](https://github.com/actions/setup-go) from 6.0.0 to 6.1.0. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/44694675825211faa026b3c33043df3e48a5fa00...4dc6199c7b1a012772edbd06daecab0f50c9053c) --- updated-dependencies: - dependency-name: actions/setup-go dependency-version: 6.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/measure-testgrid-flakiness.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/measure-testgrid-flakiness.yaml b/.github/workflows/measure-testgrid-flakiness.yaml index 80c81e8952bc..5f31f8742fd3 100644 --- a/.github/workflows/measure-testgrid-flakiness.yaml +++ b/.github/workflows/measure-testgrid-flakiness.yaml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - id: goversion run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - - uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 + - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 with: go-version: ${{ steps.goversion.outputs.goversion }} - env: From ba20e19251e1f5f067fd44654bdeb92d277d9c52 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 19 Nov 2025 22:36:29 +0530 Subject: [PATCH 0668/1068] dependency: bump github.com/olekukonko/tablewriter from 1.1.0 to 1.1.1 This commit will bump github.com/olekukonko/tablewriter from 1.1.0 to 1.1.1wq Signed-off-by: ArkaSaha30 --- bill-of-materials.json | 45 +++++++++++++++++++++++++++++++++--------- etcdctl/go.mod | 11 +++++++---- etcdctl/go.sum | 23 ++++++++++++--------- etcdutl/go.mod | 11 +++++++---- etcdutl/go.sum | 23 ++++++++++++--------- go.mod | 11 +++++++---- go.sum | 23 ++++++++++++--------- tests/go.mod | 11 +++++++---- tests/go.sum | 23 ++++++++++++--------- tools/mod/go.mod | 3 ++- tools/mod/go.sum | 7 ++++--- 11 files changed, 126 insertions(+), 65 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index cd2dfc3c1672..5ee8a1bc3f0f 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -71,6 +71,33 @@ } ] }, + { + "project": "github.com/clipperhouse/displaywidth", + "licenses": [ + { + "type": "MIT License", + "confidence": 1 + } + ] + }, + { + "project": "github.com/clipperhouse/stringish", + "licenses": [ + { + "type": "MIT License", + "confidence": 1 + } + ] + }, + { + "project": "github.com/clipperhouse/uax29/v2", + "licenses": [ + { + "type": "MIT License", + "confidence": 1 + } + ] + }, { "project": "github.com/coreos/go-semver/semver", "licenses": [ @@ -305,6 +332,15 @@ } ] }, + { + "project": "github.com/olekukonko/cat", + "licenses": [ + { + "type": "MIT License", + "confidence": 1 + } + ] + }, { "project": "github.com/olekukonko/errors", "licenses": [ @@ -386,15 +422,6 @@ } ] }, - { - "project": "github.com/rivo/uniseg", - "licenses": [ - { - "type": "MIT License", - "confidence": 1 - } - ] - }, { "project": "github.com/sirupsen/logrus", "licenses": [ diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 68550489efe4..ae17f649ddfa 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -8,7 +8,7 @@ require ( github.com/bgentry/speakeasy v0.2.0 github.com/cheggaaa/pb/v3 v3.1.7 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.1.0 + github.com/olekukonko/tablewriter v1.1.1 github.com/spf13/cobra v1.10.1 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 @@ -23,6 +23,9 @@ require ( require ( github.com/VividCortex/ewma v1.2.0 // indirect + github.com/clipperhouse/displaywidth v0.3.1 // indirect + github.com/clipperhouse/stringish v0.1.1 // indirect + github.com/clipperhouse/uax29/v2 v2.2.0 // indirect github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -33,11 +36,11 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/mattn/go-runewidth v0.0.19 // indirect + github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.0.9 // indirect + github.com/olekukonko/ll v0.1.2 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/rivo/uniseg v0.4.7 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.47.0 // indirect golang.org/x/sys v0.38.0 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index b1117648fe01..0c7764807082 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -8,6 +8,12 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= +github.com/clipperhouse/displaywidth v0.3.1 h1:k07iN9gD32177o1y4O1jQMzbLdCrsGJh+blirVYybsk= +github.com/clipperhouse/displaywidth v0.3.1/go.mod h1:tgLJKKyaDOCadywag3agw4snxS5kYEuYR6Y9+qWDDYM= +github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= +github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= +github.com/clipperhouse/uax29/v2 v2.2.0 h1:ChwIKnQN3kcZteTXMgb1wztSgaU+ZemkgWdohwgs8tY= +github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= @@ -49,16 +55,18 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= -github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw= +github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc= +github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= -github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.1.0 h1:N0LHrshF4T39KvI96fn6GT8HEjXRXYNDrDjKFDB7RIY= -github.com/olekukonko/tablewriter v1.1.0/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= +github.com/olekukonko/ll v0.1.2 h1:lkg/k/9mlsy0SxO5aC+WEpbdT5K83ddnNhAepz7TQc0= +github.com/olekukonko/ll v0.1.2/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= +github.com/olekukonko/tablewriter v1.1.1 h1:b3reP6GCfrHwmKkYwNRFh2rxidGHcT6cgxj/sHiDDx0= +github.com/olekukonko/tablewriter v1.1.1/go.mod h1:De/bIcTF+gpBDB3Alv3fEsZA+9unTsSzAg/ZGADCtn4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= @@ -69,9 +77,6 @@ github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyA github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= -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= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index fa87d5d326a3..0e354cab383d 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -15,7 +15,7 @@ replace ( require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.1.0 + github.com/olekukonko/tablewriter v1.1.1 github.com/spf13/cobra v1.10.1 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 @@ -32,6 +32,9 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/clipperhouse/displaywidth v0.3.1 // indirect + github.com/clipperhouse/stringish v0.1.1 // indirect + github.com/clipperhouse/uax29/v2 v2.2.0 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect @@ -51,16 +54,16 @@ require ( github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/mattn/go-runewidth v0.0.19 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.0.9 // indirect + github.com/olekukonko/ll v0.1.2 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.2 // indirect github.com/prometheus/procfs v0.16.1 // indirect - github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/spf13/pflag v1.0.10 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index cb9ddab2e167..931f74029963 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -4,6 +4,12 @@ github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1x github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/clipperhouse/displaywidth v0.3.1 h1:k07iN9gD32177o1y4O1jQMzbLdCrsGJh+blirVYybsk= +github.com/clipperhouse/displaywidth v0.3.1/go.mod h1:tgLJKKyaDOCadywag3agw4snxS5kYEuYR6Y9+qWDDYM= +github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= +github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= +github.com/clipperhouse/uax29/v2 v2.2.0 h1:ChwIKnQN3kcZteTXMgb1wztSgaU+ZemkgWdohwgs8tY= +github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -62,16 +68,18 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= -github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw= +github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc= +github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= -github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.1.0 h1:N0LHrshF4T39KvI96fn6GT8HEjXRXYNDrDjKFDB7RIY= -github.com/olekukonko/tablewriter v1.1.0/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= +github.com/olekukonko/ll v0.1.2 h1:lkg/k/9mlsy0SxO5aC+WEpbdT5K83ddnNhAepz7TQc0= +github.com/olekukonko/ll v0.1.2/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= +github.com/olekukonko/tablewriter v1.1.1 h1:b3reP6GCfrHwmKkYwNRFh2rxidGHcT6cgxj/sHiDDx0= +github.com/olekukonko/tablewriter v1.1.1/go.mod h1:De/bIcTF+gpBDB3Alv3fEsZA+9unTsSzAg/ZGADCtn4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -83,9 +91,6 @@ github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyA github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= -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= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= diff --git a/go.mod b/go.mod index 6d2fac8de01a..52373eb18b15 100644 --- a/go.mod +++ b/go.mod @@ -44,6 +44,9 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/clipperhouse/displaywidth v0.3.1 // indirect + github.com/clipperhouse/stringish v0.1.1 // indirect + github.com/clipperhouse/uax29/v2 v2.2.0 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect @@ -65,17 +68,17 @@ require ( github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/mattn/go-runewidth v0.0.19 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.0.9 // indirect - github.com/olekukonko/tablewriter v1.1.0 // indirect + github.com/olekukonko/ll v0.1.2 // indirect + github.com/olekukonko/tablewriter v1.1.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.2 // indirect github.com/prometheus/procfs v0.16.1 // indirect - github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/spf13/pflag v1.0.10 // indirect diff --git a/go.sum b/go.sum index 488fe6be4d9c..5f87a108edc6 100644 --- a/go.sum +++ b/go.sum @@ -14,6 +14,12 @@ github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/clipperhouse/displaywidth v0.3.1 h1:k07iN9gD32177o1y4O1jQMzbLdCrsGJh+blirVYybsk= +github.com/clipperhouse/displaywidth v0.3.1/go.mod h1:tgLJKKyaDOCadywag3agw4snxS5kYEuYR6Y9+qWDDYM= +github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= +github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= +github.com/clipperhouse/uax29/v2 v2.2.0 h1:ChwIKnQN3kcZteTXMgb1wztSgaU+ZemkgWdohwgs8tY= +github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= @@ -92,16 +98,18 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= -github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw= +github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc= +github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= -github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.1.0 h1:N0LHrshF4T39KvI96fn6GT8HEjXRXYNDrDjKFDB7RIY= -github.com/olekukonko/tablewriter v1.1.0/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= +github.com/olekukonko/ll v0.1.2 h1:lkg/k/9mlsy0SxO5aC+WEpbdT5K83ddnNhAepz7TQc0= +github.com/olekukonko/ll v0.1.2/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= +github.com/olekukonko/tablewriter v1.1.1 h1:b3reP6GCfrHwmKkYwNRFh2rxidGHcT6cgxj/sHiDDx0= +github.com/olekukonko/tablewriter v1.1.1/go.mod h1:De/bIcTF+gpBDB3Alv3fEsZA+9unTsSzAg/ZGADCtn4= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -116,9 +124,6 @@ github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyA github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= -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= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= diff --git a/tests/go.mod b/tests/go.mod index 55759f2687c1..2420942ce7ca 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -25,7 +25,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 - github.com/olekukonko/tablewriter v1.1.0 + github.com/olekukonko/tablewriter v1.1.1 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.67.2 @@ -61,6 +61,9 @@ require ( github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cheggaaa/pb/v3 v3.1.7 // indirect + github.com/clipperhouse/displaywidth v0.3.1 // indirect + github.com/clipperhouse/stringish v0.1.1 // indirect + github.com/clipperhouse/uax29/v2 v2.2.0 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/creack/pty v1.1.18 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -78,13 +81,13 @@ require ( github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/mattn/go-runewidth v0.0.19 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.0.9 // indirect + github.com/olekukonko/ll v0.1.2 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/procfs v0.16.1 // indirect - github.com/rivo/uniseg v0.4.7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/cobra v1.10.1 // indirect github.com/spf13/pflag v1.0.10 // indirect diff --git a/tests/go.sum b/tests/go.sum index 98bafbf4adfe..df63be541358 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -18,6 +18,12 @@ github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/clipperhouse/displaywidth v0.3.1 h1:k07iN9gD32177o1y4O1jQMzbLdCrsGJh+blirVYybsk= +github.com/clipperhouse/displaywidth v0.3.1/go.mod h1:tgLJKKyaDOCadywag3agw4snxS5kYEuYR6Y9+qWDDYM= +github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= +github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= +github.com/clipperhouse/uax29/v2 v2.2.0 h1:ChwIKnQN3kcZteTXMgb1wztSgaU+ZemkgWdohwgs8tY= +github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= @@ -98,16 +104,18 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= -github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw= +github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc= +github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= -github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.1.0 h1:N0LHrshF4T39KvI96fn6GT8HEjXRXYNDrDjKFDB7RIY= -github.com/olekukonko/tablewriter v1.1.0/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= +github.com/olekukonko/ll v0.1.2 h1:lkg/k/9mlsy0SxO5aC+WEpbdT5K83ddnNhAepz7TQc0= +github.com/olekukonko/ll v0.1.2/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= +github.com/olekukonko/tablewriter v1.1.1 h1:b3reP6GCfrHwmKkYwNRFh2rxidGHcT6cgxj/sHiDDx0= +github.com/olekukonko/tablewriter v1.1.1/go.mod h1:De/bIcTF+gpBDB3Alv3fEsZA+9unTsSzAg/ZGADCtn4= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -122,9 +130,6 @@ github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyA github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= -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= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 9b6673590ff0..b56b55ee48a7 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -72,6 +72,7 @@ require ( github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect github.com/charmbracelet/x/term v0.2.1 // indirect github.com/ckaznocha/intrange v0.3.1 // indirect + github.com/clipperhouse/uax29/v2 v2.2.0 // indirect github.com/curioswitch/go-reassign v0.3.0 // indirect github.com/daixiang0/gci v0.13.7 // indirect github.com/dave/dst v0.27.3 // indirect @@ -154,7 +155,7 @@ require ( github.com/matoous/godox v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/mattn/go-runewidth v0.0.19 // indirect github.com/mattn/go-sqlite3 v1.14.24 // indirect github.com/mgechev/revive v1.12.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 48761d7e44c2..23e530f37a1b 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -107,6 +107,8 @@ github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQ github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg= github.com/ckaznocha/intrange v0.3.1 h1:j1onQyXvHUsPWujDH6WIjhyH26gkRt/txNlV7LspvJs= github.com/ckaznocha/intrange v0.3.1/go.mod h1:QVepyz1AkUoFQkpEqksSYpNpUo3c5W7nWh/s6SHIJJk= +github.com/clipperhouse/uax29/v2 v2.2.0 h1:ChwIKnQN3kcZteTXMgb1wztSgaU+ZemkgWdohwgs8tY= +github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cloudflare/cfssl v1.6.5 h1:46zpNkm6dlNkMZH/wMW22ejih6gIaJbzL2du6vD7ZeI= github.com/cloudflare/cfssl v1.6.5/go.mod h1:Bk1si7sq8h2+yVEDrFJiz3d7Aw+pfjjJSZVaD+Taky4= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= @@ -331,8 +333,8 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= -github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw= +github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= @@ -403,7 +405,6 @@ github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4l github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= github.com/raeperd/recvcheck v0.2.0 h1:GnU+NsbiCqdC2XX5+vMZzP+jAJC5fht7rcVTAhX74UI= github.com/raeperd/recvcheck v0.2.0/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU= -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= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= From 27e52a63e0a6e9ad8116af912aceb205e640db04 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Nov 2025 10:00:11 +0000 Subject: [PATCH 0669/1068] build(deps): bump github/codeql-action from 4.31.3 to 4.31.5 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.3 to 4.31.5. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/014f16e7ab1402f30e7c3329d33797e7948572db...fdbfb4d2750291e159f0156def62b853c2798ca2) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.31.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 3f2cde35e01f..a53d4668cf1e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@014f16e7ab1402f30e7c3329d33797e7948572db # v4.31.3 + uses: github/codeql-action/init@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@014f16e7ab1402f30e7c3329d33797e7948572db # v4.31.3 + uses: github/codeql-action/autobuild@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@014f16e7ab1402f30e7c3329d33797e7948572db # v4.31.3 + uses: github/codeql-action/analyze@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 67e9d2d35e90..51b0cac4c96e 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@014f16e7ab1402f30e7c3329d33797e7948572db # v4.31.3 + uses: github/codeql-action/upload-sarif@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 with: sarif_file: results.sarif From 2a3bde4a41a445c6f6830c9719d768ae7dc702a1 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Thu, 27 Nov 2025 15:38:53 +0530 Subject: [PATCH 0670/1068] dependency: bump go.uber.org/zap from 1.27.0 to 1.27.1 This commit will bump go.uber.org/zap from 1.27.0 to 1.27.1 Signed-off-by: ArkaSaha30 --- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 20 files changed, 30 insertions(+), 30 deletions(-) diff --git a/cache/go.mod b/cache/go.mod index af243c78d20e..f72ca70b63c4 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -22,7 +22,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.27.0 // indirect + go.uber.org/zap v1.27.1 // indirect golang.org/x/net v0.47.0 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/text v0.31.0 // indirect diff --git a/cache/go.sum b/cache/go.sum index 039a3f36c057..b7ae7f0b1231 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -68,8 +68,8 @@ 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= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index fbc14b70bcce..ede9d4b1f12c 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -7,7 +7,7 @@ toolchain go1.25.4 require ( github.com/coreos/go-systemd/v22 v22.6.0 github.com/stretchr/testify v1.11.1 - go.uber.org/zap v1.27.0 + go.uber.org/zap v1.27.1 golang.org/x/sys v0.38.0 ) diff --git a/client/pkg/go.sum b/client/pkg/go.sum index 52aa02e2addf..e1a6757cc391 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -22,8 +22,8 @@ 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= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index 0d69685133e7..ab30716639cb 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.uber.org/zap v1.27.0 + go.uber.org/zap v1.27.1 google.golang.org/grpc v1.76.0 sigs.k8s.io/yaml v1.6.0 ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 9b10dbedbb1c..f2d918568b39 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -72,8 +72,8 @@ 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= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index ae17f649ddfa..96a080f6906a 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -16,7 +16,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 - go.uber.org/zap v1.27.0 + go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 google.golang.org/grpc v1.76.0 ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 304bdba6a6bc..a5fb1e0cb10b 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -105,8 +105,8 @@ 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= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 4a556b337686..af0889fed9ed 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -25,7 +25,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0 - go.uber.org/zap v1.27.0 + go.uber.org/zap v1.27.1 ) require ( diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 3a4ab34ad3e9..623c94000d48 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -141,8 +141,8 @@ 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= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= diff --git a/go.mod b/go.mod index b6dba178e5e0..a22ce79f45f2 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/etcd/tests/v3 v3.0.0-00010101000000-000000000000 go.etcd.io/raft/v3 v3.6.0 - go.uber.org/zap v1.27.0 + go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 google.golang.org/grpc v1.76.0 google.golang.org/protobuf v1.36.10 diff --git a/go.sum b/go.sum index d78c5efde585..1e7d6dd4bf16 100644 --- a/go.sum +++ b/go.sum @@ -183,8 +183,8 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= diff --git a/pkg/go.mod b/pkg/go.mod index a82c019cf328..1da4c9f1af61 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.38.0 - go.uber.org/zap v1.27.0 + go.uber.org/zap v1.27.1 golang.org/x/sys v0.38.0 google.golang.org/grpc v1.76.0 ) diff --git a/pkg/go.sum b/pkg/go.sum index 3cb48597a394..ab22f38a3274 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -51,8 +51,8 @@ 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= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= diff --git a/server/go.mod b/server/go.mod index 60a02931591f..a4e87c35f4cb 100644 --- a/server/go.mod +++ b/server/go.mod @@ -36,7 +36,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 go.opentelemetry.io/otel/sdk v1.38.0 go.opentelemetry.io/otel/trace v1.38.0 - go.uber.org/zap v1.27.0 + go.uber.org/zap v1.27.1 golang.org/x/crypto v0.45.0 golang.org/x/net v0.47.0 golang.org/x/time v0.14.0 diff --git a/server/go.sum b/server/go.sum index 212f9b84ce61..d60f6915d533 100644 --- a/server/go.sum +++ b/server/go.sum @@ -121,8 +121,8 @@ 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= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= diff --git a/tests/go.mod b/tests/go.mod index ef7bc664472d..12cd6369267f 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -46,7 +46,7 @@ require ( go.opentelemetry.io/otel v1.38.0 go.opentelemetry.io/otel/sdk v1.38.0 go.opentelemetry.io/proto/otlp v1.9.0 - go.uber.org/zap v1.27.0 + go.uber.org/zap v1.27.1 golang.org/x/crypto v0.45.0 golang.org/x/sync v0.18.0 golang.org/x/time v0.14.0 diff --git a/tests/go.sum b/tests/go.sum index 4181820d837b..e7bf239de4d9 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -189,8 +189,8 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 3b6ed518a969..b764319ead3a 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -231,7 +231,7 @@ require ( go.augendre.info/fatcontext v0.9.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.27.0 // indirect + go.uber.org/zap v1.27.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.45.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 0fd60c8dfc14..5f94f02f2a47 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -552,8 +552,8 @@ 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= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= From 2982f14044084f979e465e9540767cacd4636fe7 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Fri, 28 Nov 2025 22:43:39 +0530 Subject: [PATCH 0671/1068] dependency: bump github.com/prometheus/common from 0.67.2 to 0.67.4 This commit will bump github.com/prometheus/common from 0.67.2 to 0.67.4 Signed-off-by: ArkaSaha30 --- api/go.mod | 6 +- api/go.sum | 36 +++++------ cache/go.mod | 6 +- cache/go.sum | 40 ++++++------- client/v3/go.mod | 8 +-- client/v3/go.sum | 40 ++++++------- etcdctl/go.mod | 6 +- etcdctl/go.sum | 32 +++++----- etcdutl/go.mod | 10 ++-- etcdutl/go.sum | 20 +++---- go.mod | 10 ++-- go.sum | 20 +++---- go.work.sum | 105 +++++++++++++++++++++++++-------- pkg/go.mod | 4 +- pkg/go.sum | 20 +++---- server/go.mod | 10 ++-- server/go.sum | 20 +++---- tests/go.mod | 10 ++-- tests/go.sum | 20 +++---- tools/mod/go.mod | 8 +-- tools/mod/go.sum | 16 ++--- tools/testgrid-analysis/go.mod | 4 +- tools/testgrid-analysis/go.sum | 32 +++++----- 23 files changed, 268 insertions(+), 215 deletions(-) diff --git a/api/go.mod b/api/go.mod index b042684b743d..2768f06f0f05 100644 --- a/api/go.mod +++ b/api/go.mod @@ -10,8 +10,8 @@ require ( github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/stretchr/testify v1.11.1 - google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 - google.golang.org/grpc v1.76.0 + google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 + google.golang.org/grpc v1.77.0 google.golang.org/protobuf v1.36.10 ) @@ -23,6 +23,6 @@ require ( golang.org/x/net v0.47.0 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/text v0.31.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 5affa9e808a1..b366fbb207f3 100644 --- a/api/go.sum +++ b/api/go.sum @@ -31,18 +31,18 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +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/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -76,12 +76,12 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= -google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/cache/go.mod b/cache/go.mod index f72ca70b63c4..de95fa24c44f 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -26,9 +26,9 @@ require ( golang.org/x/net v0.47.0 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/text v0.31.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect - google.golang.org/grpc v1.76.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/grpc v1.77.0 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index b7ae7f0b1231..0e1e66db69e5 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -42,8 +42,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= -github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -52,18 +52,18 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +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/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= 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= @@ -105,12 +105,12 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= -google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index ab30716639cb..b815f3cb818d 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.1 - google.golang.org/grpc v1.76.0 + google.golang.org/grpc v1.77.0 sigs.k8s.io/yaml v1.6.0 ) @@ -29,15 +29,15 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.2 // indirect + github.com/prometheus/common v0.67.4 // indirect github.com/prometheus/procfs v0.16.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.47.0 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/text v0.31.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index f2d918568b39..eaaf282daa62 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -46,8 +46,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= -github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -56,18 +56,18 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +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/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= 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= @@ -111,12 +111,12 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= -google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 96a080f6906a..d215c48c7c06 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.76.0 + google.golang.org/grpc v1.77.0 ) require ( @@ -45,8 +45,8 @@ require ( golang.org/x/net v0.47.0 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/text v0.31.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index a5fb1e0cb10b..6d416f4a922e 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -73,8 +73,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= -github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -89,16 +89,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +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/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -145,12 +145,12 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= -google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index af0889fed9ed..bf6737cae7c1 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -62,14 +62,14 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.2 // indirect + github.com/prometheus/common v0.67.4 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/spf13/pflag v1.0.10 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect @@ -85,9 +85,9 @@ require ( golang.org/x/sys v0.38.0 // indirect golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect - google.golang.org/grpc v1.76.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/grpc v1.77.0 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 623c94000d48..a2cd5e57ad7f 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -87,8 +87,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= -github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -117,8 +117,8 @@ go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +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/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= @@ -189,12 +189,12 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= -google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index a22ce79f45f2..1c6b0b03e195 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.76.0 + google.golang.org/grpc v1.77.0 google.golang.org/protobuf v1.36.10 ) @@ -77,7 +77,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.2 // indirect + github.com/prometheus/common v0.67.4 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect @@ -85,7 +85,7 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/gofail v0.2.0 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect @@ -100,8 +100,8 @@ require ( golang.org/x/net v0.47.0 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/text v0.31.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/go.sum b/go.sum index 1e7d6dd4bf16..84f272d0cdb1 100644 --- a/go.sum +++ b/go.sum @@ -120,8 +120,8 @@ github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UH github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= -github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -156,8 +156,8 @@ go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +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/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= @@ -253,17 +253,17 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= -google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.work.sum b/go.work.sum index 7dff881d6cad..8d7d0c9acfcb 100644 --- a/go.work.sum +++ b/go.work.sum @@ -7,8 +7,8 @@ buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-2025042515311 buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250425153114-8976f5be98c1.1/go.mod h1:avRlCjnFzl98VPaeCtJ24RrV/wwHFzB8sWXhj26+n/U= buf.build/go/protovalidate v0.12.0 h1:4GKJotbspQjRCcqZMGVSuC8SjwZ/FmgtSuKDpKUTZew= buf.build/go/protovalidate v0.12.0/go.mod h1:q3PFfbzI05LeqxSwq+begW2syjy2Z6hLxZSkP1OH/D0= -cel.dev/expr v0.15.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg= cel.dev/expr v0.20.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= +cel.dev/expr v0.23.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= @@ -130,8 +130,9 @@ cloud.google.com/go/compute v1.38.0/go.mod h1:oAFNIuXOmXbK/ssXm3z4nZB8ckPdjltJ7x cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= -cloud.google.com/go/compute/metadata v0.8.0 h1:HxMRIbao8w17ZX6wBnjhcDkW6lTFpgcaobyVfZWqRLA= cloud.google.com/go/compute/metadata v0.8.0/go.mod h1:sYOGTp851OV9bOFJ9CH7elVvyzopvWQFNNghtDQ/Biw= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= cloud.google.com/go/contactcenterinsights v1.12.1/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= cloud.google.com/go/contactcenterinsights v1.17.1/go.mod h1:n8OiNv7buLA2AkGVkfuvtW3HU13AdTmEwAlAu46bfxY= cloud.google.com/go/contactcenterinsights v1.17.3 h1:lenyU3uzHwKDveCwmpfNxHYvLS3uEBWdn+O7+rSxy+Q= @@ -498,8 +499,8 @@ cloud.google.com/go/workflows v1.14.2 h1:phBz5TOAES0YGogxZ6Q7ISSudaf618lRhE3euzB cloud.google.com/go/workflows v1.14.2/go.mod h1:5nqKjMD+MsJs41sJhdVrETgvD5cOK3hUcAs8ygqYvXQ= codeberg.org/go-fonts/stix v0.3.0 h1:vHI1LmLWEcAdcf+5aRMtA1eYKJJ9ZjetVstBD/dRe1Q= codeberg.org/go-fonts/stix v0.3.0/go.mod h1:1OSJSnA/PoHqbW2tjkkqTmNPp5xTtJQN2GRXJjO/+WA= -contrib.go.opencensus.io/exporter/stackdriver v0.13.14 h1:zBakwHardp9Jcb8sQHcHpXy/0+JIb1M8KjigCJzx7+4= -contrib.go.opencensus.io/exporter/stackdriver v0.13.14/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= +contrib.go.opencensus.io/exporter/stackdriver v0.13.15-0.20230702191903-2de6d2748484 h1:xRc46S76eyn4ZF3jWX8I+aUSKVLw5EQ1aDvHwfV5W1o= +contrib.go.opencensus.io/exporter/stackdriver v0.13.15-0.20230702191903-2de6d2748484/go.mod h1:uxw+4/0SiKbbVSD/F2tk5pJTdVcfIBBcsQ8gwcu4X+E= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= gioui.org v0.2.0 h1:RbzDn1h/pCVf/q44ImQSa/J3MIFpY3OWphzT/Tyei+w= gioui.org v0.2.0/go.mod h1:1H72sKEk/fNFV+l0JNeM2Dt3co3Y4uaQcD+I+/GQ0e4= @@ -513,8 +514,9 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOC github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.2 h1:DBjmt6/otSdULyJdVg2BlG0qGZO5tKL4VzOs0jpvw5Q= github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.2/go.mod h1:dppbR7CwXD4pgtV9t3wD1812RaLDcBjtblcDF5f1vI0= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 h1:fYE9p3esPxA/C0rQ0AHhP0drtPXDRhaWiwg1DPqO7IU= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0/go.mod h1:BnBReJLvVYx2CS/UHOgVz2BXKXD9wsQPxZug20nZhd0= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0 h1:OqVGm6Ei3x5+yZmSJG1Mh2NwHvpVmZ08CB5qJhT9Nuk= @@ -553,6 +555,32 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= github.com/aws/aws-sdk-go v1.46.4 h1:48tKgtm9VMPkb6y7HuYlsfhQmoIRAsTEXTsWLVlty4M= github.com/aws/aws-sdk-go v1.46.4/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go-v2 v1.36.3 h1:mJoei2CxPutQVxaATCzDUjcZEjVRdpsiiXi2o38yqWM= +github.com/aws/aws-sdk-go-v2 v1.36.3/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg= +github.com/aws/aws-sdk-go-v2/config v1.29.12 h1:Y/2a+jLPrPbHpFkpAAYkVEtJmxORlXoo5k2g1fa2sUo= +github.com/aws/aws-sdk-go-v2/config v1.29.12/go.mod h1:xse1YTjmORlb/6fhkWi8qJh3cvZi4JoVNhc+NbJt4kI= +github.com/aws/aws-sdk-go-v2/credentials v1.17.65 h1:q+nV2yYegofO/SUXruT+pn4KxkxmaQ++1B/QedcKBFM= +github.com/aws/aws-sdk-go-v2/credentials v1.17.65/go.mod h1:4zyjAuGOdikpNYiSGpsGz8hLGmUzlY8pc8r9QQ/RXYQ= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 h1:ZK5jHhnrioRkUNOc+hOgQKlUL5JeC3S6JgLxtQ+Rm0Q= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34/go.mod h1:p4VfIceZokChbA9FzMbRGz5OV+lekcVtHlPKEO0gSZY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 h1:SZwFm17ZUNNg5Np0ioo/gq8Mn6u9w19Mri8DnJ15Jf0= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34/go.mod h1:dFZsC0BLo346mvKQLWmoJxT+Sjp+qcVR1tRVHQGOH9Q= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 h1:dM9/92u2F1JbDaGooxTq18wmmFzbJRfXfVfy96/1CXM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15/go.mod h1:SwFBy2vjtA0vZbjjaFtfN045boopadnoVPhu4Fv66vY= +github.com/aws/aws-sdk-go-v2/service/sso v1.25.2 h1:pdgODsAhGo4dvzC3JAG5Ce0PX8kWXrTZGx+jxADD+5E= +github.com/aws/aws-sdk-go-v2/service/sso v1.25.2/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.0 h1:90uX0veLKcdHVfvxhkWUQSCi5VabtwMLFutYiRke4oo= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.0/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.17 h1:PZV5W8yk4OtH1JAuhV2PXwwO9v5G5Aoj+eMCn4T+1Kc= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.17/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4= +github.com/aws/smithy-go v1.22.3 h1:Z//5NuZCSW6R4PhQ93hShNbyBbn8BWCmCVCt+Q8Io5k= +github.com/aws/smithy-go v1.22.3/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWpi6yML8= github.com/aymanbagabas/go-udiff v0.2.0/go.mod h1:RE4Ex0qsGkTAJoQdQQCA0uG+nAzJO/pI/QwceO5fgrA= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= @@ -578,8 +606,10 @@ github.com/cloudflare/redoctober v0.0.0-20211013234631-6a74ccc611f6 h1:QKzett0dn github.com/cloudflare/redoctober v0.0.0-20211013234631-6a74ccc611f6/go.mod h1:Ikt4Wfpln1YOrak+auA8BNxgiilj0Y2y7nO+aN2eMzk= github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nCtnAiZdYFd45cYZPs8vOOIYKfk= github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= -github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= +github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= github.com/cristalhq/acmd v0.12.0 h1:RdlKnxjN+txbQosg8p/TRNZ+J1Rdne43MVQZ1zDhGWk= github.com/cristalhq/acmd v0.12.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= @@ -587,13 +617,15 @@ github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh github.com/ebitengine/purego v0.9.0 h1:mh0zpKBIXDceC63hpvPuGLiJ8ZAa3DfrFTudmfi8A4k= github.com/ebitengine/purego v0.9.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= -github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= -github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= +github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329 h1:K+fnvUM0VZ7ZFJf0n4L/BRlnsb9pL/GuDG6FqaH+PwM= +github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329/go.mod h1:Alz8LEClvR7xKsrq3qzoc4N0guvVNSS8KmSChGYr9hs= github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= +github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= -github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= @@ -614,8 +646,9 @@ github.com/go-fonts/stix v0.1.0 h1:UlZlgrvvmT/58o573ot7NFw0vZasZ5I6bcIft/oMdgg= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I= github.com/go-jose/go-jose/v4 v4.0.4/go.mod h1:NKb5HO1EZccyMpiZNbdUw/14tiXNyUJh188dfnMCAfc= -github.com/go-jose/go-jose/v4 v4.1.2 h1:TK/7NqRQZfgAh+Td8AlsrvtPoUyiHh0LqVvokh+1vHI= github.com/go-jose/go-jose/v4 v4.1.2/go.mod h1:22cg9HWM1pOlnRiY+9cQYJ9XHmya1bYW8OeDM6Ku6Oo= +github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs= +github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk= github.com/go-kit/log v0.1.0 h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 h1:6zl3BbBhdnMkpSj2YY30qV3gDcVBGtFgVsV3+/i+mKQ= @@ -683,6 +716,7 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vb github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= @@ -773,6 +807,7 @@ github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71 h1:CN github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= @@ -788,8 +823,9 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1 github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= +github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo= +github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs= github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= @@ -839,9 +875,10 @@ go.etcd.io/etcd/client/v2 v2.305.12/go.mod h1:aQ/yhsxMu+Oht1FOupSr60oBvcS9cKXHrz go.etcd.io/etcd/raft/v3 v3.5.12 h1:7r22RufdDsq2z3STjoR7Msz6fYH8tmbkdheGfwJNRmU= go.etcd.io/etcd/raft/v3 v3.5.12/go.mod h1:ERQuZVe79PI6vcC3DlKBukDCLja/L7YMu29B74Iwj4U= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= -go.opentelemetry.io/contrib/detectors/gcp v1.36.0 h1:F7q2tNlCaHY9nMKHR6XH9/qkp8FktLnIcy6jJNyOCQw= -go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k= +go.opentelemetry.io/contrib/detectors/gcp v1.38.0 h1:ZoYbqX7OaA/TAikspPl3ozPI6iY6LiIY9I8cUfm+pJs= +go.opentelemetry.io/contrib/detectors/gcp v1.38.0/go.mod h1:SU+iU7nu5ud4oCb3LQOhIZ3nRLj6FNVrKgtflbaf2ts= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= @@ -849,6 +886,8 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6h go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/exporters/prometheus v0.57.0 h1:AHh/lAP1BHrY5gBwk8ncc25FXWm/gmmY3BX258z5nuk= +go.opentelemetry.io/otel/exporters/prometheus v0.57.0/go.mod h1:QpFWz1QxqevfjwzYdbMb4Y1NnlJvqSGwyuU0B4iuc9c= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= @@ -859,6 +898,7 @@ go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstF go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= @@ -869,7 +909,6 @@ go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= -golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c h1:jTMrjjZRcSH/BDxWhXCP6OWsfVgmnwI7J+F4/nyVXaU= @@ -880,16 +919,17 @@ golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= -golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.46.1-0.20251013234738-63d1a5100f82/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= @@ -900,15 +940,17 @@ golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= @@ -917,6 +959,8 @@ golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -938,29 +982,32 @@ google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqt google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE= google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= google.golang.org/genproto/googleapis/api v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:B5xPO//w8qmBDjGReYLpR6UJPnkldGkCSMoH/2vxJeg= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= google.golang.org/genproto/googleapis/api v0.0.0-20250227231956-55c901821b1e/go.mod h1:Xsh8gBVxGCcbV8ZeTB9wI5XPyZ5RvC6V3CTeeplHbiA= google.golang.org/genproto/googleapis/api v0.0.0-20250414145226-207652e42e2e/go.mod h1:085qFyf2+XaZlRdCgKNCIZ3afY2p4HHZdoIRpId8F4A= google.golang.org/genproto/googleapis/api v0.0.0-20250425173222-7b384671a197/go.mod h1:Cd8IzgPo5Akum2c9R6FsXNaZbH3Jpa2gpHlW89FqlyQ= google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= -google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:oDOGiMSXHL4sDTJvFvIB9nRQCGdLP1o/iVaqQK8zB+M= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= google.golang.org/genproto/googleapis/bytestream v0.0.0-20250603155806-513f23925822 h1:zWFRixYR5QlotL+Uv3YfsPRENIrQFXiGs+iwqel6fOQ= google.golang.org/genproto/googleapis/bytestream v0.0.0-20250603155806-513f23925822/go.mod h1:h6yxum/C2qRb4txaZRLDHK8RyS0H/o2oEDeKY4onY/Y= google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/genproto/googleapis/rpc v0.0.0-20250227231956-55c901821b1e/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/genproto/googleapis/rpc v0.0.0-20250414145226-207652e42e2e/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +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-20251014184007-4626949a642f/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= +google.golang.org/grpc v1.67.3/go.mod h1:YGaHCc6Oap+FzBJTZLBzkGSYt/cvGPFTPxkn7QfSU8s= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= @@ -969,9 +1016,16 @@ google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3i google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= -google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20 h1:MLBCGN1O7GzIx+cBiwfYPwtmZ41U3Mn/cotLJciaArI= -google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20/go.mod h1:Nr5H8+MlGWr5+xX/STzdoEqJrO+YteqFbMyCsrb6mH0= +google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6 h1:ExN12ndbJ608cboPYflpTny6mXSzPrDLh0iTaVrRrds= +google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6/go.mod h1:6ytKWczdvnpnO+m+JiG9NjEDzR1FJfsnmJdG7B8QVZ8= +google.golang.org/grpc/gcp/observability v1.0.1 h1:2IQ7szW1gobfZaS/sDSAu2uxO0V/aTryMZvlcyqKqQA= +google.golang.org/grpc/gcp/observability v1.0.1/go.mod h1:yM0UcrYRMe/B+Nu0mDXeTJNDyIMJRJnzuxqnJMz7Ewk= +google.golang.org/grpc/security/advancedtls v1.0.0 h1:/KQ7VP/1bs53/aopk9QhuPyFAp9Dm9Ejix3lzYkCrDA= +google.golang.org/grpc/security/advancedtls v1.0.0/go.mod h1:o+s4go+e1PJ2AjuQMY5hU82W7lDlefjJA6FqEHRVHWk= +google.golang.org/grpc/stats/opencensus v1.0.0 h1:evSYcRZaSToQp+borzWE52+03joezZeXcKJvZDfkUJA= +google.golang.org/grpc/stats/opencensus v1.0.0/go.mod h1:FhdkeYvN43wLYUnapVuRJJ9JXkNwe403iLUW2LKSnjs= google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= @@ -979,7 +1033,6 @@ google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojt google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= diff --git a/pkg/go.mod b/pkg/go.mod index 1da4c9f1af61..7e89c9d8e4f3 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -14,7 +14,7 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 go.uber.org/zap v1.27.1 golang.org/x/sys v0.38.0 - google.golang.org/grpc v1.76.0 + google.golang.org/grpc v1.77.0 ) require ( @@ -26,7 +26,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.47.0 // indirect golang.org/x/text v0.31.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index ab22f38a3274..37b4cc2df946 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -35,16 +35,16 @@ github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +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/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -61,10 +61,10 @@ golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= -google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index a4e87c35f4cb..8501d25f901a 100644 --- a/server/go.mod +++ b/server/go.mod @@ -40,8 +40,8 @@ require ( golang.org/x/crypto v0.45.0 golang.org/x/net v0.47.0 golang.org/x/time v0.14.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 - google.golang.org/grpc v1.76.0 + google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 + google.golang.org/grpc v1.77.0 google.golang.org/protobuf v1.36.10 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.6.0 @@ -60,11 +60,11 @@ require ( github.com/kylelemons/godebug v1.1.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/common v0.67.2 // indirect + github.com/prometheus/common v0.67.4 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.10 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect @@ -72,7 +72,7 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/text v0.31.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index d60f6915d533..d63c115bc8f2 100644 --- a/server/go.sum +++ b/server/go.sum @@ -67,8 +67,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= -github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -97,8 +97,8 @@ go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +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/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= @@ -168,12 +168,12 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= -google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index 12cd6369267f..764845ac3a55 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -28,7 +28,7 @@ require ( github.com/olekukonko/tablewriter v1.1.1 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.67.2 + github.com/prometheus/common v0.67.4 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 @@ -50,7 +50,7 @@ require ( golang.org/x/crypto v0.45.0 golang.org/x/sync v0.18.0 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.76.0 + google.golang.org/grpc v1.77.0 google.golang.org/protobuf v1.36.10 ) @@ -93,7 +93,7 @@ require ( github.com/spf13/pflag v1.0.10 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect @@ -103,8 +103,8 @@ require ( golang.org/x/net v0.47.0 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/text v0.31.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index e7bf239de4d9..fcecb75695dc 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -126,8 +126,8 @@ github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UH github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= -github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -162,8 +162,8 @@ go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= 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.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +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/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= @@ -259,17 +259,17 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= -google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index b764319ead3a..fe0da95eb005 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -174,7 +174,7 @@ require ( github.com/polyfloyd/go-errorlint v1.8.0 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.2 // indirect + github.com/prometheus/common v0.67.4 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/quasilyte/go-ruleguard v0.4.5 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.23 // indirect @@ -244,9 +244,9 @@ require ( golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 // indirect golang.org/x/term v0.37.0 // indirect golang.org/x/text v0.31.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect - google.golang.org/grpc v1.76.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/grpc v1.77.0 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 5f94f02f2a47..80ac1adf3bc9 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -389,8 +389,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= -github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/quasilyte/go-ruleguard v0.4.5 h1:AGY0tiOT5hJX9BTdx/xBdoCubQUAE2grkqY2lSwvZcA= @@ -711,12 +711,12 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= -google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index f8e7e6e52143..865500ebb771 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -18,6 +18,6 @@ require ( golang.org/x/net v0.47.0 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/text v0.31.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect - google.golang.org/grpc v1.76.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/grpc v1.77.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 431be51bb6ce..aa6ab405474e 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1179,18 +1179,18 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +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/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -1844,8 +1844,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1891,8 +1891,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= -google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 3e1d1aab00e77294e16c573c0a579e9613b3fb8d Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Fri, 28 Nov 2025 23:47:47 +0530 Subject: [PATCH 0672/1068] dependency: bump golang.org/x/tools from 0.38.0 to 0.39.0 This commit will bump golang.org/x/tools from 0.38.0 to 0.39.0 Signed-off-by: ArkaSaha30 --- go.work.sum | 4 ++-- tools/mod/go.mod | 6 +++--- tools/mod/go.sum | 12 ++++++------ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/go.work.sum b/go.work.sum index 8d7d0c9acfcb..284680b9c201 100644 --- a/go.work.sum +++ b/go.work.sum @@ -917,6 +917,7 @@ golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhp golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= @@ -928,7 +929,6 @@ golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/net v0.46.1-0.20251013234738-63d1a5100f82/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= @@ -966,7 +966,7 @@ golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= -golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= +golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index fe0da95eb005..ed6e43032c3a 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -16,7 +16,7 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 - golang.org/x/tools v0.38.0 + golang.org/x/tools v0.39.0 gotest.tools/gotestsum v1.13.0 gotest.tools/v3 v3.5.2 honnef.co/go/tools v0.6.1 @@ -237,11 +237,11 @@ require ( golang.org/x/crypto v0.45.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546 // indirect - golang.org/x/mod v0.29.0 // indirect + golang.org/x/mod v0.30.0 // indirect golang.org/x/net v0.47.0 // indirect golang.org/x/sync v0.18.0 // indirect golang.org/x/sys v0.38.0 // indirect - golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 // indirect + golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 // indirect golang.org/x/term v0.37.0 // indirect golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 80ac1adf3bc9..3cb3bb64ca6c 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -589,8 +589,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -655,8 +655,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 h1:LvzTn0GQhWuvKH/kVRS3R3bVAsdQWI7hvfLHGgh9+lU= -golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8/go.mod h1:Pi4ztBfryZoJEkyFTI5/Ocsu2jXyDr6iSdgJiYE/uwE= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 h1:E2/AqCUMZGgd73TQkxUMcMla25GB9i/5HOdLr+uH7Vo= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -700,8 +700,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= From d8d8e5ead438d0be793956c97c505f706a8707db Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Sat, 29 Nov 2025 00:03:20 +0530 Subject: [PATCH 0673/1068] dependency: bump github.com/golangci/golangci-lint/v2 from 2.6.1 to 2.6.2 This commit will bump github.com/golangci/golangci-lint/v2 from 2.6.1 to 2.6.2 Signed-off-by: ArkaSaha30 --- tools/mod/go.mod | 6 +++--- tools/mod/go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index ed6e43032c3a..5715b11782ff 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -9,7 +9,7 @@ require ( github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint/v2 v2.6.1 + github.com/golangci/golangci-lint/v2 v2.6.2 github.com/google/yamlfmt v0.20.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/ryancurrah/gomodguard v1.4.1 @@ -150,8 +150,8 @@ require ( github.com/macabu/inamedparam v0.2.0 // indirect github.com/manuelarte/embeddedstructfieldcheck v0.4.0 // indirect github.com/manuelarte/funcorder v0.5.0 // indirect - github.com/maratori/testableexamples v1.0.0 // indirect - github.com/maratori/testpackage v1.1.1 // indirect + github.com/maratori/testableexamples v1.0.1 // indirect + github.com/maratori/testpackage v1.1.2 // indirect github.com/matoous/godox v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 3cb3bb64ca6c..a78a060853f9 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -203,8 +203,8 @@ github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarog github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint/v2 v2.6.1 h1:yTYVG6BJ4eG9QE815BAQDrC2xBbTB8lW11jg+YQ0b1c= -github.com/golangci/golangci-lint/v2 v2.6.1/go.mod h1:zlg/a5aw46LvRBHZ3OOwwsCtkjWTrn3wm5qowoteCRg= +github.com/golangci/golangci-lint/v2 v2.6.2 h1:jkMSVv36JmyTENcEertckvimvjPcD5qxNM7W7qhECvI= +github.com/golangci/golangci-lint/v2 v2.6.2/go.mod h1:fSIMDiBt9kzdpnvvV7GO6iWzyv5uaeZ+iPor+2uRczE= github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 h1:AkK+w9FZBXlU/xUmBtSJN1+tAI4FIvy5WtnUnY8e4p8= github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95/go.mod h1:k9mmcyWKSTMcPPvQUCfRWWQ9VHJ1U9Dc0R7kaXAgtnQ= github.com/golangci/misspell v0.7.0 h1:4GOHr/T1lTW0hhR4tgaaV1WS/lJ+ncvYCoFKmqJsj0c= @@ -321,10 +321,10 @@ github.com/manuelarte/embeddedstructfieldcheck v0.4.0 h1:3mAIyaGRtjK6EO9E73JlXLt github.com/manuelarte/embeddedstructfieldcheck v0.4.0/go.mod h1:z8dFSyXqp+fC6NLDSljRJeNQJJDWnY7RoWFzV3PC6UM= github.com/manuelarte/funcorder v0.5.0 h1:llMuHXXbg7tD0i/LNw8vGnkDTHFpTnWqKPI85Rknc+8= github.com/manuelarte/funcorder v0.5.0/go.mod h1:Yt3CiUQthSBMBxjShjdXMexmzpP8YGvGLjrxJNkO2hA= -github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= -github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= -github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= -github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= +github.com/maratori/testableexamples v1.0.1 h1:HfOQXs+XgfeRBJ+Wz0XfH+FHnoY9TVqL6Fcevpzy4q8= +github.com/maratori/testableexamples v1.0.1/go.mod h1:XE2F/nQs7B9N08JgyRmdGjYVGqxWwClLPCGSQhXQSrQ= +github.com/maratori/testpackage v1.1.2 h1:ffDSh+AgqluCLMXhM19f/cpvQAKygKAJXFl9aUjmbqs= +github.com/maratori/testpackage v1.1.2/go.mod h1:8F24GdVDFW5Ew43Et02jamrVMNXLUNaOynhDssITGfc= github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4= github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= From 89cc75dfa266f4e6eb88c70a27beb7ff7257a9bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Dec 2025 18:56:59 +0000 Subject: [PATCH 0674/1068] build(deps): bump github/codeql-action from 4.31.5 to 4.31.6 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.5 to 4.31.6. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/fdbfb4d2750291e159f0156def62b853c2798ca2...fe4161a26a8629af62121b670040955b330f9af2) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.31.6 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index a53d4668cf1e..437717d852f8 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 + uses: github/codeql-action/init@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 + uses: github/codeql-action/autobuild@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 + uses: github/codeql-action/analyze@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 51b0cac4c96e..dec2c555c4b3 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 + uses: github/codeql-action/upload-sarif@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 with: sarif_file: results.sarif From d04245835c1f2865651278a1a0565d6e83289126 Mon Sep 17 00:00:00 2001 From: boqishan Date: Thu, 4 Dec 2025 00:32:54 +0800 Subject: [PATCH 0675/1068] build(deps): update go version to 1.25.5 Signed-off-by: boqishan --- .go-version | 2 +- api/go.mod | 2 +- cache/go.mod | 2 +- client/pkg/go.mod | 2 +- client/v3/go.mod | 2 +- etcdctl/go.mod | 2 +- etcdutl/go.mod | 2 +- go.mod | 2 +- go.work | 2 +- pkg/go.mod | 2 +- server/go.mod | 2 +- tests/antithesis/config/Dockerfile | 2 +- tests/go.mod | 2 +- tools/mod/go.mod | 2 +- tools/rw-heatmaps/go.mod | 2 +- tools/testgrid-analysis/go.mod | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.go-version b/.go-version index 26a9e99b38be..b45fe310644f 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.25.4 +1.25.5 diff --git a/api/go.mod b/api/go.mod index 2768f06f0f05..a4f17098cb0b 100644 --- a/api/go.mod +++ b/api/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/api/v3 go 1.25.0 -toolchain go1.25.4 +toolchain go1.25.5 require ( github.com/coreos/go-semver v0.3.1 diff --git a/cache/go.mod b/cache/go.mod index de95fa24c44f..e682ce80eb40 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/cache/v3 go 1.25.0 -toolchain go1.25.4 +toolchain go1.25.5 require ( github.com/google/btree v1.1.3 diff --git a/client/pkg/go.mod b/client/pkg/go.mod index ede9d4b1f12c..da1a90be009e 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/pkg/v3 go 1.25.0 -toolchain go1.25.4 +toolchain go1.25.5 require ( github.com/coreos/go-systemd/v22 v22.6.0 diff --git a/client/v3/go.mod b/client/v3/go.mod index b815f3cb818d..8ad7c60a9a6e 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/v3 go 1.25.0 -toolchain go1.25.4 +toolchain go1.25.5 require ( github.com/coreos/go-semver v0.3.1 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index d215c48c7c06..da8af3d15854 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdctl/v3 go 1.25.0 -toolchain go1.25.4 +toolchain go1.25.5 require ( github.com/bgentry/speakeasy v0.2.0 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index bf6737cae7c1..6f1aa13867ba 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdutl/v3 go 1.25.0 -toolchain go1.25.4 +toolchain go1.25.5 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/go.mod b/go.mod index 1c6b0b03e195..7c74b3d74d58 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/v3 go 1.25.0 -toolchain go1.25.4 +toolchain go1.25.5 replace ( go.etcd.io/etcd/api/v3 => ./api diff --git a/go.work b/go.work index 0064d46bcfff..dc180f682f8f 100644 --- a/go.work +++ b/go.work @@ -2,7 +2,7 @@ go 1.25.0 -toolchain go1.25.4 +toolchain go1.25.5 use ( . diff --git a/pkg/go.mod b/pkg/go.mod index 7e89c9d8e4f3..ddb630d4f3e4 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/pkg/v3 go 1.25.0 -toolchain go1.25.4 +toolchain go1.25.5 require ( github.com/creack/pty v1.1.18 diff --git a/server/go.mod b/server/go.mod index 8501d25f901a..8768941e970e 100644 --- a/server/go.mod +++ b/server/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/server/v3 go 1.25.0 -toolchain go1.25.4 +toolchain go1.25.5 require ( github.com/coreos/go-semver v0.3.1 diff --git a/tests/antithesis/config/Dockerfile b/tests/antithesis/config/Dockerfile index 00e1c731ad6f..7cd60d752fb6 100644 --- a/tests/antithesis/config/Dockerfile +++ b/tests/antithesis/config/Dockerfile @@ -1,4 +1,4 @@ -ARG GO_VERSION=1.25.4 +ARG GO_VERSION=1.25.5 FROM golang:$GO_VERSION AS build RUN go install github.com/a8m/envsubst/cmd/envsubst@v1.4.3 diff --git a/tests/go.mod b/tests/go.mod index 764845ac3a55..f749a4c2fc9e 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tests/v3 go 1.25.0 -toolchain go1.25.4 +toolchain go1.25.5 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 5715b11782ff..0e6c1093ae26 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/v3 go 1.25.0 -toolchain go1.25.4 +toolchain go1.25.5 require ( github.com/alexfalkowski/gocovmerge v1.11.0 diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 17096b172085..a79be808892a 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/rw-heatmaps/v3 go 1.25.0 -toolchain go1.25.4 +toolchain go1.25.5 require ( github.com/spf13/cobra v1.10.1 diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 865500ebb771..ca7b03d84c49 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 go 1.25.0 -toolchain go1.25.4 +toolchain go1.25.5 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 From 7cc52ca4fbae9725bd0c4098ffb18131c2a902d5 Mon Sep 17 00:00:00 2001 From: boqishan Date: Tue, 25 Nov 2025 17:24:43 +0800 Subject: [PATCH 0676/1068] refactor: use strings.Cut to simplify code Signed-off-by: boqishan --- tools/benchmark/cmd/util.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tools/benchmark/cmd/util.go b/tools/benchmark/cmd/util.go index c8c9420de88b..63fa9802da25 100644 --- a/tools/benchmark/cmd/util.go +++ b/tools/benchmark/cmd/util.go @@ -37,8 +37,9 @@ func getUsernamePassword(usernameFlag string) (string, string, error) { if globalUserName != "" && globalPassword != "" { return globalUserName, globalPassword, nil } - colon := strings.Index(usernameFlag, ":") - if colon == -1 { + var ok bool + globalUserName, globalPassword, ok = strings.Cut(usernameFlag, ":") + if !ok { // Prompt for the password. password, err := speakeasy.Ask("Password: ") if err != nil { @@ -46,9 +47,6 @@ func getUsernamePassword(usernameFlag string) (string, string, error) { } globalUserName = usernameFlag globalPassword = password - } else { - globalUserName = usernameFlag[:colon] - globalPassword = usernameFlag[colon+1:] } return globalUserName, globalPassword, nil } From 622a5bfc085dec7ca9875d298e25c332f2091064 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Wed, 19 Nov 2025 17:53:37 -0500 Subject: [PATCH 0677/1068] *: add fuweid in sig-etcd-tech-leads group Signed-off-by: Wei Fu --- OWNERS | 1 - OWNERS_ALIASES | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/OWNERS b/OWNERS index 160e57a57c17..5272d73d0e3b 100644 --- a/OWNERS +++ b/OWNERS @@ -3,7 +3,6 @@ approvers: - sig-etcd-chairs # Defined in OWNERS_ALIASES - sig-etcd-tech-leads # Defined in OWNERS_ALIASES - - fuweid # Wei Fu - spzala # Sahdev Zala emeritus_approvers: - bdarnell # Ben Darnell diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES index 4ab3aae2ee21..3ebdccec54e2 100644 --- a/OWNERS_ALIASES +++ b/OWNERS_ALIASES @@ -5,4 +5,5 @@ aliases: - siyuanfoundation # Siyuan Zhang sig-etcd-tech-leads: - ahrtr # Benjamin Wang + - fuweid # Wei Fu - serathius # Marek Siarkowicz From a7943131a3ffc5924cf875aa8dd8d53f73c5e37a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Dec 2025 17:03:24 +0000 Subject: [PATCH 0678/1068] build(deps): bump github/codeql-action from 4.31.6 to 4.31.7 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.6 to 4.31.7. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/fe4161a26a8629af62121b670040955b330f9af2...cf1bb45a277cb3c205638b2cd5c984db1c46a412) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.31.7 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 437717d852f8..2b84086e9bf9 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 + uses: github/codeql-action/init@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 + uses: github/codeql-action/autobuild@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 + uses: github/codeql-action/analyze@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index dec2c555c4b3..1ba51f7629a3 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 + uses: github/codeql-action/upload-sarif@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 with: sarif_file: results.sarif From e888ef757f30d7430f7f93d63c0d18bd8ba0a7c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Dec 2025 17:07:01 +0000 Subject: [PATCH 0679/1068] build(deps): bump distroless/static-debian12 from `87bce11` to `4b2a093` Bumps distroless/static-debian12 from `87bce11` to `4b2a093`. --- updated-dependencies: - dependency-name: distroless/static-debian12 dependency-version: 4b2a093ef4649bccd586625090a3c668b254cfe180dee54f4c94f3e9bd7e381e dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 3e6b7d24931e..0635e32f7f3a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG ARCH=amd64 -FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:87bce11be0af225e4ca761c40babb06d6d559f5767fbf7dc3c47f0f1a466b92c +FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:4b2a093ef4649bccd586625090a3c668b254cfe180dee54f4c94f3e9bd7e381e ADD etcd /usr/local/bin/ ADD etcdctl /usr/local/bin/ From 47f36635baacec45fbbdcca7bbbce270392d19b0 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Sat, 13 Dec 2025 13:02:43 +0000 Subject: [PATCH 0680/1068] Remove 'Private Distributor List' from security guide We don't have such a list for now, so remove it to avoid any confusion Signed-off-by: Benjamin Wang --- security/README.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/security/README.md b/security/README.md index 99193d1dd664..e8b031689007 100644 --- a/security/README.md +++ b/security/README.md @@ -37,12 +37,3 @@ A public disclosure date is negotiated by the etcd Product Security Committee an A third party security audit was performed by Trail of Bits, find the full report [here](SECURITY_AUDIT.pdf). A third party fuzzing audit was performed by Ada Logics, find the full report [here](FUZZING_AUDIT_2022.PDF). -## Private Distributor List - -This list provides actionable information regarding etcd security to multiple distributors. Members of the list may not use the information for anything other than fixing the issue for respective distribution's users. If you continue to leak information and break the policy outlined here, you will be removed from the list. - -### Request to Join - -New membership requests are sent to [security@etcd.io](mailto:security@etcd.io). - -File an issue [here](https://github.com/etcd-io/etcd/issues/new?template=distributors-application.md), filling in the criteria template. From 6a9e93a5fde8672d410081dfc523fb92954cd9b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Dec 2025 17:03:27 +0000 Subject: [PATCH 0681/1068] build(deps): bump actions/stale from 10.1.0 to 10.1.1 Bumps [actions/stale](https://github.com/actions/stale) from 10.1.0 to 10.1.1. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/5f858e3efba33a5ca4407a664cc011ad407f2008...997185467fa4f803885201cee163a9f38240193d) --- updated-dependencies: - dependency-name: actions/stale dependency-version: 10.1.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/stale.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index a1cd7165821e..36d516e78d32 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -13,7 +13,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 #v10.1.0 + - uses: actions/stale@997185467fa4f803885201cee163a9f38240193d #v10.1.1 with: days-until-stale: 90 days-until-close: 21 From 41ade0d4ef359b464004bb33a40df2e759e642e0 Mon Sep 17 00:00:00 2001 From: joshjms Date: Fri, 12 Dec 2025 23:41:34 +0800 Subject: [PATCH 0682/1068] Add PutResponse to Put in common test client interface Signed-off-by: joshjms --- tests/common/alarm_test.go | 9 +- tests/common/auth_test.go | 103 +++++++++++++------- tests/common/compact_test.go | 3 +- tests/common/defrag_test.go | 3 +- tests/common/endpoint_test.go | 3 +- tests/common/grpc_test.go | 3 +- tests/common/kv_test.go | 9 +- tests/common/lease_test.go | 4 +- tests/common/txn_test.go | 6 +- tests/common/watch_test.go | 2 +- tests/e2e/cluster_downgrade_test.go | 2 +- tests/e2e/corrupt_test.go | 8 +- tests/e2e/ctl_v3_auth_cluster_test.go | 4 +- tests/e2e/ctl_v3_auth_no_proxy_test.go | 2 +- tests/e2e/ctl_v3_snapshot_test.go | 9 +- tests/e2e/defrag_no_space_test.go | 4 +- tests/e2e/etcd_config_test.go | 2 +- tests/e2e/etcd_grpcproxy_test.go | 2 +- tests/e2e/etcd_mix_versions_test.go | 2 +- tests/e2e/etcd_release_upgrade_test.go | 4 +- tests/e2e/force_new_cluster_test.go | 4 +- tests/e2e/http_health_check_test.go | 7 +- tests/e2e/leader_snapshot_no_proxy_test.go | 2 +- tests/e2e/metrics_test.go | 5 +- tests/e2e/promote_experimental_flag_test.go | 2 +- tests/e2e/reproduce_20271_test.go | 7 +- tests/e2e/v2store_deprecation_test.go | 6 +- tests/framework/e2e/etcdctl.go | 9 +- tests/framework/integration/integration.go | 5 +- tests/framework/interfaces/interface.go | 2 +- 30 files changed, 140 insertions(+), 93 deletions(-) diff --git a/tests/common/alarm_test.go b/tests/common/alarm_test.go index af47316b6e2b..24bb3df1a78d 100644 --- a/tests/common/alarm_test.go +++ b/tests/common/alarm_test.go @@ -41,12 +41,13 @@ func TestAlarm(t *testing.T) { testutils.ExecuteUntil(ctx, t, func() { // test small put still works smallbuf := strings.Repeat("a", 64) - require.NoErrorf(t, cc.Put(ctx, "1st_test", smallbuf, config.PutOptions{}), "alarmTest: put kv error") + _, err := cc.Put(ctx, "1st_test", smallbuf, config.PutOptions{}) + require.NoErrorf(t, err, "alarmTest: put kv error") // write some chunks to fill up the database buf := strings.Repeat("b", os.Getpagesize()) for { - if err := cc.Put(ctx, "2nd_test", buf, config.PutOptions{}); err != nil { + if _, err = cc.Put(ctx, "2nd_test", buf, config.PutOptions{}); err != nil { require.ErrorContains(t, err, "etcdserver: mvcc: database space exceeded") break } @@ -57,7 +58,7 @@ func TestAlarm(t *testing.T) { require.NoErrorf(t, err, "alarmTest: Alarm error") // check that Put is rejected when alarm is on - if err = cc.Put(ctx, "3rd_test", smallbuf, config.PutOptions{}); err != nil { + if _, err = cc.Put(ctx, "3rd_test", smallbuf, config.PutOptions{}); err != nil { require.ErrorContains(t, err, "etcdserver: mvcc: database space exceeded") } @@ -90,7 +91,7 @@ func TestAlarm(t *testing.T) { } // put one more key below quota - err = cc.Put(ctx, "4th_test", smallbuf, config.PutOptions{}) + _, err = cc.Put(ctx, "4th_test", smallbuf, config.PutOptions{}) require.NoError(t, err) }) } diff --git a/tests/common/auth_test.go b/tests/common/auth_test.go index 7ce235ad96b8..42cd059d261c 100644 --- a/tests/common/auth_test.go +++ b/tests/common/auth_test.go @@ -69,19 +69,23 @@ func TestAuthDisable(t *testing.T) { defer clus.Close() cc := testutils.MustClient(clus.Client()) testutils.ExecuteUntil(ctx, t, func() { - require.NoError(t, cc.Put(ctx, "hoo", "a", config.PutOptions{})) + _, err := cc.Put(ctx, "hoo", "a", config.PutOptions{}) + require.NoError(t, err) require.NoErrorf(t, setupAuth(cc, []authRole{testRole}, []authUser{rootUser, testUser}), "failed to enable auth") rootAuthClient := testutils.MustClient(clus.Client(WithAuth(rootUserName, rootPassword))) testUserAuthClient := testutils.MustClient(clus.Client(WithAuth(testUserName, testPassword))) // test-user doesn't have the permission, it must fail - require.Error(t, testUserAuthClient.Put(ctx, "hoo", "bar", config.PutOptions{})) + _, err = testUserAuthClient.Put(ctx, "hoo", "bar", config.PutOptions{}) + require.Error(t, err) require.NoErrorf(t, rootAuthClient.AuthDisable(ctx), "failed to disable auth") // now ErrAuthNotEnabled of Authenticate() is simply ignored - require.NoError(t, testUserAuthClient.Put(ctx, "hoo", "bar", config.PutOptions{})) + _, err = testUserAuthClient.Put(ctx, "hoo", "bar", config.PutOptions{}) + require.NoError(t, err) // now the key can be accessed - require.NoError(t, cc.Put(ctx, "hoo", "bar", config.PutOptions{})) + _, err = testUserAuthClient.Put(ctx, "hoo", "bar", config.PutOptions{}) + require.NoError(t, err) // confirm put succeeded resp, err := cc.Get(ctx, "hoo", config.GetOptions{}) require.NoError(t, err) @@ -122,7 +126,8 @@ func TestAuthGracefulDisable(t *testing.T) { } startedC <- struct{}{} // the watcher should still work after reconnecting - assert.NoErrorf(t, rootAuthClient.Put(ctx, "key", "value", config.PutOptions{}), "failed to put key value") + _, err := rootAuthClient.Put(ctx, "key", "value", config.PutOptions{}) + assert.NoErrorf(t, err, "failed to put key value") }() <-startedC @@ -169,18 +174,21 @@ func TestAuthRoleUpdate(t *testing.T) { defer clus.Close() cc := testutils.MustClient(clus.Client()) testutils.ExecuteUntil(ctx, t, func() { - require.NoError(t, cc.Put(ctx, "foo", "bar", config.PutOptions{})) + _, err := cc.Put(ctx, "foo", "bar", config.PutOptions{}) + require.NoError(t, err) require.NoErrorf(t, setupAuth(cc, []authRole{testRole}, []authUser{rootUser, testUser}), "failed to enable auth") rootAuthClient := testutils.MustClient(clus.Client(WithAuth(rootUserName, rootPassword))) testUserAuthClient := testutils.MustClient(clus.Client(WithAuth(testUserName, testPassword))) - require.ErrorContains(t, testUserAuthClient.Put(ctx, "hoo", "bar", config.PutOptions{}), PermissionDenied) + _, err = testUserAuthClient.Put(ctx, "hoo", "bar", config.PutOptions{}) + require.ErrorContains(t, err, PermissionDenied) // grant a new key - _, err := rootAuthClient.RoleGrantPermission(ctx, testRoleName, "hoo", "", clientv3.PermissionType(clientv3.PermReadWrite)) + _, err = rootAuthClient.RoleGrantPermission(ctx, testRoleName, "hoo", "", clientv3.PermissionType(clientv3.PermReadWrite)) require.NoError(t, err) // try a newly granted key - require.NoError(t, testUserAuthClient.Put(ctx, "hoo", "bar", config.PutOptions{})) + _, err = testUserAuthClient.Put(ctx, "hoo", "bar", config.PutOptions{}) + require.NoError(t, err) // confirm put succeeded resp, err := testUserAuthClient.Get(ctx, "hoo", config.GetOptions{}) require.NoError(t, err) @@ -191,7 +199,8 @@ func TestAuthRoleUpdate(t *testing.T) { _, err = rootAuthClient.RoleRevokePermission(ctx, testRoleName, "hoo", "") require.NoError(t, err) // try put to the revoked key - require.ErrorContains(t, testUserAuthClient.Put(ctx, "hoo", "bar", config.PutOptions{}), PermissionDenied) + _, err = testUserAuthClient.Put(ctx, "hoo", "bar", config.PutOptions{}) + require.ErrorContains(t, err, PermissionDenied) // confirm a key still granted can be accessed resp, err = testUserAuthClient.Get(ctx, "foo", config.GetOptions{}) require.NoError(t, err) @@ -209,14 +218,16 @@ func TestAuthUserDeleteDuringOps(t *testing.T) { defer clus.Close() cc := testutils.MustClient(clus.Client()) testutils.ExecuteUntil(ctx, t, func() { - require.NoError(t, cc.Put(ctx, "foo", "bar", config.PutOptions{})) + _, err := cc.Put(ctx, "foo", "bar", config.PutOptions{}) + require.NoError(t, err) require.NoErrorf(t, setupAuth(cc, []authRole{testRole}, []authUser{rootUser, testUser}), "failed to enable auth") rootAuthClient := testutils.MustClient(clus.Client(WithAuth(rootUserName, rootPassword))) testUserAuthClient := testutils.MustClient(clus.Client(WithAuth(testUserName, testPassword))) // create a key - require.NoError(t, testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{})) + _, err = testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{}) + require.NoError(t, err) // confirm put succeeded resp, err := testUserAuthClient.Get(ctx, "foo", config.GetOptions{}) require.NoError(t, err) @@ -227,7 +238,7 @@ func TestAuthUserDeleteDuringOps(t *testing.T) { _, err = rootAuthClient.UserDelete(ctx, testUserName) require.NoError(t, err) // check the user is deleted - err = testUserAuthClient.Put(ctx, "foo", "baz", config.PutOptions{}) + _, err = testUserAuthClient.Put(ctx, "foo", "baz", config.PutOptions{}) require.ErrorContains(t, err, AuthenticationFailed) }) } @@ -240,14 +251,16 @@ func TestAuthRoleRevokeDuringOps(t *testing.T) { defer clus.Close() cc := testutils.MustClient(clus.Client()) testutils.ExecuteUntil(ctx, t, func() { - require.NoError(t, cc.Put(ctx, "foo", "bar", config.PutOptions{})) + _, err := cc.Put(ctx, "foo", "bar", config.PutOptions{}) + require.NoError(t, err) require.NoErrorf(t, setupAuth(cc, []authRole{testRole}, []authUser{rootUser, testUser}), "failed to enable auth") rootAuthClient := testutils.MustClient(clus.Client(WithAuth(rootUserName, rootPassword))) testUserAuthClient := testutils.MustClient(clus.Client(WithAuth(testUserName, testPassword))) // create a key - require.NoError(t, testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{})) + _, err = testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{}) + require.NoError(t, err) // confirm put succeeded resp, err := testUserAuthClient.Get(ctx, "foo", config.GetOptions{}) require.NoError(t, err) @@ -265,7 +278,8 @@ func TestAuthRoleRevokeDuringOps(t *testing.T) { require.NoError(t, err) // try a newly granted key - require.NoError(t, testUserAuthClient.Put(ctx, "hoo", "bar", config.PutOptions{})) + _, err = testUserAuthClient.Put(ctx, "hoo", "bar", config.PutOptions{}) + require.NoError(t, err) // confirm put succeeded resp, err = testUserAuthClient.Get(ctx, "hoo", config.GetOptions{}) require.NoError(t, err) @@ -276,10 +290,12 @@ func TestAuthRoleRevokeDuringOps(t *testing.T) { _, err = rootAuthClient.UserRevokeRole(ctx, testUserName, testRoleName) require.NoError(t, err) // check the role is revoked and permission is lost from the user - require.ErrorContains(t, testUserAuthClient.Put(ctx, "foo", "baz", config.PutOptions{}), PermissionDenied) + _, err = testUserAuthClient.Put(ctx, "foo", "baz", config.PutOptions{}) + require.ErrorContains(t, err, PermissionDenied) // try a key that can be accessed from the remaining role - require.NoError(t, testUserAuthClient.Put(ctx, "hoo", "bar2", config.PutOptions{})) + _, err = testUserAuthClient.Put(ctx, "hoo", "bar2", config.PutOptions{}) + require.NoError(t, err) // confirm put succeeded resp, err = testUserAuthClient.Get(ctx, "hoo", config.GetOptions{}) require.NoError(t, err) @@ -297,14 +313,16 @@ func TestAuthWriteKey(t *testing.T) { defer clus.Close() cc := testutils.MustClient(clus.Client()) testutils.ExecuteUntil(ctx, t, func() { - require.NoError(t, cc.Put(ctx, "foo", "a", config.PutOptions{})) + _, err := cc.Put(ctx, "foo", "a", config.PutOptions{}) + require.NoError(t, err) require.NoErrorf(t, setupAuth(cc, []authRole{testRole}, []authUser{rootUser, testUser}), "failed to enable auth") rootAuthClient := testutils.MustClient(clus.Client(WithAuth(rootUserName, rootPassword))) testUserAuthClient := testutils.MustClient(clus.Client(WithAuth(testUserName, testPassword))) // confirm root role can access to all keys - require.NoError(t, rootAuthClient.Put(ctx, "foo", "bar", config.PutOptions{})) + _, err = rootAuthClient.Put(ctx, "foo", "bar", config.PutOptions{}) + require.NoError(t, err) resp, err := rootAuthClient.Get(ctx, "foo", config.GetOptions{}) require.NoError(t, err) require.Lenf(t, resp.Kvs, 1, "want key value pair 'foo' 'bar' but got %+v", resp.Kvs) @@ -315,7 +333,8 @@ func TestAuthWriteKey(t *testing.T) { require.ErrorContains(t, err, AuthenticationFailed) // try good user - require.NoError(t, testUserAuthClient.Put(ctx, "foo", "bar2", config.PutOptions{})) + _, err = testUserAuthClient.Put(ctx, "foo", "bar2", config.PutOptions{}) + require.NoError(t, err) // confirm put succeeded resp, err = testUserAuthClient.Get(ctx, "foo", config.GetOptions{}) require.NoError(t, err) @@ -392,11 +411,11 @@ func TestAuthTxn(t *testing.T) { // keys with 2 suffix are granted to test-user, see Line 399 grantedKeys := []string{"c2", "s2", "f2"} for _, key := range keys { - err := cc.Put(ctx, key, "v", config.PutOptions{}) + _, err := cc.Put(ctx, key, "v", config.PutOptions{}) require.NoError(t, err) } for _, key := range grantedKeys { - err := cc.Put(ctx, key, "v", config.PutOptions{}) + _, err := cc.Put(ctx, key, "v", config.PutOptions{}) require.NoError(t, err) } @@ -443,10 +462,12 @@ func TestAuthPrefixPerm(t *testing.T) { // try a prefix granted permission for i := 0; i < 10; i++ { key := fmt.Sprintf("%s%d", prefix, i) - require.NoError(t, testUserAuthClient.Put(ctx, key, "val", config.PutOptions{})) + _, err = testUserAuthClient.Put(ctx, key, "val", config.PutOptions{}) + require.NoError(t, err) } // expect put 'key with prefix end "/prefix0"' value failed - require.ErrorContains(t, testUserAuthClient.Put(ctx, clientv3.GetPrefixRangeEnd(prefix), "baz", config.PutOptions{}), PermissionDenied) + _, err = testUserAuthClient.Put(ctx, clientv3.GetPrefixRangeEnd(prefix), "baz", config.PutOptions{}) + require.ErrorContains(t, err, PermissionDenied) // grant the prefix2 keys to test-user prefix2 := "/prefix2/" @@ -454,7 +475,8 @@ func TestAuthPrefixPerm(t *testing.T) { require.NoError(t, err) for i := 0; i < 10; i++ { key := fmt.Sprintf("%s%d", prefix2, i) - require.NoError(t, testUserAuthClient.Put(ctx, key, "val", config.PutOptions{})) + _, err = testUserAuthClient.Put(ctx, key, "val", config.PutOptions{}) + require.NoError(t, err) } }) } @@ -473,7 +495,8 @@ func TestAuthLeaseKeepAlive(t *testing.T) { resp, err := rootAuthClient.Grant(ctx, 10) require.NoError(t, err) leaseID := resp.ID - require.NoError(t, rootAuthClient.Put(ctx, "key", "value", config.PutOptions{LeaseID: leaseID})) + _, err = rootAuthClient.Put(ctx, "key", "value", config.PutOptions{LeaseID: leaseID}) + require.NoError(t, err) _, err = rootAuthClient.KeepAliveOnce(ctx, leaseID) require.NoError(t, err) @@ -529,7 +552,8 @@ func TestAuthLeaseTimeToLiveExpired(t *testing.T) { resp, err := rootAuthClient.Grant(ctx, 2) require.NoError(t, err) leaseID := resp.ID - require.NoError(t, rootAuthClient.Put(ctx, "key", "val", config.PutOptions{LeaseID: leaseID})) + _, err = rootAuthClient.Put(ctx, "key", "val", config.PutOptions{LeaseID: leaseID}) + require.NoError(t, err) // eliminate false positive time.Sleep(3 * time.Second) tresp, err := rootAuthClient.TimeToLive(ctx, leaseID, config.LeaseOption{}) @@ -778,7 +802,7 @@ func TestAuthLeaseRevoke(t *testing.T) { lresp, err := rootAuthClient.Grant(ctx, 10) require.NoError(t, err) - err = rootAuthClient.Put(ctx, "key", "value", config.PutOptions{LeaseID: lresp.ID}) + _, err = rootAuthClient.Put(ctx, "key", "value", config.PutOptions{LeaseID: lresp.ID}) require.NoError(t, err) _, err = rootAuthClient.Revoke(ctx, lresp.ID) @@ -876,13 +900,15 @@ func TestAuthJWTExpire(t *testing.T) { require.NoErrorf(t, setupAuth(cc, []authRole{testRole}, []authUser{rootUser, testUser}), "failed to enable auth") testUserAuthClient := testutils.MustClient(clus.Client(WithAuth(testUserName, testPassword))) - require.NoError(t, testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{})) + _, err := testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{}) + require.NoError(t, err) // wait an expiration of my JWT token <-time.After(3 * tokenTTL) // e2e test will generate a new token while // integration test that re-uses the same etcd client will refresh the token on server failure. - require.NoError(t, testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{})) + _, err = testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{}) + require.NoError(t, err) }) } @@ -901,7 +927,8 @@ func TestAuthJWTOnly(t *testing.T) { require.NoErrorf(t, err, "failed to create test user JWT") testUserAuthClient := testutils.MustClient(clus.Client(WithAuthToken(token))) - require.NoError(t, testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{})) + _, err = testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{}) + require.NoError(t, err) }) } @@ -955,14 +982,16 @@ func TestAuthTestCacheReload(t *testing.T) { // create foo since that is within the permission set // expectation is to succeed - require.NoError(t, testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{})) + _, err := testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{}) + require.NoError(t, err) // restart the node clus.Members()[0].Stop() require.NoError(t, clus.Members()[0].Start(ctx)) // nothing has changed, but it fails without refreshing cache after restart - require.NoError(t, testUserAuthClient.Put(ctx, "foo", "bar2", config.PutOptions{})) + _, err = testUserAuthClient.Put(ctx, "foo", "bar2", config.PutOptions{}) + require.NoError(t, err) }) } @@ -983,7 +1012,8 @@ func TestAuthLeaseTimeToLive(t *testing.T) { require.NoError(t, err) leaseID := gresp.ID - require.NoError(t, testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{LeaseID: leaseID})) + _, err = testUserAuthClient.Put(ctx, "foo", "bar", config.PutOptions{LeaseID: leaseID}) + require.NoError(t, err) _, err = testUserAuthClient.TimeToLive(ctx, leaseID, config.LeaseOption{WithAttachedKeys: true}) require.NoError(t, err) @@ -994,7 +1024,8 @@ func TestAuthLeaseTimeToLive(t *testing.T) { require.ErrorContains(t, err, "etcdserver: user name is empty") rootAuthClient := testutils.MustClient(clus.Client(WithAuth(rootUserName, rootPassword))) - require.NoError(t, rootAuthClient.Put(ctx, "bar", "foo", config.PutOptions{LeaseID: leaseID})) + _, err = rootAuthClient.Put(ctx, "bar", "foo", config.PutOptions{LeaseID: leaseID}) + require.NoError(t, err) // the lease is attached to bar, which test-user cannot access _, err = testUserAuthClient.TimeToLive(ctx, leaseID, config.LeaseOption{WithAttachedKeys: true}) diff --git a/tests/common/compact_test.go b/tests/common/compact_test.go index ff83cbe225ff..842b54dd8eb3 100644 --- a/tests/common/compact_test.go +++ b/tests/common/compact_test.go @@ -51,7 +51,8 @@ func TestCompact(t *testing.T) { testutils.ExecuteUntil(ctx, t, func() { kvs := []testutils.KV{{Key: "key", Val: "val1"}, {Key: "key", Val: "val2"}, {Key: "key", Val: "val3"}} for i := range kvs { - require.NoErrorf(t, cc.Put(ctx, kvs[i].Key, kvs[i].Val, config.PutOptions{}), "compactTest #%d: put kv error", i) + _, err := cc.Put(ctx, kvs[i].Key, kvs[i].Val, config.PutOptions{}) + require.NoErrorf(t, err, "compactTest #%d: put kv error", i) } get, err := cc.Get(ctx, "key", config.GetOptions{Revision: 3}) require.NoErrorf(t, err, "compactTest: Get kv by revision error") diff --git a/tests/common/defrag_test.go b/tests/common/defrag_test.go index 6ad5bba796f0..6238ae37fc68 100644 --- a/tests/common/defrag_test.go +++ b/tests/common/defrag_test.go @@ -36,7 +36,8 @@ func TestDefragOnline(t *testing.T) { defer clus.Close() kvs := []testutils.KV{{Key: "key", Val: "val1"}, {Key: "key", Val: "val2"}, {Key: "key", Val: "val3"}} for i := range kvs { - require.NoErrorf(t, cc.Put(ctx, kvs[i].Key, kvs[i].Val, config.PutOptions{}), "compactTest #%d: put kv error", i) + _, err := cc.Put(ctx, kvs[i].Key, kvs[i].Val, config.PutOptions{}) + require.NoErrorf(t, err, "compactTest #%d: put kv error", i) } _, err := cc.Compact(ctx, 4, config.CompactOption{Physical: true, Timeout: 10 * time.Second}) require.NoErrorf(t, err, "defrag_test: compact with revision error (%v)", err) diff --git a/tests/common/endpoint_test.go b/tests/common/endpoint_test.go index 5681e54aa121..03074595b572 100644 --- a/tests/common/endpoint_test.go +++ b/tests/common/endpoint_test.go @@ -51,7 +51,8 @@ func TestEndpointHashKV(t *testing.T) { for i := 0; i < 10; i++ { key := fmt.Sprintf("key-%d", i) value := fmt.Sprintf("value-%d", i) - require.NoErrorf(t, cc.Put(ctx, key, value, config.PutOptions{}), "count not put key %q", key) + _, err := cc.Put(ctx, key, value, config.PutOptions{}) + require.NoErrorf(t, err, "count not put key %q", key) } t.Log("Check all members' Hash and HashRevision") diff --git a/tests/common/grpc_test.go b/tests/common/grpc_test.go index 77ea01c4e492..496bf4868c40 100644 --- a/tests/common/grpc_test.go +++ b/tests/common/grpc_test.go @@ -155,7 +155,8 @@ func TestAuthority(t *testing.T) { cc := testutils.MustClient(clus.Client(WithEndpoints(endpoints))) for i := 0; i < 100; i++ { - require.NoError(t, cc.Put(ctx, "foo", "bar", config.PutOptions{})) + _, err := cc.Put(ctx, "foo", "bar", config.PutOptions{}) + require.NoError(t, err) } testutils.ExecuteWithTimeout(t, 5*time.Second, func() { diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index f32b6b291883..e0bda6197c8a 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -40,7 +40,8 @@ func TestKVPut(t *testing.T) { testutils.ExecuteUntil(ctx, t, func() { key, value := "foo", "bar" - require.NoErrorf(t, cc.Put(ctx, key, value, config.PutOptions{}), "count not put key %q", key) + _, err := cc.Put(ctx, key, value, config.PutOptions{}) + require.NoErrorf(t, err, "count not put key %q", key) resp, err := cc.Get(ctx, key, config.GetOptions{}) require.NoErrorf(t, err, "count not get key %q, err: %s", key, err) assert.Lenf(t, resp.Kvs, 1, "Unexpected length of response, got %d", len(resp.Kvs)) @@ -70,7 +71,8 @@ func TestKVGet(t *testing.T) { ) for i := range kvs { - require.NoErrorf(t, cc.Put(ctx, kvs[i], "bar", config.PutOptions{}), "count not put key %q", kvs[i]) + _, err := cc.Put(ctx, kvs[i], "bar", config.PutOptions{}) + require.NoErrorf(t, err, "count not put key %q", kvs[i]) } tests := []struct { begin string @@ -166,7 +168,8 @@ func TestKVDelete(t *testing.T) { } for _, tt := range tests { for i := range kvs { - require.NoErrorf(t, cc.Put(ctx, kvs[i], "bar", config.PutOptions{}), "count not put key %q", kvs[i]) + _, err := cc.Put(ctx, kvs[i], "bar", config.PutOptions{}) + require.NoErrorf(t, err, "count not put key %q", kvs[i]) } del, err := cc.Delete(ctx, tt.deleteKey, tt.options) require.NoErrorf(t, err, "count not get key %q, err", tt.deleteKey) diff --git a/tests/common/lease_test.go b/tests/common/lease_test.go index 6dc8861723c8..d94eafe9b252 100644 --- a/tests/common/lease_test.go +++ b/tests/common/lease_test.go @@ -132,7 +132,7 @@ func TestLeaseGrantTimeToLiveExpired(t *testing.T) { leaseResp, err := cc.Grant(ctx, 2) require.NoError(t, err) - err = cc.Put(ctx, "foo", "bar", config.PutOptions{LeaseID: leaseResp.ID}) + _, err = cc.Put(ctx, "foo", "bar", config.PutOptions{LeaseID: leaseResp.ID}) require.NoError(t, err) getResp, err := cc.Get(ctx, "foo", config.GetOptions{}) @@ -230,7 +230,7 @@ func TestLeaseGrantRevoke(t *testing.T) { leaseResp, err := cc.Grant(ctx, 20) require.NoError(t, err) - err = cc.Put(ctx, "foo", "bar", config.PutOptions{LeaseID: leaseResp.ID}) + _, err = cc.Put(ctx, "foo", "bar", config.PutOptions{LeaseID: leaseResp.ID}) require.NoError(t, err) getResp, err := cc.Get(ctx, "foo", config.GetOptions{}) diff --git a/tests/common/txn_test.go b/tests/common/txn_test.go index 771155584cc2..4d55a26158bd 100644 --- a/tests/common/txn_test.go +++ b/tests/common/txn_test.go @@ -65,9 +65,9 @@ func TestTxnSucc(t *testing.T) { defer clus.Close() cc := testutils.MustClient(clus.Client()) testutils.ExecuteUntil(ctx, t, func() { - err := cc.Put(ctx, "key1", "value1", config.PutOptions{}) + _, err := cc.Put(ctx, "key1", "value1", config.PutOptions{}) require.NoErrorf(t, err, "could not create key:%s, value:%s", "key1", "value1") - err = cc.Put(ctx, "key2", "value2", config.PutOptions{}) + _, err = cc.Put(ctx, "key2", "value2", config.PutOptions{}) require.NoErrorf(t, err, "could not create key:%s, value:%s", "key2", "value2") for _, req := range reqs { resp, err := cc.Txn(ctx, req.compare, req.ifSuccess, req.ifFail, config.TxnOptions{ @@ -105,7 +105,7 @@ func TestTxnFail(t *testing.T) { defer clus.Close() cc := testutils.MustClient(clus.Client()) testutils.ExecuteUntil(ctx, t, func() { - err := cc.Put(ctx, "key1", "value1", config.PutOptions{}) + _, err := cc.Put(ctx, "key1", "value1", config.PutOptions{}) require.NoErrorf(t, err, "could not create key:%s, value:%s", "key1", "value1") for _, req := range reqs { resp, err := cc.Txn(ctx, req.compare, req.ifSuccess, req.ifFail, config.TxnOptions{ diff --git a/tests/common/watch_test.go b/tests/common/watch_test.go index 4e853df921c3..0ab3a4d5ab0b 100644 --- a/tests/common/watch_test.go +++ b/tests/common/watch_test.go @@ -76,7 +76,7 @@ func TestWatch(t *testing.T) { require.NotNilf(t, wch, "failed to watch %s", tt.watchKey) for j := range tt.puts { - err := cc.Put(ctx, tt.puts[j].Key, tt.puts[j].Val, config.PutOptions{}) + _, err := cc.Put(ctx, tt.puts[j].Key, tt.puts[j].Val, config.PutOptions{}) require.NoErrorf(t, err, "can't not put key %q, err: %s", tt.puts[j].Key, err) } diff --git a/tests/e2e/cluster_downgrade_test.go b/tests/e2e/cluster_downgrade_test.go index 511a9fe1f925..9b8bce77b5b6 100644 --- a/tests/e2e/cluster_downgrade_test.go +++ b/tests/e2e/cluster_downgrade_test.go @@ -252,7 +252,7 @@ func generateSnapshot(t *testing.T, snapshotCount uint64, cc *e2e.EtcdctlV3) { var i uint64 t.Logf("Adding keys") for i = 0; i < snapshotCount*3; i++ { - err := cc.Put(ctx, fmt.Sprintf("%d", i), "1", config.PutOptions{}) + _, err := cc.Put(ctx, fmt.Sprintf("%d", i), "1", config.PutOptions{}) assert.NoError(t, err) } } diff --git a/tests/e2e/corrupt_test.go b/tests/e2e/corrupt_test.go index f18f094cdb47..6a1b1494bbf5 100644 --- a/tests/e2e/corrupt_test.go +++ b/tests/e2e/corrupt_test.go @@ -124,7 +124,7 @@ func TestInPlaceRecovery(t *testing.T) { oldCc, err := e2e.NewEtcdctl(epcOld.Cfg.Client, epcOld.EndpointsGRPC()) require.NoError(t, err) for i := 0; i < 10; i++ { - err = oldCc.Put(ctx, testutil.PickKey(int64(i)), fmt.Sprint(i), config.PutOptions{}) + _, err = oldCc.Put(ctx, testutil.PickKey(int64(i)), fmt.Sprint(i), config.PutOptions{}) require.NoErrorf(t, err, "error on put") } @@ -210,7 +210,7 @@ func TestPeriodicCheckDetectsCorruption(t *testing.T) { cc := epc.Etcdctl() for i := 0; i < 10; i++ { - err = cc.Put(ctx, testutil.PickKey(int64(i)), fmt.Sprint(i), config.PutOptions{}) + _, err = cc.Put(ctx, testutil.PickKey(int64(i)), fmt.Sprint(i), config.PutOptions{}) require.NoErrorf(t, err, "error on put") } @@ -261,7 +261,7 @@ func testCompactHashCheckDetectCorruption(t *testing.T, useFeatureGate bool) { cc := epc.Etcdctl() for i := 0; i < 10; i++ { - err = cc.Put(ctx, testutil.PickKey(int64(i)), fmt.Sprint(i), config.PutOptions{}) + _, err = cc.Put(ctx, testutil.PickKey(int64(i)), fmt.Sprint(i), config.PutOptions{}) require.NoErrorf(t, err, "error on put") } memberID, found, err := getMemberIDByName(ctx, cc, epc.Procs[0].Config().Name) @@ -341,7 +341,7 @@ func testCompactHashCheckDetectCorruptionInterrupt(t *testing.T, useFeatureGate t.Log("putting 10 values to the identical key...") cc := epc.Etcdctl() for i := 0; i < 10; i++ { - err = cc.Put(ctx, "key", fmt.Sprint(i), config.PutOptions{}) + _, err = cc.Put(ctx, "key", fmt.Sprint(i), config.PutOptions{}) require.NoErrorf(t, err, "error on put") } diff --git a/tests/e2e/ctl_v3_auth_cluster_test.go b/tests/e2e/ctl_v3_auth_cluster_test.go index e758d6e9b5b4..37dd833b599c 100644 --- a/tests/e2e/ctl_v3_auth_cluster_test.go +++ b/tests/e2e/ctl_v3_auth_cluster_test.go @@ -58,7 +58,7 @@ func TestAuthCluster(t *testing.T) { // write more than SnapshotCount keys to single leader to make sure snapshot is created for i := 0; i <= 10; i++ { - if err := epc.Etcdctl(testUserClientOpts).Put(ctx, fmt.Sprintf("/test/%d", i), "test", config.PutOptions{}); err != nil { + if _, err := epc.Etcdctl(testUserClientOpts).Put(ctx, fmt.Sprintf("/test/%d", i), "test", config.PutOptions{}); err != nil { t.Fatalf("failed to Put (%v)", err) } } @@ -72,7 +72,7 @@ func TestAuthCluster(t *testing.T) { endpoints := epc.EndpointsGRPC() assert.Len(t, endpoints, 2) for _, endpoint := range epc.EndpointsGRPC() { - if err := epc.Etcdctl(testUserClientOpts, e2e.WithEndpoints([]string{endpoint})).Put(ctx, "/test/key", endpoint, config.PutOptions{}); err != nil { + if _, err := epc.Etcdctl(testUserClientOpts, e2e.WithEndpoints([]string{endpoint})).Put(ctx, "/test/key", endpoint, config.PutOptions{}); err != nil { t.Fatalf("failed to write to Put to %q (%v)", endpoint, err) } } diff --git a/tests/e2e/ctl_v3_auth_no_proxy_test.go b/tests/e2e/ctl_v3_auth_no_proxy_test.go index 8b79cc0dde63..da00e93e21d2 100644 --- a/tests/e2e/ctl_v3_auth_no_proxy_test.go +++ b/tests/e2e/ctl_v3_auth_no_proxy_test.go @@ -113,7 +113,7 @@ func TestCtlV3AuthCertCNWithWithConcurrentOperation(t *testing.T) { key := fmt.Sprintf("key-%d", i) value := fmt.Sprintf("value-%d", i) - if err := epcClient.Put(ctx, key, value, config.PutOptions{}); err != nil { + if _, err := epcClient.Put(ctx, key, value, config.PutOptions{}); err != nil { errs <- fmt.Errorf("failed to put key %q: %w", key, err) break } diff --git a/tests/e2e/ctl_v3_snapshot_test.go b/tests/e2e/ctl_v3_snapshot_test.go index c5346fc595ca..97dbb7a2901f 100644 --- a/tests/e2e/ctl_v3_snapshot_test.go +++ b/tests/e2e/ctl_v3_snapshot_test.go @@ -315,7 +315,8 @@ func TestRestoreCompactionRevBump(t *testing.T) { kvs := []testutils.KV{{Key: "foo1", Val: "val1"}, {Key: "foo2", Val: "val2"}, {Key: "foo3", Val: "val3"}} for i := range kvs { - require.NoError(t, ctl.Put(t.Context(), kvs[i].Key, kvs[i].Val, config.PutOptions{})) + _, err = ctl.Put(t.Context(), kvs[i].Key, kvs[i].Val, config.PutOptions{}) + require.NoError(t, err) } watchTimeout := 1 * time.Second @@ -337,7 +338,8 @@ func TestRestoreCompactionRevBump(t *testing.T) { // add some more kvs that are not in the snapshot that will be lost after restore unsnappedKVs := []testutils.KV{{Key: "unsnapped1", Val: "one"}, {Key: "unsnapped2", Val: "two"}, {Key: "unsnapped3", Val: "three"}} for i := range unsnappedKVs { - require.NoError(t, ctl.Put(t.Context(), unsnappedKVs[i].Key, unsnappedKVs[i].Val, config.PutOptions{})) + _, err = ctl.Put(t.Context(), unsnappedKVs[i].Key, unsnappedKVs[i].Val, config.PutOptions{}) + require.NoError(t, err) } membersBefore, err := ctl.MemberList(t.Context(), false) @@ -403,7 +405,8 @@ func TestRestoreCompactionRevBump(t *testing.T) { ctx, cancel := context.WithTimeout(t.Context(), watchTimeout*5) defer cancel() watchCh = ctl.Watch(ctx, "foo", config.WatchOptions{Prefix: true, Revision: int64(bumpAmount + currentRev + 1)}) - require.NoError(t, ctl.Put(t.Context(), "foo4", "val4", config.PutOptions{})) + _, err = ctl.Put(ctx, "foo4", "val4", config.PutOptions{}) + require.NoError(t, err) watchRes, err = testutils.KeyValuesFromWatchChan(watchCh, 1, watchTimeout) require.NoErrorf(t, err, "failed to get key-values from watch channel %s", err) require.Equal(t, []testutils.KV{{Key: "foo4", Val: "val4"}}, watchRes) diff --git a/tests/e2e/defrag_no_space_test.go b/tests/e2e/defrag_no_space_test.go index feccb2ba4562..57953efe2dae 100644 --- a/tests/e2e/defrag_no_space_test.go +++ b/tests/e2e/defrag_no_space_test.go @@ -60,7 +60,9 @@ func TestDefragNoSpace(t *testing.T) { require.ErrorContains(t, member.Etcdctl().Defragment(t.Context(), config.DefragOption{Timeout: time.Minute}), tc.err) // Make sure etcd continues to run even after the failed defrag attempt - require.NoError(t, member.Etcdctl().Put(t.Context(), "foo", "bar", config.PutOptions{})) + + _, err = member.Etcdctl().Put(t.Context(), "foo", "bar", config.PutOptions{}) + require.NoError(t, err) value, err := member.Etcdctl().Get(t.Context(), "foo", config.GetOptions{}) require.NoError(t, err) require.Len(t, value.Kvs, 1) diff --git a/tests/e2e/etcd_config_test.go b/tests/e2e/etcd_config_test.go index 2444ab2e3d73..8cccb24eb294 100644 --- a/tests/e2e/etcd_config_test.go +++ b/tests/e2e/etcd_config_test.go @@ -621,7 +621,7 @@ func TestEtcdHealthyWithTinySnapshotCatchupEntries(t *testing.T) { g.Go(func() error { cc := epc.Etcdctl() for j := 0; j < 100; j++ { - if err := cc.Put(ctx, "foo", fmt.Sprintf("bar%d", clientID), config.PutOptions{}); err != nil { + if _, err := cc.Put(ctx, "foo", fmt.Sprintf("bar%d", clientID), config.PutOptions{}); err != nil { return err } } diff --git a/tests/e2e/etcd_grpcproxy_test.go b/tests/e2e/etcd_grpcproxy_test.go index 856b110191c4..7b27991b7b31 100644 --- a/tests/e2e/etcd_grpcproxy_test.go +++ b/tests/e2e/etcd_grpcproxy_test.go @@ -61,7 +61,7 @@ func TestGrpcProxyAutoSync(t *testing.T) { proxyCtl, err := e2e.NewEtcdctl(e2e.ClientConfig{}, []string{proxyClientURL}) require.NoError(t, err) - err = proxyCtl.Put(ctx, "k1", "v1", config.PutOptions{}) + _, err = proxyCtl.Put(ctx, "k1", "v1", config.PutOptions{}) require.NoError(t, err) // Add and start second member diff --git a/tests/e2e/etcd_mix_versions_test.go b/tests/e2e/etcd_mix_versions_test.go index 83c25ecd6c94..b07d9cff3d10 100644 --- a/tests/e2e/etcd_mix_versions_test.go +++ b/tests/e2e/etcd_mix_versions_test.go @@ -169,7 +169,7 @@ func writeKVs(t *testing.T, etcdctl *e2e.EtcdctlV3, startIdx, endIdx int) { for i := startIdx; i < endIdx; i++ { key := fmt.Sprintf("key-%d", i) value := fmt.Sprintf("value-%d", i) - err := etcdctl.Put(t.Context(), key, value, config.PutOptions{}) + _, err := etcdctl.Put(t.Context(), key, value, config.PutOptions{}) require.NoErrorf(t, err, "failed to put %q", key) } } diff --git a/tests/e2e/etcd_release_upgrade_test.go b/tests/e2e/etcd_release_upgrade_test.go index 3a057b68d6b9..a153b43e4973 100644 --- a/tests/e2e/etcd_release_upgrade_test.go +++ b/tests/e2e/etcd_release_upgrade_test.go @@ -208,7 +208,7 @@ func TestClusterUpgradeAfterPromotingMembers(t *testing.T) { }() for i := 0; i < tc.snapshot; i++ { - err = epc.Etcdctl().Put(ctx, "foo", "bar", config.PutOptions{}) + _, err = epc.Etcdctl().Put(ctx, "foo", "bar", config.PutOptions{}) require.NoError(t, err) } @@ -220,7 +220,7 @@ func TestClusterUpgradeAfterPromotingMembers(t *testing.T) { t.Logf("Checking all members are ready to serve client requests") for i := 0; i < clusterSize; i++ { - err = epc.Procs[i].Etcdctl().Put(t.Context(), "foo", "bar", config.PutOptions{}) + _, err = epc.Procs[i].Etcdctl().Put(t.Context(), "foo", "bar", config.PutOptions{}) require.NoError(t, err) } }) diff --git a/tests/e2e/force_new_cluster_test.go b/tests/e2e/force_new_cluster_test.go index f2b35fd75c05..fd3b72e75a3a 100644 --- a/tests/e2e/force_new_cluster_test.go +++ b/tests/e2e/force_new_cluster_test.go @@ -59,7 +59,7 @@ func TestForceNewCluster(t *testing.T) { require.Len(t, promotedMembers, 4) for i := 0; i < tc.snapcount; i++ { - err := epc.Etcdctl().Put(t.Context(), "foo", "bar", config.PutOptions{}) + _, err := epc.Etcdctl().Put(t.Context(), "foo", "bar", config.PutOptions{}) require.NoError(t, err) } @@ -153,7 +153,7 @@ func TestForceNewCluster_AddLearner_MemberCount(t *testing.T) { }) for i := 0; i < tc.snapcount; i++ { - werr := epc.Etcdctl().Put(t.Context(), "foo", "bar", config.PutOptions{}) + _, werr := epc.Etcdctl().Put(t.Context(), "foo", "bar", config.PutOptions{}) require.NoError(t, werr) } require.NoError(t, epc.Close()) diff --git a/tests/e2e/http_health_check_test.go b/tests/e2e/http_health_check_test.go index 883a115af0c6..7d770e31f084 100644 --- a/tests/e2e/http_health_check_test.go +++ b/tests/e2e/http_health_check_test.go @@ -364,7 +364,7 @@ func triggerNoSpaceAlarm(ctx context.Context, t *testing.T, clus *e2e.EtcdProces buf := strings.Repeat("b", os.Getpagesize()) etcdctl := clus.Etcdctl() for { - if err := etcdctl.Put(ctx, "foo", buf, config.PutOptions{}); err != nil { + if _, err := etcdctl.Put(ctx, "foo", buf, config.PutOptions{}); err != nil { require.ErrorContains(t, err, "etcdserver: mvcc: database space exceeded") break } @@ -375,7 +375,8 @@ func triggerSlowApply(ctx context.Context, t *testing.T, clus *e2e.EtcdProcessCl // the following proposal will be blocked at applying stage // because when apply index < committed index, linearizable read would time out. require.NoError(t, clus.Procs[0].Failpoints().SetupHTTP(ctx, "beforeApplyOneEntryNormal", fmt.Sprintf(`sleep("%s")`, duration))) - require.NoError(t, clus.Procs[1].Etcdctl().Put(ctx, "foo", "bar", config.PutOptions{})) + _, err := clus.Procs[1].Etcdctl().Put(ctx, "foo", "bar", config.PutOptions{}) + require.NoError(t, err) } func blackhole(_ context.Context, t *testing.T, clus *e2e.EtcdProcessCluster, _ time.Duration) { @@ -406,7 +407,7 @@ func triggerSlowBufferWriteBackWithAuth(ctx context.Context, t *testing.T, clus func triggerCorrupt(ctx context.Context, t *testing.T, clus *e2e.EtcdProcessCluster, _ time.Duration) { etcdctl := clus.Procs[0].Etcdctl() for i := 0; i < 10; i++ { - err := etcdctl.Put(ctx, "foo", "bar", config.PutOptions{}) + _, err := etcdctl.Put(ctx, "foo", "bar", config.PutOptions{}) require.NoError(t, err) } err := clus.Procs[0].Kill() diff --git a/tests/e2e/leader_snapshot_no_proxy_test.go b/tests/e2e/leader_snapshot_no_proxy_test.go index b58d294cf1ab..1f4ab1fc4b41 100644 --- a/tests/e2e/leader_snapshot_no_proxy_test.go +++ b/tests/e2e/leader_snapshot_no_proxy_test.go @@ -93,6 +93,6 @@ func TestRecoverSnapshotBackend(t *testing.T) { require.NoError(t, err) _, err = blackholedMember.Logs().ExpectWithContext(ctx, expect.ExpectedResponse{Value: "Recovering from snapshot backend"}) require.NoError(t, err) - err = blackholedMember.Etcdctl().Put(ctx, "a", "1", config.PutOptions{}) + _, err = blackholedMember.Etcdctl().Put(ctx, "a", "1", config.PutOptions{}) assert.NoError(t, err) } diff --git a/tests/e2e/metrics_test.go b/tests/e2e/metrics_test.go index 9d730ed3aa3a..f9e593f06ee9 100644 --- a/tests/e2e/metrics_test.go +++ b/tests/e2e/metrics_test.go @@ -111,7 +111,8 @@ func learnerMetricApplyFromSnapshotTest(cx ctlCtx) { func triggerSnapshot(ctx context.Context, cx ctlCtx) { etcdctl := cx.epc.Procs[0].Etcdctl() for i := 0; i < int(cx.epc.Cfg.ServerConfig.SnapshotCount); i++ { - require.NoError(cx.t, etcdctl.Put(ctx, "k", "v", config.PutOptions{})) + _, err := etcdctl.Put(ctx, "k", "v", config.PutOptions{}) + require.NoError(cx.t, err) } } @@ -310,7 +311,7 @@ func TestNoMetricsMissing(t *testing.T) { c := epc.Procs[0].Etcdctl() for i := 0; i < 3; i++ { - err = c.Put(ctx, fmt.Sprintf("key_%d", i), fmt.Sprintf("value_%d", i), config.PutOptions{}) + _, err = c.Put(ctx, fmt.Sprintf("key_%d", i), fmt.Sprintf("value_%d", i), config.PutOptions{}) require.NoError(t, err) } _, err = c.Get(ctx, "k", config.GetOptions{}) diff --git a/tests/e2e/promote_experimental_flag_test.go b/tests/e2e/promote_experimental_flag_test.go index 76992f811f29..0ebc0d4491bc 100644 --- a/tests/e2e/promote_experimental_flag_test.go +++ b/tests/e2e/promote_experimental_flag_test.go @@ -41,7 +41,7 @@ func TestWarningApplyDuration(t *testing.T) { }) cc := epc.Etcdctl() - err = cc.Put(t.Context(), "foo", "bar", config.PutOptions{}) + _, err = cc.Put(t.Context(), "foo", "bar", config.PutOptions{}) require.NoErrorf(t, err, "error on put") // verify warning diff --git a/tests/e2e/reproduce_20271_test.go b/tests/e2e/reproduce_20271_test.go index ff1c823812f5..4dbbb3939951 100644 --- a/tests/e2e/reproduce_20271_test.go +++ b/tests/e2e/reproduce_20271_test.go @@ -54,10 +54,11 @@ func TestIssue20271(t *testing.T) { t.Log("Step 1: Write some data to the cluster") for i := 0; i < snapCount*5; i++ { - require.NoError(t, epc.Procs[0].Etcdctl().Put(ctx, + _, err = epc.Procs[0].Etcdctl().Put(ctx, fmt.Sprintf("foo%d", i), strings.Repeat("Oops", 1024), - config.PutOptions{})) + config.PutOptions{}) + require.NoError(t, err) } t.Log(`Step 2: Config the third member to sleep 15s after OpenSnapshotBackend and use SIGSTOP to pause it.`) @@ -86,7 +87,7 @@ to override boltdb file. So, for the following changes, the third member will co t.Log("Step 6: Write some data to the cluster") for i := 0; i < snapCount/2; i++ { - err = epc.Procs[0].Etcdctl().Put(ctx, fmt.Sprintf("foo%d", i), strings.Repeat("Oops", 1), config.PutOptions{}) + _, err = epc.Procs[0].Etcdctl().Put(ctx, fmt.Sprintf("foo%d", i), strings.Repeat("Oops", 1), config.PutOptions{}) require.NoError(t, err) } diff --git a/tests/e2e/v2store_deprecation_test.go b/tests/e2e/v2store_deprecation_test.go index 77a59a365889..27c397bb36b8 100644 --- a/tests/e2e/v2store_deprecation_test.go +++ b/tests/e2e/v2store_deprecation_test.go @@ -138,7 +138,7 @@ func addAndRemoveKeysAndMembers(ctx context.Context, tb testing.TB, cc *e2e.Etcd // Execute some non-trivial key&member operation var i uint64 for i = 0; i < snapshotCount*3; i++ { - err := cc.Put(ctx, fmt.Sprintf("%d", i), "1", config.PutOptions{}) + _, err := cc.Put(ctx, fmt.Sprintf("%d", i), "1", config.PutOptions{}) require.NoError(tb, err) } member1, err := cc.MemberAddAsLearner(ctx, "member1", []string{"http://127.0.0.1:2000"}) @@ -153,7 +153,7 @@ func addAndRemoveKeysAndMembers(ctx context.Context, tb testing.TB, cc *e2e.Etcd require.NoError(tb, err) for i = 0; i < snapshotCount; i++ { - err = cc.Put(ctx, fmt.Sprintf("%d", i), "2", config.PutOptions{}) + _, err = cc.Put(ctx, fmt.Sprintf("%d", i), "2", config.PutOptions{}) require.NoError(tb, err) } member2, err := cc.MemberAddAsLearner(ctx, "member2", []string{"http://127.0.0.1:2001"}) @@ -161,7 +161,7 @@ func addAndRemoveKeysAndMembers(ctx context.Context, tb testing.TB, cc *e2e.Etcd members = append(members, member2.Member.ID) for i = 0; i < snapshotCount/2; i++ { - err = cc.Put(ctx, fmt.Sprintf("%d", i), "3", config.PutOptions{}) + _, err = cc.Put(ctx, fmt.Sprintf("%d", i), "3", config.PutOptions{}) assert.NoError(tb, err) } return members diff --git a/tests/framework/e2e/etcdctl.go b/tests/framework/e2e/etcdctl.go index 66b8170e1f83..fc4cf0c04852 100644 --- a/tests/framework/e2e/etcdctl.go +++ b/tests/framework/e2e/etcdctl.go @@ -166,8 +166,9 @@ func (ctl *EtcdctlV3) Get(ctx context.Context, key string, o config.GetOptions) return &resp, err } -func (ctl *EtcdctlV3) Put(ctx context.Context, key, value string, opts config.PutOptions) error { - args := ctl.cmdArgs() +func (ctl *EtcdctlV3) Put(ctx context.Context, key, value string, opts config.PutOptions) (*clientv3.PutResponse, error) { + resp := clientv3.PutResponse{} + args := []string{} args = append(args, "put", key, value) if opts.LeaseID != 0 { args = append(args, "--lease", strconv.FormatInt(int64(opts.LeaseID), 16)) @@ -175,8 +176,8 @@ func (ctl *EtcdctlV3) Put(ctx context.Context, key, value string, opts config.Pu if opts.Timeout != 0 { args = append(args, fmt.Sprintf("--command-timeout=%s", opts.Timeout)) } - _, err := SpawnWithExpectLines(ctx, args, nil, expect.ExpectedResponse{Value: "OK"}) - return err + err := ctl.spawnJSONCmd(ctx, &resp, args...) + return &resp, err } func (ctl *EtcdctlV3) Delete(ctx context.Context, key string, o config.DeleteOptions) (*clientv3.DeleteResponse, error) { diff --git a/tests/framework/integration/integration.go b/tests/framework/integration/integration.go index 9711f38e7bfb..bff0887d0a10 100644 --- a/tests/framework/integration/integration.go +++ b/tests/framework/integration/integration.go @@ -218,7 +218,7 @@ func (c integrationClient) Get(ctx context.Context, key string, o config.GetOpti return c.Client.Get(ctx, key, clientOpts...) } -func (c integrationClient) Put(ctx context.Context, key, value string, opts config.PutOptions) error { +func (c integrationClient) Put(ctx context.Context, key, value string, opts config.PutOptions) (*clientv3.PutResponse, error) { if opts.Timeout != 0 { var cancel context.CancelFunc ctx, cancel = context.WithTimeout(ctx, opts.Timeout) @@ -228,8 +228,7 @@ func (c integrationClient) Put(ctx context.Context, key, value string, opts conf if opts.LeaseID != 0 { clientOpts = append(clientOpts, clientv3.WithLease(opts.LeaseID)) } - _, err := c.Client.Put(ctx, key, value, clientOpts...) - return err + return c.Client.Put(ctx, key, value, clientOpts...) } func (c integrationClient) Delete(ctx context.Context, key string, o config.DeleteOptions) (*clientv3.DeleteResponse, error) { diff --git a/tests/framework/interfaces/interface.go b/tests/framework/interfaces/interface.go index 0d334011bfbf..f69e1bc7f308 100644 --- a/tests/framework/interfaces/interface.go +++ b/tests/framework/interfaces/interface.go @@ -43,7 +43,7 @@ type Member interface { } type Client interface { - Put(context context.Context, key, value string, opts config.PutOptions) error + Put(context context.Context, key, value string, opts config.PutOptions) (*clientv3.PutResponse, error) Get(context context.Context, key string, opts config.GetOptions) (*clientv3.GetResponse, error) Delete(context context.Context, key string, opts config.DeleteOptions) (*clientv3.DeleteResponse, error) Compact(context context.Context, rev int64, opts config.CompactOption) (*clientv3.CompactResponse, error) From 3d80a3cddbe5a9e8b427b663b0337511f1ebbdd8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 17:03:43 +0000 Subject: [PATCH 0683/1068] build(deps): bump github/codeql-action from 4.31.7 to 4.31.8 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.7 to 4.31.8. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/cf1bb45a277cb3c205638b2cd5c984db1c46a412...1b168cd39490f61582a9beae412bb7057a6b2c4e) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.31.8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 3d3e52754017..1e07d606dea3 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 + uses: github/codeql-action/init@1b168cd39490f61582a9beae412bb7057a6b2c4e # v4.31.8 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 + uses: github/codeql-action/autobuild@1b168cd39490f61582a9beae412bb7057a6b2c4e # v4.31.8 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 + uses: github/codeql-action/analyze@1b168cd39490f61582a9beae412bb7057a6b2c4e # v4.31.8 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 526b77b38e44..6532f211d6ee 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 + uses: github/codeql-action/upload-sarif@1b168cd39490f61582a9beae412bb7057a6b2c4e # v4.31.8 with: sarif_file: results.sarif From b232dfe2a349cb007b23daea61cc5b5b93c34c67 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Dec 2025 11:24:34 +0000 Subject: [PATCH 0684/1068] build(deps): bump actions/checkout from 6.0.0 to 6.0.1 Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.0 to 6.0.1. - [Release notes](https://github.com/actions/checkout/releases) - [Commits](https://github.com/actions/checkout/compare/v6...v6.0.1) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 2 +- .github/workflows/antithesis-verify.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/measure-testgrid-flakiness.yaml | 2 +- .github/workflows/scorecards.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index e8401e6a0599..c077611852bf 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -42,7 +42,7 @@ jobs: environment: Antithesis steps: - name: Checkout the code - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Login to Antithesis Docker Registry uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 diff --git a/.github/workflows/antithesis-verify.yml b/.github/workflows/antithesis-verify.yml index bd0b450a030a..07d6b0a7a67c 100644 --- a/.github/workflows/antithesis-verify.yml +++ b/.github/workflows/antithesis-verify.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v6.0.0 + uses: actions/checkout@v6.0.1 - name: Build etcd-server and etcd-client images run: | diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 2b84086e9bf9..3d3e52754017 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -37,7 +37,7 @@ jobs: language: ['go'] steps: - name: Checkout repository - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 diff --git a/.github/workflows/measure-testgrid-flakiness.yaml b/.github/workflows/measure-testgrid-flakiness.yaml index 5f31f8742fd3..bde493c68ab7 100644 --- a/.github/workflows/measure-testgrid-flakiness.yaml +++ b/.github/workflows/measure-testgrid-flakiness.yaml @@ -12,7 +12,7 @@ jobs: name: Measure TestGrid Flakiness runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - id: goversion run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 1ba51f7629a3..526b77b38e44 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -23,7 +23,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false From 80f3012bb83ad5bf7ae1cc976818578743be8ce0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 17:03:24 +0000 Subject: [PATCH 0685/1068] build(deps): bump antithesishq/antithesis-trigger-action Bumps [antithesishq/antithesis-trigger-action](https://github.com/antithesishq/antithesis-trigger-action) from 0.9 to 0.10. - [Release notes](https://github.com/antithesishq/antithesis-trigger-action/releases) - [Commits](https://github.com/antithesishq/antithesis-trigger-action/compare/6c0a27302c0a3cd97d87d40bd6704e673abed4bb...f6221e2ba819fe0ac3e36bd67a281fa439a03fba) --- updated-dependencies: - dependency-name: antithesishq/antithesis-trigger-action dependency-version: '0.10' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 2 +- .github/workflows/antithesis.debugger.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index c077611852bf..a34acd4ed197 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -76,7 +76,7 @@ jobs: docker push $IMAGE - name: Run Antithesis Tests - uses: antithesishq/antithesis-trigger-action@6c0a27302c0a3cd97d87d40bd6704e673abed4bb # v0.9 + uses: antithesishq/antithesis-trigger-action@f6221e2ba819fe0ac3e36bd67a281fa439a03fba # v0.10 with: notebook_name: etcd tenant: linuxfoundation diff --git a/.github/workflows/antithesis.debugger.yml b/.github/workflows/antithesis.debugger.yml index 07ec7299831a..3dead9e6891e 100644 --- a/.github/workflows/antithesis.debugger.yml +++ b/.github/workflows/antithesis.debugger.yml @@ -30,7 +30,7 @@ jobs: environment: Antithesis steps: - name: Trigger Antithesis Debugger - uses: antithesishq/antithesis-trigger-action@6c0a27302c0a3cd97d87d40bd6704e673abed4bb # v0.9 + uses: antithesishq/antithesis-trigger-action@f6221e2ba819fe0ac3e36bd67a281fa439a03fba # v0.10 with: notebook_name: debugging tenant: linuxfoundation From 6571016183615a69f036ef77455226bc9cd73051 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 17:03:19 +0000 Subject: [PATCH 0686/1068] build(deps): bump actions/upload-artifact from 5.0.0 to 6.0.0 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5.0.0 to 6.0.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/330a01c490aca151604b8cf639adc76d48f6c5d4...b7c566a772e6b6bfb58ed0dc250532a479d7789f) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 526b77b38e44..30f8961408ba 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -42,7 +42,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: name: SARIF file path: results.sarif From 2eb6921b31d777fc4ffd3a6772e76992fe7d6a81 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 17 Dec 2025 16:30:51 -0800 Subject: [PATCH 0687/1068] Fix run_go_tests_expanding_packages argument parsing Escape the regular expression, and ensure to capture go.etcd.io packages, too. As defined in `run_go_tests`. Signed-off-by: Ivan Valdes --- scripts/test_lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index c1b3dad8b9f0..7af7c7037899 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -354,7 +354,7 @@ function run_go_tests_expanding_packages { local packages=() local args=() for arg in "$@"; do - if [[ "${arg}" =~ ./ ]]; then + if [[ "${arg}" =~ ^\./ || "${arg}" =~ ^go\.etcd\.io/etcd ]]; then packages+=("${arg}") else args+=("${arg}") From 868fe193fcd7cba458096ae2c9e831f413d474b4 Mon Sep 17 00:00:00 2001 From: Jiho Lee <52263235+jihogh@users.noreply.github.com> Date: Sun, 14 Dec 2025 03:18:39 +0000 Subject: [PATCH 0688/1068] model/robustness: add MemberID to EtcdResponse struct Addresses issue #20932, Add MemberId to from response header to the model.EtcdResponse Signed-off-by: Jiho Lee <52263235+jihogh@users.noreply.github.com> --- tests/robustness/model/deterministic_test.go | 7 ++ tests/robustness/model/history.go | 64 +++++++++++++++---- .../model/non_deterministic_test.go | 5 ++ tests/robustness/model/types.go | 5 ++ 4 files changed, 68 insertions(+), 13 deletions(-) diff --git a/tests/robustness/model/deterministic_test.go b/tests/robustness/model/deterministic_test.go index ea7980c7d56b..cddd6f9c207d 100644 --- a/tests/robustness/model/deterministic_test.go +++ b/tests/robustness/model/deterministic_test.go @@ -264,6 +264,13 @@ var commonTestScenarios = []modelTestCase{ {req: getRequest("key"), resp: getResponse("key", "2", 2, 2)}, }, }, + { + name: "Lease grant returns current revision", + operations: []testOperation{ + {req: putRequest("key", "1"), resp: putResponse(2)}, + {req: leaseGrantRequest(1), resp: leaseGrantResponse(2)}, + }, + }, { name: "Put with valid lease id should succeed. Put with expired lease id should fail", operations: []testOperation{ diff --git a/tests/robustness/model/history.go b/tests/robustness/model/history.go index 9e64a922e5ee..51db0c5daa2b 100644 --- a/tests/robustness/model/history.go +++ b/tests/robustness/model/history.go @@ -65,10 +65,12 @@ func (h *AppendableHistory) AppendRange(startKey, endKey string, revision, limit return } var respRevision int64 + var respMemberID uint64 if resp != nil && resp.Header != nil { respRevision = resp.Header.Revision + respMemberID = resp.Header.MemberId } - h.appendSuccessful(request, start, end, rangeResponse(resp.Kvs, resp.Count, respRevision)) + h.appendSuccessful(request, start, end, rangeResponseWithMemberID(resp.Kvs, resp.Count, respRevision, respMemberID)) } func (h *AppendableHistory) AppendPut(key, value string, start, end time.Duration, resp *clientv3.PutResponse, err error) { @@ -78,10 +80,12 @@ func (h *AppendableHistory) AppendPut(key, value string, start, end time.Duratio return } var revision int64 + var MemberID uint64 if resp != nil && resp.Header != nil { revision = resp.Header.Revision + MemberID = resp.Header.MemberId } - h.appendSuccessful(request, start, end, putResponse(revision)) + h.appendSuccessful(request, start, end, putResponseWithMemberID(revision, MemberID)) } func (h *AppendableHistory) AppendPutWithLease(key, value string, leaseID int64, start, end time.Duration, resp *clientv3.PutResponse, err error) { @@ -91,10 +95,12 @@ func (h *AppendableHistory) AppendPutWithLease(key, value string, leaseID int64, return } var revision int64 + var MemberID uint64 if resp != nil && resp.Header != nil { revision = resp.Header.Revision + MemberID = resp.Header.MemberId } - h.appendSuccessful(request, start, end, putResponse(revision)) + h.appendSuccessful(request, start, end, putResponseWithMemberID(revision, MemberID)) } func (h *AppendableHistory) AppendLeaseGrant(start, end time.Duration, resp *clientv3.LeaseGrantResponse, err error) { @@ -108,10 +114,12 @@ func (h *AppendableHistory) AppendLeaseGrant(start, end time.Duration, resp *cli return } var revision int64 + var MemberID uint64 if resp != nil && resp.ResponseHeader != nil { revision = resp.ResponseHeader.Revision + MemberID = resp.ResponseHeader.MemberId } - h.appendSuccessful(request, start, end, leaseGrantResponse(revision)) + h.appendSuccessful(request, start, end, leaseGrantResponseWithMemberID(revision, MemberID)) } func (h *AppendableHistory) AppendLeaseRevoke(id int64, start, end time.Duration, resp *clientv3.LeaseRevokeResponse, err error) { @@ -121,10 +129,12 @@ func (h *AppendableHistory) AppendLeaseRevoke(id int64, start, end time.Duration return } var revision int64 + var MemberID uint64 if resp != nil && resp.Header != nil { revision = resp.Header.Revision + MemberID = resp.Header.MemberId } - h.appendSuccessful(request, start, end, leaseRevokeResponse(revision)) + h.appendSuccessful(request, start, end, leaseRevokeResponseWithMemberID(revision, MemberID)) } func (h *AppendableHistory) AppendDelete(key string, start, end time.Duration, resp *clientv3.DeleteResponse, err error) { @@ -134,12 +144,14 @@ func (h *AppendableHistory) AppendDelete(key string, start, end time.Duration, r return } var revision int64 + var MemberID uint64 var deleted int64 if resp != nil && resp.Header != nil { revision = resp.Header.Revision + MemberID = resp.Header.MemberId deleted = resp.Deleted } - h.appendSuccessful(request, start, end, deleteResponse(deleted, revision)) + h.appendSuccessful(request, start, end, deleteResponseWithMemberID(deleted, revision, MemberID)) } func (h *AppendableHistory) AppendTxn(cmp []clientv3.Cmp, clientOnSuccessOps, clientOnFailure []clientv3.Op, start, end time.Duration, resp *clientv3.TxnResponse, err error) { @@ -161,14 +173,16 @@ func (h *AppendableHistory) AppendTxn(cmp []clientv3.Cmp, clientOnSuccessOps, cl return } var revision int64 + var MemberID uint64 if resp != nil && resp.Header != nil { revision = resp.Header.Revision + MemberID = resp.Header.MemberId } results := []EtcdOperationResult{} for _, resp := range resp.Responses { results = append(results, toEtcdOperationResult(resp)) } - h.appendSuccessful(request, start, end, txnResponse(results, resp.Succeeded, revision)) + h.appendSuccessful(request, start, end, txnResponseWithMemberID(results, resp.Succeeded, revision, MemberID)) } func (h *AppendableHistory) appendClientError(request EtcdRequest, start, end time.Duration, err error) { @@ -357,6 +371,10 @@ func getResponseWithVer(key, value string, modRevision, ver, revision int64) May } func rangeResponse(kvs []*mvccpb.KeyValue, count int64, revision int64) MaybeEtcdResponse { + return rangeResponseWithMemberID(kvs, count, revision, 0) +} + +func rangeResponseWithMemberID(kvs []*mvccpb.KeyValue, count int64, revision int64, MemberID uint64) MaybeEtcdResponse { result := RangeResponse{KVs: make([]KeyValue, len(kvs)), Count: count} for i, kv := range kvs { @@ -369,7 +387,7 @@ func rangeResponse(kvs []*mvccpb.KeyValue, count int64, revision int64) MaybeEtc }, } } - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Range: &result, Revision: revision}} + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Range: &result, Revision: revision, MemberID: MemberID}} } func failedResponse(err error) MaybeEtcdResponse { @@ -385,7 +403,11 @@ func putRequest(key, value string) EtcdRequest { } func putResponse(revision int64) MaybeEtcdResponse { - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Results: []EtcdOperationResult{{}}}, Revision: revision}} + return putResponseWithMemberID(revision, 0) +} + +func putResponseWithMemberID(revision int64, MemberID uint64) MaybeEtcdResponse { + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Results: []EtcdOperationResult{{}}}, Revision: revision, MemberID: MemberID}} } func deleteRequest(key string) EtcdRequest { @@ -393,7 +415,11 @@ func deleteRequest(key string) EtcdRequest { } func deleteResponse(deleted int64, revision int64) MaybeEtcdResponse { - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Results: []EtcdOperationResult{{Deleted: deleted}}}, Revision: revision}} + return deleteResponseWithMemberID(deleted, revision, 0) +} + +func deleteResponseWithMemberID(deleted int64, revision int64, MemberID uint64) MaybeEtcdResponse { + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Results: []EtcdOperationResult{{Deleted: deleted}}}, Revision: revision, MemberID: MemberID}} } func compareRevisionAndPutRequest(key string, expectedRevision int64, value string) EtcdRequest { @@ -444,7 +470,11 @@ func txnEmptyResponse(succeeded bool, revision int64) MaybeEtcdResponse { } func txnResponse(result []EtcdOperationResult, succeeded bool, revision int64) MaybeEtcdResponse { - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Results: result, Failure: !succeeded}, Revision: revision}} + return txnResponseWithMemberID(result, succeeded, revision, 0) +} + +func txnResponseWithMemberID(result []EtcdOperationResult, succeeded bool, revision int64, MemberID uint64) MaybeEtcdResponse { + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Results: result, Failure: !succeeded}, Revision: revision, MemberID: MemberID}} } func putWithLeaseRequest(key, value string, leaseID int64) EtcdRequest { @@ -456,7 +486,11 @@ func leaseGrantRequest(leaseID int64) EtcdRequest { } func leaseGrantResponse(revision int64) MaybeEtcdResponse { - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{LeaseGrant: &LeaseGrantReponse{}, Revision: revision}} + return leaseGrantResponseWithMemberID(revision, 0) +} + +func leaseGrantResponseWithMemberID(revision int64, MemberID uint64) MaybeEtcdResponse { + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{LeaseGrant: &LeaseGrantReponse{}, Revision: revision, MemberID: MemberID}} } func leaseRevokeRequest(leaseID int64) EtcdRequest { @@ -464,7 +498,11 @@ func leaseRevokeRequest(leaseID int64) EtcdRequest { } func leaseRevokeResponse(revision int64) MaybeEtcdResponse { - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{LeaseRevoke: &LeaseRevokeResponse{}, Revision: revision}} + return leaseRevokeResponseWithMemberID(revision, 0) +} + +func leaseRevokeResponseWithMemberID(revision int64, MemberID uint64) MaybeEtcdResponse { + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{LeaseRevoke: &LeaseRevokeResponse{}, Revision: revision, MemberID: MemberID}} } func defragmentRequest() EtcdRequest { diff --git a/tests/robustness/model/non_deterministic_test.go b/tests/robustness/model/non_deterministic_test.go index b6622e6fa812..c53c013265bc 100644 --- a/tests/robustness/model/non_deterministic_test.go +++ b/tests/robustness/model/non_deterministic_test.go @@ -543,6 +543,11 @@ func TestModelResponseMatch(t *testing.T) { resp2: MaybeEtcdResponse{Persisted: true, PersistedRevision: 3}, expectMatch: false, }, + { + resp1: putResponseWithMemberID(2, 1), + resp2: putResponseWithMemberID(2, 2), + expectMatch: true, + }, { resp1: failedResponse(errors.New("failed request")), resp2: MaybeEtcdResponse{Persisted: true}, diff --git a/tests/robustness/model/types.go b/tests/robustness/model/types.go index 22cbd4602535..0a3e0cd9146b 100644 --- a/tests/robustness/model/types.go +++ b/tests/robustness/model/types.go @@ -147,6 +147,7 @@ type EtcdResponse struct { Compact *CompactResponse ClientError string Revision int64 + MemberID uint64 } func Match(r1, r2 MaybeEtcdResponse) bool { @@ -158,6 +159,10 @@ func Match(r1, r2 MaybeEtcdResponse) bool { if r2.Persisted { r2Revision = r2.PersistedRevision } + + r1.EtcdResponse.MemberID = 0 + r2.EtcdResponse.MemberID = 0 + return (r1.Persisted && r1.PersistedRevision == 0) || (r2.Persisted && r2.PersistedRevision == 0) || ((r1.Persisted || r2.Persisted) && (r1.Error != "" || r2.Error != "" || r1Revision == r2Revision)) || reflect.DeepEqual(r1, r2) } From 94f9b372066c543b3a1e27392a17cd59a9a4924e Mon Sep 17 00:00:00 2001 From: "Yerasala Venkata, Seshachalam" Date: Mon, 15 Sep 2025 11:11:25 +0530 Subject: [PATCH 0689/1068] etcdctl: add diagnosis subcommand with online checks and JSON output Introduces `etcdctl diagnose` with plugin-based checks: endpoint status, membership, metrics, and read path. Produces machine-readable JSON output. Places engine and plugins under `etcdctl/ctlv3/command/diagnosis/...`. Wires the subcommand into `ctlv3` CLI. Signed-off-by: Yerasala Venkata, Seshachalam --- .../command/diagnosis/engine/diagnosis.go | 40 ++++ .../command/diagnosis/engine/intf/plugin.go | 31 +++ .../diagnosis/plugins/common/checker.go | 32 +++ .../diagnosis/plugins/common/client.go | 40 ++++ .../diagnosis/plugins/epstatus/plugin.go | 188 ++++++++++++++++++ .../diagnosis/plugins/membership/plugin.go | 119 +++++++++++ .../diagnosis/plugins/metrics/plugin.go | 179 +++++++++++++++++ .../command/diagnosis/plugins/read/plugin.go | 146 ++++++++++++++ etcdctl/ctlv3/command/diagnosis_command.go | 105 ++++++++++ etcdctl/ctlv3/ctl.go | 1 + 10 files changed, 881 insertions(+) create mode 100644 etcdctl/ctlv3/command/diagnosis/engine/diagnosis.go create mode 100644 etcdctl/ctlv3/command/diagnosis/engine/intf/plugin.go create mode 100644 etcdctl/ctlv3/command/diagnosis/plugins/common/checker.go create mode 100644 etcdctl/ctlv3/command/diagnosis/plugins/common/client.go create mode 100644 etcdctl/ctlv3/command/diagnosis/plugins/epstatus/plugin.go create mode 100644 etcdctl/ctlv3/command/diagnosis/plugins/membership/plugin.go create mode 100644 etcdctl/ctlv3/command/diagnosis/plugins/metrics/plugin.go create mode 100644 etcdctl/ctlv3/command/diagnosis/plugins/read/plugin.go create mode 100644 etcdctl/ctlv3/command/diagnosis_command.go diff --git a/etcdctl/ctlv3/command/diagnosis/engine/diagnosis.go b/etcdctl/ctlv3/command/diagnosis/engine/diagnosis.go new file mode 100644 index 000000000000..48c4c78ecfc6 --- /dev/null +++ b/etcdctl/ctlv3/command/diagnosis/engine/diagnosis.go @@ -0,0 +1,40 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package engine + +import ( + "encoding/json" + + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" +) + +type report struct { + Input any `json:"input,omitempty"` + Results []any `json:"results,omitempty"` +} + +// Diagnose runs all provided plugins and returns a JSON report. +// It logs plugin progress and individual results to stderr. +func Diagnose(input any, plugins []intf.Plugin) ([]byte, error) { + rp := report{ + Input: input, + } + for _, plugin := range plugins { + result := plugin.Diagnose() + rp.Results = append(rp.Results, result) + } + + return json.MarshalIndent(rp, "", "\t") +} diff --git a/etcdctl/ctlv3/command/diagnosis/engine/intf/plugin.go b/etcdctl/ctlv3/command/diagnosis/engine/intf/plugin.go new file mode 100644 index 000000000000..65b3b6d95a39 --- /dev/null +++ b/etcdctl/ctlv3/command/diagnosis/engine/intf/plugin.go @@ -0,0 +1,31 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package intf + +type Plugin interface { + // Name returns the name of the plugin + Name() string + // Diagnose performs diagnosis and returns the result. If it fails + // to do the diagnosis for any reason, it gets the detailed reason + // included in the diagnosis result. + Diagnose() any +} + +// FailedResult is the result returned by a plugin if it fails to +// perform the diagnosis for any reason. +type FailedResult struct { + Name string `json:"name"` + Reason string `json:"reason"` +} diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/common/checker.go b/etcdctl/ctlv3/command/diagnosis/plugins/common/checker.go new file mode 100644 index 000000000000..f59f1f5e9cad --- /dev/null +++ b/etcdctl/ctlv3/command/diagnosis/plugins/common/checker.go @@ -0,0 +1,32 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package common + +import ( + "time" + + clientv3 "go.etcd.io/etcd/client/v3" +) + +// Checker carries shared configuration for diagnosis plugins. +// It embeds generic options such as the etcd client configuration, +// resolved endpoints, and command timeout. +type Checker struct { + Cfg *clientv3.ConfigSpec + Endpoints []string + CommandTimeout time.Duration + DbQuotaBytes int + Name string +} diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/common/client.go b/etcdctl/ctlv3/command/diagnosis/plugins/common/client.go new file mode 100644 index 000000000000..76c4c4db05e8 --- /dev/null +++ b/etcdctl/ctlv3/command/diagnosis/plugins/common/client.go @@ -0,0 +1,40 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package common + +import ( + "go.uber.org/zap" + + "go.etcd.io/etcd/client/pkg/v3/logutil" + clientv3 "go.etcd.io/etcd/client/v3" +) + +// NewClient creates an etcd client from the given configuration spec. +func NewClient(cfg *clientv3.ConfigSpec) (*clientv3.Client, error) { + lg, _ := logutil.CreateDefaultZapLogger(zap.InfoLevel) + cliCfg, err := clientv3.NewClientConfig(cfg, lg) + if err != nil { + return nil, err + } + return clientv3.New(*cliCfg) +} + +// ConfigWithEndpoint returns a shallow copy of cfg with Endpoints set to the +// provided single endpoint. +func ConfigWithEndpoint(cfg *clientv3.ConfigSpec, ep string) *clientv3.ConfigSpec { + c := *cfg + c.Endpoints = []string{ep} + return &c +} diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/epstatus/plugin.go b/etcdctl/ctlv3/command/diagnosis/plugins/epstatus/plugin.go new file mode 100644 index 000000000000..a83cfd6e928c --- /dev/null +++ b/etcdctl/ctlv3/command/diagnosis/plugins/epstatus/plugin.go @@ -0,0 +1,188 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package epstatus + +import ( + "context" + "fmt" + "log" + "time" + + clientv3 "go.etcd.io/etcd/client/v3" + + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/common" +) + +type epStatusChecker struct { + common.Checker +} + +type epStatus struct { + Endpoint string `json:"endpoint,omitempty"` + EpStatus *clientv3.StatusResponse `json:"epStatus,omitempty"` +} + +type checkResult struct { + Name string `json:"name,omitempty"` + Summary []string `json:"summary,omitempty"` + EpStatusList []epStatus `json:"epStatusList,omitempty"` +} + +func NewPlugin(cfg *clientv3.ConfigSpec, eps []string, timeout time.Duration, dbQuota int) intf.Plugin { + return &epStatusChecker{ + Checker: common.Checker{ + Cfg: cfg, + Endpoints: eps, + CommandTimeout: timeout, + DbQuotaBytes: dbQuota, + Name: "epStatusChecker", + }, + } +} + +func (ck *epStatusChecker) Name() string { + return ck.Checker.Name +} + +func (ck *epStatusChecker) Diagnose() (result any) { + var err error + eps := ck.Endpoints + + defer func() { + if err != nil { + result = &intf.FailedResult{ + Name: ck.Name(), + Reason: err.Error(), + } + } + }() + + var ( + maxRetries = 3 + retries = 0 + shouldRetry = true + + chkResult = initCheckResult(ck.Name(), len(eps)) + ) + + for { + for i, ep := range eps { + chkResult.EpStatusList[i].Endpoint = ep + + cfg := common.ConfigWithEndpoint(ck.Cfg, ep) + c, err := common.NewClient(cfg) + if err != nil { + appendSummary(&chkResult, "Failed to create client for %q: %v", ep, err) + continue + } + ctx, cancel := context.WithTimeout(context.Background(), ck.CommandTimeout) + chkResult.EpStatusList[i].EpStatus, err = c.Status(ctx, ep) + cancel() + c.Close() + if err != nil { + appendSummary(&chkResult, "Failed to get endpoint status from %q: %v", ep, err) + continue + } + + if len(chkResult.EpStatusList[i].EpStatus.Errors) > 0 { + appendSummary(&chkResult, "Detected errors in endpoint %q: %v\n", ep, chkResult.EpStatusList[i].EpStatus.Errors) + shouldRetry = false + continue + } + + if i > 0 { + if !compareHardInfo(chkResult.EpStatusList[0].EpStatus, chkResult.EpStatusList[i].EpStatus) { + appendSummary(&chkResult, "Detected inconsistent hard endpoint info between %q and %q\n", eps[0], eps[i]) + shouldRetry = false + } + + if !shouldRetry { + continue + } + + if !compareSoftInfo(chkResult.EpStatusList[0].EpStatus, chkResult.EpStatusList[i].EpStatus) { + appendSummary(&chkResult, "Detected inconsistent soft endpoint info between %q and %q\n", eps[0], eps[i]) + } + } + } + + retries++ + + if len(chkResult.Summary) == 0 || !shouldRetry || retries >= maxRetries { + break + } + + chkResult = initCheckResult(ck.Name(), len(eps)) + log.Printf("Retrying checking endpoint status: %d/%d\n", retries, maxRetries) + time.Sleep(time.Second) + } + + checkDBSize(&chkResult, ck.DbQuotaBytes) + + if len(chkResult.Summary) == 0 { + chkResult.Summary = []string{"Successful"} + } + + result = chkResult + return result +} + +func initCheckResult(name string, epCount int) checkResult { + return checkResult{ + Name: name, + Summary: []string{}, + EpStatusList: make([]epStatus, epCount), + } +} + +func appendSummary(chkResult *checkResult, format string, v ...any) { + errMsg := fmt.Sprintf(format, v...) + log.Println(errMsg) + chkResult.Summary = append(chkResult.Summary, errMsg) +} + +func compareHardInfo(s1, s2 *clientv3.StatusResponse) bool { + if s1 == nil || s2 == nil { + return false + } + return s1.Header.ClusterId == s2.Header.ClusterId && + s1.Version == s2.Version && + s1.StorageVersion == s2.StorageVersion +} + +func compareSoftInfo(s1, s2 *clientv3.StatusResponse) bool { + if s1 == nil || s2 == nil { + return false + } + return s1.Header.Revision == s2.Header.Revision && + s1.RaftTerm == s2.RaftTerm && + s1.RaftIndex == s2.RaftIndex && + s1.RaftAppliedIndex == s2.RaftAppliedIndex && + s1.Leader == s2.Leader +} + +func checkDBSize(chkResult *checkResult, dbQuota int) { + for _, sts := range chkResult.EpStatusList { + if sts.EpStatus == nil { + continue + } + + freeSize := sts.EpStatus.DbSize - sts.EpStatus.DbSizeInUse + if freeSize > sts.EpStatus.DbSizeInUse && freeSize > 1_000_000_000 /* about 1GB */ || sts.EpStatus.DbSize >= int64(dbQuota*80/100) { + appendSummary(chkResult, "Detected large amount of db [free] space for endpoint %q, dbQuota: %d, dbSize: %d, dbSizeInUse: %d, dbSizeFree: %d", sts.Endpoint, dbQuota, sts.EpStatus.DbSize, sts.EpStatus.DbSizeInUse, freeSize) + } + } +} diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/membership/plugin.go b/etcdctl/ctlv3/command/diagnosis/plugins/membership/plugin.go new file mode 100644 index 000000000000..a9c605d89c1b --- /dev/null +++ b/etcdctl/ctlv3/command/diagnosis/plugins/membership/plugin.go @@ -0,0 +1,119 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package membership + +import ( + "context" + "log" + "reflect" + "time" + + clientv3 "go.etcd.io/etcd/client/v3" + + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/common" +) + +type membershipChecker struct { + common.Checker +} + +type checkResult struct { + Name string `json:"name,omitempty"` + Summary string `json:"summary,omitempty"` + MemberList *clientv3.MemberListResponse `json:"memberList,omitempty"` + AllMemberLists []*clientv3.MemberListResponse `json:"allMemberLists,omitempty"` +} + +func NewPlugin(cfg *clientv3.ConfigSpec, eps []string, timeout time.Duration) intf.Plugin { + return &membershipChecker{ + Checker: common.Checker{ + Cfg: cfg, + Endpoints: eps, + CommandTimeout: timeout, + Name: "membershipChecker", + }, + } +} + +func (ck *membershipChecker) Name() string { + return ck.Checker.Name +} + +func (ck *membershipChecker) Diagnose() (result any) { + var err error + eps := ck.Endpoints + + defer func() { + if err != nil { + result = &intf.FailedResult{ + Name: ck.Name(), + Reason: err.Error(), + } + } + }() + + memberLists := make([]*clientv3.MemberListResponse, len(eps)) + detectedInconsistency := false + for i, ep := range eps { + cfg := common.ConfigWithEndpoint(ck.Cfg, ep) + c, err := common.NewClient(cfg) + if err != nil { + detectedInconsistency = true + log.Printf("Failed to create client for %q: %v\n", ep, err) + continue + } + ctx, cancel := context.WithTimeout(context.Background(), ck.CommandTimeout) + memberLists[i], err = c.MemberList(ctx, clientv3.WithSerializable()) + cancel() + c.Close() + if err != nil { + detectedInconsistency = true + log.Printf("Failed to get member list from %q: %v\n", ep, err) + continue + } + + if i > 0 { + if !compareMembers(memberLists[0], memberLists[i]) { + detectedInconsistency = true + log.Printf("Detected inconsistent member list between %q and %q\n", eps[0], eps[i]) + } + } + } + + if detectedInconsistency { + result = checkResult{ + Name: ck.Name(), + Summary: "Detected inconsistent member list between different members", + AllMemberLists: memberLists, + } + } else { + result = checkResult{ + Name: ck.Name(), + Summary: "Successful", + MemberList: memberLists[0], + } + } + + return result +} + +func compareMembers(m1, m2 *clientv3.MemberListResponse) bool { + if m1 == nil || m2 == nil { + return false + } + + return m1.Header.ClusterId == m2.Header.ClusterId && reflect.DeepEqual(m1.Members, m2.Members) +} diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/metrics/plugin.go b/etcdctl/ctlv3/command/diagnosis/plugins/metrics/plugin.go new file mode 100644 index 000000000000..911791de0899 --- /dev/null +++ b/etcdctl/ctlv3/command/diagnosis/plugins/metrics/plugin.go @@ -0,0 +1,179 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package metrics + +import ( + "crypto/tls" + "crypto/x509" + "fmt" + "io" + "log" + "net/http" + "net/url" + "os" + "strings" + "time" + + clientv3 "go.etcd.io/etcd/client/v3" + + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/common" +) + +var metricsNames = []string{ + "etcd_disk_wal_fsync_duration_seconds_bucket", + "etcd_disk_backend_commit_duration_seconds_bucket", + "etcd_network_peer_round_trip_time_seconds_bucket", + "process_resident_memory_bytes", + //"process_cpu_seconds_total", +} + +type metricsChecker struct { + common.Checker +} + +type epMetrics struct { + Endpoint string `json:"endpoint,omitempty"` + Took string `json:"took,omitempty"` + EpMetrics map[string][]string `json:"epMetrics,omitempty"` +} + +type checkResult struct { + Name string `json:"name,omitempty"` + Summary []string `json:"summary,omitempty"` + EpMetricsList []epMetrics `json:"epMetricsList,omitempty"` +} + +func NewPlugin(cfg *clientv3.ConfigSpec, eps []string, timeout time.Duration) intf.Plugin { + return &metricsChecker{ + Checker: common.Checker{ + Cfg: cfg, + Endpoints: eps, + CommandTimeout: timeout, + Name: "metricsChecker", + }, + } +} + +func (ck *metricsChecker) Name() string { + return ck.Checker.Name +} + +func (ck *metricsChecker) Diagnose() (result any) { + var err error + eps := ck.Endpoints + + defer func() { + if err != nil { + result = &intf.FailedResult{ + Name: ck.Name(), + Reason: err.Error(), + } + } + }() + + chkResult := checkResult{ + Name: ck.Name(), + Summary: []string{}, + EpMetricsList: make([]epMetrics, len(eps)), + } + + for i, ep := range eps { + chkResult.EpMetricsList[i].Endpoint = ep + + startTs := time.Now() + allMetrics, err := fetchMetrics(ck.Cfg, ep, ck.CommandTimeout) + chkResult.EpMetricsList[i].Took = time.Since(startTs).String() + if err != nil { + appendSummary(&chkResult, "Failed to get endpoint metrics from %q: %v", ep, err) + continue + } + + metricsMap := map[string][]string{} + for _, prefix := range metricsNames { + ret := metrics(allMetrics, prefix) + metricsMap[prefix] = ret + } + + chkResult.EpMetricsList[i].EpMetrics = metricsMap + } + + if len(chkResult.Summary) == 0 { + chkResult.Summary = []string{"Successful"} + } + + result = chkResult + return result +} + +func metrics(lines []string, prefix string) []string { + var ret []string + for _, line := range lines { + if strings.HasPrefix(line, prefix) { + ret = append(ret, line) + } + } + return ret +} + +func appendSummary(chkResult *checkResult, format string, v ...any) { + errMsg := fmt.Sprintf(format, v...) + log.Println(errMsg) + chkResult.Summary = append(chkResult.Summary, errMsg) +} + +func fetchMetrics(cfg *clientv3.ConfigSpec, ep string, timeout time.Duration) ([]string, error) { + if !strings.HasPrefix(ep, "http://") && !strings.HasPrefix(ep, "https://") { + ep = "http://" + ep + } + urlPath, err := url.JoinPath(ep, "metrics") + if err != nil { + return nil, fmt.Errorf("failed to join metrics url path: %w", err) + } + + client := &http.Client{Timeout: timeout} + if strings.HasPrefix(urlPath, "https://") && cfg.Secure != nil { + cert, err := tls.LoadX509KeyPair(cfg.Secure.Cert, cfg.Secure.Key) + if err != nil { + return nil, fmt.Errorf("failed to load certificate: %w", err) + } + caCert, err := os.ReadFile(cfg.Secure.Cacert) + if err != nil { + return nil, fmt.Errorf("failed to load CA: %w", err) + } + caCertPool := x509.NewCertPool() + caCertPool.AppendCertsFromPEM(caCert) + tr := &http.Transport{ + TLSClientConfig: &tls.Config{ + Certificates: []tls.Certificate{cert}, + RootCAs: caCertPool, + InsecureSkipVerify: cfg.Secure.InsecureSkipVerify, + }, + } + client.Transport = tr + } + resp, err := client.Get(urlPath) + if err != nil { + return nil, fmt.Errorf("http get failed: %w", err) + } + defer resp.Body.Close() + + data, err := io.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("failed to read metrics response: %w", err) + } + + return strings.Split(string(data), "\n"), nil +} diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/read/plugin.go b/etcdctl/ctlv3/command/diagnosis/plugins/read/plugin.go new file mode 100644 index 000000000000..5d7bcec71496 --- /dev/null +++ b/etcdctl/ctlv3/command/diagnosis/plugins/read/plugin.go @@ -0,0 +1,146 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package read + +import ( + "context" + "errors" + "log" + "time" + + "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" + clientv3 "go.etcd.io/etcd/client/v3" + + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/common" +) + +type readChecker struct { + common.Checker + linearizable bool +} + +type readResponse struct { + Endpoint string `json:"endpoint,omitempty"` + Took string `json:"took,omitempty"` + Error string `json:"error,omitempty"` +} +type checkResult struct { + Name string `json:"name,omitempty"` + Summary string `json:"summary,omitempty"` + ReadResponses []readResponse `json:"readResponses,omitempty"` +} + +func NewPlugin(cfg *clientv3.ConfigSpec, eps []string, timeout time.Duration, linearizable bool) intf.Plugin { + return &readChecker{ + Checker: common.Checker{ + Cfg: cfg, + Endpoints: eps, + CommandTimeout: timeout, + Name: generateName(linearizable), + }, + linearizable: linearizable, + } +} + +func (ck *readChecker) Name() string { + return ck.Checker.Name +} + +func generateName(linearizable bool) string { + if linearizable { + return "linearizableReadChecker" + } + return "serializableReadChecker" +} + +func (ck *readChecker) Diagnose() (result any) { + var err error + eps := ck.Endpoints + + defer func() { + if err != nil { + result = &intf.FailedResult{ + Name: ck.Name(), + Reason: err.Error(), + } + } + }() + + var ( + maxRetries = 3 + retries = 0 + + chkResult = initCheckResult(ck.Name(), len(eps)) + ) + + for { + shouldRetry := false + for i, ep := range eps { + chkResult.ReadResponses[i].Endpoint = ep + + startTs := time.Now() + cfg := common.ConfigWithEndpoint(ck.Cfg, ep) + c, err := common.NewClient(cfg) + if err != nil { + chkResult.ReadResponses[i].Error = err.Error() + shouldRetry = true + continue + } + ctx, cancel := context.WithTimeout(context.Background(), ck.CommandTimeout) + if ck.linearizable { + _, err = c.Get(ctx, "health") + } else { + _, err = c.Get(ctx, "health", clientv3.WithSerializable()) + } + cancel() + c.Close() + if err != nil && !errors.Is(err, rpctypes.ErrPermissionDenied) { + chkResult.ReadResponses[i].Error = err.Error() + shouldRetry = true + } + chkResult.ReadResponses[i].Took = time.Since(startTs).String() + } + + retries++ + + if !shouldRetry || retries >= maxRetries { + break + } + + chkResult = initCheckResult(ck.Name(), len(eps)) + log.Printf("Retrying checking read: %d/%d\n", retries, maxRetries) + time.Sleep(time.Second) + } + + chkResult.Summary = "Successful" + for _, resp := range chkResult.ReadResponses { + if len(resp.Error) > 0 { + chkResult.Summary = "Unsuccessful" + break + } + } + + result = chkResult + return result +} + +func initCheckResult(name string, epCount int) checkResult { + return checkResult{ + Name: name, + Summary: "", + ReadResponses: make([]readResponse, epCount), + } +} diff --git a/etcdctl/ctlv3/command/diagnosis_command.go b/etcdctl/ctlv3/command/diagnosis_command.go new file mode 100644 index 000000000000..4e62c2afc854 --- /dev/null +++ b/etcdctl/ctlv3/command/diagnosis_command.go @@ -0,0 +1,105 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package command + +import ( + "fmt" + "os" + + "github.com/spf13/cobra" + + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine" + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/epstatus" + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/membership" + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/metrics" + readplugin "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/read" + "go.etcd.io/etcd/pkg/v3/cobrautl" +) + +var ( + useCluster bool + dbQuotaBytes int + outputFile string +) + +// NewDiagnosisCommand returns the cobra command for "diagnosis". +func NewDiagnosisCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "diagnosis", + Short: "One-stop etcd diagnosis tool", + Run: runDiagnosis, + GroupID: groupClusterMaintenanceID, + } + + cmd.Flags().BoolVar(&useCluster, "cluster", false, "use all endpoints from the cluster member list") + cmd.Flags().IntVar(&dbQuotaBytes, "etcd-storage-quota-bytes", 2*1024*1024*1024, "etcd storage quota in bytes (the value passed to etcd instance by flag --quota-backend-bytes)") + cmd.Flags().StringVarP(&outputFile, "output", "o", "", "write report to file instead of stdout") + + return cmd +} + +func runDiagnosis(cmd *cobra.Command, args []string) { + cfg := clientConfigFromCmd(cmd) + cli := mustClientFromCmd(cmd) + defer cli.Close() + + eps := cfg.Endpoints + if useCluster { + ctx, cancel := commandCtx(cmd) + members, err := cli.MemberList(ctx) + cancel() + if err != nil { + fmt.Fprintf(os.Stderr, "failed to fetch member list: %v\n", err) + os.Exit(cobrautl.ExitError) + } + var clusterEps []string + for _, m := range members.Members { + clusterEps = append(clusterEps, m.ClientURLs...) + } + eps = clusterEps + cfg.Endpoints = eps + } + + timeout, err := cmd.Flags().GetDuration("command-timeout") + if err != nil { + fmt.Fprintf(os.Stderr, "failed to get command-timeout: %v\n", err) + os.Exit(cobrautl.ExitError) + } + + plugins := []intf.Plugin{ + membership.NewPlugin(cfg, eps, timeout), + epstatus.NewPlugin(cfg, eps, timeout, dbQuotaBytes), + readplugin.NewPlugin(cfg, eps, timeout, false), + readplugin.NewPlugin(cfg, eps, timeout, true), + metrics.NewPlugin(cfg, eps, timeout), + } + + report, err := engine.Diagnose(cfg, plugins) + if err != nil { + fmt.Fprintf(os.Stderr, "diagnosis failed: %v\n", err) + os.Exit(cobrautl.ExitError) + } + + if outputFile != "" { + if err := os.WriteFile(outputFile, report, 0o644); err != nil { + fmt.Fprintf(os.Stderr, "failed to write report: %v\n", err) + os.Exit(cobrautl.ExitError) + } + return + } + + fmt.Fprintln(os.Stdout, string(report)) +} diff --git a/etcdctl/ctlv3/ctl.go b/etcdctl/ctlv3/ctl.go index 039485ddf84d..2d382b5ee054 100644 --- a/etcdctl/ctlv3/ctl.go +++ b/etcdctl/ctlv3/ctl.go @@ -106,6 +106,7 @@ func init() { command.NewUserCommand(), command.NewRoleCommand(), command.NewCheckCommand(), + command.NewDiagnosisCommand(), command.NewCompletionCommand(), command.NewDowngradeCommand(), command.NewOptionsCommand(rootCmd), From 74aadffcd6824aa801e40726cf86fe1ba1e031ed Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 18 Dec 2025 21:58:14 -0800 Subject: [PATCH 0690/1068] Fix robustness tests execution Remove running the tests for all the packages under ./tests/robustness. Restore the old behavior of running only the tests from the top-level robustness package. Signed-off-by: Ivan Valdes --- scripts/test.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index a6e0b0992a5c..f9de1c70350c 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -184,10 +184,10 @@ function e2e_pass { function robustness_pass { # e2e tests are running pre-build binary. Settings like --race,-cover,-cpu does not have any impact. KEEP_GOING_TESTS=true \ - run_go_tests_expanding_packages ./tests/robustness/... \ - -timeout="${TIMEOUT:-30m}" \ - "${RUN_ARG[@]}" \ - "$@" + run_go_tests ./tests/robustness/... \ + -timeout="${TIMEOUT:-30m}" \ + "${RUN_ARG[@]}" \ + "$@" } function integration_e2e_pass { From e10c1a97fca60a3d99b8cc3687dc35d02a62018a Mon Sep 17 00:00:00 2001 From: "Yerasala Venkata, Seshachalam" Date: Mon, 15 Sep 2025 11:11:55 +0530 Subject: [PATCH 0691/1068] docs(etcdctl): document diagnosis subcommand and example report Adds README section for `diagnose` command, flags, and output. Fixes README link to the example. Signed-off-by: Yerasala Venkata, Seshachalam --- etcdctl/README.md | 37 ++++ .../examples/etcd_diagnosis_report.json | 181 ++++++++++++++++++ 2 files changed, 218 insertions(+) create mode 100644 etcdctl/ctlv3/command/diagnosis/examples/etcd_diagnosis_report.json diff --git a/etcdctl/README.md b/etcdctl/README.md index 3589f4d699d6..7b4bd2908d13 100644 --- a/etcdctl/README.md +++ b/etcdctl/README.md @@ -1129,6 +1129,43 @@ DOWNGRADE CANCEL cancels the ongoing downgrade action to cluster. ./etcdctl downgrade cancel Downgrade cancel success, cluster version 3.5 ``` +### DIAGNOSIS + +`etcdctl diagnosis [flags]` - Collects and analyzes troubleshooting data from a running etcd cluster. + +The `diagnosis` command gathers a concise set of diagnostic details from each cluster member by performing several checks, including: + + * **Membership checks**: Verifies the cluster membership information. + * **Endpoint status**: Retrieves the status of each endpoint. + * **Serializable and linearizable reads**: Performs read operations to validate data consistency. + * **Metrics snapshot**: Collects a small snapshot of key metrics. + +#### Flags + +- `--cluster`: use all endpoints discovered from the cluster member list. +- `--etcd-storage-quota-bytes`: expected etcd storage quota in bytes (value passed to etcd with `--quota-backend-bytes`). +- `-o, --output`: optional file path to write the JSON report; by default the report is written to stdout. Logs are written to stderr. + +Global flags (like `--endpoints`, TLS, auth, and timeouts) are shared with other `etcdctl` commands. See `etcdctl options` for the full list. + +#### Examples + +To perform analysis of a running etcd cluster, you can use the following command. This will collect and analyze data from all specified endpoints. + +```bash +etcdctl diagnosis --endpoints=https://10.0.1.10:2379,https://10.0.1.11:2379,https://10.0.1.12:2379 \ + --cacert ./ca.crt --key ./etcd-diagnosis.key --cert ./etcd-diagnosis.crt + +# Use cluster-discovered endpoints +etcdctl diagnosis --cluster + +# Write report to a file (logs still go to stderr) +etcdctl diagnosis -o report.json +``` + + +Example output: see [ctlv3/command/diagnosis/examples/etcd_diagnosis_report.json](ctlv3/command/diagnosis/examples/etcd_diagnosis_report.json) + ## Concurrency commands diff --git a/etcdctl/ctlv3/command/diagnosis/examples/etcd_diagnosis_report.json b/etcdctl/ctlv3/command/diagnosis/examples/etcd_diagnosis_report.json new file mode 100644 index 000000000000..4eeb2030f93d --- /dev/null +++ b/etcdctl/ctlv3/command/diagnosis/examples/etcd_diagnosis_report.json @@ -0,0 +1,181 @@ +{ + "input": { + "endpoints": [ + "http://127.0.0.1:2379" + ], + "useClusterEndpoints": true, + "dial-timeout": 2000000000, + "command-timeout": 5000000000, + "keep-alive-time": 2000000000, + "keep-alive-timeout": 5000000000, + "insecure": true, + "insecure-discovery": true, + "db-quota-bytes": 2147483648 + }, + "results": [ + { + "name": "membershipChecker", + "memberList": { + "header": { + "cluster_id": 17237436991929493444, + "member_id": 9372538179322589801, + "raft_term": 2 + }, + "members": [ + { + "ID": 9372538179322589801, + "name": "infra1", + "peerURLs": [ + "http://127.0.0.1:12380" + ], + "clientURLs": [ + "http://127.0.0.1:2379" + ] + }, + { + "ID": 10501334649042878790, + "name": "infra2", + "peerURLs": [ + "http://127.0.0.1:22380" + ], + "clientURLs": [ + "http://127.0.0.1:22379" + ] + }, + { + "ID": 18249187646912138824, + "name": "infra3", + "peerURLs": [ + "http://127.0.0.1:32380" + ], + "clientURLs": [ + "http://127.0.0.1:32379" + ] + } + ] + } + }, + { + "name": "epStatusChecker", + "summary": [ + "Successful" + ], + "epStatusList": [ + { + "endpoint": "http://127.0.0.1:2379", + "epStatus": { + "header": { + "cluster_id": 17237436991929493444, + "member_id": 9372538179322589801, + "revision": 1, + "raft_term": 2 + }, + "version": "3.5.9", + "dbSize": 98304, + "leader": 18249187646912138824, + "raftIndex": 8, + "raftTerm": 2, + "raftAppliedIndex": 8, + "dbSizeInUse": 98304 + } + }, + { + "endpoint": "http://127.0.0.1:22379", + "epStatus": { + "header": { + "cluster_id": 17237436991929493444, + "member_id": 10501334649042878790, + "revision": 1, + "raft_term": 2 + }, + "version": "3.5.9", + "dbSize": 98304, + "leader": 18249187646912138824, + "raftIndex": 8, + "raftTerm": 2, + "raftAppliedIndex": 8, + "dbSizeInUse": 98304 + } + }, + { + "endpoint": "http://127.0.0.1:32379", + "epStatus": { + "header": { + "cluster_id": 17237436991929493444, + "member_id": 18249187646912138824, + "revision": 1, + "raft_term": 2 + }, + "version": "3.5.9", + "dbSize": 98304, + "leader": 18249187646912138824, + "raftIndex": 8, + "raftTerm": 2, + "raftAppliedIndex": 8, + "dbSizeInUse": 98304 + } + } + ] + }, + { + "name": "serializableReadChecker", + "summary": "Successful", + "readResponses": [ + { + "endpoint": "http://127.0.0.1:2379", + "took": "686.5µs" + }, + { + "endpoint": "http://127.0.0.1:22379", + "took": "1.129291ms" + }, + { + "endpoint": "http://127.0.0.1:32379", + "took": "1.034625ms" + } + ] + }, + { + "name": "linearizableReadChecker", + "summary": "Successful", + "readResponses": [ + { + "endpoint": "http://127.0.0.1:2379", + "took": "1.286333ms" + }, + { + "endpoint": "http://127.0.0.1:22379", + "took": "890.417µs" + }, + { + "endpoint": "http://127.0.0.1:32379", + "took": "1.257791ms" + } + ] + }, + { + "name": "metricsChecker", + "summary": [ + "Successful" + ], + "epMetricsList": [ + { + "endpoint": "http://127.0.0.1:2379", + "took": "3.752625ms", + "epMetrics": { + "etcd_disk_backend_commit_duration_seconds_bucket": [ + "etcd_disk_backend_commit_duration_seconds_bucket{le=\"0.001\"} 0" + ], + "etcd_disk_wal_fsync_duration_seconds_bucket": [ + "etcd_disk_wal_fsync_duration_seconds_bucket{le=\"0.001\"} 0" + ], + "etcd_network_peer_round_trip_time_seconds_bucket": [ + "etcd_network_peer_round_trip_time_seconds_bucket{To=\"91bc3c398fb3c146\",le=\"0.0001\"} 2" + ], + "process_resident_memory_bytes": null + } + } + ] + } + ] +} From 86afa50637e64150b69cf699a739a03ebb33ba52 Mon Sep 17 00:00:00 2001 From: ronaldngounou Date: Tue, 14 Oct 2025 00:53:32 -0700 Subject: [PATCH 0692/1068] Document how to analyze Prow job resource usage - Introduction to Prow - How Prow is used for etcd testing - Navigating perfomance dashboards (Grafana) - Prow job categories - Interpreting metrics Signed-off-by: ronaldngounou --- Documentation/contributor-guide/prow_jobs.md | 115 +++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 Documentation/contributor-guide/prow_jobs.md diff --git a/Documentation/contributor-guide/prow_jobs.md b/Documentation/contributor-guide/prow_jobs.md new file mode 100644 index 000000000000..d9025c8875cb --- /dev/null +++ b/Documentation/contributor-guide/prow_jobs.md @@ -0,0 +1,115 @@ +# Analyzing Prow Job Resource Usage + +## 1. Introduction to Prow + +[Prow](https://docs.prow.k8s.io/docs/) is a Kubernetes based CI/CD system. Jobs can be triggered by various types of events and report their status to many different services. Prow provides GitHub automation through policy enforcement and chat-ops via `/command` interactions on pull requests (e.g., `/test`, `/approve`, `/retest`), enabling contributors to trigger jobs and manage workflows directly from GitHub comments. + +When a user comments `/ok-to-test`or `/retest,` on a Pull Request, GitHub sends a webhook to Prow's Kubernetes cluster. Visit this [site](https://docs.prow.k8s.io/docs/life-of-a-prow-job/) to further understand the lifecycle of a Prow job. +This is where you can find all etcd Prow jobs [status](https://prow.k8s.io/?repo=etcd-io%2Fetcd) + +## 2. How Prow is used for etcd Testing + +etcd's CI is managed by [kubernetes/test-infra](https://github.com/kubernetes/test-infra), running Prow. + +When a pull request is submitted, or a `/command` is issued, the CI of etcd which managed by [kubernetes/test-infra](https://github.com/kubernetes/test-infra) uses Prow to run the tests. You can view all supported Prow [commands](https://prow.k8s.io/command-help). + +### Jobs Types + +The jobs [configuration](https://github.com/kubernetes/test-infra/tree/master/config/jobs/etcd) for etcd. Please see [ProwJob](https://docs.prow.k8s.io/docs/jobs/) docs for more info. + +There are 3 different job types: + +- Recurring jobs that regularly run etcd performance benchmarks, specifically targeting the put API, for the amd64 architecture.[etcd-benchmarks-periodics.yaml](https://github.com/kubernetes/test-infra/blob/master/config/jobs/etcd/etcd-benchmarks-periodic.yaml) +- Presubmits jobs: Run on pull requests before code is merged, ensuring new changes do not break the build or tests. [etcd-operator-presubmits.yaml](https://github.com/kubernetes/test-infra/blob/master/config/jobs/etcd/etcd-presubmits.yaml) +- Postsubmits run after merging the etcd-io/etcd-operator code: [etcd-operator-postsubmits.yaml](https://github.com/kubernetes/test-infra/blob/master/config/jobs/etcd/etcd-operator-postsubmits.yaml) +- Periodic jobs are jobs that run automatically on a fixed schedule (such as every 4 hours, once a day, etc.), regardless of code changes or pull requests. They’re designed to continuously check the stability, compatibility, or performance of the project over time. [etcd-periodics.yaml](https://github.com/kubernetes/test-infra/blob/master/config/jobs/etcd/etcd-periodics.yaml) +- Builds the etcd project for all main and release branches before merging any PR. [etcd-presubmits.yaml](https://github.com/kubernetes/test-infra/blob/master/config/jobs/etcd/etcd-presubmits.yaml) +- This file defines jobs that run automatically after code is merged (postsubmit) into the main or release branches of the etcd repository (etcd-io/etcd). [etcd-postsubmits.yaml](https://github.com/kubernetes/test-infra/blob/master/config/jobs/etcd/etcd-postsubmits.yaml) +- Test pull requests for the etcd-io/raft repository on certain branches (main and release-3.6)[etcd-raft-presubmits.yaml](https://github.com/kubernetes/test-infra/blob/master/config/jobs/etcd/etcd-raft-presubmits.yaml) +- Checks markdown formatting for website changes [etcd-website-presubmits.yaml](https://github.com/kubernetes/test-infra/blob/master/config/jobs/etcd/etcd-website-presubmits.yaml). +- This file contains jobs that run after code is merged into the etcd-io/protodoc repository. [protodoc-presubmit.yaml](https://github.com/kubernetes/test-infra/blob/master/config/jobs/etcd/protodoc-postsubmits.yaml) +- This file defines jobs that run on pull requests (before merge) for the etcd-io/protodoc repository.[protodoc-postsubmit.yaml](https://github.com/kubernetes/test-infra/blob/master/config/jobs/etcd/protodoc-presubmits.yaml) + +As an example, `pull-etcd-e2e-amd64` is one of the [presubmits](https://github.com/kubernetes/test-infra/blob/b21a1d3a72d5715ea7c9234cade21751847cfbe5/config/jobs/etcd/etcd-presubmits.yaml#L193). The job automatically runs end-to-end (e2e) tests on the amd64 architecture for every pull request to the etcd repository targeting the main, release-3.6, release-3.5, or release-3.4 branches. This is an example to its dashboard result [graph](https://prow.k8s.io/?repo=etcd-io%2Fetcd&type=presubmit&job=pull-etcd-e2e-amd64). + +Refer to [the test-infra Job Types documentation](https://github.com/kubernetes/test-infra/tree/master/config/jobs#job-types) to learn more about them. + +### How to Trigger Prow Running Tests + +These tests can be triggered when you leave a comment, like `/ok-to-test` (only triggered by an etcd-io member) or `/retest`, in PR [example](https://github.com/etcd-io/etcd/pull/20733#issuecomment-3341443205). `/ok-to-test` allows Prow to run tests on a pull request from a first-time contributor. `/retest` tells Prow to rerun any failed or flaky joobs on the pull request, useful if a previous test failed due to a transient issue. + +You can find all supported [commands](https://prow.k8s.io/command-help). + +## 3. Navigating Performance Dashboard (Grafana) + +Test-infra's Prow exposes Grafana dashboards to provide visibility into build resource usage (CPU, memory, number of running builds, etc.) for the Prow build cluster’s Kubernetes jobs. It is scoped via organization, repository, build identifier and time range filters. + +- GKE Dashboards: [https://monitoring-gke.prow.k8s.io/d/96Q8oOOZk/builds?orgId=1&refresh=30s&var-org=etcd-io&var-repo=etcd&var-build=All&from=now-7d&to=now](https://monitoring-gke.prow.k8s.io/d/96Q8oOOZk/builds?orgId=1&refresh=30s&var-org=etcd-io&var-repo=etcd&var-build=All&from=now-7d&to=now) +- EKS Dashboards: [https://monitoring-eks.prow.k8s.io/d/96Q8oOOZk/builds?orgId=1&refresh=30s&var-org=etcd-io&var-repo=etcd&var-build=All&from=now-7d&to=now](https://monitoring-eks.prow.k8s.io/d/96Q8oOOZk/builds?orgId=1&refresh=30s&var-org=etcd-io&var-repo=etcd&var-build=All&from=now-7d&to=now) + +It is useful for a few reasons: + +1. Tuning resources: By drilling into each build-run, you can determine realistic memory & CPU requests and limits for that job‑type. This helps avoid waste or avoid failed builds hitting resource limits. + +2. Spotting anomalies: If one build suddenly used 8 GiB while normally this job uses 1 GiB, it may indicate a regression or mis‑configuration. + +3. Capacity planning: Seeing typical and peak usage helps cluster operators plan node sizes, scheduling, concurrency of builds, etc. + +4. Debugging performance issues: A build with unexpectedly high CPU or memory might be stuck, looping, or consuming resources inefficiently. + +### Panel: “Running / Pending Builds” + +Shows the number of builds that are in Running vs Pending states over time. +Use it to track build backlog or concurrency — e.g., if the “Pending” line rises, builds may be waiting for resources. +If the “Running” line fluctuates a lot or remains at some steady value, you can infer how many builds typically run in parallel. + +### Panel: “Memory Usage per Build” + +Shows memory usage over time for each build ID (each build listed in the legend at the bottom). +The y‑axis shows memory use (e.g., in MiB / GiB). +Use this to spot builds with unusually high memory usage — a spike indicates one build consumed many resources. + +### Panel: “CPU Usage per Build” + +Similar to the memory panel but shows CPU usage per build over time. Spikes in CPU usage may indicate heavy compute jobs, inefficiencies, or need for resource tuning. + +### Panel: "Resources" + +- Memory panel + +Green line (“used”): how much memory this build’s pod was using at each time point. Orange/Yellow line (“requested”): how much memory was requested (i.e., Kubernetes requests.memory) for that pod. +Red line (“limit”): how much memory was limited (i.e., Kubernetes limits.memory) for that pod. +Y‑axis: shows memory (GiB, MiB) over the build runtime. + +X‑axis: time of day/date. +If the green “used” line is close to or hits the red “limit”, it means the build came close to its memory cap (risking OOM). If “used” is much lower than “requested”, you may be over‑allocating memory (waste). +If the “requested” line is much higher than “used”, it suggests the job’s request could be tuned downward. + +- CPU panel + +Similar structure: green = actual usage, orange/yellow = requested CPU, red = CPU limit (if set). +Y‑axis often in number of CPU cores or fraction thereof (e.g., 1.0 = one core). +A green line with spikes may show bursts of CPU usage (e.g., build or compile phases) while idle periods show low usage. +If CPU usage consistently saturates the limit, the job may be throttled or delayed. If usage is consistently far below request, tuning may reduce cost. + +## 3.1 Prow job categories (robustness, integration, static checks) + +- Static check: + - Description: Fast, deterministic checks (build, unit tests, linters, go vet/staticcheck, formatting, license/header checks, generated-code verification) that catch style, correctness and packaging problems early. + - When to run: Every PR as presubmits; quick feedback loop before running expensive tests. + - Example job patterns: pull-etcd-verify, pull-etcd-lint, pull-etcd-unit + +- Tests: + - Robustness: + - Description: Long-running, fault-injection and chaos-style end-to-end tests that validate etcd correctness and availability under failures (node crashes, network partitions, resource exhaustion, upgrades). + - When to run: Periodics for continuous coverage; run for PRs that touch consensus, storage, recovery, or upgrade paths. + - Example job patterns: pull-etcd-robustness, periodic-robustness + + - Integration: + - Description: Functional end-to-end and cross-component tests that exercise real client/server interactions, snapshots/restore, upgrades and compatibility across OS/arch. + - When to run: Presubmits for PRs that change APIs, client behavior, or integration points; periodics for broad platform coverage. + - Example job patterns: pull-etcd-e2e-amd64, pull-etcd-integration + +## 4. Interpreting Metrics + +Some Prow components expose Prometheus metrics that can be used for monitoring and alerting. You can find metrics like the number of PRs in each Tide pool, a histogram of the number of PRs in each merge and various other metrics to this [site](https://github.com/kubernetes-sigs/prow/blob/main/site/content/en/docs/metrics/_index.md). From 76c2ae0ab9b2766f95b7f36f24d70ecfd79dda56 Mon Sep 17 00:00:00 2001 From: "Yerasala Venkata, Seshachalam" Date: Thu, 18 Dec 2025 17:45:46 +0530 Subject: [PATCH 0693/1068] etcdctl: fix lint and build errors in diagnosis feature - Fix markdown lint errors (MD024, MD004, MD007, MD012, MD022) in DIAGNOSIS section only - Fix GCI import formatting in diagnosis plugins - Fix 32-bit overflow by changing dbQuotaBytes from int to int64 - Remove unnecessary int64() conversion in epstatus plugin Signed-off-by: Yerasala Venkata, Seshachalam --- etcdctl/README.md | 25 +++++++++++-------- .../diagnosis/plugins/common/checker.go | 2 +- .../diagnosis/plugins/epstatus/plugin.go | 7 +++--- .../diagnosis/plugins/membership/plugin.go | 1 - .../diagnosis/plugins/metrics/plugin.go | 13 +++++----- .../command/diagnosis/plugins/read/plugin.go | 1 - etcdctl/ctlv3/command/diagnosis_command.go | 4 +-- 7 files changed, 26 insertions(+), 27 deletions(-) diff --git a/etcdctl/README.md b/etcdctl/README.md index 7b4bd2908d13..e8a03e6153a3 100644 --- a/etcdctl/README.md +++ b/etcdctl/README.md @@ -1,3 +1,5 @@ + + etcdctl ======== @@ -134,7 +136,9 @@ RPC: Range - min-mod-revision -- restrict results to kvs with modified revision greater or equal than the supplied revision #### Output + Prints the data in format below, + ``` \\n\\n\\n\... ``` @@ -143,7 +147,6 @@ Note serializable requests are better for lower latency requirement, but stale data might be returned if serializable option (`--consistency=s`) is specified. - #### Examples First, populate etcd with some keys: @@ -283,6 +286,7 @@ RPC: Txn - interactive -- input transaction with interactive prompting. #### Input Format + ```ebnf ::= * "\n" "\n" "\n" ::= (||||) "\n" @@ -309,6 +313,7 @@ RPC: Txn #### Examples txn in interactive mode: + ```bash ./etcdctl txn -i # compares: @@ -329,6 +334,7 @@ put key2 "some extra key" ``` txn in non-interactive mode: + ```bash ./etcdctl txn <<<'mod("key1") > "0" @@ -384,6 +390,7 @@ RPC: Compact Prints the compacted revision. #### Example + ```bash ./etcdctl compaction 1234 # compacted revision 1234 @@ -642,6 +649,7 @@ RPC: LeaseKeepAlive Prints a message for every keep alive sent or prints a message indicating the lease is gone. #### Example + ```bash ./etcdctl lease keep-alive 32695410dcc0ca0 # lease 32695410dcc0ca0 keepalived with TTL(100) @@ -727,6 +735,7 @@ MEMBER LIST prints the member details for all members associated with an etcd cl RPC: MemberList #### Options + - consistency -- Linearizable(l) or Serializable(s), defaults to Linearizable(l). #### Output @@ -990,7 +999,6 @@ DEFRAG defragments the backend database file for a set of given endpoints while **Note that defragmentation request does not get replicated over cluster. That is, the request is only applied to the local node. Specify all members in `--endpoints` flag or `--cluster` flag to automatically find all cluster members.** - #### Output For each endpoints, prints a message indicating whether the endpoint was successfully defragmented. @@ -1031,6 +1039,7 @@ The backend snapshot is written to the given file path. #### Example Save a snapshot to "snapshot.db": + ``` ./etcdctl snapshot save snapshot.db ``` @@ -1039,7 +1048,6 @@ Save a snapshot to "snapshot.db": Removed in v3.6. Use `etcdutl snapshot restore` instead. - ### SNAPSHOT STATUS \ Removed in v3.6. Use `etcdutl snapshot status` instead. @@ -1079,6 +1087,7 @@ New members will refuse joining cluster with cluster version newer than theirs, Downgrade commands allow cluster administrator to force cluster version to be lowered to previous minor version, thus allowing to downgrade the cluster. Downgrade should be executed in stages: + 1. Verify that cluster is ready to be downgraded by running `etcdctl downgrade validate ` 2. Start the downgrade process by running `etcdctl downgrade enable ` 3. For each cluster member: @@ -1129,6 +1138,7 @@ DOWNGRADE CANCEL cancels the ongoing downgrade action to cluster. ./etcdctl downgrade cancel Downgrade cancel success, cluster version 3.5 ``` + ### DIAGNOSIS `etcdctl diagnosis [flags]` - Collects and analyzes troubleshooting data from a running etcd cluster. @@ -1166,7 +1176,6 @@ etcdctl diagnosis -o report.json Example output: see [ctlv3/command/diagnosis/examples/etcd_diagnosis_report.json](ctlv3/command/diagnosis/examples/etcd_diagnosis_report.json) - ## Concurrency commands ### LOCK [options] \ [command arg1 arg2 ...] @@ -1200,6 +1209,7 @@ Acquire lock and execute `echo lock acquired`: ``` Acquire lock and execute `etcdctl put` command + ```bash ./etcdctl lock mylock ./etcdctl put foo bar # OK @@ -1588,7 +1598,6 @@ The approximate total number of keys transferred to the destination cluster, upd [mirror]: ./doc/mirror_maker.md - ### VERSION Prints the version of etcdctl. @@ -1615,7 +1624,6 @@ CHECK PERF checks the performance of the etcd cluster for 60 seconds. Running th Notice that different workload models use different configurations in terms of number of clients and throughput. Here is the configuration for each load: - | Load | Number of clients | Number of put requests (requests/sec) | |---------|------|---------| | Small | 50 | 10000 | @@ -1629,10 +1637,8 @@ The test checks for the following conditions: - All the requests should be done in less than 500 ms - The standard deviation of the requests should be less than 100 ms - Hence, a workload model may work while another one might fail. - RPC: CheckPerf #### Options @@ -1746,7 +1752,4 @@ backward compatibility for `JSON` format and the format in non-interactive mode. [etcd]: https://github.com/coreos/etcd [READMEv2]: READMEv2.md -[v2key]: ../store/node_extern.go#L28-L37 -[v3key]: ../api/mvccpb/kv.proto#L12-L29 [etcdrpc]: ../api/etcdserverpb/rpc.proto -[storagerpc]: ../api/mvccpb/kv.proto diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/common/checker.go b/etcdctl/ctlv3/command/diagnosis/plugins/common/checker.go index f59f1f5e9cad..8818fb37f47b 100644 --- a/etcdctl/ctlv3/command/diagnosis/plugins/common/checker.go +++ b/etcdctl/ctlv3/command/diagnosis/plugins/common/checker.go @@ -27,6 +27,6 @@ type Checker struct { Cfg *clientv3.ConfigSpec Endpoints []string CommandTimeout time.Duration - DbQuotaBytes int + DbQuotaBytes int64 Name string } diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/epstatus/plugin.go b/etcdctl/ctlv3/command/diagnosis/plugins/epstatus/plugin.go index a83cfd6e928c..e15b8c3efb88 100644 --- a/etcdctl/ctlv3/command/diagnosis/plugins/epstatus/plugin.go +++ b/etcdctl/ctlv3/command/diagnosis/plugins/epstatus/plugin.go @@ -21,7 +21,6 @@ import ( "time" clientv3 "go.etcd.io/etcd/client/v3" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/common" ) @@ -41,7 +40,7 @@ type checkResult struct { EpStatusList []epStatus `json:"epStatusList,omitempty"` } -func NewPlugin(cfg *clientv3.ConfigSpec, eps []string, timeout time.Duration, dbQuota int) intf.Plugin { +func NewPlugin(cfg *clientv3.ConfigSpec, eps []string, timeout time.Duration, dbQuota int64) intf.Plugin { return &epStatusChecker{ Checker: common.Checker{ Cfg: cfg, @@ -174,14 +173,14 @@ func compareSoftInfo(s1, s2 *clientv3.StatusResponse) bool { s1.Leader == s2.Leader } -func checkDBSize(chkResult *checkResult, dbQuota int) { +func checkDBSize(chkResult *checkResult, dbQuota int64) { for _, sts := range chkResult.EpStatusList { if sts.EpStatus == nil { continue } freeSize := sts.EpStatus.DbSize - sts.EpStatus.DbSizeInUse - if freeSize > sts.EpStatus.DbSizeInUse && freeSize > 1_000_000_000 /* about 1GB */ || sts.EpStatus.DbSize >= int64(dbQuota*80/100) { + if freeSize > sts.EpStatus.DbSizeInUse && freeSize > 1_000_000_000 /* about 1GB */ || sts.EpStatus.DbSize >= dbQuota*80/100 { appendSummary(chkResult, "Detected large amount of db [free] space for endpoint %q, dbQuota: %d, dbSize: %d, dbSizeInUse: %d, dbSizeFree: %d", sts.Endpoint, dbQuota, sts.EpStatus.DbSize, sts.EpStatus.DbSizeInUse, freeSize) } } diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/membership/plugin.go b/etcdctl/ctlv3/command/diagnosis/plugins/membership/plugin.go index a9c605d89c1b..1b651284bd00 100644 --- a/etcdctl/ctlv3/command/diagnosis/plugins/membership/plugin.go +++ b/etcdctl/ctlv3/command/diagnosis/plugins/membership/plugin.go @@ -21,7 +21,6 @@ import ( "time" clientv3 "go.etcd.io/etcd/client/v3" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/common" ) diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/metrics/plugin.go b/etcdctl/ctlv3/command/diagnosis/plugins/metrics/plugin.go index 911791de0899..24d2e1e7d084 100644 --- a/etcdctl/ctlv3/command/diagnosis/plugins/metrics/plugin.go +++ b/etcdctl/ctlv3/command/diagnosis/plugins/metrics/plugin.go @@ -27,7 +27,6 @@ import ( "time" clientv3 "go.etcd.io/etcd/client/v3" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/common" ) @@ -145,13 +144,13 @@ func fetchMetrics(cfg *clientv3.ConfigSpec, ep string, timeout time.Duration) ([ client := &http.Client{Timeout: timeout} if strings.HasPrefix(urlPath, "https://") && cfg.Secure != nil { - cert, err := tls.LoadX509KeyPair(cfg.Secure.Cert, cfg.Secure.Key) - if err != nil { - return nil, fmt.Errorf("failed to load certificate: %w", err) + cert, certErr := tls.LoadX509KeyPair(cfg.Secure.Cert, cfg.Secure.Key) + if certErr != nil { + return nil, fmt.Errorf("failed to load certificate: %w", certErr) } - caCert, err := os.ReadFile(cfg.Secure.Cacert) - if err != nil { - return nil, fmt.Errorf("failed to load CA: %w", err) + caCert, caErr := os.ReadFile(cfg.Secure.Cacert) + if caErr != nil { + return nil, fmt.Errorf("failed to load CA: %w", caErr) } caCertPool := x509.NewCertPool() caCertPool.AppendCertsFromPEM(caCert) diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/read/plugin.go b/etcdctl/ctlv3/command/diagnosis/plugins/read/plugin.go index 5d7bcec71496..e6565151dfbf 100644 --- a/etcdctl/ctlv3/command/diagnosis/plugins/read/plugin.go +++ b/etcdctl/ctlv3/command/diagnosis/plugins/read/plugin.go @@ -22,7 +22,6 @@ import ( "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/common" ) diff --git a/etcdctl/ctlv3/command/diagnosis_command.go b/etcdctl/ctlv3/command/diagnosis_command.go index 4e62c2afc854..69748254e8e7 100644 --- a/etcdctl/ctlv3/command/diagnosis_command.go +++ b/etcdctl/ctlv3/command/diagnosis_command.go @@ -31,7 +31,7 @@ import ( var ( useCluster bool - dbQuotaBytes int + dbQuotaBytes int64 outputFile string ) @@ -45,7 +45,7 @@ func NewDiagnosisCommand() *cobra.Command { } cmd.Flags().BoolVar(&useCluster, "cluster", false, "use all endpoints from the cluster member list") - cmd.Flags().IntVar(&dbQuotaBytes, "etcd-storage-quota-bytes", 2*1024*1024*1024, "etcd storage quota in bytes (the value passed to etcd instance by flag --quota-backend-bytes)") + cmd.Flags().Int64Var(&dbQuotaBytes, "etcd-storage-quota-bytes", 2*1024*1024*1024, "etcd storage quota in bytes (the value passed to etcd instance by flag --quota-backend-bytes)") cmd.Flags().StringVarP(&outputFile, "output", "o", "", "write report to file instead of stdout") return cmd From 3bef298cc0d5aa4be1e83e7551dfebdf6d8cf060 Mon Sep 17 00:00:00 2001 From: Thomas Jungblut Date: Wed, 17 Dec 2025 13:37:54 +0100 Subject: [PATCH 0694/1068] Instrument watchstream send loop This PR adds a few more timing metrics to the watch send loop. We're currently trying to track down some sort of contention affecting all gRPC endpoints, we see a hard QPS ceiling when the apiserver restarts with watch cache inits. There's currently no metric to help us pinpoint where the time is going to create such a ceiling, thus adding some more metrics here. Somewhat related to #15402. Signed-off-by: Thomas Jungblut --- server/etcdserver/api/v3rpc/metrics.go | 52 ++++++++++++++++++++++++++ server/etcdserver/api/v3rpc/watch.go | 12 +++++- tests/e2e/metrics_test.go | 4 ++ 3 files changed, 67 insertions(+), 1 deletion(-) diff --git a/server/etcdserver/api/v3rpc/metrics.go b/server/etcdserver/api/v3rpc/metrics.go index d79506e07321..419b81173fb5 100644 --- a/server/etcdserver/api/v3rpc/metrics.go +++ b/server/etcdserver/api/v3rpc/metrics.go @@ -52,6 +52,54 @@ var ( }, []string{"type", "client_api_version"}, ) + + watchSendLoopWatchStreamDuration = prometheus.NewHistogram( + prometheus.HistogramOpts{ + Namespace: "etcd_debugging", + Subsystem: "server", + Name: "watch_send_loop_watch_stream_duration_seconds", + Help: "The total duration in seconds of running through the send loop watch stream response all events.", + // lowest bucket start of upper bound 0.001 sec (1 ms) with factor 2 + // highest bucket start of 0.001 sec * 2^13 == 8.192 sec + Buckets: prometheus.ExponentialBuckets(0.001, 2, 14), + }, + ) + + watchSendLoopWatchStreamDurationPerEvent = prometheus.NewHistogram( + prometheus.HistogramOpts{ + Namespace: "etcd_debugging", + Subsystem: "server", + Name: "watch_send_loop_watch_stream_duration_per_event_seconds", + Help: "The average duration in seconds of running through the send loop watch stream response, per event.", + // lowest bucket start of upper bound 0.001 sec (1 ms) with factor 2 + // highest bucket start of 0.001 sec * 2^13 == 8.192 sec + Buckets: prometheus.ExponentialBuckets(0.001, 2, 14), + }, + ) + + watchSendLoopControlStreamDuration = prometheus.NewHistogram( + prometheus.HistogramOpts{ + Namespace: "etcd_debugging", + Subsystem: "server", + Name: "watch_send_loop_control_stream_duration_seconds", + Help: "The total duration in seconds of running through the send loop control stream response.", + // lowest bucket start of upper bound 0.001 sec (1 ms) with factor 2 + // highest bucket start of 0.001 sec * 2^13 == 8.192 sec + Buckets: prometheus.ExponentialBuckets(0.001, 2, 14), + }, + ) + + watchSendLoopProgressDuration = prometheus.NewHistogram( + prometheus.HistogramOpts{ + Namespace: "etcd_debugging", + Subsystem: "server", + Name: "watch_send_loop_progress_duration_seconds", + Help: "The total duration in seconds of running through the progress loop control stream response.", + // lowest bucket start of upper bound 0.001 sec (1 ms) with factor 2 + // highest bucket start of 0.001 sec * 2^13 == 8.192 sec + Buckets: prometheus.ExponentialBuckets(0.001, 2, 14), + }, + ) ) func init() { @@ -59,4 +107,8 @@ func init() { prometheus.MustRegister(receivedBytes) prometheus.MustRegister(streamFailures) prometheus.MustRegister(clientRequests) + prometheus.MustRegister(watchSendLoopWatchStreamDuration) + prometheus.MustRegister(watchSendLoopWatchStreamDurationPerEvent) + prometheus.MustRegister(watchSendLoopControlStreamDuration) + prometheus.MustRegister(watchSendLoopProgressDuration) } diff --git a/server/etcdserver/api/v3rpc/watch.go b/server/etcdserver/api/v3rpc/watch.go index 45e8b5e74622..3869260a9f48 100644 --- a/server/etcdserver/api/v3rpc/watch.go +++ b/server/etcdserver/api/v3rpc/watch.go @@ -432,6 +432,7 @@ func (sws *serverWatchStream) sendLoop() { return } + start := time.Now() // TODO: evs is []mvccpb.Event type // either return []*mvccpb.Event from the mvcc package // or define protocol buffer with []mvccpb.Event. @@ -502,11 +503,15 @@ func (sws *serverWatchStream) sendLoop() { } sws.mu.Unlock() + totalDur := time.Since(start) + watchSendLoopWatchStreamDuration.Observe(totalDur.Seconds()) + watchSendLoopWatchStreamDurationPerEvent.Observe(totalDur.Seconds() / float64(len(evs))) + case c, ok := <-sws.ctrlStream: if !ok { return } - + start := time.Now() if err := sws.gRPCStream.Send(c); err != nil { if isClientCtxErr(sws.gRPCStream.Context().Err(), err) { sws.lg.Debug("failed to send watch control response to gRPC stream", zap.Error(err)) @@ -544,7 +549,11 @@ func (sws *serverWatchStream) sendLoop() { delete(pending, wid) } + watchSendLoopControlStreamDuration.Observe(time.Since(start).Seconds()) + case <-progressTicker.C: + start := time.Now() + sws.mu.Lock() for id, ok := range sws.progress { if ok { @@ -553,6 +562,7 @@ func (sws *serverWatchStream) sendLoop() { sws.progress[id] = true } sws.mu.Unlock() + watchSendLoopProgressDuration.Observe(time.Since(start).Seconds()) case <-sws.closec: return diff --git a/tests/e2e/metrics_test.go b/tests/e2e/metrics_test.go index f9e593f06ee9..976be635fea4 100644 --- a/tests/e2e/metrics_test.go +++ b/tests/e2e/metrics_test.go @@ -160,6 +160,10 @@ func TestNoMetricsMissing(t *testing.T) { "etcd_debugging_mvcc_watch_stream_total", "etcd_debugging_mvcc_watcher_total", "etcd_debugging_server_lease_expired_total", + "etcd_debugging_server_watch_send_loop_watch_stream_duration_seconds", + "etcd_debugging_server_watch_send_loop_watch_stream_duration_per_event_seconds", + "etcd_debugging_server_watch_send_loop_control_stream_duration_seconds", + "etcd_debugging_server_watch_send_loop_progress_duration_seconds", "etcd_debugging_snap_save_marshalling_duration_seconds", "etcd_debugging_snap_save_total_duration_seconds", "etcd_debugging_store_expires_total", From 84054c22e667a7f7bdbe43b5032458f4dcbe89f9 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Mon, 22 Dec 2025 22:15:32 -0800 Subject: [PATCH 0695/1068] build(deps): bump github.com/olekukonko/tablewriter from 1.1.1 to 1.1.2 Bumps [github.com/olekukonko/tablewriter](https://github.com/olekukonko/tablewriter) from 1.1.1 to 1.1.2. - [Commits](olekukonko/tablewriter@v1.1.1...v1.1.2) --- updated-dependencies: - dependency-name: github.com/olekukonko/tablewriter dependency-version: 1.1.2 dependency-type: indirect update-type: version-update:semver-patch ... Reference: https://github.com/etcd-io/etcd/pull/20986 Signed-off-by: Ivan Valdes --- etcdctl/go.mod | 8 ++++---- etcdctl/go.sum | 16 ++++++++-------- etcdutl/go.mod | 8 ++++---- etcdutl/go.sum | 16 ++++++++-------- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- tests/go.mod | 8 ++++---- tests/go.sum | 16 ++++++++-------- tools/mod/go.mod | 3 ++- tools/mod/go.sum | 6 ++++-- 10 files changed, 54 insertions(+), 51 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index da8af3d15854..12129823127f 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -8,7 +8,7 @@ require ( github.com/bgentry/speakeasy v0.2.0 github.com/cheggaaa/pb/v3 v3.1.7 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.1.1 + github.com/olekukonko/tablewriter v1.1.2 github.com/spf13/cobra v1.10.1 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 @@ -23,9 +23,9 @@ require ( require ( github.com/VividCortex/ewma v1.2.0 // indirect - github.com/clipperhouse/displaywidth v0.3.1 // indirect + github.com/clipperhouse/displaywidth v0.6.0 // indirect github.com/clipperhouse/stringish v0.1.1 // indirect - github.com/clipperhouse/uax29/v2 v2.2.0 // indirect + github.com/clipperhouse/uax29/v2 v2.3.0 // indirect github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -39,7 +39,7 @@ require ( github.com/mattn/go-runewidth v0.0.19 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.1.2 // indirect + github.com/olekukonko/ll v0.1.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.47.0 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 6d416f4a922e..1be057d118cb 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -8,12 +8,12 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= -github.com/clipperhouse/displaywidth v0.3.1 h1:k07iN9gD32177o1y4O1jQMzbLdCrsGJh+blirVYybsk= -github.com/clipperhouse/displaywidth v0.3.1/go.mod h1:tgLJKKyaDOCadywag3agw4snxS5kYEuYR6Y9+qWDDYM= +github.com/clipperhouse/displaywidth v0.6.0 h1:k32vueaksef9WIKCNcoqRNyKbyvkvkysNYnAWz2fN4s= +github.com/clipperhouse/displaywidth v0.6.0/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= -github.com/clipperhouse/uax29/v2 v2.2.0 h1:ChwIKnQN3kcZteTXMgb1wztSgaU+ZemkgWdohwgs8tY= -github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= +github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= +github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= @@ -63,10 +63,10 @@ github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.1.2 h1:lkg/k/9mlsy0SxO5aC+WEpbdT5K83ddnNhAepz7TQc0= -github.com/olekukonko/ll v0.1.2/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= -github.com/olekukonko/tablewriter v1.1.1 h1:b3reP6GCfrHwmKkYwNRFh2rxidGHcT6cgxj/sHiDDx0= -github.com/olekukonko/tablewriter v1.1.1/go.mod h1:De/bIcTF+gpBDB3Alv3fEsZA+9unTsSzAg/ZGADCtn4= +github.com/olekukonko/ll v0.1.3 h1:sV2jrhQGq5B3W0nENUISCR6azIPf7UBUpVq0x/y70Fg= +github.com/olekukonko/ll v0.1.3/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= +github.com/olekukonko/tablewriter v1.1.2 h1:L2kI1Y5tZBct/O/TyZK1zIE9GlBj/TVs+AY5tZDCDSc= +github.com/olekukonko/tablewriter v1.1.2/go.mod h1:z7SYPugVqGVavWoA2sGsFIoOVNmEHxUAAMrhXONtfkg= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 6f1aa13867ba..3ff2ada47fab 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -15,7 +15,7 @@ replace ( require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.1.1 + github.com/olekukonko/tablewriter v1.1.2 github.com/spf13/cobra v1.10.1 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 @@ -32,9 +32,9 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/clipperhouse/displaywidth v0.3.1 // indirect + github.com/clipperhouse/displaywidth v0.6.0 // indirect github.com/clipperhouse/stringish v0.1.1 // indirect - github.com/clipperhouse/uax29/v2 v2.2.0 // indirect + github.com/clipperhouse/uax29/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect @@ -58,7 +58,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.1.2 // indirect + github.com/olekukonko/ll v0.1.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index a2cd5e57ad7f..ed58b8c625ff 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -4,12 +4,12 @@ github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1x github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/clipperhouse/displaywidth v0.3.1 h1:k07iN9gD32177o1y4O1jQMzbLdCrsGJh+blirVYybsk= -github.com/clipperhouse/displaywidth v0.3.1/go.mod h1:tgLJKKyaDOCadywag3agw4snxS5kYEuYR6Y9+qWDDYM= +github.com/clipperhouse/displaywidth v0.6.0 h1:k32vueaksef9WIKCNcoqRNyKbyvkvkysNYnAWz2fN4s= +github.com/clipperhouse/displaywidth v0.6.0/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= -github.com/clipperhouse/uax29/v2 v2.2.0 h1:ChwIKnQN3kcZteTXMgb1wztSgaU+ZemkgWdohwgs8tY= -github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= +github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= +github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -76,10 +76,10 @@ github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.1.2 h1:lkg/k/9mlsy0SxO5aC+WEpbdT5K83ddnNhAepz7TQc0= -github.com/olekukonko/ll v0.1.2/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= -github.com/olekukonko/tablewriter v1.1.1 h1:b3reP6GCfrHwmKkYwNRFh2rxidGHcT6cgxj/sHiDDx0= -github.com/olekukonko/tablewriter v1.1.1/go.mod h1:De/bIcTF+gpBDB3Alv3fEsZA+9unTsSzAg/ZGADCtn4= +github.com/olekukonko/ll v0.1.3 h1:sV2jrhQGq5B3W0nENUISCR6azIPf7UBUpVq0x/y70Fg= +github.com/olekukonko/ll v0.1.3/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= +github.com/olekukonko/tablewriter v1.1.2 h1:L2kI1Y5tZBct/O/TyZK1zIE9GlBj/TVs+AY5tZDCDSc= +github.com/olekukonko/tablewriter v1.1.2/go.mod h1:z7SYPugVqGVavWoA2sGsFIoOVNmEHxUAAMrhXONtfkg= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/go.mod b/go.mod index 7c74b3d74d58..f3cee4d26ed1 100644 --- a/go.mod +++ b/go.mod @@ -44,9 +44,9 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/clipperhouse/displaywidth v0.3.1 // indirect + github.com/clipperhouse/displaywidth v0.6.0 // indirect github.com/clipperhouse/stringish v0.1.1 // indirect - github.com/clipperhouse/uax29/v2 v2.2.0 // indirect + github.com/clipperhouse/uax29/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect @@ -72,8 +72,8 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.1.2 // indirect - github.com/olekukonko/tablewriter v1.1.1 // indirect + github.com/olekukonko/ll v0.1.3 // indirect + github.com/olekukonko/tablewriter v1.1.2 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/go.sum b/go.sum index 84f272d0cdb1..8772aeb6eabb 100644 --- a/go.sum +++ b/go.sum @@ -14,12 +14,12 @@ github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/clipperhouse/displaywidth v0.3.1 h1:k07iN9gD32177o1y4O1jQMzbLdCrsGJh+blirVYybsk= -github.com/clipperhouse/displaywidth v0.3.1/go.mod h1:tgLJKKyaDOCadywag3agw4snxS5kYEuYR6Y9+qWDDYM= +github.com/clipperhouse/displaywidth v0.6.0 h1:k32vueaksef9WIKCNcoqRNyKbyvkvkysNYnAWz2fN4s= +github.com/clipperhouse/displaywidth v0.6.0/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= -github.com/clipperhouse/uax29/v2 v2.2.0 h1:ChwIKnQN3kcZteTXMgb1wztSgaU+ZemkgWdohwgs8tY= -github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= +github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= +github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= @@ -106,10 +106,10 @@ github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.1.2 h1:lkg/k/9mlsy0SxO5aC+WEpbdT5K83ddnNhAepz7TQc0= -github.com/olekukonko/ll v0.1.2/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= -github.com/olekukonko/tablewriter v1.1.1 h1:b3reP6GCfrHwmKkYwNRFh2rxidGHcT6cgxj/sHiDDx0= -github.com/olekukonko/tablewriter v1.1.1/go.mod h1:De/bIcTF+gpBDB3Alv3fEsZA+9unTsSzAg/ZGADCtn4= +github.com/olekukonko/ll v0.1.3 h1:sV2jrhQGq5B3W0nENUISCR6azIPf7UBUpVq0x/y70Fg= +github.com/olekukonko/ll v0.1.3/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= +github.com/olekukonko/tablewriter v1.1.2 h1:L2kI1Y5tZBct/O/TyZK1zIE9GlBj/TVs+AY5tZDCDSc= +github.com/olekukonko/tablewriter v1.1.2/go.mod h1:z7SYPugVqGVavWoA2sGsFIoOVNmEHxUAAMrhXONtfkg= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/tests/go.mod b/tests/go.mod index f749a4c2fc9e..dbad8473ed3c 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -25,7 +25,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 - github.com/olekukonko/tablewriter v1.1.1 + github.com/olekukonko/tablewriter v1.1.2 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.67.4 @@ -61,9 +61,9 @@ require ( github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cheggaaa/pb/v3 v3.1.7 // indirect - github.com/clipperhouse/displaywidth v0.3.1 // indirect + github.com/clipperhouse/displaywidth v0.6.0 // indirect github.com/clipperhouse/stringish v0.1.1 // indirect - github.com/clipperhouse/uax29/v2 v2.2.0 // indirect + github.com/clipperhouse/uax29/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/creack/pty v1.1.18 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -85,7 +85,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.1.2 // indirect + github.com/olekukonko/ll v0.1.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect diff --git a/tests/go.sum b/tests/go.sum index fcecb75695dc..9b4427f80125 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -18,12 +18,12 @@ github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/clipperhouse/displaywidth v0.3.1 h1:k07iN9gD32177o1y4O1jQMzbLdCrsGJh+blirVYybsk= -github.com/clipperhouse/displaywidth v0.3.1/go.mod h1:tgLJKKyaDOCadywag3agw4snxS5kYEuYR6Y9+qWDDYM= +github.com/clipperhouse/displaywidth v0.6.0 h1:k32vueaksef9WIKCNcoqRNyKbyvkvkysNYnAWz2fN4s= +github.com/clipperhouse/displaywidth v0.6.0/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= -github.com/clipperhouse/uax29/v2 v2.2.0 h1:ChwIKnQN3kcZteTXMgb1wztSgaU+ZemkgWdohwgs8tY= -github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= +github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= +github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= @@ -112,10 +112,10 @@ github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.1.2 h1:lkg/k/9mlsy0SxO5aC+WEpbdT5K83ddnNhAepz7TQc0= -github.com/olekukonko/ll v0.1.2/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= -github.com/olekukonko/tablewriter v1.1.1 h1:b3reP6GCfrHwmKkYwNRFh2rxidGHcT6cgxj/sHiDDx0= -github.com/olekukonko/tablewriter v1.1.1/go.mod h1:De/bIcTF+gpBDB3Alv3fEsZA+9unTsSzAg/ZGADCtn4= +github.com/olekukonko/ll v0.1.3 h1:sV2jrhQGq5B3W0nENUISCR6azIPf7UBUpVq0x/y70Fg= +github.com/olekukonko/ll v0.1.3/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= +github.com/olekukonko/tablewriter v1.1.2 h1:L2kI1Y5tZBct/O/TyZK1zIE9GlBj/TVs+AY5tZDCDSc= +github.com/olekukonko/tablewriter v1.1.2/go.mod h1:z7SYPugVqGVavWoA2sGsFIoOVNmEHxUAAMrhXONtfkg= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 0e6c1093ae26..480c877f3adc 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -72,7 +72,8 @@ require ( github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect github.com/charmbracelet/x/term v0.2.1 // indirect github.com/ckaznocha/intrange v0.3.1 // indirect - github.com/clipperhouse/uax29/v2 v2.2.0 // indirect + github.com/clipperhouse/stringish v0.1.1 // indirect + github.com/clipperhouse/uax29/v2 v2.3.0 // indirect github.com/curioswitch/go-reassign v0.3.0 // indirect github.com/daixiang0/gci v0.13.7 // indirect github.com/dave/dst v0.27.3 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index a78a060853f9..2061602525d9 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -107,8 +107,10 @@ github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQ github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg= github.com/ckaznocha/intrange v0.3.1 h1:j1onQyXvHUsPWujDH6WIjhyH26gkRt/txNlV7LspvJs= github.com/ckaznocha/intrange v0.3.1/go.mod h1:QVepyz1AkUoFQkpEqksSYpNpUo3c5W7nWh/s6SHIJJk= -github.com/clipperhouse/uax29/v2 v2.2.0 h1:ChwIKnQN3kcZteTXMgb1wztSgaU+ZemkgWdohwgs8tY= -github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= +github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= +github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= +github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= +github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= github.com/cloudflare/cfssl v1.6.5 h1:46zpNkm6dlNkMZH/wMW22ejih6gIaJbzL2du6vD7ZeI= github.com/cloudflare/cfssl v1.6.5/go.mod h1:Bk1si7sq8h2+yVEDrFJiz3d7Aw+pfjjJSZVaD+Taky4= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= From d609aabc364e158c446be47ee82ee21bfbe17c39 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Mon, 22 Dec 2025 22:25:34 -0800 Subject: [PATCH 0696/1068] Fix revive var-naming warning in errors package Updating github.com/golangci/golangci-lint/v2 to 2.7.2 raises the following error: % 'golangci-lint' 'run' '--config' '/var/home/ivan/Code/Personal/etcd/etcd/tools/.golangci.yaml' '--fix' './...' './api/...' './cache/...' './client/pkg/...' './client/v3/...' './ etcdctl/...' './etcdutl/...' './pkg/...' './server/...' './tests/...' './tools/mod/...' './tools/rw-heatmaps/...' './tools/testgrid-analysis/...' ../server/etcdserver/errors/errors.go:15:9: var-naming: avoid package names that conflict with Go standard library package names (revive) package errors ^ 1 issues: * revive: 1 Signed-off-by: Ivan Valdes --- server/etcdserver/errors/errors.go | 1 + 1 file changed, 1 insertion(+) diff --git a/server/etcdserver/errors/errors.go b/server/etcdserver/errors/errors.go index 8de698a1df34..4fb78ba83697 100644 --- a/server/etcdserver/errors/errors.go +++ b/server/etcdserver/errors/errors.go @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//revive:disable-next-line:var-naming package errors import ( From 2a3aed6d1553fdcf2a269c08d9d76f229c592cc6 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Mon, 22 Dec 2025 22:27:17 -0800 Subject: [PATCH 0697/1068] build(deps): bump github.com/golangci/golangci-lint/v2 in /tools/mod Bumps [github.com/golangci/golangci-lint/v2](https://github.com/golangci/golangci-lint) from 2.6.2 to 2.7.2. - [Release notes](https://github.com/golangci/golangci-lint/releases) - [Changelog](https://github.com/golangci/golangci-lint/blob/main/CHANGELOG.md) - [Commits](golangci/golangci-lint@v2.6.2...v2.7.2) --- updated-dependencies: - dependency-name: github.com/golangci/golangci-lint/v2 dependency-version: 2.7.2 dependency-type: direct:production update-type: version-update:semver-minor ... Reference: https://github.com/etcd-io/etcd/pull/21001 Signed-off-by: Ivan Valdes --- etcdctl/go.mod | 2 +- etcdctl/go.sum | 5 +- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 +- go.mod | 2 +- go.sum | 4 +- go.work.sum | 295 +++++++++++++++++++++++++++++++++ pkg/go.mod | 2 +- pkg/go.sum | 5 +- server/go.mod | 2 +- server/go.sum | 4 +- tests/go.mod | 2 +- tests/go.sum | 4 +- tools/mod/go.mod | 22 +-- tools/mod/go.sum | 48 +++--- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 6 +- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 5 +- 19 files changed, 358 insertions(+), 60 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 12129823127f..60c84bb31315 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -9,7 +9,7 @@ require ( github.com/cheggaaa/pb/v3 v3.1.7 github.com/dustin/go-humanize v1.0.1 github.com/olekukonko/tablewriter v1.1.2 - github.com/spf13/cobra v1.10.1 + github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 1be057d118cb..d707656e0b99 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -80,8 +80,8 @@ github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlT github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= @@ -109,6 +109,7 @@ go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 3ff2ada47fab..5b39f1564304 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -16,7 +16,7 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 github.com/olekukonko/tablewriter v1.1.2 - github.com/spf13/cobra v1.10.1 + github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 diff --git a/etcdutl/go.sum b/etcdutl/go.sum index ed58b8c625ff..83e741fda23c 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -98,8 +98,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= diff --git a/go.mod b/go.mod index f3cee4d26ed1..c6c985a7445a 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/cheggaaa/pb/v3 v3.1.7 github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/spf13/cobra v1.10.1 + github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 diff --git a/go.sum b/go.sum index 8772aeb6eabb..f86d399d5e68 100644 --- a/go.sum +++ b/go.sum @@ -132,8 +132,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= diff --git a/go.work.sum b/go.work.sum index 284680b9c201..92e4e032fb49 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,3 +1,4 @@ +bitbucket.org/creachadair/shell v0.0.6/go.mod h1:8Qqi/cYk7vPnsOePHroKXDJYmb5x7ENhtiFtfZq8K+M= bitbucket.org/creachadair/shell v0.0.8 h1:3yM6JcAfaGWzjzcCamTblzSIWXm/YSs0PFGIzBm2HTo= bitbucket.org/creachadair/shell v0.0.8/go.mod h1:vINzudofoUXZSJ5tREgpy+Etyjsag3ait5WOWImEVZ0= bitbucket.org/creachadair/stringset v0.0.11 h1:6Sv4CCv14Wm+OipW4f3tWOb0SQVpBDLW0knnJqUnmZ8= @@ -11,6 +12,7 @@ cel.dev/expr v0.20.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= cel.dev/expr v0.23.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= +cloud.google.com/go v0.60.0/go.mod h1:yw2G51M9IfRboUH61Us8GqCeF1PzPblB823Mn2q2eAU= cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= cloud.google.com/go v0.118.3/go.mod h1:Lhs3YLnBlwJ4KA6nuObNMZ/fCbOQBPuWKPoE0Wa/9Vc= cloud.google.com/go v0.120.0/go.mod h1:/beW32s8/pGRuj4IILWQNd4uuebeT4dkOhKmkfit64Q= @@ -361,6 +363,7 @@ cloud.google.com/go/privatecatalog v0.9.4/go.mod h1:SOjm93f+5hp/U3PqMZAHTtBtluqL cloud.google.com/go/privatecatalog v0.10.4/go.mod h1:n/vXBT+Wq8B4nSRUJNDsmqla5BYjbVxOlHzS6PjiF+w= cloud.google.com/go/privatecatalog v0.10.7 h1:R951ikhxIanXEijBCu0xnoUAOteS5m/Xplek0YvsNTE= cloud.google.com/go/privatecatalog v0.10.7/go.mod h1:Fo/PF/B6m4A9vUYt0nEF1xd0U6Kk19/Je3eZGrQ6l60= +cloud.google.com/go/pubsub v1.5.0/go.mod h1:ZEwJccE3z93Z2HWvstpri00jOg7oO4UZDtKhwDwqF0w= cloud.google.com/go/pubsub v1.34.0/go.mod h1:alj4l4rBg+N3YTFDDC+/YyFTs6JAjam2QfYsddcAW4c= cloud.google.com/go/pubsub v1.47.0/go.mod h1:LaENesmga+2u0nDtLkIOILskxsfvn/BXX9Ak1NFxOs8= cloud.google.com/go/pubsub v1.49.0 h1:5054IkbslnrMCgA2MAEPcsN3Ky+AyMpEZcii/DoySPo= @@ -426,6 +429,7 @@ cloud.google.com/go/shell v1.7.4/go.mod h1:yLeXB8eKLxw0dpEmXQ/FjriYrBijNsONpwnWs cloud.google.com/go/shell v1.8.3/go.mod h1:OYcrgWF6JSp/uk76sNTtYFlMD0ho2+Cdzc7U3P/bF54= cloud.google.com/go/shell v1.8.6 h1:jLWyztGlNWBx55QXBM4HbWvfv7aiRjPzRKTUkZA8dXk= cloud.google.com/go/shell v1.8.6/go.mod h1:GNbTWf1QA/eEtYa+kWSr+ef/XTCDkUzRpV3JPw0LqSk= +cloud.google.com/go/spanner v1.7.0/go.mod h1:sd3K2gZ9Fd0vMPLXzeCrF6fq4i63Q7aTLW/lBIfBkIk= cloud.google.com/go/spanner v1.55.0/go.mod h1:HXEznMUVhC+PC+HDyo9YFG2Ajj5BQDkcbqB9Z2Ffxi0= cloud.google.com/go/spanner v1.76.1/go.mod h1:YtwoE+zObKY7+ZeDCBtZ2ukM+1/iPaMfUM+KnTh/sx0= cloud.google.com/go/spanner v1.82.0 h1:w9uO8RqEoBooBLX4nqV1RtgudyU2ZX780KTLRgeVg60= @@ -499,6 +503,8 @@ cloud.google.com/go/workflows v1.14.2 h1:phBz5TOAES0YGogxZ6Q7ISSudaf618lRhE3euzB cloud.google.com/go/workflows v1.14.2/go.mod h1:5nqKjMD+MsJs41sJhdVrETgvD5cOK3hUcAs8ygqYvXQ= codeberg.org/go-fonts/stix v0.3.0 h1:vHI1LmLWEcAdcf+5aRMtA1eYKJJ9ZjetVstBD/dRe1Q= codeberg.org/go-fonts/stix v0.3.0/go.mod h1:1OSJSnA/PoHqbW2tjkkqTmNPp5xTtJQN2GRXJjO/+WA= +contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= +contrib.go.opencensus.io/exporter/stackdriver v0.13.14/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= contrib.go.opencensus.io/exporter/stackdriver v0.13.15-0.20230702191903-2de6d2748484 h1:xRc46S76eyn4ZF3jWX8I+aUSKVLw5EQ1aDvHwfV5W1o= contrib.go.opencensus.io/exporter/stackdriver v0.13.15-0.20230702191903-2de6d2748484/go.mod h1:uxw+4/0SiKbbVSD/F2tk5pJTdVcfIBBcsQ8gwcu4X+E= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= @@ -524,6 +530,11 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 h1:6/0iUd0xrnX7qt+mLNRwg5c0PGv8wpE8K90ryANQwMI= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0/go.mod h1:otE2jQekW/PqXk1Awf5lmfokJx4uwuqcj1ab5SpGeW0= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU= +github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0= @@ -537,13 +548,17 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafo github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs= github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0 h1:uF5Q/hWnDU1XZeT6CsrRSxHLroUSEYYO3kgES+yd+So= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0/go.mod h1:ccdDYaY5+gO+cbnQdFxEXqfy0RkoV25H3jLXUDNM3wg= github.com/anthropics/anthropic-sdk-go v1.13.0 h1:Bhbe8sRoDPtipttg8bQYrMCKe2b79+q6rFW1vOKEUKI= github.com/anthropics/anthropic-sdk-go v1.13.0/go.mod h1:WTz31rIUHUHqai2UslPpw5CwXrQP3geYBioRV4WOLvE= +github.com/anthropics/anthropic-sdk-go v1.19.0/go.mod h1:WTz31rIUHUHqai2UslPpw5CwXrQP3geYBioRV4WOLvE= +github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= +github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= github.com/apache/arrow/go/v10 v10.0.1 h1:n9dERvixoC/1JjDmBcs9FPaEryoANa2sCgVFo6ez9cI= github.com/apache/arrow/go/v11 v11.0.0 h1:hqauxvFQxww+0mEU/2XHG6LT7eZternCZq+A5Yly2uM= github.com/apache/arrow/go/v12 v12.0.1 h1:JsR2+hzYYjgSUkBSaahpqCetqZMr76djX80fF/DiJbg= @@ -551,40 +566,60 @@ github.com/apache/arrow/go/v12 v12.0.1/go.mod h1:weuTY7JvTG/HDPtMQxEUp7pU73vkLWM github.com/apache/arrow/go/v15 v15.0.2 h1:60IliRbiyTWCWjERBCkO1W4Qun9svcYoZrSLcyOsMLE= github.com/apache/arrow/go/v15 v15.0.2/go.mod h1:DGXsR3ajT524njufqf95822i+KTh+yea1jass9YXgjA= github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= +github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.36.30/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.46.4 h1:48tKgtm9VMPkb6y7HuYlsfhQmoIRAsTEXTsWLVlty4M= github.com/aws/aws-sdk-go v1.46.4/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= github.com/aws/aws-sdk-go-v2 v1.36.3 h1:mJoei2CxPutQVxaATCzDUjcZEjVRdpsiiXi2o38yqWM= github.com/aws/aws-sdk-go-v2 v1.36.3/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3/go.mod h1:UbnqO+zjqk3uIt9yCACHJ9IVNhyhOCnYk8yA19SAWrM= +github.com/aws/aws-sdk-go-v2/config v1.27.27/go.mod h1:MVYamCg76dFNINkZFu4n4RjDixhVr51HLj4ErWzrVwg= github.com/aws/aws-sdk-go-v2/config v1.29.12 h1:Y/2a+jLPrPbHpFkpAAYkVEtJmxORlXoo5k2g1fa2sUo= github.com/aws/aws-sdk-go-v2/config v1.29.12/go.mod h1:xse1YTjmORlb/6fhkWi8qJh3cvZi4JoVNhc+NbJt4kI= +github.com/aws/aws-sdk-go-v2/credentials v1.17.27/go.mod h1:gniiwbGahQByxan6YjQUMcW4Aov6bLC3m+evgcoN4r4= github.com/aws/aws-sdk-go-v2/credentials v1.17.65 h1:q+nV2yYegofO/SUXruT+pn4KxkxmaQ++1B/QedcKBFM= github.com/aws/aws-sdk-go-v2/credentials v1.17.65/go.mod h1:4zyjAuGOdikpNYiSGpsGz8hLGmUzlY8pc8r9QQ/RXYQ= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11/go.mod h1:SeSUYBLsMYFoRvHE0Tjvn7kbxaUhl75CJi1sbfhMxkU= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15/go.mod h1:U9ke74k1n2bf+RIgoX1SXFed1HLs51OgUSs+Ph0KJP8= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 h1:ZK5jHhnrioRkUNOc+hOgQKlUL5JeC3S6JgLxtQ+Rm0Q= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34/go.mod h1:p4VfIceZokChbA9FzMbRGz5OV+lekcVtHlPKEO0gSZY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15/go.mod h1:ZQLZqhcu+JhSrA9/NXRm8SkDvsycE+JkV3WGY41e+IM= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 h1:SZwFm17ZUNNg5Np0ioo/gq8Mn6u9w19Mri8DnJ15Jf0= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34/go.mod h1:dFZsC0BLo346mvKQLWmoJxT+Sjp+qcVR1tRVHQGOH9Q= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3/go.mod h1:GlAeCkHwugxdHaueRr4nhPuY+WW+gR8UjlcqzPr1SPI= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17/go.mod h1:RkZEx4l0EHYDJpWppMJ3nD9wZJAa8/0lq9aVC+r2UII= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 h1:dM9/92u2F1JbDaGooxTq18wmmFzbJRfXfVfy96/1CXM= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15/go.mod h1:SwFBy2vjtA0vZbjjaFtfN045boopadnoVPhu4Fv66vY= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.4/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU= github.com/aws/aws-sdk-go-v2/service/sso v1.25.2 h1:pdgODsAhGo4dvzC3JAG5Ce0PX8kWXrTZGx+jxADD+5E= github.com/aws/aws-sdk-go-v2/service/sso v1.25.2/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.0 h1:90uX0veLKcdHVfvxhkWUQSCi5VabtwMLFutYiRke4oo= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.0/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.3/go.mod h1:zwySh8fpFyXp9yOr/KVzxOl8SRqgf/IDw5aUt9UKFcQ= github.com/aws/aws-sdk-go-v2/service/sts v1.33.17 h1:PZV5W8yk4OtH1JAuhV2PXwwO9v5G5Aoj+eMCn4T+1Kc= github.com/aws/aws-sdk-go-v2/service/sts v1.33.17/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4= +github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/aws/smithy-go v1.22.3 h1:Z//5NuZCSW6R4PhQ93hShNbyBbn8BWCmCVCt+Q8Io5k= github.com/aws/smithy-go v1.22.3/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWpi6yML8= github.com/aymanbagabas/go-udiff v0.2.0/go.mod h1:RE4Ex0qsGkTAJoQdQQCA0uG+nAzJO/pI/QwceO5fgrA= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= @@ -593,12 +628,15 @@ github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqy github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a h1:G99klV19u0QnhiizODirwVksQB91TJKV/UaTnACcG30= github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= +github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= +github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a h1:8d1CEOF1xldesKds5tRG3tExBsMOgWYownMHNCsev54= github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a/go.mod h1:rzgs2ZOiguV6/NpiDgADjRLPNyZlApIWxKpkT+X8SdY= github.com/cloudflare/circl v1.1.0 h1:bZgT/A+cikZnKIwn7xL2OBj012Bmvho/o6RpRvv3GKY= @@ -610,12 +648,30 @@ github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1Ig github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190620071333-e64a0ec8b42a/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/cristalhq/acmd v0.12.0 h1:RdlKnxjN+txbQosg8p/TRNZ+J1Rdne43MVQZ1zDhGWk= github.com/cristalhq/acmd v0.12.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= +github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/ebitengine/purego v0.9.0 h1:mh0zpKBIXDceC63hpvPuGLiJ8ZAa3DfrFTudmfi8A4k= github.com/ebitengine/purego v0.9.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/ebitengine/purego v0.9.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/eliben/go-sentencepiece v0.6.0/go.mod h1:nNYk4aMzgBoI6QFp4LUG8Eu1uO9fHD9L5ZEre93o9+c= github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329 h1:K+fnvUM0VZ7ZFJf0n4L/BRlnsb9pL/GuDG6FqaH+PwM= @@ -625,19 +681,28 @@ github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBV github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= +github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fullstorydev/grpcurl v1.6.0/go.mod h1:ZQ+ayqbKMJNhzLmbpCiurTVlaK2M/3nqZCxaQ2Ze/sM= github.com/fullstorydev/grpcurl v1.8.9 h1:JMvZXK8lHDGyLmTQ0ZdGDnVVGuwjbpaumf8p42z0d+c= github.com/fullstorydev/grpcurl v1.8.9/go.mod h1:PNNKevV5VNAV2loscyLISrEnWQI61eqR0F8l3bVadAA= github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw= github.com/getsentry/sentry-go v0.11.0 h1:qro8uttJGvNAMr5CLcFI9CHR0aDzXl0Vs3Pmw/oTPg8= github.com/getsentry/sentry-go v0.11.0/go.mod h1:KBQIxiZAetw62Cj8Ri964vAEWVdgfaUCn30Q3bCvANo= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= +github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= +github.com/gkampitakis/go-snaps v0.5.15/go.mod h1:HNpx/9GoKisdhw9AFOBT1N7DBs9DiHo/hGheFGBZ+mc= github.com/go-chi/chi v1.5.4 h1:QHdzF2szwjqVV4wmByUnTcsbIg7UGaQ0tPF2t5GcAIs= github.com/go-fonts/dejavu v0.1.0 h1:JSajPXURYqpr+Cu8U9bt8K+XcACIHWqWrvWCKyeFmVQ= github.com/go-fonts/latin-modern v0.2.0 h1:5/Tv1Ek/QCr20C6ZOz15vw3g7GELYL98KWr8Hgo+3vk= @@ -660,25 +725,36 @@ github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-pdf/fpdf v0.6.0 h1:MlgtGIfsdMEEQJr2le6b/HNr1ZlQwxyWr77r2aj2U/8= +github.com/go-redis/redis v6.15.8+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372 h1:FQivqchis6bE2/9uF70M2gmmLpe82esEm2QadL0TEJo= github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372/go.mod h1:evDBbvNR/KaVFZ2ZlDSOWWXIUKq0wCOEtzLxRM8SG3k= +github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198 h1:FSii2UQeSLngl3jFoR4tUKZLprO7qUlh/TKKticc0BM= github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198/go.mod h1:DTh/Y2+NbnOVVoypCCQrovMPDKUGp4yZpSbWg5D0XIM= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I= github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= +github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/google/cel-go v0.25.0 h1:jsFw9Fhn+3y2kBbltZR4VEz5xKkcIFRPDnuEzAGv5GY= github.com/google/cel-go v0.25.0/go.mod h1:hjEb6r5SuOSlhCHmFoLzu8HGCERvIsDAbxDAyNU/MmI= +github.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= +github.com/google/certificate-transparency-go v1.1.1/go.mod h1:FDKqPvSXawb2ecErVRrD+nfy23RCzyl7eqVCEmlT1Zs= github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= @@ -690,11 +766,16 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= +github.com/google/pprof v0.0.0-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= +github.com/google/trillian v1.3.11/go.mod h1:0tPraVHrSDkA3BO6vKX67zgLXs6SsOAbHEivX+9mPgw= github.com/google/trillian v1.6.0 h1:jMBeDBIkINFvS2n6oV5maDqfRlxREAc6CW9QYWQ0qT4= github.com/google/trillian v1.6.0/go.mod h1:Yu3nIMITzNhhMJEHjAtp6xKiu+H/iHu2Oq5FjV2mCWI= +github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/cloud-bigtable-clients-test v0.0.3 h1:afMKTvA/jc6jSTMkeHBZGFDTt8Cc+kb1ATFzqMK85hw= github.com/googleapis/cloud-bigtable-clients-test v0.0.3/go.mod h1:TWtDzrrAI70C3dNLDY+nZN3gxHtFdZIbpL9rCTFyxE0= github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= @@ -705,27 +786,51 @@ github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81 github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8 h1:tlyzajkF3030q6M8SvmJSemC9DTHL/xaMa18b65+JM4= +github.com/gookit/assert v0.1.1/go.mod h1:jS5bmIVQZTIwk42uXl4lyj4iaaxx32tqH16CFj0VX2E= github.com/gookit/color v1.6.0 h1:JjJXBTk1ETNyqyilJhkTXJYYigHG24TM9Xa2M1xAhRA= github.com/gookit/color v1.6.0/go.mod h1:9ACFc7/1IpHGBW8RwuDm/0YEnhg3dwwXpoMsmtyHfjs= +github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= +github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= +github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= +github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI= +github.com/ianlancetaylor/demangle v0.0.0-20250417193237-f615e6bd150b/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= +github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= @@ -734,21 +839,33 @@ github.com/jackc/pgx/v5 v5.4.3 h1:cxFyXhxlvAifxnkKKdlxv8XqUf59tDlYjnV5YYfsJJY= github.com/jackc/pgx/v5 v5.4.3/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA= github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4= github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jonboulle/clockwork v0.2.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/joshdk/go-junit v1.0.0/go.mod h1:TiiV0PqkaNfFXjEiyjWM3XXrhVyCa1K4Zfga6W52ung= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= +github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5 h1:PJr+ZMXIecYc1Ey2zucXdR73SMBtgjPgwa31099IMv0= +github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= @@ -757,6 +874,8 @@ github.com/kylelemons/go-gypsy v1.0.0 h1:7/wQ7A3UL1bnqRMnZ6T8cwCOArfZCxFmb1iTxaO github.com/kylelemons/go-gypsy v1.0.0/go.mod h1:chkXM0zjdpXOiqkCW1XcCHDfjfk14PH2KKkQWxfJUcU= github.com/letsencrypt/pkcs11key/v4 v4.0.0 h1:qLc/OznH7xMr5ARJgkZCCWk+EomQkiNTOoOF5LAgagc= github.com/letsencrypt/pkcs11key/v4 v4.0.0/go.mod h1:EFUvBDay26dErnNb70Nd0/VW3tJiIbETBPTl9ATXQag= +github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lyft/protoc-gen-star v0.6.1 h1:erE0rdztuaDq3bpGifD95wfoPrSZc95nGA6tbiNYh6M= @@ -764,32 +883,65 @@ github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4 h1:sIXJO github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/magefile/mage v1.14.0 h1:6QDX3g6z1YvJ4olPhT1wksUcSa/V0a1B+pJb73fBjyo= github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/mfridman/tparse v0.18.0/go.mod h1:gEvqZTuCgEhPbYk/2lS3Kcxg1GmTxxU7kTC8DvP0i/A= github.com/mgechev/dots v1.0.0 h1:o+4OJ3OjWzgQHGJXKfJ8rbH4dqDugu5BiEy84nxg0k4= github.com/mgechev/dots v1.0.0/go.mod h1:rykuMydC9t3wfkM+ccYH3U3ss03vZGg6h3hmOznXLH0= +github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU= github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/mozilla/scribe v0.0.0-20180711195314-fb71baf557c1/go.mod h1:FIczTrinKo8VaLxe6PWTPEXRXDIHz2QAwiaBaP5/4a8= github.com/mozilla/tls-observatory v0.0.0-20250923143331-eef96233227e h1:gOlpekCwR+xjqedQsHo1c7aUSixaQUIe3sAcEeDCMLc= github.com/mozilla/tls-observatory v0.0.0-20250923143331-eef96233227e/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= github.com/mreiferson/go-httpclient v0.0.0-20201222173833-5e475fde3a4d h1:tLWCMSjfL8XyZwpu1RzI2UpJSPbZCOZ6DVHQFnlpL7A= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo= +github.com/mwitkow/go-proto-validators v0.2.0/go.mod h1:ZfA1hW+UH/2ZHOWvQ3HnQaU0DtnpXu850MZiy+YUgcc= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/nishanths/predeclared v0.0.0-20190419143655-18a43bb90ffc/go.mod h1:62PewwiQTlm/7Rj+cxVYqZvDIUc+JjZq6GHAC1fsObQ= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.2/go.mod h1:rSAaSIOAGT9odnlyGlUfAJaoc5w2fSBUmeGDbRWPxyQ= github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0 h1:LiZB1h0GIcudcDci2bxbqI6DXV8bF8POAnArqvRrIyw= github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0/go.mod h1:F/7q8/HZz+TXjlsoZQQKVYvXTZaFH4QRa3y+j1p7MS0= +github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= github.com/otiai10/curr v1.0.0 h1:TJIWdbX0B+kpNagQrjgq8bCMrbhiuX73M2XwgtDMoOI= github.com/otiai10/mint v1.3.1 h1:BCmzIS3n71sGfHB5NMNDB3lHYPz8fWSkCAErHed//qc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/phpdave11/gofpdf v1.4.2 h1:KPKiIbfwbvC/wOncwhrpRdXVj2CZTCFlw4wnoyjtHfQ= github.com/phpdave11/gofpdi v1.0.13 h1:o61duiW8M9sMlkVXWlvP92sZJtGKENvW3VExs6dZukQ= github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= @@ -797,66 +949,125 @@ github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFu github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/sftp v1.13.1 h1:I2qBYMChEhIjOgazfJmV3/mZM256btk6wkCDRmW7JYs= +github.com/pkg/sftp v1.13.7/go.mod h1:KMKI0t3T6hfA+lTR/ssZdunHo+uwq7ghoN09/FSu3DY= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= +github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/prometheus/prometheus v0.47.2 h1:jWcnuQHz1o1Wu3MZ6nMJDuTI0kU5yJp9pkxh8XEkNvI= github.com/prometheus/prometheus v0.47.2/go.mod h1:J/bmOSjgH7lFxz2gZhrWEZs2i64vMS+HIuZfmYNhJ/M= +github.com/pseudomuto/protoc-gen-doc v1.3.2/go.mod h1:y5+P6n3iGrbKG+9O04V5ld71in3v/bX88wUwgt+U8EA= +github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71 h1:CNooiryw5aisadVfzneSZPswRWvnVW8hF1bS/vo8ReI= github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY= +github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= github.com/shirou/gopsutil/v4 v4.25.10 h1:at8lk/5T1OgtuCp+AwrDofFRjnvosn0nkN2OLQ6g8tA= github.com/shirou/gopsutil/v4 v4.25.10/go.mod h1:+kSwyC8DRUD9XXEHCAFjK+0nuArFJM0lva+StQAcskM= +github.com/shirou/gopsutil/v4 v4.25.11/go.mod h1:EivAfP5x2EhLp2ovdpKSozecVXn1TmuG7SMzs/Wh4PU= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo= github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs= github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= +github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo= +github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= +github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= +github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/transparency-dev/merkle v0.0.2 h1:Q9nBoQcZcgPamMkGn7ghV8XiTZ/kRxn1yCG81+twTK4= github.com/transparency-dev/merkle v0.0.2/go.mod h1:pqSy+OXefQ1EDUVmAJ8MUhHB9TXGuzVAT58PqBoHz1A= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.14 h1:ebbhrRiGK2i4naQJr+1Xj92HXZCrK7MsyTS/ob3HnAk= github.com/urfave/cli v1.22.14/go.mod h1:X0eDS6pD6Exaclxm99NJ3FiCDRED7vIHpx2mDOHLvkA= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.55.0/go.mod h1:NkY9JtkrpPKmgwV3HTaS2HWaJss9RSIsRVfcxxoHiOM= github.com/valyala/quicktemplate v1.8.0 h1:zU0tjbIqTRgKQzFY1L42zq0qR3eh4WoQQdIdqCysW5k= github.com/valyala/quicktemplate v1.8.0/go.mod h1:qIqW8/igXt8fdrUln5kOSb+KWMaJ4Y8QUsfd1k6L2jM= +github.com/viki-org/dnscache v0.0.0-20130720023526-c70c1f23c5d8/go.mod h1:dniwbG03GafCjFohMDmz6Zc6oCuiqgH6tGNyXTkHzXE= github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= +github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= @@ -870,10 +1081,14 @@ github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 h1:Nzukz5fNOBIHOsnP+6I79k github.com/zmap/zcertificate v0.0.1 h1:2X15TRx4Fr6qzKItfwUdww294OeRSmHILLa+Xn2Uv+s= go.einride.tech/aip v0.68.1 h1:16/AfSxcQISGN5z9C5lM+0mLYXihrHbQ1onvYTr93aQ= go.einride.tech/aip v0.68.1/go.mod h1:XaFtaj4HuA3Zwk9xoBtTWgNubZ0ZZXv9BZJCkuKuWbg= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k= go.etcd.io/etcd/client/v2 v2.305.12 h1:0m4ovXYo1CHaA/Mp3X/Fak5sRNIWf01wk/X1/G3sGKI= go.etcd.io/etcd/client/v2 v2.305.12/go.mod h1:aQ/yhsxMu+Oht1FOupSr60oBvcS9cKXHrzBpDsPTf9E= go.etcd.io/etcd/raft/v3 v3.5.12 h1:7r22RufdDsq2z3STjoR7Msz6fYH8tmbkdheGfwJNRmU= go.etcd.io/etcd/raft/v3 v3.5.12/go.mod h1:ERQuZVe79PI6vcC3DlKBukDCLja/L7YMu29B74Iwj4U= +go.mozilla.org/mozlog v0.0.0-20170222151521-4bb13139d403/go.mod h1:jHoPAGnDrCy6kaI2tAze5Prf0Nr0w/oNkROt2lw3n3o= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= @@ -886,38 +1101,65 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6h go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel/exporters/prometheus v0.57.0 h1:AHh/lAP1BHrY5gBwk8ncc25FXWm/gmmY3BX258z5nuk= go.opentelemetry.io/otel/exporters/prometheus v0.57.0/go.mod h1:QpFWz1QxqevfjwzYdbMb4Y1NnlJvqSGwyuU0B4iuc9c= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c h1:jTMrjjZRcSH/BDxWhXCP6OWsfVgmnwI7J+F4/nyVXaU= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= +golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= @@ -929,19 +1171,34 @@ golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/net v0.46.1-0.20251013234738-63d1a5100f82/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= @@ -950,6 +1207,7 @@ golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= @@ -961,23 +1219,47 @@ golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191010075000-0337d82405ff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200630154851-b2d8b0336632/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200706234117-b22de6825cf7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= +golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= +golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= +google.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.229.0/go.mod h1:wyDfmq5g1wYJWn29O22FDWN48P7Xcz0xz+LBpptYvB0= google.golang.org/api v0.232.0/go.mod h1:p9QCfBWZk1IJETUdbTKloR5ToFdKbYh2fkjsUL6vNoY= google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= +google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genai v1.30.0 h1:7021aneIvl24nEBLbtQFEWleHsMbjzpcQvkT4WcJ1dc= google.golang.org/genai v1.30.0/go.mod h1:7pAilaICJlQBonjKKJNhftDFv3SREhZcTe9F6nRcjbg= +google.golang.org/genai v1.36.0/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= +google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20200626011028-ee7919e894b5/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200707001353-8e8330bf89df/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE= google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= @@ -1003,9 +1285,14 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= 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-20251014184007-4626949a642f/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc v1.67.3/go.mod h1:YGaHCc6Oap+FzBJTZLBzkGSYt/cvGPFTPxkn7QfSU8s= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= @@ -1034,16 +1321,23 @@ google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/ google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg= gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.6/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= k8s.io/api v0.27.4 h1:0pCo/AN9hONazBKlNUdhQymmnfLRbSZjd5H5H3f0bSs= @@ -1072,3 +1366,4 @@ sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMm sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/pkg/go.mod b/pkg/go.mod index ddb630d4f3e4..e0e9abb0f8d3 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -7,7 +7,7 @@ toolchain go1.25.5 require ( github.com/creack/pty v1.1.18 github.com/dustin/go-humanize v1.0.1 - github.com/spf13/cobra v1.10.1 + github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 diff --git a/pkg/go.sum b/pkg/go.sum index 37b4cc2df946..39750ebae1e5 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -28,8 +28,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= @@ -53,6 +53,7 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= diff --git a/server/go.mod b/server/go.mod index 8768941e970e..1ff314d54aab 100644 --- a/server/go.mod +++ b/server/go.mod @@ -21,7 +21,7 @@ require ( github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 github.com/soheilhy/cmux v0.1.5 - github.com/spf13/cobra v1.10.1 + github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 diff --git a/server/go.sum b/server/go.sum index d63c115bc8f2..3555b1b7792d 100644 --- a/server/go.sum +++ b/server/go.sum @@ -78,8 +78,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= diff --git a/tests/go.mod b/tests/go.mod index dbad8473ed3c..c15ee3421d8d 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -89,7 +89,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/cobra v1.10.1 // indirect + github.com/spf13/cobra v1.10.2 // indirect github.com/spf13/pflag v1.0.10 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect diff --git a/tests/go.sum b/tests/go.sum index 9b4427f80125..43e358504d7c 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -138,8 +138,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 480c877f3adc..8d53c8c00919 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -9,7 +9,7 @@ require ( github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint/v2 v2.6.2 + github.com/golangci/golangci-lint/v2 v2.7.2 github.com/google/yamlfmt v0.20.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/ryancurrah/gomodguard v1.4.1 @@ -39,7 +39,7 @@ require ( github.com/BurntSushi/toml v1.5.0 // indirect github.com/Djarvur/go-err113 v0.1.1 // indirect github.com/Masterminds/semver/v3 v3.4.0 // indirect - github.com/MirrexOne/unqueryvet v1.2.1 // indirect + github.com/MirrexOne/unqueryvet v1.3.0 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect github.com/alecthomas/chroma/v2 v2.20.0 // indirect github.com/alecthomas/go-check-sumtype v0.3.1 // indirect @@ -62,7 +62,7 @@ require ( github.com/breml/errchkjson v0.4.1 // indirect github.com/butuzov/ireturn v0.4.0 // indirect github.com/butuzov/mirror v1.3.0 // indirect - github.com/catenacyber/perfsprint v0.10.0 // indirect + github.com/catenacyber/perfsprint v0.10.1 // indirect github.com/ccojocar/zxcvbn-go v1.0.4 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charithe/durationcheck v0.0.11 // indirect @@ -101,7 +101,7 @@ require ( github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/godoc-lint/godoc-lint v0.10.1 // indirect + github.com/godoc-lint/godoc-lint v0.10.2 // indirect github.com/gofrs/flock v0.13.0 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golangci/asciicheck v0.5.0 // indirect @@ -123,7 +123,7 @@ require ( github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect github.com/gostaticanalysis/nilerr v0.1.2 // indirect github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect - github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/go-version v1.8.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -158,7 +158,7 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.19 // indirect github.com/mattn/go-sqlite3 v1.14.24 // indirect - github.com/mgechev/revive v1.12.0 // indirect + github.com/mgechev/revive v1.13.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moricho/tparallel v0.3.2 // indirect @@ -192,26 +192,26 @@ require ( github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect - github.com/securego/gosec/v2 v2.22.10 // indirect + github.com/securego/gosec/v2 v2.22.11-0.20251204091113-daccba6b93d7 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sivchari/containedctx v1.0.3 // indirect github.com/sonatard/noctx v0.4.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/sourcegraph/go-diff v0.7.0 // indirect - github.com/spf13/afero v1.14.0 // indirect + github.com/spf13/afero v1.15.0 // indirect github.com/spf13/cast v1.7.1 // indirect - github.com/spf13/cobra v1.10.1 // indirect + github.com/spf13/cobra v1.10.2 // indirect github.com/spf13/pflag v1.0.10 // indirect github.com/spf13/viper v1.20.0 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect - github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect + github.com/stbenjam/no-sprintf-host-port v0.3.1 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/stretchr/testify v1.11.1 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/tetafro/godot v1.5.4 // indirect github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 // indirect github.com/timonwong/loggercheck v0.11.0 // indirect - github.com/tomarrell/wrapcheck/v2 v2.11.0 // indirect + github.com/tomarrell/wrapcheck/v2 v2.12.0 // indirect github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect github.com/ultraware/funlen v0.2.0 // indirect github.com/ultraware/whitespace v0.2.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 2061602525d9..b29e98a01dd3 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -31,8 +31,8 @@ github.com/Djarvur/go-err113 v0.1.1 h1:eHfopDqXRwAi+YmCUas75ZE0+hoBHJ2GQNLYRSxao github.com/Djarvur/go-err113 v0.1.1/go.mod h1:IaWJdYFLg76t2ihfflPZnM1LIQszWOsFDh2hhhAVF6k= github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= -github.com/MirrexOne/unqueryvet v1.2.1 h1:M+zdXMq84g+E1YOLa7g7ExN3dWfZQrdDSTCM7gC+m/A= -github.com/MirrexOne/unqueryvet v1.2.1/go.mod h1:IWwCwMQlSWjAIteW0t+28Q5vouyktfujzYznSIWiuOg= +github.com/MirrexOne/unqueryvet v1.3.0 h1:5slWSomgqpYU4zFuZ3NNOfOUxVPlXFDBPAVasZOGlAY= +github.com/MirrexOne/unqueryvet v1.3.0/go.mod h1:IWwCwMQlSWjAIteW0t+28Q5vouyktfujzYznSIWiuOg= github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= @@ -87,8 +87,8 @@ github.com/butuzov/ireturn v0.4.0/go.mod h1:ghI0FrCmap8pDWZwfPisFD1vEc56VKH4NpQU github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/catenacyber/perfsprint v0.10.0 h1:AZj1mYyxbxLRqmnYOeguZXEQwWOgQGm2wzLI5d7Hl/0= -github.com/catenacyber/perfsprint v0.10.0/go.mod h1:DJTGsi/Zufpuus6XPGJyKOTMELe347o6akPvWG9Zcsc= +github.com/catenacyber/perfsprint v0.10.1 h1:u7Riei30bk46XsG8nknMhKLXG9BcXz3+3tl/WpKm0PQ= +github.com/catenacyber/perfsprint v0.10.1/go.mod h1:DJTGsi/Zufpuus6XPGJyKOTMELe347o6akPvWG9Zcsc= github.com/ccojocar/zxcvbn-go v1.0.4 h1:FWnCIRMXPj43ukfX000kvBZvV6raSxakYr1nzyNrUcc= github.com/ccojocar/zxcvbn-go v1.0.4/go.mod h1:3GxGX+rHmueTUMvm5ium7irpyjmm7ikxYFOSJB21Das= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= @@ -186,8 +186,8 @@ github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUW github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/godoc-lint/godoc-lint v0.10.1 h1:ZPUVzlDtJfA+P688JfPJPkI/SuzcBr/753yGIk5bOPA= -github.com/godoc-lint/godoc-lint v0.10.1/go.mod h1:KleLcHu/CGSvkjUH2RvZyoK1MBC7pDQg4NxMYLcBBsw= +github.com/godoc-lint/godoc-lint v0.10.2 h1:dksNgK+zebnVlj4Fx83CRnCmPO0qRat/9xfFsir1nfg= +github.com/godoc-lint/godoc-lint v0.10.2/go.mod h1:KleLcHu/CGSvkjUH2RvZyoK1MBC7pDQg4NxMYLcBBsw= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -205,8 +205,8 @@ github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarog github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint/v2 v2.6.2 h1:jkMSVv36JmyTENcEertckvimvjPcD5qxNM7W7qhECvI= -github.com/golangci/golangci-lint/v2 v2.6.2/go.mod h1:fSIMDiBt9kzdpnvvV7GO6iWzyv5uaeZ+iPor+2uRczE= +github.com/golangci/golangci-lint/v2 v2.7.2 h1:AhBC+YeEueec4AGlIbvPym5C70Thx0JykIqXbdIXWx0= +github.com/golangci/golangci-lint/v2 v2.7.2/go.mod h1:pDijleoBu7e8sejMqyZ3L5n6geqe+cVvOAz2QImqqVc= github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 h1:AkK+w9FZBXlU/xUmBtSJN1+tAI4FIvy5WtnUnY8e4p8= github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95/go.mod h1:k9mmcyWKSTMcPPvQUCfRWWQ9VHJ1U9Dc0R7kaXAgtnQ= github.com/golangci/misspell v0.7.0 h1:4GOHr/T1lTW0hhR4tgaaV1WS/lJ+ncvYCoFKmqJsj0c= @@ -257,8 +257,8 @@ github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1T 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.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= -github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +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/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= @@ -340,8 +340,8 @@ github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhg github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/mgechev/revive v1.12.0 h1:Q+/kkbbwerrVYPv9d9efaPGmAO/NsxwW/nE6ahpQaCU= -github.com/mgechev/revive v1.12.0/go.mod h1:VXsY2LsTigk8XU9BpZauVLjVrhICMOV3k1lpB3CXrp8= +github.com/mgechev/revive v1.13.0 h1:yFbEVliCVKRXY8UgwEO7EOYNopvjb1BFbmYqm9hZjBM= +github.com/mgechev/revive v1.13.0/go.mod h1:efJfeBVCX2JUumNQ7dtOLDja+QKj9mYGgEZA7rt5u+0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -362,8 +362,8 @@ github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= github.com/nunnatsa/ginkgolinter v0.21.2 h1:khzWfm2/Br8ZemX8QM1pl72LwM+rMeW6VUbQ4rzh0Po= github.com/nunnatsa/ginkgolinter v0.21.2/go.mod h1:GItSI5fw7mCGLPmkvGYrr1kEetZe7B593jcyOpyabsY= -github.com/onsi/ginkgo/v2 v2.26.0 h1:1J4Wut1IlYZNEAWIV3ALrT9NfiaGW2cDCJQSFQMs/gE= -github.com/onsi/ginkgo/v2 v2.26.0/go.mod h1:qhEywmzWTBUY88kfO0BRvX4py7scov9yR+Az2oavUzw= +github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns= +github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A= github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= @@ -428,8 +428,8 @@ github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tM github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= github.com/sashamelentyev/usestdlibvars v1.29.0 h1:8J0MoRrw4/NAXtjQqTHrbW9NN+3iMf7Knkq057v4XOQ= github.com/sashamelentyev/usestdlibvars v1.29.0/go.mod h1:8PpnjHMk5VdeWlVb4wCdrB8PNbLqZ3wBZTZWkrpZZL8= -github.com/securego/gosec/v2 v2.22.10 h1:ntbBqdWXnu46DUOXn+R2SvPo3PiJCDugTCgTW2g4tQg= -github.com/securego/gosec/v2 v2.22.10/go.mod h1:9UNjK3tLpv/w2b0+7r82byV43wCJDNtEDQMeS+H/g2w= +github.com/securego/gosec/v2 v2.22.11-0.20251204091113-daccba6b93d7 h1:rZg6IGn0ySYZwCX8LHwZoYm03JhG/cVAJJ3O+u3Vclo= +github.com/securego/gosec/v2 v2.22.11-0.20251204091113-daccba6b93d7/go.mod h1:9sr22NZO5Kfh7unW/xZxkGYTmj2484/fCiE54gw7UTY= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= @@ -447,12 +447,12 @@ github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9yS github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= -github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA= -github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZmbYo= +github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= +github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= @@ -461,8 +461,8 @@ github.com/spf13/viper v1.20.0 h1:zrxIyR3RQIOsarIrgL8+sAvALXul9jeEPa06Y0Ph6vY= github.com/spf13/viper v1.20.0/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= -github.com/stbenjam/no-sprintf-host-port v0.2.0 h1:i8pxvGrt1+4G0czLr/WnmyH7zbZ8Bg8etvARQ1rpyl4= -github.com/stbenjam/no-sprintf-host-port v0.2.0/go.mod h1:eL0bQ9PasS0hsyTyfTjjG+E80QIyPnBVQbYZyv20Jfk= +github.com/stbenjam/no-sprintf-host-port v0.3.1 h1:AyX7+dxI4IdLBPtDbsGAyqiTSLpCP9hWRrXQDU4Cm/g= +github.com/stbenjam/no-sprintf-host-port v0.3.1/go.mod h1:ODbZesTCHMVKthBHskvUUexdcNHAQRXk9NpSsL8p/HQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= @@ -486,8 +486,8 @@ github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 h1:9LPGD+jzxMlnk github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= github.com/timonwong/loggercheck v0.11.0 h1:jdaMpYBl+Uq9mWPXv1r8jc5fC3gyXx4/WGwTnnNKn4M= github.com/timonwong/loggercheck v0.11.0/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= -github.com/tomarrell/wrapcheck/v2 v2.11.0 h1:BJSt36snX9+4WTIXeJ7nvHBQBcm1h2SjQMSlmQ6aFSU= -github.com/tomarrell/wrapcheck/v2 v2.11.0/go.mod h1:wFL9pDWDAbXhhPZZt+nG8Fu+h29TtnZ2MW6Lx4BRXIU= +github.com/tomarrell/wrapcheck/v2 v2.12.0 h1:H/qQ1aNWz/eeIhxKAFvkfIA+N7YDvq6TWVFL27Of9is= +github.com/tomarrell/wrapcheck/v2 v2.12.0/go.mod h1:AQhQuZd0p7b6rfW+vUwHm5OMCGgp63moQ9Qr/0BpIWo= github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index a79be808892a..cc9dfe18083a 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -5,7 +5,7 @@ go 1.25.0 toolchain go1.25.5 require ( - github.com/spf13/cobra v1.10.1 + github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 gonum.org/v1/plot v0.15.2 ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index e5a8d723131b..e9227ddd1f3a 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -29,12 +29,13 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -67,7 +68,6 @@ gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E gonum.org/v1/plot v0.15.2 h1:Tlfh/jBk2tqjLZ4/P8ZIwGrLEWQSPDLRm/SNWKNXiGI= gonum.org/v1/plot v0.15.2/go.mod h1:DX+x+DWso3LTha+AdkJEv5Txvi+Tql3KAGkehP0/Ubg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= rsc.io/pdf v0.1.1 h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index ca7b03d84c49..2321b4869316 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -7,7 +7,7 @@ toolchain go1.25.5 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 github.com/google/go-github/v60 v60.0.0 - github.com/spf13/cobra v1.10.1 + github.com/spf13/cobra v1.10.2 google.golang.org/protobuf v1.36.10 ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index aa6ab405474e..6e29f06c4863 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1140,8 +1140,8 @@ github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTd github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= @@ -1194,6 +1194,7 @@ go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42s go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= From 13d41bf1855eb7b2ac03f42f930c0b996cdd3812 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Mon, 22 Dec 2025 22:31:47 -0800 Subject: [PATCH 0698/1068] build(deps): bump go.opentelemetry.io/otel/sdk from 1.38.0 to 1.39.0 Bumps [go.opentelemetry.io/otel/sdk](https://github.com/open-telemetry/opentelemetry-go) from 1.38.0 to 1.39.0. - [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases) - [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md) - [Commits](open-telemetry/opentelemetry-go@v1.38.0...v1.39.0) --- updated-dependencies: - dependency-name: go.opentelemetry.io/otel/sdk dependency-version: 1.39.0 dependency-type: indirect update-type: version-update:semver-minor ... Reference: https://github.com/etcd-io/etcd/pull/21002 Signed-off-by: Ivan Valdes --- api/go.mod | 5 +- api/go.sum | 27 +-- cache/go.mod | 2 +- cache/go.sum | 24 +-- client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 +- client/v3/go.mod | 5 +- client/v3/go.sum | 24 +-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 24 +-- etcdutl/go.mod | 10 +- etcdutl/go.sum | 24 +-- go.mod | 10 +- go.sum | 24 +-- go.work.sum | 314 ++------------------------------- pkg/go.mod | 8 +- pkg/go.sum | 26 +-- server/go.mod | 10 +- server/go.sum | 24 +-- tests/go.mod | 10 +- tests/go.sum | 24 +-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 +- tools/testgrid-analysis/go.mod | 4 +- tools/testgrid-analysis/go.sum | 27 +-- 25 files changed, 182 insertions(+), 458 deletions(-) diff --git a/api/go.mod b/api/go.mod index a4f17098cb0b..99d8623235d5 100644 --- a/api/go.mod +++ b/api/go.mod @@ -17,11 +17,12 @@ require ( require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/kr/text v0.2.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect + go.opentelemetry.io/otel v1.39.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect golang.org/x/net v0.47.0 // indirect - golang.org/x/sys v0.38.0 // indirect + golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/api/go.sum b/api/go.sum index b366fbb207f3..20d9f6b3a19c 100644 --- a/api/go.sum +++ b/api/go.sum @@ -1,6 +1,7 @@ +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= @@ -33,16 +34,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -60,8 +61,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= diff --git a/cache/go.mod b/cache/go.mod index e682ce80eb40..2f5e75c417d3 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -24,7 +24,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect golang.org/x/net v0.47.0 // indirect - golang.org/x/sys v0.38.0 // indirect + golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect diff --git a/cache/go.sum b/cache/go.sum index 0e1e66db69e5..5aee4a8d91f0 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -54,16 +54,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= 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= @@ -89,8 +89,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index da1a90be009e..16fe30c48b6a 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.6.0 github.com/stretchr/testify v1.11.1 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.38.0 + golang.org/x/sys v0.39.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index e1a6757cc391..878f905173ae 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -24,8 +24,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index 8ad7c60a9a6e..931e6a979325 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -31,10 +31,13 @@ require ( github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.4 // indirect github.com/prometheus/procfs v0.16.1 // indirect + go.opentelemetry.io/otel/metric v1.39.0 // indirect + go.opentelemetry.io/otel/sdk v1.39.0 // indirect + go.opentelemetry.io/otel/trace v1.39.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.47.0 // indirect - golang.org/x/sys v0.38.0 // indirect + golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index eaaf282daa62..c6ceea697cfa 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -58,16 +58,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= 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= @@ -95,8 +95,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 60c84bb31315..67b624d25b16 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -43,7 +43,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.47.0 // indirect - golang.org/x/sys v0.38.0 // indirect + golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index d707656e0b99..62c367830f9a 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -91,16 +91,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= 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= @@ -128,8 +128,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 5b39f1564304..cbdf091e9531 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -71,18 +71,18 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect - go.opentelemetry.io/otel v1.38.0 // indirect + go.opentelemetry.io/otel v1.39.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect - go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect - go.opentelemetry.io/otel/trace v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.39.0 // indirect + go.opentelemetry.io/otel/sdk v1.39.0 // indirect + go.opentelemetry.io/otel/trace v1.39.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.45.0 // indirect golang.org/x/net v0.47.0 // indirect - golang.org/x/sys v0.38.0 // indirect + golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 83e741fda23c..faad806dbbfc 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -121,20 +121,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= -go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= 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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -171,8 +171,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= diff --git a/go.mod b/go.mod index c6c985a7445a..e38d2f9a3c5f 100644 --- a/go.mod +++ b/go.mod @@ -87,18 +87,18 @@ require ( go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect - go.opentelemetry.io/otel v1.38.0 // indirect + go.opentelemetry.io/otel v1.39.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect - go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect - go.opentelemetry.io/otel/trace v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.39.0 // indirect + go.opentelemetry.io/otel/sdk v1.39.0 // indirect + go.opentelemetry.io/otel/trace v1.39.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.45.0 // indirect golang.org/x/net v0.47.0 // indirect - golang.org/x/sys v0.38.0 // indirect + golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect diff --git a/go.sum b/go.sum index f86d399d5e68..cd69ab4c4d5a 100644 --- a/go.sum +++ b/go.sum @@ -160,20 +160,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= -go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= 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.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -226,8 +226,8 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= diff --git a/go.work.sum b/go.work.sum index 92e4e032fb49..f6f3c616429d 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,4 +1,3 @@ -bitbucket.org/creachadair/shell v0.0.6/go.mod h1:8Qqi/cYk7vPnsOePHroKXDJYmb5x7ENhtiFtfZq8K+M= bitbucket.org/creachadair/shell v0.0.8 h1:3yM6JcAfaGWzjzcCamTblzSIWXm/YSs0PFGIzBm2HTo= bitbucket.org/creachadair/shell v0.0.8/go.mod h1:vINzudofoUXZSJ5tREgpy+Etyjsag3ait5WOWImEVZ0= bitbucket.org/creachadair/stringset v0.0.11 h1:6Sv4CCv14Wm+OipW4f3tWOb0SQVpBDLW0knnJqUnmZ8= @@ -12,7 +11,6 @@ cel.dev/expr v0.20.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= cel.dev/expr v0.23.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= -cloud.google.com/go v0.60.0/go.mod h1:yw2G51M9IfRboUH61Us8GqCeF1PzPblB823Mn2q2eAU= cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= cloud.google.com/go v0.118.3/go.mod h1:Lhs3YLnBlwJ4KA6nuObNMZ/fCbOQBPuWKPoE0Wa/9Vc= cloud.google.com/go v0.120.0/go.mod h1:/beW32s8/pGRuj4IILWQNd4uuebeT4dkOhKmkfit64Q= @@ -363,7 +361,6 @@ cloud.google.com/go/privatecatalog v0.9.4/go.mod h1:SOjm93f+5hp/U3PqMZAHTtBtluqL cloud.google.com/go/privatecatalog v0.10.4/go.mod h1:n/vXBT+Wq8B4nSRUJNDsmqla5BYjbVxOlHzS6PjiF+w= cloud.google.com/go/privatecatalog v0.10.7 h1:R951ikhxIanXEijBCu0xnoUAOteS5m/Xplek0YvsNTE= cloud.google.com/go/privatecatalog v0.10.7/go.mod h1:Fo/PF/B6m4A9vUYt0nEF1xd0U6Kk19/Je3eZGrQ6l60= -cloud.google.com/go/pubsub v1.5.0/go.mod h1:ZEwJccE3z93Z2HWvstpri00jOg7oO4UZDtKhwDwqF0w= cloud.google.com/go/pubsub v1.34.0/go.mod h1:alj4l4rBg+N3YTFDDC+/YyFTs6JAjam2QfYsddcAW4c= cloud.google.com/go/pubsub v1.47.0/go.mod h1:LaENesmga+2u0nDtLkIOILskxsfvn/BXX9Ak1NFxOs8= cloud.google.com/go/pubsub v1.49.0 h1:5054IkbslnrMCgA2MAEPcsN3Ky+AyMpEZcii/DoySPo= @@ -429,7 +426,6 @@ cloud.google.com/go/shell v1.7.4/go.mod h1:yLeXB8eKLxw0dpEmXQ/FjriYrBijNsONpwnWs cloud.google.com/go/shell v1.8.3/go.mod h1:OYcrgWF6JSp/uk76sNTtYFlMD0ho2+Cdzc7U3P/bF54= cloud.google.com/go/shell v1.8.6 h1:jLWyztGlNWBx55QXBM4HbWvfv7aiRjPzRKTUkZA8dXk= cloud.google.com/go/shell v1.8.6/go.mod h1:GNbTWf1QA/eEtYa+kWSr+ef/XTCDkUzRpV3JPw0LqSk= -cloud.google.com/go/spanner v1.7.0/go.mod h1:sd3K2gZ9Fd0vMPLXzeCrF6fq4i63Q7aTLW/lBIfBkIk= cloud.google.com/go/spanner v1.55.0/go.mod h1:HXEznMUVhC+PC+HDyo9YFG2Ajj5BQDkcbqB9Z2Ffxi0= cloud.google.com/go/spanner v1.76.1/go.mod h1:YtwoE+zObKY7+ZeDCBtZ2ukM+1/iPaMfUM+KnTh/sx0= cloud.google.com/go/spanner v1.82.0 h1:w9uO8RqEoBooBLX4nqV1RtgudyU2ZX780KTLRgeVg60= @@ -503,8 +499,6 @@ cloud.google.com/go/workflows v1.14.2 h1:phBz5TOAES0YGogxZ6Q7ISSudaf618lRhE3euzB cloud.google.com/go/workflows v1.14.2/go.mod h1:5nqKjMD+MsJs41sJhdVrETgvD5cOK3hUcAs8ygqYvXQ= codeberg.org/go-fonts/stix v0.3.0 h1:vHI1LmLWEcAdcf+5aRMtA1eYKJJ9ZjetVstBD/dRe1Q= codeberg.org/go-fonts/stix v0.3.0/go.mod h1:1OSJSnA/PoHqbW2tjkkqTmNPp5xTtJQN2GRXJjO/+WA= -contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= -contrib.go.opencensus.io/exporter/stackdriver v0.13.14/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= contrib.go.opencensus.io/exporter/stackdriver v0.13.15-0.20230702191903-2de6d2748484 h1:xRc46S76eyn4ZF3jWX8I+aUSKVLw5EQ1aDvHwfV5W1o= contrib.go.opencensus.io/exporter/stackdriver v0.13.15-0.20230702191903-2de6d2748484/go.mod h1:uxw+4/0SiKbbVSD/F2tk5pJTdVcfIBBcsQ8gwcu4X+E= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= @@ -530,11 +524,6 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 h1:6/0iUd0xrnX7qt+mLNRwg5c0PGv8wpE8K90ryANQwMI= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0/go.mod h1:otE2jQekW/PqXk1Awf5lmfokJx4uwuqcj1ab5SpGeW0= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU= -github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= -github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0= @@ -548,17 +537,13 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafo github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs= github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= -github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0 h1:uF5Q/hWnDU1XZeT6CsrRSxHLroUSEYYO3kgES+yd+So= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0/go.mod h1:ccdDYaY5+gO+cbnQdFxEXqfy0RkoV25H3jLXUDNM3wg= -github.com/anthropics/anthropic-sdk-go v1.13.0 h1:Bhbe8sRoDPtipttg8bQYrMCKe2b79+q6rFW1vOKEUKI= -github.com/anthropics/anthropic-sdk-go v1.13.0/go.mod h1:WTz31rIUHUHqai2UslPpw5CwXrQP3geYBioRV4WOLvE= +github.com/anthropics/anthropic-sdk-go v1.19.0 h1:mO6E+ffSzLRvR/YUH9KJC0uGw0uV8GjISIuzem//3KE= github.com/anthropics/anthropic-sdk-go v1.19.0/go.mod h1:WTz31rIUHUHqai2UslPpw5CwXrQP3geYBioRV4WOLvE= -github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= -github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= github.com/apache/arrow/go/v10 v10.0.1 h1:n9dERvixoC/1JjDmBcs9FPaEryoANa2sCgVFo6ez9cI= github.com/apache/arrow/go/v11 v11.0.0 h1:hqauxvFQxww+0mEU/2XHG6LT7eZternCZq+A5Yly2uM= github.com/apache/arrow/go/v12 v12.0.1 h1:JsR2+hzYYjgSUkBSaahpqCetqZMr76djX80fF/DiJbg= @@ -566,60 +551,40 @@ github.com/apache/arrow/go/v12 v12.0.1/go.mod h1:weuTY7JvTG/HDPtMQxEUp7pU73vkLWM github.com/apache/arrow/go/v15 v15.0.2 h1:60IliRbiyTWCWjERBCkO1W4Qun9svcYoZrSLcyOsMLE= github.com/apache/arrow/go/v15 v15.0.2/go.mod h1:DGXsR3ajT524njufqf95822i+KTh+yea1jass9YXgjA= github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= -github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.36.30/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.46.4 h1:48tKgtm9VMPkb6y7HuYlsfhQmoIRAsTEXTsWLVlty4M= github.com/aws/aws-sdk-go v1.46.4/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= github.com/aws/aws-sdk-go-v2 v1.36.3 h1:mJoei2CxPutQVxaATCzDUjcZEjVRdpsiiXi2o38yqWM= github.com/aws/aws-sdk-go-v2 v1.36.3/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3/go.mod h1:UbnqO+zjqk3uIt9yCACHJ9IVNhyhOCnYk8yA19SAWrM= -github.com/aws/aws-sdk-go-v2/config v1.27.27/go.mod h1:MVYamCg76dFNINkZFu4n4RjDixhVr51HLj4ErWzrVwg= github.com/aws/aws-sdk-go-v2/config v1.29.12 h1:Y/2a+jLPrPbHpFkpAAYkVEtJmxORlXoo5k2g1fa2sUo= github.com/aws/aws-sdk-go-v2/config v1.29.12/go.mod h1:xse1YTjmORlb/6fhkWi8qJh3cvZi4JoVNhc+NbJt4kI= -github.com/aws/aws-sdk-go-v2/credentials v1.17.27/go.mod h1:gniiwbGahQByxan6YjQUMcW4Aov6bLC3m+evgcoN4r4= github.com/aws/aws-sdk-go-v2/credentials v1.17.65 h1:q+nV2yYegofO/SUXruT+pn4KxkxmaQ++1B/QedcKBFM= github.com/aws/aws-sdk-go-v2/credentials v1.17.65/go.mod h1:4zyjAuGOdikpNYiSGpsGz8hLGmUzlY8pc8r9QQ/RXYQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11/go.mod h1:SeSUYBLsMYFoRvHE0Tjvn7kbxaUhl75CJi1sbfhMxkU= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15/go.mod h1:U9ke74k1n2bf+RIgoX1SXFed1HLs51OgUSs+Ph0KJP8= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 h1:ZK5jHhnrioRkUNOc+hOgQKlUL5JeC3S6JgLxtQ+Rm0Q= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34/go.mod h1:p4VfIceZokChbA9FzMbRGz5OV+lekcVtHlPKEO0gSZY= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15/go.mod h1:ZQLZqhcu+JhSrA9/NXRm8SkDvsycE+JkV3WGY41e+IM= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 h1:SZwFm17ZUNNg5Np0ioo/gq8Mn6u9w19Mri8DnJ15Jf0= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34/go.mod h1:dFZsC0BLo346mvKQLWmoJxT+Sjp+qcVR1tRVHQGOH9Q= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3/go.mod h1:GlAeCkHwugxdHaueRr4nhPuY+WW+gR8UjlcqzPr1SPI= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17/go.mod h1:RkZEx4l0EHYDJpWppMJ3nD9wZJAa8/0lq9aVC+r2UII= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 h1:dM9/92u2F1JbDaGooxTq18wmmFzbJRfXfVfy96/1CXM= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15/go.mod h1:SwFBy2vjtA0vZbjjaFtfN045boopadnoVPhu4Fv66vY= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.4/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU= github.com/aws/aws-sdk-go-v2/service/sso v1.25.2 h1:pdgODsAhGo4dvzC3JAG5Ce0PX8kWXrTZGx+jxADD+5E= github.com/aws/aws-sdk-go-v2/service/sso v1.25.2/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.0 h1:90uX0veLKcdHVfvxhkWUQSCi5VabtwMLFutYiRke4oo= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.0/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.3/go.mod h1:zwySh8fpFyXp9yOr/KVzxOl8SRqgf/IDw5aUt9UKFcQ= github.com/aws/aws-sdk-go-v2/service/sts v1.33.17 h1:PZV5W8yk4OtH1JAuhV2PXwwO9v5G5Aoj+eMCn4T+1Kc= github.com/aws/aws-sdk-go-v2/service/sts v1.33.17/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4= -github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/aws/smithy-go v1.22.3 h1:Z//5NuZCSW6R4PhQ93hShNbyBbn8BWCmCVCt+Q8Io5k= github.com/aws/smithy-go v1.22.3/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWpi6yML8= github.com/aymanbagabas/go-udiff v0.2.0/go.mod h1:RE4Ex0qsGkTAJoQdQQCA0uG+nAzJO/pI/QwceO5fgrA= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= @@ -627,16 +592,12 @@ github.com/bwesterb/go-ristretto v1.2.0 h1:xxWOVbN5m8NNKiSDZXE1jtZvZnC6JSJ9cYFAD github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a h1:G99klV19u0QnhiizODirwVksQB91TJKV/UaTnACcG30= github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= -github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= -github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a h1:8d1CEOF1xldesKds5tRG3tExBsMOgWYownMHNCsev54= github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a/go.mod h1:rzgs2ZOiguV6/NpiDgADjRLPNyZlApIWxKpkT+X8SdY= github.com/cloudflare/circl v1.1.0 h1:bZgT/A+cikZnKIwn7xL2OBj012Bmvho/o6RpRvv3GKY= @@ -648,30 +609,12 @@ github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1Ig github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190620071333-e64a0ec8b42a/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/cristalhq/acmd v0.12.0 h1:RdlKnxjN+txbQosg8p/TRNZ+J1Rdne43MVQZ1zDhGWk= github.com/cristalhq/acmd v0.12.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= -github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/ebitengine/purego v0.9.0 h1:mh0zpKBIXDceC63hpvPuGLiJ8ZAa3DfrFTudmfi8A4k= -github.com/ebitengine/purego v0.9.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/ebitengine/purego v0.9.1 h1:a/k2f2HQU3Pi399RPW1MOaZyhKJL9w/xFpKAg4q1s0A= github.com/ebitengine/purego v0.9.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= -github.com/eliben/go-sentencepiece v0.6.0/go.mod h1:nNYk4aMzgBoI6QFp4LUG8Eu1uO9fHD9L5ZEre93o9+c= github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329 h1:K+fnvUM0VZ7ZFJf0n4L/BRlnsb9pL/GuDG6FqaH+PwM= @@ -681,28 +624,19 @@ github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBV github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= -github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/fullstorydev/grpcurl v1.6.0/go.mod h1:ZQ+ayqbKMJNhzLmbpCiurTVlaK2M/3nqZCxaQ2Ze/sM= github.com/fullstorydev/grpcurl v1.8.9 h1:JMvZXK8lHDGyLmTQ0ZdGDnVVGuwjbpaumf8p42z0d+c= github.com/fullstorydev/grpcurl v1.8.9/go.mod h1:PNNKevV5VNAV2loscyLISrEnWQI61eqR0F8l3bVadAA= github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw= github.com/getsentry/sentry-go v0.11.0 h1:qro8uttJGvNAMr5CLcFI9CHR0aDzXl0Vs3Pmw/oTPg8= github.com/getsentry/sentry-go v0.11.0/go.mod h1:KBQIxiZAetw62Cj8Ri964vAEWVdgfaUCn30Q3bCvANo= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= -github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= -github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= -github.com/gkampitakis/go-snaps v0.5.15/go.mod h1:HNpx/9GoKisdhw9AFOBT1N7DBs9DiHo/hGheFGBZ+mc= github.com/go-chi/chi v1.5.4 h1:QHdzF2szwjqVV4wmByUnTcsbIg7UGaQ0tPF2t5GcAIs= github.com/go-fonts/dejavu v0.1.0 h1:JSajPXURYqpr+Cu8U9bt8K+XcACIHWqWrvWCKyeFmVQ= github.com/go-fonts/latin-modern v0.2.0 h1:5/Tv1Ek/QCr20C6ZOz15vw3g7GELYL98KWr8Hgo+3vk= @@ -725,36 +659,25 @@ github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-pdf/fpdf v0.6.0 h1:MlgtGIfsdMEEQJr2le6b/HNr1ZlQwxyWr77r2aj2U/8= -github.com/go-redis/redis v6.15.8+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372 h1:FQivqchis6bE2/9uF70M2gmmLpe82esEm2QadL0TEJo= github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372/go.mod h1:evDBbvNR/KaVFZ2ZlDSOWWXIUKq0wCOEtzLxRM8SG3k= -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198 h1:FSii2UQeSLngl3jFoR4tUKZLprO7qUlh/TKKticc0BM= github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198/go.mod h1:DTh/Y2+NbnOVVoypCCQrovMPDKUGp4yZpSbWg5D0XIM= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I= github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/google/cel-go v0.25.0 h1:jsFw9Fhn+3y2kBbltZR4VEz5xKkcIFRPDnuEzAGv5GY= github.com/google/cel-go v0.25.0/go.mod h1:hjEb6r5SuOSlhCHmFoLzu8HGCERvIsDAbxDAyNU/MmI= -github.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= -github.com/google/certificate-transparency-go v1.1.1/go.mod h1:FDKqPvSXawb2ecErVRrD+nfy23RCzyl7eqVCEmlT1Zs= github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= @@ -766,16 +689,11 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= -github.com/google/pprof v0.0.0-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= -github.com/google/trillian v1.3.11/go.mod h1:0tPraVHrSDkA3BO6vKX67zgLXs6SsOAbHEivX+9mPgw= github.com/google/trillian v1.6.0 h1:jMBeDBIkINFvS2n6oV5maDqfRlxREAc6CW9QYWQ0qT4= github.com/google/trillian v1.6.0/go.mod h1:Yu3nIMITzNhhMJEHjAtp6xKiu+H/iHu2Oq5FjV2mCWI= -github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/cloud-bigtable-clients-test v0.0.3 h1:afMKTvA/jc6jSTMkeHBZGFDTt8Cc+kb1ATFzqMK85hw= github.com/googleapis/cloud-bigtable-clients-test v0.0.3/go.mod h1:TWtDzrrAI70C3dNLDY+nZN3gxHtFdZIbpL9rCTFyxE0= github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= @@ -786,51 +704,27 @@ github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81 github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8 h1:tlyzajkF3030q6M8SvmJSemC9DTHL/xaMa18b65+JM4= -github.com/gookit/assert v0.1.1/go.mod h1:jS5bmIVQZTIwk42uXl4lyj4iaaxx32tqH16CFj0VX2E= github.com/gookit/color v1.6.0 h1:JjJXBTk1ETNyqyilJhkTXJYYigHG24TM9Xa2M1xAhRA= github.com/gookit/color v1.6.0/go.mod h1:9ACFc7/1IpHGBW8RwuDm/0YEnhg3dwwXpoMsmtyHfjs= -github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= -github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= -github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= -github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= -github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI= -github.com/ianlancetaylor/demangle v0.0.0-20250417193237-f615e6bd150b/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= -github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= @@ -839,33 +733,21 @@ github.com/jackc/pgx/v5 v5.4.3 h1:cxFyXhxlvAifxnkKKdlxv8XqUf59tDlYjnV5YYfsJJY= github.com/jackc/pgx/v5 v5.4.3/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA= github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= -github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4= github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/joshdk/go-junit v1.0.0/go.mod h1:TiiV0PqkaNfFXjEiyjWM3XXrhVyCa1K4Zfga6W52ung= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= -github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5 h1:PJr+ZMXIecYc1Ey2zucXdR73SMBtgjPgwa31099IMv0= -github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= @@ -874,8 +756,6 @@ github.com/kylelemons/go-gypsy v1.0.0 h1:7/wQ7A3UL1bnqRMnZ6T8cwCOArfZCxFmb1iTxaO github.com/kylelemons/go-gypsy v1.0.0/go.mod h1:chkXM0zjdpXOiqkCW1XcCHDfjfk14PH2KKkQWxfJUcU= github.com/letsencrypt/pkcs11key/v4 v4.0.0 h1:qLc/OznH7xMr5ARJgkZCCWk+EomQkiNTOoOF5LAgagc= github.com/letsencrypt/pkcs11key/v4 v4.0.0/go.mod h1:EFUvBDay26dErnNb70Nd0/VW3tJiIbETBPTl9ATXQag= -github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lyft/protoc-gen-star v0.6.1 h1:erE0rdztuaDq3bpGifD95wfoPrSZc95nGA6tbiNYh6M= @@ -883,65 +763,32 @@ github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4 h1:sIXJO github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/magefile/mage v1.14.0 h1:6QDX3g6z1YvJ4olPhT1wksUcSa/V0a1B+pJb73fBjyo= github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= -github.com/mfridman/tparse v0.18.0/go.mod h1:gEvqZTuCgEhPbYk/2lS3Kcxg1GmTxxU7kTC8DvP0i/A= github.com/mgechev/dots v1.0.0 h1:o+4OJ3OjWzgQHGJXKfJ8rbH4dqDugu5BiEy84nxg0k4= github.com/mgechev/dots v1.0.0/go.mod h1:rykuMydC9t3wfkM+ccYH3U3ss03vZGg6h3hmOznXLH0= -github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= -github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU= github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= -github.com/mozilla/scribe v0.0.0-20180711195314-fb71baf557c1/go.mod h1:FIczTrinKo8VaLxe6PWTPEXRXDIHz2QAwiaBaP5/4a8= github.com/mozilla/tls-observatory v0.0.0-20250923143331-eef96233227e h1:gOlpekCwR+xjqedQsHo1c7aUSixaQUIe3sAcEeDCMLc= github.com/mozilla/tls-observatory v0.0.0-20250923143331-eef96233227e/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= github.com/mreiferson/go-httpclient v0.0.0-20201222173833-5e475fde3a4d h1:tLWCMSjfL8XyZwpu1RzI2UpJSPbZCOZ6DVHQFnlpL7A= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= -github.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo= -github.com/mwitkow/go-proto-validators v0.2.0/go.mod h1:ZfA1hW+UH/2ZHOWvQ3HnQaU0DtnpXu850MZiy+YUgcc= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= -github.com/nishanths/predeclared v0.0.0-20190419143655-18a43bb90ffc/go.mod h1:62PewwiQTlm/7Rj+cxVYqZvDIUc+JjZq6GHAC1fsObQ= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.2/go.mod h1:rSAaSIOAGT9odnlyGlUfAJaoc5w2fSBUmeGDbRWPxyQ= github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0 h1:LiZB1h0GIcudcDci2bxbqI6DXV8bF8POAnArqvRrIyw= github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0/go.mod h1:F/7q8/HZz+TXjlsoZQQKVYvXTZaFH4QRa3y+j1p7MS0= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= -github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= github.com/otiai10/curr v1.0.0 h1:TJIWdbX0B+kpNagQrjgq8bCMrbhiuX73M2XwgtDMoOI= github.com/otiai10/mint v1.3.1 h1:BCmzIS3n71sGfHB5NMNDB3lHYPz8fWSkCAErHed//qc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI= -github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/phpdave11/gofpdf v1.4.2 h1:KPKiIbfwbvC/wOncwhrpRdXVj2CZTCFlw4wnoyjtHfQ= github.com/phpdave11/gofpdi v1.0.13 h1:o61duiW8M9sMlkVXWlvP92sZJtGKENvW3VExs6dZukQ= github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= @@ -949,125 +796,66 @@ github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFu github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/sftp v1.13.1 h1:I2qBYMChEhIjOgazfJmV3/mZM256btk6wkCDRmW7JYs= -github.com/pkg/sftp v1.13.7/go.mod h1:KMKI0t3T6hfA+lTR/ssZdunHo+uwq7ghoN09/FSu3DY= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/prometheus/prometheus v0.47.2 h1:jWcnuQHz1o1Wu3MZ6nMJDuTI0kU5yJp9pkxh8XEkNvI= github.com/prometheus/prometheus v0.47.2/go.mod h1:J/bmOSjgH7lFxz2gZhrWEZs2i64vMS+HIuZfmYNhJ/M= -github.com/pseudomuto/protoc-gen-doc v1.3.2/go.mod h1:y5+P6n3iGrbKG+9O04V5ld71in3v/bX88wUwgt+U8EA= -github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71 h1:CNooiryw5aisadVfzneSZPswRWvnVW8hF1bS/vo8ReI= github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= -github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY= -github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= -github.com/shirou/gopsutil/v4 v4.25.10 h1:at8lk/5T1OgtuCp+AwrDofFRjnvosn0nkN2OLQ6g8tA= -github.com/shirou/gopsutil/v4 v4.25.10/go.mod h1:+kSwyC8DRUD9XXEHCAFjK+0nuArFJM0lva+StQAcskM= +github.com/shirou/gopsutil/v4 v4.25.11 h1:X53gB7muL9Gnwwo2evPSE+SfOrltMoR6V3xJAXZILTY= github.com/shirou/gopsutil/v4 v4.25.11/go.mod h1:EivAfP5x2EhLp2ovdpKSozecVXn1TmuG7SMzs/Wh4PU= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= -github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo= github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs= github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= -github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo= -github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= -github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= +github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= -github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= -github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= +github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/transparency-dev/merkle v0.0.2 h1:Q9nBoQcZcgPamMkGn7ghV8XiTZ/kRxn1yCG81+twTK4= github.com/transparency-dev/merkle v0.0.2/go.mod h1:pqSy+OXefQ1EDUVmAJ8MUhHB9TXGuzVAT58PqBoHz1A= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.14 h1:ebbhrRiGK2i4naQJr+1Xj92HXZCrK7MsyTS/ob3HnAk= github.com/urfave/cli v1.22.14/go.mod h1:X0eDS6pD6Exaclxm99NJ3FiCDRED7vIHpx2mDOHLvkA= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.55.0/go.mod h1:NkY9JtkrpPKmgwV3HTaS2HWaJss9RSIsRVfcxxoHiOM= github.com/valyala/quicktemplate v1.8.0 h1:zU0tjbIqTRgKQzFY1L42zq0qR3eh4WoQQdIdqCysW5k= github.com/valyala/quicktemplate v1.8.0/go.mod h1:qIqW8/igXt8fdrUln5kOSb+KWMaJ4Y8QUsfd1k6L2jM= -github.com/viki-org/dnscache v0.0.0-20130720023526-c70c1f23c5d8/go.mod h1:dniwbG03GafCjFohMDmz6Zc6oCuiqgH6tGNyXTkHzXE= github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= -github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= @@ -1081,14 +869,10 @@ github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 h1:Nzukz5fNOBIHOsnP+6I79k github.com/zmap/zcertificate v0.0.1 h1:2X15TRx4Fr6qzKItfwUdww294OeRSmHILLa+Xn2Uv+s= go.einride.tech/aip v0.68.1 h1:16/AfSxcQISGN5z9C5lM+0mLYXihrHbQ1onvYTr93aQ= go.einride.tech/aip v0.68.1/go.mod h1:XaFtaj4HuA3Zwk9xoBtTWgNubZ0ZZXv9BZJCkuKuWbg= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k= go.etcd.io/etcd/client/v2 v2.305.12 h1:0m4ovXYo1CHaA/Mp3X/Fak5sRNIWf01wk/X1/G3sGKI= go.etcd.io/etcd/client/v2 v2.305.12/go.mod h1:aQ/yhsxMu+Oht1FOupSr60oBvcS9cKXHrzBpDsPTf9E= go.etcd.io/etcd/raft/v3 v3.5.12 h1:7r22RufdDsq2z3STjoR7Msz6fYH8tmbkdheGfwJNRmU= go.etcd.io/etcd/raft/v3 v3.5.12/go.mod h1:ERQuZVe79PI6vcC3DlKBukDCLja/L7YMu29B74Iwj4U= -go.mozilla.org/mozlog v0.0.0-20170222151521-4bb13139d403/go.mod h1:jHoPAGnDrCy6kaI2tAze5Prf0Nr0w/oNkROt2lw3n3o= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= @@ -1101,65 +885,43 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6h go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -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/exporters/prometheus v0.57.0 h1:AHh/lAP1BHrY5gBwk8ncc25FXWm/gmmY3BX258z5nuk= go.opentelemetry.io/otel/exporters/prometheus v0.57.0/go.mod h1:QpFWz1QxqevfjwzYdbMb4Y1NnlJvqSGwyuU0B4iuc9c= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -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/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= -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/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= -golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= -golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c h1:jTMrjjZRcSH/BDxWhXCP6OWsfVgmnwI7J+F4/nyVXaU= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= -golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= @@ -1171,34 +933,19 @@ golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/net v0.46.1-0.20251013234738-63d1a5100f82/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= -golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= @@ -1207,7 +954,7 @@ golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= @@ -1219,47 +966,23 @@ golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191010075000-0337d82405ff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200630154851-b2d8b0336632/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200706234117-b22de6825cf7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= -golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= -golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= -golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= -golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= -google.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.229.0/go.mod h1:wyDfmq5g1wYJWn29O22FDWN48P7Xcz0xz+LBpptYvB0= google.golang.org/api v0.232.0/go.mod h1:p9QCfBWZk1IJETUdbTKloR5ToFdKbYh2fkjsUL6vNoY= google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= -google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genai v1.30.0 h1:7021aneIvl24nEBLbtQFEWleHsMbjzpcQvkT4WcJ1dc= -google.golang.org/genai v1.30.0/go.mod h1:7pAilaICJlQBonjKKJNhftDFv3SREhZcTe9F6nRcjbg= +google.golang.org/genai v1.36.0 h1:sJCIjqTAmwrtAIaemtTiKkg2TO1RxnYEusTmEQ3nGxM= google.golang.org/genai v1.36.0/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= -google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20200626011028-ee7919e894b5/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200707001353-8e8330bf89df/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE= google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= @@ -1285,14 +1008,9 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= 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-20251014184007-4626949a642f/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= -google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc v1.67.3/go.mod h1:YGaHCc6Oap+FzBJTZLBzkGSYt/cvGPFTPxkn7QfSU8s= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= @@ -1321,23 +1039,16 @@ google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/ google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg= gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.6/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= k8s.io/api v0.27.4 h1:0pCo/AN9hONazBKlNUdhQymmnfLRbSZjd5H5H3f0bSs= @@ -1366,4 +1077,3 @@ sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMm sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/pkg/go.mod b/pkg/go.mod index e0e9abb0f8d3..8dab9c14052c 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -11,18 +11,20 @@ require ( github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.opentelemetry.io/otel/trace v1.38.0 + go.opentelemetry.io/otel/trace v1.39.0 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.38.0 + golang.org/x/sys v0.39.0 google.golang.org/grpc v1.77.0 ) require ( + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - go.opentelemetry.io/otel v1.38.0 // indirect + go.opentelemetry.io/otel v1.39.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.47.0 // indirect golang.org/x/text v0.31.0 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 39750ebae1e5..89da4f05ccb1 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -1,3 +1,5 @@ +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= @@ -37,16 +39,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= 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= @@ -56,8 +58,8 @@ go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= diff --git a/server/go.mod b/server/go.mod index 1ff314d54aab..b68b1c5599a7 100644 --- a/server/go.mod +++ b/server/go.mod @@ -32,10 +32,10 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 - go.opentelemetry.io/otel v1.38.0 + go.opentelemetry.io/otel v1.39.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 - go.opentelemetry.io/otel/sdk v1.38.0 - go.opentelemetry.io/otel/trace v1.38.0 + go.opentelemetry.io/otel/sdk v1.39.0 + go.opentelemetry.io/otel/trace v1.39.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.45.0 golang.org/x/net v0.47.0 @@ -66,11 +66,11 @@ require ( github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect - go.opentelemetry.io/otel/metric v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.39.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/sys v0.38.0 // indirect + golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/server/go.sum b/server/go.sum index 3555b1b7792d..25b2473cde3e 100644 --- a/server/go.sum +++ b/server/go.sum @@ -101,20 +101,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= -go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= 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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -150,8 +150,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= diff --git a/tests/go.mod b/tests/go.mod index c15ee3421d8d..1983026ba734 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -43,8 +43,8 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 - go.opentelemetry.io/otel v1.38.0 - go.opentelemetry.io/otel/sdk v1.38.0 + go.opentelemetry.io/otel v1.39.0 + go.opentelemetry.io/otel/sdk v1.39.0 go.opentelemetry.io/proto/otlp v1.9.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.45.0 @@ -96,12 +96,12 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect - go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/trace v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.39.0 // indirect + go.opentelemetry.io/otel/trace v1.39.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.47.0 // indirect - golang.org/x/sys v0.38.0 // indirect + golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect diff --git a/tests/go.sum b/tests/go.sum index 43e358504d7c..0bc2702ab4a0 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -166,20 +166,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= -go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= 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.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -232,8 +232,8 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 8d53c8c00919..eccfb5a4d510 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -241,7 +241,7 @@ require ( golang.org/x/mod v0.30.0 // indirect golang.org/x/net v0.47.0 // indirect golang.org/x/sync v0.18.0 // indirect - golang.org/x/sys v0.38.0 // indirect + golang.org/x/sys v0.39.0 // indirect golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 // indirect golang.org/x/term v0.37.0 // indirect golang.org/x/text v0.31.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index b29e98a01dd3..c6b8e908f794 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -655,8 +655,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 h1:E2/AqCUMZGgd73TQkxUMcMla25GB9i/5HOdLr+uH7Vo= golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 2321b4869316..ea7322c107c9 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -15,8 +15,10 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.10 // indirect + go.opentelemetry.io/otel v1.39.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect golang.org/x/net v0.47.0 // indirect - golang.org/x/sys v0.38.0 // indirect + golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/grpc v1.77.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 6e29f06c4863..c2255b90869c 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -788,9 +788,12 @@ github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -1181,16 +1184,16 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= 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/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -1486,8 +1489,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From e2740276b02b308a2661c19ccf5721c447422766 Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Sun, 21 Dec 2025 16:07:30 -0500 Subject: [PATCH 0699/1068] test: fix robustness tests failing with undefined -bin-dir flag The robustness CI jobs are failing with "flag provided but not defined: -bin-dir" because the test path includes subpackages (./tests/robustness/...) that don't register this flag. PR 20962 changed the test invocation to use ./tests/robustness/... which runs tests in all subpackages. The validate/ and model/ subpackages contain unit tests that don't import framework/e2e (which registers -bin-dir), so they fail when this flag is passed. PR 21039 attempted to fix the issue but only changed the test runner function, not the package path. This change removes the /... suffix to only run tests in the main robustness package, restoring the original behavior. Signed-off-by: Davanum Srinivas --- scripts/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test.sh b/scripts/test.sh index f9de1c70350c..d2d866d33114 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -184,7 +184,7 @@ function e2e_pass { function robustness_pass { # e2e tests are running pre-build binary. Settings like --race,-cover,-cpu does not have any impact. KEEP_GOING_TESTS=true \ - run_go_tests ./tests/robustness/... \ + run_go_tests ./tests/robustness \ -timeout="${TIMEOUT:-30m}" \ "${RUN_ARG[@]}" \ "$@" From 867cc9bb479956b1478cbb8d1ad26c8b8b5d70bf Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Mon, 22 Dec 2025 22:34:51 -0800 Subject: [PATCH 0700/1068] build(deps): bump golang.org/x/tools from 0.39.0 to 0.40.0 in /tools/mod Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.39.0 to 0.40.0. - [Release notes](https://github.com/golang/tools/releases) - [Commits](golang/tools@v0.39.0...v0.40.0) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-version: 0.40.0 dependency-type: direct:production update-type: version-update:semver-minor ... Reference: https://github.com/etcd-io/etcd/pull/21018 Signed-off-by: Ivan Valdes --- api/go.mod | 4 ++-- api/go.sum | 8 ++++---- cache/go.mod | 4 ++-- cache/go.sum | 8 ++++---- client/v3/go.mod | 4 ++-- client/v3/go.sum | 8 ++++---- etcdctl/go.mod | 4 ++-- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 16 ++++++++-------- go.mod | 6 +++--- go.sum | 16 ++++++++-------- go.work.sum | 7 +++---- pkg/go.mod | 4 ++-- pkg/go.sum | 8 ++++---- server/go.mod | 6 +++--- server/go.sum | 16 ++++++++-------- tests/go.mod | 8 ++++---- tests/go.sum | 16 ++++++++-------- tools/mod/go.mod | 16 ++++++++-------- tools/mod/go.sum | 32 ++++++++++++++++---------------- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 4 ++-- tools/testgrid-analysis/go.sum | 8 ++++---- 25 files changed, 111 insertions(+), 112 deletions(-) diff --git a/api/go.mod b/api/go.mod index 99d8623235d5..22d9a076e028 100644 --- a/api/go.mod +++ b/api/go.mod @@ -21,9 +21,9 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.39.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect - golang.org/x/net v0.47.0 // indirect + golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 20d9f6b3a19c..5c5b02d454c2 100644 --- a/api/go.sum +++ b/api/go.sum @@ -53,8 +53,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -65,8 +65,8 @@ golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/cache/go.mod b/cache/go.mod index 2f5e75c417d3..e6904269dada 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -23,9 +23,9 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect - golang.org/x/net v0.47.0 // indirect + golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/grpc v1.77.0 // indirect diff --git a/cache/go.sum b/cache/go.sum index 5aee4a8d91f0..4e09c31b5471 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -81,8 +81,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -93,8 +93,8 @@ golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/client/v3/go.mod b/client/v3/go.mod index 931e6a979325..6314a3efc905 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -36,9 +36,9 @@ require ( go.opentelemetry.io/otel/trace v1.39.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.47.0 // indirect + golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/protobuf v1.36.10 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index c6ceea697cfa..97c0deaa58ff 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -87,8 +87,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -99,8 +99,8 @@ golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 67b624d25b16..cf9631d631e2 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -42,9 +42,9 @@ require ( github.com/olekukonko/ll v0.1.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.47.0 // indirect + golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/protobuf v1.36.10 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 62c367830f9a..d0fbef9f77d3 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -119,8 +119,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -132,8 +132,8 @@ golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index cbdf091e9531..435dc502af8c 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -80,10 +80,10 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.45.0 // indirect - golang.org/x/net v0.47.0 // indirect + golang.org/x/crypto v0.46.0 // indirect + golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/text v0.32.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index faad806dbbfc..1ef5d6b95c45 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -150,8 +150,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= -golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= +golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= +golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -159,13 +159,13 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= -golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -175,8 +175,8 @@ golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index e38d2f9a3c5f..9e93f0abd2fa 100644 --- a/go.mod +++ b/go.mod @@ -96,10 +96,10 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.45.0 // indirect - golang.org/x/net v0.47.0 // indirect + golang.org/x/crypto v0.46.0 // indirect + golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index cd69ab4c4d5a..623ac1425088 100644 --- a/go.sum +++ b/go.sum @@ -192,8 +192,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= -golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= +golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= +golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -209,16 +209,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= -golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -230,8 +230,8 @@ golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.work.sum b/go.work.sum index f6f3c616429d..619a8dc13d61 100644 --- a/go.work.sum +++ b/go.work.sum @@ -914,14 +914,13 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= -golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c h1:jTMrjjZRcSH/BDxWhXCP6OWsfVgmnwI7J+F4/nyVXaU= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= @@ -934,6 +933,7 @@ golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/net v0.46.1-0.20251013234738-63d1a5100f82/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= @@ -954,7 +954,6 @@ golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= @@ -971,7 +970,7 @@ golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= diff --git a/pkg/go.mod b/pkg/go.mod index 8dab9c14052c..506e7b532eb6 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -26,8 +26,8 @@ require ( go.opentelemetry.io/otel v1.39.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.47.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 89da4f05ccb1..58d5fb04f759 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -56,12 +56,12 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= diff --git a/server/go.mod b/server/go.mod index b68b1c5599a7..7d9f761b38b0 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,8 +37,8 @@ require ( go.opentelemetry.io/otel/sdk v1.39.0 go.opentelemetry.io/otel/trace v1.39.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.45.0 - golang.org/x/net v0.47.0 + golang.org/x/crypto v0.46.0 + golang.org/x/net v0.48.0 golang.org/x/time v0.14.0 google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 google.golang.org/grpc v1.77.0 @@ -71,7 +71,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/sys v0.39.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index 25b2473cde3e..06cbe7647ae7 100644 --- a/server/go.sum +++ b/server/go.sum @@ -130,8 +130,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= -golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= +golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= +golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -139,13 +139,13 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= -golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -154,8 +154,8 @@ golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index 1983026ba734..f8970b513132 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -47,8 +47,8 @@ require ( go.opentelemetry.io/otel/sdk v1.39.0 go.opentelemetry.io/proto/otlp v1.9.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.45.0 - golang.org/x/sync v0.18.0 + golang.org/x/crypto v0.46.0 + golang.org/x/sync v0.19.0 golang.org/x/time v0.14.0 google.golang.org/grpc v1.77.0 google.golang.org/protobuf v1.36.10 @@ -100,9 +100,9 @@ require ( go.opentelemetry.io/otel/trace v1.39.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.47.0 // indirect + golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index 0bc2702ab4a0..0266465ff497 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -198,8 +198,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= -golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= +golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= +golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -215,16 +215,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= -golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -236,8 +236,8 @@ golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index eccfb5a4d510..b599d2499a18 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -16,7 +16,7 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 - golang.org/x/tools v0.39.0 + golang.org/x/tools v0.40.0 gotest.tools/gotestsum v1.13.0 gotest.tools/v3 v3.5.2 honnef.co/go/tools v0.6.1 @@ -235,16 +235,16 @@ require ( go.uber.org/zap v1.27.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.45.0 // indirect + golang.org/x/crypto v0.46.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546 // indirect - golang.org/x/mod v0.30.0 // indirect - golang.org/x/net v0.47.0 // indirect - golang.org/x/sync v0.18.0 // indirect + golang.org/x/mod v0.31.0 // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/sync v0.19.0 // indirect golang.org/x/sys v0.39.0 // indirect - golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 // indirect - golang.org/x/term v0.37.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/telemetry v0.0.0-20251203150158-8fff8a5912fc // indirect + golang.org/x/term v0.38.0 // indirect + golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/grpc v1.77.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index c6b8e908f794..1fe2d0f4135f 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -574,8 +574,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= -golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= +golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= +golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -591,8 +591,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= -golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= +golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI= +golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -613,8 +613,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -625,8 +625,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= -golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -657,8 +657,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 h1:E2/AqCUMZGgd73TQkxUMcMla25GB9i/5HOdLr+uH7Vo= -golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= +golang.org/x/telemetry v0.0.0-20251203150158-8fff8a5912fc h1:bH6xUXay0AIFMElXG2rQ4uiE+7ncwtiOdPfYK1NK2XA= +golang.org/x/telemetry v0.0.0-20251203150158-8fff8a5912fc/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -671,8 +671,8 @@ golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= -golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= +golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q= +golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -686,8 +686,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= @@ -702,8 +702,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= -golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= +golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA= +golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index cc9dfe18083a..701443cc48a0 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -22,6 +22,6 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/image v0.25.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/text v0.32.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index e9227ddd1f3a..58af44d748ac 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -55,8 +55,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index ea7322c107c9..b57d9f75c2e2 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -17,9 +17,9 @@ require ( github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/otel v1.39.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect - golang.org/x/net v0.47.0 // indirect + golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/grpc v1.77.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index c2255b90869c..fbc806b2986a 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1341,8 +1341,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1521,8 +1521,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From e1072ad7a1fdfa43df80d149dd403b2b8f6f120c Mon Sep 17 00:00:00 2001 From: Jille Timmermans Date: Thu, 19 Jun 2025 10:13:40 +0200 Subject: [PATCH 0701/1068] client: Fix reading Client.lg without holding the mutex WithLogger() might write to c.lg which would cause a data race Signed-off-by: Jille Timmermans --- client/v3/client.go | 8 ++++---- client/v3/lease.go | 2 +- client/v3/maintenance.go | 4 ++-- client/v3/retry_interceptor.go | 8 ++++---- client/v3/watch.go | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/client/v3/client.go b/client/v3/client.go index c712b76c38ab..b4dd8c1c3496 100644 --- a/client/v3/client.go +++ b/client/v3/client.go @@ -205,7 +205,7 @@ func (c *Client) Sync(ctx context.Context) error { return len(eps) > 0, nil }) c.SetEndpoints(eps...) - c.lg.Debug("set etcd endpoints by autoSync", zap.Strings("endpoints", eps)) + c.GetLogger().Debug("set etcd endpoints by autoSync", zap.Strings("endpoints", eps)) return nil } @@ -223,7 +223,7 @@ func (c *Client) autoSync() { err := c.Sync(ctx) cancel() if err != nil && !errors.Is(err, c.ctx.Err()) { - c.lg.Info("Auto sync endpoints failed.", zap.Error(err)) + c.GetLogger().Info("Auto sync endpoints failed.", zap.Error(err)) } } } @@ -508,10 +508,10 @@ func (c *Client) roundRobinQuorumBackoff(waitBetween time.Duration, jitterFracti n := uint(len(c.Endpoints())) quorum := (n/2 + 1) if attempt%quorum == 0 { - c.lg.Debug("backoff", zap.Uint("attempt", attempt), zap.Uint("quorum", quorum), zap.Duration("waitBetween", waitBetween), zap.Float64("jitterFraction", jitterFraction)) + c.GetLogger().Debug("backoff", zap.Uint("attempt", attempt), zap.Uint("quorum", quorum), zap.Duration("waitBetween", waitBetween), zap.Float64("jitterFraction", jitterFraction)) return jitterUp(waitBetween, jitterFraction) } - c.lg.Debug("backoff skipped", zap.Uint("attempt", attempt), zap.Uint("quorum", quorum)) + c.GetLogger().Debug("backoff skipped", zap.Uint("attempt", attempt), zap.Uint("quorum", quorum)) return 0 } } diff --git a/client/v3/lease.go b/client/v3/lease.go index 11b583482863..ab5c559a5487 100644 --- a/client/v3/lease.go +++ b/client/v3/lease.go @@ -204,7 +204,7 @@ func NewLeaseFromLeaseClient(remote pb.LeaseClient, c *Client, keepAliveTimeout l.firstKeepAliveTimeout = defaultTTL } if c != nil { - l.lg = c.lg + l.lg = c.GetLogger() l.callOpts = c.callOpts } reqLeaderCtx := WithRequireLeader(context.Background()) diff --git a/client/v3/maintenance.go b/client/v3/maintenance.go index 00aaacd15fdc..d76ae231feda 100644 --- a/client/v3/maintenance.go +++ b/client/v3/maintenance.go @@ -113,7 +113,7 @@ type maintenance struct { func NewMaintenance(c *Client) Maintenance { api := &maintenance{ - lg: c.lg, + lg: c.GetLogger(), dial: func(endpoint string) (pb.MaintenanceClient, func(), error) { conn, err := c.Dial(endpoint) if err != nil { @@ -140,7 +140,7 @@ func NewMaintenanceFromMaintenanceClient(remote pb.MaintenanceClient, c *Client) } if c != nil { api.callOpts = c.callOpts - api.lg = c.lg + api.lg = c.GetLogger() } return api } diff --git a/client/v3/retry_interceptor.go b/client/v3/retry_interceptor.go index 00baff97db0c..18aa3ae80a7c 100644 --- a/client/v3/retry_interceptor.go +++ b/client/v3/retry_interceptor.go @@ -244,12 +244,12 @@ func (s *serverStreamingRetryingStream) RecvMsg(m any) error { } newStream, err := s.reestablishStreamAndResendBuffer(s.ctx) if err != nil { - s.client.lg.Error("failed reestablishStreamAndResendBuffer", zap.Error(err)) + s.client.GetLogger().Error("failed reestablishStreamAndResendBuffer", zap.Error(err)) return err // TODO(mwitkow): Maybe dial and transport errors should be retriable? } s.setStream(newStream) - s.client.lg.Warn("retrying RecvMsg", zap.Error(lastErr)) + s.client.GetLogger().Warn("retrying RecvMsg", zap.Error(lastErr)) attemptRetry, lastErr = s.receiveMsgAndIndicateRetry(m) if !attemptRetry { return lastErr @@ -282,7 +282,7 @@ func (s *serverStreamingRetryingStream) receiveMsgAndIndicateRetry(m any) (bool, if s.client.shouldRefreshToken(err, s.callOpts) { gtErr := s.client.refreshToken(s.ctx) if gtErr != nil { - s.client.lg.Warn("retry failed to fetch new auth token", zap.Error(gtErr)) + s.client.GetLogger().Warn("retry failed to fetch new auth token", zap.Error(gtErr)) return false, err // return the original error for simplicity } return true, err @@ -348,7 +348,7 @@ func isSafeRetry(c *Client, err error, callOpts *options) bool { case nonRepeatable: return isSafeRetryMutableRPC(err) default: - c.lg.Warn("unrecognized retry policy", zap.String("retryPolicy", callOpts.retryPolicy.String())) + c.GetLogger().Warn("unrecognized retry policy", zap.String("retryPolicy", callOpts.retryPolicy.String())) return false } } diff --git a/client/v3/watch.go b/client/v3/watch.go index 389738d1c4d4..9c6fb22315af 100644 --- a/client/v3/watch.go +++ b/client/v3/watch.go @@ -254,7 +254,7 @@ func NewWatchFromWatchClient(wc pb.WatchClient, c *Client) Watcher { } if c != nil { w.callOpts = c.callOpts - w.lg = c.lg + w.lg = c.GetLogger() } return w } From 7bd9f130a56cd81c6fc07e13e003fa09068a6b45 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Dec 2025 17:03:35 +0000 Subject: [PATCH 0702/1068] build(deps): bump github/codeql-action from 4.31.8 to 4.31.9 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.8 to 4.31.9. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/1b168cd39490f61582a9beae412bb7057a6b2c4e...5d4e8d1aca955e8d8589aabd499c5cae939e33c7) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.31.9 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 1e07d606dea3..2897539fabe4 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@1b168cd39490f61582a9beae412bb7057a6b2c4e # v4.31.8 + uses: github/codeql-action/init@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@1b168cd39490f61582a9beae412bb7057a6b2c4e # v4.31.8 + uses: github/codeql-action/autobuild@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@1b168cd39490f61582a9beae412bb7057a6b2c4e # v4.31.8 + uses: github/codeql-action/analyze@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index d75cc4ff7d03..98032f46ffda 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@1b168cd39490f61582a9beae412bb7057a6b2c4e # v4.31.8 + uses: github/codeql-action/upload-sarif@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 with: sarif_file: results.sarif From 8faabac06c8fc274ff63e51260db01d4859d322b Mon Sep 17 00:00:00 2001 From: Jille Timmermans Date: Thu, 19 Jun 2025 10:13:13 +0200 Subject: [PATCH 0703/1068] client: Use an atomic.Pointer instead of a mutex to guard the logger The mutex just synchronizes against concurrent replacement of the logger, an atomic is much cheaper for that. The RWMutex was definitely overkill, given how short it was held for. Signed-off-by: Jille Timmermans --- client/v3/client.go | 34 ++++++++++++++----------------- client/v3/client_test.go | 6 +++--- tests/robustness/client/client.go | 4 ++-- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/client/v3/client.go b/client/v3/client.go index b4dd8c1c3496..bcd9f0b837d8 100644 --- a/client/v3/client.go +++ b/client/v3/client.go @@ -20,6 +20,7 @@ import ( "fmt" "strings" "sync" + "sync/atomic" "time" "github.com/coreos/go-semver/semver" @@ -78,8 +79,7 @@ type Client struct { callOpts []grpc.CallOption - lgMu *sync.RWMutex - lg *zap.Logger + lg atomic.Pointer[zap.Logger] } // New creates a new etcdv3 client from a given configuration. @@ -96,12 +96,12 @@ func New(cfg Config) (*Client, error) { // service interface implementations and do not need connection management. func NewCtxClient(ctx context.Context, opts ...Option) *Client { cctx, cancel := context.WithCancel(ctx) - c := &Client{ctx: cctx, cancel: cancel, lgMu: new(sync.RWMutex), epMu: new(sync.RWMutex)} + c := &Client{ctx: cctx, cancel: cancel, epMu: new(sync.RWMutex)} for _, opt := range opts { opt(c) } - if c.lg == nil { - c.lg = zap.NewNop() + if c.lg.Load() == nil { + c.lg.Store(zap.NewNop()) } return c } @@ -122,7 +122,7 @@ func NewFromURLs(urls []string) (*Client, error) { // WithZapLogger is a NewCtxClient option that overrides the logger func WithZapLogger(lg *zap.Logger) Option { return func(c *Client) { - c.lg = lg + c.lg.Store(lg) } } @@ -133,19 +133,14 @@ func WithZapLogger(lg *zap.Logger) Option { // Does not changes grpcLogger, that can be explicitly configured // using grpc_zap.ReplaceGrpcLoggerV2(..) method. func (c *Client) WithLogger(lg *zap.Logger) *Client { - c.lgMu.Lock() - c.lg = lg - c.lgMu.Unlock() + c.lg.Store(lg) return c } // GetLogger gets the logger. // NOTE: This method is for internal use of etcd-client library and should not be used as general-purpose logger. func (c *Client) GetLogger() *zap.Logger { - c.lgMu.RLock() - l := c.lg - c.lgMu.RUnlock() - return l + return c.lg.Load() } // Close shuts down the client's etcd connections. @@ -402,23 +397,24 @@ func newClient(cfg *Config) (*Client, error) { cancel: cancel, epMu: new(sync.RWMutex), callOpts: defaultCallOpts, - lgMu: new(sync.RWMutex), } var err error + var lg *zap.Logger if cfg.Logger != nil { - client.lg = cfg.Logger + lg = cfg.Logger } else if cfg.LogConfig != nil { - client.lg, err = cfg.LogConfig.Build() + lg, err = cfg.LogConfig.Build() } else { - client.lg, err = logutil.CreateDefaultZapLogger(etcdClientDebugLevel()) - if client.lg != nil { - client.lg = client.lg.Named("etcd-client") + lg, err = logutil.CreateDefaultZapLogger(etcdClientDebugLevel()) + if lg != nil { + lg = lg.Named("etcd-client") } } if err != nil { return nil, err } + client.lg.Store(lg) if cfg.Username != "" && cfg.Password != "" { client.Username = cfg.Username diff --git a/client/v3/client_test.go b/client/v3/client_test.go index 151c24166920..e6c9844be192 100644 --- a/client/v3/client_test.go +++ b/client/v3/client_test.go @@ -257,12 +257,12 @@ func TestCloseCtxClient(t *testing.T) { func TestWithLogger(t *testing.T) { ctx := t.Context() c := NewCtxClient(ctx) - if c.lg == nil { + if c.lg.Load() == nil { t.Errorf("unexpected nil in *zap.Logger") } c.WithLogger(nil) - if c.lg != nil { + if c.GetLogger() != nil { t.Errorf("WithLogger should modify *zap.Logger") } } @@ -272,7 +272,7 @@ func TestZapWithLogger(t *testing.T) { lg := zap.NewNop() c := NewCtxClient(ctx, WithZapLogger(lg)) - if c.lg != lg { + if c.GetLogger() != lg { t.Errorf("WithZapLogger should modify *zap.Logger") } } diff --git a/tests/robustness/client/client.go b/tests/robustness/client/client.go index 2c13b25a3058..6b0393e9c775 100644 --- a/tests/robustness/client/client.go +++ b/tests/robustness/client/client.go @@ -35,7 +35,7 @@ import ( // allow for concurrent requests to conform to model.AppendableHistory requirements. type RecordingClient struct { ID int - client clientv3.Client + client *clientv3.Client // using baseTime time-measuring operation to get monotonic clock reading // see https://github.com/golang/go/blob/master/src/time/time.go#L17 baseTime time.Time @@ -66,7 +66,7 @@ func NewRecordingClient(endpoints []string, ids identity.Provider, baseTime time } return &RecordingClient{ ID: ids.NewClientID(), - client: *cc, + client: cc, kvOperations: model.NewAppendableHistory(ids), baseTime: baseTime, }, nil From 0226f448b5c2f94b6c10410f3d7ff5e9246d9312 Mon Sep 17 00:00:00 2001 From: Nont Date: Tue, 23 Dec 2025 21:30:52 -0600 Subject: [PATCH 0704/1068] Add the missing range options for test clients Signed-off-by: Nont --- tests/framework/config/client.go | 25 +++++++++++++--------- tests/framework/e2e/etcdctl.go | 24 ++++++++++++++++++--- tests/framework/integration/integration.go | 15 +++++++++++++ 3 files changed, 51 insertions(+), 13 deletions(-) diff --git a/tests/framework/config/client.go b/tests/framework/config/client.go index ac82bd547925..1e3c4ff9e18d 100644 --- a/tests/framework/config/client.go +++ b/tests/framework/config/client.go @@ -28,16 +28,21 @@ import ( type ClientOption func(any) type GetOptions struct { - Revision int - End string - CountOnly bool - Serializable bool - Prefix bool - FromKey bool - Limit int - Order clientv3.SortOrder - SortBy clientv3.SortTarget - Timeout time.Duration + Revision int + End string + CountOnly bool + Serializable bool + Prefix bool + FromKey bool + Limit int + Order clientv3.SortOrder + SortBy clientv3.SortTarget + Timeout time.Duration + KeysOnly bool + MinModRevision int + MaxModRevision int + MinCreateRevision int + MaxCreateRevision int } type PutOptions struct { diff --git a/tests/framework/e2e/etcdctl.go b/tests/framework/e2e/etcdctl.go index fc4cf0c04852..5f78c126eebe 100644 --- a/tests/framework/e2e/etcdctl.go +++ b/tests/framework/e2e/etcdctl.go @@ -124,10 +124,28 @@ func (ctl *EtcdctlV3) Get(ctx context.Context, key string, o config.GetOptions) if o.FromKey { args = append(args, "--from-key") } + writeOut := "json" + if o.CountOnly || o.KeysOnly { + writeOut = "fields" + } + args = append(args, "-w", writeOut) if o.CountOnly { - args = append(args, "-w", "fields", "--count-only") - } else { - args = append(args, "-w", "json") + args = append(args, "--count-only") + } + if o.KeysOnly { + args = append(args, "--keys-only") + } + if o.MaxCreateRevision != 0 { + args = append(args, fmt.Sprintf("--max-create-rev=%d", o.MaxCreateRevision)) + } + if o.MinCreateRevision != 0 { + args = append(args, fmt.Sprintf("--min-create-rev=%d", o.MinCreateRevision)) + } + if o.MaxModRevision != 0 { + args = append(args, fmt.Sprintf("--max-mod-rev=%d", o.MaxModRevision)) + } + if o.MinModRevision != 0 { + args = append(args, fmt.Sprintf("--min-mod-rev=%d", o.MinModRevision)) } switch o.SortBy { case clientv3.SortByCreateRevision: diff --git a/tests/framework/integration/integration.go b/tests/framework/integration/integration.go index bff0887d0a10..ff4784a7c2cd 100644 --- a/tests/framework/integration/integration.go +++ b/tests/framework/integration/integration.go @@ -212,9 +212,24 @@ func (c integrationClient) Get(ctx context.Context, key string, o config.GetOpti if o.CountOnly { clientOpts = append(clientOpts, clientv3.WithCountOnly()) } + if o.KeysOnly { + clientOpts = append(clientOpts, clientv3.WithKeysOnly()) + } if o.SortBy != clientv3.SortByKey || o.Order != clientv3.SortNone { clientOpts = append(clientOpts, clientv3.WithSort(o.SortBy, o.Order)) } + if o.MaxCreateRevision != 0 { + clientOpts = append(clientOpts, clientv3.WithMaxCreateRev(int64(o.MaxCreateRevision))) + } + if o.MinCreateRevision != 0 { + clientOpts = append(clientOpts, clientv3.WithMinCreateRev(int64(o.MinCreateRevision))) + } + if o.MaxModRevision != 0 { + clientOpts = append(clientOpts, clientv3.WithMaxModRev(int64(o.MaxModRevision))) + } + if o.MinModRevision != 0 { + clientOpts = append(clientOpts, clientv3.WithMinModRev(int64(o.MinModRevision))) + } return c.Client.Get(ctx, key, clientOpts...) } From 106f277d4362d2f197206417a23ae0f60ae1abb8 Mon Sep 17 00:00:00 2001 From: "A.D" <1695316070@qq.com> Date: Tue, 23 Dec 2025 01:11:00 +0800 Subject: [PATCH 0705/1068] cleanup: remove redundant panicAlternativeStringer Signed-off-by: A.D <1695316070@qq.com> --- server/etcdserver/util.go | 19 ------------------- server/etcdserver/util_test.go | 20 -------------------- 2 files changed, 39 deletions(-) diff --git a/server/etcdserver/util.go b/server/etcdserver/util.go index fbba5491b071..b23ab682e494 100644 --- a/server/etcdserver/util.go +++ b/server/etcdserver/util.go @@ -15,7 +15,6 @@ package etcdserver import ( - "fmt" "time" "go.etcd.io/etcd/client/pkg/v3/types" @@ -96,21 +95,3 @@ func (nc *notifier) notify(err error) { nc.err = err close(nc.c) } - -// panicAlternativeStringer wraps a fmt.Stringer, and if calling String() panics, calls the alternative instead. -// This is needed to ensure logging slow v2 requests does not panic, which occurs when running integration tests -// with the embedded server with github.com/golang/protobuf v1.4.0+. See https://github.com/etcd-io/etcd/issues/12197. -type panicAlternativeStringer struct { - stringer fmt.Stringer - alternative func() string -} - -func (n panicAlternativeStringer) String() (s string) { - defer func() { - if err := recover(); err != nil { - s = n.alternative() - } - }() - s = n.stringer.String() - return s -} diff --git a/server/etcdserver/util_test.go b/server/etcdserver/util_test.go index cad7c3cf4528..816369e13203 100644 --- a/server/etcdserver/util_test.go +++ b/server/etcdserver/util_test.go @@ -90,23 +90,3 @@ func (s *nopTransporterWithActiveTime) Stop() {} func (s *nopTransporterWithActiveTime) Pause() {} func (s *nopTransporterWithActiveTime) Resume() {} func (s *nopTransporterWithActiveTime) reset(am map[types.ID]time.Time) { s.activeMap = am } - -func TestPanicAlternativeStringer(t *testing.T) { - p := panicAlternativeStringer{alternative: func() string { return "alternative" }} - - p.stringer = testStringerFunc(func() string { panic("here") }) - if s := p.String(); s != "alternative" { - t.Fatalf("expected 'alternative', got %q", s) - } - - p.stringer = testStringerFunc(func() string { return "test" }) - if s := p.String(); s != "test" { - t.Fatalf("expected 'test', got %q", s) - } -} - -type testStringerFunc func() string - -func (s testStringerFunc) String() string { - return s() -} From e037c027b1e97717105aeb7162fd85eeb90c7ff4 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 19 Dec 2025 01:54:57 +0000 Subject: [PATCH 0706/1068] Add a new metrics etcd_server_request_duration_seconds to track e2e duration for each request Signed-off-by: Benjamin Wang --- server/etcdserver/metrics.go | 14 ++++++ server/etcdserver/v3_server.go | 85 +++++++++++++++++++++++++++++++++- tests/e2e/metrics_test.go | 1 + 3 files changed, 98 insertions(+), 2 deletions(-) diff --git a/server/etcdserver/metrics.go b/server/etcdserver/metrics.go index 7176d30adbc0..4d39afcf6fa8 100644 --- a/server/etcdserver/metrics.go +++ b/server/etcdserver/metrics.go @@ -107,6 +107,19 @@ var ( Name: "read_indexes_failed_total", Help: "The total number of failed read indexes seen.", }) + requestDurationSec = prometheus.NewHistogramVec( + prometheus.HistogramOpts{ + Namespace: "etcd", + Subsystem: "server", + Name: "request_duration_seconds", + Help: "Response latency distribution in seconds for each type.", + + // lowest bucket start of upper bound 0.001 sec (1 ms) with factor 2 + // highest bucket start of 0.001 sec * 2^13 == 8.192 sec + Buckets: prometheus.ExponentialBuckets(0.001, 2, 14), + }, + []string{"type", "success"}, + ) leaseExpired = prometheus.NewCounter(prometheus.CounterOpts{ Namespace: "etcd_debugging", Subsystem: "server", @@ -173,6 +186,7 @@ func init() { prometheus.MustRegister(proposalsFailed) prometheus.MustRegister(slowReadIndex) prometheus.MustRegister(readIndexFailed) + prometheus.MustRegister(requestDurationSec) prometheus.MustRegister(leaseExpired) prometheus.MustRegister(currentVersion) prometheus.MustRegister(currentGoVersion) diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 4010ab155de7..3fcf3c4a9b6d 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -131,6 +131,8 @@ func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRe ) } trace.LogIfLong(traceThreshold) + success := err == nil + requestDurationSec.WithLabelValues("Range", strconv.FormatBool(success)).Observe(time.Since(start).Seconds()) }(time.Now()) if !r.Serializable { @@ -218,6 +220,8 @@ func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse defer func(start time.Time) { txn.WarnOfExpensiveReadOnlyTxnRequest(s.Logger(), s.Cfg.WarningApplyDuration, start, r, resp, err) trace.LogIfLong(traceThreshold) + success := err == nil + requestDurationSec.WithLabelValues("ReadonlyTxn", strconv.FormatBool(success)).Observe(time.Since(start).Seconds()) }(time.Now()) get := func() { @@ -823,7 +827,18 @@ func (s *EtcdServer) processInternalRaftRequestOnce(ctx context.Context, r pb.In } } - data, err := r.Marshal() + var ( + data []byte + err error + start = time.Now() + reqType = getRequestType(&r) + ) + defer func() { + success := err == nil + requestDurationSec.WithLabelValues(reqType, strconv.FormatBool(success)).Observe(time.Since(start).Seconds()) + }() + + data, err = r.Marshal() if err != nil { return nil, err } @@ -841,7 +856,6 @@ func (s *EtcdServer) processInternalRaftRequestOnce(ctx context.Context, r pb.In cctx, cancel := context.WithTimeout(ctx, s.Cfg.ReqTimeout()) defer cancel() - start := time.Now() span := trace.SpanFromContext(ctx) span.AddEvent("Send raft proposal") err = s.r.Propose(cctx, data) @@ -866,6 +880,73 @@ func (s *EtcdServer) processInternalRaftRequestOnce(ctx context.Context, r pb.In } } +func getRequestType(r *pb.InternalRaftRequest) string { + switch { + case r.Range != nil: + return "Range" + case r.Put != nil: + return "Put" + case r.DeleteRange != nil: + return "DeleteRange" + case r.Txn != nil: + return "Txn" + case r.Compaction != nil: + return "Compaction" + case r.LeaseGrant != nil: + return "LeaseGrant" + case r.LeaseRevoke != nil: + return "LeaseRevoke" + case r.LeaseCheckpoint != nil: + return "LeaseCheckpoint" + case r.Alarm != nil: + return "Alarm" + case r.Authenticate != nil: + return "Authenticate" + case r.AuthEnable != nil: + return "AuthEnable" + case r.AuthDisable != nil: + return "AuthDisable" + case r.AuthStatus != nil: + return "AuthStatus" + case r.AuthUserAdd != nil: + return "AuthUserAdd" + case r.AuthUserDelete != nil: + return "AuthUserDelete" + case r.AuthUserChangePassword != nil: + return "AuthUserChangePassword" + case r.AuthUserGrantRole != nil: + return "AuthUserGrantRole" + case r.AuthUserGet != nil: + return "AuthUserGet" + case r.AuthUserRevokeRole != nil: + return "AuthUserRevokeRole" + case r.AuthRoleAdd != nil: + return "AuthRoleAdd" + case r.AuthRoleGrantPermission != nil: + return "AuthRoleGrantPermission" + case r.AuthRoleGet != nil: + return "AuthRoleGet" + case r.AuthRoleRevokePermission != nil: + return "AuthRoleRevokePermission" + case r.AuthRoleDelete != nil: + return "AuthRoleDelete" + case r.AuthUserList != nil: + return "AuthUserList" + case r.AuthRoleList != nil: + return "AuthRoleList" + case r.ClusterVersionSet != nil: + return "ClusterVersionSet" + case r.ClusterMemberAttrSet != nil: + return "ClusterMemberAttrSet" + case r.DowngradeInfoSet != nil: + return "DowngradeInfoSet" + case r.DowngradeVersionTest != nil: + return "DowngradeVersionTest" + default: + return "Unknown" + } +} + // Watchable returns a watchable interface attached to the etcdserver. func (s *EtcdServer) Watchable() mvcc.WatchableKV { return s.KV() } diff --git a/tests/e2e/metrics_test.go b/tests/e2e/metrics_test.go index 976be635fea4..6e3774d1cf26 100644 --- a/tests/e2e/metrics_test.go +++ b/tests/e2e/metrics_test.go @@ -213,6 +213,7 @@ func TestNoMetricsMissing(t *testing.T) { "etcd_server_quota_backend_bytes", "etcd_server_range_duration_seconds", "etcd_server_read_indexes_failed_total", + "etcd_server_request_duration_seconds", "etcd_server_slow_apply_total", "etcd_server_slow_read_indexes_total", "etcd_server_snapshot_apply_in_progress_total", From f364a6b1a2d2eaa1654bf9130964c0a23448c8bb Mon Sep 17 00:00:00 2001 From: majiayu000 <1835304752@qq.com> Date: Wed, 31 Dec 2025 00:34:29 +0800 Subject: [PATCH 0707/1068] docs: add etcdserver exit codes reference Add comprehensive documentation for all exit codes returned by the etcd server, addressing issue #21032. Coverage: - Exit code 0: Success scenarios (help, version, normal shutdown, graceful signal shutdown for PID 1) - Exit code 1: General errors (18 scenarios covering logger, config, discovery, listener failures) - Exit code 2: Argument parsing errors - Signal termination: SIGTERM (143) and SIGINT (130) for non-PID 1 processes on Linux/Unix All code references use GitHub permalinks. Signal-based exit codes (128 + signal number) are specific to Linux/Unix systems; on other platforms etcd returns 0 on success and 1 on error. Fixes #21032 Co-authored-by: Benjamin Wang Signed-off-by: majiayu000 <1835304752@qq.com> --- Documentation/contributor-guide/exit_codes.md | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Documentation/contributor-guide/exit_codes.md diff --git a/Documentation/contributor-guide/exit_codes.md b/Documentation/contributor-guide/exit_codes.md new file mode 100644 index 000000000000..db8cbe65219d --- /dev/null +++ b/Documentation/contributor-guide/exit_codes.md @@ -0,0 +1,54 @@ +# Exit Codes Reference + +This document provides a reference of exit codes returned by the etcd server. + +etcd server explicitly uses three exit codes: **0** (success), **1** (general errors), and **2** (argument errors). When terminated by signals (SIGTERM/SIGINT) on Linux/Unix systems, the exit code depends on the process type: PID 1 processes exit with code 0, while non-PID 1 processes re-raise the signal, resulting in exit codes 143 (SIGTERM) or 130 (SIGINT). + +## Exit Code 0 - Success + +| Scenario | Code Reference | +| -------- | -------------- | +| Help flag (`--help`) | [`server/etcdmain/config.go#L131`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/etcdmain/config.go#L131) | +| Version flag (`--version`) | [`server/etcdmain/config.go#L144`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/etcdmain/config.go#L144) | +| Normal shutdown | [`server/etcdmain/etcd.go#L176`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/etcdmain/etcd.go#L176) | +| Graceful shutdown on signal (PID 1) | [`pkg/osutil/interrupt_unix.go#L74`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/pkg/osutil/interrupt_unix.go#L74) | + +## Signal Termination (128 + signal number) + +**Note:** This behavior is specific to Linux platform. On other platforms, etcd typically returns exit code 0 if it exits without error, and 1 otherwise. + +For non-PID 1 processes on Linux/Unix, the signal handler re-raises the signal to the process itself ([`pkg/osutil/interrupt_unix.go#L77`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/pkg/osutil/interrupt_unix.go#L77)), which results in the kernel setting the exit code to 128 + signal number. + +| Signal | Exit Code | Code Reference | +| ------ | --------- | -------------- | +| SIGINT (Ctrl-C) | 130 (128 + 2) | [`pkg/osutil/interrupt_unix.go#L53`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/pkg/osutil/interrupt_unix.go#L53) | +| SIGTERM | 143 (128 + 15) | [`pkg/osutil/interrupt_unix.go#L53`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/pkg/osutil/interrupt_unix.go#L53) | + +## Exit Code 1 - General Errors + +All server errors exit with code 1: + +| Scenario | Code Reference | +| -------- | -------------- | +| Failed to create logger | [`server/etcdmain/etcd.go#L60`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/etcdmain/etcd.go#L60) | +| Failed to verify flags | [`server/etcdmain/etcd.go#L69`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/etcdmain/etcd.go#L69) | +| Discovery token already used | [`server/etcdmain/etcd.go#L141`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/etcdmain/etcd.go#L141) | +| Initial cluster configuration error | [`server/etcdmain/etcd.go#L155`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/etcdmain/etcd.go#L155) | +| Discovery failed | [`server/etcdmain/etcd.go#L157`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/etcdmain/etcd.go#L157) | +| Listener failed | [`server/etcdmain/etcd.go#L172`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/etcdmain/etcd.go#L172) | +| Failed to list data directory | [`server/etcdmain/etcd.go#L201`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/etcdmain/etcd.go#L201) | +| Invalid datadir (member + proxy exist) | [`server/etcdmain/etcd.go#L221`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/etcdmain/etcd.go#L221) | +| Unsupported architecture | [`server/etcdmain/etcd.go#L252`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/etcdmain/etcd.go#L252) | +| Generic fatal error | [`server/etcdmain/util.go#L34`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/etcdmain/util.go#L34) | +| Invalid listen-peer-urls | [`server/embed/config.go#L821`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/embed/config.go#L821) | +| Invalid listen-client-urls | [`server/embed/config.go#L830`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/embed/config.go#L830) | +| Invalid listen-client-http-urls | [`server/embed/config.go#L839`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/embed/config.go#L839) | +| Invalid initial-advertise-peer-urls | [`server/embed/config.go#L848`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/embed/config.go#L848) | +| Invalid advertise-client-urls | [`server/embed/config.go#L857`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/embed/config.go#L857) | +| Invalid listen-metrics-urls | [`server/embed/config.go#L866`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/embed/config.go#L866) | + +## Exit Code 2 - Argument Errors + +| Scenario | Code Reference | +| -------- | -------------- | +| Flag parsing error | [`server/etcdmain/config.go#L133`](https://github.com/etcd-io/etcd/blob/e0a72cf470756149f4f602bf89284038e6397549/server/etcdmain/config.go#L133) | From a5c036f070f6f972d882e8d81b06de86ecdbd281 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 27 Dec 2025 11:45:17 +0100 Subject: [PATCH 0708/1068] Read all entries from WAL with no consideration for snapshots Signed-off-by: Marek Siarkowicz --- tests/robustness/report/wal.go | 68 +++++-- tests/robustness/report/wal_test.go | 295 ++++++++++++++++++++++++++++ 2 files changed, 350 insertions(+), 13 deletions(-) diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index 8394011aef4d..e8d09294cf80 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -27,6 +27,7 @@ import ( "go.uber.org/zap" pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/client/pkg/v3/fileutil" "go.etcd.io/etcd/pkg/v3/pbutil" "go.etcd.io/etcd/server/v3/storage/datadir" "go.etcd.io/etcd/server/v3/storage/wal" @@ -193,20 +194,8 @@ func ReadWAL(lg *zap.Logger, dataDir string) (state raftpb.HardState, ents []raf walDir := datadir.ToWALDir(dataDir) repaired := false for { - w, err := wal.OpenForRead(lg, walDir, walpb.Snapshot{Index: 0}) + state, ents, err = ReadAllWALEntries(lg, walDir) if err != nil { - return state, nil, fmt.Errorf("failed to open WAL, err: %w", err) - } - _, state, ents, err = w.ReadAll() - w.Close() - if err != nil { - if errors.Is(err, wal.ErrSnapshotNotFound) { - lg.Info("Error occurred when reading WAL entries", zap.Error(err)) - return state, ents, nil - } - if errors.Is(err, wal.ErrSliceOutOfRange) { - return state, nil, fmt.Errorf("failed to read WAL, err: %w", err) - } // we can only repair ErrUnexpectedEOF and we never repair twice. if repaired || !errors.Is(err, io.ErrUnexpectedEOF) { return state, nil, fmt.Errorf("failed to read WAL, cannot be repaired, err: %w", err) @@ -356,3 +345,56 @@ func toEtcdOperation(op *pb.RequestOp) (operation model.EtcdOperation) { } return operation } + +func ReadAllWALEntries(lg *zap.Logger, dirpath string) (state raftpb.HardState, ents []raftpb.Entry, err error) { + names, err := fileutil.ReadDir(dirpath) + if err != nil { + return state, nil, err + } + files := make([]fileutil.FileReader, 0, len(names)) + for _, name := range names { + if !strings.HasSuffix(name, ".wal") { + continue + } + p := filepath.Join(dirpath, name) + var f *os.File + f, err = os.OpenFile(p, os.O_RDONLY, fileutil.PrivateFileMode) + if err != nil { + return state, nil, fmt.Errorf("os.OpenFile failed (%q): %w", p, err) + } + defer f.Close() + files = append(files, fileutil.NewFileReader(f)) + } + rec := &walpb.Record{} + decoder := wal.NewDecoder(files...) + for err = decoder.Decode(rec); err == nil; err = decoder.Decode(rec) { + switch rec.Type { + case wal.EntryType: + e := wal.MustUnmarshalEntry(rec.Data) + i := len(ents) + for ; i > 0 && ents[i-1].Index >= e.Index; i-- { + } + // The line below is potentially overriding some 'uncommitted' entries. + ents = append(ents[:i], e) + case wal.StateType: + state = wal.MustUnmarshalState(rec.Data) + case wal.MetadataType: + case wal.CrcType: + crc := decoder.LastCRC() + // current crc of decoder must match the crc of the record. + // do no need to match 0 crc, since the decoder is a new one at this case. + if crc != 0 && rec.Validate(crc) != nil { + state.Reset() + return state, nil, wal.ErrCRCMismatch + } + decoder.UpdateCRC(rec.Crc) + case wal.SnapshotType: + default: + return state, nil, fmt.Errorf("unexpected block type %d", rec.Type) + } + } + if err != nil && !errors.Is(err, io.EOF) { + return state, nil, err + } + return state, ents, nil +} diff --git a/tests/robustness/report/wal_test.go b/tests/robustness/report/wal_test.go index 39d0216df8a4..b3b2d3d019eb 100644 --- a/tests/robustness/report/wal_test.go +++ b/tests/robustness/report/wal_test.go @@ -17,8 +17,12 @@ package report import ( "testing" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" + "go.etcd.io/etcd/server/v3/storage/wal" + "go.etcd.io/etcd/server/v3/storage/wal/walpb" "go.etcd.io/raft/v3/raftpb" ) @@ -361,3 +365,294 @@ func TestMergeMemberEntries(t *testing.T) { }) } } + +func TestWriteReadWAL(t *testing.T) { + type batch struct { + state *raftpb.HardState + entries []raftpb.Entry + snapshot *walpb.Snapshot + } + type want struct { + wantState raftpb.HardState + wantEntries []raftpb.Entry + wantError string + } + + tcs := []struct { + name string + operations []batch + readAt walpb.Snapshot + walReadAll want + readAllEntries want + }{ + { + name: "single batch", + operations: []batch{ + { + state: &raftpb.HardState{Commit: 5}, + entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + }, + }, + walReadAll: want{ + wantState: raftpb.HardState{Commit: 5}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + }, + readAllEntries: want{ + wantState: raftpb.HardState{Commit: 5}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + }, + }, + { + name: "multiple committed batches", + operations: []batch{ + { + state: &raftpb.HardState{Commit: 2}, + entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + }, + { + state: &raftpb.HardState{Commit: 4}, + entries: []raftpb.Entry{{Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, + }, + { + state: &raftpb.HardState{Commit: 5}, + entries: []raftpb.Entry{{Index: 5, Data: []byte("e")}}, + }, + }, + walReadAll: want{ + wantState: raftpb.HardState{Commit: 5}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + }, + readAllEntries: want{ + wantState: raftpb.HardState{Commit: 5}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + }, + }, + { + name: "uncommitted ovewritten entries", + operations: []batch{ + { + state: &raftpb.HardState{Commit: 1}, + entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("a")}}, + }, + { + state: &raftpb.HardState{Commit: 3}, + entries: []raftpb.Entry{{Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("b")}, {Index: 4, Data: []byte("b")}}, + }, + { + state: &raftpb.HardState{Commit: 4}, + entries: []raftpb.Entry{{Index: 4, Data: []byte("c")}, {Index: 5, Data: []byte("c")}}, + }, + }, + walReadAll: want{ + wantState: raftpb.HardState{Commit: 4}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("b")}, {Index: 4, Data: []byte("c")}, {Index: 5, Data: []byte("c")}}, + }, + readAllEntries: want{ + wantState: raftpb.HardState{Commit: 4}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("b")}, {Index: 4, Data: []byte("c")}, {Index: 5, Data: []byte("c")}}, + }, + }, + { + name: "entries in bad order", + operations: []batch{ + { + state: &raftpb.HardState{Commit: 2}, + entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + }, + { + state: &raftpb.HardState{Commit: 6}, + entries: []raftpb.Entry{{Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, + }, + { + state: &raftpb.HardState{Commit: 4}, + entries: []raftpb.Entry{{Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, + }, + }, + walReadAll: want{ + wantError: "slice bounds out of range", + wantState: raftpb.HardState{Commit: 2}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + }, + readAllEntries: want{ + wantState: raftpb.HardState{Commit: 4}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, + }, + }, + { + name: "read before snapshot", + operations: []batch{ + { + state: &raftpb.HardState{Commit: 1}, + entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + }, + { + snapshot: &walpb.Snapshot{Index: 3, ConfState: &raftpb.ConfState{}}, + }, + { + state: &raftpb.HardState{Commit: 5}, + entries: []raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + }, + }, + walReadAll: want{ + wantError: "slice bounds out of range", + wantState: raftpb.HardState{Commit: 1}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + }, + readAllEntries: want{ + wantState: raftpb.HardState{Commit: 5}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + }, + }, + { + name: "read at snapshot", + operations: []batch{ + { + state: &raftpb.HardState{Commit: 1}, + entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + }, + { + snapshot: &walpb.Snapshot{Index: 3, ConfState: &raftpb.ConfState{}}, + }, + { + state: &raftpb.HardState{Commit: 5}, + entries: []raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + }, + }, + readAt: walpb.Snapshot{Index: 3}, + walReadAll: want{ + wantState: raftpb.HardState{Commit: 5}, + wantEntries: []raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + }, + readAllEntries: want{ + wantState: raftpb.HardState{Commit: 5}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + }, + }, + { + name: "uncommitted entries before snapshot", + operations: []batch{ + { + state: &raftpb.HardState{Commit: 1}, + entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + }, + { + state: &raftpb.HardState{Commit: 3}, + entries: []raftpb.Entry{{Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, + }, + { + snapshot: &walpb.Snapshot{Index: 3, ConfState: &raftpb.ConfState{}}, + }, + { + state: &raftpb.HardState{Commit: 4}, + entries: []raftpb.Entry{{Index: 4, Data: []byte("e")}, {Index: 5, Data: []byte("f")}}, + }, + }, + walReadAll: want{ + wantState: raftpb.HardState{Commit: 4}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("e")}, {Index: 5, Data: []byte("f")}}, + }, + readAllEntries: want{ + wantState: raftpb.HardState{Commit: 4}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("e")}, {Index: 5, Data: []byte("f")}}, + }, + }, + { + name: "entries preceding snapshot", + operations: []batch{ + { + snapshot: &walpb.Snapshot{Index: 4, ConfState: &raftpb.ConfState{}}, + }, + { + state: &raftpb.HardState{Commit: 2}, + entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + }, + { + state: &raftpb.HardState{Commit: 4}, + entries: []raftpb.Entry{{Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, + }, + { + state: &raftpb.HardState{Commit: 6}, + entries: []raftpb.Entry{{Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, + }, + }, + readAt: walpb.Snapshot{Index: 4}, + walReadAll: want{ + wantState: raftpb.HardState{Commit: 6}, + wantEntries: []raftpb.Entry{{Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, + }, + readAllEntries: want{ + wantState: raftpb.HardState{Commit: 6}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, + }, + }, + { + name: "read after snapshot", + operations: []batch{ + { + state: &raftpb.HardState{Commit: 1}, + entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + }, + { + snapshot: &walpb.Snapshot{Index: 3, ConfState: &raftpb.ConfState{}}, + }, + { + state: &raftpb.HardState{Commit: 5}, + entries: []raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + }, + }, + readAt: walpb.Snapshot{Index: 4}, + walReadAll: want{ + wantError: "snapshot not found", + wantState: raftpb.HardState{Commit: 5}, + wantEntries: []raftpb.Entry{{Index: 5, Data: []byte("e")}}, + }, + readAllEntries: want{ + wantState: raftpb.HardState{Commit: 5}, + wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + }, + }, + } + for _, tc := range tcs { + t.Run(tc.name, func(t *testing.T) { + dir := t.TempDir() + lg := zaptest.NewLogger(t) + w, err := wal.Create(lg, dir, nil) + require.NoError(t, err) + for _, op := range tc.operations { + if op.state != nil { + err = w.Save(*op.state, op.entries) + require.NoError(t, err) + } + if op.snapshot != nil { + err = w.SaveSnapshot(*op.snapshot) + require.NoError(t, err) + } + } + w.Close() + + w2, err := wal.OpenForRead(lg, dir, tc.readAt) + require.NoError(t, err) + defer w2.Close() + t.Run("wal.ReadAll", func(t *testing.T) { + _, state, entries, err := w2.ReadAll() + if tc.walReadAll.wantError != "" { + require.ErrorContains(t, err, tc.walReadAll.wantError) + } else { + require.NoError(t, err) + } + assert.Equal(t, tc.walReadAll.wantState, state) + assert.Equal(t, tc.walReadAll.wantEntries, entries) + }) + t.Run("ReadAllEntries", func(t *testing.T) { + state, entries, err := ReadAllWALEntries(lg, dir) + if tc.readAllEntries.wantError != "" { + require.ErrorContains(t, err, tc.walReadAll.wantError) + } else { + require.NoError(t, err) + } + assert.Equal(t, tc.readAllEntries.wantState, state) + assert.Equal(t, tc.readAllEntries.wantEntries, entries) + }) + }) + } +} From 93ba5eef0faa96e1369f3ff3c3f3994d722bfd22 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 2 Jan 2026 14:25:42 +0900 Subject: [PATCH 0709/1068] robustness: rename RunTrafficLoop and add RunWatchLoop method Rename RunTrafficLoop to RunKeyValueLoop to better reflect that it handles key-value operations (get, put, delete, etc.). Add a new RunWatchLoop method to the Traffic interface that will create watches in a controlled loop with configurable QPS and revision offset parameters. This provides better lifecycle control than the previous periodic background watch mechanism. The RunWatchLoop implementations are stubs that will be filled in a subsequent commit. Signed-off-by: Marek Siarkowicz Signed-off-by: Chun-Hung Tseng --- .../test-template/robustness/traffic/main.go | 4 ++-- tests/robustness/traffic/etcd.go | 6 +++++- tests/robustness/traffic/kubernetes.go | 6 +++++- tests/robustness/traffic/traffic.go | 20 ++++++++++++++++--- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 3912403633ed..5b5fb26dd19c 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -154,7 +154,7 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl go func(c *client.RecordingClient) { defer wg.Done() defer c.Close() - tf.RunTrafficLoop(ctx, traffic.RunTrafficLoopParam{ + tf.RunKeyValueLoop(ctx, traffic.RunTrafficLoopParam{ Client: c, QPSLimiter: limiter, IDs: clientSet.IdentityProvider(), @@ -171,7 +171,7 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl go func(c *client.RecordingClient) { defer wg.Done() defer c.Close() - tf.RunTrafficLoop(ctx, traffic.RunTrafficLoopParam{ + tf.RunKeyValueLoop(ctx, traffic.RunTrafficLoopParam{ Client: c, QPSLimiter: limiter, IDs: clientSet.IdentityProvider(), diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index c39409d0fb2e..a3ad2c2a67da 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -109,7 +109,7 @@ func (t etcdTraffic) Name() string { return "Etcd" } -func (t etcdTraffic) RunTrafficLoop(ctx context.Context, p RunTrafficLoopParam) { +func (t etcdTraffic) RunKeyValueLoop(ctx context.Context, p RunTrafficLoopParam) { lastOperationSucceeded := true var lastRev int64 var requestType etcdRequestType @@ -156,6 +156,10 @@ func (t etcdTraffic) RunTrafficLoop(ctx context.Context, p RunTrafficLoopParam) } } +func (t etcdTraffic) RunWatchLoop(ctx context.Context, p RunWatchLoopParam) { + // TODO: implement in a subsequent commit +} + func (t etcdTraffic) RunCompactLoop(ctx context.Context, param RunCompactLoopParam) { var lastRev int64 = 2 ticker := time.NewTicker(param.Period) diff --git a/tests/robustness/traffic/kubernetes.go b/tests/robustness/traffic/kubernetes.go index 7dfb19c8f24b..4f6f25a3c29a 100644 --- a/tests/robustness/traffic/kubernetes.go +++ b/tests/robustness/traffic/kubernetes.go @@ -88,7 +88,7 @@ func (t kubernetesTraffic) ExpectUniqueRevision() bool { return true } -func (t kubernetesTraffic) RunTrafficLoop(ctx context.Context, p RunTrafficLoopParam) { +func (t kubernetesTraffic) RunKeyValueLoop(ctx context.Context, p RunTrafficLoopParam) { kc := kubernetes.Client{Client: &clientv3.Client{KV: p.Client}} s := newStorage() keyPrefix := "/registry/" + t.resource + "/" @@ -136,6 +136,10 @@ func (t kubernetesTraffic) RunTrafficLoop(ctx context.Context, p RunTrafficLoopP g.Wait() } +func (t kubernetesTraffic) RunWatchLoop(ctx context.Context, p RunWatchLoopParam) { + // TODO: implement in a subsequent commit +} + func (t kubernetesTraffic) Read(ctx context.Context, c *client.RecordingClient, s *storage, limiter *rate.Limiter, keyPrefix string) error { kc := kubernetes.Client{Client: &clientv3.Client{KV: c}} op := random.PickRandom(t.readChoices) diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index b5aba5fab995..a876e14342fe 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -85,7 +85,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 defer wg.Done() defer c.Close() - traffic.RunTrafficLoop(ctx, RunTrafficLoopParam{ + traffic.RunKeyValueLoop(ctx, RunTrafficLoopParam{ Client: c, QPSLimiter: limiter, IDs: clientSet.IdentityProvider(), @@ -105,7 +105,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 defer wg.Done() defer c.Close() - traffic.RunTrafficLoop(ctx, RunTrafficLoopParam{ + traffic.RunKeyValueLoop(ctx, RunTrafficLoopParam{ Client: c, QPSLimiter: limiter, IDs: clientSet.IdentityProvider(), @@ -335,8 +335,22 @@ type RunCompactLoopParam struct { Finish <-chan struct{} } +type RunWatchLoopParam struct { + Client *client.RecordingClient + KeyStore *keyStore + Finish <-chan struct{} + RevisionOffset int64 // Random offset range: -RevisionOffset <= offset <= RevisionOffset + WatchQPS float64 // QPS limit for watch requests +} + +const ( + DefaultWatchQPS = 10.0 + DefaultRevisionOffset = 100 +) + type Traffic interface { - RunTrafficLoop(ctx context.Context, param RunTrafficLoopParam) + RunKeyValueLoop(ctx context.Context, param RunTrafficLoopParam) + RunWatchLoop(ctx context.Context, param RunWatchLoopParam) RunCompactLoop(ctx context.Context, param RunCompactLoopParam) ExpectUniqueRevision() bool } From 2d1bb46c2675dbf52eeb3b9461acd69c972137f8 Mon Sep 17 00:00:00 2001 From: Ashwani Kumar Kamal Date: Mon, 5 Jan 2026 19:30:39 +0530 Subject: [PATCH 0710/1068] robustness: drop delete revision tracking in watchRevisions Delete operation revisions are now determined from watch events generated by lease revocation rather than being tracked separately in watchRevisions(). Signed-off-by: Ashwani Kumar Kamal --- tests/robustness/validate/patch_history.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/robustness/validate/patch_history.go b/tests/robustness/validate/patch_history.go index 30e06d5b3d93..a03e7961fad1 100644 --- a/tests/robustness/validate/patch_history.go +++ b/tests/robustness/validate/patch_history.go @@ -32,7 +32,7 @@ type patchArgs struct { } func patchLinearizableOperations(operations []porcupine.Operation, reports []report.ClientReport, persistedRequests []model.EtcdRequest) []porcupine.Operation { - putRevision, delRevision := watchRevisions(reports) + putRevision := watchRevisions(reports) persistedPutCount := countPersistedPuts(persistedRequests) clientPutCount := countClientPuts(reports) @@ -56,7 +56,6 @@ func patchLinearizableOperations(operations []porcupine.Operation, reports []rep clientCount: c, persistedCount: persistedDeleteCount[opts], returnTime: delReturnTime[opts], - revision: delRevision[opts], } } @@ -65,9 +64,8 @@ func patchLinearizableOperations(operations []porcupine.Operation, reports []rep ) } -func watchRevisions(reports []report.ClientReport) (map[model.PutOptions]int64, map[model.DeleteOptions]int64) { +func watchRevisions(reports []report.ClientReport) map[model.PutOptions]int64 { putRevisions := map[model.PutOptions]int64{} - delRevisions := map[model.DeleteOptions]int64{} for _, client := range reports { for _, watch := range client.Watch { @@ -87,7 +85,7 @@ func watchRevisions(reports []report.ClientReport) (map[model.PutOptions]int64, } } } - return putRevisions, delRevisions + return putRevisions } func patchOperations( From edb313bd9f4298c2242d4707d5803432f0fd13e0 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 2 Jan 2026 01:00:51 +0900 Subject: [PATCH 0711/1068] dependency: bump google.golang.org/protobuf from 1.36.10 to 1.36.11 Reference: - https://github.com/etcd-io/etcd/pull/21056 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 ++-- bill-of-materials.json | 9 --------- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- go.work.sum | 1 + pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 24 files changed, 34 insertions(+), 42 deletions(-) diff --git a/api/go.mod b/api/go.mod index 22d9a076e028..efd535c178c5 100644 --- a/api/go.mod +++ b/api/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.11.1 google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 google.golang.org/grpc v1.77.0 - google.golang.org/protobuf v1.36.10 + google.golang.org/protobuf v1.36.11 ) require ( diff --git a/api/go.sum b/api/go.sum index 5c5b02d454c2..d01e90566ed7 100644 --- a/api/go.sum +++ b/api/go.sum @@ -83,8 +83,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/bill-of-materials.json b/bill-of-materials.json index 5ee8a1bc3f0f..970a3c91d813 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -17,15 +17,6 @@ } ] }, - { - "project": "github.com/antithesishq/antithesis-sdk-go", - "licenses": [ - { - "type": "MIT License", - "confidence": 1 - } - ] - }, { "project": "github.com/beorn7/perks/quantile", "licenses": [ diff --git a/cache/go.mod b/cache/go.mod index e6904269dada..8d7f3f566eae 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -29,7 +29,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/grpc v1.77.0 // indirect - google.golang.org/protobuf v1.36.10 // indirect + google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index 4e09c31b5471..6ca538bd0d95 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -111,8 +111,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index 6314a3efc905..06d382f3372b 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -41,7 +41,7 @@ require ( golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect - google.golang.org/protobuf v1.36.10 // indirect + google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 97c0deaa58ff..44970730dabc 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -117,8 +117,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index cf9631d631e2..b2ba5a88178c 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -47,7 +47,7 @@ require ( golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect - google.golang.org/protobuf v1.36.10 // indirect + google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index d0fbef9f77d3..d81aa4502395 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -152,8 +152,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 435dc502af8c..dcfdfc461b62 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -88,7 +88,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/grpc v1.77.0 // indirect - google.golang.org/protobuf v1.36.10 // indirect + google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 1ef5d6b95c45..8abd939567d9 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -195,8 +195,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/go.mod b/go.mod index 9e93f0abd2fa..fcd5d350092a 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 google.golang.org/grpc v1.77.0 - google.golang.org/protobuf v1.36.10 + google.golang.org/protobuf v1.36.11 ) require ( diff --git a/go.sum b/go.sum index 623ac1425088..45cd50ba235d 100644 --- a/go.sum +++ b/go.sum @@ -264,8 +264,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/go.work.sum b/go.work.sum index 619a8dc13d61..ea8b6c38bb71 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1037,6 +1037,7 @@ google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojt google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= diff --git a/pkg/go.mod b/pkg/go.mod index 506e7b532eb6..a6c63f69f5ac 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -29,7 +29,7 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect - google.golang.org/protobuf v1.36.10 // indirect + google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index 58d5fb04f759..fa7de5e60c08 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -68,8 +68,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/server/go.mod b/server/go.mod index 7d9f761b38b0..4deb23a9b400 100644 --- a/server/go.mod +++ b/server/go.mod @@ -42,7 +42,7 @@ require ( golang.org/x/time v0.14.0 google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 google.golang.org/grpc v1.77.0 - google.golang.org/protobuf v1.36.10 + google.golang.org/protobuf v1.36.11 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.6.0 ) diff --git a/server/go.sum b/server/go.sum index 06cbe7647ae7..b26e80211c51 100644 --- a/server/go.sum +++ b/server/go.sum @@ -174,8 +174,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tests/go.mod b/tests/go.mod index f8970b513132..9dedfb85c3c5 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -51,7 +51,7 @@ require ( golang.org/x/sync v0.19.0 golang.org/x/time v0.14.0 google.golang.org/grpc v1.77.0 - google.golang.org/protobuf v1.36.10 + google.golang.org/protobuf v1.36.11 ) require ( diff --git a/tests/go.sum b/tests/go.sum index 0266465ff497..2f617cf7bb65 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -270,8 +270,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index b599d2499a18..17d5bdd85bf3 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -248,7 +248,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect google.golang.org/grpc v1.77.0 // indirect - google.golang.org/protobuf v1.36.10 // indirect + google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect mvdan.cc/gofumpt v0.9.2 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 1fe2d0f4135f..66837fa37e6e 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -724,8 +724,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index b57d9f75c2e2..5055941be9ac 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -8,7 +8,7 @@ require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 github.com/google/go-github/v60 v60.0.0 github.com/spf13/cobra v1.10.2 - google.golang.org/protobuf v1.36.10 + google.golang.org/protobuf v1.36.11 ) require ( diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index fbc806b2986a..4e7883851d14 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1916,8 +1916,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 976c6761046c208de62b372c33e7b8fa435ad9fb Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 2 Jan 2026 00:57:18 +0900 Subject: [PATCH 0712/1068] scripts: improve update_dep.sh for better dependency management Improvements to the update_dep.sh script: - Add argument validation and usage instructions - Add print_current_dep_version function to show versions before/after - Add is_fully_indirect function with confirmation prompt for indirect deps - Improve update_module to use go mod edit for reliable indirect dep updates - Make version parameter optional (defaults to latest) - Fix bash 3.2 compatibility with ${2:-} syntax - Reduce logging noise by only logging when actually updating Signed-off-by: Chun-Hung Tseng Signed-off-by: Chun-Hung Tseng --- scripts/update_dep.sh | 68 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 57 insertions(+), 11 deletions(-) diff --git a/scripts/update_dep.sh b/scripts/update_dep.sh index bfabeb79db5b..3d847017ae57 100755 --- a/scripts/update_dep.sh +++ b/scripts/update_dep.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Copyright 2025 The etcd Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,7 +15,7 @@ # # Usage: # ./scripts/update_dep.sh module version -# or ./scripts/update_dep.sh module +# or ./scripts/update_dep.sh module (to update to the latest version) # e.g. # ./scripts/update_dep.sh github.com/golang/groupcache # ./scripts/update_dep.sh github.com/soheilhy/cmux v0.1.5 @@ -26,21 +26,67 @@ set -euo pipefail source ./scripts/test_lib.sh +if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then + log_error "Illegal number of parameters. Usage: $0 module [version]" + exit 1 +fi + mod="$1" -ver="$2" +ver="${2:-}" + +function print_current_dep_version { + log_info "${mod} version in all go.mod files:" + find . -name go.mod -exec grep -H "^\s*${mod}\s" {} + | sed 's|:|\t|' || true + printf "\n" +} + +function is_fully_indirect { + local result + result=$(find . -name go.mod -print0 | xargs -0 -I{} /bin/sh -c "cd \$(dirname {}); go list -f \"{{if eq .Path \\\"${mod}\\\"}}{{.Indirect}}{{end}}\" -m all" | sort | uniq) + [ "$result" = "true" ] +} + +function update_module { + local subdir + subdir=$(module_subdir) -function maybe_update_module { - run go mod tidy + # The `go get` command is most effective on dependencies that are explicitly + # listed as direct requirements in the go.mod file. When updating a purely + # indirect dependency, `go get` might not update it as expected. + # + # To work around this, we temporarily promote the indirect dependency to a + # direct one in the go.mod file using `go mod edit`. This ensures that + # `go get` will see and correctly update the module. Subsequent cleanup + # commands (like `go mod tidy`) will automatically move it back + # to an indirect dependency, but at the designated updated version. + # + # Note: `go mod edit` requires a specific version (e.g., v1.2.3), so we only + # use it when a version is explicitly provided. For "latest", we skip this + # step and let `go get -u` handle it directly. + if [ -n "${ver}" ]; then + run go mod edit -require "${mod}@${ver}" || true + fi - deps=$(go list -f '{{if not .Indirect}}{{if .Version}}{{.Path}},{{.Version}}{{end}}{{end}}' -m all) - if [[ "$deps" == *"${mod}"* ]]; then + # Check if the module is a dependency. + if go list -m all | grep -q -E "^\s*${mod}\s"; then + log_info " Updating in ${subdir}..." if [ -z "${ver}" ]; then - run go get "${mod}" + run go get -u "${mod}" else run go get "${mod}@${ver}" fi fi - } +} + +print_current_dep_version +if is_fully_indirect; then + read -p "Module ${mod} is a purely indirect dependency. Are you sure you want to update it? [y/N] " -r confirm + [[ "$confirm" == [Yy] ]] || exit # Default is No +fi + +log_info "Updating '${mod}' to ${ver:-latest} across all modules..." +run_for_modules update_module + +make fix-mod-tidy fix-bom update-go-workspace verify-dep -go mod tidy -run_for_modules maybe_update_module +print_current_dep_version From 29042be1f1e77f44dba97c25045cc0565fbb4bbd Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Wed, 7 Jan 2026 19:44:32 +0100 Subject: [PATCH 0713/1068] Handle non-existent member in v3 backend and implement matching membership tests for v3 backend Signed-off-by: Marek Siarkowicz --- server/etcdserver/api/membership/cluster.go | 58 +++-- .../etcdserver/api/membership/cluster_test.go | 240 ++++++++++++------ 2 files changed, 208 insertions(+), 90 deletions(-) diff --git a/server/etcdserver/api/membership/cluster.go b/server/etcdserver/api/membership/cluster.go index 48ee71b79614..902fb0e6d0fa 100644 --- a/server/etcdserver/api/membership/cluster.go +++ b/server/etcdserver/api/membership/cluster.go @@ -526,16 +526,25 @@ func (c *RaftCluster) PromoteMember(id types.ID, shouldApplyV3 ShouldApplyV3) { } if shouldApplyV3 { - c.members[id].RaftAttributes.IsLearner = false - c.updateMembershipMetric(id, true) - c.be.MustSaveMemberToBackend(c.members[id]) + if m, ok := c.members[id]; ok { + m.RaftAttributes.IsLearner = false + c.updateMembershipMetric(id, true) + c.be.MustSaveMemberToBackend(m) - c.lg.Info( - "promote member", - zap.String("cluster-id", c.cid.String()), - zap.String("local-member-id", c.localID.String()), - zap.String("promoted-member-id", id.String()), - ) + c.lg.Info( + "promote member", + zap.String("cluster-id", c.cid.String()), + zap.String("local-member-id", c.localID.String()), + zap.String("promoted-member-id", id.String()), + ) + } else { + c.lg.Info( + "ignore promoting non-existent member", + zap.String("cluster-id", c.cid.String()), + zap.String("local-member-id", c.localID.String()), + zap.String("promoted-member-id", id.String()), + ) + } } else { c.lg.Info( "ignore already promoted member", @@ -564,17 +573,28 @@ func (c *RaftCluster) UpdateRaftAttributes(id types.ID, raftAttr RaftAttributes, } if shouldApplyV3 { - c.members[id].RaftAttributes = raftAttr - c.be.MustSaveMemberToBackend(c.members[id]) + if m, ok := c.members[id]; ok { + m.RaftAttributes = raftAttr + c.be.MustSaveMemberToBackend(m) - c.lg.Info( - "updated member", - zap.String("cluster-id", c.cid.String()), - zap.String("local-member-id", c.localID.String()), - zap.String("updated-remote-peer-id", id.String()), - zap.Strings("updated-remote-peer-urls", raftAttr.PeerURLs), - zap.Bool("updated-remote-peer-is-learner", raftAttr.IsLearner), - ) + c.lg.Info( + "updated member", + zap.String("cluster-id", c.cid.String()), + zap.String("local-member-id", c.localID.String()), + zap.String("updated-remote-peer-id", id.String()), + zap.Strings("updated-remote-peer-urls", raftAttr.PeerURLs), + zap.Bool("updated-remote-peer-is-learner", raftAttr.IsLearner), + ) + } else { + c.lg.Info( + "ignore updating non-existent member", + zap.String("cluster-id", c.cid.String()), + zap.String("local-member-id", c.localID.String()), + zap.String("updated-remote-peer-id", id.String()), + zap.Strings("updated-remote-peer-urls", raftAttr.PeerURLs), + zap.Bool("updated-remote-peer-is-learner", raftAttr.IsLearner), + ) + } } else { c.lg.Info( "ignored already updated member", diff --git a/server/etcdserver/api/membership/cluster_test.go b/server/etcdserver/api/membership/cluster_test.go index 8e70cc08291b..38dadae077cc 100644 --- a/server/etcdserver/api/membership/cluster_test.go +++ b/server/etcdserver/api/membership/cluster_test.go @@ -530,49 +530,81 @@ func TestNodeToMemberBad(t *testing.T) { } func TestClusterAddMember(t *testing.T) { - st := mockstore.NewRecorder() - c := newTestCluster(t, nil) - c.SetStore(st) - c.AddMember(newTestMember(1, nil, "node1", nil), true) - - wactions := []testutil.Action{ - { - Name: "Create", - Params: []any{ - path.Join(StoreMembersPrefix, "1", "raftAttributes"), - false, - `{"peerURLs":null}`, - false, - v2store.TTLOptionSet{ExpireTime: v2store.Permanent}, + t.Run("V2", func(t *testing.T) { + st := mockstore.NewRecorder() + c := newTestCluster(t, nil) + c.SetStore(st) + c.AddMember(newTestMember(1, nil, "node1", nil), false) + + wactions := []testutil.Action{ + { + Name: "Create", + Params: []any{ + path.Join(StoreMembersPrefix, "1", "raftAttributes"), + false, + `{"peerURLs":null}`, + false, + v2store.TTLOptionSet{ExpireTime: v2store.Permanent}, + }, }, - }, - } - if g := st.Action(); !reflect.DeepEqual(g, wactions) { - t.Errorf("actions = %v, want %v", g, wactions) - } + } + if g := st.Action(); !reflect.DeepEqual(g, wactions) { + t.Errorf("actions = %v, want %v", g, wactions) + } + }) + + t.Run("V3", func(t *testing.T) { + c := newTestCluster(t, nil) + c.AddMember(newTestMember(1, nil, "node1", nil), true) + + members, _ := c.be.MustReadMembersFromBackend() + if len(members) != 1 { + t.Errorf("members = %v, want 1 member", members) + } + if _, ok := members[types.ID(1)]; !ok { + t.Errorf("member 1 not found") + } + }) } func TestClusterAddMemberAsLearner(t *testing.T) { - st := mockstore.NewRecorder() - c := newTestCluster(t, nil) - c.SetStore(st) - c.AddMember(newTestMemberAsLearner(1, []string{}, "node1", []string{"http://node1"}), true) - - wactions := []testutil.Action{ - { - Name: "Create", - Params: []any{ - path.Join(StoreMembersPrefix, "1", "raftAttributes"), - false, - `{"peerURLs":[],"isLearner":true}`, - false, - v2store.TTLOptionSet{ExpireTime: v2store.Permanent}, + t.Run("V2", func(t *testing.T) { + st := mockstore.NewRecorder() + c := newTestCluster(t, nil) + c.SetStore(st) + c.AddMember(newTestMemberAsLearner(1, []string{}, "node1", []string{"http://node1"}), false) + + wactions := []testutil.Action{ + { + Name: "Create", + Params: []any{ + path.Join(StoreMembersPrefix, "1", "raftAttributes"), + false, + `{"peerURLs":[],"isLearner":true}`, + false, + v2store.TTLOptionSet{ExpireTime: v2store.Permanent}, + }, }, - }, - } - if g := st.Action(); !reflect.DeepEqual(g, wactions) { - t.Errorf("actions = %v, want %v", g, wactions) - } + } + if g := st.Action(); !reflect.DeepEqual(g, wactions) { + t.Errorf("actions = %v, want %v", g, wactions) + } + }) + + t.Run("V3", func(t *testing.T) { + c := newTestCluster(t, nil) + c.AddMember(newTestMemberAsLearner(1, []string{}, "node1", []string{"http://node1"}), true) + + members, _ := c.be.MustReadMembersFromBackend() + if len(members) != 1 { + t.Errorf("members = %v, want 1 member", members) + } + if m, ok := members[types.ID(1)]; !ok { + t.Errorf("member 1 not found") + } else if !m.IsLearner { + t.Errorf("member 1 is not learner") + } + }) } func TestClusterMembers(t *testing.T) { @@ -596,18 +628,34 @@ func TestClusterMembers(t *testing.T) { } func TestClusterRemoveMember(t *testing.T) { - st := mockstore.NewRecorder() - c := newTestCluster(t, nil) - c.SetStore(st) - c.RemoveMember(1, true) - - wactions := []testutil.Action{ - {Name: "Delete", Params: []any{MemberStoreKey(1), true, true}}, - {Name: "Create", Params: []any{RemovedMemberStoreKey(1), false, "", false, v2store.TTLOptionSet{ExpireTime: v2store.Permanent}}}, - } - if !reflect.DeepEqual(st.Action(), wactions) { - t.Errorf("actions = %v, want %v", st.Action(), wactions) - } + t.Run("V2", func(t *testing.T) { + st := mockstore.NewRecorder() + c := newTestCluster(t, nil) + c.SetStore(st) + c.RemoveMember(1, false) + + wactions := []testutil.Action{ + {Name: "Delete", Params: []any{MemberStoreKey(1), true, true}}, + {Name: "Create", Params: []any{RemovedMemberStoreKey(1), false, "", false, v2store.TTLOptionSet{ExpireTime: v2store.Permanent}}}, + } + if !reflect.DeepEqual(st.Action(), wactions) { + t.Errorf("actions = %v, want %v", st.Action(), wactions) + } + }) + + t.Run("V3", func(t *testing.T) { + c := newTestCluster(t, nil) + c.AddMember(newTestMember(1, nil, "node1", nil), true) + c.RemoveMember(1, true) + + members, removed := c.be.MustReadMembersFromBackend() + if len(members) != 0 { + t.Errorf("members = %v, want 0 member", members) + } + if !removed[types.ID(1)] { + t.Errorf("member 1 not removed") + } + }) } func TestClusterUpdateAttributes(t *testing.T) { @@ -636,13 +684,44 @@ func TestClusterUpdateAttributes(t *testing.T) { }, } for i, tt := range tests { - c := newTestCluster(t, tt.mems) - c.removed = tt.removed + t.Run(fmt.Sprintf("V2-%d", i), func(t *testing.T) { + c := newTestCluster(t, tt.mems) + c.removed = tt.removed - c.UpdateAttributes(types.ID(1), Attributes{Name: name, ClientURLs: clientURLs}, true) - if g := c.Members(); !reflect.DeepEqual(g, tt.wmems) { - t.Errorf("#%d: members = %+v, want %+v", i, g, tt.wmems) - } + c.UpdateAttributes(types.ID(1), Attributes{Name: name, ClientURLs: clientURLs}, false) + if g := c.Members(); !reflect.DeepEqual(g, tt.wmems) { + t.Errorf("#%d: members = %+v, want %+v", i, g, tt.wmems) + } + }) + + t.Run(fmt.Sprintf("V3-%d", i), func(t *testing.T) { + c := newTestCluster(t, tt.mems) + for id := range tt.removed { + c.be.MustDeleteMemberFromBackend(id) + } + c.removed = tt.removed + + c.UpdateAttributes(types.ID(1), Attributes{Name: name, ClientURLs: clientURLs}, true) + + // Verify in-memory state + if g := c.Members(); !reflect.DeepEqual(g, tt.wmems) { + t.Errorf("#%d: members = %+v, want %+v", i, g, tt.wmems) + } + + bmembers, _ := c.be.MustReadMembersFromBackend() + if len(tt.wmems) > 0 { + if m, ok := bmembers[types.ID(1)]; !ok { + t.Errorf("member 1 not found in backend") + } else { + if m.Name != name { + t.Errorf("member 1 name = %s, want %s", m.Name, name) + } + if !reflect.DeepEqual(m.ClientURLs, clientURLs) { + t.Errorf("member 1 clientURLs = %v, want %v", m.ClientURLs, clientURLs) + } + } + } + }) } } @@ -670,7 +749,10 @@ func newTestCluster(tb testing.TB, membs []*Member) *RaftCluster { v2store: v2store.New(), } for _, m := range membs { - c.members[m.ID] = m + c.AddMember(m, true) + if m.ClientURLs != nil { + mustUpdateMemberAttrInStore(c.lg, c.v2store, m) + } } return c } @@ -1046,15 +1128,23 @@ func TestPromoteMember(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - c := newTestCluster(t, tc.members) - st := v2store.New("/0", "/1") - c.Store(st) - c.SetStore(st) + t.Run("V2", func(t *testing.T) { + c := newTestCluster(t, tc.members) - c.PromoteMember(tc.promoteID, false) + c.PromoteMember(tc.promoteID, false) - mst, _ := membersFromStore(c.lg, st) - require.Equal(t, tc.wantMembers, mst) + mst, _ := membersFromStore(c.lg, c.v2store) + require.Equal(t, tc.wantMembers, mst) + }) + + t.Run("V3", func(t *testing.T) { + c := newTestCluster(t, tc.members) + + c.PromoteMember(tc.promoteID, true) + + mst, _ := c.be.MustReadMembersFromBackend() + require.Equal(t, tc.wantMembers, mst) + }) }) } } @@ -1097,15 +1187,23 @@ func TestUpdateRaftAttributes(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - c := newTestCluster(t, tc.members) - st := v2store.New("/0", "/1") - c.Store(st) - c.SetStore(st) + t.Run("V2", func(t *testing.T) { + c := newTestCluster(t, tc.members) + + c.UpdateRaftAttributes(tc.updateMemberID, RaftAttributes{PeerURLs: newPeerURLs}, false) + + mst, _ := membersFromStore(c.lg, c.v2store) + require.Equal(t, tc.wantMembers, mst) + }) + + t.Run("V3", func(t *testing.T) { + c := newTestCluster(t, tc.members) - c.UpdateRaftAttributes(tc.updateMemberID, RaftAttributes{PeerURLs: newPeerURLs}, false) + c.UpdateRaftAttributes(tc.updateMemberID, RaftAttributes{PeerURLs: newPeerURLs}, true) - mst, _ := membersFromStore(c.lg, st) - require.Equal(t, tc.wantMembers, mst) + mst, _ := c.be.MustReadMembersFromBackend() + require.Equal(t, tc.wantMembers, mst) + }) }) } } From 164d4cc37e850c1d487249ed710ac6ca2c5c536a Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Tue, 6 Jan 2026 16:02:38 +0900 Subject: [PATCH 0714/1068] dependency: bump github.com/prometheus/common from 0.67.4 to 0.67.5 Reference: - https://github.com/etcd-io/etcd/pull/21088 Signed-off-by: Chun-Hung Tseng --- cache/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 14 files changed, 22 insertions(+), 22 deletions(-) diff --git a/cache/go.sum b/cache/go.sum index 947f02bf0cd3..7160335c863d 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -42,8 +42,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= -github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/client/v3/go.mod b/client/v3/go.mod index e24e6f645320..19042193a55d 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -29,7 +29,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.4 // indirect + github.com/prometheus/common v0.67.5 // indirect github.com/prometheus/procfs v0.16.1 // indirect go.opentelemetry.io/otel/metric v1.39.0 // indirect go.opentelemetry.io/otel/sdk v1.39.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 1bb4240fe644..1d63c9c49d98 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -46,8 +46,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= -github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 48dd62cc63a4..e7d21feae5ba 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -73,8 +73,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= -github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index f32ddf1946e1..8c1a3aa952e9 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -62,7 +62,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.4 // indirect + github.com/prometheus/common v0.67.5 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 4aea6e774649..1ed55c3108be 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -87,8 +87,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= -github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/go.mod b/go.mod index ad09fd292406..ff5da95f89eb 100644 --- a/go.mod +++ b/go.mod @@ -77,7 +77,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.4 // indirect + github.com/prometheus/common v0.67.5 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect diff --git a/go.sum b/go.sum index 0d3085d8e98b..b0e9e7d299f0 100644 --- a/go.sum +++ b/go.sum @@ -120,8 +120,8 @@ github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UH github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= -github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/server/go.mod b/server/go.mod index 169837e00a2e..65024ca3846e 100644 --- a/server/go.mod +++ b/server/go.mod @@ -60,7 +60,7 @@ require ( github.com/kylelemons/godebug v1.1.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/common v0.67.4 // indirect + github.com/prometheus/common v0.67.5 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.10 // indirect diff --git a/server/go.sum b/server/go.sum index 4c0094fadec2..b9d880e8bb2b 100644 --- a/server/go.sum +++ b/server/go.sum @@ -67,8 +67,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= -github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/tests/go.mod b/tests/go.mod index 2ec81d56f414..d278889dd33e 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -28,7 +28,7 @@ require ( github.com/olekukonko/tablewriter v1.1.2 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.67.4 + github.com/prometheus/common v0.67.5 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 diff --git a/tests/go.sum b/tests/go.sum index 5dcfee71ef50..441bb652630d 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -126,8 +126,8 @@ github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UH github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= -github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index ee23ca773ede..0024a3760c59 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -175,7 +175,7 @@ require ( github.com/polyfloyd/go-errorlint v1.8.0 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.4 // indirect + github.com/prometheus/common v0.67.5 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/quasilyte/go-ruleguard v0.4.5 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.23 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index a05b620ceb35..84b1917d8b8f 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -391,8 +391,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= -github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/quasilyte/go-ruleguard v0.4.5 h1:AGY0tiOT5hJX9BTdx/xBdoCubQUAE2grkqY2lSwvZcA= From 666fa64e354d716ae0e14892eb643ca5f55b22c7 Mon Sep 17 00:00:00 2001 From: Ashwani Kumar Kamal Date: Mon, 5 Jan 2026 22:09:54 +0530 Subject: [PATCH 0715/1068] robustness: Patch unique compact operations Signed-off-by: Ashwani Kumar Kamal --- tests/robustness/validate/patch_history.go | 88 ++++++++++++++++++- .../robustness/validate/patch_history_test.go | 65 ++++++++++++++ 2 files changed, 149 insertions(+), 4 deletions(-) diff --git a/tests/robustness/validate/patch_history.go b/tests/robustness/validate/patch_history.go index a03e7961fad1..7a7405e850e9 100644 --- a/tests/robustness/validate/patch_history.go +++ b/tests/robustness/validate/patch_history.go @@ -39,7 +39,10 @@ func patchLinearizableOperations(operations []porcupine.Operation, reports []rep persistedDeleteCount := countPersistedDeletes(persistedRequests) clientDeleteCount := countClientDeletes(reports) - putReturnTime, delReturnTime := uniqueOperationReturnTime(operations, persistedRequests, clientPutCount, clientDeleteCount) + persistedCompactCount := countPersistedCompacts(persistedRequests) + clientCompactCount := countClientCompacts(reports) + + putReturnTime, delReturnTime, compactReturnTime := uniqueOperationReturnTime(operations, persistedRequests, clientPutCount, clientDeleteCount, clientCompactCount) putArgs := make(map[model.PutOptions]patchArgs) for opts, c := range clientPutCount { @@ -58,9 +61,17 @@ func patchLinearizableOperations(operations []porcupine.Operation, reports []rep returnTime: delReturnTime[opts], } } + compactArgs := make(map[model.CompactRequest]patchArgs) + for opts, c := range clientCompactCount { + compactArgs[opts] = patchArgs{ + clientCount: c, + persistedCount: persistedCompactCount[opts], + returnTime: compactReturnTime[opts], + } + } return patchOperations( - operations, putArgs, delArgs, + operations, putArgs, delArgs, compactArgs, ) } @@ -92,12 +103,29 @@ func patchOperations( operations []porcupine.Operation, putArgs map[model.PutOptions]patchArgs, delArgs map[model.DeleteOptions]patchArgs, + compactArgs map[model.CompactRequest]patchArgs, ) []porcupine.Operation { newOperations := make([]porcupine.Operation, 0, len(operations)) for _, op := range operations { request := op.Input.(model.EtcdRequest) resp := op.Output.(model.MaybeEtcdResponse) + + if request.Type == model.Compact { + kv := model.CompactRequest{Revision: request.Compact.Revision} + if arg, ok := compactArgs[kv]; ok && arg.clientCount == 1 { + if arg.persistedCount == 0 && resp.Error != "" { + // the failed compact should be dropped + continue + } + if arg.returnTime > 0 { + op.Return = min(op.Return, arg.returnTime) + } + } + newOperations = append(newOperations, op) + continue + } + if resp.Error == "" || request.Type != model.Txn { // Cannot patch those requests. newOperations = append(newOperations, op) @@ -203,9 +231,20 @@ func hasUniqueWriteOperation(ops []model.EtcdOperation, putArgs map[model.PutOpt return false } -func uniqueOperationReturnTime(allOperations []porcupine.Operation, persistedRequests []model.EtcdRequest, clientPutCount map[model.PutOptions]int64, clientDeleteCount map[model.DeleteOptions]int64) (map[model.PutOptions]int64, map[model.DeleteOptions]int64) { +func uniqueOperationReturnTime( + allOperations []porcupine.Operation, + persistedRequests []model.EtcdRequest, + clientPutCount map[model.PutOptions]int64, + clientDeleteCount map[model.DeleteOptions]int64, + clientCompactCount map[model.CompactRequest]int64, +) ( + map[model.PutOptions]int64, + map[model.DeleteOptions]int64, + map[model.CompactRequest]int64, +) { putTimes := map[model.PutOptions]int64{} delTimes := map[model.DeleteOptions]int64{} + compactTimes := map[model.CompactRequest]int64{} var lastReturnTime int64 for _, op := range allOperations { request := op.Input.(model.EtcdRequest) @@ -235,6 +274,12 @@ func uniqueOperationReturnTime(allOperations []porcupine.Operation, persistedReq case model.LeaseGrant: case model.LeaseRevoke: case model.Compact: + if clientCompactCount[*request.Compact] > 1 { + continue + } + if returnTime, ok := compactTimes[*request.Compact]; !ok || returnTime > op.Return { + compactTimes[*request.Compact] = op.Return + } case model.Defragment: default: panic(fmt.Sprintf("Unknown request type: %q", request.Type)) @@ -276,11 +321,21 @@ func uniqueOperationReturnTime(allOperations []porcupine.Operation, persistedReq case model.LeaseGrant: case model.LeaseRevoke: case model.Compact: + if lastReturnTime != math.MaxInt64 { + lastReturnTime-- + } + if clientCompactCount[*request.Compact] > 1 { + continue + } + if returnTime, ok := compactTimes[*request.Compact]; ok { + lastReturnTime = min(returnTime, lastReturnTime) + compactTimes[*request.Compact] = lastReturnTime + } default: panic(fmt.Sprintf("Unknown request type: %q", request.Type)) } } - return putTimes, delTimes + return putTimes, delTimes, compactTimes } func countClientPuts(reports []report.ClientReport) map[model.PutOptions]int64 { @@ -355,3 +410,28 @@ func countDeletes(counter map[model.DeleteOptions]int64, request model.EtcdReque } } } + +func countClientCompacts(reports []report.ClientReport) map[model.CompactRequest]int64 { + counter := map[model.CompactRequest]int64{} + for _, client := range reports { + for _, op := range client.KeyValue { + request := op.Input.(model.EtcdRequest) + countCompacts(counter, request) + } + } + return counter +} + +func countPersistedCompacts(requests []model.EtcdRequest) map[model.CompactRequest]int64 { + counter := map[model.CompactRequest]int64{} + for _, req := range requests { + countCompacts(counter, req) + } + return counter +} + +func countCompacts(counter map[model.CompactRequest]int64, request model.EtcdRequest) { + if request.Type == model.Compact { + counter[*request.Compact]++ + } +} diff --git a/tests/robustness/validate/patch_history_test.go b/tests/robustness/validate/patch_history_test.go index 57d1263909cc..27bd85e7afd8 100644 --- a/tests/robustness/validate/patch_history_test.go +++ b/tests/robustness/validate/patch_history_test.go @@ -488,6 +488,62 @@ func TestPatchHistory(t *testing.T) { }, expectedRemainingOperations: []porcupine.Operation{}, }, + { + name: "successful compact with unique revision keeps original return time", + historyFunc: func(h *model.AppendableHistory) { + h.AppendCompact(5, 100, 200, &clientv3.CompactResponse{}, nil) + h.AppendPut("key", "value", 300, 400, &clientv3.PutResponse{}, nil) + }, + persistedRequest: []model.EtcdRequest{ + compactRequest(5), + putRequest("key", "value"), + }, + expectedRemainingOperations: []porcupine.Operation{ + {Return: 200, Output: model.MaybeEtcdResponse{EtcdResponse: model.EtcdResponse{Revision: -1, Compact: &model.CompactResponse{}}}}, + {Return: 400, Output: txnResponse(0, model.EtcdOperationResult{})}, + }, + }, + { + name: "failed compact with unique revision is patched with return time", + historyFunc: func(h *model.AppendableHistory) { + h.AppendCompact(5, 100, 200, nil, errors.New("failed")) + h.AppendPut("key", "value", 300, 400, &clientv3.PutResponse{}, nil) + }, + persistedRequest: []model.EtcdRequest{ + compactRequest(5), + putRequest("key", "value"), + }, + expectedRemainingOperations: []porcupine.Operation{ + {Return: 399, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: 400, Output: txnResponse(0, model.EtcdOperationResult{})}, + }, + }, + { + name: "failed compact with non-unique revision remains unchanged", + historyFunc: func(h *model.AppendableHistory) { + h.AppendCompact(5, 100, 200, nil, errors.New("failed")) + h.AppendCompact(5, 300, 400, &clientv3.CompactResponse{}, nil) + h.AppendPut("key", "value", 500, 600, &clientv3.PutResponse{}, nil) + }, + persistedRequest: []model.EtcdRequest{ + compactRequest(5), + compactRequest(5), + putRequest("key", "value"), + }, + expectedRemainingOperations: []porcupine.Operation{ + {Return: infinite, Output: model.MaybeEtcdResponse{Error: "failed"}}, + {Return: 400, Output: model.MaybeEtcdResponse{EtcdResponse: model.EtcdResponse{Revision: -1, Compact: &model.CompactResponse{}}}}, + {Return: 600, Output: txnResponse(0, model.EtcdOperationResult{})}, + }, + }, + { + name: "failed compact with unique revision is dropped when not persisted", + historyFunc: func(h *model.AppendableHistory) { + h.AppendCompact(5, 100, 200, nil, errors.New("failed")) + }, + persistedRequest: []model.EtcdRequest{}, + expectedRemainingOperations: []porcupine.Operation{}, + }, } { t.Run(tc.name, func(t *testing.T) { history := model.NewAppendableHistory(identity.NewIDProvider()) @@ -552,3 +608,12 @@ func deleteEvent(key string, revision int64) model.WatchEvent { }, } } + +func compactRequest(revision int64) model.EtcdRequest { + return model.EtcdRequest{ + Type: model.Compact, + Compact: &model.CompactRequest{ + Revision: revision, + }, + } +} From 5dc407f4819e71996268afe2d295c01210523326 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 2 Jan 2026 12:14:52 +0900 Subject: [PATCH 0716/1068] dependency: bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.38.0 to 1.39.0 Also bumped automatically: - google.golang.org/genproto/googleapis/api from v0.0.0-20251022142026-3a174f9686a8 to v0.0.0-20251202230838-ff82c1b0f217 - google.golang.org/genproto/googleapis/rpc from v0.0.0-20251022142026-3a174f9686a8 to v0.0.0-20251202230838-ff82c1b0f217 - go.opentelemetry.io/otel/exporters/otlp/otlptrace from 1.38.0 to 1.39.0 Reference: - https://github.com/etcd-io/etcd/pull/21060 - https://github.com/etcd-io/etcd/pull/21057 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 4 ++-- api/go.sum | 8 ++++---- cache/go.mod | 4 ++-- cache/go.sum | 8 ++++---- client/v3/go.mod | 4 ++-- client/v3/go.sum | 8 ++++---- etcdctl/go.mod | 4 ++-- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 8 ++++---- etcdutl/go.sum | 16 ++++++++-------- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- go.work.sum | 4 +++- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 8 ++++---- server/go.sum | 16 ++++++++-------- tests/go.mod | 8 ++++---- tests/go.sum | 16 ++++++++-------- tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 8 ++++---- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 23 files changed, 87 insertions(+), 85 deletions(-) diff --git a/api/go.mod b/api/go.mod index efd535c178c5..d0030365d47d 100644 --- a/api/go.mod +++ b/api/go.mod @@ -10,7 +10,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/stretchr/testify v1.11.1 - google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 + google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 google.golang.org/grpc v1.77.0 google.golang.org/protobuf v1.36.11 ) @@ -24,6 +24,6 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index d01e90566ed7..e370d18c5678 100644 --- a/api/go.sum +++ b/api/go.sum @@ -77,10 +77,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/cache/go.mod b/cache/go.mod index 8d7f3f566eae..b787e336b3a4 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -26,8 +26,8 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect google.golang.org/grpc v1.77.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/cache/go.sum b/cache/go.sum index 6ca538bd0d95..5438287767c4 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -105,10 +105,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/client/v3/go.mod b/client/v3/go.mod index 06d382f3372b..c563a785bb35 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -39,8 +39,8 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 44970730dabc..5f93ae7e2610 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -111,10 +111,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index b2ba5a88178c..9a71711ed9cd 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -45,8 +45,8 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index d81aa4502395..15e308585df6 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -146,10 +146,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index dcfdfc461b62..3e3ad3cfc936 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -72,8 +72,8 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect go.opentelemetry.io/otel v1.39.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 // indirect go.opentelemetry.io/otel/metric v1.39.0 // indirect go.opentelemetry.io/otel/sdk v1.39.0 // indirect go.opentelemetry.io/otel/trace v1.39.0 // indirect @@ -85,8 +85,8 @@ require ( golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect golang.org/x/time v0.14.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect google.golang.org/grpc v1.77.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 8abd939567d9..822cd262ff44 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -123,10 +123,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= @@ -189,10 +189,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/go.mod b/go.mod index fcd5d350092a..4ead773485f1 100644 --- a/go.mod +++ b/go.mod @@ -88,8 +88,8 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect go.opentelemetry.io/otel v1.39.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 // indirect go.opentelemetry.io/otel/metric v1.39.0 // indirect go.opentelemetry.io/otel/sdk v1.39.0 // indirect go.opentelemetry.io/otel/trace v1.39.0 // indirect @@ -100,8 +100,8 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/go.sum b/go.sum index 45cd50ba235d..ad72c894a7f8 100644 --- a/go.sum +++ b/go.sum @@ -162,10 +162,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= @@ -253,10 +253,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/go.work.sum b/go.work.sum index ea8b6c38bb71..51f6861d7ca8 100644 --- a/go.work.sum +++ b/go.work.sum @@ -996,6 +996,7 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go. google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= google.golang.org/genproto/googleapis/bytestream v0.0.0-20250603155806-513f23925822 h1:zWFRixYR5QlotL+Uv3YfsPRENIrQFXiGs+iwqel6fOQ= google.golang.org/genproto/googleapis/bytestream v0.0.0-20250603155806-513f23925822/go.mod h1:h6yxum/C2qRb4txaZRLDHK8RyS0H/o2oEDeKY4onY/Y= google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= @@ -1009,7 +1010,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= 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-20251014184007-4626949a642f/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc v1.67.3/go.mod h1:YGaHCc6Oap+FzBJTZLBzkGSYt/cvGPFTPxkn7QfSU8s= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= diff --git a/pkg/go.mod b/pkg/go.mod index a6c63f69f5ac..9e10c06016c1 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -28,7 +28,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.48.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index fa7de5e60c08..180a61f48b57 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -64,8 +64,8 @@ golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/server/go.mod b/server/go.mod index 4deb23a9b400..1c0b6ccd68ba 100644 --- a/server/go.mod +++ b/server/go.mod @@ -33,14 +33,14 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 go.opentelemetry.io/otel v1.39.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 go.opentelemetry.io/otel/sdk v1.39.0 go.opentelemetry.io/otel/trace v1.39.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.46.0 golang.org/x/net v0.48.0 golang.org/x/time v0.14.0 - google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 + google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 google.golang.org/grpc v1.77.0 google.golang.org/protobuf v1.36.11 gopkg.in/natefinch/lumberjack.v2 v2.2.1 @@ -65,14 +65,14 @@ require ( github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect go.opentelemetry.io/otel/metric v1.39.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index b26e80211c51..d2ec4fbbf9ce 100644 --- a/server/go.sum +++ b/server/go.sum @@ -103,10 +103,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= @@ -168,10 +168,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/tests/go.mod b/tests/go.mod index 9dedfb85c3c5..5c8a41e226b0 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -94,8 +94,8 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 // indirect go.opentelemetry.io/otel/metric v1.39.0 // indirect go.opentelemetry.io/otel/trace v1.39.0 // indirect go.uber.org/multierr v1.11.0 // indirect @@ -103,8 +103,8 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 2f617cf7bb65..e26684bc5f65 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -168,10 +168,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= @@ -259,10 +259,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 17d5bdd85bf3..6d1a6a3bd866 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -245,8 +245,8 @@ require ( golang.org/x/telemetry v0.0.0-20251203150158-8fff8a5912fc // indirect golang.org/x/term v0.38.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect google.golang.org/grpc v1.77.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 66837fa37e6e..1cc560b2198f 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -713,10 +713,10 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 5055941be9ac..157ab702c51b 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -20,6 +20,6 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect google.golang.org/grpc v1.77.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 4e7883851d14..915bcbe06514 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1848,8 +1848,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= From 157a68a0abe83f46d317df2d2a953ffb82436c14 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 3 Jan 2026 11:04:22 +0900 Subject: [PATCH 0717/1068] scripts: add support for MacOS in update_go_workspace.sh Add OS detection for sed in-place editing (BSD vs GNU) to use a portable sed insert syntax with literal newlines. Also, replace `dirname -z` (GNU-specific) with while-read loop Signed-off-by: Chun-Hung Tseng Signed-off-by: Chun-Hung Tseng --- scripts/update_go_workspace.sh | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/scripts/update_go_workspace.sh b/scripts/update_go_workspace.sh index 5b307c942410..cc7e5c3a0b74 100755 --- a/scripts/update_go_workspace.sh +++ b/scripts/update_go_workspace.sh @@ -24,17 +24,33 @@ set -euo pipefail source ./scripts/test_lib.sh +# Detect sed variant (BSD vs GNU) for in-place editing +# Source: https://stackoverflow.com/a/22084103 (CC BY-SA 4.0) +case "$OSTYPE" in + darwin*|bsd*) + sed_no_backup=( -i '' ) + ;; + *) + sed_no_backup=( -i ) + ;; +esac + # Avoid issues and remove the workspace files. rm -f go.work go.work.sum # Generate the workspace. go work init -sed -i -e '1i\// This is a generated file. Do not edit directly.\n' go.work +# Prepend comment header (portable sed syntax with literal newline after backslash) +sed "${sed_no_backup[@]}" '1i\ +// This is a generated file. Do not edit directly.\ + +' go.work # Include all submodules from the repository. -git ls-files -z ':(glob)**/go.mod' \ - | xargs -0 -n1 dirname -z \ - | xargs -0 -n1 go work edit -use +# Use while-read loop for portability (dirname -z is GNU-specific, not available on macOS) +git ls-files -z ':(glob)**/go.mod' | while IFS= read -r -d '' modfile; do + go work edit -use "$(dirname "$modfile")" +done go work edit -toolchain "go$(cat .go-version)" go work edit -go "$(go mod edit -json | jq -r .Go)" From 33a76e87b5bd5ef0167bce50ad08e81bfa77bd41 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 5 Jan 2026 12:04:46 +0100 Subject: [PATCH 0718/1068] Update the robustness tests process to maintain reproducability Signed-off-by: Marek Siarkowicz --- tests/robustness/README.md | 56 +++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/tests/robustness/README.md b/tests/robustness/README.md index 494d36febb7c..7f5b090039e1 100644 --- a/tests/robustness/README.md +++ b/tests/robustness/README.md @@ -18,25 +18,27 @@ For more details on Antithesis integration, see the [antithesis directory](../an ## Robustness track record -| Correctness / Consistency issue | Report | Introduced in | Discovered by | Reproducible by robustness test | Command | -| ----------------------------------------------------------------- | ---------- | ----------------- | --------------- | ------------------------------------------------- | ----------------------------------- | -| Inconsistent revision caused by crash during high load [#13766] | Mar 2022 | v3.5 | User | Yes, report preceded robustness tests | `make test-robustness-issue13766` | -| Single node cluster can lose a write on crash [#14370] | Aug 2022 | v3.4 or earlier | User | Yes, report preceded robustness tests | `make test-robustness-issue14370` | -| Enabling auth can lead to inconsistency [#14571] | Oct 2022 | v3.4 or earlier | User | No, authorization is not covered. | | -| Inconsistent revision caused by crash during defrag [#14685] | Nov 2022 | v3.5 | Robustness | Yes, after covering defragmentation. | `make test-robustness-issue14685` | -| Watch progress notification not synced with stream [#15220] | Jan 2023 | v3.4 or earlier | User | Yes, after covering watch progress notification | `make test-robustness-issue15220` | -| Watch traveling back in time after network partition [#15271] | Feb 2023 | v3.4 or earlier | Robustness | Yes, after covering network partitions | `make test-robustness-issue15271` | -| Duplicated watch event due to bug in TXN caching [#17247] | Jan 2024 | main branch | Robustness | Yes, prevented regression in v3.6 | | -| Watch events lost during stream starvation [#17529] | Mar 2024 | v3.4 or earlier | User | Yes, after covering of slow watch | `make test-robustness-issue17529` | -| Revision decreasing caused by crash during compaction [#17780] | Apr 2024 | v3.4 or earlier | Robustness | Yes, after covering compaction | | -| Watch dropping an event when compacting on delete [#18089] | May 2024 | v3.4 or earlier | Robustness | Yes, after covering of compaction | `make test-robustness-issue18089` | -| Panic when two snapshots are received in a short period [#18055] | May 2024 | v3.4 or earlier | Robustness | Yes, via Antithesis | | -| Inconsistency when reading compacted revision in TXN [#18667] | Oct 2024 | v3.4 or earlier | User | | | -| Missing delete event on watch opened on same revision as compaction [#19179] | Jan 2025 | v3.4 or earlier | Robustness | Yes, after covering of compaction | `make test-robustness-issue19179` | -| Watch on future revision returns notifications [#20221] | Jun 2025 | v3.4 or earlier | Robustness | Yes, after covering connection to multiple members| | -| Watch on future revision returns old events [#20221] | Jun 2025 | v3.4 or earlier | Antithesis | Yes, after covering connection to multiple members| | -| Panic from db page expected to be 5 [#20271] | Jul 2025 | v3.4 or earlier | Antithesis | Yes, via Antithesis | | - +| Correctness / Consistency issue | Report | Introduced in | Discovered by | Last reproduction commit | Reproduction Script | +| ----------------------------------------------------------------- | -------- | --------------- | --------------------------------------------------------- | -----------------------------| --------------------------------- | +| Inconsistent revision caused by crash during high load [#13766] | Mar 2022 | v3.5 | User | Load not high enough | `make test-robustness-issue13766` | +| Single node cluster can lose a write on crash [#14370] | Aug 2022 | v3.4 or earlier | User | [a438759] from Jan 3, 2026 | `make test-robustness-issue14370` | +| Enabling auth can lead to inconsistency [#14571] | Oct 2022 | v3.4 or earlier | User | Authorization is not covered | | +| Inconsistent revision caused by crash during defrag [#14685] | Nov 2022 | v3.5 | Robustness, after covering defragmentation | [a438759] from Jan 3, 2026 | `make test-robustness-issue14685` | +| Watch progress notification not synced with stream [#15220] | Jan 2023 | v3.4 or earlier | User | [a438759] from Jan 3, 2026 | `make test-robustness-issue15220` | +| Watch traveling back in time after network partition [#15271] | Feb 2023 | v3.4 or earlier | Robustness, after covering network partitions | | `make test-robustness-issue15271` | +| Duplicated watch event due to bug in TXN caching [#17247] | Jan 2024 | main branch | Robustness, prevented regression on main branch | | | +| Watch events lost during stream starvation [#17529] | Mar 2024 | v3.4 or earlier | User | [c272ade] from May 30, 2025 | `make test-robustness-issue17529` | +| Revision decreasing caused by crash during compaction [#17780] | Apr 2024 | v3.4 or earlier | Robustness, after covering compaction | | | +| Watch dropping an event when compacting on delete [#18089] | May 2024 | v3.4 or earlier | Robustness, after covering compaction | [a438759] from Jan 3, 2026 | `make test-robustness-issue18089` | +| Panic when two snapshots are received in a short period [#18055] | May 2024 | v3.4 or earlier | Robustness | | | +| Inconsistency when reading compacted revision in TXN [#18667] | Oct 2024 | v3.4 or earlier | User | | | +| Missing delete event on watch opened on same revision as compaction [#19179] | Jan 2025 | v3.4 or earlier | Robustness, after covering compaction | | `make test-robustness-issue19179` | +| Watch on future revision returns notifications [#20221] | Jun 2025 | v3.4 or earlier | Robustness, after covering connection to multiple members | | | +| Watch on future revision returns old events [#20221] | Jun 2025 | v3.4 or earlier | Antithesis, after covering connection to multiple members | | | +| Panic from db page expected to be 5 [#20271] | Jul 2025 | v3.4 or earlier | Antithesis | | | + +[c272ade]: https://github.com/etcd-io/etcd/tree/c272adec29afaa69f08b7458422c53b8978c7af1 +[a438759]: https://github.com/etcd-io/etcd/tree/a438759bf0bcafce851fae1a84a8511452b6b704 [#13766]: https://github.com/etcd-io/etcd/issues/13766 [#14370]: https://github.com/etcd-io/etcd/issues/14370 [#14571]: https://github.com/etcd-io/etcd/issues/14571 @@ -53,16 +55,20 @@ For more details on Antithesis integration, see the [antithesis directory](../an [#18055]: https://github.com/etcd-io/etcd/issues/18055 [#20271]: https://github.com/etcd-io/etcd/issues/20271 -## Maintaining Bug Reproducibility During Refactoring +## Maintaining Bug Reproducibility During Non-Trivial Changes + +When performing large non-trivial changes to the robustness testing framework, it is critical to ensure that we do not lose the ability to reproduce previously discovered bugs. The track record table above documents known correctness issues, and many include specific reproduction commands (e.g., `make test-robustness-issue14370`). -When performing large refactors to the robustness testing framework, it is critical to ensure that we do not lose the ability to reproduce previously discovered bugs. The track record table above documents known correctness issues, and many include specific reproduction commands (e.g., `make test-robustness-issue14370`). +To prevent regressions, we must ensure that the latest version of the robustness framework remains capable of reproducing old bugs. +We manually track this capability in the "Last reproduction commit" column. **Best Practices:** -* Before starting a large refactor, run all reproducible test cases listed in the track record table to establish a baseline. -* After completing the refactor, verify that all previously reproducible bugs can still be detected by running their associated commands. -* If a refactor changes how tests are structured or executed, update the reproduction commands accordingly and document the changes. -* Consider the refactor incomplete until all regression tests continue to catch their target bugs. +* **Establish Baseline:** Before starting a large non-trivial change, run all reproducible test cases listed in the track record table. +* **Verify Reproducibility:** After completing the change, verify that all previously reproducible bugs can still be detected. +* **Update Tracking:** Refresh the "Last reproduction commit" column with commit hash and it's creation date to confirm the new framework version works. +* **Update Commands:** If the change affects test execution, update the reproduction commands accordingly. +* **Gate Completion:** Consider the change incomplete until all regression tests continue to catch their target bugs. This ensures that improvements to the testing framework do not inadvertently reduce our ability to detect known failure modes. From a3dad172366a738ec5f2c49f56d3ce1381e34624 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Tue, 6 Jan 2026 16:04:25 +0900 Subject: [PATCH 0719/1068] dependency: bump go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc from 0.63.0 to 0.64.0 Reference: - https://github.com/etcd-io/etcd/pull/21087 Signed-off-by: Chun-Hung Tseng --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- go.work.sum | 3 ++- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 9 files changed, 14 insertions(+), 13 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 8c1a3aa952e9..e239f7944ee5 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -70,7 +70,7 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 // indirect go.opentelemetry.io/otel v1.39.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 1ed55c3108be..38991fc909f5 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -119,8 +119,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/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= diff --git a/go.mod b/go.mod index ff5da95f89eb..413fa5fb3462 100644 --- a/go.mod +++ b/go.mod @@ -86,7 +86,7 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 // indirect go.opentelemetry.io/otel v1.39.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 // indirect diff --git a/go.sum b/go.sum index b0e9e7d299f0..21f289202f4f 100644 --- a/go.sum +++ b/go.sum @@ -158,8 +158,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/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= diff --git a/go.work.sum b/go.work.sum index 3442630e7464..26633e7d06f0 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1008,6 +1008,7 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda/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-20251213004720-97cd9d5aeac2/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc v1.67.3/go.mod h1:YGaHCc6Oap+FzBJTZLBzkGSYt/cvGPFTPxkn7QfSU8s= @@ -1020,6 +1021,7 @@ google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7E google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6 h1:ExN12ndbJ608cboPYflpTny6mXSzPrDLh0iTaVrRrds= google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6/go.mod h1:6ytKWczdvnpnO+m+JiG9NjEDzR1FJfsnmJdG7B8QVZ8= @@ -1035,7 +1037,6 @@ google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojt google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= diff --git a/server/go.mod b/server/go.mod index 65024ca3846e..aa351f827838 100644 --- a/server/go.mod +++ b/server/go.mod @@ -31,7 +31,7 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 go.opentelemetry.io/otel v1.39.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 go.opentelemetry.io/otel/sdk v1.39.0 diff --git a/server/go.sum b/server/go.sum index b9d880e8bb2b..4f090d477d76 100644 --- a/server/go.sum +++ b/server/go.sum @@ -99,8 +99,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/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= diff --git a/tests/go.mod b/tests/go.mod index d278889dd33e..414f66a8bc08 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -42,7 +42,7 @@ require ( go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 go.opentelemetry.io/otel v1.39.0 go.opentelemetry.io/otel/sdk v1.39.0 go.opentelemetry.io/proto/otlp v1.9.0 diff --git a/tests/go.sum b/tests/go.sum index 441bb652630d..f9d985b4fdfd 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -164,8 +164,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/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= From 5163b1edfba40b02e7723800431cceab459a819c Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 2 Jan 2026 12:19:05 +0900 Subject: [PATCH 0720/1068] dependency: bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.27.3 to 2.27.4 Also bumped automatically: - google.golang.org/genproto/googleapis/rpc from v0.0.0-20251202230838-ff82c1b0f217 to v0.0.0-20251222181119-0a764e51fe1b - google.golang.org/genproto/googleapis/api from v0.0.0-20251202230838-ff82c1b0f217 to v0.0.0-20251222181119-0a764e51fe1b - google.golang.org/grpc from v1.77.0 to v1.78.0 Reference: - https://github.com/etcd-io/etcd/pull/21059 - https://github.com/etcd-io/etcd/pull/21055 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 8 ++++---- api/go.sum | 16 ++++++++-------- cache/go.mod | 8 ++++---- cache/go.sum | 16 ++++++++-------- client/v3/go.mod | 8 ++++---- client/v3/go.sum | 16 ++++++++-------- etcdctl/go.mod | 8 ++++---- etcdctl/go.sum | 16 ++++++++-------- etcdutl/go.mod | 8 ++++---- etcdutl/go.sum | 16 ++++++++-------- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- go.work.sum | 19 ++++++++----------- pkg/go.mod | 4 ++-- pkg/go.sum | 8 ++++---- server/go.mod | 8 ++++---- server/go.sum | 16 ++++++++-------- tests/go.mod | 8 ++++---- tests/go.sum | 16 ++++++++-------- tools/mod/go.mod | 8 ++++---- tools/mod/go.sum | 16 ++++++++-------- tools/testgrid-analysis/go.mod | 4 ++-- tools/testgrid-analysis/go.sum | 8 ++++---- 23 files changed, 128 insertions(+), 131 deletions(-) diff --git a/api/go.mod b/api/go.mod index d0030365d47d..5837e3e23992 100644 --- a/api/go.mod +++ b/api/go.mod @@ -8,10 +8,10 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 github.com/stretchr/testify v1.11.1 - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 - google.golang.org/grpc v1.77.0 + google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b + google.golang.org/grpc v1.78.0 google.golang.org/protobuf v1.36.11 ) @@ -24,6 +24,6 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index e370d18c5678..304f09594b07 100644 --- a/api/go.sum +++ b/api/go.sum @@ -16,8 +16,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 h1:kEISI/Gx67NzH3nJxAmY/dGac80kKZgZt134u7Y/k1s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4/go.mod h1:6Nz966r3vQYCqIzWsuEl9d7cf7mRhtDmm++sOxlnfxI= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -77,12 +77,12 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= -google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b h1:uA40e2M6fYRBf0+8uN5mLlqUtV192iiksiICIBkYJ1E= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:Xa7le7qx2vmqB/SzWUBa7KdMjpdpAHlh5QCSnjessQk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/cache/go.mod b/cache/go.mod index b787e336b3a4..e12483e7ea50 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -18,7 +18,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect @@ -26,9 +26,9 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/grpc v1.77.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect + google.golang.org/grpc v1.78.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index 5438287767c4..947f02bf0cd3 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -26,8 +26,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 h1:kEISI/Gx67NzH3nJxAmY/dGac80kKZgZt134u7Y/k1s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4/go.mod h1:6Nz966r3vQYCqIzWsuEl9d7cf7mRhtDmm++sOxlnfxI= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -105,12 +105,12 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= -google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b h1:uA40e2M6fYRBf0+8uN5mLlqUtV192iiksiICIBkYJ1E= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:Xa7le7qx2vmqB/SzWUBa7KdMjpdpAHlh5QCSnjessQk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index c563a785bb35..e24e6f645320 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.1 - google.golang.org/grpc v1.77.0 + google.golang.org/grpc v1.78.0 sigs.k8s.io/yaml v1.6.0 ) @@ -25,7 +25,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect @@ -39,8 +39,8 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 5f93ae7e2610..1bb4240fe644 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -26,8 +26,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 h1:kEISI/Gx67NzH3nJxAmY/dGac80kKZgZt134u7Y/k1s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4/go.mod h1:6Nz966r3vQYCqIzWsuEl9d7cf7mRhtDmm++sOxlnfxI= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= @@ -111,12 +111,12 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= -google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b h1:uA40e2M6fYRBf0+8uN5mLlqUtV192iiksiICIBkYJ1E= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:Xa7le7qx2vmqB/SzWUBa7KdMjpdpAHlh5QCSnjessQk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 9a71711ed9cd..b77e77c71872 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.77.0 + google.golang.org/grpc v1.78.0 ) require ( @@ -32,7 +32,7 @@ require ( github.com/fatih/color v1.18.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -45,8 +45,8 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 15e308585df6..48dd62cc63a4 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -41,8 +41,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 h1:kEISI/Gx67NzH3nJxAmY/dGac80kKZgZt134u7Y/k1s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4/go.mod h1:6Nz966r3vQYCqIzWsuEl9d7cf7mRhtDmm++sOxlnfxI= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -146,12 +146,12 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= -google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b h1:uA40e2M6fYRBf0+8uN5mLlqUtV192iiksiICIBkYJ1E= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:Xa7le7qx2vmqB/SzWUBa7KdMjpdpAHlh5QCSnjessQk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 3e3ad3cfc936..f32ddf1946e1 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -49,7 +49,7 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -85,9 +85,9 @@ require ( golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect golang.org/x/time v0.14.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/grpc v1.77.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect + google.golang.org/grpc v1.78.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 822cd262ff44..4aea6e774649 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -48,8 +48,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 h1:kEISI/Gx67NzH3nJxAmY/dGac80kKZgZt134u7Y/k1s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4/go.mod h1:6Nz966r3vQYCqIzWsuEl9d7cf7mRhtDmm++sOxlnfxI= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -189,12 +189,12 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= -google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b h1:uA40e2M6fYRBf0+8uN5mLlqUtV192iiksiICIBkYJ1E= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:Xa7le7qx2vmqB/SzWUBa7KdMjpdpAHlh5QCSnjessQk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index 4ead773485f1..ad09fd292406 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.77.0 + google.golang.org/grpc v1.78.0 google.golang.org/protobuf v1.36.11 ) @@ -63,7 +63,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -100,8 +100,8 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/go.sum b/go.sum index ad72c894a7f8..0d3085d8e98b 100644 --- a/go.sum +++ b/go.sum @@ -76,8 +76,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 h1:kEISI/Gx67NzH3nJxAmY/dGac80kKZgZt134u7Y/k1s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4/go.mod h1:6Nz966r3vQYCqIzWsuEl9d7cf7mRhtDmm++sOxlnfxI= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -253,17 +253,17 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b h1:uA40e2M6fYRBf0+8uN5mLlqUtV192iiksiICIBkYJ1E= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:Xa7le7qx2vmqB/SzWUBa7KdMjpdpAHlh5QCSnjessQk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= -google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.work.sum b/go.work.sum index 51f6861d7ca8..3442630e7464 100644 --- a/go.work.sum +++ b/go.work.sum @@ -932,17 +932,17 @@ golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/net v0.46.1-0.20251013234738-63d1a5100f82/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= -golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw= +golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -953,7 +953,7 @@ golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= @@ -963,8 +963,7 @@ golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -995,8 +994,7 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go. google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= google.golang.org/genproto/googleapis/bytestream v0.0.0-20250603155806-513f23925822 h1:zWFRixYR5QlotL+Uv3YfsPRENIrQFXiGs+iwqel6fOQ= google.golang.org/genproto/googleapis/bytestream v0.0.0-20250603155806-513f23925822/go.mod h1:h6yxum/C2qRb4txaZRLDHK8RyS0H/o2oEDeKY4onY/Y= google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= @@ -1009,9 +1007,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= -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-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc v1.67.3/go.mod h1:YGaHCc6Oap+FzBJTZLBzkGSYt/cvGPFTPxkn7QfSU8s= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= diff --git a/pkg/go.mod b/pkg/go.mod index 9e10c06016c1..9cc0e28945fc 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -14,7 +14,7 @@ require ( go.opentelemetry.io/otel/trace v1.39.0 go.uber.org/zap v1.27.1 golang.org/x/sys v0.39.0 - google.golang.org/grpc v1.77.0 + google.golang.org/grpc v1.78.0 ) require ( @@ -28,7 +28,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.48.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index 180a61f48b57..97564f8ee7d8 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -64,10 +64,10 @@ golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= -google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index 1c0b6ccd68ba..169837e00a2e 100644 --- a/server/go.mod +++ b/server/go.mod @@ -16,7 +16,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 @@ -40,8 +40,8 @@ require ( golang.org/x/crypto v0.46.0 golang.org/x/net v0.48.0 golang.org/x/time v0.14.0 - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 - google.golang.org/grpc v1.77.0 + google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b + google.golang.org/grpc v1.78.0 google.golang.org/protobuf v1.36.11 gopkg.in/natefinch/lumberjack.v2 v2.2.1 sigs.k8s.io/yaml v1.6.0 @@ -72,7 +72,7 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index d2ec4fbbf9ce..4c0094fadec2 100644 --- a/server/go.sum +++ b/server/go.sum @@ -42,8 +42,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 h1:kEISI/Gx67NzH3nJxAmY/dGac80kKZgZt134u7Y/k1s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4/go.mod h1:6Nz966r3vQYCqIzWsuEl9d7cf7mRhtDmm++sOxlnfxI= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -168,12 +168,12 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= -google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b h1:uA40e2M6fYRBf0+8uN5mLlqUtV192iiksiICIBkYJ1E= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:Xa7le7qx2vmqB/SzWUBa7KdMjpdpAHlh5QCSnjessQk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index 5c8a41e226b0..2ec81d56f414 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -24,7 +24,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 github.com/olekukonko/tablewriter v1.1.2 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 @@ -50,7 +50,7 @@ require ( golang.org/x/crypto v0.46.0 golang.org/x/sync v0.19.0 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.77.0 + google.golang.org/grpc v1.78.0 google.golang.org/protobuf v1.36.11 ) @@ -103,8 +103,8 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index e26684bc5f65..5dcfee71ef50 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -82,8 +82,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 h1:kEISI/Gx67NzH3nJxAmY/dGac80kKZgZt134u7Y/k1s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4/go.mod h1:6Nz966r3vQYCqIzWsuEl9d7cf7mRhtDmm++sOxlnfxI= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -259,17 +259,17 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b h1:uA40e2M6fYRBf0+8uN5mLlqUtV192iiksiICIBkYJ1E= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:Xa7le7qx2vmqB/SzWUBa7KdMjpdpAHlh5QCSnjessQk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= -google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 6d1a6a3bd866..ee23ca773ede 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -11,7 +11,7 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint/v2 v2.7.2 github.com/google/yamlfmt v0.20.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 github.com/ryancurrah/gomodguard v1.4.1 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 @@ -245,9 +245,9 @@ require ( golang.org/x/telemetry v0.0.0-20251203150158-8fff8a5912fc // indirect golang.org/x/term v0.38.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/grpc v1.77.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect + google.golang.org/grpc v1.78.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 1cc560b2198f..a05b620ceb35 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -250,8 +250,8 @@ github.com/gostaticanalysis/nilerr v0.1.2/go.mod h1:A19UHhoY3y8ahoL7YKz6sdjDtduw github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 h1:kEISI/Gx67NzH3nJxAmY/dGac80kKZgZt134u7Y/k1s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4/go.mod h1:6Nz966r3vQYCqIzWsuEl9d7cf7mRhtDmm++sOxlnfxI= github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= @@ -713,12 +713,12 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= -google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b h1:uA40e2M6fYRBf0+8uN5mLlqUtV192iiksiICIBkYJ1E= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:Xa7le7qx2vmqB/SzWUBa7KdMjpdpAHlh5QCSnjessQk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 157ab702c51b..c6fa93cd36f5 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -20,6 +20,6 @@ require ( golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/grpc v1.77.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect + google.golang.org/grpc v1.78.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 915bcbe06514..e764c424bff8 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1848,8 +1848,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -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 h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1895,8 +1895,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= -google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 813bab6ff6a9148d5c6d70e0ed7d9413e67cf99f Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 3 Jan 2026 16:36:32 +0900 Subject: [PATCH 0721/1068] robustness: add recommendation for maintaining bug reproducibility during refactors Signed-off-by: Marek Siarkowicz Signed-off-by: Chun-Hung Tseng --- tests/robustness/README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/robustness/README.md b/tests/robustness/README.md index b9cafdf18be2..494d36febb7c 100644 --- a/tests/robustness/README.md +++ b/tests/robustness/README.md @@ -53,6 +53,19 @@ For more details on Antithesis integration, see the [antithesis directory](../an [#18055]: https://github.com/etcd-io/etcd/issues/18055 [#20271]: https://github.com/etcd-io/etcd/issues/20271 +## Maintaining Bug Reproducibility During Refactoring + +When performing large refactors to the robustness testing framework, it is critical to ensure that we do not lose the ability to reproduce previously discovered bugs. The track record table above documents known correctness issues, and many include specific reproduction commands (e.g., `make test-robustness-issue14370`). + +**Best Practices:** + +* Before starting a large refactor, run all reproducible test cases listed in the track record table to establish a baseline. +* After completing the refactor, verify that all previously reproducible bugs can still be detected by running their associated commands. +* If a refactor changes how tests are structured or executed, update the reproduction commands accordingly and document the changes. +* Consider the refactor incomplete until all regression tests continue to catch their target bugs. + +This ensures that improvements to the testing framework do not inadvertently reduce our ability to detect known failure modes. + ## How Robustness Tests Work Robustness tests compare the etcd cluster behavior against a simplified model of its expected behavior. From eb73110cc3dcd15d9adf1a701a98f1d03a29bcab Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 2 Jan 2026 00:57:42 +0900 Subject: [PATCH 0722/1068] Documentation: add update_dep.sh script to dependency management guide Signed-off-by: Chun-Hung Tseng Signed-off-by: Chun-Hung Tseng --- .../dependency_management.md | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/Documentation/contributor-guide/dependency_management.md b/Documentation/contributor-guide/dependency_management.md index d886346cb69e..7b41670810d4 100644 --- a/Documentation/contributor-guide/dependency_management.md +++ b/Documentation/contributor-guide/dependency_management.md @@ -6,6 +6,7 @@ - [Dependencies used in workflows](#dependencies-used-in-workflows) - [Bumping order](#bumping-order) - [Steps to bump a dependency](#steps-to-bump-a-dependency) + - [Alternative: Using the update_dep.sh script](#alternative-using-the-update_depsh-script) - [Indirect dependencies](#indirect-dependencies) - [Known incompatible dependency updates](#known-incompatible-dependency-updates) - [arduino/setup-protoc](#arduinosetup-protoc) @@ -72,7 +73,31 @@ Please close the related PRs which were automatically opened by dependabot. When you bump multiple dependencies in one PR, it's recommended to create a separate commit for each dependency. But it isn't a must; for example, you can get all dependencies bumping for the module `go.etcd.io/etcd/tools/v3` included in one commit. -#### Troubleshooting +#### Alternative: Using the update_dep.sh script + +> Note: Please use bash shell version 5.x or higher. + +As an alternative to the manual steps above, you can use the `update_dep.sh` script to automate the dependency bump process across all modules: + +```bash +# Update to a specific version +./scripts/update_dep.sh github.com/spf13/cobra v1.7.0 + +# Update to the latest version +./scripts/update_dep.sh github.com/spf13/cobra +``` + +The script will: + +1. Display the current version of the dependency across all go.mod files +2. Warn and prompt for confirmation if the dependency is purely indirect +3. Update the dependency in all modules that depend on it +4. Run `make fix verify-dep` to ensure consistency across all modules +5. Display the updated versions for verification + +This script handles the correct bumping order automatically and ensures version consistency across all modules. + +#### Troubleshooting In an event of bumping the version of protoc, protoc plugins or grpc-gateway, it might change `*.proto` file which can result in the following error: From 6afc6c74bc0eb6fa6d66e99e3b9e9c64f9279d18 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 6 Jan 2026 14:25:49 +0000 Subject: [PATCH 0723/1068] Update changelog to cover the new metrics Signed-off-by: Benjamin Wang --- CHANGELOG/CHANGELOG-3.7.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG/CHANGELOG-3.7.md b/CHANGELOG/CHANGELOG-3.7.md index 6e25758556aa..e552f2813c66 100644 --- a/CHANGELOG/CHANGELOG-3.7.md +++ b/CHANGELOG/CHANGELOG-3.7.md @@ -18,3 +18,14 @@ Previous change logs can be found at [CHANGELOG-3.6](https://github.com/etcd-io/ ### etcdutl - [Add a timeout flag to all etcdutl commands](https://github.com/etcd-io/etcd/pull/20708) when waiting to acquire a file lock on the database file. + +### Metrics, Monitoring + +See [List of metrics](https://etcd.io/docs/latest/metrics/) for all metrics per release. + +- Add [`etcd_server_request_duration_seconds`](https://github.com/etcd-io/etcd/pull/21038). +- Add [the following metrics related to watch send loop](https://github.com/etcd-io/etcd/pull/21030), + - etcd_debugging_server_watch_send_loop_watch_stream_duration_seconds + - etcd_debugging_server_watch_send_loop_watch_stream_duration_per_event_seconds + - etcd_debugging_server_watch_send_loop_control_stream_duration_seconds + - etcd_debugging_server_watch_send_loop_progress_duration_seconds From e1c386f9b644a0645dcce71048884c0453aafc4b Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 3 Jan 2026 03:56:21 +0000 Subject: [PATCH 0724/1068] Fix bill-of-materials Signed-off-by: Chun-Hung Tseng --- bill-of-materials.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/bill-of-materials.json b/bill-of-materials.json index 970a3c91d813..5ee8a1bc3f0f 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -17,6 +17,15 @@ } ] }, + { + "project": "github.com/antithesishq/antithesis-sdk-go", + "licenses": [ + { + "type": "MIT License", + "confidence": 1 + } + ] + }, { "project": "github.com/beorn7/perks/quantile", "licenses": [ From de53774400c0e1ecba3017964c5d0f932ec2bcee Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 7 Jun 2025 17:56:27 +0200 Subject: [PATCH 0725/1068] Remove v2 store Signed-off-by: Marek Siarkowicz --- server/etcdserver/api/membership/cluster.go | 35 +---- .../etcdserver/api/membership/cluster_test.go | 120 +----------------- server/etcdserver/api/membership/storev2.go | 27 ---- server/etcdserver/bootstrap.go | 26 +--- server/etcdserver/bootstrap_test.go | 4 +- server/etcdserver/server.go | 13 -- server/etcdserver/server_test.go | 43 ++----- tests/e2e/metrics_test.go | 1 - tests/e2e/v2store_deprecation_test.go | 74 +---------- 9 files changed, 31 insertions(+), 312 deletions(-) diff --git a/server/etcdserver/api/membership/cluster.go b/server/etcdserver/api/membership/cluster.go index 902fb0e6d0fa..c97636450cad 100644 --- a/server/etcdserver/api/membership/cluster.go +++ b/server/etcdserver/api/membership/cluster.go @@ -46,8 +46,7 @@ type RaftCluster struct { localID types.ID cid types.ID - v2store v2store.Store - be MembershipBackend + be MembershipBackend sync.Mutex // guards the fields below version *semver.Version @@ -116,7 +115,6 @@ func NewCluster(lg *zap.Logger, opts ...ClusterOption) *RaftCluster { removed: make(map[types.ID]bool), downgradeInfo: &serverversion.DowngradeInfo{Enabled: false}, maxLearners: clOpts.maxLearners, - v2store: v2store.New(), } } @@ -246,8 +244,6 @@ func (c *RaftCluster) SetID(localID, cid types.ID) { c.buildMembershipMetric() } -func (c *RaftCluster) SetStore(st v2store.Store) { c.v2store = st } - func (c *RaftCluster) SetBackend(be MembershipBackend) { c.be = be c.be.MustCreateBackendBuckets() @@ -307,15 +303,12 @@ func (c *RaftCluster) Recover(onSet func(*zap.Logger, *semver.Version)) { // ValidateConfigurationChange takes a proposed ConfChange and // ensures that it is still valid. func (c *RaftCluster) ValidateConfigurationChange(cc raftpb.ConfChange, shouldApplyV3 ShouldApplyV3) error { - var membersMap map[types.ID]*Member - var removedMap map[types.ID]bool - - if shouldApplyV3 { - membersMap, removedMap = c.be.MustReadMembersFromBackend() - } else { - membersMap, removedMap = membersFromStore(c.lg, c.v2store) + if !shouldApplyV3 { + return nil } + membersMap, removedMap := c.be.MustReadMembersFromBackend() + id := types.ID(cc.NodeID) if removedMap[id] { return ErrIDRemoved @@ -400,7 +393,6 @@ func (c *RaftCluster) ValidateConfigurationChange(cc raftpb.ConfChange, shouldAp func (c *RaftCluster) AddMember(m *Member, shouldApplyV3 ShouldApplyV3) { c.Lock() defer c.Unlock() - mustSaveMemberToStore(c.lg, c.v2store, m) if m.ID == c.localID { setIsLearnerMetric(m) @@ -436,7 +428,6 @@ func (c *RaftCluster) AddMember(m *Member, shouldApplyV3 ShouldApplyV3) { func (c *RaftCluster) RemoveMember(id types.ID, shouldApplyV3 ShouldApplyV3) { c.Lock() defer c.Unlock() - mustDeleteMemberFromStore(c.lg, c.v2store, id) if shouldApplyV3 { c.be.MustDeleteMemberFromBackend(id) @@ -478,7 +469,6 @@ func (c *RaftCluster) UpdateAttributes(id types.ID, attr Attributes, shouldApply if m, ok := c.members[id]; ok { m.Attributes = attr - mustUpdateMemberAttrInStore(c.lg, c.v2store, m) if shouldApplyV3 { c.be.MustSaveMemberToBackend(m) } @@ -508,19 +498,6 @@ func (c *RaftCluster) PromoteMember(id types.ID, shouldApplyV3 ShouldApplyV3) { c.Lock() defer c.Unlock() - membersMap, _ := membersFromStore(c.lg, c.v2store) - if _, ok := membersMap[id]; ok { - m := *(membersMap[id]) - m.RaftAttributes.IsLearner = false - mustUpdateMemberInStore(c.lg, c.v2store, &m) - } else { - c.lg.Info("Skipped promoting non-existent member in v2store", - zap.String("cluster-id", c.cid.String()), - zap.String("local-member-id", c.localID.String()), - zap.String("promoted-member-id", id.String()), - ) - } - if id == c.localID { isLearner.Set(0) } @@ -561,7 +538,6 @@ func (c *RaftCluster) UpdateRaftAttributes(id types.ID, raftAttr RaftAttributes, if _, ok := c.members[id]; ok { m := *(c.members[id]) m.RaftAttributes = raftAttr - mustUpdateMemberInStore(c.lg, c.v2store, &m) } else { c.lg.Info("Skipped updating non-existent member in v2store", zap.String("cluster-id", c.cid.String()), @@ -639,7 +615,6 @@ func (c *RaftCluster) SetVersion(ver *semver.Version, onSet func(*zap.Logger, *s c.version = ver sv := semver.Must(semver.NewVersion(version.Version)) serverversion.MustDetectDowngrade(c.lg, sv, c.version) - mustSaveClusterVersionToStore(c.lg, c.v2store, ver) if shouldApplyV3 { c.be.MustSaveClusterVersionToBackend(ver) diff --git a/server/etcdserver/api/membership/cluster_test.go b/server/etcdserver/api/membership/cluster_test.go index 38dadae077cc..b42a606a46a0 100644 --- a/server/etcdserver/api/membership/cluster_test.go +++ b/server/etcdserver/api/membership/cluster_test.go @@ -18,7 +18,6 @@ import ( "encoding/json" "errors" "fmt" - "path" "reflect" "testing" @@ -26,10 +25,8 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" - "go.etcd.io/etcd/client/pkg/v3/testutil" "go.etcd.io/etcd/client/pkg/v3/types" "go.etcd.io/etcd/server/v3/etcdserver/api/v2store" - "go.etcd.io/etcd/server/v3/mock/mockstore" "go.etcd.io/raft/v3/raftpb" ) @@ -279,18 +276,9 @@ func TestClusterValidateAndAssignIDs(t *testing.T) { } func TestClusterValidateConfigurationChangeV3(t *testing.T) { - testClusterValidateConfigurationChange(t, true) -} - -func TestClusterValidateConfigurationChangeV2(t *testing.T) { - testClusterValidateConfigurationChange(t, false) -} - -func testClusterValidateConfigurationChange(t *testing.T, shouldApplyV3 ShouldApplyV3) { cl := NewCluster(zaptest.NewLogger(t), WithMaxLearners(1)) be := newMembershipBackend() cl.SetBackend(be) - cl.SetStore(v2store.New()) for i := 1; i <= 4; i++ { var isLearner bool if i == 1 { @@ -467,7 +455,7 @@ func testClusterValidateConfigurationChange(t *testing.T, shouldApplyV3 ShouldAp }, } for i, tt := range tests { - err := cl.ValidateConfigurationChange(tt.cc, shouldApplyV3) + err := cl.ValidateConfigurationChange(tt.cc, true) if !errors.Is(err, tt.werr) { t.Errorf("#%d: validateConfigurationChange error = %v, want %v", i, err, tt.werr) } @@ -489,7 +477,6 @@ func TestClusterGenID(t *testing.T) { } previd := cs.ID() - cs.SetStore(mockstore.NewNop()) cs.AddMember(newTestMember(3, nil, "", nil), true) cs.genID() if cs.ID() == previd { @@ -530,29 +517,6 @@ func TestNodeToMemberBad(t *testing.T) { } func TestClusterAddMember(t *testing.T) { - t.Run("V2", func(t *testing.T) { - st := mockstore.NewRecorder() - c := newTestCluster(t, nil) - c.SetStore(st) - c.AddMember(newTestMember(1, nil, "node1", nil), false) - - wactions := []testutil.Action{ - { - Name: "Create", - Params: []any{ - path.Join(StoreMembersPrefix, "1", "raftAttributes"), - false, - `{"peerURLs":null}`, - false, - v2store.TTLOptionSet{ExpireTime: v2store.Permanent}, - }, - }, - } - if g := st.Action(); !reflect.DeepEqual(g, wactions) { - t.Errorf("actions = %v, want %v", g, wactions) - } - }) - t.Run("V3", func(t *testing.T) { c := newTestCluster(t, nil) c.AddMember(newTestMember(1, nil, "node1", nil), true) @@ -568,29 +532,6 @@ func TestClusterAddMember(t *testing.T) { } func TestClusterAddMemberAsLearner(t *testing.T) { - t.Run("V2", func(t *testing.T) { - st := mockstore.NewRecorder() - c := newTestCluster(t, nil) - c.SetStore(st) - c.AddMember(newTestMemberAsLearner(1, []string{}, "node1", []string{"http://node1"}), false) - - wactions := []testutil.Action{ - { - Name: "Create", - Params: []any{ - path.Join(StoreMembersPrefix, "1", "raftAttributes"), - false, - `{"peerURLs":[],"isLearner":true}`, - false, - v2store.TTLOptionSet{ExpireTime: v2store.Permanent}, - }, - }, - } - if g := st.Action(); !reflect.DeepEqual(g, wactions) { - t.Errorf("actions = %v, want %v", g, wactions) - } - }) - t.Run("V3", func(t *testing.T) { c := newTestCluster(t, nil) c.AddMember(newTestMemberAsLearner(1, []string{}, "node1", []string{"http://node1"}), true) @@ -628,21 +569,6 @@ func TestClusterMembers(t *testing.T) { } func TestClusterRemoveMember(t *testing.T) { - t.Run("V2", func(t *testing.T) { - st := mockstore.NewRecorder() - c := newTestCluster(t, nil) - c.SetStore(st) - c.RemoveMember(1, false) - - wactions := []testutil.Action{ - {Name: "Delete", Params: []any{MemberStoreKey(1), true, true}}, - {Name: "Create", Params: []any{RemovedMemberStoreKey(1), false, "", false, v2store.TTLOptionSet{ExpireTime: v2store.Permanent}}}, - } - if !reflect.DeepEqual(st.Action(), wactions) { - t.Errorf("actions = %v, want %v", st.Action(), wactions) - } - }) - t.Run("V3", func(t *testing.T) { c := newTestCluster(t, nil) c.AddMember(newTestMember(1, nil, "node1", nil), true) @@ -684,16 +610,6 @@ func TestClusterUpdateAttributes(t *testing.T) { }, } for i, tt := range tests { - t.Run(fmt.Sprintf("V2-%d", i), func(t *testing.T) { - c := newTestCluster(t, tt.mems) - c.removed = tt.removed - - c.UpdateAttributes(types.ID(1), Attributes{Name: name, ClientURLs: clientURLs}, false) - if g := c.Members(); !reflect.DeepEqual(g, tt.wmems) { - t.Errorf("#%d: members = %+v, want %+v", i, g, tt.wmems) - } - }) - t.Run(fmt.Sprintf("V3-%d", i), func(t *testing.T) { c := newTestCluster(t, tt.mems) for id := range tt.removed { @@ -746,13 +662,9 @@ func newTestCluster(tb testing.TB, membs []*Member) *RaftCluster { members: make(map[types.ID]*Member), removed: make(map[types.ID]bool), be: newMembershipBackend(), - v2store: v2store.New(), } for _, m := range membs { c.AddMember(m, true) - if m.ClientURLs != nil { - mustUpdateMemberAttrInStore(c.lg, c.v2store, m) - } } return c } @@ -1128,15 +1040,6 @@ func TestPromoteMember(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - t.Run("V2", func(t *testing.T) { - c := newTestCluster(t, tc.members) - - c.PromoteMember(tc.promoteID, false) - - mst, _ := membersFromStore(c.lg, c.v2store) - require.Equal(t, tc.wantMembers, mst) - }) - t.Run("V3", func(t *testing.T) { c := newTestCluster(t, tc.members) @@ -1186,24 +1089,13 @@ func TestUpdateRaftAttributes(t *testing.T) { } for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - t.Run("V2", func(t *testing.T) { - c := newTestCluster(t, tc.members) - - c.UpdateRaftAttributes(tc.updateMemberID, RaftAttributes{PeerURLs: newPeerURLs}, false) - - mst, _ := membersFromStore(c.lg, c.v2store) - require.Equal(t, tc.wantMembers, mst) - }) + t.Run("V3", func(t *testing.T) { + c := newTestCluster(t, tc.members) - t.Run("V3", func(t *testing.T) { - c := newTestCluster(t, tc.members) - - c.UpdateRaftAttributes(tc.updateMemberID, RaftAttributes{PeerURLs: newPeerURLs}, true) + c.UpdateRaftAttributes(tc.updateMemberID, RaftAttributes{PeerURLs: newPeerURLs}, true) - mst, _ := c.be.MustReadMembersFromBackend() - require.Equal(t, tc.wantMembers, mst) - }) + mst, _ := c.be.MustReadMembersFromBackend() + require.Equal(t, tc.wantMembers, mst) }) } } diff --git a/server/etcdserver/api/membership/storev2.go b/server/etcdserver/api/membership/storev2.go index a78a0545fbb0..22c569c881a8 100644 --- a/server/etcdserver/api/membership/storev2.go +++ b/server/etcdserver/api/membership/storev2.go @@ -136,18 +136,6 @@ func mustSaveMemberToStore(lg *zap.Logger, s v2store.Store, m *Member) { } } -func mustDeleteMemberFromStore(lg *zap.Logger, s v2store.Store, id types.ID) { - if _, err := s.Delete(MemberStoreKey(id), true, true); err != nil { - lg.Panic( - "failed to delete member from store", - zap.String("path", MemberStoreKey(id)), - zap.Error(err), - ) - } - - mustAddToRemovedMembersInStore(lg, s, id) -} - func mustAddToRemovedMembersInStore(lg *zap.Logger, s v2store.Store, id types.ID) { if _, err := s.Create(RemovedMemberStoreKey(id), false, "", false, v2store.TTLOptionSet{ExpireTime: v2store.Permanent}); err != nil { lg.Panic( @@ -158,21 +146,6 @@ func mustAddToRemovedMembersInStore(lg *zap.Logger, s v2store.Store, id types.ID } } -func mustUpdateMemberInStore(lg *zap.Logger, s v2store.Store, m *Member) { - b, err := json.Marshal(m.RaftAttributes) - if err != nil { - lg.Panic("failed to marshal raftAttributes", zap.Error(err)) - } - p := path.Join(MemberStoreKey(m.ID), raftAttributesSuffix) - if _, err := s.Update(p, string(b), v2store.TTLOptionSet{ExpireTime: v2store.Permanent}); err != nil { - lg.Panic( - "failed to update raftAttributes", - zap.String("path", p), - zap.Error(err), - ) - } -} - func mustUpdateMemberAttrInStore(lg *zap.Logger, s v2store.Store, m *Member) { b, err := json.Marshal(m.Attributes) if err != nil { diff --git a/server/etcdserver/bootstrap.go b/server/etcdserver/bootstrap.go index 481f4dd7e419..4d9a9460ac10 100644 --- a/server/etcdserver/bootstrap.go +++ b/server/etcdserver/bootstrap.go @@ -37,7 +37,6 @@ import ( "go.etcd.io/etcd/server/v3/etcdserver/api/membership" "go.etcd.io/etcd/server/v3/etcdserver/api/rafthttp" "go.etcd.io/etcd/server/v3/etcdserver/api/snap" - "go.etcd.io/etcd/server/v3/etcdserver/api/v2store" "go.etcd.io/etcd/server/v3/etcdserver/api/v3discovery" "go.etcd.io/etcd/server/v3/etcdserver/cindex" servererrors "go.etcd.io/etcd/server/v3/etcdserver/errors" @@ -75,8 +74,7 @@ func bootstrap(cfg config.ServerConfig) (b *bootstrappedServer, err error) { } haveWAL := wal.Exist(cfg.WALDir()) - st := v2store.New(StoreClusterPrefix, StoreKeysPrefix) - backend, err := bootstrapBackend(cfg, haveWAL, st, ss) + backend, err := bootstrapBackend(cfg, haveWAL, ss) if err != nil { return nil, err } @@ -98,7 +96,7 @@ func bootstrap(cfg config.ServerConfig) (b *bootstrappedServer, err error) { } cfg.Logger.Info("bootstrapping storage") - s := bootstrapStorage(cfg, st, backend, bwal, cluster) + s := bootstrapStorage(cfg, backend, bwal, cluster) if err = cluster.Finalize(cfg, s); err != nil { backend.Close() @@ -131,7 +129,6 @@ func (s *bootstrappedServer) Close() { type bootstrappedStorage struct { backend *bootstrappedBackend wal *bootstrappedWAL - st v2store.Store } func (s *bootstrappedStorage) Close() { @@ -165,14 +162,13 @@ type bootstrappedRaft struct { storage *raft.MemoryStorage } -func bootstrapStorage(cfg config.ServerConfig, st v2store.Store, be *bootstrappedBackend, wal *bootstrappedWAL, cl *bootstrappedCluster) *bootstrappedStorage { +func bootstrapStorage(cfg config.ServerConfig, be *bootstrappedBackend, wal *bootstrappedWAL, cl *bootstrappedCluster) *bootstrappedStorage { if wal == nil { wal = bootstrapNewWAL(cfg, cl) } return &bootstrappedStorage{ backend: be, - st: st, wal: wal, } } @@ -198,7 +194,7 @@ func bootstrapSnapshot(cfg config.ServerConfig) *snap.Snapshotter { return snap.New(cfg.Logger, cfg.SnapDir()) } -func bootstrapBackend(cfg config.ServerConfig, haveWAL bool, st v2store.Store, ss *snap.Snapshotter) (backend *bootstrappedBackend, err error) { +func bootstrapBackend(cfg config.ServerConfig, haveWAL bool, ss *snap.Snapshotter) (backend *bootstrappedBackend, err error) { beExist := fileutil.Exist(cfg.BackendPath()) ci := cindex.NewConsistentIndex(nil) beHooks := serverstorage.NewBackendHooks(cfg.Logger, ci) @@ -221,7 +217,7 @@ func bootstrapBackend(cfg config.ServerConfig, haveWAL bool, st v2store.Store, s // TODO(serathius): Implement schema setup in fresh storage var snapshot *raftpb.Snapshot if haveWAL { - snapshot, be, err = recoverSnapshot(cfg, st, be, beExist, beHooks, ci, ss) + snapshot, be, err = recoverSnapshot(cfg, be, beExist, beHooks, ci, ss) if err != nil { return nil, err } @@ -380,7 +376,7 @@ func bootstrapClusterWithWAL(cfg config.ServerConfig, meta *snapshotMetadata) (* }, nil } -func recoverSnapshot(cfg config.ServerConfig, st v2store.Store, be backend.Backend, beExist bool, beHooks *serverstorage.BackendHooks, ci cindex.ConsistentIndexer, ss *snap.Snapshotter) (*raftpb.Snapshot, backend.Backend, error) { +func recoverSnapshot(cfg config.ServerConfig, be backend.Backend, beExist bool, beHooks *serverstorage.BackendHooks, ci cindex.ConsistentIndexer, ss *snap.Snapshotter) (*raftpb.Snapshot, backend.Backend, error) { // Find a snapshot to start/restart a raft node walSnaps, err := wal.ValidSnapshotEntries(cfg.Logger, cfg.WALDir()) if err != nil { @@ -394,15 +390,6 @@ func recoverSnapshot(cfg config.ServerConfig, st v2store.Store, be backend.Backe } if snapshot != nil { - if err = st.Recovery(snapshot.Data); err != nil { - cfg.Logger.Panic("failed to recover from snapshot", zap.Error(err)) - } - - if err = serverstorage.AssertNoV2StoreContent(cfg.Logger, st, cfg.V2Deprecation); err != nil { - cfg.Logger.Error("illegal v2store content", zap.Error(err)) - return nil, be, err - } - cfg.Logger.Info( "recovered v2 store from snapshot", zap.Uint64("snapshot-index", snapshot.Metadata.Index), @@ -440,7 +427,6 @@ func (c *bootstrappedCluster) Finalize(cfg config.ServerConfig, s *bootstrappedS if !s.wal.haveWAL { c.cl.SetID(c.nodeID, c.cl.ID()) } - c.cl.SetStore(s.st) c.cl.SetBackend(schema.NewMembershipBackend(cfg.Logger, s.backend.be)) // Workaround the issues which have already been affected diff --git a/server/etcdserver/bootstrap_test.go b/server/etcdserver/bootstrap_test.go index 823b9b7210bd..566c8fd73465 100644 --- a/server/etcdserver/bootstrap_test.go +++ b/server/etcdserver/bootstrap_test.go @@ -37,7 +37,6 @@ import ( "go.etcd.io/etcd/server/v3/config" "go.etcd.io/etcd/server/v3/etcdserver/api/membership" "go.etcd.io/etcd/server/v3/etcdserver/api/snap" - "go.etcd.io/etcd/server/v3/etcdserver/api/v2store" serverstorage "go.etcd.io/etcd/server/v3/storage" "go.etcd.io/etcd/server/v3/storage/datadir" "go.etcd.io/etcd/server/v3/storage/schema" @@ -191,9 +190,8 @@ func TestBootstrapBackend(t *testing.T) { } haveWAL := wal.Exist(cfg.WALDir()) - st := v2store.New(StoreClusterPrefix, StoreKeysPrefix) ss := snap.New(cfg.Logger, cfg.SnapDir()) - backend, err := bootstrapBackend(cfg, haveWAL, st, ss) + backend, err := bootstrapBackend(cfg, haveWAL, ss) defer t.Cleanup(func() { backend.Close() }) diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index 78e186626101..6824580bafd0 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -245,7 +245,6 @@ type EtcdServer struct { cluster *membership.RaftCluster - v2store v2store.Store snapshotter *snap.Snapshotter uberApply apply.UberApplier @@ -321,7 +320,6 @@ func NewServer(cfg config.ServerConfig) (srv *EtcdServer, err error) { lgMu: new(sync.RWMutex), lg: cfg.Logger, errorc: make(chan error, 1), - v2store: b.storage.st, snapshotter: b.ss, r: *b.raft.newRaftNode(b.ss, b.storage.wal.w, b.cluster.cl), memberID: b.cluster.nodeID, @@ -1110,17 +1108,6 @@ func (s *EtcdServer) applySnapshot(ep *etcdProgress, toApply *toApply) { lg.Info("restored auth store") } - lg.Info("restoring v2 store") - if err := s.v2store.Recovery(toApply.snapshot.Data); err != nil { - lg.Panic("failed to restore v2 store", zap.Error(err)) - } - - if err := serverstorage.AssertNoV2StoreContent(lg, s.v2store, s.Cfg.V2Deprecation); err != nil { - lg.Panic("illegal v2store content", zap.Error(err)) - } - - lg.Info("restored v2 store") - s.cluster.SetBackend(schema.NewMembershipBackend(lg, newbe)) lg.Info("restoring cluster configuration") diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index 31871c3d7a30..c94ecb9bec30 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -57,7 +57,6 @@ import ( "go.etcd.io/etcd/server/v3/etcdserver/api/membership" "go.etcd.io/etcd/server/v3/etcdserver/api/rafthttp" "go.etcd.io/etcd/server/v3/etcdserver/api/snap" - "go.etcd.io/etcd/server/v3/etcdserver/api/v2store" "go.etcd.io/etcd/server/v3/etcdserver/api/v3alarm" apply2 "go.etcd.io/etcd/server/v3/etcdserver/apply" "go.etcd.io/etcd/server/v3/etcdserver/cindex" @@ -84,8 +83,6 @@ func TestApplyRepeat(t *testing.T) { SoftState: &raft.SoftState{RaftState: raft.StateLeader}, } cl := newTestCluster(t) - st := v2store.New() - cl.SetStore(v2store.New()) be, _ := betesting.NewDefaultTmpBackend(t) defer betesting.Close(t, be) cl.SetBackend(schema.NewMembershipBackend(lg, be)) @@ -102,7 +99,6 @@ func TestApplyRepeat(t *testing.T) { lgMu: new(sync.RWMutex), lg: zaptest.NewLogger(t), r: *r, - v2store: st, cluster: cl, reqIDGen: idutil.NewGenerator(0, time.Time{}), consistIndex: cindex.NewFakeConsistentIndex(0), @@ -167,7 +163,6 @@ func TestV2SetMemberAttributes(t *testing.T) { srv := &EtcdServer{ lgMu: new(sync.RWMutex), lg: zaptest.NewLogger(t), - v2store: mockstore.NewRecorder(), cluster: cl, consistIndex: cindex.NewConsistentIndex(be), w: wait.New(), @@ -213,7 +208,6 @@ func TestV2SetClusterVersion(t *testing.T) { srv := &EtcdServer{ lgMu: new(sync.RWMutex), lg: zaptest.NewLogger(t), - v2store: mockstore.NewRecorder(), cluster: cl, consistIndex: cindex.NewConsistentIndex(be), w: wait.New(), @@ -243,7 +237,6 @@ func TestV2SetClusterVersion(t *testing.T) { t.Errorf("attributes = %v, want %v", *g, version.V3_5) } } - func TestApplyConfStateWithRestart(t *testing.T) { n := newNodeRecorder() srv := newServer(t, n) @@ -323,8 +316,15 @@ func TestApplyConfStateWithRestart(t *testing.T) { t.Errorf("actions don't match\n got %+v\n want %+v", got, want) } - t.Log("Simulating etcd restart by clearing v2 store") - srv.cluster.SetStore(v2store.New()) + t.Log("Simulating etcd restart by clearing v3 store") + be, _ := betesting.NewDefaultTmpBackend(t) + t.Cleanup(func() { + betesting.Close(t, be) + }) + lg := zaptest.NewLogger(t) + srv.cluster.SetBackend(schema.NewMembershipBackend(lg, be)) + srv.beHooks = serverstorage.NewBackendHooks(lg, srv.consistIndex) + srv.consistIndex.SetBackend(be) t.Log("Reapplying same entries after restart") srv.apply(entries, &confState, nil) @@ -347,7 +347,6 @@ func newServer(t *testing.T, recorder *nodeRecorder) *EtcdServer { consistIndex: cindex.NewConsistentIndex(be), } srv.cluster.SetBackend(schema.NewMembershipBackend(lg, be)) - srv.cluster.SetStore(v2store.New()) srv.beHooks = serverstorage.NewBackendHooks(lg, srv.consistIndex) srv.r.transport = newNopTransporter() srv.w = mockwait.NewNop() @@ -361,7 +360,6 @@ func TestApplyConfChangeError(t *testing.T) { cl := membership.NewCluster(lg) cl.SetBackend(schema.NewMembershipBackend(lg, be)) - cl.SetStore(v2store.New()) for i := 1; i <= 4; i++ { cl.AddMember(&membership.Member{ID: types.ID(i)}, true) @@ -455,7 +453,6 @@ func TestApplyConfChangeShouldStop(t *testing.T) { cl := membership.NewCluster(lg) cl.SetBackend(schema.NewMembershipBackend(lg, be)) - cl.SetStore(v2store.New()) for i := 1; i <= 3; i++ { cl.AddMember(&membership.Member{ID: types.ID(i)}, true) @@ -505,7 +502,6 @@ func TestApplyConfigChangeUpdatesConsistIndex(t *testing.T) { defer betesting.Close(t, be) cl := membership.NewCluster(zaptest.NewLogger(t)) - cl.SetStore(v2store.New()) cl.SetBackend(schema.NewMembershipBackend(lg, be)) cl.AddMember(&membership.Member{ID: types.ID(1)}, true) @@ -593,7 +589,6 @@ func realisticRaftNode(lg *zap.Logger, id uint64, snap *raftpb.Snapshot) *raftNo func TestApplyMultiConfChangeShouldStop(t *testing.T) { lg := zaptest.NewLogger(t) cl := membership.NewCluster(lg) - cl.SetStore(v2store.New()) be, _ := betesting.NewDefaultTmpBackend(t) defer betesting.Close(t, be) cl.SetBackend(schema.NewMembershipBackend(lg, be)) @@ -662,7 +657,6 @@ func TestSnapshotDisk(t *testing.T) { lgMu: new(sync.RWMutex), lg: zaptest.NewLogger(t), r: *r, - v2store: st, consistIndex: cindex.NewConsistentIndex(be), } srv.kv = mvcc.New(zaptest.NewLogger(t), be, &lease.FakeLessor{}, mvcc.StoreConfig{}) @@ -713,7 +707,6 @@ func TestSnapshotMemory(t *testing.T) { lgMu: new(sync.RWMutex), lg: zaptest.NewLogger(t), r: *r, - v2store: st, consistIndex: cindex.NewConsistentIndex(be), } srv.kv = mvcc.New(zaptest.NewLogger(t), be, &lease.FakeLessor{}, mvcc.StoreConfig{}) @@ -751,7 +744,6 @@ func TestSnapshotOrdering(t *testing.T) { lg := zaptest.NewLogger(t) n := newNopReadyNode() - st := v2store.New() cl := membership.NewCluster(lg) be, _ := betesting.NewDefaultTmpBackend(t) cl.SetBackend(schema.NewMembershipBackend(lg, be)) @@ -787,7 +779,6 @@ func TestSnapshotOrdering(t *testing.T) { lg: lg, Cfg: cfg, r: *r, - v2store: st, snapshotter: snap.New(lg, snapdir), cluster: cl, consistIndex: ci, @@ -849,9 +840,7 @@ func TestConcurrentApplyAndSnapshotV3(t *testing.T) { lg := zaptest.NewLogger(t) n := newNopReadyNode() - st := v2store.New() cl := membership.NewCluster(lg) - cl.SetStore(st) be, _ := betesting.NewDefaultTmpBackend(t) cl.SetBackend(schema.NewMembershipBackend(lg, be)) @@ -881,7 +870,6 @@ func TestConcurrentApplyAndSnapshotV3(t *testing.T) { ServerFeatureGate: features.NewDefaultServerFeatureGate("test", lg), }, r: *r, - v2store: st, snapshotter: snap.New(lg, testdir), cluster: cl, consistIndex: ci, @@ -958,8 +946,6 @@ func TestAddMember(t *testing.T) { SoftState: &raft.SoftState{RaftState: raft.StateLeader}, } cl := newTestCluster(t) - st := v2store.New() - cl.SetStore(st) be, _ := betesting.NewDefaultTmpBackend(t) defer betesting.Close(t, be) cl.SetBackend(schema.NewMembershipBackend(lg, be)) @@ -975,7 +961,6 @@ func TestAddMember(t *testing.T) { lgMu: new(sync.RWMutex), lg: lg, r: *r, - v2store: st, cluster: cl, reqIDGen: idutil.NewGenerator(0, time.Time{}), consistIndex: cindex.NewFakeConsistentIndex(0), @@ -1004,8 +989,6 @@ func TestAddMember(t *testing.T) { func TestProcessIgnoreMismatchMessage(t *testing.T) { lg := zaptest.NewLogger(t) cl := newTestCluster(t) - st := v2store.New() - cl.SetStore(st) be, _ := betesting.NewDefaultTmpBackend(t) defer betesting.Close(t, be) cl.SetBackend(schema.NewMembershipBackend(lg, be)) @@ -1031,7 +1014,6 @@ func TestProcessIgnoreMismatchMessage(t *testing.T) { lg: lg, memberID: 1, r: *r, - v2store: st, cluster: cl, reqIDGen: idutil.NewGenerator(0, time.Time{}), consistIndex: cindex.NewFakeConsistentIndex(0), @@ -1062,8 +1044,6 @@ func TestRemoveMember(t *testing.T) { SoftState: &raft.SoftState{RaftState: raft.StateLeader}, } cl := newTestCluster(t) - st := v2store.New() - cl.SetStore(v2store.New()) be, _ := betesting.NewDefaultTmpBackend(t) defer betesting.Close(t, be) cl.SetBackend(schema.NewMembershipBackend(lg, be)) @@ -1080,7 +1060,6 @@ func TestRemoveMember(t *testing.T) { lgMu: new(sync.RWMutex), lg: zaptest.NewLogger(t), r: *r, - v2store: st, cluster: cl, reqIDGen: idutil.NewGenerator(0, time.Time{}), consistIndex: cindex.NewFakeConsistentIndex(0), @@ -1113,8 +1092,6 @@ func TestUpdateMember(t *testing.T) { SoftState: &raft.SoftState{RaftState: raft.StateLeader}, } cl := newTestCluster(t) - st := v2store.New() - cl.SetStore(st) cl.SetBackend(schema.NewMembershipBackend(lg, be)) cl.AddMember(&membership.Member{ID: 1234}, true) r := newRaftNode(raftNodeConfig{ @@ -1128,7 +1105,6 @@ func TestUpdateMember(t *testing.T) { lgMu: new(sync.RWMutex), lg: lg, r: *r, - v2store: st, cluster: cl, reqIDGen: idutil.NewGenerator(0, time.Time{}), consistIndex: cindex.NewFakeConsistentIndex(0), @@ -1511,7 +1487,6 @@ func newTestCluster(tb testing.TB) *membership.RaftCluster { func newTestClusterWithBackend(tb testing.TB, membs []*membership.Member, be backend.Backend) *membership.RaftCluster { lg := zaptest.NewLogger(tb) c := membership.NewCluster(lg) - c.SetStore(v2store.New()) c.SetBackend(schema.NewMembershipBackend(lg, be)) for _, m := range membs { c.AddMember(m, true) diff --git a/tests/e2e/metrics_test.go b/tests/e2e/metrics_test.go index 6e3774d1cf26..2b1cbdab7a2e 100644 --- a/tests/e2e/metrics_test.go +++ b/tests/e2e/metrics_test.go @@ -169,7 +169,6 @@ func TestNoMetricsMissing(t *testing.T) { "etcd_debugging_store_expires_total", "etcd_debugging_store_watch_requests_total", "etcd_debugging_store_watchers", - "etcd_debugging_store_writes_total", "etcd_disk_backend_commit_duration_seconds", "etcd_disk_backend_defrag_duration_seconds", "etcd_disk_backend_snapshot_duration_seconds", diff --git a/tests/e2e/v2store_deprecation_test.go b/tests/e2e/v2store_deprecation_test.go index 27c397bb36b8..e0900029f01d 100644 --- a/tests/e2e/v2store_deprecation_test.go +++ b/tests/e2e/v2store_deprecation_test.go @@ -15,9 +15,7 @@ package e2e import ( - "bytes" "context" - "fmt" "reflect" "sort" "strings" @@ -30,10 +28,7 @@ import ( "go.uber.org/zap/zaptest" "go.etcd.io/etcd/client/pkg/v3/fileutil" - "go.etcd.io/etcd/server/v3/etcdserver" "go.etcd.io/etcd/server/v3/etcdserver/api/membership" - "go.etcd.io/etcd/server/v3/etcdserver/api/snap" - "go.etcd.io/etcd/server/v3/etcdserver/api/v2store" betesting "go.etcd.io/etcd/server/v3/storage/backend/testing" "go.etcd.io/etcd/server/v3/storage/schema" "go.etcd.io/etcd/tests/v3/framework/config" @@ -54,34 +49,18 @@ func TestV2DeprecationSnapshotMatches(t *testing.T) { e2e.BeforeTest(t) lastReleaseData := t.TempDir() currentReleaseData := t.TempDir() - ctx, cancel := context.WithCancel(t.Context()) - defer cancel() - if !fileutil.Exist(e2e.BinPath.EtcdLastRelease) { t.Skipf("%q does not exist", e2e.BinPath.EtcdLastRelease) } var snapshotCount uint64 = 10 epc := runEtcdAndCreateSnapshot(t, e2e.LastVersion, lastReleaseData, snapshotCount) oldMemberDataDir := epc.Procs[0].Config().DataDirPath - cc1 := epc.Etcdctl() - members1 := addAndRemoveKeysAndMembers(ctx, t, cc1, snapshotCount) require.NoError(t, epc.Close()) epc = runEtcdAndCreateSnapshot(t, e2e.CurrentVersion, currentReleaseData, snapshotCount) newMemberDataDir := epc.Procs[0].Config().DataDirPath - cc2 := epc.Etcdctl() - members2 := addAndRemoveKeysAndMembers(ctx, t, cc2, snapshotCount) require.NoError(t, epc.Close()) - assertSnapshotsMatch(t, oldMemberDataDir, newMemberDataDir, func(data []byte) []byte { - // Patch members ids - for i, mid := range members1 { - data = bytes.Replace(data, []byte(fmt.Sprintf("%x", mid)), []byte(fmt.Sprintf("%d", i+1)), -1) - } - for i, mid := range members2 { - data = bytes.Replace(data, []byte(fmt.Sprintf("%x", mid)), []byte(fmt.Sprintf("%d", i+1)), -1) - } - return data - }) + assertSnapshotsMatch(t, oldMemberDataDir, newMemberDataDir) } func TestV2DeprecationSnapshotRecover(t *testing.T) { @@ -134,44 +113,11 @@ func runEtcdAndCreateSnapshot(tb testing.TB, serverVersion e2e.ClusterVersion, d return epc } -func addAndRemoveKeysAndMembers(ctx context.Context, tb testing.TB, cc *e2e.EtcdctlV3, snapshotCount uint64) (members []uint64) { - // Execute some non-trivial key&member operation - var i uint64 - for i = 0; i < snapshotCount*3; i++ { - _, err := cc.Put(ctx, fmt.Sprintf("%d", i), "1", config.PutOptions{}) - require.NoError(tb, err) - } - member1, err := cc.MemberAddAsLearner(ctx, "member1", []string{"http://127.0.0.1:2000"}) - require.NoError(tb, err) - members = append(members, member1.Member.ID) - - for i = 0; i < snapshotCount*2; i++ { - _, err = cc.Delete(ctx, fmt.Sprintf("%d", i), config.DeleteOptions{}) - require.NoError(tb, err) - } - _, err = cc.MemberRemove(ctx, member1.Member.ID) - require.NoError(tb, err) - - for i = 0; i < snapshotCount; i++ { - _, err = cc.Put(ctx, fmt.Sprintf("%d", i), "2", config.PutOptions{}) - require.NoError(tb, err) - } - member2, err := cc.MemberAddAsLearner(ctx, "member2", []string{"http://127.0.0.1:2001"}) - require.NoError(tb, err) - members = append(members, member2.Member.ID) - - for i = 0; i < snapshotCount/2; i++ { - _, err = cc.Put(ctx, fmt.Sprintf("%d", i), "3", config.PutOptions{}) - assert.NoError(tb, err) - } - return members -} - func filterSnapshotFiles(path string) bool { return strings.HasSuffix(path, ".snap") } -func assertSnapshotsMatch(tb testing.TB, firstDataDir, secondDataDir string, patch func([]byte) []byte) { +func assertSnapshotsMatch(tb testing.TB, firstDataDir, secondDataDir string) { lg := zaptest.NewLogger(tb) firstFiles, err := fileutil.ListFiles(firstDataDir, filterSnapshotFiles) require.NoError(tb, err) @@ -183,17 +129,12 @@ func assertSnapshotsMatch(tb testing.TB, firstDataDir, secondDataDir string, pat sort.Strings(firstFiles) sort.Strings(secondFiles) for i := 0; i < len(firstFiles); i++ { - firstSnapshot, err := snap.Read(lg, firstFiles[i]) - require.NoError(tb, err) - secondSnapshot, err := snap.Read(lg, secondFiles[i]) - require.NoError(tb, err) - assertMembershipEqual(tb, lg, openSnap(patch(firstSnapshot.Data)), openSnap(patch(secondSnapshot.Data))) + assertMembershipEqual(tb, lg) } } -func assertMembershipEqual(tb testing.TB, lg *zap.Logger, firstStore v2store.Store, secondStore v2store.Store) { +func assertMembershipEqual(tb testing.TB, lg *zap.Logger) { rc1 := membership.NewCluster(zaptest.NewLogger(tb)) - rc1.SetStore(firstStore) be1, _ := betesting.NewDefaultTmpBackend(tb) defer betesting.Close(tb, be1) rc1.SetBackend(schema.NewMembershipBackend(lg, be1)) @@ -203,7 +144,6 @@ func assertMembershipEqual(tb testing.TB, lg *zap.Logger, firstStore v2store.Sto be2, _ := betesting.NewDefaultTmpBackend(tb) defer betesting.Close(tb, be2) rc2.SetBackend(schema.NewMembershipBackend(lg, be2)) - rc2.SetStore(secondStore) rc2.Recover(func(lg *zap.Logger, v *semver.Version) {}) // membership should match @@ -212,9 +152,3 @@ func assertMembershipEqual(tb testing.TB, lg *zap.Logger, firstStore v2store.Sto tb.Errorf("members_from_last_version_snapshot = %+v, members_from_current_version_snapshot %+v", rc1.Members(), rc2.Members()) } } - -func openSnap(data []byte) v2store.Store { - st := v2store.New(etcdserver.StoreClusterPrefix, etcdserver.StoreKeysPrefix) - st.Recovery(data) - return st -} From 7b8fd600c3167446fa28694f435de129fd632b3d Mon Sep 17 00:00:00 2001 From: Zhijun Date: Fri, 9 Jan 2026 21:52:16 +0800 Subject: [PATCH 0726/1068] Add an integration test to reproduce incorrect gRPC Unavailable on client cancel during LeaseKeepAlive forwarding Signed-off-by: Zhijun Address feedback Signed-off-by: Zhijun Rename sleep function and pass duration Signed-off-by: Zhijun Use require.Positive instead Signed-off-by: Zhijun Assert client's canceled error code Signed-off-by: Zhijun --- server/lease/leasehttp/http.go | 1 + tests/integration/v3_lease_test.go | 134 ++++++++++++++++++++++++++++- 2 files changed, 134 insertions(+), 1 deletion(-) diff --git a/server/lease/leasehttp/http.go b/server/lease/leasehttp/http.go index d79a9820ae68..79ca649d6a62 100644 --- a/server/lease/leasehttp/http.go +++ b/server/lease/leasehttp/http.go @@ -73,6 +73,7 @@ func (h *leaseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { http.Error(w, ErrLeaseHTTPTimeout.Error(), http.StatusRequestTimeout) return } + // gofail: var beforeServeHTTPLeaseRenew struct{} ttl, rerr := h.l.Renew(lease.LeaseID(lreq.ID)) if rerr != nil { if errors.Is(rerr, lease.ErrLeaseNotFound) { diff --git a/tests/integration/v3_lease_test.go b/tests/integration/v3_lease_test.go index 61cdb3d3e860..216bde663a64 100644 --- a/tests/integration/v3_lease_test.go +++ b/tests/integration/v3_lease_test.go @@ -19,6 +19,7 @@ import ( "errors" "fmt" "math" + "strconv" "testing" "time" @@ -314,6 +315,137 @@ func TestV3LeaseKeepAlive(t *testing.T) { }) } +// TestV3LeaseKeepAliveForwardingCatchError ensures the server properly generates error +// codes while the follower server is forwarding LeaseKeepAlive request to the leader. +func TestV3LeaseKeepAliveForwardingCatchError(t *testing.T) { + if len(gofail.List()) == 0 { + t.Skip("please run 'make gofail-enable' before running the test") + } + integration.BeforeTest(t) + // Longer than leaseHandler.ServeHTTP()'s default timeout duration + sleepDuration := 8 * time.Second + + t.Run("forwarding succeeds", func(t *testing.T) { + leaderClient, follower := setupLeaseForwardingCluster(t) + + grantResp, err := leaderClient.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) + require.NoError(t, err) + leaseID := grantResp.ID + + keepAliveClient, err := integration.ToGRPC(follower.Client).Lease.LeaseKeepAlive(t.Context()) + require.NoError(t, err) + defer keepAliveClient.CloseSend() + + require.NoError(t, keepAliveClient.Send(&pb.LeaseKeepAliveRequest{ID: leaseID})) + resp, err := keepAliveClient.Recv() + require.NoError(t, err) + require.Equal(t, leaseID, resp.ID) + require.Positive(t, resp.TTL) + }) + + // Shows current behavior: client cancel during forwarding incorrectly returns Unavailable. + t.Run("client cancels while forwarding", func(t *testing.T) { + leaderClient, follower := setupLeaseForwardingCluster(t) + + grantResp, err := leaderClient.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) + require.NoError(t, err) + leaseID := grantResp.ID + + ctx, cancel := context.WithCancel(t.Context()) + keepAliveClient, err := integration.ToGRPC(follower.Client).Lease.LeaseKeepAlive(ctx) + require.NoError(t, err) + defer keepAliveClient.CloseSend() + + require.NoError(t, keepAliveClient.Send(&pb.LeaseKeepAliveRequest{ID: leaseID})) + _, err = keepAliveClient.Recv() + require.NoError(t, err) + + sleepBeforeServingLeaseRenew(t, sleepDuration) + + // Use server metrics to verify behavior since client.Recv() always returns Canceled + // after cancel() regardless of the actual server response. + prevCanceledCount := getLeaseKeepAliveMetric(t, follower, "Canceled") + prevUnavailableCount := getLeaseKeepAliveMetric(t, follower, "Unavailable") + + require.NoError(t, keepAliveClient.Send(&pb.LeaseKeepAliveRequest{ID: leaseID})) + time.Sleep(50 * time.Millisecond) + cancel() + + // Client sees Canceled (gRPC returns this immediately after cancel()), + // but server actually generated Unavailable (verified by metrics below). + _, err = keepAliveClient.Recv() + require.Equal(t, codes.Canceled, status.Code(err)) + + require.Eventually(t, func() bool { + return getLeaseKeepAliveMetric(t, follower, "Unavailable") == prevUnavailableCount+1 + }, 3*time.Second, 100*time.Millisecond) + require.Equal(t, prevCanceledCount, getLeaseKeepAliveMetric(t, follower, "Canceled")) + }) + + t.Run("forwarding times out", func(t *testing.T) { + leaderClient, follower := setupLeaseForwardingCluster(t) + + grantResp, err := leaderClient.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) + require.NoError(t, err) + leaseID := grantResp.ID + + keepAliveClient, err := integration.ToGRPC(follower.Client).Lease.LeaseKeepAlive(t.Context()) + require.NoError(t, err) + defer keepAliveClient.CloseSend() + + require.NoError(t, keepAliveClient.Send(&pb.LeaseKeepAliveRequest{ID: leaseID})) + _, err = keepAliveClient.Recv() + require.NoError(t, err) + + sleepBeforeServingLeaseRenew(t, sleepDuration) + + prevUnavailableCount := getLeaseKeepAliveMetric(t, follower, "Unavailable") + require.NoError(t, keepAliveClient.Send(&pb.LeaseKeepAliveRequest{ID: leaseID})) + + _, err = keepAliveClient.Recv() + require.Equal(t, rpctypes.ErrGRPCTimeout, err) + + require.Eventually(t, func() bool { + return getLeaseKeepAliveMetric(t, follower, "Unavailable") == prevUnavailableCount+1 + }, 3*time.Second, 100*time.Millisecond) + }) +} + +func setupLeaseForwardingCluster(t *testing.T) (pb.LeaseClient, *integration.Member) { + t.Helper() + cluster := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) + t.Cleanup(func() { cluster.Terminate(t) }) + + leaderIdx := cluster.WaitLeader(t) + followerIdx := (leaderIdx + 1) % 3 + return integration.ToGRPC(cluster.Client(leaderIdx)).Lease, cluster.Members[followerIdx] +} + +func getLeaseKeepAliveMetric(t *testing.T, member *integration.Member, grpcCode string) int64 { + t.Helper() + metricVal, err := member.Metric( + "grpc_server_handled_total", + `grpc_method="LeaseKeepAlive"`, + fmt.Sprintf(`grpc_code="%v"`, grpcCode), + ) + require.NoError(t, err) + count, err := strconv.ParseInt(metricVal, 10, 32) + require.NoError(t, err) + return count +} + +func sleepBeforeServingLeaseRenew(t *testing.T, duration time.Duration) { + t.Helper() + failpointName := "beforeServeHTTPLeaseRenew" + require.NoError(t, gofail.Enable(failpointName, fmt.Sprintf(`sleep("%s")`, duration))) + t.Cleanup(func() { + terr := gofail.Disable(failpointName) + if terr != nil && !errors.Is(terr, gofail.ErrDisabled) { + t.Fatalf("Failed to disable failpoint %v, got error: %v", failpointName, terr) + } + }) +} + // TestV3LeaseCheckpoint ensures a lease checkpoint results in a remaining TTL being persisted // across leader elections. func TestV3LeaseCheckpoint(t *testing.T) { @@ -891,7 +1023,7 @@ func TestV3LeaseRecoverKeyWithDetachedLease(t *testing.T) { } } -func TestV3LeaseRecoverKeyWithMutipleLease(t *testing.T) { +func TestV3LeaseRecoverKeyWithMultipleLease(t *testing.T) { integration.BeforeTest(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true}) From 8904baebd31e568f2b4451ae26ee7a898bce2ab8 Mon Sep 17 00:00:00 2001 From: Nont Date: Sat, 10 Jan 2026 11:28:51 -0600 Subject: [PATCH 0727/1068] Fix ignored header in framework e2e client Signed-off-by: Nont --- tests/framework/e2e/etcdctl.go | 40 ++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/tests/framework/e2e/etcdctl.go b/tests/framework/e2e/etcdctl.go index 4aeb715142bf..f1ec993a6e89 100644 --- a/tests/framework/e2e/etcdctl.go +++ b/tests/framework/e2e/etcdctl.go @@ -100,7 +100,6 @@ func (ctl *EtcdctlV3) DowngradeCancel(ctx context.Context) error { } func (ctl *EtcdctlV3) Get(ctx context.Context, key string, o config.GetOptions) (*clientv3.GetResponse, error) { - resp := clientv3.GetResponse{} var args []string if o.Timeout != 0 { args = append(args, fmt.Sprintf("--command-timeout=%s", o.Timeout)) @@ -177,13 +176,50 @@ func (ctl *EtcdctlV3) Get(ctx context.Context, key string, o config.GetOptions) return nil, err } defer cmd.Close() + // Relying on finding 'Count' as the last line of the output to get all the lines from cmd.Lines() _, err = cmd.ExpectWithContext(ctx, expect.ExpectedResponse{Value: "Count"}) - return &resp, err + if err != nil { + return nil, err + } + return parseFieldsGetResponse(cmd.Lines()) } + resp := clientv3.GetResponse{} err := ctl.spawnJSONCmd(ctx, &resp, args...) return &resp, err } +func parseFieldsGetResponse(lines []string) (*clientv3.GetResponse, error) { + resp := &clientv3.GetResponse{Header: &etcdserverpb.ResponseHeader{}} + for _, l := range lines { + fields := strings.Split(l, ":") + key, value := strings.TrimSpace(fields[0]), strings.TrimSpace(fields[1]) + var err error + if key, err = strconv.Unquote(key); err != nil { + return resp, err + } + switch key { + case "ClusterID": + resp.Header.ClusterId, err = strconv.ParseUint(value, 10, 64) + case "MemberID": + resp.Header.MemberId, err = strconv.ParseUint(value, 10, 64) + case "Revision": + resp.Header.Revision, err = strconv.ParseInt(value, 10, 64) + case "RaftTerm": + resp.Header.RaftTerm, err = strconv.ParseUint(value, 10, 64) + case "More": + resp.More, err = strconv.ParseBool(value) + case "Count": + resp.Count, err = strconv.ParseInt(value, 10, 64) + default: + return resp, fmt.Errorf("unexpected field %q:%s", key, value) + } + if err != nil { + return resp, err + } + } + return resp, nil +} + func (ctl *EtcdctlV3) Put(ctx context.Context, key, value string, opts config.PutOptions) (*clientv3.PutResponse, error) { resp := clientv3.PutResponse{} args := []string{} From 7c3fa94a83b765299a12f33a7454d7322b68315f Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Mon, 12 Jan 2026 10:50:56 +0000 Subject: [PATCH 0728/1068] do not load v2 snapshot on bootstrap In this commit, we don't load v2 snapshot files (*.snap) anymore, instead we just pick the latest snapshot entry from WAL. We don't need the raftpb.Snapshot.Data anymore, so it's correct to just read the latest snapshot entry from WAL. The end goal is to completely get rid of v2 snapshot, which means we don't read v2 snapshot, nor write it. But in order to be compatible with 3.6, we still need to write v2 snapshot. This PR just stops reading v2 snapshot, so that it's safe to completely remove it in 3.8. Signed-off-by: Benjamin Wang --- etcdutl/etcdutl/common.go | 28 +++++------------------- etcdutl/etcdutl/common_test.go | 32 ++-------------------------- server/etcdserver/bootstrap.go | 33 +++++++++++++++++------------ server/etcdserver/bootstrap_test.go | 3 +-- 4 files changed, 28 insertions(+), 68 deletions(-) diff --git a/etcdutl/etcdutl/common.go b/etcdutl/etcdutl/common.go index b7e42959e2a2..e9a9e23f9238 100644 --- a/etcdutl/etcdutl/common.go +++ b/etcdutl/etcdutl/common.go @@ -15,7 +15,6 @@ package etcdutl import ( - "errors" "time" "go.uber.org/zap" @@ -23,11 +22,9 @@ import ( "go.etcd.io/etcd/client/pkg/v3/logutil" "go.etcd.io/etcd/pkg/v3/cobrautl" - "go.etcd.io/etcd/server/v3/etcdserver/api/snap" "go.etcd.io/etcd/server/v3/storage/datadir" "go.etcd.io/etcd/server/v3/storage/wal" "go.etcd.io/etcd/server/v3/storage/wal/walpb" - "go.etcd.io/raft/v3/raftpb" ) // FlockTimeout is the duration to wait to obtain a file lock on db file. @@ -45,30 +42,15 @@ func GetLogger() *zap.Logger { } func getLatestWALSnap(lg *zap.Logger, dataDir string) (walpb.Snapshot, error) { - snapshot, err := getLatestV2Snapshot(lg, dataDir) - if err != nil { - return walpb.Snapshot{}, err - } - - var walsnap walpb.Snapshot - if snapshot != nil { - walsnap.Index, walsnap.Term = snapshot.Metadata.Index, snapshot.Metadata.Term - } - return walsnap, nil -} - -func getLatestV2Snapshot(lg *zap.Logger, dataDir string) (*raftpb.Snapshot, error) { walPath := datadir.ToWALDir(dataDir) walSnaps, err := wal.ValidSnapshotEntries(lg, walPath) if err != nil { - return nil, err + return walpb.Snapshot{}, err } - ss := snap.New(lg, datadir.ToSnapDir(dataDir)) - snapshot, err := ss.LoadNewestAvailable(walSnaps) - if err != nil && !errors.Is(err, snap.ErrNoSnapshot) { - return nil, err + if len(walSnaps) > 0 { + lastIdx := len(walSnaps) - 1 + return walSnaps[lastIdx], nil } - - return snapshot, nil + return walpb.Snapshot{}, nil } diff --git a/etcdutl/etcdutl/common_test.go b/etcdutl/etcdutl/common_test.go index e2acedfa2e73..3a27fbe96c35 100644 --- a/etcdutl/etcdutl/common_test.go +++ b/etcdutl/etcdutl/common_test.go @@ -67,35 +67,6 @@ func TestGetLatestWalSnap(t *testing.T) { }, expectedLatestWALSnap: walpb.Snapshot{Index: 35, Term: 5}, }, - { - name: "there are orphan snapshot records in wal file", - walSnaps: []walpb.Snapshot{ - {Index: 10, Term: 2}, - {Index: 20, Term: 3}, - {Index: 30, Term: 4}, - {Index: 45, Term: 5}, - {Index: 55, Term: 6}, - }, - snapshots: []raftpb.Snapshot{ - {Metadata: raftpb.SnapshotMetadata{Index: 10, Term: 2}}, - {Metadata: raftpb.SnapshotMetadata{Index: 20, Term: 3}}, - {Metadata: raftpb.SnapshotMetadata{Index: 30, Term: 4}}, - }, - expectedLatestWALSnap: walpb.Snapshot{Index: 30, Term: 4}, - }, - { - name: "wal snapshot records do not match the snapshot files at all", - walSnaps: []walpb.Snapshot{ - {Index: 10, Term: 2}, - {Index: 20, Term: 3}, - {Index: 30, Term: 4}, - }, - snapshots: []raftpb.Snapshot{ - {Metadata: raftpb.SnapshotMetadata{Index: 40, Term: 5}}, - {Metadata: raftpb.SnapshotMetadata{Index: 50, Term: 6}}, - }, - expectedLatestWALSnap: walpb.Snapshot{}, - }, } for _, tc := range testCases { @@ -137,7 +108,8 @@ func TestGetLatestWalSnap(t *testing.T) { walSnap, err := getLatestWALSnap(lg, dataDir) require.NoError(t, err) - require.Equal(t, tc.expectedLatestWALSnap, walSnap) + require.Equal(t, tc.expectedLatestWALSnap.Term, walSnap.Term) + require.Equal(t, tc.expectedLatestWALSnap.Index, walSnap.Index) }) } } diff --git a/server/etcdserver/bootstrap.go b/server/etcdserver/bootstrap.go index 4d9a9460ac10..f7fcf7edb49b 100644 --- a/server/etcdserver/bootstrap.go +++ b/server/etcdserver/bootstrap.go @@ -74,7 +74,7 @@ func bootstrap(cfg config.ServerConfig) (b *bootstrappedServer, err error) { } haveWAL := wal.Exist(cfg.WALDir()) - backend, err := bootstrapBackend(cfg, haveWAL, ss) + backend, err := bootstrapBackend(cfg, haveWAL) if err != nil { return nil, err } @@ -194,7 +194,7 @@ func bootstrapSnapshot(cfg config.ServerConfig) *snap.Snapshotter { return snap.New(cfg.Logger, cfg.SnapDir()) } -func bootstrapBackend(cfg config.ServerConfig, haveWAL bool, ss *snap.Snapshotter) (backend *bootstrappedBackend, err error) { +func bootstrapBackend(cfg config.ServerConfig, haveWAL bool) (backend *bootstrappedBackend, err error) { beExist := fileutil.Exist(cfg.BackendPath()) ci := cindex.NewConsistentIndex(nil) beHooks := serverstorage.NewBackendHooks(cfg.Logger, ci) @@ -217,7 +217,7 @@ func bootstrapBackend(cfg config.ServerConfig, haveWAL bool, ss *snap.Snapshotte // TODO(serathius): Implement schema setup in fresh storage var snapshot *raftpb.Snapshot if haveWAL { - snapshot, be, err = recoverSnapshot(cfg, be, beExist, beHooks, ci, ss) + snapshot, be, err = recoverSnapshot(cfg, be, beExist, beHooks, ci) if err != nil { return nil, err } @@ -376,26 +376,33 @@ func bootstrapClusterWithWAL(cfg config.ServerConfig, meta *snapshotMetadata) (* }, nil } -func recoverSnapshot(cfg config.ServerConfig, be backend.Backend, beExist bool, beHooks *serverstorage.BackendHooks, ci cindex.ConsistentIndexer, ss *snap.Snapshotter) (*raftpb.Snapshot, backend.Backend, error) { +func recoverSnapshot(cfg config.ServerConfig, be backend.Backend, beExist bool, beHooks *serverstorage.BackendHooks, ci cindex.ConsistentIndexer) (*raftpb.Snapshot, backend.Backend, error) { // Find a snapshot to start/restart a raft node walSnaps, err := wal.ValidSnapshotEntries(cfg.Logger, cfg.WALDir()) if err != nil { return nil, be, err } - // snapshot files can be orphaned if etcd crashes after writing them but before writing the corresponding - // bwal log entries - snapshot, err := ss.LoadNewestAvailable(walSnaps) - if err != nil && !errors.Is(err, snap.ErrNoSnapshot) { - return nil, be, err - } - if snapshot != nil { - cfg.Logger.Info( - "recovered v2 store from snapshot", + var snapshot *raftpb.Snapshot + if len(walSnaps) > 0 { + idx := len(walSnaps) - 1 + snapshot = &raftpb.Snapshot{ + Metadata: raftpb.SnapshotMetadata{ + Term: walSnaps[idx].Term, + Index: walSnaps[idx].Index, + }, + } + if walSnaps[idx].ConfState != nil { + snapshot.Metadata.ConfState = *walSnaps[idx].ConfState + } + cfg.Logger.Info("constructed a snapshot from WAL record", zap.Uint64("snapshot-index", snapshot.Metadata.Index), zap.String("snapshot-size", humanize.Bytes(uint64(snapshot.Size()))), + zap.String("confState", snapshot.Metadata.ConfState.String()), ) + } + if snapshot != nil { if be, err = serverstorage.RecoverSnapshotBackend(cfg, be, *snapshot, beExist, beHooks); err != nil { cfg.Logger.Panic("failed to recover v3 backend from snapshot", zap.Error(err)) } diff --git a/server/etcdserver/bootstrap_test.go b/server/etcdserver/bootstrap_test.go index 566c8fd73465..3d2bb8a9595a 100644 --- a/server/etcdserver/bootstrap_test.go +++ b/server/etcdserver/bootstrap_test.go @@ -190,8 +190,7 @@ func TestBootstrapBackend(t *testing.T) { } haveWAL := wal.Exist(cfg.WALDir()) - ss := snap.New(cfg.Logger, cfg.SnapDir()) - backend, err := bootstrapBackend(cfg, haveWAL, ss) + backend, err := bootstrapBackend(cfg, haveWAL) defer t.Cleanup(func() { backend.Close() }) From 0f6b2276446eb64fcc1991e12340f451e00a99ff Mon Sep 17 00:00:00 2001 From: Antonio Ojea Date: Thu, 8 Jan 2026 11:55:31 +0000 Subject: [PATCH 0729/1068] verify grpc experimental apis The GRPC community expressed their concern about a possible breakage on the etcd project when they switch or remove some of the experimental APIs. The GRPC community clearly express their contract around these APIs, however the etcd project has some features that build on that. As a norm we must not build on these kind of APIs, so we can set a linter to avoid this to happen again and run in each presubmit. Signed-off-by: Antonio Ojea --- Makefile | 6 +- bill-of-materials.json | 18 ++ go.mod | 3 + go.sum | 4 + scripts/verify_grpc_experimental.sh | 34 ++ tools/check-grpc-experimental/allowlist.txt | 21 ++ tools/check-grpc-experimental/doc.go | 16 + tools/check-grpc-experimental/main.go | 325 ++++++++++++++++++++ 8 files changed, 426 insertions(+), 1 deletion(-) create mode 100755 scripts/verify_grpc_experimental.sh create mode 100644 tools/check-grpc-experimental/allowlist.txt create mode 100644 tools/check-grpc-experimental/doc.go create mode 100644 tools/check-grpc-experimental/main.go diff --git a/Makefile b/Makefile index facdcf0ecbbb..805f25933ee1 100644 --- a/Makefile +++ b/Makefile @@ -99,7 +99,7 @@ fuzz: verify: verify-bom verify-lint verify-dep verify-shellcheck verify-mod-tidy \ verify-shellws verify-proto-annotations verify-genproto verify-yamllint \ verify-markdown-marker verify-go-versions verify-gomodguard \ - verify-go-workspace + verify-go-workspace verify-grpc-experimental .PHONY: fix fix: fix-mod-tidy fix-bom fix-lint fix-yamllint sync-toolchain-directive \ @@ -224,6 +224,10 @@ verify-gomodguard: verify-go-workspace: PASSES="go_workspace" ./scripts/test.sh +.PHONY: verify-grpc-experimental +verify-grpc-experimental: + ./scripts/verify_grpc_experimental.sh + .PHONY: sync-toolchain-directive sync-toolchain-directive: ./scripts/sync_go_toolchain_directive.sh diff --git a/bill-of-materials.json b/bill-of-materials.json index 5ee8a1bc3f0f..def6614cbe01 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -723,6 +723,15 @@ } ] }, + { + "project": "golang.org/x/mod/semver", + "licenses": [ + { + "type": "BSD 3-clause \"New\" or \"Revised\" License", + "confidence": 0.9663865546218487 + } + ] + }, { "project": "golang.org/x/net", "licenses": [ @@ -768,6 +777,15 @@ } ] }, + { + "project": "golang.org/x/tools", + "licenses": [ + { + "type": "BSD 3-clause \"New\" or \"Revised\" License", + "confidence": 0.9663865546218487 + } + ] + }, { "project": "google.golang.org/genproto/googleapis/api", "licenses": [ diff --git a/go.mod b/go.mod index 413fa5fb3462..f73c49ef97d6 100644 --- a/go.mod +++ b/go.mod @@ -35,6 +35,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 + golang.org/x/tools v0.40.0 google.golang.org/grpc v1.78.0 google.golang.org/protobuf v1.36.11 ) @@ -97,7 +98,9 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.46.0 // indirect + golang.org/x/mod v0.31.0 // indirect golang.org/x/net v0.48.0 // indirect + golang.org/x/sync v0.19.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect diff --git a/go.sum b/go.sum index 21f289202f4f..2577322f9e58 100644 --- a/go.sum +++ b/go.sum @@ -200,6 +200,8 @@ golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvx golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI= +golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -242,6 +244,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA= +golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/scripts/verify_grpc_experimental.sh b/scripts/verify_grpc_experimental.sh new file mode 100755 index 000000000000..92ee47bad1b7 --- /dev/null +++ b/scripts/verify_grpc_experimental.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +set -e + +# Ensure we are at the root of the repo +ROOT_DIR=$(git rev-parse --show-toplevel) +cd "${ROOT_DIR}" + +source ./scripts/test_lib.sh + +TOOL_SRC="${ETCD_ROOT_DIR}/tools/check-grpc-experimental" +ALLOWLIST="${TOOL_SRC}/allowlist.txt" + +FAILURES=0 + +for MOD_DIR in $(module_dirs); do + echo "------------------------------------------------" + echo "Checking module: ${MOD_DIR}" + pushd "${MOD_DIR}" > /dev/null + if ! go run "${TOOL_SRC}" -allow-list="${ALLOWLIST}" ./...; then + echo "ERROR: Experimental usage found in ${MOD_DIR}" + FAILURES=$((FAILURES+1)) + fi + popd > /dev/null +done + +echo "------------------------------------------------" +if [ "$FAILURES" -eq 0 ]; then + echo "SUCCESS: No experimental gRPC APIs found in any module." + exit 0 +else + echo "FAILURE: Found experimental gRPC API usage in ${FAILURES} module(s)." + exit 1 +fi \ No newline at end of file diff --git a/tools/check-grpc-experimental/allowlist.txt b/tools/check-grpc-experimental/allowlist.txt new file mode 100644 index 000000000000..6c4b395db0d2 --- /dev/null +++ b/tools/check-grpc-experimental/allowlist.txt @@ -0,0 +1,21 @@ +# Allowlist for experimental gRPC APIs +# Format: PackageName.Symbol +# Remove items from this list as they are migrated or stabilized. + +grpc.NewContextWithServerTransportStream +grpc.ServeHTTP +grpc.WithResolvers +resolver.Address +resolver.BuildOptions +resolver.Builder +resolver.ClientConn +resolver.Endpoint +resolver.ParseServiceConfig +resolver.ResolveNowOptions +resolver.Resolver +resolver.State +resolver.Target +resolver.URL +resolver.UpdateState +serviceconfig.Err +serviceconfig.ParseResult diff --git a/tools/check-grpc-experimental/doc.go b/tools/check-grpc-experimental/doc.go new file mode 100644 index 000000000000..b1f4273b393e --- /dev/null +++ b/tools/check-grpc-experimental/doc.go @@ -0,0 +1,16 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// check-grpc-experimental checks for experimental gRPC APIs in etcd. +package main diff --git a/tools/check-grpc-experimental/main.go b/tools/check-grpc-experimental/main.go new file mode 100644 index 000000000000..a41c79e6f2f8 --- /dev/null +++ b/tools/check-grpc-experimental/main.go @@ -0,0 +1,325 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package main + +import ( + "bufio" + "flag" + "fmt" + "go/ast" + "go/parser" + "go/token" + "go/types" + "log" + "os" + "path/filepath" + "regexp" + "strings" + "sync" + + "golang.org/x/tools/go/packages" +) + +var ( + debugMode = flag.Bool("debug", false, "enable verbose debug logging") + allowListFile = flag.String("allow-list", "", "path to a file containing allowed APIs (one per line)") +) + +// Map to store allowed signatures (e.g., "grpc.WithResolvers" -> true) +var allowList = make(map[string]bool) + +func main() { + flag.Parse() + patterns := flag.Args() + if len(patterns) == 0 { + patterns = []string{"./..."} + } + + if *allowListFile != "" { + if err := loadAllowList(*allowListFile); err != nil { + log.Fatalf("Failed to load allow list: %v", err) + } + } + + // Load source with type info. + cfg := &packages.Config{ + Mode: packages.NeedName | packages.NeedFiles | packages.NeedSyntax | packages.NeedTypes | packages.NeedTypesInfo | packages.NeedImports | packages.NeedDeps, + Tests: true, + } + + if *debugMode { + log.Println("Loading packages...") + } + + pkgs, err := packages.Load(cfg, patterns...) + if err != nil { + log.Fatalf("failed to load packages: %v", err) + } + if n := packages.PrintErrors(pkgs); n > 0 { + os.Exit(1) + } + + if *debugMode { + log.Printf("Loaded %d packages. Scanning for gRPC usage...", len(pkgs)) + } + + foundExperimental := false + + for _, pkg := range pkgs { + for _, file := range pkg.Syntax { + ast.Inspect(file, func(n ast.Node) bool { + sel, ok := n.(*ast.SelectorExpr) + if !ok { + return true + } + + obj := pkg.TypesInfo.Uses[sel.Sel] + if obj == nil || obj.Pkg() == nil { + return true + } + + // Strict filter for gRPC + if !strings.Contains(obj.Pkg().Path(), "google.golang.org/grpc") { + return true + } + + // Check Allowlist + // Construct the signature: PackageName.Symbol (e.g. "grpc.WithResolvers", "resolver.Address") + signature := obj.Pkg().Name() + "." + obj.Name() + if allowList[signature] { + if *debugMode { + log.Printf("Ignoring allowed usage: %s", signature) + } + return true + } + + if *debugMode { + log.Printf("Checking reference: %s", signature) + } + + if isExperimental(pkg.Fset, obj) { + pos := pkg.Fset.Position(sel.Pos()) + fmt.Printf("%s:%d:%d: usage of experimental gRPC API: %s\n", + pos.Filename, pos.Line, pos.Column, signature) + foundExperimental = true + } + + return true + }) + } + } + + if foundExperimental { + os.Exit(1) + } +} + +var ( + experimentalRegex = regexp.MustCompile(`(?i)(#\s*Experimental|All APIs in this package are experimental|This API is EXPERIMENTAL|is currently experimental)`) +) + +func loadAllowList(fpath string) error { + f, err := os.Open(fpath) + if err != nil { + return err + } + defer f.Close() + + scanner := bufio.NewScanner(f) + for scanner.Scan() { + line := strings.TrimSpace(scanner.Text()) + if line == "" || strings.HasPrefix(line, "#") { + continue + } + allowList[line] = true + } + return scanner.Err() +} + +func isExperimental(mainFset *token.FileSet, obj types.Object) bool { + pos := obj.Pos() + if !pos.IsValid() { + return false + } + + // Get the absolute path to the dependency file + position := mainFset.Position(pos) + filename := position.Filename + + // Skip if it's not a Go file (e.g. built-in types might have no file) + if !strings.HasSuffix(filename, ".go") { + return false + } + + if *debugMode { + // Log checking definition + log.Printf(" -> Definition found at: %s:%d", filename, position.Line) + } + + return checkFileForExperimental(filename, position.Line) +} + +// Cached file structure +type cachedFile struct { + f *ast.File + fset *token.FileSet + src []byte + hasDocs bool +} + +var ( + cacheMu sync.RWMutex + advancedCache = make(map[string]*cachedFile) +) + +func getParsedFile(filename string) (*cachedFile, error) { + cacheMu.RLock() + if v, ok := advancedCache[filename]; ok { + cacheMu.RUnlock() + return v, nil + } + cacheMu.RUnlock() + + // Parse the file + fset := token.NewFileSet() + // We read the file content manually to help with debugging if needed + src, err := os.ReadFile(filename) + if err != nil { + if *debugMode { + log.Printf("ERROR reading file %s: %v", filename, err) + } + return nil, err + } + + f, err := parser.ParseFile(fset, filename, src, parser.ParseComments|parser.SkipObjectResolution) + if err != nil { + return nil, err + } + + res := &cachedFile{f: f, fset: fset, src: src, hasDocs: f.Doc != nil} + + cacheMu.Lock() + advancedCache[filename] = res + cacheMu.Unlock() + + return res, nil +} + +func checkFileForExperimental(filename string, targetLine int) bool { + cf, err := getParsedFile(filename) + if err != nil { + return false + } + + // check package-level comments + if cf.f.Doc != nil { + if experimentalRegex.MatchString(cf.f.Doc.Text()) { + if *debugMode { + log.Printf(" -> [MATCH] Package experimental (doc in file): %s", filename) + } + return true + } + } + + // check package-level comment in doc.go + // If the current file didn't have the experimental tag, check if a doc.go exists in the same folder + dir := filepath.Dir(filename) + docPath := filepath.Join(dir, "doc.go") + // Only check doc.go if we aren't already looking at it + if docPath != filename { + if docContent, err := os.ReadFile(docPath); err == nil { + if experimentalRegex.Match(docContent) { + if *debugMode { + log.Printf(" -> [MATCH] Package experimental (found in doc.go): %s", docPath) + } + return true + } + } + } + + // check specific object comments + found := false + + ast.Inspect(cf.f, func(n ast.Node) bool { + if found { + return false + } + if n == nil { + return true + } + + // Helper to check a comment group + checkDoc := func(doc *ast.CommentGroup, name string) { + if doc != nil && experimentalRegex.MatchString(doc.Text()) { + found = true + if *debugMode { + log.Printf(" -> [MATCH] Object experimental: %s", name) + } + } + } + + switch decl := n.(type) { + case *ast.FuncDecl: + // Match if the target line is within the function declaration lines + // Actually, we want the definition line exactly, or close to it. + start := cf.fset.Position(decl.Pos()).Line + // The object.Pos() points to the name, not the 'func' keyword, usually. + namePos := cf.fset.Position(decl.Name.Pos()).Line + + if namePos == targetLine || start == targetLine { + checkDoc(decl.Doc, decl.Name.Name) + } + + case *ast.GenDecl: + // GenDecl covers `type X struct`, `var X`, `const X` + // The GenDecl doc applies to all specs inside it usually. + + // If the GenDecl itself starts on the line (e.g. `type ( ...`) + // or if it contains our line. + start := cf.fset.Position(decl.Pos()).Line + end := cf.fset.Position(decl.End()).Line + + if targetLine >= start && targetLine <= end { + // Check the top-level GenDecl doc (e.g. "// Experimental\n var ( ... )") + if decl.Doc != nil && experimentalRegex.MatchString(decl.Doc.Text()) { + found = true + if *debugMode { + log.Printf(" -> [MATCH] GenDecl experimental block around line %d", targetLine) + } + return false + } + + // Check individual specs + for _, spec := range decl.Specs { + switch s := spec.(type) { + case *ast.TypeSpec: + if cf.fset.Position(s.Name.Pos()).Line == targetLine { + checkDoc(s.Doc, s.Name.Name) + } + case *ast.ValueSpec: // var/const + for _, name := range s.Names { + if cf.fset.Position(name.Pos()).Line == targetLine { + checkDoc(s.Doc, name.Name) + } + } + } + } + } + } + return true + }) + + return found +} From e61302a4ba24ab123211807b1b60c1d2065ff9c6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jan 2026 21:33:28 +0000 Subject: [PATCH 0730/1068] build(deps): bump github/codeql-action from 4.31.9 to 4.31.10 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.9 to 4.31.10. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/5d4e8d1aca955e8d8589aabd499c5cae939e33c7...cdefb33c0f6224e58673d9004f47f7cb3e328b89) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.31.10 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 2897539fabe4..f380bd5b19d0 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 + uses: github/codeql-action/init@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 + uses: github/codeql-action/autobuild@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 + uses: github/codeql-action/analyze@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 98032f46ffda..6c977ef51398 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 + uses: github/codeql-action/upload-sarif@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 with: sarif_file: results.sarif From 7656c8a4bc2e28c0e672463578591060774a0fb8 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 8 Jan 2026 10:54:49 -0800 Subject: [PATCH 0731/1068] Simplify running tests * Remove iteration over packages; with the Go workspace, we don't need to iterate. * Replace `KEEP_GOING_TESTS` behavior by using the Go `-failfast` test flag. Signed-off-by: Ivan Valdes --- scripts/test.sh | 43 +++++++++++++++++++++---------------------- scripts/test_lib.sh | 40 ++++++---------------------------------- 2 files changed, 27 insertions(+), 56 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index d2d866d33114..6e7fab0efb1f 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -128,6 +128,7 @@ function build_pass { function unit_pass { run_for_all_workspace_modules \ run_go_tests -short \ + -failfast \ -timeout="${TIMEOUT:-3m}" \ "${COMMON_TEST_FLAGS[@]}" \ "${RUN_ARG[@]}" \ @@ -136,12 +137,11 @@ function unit_pass { function integration_extra { if [ -z "${PKG}" ] ; then - KEEP_GOING_TESTS=true \ - run_go_tests_expanding_packages ./tests/integration/v2store/... \ - -timeout="${TIMEOUT:-5m}" \ - "${COMMON_TEST_FLAGS[@]}" \ - "${RUN_ARG[@]}" \ - "$@" + run_go_tests_expanding_packages ./tests/integration/v2store/... \ + -timeout="${TIMEOUT:-5m}" \ + "${COMMON_TEST_FLAGS[@]}" \ + "${RUN_ARG[@]}" \ + "$@" else log_warning "integration_extra ignored when PKG is specified" fi @@ -150,6 +150,7 @@ function integration_extra { function integration_pass { run_go_tests ./tests/integration/... \ -p=2 \ + -failfast \ -timeout="${TIMEOUT:-15m}" \ "${COMMON_TEST_FLAGS[@]}" \ "${RUN_ARG[@]}" \ @@ -157,6 +158,7 @@ function integration_pass { run_go_tests ./tests/common/... \ -p=2 \ + -failfast \ -tags=integration \ -timeout="${TIMEOUT:-15m}" \ "${COMMON_TEST_FLAGS[@]}" \ @@ -168,26 +170,23 @@ function integration_pass { function e2e_pass { # e2e tests are running pre-build binary. Settings like --race,-cover,-cpu do not have any impact. - KEEP_GOING_TESTS=true \ - run_go_tests_expanding_packages ./tests/e2e/... \ - -timeout="${TIMEOUT:-30m}" \ - "${RUN_ARG[@]}" \ - "$@" - KEEP_GOING_TESTS=true \ - run_go_tests_expanding_packages ./tests/common/... \ - -tags=e2e \ - -timeout="${TIMEOUT:-30m}" \ - "${RUN_ARG[@]}" \ - "$@" + run_go_tests_expanding_packages ./tests/e2e/... \ + -timeout="${TIMEOUT:-30m}" \ + "${RUN_ARG[@]}" \ + "$@" + run_go_tests_expanding_packages ./tests/common/... \ + -tags=e2e \ + -timeout="${TIMEOUT:-30m}" \ + "${RUN_ARG[@]}" \ + "$@" } function robustness_pass { # e2e tests are running pre-build binary. Settings like --race,-cover,-cpu does not have any impact. - KEEP_GOING_TESTS=true \ - run_go_tests ./tests/robustness \ - -timeout="${TIMEOUT:-30m}" \ - "${RUN_ARG[@]}" \ - "$@" + run_go_tests ./tests/robustness \ + -timeout="${TIMEOUT:-30m}" \ + "${RUN_ARG[@]}" \ + "$@" } function integration_e2e_pass { diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index 7af7c7037899..2b006a0d839f 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -372,10 +372,6 @@ function run_go_tests_expanding_packages { # run_go_test [arguments to pass to go test] # The following environment variables affect how the tests run: -# - KEEP_GOING_TESTS: If set to true it will keep executing tests even after -# a failure. It collects all failures and reports them at -# the end, if there are failures the return code is 2. -# Defaults to false. # - JUNIT_REPORT_DIR/ARTIFACTS: Enables collecting JUnit XML reports. # - VERBOSE: Sets a verbose output. # @@ -386,18 +382,6 @@ function run_go_tests_expanding_packages { function run_go_tests { local go_test_flags=() - local packages=() - local args=() - for arg in "$@"; do - if [[ "${arg}" =~ ^\./ || "${arg}" =~ ^go\.etcd\.io/etcd ]]; then - packages+=("${arg}") - else - args+=("${arg}") - fi - done - - local keep_going=${KEEP_GOING_TESTS:-false} - # If JUNIT_REPORT_DIR is unset, and ARTIFACTS is set, then have them match. local junit_report_dir=${JUNIT_REPORT_DIR:-${ARTIFACTS:-}} @@ -411,29 +395,17 @@ function run_go_tests { go_test_flags+=("-v" "-json") fi - local failures=() - # execution of tests against packages: - for pkg in "${packages[@]}"; do - local cmd=(go test "${go_test_flags[@]}" "${pkg}" "${args[@]}") + local cmd=(go test "${go_test_flags[@]}" "$@") - local junit_filename_prefix - junit_filename_prefix=$(get_junit_filename_prefix "${junit_report_dir}") + local junit_filename_prefix + junit_filename_prefix=$(get_junit_filename_prefix "${junit_report_dir}") - if ! run env ETCD_VERIFY="${ETCD_VERIFY}" "${cmd[@]}" | tee ${junit_filename_prefix:+"${junit_filename_prefix}.stdout"} | grep --binary-files=text "${go_test_grep_pattern}" ; then - if [ "${keep_going}" = "true" ]; then - failures+=("${pkg}") - else - produce_junit_xmlreport "${junit_filename_prefix}" - return 2 - fi - fi + if ! run env ETCD_VERIFY="${ETCD_VERIFY}" "${cmd[@]}" | tee ${junit_filename_prefix:+"${junit_filename_prefix}.stdout"} | grep --binary-files=text "${go_test_grep_pattern}" ; then produce_junit_xmlreport "${junit_filename_prefix}" - done - - if [ -n "${failures[*]}" ]; then - log_error -e "FAIL: Tests for following packages failed:\\n ${failures[*]}" return 2 fi + + produce_junit_xmlreport "${junit_filename_prefix}" } #### Other #### From 747c47c3eea9328066a94526c68a6d242a4aff7b Mon Sep 17 00:00:00 2001 From: hwdef Date: Tue, 13 Jan 2026 12:23:47 +0800 Subject: [PATCH 0732/1068] fix: align stale workflow inputs with actions/stale v10 Signed-off-by: hwdef --- .github/workflows/stale.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index 36d516e78d32..055adc80b9f1 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -15,14 +15,14 @@ jobs: steps: - uses: actions/stale@997185467fa4f803885201cee163a9f38240193d #v10.1.1 with: - days-until-stale: 90 - days-until-close: 21 + days-before-stale: 90 + days-before-close: 21 stale-issue-label: 'stale' stale-pr-label: 'stale' - exempt-labels: 'stage/tracked,help wanted' - exempt-projects: false - exempt-milestones: false - exempt-assignees: false + exempt-issue-labels: 'stage/tracked,help wanted' + exempt-pr-labels: 'stage/tracked,help wanted' + exempt-milestones: '' + exempt-assignees: '' stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed after 21 days if no further activity occurs. Thank you for your contributions.' stale-pr-message: 'This pull request has been automatically marked as stale because it has not had recent activity. It will be closed after 21 days if no further activity occurs. Thank you for your contributions.' close-issue-message: '' From 2d76312d76d0aac0790cfcd7e544c05b3b791d92 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Mon, 17 Nov 2025 16:56:50 +0000 Subject: [PATCH 0733/1068] Update release guide to include the step of bump etcd for K8s Signed-off-by: Benjamin Wang --- Documentation/contributor-guide/release.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/contributor-guide/release.md b/Documentation/contributor-guide/release.md index a0d90a41e3a6..db315226e6d2 100644 --- a/Documentation/contributor-guide/release.md +++ b/Documentation/contributor-guide/release.md @@ -132,6 +132,10 @@ On the day of the release: 8. Raise a follow-up `kubernetes/org` pull request to return the GitHub release team to empty, least privilege state. 9. Crease a new stable branch through `git push origin release-${VERSION_MAJOR}.${VERSION_MINOR}` if this is a new major or minor stable release. 10. Re-generate a new password for quay.io if needed (e.g. shared to a contributor who isn't in the release team, and we should rotate the password at least once every 3 months). +11. Bump the new etcd release in Kubernetes, refer to [Bump etcd Version in Kubernetes](bump_etcd_version_k8s.md). + +- For etcd 3.6 patches, bump it to Kubernetes 1.34 and all newer minor versions (including `master` branch) +- For etcd 3.5 patches, bump it to Kubernetes 1.33 and all older supported versions #### Release known issues From 31f560663e9ccb6344fb2101d5a6257b41033e64 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sun, 4 Jan 2026 01:44:19 +0900 Subject: [PATCH 0734/1068] robustness: remove openWatchPeriodically and implement RunWatchLoop for etcd traffic Signed-off-by: Marek Siarkowicz Signed-off-by: Chun-Hung Tseng --- .../test-template/robustness/traffic/main.go | 49 ++++++-- tests/robustness/client/watch.go | 53 +-------- tests/robustness/main_test.go | 12 +- tests/robustness/options/options.go | 2 +- tests/robustness/traffic/etcd.go | 5 +- tests/robustness/traffic/traffic.go | 108 +++++++++++++++--- 6 files changed, 145 insertions(+), 84 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 5b5fb26dd19c..1ee02ca483a2 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -39,6 +39,9 @@ import ( ) var ( + DefaultWatchInterval = 100 * time.Millisecond + DefaultRevisionOffset = int64(100) + profile = traffic.Profile{ MinimalQPS: 100, MaximalQPS: 1000, @@ -46,9 +49,9 @@ var ( MemberClientCount: 3, ClusterClientCount: 1, MaxNonUniqueRequestConcurrency: 3, - BackgroundWatchConfig: options.BackgroundWatchConfig{ - Interval: 0, - RevisionOffset: 0, + WatchConfig: options.WatchConfig{ + Interval: DefaultWatchInterval, + RevisionOffset: DefaultRevisionOffset, }, } trafficNames = []string{ @@ -116,12 +119,12 @@ func runTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, hosts [ defer watchSet.Close() g.Go(func() error { err := client.CollectClusterWatchEvents(ctx, client.CollectClusterWatchEventsParam{ - Lg: lg, - Endpoints: hosts, - MaxRevisionChan: maxRevisionChan, - Cfg: watchConfig, - ClientSet: watchSet, - BackgroundWatchConfig: profile.BackgroundWatchConfig, + Lg: lg, + Endpoints: hosts, + MaxRevisionChan: maxRevisionChan, + Cfg: watchConfig, + ClientSet: watchSet, + WatchConfig: profile.WatchConfig, }) return err }) @@ -182,6 +185,34 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl }) }(c) } + for i := range profile.MemberClientCount { + c := connect(clientSet, []string{hosts[i%len(hosts)]}) + wg.Add(1) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ + Client: c, + KeyStore: keyStore, + Finish: finish, + WatchConfig: profile.WatchConfig, + }) + }(c) + } + for range profile.ClusterClientCount { + c := connect(clientSet, hosts) + wg.Add(1) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ + Client: c, + KeyStore: keyStore, + Finish: finish, + WatchConfig: profile.WatchConfig, + }) + }(c) + } wg.Add(1) compactClient := connect(clientSet, hosts) go func(c *client.RecordingClient) { diff --git a/tests/robustness/client/watch.go b/tests/robustness/client/watch.go index 63a0f261b0ea..8883b78c10f8 100644 --- a/tests/robustness/client/watch.go +++ b/tests/robustness/client/watch.go @@ -18,7 +18,6 @@ import ( "context" "errors" "fmt" - "time" "go.uber.org/zap" "golang.org/x/sync/errgroup" @@ -32,7 +31,7 @@ type CollectClusterWatchEventsParam struct { MaxRevisionChan <-chan int64 Cfg WatchConfig ClientSet *ClientSet - options.BackgroundWatchConfig + options.WatchConfig } func CollectClusterWatchEvents(ctx context.Context, param CollectClusterWatchEventsParam) error { @@ -50,29 +49,14 @@ func CollectClusterWatchEvents(ctx context.Context, param CollectClusterWatchEve return watchUntilRevision(ctx, param.Lg, c, memberMaxRevisionChan, param.Cfg) }) } - finish := make(chan struct{}) g.Go(func() error { maxRevision := <-param.MaxRevisionChan for _, memberChan := range memberMaxRevisionChans { memberChan <- maxRevision } - close(finish) return nil }) - if param.BackgroundWatchConfig.Interval > 0 { - for _, endpoint := range param.Endpoints { - g.Go(func() error { - c, err := param.ClientSet.NewClient([]string{endpoint}) - if err != nil { - return err - } - defer c.Close() - return openWatchPeriodically(ctx, &g, c, param.BackgroundWatchConfig, finish) - }) - } - } - return g.Wait() } @@ -144,38 +128,3 @@ resetWatch: } } } - -func openWatchPeriodically(ctx context.Context, g *errgroup.Group, c *RecordingClient, backgroundWatchConfig options.BackgroundWatchConfig, finish <-chan struct{}) error { - for { - select { - case <-ctx.Done(): - return ctx.Err() - case <-finish: - return nil - case <-time.After(backgroundWatchConfig.Interval): - } - g.Go(func() error { - resp, err := c.Get(ctx, "/key") - if err != nil { - return err - } - rev := resp.Header.Revision + backgroundWatchConfig.RevisionOffset - - watchCtx, cancel := context.WithCancel(ctx) - defer cancel() - w := c.Watch(watchCtx, "", rev, true, true, true) - for { - select { - case <-ctx.Done(): - return ctx.Err() - case <-finish: - return nil - case _, ok := <-w: - if !ok { - return nil - } - } - } - }) - } -} diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index affc2348018e..74fc7c5525ff 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -168,12 +168,12 @@ func runScenario(ctx context.Context, t *testing.T, s scenarios.TestScenario, lg g.Go(func() error { endpoints := processEndpoints(clus) err := client.CollectClusterWatchEvents(ctx, client.CollectClusterWatchEventsParam{ - Lg: lg, - Endpoints: endpoints, - MaxRevisionChan: maxRevisionChan, - Cfg: s.Watch, - ClientSet: watchSet, - BackgroundWatchConfig: s.Profile.BackgroundWatchConfig, + Lg: lg, + Endpoints: endpoints, + MaxRevisionChan: maxRevisionChan, + Cfg: s.Watch, + ClientSet: watchSet, + WatchConfig: s.Profile.WatchConfig, }) return err }) diff --git a/tests/robustness/options/options.go b/tests/robustness/options/options.go index 7e97cc7d85bf..b352930d3c5f 100644 --- a/tests/robustness/options/options.go +++ b/tests/robustness/options/options.go @@ -16,7 +16,7 @@ package options import "time" -type BackgroundWatchConfig struct { +type WatchConfig struct { Interval time.Duration RevisionOffset int64 } diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index a3ad2c2a67da..92c043a8fddf 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -157,7 +157,10 @@ func (t etcdTraffic) RunKeyValueLoop(ctx context.Context, p RunTrafficLoopParam) } func (t etcdTraffic) RunWatchLoop(ctx context.Context, p RunWatchLoopParam) { - // TODO: implement in a subsequent commit + runWatchLoop(ctx, p, watchLoopConfig{ + getKey: "", + watchKey: p.KeyStore.GetPrefix(), + }) } func (t etcdTraffic) RunCompactLoop(ctx context.Context, param RunCompactLoopParam) { diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index a876e14342fe..a7db41c03ac5 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -39,6 +39,8 @@ var ( WatchTimeout = time.Second MultiOpTxnOpCount = 4 DefaultCompactionPeriod = 200 * time.Millisecond + DefaultWatchInterval = 100 * time.Millisecond + DefaultRevisionOffset = int64(100) LowTraffic = Profile{ MinimalQPS: 100, @@ -47,6 +49,10 @@ var ( MemberClientCount: 6, ClusterClientCount: 2, MaxNonUniqueRequestConcurrency: 3, + WatchConfig: options.WatchConfig{ + Interval: DefaultWatchInterval, + RevisionOffset: DefaultRevisionOffset, + }, } HighTrafficProfile = Profile{ MinimalQPS: 100, @@ -55,6 +61,10 @@ var ( MemberClientCount: 6, ClusterClientCount: 2, MaxNonUniqueRequestConcurrency: 3, + WatchConfig: options.WatchConfig{ + Interval: DefaultWatchInterval, + RevisionOffset: DefaultRevisionOffset, + }, } ) @@ -116,6 +126,36 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 }) }(c) } + for i := range profile.MemberClientCount { + wg.Add(1) + c, nerr := clientSet.NewClient([]string{endpoints[i%len(endpoints)]}) + require.NoError(t, nerr) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + traffic.RunWatchLoop(ctx, RunWatchLoopParam{ + Client: c, + KeyStore: keyStore, + Finish: finish, + WatchConfig: profile.WatchConfig, + }) + }(c) + } + for range profile.ClusterClientCount { + wg.Add(1) + c, nerr := clientSet.NewClient(endpoints) + require.NoError(t, nerr) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + traffic.RunWatchLoop(ctx, RunWatchLoopParam{ + Client: c, + KeyStore: keyStore, + Finish: finish, + WatchConfig: profile.WatchConfig, + }) + }(c) + } if !profile.ForbidCompaction { wg.Add(1) c, nerr := clientSet.NewClient(endpoints) @@ -296,7 +336,7 @@ type Profile struct { ClusterClientCount int ForbidCompaction bool CompactPeriod time.Duration - options.BackgroundWatchConfig + options.WatchConfig } func (p Profile) WithoutCompaction() Profile { @@ -309,13 +349,13 @@ func (p Profile) WithCompactionPeriod(cp time.Duration) Profile { return p } -func (p Profile) WithBackgroundWatchConfigInterval(interval time.Duration) Profile { - p.BackgroundWatchConfig.Interval = interval +func (p Profile) WithWatchInterval(interval time.Duration) Profile { + p.Interval = interval return p } -func (p Profile) WithBackgroundWatchConfigRevisionOffset(offset int64) Profile { - p.BackgroundWatchConfig.RevisionOffset = offset +func (p Profile) WithWatchRevisionOffset(offset int64) Profile { + p.RevisionOffset = offset return p } @@ -336,18 +376,12 @@ type RunCompactLoopParam struct { } type RunWatchLoopParam struct { - Client *client.RecordingClient - KeyStore *keyStore - Finish <-chan struct{} - RevisionOffset int64 // Random offset range: -RevisionOffset <= offset <= RevisionOffset - WatchQPS float64 // QPS limit for watch requests + Client *client.RecordingClient + KeyStore *keyStore + Finish <-chan struct{} + options.WatchConfig // Embedded: Interval and RevisionOffset } -const ( - DefaultWatchQPS = 10.0 - DefaultRevisionOffset = 100 -) - type Traffic interface { RunKeyValueLoop(ctx context.Context, param RunTrafficLoopParam) RunWatchLoop(ctx context.Context, param RunWatchLoopParam) @@ -355,6 +389,50 @@ type Traffic interface { ExpectUniqueRevision() bool } +// runWatchLoop is a helper function that implements the periodic watch loop pattern. +// It spawns watches at regular intervals with random revision offsets. +func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) { + for { + select { + case <-ctx.Done(): + return + case <-p.Finish: + return + case <-time.After(p.Interval): + // Time to spawn a new watch + } + + go func() error { + resp, err := p.Client.Get(ctx, cfg.watchKey) + if err != nil { + return err + } + rev := resp.Header.Revision + p.RevisionOffset + + watchCtx, cancel := context.WithCancel(ctx) + defer cancel() + w := p.Client.Watch(watchCtx, cfg.watchKey, rev, true, true, true) + for { + select { + case <-ctx.Done(): + return ctx.Err() + case <-p.Finish: + return nil + case _, ok := <-w: + if !ok { + return nil + } + } + } + }() + } +} + +type watchLoopConfig struct { + getKey string + watchKey string +} + func CheckEmptyDatabaseAtStart(ctx context.Context, lg *zap.Logger, endpoints []string, cs *client.ClientSet) error { c, err := cs.NewClient(endpoints) if err != nil { From 71c634ec0599458d54486efb1fdb910933ee3d04 Mon Sep 17 00:00:00 2001 From: Zhijun Date: Wed, 14 Jan 2026 20:01:42 +0800 Subject: [PATCH 0735/1068] Migrate TestV3LeaseRequireLeader into TestV3LeaseKeepAliveForwardingCatchError Signed-off-by: Zhijun Use 3-node cluster Signed-off-by: Zhijun Use smart math Co-authored-by: Marek Siarkowicz --- tests/integration/v3_lease_test.go | 69 +++++++++++------------------- 1 file changed, 26 insertions(+), 43 deletions(-) diff --git a/tests/integration/v3_lease_test.go b/tests/integration/v3_lease_test.go index 216bde663a64..a6f6bd4bb6f6 100644 --- a/tests/integration/v3_lease_test.go +++ b/tests/integration/v3_lease_test.go @@ -326,7 +326,8 @@ func TestV3LeaseKeepAliveForwardingCatchError(t *testing.T) { sleepDuration := 8 * time.Second t.Run("forwarding succeeds", func(t *testing.T) { - leaderClient, follower := setupLeaseForwardingCluster(t) + leader, follower, _ := setupLeaseForwardingCluster(t) + leaderClient := integration.ToGRPC(leader.Client).Lease grantResp, err := leaderClient.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) require.NoError(t, err) @@ -345,7 +346,8 @@ func TestV3LeaseKeepAliveForwardingCatchError(t *testing.T) { // Shows current behavior: client cancel during forwarding incorrectly returns Unavailable. t.Run("client cancels while forwarding", func(t *testing.T) { - leaderClient, follower := setupLeaseForwardingCluster(t) + leader, follower, _ := setupLeaseForwardingCluster(t) + leaderClient := integration.ToGRPC(leader.Client).Lease grantResp, err := leaderClient.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) require.NoError(t, err) @@ -383,7 +385,8 @@ func TestV3LeaseKeepAliveForwardingCatchError(t *testing.T) { }) t.Run("forwarding times out", func(t *testing.T) { - leaderClient, follower := setupLeaseForwardingCluster(t) + leader, follower, _ := setupLeaseForwardingCluster(t) + leaderClient := integration.ToGRPC(leader.Client).Lease grantResp, err := leaderClient.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) require.NoError(t, err) @@ -409,16 +412,33 @@ func TestV3LeaseKeepAliveForwardingCatchError(t *testing.T) { return getLeaseKeepAliveMetric(t, follower, "Unavailable") == prevUnavailableCount+1 }, 3*time.Second, 100*time.Millisecond) }) + + // Client set up with WithRequireLeader() will receive NoLeader error right after + // monitorLeader() detects leader missing and cancels the server stream with ErrGRPCNoLeader. + t.Run("catches NoLeader error with WithRequireLeader", func(t *testing.T) { + leader, follower, anotherFollower := setupLeaseForwardingCluster(t) + followerClient := integration.ToGRPC(follower.Client).Lease + + prevUnavailableCount := getLeaseKeepAliveMetric(t, follower, "Unavailable") + leader.Stop(t) + anotherFollower.Stop(t) + + keepAliveClient, err := followerClient.LeaseKeepAlive(clientv3.WithRequireLeader(t.Context())) + require.NoError(t, err) + + _, err = keepAliveClient.Recv() + require.Equal(t, rpctypes.ErrGRPCNoLeader, err) + require.Equal(t, prevUnavailableCount+1, getLeaseKeepAliveMetric(t, follower, "Unavailable")) + }) } -func setupLeaseForwardingCluster(t *testing.T) (pb.LeaseClient, *integration.Member) { +func setupLeaseForwardingCluster(t *testing.T) (*integration.Member, *integration.Member, *integration.Member) { t.Helper() cluster := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) t.Cleanup(func() { cluster.Terminate(t) }) leaderIdx := cluster.WaitLeader(t) - followerIdx := (leaderIdx + 1) % 3 - return integration.ToGRPC(cluster.Client(leaderIdx)).Lease, cluster.Members[followerIdx] + return cluster.Members[leaderIdx], cluster.Members[(leaderIdx+1)%3], cluster.Members[(leaderIdx+2)%3] } func getLeaseKeepAliveMetric(t *testing.T, member *integration.Member, grpcCode string) int64 { @@ -862,43 +882,6 @@ func TestV3LeaseFailover(t *testing.T) { } } -// TestV3LeaseRequireLeader ensures that a Recv will get a leader -// loss error if there is no leader. -func TestV3LeaseRequireLeader(t *testing.T) { - integration.BeforeTest(t) - - clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) - defer clus.Terminate(t) - - lc := integration.ToGRPC(clus.Client(0)).Lease - clus.Members[1].Stop(t) - clus.Members[2].Stop(t) - - md := metadata.Pairs(rpctypes.MetadataRequireLeaderKey, rpctypes.MetadataHasLeader) - mctx := metadata.NewOutgoingContext(t.Context(), md) - ctx, cancel := context.WithCancel(mctx) - defer cancel() - lac, err := lc.LeaseKeepAlive(ctx) - require.NoError(t, err) - - donec := make(chan struct{}) - go func() { - defer close(donec) - resp, err := lac.Recv() - if err == nil { - t.Errorf("got response %+v, expected error", resp) - } - if rpctypes.ErrorDesc(err) != rpctypes.ErrNoLeader.Error() { - t.Errorf("err = %v, want %v", err, rpctypes.ErrNoLeader) - } - }() - select { - case <-time.After(5 * time.Second): - t.Fatal("did not receive leader loss error (in 5-sec)") - case <-donec: - } -} - const fiveMinTTL int64 = 300 // TestV3LeaseRecoverAndRevoke ensures that revoking a lease after restart deletes the attached key. From 2160cc48ae3053ef4964f1c230891fa01858e0ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jan 2026 21:34:05 +0000 Subject: [PATCH 0736/1068] build(deps): bump distroless/static-debian12 from `4b2a093` to `cd64bec` Bumps distroless/static-debian12 from `4b2a093` to `cd64bec`. --- updated-dependencies: - dependency-name: distroless/static-debian12 dependency-version: cd64bec9cec257044ce3a8dd3620cf83b387920100332f2b041f19c4d2febf93 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 0635e32f7f3a..979e8514d2ec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG ARCH=amd64 -FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:4b2a093ef4649bccd586625090a3c668b254cfe180dee54f4c94f3e9bd7e381e +FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:cd64bec9cec257044ce3a8dd3620cf83b387920100332f2b041f19c4d2febf93 ADD etcd /usr/local/bin/ ADD etcdctl /usr/local/bin/ From b9cbe673d728a092226a51856427f8784ec1d50f Mon Sep 17 00:00:00 2001 From: Sharath P J Date: Wed, 14 Jan 2026 01:41:56 +0530 Subject: [PATCH 0737/1068] cache: refactor btree usage to generics-based k8s.io/utils Signed-off-by: Sharath P J --- bill-of-materials.json | 9 +++++++++ cache/go.mod | 2 +- cache/go.sum | 4 ++-- cache/snapshot.go | 26 +++++++++++++++----------- cache/store.go | 12 ++++++------ go.sum | 2 ++ go.work.sum | 1 - tests/go.mod | 1 + tests/go.sum | 2 ++ 9 files changed, 38 insertions(+), 21 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index def6614cbe01..87cfbc44c7c1 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -840,6 +840,15 @@ } ] }, + { + "project": "k8s.io/utils/third_party/forked/golang/btree", + "licenses": [ + { + "type": "Apache License 2.0", + "confidence": 1 + } + ] + }, { "project": "sigs.k8s.io/yaml", "licenses": [ diff --git a/cache/go.mod b/cache/go.mod index e12483e7ea50..e1b552d08526 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -5,11 +5,11 @@ go 1.25.0 toolchain go1.25.5 require ( - github.com/google/btree v1.1.3 github.com/google/go-cmp v0.7.0 github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 + k8s.io/utils v0.0.0-20260108192941-914a6e750570 ) require ( diff --git a/cache/go.sum b/cache/go.sum index 7160335c863d..ba37e614e07b 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -16,8 +16,6 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= -github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -118,3 +116,5 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +k8s.io/utils v0.0.0-20260108192941-914a6e750570 h1:JT4W8lsdrGENg9W+YwwdLJxklIuKWdRm+BC+xt33FOY= +k8s.io/utils v0.0.0-20260108192941-914a6e750570/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= diff --git a/cache/snapshot.go b/cache/snapshot.go index ac6d71f828d4..77f08136e651 100644 --- a/cache/snapshot.go +++ b/cache/snapshot.go @@ -15,7 +15,7 @@ package cache import ( - "github.com/google/btree" + "k8s.io/utils/third_party/forked/golang/btree" "go.etcd.io/etcd/api/v3/mvccpb" ) @@ -23,10 +23,10 @@ import ( // snapshot captures a full, point-in-time view of the KV state at rev. type snapshot struct { rev int64 - tree *btree.BTree + tree *btree.BTree[*kvItem] } -func newClonedSnapshot(rev int64, t *btree.BTree) *snapshot { +func newClonedSnapshot(rev int64, t *btree.BTree[*kvItem]) *snapshot { return &snapshot{rev: rev, tree: t.Clone()} } @@ -34,19 +34,23 @@ func (s *snapshot) Range(startKey, endKey []byte) []*mvccpb.KeyValue { var out []*mvccpb.KeyValue switch { case len(endKey) == 0: - if item := s.tree.Get(probeItemFromKey(startKey)); item != nil { - out = append(out, item.(*kvItem).kv) + if item, ok := s.tree.Get(probeItemFromKey(startKey)); ok { + out = append(out, item.kv) } case isPrefixScan(endKey): - s.tree.AscendGreaterOrEqual(probeItemFromKey(startKey), func(item btree.Item) bool { - out = append(out, item.(*kvItem).kv) + s.tree.AscendGreaterOrEqual(probeItemFromKey(startKey), func(item *kvItem) bool { + out = append(out, item.kv) return true }) default: - s.tree.AscendRange(probeItemFromKey(startKey), probeItemFromKey(endKey), func(item btree.Item) bool { - out = append(out, item.(*kvItem).kv) - return true - }) + s.tree.AscendRange( + probeItemFromKey(startKey), + probeItemFromKey(endKey), + func(item *kvItem) bool { + out = append(out, item.kv) + return true + }, + ) } return out } diff --git a/cache/store.go b/cache/store.go index c9f02408c042..96151de91391 100644 --- a/cache/store.go +++ b/cache/store.go @@ -19,7 +19,7 @@ import ( "fmt" "sync" - "github.com/google/btree" + "k8s.io/utils/third_party/forked/golang/btree" "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" @@ -38,7 +38,7 @@ type store struct { } func newStore(degree int, historyCapacity int) *store { - tree := btree.New(degree) + tree := btree.New[*kvItem](degree, kvItemLess) return &store{ degree: degree, latest: snapshot{rev: 0, tree: tree}, @@ -55,8 +55,8 @@ func newKVItem(kv *mvccpb.KeyValue) *kvItem { return &kvItem{key: string(kv.Key), kv: kv} } -func (a *kvItem) Less(b btree.Item) bool { - return a.key < b.(*kvItem).key +func kvItemLess(a, b *kvItem) bool { + return a.key < b.key } func (s *store) Get(startKey, endKey []byte, rev int64) ([]*mvccpb.KeyValue, int64, error) { @@ -106,7 +106,7 @@ func (s *store) Restore(kvs []*mvccpb.KeyValue, rev int64) { s.mu.Lock() defer s.mu.Unlock() - s.latest.tree = btree.New(s.degree) + s.latest.tree = btree.New[*kvItem](s.degree, kvItemLess) for _, kv := range kvs { s.latest.tree.ReplaceOrInsert(newKVItem(kv)) } @@ -152,7 +152,7 @@ func (s *store) applyEventsLocked(events []*clientv3.Event) error { ev := events[i] switch ev.Type { case clientv3.EventTypeDelete: - if removed := s.latest.tree.Delete(&kvItem{key: string(ev.Kv.Key)}); removed == nil { + if _, ok := s.latest.tree.Delete(&kvItem{key: string(ev.Kv.Key)}); !ok { return fmt.Errorf("cache: delete non-existent key %s", string(ev.Kv.Key)) } case clientv3.EventTypePut: diff --git a/go.sum b/go.sum index 2577322f9e58..b308a4a9fa1e 100644 --- a/go.sum +++ b/go.sum @@ -281,5 +281,7 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +k8s.io/utils v0.0.0-20260108192941-914a6e750570 h1:JT4W8lsdrGENg9W+YwwdLJxklIuKWdRm+BC+xt33FOY= +k8s.io/utils v0.0.0-20260108192941-914a6e750570/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/go.work.sum b/go.work.sum index 749e526f6911..6cef1ed154af 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1065,7 +1065,6 @@ k8s.io/api v0.27.4 h1:0pCo/AN9hONazBKlNUdhQymmnfLRbSZjd5H5H3f0bSs= k8s.io/apimachinery v0.27.4 h1:CdxflD4AF61yewuid0fLl6bM4a3q04jWel0IlP+aYjs= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c h1:GohjlNKauSai7gN4wsJkeZ3WAJx4Sh+oT/b5IYn5suA= k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f h1:2kWPakN3i/k81b0gvD5C5FJ2kxm1WrQFanWchyKuqGg= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw= modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw= diff --git a/tests/go.mod b/tests/go.mod index 414f66a8bc08..bcca51a1addb 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -107,5 +107,6 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/utils v0.0.0-20260108192941-914a6e750570 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/tests/go.sum b/tests/go.sum index f9d985b4fdfd..89ac6face744 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -283,5 +283,7 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +k8s.io/utils v0.0.0-20260108192941-914a6e750570 h1:JT4W8lsdrGENg9W+YwwdLJxklIuKWdRm+BC+xt33FOY= +k8s.io/utils v0.0.0-20260108192941-914a6e750570/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= From 8f3ae0a0a84b43f6913bc8659cd721fa9bd7aa42 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 16 Jan 2026 01:12:49 +0900 Subject: [PATCH 0738/1068] dependency: bump golang.org/x/sys from 0.39.0 to 0.40.0 Reference: - https://github.com/etcd-io/etcd/pull/21115 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- go.work.sum | 1 + pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 25 files changed, 37 insertions(+), 36 deletions(-) diff --git a/api/go.mod b/api/go.mod index 5837e3e23992..eb6c4718eb5c 100644 --- a/api/go.mod +++ b/api/go.mod @@ -22,7 +22,7 @@ require ( go.opentelemetry.io/otel v1.39.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect golang.org/x/net v0.48.0 // indirect - golang.org/x/sys v0.39.0 // indirect + golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/api/go.sum b/api/go.sum index 304f09594b07..f1569e3adc7e 100644 --- a/api/go.sum +++ b/api/go.sum @@ -61,8 +61,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= diff --git a/cache/go.mod b/cache/go.mod index e1b552d08526..b63b5e8f1999 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -24,7 +24,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect golang.org/x/net v0.48.0 // indirect - golang.org/x/sys v0.39.0 // indirect + golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect diff --git a/cache/go.sum b/cache/go.sum index ba37e614e07b..2dfe6d63f5c8 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -87,8 +87,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 16fe30c48b6a..e4e9a0e0120f 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.6.0 github.com/stretchr/testify v1.11.1 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.39.0 + golang.org/x/sys v0.40.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index 878f905173ae..7019a0992472 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -24,8 +24,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index 19042193a55d..04d14e4a507f 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -37,7 +37,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.48.0 // indirect - golang.org/x/sys v0.39.0 // indirect + golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 1d63c9c49d98..973442fde006 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -95,8 +95,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index b77e77c71872..d86e49ea39b2 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -43,7 +43,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.48.0 // indirect - golang.org/x/sys v0.39.0 // indirect + golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index e7d21feae5ba..0d2239fad4fb 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -128,8 +128,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index e239f7944ee5..cedae6aafb4e 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -82,7 +82,7 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.46.0 // indirect golang.org/x/net v0.48.0 // indirect - golang.org/x/sys v0.39.0 // indirect + golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.32.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 38991fc909f5..d029bf64a67a 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -171,8 +171,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= diff --git a/go.mod b/go.mod index f73c49ef97d6..e07d64aa379b 100644 --- a/go.mod +++ b/go.mod @@ -101,7 +101,7 @@ require ( golang.org/x/mod v0.31.0 // indirect golang.org/x/net v0.48.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.39.0 // indirect + golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect diff --git a/go.sum b/go.sum index b308a4a9fa1e..9257f7db2446 100644 --- a/go.sum +++ b/go.sum @@ -228,8 +228,8 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= diff --git a/go.work.sum b/go.work.sum index 6cef1ed154af..4c7374ebf4bf 100644 --- a/go.work.sum +++ b/go.work.sum @@ -963,6 +963,7 @@ golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= diff --git a/pkg/go.mod b/pkg/go.mod index 9cc0e28945fc..b0c709683f47 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.39.0 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.39.0 + golang.org/x/sys v0.40.0 google.golang.org/grpc v1.78.0 ) diff --git a/pkg/go.sum b/pkg/go.sum index 97564f8ee7d8..35e4f2929115 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -58,8 +58,8 @@ go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= diff --git a/server/go.mod b/server/go.mod index aa351f827838..4d822ba3fe6a 100644 --- a/server/go.mod +++ b/server/go.mod @@ -70,7 +70,7 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/sys v0.39.0 // indirect + golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/server/go.sum b/server/go.sum index 4f090d477d76..2ccea87a3b15 100644 --- a/server/go.sum +++ b/server/go.sum @@ -150,8 +150,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= diff --git a/tests/go.mod b/tests/go.mod index bcca51a1addb..70599b5aa814 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -101,7 +101,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.48.0 // indirect - golang.org/x/sys v0.39.0 // indirect + golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect diff --git a/tests/go.sum b/tests/go.sum index 89ac6face744..459a3a0e1232 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -232,8 +232,8 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 0024a3760c59..9d955f8e8097 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -241,7 +241,7 @@ require ( golang.org/x/mod v0.31.0 // indirect golang.org/x/net v0.48.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.39.0 // indirect + golang.org/x/sys v0.40.0 // indirect golang.org/x/telemetry v0.0.0-20251203150158-8fff8a5912fc // indirect golang.org/x/term v0.38.0 // indirect golang.org/x/text v0.32.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 84b1917d8b8f..daea4e576484 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -655,8 +655,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20251203150158-8fff8a5912fc h1:bH6xUXay0AIFMElXG2rQ4uiE+7ncwtiOdPfYK1NK2XA= golang.org/x/telemetry v0.0.0-20251203150158-8fff8a5912fc/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index c6fa93cd36f5..b03c7404f22c 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -18,7 +18,7 @@ require ( go.opentelemetry.io/otel v1.39.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect golang.org/x/net v0.48.0 // indirect - golang.org/x/sys v0.39.0 // indirect + golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/grpc v1.78.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index e764c424bff8..8ab9c3cea027 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1489,8 +1489,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From 7e70f78c52af5da8df43f79bb96c17910584ad34 Mon Sep 17 00:00:00 2001 From: Himanshu Singh Date: Mon, 12 Jan 2026 19:34:39 +0000 Subject: [PATCH 0739/1068] fix: Create scripts/fix/mod-tidy.sh and refactor test.sh - Create scripts/fix/mod-tidy.sh with proper workspace module iteration - Remove go.sum files before tidy to ensure clean state (regenerated by go mod tidy) - Use run wrapper for consistent command execution and logging - Update Makefile fix-mod-tidy target to use the new script - Add ETCD_ROOT_DIR support for dynamic path resolution - Delete module_mod_tidy_fix and mod_tidy_fix_pass functions from scripts/test.sh (functionality moved to scripts/fix/mod-tidy.sh) Signed-off-by: Himanshu Singh --- Makefile | 2 +- scripts/fix/mod-tidy.sh | 24 ++++++++++++++++++++++++ scripts/test.sh | 9 --------- 3 files changed, 25 insertions(+), 10 deletions(-) create mode 100755 scripts/fix/mod-tidy.sh diff --git a/Makefile b/Makefile index facdcf0ecbbb..06d0b07bad89 100644 --- a/Makefile +++ b/Makefile @@ -135,7 +135,7 @@ verify-mod-tidy: .PHONY: fix-mod-tidy fix-mod-tidy: - PASSES="mod_tidy_fix" ./scripts/test.sh + ./scripts/fix/mod-tidy.sh .PHONY: verify-shellws verify-shellws: diff --git a/scripts/fix/mod-tidy.sh b/scripts/fix/mod-tidy.sh new file mode 100755 index 000000000000..7dc3e1434341 --- /dev/null +++ b/scripts/fix/mod-tidy.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +# Copyright 2026 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euo pipefail + +ETCD_ROOT_DIR=${ETCD_ROOT_DIR:-$(git rev-parse --show-toplevel)} +source "${ETCD_ROOT_DIR}/scripts/test_lib.sh" + +log_callout "Tidying go.mod files" +run_for_workspace_modules run sh -c "rm -f ./go.sum && go mod tidy" +log_success "go.mod files tidied" diff --git a/scripts/test.sh b/scripts/test.sh index d2d866d33114..e405cac7ad6c 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -627,15 +627,6 @@ function mod_tidy_pass { run_for_workspace_modules run go mod tidy -diff } -function module_mod_tidy_fix { - run rm ./go.sum - run go mod tidy || return 2 -} - -function mod_tidy_fix_pass { - run_for_workspace_modules module_mod_tidy_fix -} - function proto_annotations_pass { "${ETCD_ROOT_DIR}/scripts/verify_proto_annotations.sh" } From c9d89673973a77d5c3f8902bed5202c15eb7684a Mon Sep 17 00:00:00 2001 From: Zhijun Date: Thu, 15 Jan 2026 20:51:11 +0800 Subject: [PATCH 0740/1068] lease: Add new test to catch NoLeader error when client not using WithRequireLeader Signed-off-by: Zhijun --- tests/integration/v3_lease_test.go | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tests/integration/v3_lease_test.go b/tests/integration/v3_lease_test.go index a6f6bd4bb6f6..ba825d2f3436 100644 --- a/tests/integration/v3_lease_test.go +++ b/tests/integration/v3_lease_test.go @@ -430,6 +430,41 @@ func TestV3LeaseKeepAliveForwardingCatchError(t *testing.T) { require.Equal(t, rpctypes.ErrGRPCNoLeader, err) require.Equal(t, prevUnavailableCount+1, getLeaseKeepAliveMetric(t, follower, "Unavailable")) }) + + // Client receives NoLeader error after the waitLeader() timed out in LeaseRenew(). + t.Run("catches NoLeader error without WithRequireLeader", func(t *testing.T) { + leader, follower, anotherFollower := setupLeaseForwardingCluster(t) + leaderClient := integration.ToGRPC(leader.Client).Lease + followerClient := integration.ToGRPC(follower.Client).Lease + + grantResp, err := leaderClient.LeaseGrant(t.Context(), &pb.LeaseGrantRequest{TTL: 30}) + require.NoError(t, err) + leaseID := grantResp.ID + + keepAliveClient, err := followerClient.LeaseKeepAlive(t.Context()) + require.NoError(t, err) + defer keepAliveClient.CloseSend() + + require.NoError(t, keepAliveClient.Send(&pb.LeaseKeepAliveRequest{ID: leaseID})) + _, err = keepAliveClient.Recv() + require.NoError(t, err) + prevUnavailableCount := getLeaseKeepAliveMetric(t, follower, "Unavailable") + + leader.Stop(t) + anotherFollower.Stop(t) + require.NoError(t, keepAliveClient.Send(&pb.LeaseKeepAliveRequest{ID: leaseID})) + _, err = keepAliveClient.Recv() + if integration.ThroughProxy { + // Known limitation: grpcproxy doesn't propagate NoLeader error without + // WithRequireLeader. The keepAliveLoop in server/proxy/grpcproxy/lease.go + // discards errors and only calls cancel(), resulting in context.Canceled. + // TODO: Consider fixing grpcproxy to properly propagate errors. + require.ErrorIs(t, err, context.Canceled) + } else { + require.Equal(t, rpctypes.ErrNoLeader.Error(), rpctypes.ErrorDesc(err)) + require.Equal(t, prevUnavailableCount+1, getLeaseKeepAliveMetric(t, follower, "Unavailable")) + } + }) } func setupLeaseForwardingCluster(t *testing.T) (*integration.Member, *integration.Member, *integration.Member) { From 522466ae763fc2a4efe1121391ce00fb65012974 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 16 Jan 2026 01:17:24 +0900 Subject: [PATCH 0741/1068] dependency: bump golang.org/x/tools from 0.40.0 to 0.41.0, golang.org/x/text from 0.32.0 to 0.33.0, golang.org/x/net from v0.48.0 to v0.49.0, golang.org/x/crypto from v0.46.0 to v0.49.0, golang.org/x/mod from v0.31.0 to v0.32.0 Reference: - https://github.com/etcd-io/etcd/pull/21118 - https://github.com/etcd-io/etcd/pull/21117 - https://github.com/etcd-io/etcd/pull/21113 - https://github.com/etcd-io/etcd/pull/21110 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 4 ++-- api/go.sum | 8 ++++---- cache/go.mod | 4 ++-- cache/go.sum | 8 ++++---- client/v3/go.mod | 4 ++-- client/v3/go.sum | 8 ++++---- etcdctl/go.mod | 4 ++-- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 12 ++++++------ go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- go.work.sum | 6 ++++-- pkg/go.mod | 4 ++-- pkg/go.sum | 8 ++++---- server/go.mod | 6 +++--- server/go.sum | 12 ++++++------ tests/go.mod | 6 +++--- tests/go.sum | 12 ++++++------ tools/mod/go.mod | 14 +++++++------- tools/mod/go.sum | 28 ++++++++++++++-------------- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 4 ++-- tools/testgrid-analysis/go.sum | 8 ++++---- 25 files changed, 106 insertions(+), 104 deletions(-) diff --git a/api/go.mod b/api/go.mod index eb6c4718eb5c..b965d3c79411 100644 --- a/api/go.mod +++ b/api/go.mod @@ -21,9 +21,9 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.39.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect - golang.org/x/net v0.48.0 // indirect + golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/text v0.33.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index f1569e3adc7e..b8606730058c 100644 --- a/api/go.sum +++ b/api/go.sum @@ -53,8 +53,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -65,8 +65,8 @@ golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/cache/go.mod b/cache/go.mod index b63b5e8f1999..78ad40ae9ed6 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -23,9 +23,9 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect - golang.org/x/net v0.48.0 // indirect + golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/text v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/grpc v1.78.0 // indirect diff --git a/cache/go.sum b/cache/go.sum index 2dfe6d63f5c8..2e27983bb834 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -79,8 +79,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -91,8 +91,8 @@ golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/client/v3/go.mod b/client/v3/go.mod index 04d14e4a507f..952c4928fc21 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -36,9 +36,9 @@ require ( go.opentelemetry.io/otel/trace v1.39.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.48.0 // indirect + golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/text v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/protobuf v1.36.11 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 973442fde006..9403bed4a94a 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -87,8 +87,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -99,8 +99,8 @@ golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index d86e49ea39b2..043d17a94dfe 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -42,9 +42,9 @@ require ( github.com/olekukonko/ll v0.1.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.48.0 // indirect + golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/text v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/protobuf v1.36.11 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 0d2239fad4fb..d7b171aab0b4 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -119,8 +119,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -132,8 +132,8 @@ golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index cedae6aafb4e..cd10c50df513 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -80,10 +80,10 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.46.0 // indirect - golang.org/x/net v0.48.0 // indirect + golang.org/x/crypto v0.47.0 // indirect + golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/text v0.33.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index d029bf64a67a..32c28fe0f805 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -150,8 +150,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= -golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= +golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -159,8 +159,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -175,8 +175,8 @@ golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index e07d64aa379b..8ab99008f362 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( go.etcd.io/raft/v3 v3.6.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 - golang.org/x/tools v0.40.0 + golang.org/x/tools v0.41.0 google.golang.org/grpc v1.78.0 google.golang.org/protobuf v1.36.11 ) @@ -97,12 +97,12 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.46.0 // indirect - golang.org/x/mod v0.31.0 // indirect - golang.org/x/net v0.48.0 // indirect + golang.org/x/crypto v0.47.0 // indirect + golang.org/x/mod v0.32.0 // indirect + golang.org/x/net v0.49.0 // indirect golang.org/x/sync v0.19.0 // indirect golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/text v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index 9257f7db2446..2bb6deb15be5 100644 --- a/go.sum +++ b/go.sum @@ -192,16 +192,16 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= -golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= +golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI= -golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg= +golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c= +golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -211,8 +211,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -232,8 +232,8 @@ golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -244,8 +244,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA= -golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc= +golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc= +golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go.work.sum b/go.work.sum index 4c7374ebf4bf..10ef19f8874a 100644 --- a/go.work.sum +++ b/go.work.sum @@ -929,7 +929,7 @@ golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhp golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= +golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= @@ -942,6 +942,7 @@ golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= @@ -974,12 +975,13 @@ golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= -golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= +golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= diff --git a/pkg/go.mod b/pkg/go.mod index b0c709683f47..f5a40782eaad 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -26,8 +26,8 @@ require ( go.opentelemetry.io/otel v1.39.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.48.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/net v0.49.0 // indirect + golang.org/x/text v0.33.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 35e4f2929115..5a3db9be67ae 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -56,12 +56,12 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= diff --git a/server/go.mod b/server/go.mod index 4d822ba3fe6a..454890ec3a71 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,8 +37,8 @@ require ( go.opentelemetry.io/otel/sdk v1.39.0 go.opentelemetry.io/otel/trace v1.39.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.46.0 - golang.org/x/net v0.48.0 + golang.org/x/crypto v0.47.0 + golang.org/x/net v0.49.0 golang.org/x/time v0.14.0 google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b google.golang.org/grpc v1.78.0 @@ -71,7 +71,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/text v0.33.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index 2ccea87a3b15..3ac39687f76f 100644 --- a/server/go.sum +++ b/server/go.sum @@ -130,8 +130,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= -golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= +golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -139,8 +139,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -154,8 +154,8 @@ golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index 70599b5aa814..b6f3ff58da3b 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -47,7 +47,7 @@ require ( go.opentelemetry.io/otel/sdk v1.39.0 go.opentelemetry.io/proto/otlp v1.9.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.46.0 + golang.org/x/crypto v0.47.0 golang.org/x/sync v0.19.0 golang.org/x/time v0.14.0 google.golang.org/grpc v1.78.0 @@ -100,9 +100,9 @@ require ( go.opentelemetry.io/otel/trace v1.39.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.48.0 // indirect + golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/text v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index 459a3a0e1232..70d15a6acfef 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -198,8 +198,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= -golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= +golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -215,8 +215,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -236,8 +236,8 @@ golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 9d955f8e8097..81c3fd3a8fbd 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -16,7 +16,7 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0 - golang.org/x/tools v0.40.0 + golang.org/x/tools v0.41.0 gotest.tools/gotestsum v1.13.0 gotest.tools/v3 v3.5.2 honnef.co/go/tools v0.6.1 @@ -235,16 +235,16 @@ require ( go.uber.org/zap v1.27.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.46.0 // indirect + golang.org/x/crypto v0.47.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546 // indirect - golang.org/x/mod v0.31.0 // indirect - golang.org/x/net v0.48.0 // indirect + golang.org/x/mod v0.32.0 // indirect + golang.org/x/net v0.49.0 // indirect golang.org/x/sync v0.19.0 // indirect golang.org/x/sys v0.40.0 // indirect - golang.org/x/telemetry v0.0.0-20251203150158-8fff8a5912fc // indirect - golang.org/x/term v0.38.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/telemetry v0.0.0-20260109210033-bd525da824e2 // indirect + golang.org/x/term v0.39.0 // indirect + golang.org/x/text v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/grpc v1.78.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index daea4e576484..a3cede990bd2 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -574,8 +574,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= -golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= +golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -591,8 +591,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI= -golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg= +golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c= +golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -613,8 +613,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -657,8 +657,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/telemetry v0.0.0-20251203150158-8fff8a5912fc h1:bH6xUXay0AIFMElXG2rQ4uiE+7ncwtiOdPfYK1NK2XA= -golang.org/x/telemetry v0.0.0-20251203150158-8fff8a5912fc/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= +golang.org/x/telemetry v0.0.0-20260109210033-bd525da824e2 h1:O1cMQHRfwNpDfDJerqRoE2oD+AFlyid87D40L/OkkJo= +golang.org/x/telemetry v0.0.0-20260109210033-bd525da824e2/go.mod h1:b7fPSJ0pKZ3ccUh8gnTONJxhn3c/PS6tyzQvyqw4iA8= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -671,8 +671,8 @@ golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q= -golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg= +golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY= +golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -686,8 +686,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= @@ -702,8 +702,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA= -golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc= +golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc= +golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 701443cc48a0..833fc4dd0af3 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -22,6 +22,6 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/image v0.25.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/text v0.33.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 58af44d748ac..018d6558aefa 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -55,8 +55,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index b03c7404f22c..503d74f51f54 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -17,9 +17,9 @@ require ( github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/otel v1.39.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect - golang.org/x/net v0.48.0 // indirect + golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/text v0.33.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect google.golang.org/grpc v1.78.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 8ab9c3cea027..bf2c2392c4f9 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1341,8 +1341,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1521,8 +1521,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From d6dc34fe23494492d56c57d3bb4a2591ff9879a5 Mon Sep 17 00:00:00 2001 From: Zhijun Date: Thu, 15 Jan 2026 22:13:15 +0800 Subject: [PATCH 0742/1068] Consolidate gofail check in integration tests Signed-off-by: Zhijun --- tests/framework/integration/testing.go | 10 +++++++--- .../integration/clientv3/watch/v3_watch_test.go | 4 +--- tests/integration/v3_lease_test.go | 17 ++++++++--------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/tests/framework/integration/testing.go b/tests/framework/integration/testing.go index 7e0dd38d4df2..c90598dd00bc 100644 --- a/tests/framework/integration/testing.go +++ b/tests/framework/integration/testing.go @@ -83,6 +83,12 @@ func BeforeTestExternal(t testutil.TB) { BeforeTest(t, WithoutSkipInShort(), WithoutGoLeakDetection()) } +func SkipIfNoGoFail(t testutil.TB) { + if len(gofail.List()) == 0 { + t.Skip("please run 'make gofail-enable' before running the test") + } +} + func BeforeTest(t testutil.TB, opts ...TestOption) { t.Helper() options := newTestOptions(opts...) @@ -100,9 +106,7 @@ func BeforeTest(t testutil.TB, opts ...TestOption) { } if options.failpoint != nil && len(options.failpoint.name) != 0 { - if len(gofail.List()) == 0 { - t.Skip("please run 'make gofail-enable' before running the test") - } + SkipIfNoGoFail(t) require.NoError(t, gofail.Enable(options.failpoint.name, options.failpoint.payload)) t.Cleanup(func() { require.NoError(t, gofail.Disable(options.failpoint.name)) diff --git a/tests/integration/clientv3/watch/v3_watch_test.go b/tests/integration/clientv3/watch/v3_watch_test.go index 79dc38ca5a9f..04944c4e75c6 100644 --- a/tests/integration/clientv3/watch/v3_watch_test.go +++ b/tests/integration/clientv3/watch/v3_watch_test.go @@ -1540,9 +1540,7 @@ func TestV3NoEventsLostOnCompact(t *testing.T) { t.Skip("grpc proxy currently does not support requesting progress notifications") } integration.BeforeTest(t) - if len(gofail.List()) == 0 { - t.Skip("please run 'make gofail-enable' before running the test") - } + integration.SkipIfNoGoFail(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) diff --git a/tests/integration/v3_lease_test.go b/tests/integration/v3_lease_test.go index ba825d2f3436..36630c379681 100644 --- a/tests/integration/v3_lease_test.go +++ b/tests/integration/v3_lease_test.go @@ -318,9 +318,6 @@ func TestV3LeaseKeepAlive(t *testing.T) { // TestV3LeaseKeepAliveForwardingCatchError ensures the server properly generates error // codes while the follower server is forwarding LeaseKeepAlive request to the leader. func TestV3LeaseKeepAliveForwardingCatchError(t *testing.T) { - if len(gofail.List()) == 0 { - t.Skip("please run 'make gofail-enable' before running the test") - } integration.BeforeTest(t) // Longer than leaseHandler.ServeHTTP()'s default timeout duration sleepDuration := 8 * time.Second @@ -346,6 +343,7 @@ func TestV3LeaseKeepAliveForwardingCatchError(t *testing.T) { // Shows current behavior: client cancel during forwarding incorrectly returns Unavailable. t.Run("client cancels while forwarding", func(t *testing.T) { + integration.SkipIfNoGoFail(t) leader, follower, _ := setupLeaseForwardingCluster(t) leaderClient := integration.ToGRPC(leader.Client).Lease @@ -385,6 +383,7 @@ func TestV3LeaseKeepAliveForwardingCatchError(t *testing.T) { }) t.Run("forwarding times out", func(t *testing.T) { + integration.SkipIfNoGoFail(t) leader, follower, _ := setupLeaseForwardingCluster(t) leaderClient := integration.ToGRPC(leader.Client).Lease @@ -427,8 +426,11 @@ func TestV3LeaseKeepAliveForwardingCatchError(t *testing.T) { require.NoError(t, err) _, err = keepAliveClient.Recv() - require.Equal(t, rpctypes.ErrGRPCNoLeader, err) - require.Equal(t, prevUnavailableCount+1, getLeaseKeepAliveMetric(t, follower, "Unavailable")) + require.Equal(t, rpctypes.ErrNoLeader.Error(), rpctypes.ErrorDesc(err)) + // Skip metric check in proxy mode - metrics are recorded on the proxy, not the etcd server. + if !integration.ThroughProxy { + require.Equal(t, prevUnavailableCount+1, getLeaseKeepAliveMetric(t, follower, "Unavailable")) + } }) // Client receives NoLeader error after the waitLeader() timed out in LeaseRenew(). @@ -1110,10 +1112,7 @@ func TestV3LeaseTimeToLiveWithLeaderChanged(t *testing.T) { } func testV3LeaseTimeToLiveWithLeaderChanged(t *testing.T, fpName string) { - if len(gofail.List()) == 0 { - t.Skip("please run 'make gofail-enable' before running the test") - } - + integration.SkipIfNoGoFail(t) integration.BeforeTest(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) From 17156389725a67f228a29f92d403201adccba836 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 16 Jan 2026 01:19:21 +0900 Subject: [PATCH 0743/1068] dependency: bump github.com/golangci/golangci-lint/v2 from 2.7.2 to 2.8.0 Reference: - https://github.com/etcd-io/etcd/pull/21112 Signed-off-by: Chun-Hung Tseng --- go.work.sum | 10 +++++---- tools/mod/go.mod | 25 +++++++++++----------- tools/mod/go.sum | 54 +++++++++++++++++++++++++----------------------- 3 files changed, 47 insertions(+), 42 deletions(-) diff --git a/go.work.sum b/go.work.sum index 10ef19f8874a..7d42a2c0d262 100644 --- a/go.work.sum +++ b/go.work.sum @@ -786,6 +786,8 @@ github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0 h1:LiZB1h0GIcudcDci2 github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0/go.mod h1:F/7q8/HZz+TXjlsoZQQKVYvXTZaFH4QRa3y+j1p7MS0= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= +github.com/openai/openai-go/v3 v3.8.1 h1:b+YWsmwqXnbpSHWQEntZAkKciBZ5CJXwL68j+l59UDg= +github.com/openai/openai-go/v3 v3.8.1/go.mod h1:UOpNxkqC9OdNXNUfpNByKOtB4jAL0EssQXq5p8gO0Xs= github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= github.com/otiai10/curr v1.0.0 h1:TJIWdbX0B+kpNagQrjgq8bCMrbhiuX73M2XwgtDMoOI= github.com/otiai10/mint v1.3.1 h1:BCmzIS3n71sGfHB5NMNDB3lHYPz8fWSkCAErHed//qc= @@ -818,8 +820,8 @@ github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY= github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= -github.com/shirou/gopsutil/v4 v4.25.11 h1:X53gB7muL9Gnwwo2evPSE+SfOrltMoR6V3xJAXZILTY= -github.com/shirou/gopsutil/v4 v4.25.11/go.mod h1:EivAfP5x2EhLp2ovdpKSozecVXn1TmuG7SMzs/Wh4PU= +github.com/shirou/gopsutil/v4 v4.25.12 h1:e7PvW/0RmJ8p8vPGJH4jvNkOyLmbkXgXW4m6ZPic6CY= +github.com/shirou/gopsutil/v4 v4.25.12/go.mod h1:EivAfP5x2EhLp2ovdpKSozecVXn1TmuG7SMzs/Wh4PU= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= @@ -991,8 +993,8 @@ google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genai v1.36.0 h1:sJCIjqTAmwrtAIaemtTiKkg2TO1RxnYEusTmEQ3nGxM= -google.golang.org/genai v1.36.0/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= +google.golang.org/genai v1.37.0 h1:dgp71k1wQ+/+APdZrN3LFgAGnVnr5IdTF1Oj0Dg+BQc= +google.golang.org/genai v1.37.0/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE= google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 81c3fd3a8fbd..1c9614e5be22 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -9,7 +9,7 @@ require ( github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint/v2 v2.7.2 + github.com/golangci/golangci-lint/v2 v2.8.0 github.com/google/yamlfmt v0.20.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 github.com/ryancurrah/gomodguard v1.4.1 @@ -26,6 +26,7 @@ require ( 4d63.com/gocheckcompilerdirectives v1.3.0 // indirect 4d63.com/gochecknoglobals v0.2.2 // indirect codeberg.org/chavacava/garif v0.2.0 // indirect + codeberg.org/polyfloyd/go-errorlint v1.9.0 // indirect dev.gaijin.team/go/exhaustruct/v4 v4.0.0 // indirect dev.gaijin.team/go/golib v0.6.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect @@ -36,15 +37,15 @@ require ( github.com/Antonboom/errname v1.1.1 // indirect github.com/Antonboom/nilnil v1.1.1 // indirect github.com/Antonboom/testifylint v1.6.4 // indirect - github.com/BurntSushi/toml v1.5.0 // indirect + github.com/BurntSushi/toml v1.6.0 // indirect github.com/Djarvur/go-err113 v0.1.1 // indirect github.com/Masterminds/semver/v3 v3.4.0 // indirect - github.com/MirrexOne/unqueryvet v1.3.0 // indirect + github.com/MirrexOne/unqueryvet v1.4.0 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect - github.com/alecthomas/chroma/v2 v2.20.0 // indirect + github.com/alecthomas/chroma/v2 v2.21.1 // indirect github.com/alecthomas/go-check-sumtype v0.3.1 // indirect github.com/alexkohler/nakedret/v2 v2.0.6 // indirect - github.com/alexkohler/prealloc v1.0.0 // indirect + github.com/alexkohler/prealloc v1.0.1 // indirect github.com/alfatraining/structtag v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect github.com/alingse/nilnesserr v0.2.0 // indirect @@ -87,8 +88,8 @@ require ( github.com/firefart/nonamedreturns v1.0.6 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect - github.com/ghostiam/protogetter v0.3.17 // indirect - github.com/go-critic/go-critic v0.14.2 // indirect + github.com/ghostiam/protogetter v0.3.18 // indirect + github.com/go-critic/go-critic v0.14.3 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-sql-driver/mysql v1.8.1 // indirect github.com/go-toolsmith/astcast v1.1.0 // indirect @@ -101,14 +102,14 @@ require ( github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/godoc-lint/godoc-lint v0.10.2 // indirect + github.com/godoc-lint/godoc-lint v0.11.1 // indirect github.com/gofrs/flock v0.13.0 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golangci/asciicheck v0.5.0 // indirect github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect github.com/golangci/go-printf-func-name v0.1.1 // indirect github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect - github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 // indirect + github.com/golangci/golines v0.14.0 // indirect github.com/golangci/misspell v0.7.0 // indirect github.com/golangci/plugin-module-register v0.1.2 // indirect github.com/golangci/revgrep v0.8.0 // indirect @@ -141,8 +142,9 @@ require ( github.com/kunwardeep/paralleltest v1.0.15 // indirect github.com/lasiar/canonicalheader v1.1.2 // indirect github.com/ldez/exptostd v0.4.5 // indirect - github.com/ldez/gomoddirectives v0.7.1 // indirect + github.com/ldez/gomoddirectives v0.8.0 // indirect github.com/ldez/grignotin v0.10.1 // indirect + github.com/ldez/structtags v0.6.1 // indirect github.com/ldez/tagliatelle v0.7.2 // indirect github.com/ldez/usetesting v0.5.0 // indirect github.com/leonklingele/grouper v1.1.2 // indirect @@ -172,7 +174,6 @@ require ( github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/polyfloyd/go-errorlint v1.8.0 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.5 // indirect @@ -192,7 +193,7 @@ require ( github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect - github.com/securego/gosec/v2 v2.22.11-0.20251204091113-daccba6b93d7 // indirect + github.com/securego/gosec/v2 v2.22.11 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sivchari/containedctx v1.0.3 // indirect github.com/sonatard/noctx v0.4.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index a3cede990bd2..35041a099f7a 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -5,6 +5,8 @@ cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= codeberg.org/chavacava/garif v0.2.0 h1:F0tVjhYbuOCnvNcU3YSpO6b3Waw6Bimy4K0mM8y6MfY= codeberg.org/chavacava/garif v0.2.0/go.mod h1:P2BPbVbT4QcvLZrORc2T29szK3xEOlnl0GiPTJmEqBQ= +codeberg.org/polyfloyd/go-errorlint v1.9.0 h1:VkdEEmA1VBpH6ecQoMR4LdphVI3fA4RrCh2an7YmodI= +codeberg.org/polyfloyd/go-errorlint v1.9.0/go.mod h1:GPRRu2LzVijNn4YkrZYJfatQIdS+TrcK8rL5Xs24qw8= dev.gaijin.team/go/exhaustruct/v4 v4.0.0 h1:873r7aNneqoBB3IaFIzhvt2RFYTuHgmMjoKfwODoI1Y= dev.gaijin.team/go/exhaustruct/v4 v4.0.0/go.mod h1:aZ/k2o4Y05aMJtiux15x8iXaumE88YdiB0Ai4fXOzPI= dev.gaijin.team/go/golib v0.6.0 h1:v6nnznFTs4bppib/NyU1PQxobwDHwCXXl15P7DV5Zgo= @@ -25,31 +27,31 @@ github.com/Antonboom/nilnil v1.1.1 h1:9Mdr6BYd8WHCDngQnNVV0b554xyisFioEKi30sksuf github.com/Antonboom/nilnil v1.1.1/go.mod h1:yCyAmSw3doopbOWhJlVci+HuyNRuHJKIv6V2oYQa8II= github.com/Antonboom/testifylint v1.6.4 h1:gs9fUEy+egzxkEbq9P4cpcMB6/G0DYdMeiFS87UiqmQ= github.com/Antonboom/testifylint v1.6.4/go.mod h1:YO33FROXX2OoUfwjz8g+gUxQXio5i9qpVy7nXGbxDD4= -github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= -github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk= +github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/Djarvur/go-err113 v0.1.1 h1:eHfopDqXRwAi+YmCUas75ZE0+hoBHJ2GQNLYRSxao4g= github.com/Djarvur/go-err113 v0.1.1/go.mod h1:IaWJdYFLg76t2ihfflPZnM1LIQszWOsFDh2hhhAVF6k= github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= -github.com/MirrexOne/unqueryvet v1.3.0 h1:5slWSomgqpYU4zFuZ3NNOfOUxVPlXFDBPAVasZOGlAY= -github.com/MirrexOne/unqueryvet v1.3.0/go.mod h1:IWwCwMQlSWjAIteW0t+28Q5vouyktfujzYznSIWiuOg= +github.com/MirrexOne/unqueryvet v1.4.0 h1:6KAkqqW2KUnkl9Z0VuTphC3IXRPoFqEkJEtyxxHj5eQ= +github.com/MirrexOne/unqueryvet v1.4.0/go.mod h1:IWwCwMQlSWjAIteW0t+28Q5vouyktfujzYznSIWiuOg= github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= -github.com/alecthomas/chroma/v2 v2.20.0 h1:sfIHpxPyR07/Oylvmcai3X/exDlE8+FA820NTz+9sGw= -github.com/alecthomas/chroma/v2 v2.20.0/go.mod h1:e7tViK0xh/Nf4BYHl00ycY6rV7b8iXBksI9E359yNmA= +github.com/alecthomas/chroma/v2 v2.21.1 h1:FaSDrp6N+3pphkNKU6HPCiYLgm8dbe5UXIXcoBhZSWA= +github.com/alecthomas/chroma/v2 v2.21.1/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o= github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU= github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= -github.com/alecthomas/repr v0.5.1 h1:E3G4t2QbHTSNpPKBgMTln5KLkZHLOcU7r37J4pXBuIg= -github.com/alecthomas/repr v0.5.1/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/alexfalkowski/gocovmerge v1.11.0 h1:mHYRBKEBHxjTWveV6RCAnCAhF6l1evO9JYboZRvZmuU= github.com/alexfalkowski/gocovmerge v1.11.0/go.mod h1:gkfERgPiozeXq7FlJBQDmTeXo8FnrNxZwabB4uSGZ3M= github.com/alexkohler/nakedret/v2 v2.0.6 h1:ME3Qef1/KIKr3kWX3nti3hhgNxw6aqN5pZmQiFSsuzQ= github.com/alexkohler/nakedret/v2 v2.0.6/go.mod h1:l3RKju/IzOMQHmsEvXwkqMDzHHvurNQfAgE1eVmT40Q= -github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= -github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= +github.com/alexkohler/prealloc v1.0.1 h1:A9P1haqowqUxWvU9nk6tQ7YktXIHf+LQM9wPRhuteEE= +github.com/alexkohler/prealloc v1.0.1/go.mod h1:fT39Jge3bQrfA7nPMDngUfvUbQGQeJyGQnR+913SCig= github.com/alfatraining/structtag v1.0.0 h1:2qmcUqNcCoyVJ0up879K614L9PazjBSFruTB0GOFjCc= github.com/alfatraining/structtag v1.0.0/go.mod h1:p3Xi5SwzTi+Ryj64DqjLWz7XurHxbGsq6y3ubePJPus= github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= @@ -149,10 +151,10 @@ github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= -github.com/ghostiam/protogetter v0.3.17 h1:sjGPErP9o7i2Ym+z3LsQzBdLCNaqbYy2iJQPxGXg04Q= -github.com/ghostiam/protogetter v0.3.17/go.mod h1:AivIX1eKA/TcUmzZdzbl+Tb8tjIe8FcyG6JFyemQAH4= -github.com/go-critic/go-critic v0.14.2 h1:PMvP5f+LdR8p6B29npvChUXbD1vrNlKDf60NJtgMBOo= -github.com/go-critic/go-critic v0.14.2/go.mod h1:xwntfW6SYAd7h1OqDzmN6hBX/JxsEKl5up/Y2bsxgVQ= +github.com/ghostiam/protogetter v0.3.18 h1:yEpghRGtP9PjKvVXtEzGpYfQj1Wl/ZehAfU6fr62Lfo= +github.com/ghostiam/protogetter v0.3.18/go.mod h1:FjIu5Yfs6FT391m+Fjp3fbAYJ6rkL/J6ySpZBfnODuI= +github.com/go-critic/go-critic v0.14.3 h1:5R1qH2iFeo4I/RJU8vTezdqs08Egi4u5p6vOESA0pog= +github.com/go-critic/go-critic v0.14.3/go.mod h1:xwntfW6SYAd7h1OqDzmN6hBX/JxsEKl5up/Y2bsxgVQ= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= @@ -186,8 +188,8 @@ github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUW github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/godoc-lint/godoc-lint v0.10.2 h1:dksNgK+zebnVlj4Fx83CRnCmPO0qRat/9xfFsir1nfg= -github.com/godoc-lint/godoc-lint v0.10.2/go.mod h1:KleLcHu/CGSvkjUH2RvZyoK1MBC7pDQg4NxMYLcBBsw= +github.com/godoc-lint/godoc-lint v0.11.1 h1:z9as8Qjiy6miRIa3VRymTa+Gt2RLnGICVikcvlUVOaA= +github.com/godoc-lint/godoc-lint v0.11.1/go.mod h1:BAqayheFSuZrEAqCRxgw9MyvsM+S/hZwJbU1s/ejRj8= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -205,10 +207,10 @@ github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarog github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint/v2 v2.7.2 h1:AhBC+YeEueec4AGlIbvPym5C70Thx0JykIqXbdIXWx0= -github.com/golangci/golangci-lint/v2 v2.7.2/go.mod h1:pDijleoBu7e8sejMqyZ3L5n6geqe+cVvOAz2QImqqVc= -github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 h1:AkK+w9FZBXlU/xUmBtSJN1+tAI4FIvy5WtnUnY8e4p8= -github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95/go.mod h1:k9mmcyWKSTMcPPvQUCfRWWQ9VHJ1U9Dc0R7kaXAgtnQ= +github.com/golangci/golangci-lint/v2 v2.8.0 h1:wJnr3hJWY3eVzOUcfwbDc2qbi2RDEpvLmQeNFaPSNYA= +github.com/golangci/golangci-lint/v2 v2.8.0/go.mod h1:xl+HafQ9xoP8rzw0z5AwnO5kynxtb80e8u02Ej/47RI= +github.com/golangci/golines v0.14.0 h1:xt9d3RKBjhasA3qpoXs99J2xN2t6eBlpLHt0TrgyyXc= +github.com/golangci/golines v0.14.0/go.mod h1:gf555vPG2Ia7mmy2mzmhVQbVjuK8Orw0maR1G4vVAAQ= github.com/golangci/misspell v0.7.0 h1:4GOHr/T1lTW0hhR4tgaaV1WS/lJ+ncvYCoFKmqJsj0c= github.com/golangci/misspell v0.7.0/go.mod h1:WZyyI2P3hxPY2UVHs3cS8YcllAeyfquQcKfdeE9AFVg= github.com/golangci/plugin-module-register v0.1.2 h1:e5WM6PO6NIAEcij3B053CohVp3HIYbzSuP53UAYgOpg= @@ -303,10 +305,12 @@ github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0 github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= github.com/ldez/exptostd v0.4.5 h1:kv2ZGUVI6VwRfp/+bcQ6Nbx0ghFWcGIKInkG/oFn1aQ= github.com/ldez/exptostd v0.4.5/go.mod h1:QRjHRMXJrCTIm9WxVNH6VW7oN7KrGSht69bIRwvdFsM= -github.com/ldez/gomoddirectives v0.7.1 h1:FaULkvUIG36hj6chpwa+FdCNGZBsD7/fO+p7CCsM6pE= -github.com/ldez/gomoddirectives v0.7.1/go.mod h1:auDNtakWJR1rC+YX7ar+HmveqXATBAyEK1KYpsIRW/8= +github.com/ldez/gomoddirectives v0.8.0 h1:JqIuTtgvFC2RdH1s357vrE23WJF2cpDCPFgA/TWDGpk= +github.com/ldez/gomoddirectives v0.8.0/go.mod h1:jutzamvZR4XYJLr0d5Honycp4Gy6GEg2mS9+2YX3F1Q= github.com/ldez/grignotin v0.10.1 h1:keYi9rYsgbvqAZGI1liek5c+jv9UUjbvdj3Tbn5fn4o= github.com/ldez/grignotin v0.10.1/go.mod h1:UlDbXFCARrXbWGNGP3S5vsysNXAPhnSuBufpTEbwOas= +github.com/ldez/structtags v0.6.1 h1:bUooFLbXx41tW8SvkfwfFkkjPYvFFs59AAMgVg6DUBk= +github.com/ldez/structtags v0.6.1/go.mod h1:YDxVSgDy/MON6ariaxLF2X09bh19qL7MtGBN5MrvbdY= github.com/ldez/tagliatelle v0.7.2 h1:KuOlL70/fu9paxuxbeqlicJnCspCRjH0x8FW+NfgYUk= github.com/ldez/tagliatelle v0.7.2/go.mod h1:PtGgm163ZplJfZMZ2sf5nhUT170rSuPgBimoyYtdaSI= github.com/ldez/usetesting v0.5.0 h1:3/QtzZObBKLy1F4F8jLuKJiKBjjVFi1IavpoWbmqLwc= @@ -383,8 +387,6 @@ github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polyfloyd/go-errorlint v1.8.0 h1:DL4RestQqRLr8U4LygLw8g2DX6RN1eBJOpa2mzsrl1Q= -github.com/polyfloyd/go-errorlint v1.8.0/go.mod h1:G2W0Q5roxbLCt0ZQbdoxQxXktTjwNyDbEaj3n7jvl4s= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= @@ -428,8 +430,8 @@ github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tM github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= github.com/sashamelentyev/usestdlibvars v1.29.0 h1:8J0MoRrw4/NAXtjQqTHrbW9NN+3iMf7Knkq057v4XOQ= github.com/sashamelentyev/usestdlibvars v1.29.0/go.mod h1:8PpnjHMk5VdeWlVb4wCdrB8PNbLqZ3wBZTZWkrpZZL8= -github.com/securego/gosec/v2 v2.22.11-0.20251204091113-daccba6b93d7 h1:rZg6IGn0ySYZwCX8LHwZoYm03JhG/cVAJJ3O+u3Vclo= -github.com/securego/gosec/v2 v2.22.11-0.20251204091113-daccba6b93d7/go.mod h1:9sr22NZO5Kfh7unW/xZxkGYTmj2484/fCiE54gw7UTY= +github.com/securego/gosec/v2 v2.22.11 h1:tW+weM/hCM/GX3iaCV91d5I6hqaRT2TPsFM1+USPXwg= +github.com/securego/gosec/v2 v2.22.11/go.mod h1:KE4MW/eH0GLWztkbt4/7XpyH0zJBBnu7sYB4l6Wn7Mw= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= From ed88b76961e16b1ab2b52a3bc8a1c57ade553ce8 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 15 Jan 2026 13:45:18 +0100 Subject: [PATCH 0744/1068] Remove unused watch options Signed-off-by: Marek Siarkowicz --- .../test-template/robustness/traffic/main.go | 20 +++------ tests/robustness/client/watch.go | 3 -- tests/robustness/main_test.go | 1 - tests/robustness/options/options.go | 22 --------- tests/robustness/traffic/traffic.go | 45 +++++-------------- 5 files changed, 17 insertions(+), 74 deletions(-) delete mode 100644 tests/robustness/options/options.go diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 1ee02ca483a2..52356106eb39 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -32,7 +32,6 @@ import ( "go.etcd.io/etcd/tests/v3/antithesis/test-template/robustness/common" "go.etcd.io/etcd/tests/v3/robustness/client" "go.etcd.io/etcd/tests/v3/robustness/identity" - "go.etcd.io/etcd/tests/v3/robustness/options" robustnessrand "go.etcd.io/etcd/tests/v3/robustness/random" "go.etcd.io/etcd/tests/v3/robustness/report" "go.etcd.io/etcd/tests/v3/robustness/traffic" @@ -49,10 +48,6 @@ var ( MemberClientCount: 3, ClusterClientCount: 1, MaxNonUniqueRequestConcurrency: 3, - WatchConfig: options.WatchConfig{ - Interval: DefaultWatchInterval, - RevisionOffset: DefaultRevisionOffset, - }, } trafficNames = []string{ "etcd", @@ -124,7 +119,6 @@ func runTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, hosts [ MaxRevisionChan: maxRevisionChan, Cfg: watchConfig, ClientSet: watchSet, - WatchConfig: profile.WatchConfig, }) return err }) @@ -192,10 +186,9 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl defer wg.Done() defer c.Close() tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Finish: finish, - WatchConfig: profile.WatchConfig, + Client: c, + KeyStore: keyStore, + Finish: finish, }) }(c) } @@ -206,10 +199,9 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl defer wg.Done() defer c.Close() tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Finish: finish, - WatchConfig: profile.WatchConfig, + Client: c, + KeyStore: keyStore, + Finish: finish, }) }(c) } diff --git a/tests/robustness/client/watch.go b/tests/robustness/client/watch.go index 8883b78c10f8..438d1d6af822 100644 --- a/tests/robustness/client/watch.go +++ b/tests/robustness/client/watch.go @@ -21,8 +21,6 @@ import ( "go.uber.org/zap" "golang.org/x/sync/errgroup" - - "go.etcd.io/etcd/tests/v3/robustness/options" ) type CollectClusterWatchEventsParam struct { @@ -31,7 +29,6 @@ type CollectClusterWatchEventsParam struct { MaxRevisionChan <-chan int64 Cfg WatchConfig ClientSet *ClientSet - options.WatchConfig } func CollectClusterWatchEvents(ctx context.Context, param CollectClusterWatchEventsParam) error { diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index 74fc7c5525ff..be053f2356eb 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -173,7 +173,6 @@ func runScenario(ctx context.Context, t *testing.T, s scenarios.TestScenario, lg MaxRevisionChan: maxRevisionChan, Cfg: s.Watch, ClientSet: watchSet, - WatchConfig: s.Profile.WatchConfig, }) return err }) diff --git a/tests/robustness/options/options.go b/tests/robustness/options/options.go deleted file mode 100644 index b352930d3c5f..000000000000 --- a/tests/robustness/options/options.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2025 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package options - -import "time" - -type WatchConfig struct { - Interval time.Duration - RevisionOffset int64 -} diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index a7db41c03ac5..f1d7a2be280e 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -28,7 +28,6 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/client" "go.etcd.io/etcd/tests/v3/robustness/identity" "go.etcd.io/etcd/tests/v3/robustness/model" - "go.etcd.io/etcd/tests/v3/robustness/options" "go.etcd.io/etcd/tests/v3/robustness/report" "go.etcd.io/etcd/tests/v3/robustness/validate" ) @@ -49,10 +48,6 @@ var ( MemberClientCount: 6, ClusterClientCount: 2, MaxNonUniqueRequestConcurrency: 3, - WatchConfig: options.WatchConfig{ - Interval: DefaultWatchInterval, - RevisionOffset: DefaultRevisionOffset, - }, } HighTrafficProfile = Profile{ MinimalQPS: 100, @@ -61,10 +56,6 @@ var ( MemberClientCount: 6, ClusterClientCount: 2, MaxNonUniqueRequestConcurrency: 3, - WatchConfig: options.WatchConfig{ - Interval: DefaultWatchInterval, - RevisionOffset: DefaultRevisionOffset, - }, } ) @@ -134,10 +125,9 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 defer wg.Done() defer c.Close() traffic.RunWatchLoop(ctx, RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Finish: finish, - WatchConfig: profile.WatchConfig, + Client: c, + KeyStore: keyStore, + Finish: finish, }) }(c) } @@ -149,10 +139,9 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 defer wg.Done() defer c.Close() traffic.RunWatchLoop(ctx, RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Finish: finish, - WatchConfig: profile.WatchConfig, + Client: c, + KeyStore: keyStore, + Finish: finish, }) }(c) } @@ -336,7 +325,6 @@ type Profile struct { ClusterClientCount int ForbidCompaction bool CompactPeriod time.Duration - options.WatchConfig } func (p Profile) WithoutCompaction() Profile { @@ -349,16 +337,6 @@ func (p Profile) WithCompactionPeriod(cp time.Duration) Profile { return p } -func (p Profile) WithWatchInterval(interval time.Duration) Profile { - p.Interval = interval - return p -} - -func (p Profile) WithWatchRevisionOffset(offset int64) Profile { - p.RevisionOffset = offset - return p -} - type RunTrafficLoopParam struct { Client *client.RecordingClient QPSLimiter *rate.Limiter @@ -376,10 +354,9 @@ type RunCompactLoopParam struct { } type RunWatchLoopParam struct { - Client *client.RecordingClient - KeyStore *keyStore - Finish <-chan struct{} - options.WatchConfig // Embedded: Interval and RevisionOffset + Client *client.RecordingClient + KeyStore *keyStore + Finish <-chan struct{} } type Traffic interface { @@ -398,7 +375,7 @@ func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) return case <-p.Finish: return - case <-time.After(p.Interval): + case <-time.After(DefaultWatchInterval): // Time to spawn a new watch } @@ -407,7 +384,7 @@ func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) if err != nil { return err } - rev := resp.Header.Revision + p.RevisionOffset + rev := resp.Header.Revision + DefaultRevisionOffset watchCtx, cancel := context.WithCancel(ctx) defer cancel() From f73b9bd7dbc7b23c501ffa48d40ae1683d3b79d8 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 16 Jan 2026 01:19:59 +0900 Subject: [PATCH 0745/1068] dependency: bump github.com/google/yamlfmt from 0.20.0 to 0.21.0 Reference: - https://github.com/etcd-io/etcd/pull/21111 Signed-off-by: Chun-Hung Tseng --- go.work.sum | 2 -- tools/mod/go.mod | 3 ++- tools/mod/go.sum | 8 ++++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/go.work.sum b/go.work.sum index 7d42a2c0d262..f4daea826df4 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1088,6 +1088,4 @@ rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= -sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= -sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 1c9614e5be22..b724e479beb5 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -10,7 +10,7 @@ require ( github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint/v2 v2.8.0 - github.com/google/yamlfmt v0.20.0 + github.com/google/yamlfmt v0.21.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 github.com/ryancurrah/gomodguard v1.4.1 go.etcd.io/gofail v0.2.0 @@ -254,4 +254,5 @@ require ( k8s.io/klog/v2 v2.130.1 // indirect mvdan.cc/gofumpt v0.9.2 // indirect mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15 // indirect + sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 35041a099f7a..cf159893f442 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -236,8 +236,8 @@ github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6 h1:EEHtgt9IwisQ2AZ4pI github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/yamlfmt v0.20.0 h1:EfMuMFEZGnXPn2NY+KgJTH9sNs6P+am/Of6IwE2K6P8= -github.com/google/yamlfmt v0.20.0/go.mod h1:gs0UEklJOYkUJ+OOCG0hg9n+DzucKDPlJElTUasVNK8= +github.com/google/yamlfmt v0.21.0 h1:9FKApQkDpMKgBjwLFytBHUCgqnQgxaQnci0uiESfbzs= +github.com/google/yamlfmt v0.21.0/go.mod h1:q6FYExB+Ueu7jZDjKECJk+EaeDXJzJ6Ne0dxx69GWfI= github.com/gordonklaus/ineffassign v0.2.0 h1:Uths4KnmwxNJNzq87fwQQDDnbNb7De00VOk9Nu0TySs= github.com/gordonklaus/ineffassign v0.2.0/go.mod h1:TIpymnagPSexySzs7F9FnO1XFTy8IT3a59vmZp5Y9Lw= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= @@ -748,3 +748,7 @@ mvdan.cc/gofumpt v0.9.2 h1:zsEMWL8SVKGHNztrx6uZrXdp7AX8r421Vvp23sz7ik4= mvdan.cc/gofumpt v0.9.2/go.mod h1:iB7Hn+ai8lPvofHd9ZFGVg2GOr8sBUw1QUWjNbmIL/s= mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15 h1:ssMzja7PDPJV8FStj7hq9IKiuiKhgz9ErWw+m68e7DI= mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15/go.mod h1:4M5MMXl2kW6fivUT6yRGpLLPNfuGtU2Z0cPvFquGDYU= +sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= +sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= +sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= +sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= From 400f929c0821c673a6bed821fb4743bcd9c6f77b Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 16 Jan 2026 00:44:49 +0900 Subject: [PATCH 0746/1068] robustness: fix data race by tracking detached watch goroutines Root cause: `RunWatchLoop()` spawned detached goroutines that were not tracked by the main `sync.WaitGroup`. When the parent `SimulateTraffic` is about to exit and calls `wg.Done()`, it will unblocked immediately, allowing Reports() to read from the history while detached goroutines were still writing to it since not all of them have been terminated. Signed-off-by: Chun-Hung Tseng --- .../test-template/robustness/traffic/main.go | 14 ++++++----- tests/robustness/traffic/traffic.go | 23 +++++++++++-------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 52356106eb39..68ebcf997e55 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -186,9 +186,10 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl defer wg.Done() defer c.Close() tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Finish: finish, + Client: c, + KeyStore: keyStore, + Finish: finish, + WaitGroup: &wg, }) }(c) } @@ -199,9 +200,10 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl defer wg.Done() defer c.Close() tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Finish: finish, + Client: c, + KeyStore: keyStore, + Finish: finish, + WaitGroup: &wg, }) }(c) } diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index f1d7a2be280e..bb8ae0bbfc4d 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -125,9 +125,10 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 defer wg.Done() defer c.Close() traffic.RunWatchLoop(ctx, RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Finish: finish, + Client: c, + KeyStore: keyStore, + Finish: finish, + WaitGroup: &wg, }) }(c) } @@ -139,9 +140,10 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 defer wg.Done() defer c.Close() traffic.RunWatchLoop(ctx, RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Finish: finish, + Client: c, + KeyStore: keyStore, + Finish: finish, + WaitGroup: &wg, }) }(c) } @@ -354,9 +356,10 @@ type RunCompactLoopParam struct { } type RunWatchLoopParam struct { - Client *client.RecordingClient - KeyStore *keyStore - Finish <-chan struct{} + Client *client.RecordingClient + KeyStore *keyStore + Finish <-chan struct{} + WaitGroup *sync.WaitGroup } type Traffic interface { @@ -379,7 +382,9 @@ func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) // Time to spawn a new watch } + p.WaitGroup.Add(1) go func() error { + defer p.WaitGroup.Done() resp, err := p.Client.Get(ctx, cfg.watchKey) if err != nil { return err From c923a10cefa3bb69982d25464e0fcd9989b2861a Mon Sep 17 00:00:00 2001 From: Nont Date: Thu, 15 Jan 2026 22:09:48 -0600 Subject: [PATCH 0747/1068] Add a nil guard for e2e process Kill Signed-off-by: Nont --- tests/framework/e2e/etcd_process.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/framework/e2e/etcd_process.go b/tests/framework/e2e/etcd_process.go index fa1610bd6d94..7a85b29b6cb4 100644 --- a/tests/framework/e2e/etcd_process.go +++ b/tests/framework/e2e/etcd_process.go @@ -274,6 +274,9 @@ func (ep *EtcdServerProcess) Logs() LogsExpect { func (ep *EtcdServerProcess) Kill() error { ep.cfg.lg.Info("killing server...", zap.String("name", ep.cfg.Name)) + if ep.proc == nil { + return nil + } return ep.proc.Signal(syscall.SIGKILL) } From e8c261400318f90efb3040b3bdbfa409a87e41d4 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 16 Jan 2026 15:01:41 +0100 Subject: [PATCH 0748/1068] Put a timeout on watch request Signed-off-by: Marek Siarkowicz --- tests/robustness/traffic/traffic.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index bb8ae0bbfc4d..8ea72f862c65 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -391,7 +391,7 @@ func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) } rev := resp.Header.Revision + DefaultRevisionOffset - watchCtx, cancel := context.WithCancel(ctx) + watchCtx, cancel := context.WithTimeout(ctx, WatchTimeout) defer cancel() w := p.Client.Watch(watchCtx, cfg.watchKey, rev, true, true, true) for { From dd5ddf4775562b1d24131b7a5ace18b931e279fd Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Thu, 15 Jan 2026 12:57:19 +0000 Subject: [PATCH 0749/1068] Initialize confState from v3 store on bootstrap Signed-off-by: Benjamin Wang --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/etcdserver/bootstrap.go | 34 ++++++++++++++++++++++++++++++++++ server/etcdserver/server.go | 8 +++++++- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 12 files changed, 56 insertions(+), 16 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index cd10c50df513..5489444b8595 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -24,7 +24,7 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 - go.etcd.io/raft/v3 v3.6.0 + go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.uber.org/zap v1.27.1 ) diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 32c28fe0f805..a138b3f1026e 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -115,8 +115,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= -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.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51LgP6SUjROx7Ofqf8lGmeD/cCLaoagI= +go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= diff --git a/go.mod b/go.mod index 8ab99008f362..33e737cdc94c 100644 --- a/go.mod +++ b/go.mod @@ -32,7 +32,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/etcd/tests/v3 v3.0.0-00010101000000-000000000000 - go.etcd.io/raft/v3 v3.6.0 + go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 golang.org/x/tools v0.41.0 diff --git a/go.sum b/go.sum index 2bb6deb15be5..0de920437181 100644 --- a/go.sum +++ b/go.sum @@ -154,8 +154,8 @@ go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= -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.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51LgP6SUjROx7Ofqf8lGmeD/cCLaoagI= +go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= diff --git a/server/etcdserver/bootstrap.go b/server/etcdserver/bootstrap.go index f7fcf7edb49b..3d480b216291 100644 --- a/server/etcdserver/bootstrap.go +++ b/server/etcdserver/bootstrap.go @@ -103,6 +103,20 @@ func bootstrap(cfg config.ServerConfig) (b *bootstrappedServer, err error) { return nil, err } + if haveWAL { + sn := s.wal.snapshot + if sn == nil { + sn = &raftpb.Snapshot{} + } + cs := buildConfStateFromV3store(cfg.Logger, backend.be) + + sn.Metadata.ConfState = cs + s.wal.snapshot = sn + + cfg.Logger.Info("Constructed a new raft snapshot from v3 state", zap.Uint64("index", sn.Metadata.Index), + zap.Uint64("term", sn.Metadata.Term), zap.String("confState", sn.Metadata.ConfState.String())) + } + cfg.Logger.Info("bootstrapping raft") raft := bootstrapRaft(cfg, cluster, s.wal) return &bootstrappedServer{ @@ -114,6 +128,25 @@ func bootstrap(cfg config.ServerConfig) (b *bootstrappedServer, err error) { }, nil } +func buildConfStateFromV3store(lg *zap.Logger, be backend.Backend) raftpb.ConfState { + members, _ := schema.NewMembershipBackend(lg, be).MustReadMembersFromBackend() + var ( + voters []uint64 + learners []uint64 + ) + for _, m := range members { + if m.IsLearner { + learners = append(learners, uint64(m.ID)) + } else { + voters = append(voters, uint64(m.ID)) + } + } + return raftpb.ConfState{ + Voters: voters, + Learners: learners, + } +} + type bootstrappedServer struct { storage *bootstrappedStorage cluster *bootstrappedCluster @@ -399,6 +432,7 @@ func recoverSnapshot(cfg config.ServerConfig, be backend.Backend, beExist bool, zap.Uint64("snapshot-index", snapshot.Metadata.Index), zap.String("snapshot-size", humanize.Bytes(uint64(snapshot.Size()))), zap.String("confState", snapshot.Metadata.ConfState.String()), + zap.Int("walSnaps-count", len(walSnaps)), ) } diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index 6824580bafd0..b1f80094bbc5 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -2008,7 +2008,13 @@ func (s *EtcdServer) applyConfChange(cc raftpb.ConfChange, confState *raftpb.Con return false, err } - *confState = *s.r.ApplyConfChange(cc) + // We don't validate the configuration change when `shouldApplyV3` + // is false, so we shouldn't apply it to raft either in this case. + // Otherwise, we might apply an invalid confChange (which failed + // the validation previously) to raft on bootstrap. + if shouldApplyV3 { + *confState = *s.r.ApplyConfChange(cc) + } s.beHooks.SetConfState(confState) switch cc.Type { case raftpb.ConfChangeAddNode, raftpb.ConfChangeAddLearnerNode: diff --git a/server/go.mod b/server/go.mod index 454890ec3a71..cde9251d4643 100644 --- a/server/go.mod +++ b/server/go.mod @@ -30,7 +30,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 - go.etcd.io/raft/v3 v3.6.0 + go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 go.opentelemetry.io/otel v1.39.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 diff --git a/server/go.sum b/server/go.sum index 3ac39687f76f..e5c815d928bb 100644 --- a/server/go.sum +++ b/server/go.sum @@ -95,8 +95,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= -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.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51LgP6SUjROx7Ofqf8lGmeD/cCLaoagI= +go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= diff --git a/tests/go.mod b/tests/go.mod index b6f3ff58da3b..331c1d2dabe6 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -41,7 +41,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/gofail v0.2.0 - go.etcd.io/raft/v3 v3.6.0 + go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 go.opentelemetry.io/otel v1.39.0 go.opentelemetry.io/otel/sdk v1.39.0 diff --git a/tests/go.sum b/tests/go.sum index 70d15a6acfef..37920eb59355 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -160,8 +160,8 @@ go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= -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.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51LgP6SUjROx7Ofqf8lGmeD/cCLaoagI= +go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index b724e479beb5..1c0c9fcb4dd7 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -15,7 +15,7 @@ require ( github.com/ryancurrah/gomodguard v1.4.1 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 - go.etcd.io/raft/v3 v3.6.0 + go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee golang.org/x/tools v0.41.0 gotest.tools/gotestsum v1.13.0 gotest.tools/v3 v3.5.2 diff --git a/tools/mod/go.sum b/tools/mod/go.sum index cf159893f442..c48e9e026348 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -548,8 +548,8 @@ go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 h1:QQiUXlqz+d96jyNG71NE+IGTgOK6Xlhdx+PzvfbLHlQ= go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116/go.mod h1:F9kog+iVAuvPJucb1dkYcDcbV0g4uyGEHllTP5NrXiw= -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.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51LgP6SUjROx7Ofqf8lGmeD/cCLaoagI= +go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= From 3372fdd87d84f83dcecafa011027e775917d7ddc Mon Sep 17 00:00:00 2001 From: Zhijun Date: Fri, 16 Jan 2026 18:43:04 +0800 Subject: [PATCH 0750/1068] Extend the existing TestLeaseWithRequireLeader with server error metric Signed-off-by: Zhijun --- .../integration/clientv3/lease/lease_test.go | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/integration/clientv3/lease/lease_test.go b/tests/integration/clientv3/lease/lease_test.go index 9ee6694018e7..074c5566eb0e 100644 --- a/tests/integration/clientv3/lease/lease_test.go +++ b/tests/integration/clientv3/lease/lease_test.go @@ -20,6 +20,7 @@ import ( "fmt" "reflect" "sort" + "strconv" "sync" "testing" "time" @@ -749,6 +750,9 @@ func TestLeaseWithRequireLeader(t *testing.T) { t.Fatalf("leader not required first keep-alive timed out") } + prevUnavailableCount := getLeaseKeepAliveMetric(t, clus.Members[0], "Unavailable") + prevCanceledCount := getLeaseKeepAliveMetric(t, clus.Members[0], "Canceled") + clus.Members[1].Stop(t) // kaReqLeader may issue multiple requests while waiting for the first // response from proxy server; drain any stray keepalive responses @@ -766,6 +770,16 @@ func TestLeaseWithRequireLeader(t *testing.T) { case <-time.After(5 * time.Second): t.Fatal("keepalive with require leader took too long to close") } + + require.Eventuallyf(t, func() bool { + return getLeaseKeepAliveMetric(t, clus.Members[0], "Unavailable") > prevUnavailableCount + }, 3*time.Second, 100*time.Millisecond, + "expected Unavailable metric to increase after leader loss, prev count: %d", prevUnavailableCount) + // Ensure the error is Unavailable, not Canceled + currentCanceledCount := getLeaseKeepAliveMetric(t, clus.Members[0], "Canceled") + require.Equalf(t, prevCanceledCount, currentCanceledCount, + "Canceled metric should not change, expected %d, got %d", prevCanceledCount, currentCanceledCount) + select { case _, ok := <-kaWait: require.Truef(t, ok, "got closed channel with no require leader, expected non-closed") @@ -773,3 +787,16 @@ func TestLeaseWithRequireLeader(t *testing.T) { // wait some to detect any closes happening soon after kaReqLeader closing } } + +func getLeaseKeepAliveMetric(t *testing.T, member *integration.Member, grpcCode string) int64 { + t.Helper() + metricVal, err := member.Metric( + "grpc_server_handled_total", + `grpc_method="LeaseKeepAlive"`, + fmt.Sprintf(`grpc_code="%v"`, grpcCode), + ) + require.NoError(t, err) + count, err := strconv.ParseInt(metricVal, 10, 64) + require.NoError(t, err) + return count +} From 76085dd0c3edd0774bd6b30eee70be105d076b80 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Thu, 15 Jan 2026 15:39:19 -0500 Subject: [PATCH 0751/1068] *: fix TestV2DeprecationSnapshotMatches case Signed-off-by: Wei Fu --- server/etcdserver/api/membership/cluster.go | 2 +- .../etcdserver/api/membership/cluster_test.go | 2 +- server/etcdserver/api/membership/storev2.go | 2 +- tests/e2e/v2store_deprecation_test.go | 108 ++++++++++++++---- 4 files changed, 89 insertions(+), 25 deletions(-) diff --git a/server/etcdserver/api/membership/cluster.go b/server/etcdserver/api/membership/cluster.go index c97636450cad..1441a7d71878 100644 --- a/server/etcdserver/api/membership/cluster.go +++ b/server/etcdserver/api/membership/cluster.go @@ -718,7 +718,7 @@ func (c *RaftCluster) IsReadyToPromoteMember(id uint64) bool { return true } -func membersFromStore(lg *zap.Logger, st v2store.Store) (map[types.ID]*Member, map[types.ID]bool) { +func MembersFromStore(lg *zap.Logger, st v2store.Store) (map[types.ID]*Member, map[types.ID]bool) { members := make(map[types.ID]*Member) removed := make(map[types.ID]bool) e, err := st.Get(StoreMembersPrefix, true, true) diff --git a/server/etcdserver/api/membership/cluster_test.go b/server/etcdserver/api/membership/cluster_test.go index b42a606a46a0..4d1e4d960599 100644 --- a/server/etcdserver/api/membership/cluster_test.go +++ b/server/etcdserver/api/membership/cluster_test.go @@ -1155,7 +1155,7 @@ func TestClusterStore(t *testing.T) { c.Store(st) // Verify that the members are properly stored - mst, rst := membersFromStore(c.lg, st) + mst, rst := MembersFromStore(c.lg, st) for _, mem := range tt.mems { assert.Equal(t, mem, mst[mem.ID]) } diff --git a/server/etcdserver/api/membership/storev2.go b/server/etcdserver/api/membership/storev2.go index 22c569c881a8..fd90f785a550 100644 --- a/server/etcdserver/api/membership/storev2.go +++ b/server/etcdserver/api/membership/storev2.go @@ -115,7 +115,7 @@ func IsMetaStoreOnly(store v2store.Store) (bool, error) { } func verifyNoMembersInStore(lg *zap.Logger, s v2store.Store) { - members, removed := membersFromStore(lg, s) + members, removed := MembersFromStore(lg, s) if len(members) != 0 || len(removed) != 0 { lg.Panic("store has membership info") } diff --git a/tests/e2e/v2store_deprecation_test.go b/tests/e2e/v2store_deprecation_test.go index e0900029f01d..ccec2082832c 100644 --- a/tests/e2e/v2store_deprecation_test.go +++ b/tests/e2e/v2store_deprecation_test.go @@ -16,21 +16,22 @@ package e2e import ( "context" - "reflect" + "fmt" "sort" "strings" "testing" - "github.com/coreos/go-semver/semver" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zaptest" "go.etcd.io/etcd/client/pkg/v3/fileutil" + "go.etcd.io/etcd/client/pkg/v3/types" + "go.etcd.io/etcd/server/v3/etcdserver" "go.etcd.io/etcd/server/v3/etcdserver/api/membership" - betesting "go.etcd.io/etcd/server/v3/storage/backend/testing" - "go.etcd.io/etcd/server/v3/storage/schema" + "go.etcd.io/etcd/server/v3/etcdserver/api/snap" + "go.etcd.io/etcd/server/v3/etcdserver/api/v2store" "go.etcd.io/etcd/tests/v3/framework/config" "go.etcd.io/etcd/tests/v3/framework/e2e" ) @@ -45,6 +46,8 @@ func TestV2DeprecationNotYet(t *testing.T) { assert.NoError(t, err) } +// TestV2DeprecationSnapshotMatches ensures that etcd v3.7 still commits v2 store +// changes to the snapshot for backwards compatibility. func TestV2DeprecationSnapshotMatches(t *testing.T) { e2e.BeforeTest(t) lastReleaseData := t.TempDir() @@ -52,17 +55,56 @@ func TestV2DeprecationSnapshotMatches(t *testing.T) { if !fileutil.Exist(e2e.BinPath.EtcdLastRelease) { t.Skipf("%q does not exist", e2e.BinPath.EtcdLastRelease) } + ctx, cancel := context.WithCancel(t.Context()) + defer cancel() + var snapshotCount uint64 = 10 + epc := runEtcdAndCreateSnapshot(t, e2e.LastVersion, lastReleaseData, snapshotCount) oldMemberDataDir := epc.Procs[0].Config().DataDirPath + cc1 := epc.Etcdctl() + addAndRemoveKeysAndMembers(ctx, t, cc1, snapshotCount) require.NoError(t, epc.Close()) + epc = runEtcdAndCreateSnapshot(t, e2e.CurrentVersion, currentReleaseData, snapshotCount) newMemberDataDir := epc.Procs[0].Config().DataDirPath + cc2 := epc.Etcdctl() + addAndRemoveKeysAndMembers(ctx, t, cc2, snapshotCount) require.NoError(t, epc.Close()) assertSnapshotsMatch(t, oldMemberDataDir, newMemberDataDir) } +func addAndRemoveKeysAndMembers(ctx context.Context, tb testing.TB, cc *e2e.EtcdctlV3, snapshotCount uint64) { + // Execute some non-trivial key&member operation + var i uint64 + for i = 0; i < snapshotCount*3; i++ { + _, err := cc.Put(ctx, fmt.Sprintf("%d", i), "1", config.PutOptions{}) + require.NoError(tb, err) + } + member1, err := cc.MemberAddAsLearner(ctx, "member1", []string{"http://127.0.0.1:2000"}) + require.NoError(tb, err) + + for i = 0; i < snapshotCount*2; i++ { + _, err = cc.Delete(ctx, fmt.Sprintf("%d", i), config.DeleteOptions{}) + require.NoError(tb, err) + } + _, err = cc.MemberRemove(ctx, member1.Member.ID) + require.NoError(tb, err) + + for i = 0; i < snapshotCount; i++ { + _, err = cc.Put(ctx, fmt.Sprintf("%d", i), "2", config.PutOptions{}) + require.NoError(tb, err) + } + _, err = cc.MemberAddAsLearner(ctx, "member2", []string{"http://127.0.0.1:2001"}) + require.NoError(tb, err) + + for i = 0; i < snapshotCount/2; i++ { + _, err = cc.Put(ctx, fmt.Sprintf("%d", i), "3", config.PutOptions{}) + assert.NoError(tb, err) + } +} + func TestV2DeprecationSnapshotRecover(t *testing.T) { e2e.BeforeTest(t) dataDir := t.TempDir() @@ -119,36 +161,58 @@ func filterSnapshotFiles(path string) bool { func assertSnapshotsMatch(tb testing.TB, firstDataDir, secondDataDir string) { lg := zaptest.NewLogger(tb) + firstFiles, err := fileutil.ListFiles(firstDataDir, filterSnapshotFiles) require.NoError(tb, err) + secondFiles, err := fileutil.ListFiles(secondDataDir, filterSnapshotFiles) require.NoError(tb, err) + assert.NotEmpty(tb, firstFiles) assert.NotEmpty(tb, secondFiles) assert.Len(tb, secondFiles, len(firstFiles)) + sort.Strings(firstFiles) sort.Strings(secondFiles) for i := 0; i < len(firstFiles); i++ { - assertMembershipEqual(tb, lg) + assertV2StoreMembershipEqual(tb, lg, firstFiles[i], secondFiles[i]) } } -func assertMembershipEqual(tb testing.TB, lg *zap.Logger) { - rc1 := membership.NewCluster(zaptest.NewLogger(tb)) - be1, _ := betesting.NewDefaultTmpBackend(tb) - defer betesting.Close(tb, be1) - rc1.SetBackend(schema.NewMembershipBackend(lg, be1)) - rc1.Recover(func(lg *zap.Logger, v *semver.Version) {}) - - rc2 := membership.NewCluster(zaptest.NewLogger(tb)) - be2, _ := betesting.NewDefaultTmpBackend(tb) - defer betesting.Close(tb, be2) - rc2.SetBackend(schema.NewMembershipBackend(lg, be2)) - rc2.Recover(func(lg *zap.Logger, v *semver.Version) {}) - - // membership should match - if !reflect.DeepEqual(rc1.Members(), rc2.Members()) { - tb.Logf("memberids_from_last_version = %+v, member_ids_from_current_version = %+v", rc1.MemberIDs(), rc2.MemberIDs()) - tb.Errorf("members_from_last_version_snapshot = %+v, members_from_current_version_snapshot %+v", rc1.Members(), rc2.Members()) +func assertV2StoreMembershipEqual(tb testing.TB, lg *zap.Logger, firstSnapPath, secondSnapPath string) { + st1 := loadV2StoreData(tb, lg, firstSnapPath) + st2 := loadV2StoreData(tb, lg, secondSnapPath) + + st1Members, st1Deleted := membership.MembersFromStore(lg, st1) + st2Members, st2Deleted := membership.MembersFromStore(lg, st2) + + require.Lenf(tb, st1Members, len(st2Members), "number of members in v2 store do not match") + require.NotEmptyf(tb, st1Members, "no members found in v2 store") + require.Lenf(tb, st1Deleted, len(st2Deleted), "number of deleted members in v2 store do not match") + + // remove ID because original ID was generated from hash of peerURLs + clusterName + time + require.Equal(tb, rebuildMembers(tb, st1Members), rebuildMembers(tb, st2Members)) +} + +// loadV2StoreData reads v2 store from the snapshot file at fpath. +func loadV2StoreData(tb testing.TB, lg *zap.Logger, fpath string) v2store.Store { + sn, err := snap.Read(lg, fpath) + require.NoError(tb, err) + + v2data := v2store.New(etcdserver.StoreClusterPrefix, etcdserver.StoreKeysPrefix) + v2data.Recovery(sn.Data) + return v2data +} + +// rebuildMembers rebuilds the members map with zeroed IDs and peerURLs as keys. +func rebuildMembers(tb testing.TB, members map[types.ID]*membership.Member) map[string]*membership.Member { + newMembers := make(map[string]*membership.Member) + for _, m := range members { + peerURLs, err := types.NewURLs(m.PeerURLs) + require.NoError(tb, err) + + m.ID = 0 + newMembers[peerURLs.String()] = m } + return newMembers } From 6ad66ea40dcfe18024ef0d68519fcfc216c264b6 Mon Sep 17 00:00:00 2001 From: Yohei Yamamoto Date: Sat, 17 Jan 2026 17:52:22 +0900 Subject: [PATCH 0752/1068] test: fix typo in log message Signed-off-by: Yohei Yamamoto --- tests/e2e/utl_migrate_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/utl_migrate_test.go b/tests/e2e/utl_migrate_test.go index b6f887319c02..6bdd48fdc5f0 100644 --- a/tests/e2e/utl_migrate_test.go +++ b/tests/e2e/utl_migrate_test.go @@ -163,7 +163,7 @@ func TestEtctlutlMigrate(t *testing.T) { require.NoError(t, e2e.SpawnWithExpect(append(prefixArgs, "put", fmt.Sprintf("%d", i), "value"), expect.ExpectedResponse{Value: "OK"})) } - t.Log("Stopping the the members") + t.Log("Stopping the members") for i := 0; i < len(epc.Procs); i++ { t.Logf("Stopping server %d: %v", i, epc.Procs[i].EndpointsGRPC()) err = epc.Procs[i].Stop() From 1f83752cb3bc355cfd85d6453b1f045c4d91bfa9 Mon Sep 17 00:00:00 2001 From: HossamSaberX Date: Sun, 18 Jan 2026 05:57:40 +0200 Subject: [PATCH 0753/1068] cache: deflake TestCacheCompactionResync The test had a race condition where Phase 3 checked lastStartRev before the cache finished updating it. The mw.registered channel was already closed from Phase 1, so <-mw.registered returned immediately instead of waiting. Fix: Add resetRegistered() to create a fresh channel for Phase 3, ensuring the test properly waits for the cache to complete recovery. Fixes #21150 Signed-off-by: HossamSaberX --- cache/cache_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cache/cache_test.go b/cache/cache_test.go index 1d8851754a2f..5cf338da3817 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -455,7 +455,9 @@ func TestCacheCompactionResync(t *testing.T) { } t.Log("Phase 3: resync after compaction") + mw.resetRegistered() mw.triggerCreatedNotify() + <-mw.registered expectSnapshotRev := int64(20) ctxResync, cancelResync := context.WithTimeout(t.Context(), time.Second) defer cancelResync() @@ -558,6 +560,8 @@ func (m *mockWatcher) getLastStartRev() int64 { } func (m *mockWatcher) signalRegistration() { + m.mu.Lock() + defer m.mu.Unlock() select { case <-m.registered: default: @@ -565,6 +569,12 @@ func (m *mockWatcher) signalRegistration() { } } +func (m *mockWatcher) resetRegistered() { + m.mu.Lock() + defer m.mu.Unlock() + m.registered = make(chan struct{}) +} + func (m *mockWatcher) streamResponses(ctx context.Context, out chan<- clientv3.WatchResponse) { defer func() { close(out) From 31a5ef64cdecc4fe87f3748ecbda17c4b61d30f3 Mon Sep 17 00:00:00 2001 From: Nont Date: Sun, 18 Jan 2026 15:41:23 -0600 Subject: [PATCH 0754/1068] Add header check for range tests Signed-off-by: Nont --- tests/common/kv_test.go | 85 ++++++++++++++++++++++++++++------------- 1 file changed, 59 insertions(+), 26 deletions(-) diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index e0bda6197c8a..613d53f6c004 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -22,6 +22,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/api/v3/mvccpb" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/tests/v3/framework/config" "go.etcd.io/etcd/tests/v3/framework/testutils" @@ -63,46 +65,77 @@ func TestKVGet(t *testing.T) { cc := testutils.MustClient(clus.Client()) testutils.ExecuteUntil(ctx, t, func() { - var ( - kvs = []string{"a", "b", "c", "c", "c", "foo", "foo/abc", "fop"} - wantKvs = []string{"a", "b", "c", "foo", "foo/abc", "fop"} - kvsByVersion = []string{"a", "b", "foo", "foo/abc", "fop", "c"} - reversedKvs = []string{"fop", "foo/abc", "foo", "c", "b", "a"} - ) + kvs := []string{"a", "b", "c", "c", "c", "foo", "foo/abc", "fop"} + var firstHeader *etcdserverpb.ResponseHeader for i := range kvs { - _, err := cc.Put(ctx, kvs[i], "bar", config.PutOptions{}) + resp, err := cc.Put(ctx, kvs[i], "bar", config.PutOptions{}) require.NoErrorf(t, err, "count not put key %q", kvs[i]) + if i == 0 { + firstHeader = resp.Header + } + } + + createKV := func(key, val string, createRev, modRev, ver int64) *mvccpb.KeyValue { + return &mvccpb.KeyValue{ + Key: []byte(key), + Value: []byte(val), + CreateRevision: createRev, + ModRevision: modRev, + Version: ver, + } + } + + createHeader := func(rev int64) *etcdserverpb.ResponseHeader { + return &etcdserverpb.ResponseHeader{ + ClusterId: firstHeader.ClusterId, + Revision: rev, + RaftTerm: firstHeader.RaftTerm, + } } + + firstRev := firstHeader.Revision + kvA := createKV("a", "bar", firstRev, firstRev, 1) + kvB := createKV("b", "bar", firstRev+1, firstRev+1, 1) + kvC := createKV("c", "bar", firstRev+2, firstRev+4, 3) + kvCV1 := createKV("c", "bar", firstRev+2, firstRev+2, 1) + kvFoo := createKV("foo", "bar", firstRev+5, firstRev+5, 1) + kvFooAbc := createKV("foo/abc", "bar", firstRev+6, firstRev+6, 1) + kvFop := createKV("fop", "bar", firstRev+7, firstRev+7, 1) + + allKvs := []*mvccpb.KeyValue{kvA, kvB, kvC, kvFoo, kvFooAbc, kvFop} + kvsByVersion := []*mvccpb.KeyValue{kvA, kvB, kvFoo, kvFooAbc, kvFop, kvC} + reversedKvs := []*mvccpb.KeyValue{kvFop, kvFooAbc, kvFoo, kvC, kvB, kvA} + tests := []struct { begin string end string options config.GetOptions - wkv []string + wantResponse *clientv3.GetResponse }{ - {begin: "a", wkv: wantKvs[:1]}, - {begin: "a", options: config.GetOptions{Serializable: true}, wkv: wantKvs[:1]}, - {begin: "a", options: config.GetOptions{End: "c"}, wkv: wantKvs[:2]}, - {begin: "", options: config.GetOptions{Prefix: true}, wkv: wantKvs}, - {begin: "", options: config.GetOptions{FromKey: true}, wkv: wantKvs}, - {begin: "a", options: config.GetOptions{End: "x"}, wkv: wantKvs}, - {begin: "", options: config.GetOptions{Prefix: true, Revision: 4}, wkv: kvs[:3]}, - {begin: "a", options: config.GetOptions{CountOnly: true}, wkv: nil}, - {begin: "foo", options: config.GetOptions{Prefix: true}, wkv: []string{"foo", "foo/abc"}}, - {begin: "foo", options: config.GetOptions{FromKey: true}, wkv: []string{"foo", "foo/abc", "fop"}}, - {begin: "", options: config.GetOptions{Prefix: true, Limit: 2}, wkv: wantKvs[:2]}, - {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByModRevision}, wkv: wantKvs}, - {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByVersion}, wkv: kvsByVersion}, - {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortNone, SortBy: clientv3.SortByCreateRevision}, wkv: wantKvs}, - {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByCreateRevision}, wkv: reversedKvs}, - {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wkv: reversedKvs}, + {begin: "a", wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, + {begin: "a", options: config.GetOptions{Serializable: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, + {begin: "a", options: config.GetOptions{End: "c"}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 2, Kvs: []*mvccpb.KeyValue{kvA, kvB}}}, + {begin: "", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, + {begin: "", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, + {begin: "a", options: config.GetOptions{End: "x"}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, + {begin: "", options: config.GetOptions{Prefix: true, Revision: int(firstRev + 2)}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 3, Kvs: []*mvccpb.KeyValue{kvA, kvB, kvCV1}}}, + {begin: "a", options: config.GetOptions{CountOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: nil}}, + {begin: "foo", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 2, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc}}}, + {begin: "foo", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 3, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc, kvFop}}}, + {begin: "", options: config.GetOptions{Prefix: true, Limit: 2}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB}, More: true}}, + {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, + {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: kvsByVersion}}, + {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortNone, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, + {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvs}}, + {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvs}}, } for _, tt := range tests { resp, err := cc.Get(ctx, tt.begin, tt.options) require.NoErrorf(t, err, "count not get key %q, err: %s", tt.begin, err) - kvs := testutils.KeysFromGetResponse(resp) - assert.Equal(t, tt.wkv, kvs) + resp.Header.MemberId = 0 + assert.Equal(t, tt.wantResponse, resp) } }) }) From 5ff3e080797adafaccf09fe19d342aa38c634d15 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Thu, 15 Jan 2026 16:03:53 -0500 Subject: [PATCH 0755/1068] scripts: do not eat error Signed-off-by: Wei Fu --- scripts/test.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index 3b45c0d8cc06..bb1c1317232d 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -154,7 +154,7 @@ function integration_pass { -timeout="${TIMEOUT:-15m}" \ "${COMMON_TEST_FLAGS[@]}" \ "${RUN_ARG[@]}" \ - "$@" + "$@" || return 2 run_go_tests ./tests/common/... \ -p=2 \ @@ -163,7 +163,7 @@ function integration_pass { -timeout="${TIMEOUT:-15m}" \ "${COMMON_TEST_FLAGS[@]}" \ "${RUN_ARG[@]}" \ - "$@" + "$@" || return 2 integration_extra "$@" } @@ -173,7 +173,8 @@ function e2e_pass { run_go_tests_expanding_packages ./tests/e2e/... \ -timeout="${TIMEOUT:-30m}" \ "${RUN_ARG[@]}" \ - "$@" + "$@" || return 2 + run_go_tests_expanding_packages ./tests/common/... \ -tags=e2e \ -timeout="${TIMEOUT:-30m}" \ @@ -190,7 +191,7 @@ function robustness_pass { } function integration_e2e_pass { - run_pass "integration" "${@}" + run_pass "integration" "${@}" || return 2 run_pass "e2e" "${@}" } @@ -212,7 +213,7 @@ function generic_checker { } function grpcproxy_pass { - run_pass "grpcproxy_integration" "${@}" + run_pass "grpcproxy_integration" "${@}" || return 2 run_pass "grpcproxy_e2e" "${@}" } From 3035e7fe9e22d1f329544303cc1d40c1330dac16 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Mon, 19 Jan 2026 10:49:40 +0000 Subject: [PATCH 0756/1068] Keep the --snapshot-count flag We won't generate v2 snapshot files in 3.8 anymore, but etcd is still generating snapshot periodically and will keep this behaviour. During etcd generating snapshot, it does the following two things: 1. generate a snapshot entry in WAL file 2. purge old raft entries So we need to keep the flag --snapshot-count so that users can configure how frequently the snapshot is generated. Signed-off-by: Benjamin Wang --- server/etcdmain/config.go | 2 -- server/etcdmain/help.go | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/server/etcdmain/config.go b/server/etcdmain/config.go index 0040d24e71ba..8f16166759fc 100644 --- a/server/etcdmain/config.go +++ b/server/etcdmain/config.go @@ -58,8 +58,6 @@ var ( } deprecatedFlags = map[string]string{ - // TODO: remove in 3.7. - "snapshot-count": "--snapshot-count is deprecated in 3.6 and will be decommissioned in 3.7.", "max-snapshots": "--max-snapshots is deprecated in 3.6 and will be decommissioned in 3.8.", "v2-deprecation": "--v2-deprecation is deprecated and scheduled for removal in v3.8. The default value is enforced, ignoring user input.", } diff --git a/server/etcdmain/help.go b/server/etcdmain/help.go index ae02b56ec90e..f8fd037480e4 100644 --- a/server/etcdmain/help.go +++ b/server/etcdmain/help.go @@ -57,7 +57,7 @@ Member: --wal-dir '' Path to the dedicated wal directory. --snapshot-count '10000' - Number of committed transactions to trigger a snapshot to disk. Deprecated in v3.6 and will be decommissioned in v3.7. + Number of committed transactions to trigger a snapshot. --heartbeat-interval '100' Time (in milliseconds) of a heartbeat interval. --election-timeout '1000' From d92210f070332f7023848ec18feca83ff64bd948 Mon Sep 17 00:00:00 2001 From: Nont Date: Mon, 19 Jan 2026 20:57:16 -0600 Subject: [PATCH 0757/1068] Add keys-only test cases for Range Signed-off-by: Nont --- tests/common/kv_test.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index 613d53f6c004..17adc04f7128 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -16,6 +16,7 @@ package common import ( "context" + "slices" "testing" "time" @@ -106,6 +107,12 @@ func TestKVGet(t *testing.T) { allKvs := []*mvccpb.KeyValue{kvA, kvB, kvC, kvFoo, kvFooAbc, kvFop} kvsByVersion := []*mvccpb.KeyValue{kvA, kvB, kvFoo, kvFooAbc, kvFop, kvC} reversedKvs := []*mvccpb.KeyValue{kvFop, kvFooAbc, kvFoo, kvC, kvB, kvA} + allKvsKeysOnly := make([]*mvccpb.KeyValue, 0, len(allKvs)) + for _, kv := range allKvs { + allKvsKeysOnly = append(allKvsKeysOnly, &mvccpb.KeyValue{Key: kv.Key, CreateRevision: kv.CreateRevision, ModRevision: kv.ModRevision, Version: kv.Version}) + } + reversedKvsKeysOnly := slices.Clone(allKvsKeysOnly) + slices.Reverse(reversedKvsKeysOnly) tests := []struct { begin string @@ -130,6 +137,8 @@ func TestKVGet(t *testing.T) { {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortNone, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvs}}, {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvs}}, + {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, KeysOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvsKeysOnly}}, + {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, KeysOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvsKeysOnly}}, } for _, tt := range tests { resp, err := cc.Get(ctx, tt.begin, tt.options) From 8e8d07eb7774f52819e9b5736a6ee6bbe6d0aa90 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 19 Jan 2026 00:32:11 +0900 Subject: [PATCH 0758/1068] robustness: add `ForbidRunWatchLoop` to toggle `RunWatchLoop` Regressions not involving watch have ForbidRunWatchLoop set to true. Signed-off-by: Chun-Hung Tseng --- .../test-template/robustness/traffic/main.go | 56 ++++++++-------- tests/robustness/scenarios/scenarios.go | 8 +-- tests/robustness/traffic/traffic.go | 66 +++++++++++-------- 3 files changed, 70 insertions(+), 60 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 68ebcf997e55..3c38bf5550f3 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -179,33 +179,35 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl }) }(c) } - for i := range profile.MemberClientCount { - c := connect(clientSet, []string{hosts[i%len(hosts)]}) - wg.Add(1) - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Finish: finish, - WaitGroup: &wg, - }) - }(c) - } - for range profile.ClusterClientCount { - c := connect(clientSet, hosts) - wg.Add(1) - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Finish: finish, - WaitGroup: &wg, - }) - }(c) + if !profile.ForbidRunWatchLoop { + for i := range profile.MemberClientCount { + c := connect(clientSet, []string{hosts[i%len(hosts)]}) + wg.Add(1) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ + Client: c, + KeyStore: keyStore, + Finish: finish, + WaitGroup: &wg, + }) + }(c) + } + for range profile.ClusterClientCount { + c := connect(clientSet, hosts) + wg.Add(1) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ + Client: c, + KeyStore: keyStore, + Finish: finish, + WaitGroup: &wg, + }) + }(c) + } } wg.Add(1) compactClient := connect(clientSet, hosts) diff --git a/tests/robustness/scenarios/scenarios.go b/tests/robustness/scenarios/scenarios.go index 2368c2733b8c..4b1febf42bc8 100644 --- a/tests/robustness/scenarios/scenarios.go +++ b/tests/robustness/scenarios/scenarios.go @@ -167,7 +167,7 @@ func Regression(t *testing.T) []TestScenario { scenarios = append(scenarios, TestScenario{ Name: "Issue14370", Failpoint: failpoint.RaftBeforeSavePanic, - Profile: traffic.LowTraffic, + Profile: traffic.LowTraffic.WithoutWatchLoop(), Traffic: traffic.EtcdPutDeleteLease, Cluster: *e2e.NewConfig( e2e.WithClusterSize(1), @@ -177,7 +177,7 @@ func Regression(t *testing.T) []TestScenario { scenarios = append(scenarios, TestScenario{ Name: "Issue14685", Failpoint: failpoint.DefragBeforeCopyPanic, - Profile: traffic.LowTraffic, + Profile: traffic.LowTraffic.WithoutWatchLoop(), Traffic: traffic.EtcdPutDeleteLease, Cluster: *e2e.NewConfig( e2e.WithClusterSize(1), @@ -187,7 +187,7 @@ func Regression(t *testing.T) []TestScenario { scenarios = append(scenarios, TestScenario{ Name: "Issue13766", Failpoint: failpoint.KillFailpoint, - Profile: traffic.HighTrafficProfile, + Profile: traffic.HighTrafficProfile.WithoutWatchLoop(), Traffic: traffic.EtcdPut, Cluster: *e2e.NewConfig( e2e.WithSnapshotCount(100), @@ -219,7 +219,7 @@ func Regression(t *testing.T) []TestScenario { scenarios = append(scenarios, TestScenario{ Name: "Issue17780", - Profile: traffic.LowTraffic.WithoutCompaction(), + Profile: traffic.LowTraffic.WithoutCompaction().WithoutWatchLoop(), Failpoint: failpoint.BatchCompactBeforeSetFinishedCompactPanic, Traffic: traffic.Kubernetes, Cluster: *e2e.NewConfig( diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index 8ea72f862c65..d2285a164699 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -117,35 +117,37 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 }) }(c) } - for i := range profile.MemberClientCount { - wg.Add(1) - c, nerr := clientSet.NewClient([]string{endpoints[i%len(endpoints)]}) - require.NoError(t, nerr) - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - traffic.RunWatchLoop(ctx, RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Finish: finish, - WaitGroup: &wg, - }) - }(c) - } - for range profile.ClusterClientCount { - wg.Add(1) - c, nerr := clientSet.NewClient(endpoints) - require.NoError(t, nerr) - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - traffic.RunWatchLoop(ctx, RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Finish: finish, - WaitGroup: &wg, - }) - }(c) + if !profile.ForbidRunWatchLoop { + for i := range profile.MemberClientCount { + wg.Add(1) + c, nerr := clientSet.NewClient([]string{endpoints[i%len(endpoints)]}) + require.NoError(t, nerr) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + traffic.RunWatchLoop(ctx, RunWatchLoopParam{ + Client: c, + KeyStore: keyStore, + Finish: finish, + WaitGroup: &wg, + }) + }(c) + } + for range profile.ClusterClientCount { + wg.Add(1) + c, nerr := clientSet.NewClient(endpoints) + require.NoError(t, nerr) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + traffic.RunWatchLoop(ctx, RunWatchLoopParam{ + Client: c, + KeyStore: keyStore, + Finish: finish, + WaitGroup: &wg, + }) + }(c) + } } if !profile.ForbidCompaction { wg.Add(1) @@ -327,6 +329,7 @@ type Profile struct { ClusterClientCount int ForbidCompaction bool CompactPeriod time.Duration + ForbidRunWatchLoop bool } func (p Profile) WithoutCompaction() Profile { @@ -339,6 +342,11 @@ func (p Profile) WithCompactionPeriod(cp time.Duration) Profile { return p } +func (p Profile) WithoutWatchLoop() Profile { + p.ForbidRunWatchLoop = true + return p +} + type RunTrafficLoopParam struct { Client *client.RecordingClient QPSLimiter *rate.Limiter From a474af170fa6bbfa88072d60fdda686337b01988 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 3 Jan 2026 15:04:17 +0900 Subject: [PATCH 0759/1068] robustness: implement RunWatchLoop for kubernetes traffic Signed-off-by: Marek Siarkowicz Signed-off-by: Chun-Hung Tseng --- .../test-template/robustness/traffic/main.go | 13 +++-- tests/robustness/traffic/kubernetes.go | 49 +++++++++++++++++-- tests/robustness/traffic/traffic.go | 12 ++++- 3 files changed, 65 insertions(+), 9 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 3c38bf5550f3..e005c119083e 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -38,7 +38,7 @@ import ( ) var ( - DefaultWatchInterval = 100 * time.Millisecond + DefaultWatchInterval = 250 * time.Millisecond DefaultRevisionOffset = int64(100) profile = traffic.Profile{ @@ -140,7 +140,8 @@ func runTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, hosts [ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, clientSet *client.ClientSet, duration time.Duration) { var wg sync.WaitGroup - storage := identity.NewLeaseIDStorage() + leaseStorage := identity.NewLeaseIDStorage() + kubernetesStorage := traffic.NewKubernetesStorage() limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), profile.BurstableQPS) concurrencyLimiter := traffic.NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) finish := closeAfter(ctx, duration) @@ -155,9 +156,10 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl Client: c, QPSLimiter: limiter, IDs: clientSet.IdentityProvider(), - LeaseIDStorage: storage, + LeaseIDStorage: leaseStorage, NonUniqueRequestConcurrencyLimiter: concurrencyLimiter, KeyStore: keyStore, + Storage: kubernetesStorage, Finish: finish, }) }(c) @@ -172,9 +174,10 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl Client: c, QPSLimiter: limiter, IDs: clientSet.IdentityProvider(), - LeaseIDStorage: storage, + LeaseIDStorage: leaseStorage, NonUniqueRequestConcurrencyLimiter: concurrencyLimiter, KeyStore: keyStore, + Storage: kubernetesStorage, Finish: finish, }) }(c) @@ -189,6 +192,7 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ Client: c, KeyStore: keyStore, + Storage: kubernetesStorage, Finish: finish, WaitGroup: &wg, }) @@ -203,6 +207,7 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ Client: c, KeyStore: keyStore, + Storage: kubernetesStorage, Finish: finish, WaitGroup: &wg, }) diff --git a/tests/robustness/traffic/kubernetes.go b/tests/robustness/traffic/kubernetes.go index 4f6f25a3c29a..a7ccbe5e4a8b 100644 --- a/tests/robustness/traffic/kubernetes.go +++ b/tests/robustness/traffic/kubernetes.go @@ -90,7 +90,7 @@ func (t kubernetesTraffic) ExpectUniqueRevision() bool { func (t kubernetesTraffic) RunKeyValueLoop(ctx context.Context, p RunTrafficLoopParam) { kc := kubernetes.Client{Client: &clientv3.Client{KV: p.Client}} - s := newStorage() + s := p.Storage keyPrefix := "/registry/" + t.resource + "/" g := errgroup.Group{} @@ -137,7 +137,48 @@ func (t kubernetesTraffic) RunKeyValueLoop(ctx context.Context, p RunTrafficLoop } func (t kubernetesTraffic) RunWatchLoop(ctx context.Context, p RunWatchLoopParam) { - // TODO: implement in a subsequent commit + s := p.Storage + keyPrefix := "/registry/" + t.resource + "/" + for { + select { + case <-ctx.Done(): + return + case <-p.Finish: + return + case <-time.After(DefaultWatchInterval): + // Time to spawn a new watch + } + + p.WaitGroup.Add(1) + go func() { + defer p.WaitGroup.Done() + resp, err := p.Client.Get(ctx, keyPrefix) + if err != nil { + return + } + rev := resp.Header.Revision + DefaultRevisionOffset + + watchCtx, cancel := context.WithTimeout(ctx, WatchTimeout) + defer cancel() + + // Kubernetes issues Watch requests by requiring a leader to exist + watchCtx = clientv3.WithRequireLeader(watchCtx) + w := p.Client.Watch(watchCtx, keyPrefix, rev, true, true, true) + for { + select { + case <-ctx.Done(): + return + case <-p.Finish: + return + case resp, ok := <-w: + if !ok { + return + } + s.Update(resp) + } + } + }() + } } func (t kubernetesTraffic) Read(ctx context.Context, c *client.RecordingClient, s *storage, limiter *rate.Limiter, keyPrefix string) error { @@ -348,7 +389,9 @@ type storage struct { revision int64 } -func newStorage() *storage { +// NewKubernetesStorage creates a new storage instance for tracking Kubernetes resource revisions. +// This storage is used by Kubernetes traffic to maintain consistency in read and write operations. +func NewKubernetesStorage() *storage { return &storage{ keyRevision: map[string]int64{}, } diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index d2285a164699..2ab3ff6aa105 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -38,7 +38,7 @@ var ( WatchTimeout = time.Second MultiOpTxnOpCount = 4 DefaultCompactionPeriod = 200 * time.Millisecond - DefaultWatchInterval = 100 * time.Millisecond + DefaultWatchInterval = 250 * time.Millisecond DefaultRevisionOffset = int64(100) LowTraffic = Profile{ @@ -74,6 +74,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 finish := make(chan struct{}) keyStore := NewKeyStore(10, "key") + kubernetesStorage := NewKubernetesStorage() lg.Info("Start traffic") startTime := time.Since(clientSet.BaseTime()) @@ -93,6 +94,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 LeaseIDStorage: lm, NonUniqueRequestConcurrencyLimiter: nonUniqueWriteLimiter, KeyStore: keyStore, + Storage: kubernetesStorage, Finish: finish, }) }(c) @@ -113,6 +115,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 LeaseIDStorage: lm, NonUniqueRequestConcurrencyLimiter: nonUniqueWriteLimiter, KeyStore: keyStore, + Storage: kubernetesStorage, Finish: finish, }) }(c) @@ -128,6 +131,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 traffic.RunWatchLoop(ctx, RunWatchLoopParam{ Client: c, KeyStore: keyStore, + Storage: kubernetesStorage, Finish: finish, WaitGroup: &wg, }) @@ -143,6 +147,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 traffic.RunWatchLoop(ctx, RunWatchLoopParam{ Client: c, KeyStore: keyStore, + Storage: kubernetesStorage, Finish: finish, WaitGroup: &wg, }) @@ -354,6 +359,7 @@ type RunTrafficLoopParam struct { LeaseIDStorage identity.LeaseIDStorage NonUniqueRequestConcurrencyLimiter ConcurrencyLimiter KeyStore *keyStore + Storage *storage Finish <-chan struct{} } @@ -364,8 +370,10 @@ type RunCompactLoopParam struct { } type RunWatchLoopParam struct { - Client *client.RecordingClient + Client *client.RecordingClient + // TODO: merge 2 key stores into 1 KeyStore *keyStore + Storage *storage Finish <-chan struct{} WaitGroup *sync.WaitGroup } From 69b7d23c8f69254902667602e4067f9a4eaad0db Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 21 Jan 2026 00:20:34 +0900 Subject: [PATCH 0760/1068] dependency: bump github.com/olekukonko/tablewriter from 1.1.2 to 1.1.3 Reference: - https://github.com/etcd-io/etcd/pull/21170 Signed-off-by: Chun-Hung Tseng --- etcdctl/go.mod | 6 +++--- etcdctl/go.sum | 12 ++++++------ etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 12 ++++++------ go.mod | 6 +++--- go.sum | 12 ++++++------ tests/go.mod | 6 +++--- tests/go.sum | 12 ++++++------ 8 files changed, 36 insertions(+), 36 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 043d17a94dfe..1c9a7566ef9f 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -8,7 +8,7 @@ require ( github.com/bgentry/speakeasy v0.2.0 github.com/cheggaaa/pb/v3 v3.1.7 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.1.2 + github.com/olekukonko/tablewriter v1.1.3 github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 @@ -23,7 +23,7 @@ require ( require ( github.com/VividCortex/ewma v1.2.0 // indirect - github.com/clipperhouse/displaywidth v0.6.0 // indirect + github.com/clipperhouse/displaywidth v0.6.2 // indirect github.com/clipperhouse/stringish v0.1.1 // indirect github.com/clipperhouse/uax29/v2 v2.3.0 // indirect github.com/coreos/go-semver v0.3.1 // indirect @@ -39,7 +39,7 @@ require ( github.com/mattn/go-runewidth v0.0.19 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.1.3 // indirect + github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.49.0 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index d7b171aab0b4..1821d1014de9 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -8,8 +8,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= -github.com/clipperhouse/displaywidth v0.6.0 h1:k32vueaksef9WIKCNcoqRNyKbyvkvkysNYnAWz2fN4s= -github.com/clipperhouse/displaywidth v0.6.0/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= +github.com/clipperhouse/displaywidth v0.6.2 h1:ZDpTkFfpHOKte4RG5O/BOyf3ysnvFswpyYrV7z2uAKo= +github.com/clipperhouse/displaywidth v0.6.2/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= @@ -63,10 +63,10 @@ github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.1.3 h1:sV2jrhQGq5B3W0nENUISCR6azIPf7UBUpVq0x/y70Fg= -github.com/olekukonko/ll v0.1.3/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= -github.com/olekukonko/tablewriter v1.1.2 h1:L2kI1Y5tZBct/O/TyZK1zIE9GlBj/TVs+AY5tZDCDSc= -github.com/olekukonko/tablewriter v1.1.2/go.mod h1:z7SYPugVqGVavWoA2sGsFIoOVNmEHxUAAMrhXONtfkg= +github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 h1:jrYnow5+hy3WRDCBypUFvVKNSPPCdqgSXIE9eJDD8LM= +github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= +github.com/olekukonko/tablewriter v1.1.3 h1:VSHhghXxrP0JHl+0NnKid7WoEmd9/urKRJLysb70nnA= +github.com/olekukonko/tablewriter v1.1.3/go.mod h1:9VU0knjhmMkXjnMKrZ3+L2JhhtsQ/L38BbL3CRNE8tM= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 5489444b8595..38739fb09412 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -15,7 +15,7 @@ replace ( require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.1.2 + github.com/olekukonko/tablewriter v1.1.3 github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 @@ -32,7 +32,7 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/clipperhouse/displaywidth v0.6.0 // indirect + github.com/clipperhouse/displaywidth v0.6.2 // indirect github.com/clipperhouse/stringish v0.1.1 // indirect github.com/clipperhouse/uax29/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect @@ -58,7 +58,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.1.3 // indirect + github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index a138b3f1026e..d40c5d2647d2 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -4,8 +4,8 @@ github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1x github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/clipperhouse/displaywidth v0.6.0 h1:k32vueaksef9WIKCNcoqRNyKbyvkvkysNYnAWz2fN4s= -github.com/clipperhouse/displaywidth v0.6.0/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= +github.com/clipperhouse/displaywidth v0.6.2 h1:ZDpTkFfpHOKte4RG5O/BOyf3ysnvFswpyYrV7z2uAKo= +github.com/clipperhouse/displaywidth v0.6.2/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= @@ -76,10 +76,10 @@ github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.1.3 h1:sV2jrhQGq5B3W0nENUISCR6azIPf7UBUpVq0x/y70Fg= -github.com/olekukonko/ll v0.1.3/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= -github.com/olekukonko/tablewriter v1.1.2 h1:L2kI1Y5tZBct/O/TyZK1zIE9GlBj/TVs+AY5tZDCDSc= -github.com/olekukonko/tablewriter v1.1.2/go.mod h1:z7SYPugVqGVavWoA2sGsFIoOVNmEHxUAAMrhXONtfkg= +github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 h1:jrYnow5+hy3WRDCBypUFvVKNSPPCdqgSXIE9eJDD8LM= +github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= +github.com/olekukonko/tablewriter v1.1.3 h1:VSHhghXxrP0JHl+0NnKid7WoEmd9/urKRJLysb70nnA= +github.com/olekukonko/tablewriter v1.1.3/go.mod h1:9VU0knjhmMkXjnMKrZ3+L2JhhtsQ/L38BbL3CRNE8tM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/go.mod b/go.mod index 33e737cdc94c..cb6e9ce01c0c 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,7 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/clipperhouse/displaywidth v0.6.0 // indirect + github.com/clipperhouse/displaywidth v0.6.2 // indirect github.com/clipperhouse/stringish v0.1.1 // indirect github.com/clipperhouse/uax29/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect @@ -73,8 +73,8 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.1.3 // indirect - github.com/olekukonko/tablewriter v1.1.2 // indirect + github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 // indirect + github.com/olekukonko/tablewriter v1.1.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/go.sum b/go.sum index 0de920437181..38f0c4b60720 100644 --- a/go.sum +++ b/go.sum @@ -14,8 +14,8 @@ github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/clipperhouse/displaywidth v0.6.0 h1:k32vueaksef9WIKCNcoqRNyKbyvkvkysNYnAWz2fN4s= -github.com/clipperhouse/displaywidth v0.6.0/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= +github.com/clipperhouse/displaywidth v0.6.2 h1:ZDpTkFfpHOKte4RG5O/BOyf3ysnvFswpyYrV7z2uAKo= +github.com/clipperhouse/displaywidth v0.6.2/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= @@ -106,10 +106,10 @@ github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.1.3 h1:sV2jrhQGq5B3W0nENUISCR6azIPf7UBUpVq0x/y70Fg= -github.com/olekukonko/ll v0.1.3/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= -github.com/olekukonko/tablewriter v1.1.2 h1:L2kI1Y5tZBct/O/TyZK1zIE9GlBj/TVs+AY5tZDCDSc= -github.com/olekukonko/tablewriter v1.1.2/go.mod h1:z7SYPugVqGVavWoA2sGsFIoOVNmEHxUAAMrhXONtfkg= +github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 h1:jrYnow5+hy3WRDCBypUFvVKNSPPCdqgSXIE9eJDD8LM= +github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= +github.com/olekukonko/tablewriter v1.1.3 h1:VSHhghXxrP0JHl+0NnKid7WoEmd9/urKRJLysb70nnA= +github.com/olekukonko/tablewriter v1.1.3/go.mod h1:9VU0knjhmMkXjnMKrZ3+L2JhhtsQ/L38BbL3CRNE8tM= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/tests/go.mod b/tests/go.mod index 331c1d2dabe6..01f55e8e8edc 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -25,7 +25,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.4 - github.com/olekukonko/tablewriter v1.1.2 + github.com/olekukonko/tablewriter v1.1.3 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.67.5 @@ -61,7 +61,7 @@ require ( github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cheggaaa/pb/v3 v3.1.7 // indirect - github.com/clipperhouse/displaywidth v0.6.0 // indirect + github.com/clipperhouse/displaywidth v0.6.2 // indirect github.com/clipperhouse/stringish v0.1.1 // indirect github.com/clipperhouse/uax29/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.6.0 // indirect @@ -85,7 +85,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.1.3 // indirect + github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect diff --git a/tests/go.sum b/tests/go.sum index 37920eb59355..71ddbba20532 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -18,8 +18,8 @@ github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/clipperhouse/displaywidth v0.6.0 h1:k32vueaksef9WIKCNcoqRNyKbyvkvkysNYnAWz2fN4s= -github.com/clipperhouse/displaywidth v0.6.0/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= +github.com/clipperhouse/displaywidth v0.6.2 h1:ZDpTkFfpHOKte4RG5O/BOyf3ysnvFswpyYrV7z2uAKo= +github.com/clipperhouse/displaywidth v0.6.2/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= @@ -112,10 +112,10 @@ github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.1.3 h1:sV2jrhQGq5B3W0nENUISCR6azIPf7UBUpVq0x/y70Fg= -github.com/olekukonko/ll v0.1.3/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= -github.com/olekukonko/tablewriter v1.1.2 h1:L2kI1Y5tZBct/O/TyZK1zIE9GlBj/TVs+AY5tZDCDSc= -github.com/olekukonko/tablewriter v1.1.2/go.mod h1:z7SYPugVqGVavWoA2sGsFIoOVNmEHxUAAMrhXONtfkg= +github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 h1:jrYnow5+hy3WRDCBypUFvVKNSPPCdqgSXIE9eJDD8LM= +github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= +github.com/olekukonko/tablewriter v1.1.3 h1:VSHhghXxrP0JHl+0NnKid7WoEmd9/urKRJLysb70nnA= +github.com/olekukonko/tablewriter v1.1.3/go.mod h1:9VU0knjhmMkXjnMKrZ3+L2JhhtsQ/L38BbL3CRNE8tM= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= From 292c9ed73644cf677926afd43ff89adbdad6bf6c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 19:16:04 +0000 Subject: [PATCH 0761/1068] build(deps): bump actions/setup-go from 6.1.0 to 6.2.0 Bumps [actions/setup-go](https://github.com/actions/setup-go) from 6.1.0 to 6.2.0. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/4dc6199c7b1a012772edbd06daecab0f50c9053c...7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5) --- updated-dependencies: - dependency-name: actions/setup-go dependency-version: 6.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/measure-testgrid-flakiness.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/measure-testgrid-flakiness.yaml b/.github/workflows/measure-testgrid-flakiness.yaml index bde493c68ab7..21b0f13f80f1 100644 --- a/.github/workflows/measure-testgrid-flakiness.yaml +++ b/.github/workflows/measure-testgrid-flakiness.yaml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - id: goversion run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 + - uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0 with: go-version: ${{ steps.goversion.outputs.goversion }} - env: From 2d1b02a25096a808187fc4ee181929b7a9335982 Mon Sep 17 00:00:00 2001 From: Nont Date: Tue, 20 Jan 2026 22:14:33 -0600 Subject: [PATCH 0762/1068] Add multiverion test cases for range operation Signed-off-by: Nont --- tests/common/kv_test.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index 17adc04f7128..8b6430600fd8 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -66,12 +66,21 @@ func TestKVGet(t *testing.T) { cc := testutils.MustClient(clus.Client()) testutils.ExecuteUntil(ctx, t, func() { - kvs := []string{"a", "b", "c", "c", "c", "foo", "foo/abc", "fop"} + kvs := [][]string{ + {"a", "bar"}, + {"b", "bar"}, + {"c", "bar1"}, + {"c", "bar2"}, + {"c", "bar"}, + {"foo", "bar"}, + {"foo/abc", "bar"}, + {"fop", "bar"}, + } var firstHeader *etcdserverpb.ResponseHeader for i := range kvs { - resp, err := cc.Put(ctx, kvs[i], "bar", config.PutOptions{}) - require.NoErrorf(t, err, "count not put key %q", kvs[i]) + resp, err := cc.Put(ctx, kvs[i][0], kvs[i][1], config.PutOptions{}) + require.NoErrorf(t, err, "count not put key value %q", kvs[i]) if i == 0 { firstHeader = resp.Header } @@ -99,7 +108,8 @@ func TestKVGet(t *testing.T) { kvA := createKV("a", "bar", firstRev, firstRev, 1) kvB := createKV("b", "bar", firstRev+1, firstRev+1, 1) kvC := createKV("c", "bar", firstRev+2, firstRev+4, 3) - kvCV1 := createKV("c", "bar", firstRev+2, firstRev+2, 1) + kvCV1 := createKV("c", "bar1", firstRev+2, firstRev+2, 1) + kvCV2 := createKV("c", "bar2", firstRev+2, firstRev+3, 2) kvFoo := createKV("foo", "bar", firstRev+5, firstRev+5, 1) kvFooAbc := createKV("foo/abc", "bar", firstRev+6, firstRev+6, 1) kvFop := createKV("fop", "bar", firstRev+7, firstRev+7, 1) @@ -139,6 +149,10 @@ func TestKVGet(t *testing.T) { {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvs}}, {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, KeysOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvsKeysOnly}}, {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, KeysOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvsKeysOnly}}, + {begin: "c", options: config.GetOptions{Revision: int(firstRev) + 2}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvCV1}}}, + {begin: "c", options: config.GetOptions{Revision: int(firstRev) + 3}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvCV2}}}, + {begin: "c", options: config.GetOptions{Revision: int(firstRev) + 4}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, + {begin: "c", wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, } for _, tt := range tests { resp, err := cc.Get(ctx, tt.begin, tt.options) From 7c6b7e4aad5eafb500fc76ab0cd59435afa3d09d Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Thu, 15 Jan 2026 20:21:00 +0900 Subject: [PATCH 0763/1068] robustness: Improve error logging and handling in detached RunWatchLoop Signed-off-by: Chun-Hung Tseng --- .../test-template/robustness/traffic/main.go | 6 ++++-- tests/robustness/traffic/kubernetes.go | 2 ++ tests/robustness/traffic/traffic.go | 14 +++++++++----- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index e005c119083e..d2d5f6304eb1 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -104,7 +104,7 @@ func runTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, hosts [ startTime := time.Since(baseTime) g.Go(func() error { defer close(maxRevisionChan) - simulateTraffic(ctx, tf, hosts, trafficSet, duration) + simulateTraffic(ctx, lg, tf, hosts, trafficSet, duration) maxRevision := report.OperationsMaxRevision(trafficSet.Reports()) maxRevisionChan <- maxRevision lg.Info("Finished simulating Traffic", zap.Int64("max-revision", maxRevision)) @@ -138,7 +138,7 @@ func runTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, hosts [ return reports, nil } -func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, clientSet *client.ClientSet, duration time.Duration) { +func simulateTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, hosts []string, clientSet *client.ClientSet, duration time.Duration) { var wg sync.WaitGroup leaseStorage := identity.NewLeaseIDStorage() kubernetesStorage := traffic.NewKubernetesStorage() @@ -195,6 +195,7 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl Storage: kubernetesStorage, Finish: finish, WaitGroup: &wg, + Logger: lg, }) }(c) } @@ -210,6 +211,7 @@ func simulateTraffic(ctx context.Context, tf traffic.Traffic, hosts []string, cl Storage: kubernetesStorage, Finish: finish, WaitGroup: &wg, + Logger: lg, }) }(c) } diff --git a/tests/robustness/traffic/kubernetes.go b/tests/robustness/traffic/kubernetes.go index a7ccbe5e4a8b..a4e8b0df8563 100644 --- a/tests/robustness/traffic/kubernetes.go +++ b/tests/robustness/traffic/kubernetes.go @@ -23,6 +23,7 @@ import ( "sync" "time" + "go.uber.org/zap" "golang.org/x/sync/errgroup" "golang.org/x/time/rate" @@ -154,6 +155,7 @@ func (t kubernetesTraffic) RunWatchLoop(ctx context.Context, p RunWatchLoopParam defer p.WaitGroup.Done() resp, err := p.Client.Get(ctx, keyPrefix) if err != nil { + p.Logger.Error("kubernetes RunWatchLoop: Get failed", zap.Error(err)) return } rev := resp.Header.Revision + DefaultRevisionOffset diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index 2ab3ff6aa105..a30bda811ecc 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -134,6 +134,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 Storage: kubernetesStorage, Finish: finish, WaitGroup: &wg, + Logger: lg, }) }(c) } @@ -150,6 +151,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 Storage: kubernetesStorage, Finish: finish, WaitGroup: &wg, + Logger: lg, }) }(c) } @@ -376,6 +378,7 @@ type RunWatchLoopParam struct { Storage *storage Finish <-chan struct{} WaitGroup *sync.WaitGroup + Logger *zap.Logger } type Traffic interface { @@ -399,11 +402,12 @@ func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) } p.WaitGroup.Add(1) - go func() error { + go func() { defer p.WaitGroup.Done() resp, err := p.Client.Get(ctx, cfg.watchKey) if err != nil { - return err + p.Logger.Error("generic runWatchLoop: Get failed", zap.Error(err)) + return } rev := resp.Header.Revision + DefaultRevisionOffset @@ -413,12 +417,12 @@ func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) for { select { case <-ctx.Done(): - return ctx.Err() + return case <-p.Finish: - return nil + return case _, ok := <-w: if !ok { - return nil + return } } } From 94a043834c2ee6b216bc5f60eb41b73be34e5f5e Mon Sep 17 00:00:00 2001 From: evertrain Date: Mon, 19 Jan 2026 11:11:08 +0800 Subject: [PATCH 0764/1068] etcdutl: fix hashkv "no lessor to attach lease" panic Signed-off-by: evertrain --- etcdutl/etcdutl/common.go | 49 +++++++++ etcdutl/etcdutl/hashkv_command.go | 3 +- etcdutl/etcdutl/hashkv_command_test.go | 145 +++++++++++++++++++++++++ etcdutl/go.mod | 1 + etcdutl/go.sum | 2 + go.sum | 2 + 6 files changed, 201 insertions(+), 1 deletion(-) create mode 100644 etcdutl/etcdutl/hashkv_command_test.go diff --git a/etcdutl/etcdutl/common.go b/etcdutl/etcdutl/common.go index e9a9e23f9238..40c55858897b 100644 --- a/etcdutl/etcdutl/common.go +++ b/etcdutl/etcdutl/common.go @@ -22,6 +22,8 @@ import ( "go.etcd.io/etcd/client/pkg/v3/logutil" "go.etcd.io/etcd/pkg/v3/cobrautl" + "go.etcd.io/etcd/server/v3/lease" + "go.etcd.io/etcd/server/v3/storage/backend" "go.etcd.io/etcd/server/v3/storage/datadir" "go.etcd.io/etcd/server/v3/storage/wal" "go.etcd.io/etcd/server/v3/storage/wal/walpb" @@ -54,3 +56,50 @@ func getLatestWALSnap(lg *zap.Logger, dataDir string) (walpb.Snapshot, error) { } return walpb.Snapshot{}, nil } + +// SimpleLessor is a simplified implementation of Lessor interface. +// Used by etcdutl tools to simulate Lessor behavior without full lease management +type SimpleLessor struct { + LeaseSet map[lease.LeaseID]struct{} +} + +var _ lease.Lessor = (*SimpleLessor)(nil) + +func (sl *SimpleLessor) SetRangeDeleter(dr lease.RangeDeleter) {} + +func (sl *SimpleLessor) SetCheckpointer(cp lease.Checkpointer) {} + +func (sl *SimpleLessor) Grant(id lease.LeaseID, ttl int64) (*lease.Lease, error) { + sl.LeaseSet[id] = struct{}{} + return nil, nil +} + +func (sl *SimpleLessor) Revoke(id lease.LeaseID) error { return nil } + +func (sl *SimpleLessor) Checkpoint(id lease.LeaseID, remainingTTL int64) error { return nil } + +func (sl *SimpleLessor) Attach(id lease.LeaseID, items []lease.LeaseItem) error { return nil } + +func (sl *SimpleLessor) GetLease(item lease.LeaseItem) lease.LeaseID { return 0 } +func (sl *SimpleLessor) Detach(id lease.LeaseID, items []lease.LeaseItem) error { return nil } + +func (sl *SimpleLessor) Promote(extend time.Duration) {} + +func (sl *SimpleLessor) Demote() {} + +func (sl *SimpleLessor) Renew(id lease.LeaseID) (int64, error) { return 10, nil } + +func (sl *SimpleLessor) Lookup(id lease.LeaseID) *lease.Lease { + if _, ok := sl.LeaseSet[id]; ok { + return &lease.Lease{ID: id} + } + return nil +} + +func (sl *SimpleLessor) Leases() []*lease.Lease { return nil } + +func (sl *SimpleLessor) ExpiredLeasesC() <-chan []*lease.Lease { return nil } + +func (sl *SimpleLessor) Recover(b backend.Backend, rd lease.RangeDeleter) {} + +func (sl *SimpleLessor) Stop() {} diff --git a/etcdutl/etcdutl/hashkv_command.go b/etcdutl/etcdutl/hashkv_command.go index 3aa701f7b630..69982e84e58d 100644 --- a/etcdutl/etcdutl/hashkv_command.go +++ b/etcdutl/etcdutl/hashkv_command.go @@ -55,7 +55,8 @@ type HashKV struct { func calculateHashKV(dbPath string, rev int64) (HashKV, error) { b := backend.NewDefaultBackend(zap.NewNop(), dbPath, backend.WithTimeout(FlockTimeout)) - st := mvcc.NewStore(zap.NewNop(), b, nil, mvcc.StoreConfig{}) + // Since `etcdutl hashkv` only hashes the keyspace and ignores leases, we use a simple lessor to simplify the implementation. + st := mvcc.NewStore(zap.NewNop(), b, &SimpleLessor{}, mvcc.StoreConfig{}) hst := mvcc.NewHashStorage(zap.NewNop(), st) h, _, err := hst.HashByRev(rev) diff --git a/etcdutl/etcdutl/hashkv_command_test.go b/etcdutl/etcdutl/hashkv_command_test.go new file mode 100644 index 000000000000..e3f101e155c1 --- /dev/null +++ b/etcdutl/etcdutl/hashkv_command_test.go @@ -0,0 +1,145 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package etcdutl + +import ( + "path/filepath" + "testing" + + "go.uber.org/zap" + "gotest.tools/v3/assert" + + "go.etcd.io/etcd/server/v3/lease" + "go.etcd.io/etcd/server/v3/storage/backend" + "go.etcd.io/etcd/server/v3/storage/mvcc" +) + +func TestCalculateHashKV(t *testing.T) { + type testCase struct { + name string + setupFunc func(t *testing.T) (dbPath string, cleanup func()) + revision int64 + expectedHash uint32 + expectedRev int64 + expectedCompact int64 + expectError bool + errorContains string + } + + testCases := []testCase{ + { + name: "non-existent file", + setupFunc: func(t *testing.T) (string, func()) { + return "/nonexistent/path/to/db", func() {} + }, + expectError: true, + }, + { + name: "empty directory path", + setupFunc: func(t *testing.T) (string, func()) { + return "", func() {} + }, + expectError: true, + }, + { + name: "empty database", + setupFunc: func(t *testing.T) (string, func()) { + tempDir := t.TempDir() + dbPath := filepath.Join(tempDir, "test.db") + + b := backend.NewDefaultBackend(zap.NewNop(), dbPath) + st := mvcc.NewStore(zap.NewNop(), b, &lease.FakeLessor{}, mvcc.StoreConfig{}) + _ = st + b.Close() + + return dbPath, func() {} + }, + revision: 0, + expectedHash: 1084519789, + expectedRev: 1, + expectedCompact: -1, + expectError: false, + }, + { + name: "database with data", + setupFunc: func(t *testing.T) (string, func()) { + tempDir := t.TempDir() + dbPath := filepath.Join(tempDir, "test_with_data.db") + + b := backend.NewDefaultBackend(zap.NewNop(), dbPath) + st := mvcc.NewStore(zap.NewNop(), b, &lease.FakeLessor{}, mvcc.StoreConfig{}) + st.Put([]byte("test-key"), []byte("test-value"), 1) + st.Close() + b.Close() + + return dbPath, func() {} + }, + revision: 0, + expectedHash: 645561629, + expectedRev: 2, + expectedCompact: -1, + expectError: false, + }, + { + name: "invalid revision", + setupFunc: func(t *testing.T) (string, func()) { + tempDir := t.TempDir() + dbPath := filepath.Join(tempDir, "test_invalid_rev.db") + + b := backend.NewDefaultBackend(zap.NewNop(), dbPath) + st := mvcc.NewStore(zap.NewNop(), b, &lease.FakeLessor{}, mvcc.StoreConfig{}) + st.Put([]byte("key"), []byte("value"), 1) + st.Close() + b.Close() + + return dbPath, func() {} + }, + revision: 999, + expectError: true, + errorContains: "required revision is a future revision", + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + defer func() { + if r := recover(); r != nil { + t.Logf("Recovered from panic: %v", r) + } + }() + + dbPath, cleanup := tc.setupFunc(t) + defer cleanup() + + result, err := calculateHashKV(dbPath, tc.revision) + + if tc.expectError { + assert.Assert(t, err != nil) + if tc.errorContains != "" { + assert.ErrorContains(t, err, tc.errorContains) + } + return + } + + assert.NilError(t, err) + assert.Equal(t, tc.expectedHash, result.Hash) + assert.Equal(t, tc.expectedRev, result.HashRevision) + assert.Equal(t, tc.expectedCompact, result.CompactRevision) + + t.Logf("Test %s - Hash: %d, HashRevision: %d, CompactRevision: %d", + tc.name, result.Hash, result.HashRevision, result.CompactRevision) + }) + } +} diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 5489444b8595..753f686799bd 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -26,6 +26,7 @@ require ( go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.uber.org/zap v1.27.1 + gotest.tools/v3 v3.5.2 ) require ( diff --git a/etcdutl/go.sum b/etcdutl/go.sum index a138b3f1026e..7744520e73df 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -205,5 +205,7 @@ gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYs gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/go.sum b/go.sum index 0de920437181..ccebc0046a29 100644 --- a/go.sum +++ b/go.sum @@ -279,6 +279,8 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= k8s.io/utils v0.0.0-20260108192941-914a6e750570 h1:JT4W8lsdrGENg9W+YwwdLJxklIuKWdRm+BC+xt33FOY= From e92c1397ede38b18c1c2ee9e7f15ed4e60727a5c Mon Sep 17 00:00:00 2001 From: Sharath P J Date: Tue, 20 Jan 2026 15:27:34 +0530 Subject: [PATCH 0765/1068] server: refactor btree usage to generics-based k8s.io/utils Signed-off-by: Sharath P J --- bill-of-materials.json | 9 --------- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 2 -- go.work.sum | 2 ++ server/go.mod | 2 +- server/go.sum | 4 ++-- server/storage/mvcc/index.go | 6 +++--- tests/go.mod | 1 - tests/go.sum | 2 -- 11 files changed, 12 insertions(+), 24 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index 87cfbc44c7c1..7c7b945bda6c 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -206,15 +206,6 @@ } ] }, - { - "project": "github.com/google/btree", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 1 - } - ] - }, { "project": "github.com/google/go-cmp/cmp", "licenses": [ diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 528a73dcfcb7..1da4e1831e70 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -44,7 +44,6 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/btree v1.1.3 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect @@ -92,5 +91,6 @@ require ( google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/utils v0.0.0-20260108192941-914a6e750570 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/etcdutl/go.sum b/etcdutl/go.sum index f7d0ab1d1628..0124b4bf434e 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -36,8 +36,6 @@ github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9v github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= -github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -207,5 +205,7 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= +k8s.io/utils v0.0.0-20260108192941-914a6e750570 h1:JT4W8lsdrGENg9W+YwwdLJxklIuKWdRm+BC+xt33FOY= +k8s.io/utils v0.0.0-20260108192941-914a6e750570/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/go.mod b/go.mod index cb6e9ce01c0c..73761e0cca3b 100644 --- a/go.mod +++ b/go.mod @@ -57,7 +57,6 @@ require ( github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/btree v1.1.3 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect @@ -107,5 +106,6 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/utils v0.0.0-20260108192941-914a6e750570 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/go.sum b/go.sum index 5a5ed31985c5..b2fd6377d663 100644 --- a/go.sum +++ b/go.sum @@ -61,8 +61,6 @@ github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= -github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= diff --git a/go.work.sum b/go.work.sum index e10799f90c46..102f3daee22d 100644 --- a/go.work.sum +++ b/go.work.sum @@ -676,6 +676,8 @@ github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwm github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/cel-go v0.25.0 h1:jsFw9Fhn+3y2kBbltZR4VEz5xKkcIFRPDnuEzAGv5GY= github.com/google/cel-go v0.25.0/go.mod h1:hjEb6r5SuOSlhCHmFoLzu8HGCERvIsDAbxDAyNU/MmI= github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= diff --git a/server/go.mod b/server/go.mod index cde9251d4643..4f2292976a84 100644 --- a/server/go.mod +++ b/server/go.mod @@ -12,7 +12,6 @@ require ( github.com/golang-jwt/jwt/v5 v5.3.0 github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 github.com/golang/protobuf v1.5.4 - github.com/google/btree v1.1.3 github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 @@ -44,6 +43,7 @@ require ( google.golang.org/grpc v1.78.0 google.golang.org/protobuf v1.36.11 gopkg.in/natefinch/lumberjack.v2 v2.2.1 + k8s.io/utils v0.0.0-20260108192941-914a6e750570 sigs.k8s.io/yaml v1.6.0 ) diff --git a/server/go.sum b/server/go.sum index e5c815d928bb..2303cf15bdf1 100644 --- a/server/go.sum +++ b/server/go.sum @@ -30,8 +30,6 @@ github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8J github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= -github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -184,5 +182,7 @@ gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYs gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +k8s.io/utils v0.0.0-20260108192941-914a6e750570 h1:JT4W8lsdrGENg9W+YwwdLJxklIuKWdRm+BC+xt33FOY= +k8s.io/utils v0.0.0-20260108192941-914a6e750570/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/server/storage/mvcc/index.go b/server/storage/mvcc/index.go index f300831b2936..2527705c9c6d 100644 --- a/server/storage/mvcc/index.go +++ b/server/storage/mvcc/index.go @@ -17,8 +17,8 @@ package mvcc import ( "sync" - "github.com/google/btree" "go.uber.org/zap" + "k8s.io/utils/third_party/forked/golang/btree" ) type index interface { @@ -38,13 +38,13 @@ type index interface { type treeIndex struct { sync.RWMutex - tree *btree.BTreeG[*keyIndex] + tree *btree.BTree[*keyIndex] lg *zap.Logger } func newTreeIndex(lg *zap.Logger) index { return &treeIndex{ - tree: btree.NewG(32, func(aki *keyIndex, bki *keyIndex) bool { + tree: btree.New(32, func(aki *keyIndex, bki *keyIndex) bool { return aki.Less(bki) }), lg: lg, diff --git a/tests/go.mod b/tests/go.mod index 01f55e8e8edc..9ac56cdd97aa 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -73,7 +73,6 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect - github.com/google/btree v1.1.3 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect diff --git a/tests/go.sum b/tests/go.sum index 71ddbba20532..b901ac4b8c03 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -67,8 +67,6 @@ github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= -github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= From b52c843460fcf39dc01b4eac7a411c21c4fc3ad0 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 27 Jan 2026 11:02:38 +0100 Subject: [PATCH 0766/1068] Unify watch loop Signed-off-by: Marek Siarkowicz --- tests/robustness/traffic/etcd.go | 3 +- tests/robustness/traffic/kubernetes.go | 48 +++----------------------- tests/robustness/traffic/traffic.go | 15 +++++--- 3 files changed, 15 insertions(+), 51 deletions(-) diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index 92c043a8fddf..41b099638388 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -158,8 +158,7 @@ func (t etcdTraffic) RunKeyValueLoop(ctx context.Context, p RunTrafficLoopParam) func (t etcdTraffic) RunWatchLoop(ctx context.Context, p RunWatchLoopParam) { runWatchLoop(ctx, p, watchLoopConfig{ - getKey: "", - watchKey: p.KeyStore.GetPrefix(), + key: p.KeyStore.GetPrefix(), }) } diff --git a/tests/robustness/traffic/kubernetes.go b/tests/robustness/traffic/kubernetes.go index a4e8b0df8563..a413c3432807 100644 --- a/tests/robustness/traffic/kubernetes.go +++ b/tests/robustness/traffic/kubernetes.go @@ -23,7 +23,6 @@ import ( "sync" "time" - "go.uber.org/zap" "golang.org/x/sync/errgroup" "golang.org/x/time/rate" @@ -138,49 +137,10 @@ func (t kubernetesTraffic) RunKeyValueLoop(ctx context.Context, p RunTrafficLoop } func (t kubernetesTraffic) RunWatchLoop(ctx context.Context, p RunWatchLoopParam) { - s := p.Storage - keyPrefix := "/registry/" + t.resource + "/" - for { - select { - case <-ctx.Done(): - return - case <-p.Finish: - return - case <-time.After(DefaultWatchInterval): - // Time to spawn a new watch - } - - p.WaitGroup.Add(1) - go func() { - defer p.WaitGroup.Done() - resp, err := p.Client.Get(ctx, keyPrefix) - if err != nil { - p.Logger.Error("kubernetes RunWatchLoop: Get failed", zap.Error(err)) - return - } - rev := resp.Header.Revision + DefaultRevisionOffset - - watchCtx, cancel := context.WithTimeout(ctx, WatchTimeout) - defer cancel() - - // Kubernetes issues Watch requests by requiring a leader to exist - watchCtx = clientv3.WithRequireLeader(watchCtx) - w := p.Client.Watch(watchCtx, keyPrefix, rev, true, true, true) - for { - select { - case <-ctx.Done(): - return - case <-p.Finish: - return - case resp, ok := <-w: - if !ok { - return - } - s.Update(resp) - } - } - }() - } + runWatchLoop(ctx, p, watchLoopConfig{ + key: "/registry/" + t.resource + "/", + requireLeader: true, + }) } func (t kubernetesTraffic) Read(ctx context.Context, c *client.RecordingClient, s *storage, limiter *rate.Limiter, keyPrefix string) error { diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index 4913d0387735..68022d4ca838 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -24,6 +24,7 @@ import ( "go.uber.org/zap" "golang.org/x/time/rate" + clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/tests/v3/framework/e2e" "go.etcd.io/etcd/tests/v3/robustness/client" "go.etcd.io/etcd/tests/v3/robustness/identity" @@ -404,16 +405,20 @@ func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) p.WaitGroup.Add(1) go func() { defer p.WaitGroup.Done() - resp, err := p.Client.Get(ctx, cfg.watchKey) + resp, err := p.Client.Get(ctx, cfg.key) if err != nil { - p.Logger.Error("generic runWatchLoop: Get failed", zap.Error(err)) + p.Logger.Error("runWatchLoop: Get failed", zap.Error(err)) return } rev := resp.Header.Revision + DefaultRevisionOffset watchCtx, cancel := context.WithTimeout(ctx, WatchTimeout) defer cancel() - w := p.Client.Watch(watchCtx, cfg.watchKey, rev, true, true, true) + + if cfg.requireLeader { + watchCtx = clientv3.WithRequireLeader(watchCtx) + } + w := p.Client.Watch(watchCtx, cfg.key, rev, true, true, true) for { select { case <-ctx.Done(): @@ -431,8 +436,8 @@ func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) } type watchLoopConfig struct { - getKey string - watchKey string + key string + requireLeader bool } func CheckEmptyDatabaseAtStart(ctx context.Context, lg *zap.Logger, endpoints []string, cs *client.ClientSet) error { From a9a91be13989d4ee223145bca7df4ab2bf9e6613 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 27 Jan 2026 12:05:19 +0100 Subject: [PATCH 0767/1068] Refactor watch loop function Signed-off-by: Marek Siarkowicz --- tests/robustness/traffic/traffic.go | 52 ++++++++++++++++------------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index 68022d4ca838..a6827f6826bf 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -405,33 +405,37 @@ func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) p.WaitGroup.Add(1) go func() { defer p.WaitGroup.Done() - resp, err := p.Client.Get(ctx, cfg.key) - if err != nil { - p.Logger.Error("runWatchLoop: Get failed", zap.Error(err)) - return - } - rev := resp.Header.Revision + DefaultRevisionOffset + runWatch(ctx, p, cfg) + }() + } +} - watchCtx, cancel := context.WithTimeout(ctx, WatchTimeout) - defer cancel() +func runWatch(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) { + resp, err := p.Client.Get(ctx, cfg.key) + if err != nil { + p.Logger.Error("runWatchLoop: Get failed", zap.Error(err)) + return + } + rev := resp.Header.Revision + DefaultRevisionOffset - if cfg.requireLeader { - watchCtx = clientv3.WithRequireLeader(watchCtx) - } - w := p.Client.Watch(watchCtx, cfg.key, rev, true, true, true) - for { - select { - case <-ctx.Done(): - return - case <-p.Finish: - return - case _, ok := <-w: - if !ok { - return - } - } + watchCtx, cancel := context.WithTimeout(ctx, WatchTimeout) + defer cancel() + + if cfg.requireLeader { + watchCtx = clientv3.WithRequireLeader(watchCtx) + } + w := p.Client.Watch(watchCtx, cfg.key, rev, true, true, true) + for { + select { + case <-ctx.Done(): + return + case <-p.Finish: + return + case _, ok := <-w: + if !ok { + return } - }() + } } } From c7e0074e37fcbbb50e7decc51a8963dfd0ad8a73 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 27 Jan 2026 13:27:17 +0100 Subject: [PATCH 0768/1068] Make watch loop synchronous Signed-off-by: Marek Siarkowicz --- .../test-template/robustness/traffic/main.go | 24 +++--- tests/robustness/traffic/traffic.go | 76 +++++++++---------- 2 files changed, 50 insertions(+), 50 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index d2d5f6304eb1..c7b888b08e57 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -190,12 +190,12 @@ func simulateTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, ho defer wg.Done() defer c.Close() tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Storage: kubernetesStorage, - Finish: finish, - WaitGroup: &wg, - Logger: lg, + Client: c, + QPSLimiter: limiter, + KeyStore: keyStore, + Storage: kubernetesStorage, + Finish: finish, + Logger: lg, }) }(c) } @@ -206,12 +206,12 @@ func simulateTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, ho defer wg.Done() defer c.Close() tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Storage: kubernetesStorage, - Finish: finish, - WaitGroup: &wg, - Logger: lg, + Client: c, + QPSLimiter: limiter, + KeyStore: keyStore, + Storage: kubernetesStorage, + Finish: finish, + Logger: lg, }) }(c) } diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index a6827f6826bf..a788b7b3265a 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -39,7 +39,6 @@ var ( WatchTimeout = 500 * time.Millisecond MultiOpTxnOpCount = 4 DefaultCompactionPeriod = 200 * time.Millisecond - DefaultWatchInterval = 250 * time.Millisecond DefaultRevisionOffset = int64(100) LowTraffic = Profile{ @@ -130,12 +129,12 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 defer wg.Done() defer c.Close() traffic.RunWatchLoop(ctx, RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Storage: kubernetesStorage, - Finish: finish, - WaitGroup: &wg, - Logger: lg, + Client: c, + QPSLimiter: limiter, + KeyStore: keyStore, + Storage: kubernetesStorage, + Finish: finish, + Logger: lg, }) }(c) } @@ -147,12 +146,12 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 defer wg.Done() defer c.Close() traffic.RunWatchLoop(ctx, RunWatchLoopParam{ - Client: c, - KeyStore: keyStore, - Storage: kubernetesStorage, - Finish: finish, - WaitGroup: &wg, - Logger: lg, + Client: c, + QPSLimiter: limiter, + KeyStore: keyStore, + Storage: kubernetesStorage, + Finish: finish, + Logger: lg, }) }(c) } @@ -373,13 +372,13 @@ type RunCompactLoopParam struct { } type RunWatchLoopParam struct { - Client *client.RecordingClient + Client *client.RecordingClient + QPSLimiter *rate.Limiter // TODO: merge 2 key stores into 1 - KeyStore *keyStore - Storage *storage - Finish <-chan struct{} - WaitGroup *sync.WaitGroup - Logger *zap.Logger + KeyStore *keyStore + Storage *storage + Finish <-chan struct{} + Logger *zap.Logger } type Traffic interface { @@ -389,8 +388,6 @@ type Traffic interface { ExpectUniqueRevision() bool } -// runWatchLoop is a helper function that implements the periodic watch loop pattern. -// It spawns watches at regular intervals with random revision offsets. func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) { for { select { @@ -398,28 +395,31 @@ func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) return case <-p.Finish: return - case <-time.After(DefaultWatchInterval): - // Time to spawn a new watch + default: + } + err := p.QPSLimiter.Wait(ctx) + if err != nil { + return + } + err = runWatch(ctx, p, cfg) + if err != nil { + p.Logger.Error("runWatchLoop: Get failed", zap.Error(err)) } - - p.WaitGroup.Add(1) - go func() { - defer p.WaitGroup.Done() - runWatch(ctx, p, cfg) - }() } } -func runWatch(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) { - resp, err := p.Client.Get(ctx, cfg.key) +func runWatch(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) error { + getCtx, getCancel := context.WithTimeout(ctx, RequestTimeout) + defer getCancel() + + resp, err := p.Client.Get(getCtx, cfg.key) if err != nil { - p.Logger.Error("runWatchLoop: Get failed", zap.Error(err)) - return + return err } rev := resp.Header.Revision + DefaultRevisionOffset - watchCtx, cancel := context.WithTimeout(ctx, WatchTimeout) - defer cancel() + watchCtx, watchCancel := context.WithTimeout(ctx, WatchTimeout) + defer watchCancel() if cfg.requireLeader { watchCtx = clientv3.WithRequireLeader(watchCtx) @@ -428,12 +428,12 @@ func runWatch(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) { for { select { case <-ctx.Done(): - return + return nil case <-p.Finish: - return + return nil case _, ok := <-w: if !ok { - return + return nil } } } From 8f7cb83a847c68e4803e849329dedfcdbac9e675 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Thu, 22 Jan 2026 23:57:06 +0900 Subject: [PATCH 0769/1068] robustness: reduce `WatchTimeout` from 1s to 500ms An attempt to reduce flake for robustness test on CI. Signed-off-by: Chun-Hung Tseng --- tests/robustness/traffic/traffic.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index a30bda811ecc..4913d0387735 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -35,7 +35,7 @@ import ( var ( DefaultLeaseTTL int64 = 7200 RequestTimeout = 200 * time.Millisecond - WatchTimeout = time.Second + WatchTimeout = 500 * time.Millisecond MultiOpTxnOpCount = 4 DefaultCompactionPeriod = 200 * time.Millisecond DefaultWatchInterval = 250 * time.Millisecond From e72acc111a7b7dad2cef3e2739074352224b852d Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 26 Jan 2026 11:36:47 +0100 Subject: [PATCH 0770/1068] Remove large put to reduce memory usage and prevent OOMs The large put request was never able to detect any issues. With more focus on distributed part of etcd, there is lower need to test large writes. Signed-off-by: Marek Siarkowicz --- tests/robustness/traffic/etcd.go | 35 ++++++++++---------------------- 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index 41b099638388..329de822bd03 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -32,9 +32,8 @@ import ( var ( EtcdPutDeleteLease Traffic = etcdTraffic{ - keyCount: 10, - leaseTTL: DefaultLeaseTTL, - largePutSize: 32769, + keyCount: 10, + leaseTTL: DefaultLeaseTTL, // Please keep the sum of weights equal 100. requests: []random.ChoiceWeight[etcdRequestType]{ {Choice: Get, Weight: 15}, @@ -42,33 +41,29 @@ var ( {Choice: StaleGet, Weight: 10}, {Choice: StaleList, Weight: 10}, {Choice: Delete, Weight: 5}, - {Choice: MultiOpTxn, Weight: 5}, + {Choice: MultiOpTxn, Weight: 10}, {Choice: PutWithLease, Weight: 5}, {Choice: LeaseRevoke, Weight: 5}, {Choice: CompareAndSet, Weight: 5}, {Choice: Put, Weight: 20}, - {Choice: LargePut, Weight: 5}, }, } EtcdPut Traffic = etcdTraffic{ - keyCount: 10, - largePutSize: 32769, - leaseTTL: DefaultLeaseTTL, + keyCount: 10, + leaseTTL: DefaultLeaseTTL, // Please keep the sum of weights equal 100. requests: []random.ChoiceWeight[etcdRequestType]{ {Choice: Get, Weight: 15}, {Choice: List, Weight: 15}, {Choice: StaleGet, Weight: 10}, {Choice: StaleList, Weight: 10}, - {Choice: MultiOpTxn, Weight: 5}, - {Choice: LargePut, Weight: 5}, + {Choice: MultiOpTxn, Weight: 10}, {Choice: Put, Weight: 40}, }, } EtcdDelete Traffic = etcdTraffic{ - keyCount: 10, - largePutSize: 32769, - leaseTTL: DefaultLeaseTTL, + keyCount: 10, + leaseTTL: DefaultLeaseTTL, // Please keep the sum of weights equal 100. requests: []random.ChoiceWeight[etcdRequestType]{ {Choice: Put, Weight: 50}, @@ -78,10 +73,9 @@ var ( ) type etcdTraffic struct { - keyCount int - requests []random.ChoiceWeight[etcdRequestType] - leaseTTL int64 - largePutSize int + keyCount int + requests []random.ChoiceWeight[etcdRequestType] + leaseTTL int64 } func (t etcdTraffic) ExpectUniqueRevision() bool { @@ -96,7 +90,6 @@ const ( List etcdRequestType = "list" StaleList etcdRequestType = "staleList" Put etcdRequestType = "put" - LargePut etcdRequestType = "largePut" Delete etcdRequestType = "delete" MultiOpTxn etcdRequestType = "multiOpTxn" PutWithLease etcdRequestType = "putWithLease" @@ -246,12 +239,6 @@ func (c etcdTrafficClient) Request(ctx context.Context, request etcdRequestType, if resp != nil { rev = resp.Header.Revision } - case LargePut: - var resp *clientv3.PutResponse - resp, err = c.client.Put(opCtx, c.keyStore.GetKey(), random.RandString(c.largePutSize)) - if resp != nil { - rev = resp.Header.Revision - } case Delete: var resp *clientv3.DeleteResponse resp, err = c.client.Delete(opCtx, c.keyStore.GetKeyForDelete()) From f2f97df0b7d7de60f65354e7245ba35b2c2a77f7 Mon Sep 17 00:00:00 2001 From: Nont Date: Fri, 23 Jan 2026 20:44:58 -0600 Subject: [PATCH 0771/1068] Add description for range tests Signed-off-by: Nont --- tests/common/kv_test.go | 55 ++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index 8b6430600fd8..22d950d4b6d4 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -125,40 +125,43 @@ func TestKVGet(t *testing.T) { slices.Reverse(reversedKvsKeysOnly) tests := []struct { + name string begin string end string options config.GetOptions wantResponse *clientv3.GetResponse }{ - {begin: "a", wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, - {begin: "a", options: config.GetOptions{Serializable: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, - {begin: "a", options: config.GetOptions{End: "c"}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 2, Kvs: []*mvccpb.KeyValue{kvA, kvB}}}, - {begin: "", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, - {begin: "", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, - {begin: "a", options: config.GetOptions{End: "x"}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, - {begin: "", options: config.GetOptions{Prefix: true, Revision: int(firstRev + 2)}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 3, Kvs: []*mvccpb.KeyValue{kvA, kvB, kvCV1}}}, - {begin: "a", options: config.GetOptions{CountOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: nil}}, - {begin: "foo", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 2, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc}}}, - {begin: "foo", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 3, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc, kvFop}}}, - {begin: "", options: config.GetOptions{Prefix: true, Limit: 2}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB}, More: true}}, - {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, - {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: kvsByVersion}}, - {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortNone, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, - {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvs}}, - {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvs}}, - {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, KeysOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvsKeysOnly}}, - {begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, KeysOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvsKeysOnly}}, - {begin: "c", options: config.GetOptions{Revision: int(firstRev) + 2}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvCV1}}}, - {begin: "c", options: config.GetOptions{Revision: int(firstRev) + 3}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvCV2}}}, - {begin: "c", options: config.GetOptions{Revision: int(firstRev) + 4}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, - {begin: "c", wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, + {name: "Get one specific key (a)", begin: "a", wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, + {name: "Get one specific key (a), serializable", begin: "a", options: config.GetOptions{Serializable: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, + {name: "Get [a, c)", begin: "a", options: config.GetOptions{End: "c"}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 2, Kvs: []*mvccpb.KeyValue{kvA, kvB}}}, + {name: "blank key with --prefix option -> all KVs", begin: "", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, + {name: "blank key with --from-key option -> all KVs", begin: "", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, + {name: "Range covering all keys -> all KVs", begin: "a", options: config.GetOptions{End: "x"}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, + {name: "blank key with --prefix and revision -> [first key, entry at specified revision]", begin: "", options: config.GetOptions{Prefix: true, Revision: int(firstRev + 2)}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 3, Kvs: []*mvccpb.KeyValue{kvA, kvB, kvCV1}}}, + {name: "--count-only for one single key", begin: "a", options: config.GetOptions{CountOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: nil}}, + {name: "--prefix of foo -> all entries with the prefix", begin: "foo", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 2, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc}}}, + {name: "--from-key of 'foo' -> [", begin: "foo", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 3, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc, kvFop}}}, + {name: "blank key with limit set", begin: "", options: config.GetOptions{Prefix: true, Limit: 2}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB}, More: true}}, + {name: "all kvs ordered by mod revision ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, + {name: "all KVs ordered by version ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: kvsByVersion}}, + {name: "all KVs ordered by create revision, unspecified sort order", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortNone, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, + {name: "all KVs ordered by create revision descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvs}}, + {name: "all KVs ordered by key descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvs}}, + {name: "all KVs keys only, ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, KeysOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvsKeysOnly}}, + {name: "all KVs keys only, descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, KeysOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvsKeysOnly}}, + {name: "Get first version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 2}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvCV1}}}, + {name: "Get second version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 3}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvCV2}}}, + {name: "Get third version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 4}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, + {name: "Get the latest version of 'c'", begin: "c", wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, } for _, tt := range tests { - resp, err := cc.Get(ctx, tt.begin, tt.options) - require.NoErrorf(t, err, "count not get key %q, err: %s", tt.begin, err) - resp.Header.MemberId = 0 - assert.Equal(t, tt.wantResponse, resp) + t.Run(tt.name, func(t *testing.T) { + resp, err := cc.Get(ctx, tt.begin, tt.options) + require.NoErrorf(t, err, "count not get key %q, err: %s", tt.begin, err) + resp.Header.MemberId = 0 + assert.Equal(t, tt.wantResponse, resp) + }) } }) }) From 8ef8b03104c4bc5fda4e24bd353e230b465184c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 17:24:54 +0000 Subject: [PATCH 0772/1068] build(deps): bump github/codeql-action from 4.31.10 to 4.32.0 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.10 to 4.32.0. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/cdefb33c0f6224e58673d9004f47f7cb3e328b89...b20883b0cd1f46c72ae0ba6d1090936928f9fa30) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.32.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 1d89f36b145a..9bb54ec08a6d 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 + uses: github/codeql-action/init@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 + uses: github/codeql-action/autobuild@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 + uses: github/codeql-action/analyze@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index eb01924d2749..9e5df7530dfb 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 + uses: github/codeql-action/upload-sarif@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 with: sarif_file: results.sarif From b9e2a91267c7d4f7ece7263941550b5fab6b06d8 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Mon, 26 Jan 2026 14:29:06 -0800 Subject: [PATCH 0773/1068] build(deps): bump actions/checkout from 6.0.1 to 6.0.2 Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.1 to 6.0.2. - [Release notes](https://github.com/actions/checkout/releases) - [Commits](actions/checkout@v6.0.1...v6.0.2) Fixes .github/workflows/antithesis-verify.yml to use the commit SHA instead of the git tag. --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: Ivan Valdes --- .github/workflows/antithesis-test.yml | 2 +- .github/workflows/antithesis-verify.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/measure-testgrid-flakiness.yaml | 2 +- .github/workflows/scorecards.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index a34acd4ed197..ea3a437839be 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -42,7 +42,7 @@ jobs: environment: Antithesis steps: - name: Checkout the code - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Login to Antithesis Docker Registry uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 diff --git a/.github/workflows/antithesis-verify.yml b/.github/workflows/antithesis-verify.yml index 07d6b0a7a67c..c6d6abb1a270 100644 --- a/.github/workflows/antithesis-verify.yml +++ b/.github/workflows/antithesis-verify.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Build etcd-server and etcd-client images run: | diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f380bd5b19d0..1d89f36b145a 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -37,7 +37,7 @@ jobs: language: ['go'] steps: - name: Checkout repository - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 diff --git a/.github/workflows/measure-testgrid-flakiness.yaml b/.github/workflows/measure-testgrid-flakiness.yaml index 21b0f13f80f1..64b1b3eaf480 100644 --- a/.github/workflows/measure-testgrid-flakiness.yaml +++ b/.github/workflows/measure-testgrid-flakiness.yaml @@ -12,7 +12,7 @@ jobs: name: Measure TestGrid Flakiness runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - id: goversion run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 6c977ef51398..eb01924d2749 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -23,7 +23,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false From 8593dc28be73ec95db603723e2e5152e11a6b388 Mon Sep 17 00:00:00 2001 From: Nont Date: Wed, 21 Jan 2026 23:26:31 -0600 Subject: [PATCH 0774/1068] Add range test cases for Min/Max Create/Mod revision Signed-off-by: Nont --- tests/common/kv_test.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index 22d950d4b6d4..52d5c6b87af9 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -154,6 +154,10 @@ func TestKVGet(t *testing.T) { {name: "Get second version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 3}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvCV2}}}, {name: "Get third version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 4}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, {name: "Get the latest version of 'c'", begin: "c", wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, + {name: "all KVs with mininum mod revision sorted by mod revision", begin: "", options: config.GetOptions{Prefix: true, MinModRevision: int(firstRev) + 2, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvC, kvFoo, kvFooAbc, kvFop}}}, + {name: "all KVs with maximum mod revision, sorted by key descending", begin: "", options: config.GetOptions{Prefix: true, MaxModRevision: int(firstRev) + 3, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvB, kvA}}}, + {name: "all KVs with minimum create revision, sorted by version, descending", begin: "", options: config.GetOptions{Prefix: true, MinCreateRevision: int(firstRev) + 2, Order: clientv3.SortDescend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvC, kvFoo, kvFooAbc, kvFop}}}, + {name: "all KVs with maximimum create revision, sorted by value", begin: "", options: config.GetOptions{Prefix: true, MaxCreateRevision: int(firstRev) + 5, Order: clientv3.SortDescend, SortBy: clientv3.SortByValue}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB, kvC, kvFoo}}}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { From fe51b8316741aae47b8a90adb98d276255ef5610 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 27 Jan 2026 17:35:43 +0000 Subject: [PATCH 0775/1068] Remove the use of grpc-go's Metadata field We also revoke the deprecation of the Metadata field, Users can store whatever information related to each endpoint. We just don't need to pass the value to grpc-go's Metadata. Signed-off-by: Benjamin Wang --- client/v3/naming/resolver/resolver.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/v3/naming/resolver/resolver.go b/client/v3/naming/resolver/resolver.go index bc39b4633d5e..1aca340561af 100644 --- a/client/v3/naming/resolver/resolver.go +++ b/client/v3/naming/resolver/resolver.go @@ -112,8 +112,7 @@ func convertToGRPCEndpoint(ups map[string]*endpoints.Update) []gresolver.Endpoin ep := gresolver.Endpoint{ Addresses: []gresolver.Address{ { - Addr: up.Endpoint.Addr, - Metadata: up.Endpoint.Metadata, //nolint:staticcheck // TODO: remove for a supported version + Addr: up.Endpoint.Addr, }, }, } From 2b9ffb73e261c91d8c4df53252b9243aca54b60e Mon Sep 17 00:00:00 2001 From: Zhijun Date: Tue, 3 Feb 2026 09:14:04 +0800 Subject: [PATCH 0776/1068] Helps solve the leaseKeepAlive grpc Unavailable issue while maintaining existing behavior Signed-off-by: Zhijun --- server/etcdserver/api/v3rpc/lease.go | 10 +++++----- server/etcdserver/api/v3rpc/util.go | 1 + server/etcdserver/v3_server.go | 10 ++++++++-- server/lease/leasehttp/http.go | 2 +- tests/integration/v3_lease_test.go | 8 +++----- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/server/etcdserver/api/v3rpc/lease.go b/server/etcdserver/api/v3rpc/lease.go index f51334eadeb8..4f871d770368 100644 --- a/server/etcdserver/api/v3rpc/lease.go +++ b/server/etcdserver/api/v3rpc/lease.go @@ -22,7 +22,6 @@ import ( "go.uber.org/zap" pb "go.etcd.io/etcd/api/v3/etcdserverpb" - "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" "go.etcd.io/etcd/server/v3/etcdserver" "go.etcd.io/etcd/server/v3/lease" ) @@ -98,11 +97,12 @@ func (ls *LeaseServer) LeaseKeepAlive(stream pb.Lease_LeaseKeepAliveServer) (err select { case err = <-errc: case <-stream.Context().Done(): - // the only server-side cancellation is noleader for now. + // We end up here due to: + // 1. Client cancellation + // 2. Server cancellation: the client ctx is wrapped with WithRequireLeader, + // monitorLeader() detects no leader and thus cancels this stream with ErrGRPCNoLeader. + // 3. Server cancellation: the server is shutting down. err = stream.Context().Err() - if errors.Is(err, context.Canceled) { - err = rpctypes.ErrGRPCNoLeader - } } return err } diff --git a/server/etcdserver/api/v3rpc/util.go b/server/etcdserver/api/v3rpc/util.go index 2354b0cb2431..3caeec6edb45 100644 --- a/server/etcdserver/api/v3rpc/util.go +++ b/server/etcdserver/api/v3rpc/util.go @@ -51,6 +51,7 @@ var toGRPCErrorMap = map[error]error{ errors.ErrNoLeader: rpctypes.ErrGRPCNoLeader, errors.ErrNotLeader: rpctypes.ErrGRPCNotLeader, errors.ErrLeaderChanged: rpctypes.ErrGRPCLeaderChanged, + errors.ErrCanceled: rpctypes.ErrGRPCCanceled, errors.ErrStopped: rpctypes.ErrGRPCStopped, errors.ErrTimeout: rpctypes.ErrGRPCTimeout, errors.ErrTimeoutDueToLeaderFail: rpctypes.ErrGRPCTimeoutDueToLeaderFail, diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 3fcf3c4a9b6d..da43d1cbd16e 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -390,10 +390,16 @@ func (s *EtcdServer) LeaseRenew(ctx context.Context, id lease.LeaseID) (int64, e time.Sleep(50 * time.Millisecond) } - if errorspkg.Is(cctx.Err(), context.DeadlineExceeded) { + err := cctx.Err() + switch { + case errorspkg.Is(err, context.DeadlineExceeded): return -1, errors.ErrTimeout + case errorspkg.Is(err, context.Canceled): + return -1, errors.ErrCanceled + default: + s.Logger().Warn("Unexpected lease renew context error", zap.Error(err)) + return -1, errors.ErrCanceled } - return -1, errors.ErrCanceled } func (s *EtcdServer) checkLeaseTimeToLive(ctx context.Context, leaseID lease.LeaseID) (uint64, error) { diff --git a/server/lease/leasehttp/http.go b/server/lease/leasehttp/http.go index 79ca649d6a62..ad19103b022f 100644 --- a/server/lease/leasehttp/http.go +++ b/server/lease/leasehttp/http.go @@ -172,8 +172,8 @@ func RenewHTTP(ctx context.Context, id lease.LeaseID, url string, rt http.RoundT if err != nil { return -1, err } + req = req.WithContext(ctx) req.Header.Set("Content-Type", "application/protobuf") - req.Cancel = ctx.Done() //nolint:staticcheck // TODO: remove for a supported version resp, err := cc.Do(req) if err != nil { diff --git a/tests/integration/v3_lease_test.go b/tests/integration/v3_lease_test.go index 36630c379681..11c3da2840da 100644 --- a/tests/integration/v3_lease_test.go +++ b/tests/integration/v3_lease_test.go @@ -341,7 +341,6 @@ func TestV3LeaseKeepAliveForwardingCatchError(t *testing.T) { require.Positive(t, resp.TTL) }) - // Shows current behavior: client cancel during forwarding incorrectly returns Unavailable. t.Run("client cancels while forwarding", func(t *testing.T) { integration.SkipIfNoGoFail(t) leader, follower, _ := setupLeaseForwardingCluster(t) @@ -371,15 +370,14 @@ func TestV3LeaseKeepAliveForwardingCatchError(t *testing.T) { time.Sleep(50 * time.Millisecond) cancel() - // Client sees Canceled (gRPC returns this immediately after cancel()), - // but server actually generated Unavailable (verified by metrics below). + // Client sees Canceled (gRPC returns this immediately after cancel()) _, err = keepAliveClient.Recv() require.Equal(t, codes.Canceled, status.Code(err)) require.Eventually(t, func() bool { - return getLeaseKeepAliveMetric(t, follower, "Unavailable") == prevUnavailableCount+1 + return getLeaseKeepAliveMetric(t, follower, "Canceled") == prevCanceledCount+1 }, 3*time.Second, 100*time.Millisecond) - require.Equal(t, prevCanceledCount, getLeaseKeepAliveMetric(t, follower, "Canceled")) + require.Equal(t, prevUnavailableCount, getLeaseKeepAliveMetric(t, follower, "Unavailable")) }) t.Run("forwarding times out", func(t *testing.T) { From c76fdb52aa8421a48f401f006c2dee44a9137245 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Feb 2026 23:55:14 +0000 Subject: [PATCH 0777/1068] build(deps): bump docker/login-action from 3.6.0 to 3.7.0 Bumps [docker/login-action](https://github.com/docker/login-action) from 3.6.0 to 3.7.0. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/5e57cd118135c172c3672efd75eb46360885c0ef...c94ce9fb468520275223c153574b00df6fe4bcc9) --- updated-dependencies: - dependency-name: docker/login-action dependency-version: 3.7.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index ea3a437839be..77952c516dbc 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -45,7 +45,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Login to Antithesis Docker Registry - uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 + uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0 with: registry: ${{ env.REGISTRY }} username: _json_key From 9429b2a723c5ce50cc7c42c73dcd1507bd85b8c8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Feb 2026 23:55:35 +0000 Subject: [PATCH 0778/1068] build(deps): bump github/codeql-action from 4.32.0 to 4.32.1 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.0 to 4.32.1. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/b20883b0cd1f46c72ae0ba6d1090936928f9fa30...6bc82e05fd0ea64601dd4b465378bbcf57de0314) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.32.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 9bb54ec08a6d..b4ae4241fe1a 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 + uses: github/codeql-action/init@6bc82e05fd0ea64601dd4b465378bbcf57de0314 # v4.32.1 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 + uses: github/codeql-action/autobuild@6bc82e05fd0ea64601dd4b465378bbcf57de0314 # v4.32.1 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 + uses: github/codeql-action/analyze@6bc82e05fd0ea64601dd4b465378bbcf57de0314 # v4.32.1 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 9e5df7530dfb..a3d8ee005f08 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 + uses: github/codeql-action/upload-sarif@6bc82e05fd0ea64601dd4b465378bbcf57de0314 # v4.32.1 with: sarif_file: results.sarif From 5f2bbb5ba8fff6c28e4d194beb447de9006cc2bc Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 30 Jan 2026 10:07:17 +0000 Subject: [PATCH 0779/1068] Bump go version to 1.25.6 Signed-off-by: Benjamin Wang --- .go-version | 2 +- api/go.mod | 2 +- cache/go.mod | 2 +- client/pkg/go.mod | 2 +- client/v3/go.mod | 2 +- etcdctl/go.mod | 2 +- etcdutl/go.mod | 2 +- go.mod | 2 +- go.work | 2 +- pkg/go.mod | 2 +- server/go.mod | 2 +- tests/go.mod | 2 +- tools/mod/go.mod | 2 +- tools/rw-heatmaps/go.mod | 2 +- tools/testgrid-analysis/go.mod | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.go-version b/.go-version index b45fe310644f..198ec23ccfcc 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.25.5 +1.25.6 diff --git a/api/go.mod b/api/go.mod index 6ac0c3a2dcaa..c0a1f62ac7b3 100644 --- a/api/go.mod +++ b/api/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/api/v3 go 1.25.0 -toolchain go1.25.5 +toolchain go1.25.6 require ( github.com/coreos/go-semver v0.3.1 diff --git a/cache/go.mod b/cache/go.mod index 289442c23ca2..c11e22fa032a 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/cache/v3 go 1.25.0 -toolchain go1.25.5 +toolchain go1.25.6 require ( github.com/google/go-cmp v0.7.0 diff --git a/client/pkg/go.mod b/client/pkg/go.mod index e4e9a0e0120f..94091f5d0811 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/pkg/v3 go 1.25.0 -toolchain go1.25.5 +toolchain go1.25.6 require ( github.com/coreos/go-systemd/v22 v22.6.0 diff --git a/client/v3/go.mod b/client/v3/go.mod index 655fb0da4c12..4a50dbbcd0ef 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/v3 go 1.25.0 -toolchain go1.25.5 +toolchain go1.25.6 require ( github.com/coreos/go-semver v0.3.1 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 5098a0ef5d46..49a31376dd01 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdctl/v3 go 1.25.0 -toolchain go1.25.5 +toolchain go1.25.6 require ( github.com/bgentry/speakeasy v0.2.0 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 67acd4dbfa80..9df42576014f 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdutl/v3 go 1.25.0 -toolchain go1.25.5 +toolchain go1.25.6 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/go.mod b/go.mod index c19564ee708b..618b6a80bebc 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/v3 go 1.25.0 -toolchain go1.25.5 +toolchain go1.25.6 replace ( go.etcd.io/etcd/api/v3 => ./api diff --git a/go.work b/go.work index dc180f682f8f..78406b8a78fb 100644 --- a/go.work +++ b/go.work @@ -2,7 +2,7 @@ go 1.25.0 -toolchain go1.25.5 +toolchain go1.25.6 use ( . diff --git a/pkg/go.mod b/pkg/go.mod index 93a158397f50..9cb4296b4b75 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/pkg/v3 go 1.25.0 -toolchain go1.25.5 +toolchain go1.25.6 require ( github.com/creack/pty v1.1.18 diff --git a/server/go.mod b/server/go.mod index d53135bcd7d2..1b2e5d3b37bd 100644 --- a/server/go.mod +++ b/server/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/server/v3 go 1.25.0 -toolchain go1.25.5 +toolchain go1.25.6 require ( github.com/coreos/go-semver v0.3.1 diff --git a/tests/go.mod b/tests/go.mod index d4963cbffadf..93e57fdca408 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tests/v3 go 1.25.0 -toolchain go1.25.5 +toolchain go1.25.6 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 1f196ae9961b..f324b33d3f6c 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/v3 go 1.25.0 -toolchain go1.25.5 +toolchain go1.25.6 require ( github.com/alexfalkowski/gocovmerge v1.11.0 diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 833fc4dd0af3..b33fd5ed28c4 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/rw-heatmaps/v3 go 1.25.0 -toolchain go1.25.5 +toolchain go1.25.6 require ( github.com/spf13/cobra v1.10.2 diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 0ee7284ad2bb..56217223dd03 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 go 1.25.0 -toolchain go1.25.5 +toolchain go1.25.6 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 From a64d6b8c352f80d6066f62e0559e216b8bb1fc49 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 30 Jan 2026 11:49:37 +0100 Subject: [PATCH 0780/1068] Add AI guidance to PR template Signed-off-by: Marek Siarkowicz --- .github/PULL_REQUEST_TEMPLATE.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 48dc1a253d48..43b38bbfe909 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,2 +1,6 @@ + From 1675197327f0d31a9a91669681fc4782ce06f0ec Mon Sep 17 00:00:00 2001 From: Nont Date: Tue, 3 Feb 2026 09:11:59 -0600 Subject: [PATCH 0781/1068] Add keys only range test cases Signed-off-by: Nont --- tests/common/kv_test.go | 120 ++++++++++++++++++++++++---------------- 1 file changed, 72 insertions(+), 48 deletions(-) diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index 52d5c6b87af9..a9b9bd178047 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -16,6 +16,7 @@ package common import ( "context" + "fmt" "slices" "testing" "time" @@ -86,24 +87,6 @@ func TestKVGet(t *testing.T) { } } - createKV := func(key, val string, createRev, modRev, ver int64) *mvccpb.KeyValue { - return &mvccpb.KeyValue{ - Key: []byte(key), - Value: []byte(val), - CreateRevision: createRev, - ModRevision: modRev, - Version: ver, - } - } - - createHeader := func(rev int64) *etcdserverpb.ResponseHeader { - return &etcdserverpb.ResponseHeader{ - ClusterId: firstHeader.ClusterId, - Revision: rev, - RaftTerm: firstHeader.RaftTerm, - } - } - firstRev := firstHeader.Revision kvA := createKV("a", "bar", firstRev, firstRev, 1) kvB := createKV("b", "bar", firstRev+1, firstRev+1, 1) @@ -124,42 +107,54 @@ func TestKVGet(t *testing.T) { reversedKvsKeysOnly := slices.Clone(allKvsKeysOnly) slices.Reverse(reversedKvsKeysOnly) - tests := []struct { + type testcase struct { name string begin string - end string options config.GetOptions wantResponse *clientv3.GetResponse - }{ - {name: "Get one specific key (a)", begin: "a", wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, - {name: "Get one specific key (a), serializable", begin: "a", options: config.GetOptions{Serializable: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, - {name: "Get [a, c)", begin: "a", options: config.GetOptions{End: "c"}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 2, Kvs: []*mvccpb.KeyValue{kvA, kvB}}}, - {name: "blank key with --prefix option -> all KVs", begin: "", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, - {name: "blank key with --from-key option -> all KVs", begin: "", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, - {name: "Range covering all keys -> all KVs", begin: "a", options: config.GetOptions{End: "x"}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, - {name: "blank key with --prefix and revision -> [first key, entry at specified revision]", begin: "", options: config.GetOptions{Prefix: true, Revision: int(firstRev + 2)}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 3, Kvs: []*mvccpb.KeyValue{kvA, kvB, kvCV1}}}, - {name: "--count-only for one single key", begin: "a", options: config.GetOptions{CountOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: nil}}, - {name: "--prefix of foo -> all entries with the prefix", begin: "foo", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 2, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc}}}, - {name: "--from-key of 'foo' -> [", begin: "foo", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 3, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc, kvFop}}}, - {name: "blank key with limit set", begin: "", options: config.GetOptions{Prefix: true, Limit: 2}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB}, More: true}}, - {name: "all kvs ordered by mod revision ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, - {name: "all KVs ordered by version ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: kvsByVersion}}, - {name: "all KVs ordered by create revision, unspecified sort order", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortNone, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvs}}, - {name: "all KVs ordered by create revision descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvs}}, - {name: "all KVs ordered by key descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvs}}, - {name: "all KVs keys only, ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, KeysOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: allKvsKeysOnly}}, - {name: "all KVs keys only, descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, KeysOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: reversedKvsKeysOnly}}, - {name: "Get first version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 2}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvCV1}}}, - {name: "Get second version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 3}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvCV2}}}, - {name: "Get third version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 4}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, - {name: "Get the latest version of 'c'", begin: "c", wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, - {name: "all KVs with mininum mod revision sorted by mod revision", begin: "", options: config.GetOptions{Prefix: true, MinModRevision: int(firstRev) + 2, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvC, kvFoo, kvFooAbc, kvFop}}}, - {name: "all KVs with maximum mod revision, sorted by key descending", begin: "", options: config.GetOptions{Prefix: true, MaxModRevision: int(firstRev) + 3, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvB, kvA}}}, - {name: "all KVs with minimum create revision, sorted by version, descending", begin: "", options: config.GetOptions{Prefix: true, MinCreateRevision: int(firstRev) + 2, Order: clientv3.SortDescend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvC, kvFoo, kvFooAbc, kvFop}}}, - {name: "all KVs with maximimum create revision, sorted by value", begin: "", options: config.GetOptions{Prefix: true, MaxCreateRevision: int(firstRev) + 5, Order: clientv3.SortDescend, SortBy: clientv3.SortByValue}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstRev + 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB, kvC, kvFoo}}}, } - for _, tt := range tests { + tests := []testcase{ + {name: "Get one specific key (a)", begin: "a", wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, + {name: "Get one specific key (a), serializable", begin: "a", options: config.GetOptions{Serializable: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, + {name: "Get [a, c)", begin: "a", options: config.GetOptions{End: "c"}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 2, Kvs: []*mvccpb.KeyValue{kvA, kvB}}}, + {name: "blank key with --prefix option -> all KVs", begin: "", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: allKvs}}, + {name: "blank key with --from-key option -> all KVs", begin: "", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: allKvs}}, + {name: "Range covering all keys -> all KVs", begin: "a", options: config.GetOptions{End: "x"}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: allKvs}}, + {name: "blank key with --prefix and revision -> [first key, entry at specified revision]", begin: "", options: config.GetOptions{Prefix: true, Revision: int(firstRev + 2)}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 3, Kvs: []*mvccpb.KeyValue{kvA, kvB, kvCV1}}}, + {name: "--count-only for one single key", begin: "a", options: config.GetOptions{CountOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 1, Kvs: nil}}, + {name: "--prefix of foo -> all entries with the prefix", begin: "foo", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 2, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc}}}, + {name: "--from-key of 'foo' -> [", begin: "foo", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 3, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc, kvFop}}}, + {name: "blank key with limit set", begin: "", options: config.GetOptions{Prefix: true, Limit: 2}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB}, More: true}}, + {name: "all kvs ordered by mod revision ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: allKvs}}, + {name: "all KVs ordered by version ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: kvsByVersion}}, + {name: "all KVs ordered by create revision, unspecified sort order", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortNone, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: allKvs}}, + {name: "all KVs ordered by create revision descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: reversedKvs}}, + {name: "all KVs ordered by key descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: reversedKvs}}, + {name: "all KVs descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: reversedKvs}}, + {name: "Get first version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 2}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvCV1}}}, + {name: "Get second version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 3}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvCV2}}}, + {name: "Get third version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 4}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, + {name: "Get the latest version of 'c'", begin: "c", wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, + {name: "all KVs with mininum mod revision sorted by mod revision", begin: "", options: config.GetOptions{Prefix: true, MinModRevision: int(firstRev) + 2, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvC, kvFoo, kvFooAbc, kvFop}}}, + {name: "all KVs with maximum mod revision, sorted by key descending", begin: "", options: config.GetOptions{Prefix: true, MaxModRevision: int(firstRev) + 3, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvB, kvA}}}, + {name: "all KVs with minimum create revision, sorted by version, descending", begin: "", options: config.GetOptions{Prefix: true, MinCreateRevision: int(firstRev) + 2, Order: clientv3.SortDescend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvC, kvFoo, kvFooAbc, kvFop}}}, + {name: "all KVs with maximimum create revision, sorted by value", begin: "", options: config.GetOptions{Prefix: true, MaxCreateRevision: int(firstRev) + 5, Order: clientv3.SortDescend, SortBy: clientv3.SortByValue}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB, kvC, kvFoo}}}, + } + testsWithKeysOnly := make([]testcase, 0, len(tests)) + for _, otc := range tests { + if otc.options.CountOnly { + continue // can't use both --count-only and --keys-only at the same time + } + withKeysOnly := otc + withKeysOnly.name = fmt.Sprintf("%s --keys-only", withKeysOnly.name) + withKeysOnly.options.KeysOnly = true + wantResponse := *otc.wantResponse + wantResponse.Kvs = dropValue(withKeysOnly.wantResponse.Kvs) + withKeysOnly.wantResponse = &wantResponse + testsWithKeysOnly = append(testsWithKeysOnly, withKeysOnly) + } + for _, tt := range slices.Concat(tests, testsWithKeysOnly) { t.Run(tt.name, func(t *testing.T) { resp, err := cc.Get(ctx, tt.begin, tt.options) require.NoErrorf(t, err, "count not get key %q, err: %s", tt.begin, err) @@ -172,6 +167,35 @@ func TestKVGet(t *testing.T) { } } +func createKV(key, val string, createRev, modRev, ver int64) *mvccpb.KeyValue { + return &mvccpb.KeyValue{ + Key: []byte(key), + Value: []byte(val), + CreateRevision: createRev, + ModRevision: modRev, + Version: ver, + } +} + +//nolint:unparam +func createHeader(firstHeader *etcdserverpb.ResponseHeader, offset int64) *etcdserverpb.ResponseHeader { + return &etcdserverpb.ResponseHeader{ + ClusterId: firstHeader.ClusterId, + Revision: firstHeader.Revision + offset, + RaftTerm: firstHeader.RaftTerm, + } +} + +func dropValue(s []*mvccpb.KeyValue) []*mvccpb.KeyValue { + ss := make([]*mvccpb.KeyValue, 0, len(s)) + for _, kv := range s { + clone := *kv + clone.Value = nil + ss = append(ss, &clone) + } + return ss +} + func TestKVDelete(t *testing.T) { testRunner.BeforeTest(t) for _, tc := range clusterTestCases() { From 25eea8fdbb2933c83af4e3a05d486c4debe0aed9 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Thu, 5 Feb 2026 15:02:41 +0100 Subject: [PATCH 0782/1068] dependency: bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.27.5 to 2.27.7 Reference: - #21239 - #21233 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 6 +++--- api/go.sum | 12 ++++++------ cache/go.mod | 6 +++--- cache/go.sum | 12 ++++++------ client/v3/go.mod | 6 +++--- client/v3/go.sum | 12 ++++++------ etcdctl/go.mod | 6 +++--- etcdctl/go.sum | 12 ++++++------ etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 12 ++++++------ go.mod | 6 +++--- go.sum | 12 ++++++------ go.work.sum | 2 +- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 6 +++--- server/go.sum | 12 ++++++------ tests/go.mod | 6 +++--- tests/go.sum | 12 ++++++------ tools/mod/go.mod | 6 +++--- tools/mod/go.sum | 12 ++++++------ tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 23 files changed, 88 insertions(+), 88 deletions(-) diff --git a/api/go.mod b/api/go.mod index c0a1f62ac7b3..52d4dd9032e6 100644 --- a/api/go.mod +++ b/api/go.mod @@ -8,9 +8,9 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 github.com/stretchr/testify v1.11.1 - google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 + google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 google.golang.org/grpc v1.78.0 google.golang.org/protobuf v1.36.11 ) @@ -24,6 +24,6 @@ require ( golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 00bd58aa6b9a..a17b4c693d41 100644 --- a/api/go.sum +++ b/api/go.sum @@ -16,8 +16,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 h1:jP1RStw811EvUDzsUQ9oESqw2e4RqCjSAD9qIL8eMns= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5/go.mod h1:WXNBZ64q3+ZUemCMXD9kYnr56H7CgZxDBHCVwstfl3s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -77,10 +77,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 h1:vmC/ws+pLzWjj/gzApyoZuSVrDtF1aod4u/+bbj8hgM= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:p3MLuOwURrGBRoEyFHBT3GjUwaCQVKeNqqWxlcISGdw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/cache/go.mod b/cache/go.mod index c11e22fa032a..0e1ee2a646e3 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -18,7 +18,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect @@ -26,8 +26,8 @@ require ( golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/grpc v1.78.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/cache/go.sum b/cache/go.sum index 26bc525c42c7..1cc8e8a34b53 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -24,8 +24,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 h1:jP1RStw811EvUDzsUQ9oESqw2e4RqCjSAD9qIL8eMns= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5/go.mod h1:WXNBZ64q3+ZUemCMXD9kYnr56H7CgZxDBHCVwstfl3s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -103,10 +103,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 h1:vmC/ws+pLzWjj/gzApyoZuSVrDtF1aod4u/+bbj8hgM= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:p3MLuOwURrGBRoEyFHBT3GjUwaCQVKeNqqWxlcISGdw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/client/v3/go.mod b/client/v3/go.mod index 4a50dbbcd0ef..22df3df5d038 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -25,7 +25,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect @@ -39,8 +39,8 @@ require ( golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 0f206c12b3f9..ef4e7dea9cd5 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -26,8 +26,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 h1:jP1RStw811EvUDzsUQ9oESqw2e4RqCjSAD9qIL8eMns= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5/go.mod h1:WXNBZ64q3+ZUemCMXD9kYnr56H7CgZxDBHCVwstfl3s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= @@ -111,10 +111,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 h1:vmC/ws+pLzWjj/gzApyoZuSVrDtF1aod4u/+bbj8hgM= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:p3MLuOwURrGBRoEyFHBT3GjUwaCQVKeNqqWxlcISGdw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 49a31376dd01..3cd60d9ed7b2 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -32,7 +32,7 @@ require ( github.com/fatih/color v1.18.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -45,8 +45,8 @@ require ( golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index c5370a3a6bc5..26f4a5e9912c 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -41,8 +41,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 h1:jP1RStw811EvUDzsUQ9oESqw2e4RqCjSAD9qIL8eMns= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5/go.mod h1:WXNBZ64q3+ZUemCMXD9kYnr56H7CgZxDBHCVwstfl3s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -146,10 +146,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 h1:vmC/ws+pLzWjj/gzApyoZuSVrDtF1aod4u/+bbj8hgM= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:p3MLuOwURrGBRoEyFHBT3GjUwaCQVKeNqqWxlcISGdw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 9df42576014f..97046c9edc2b 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -49,7 +49,7 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -85,8 +85,8 @@ require ( golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect golang.org/x/time v0.14.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/grpc v1.78.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index c39780fa7e15..21c3ba1bb6d3 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -46,8 +46,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 h1:jP1RStw811EvUDzsUQ9oESqw2e4RqCjSAD9qIL8eMns= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5/go.mod h1:WXNBZ64q3+ZUemCMXD9kYnr56H7CgZxDBHCVwstfl3s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -187,10 +187,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 h1:vmC/ws+pLzWjj/gzApyoZuSVrDtF1aod4u/+bbj8hgM= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:p3MLuOwURrGBRoEyFHBT3GjUwaCQVKeNqqWxlcISGdw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/go.mod b/go.mod index 618b6a80bebc..993e15231344 100644 --- a/go.mod +++ b/go.mod @@ -63,7 +63,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -102,8 +102,8 @@ require ( golang.org/x/sync v0.19.0 // indirect golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/utils v0.0.0-20260108192941-914a6e750570 // indirect diff --git a/go.sum b/go.sum index 6ee1594d7de9..6b295189f900 100644 --- a/go.sum +++ b/go.sum @@ -74,8 +74,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 h1:jP1RStw811EvUDzsUQ9oESqw2e4RqCjSAD9qIL8eMns= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5/go.mod h1:WXNBZ64q3+ZUemCMXD9kYnr56H7CgZxDBHCVwstfl3s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -255,10 +255,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 h1:vmC/ws+pLzWjj/gzApyoZuSVrDtF1aod4u/+bbj8hgM= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:p3MLuOwURrGBRoEyFHBT3GjUwaCQVKeNqqWxlcISGdw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/go.work.sum b/go.work.sum index d30044611b36..de486ccb253f 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1015,7 +1015,7 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda/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-20260120174246-409b4a993575/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260122232226-8e98ce8d340d/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc v1.67.3/go.mod h1:YGaHCc6Oap+FzBJTZLBzkGSYt/cvGPFTPxkn7QfSU8s= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= diff --git a/pkg/go.mod b/pkg/go.mod index 9cb4296b4b75..3735688686d0 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -28,7 +28,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.49.0 // indirect golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index 9550866e5da0..f282595a0bf0 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -64,8 +64,8 @@ golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/server/go.mod b/server/go.mod index 1b2e5d3b37bd..d02e62beea07 100644 --- a/server/go.mod +++ b/server/go.mod @@ -15,7 +15,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 @@ -39,7 +39,7 @@ require ( golang.org/x/crypto v0.47.0 golang.org/x/net v0.49.0 golang.org/x/time v0.14.0 - google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 + google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 google.golang.org/grpc v1.78.0 google.golang.org/protobuf v1.36.11 gopkg.in/natefinch/lumberjack.v2 v2.2.1 @@ -72,7 +72,7 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index fc2c4b42d5bc..850da94f115d 100644 --- a/server/go.sum +++ b/server/go.sum @@ -40,8 +40,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 h1:jP1RStw811EvUDzsUQ9oESqw2e4RqCjSAD9qIL8eMns= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5/go.mod h1:WXNBZ64q3+ZUemCMXD9kYnr56H7CgZxDBHCVwstfl3s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -166,10 +166,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 h1:vmC/ws+pLzWjj/gzApyoZuSVrDtF1aod4u/+bbj8hgM= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:p3MLuOwURrGBRoEyFHBT3GjUwaCQVKeNqqWxlcISGdw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/tests/go.mod b/tests/go.mod index 93e57fdca408..6519f38ef69b 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -24,7 +24,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 github.com/olekukonko/tablewriter v1.1.3 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 @@ -102,8 +102,8 @@ require ( golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/utils v0.0.0-20260108192941-914a6e750570 // indirect diff --git a/tests/go.sum b/tests/go.sum index 7d364dcb5dde..a27435adf1c1 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -80,8 +80,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 h1:jP1RStw811EvUDzsUQ9oESqw2e4RqCjSAD9qIL8eMns= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5/go.mod h1:WXNBZ64q3+ZUemCMXD9kYnr56H7CgZxDBHCVwstfl3s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -257,10 +257,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 h1:vmC/ws+pLzWjj/gzApyoZuSVrDtF1aod4u/+bbj8hgM= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:p3MLuOwURrGBRoEyFHBT3GjUwaCQVKeNqqWxlcISGdw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index f324b33d3f6c..a9c66e9693c0 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -11,7 +11,7 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint/v2 v2.8.0 github.com/google/yamlfmt v0.21.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 github.com/ryancurrah/gomodguard v1.4.1 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 @@ -246,8 +246,8 @@ require ( golang.org/x/telemetry v0.0.0-20260109210033-bd525da824e2 // indirect golang.org/x/term v0.39.0 // indirect golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/grpc v1.78.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 7af116b5ecef..39c47c5f378d 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -252,8 +252,8 @@ github.com/gostaticanalysis/nilerr v0.1.2/go.mod h1:A19UHhoY3y8ahoL7YKz6sdjDtduw github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 h1:jP1RStw811EvUDzsUQ9oESqw2e4RqCjSAD9qIL8eMns= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5/go.mod h1:WXNBZ64q3+ZUemCMXD9kYnr56H7CgZxDBHCVwstfl3s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= @@ -715,10 +715,10 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 h1:vmC/ws+pLzWjj/gzApyoZuSVrDtF1aod4u/+bbj8hgM= -google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:p3MLuOwURrGBRoEyFHBT3GjUwaCQVKeNqqWxlcISGdw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 56217223dd03..c1b5f9ade93a 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -20,6 +20,6 @@ require ( golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/grpc v1.78.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 1fc6f17b6a04..4ce12f706f36 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1848,8 +1848,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= From c2c6c554e458c003a7ad3e8544533a24e64899d1 Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Wed, 4 Feb 2026 08:58:31 -0500 Subject: [PATCH 0783/1068] Replace github.com/golang/groupcache with k8s.io/utils/lru Replace the groupcache LRU cache dependency with the equivalent implementation from k8s.io/utils/lru. The APIs are compatible, requiring only an import path change. Signed-off-by: Davanum Srinivas --- bill-of-materials.json | 27 ++++++++++++++++++--------- go.mod | 1 - go.sum | 2 -- go.work.sum | 2 ++ server/go.mod | 1 - server/go.sum | 2 -- server/proxy/grpcproxy/cache/store.go | 2 +- tests/go.mod | 1 - tests/go.sum | 2 -- 9 files changed, 21 insertions(+), 19 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index 7c7b945bda6c..526a49c6b0aa 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -188,15 +188,6 @@ } ] }, - { - "project": "github.com/golang/groupcache/lru", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 0.9966703662597114 - } - ] - }, { "project": "github.com/golang/protobuf", "licenses": [ @@ -831,6 +822,24 @@ } ] }, + { + "project": "k8s.io/utils/internal/third_party/forked/golang/golang-lru", + "licenses": [ + { + "type": "BSD 3-clause \"New\" or \"Revised\" License", + "confidence": 0.9663865546218487 + } + ] + }, + { + "project": "k8s.io/utils/lru", + "licenses": [ + { + "type": "Apache License 2.0", + "confidence": 1 + } + ] + }, { "project": "k8s.io/utils/third_party/forked/golang/btree", "licenses": [ diff --git a/go.mod b/go.mod index 618b6a80bebc..6e7a828c2cee 100644 --- a/go.mod +++ b/go.mod @@ -55,7 +55,6 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.3.0 // indirect - github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/uuid v1.6.0 // indirect diff --git a/go.sum b/go.sum index 6ee1594d7de9..e4d42fdd9567 100644 --- a/go.sum +++ b/go.sum @@ -53,8 +53,6 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= -github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= diff --git a/go.work.sum b/go.work.sum index d30044611b36..a0fed98f0322 100644 --- a/go.work.sum +++ b/go.work.sum @@ -673,6 +673,8 @@ github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOW github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I= github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= diff --git a/server/go.mod b/server/go.mod index 1b2e5d3b37bd..fbbbe6d8df23 100644 --- a/server/go.mod +++ b/server/go.mod @@ -10,7 +10,6 @@ require ( github.com/dustin/go-humanize v1.0.1 github.com/gogo/protobuf v1.3.2 github.com/golang-jwt/jwt/v5 v5.3.0 - github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 diff --git a/server/go.sum b/server/go.sum index fc2c4b42d5bc..db9c844affe8 100644 --- a/server/go.sum +++ b/server/go.sum @@ -26,8 +26,6 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= -github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= -github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= diff --git a/server/proxy/grpcproxy/cache/store.go b/server/proxy/grpcproxy/cache/store.go index 69fb38c070f0..9d5d80732483 100644 --- a/server/proxy/grpcproxy/cache/store.go +++ b/server/proxy/grpcproxy/cache/store.go @@ -20,7 +20,7 @@ import ( "errors" "sync" - "github.com/golang/groupcache/lru" + "k8s.io/utils/lru" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" diff --git a/tests/go.mod b/tests/go.mod index 93e57fdca408..bf2d7792c262 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -72,7 +72,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect diff --git a/tests/go.sum b/tests/go.sum index 7d364dcb5dde..efe7ef1e616b 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -59,8 +59,6 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= -github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= From 6a89353d866e1e626d46f2834d15cfaebf33b019 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Thu, 5 Feb 2026 15:06:06 +0100 Subject: [PATCH 0784/1068] dependency: bump go.opentelemetry.io/otel/sdk from 1.39.0 to 1.40.0 and bump go.opentelemetry.io/otel/metric from 1.39.0 to 1.40.0 Reference: - #21238 - #21234 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 4 ++-- api/go.sum | 20 ++++++++++---------- cache/go.sum | 20 ++++++++++---------- client/v3/go.mod | 6 +++--- client/v3/go.sum | 20 ++++++++++---------- etcdctl/go.sum | 20 ++++++++++---------- etcdutl/go.mod | 8 ++++---- etcdutl/go.sum | 20 ++++++++++---------- go.mod | 8 ++++---- go.sum | 20 ++++++++++---------- go.work.sum | 5 +++++ pkg/go.mod | 6 +++--- pkg/go.sum | 20 ++++++++++---------- server/go.mod | 8 ++++---- server/go.sum | 20 ++++++++++---------- tests/go.mod | 8 ++++---- tests/go.sum | 20 ++++++++++---------- tools/testgrid-analysis/go.mod | 4 ++-- tools/testgrid-analysis/go.sum | 20 ++++++++++---------- 19 files changed, 131 insertions(+), 126 deletions(-) diff --git a/api/go.mod b/api/go.mod index 52d4dd9032e6..0ee427fa639d 100644 --- a/api/go.mod +++ b/api/go.mod @@ -19,8 +19,8 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - go.opentelemetry.io/otel v1.39.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect + go.opentelemetry.io/otel v1.40.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect diff --git a/api/go.sum b/api/go.sum index a17b4c693d41..d78ad3f99b36 100644 --- a/api/go.sum +++ b/api/go.sum @@ -34,16 +34,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= +go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= +go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= +go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= +go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= diff --git a/cache/go.sum b/cache/go.sum index 1cc8e8a34b53..3a1827d54c78 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -52,16 +52,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= +go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= +go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= +go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= +go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= 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= diff --git a/client/v3/go.mod b/client/v3/go.mod index 22df3df5d038..61b6a1815538 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -31,9 +31,9 @@ require ( github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.5 // indirect github.com/prometheus/procfs v0.16.1 // indirect - go.opentelemetry.io/otel/metric v1.39.0 // indirect - go.opentelemetry.io/otel/sdk v1.39.0 // indirect - go.opentelemetry.io/otel/trace v1.39.0 // indirect + go.opentelemetry.io/otel/metric v1.40.0 // indirect + go.opentelemetry.io/otel/sdk v1.40.0 // indirect + go.opentelemetry.io/otel/trace v1.40.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.49.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index ef4e7dea9cd5..d3f234abd233 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -58,16 +58,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= +go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= +go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= +go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= +go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= 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= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 26f4a5e9912c..aafe3ef0d2b0 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -91,16 +91,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= +go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= +go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= +go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= +go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= 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= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 97046c9edc2b..7394fe715bf7 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -71,12 +71,12 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 // indirect - go.opentelemetry.io/otel v1.39.0 // indirect + go.opentelemetry.io/otel v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 // indirect - go.opentelemetry.io/otel/metric v1.39.0 // indirect - go.opentelemetry.io/otel/sdk v1.39.0 // indirect - go.opentelemetry.io/otel/trace v1.39.0 // indirect + go.opentelemetry.io/otel/metric v1.40.0 // indirect + go.opentelemetry.io/otel/sdk v1.40.0 // indirect + go.opentelemetry.io/otel/trace v1.40.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 21c3ba1bb6d3..c5bf1826b9f5 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -119,20 +119,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= -go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= +go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= +go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= +go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= +go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= 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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/go.mod b/go.mod index 993e15231344..a1b7b065b05c 100644 --- a/go.mod +++ b/go.mod @@ -87,12 +87,12 @@ require ( go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 // indirect - go.opentelemetry.io/otel v1.39.0 // indirect + go.opentelemetry.io/otel v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 // indirect - go.opentelemetry.io/otel/metric v1.39.0 // indirect - go.opentelemetry.io/otel/sdk v1.39.0 // indirect - go.opentelemetry.io/otel/trace v1.39.0 // indirect + go.opentelemetry.io/otel/metric v1.40.0 // indirect + go.opentelemetry.io/otel/sdk v1.40.0 // indirect + go.opentelemetry.io/otel/trace v1.40.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect diff --git a/go.sum b/go.sum index 6b295189f900..429a5f00f23a 100644 --- a/go.sum +++ b/go.sum @@ -158,20 +158,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= -go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= +go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= +go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= +go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= +go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= 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.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= diff --git a/go.work.sum b/go.work.sum index de486ccb253f..f0ae9c83a6c4 100644 --- a/go.work.sum +++ b/go.work.sum @@ -890,6 +890,7 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1: go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= 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/exporters/prometheus v0.57.0 h1:AHh/lAP1BHrY5gBwk8ncc25FXWm/gmmY3BX258z5nuk= go.opentelemetry.io/otel/exporters/prometheus v0.57.0/go.mod h1:QpFWz1QxqevfjwzYdbMb4Y1NnlJvqSGwyuU0B4iuc9c= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k= @@ -897,15 +898,19 @@ go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyV go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= 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/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= 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/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= diff --git a/pkg/go.mod b/pkg/go.mod index 3735688686d0..2291d14bfc1e 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -11,7 +11,7 @@ require ( github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.opentelemetry.io/otel/trace v1.39.0 + go.opentelemetry.io/otel/trace v1.40.0 go.uber.org/zap v1.27.1 golang.org/x/sys v0.40.0 google.golang.org/grpc v1.78.0 @@ -23,8 +23,8 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - go.opentelemetry.io/otel v1.39.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect + go.opentelemetry.io/otel v1.40.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.49.0 // indirect golang.org/x/text v0.33.0 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index f282595a0bf0..a42687d0bf94 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -39,16 +39,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= +go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= +go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= +go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= +go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= 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= diff --git a/server/go.mod b/server/go.mod index d02e62beea07..039597bdc217 100644 --- a/server/go.mod +++ b/server/go.mod @@ -31,10 +31,10 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 - go.opentelemetry.io/otel v1.39.0 + go.opentelemetry.io/otel v1.40.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 - go.opentelemetry.io/otel/sdk v1.39.0 - go.opentelemetry.io/otel/trace v1.39.0 + go.opentelemetry.io/otel/sdk v1.40.0 + go.opentelemetry.io/otel/trace v1.40.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.47.0 golang.org/x/net v0.49.0 @@ -66,7 +66,7 @@ require ( github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect - go.opentelemetry.io/otel/metric v1.39.0 // indirect + go.opentelemetry.io/otel/metric v1.40.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect diff --git a/server/go.sum b/server/go.sum index 850da94f115d..6b43c53212cf 100644 --- a/server/go.sum +++ b/server/go.sum @@ -99,20 +99,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= -go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= +go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= +go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= +go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= +go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= 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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/tests/go.mod b/tests/go.mod index 6519f38ef69b..8f5cef11de2a 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -43,8 +43,8 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 - go.opentelemetry.io/otel v1.39.0 - go.opentelemetry.io/otel/sdk v1.39.0 + go.opentelemetry.io/otel v1.40.0 + go.opentelemetry.io/otel/sdk v1.40.0 go.opentelemetry.io/proto/otlp v1.9.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.47.0 @@ -95,8 +95,8 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 // indirect - go.opentelemetry.io/otel/metric v1.39.0 // indirect - go.opentelemetry.io/otel/trace v1.39.0 // indirect + go.opentelemetry.io/otel/metric v1.40.0 // indirect + go.opentelemetry.io/otel/trace v1.40.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.49.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index a27435adf1c1..45f9ba6a2f01 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -164,20 +164,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= -go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= +go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= +go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= +go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= +go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= 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.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index c1b5f9ade93a..9c9364b49925 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -15,8 +15,8 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.10 // indirect - go.opentelemetry.io/otel v1.39.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect + go.opentelemetry.io/otel v1.40.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 4ce12f706f36..db97af03de24 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1184,16 +1184,16 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= 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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= +go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= +go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= +go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= +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.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= From 25fb688d69d114744c3f6ad720c0cc6cc3f4e703 Mon Sep 17 00:00:00 2001 From: Nont Date: Thu, 5 Feb 2026 22:36:45 -0600 Subject: [PATCH 0785/1068] Bump go version to 1.25.7 Signed-off-by: Nont --- .go-version | 2 +- api/go.mod | 2 +- cache/go.mod | 2 +- client/pkg/go.mod | 2 +- client/v3/go.mod | 2 +- etcdctl/go.mod | 2 +- etcdutl/go.mod | 2 +- go.mod | 2 +- go.work | 2 +- pkg/go.mod | 2 +- server/go.mod | 2 +- tests/go.mod | 2 +- tools/mod/go.mod | 2 +- tools/rw-heatmaps/go.mod | 2 +- tools/testgrid-analysis/go.mod | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.go-version b/.go-version index 198ec23ccfcc..f1968aa8818d 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.25.6 +1.25.7 diff --git a/api/go.mod b/api/go.mod index c0a1f62ac7b3..c920e2d1c33f 100644 --- a/api/go.mod +++ b/api/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/api/v3 go 1.25.0 -toolchain go1.25.6 +toolchain go1.25.7 require ( github.com/coreos/go-semver v0.3.1 diff --git a/cache/go.mod b/cache/go.mod index c11e22fa032a..91d59fb943ce 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/cache/v3 go 1.25.0 -toolchain go1.25.6 +toolchain go1.25.7 require ( github.com/google/go-cmp v0.7.0 diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 94091f5d0811..f6b555376f88 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/pkg/v3 go 1.25.0 -toolchain go1.25.6 +toolchain go1.25.7 require ( github.com/coreos/go-systemd/v22 v22.6.0 diff --git a/client/v3/go.mod b/client/v3/go.mod index 4a50dbbcd0ef..4c6f6ffd018b 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/v3 go 1.25.0 -toolchain go1.25.6 +toolchain go1.25.7 require ( github.com/coreos/go-semver v0.3.1 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 49a31376dd01..c9aaf98a4031 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdctl/v3 go 1.25.0 -toolchain go1.25.6 +toolchain go1.25.7 require ( github.com/bgentry/speakeasy v0.2.0 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 9df42576014f..062e18e1629d 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdutl/v3 go 1.25.0 -toolchain go1.25.6 +toolchain go1.25.7 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/go.mod b/go.mod index 618b6a80bebc..3aa51147f43b 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/v3 go 1.25.0 -toolchain go1.25.6 +toolchain go1.25.7 replace ( go.etcd.io/etcd/api/v3 => ./api diff --git a/go.work b/go.work index 78406b8a78fb..d9370a66c28f 100644 --- a/go.work +++ b/go.work @@ -2,7 +2,7 @@ go 1.25.0 -toolchain go1.25.6 +toolchain go1.25.7 use ( . diff --git a/pkg/go.mod b/pkg/go.mod index 9cb4296b4b75..a0d0dadaa1e5 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/pkg/v3 go 1.25.0 -toolchain go1.25.6 +toolchain go1.25.7 require ( github.com/creack/pty v1.1.18 diff --git a/server/go.mod b/server/go.mod index 1b2e5d3b37bd..bf9873da37c3 100644 --- a/server/go.mod +++ b/server/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/server/v3 go 1.25.0 -toolchain go1.25.6 +toolchain go1.25.7 require ( github.com/coreos/go-semver v0.3.1 diff --git a/tests/go.mod b/tests/go.mod index 93e57fdca408..a48f6b40bbd5 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tests/v3 go 1.25.0 -toolchain go1.25.6 +toolchain go1.25.7 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/tools/mod/go.mod b/tools/mod/go.mod index f324b33d3f6c..ca97e688e350 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/v3 go 1.25.0 -toolchain go1.25.6 +toolchain go1.25.7 require ( github.com/alexfalkowski/gocovmerge v1.11.0 diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index b33fd5ed28c4..18874364cba3 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/rw-heatmaps/v3 go 1.25.0 -toolchain go1.25.6 +toolchain go1.25.7 require ( github.com/spf13/cobra v1.10.2 diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 56217223dd03..e71121baabfa 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 go 1.25.0 -toolchain go1.25.6 +toolchain go1.25.7 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 From f75015db34445e389544d81c6ecf45a3718d631a Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 20 Nov 2025 17:54:48 -0500 Subject: [PATCH 0786/1068] Switch to standard go packages Signed-off-by: Jordan Liggitt --- scripts/genproto.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/scripts/genproto.sh b/scripts/genproto.sh index 53e257608cc3..02e7898835a8 100755 --- a/scripts/genproto.sh +++ b/scripts/genproto.sh @@ -84,6 +84,13 @@ GRPC_GATEWAY_ROOT="$(tool_pkg_dir github.com/grpc-ecosystem/grpc-gateway/v2/prot RAFT_ROOT="$(tool_pkg_dir go.etcd.io/raft/v3/raftpb)/.." GOOGLEAPI_ROOT=$(mktemp -d -t 'googleapi.XXXXX') +module_mapping_list=( + Mraftpb/raft.proto=go.etcd.io/raft/v3/raftpb + Mgoogle/protobuf/descriptor.proto=google.golang.org/protobuf/types/descriptorpb + Mgoogle/protobuf/struct.proto=google.golang.org/protobuf/types/known/structpb +) +module_mappings=$(IFS=$','; echo "${module_mapping_list[*]}" ) + readonly googleapi_commit=0adf469dcd7822bf5bc058a7b0217f5558a75643 function cleanup_googleapi() { @@ -122,7 +129,7 @@ log_callout -e "\\nRunning gofast (gogo) proto generation..." for dir in ${DIRS}; do run pushd "${dir}" run protoc --gofast_out=plugins=grpc:. -I=".:${GOGOPROTO_PATH}:${ETCD_ROOT_DIR}/..:${RAFT_ROOT}:${ETCD_ROOT_DIR}:${GOOGLEAPI_ROOT}" \ - --gofast_opt=paths=source_relative,Mraftpb/raft.proto=go.etcd.io/raft/v3/raftpb,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor \ + "--gofast_opt=paths=source_relative,${module_mappings}" \ -I"${GRPC_GATEWAY_ROOT}" \ --plugin="${GOFAST_BIN}" ./**/*.proto @@ -144,9 +151,9 @@ for pb in api/etcdserverpb/rpc server/etcdserver/api/v3lock/v3lockpb/v3lock serv -I"${ETCD_ROOT_DIR}/.." \ -I"${RAFT_ROOT}" \ --grpc-gateway_out=logtostderr=true,paths=source_relative:. \ - --grpc-gateway_opt=Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor,Mgoogle/protobuf/struct.proto=github.com/gogo/protobuf/types \ + "--grpc-gateway_opt=${module_mappings}" \ --openapiv2_out=json_names_for_fields=false,logtostderr=true:./Documentation/dev-guide/apispec/swagger/. \ - --openapiv2_opt=Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor,Mgoogle/protobuf/struct.proto=github.com/gogo/protobuf/types:. \ + "--openapiv2_opt=${module_mappings}:." \ --plugin="${OPENAPIV2_BIN}" \ --plugin="${GRPC_GATEWAY_BIN}" \ ${pb}.proto From c389fc9da8cf30b79eb4c1b73c33856fbd53f8c8 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 6 Feb 2026 11:08:02 +0000 Subject: [PATCH 0787/1068] Remove the v2 Request message Signed-off-by: Benjamin Wang --- api/etcdserverpb/etcdserver.pb.go | 705 +-------------------------- api/etcdserverpb/etcdserver.proto | 20 - api/etcdserverpb/raft_internal.pb.go | 193 +++----- api/etcdserverpb/raft_internal.proto | 4 +- scripts/etcd_version_annotations.txt | 19 - server/storage/wal/version.go | 9 +- 6 files changed, 86 insertions(+), 864 deletions(-) diff --git a/api/etcdserverpb/etcdserver.pb.go b/api/etcdserverpb/etcdserver.pb.go index eaefa2d20888..562f83f46b5b 100644 --- a/api/etcdserverpb/etcdserver.pb.go +++ b/api/etcdserverpb/etcdserver.pb.go @@ -24,62 +24,6 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package -type Request struct { - ID uint64 `protobuf:"varint,1,opt,name=ID" json:"ID"` - Method string `protobuf:"bytes,2,opt,name=Method" json:"Method"` - Path string `protobuf:"bytes,3,opt,name=Path" json:"Path"` - Val string `protobuf:"bytes,4,opt,name=Val" json:"Val"` - Dir bool `protobuf:"varint,5,opt,name=Dir" json:"Dir"` - PrevValue string `protobuf:"bytes,6,opt,name=PrevValue" json:"PrevValue"` - PrevIndex uint64 `protobuf:"varint,7,opt,name=PrevIndex" json:"PrevIndex"` - PrevExist *bool `protobuf:"varint,8,opt,name=PrevExist" json:"PrevExist,omitempty"` - Expiration int64 `protobuf:"varint,9,opt,name=Expiration" json:"Expiration"` - Wait bool `protobuf:"varint,10,opt,name=Wait" json:"Wait"` - Since uint64 `protobuf:"varint,11,opt,name=Since" json:"Since"` - Recursive bool `protobuf:"varint,12,opt,name=Recursive" json:"Recursive"` - Sorted bool `protobuf:"varint,13,opt,name=Sorted" json:"Sorted"` - Quorum bool `protobuf:"varint,14,opt,name=Quorum" json:"Quorum"` - Time int64 `protobuf:"varint,15,opt,name=Time" json:"Time"` - Stream bool `protobuf:"varint,16,opt,name=Stream" json:"Stream"` - Refresh *bool `protobuf:"varint,17,opt,name=Refresh" json:"Refresh,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Request) Reset() { *m = Request{} } -func (m *Request) String() string { return proto.CompactTextString(m) } -func (*Request) ProtoMessage() {} -func (*Request) Descriptor() ([]byte, []int) { - return fileDescriptor_09ffbeb3bebbce7e, []int{0} -} -func (m *Request) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Request.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Request) XXX_Merge(src proto.Message) { - xxx_messageInfo_Request.Merge(m, src) -} -func (m *Request) XXX_Size() int { - return m.Size() -} -func (m *Request) XXX_DiscardUnknown() { - xxx_messageInfo_Request.DiscardUnknown(m) -} - -var xxx_messageInfo_Request proto.InternalMessageInfo - type Metadata struct { NodeID uint64 `protobuf:"varint,1,opt,name=NodeID" json:"NodeID"` ClusterID uint64 `protobuf:"varint,2,opt,name=ClusterID" json:"ClusterID"` @@ -92,7 +36,7 @@ func (m *Metadata) Reset() { *m = Metadata{} } func (m *Metadata) String() string { return proto.CompactTextString(m) } func (*Metadata) ProtoMessage() {} func (*Metadata) Descriptor() ([]byte, []int) { - return fileDescriptor_09ffbeb3bebbce7e, []int{1} + return fileDescriptor_09ffbeb3bebbce7e, []int{0} } func (m *Metadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -122,174 +66,24 @@ func (m *Metadata) XXX_DiscardUnknown() { var xxx_messageInfo_Metadata proto.InternalMessageInfo func init() { - proto.RegisterType((*Request)(nil), "etcdserverpb.Request") proto.RegisterType((*Metadata)(nil), "etcdserverpb.Metadata") } func init() { proto.RegisterFile("etcdserver.proto", fileDescriptor_09ffbeb3bebbce7e) } var fileDescriptor_09ffbeb3bebbce7e = []byte{ - // 402 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0xd2, 0x41, 0xef, 0xd2, 0x30, - 0x14, 0x00, 0x70, 0x0a, 0xfb, 0xff, 0x81, 0x8a, 0x8a, 0x0d, 0x31, 0x2f, 0xc4, 0xcc, 0x05, 0x3d, - 0xec, 0xc4, 0x0e, 0x9e, 0xbc, 0xe2, 0x38, 0x2c, 0x11, 0x83, 0xc3, 0x60, 0xe2, 0xad, 0xb2, 0x27, - 0x34, 0x01, 0x3a, 0xbb, 0x6e, 0xe1, 0x1b, 0xf8, 0x15, 0xfc, 0x48, 0x1c, 0xfd, 0x04, 0x46, 0xf1, - 0x8b, 0x98, 0x8e, 0x8d, 0x55, 0x4f, 0x5b, 0x7e, 0xef, 0xf5, 0xf5, 0xb5, 0x7d, 0x74, 0x88, 0x7a, - 0x93, 0x64, 0xa8, 0x0a, 0x54, 0xd3, 0x54, 0x49, 0x2d, 0xd9, 0xa0, 0x91, 0xf4, 0xf3, 0x78, 0xb4, - 0x95, 0x5b, 0x59, 0x06, 0x02, 0xf3, 0x77, 0xcd, 0x99, 0x7c, 0x73, 0x68, 0x37, 0xc6, 0xaf, 0x39, - 0x66, 0x9a, 0x8d, 0x68, 0x3b, 0x0a, 0x81, 0x78, 0xc4, 0x77, 0x66, 0xce, 0xf9, 0xe7, 0xf3, 0x56, - 0xdc, 0x8e, 0x42, 0xf6, 0x8c, 0xde, 0x2f, 0x50, 0xef, 0x64, 0x02, 0x6d, 0x8f, 0xf8, 0xfd, 0x2a, - 0x52, 0x19, 0x03, 0xea, 0x2c, 0xb9, 0xde, 0x41, 0xc7, 0x8a, 0x95, 0xc2, 0x9e, 0xd2, 0xce, 0x9a, - 0xef, 0xc1, 0xb1, 0x02, 0x06, 0x8c, 0x87, 0x42, 0xc1, 0x9d, 0x47, 0xfc, 0x5e, 0xed, 0xa1, 0x50, - 0x6c, 0x42, 0xfb, 0x4b, 0x85, 0xc5, 0x9a, 0xef, 0x73, 0x84, 0x7b, 0x6b, 0x55, 0xc3, 0x75, 0x4e, - 0x74, 0x4c, 0xf0, 0x04, 0x5d, 0xab, 0xd1, 0x86, 0xeb, 0x9c, 0xf9, 0x49, 0x64, 0x1a, 0x7a, 0xb7, - 0x5d, 0x48, 0xdc, 0x30, 0x7b, 0x49, 0xe9, 0xfc, 0x94, 0x0a, 0xc5, 0xb5, 0x90, 0x47, 0xe8, 0x7b, - 0xc4, 0xef, 0x54, 0x85, 0x2c, 0x37, 0x67, 0xfb, 0xc8, 0x85, 0x06, 0x6a, 0xb5, 0x5a, 0x0a, 0x1b, - 0xd3, 0xbb, 0x95, 0x38, 0x6e, 0x10, 0x1e, 0x58, 0x3d, 0x5c, 0xc9, 0xec, 0x1f, 0xe3, 0x26, 0x57, - 0x99, 0x28, 0x10, 0x06, 0xd6, 0xd2, 0x86, 0xcd, 0x9d, 0xae, 0xa4, 0xd2, 0x98, 0xc0, 0x43, 0x2b, - 0xa1, 0x32, 0x13, 0x7d, 0x9f, 0x4b, 0x95, 0x1f, 0xe0, 0x91, 0x1d, 0xbd, 0x9a, 0xe9, 0xea, 0x83, - 0x38, 0x20, 0x3c, 0xb6, 0xba, 0x2e, 0xa5, 0xac, 0xaa, 0x15, 0xf2, 0x03, 0x0c, 0xff, 0xa9, 0x5a, - 0x1a, 0x73, 0xcd, 0x43, 0x7f, 0x51, 0x98, 0xed, 0xe0, 0x89, 0x75, 0x2b, 0x35, 0x4e, 0xde, 0xd2, - 0xde, 0x02, 0x35, 0x4f, 0xb8, 0xe6, 0xa6, 0xd2, 0x3b, 0x99, 0xe0, 0x7f, 0xd3, 0x50, 0x99, 0x39, - 0xe1, 0x9b, 0x7d, 0x9e, 0x69, 0x54, 0x51, 0x58, 0x0e, 0xc5, 0xed, 0x15, 0x6e, 0x3c, 0x7b, 0x7d, - 0xfe, 0xed, 0xb6, 0xce, 0x17, 0x97, 0xfc, 0xb8, 0xb8, 0xe4, 0xd7, 0xc5, 0x25, 0xdf, 0xff, 0xb8, - 0xad, 0x4f, 0x2f, 0xb6, 0x72, 0x6a, 0x86, 0x72, 0x2a, 0x64, 0x60, 0xbe, 0x01, 0x4f, 0x45, 0x50, - 0xbc, 0x0a, 0xec, 0x41, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x2b, 0x79, 0xf9, 0xf5, 0xc9, 0x02, - 0x00, 0x00, -} - -func (m *Request) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Request) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Request) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Refresh != nil { - i-- - if *m.Refresh { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x1 - i-- - dAtA[i] = 0x88 - } - i-- - if m.Stream { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x1 - i-- - dAtA[i] = 0x80 - i = encodeVarintEtcdserver(dAtA, i, uint64(m.Time)) - i-- - dAtA[i] = 0x78 - i-- - if m.Quorum { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x70 - i-- - if m.Sorted { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x68 - i-- - if m.Recursive { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x60 - i = encodeVarintEtcdserver(dAtA, i, uint64(m.Since)) - i-- - dAtA[i] = 0x58 - i-- - if m.Wait { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x50 - i = encodeVarintEtcdserver(dAtA, i, uint64(m.Expiration)) - i-- - dAtA[i] = 0x48 - if m.PrevExist != nil { - i-- - if *m.PrevExist { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x40 - } - i = encodeVarintEtcdserver(dAtA, i, uint64(m.PrevIndex)) - i-- - dAtA[i] = 0x38 - i -= len(m.PrevValue) - copy(dAtA[i:], m.PrevValue) - i = encodeVarintEtcdserver(dAtA, i, uint64(len(m.PrevValue))) - i-- - dAtA[i] = 0x32 - i-- - if m.Dir { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x28 - i -= len(m.Val) - copy(dAtA[i:], m.Val) - i = encodeVarintEtcdserver(dAtA, i, uint64(len(m.Val))) - i-- - dAtA[i] = 0x22 - i -= len(m.Path) - copy(dAtA[i:], m.Path) - i = encodeVarintEtcdserver(dAtA, i, uint64(len(m.Path))) - i-- - dAtA[i] = 0x1a - i -= len(m.Method) - copy(dAtA[i:], m.Method) - i = encodeVarintEtcdserver(dAtA, i, uint64(len(m.Method))) - i-- - dAtA[i] = 0x12 - i = encodeVarintEtcdserver(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x8 - return len(dAtA) - i, nil + // 163 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x48, 0x2d, 0x49, 0x4e, + 0x29, 0x4e, 0x2d, 0x2a, 0x4b, 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x41, 0x88, + 0x14, 0x24, 0x49, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, 0x83, 0x25, 0xf4, 0x41, 0x2c, 0x88, 0x1a, 0x25, + 0x1f, 0x2e, 0x0e, 0xdf, 0xd4, 0x92, 0xc4, 0x94, 0xc4, 0x92, 0x44, 0x21, 0x19, 0x2e, 0x36, 0xbf, + 0xfc, 0x94, 0x54, 0x4f, 0x17, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x16, 0x27, 0x96, 0x13, 0xf7, 0xe4, + 0x19, 0x82, 0xa0, 0x62, 0x42, 0x4a, 0x5c, 0x9c, 0xce, 0x39, 0xa5, 0xc5, 0x25, 0xa9, 0x45, 0x9e, + 0x2e, 0x12, 0x4c, 0x48, 0x0a, 0x10, 0xc2, 0x4e, 0x96, 0x27, 0x1e, 0xca, 0x31, 0x9c, 0x78, 0x24, + 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x33, 0x1e, 0xcb, 0x31, 0x44, 0x29, + 0xa7, 0xe7, 0xeb, 0x81, 0x9c, 0xa2, 0x97, 0x99, 0xaf, 0x0f, 0xa2, 0xf5, 0x13, 0x0b, 0x32, 0xf5, + 0xcb, 0x8c, 0xf5, 0x91, 0x9d, 0x07, 0x08, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x35, 0xe7, 0x3d, 0xbf, + 0x00, 0x00, 0x00, } func (m *Metadata) Marshal() (dAtA []byte, err error) { @@ -336,43 +130,6 @@ func encodeVarintEtcdserver(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *Request) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - n += 1 + sovEtcdserver(uint64(m.ID)) - l = len(m.Method) - n += 1 + l + sovEtcdserver(uint64(l)) - l = len(m.Path) - n += 1 + l + sovEtcdserver(uint64(l)) - l = len(m.Val) - n += 1 + l + sovEtcdserver(uint64(l)) - n += 2 - l = len(m.PrevValue) - n += 1 + l + sovEtcdserver(uint64(l)) - n += 1 + sovEtcdserver(uint64(m.PrevIndex)) - if m.PrevExist != nil { - n += 2 - } - n += 1 + sovEtcdserver(uint64(m.Expiration)) - n += 2 - n += 1 + sovEtcdserver(uint64(m.Since)) - n += 2 - n += 2 - n += 2 - n += 1 + sovEtcdserver(uint64(m.Time)) - n += 3 - if m.Refresh != nil { - n += 3 - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - func (m *Metadata) Size() (n int) { if m == nil { return 0 @@ -393,442 +150,6 @@ func sovEtcdserver(x uint64) (n int) { func sozEtcdserver(x uint64) (n int) { return sovEtcdserver(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *Request) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Request: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Method", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthEtcdserver - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthEtcdserver - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Method = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthEtcdserver - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthEtcdserver - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Path = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Val", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthEtcdserver - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthEtcdserver - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Val = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Dir", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Dir = bool(v != 0) - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PrevValue", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthEtcdserver - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthEtcdserver - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.PrevValue = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PrevIndex", wireType) - } - m.PrevIndex = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.PrevIndex |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 8: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PrevExist", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - b := bool(v != 0) - m.PrevExist = &b - case 9: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Expiration", wireType) - } - m.Expiration = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Expiration |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 10: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Wait", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Wait = bool(v != 0) - case 11: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Since", wireType) - } - m.Since = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Since |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 12: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Recursive", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Recursive = bool(v != 0) - case 13: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Sorted", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Sorted = bool(v != 0) - case 14: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Quorum", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Quorum = bool(v != 0) - case 15: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Time", wireType) - } - m.Time = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Time |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 16: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Stream", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Stream = bool(v != 0) - case 17: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Refresh", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - b := bool(v != 0) - m.Refresh = &b - default: - iNdEx = preIndex - skippy, err := skipEtcdserver(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthEtcdserver - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *Metadata) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/api/etcdserverpb/etcdserver.proto b/api/etcdserverpb/etcdserver.proto index ff639b9c96c7..623f52c0ebce 100644 --- a/api/etcdserverpb/etcdserver.proto +++ b/api/etcdserverpb/etcdserver.proto @@ -10,26 +10,6 @@ option (gogoproto.sizer_all) = true; option (gogoproto.unmarshaler_all) = true; option (gogoproto.goproto_getters_all) = false; -message Request { - optional uint64 ID = 1 [(gogoproto.nullable) = false]; - optional string Method = 2 [(gogoproto.nullable) = false]; - optional string Path = 3 [(gogoproto.nullable) = false]; - optional string Val = 4 [(gogoproto.nullable) = false]; - optional bool Dir = 5 [(gogoproto.nullable) = false]; - optional string PrevValue = 6 [(gogoproto.nullable) = false]; - optional uint64 PrevIndex = 7 [(gogoproto.nullable) = false]; - optional bool PrevExist = 8 [(gogoproto.nullable) = true]; - optional int64 Expiration = 9 [(gogoproto.nullable) = false]; - optional bool Wait = 10 [(gogoproto.nullable) = false]; - optional uint64 Since = 11 [(gogoproto.nullable) = false]; - optional bool Recursive = 12 [(gogoproto.nullable) = false]; - optional bool Sorted = 13 [(gogoproto.nullable) = false]; - optional bool Quorum = 14 [(gogoproto.nullable) = false]; - optional int64 Time = 15 [(gogoproto.nullable) = false]; - optional bool Stream = 16 [(gogoproto.nullable) = false]; - optional bool Refresh = 17 [(gogoproto.nullable) = true]; -} - message Metadata { optional uint64 NodeID = 1 [(gogoproto.nullable) = false]; optional uint64 ClusterID = 2 [(gogoproto.nullable) = false]; diff --git a/api/etcdserverpb/raft_internal.pb.go b/api/etcdserverpb/raft_internal.pb.go index e1cd9ebecd69..de48f6cb82aa 100644 --- a/api/etcdserverpb/raft_internal.pb.go +++ b/api/etcdserverpb/raft_internal.pb.go @@ -75,7 +75,6 @@ var xxx_messageInfo_RequestHeader proto.InternalMessageInfo type InternalRaftRequest struct { Header *RequestHeader `protobuf:"bytes,100,opt,name=header,proto3" json:"header,omitempty"` ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - V2 *Request `protobuf:"bytes,2,opt,name=v2,proto3" json:"v2,omitempty"` Range *RangeRequest `protobuf:"bytes,3,opt,name=range,proto3" json:"range,omitempty"` Put *PutRequest `protobuf:"bytes,4,opt,name=put,proto3" json:"put,omitempty"` DeleteRange *DeleteRangeRequest `protobuf:"bytes,5,opt,name=delete_range,json=deleteRange,proto3" json:"delete_range,omitempty"` @@ -239,76 +238,76 @@ func init() { func init() { proto.RegisterFile("raft_internal.proto", fileDescriptor_b4c9a9be0cfca103) } var fileDescriptor_b4c9a9be0cfca103 = []byte{ - // 1101 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x56, 0xcb, 0x72, 0x1b, 0x45, - 0x14, 0x8d, 0x6c, 0xc7, 0xb6, 0x5a, 0xb6, 0xe3, 0xb4, 0x9d, 0xa4, 0xb1, 0xab, 0x8c, 0xe3, 0x90, - 0x60, 0x20, 0xc8, 0xc1, 0x06, 0xaa, 0x60, 0x03, 0x8a, 0xe5, 0x72, 0x4c, 0x25, 0x29, 0xd7, 0xc4, - 0x50, 0x29, 0x28, 0x6a, 0x68, 0xcd, 0x5c, 0x4b, 0x13, 0x8f, 0x66, 0x86, 0xee, 0x96, 0xe2, 0x6c, - 0x59, 0xb2, 0x06, 0x8a, 0x8f, 0x60, 0xc1, 0x2b, 0xff, 0x90, 0x05, 0x8f, 0x00, 0x3f, 0x00, 0x66, - 0xc3, 0x1e, 0xd8, 0xa7, 0xfa, 0x31, 0x2f, 0xa9, 0xe5, 0xdd, 0xe8, 0xde, 0x73, 0xcf, 0x39, 0xdd, - 0x7d, 0xbb, 0x75, 0xd1, 0x02, 0xa3, 0x87, 0xc2, 0x0d, 0x22, 0x01, 0x2c, 0xa2, 0x61, 0x3d, 0x61, - 0xb1, 0x88, 0xf1, 0x0c, 0x08, 0xcf, 0xe7, 0xc0, 0xfa, 0xc0, 0x92, 0xd6, 0xd2, 0x62, 0x3b, 0x6e, - 0xc7, 0x2a, 0xb1, 0x21, 0xbf, 0x34, 0x66, 0x69, 0x3e, 0xc7, 0x98, 0x48, 0x95, 0x25, 0x9e, 0xf9, - 0x5c, 0x95, 0xc9, 0x0d, 0x9a, 0x04, 0x1b, 0x7d, 0x60, 0x3c, 0x88, 0xa3, 0xa4, 0x95, 0x7e, 0x19, - 0xc4, 0xb5, 0x0c, 0xd1, 0x85, 0x6e, 0x0b, 0x18, 0xef, 0x04, 0x49, 0xd2, 0x2a, 0xfc, 0xd0, 0xb8, - 0x35, 0x86, 0x66, 0x1d, 0xf8, 0xb4, 0x07, 0x5c, 0xdc, 0x02, 0xea, 0x03, 0xc3, 0x73, 0x68, 0x6c, - 0xaf, 0x49, 0x2a, 0xab, 0x95, 0xf5, 0x09, 0x67, 0x6c, 0xaf, 0x89, 0x97, 0xd0, 0x74, 0x8f, 0x4b, - 0xf3, 0x5d, 0x20, 0x63, 0xab, 0x95, 0xf5, 0xaa, 0x93, 0xfd, 0xc6, 0xd7, 0xd1, 0x2c, 0xed, 0x89, - 0x8e, 0xcb, 0xa0, 0x1f, 0x48, 0x6d, 0x32, 0x2e, 0xcb, 0x6e, 0x4e, 0x7d, 0xfe, 0x98, 0x8c, 0x6f, - 0xd5, 0x5f, 0x73, 0x66, 0x64, 0xd6, 0x31, 0xc9, 0xb7, 0xa7, 0x3e, 0x53, 0xe1, 0x1b, 0x6b, 0x8f, - 0x17, 0xd0, 0xc2, 0x9e, 0xd9, 0x11, 0x87, 0x1e, 0x0a, 0x63, 0x00, 0x6f, 0xa1, 0xc9, 0x8e, 0x32, - 0x41, 0xfc, 0xd5, 0xca, 0x7a, 0x6d, 0x73, 0xb9, 0x5e, 0xdc, 0xa7, 0x7a, 0xc9, 0xa7, 0x63, 0xa0, - 0x43, 0x7e, 0xaf, 0xa2, 0xb1, 0xfe, 0xa6, 0x72, 0x5a, 0xdb, 0xbc, 0x60, 0x25, 0x70, 0xc6, 0xfa, - 0x9b, 0xf8, 0x06, 0x3a, 0xcb, 0x68, 0xd4, 0x06, 0x65, 0xb9, 0xb6, 0xb9, 0x34, 0x80, 0x94, 0xa9, - 0x14, 0xae, 0x81, 0xf8, 0x65, 0x34, 0x9e, 0xf4, 0x04, 0x99, 0x50, 0x78, 0x52, 0xc6, 0xef, 0xf7, - 0xd2, 0x45, 0x38, 0x12, 0x84, 0xb7, 0xd1, 0x8c, 0x0f, 0x21, 0x08, 0x70, 0xb5, 0xc8, 0x59, 0x55, - 0xb4, 0x5a, 0x2e, 0x6a, 0x2a, 0x44, 0x49, 0xaa, 0xe6, 0xe7, 0x31, 0x29, 0x28, 0x8e, 0x23, 0x32, - 0x69, 0x13, 0x3c, 0x38, 0x8e, 0x32, 0x41, 0x71, 0x1c, 0xe1, 0x77, 0x10, 0xf2, 0xe2, 0x6e, 0x42, - 0x3d, 0x21, 0x8f, 0x61, 0x4a, 0x95, 0x3c, 0x5f, 0x2e, 0xd9, 0xce, 0xf2, 0x69, 0x65, 0xa1, 0x04, - 0xbf, 0x8b, 0x6a, 0x21, 0x50, 0x0e, 0x6e, 0x9b, 0xd1, 0x48, 0x90, 0x69, 0x1b, 0xc3, 0x6d, 0x09, - 0xd8, 0x95, 0xf9, 0x8c, 0x21, 0xcc, 0x42, 0x72, 0xcd, 0x9a, 0x81, 0x41, 0x3f, 0x3e, 0x02, 0x52, - 0xb5, 0xad, 0x59, 0x51, 0x38, 0x0a, 0x90, 0xad, 0x39, 0xcc, 0x63, 0xf2, 0x58, 0x68, 0x48, 0x59, - 0x97, 0x20, 0xdb, 0xb1, 0x34, 0x64, 0x2a, 0x3b, 0x16, 0x05, 0xc4, 0xf7, 0xd1, 0xbc, 0x96, 0xf5, - 0x3a, 0xe0, 0x1d, 0x25, 0x71, 0x10, 0x09, 0x52, 0x53, 0xc5, 0x2f, 0x58, 0xa4, 0xb7, 0x33, 0x90, - 0xa1, 0x49, 0x9b, 0xf5, 0x75, 0xe7, 0x5c, 0x58, 0x06, 0xe0, 0x06, 0xaa, 0xa9, 0xee, 0x86, 0x88, - 0xb6, 0x42, 0x20, 0xff, 0x58, 0x77, 0xb5, 0xd1, 0x13, 0x9d, 0x1d, 0x05, 0xc8, 0xf6, 0x84, 0x66, - 0x21, 0xdc, 0x44, 0xea, 0x0a, 0xb8, 0x7e, 0xc0, 0x15, 0xc7, 0xbf, 0x53, 0xb6, 0x4d, 0x91, 0x1c, - 0x4d, 0x8d, 0xc8, 0x36, 0x85, 0xe6, 0x31, 0xfc, 0x9e, 0x31, 0xc2, 0x05, 0x15, 0x3d, 0x4e, 0xfe, - 0x1f, 0x69, 0xe4, 0x9e, 0x02, 0x0c, 0xac, 0xec, 0x0d, 0xed, 0x48, 0xe7, 0xf0, 0x5d, 0xed, 0x08, - 0x22, 0x11, 0x78, 0x54, 0x00, 0xf9, 0x4f, 0x93, 0xbd, 0x54, 0x26, 0x4b, 0x6f, 0x67, 0xa3, 0x00, - 0x4d, 0xad, 0x95, 0xea, 0xf1, 0x8e, 0x79, 0x02, 0xe4, 0x9b, 0xe0, 0x52, 0xdf, 0x27, 0x3f, 0x4d, - 0x8f, 0x5a, 0xe2, 0xfb, 0x1c, 0x58, 0xc3, 0xf7, 0x4b, 0x4b, 0x34, 0x31, 0x7c, 0x17, 0xcd, 0xe7, - 0x34, 0xfa, 0x12, 0x90, 0x9f, 0x35, 0xd3, 0x15, 0x3b, 0x93, 0xb9, 0x3d, 0x86, 0x6c, 0x8e, 0x96, - 0xc2, 0x65, 0x5b, 0x6d, 0x10, 0xe4, 0x97, 0x53, 0x6d, 0xed, 0x82, 0x18, 0xb2, 0xb5, 0x0b, 0x02, - 0xb7, 0xd1, 0x73, 0x39, 0x8d, 0xd7, 0x91, 0xd7, 0xd2, 0x4d, 0x28, 0xe7, 0x0f, 0x63, 0xe6, 0x93, - 0x5f, 0x35, 0xe5, 0x2b, 0x76, 0xca, 0x6d, 0x85, 0xde, 0x37, 0xe0, 0x94, 0xfd, 0x22, 0xb5, 0xa6, - 0xf1, 0x7d, 0xb4, 0x58, 0xf0, 0x2b, 0xef, 0x93, 0xcb, 0xe2, 0x10, 0xc8, 0x53, 0xad, 0x71, 0x6d, - 0x84, 0x6d, 0x75, 0x17, 0xe3, 0xbc, 0x6d, 0xce, 0xd3, 0xc1, 0x0c, 0xfe, 0x08, 0x5d, 0xc8, 0x99, - 0xf5, 0xd5, 0xd4, 0xd4, 0xbf, 0x69, 0xea, 0x17, 0xed, 0xd4, 0xe6, 0x8e, 0x16, 0xb8, 0x31, 0x1d, - 0x4a, 0xe1, 0x5b, 0x68, 0x2e, 0x27, 0x0f, 0x03, 0x2e, 0xc8, 0xef, 0x9a, 0xf5, 0xb2, 0x9d, 0xf5, - 0x76, 0xc0, 0x45, 0xa9, 0x8f, 0xd2, 0x60, 0xc6, 0x24, 0xad, 0x69, 0xa6, 0x3f, 0x46, 0x32, 0x49, - 0xe9, 0x21, 0xa6, 0x34, 0x98, 0x1d, 0xbd, 0x62, 0x92, 0x1d, 0xf9, 0x6d, 0x75, 0xd4, 0xd1, 0xcb, - 0x9a, 0xc1, 0x8e, 0x34, 0xb1, 0xac, 0x23, 0x15, 0x8d, 0xe9, 0xc8, 0xef, 0xaa, 0xa3, 0x3a, 0x52, - 0x56, 0x59, 0x3a, 0x32, 0x0f, 0x97, 0x6d, 0xc9, 0x8e, 0xfc, 0xfe, 0x54, 0x5b, 0x83, 0x1d, 0x69, - 0x62, 0xf8, 0x01, 0x5a, 0x2a, 0xd0, 0xa8, 0x46, 0x49, 0x80, 0x75, 0x03, 0xae, 0xfe, 0x7f, 0x7f, - 0xd0, 0x9c, 0xd7, 0x47, 0x70, 0x4a, 0xf8, 0x7e, 0x86, 0x4e, 0xf9, 0x2f, 0x51, 0x7b, 0x1e, 0x77, - 0xd1, 0x72, 0xae, 0x65, 0x5a, 0xa7, 0x20, 0xf6, 0xa3, 0x16, 0x7b, 0xd5, 0x2e, 0xa6, 0xbb, 0x64, - 0x58, 0x8d, 0xd0, 0x11, 0x00, 0xfc, 0x09, 0x5a, 0xf0, 0xc2, 0x1e, 0x17, 0xc0, 0x5c, 0x33, 0xcb, - 0xb8, 0x1c, 0x04, 0xf9, 0x02, 0x99, 0x2b, 0x50, 0x1c, 0x64, 0xea, 0xdb, 0x1a, 0xf9, 0x81, 0x06, - 0xde, 0x03, 0x31, 0xf4, 0xea, 0x9d, 0xf7, 0x06, 0x21, 0xf8, 0x01, 0xba, 0x94, 0x2a, 0x68, 0x32, - 0x97, 0x0a, 0xc1, 0x94, 0xca, 0x97, 0xc8, 0xbc, 0x83, 0x36, 0x95, 0x3b, 0x2a, 0xd6, 0x10, 0x82, - 0xd9, 0x84, 0x16, 0x3d, 0x0b, 0x0a, 0x7f, 0x8c, 0xb0, 0x1f, 0x3f, 0x8c, 0xda, 0x8c, 0xfa, 0xe0, - 0x06, 0xd1, 0x61, 0xac, 0x64, 0xbe, 0xd2, 0x32, 0x57, 0xcb, 0x32, 0xcd, 0x14, 0xb8, 0x17, 0x1d, - 0xc6, 0x36, 0x89, 0x79, 0x7f, 0x00, 0x81, 0x03, 0x74, 0x31, 0xa7, 0x4f, 0xb7, 0x4b, 0x00, 0x17, - 0xe4, 0x9b, 0x3b, 0xb6, 0x17, 0x3d, 0x93, 0x30, 0xdb, 0x71, 0x00, 0x7c, 0x50, 0xe6, 0x4d, 0x67, - 0xd1, 0xb7, 0xa0, 0xf2, 0xb9, 0xed, 0x1c, 0x9a, 0xdd, 0xe9, 0x26, 0xe2, 0x91, 0x03, 0x3c, 0x89, - 0x23, 0x0e, 0x6b, 0x8f, 0xd0, 0xf2, 0x29, 0xff, 0x14, 0x18, 0xa3, 0x09, 0x35, 0x36, 0x56, 0xd4, - 0xd8, 0xa8, 0xbe, 0xe5, 0x38, 0x99, 0x3d, 0xa0, 0x66, 0x9c, 0x4c, 0x7f, 0xe3, 0xcb, 0x68, 0x86, - 0x07, 0xdd, 0x24, 0x04, 0x57, 0xc4, 0x47, 0xa0, 0xa7, 0xc9, 0xaa, 0x53, 0xd3, 0xb1, 0x03, 0x19, - 0xca, 0xbc, 0xdc, 0x7c, 0xeb, 0xc9, 0x5f, 0x2b, 0x67, 0x9e, 0x9c, 0xac, 0x54, 0x9e, 0x9e, 0xac, - 0x54, 0xfe, 0x3c, 0x59, 0xa9, 0x7c, 0xfd, 0xf7, 0xca, 0x99, 0x0f, 0xaf, 0xb4, 0x63, 0xb5, 0xec, - 0x7a, 0x10, 0x6f, 0xe4, 0x23, 0xf2, 0xd6, 0x46, 0x71, 0x2b, 0x5a, 0x93, 0x6a, 0xf2, 0xdd, 0x7a, - 0x16, 0x00, 0x00, 0xff, 0xff, 0xb2, 0xa0, 0x15, 0x1f, 0x9b, 0x0b, 0x00, 0x00, + // 1093 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x56, 0x4d, 0x73, 0x1b, 0x45, + 0x10, 0x8d, 0x6c, 0x27, 0xb6, 0x46, 0xb6, 0xe3, 0x8c, 0x4d, 0x32, 0xd8, 0x55, 0xc6, 0x71, 0x20, + 0x18, 0x08, 0x72, 0xb0, 0x81, 0x2a, 0xb8, 0x80, 0x62, 0xb9, 0x1c, 0xa7, 0x92, 0x94, 0x6b, 0x63, + 0xa8, 0x14, 0x14, 0xb5, 0x8c, 0x76, 0xdb, 0xd2, 0xc6, 0xab, 0xdd, 0x65, 0x66, 0xe4, 0x38, 0x57, + 0x8e, 0x9c, 0x81, 0xca, 0x8f, 0xe0, 0xc0, 0xe7, 0x7f, 0xc8, 0x81, 0x8f, 0x00, 0x7f, 0x00, 0xcc, + 0x85, 0x3b, 0x70, 0xa7, 0xe6, 0x63, 0x67, 0xb5, 0xd2, 0xc8, 0xb7, 0x55, 0xf7, 0xeb, 0xf7, 0xde, + 0xcc, 0x76, 0xaf, 0x1a, 0xcd, 0x33, 0x7a, 0x20, 0xfc, 0x28, 0x11, 0xc0, 0x12, 0x1a, 0xd7, 0x33, + 0x96, 0x8a, 0x14, 0x4f, 0x83, 0x08, 0x42, 0x0e, 0xec, 0x08, 0x58, 0xd6, 0x5a, 0x5c, 0x68, 0xa7, + 0xed, 0x54, 0x25, 0xd6, 0xe5, 0x93, 0xc6, 0x2c, 0x56, 0x59, 0x16, 0x98, 0xc7, 0x15, 0x09, 0x5f, + 0xa7, 0x59, 0xb4, 0x7e, 0x04, 0x8c, 0x47, 0x69, 0x92, 0xb5, 0xf2, 0x27, 0x83, 0xb8, 0x6a, 0x11, + 0x5d, 0xe8, 0xb6, 0x80, 0xf1, 0x4e, 0x94, 0x65, 0xad, 0xbe, 0x1f, 0x1a, 0xb7, 0xca, 0xd0, 0x8c, + 0x07, 0x9f, 0xf4, 0x80, 0x8b, 0x9b, 0x40, 0x43, 0x60, 0x78, 0x16, 0x8d, 0xed, 0x36, 0x49, 0x65, + 0xa5, 0xb2, 0x36, 0xe1, 0x8d, 0xed, 0x36, 0xf1, 0x22, 0x9a, 0xea, 0x71, 0x69, 0xb5, 0x0b, 0x64, + 0x6c, 0xa5, 0xb2, 0x56, 0xf5, 0xec, 0x6f, 0x7c, 0x0d, 0xcd, 0xd0, 0x9e, 0xe8, 0xf8, 0x0c, 0x8e, + 0x22, 0xa9, 0x4d, 0xc6, 0x65, 0xd9, 0x8d, 0xc9, 0xcf, 0x7e, 0x20, 0xe3, 0x9b, 0xf5, 0xd7, 0xbc, + 0x69, 0x99, 0xf5, 0x4c, 0xf2, 0xed, 0xc9, 0x4f, 0x55, 0xf8, 0xfa, 0xea, 0xe3, 0x79, 0x34, 0xbf, + 0x6b, 0xce, 0xef, 0xd1, 0x03, 0x61, 0x0c, 0xe0, 0x4d, 0x74, 0xae, 0xa3, 0x4c, 0x90, 0x70, 0xa5, + 0xb2, 0x56, 0xdb, 0x58, 0xaa, 0xf7, 0xdf, 0x4a, 0xbd, 0xe4, 0xd3, 0x33, 0xd0, 0x21, 0xbf, 0xd7, + 0xd1, 0x59, 0x46, 0x93, 0x36, 0x28, 0x2f, 0xb5, 0x8d, 0xc5, 0x01, 0x0e, 0x99, 0x32, 0x44, 0x9e, + 0x06, 0xe2, 0x97, 0xd1, 0x78, 0xd6, 0x13, 0x64, 0x42, 0xe1, 0x49, 0x19, 0xbf, 0xd7, 0xcb, 0xdd, + 0x79, 0x12, 0x84, 0xb7, 0xd0, 0x74, 0x08, 0x31, 0x08, 0xf0, 0xb5, 0xc8, 0x59, 0x55, 0xb4, 0x52, + 0x2e, 0x6a, 0x2a, 0x44, 0x49, 0xaa, 0x16, 0x16, 0x31, 0x29, 0x28, 0x8e, 0x13, 0x72, 0xce, 0x25, + 0xb8, 0x7f, 0x9c, 0x58, 0x41, 0x71, 0x9c, 0xe0, 0x77, 0x10, 0x0a, 0xd2, 0x6e, 0x46, 0x03, 0x21, + 0xef, 0x77, 0x52, 0x95, 0x3c, 0x57, 0x2e, 0xd9, 0xb2, 0xf9, 0xbc, 0xb2, 0xaf, 0x04, 0xbf, 0x8b, + 0x6a, 0x31, 0x50, 0x0e, 0x7e, 0x9b, 0xd1, 0x44, 0x90, 0x29, 0x17, 0xc3, 0x6d, 0x09, 0xd8, 0x91, + 0x79, 0xcb, 0x10, 0xdb, 0x90, 0x3c, 0xb3, 0x66, 0x60, 0x70, 0x94, 0x1e, 0x02, 0xa9, 0xba, 0xce, + 0xac, 0x28, 0x3c, 0x05, 0xb0, 0x67, 0x8e, 0x8b, 0x98, 0x7c, 0x2d, 0x34, 0xa6, 0xac, 0x4b, 0x90, + 0xeb, 0xb5, 0x34, 0x64, 0xca, 0xbe, 0x16, 0x05, 0xc4, 0xf7, 0xd1, 0x9c, 0x96, 0x0d, 0x3a, 0x10, + 0x1c, 0x66, 0x69, 0x94, 0x08, 0x52, 0x53, 0xc5, 0xcf, 0x3b, 0xa4, 0xb7, 0x2c, 0xc8, 0xd0, 0xe4, + 0x5d, 0xf8, 0xba, 0x77, 0x3e, 0x2e, 0x03, 0x70, 0x03, 0xd5, 0x54, 0xdb, 0x42, 0x42, 0x5b, 0x31, + 0x90, 0xbf, 0x9d, 0xb7, 0xda, 0xe8, 0x89, 0xce, 0xb6, 0x02, 0xd8, 0x3b, 0xa1, 0x36, 0x84, 0x9b, + 0x48, 0xf5, 0xb6, 0x1f, 0x46, 0x5c, 0x71, 0xfc, 0x33, 0xe9, 0xba, 0x14, 0xc9, 0xd1, 0xd4, 0x08, + 0x7b, 0x29, 0xb4, 0x88, 0xe1, 0x5b, 0xc6, 0x08, 0x17, 0x54, 0xf4, 0x38, 0xf9, 0x6f, 0xa4, 0x91, + 0x7b, 0x0a, 0x30, 0x70, 0xb2, 0x37, 0xb4, 0x23, 0x9d, 0xc3, 0x77, 0xb5, 0x23, 0x48, 0x44, 0x14, + 0x50, 0x01, 0xe4, 0x5f, 0x4d, 0xf6, 0x52, 0x99, 0x2c, 0x1f, 0xbb, 0x46, 0x1f, 0x34, 0xb7, 0x56, + 0xaa, 0xc7, 0xdb, 0x66, 0xb6, 0xe5, 0xb0, 0xfb, 0x34, 0x0c, 0xc9, 0x8f, 0x53, 0xa3, 0x8e, 0xf8, + 0x1e, 0x07, 0xd6, 0x08, 0xc3, 0xd2, 0x11, 0x4d, 0x0c, 0xdf, 0x45, 0x73, 0x05, 0x8d, 0x1e, 0x02, + 0xf2, 0x93, 0x66, 0xba, 0xe2, 0x66, 0x32, 0xd3, 0x63, 0xc8, 0x66, 0x69, 0x29, 0x5c, 0xb6, 0xd5, + 0x06, 0x41, 0x7e, 0x3e, 0xd5, 0xd6, 0x0e, 0x88, 0x21, 0x5b, 0x3b, 0x20, 0x70, 0x1b, 0x3d, 0x5b, + 0xd0, 0x04, 0x1d, 0x39, 0x96, 0x7e, 0x46, 0x39, 0x7f, 0x98, 0xb2, 0x90, 0xfc, 0xa2, 0x29, 0x5f, + 0x71, 0x53, 0x6e, 0x29, 0xf4, 0x9e, 0x01, 0xe7, 0xec, 0x17, 0xa9, 0x33, 0x8d, 0xef, 0xa3, 0x85, + 0x3e, 0xbf, 0x72, 0x9e, 0x7c, 0x96, 0xc6, 0x40, 0x9e, 0x6a, 0x8d, 0xab, 0x23, 0x6c, 0xab, 0x59, + 0x4c, 0x8b, 0xb6, 0xb9, 0x40, 0x07, 0x33, 0xf8, 0x43, 0xf4, 0x4c, 0xc1, 0xac, 0x47, 0x53, 0x53, + 0xff, 0xaa, 0xa9, 0x5f, 0x74, 0x53, 0x9b, 0x19, 0xed, 0xe3, 0xc6, 0x74, 0x28, 0x85, 0x6f, 0xa2, + 0xd9, 0x82, 0x3c, 0x8e, 0xb8, 0x20, 0xbf, 0x69, 0xd6, 0xcb, 0x6e, 0xd6, 0xdb, 0x11, 0x17, 0xa5, + 0x3e, 0xca, 0x83, 0x96, 0x49, 0x5a, 0xd3, 0x4c, 0xbf, 0x8f, 0x64, 0x92, 0xd2, 0x43, 0x4c, 0x79, + 0xd0, 0xbe, 0x7a, 0xc5, 0x24, 0x3b, 0xf2, 0xeb, 0xea, 0xa8, 0x57, 0x2f, 0x6b, 0x06, 0x3b, 0xd2, + 0xc4, 0x6c, 0x47, 0x2a, 0x1a, 0xd3, 0x91, 0xdf, 0x54, 0x47, 0x75, 0xa4, 0xac, 0x72, 0x74, 0x64, + 0x11, 0x2e, 0xdb, 0x92, 0x1d, 0xf9, 0xed, 0xa9, 0xb6, 0x06, 0x3b, 0xd2, 0xc4, 0xf0, 0x03, 0xb4, + 0xd8, 0x47, 0xa3, 0x1a, 0x25, 0x03, 0xd6, 0x8d, 0xb8, 0xfa, 0x63, 0xfd, 0x4e, 0x73, 0x5e, 0x1b, + 0xc1, 0x29, 0xe1, 0x7b, 0x16, 0x9d, 0xf3, 0x5f, 0xa2, 0xee, 0x3c, 0xee, 0xa2, 0xa5, 0x42, 0xcb, + 0xb4, 0x4e, 0x9f, 0xd8, 0xf7, 0x5a, 0xec, 0x55, 0xb7, 0x98, 0xee, 0x92, 0x61, 0x35, 0x42, 0x47, + 0x00, 0xf0, 0xc7, 0x68, 0x3e, 0x88, 0x7b, 0x5c, 0x00, 0xf3, 0xcd, 0x92, 0xe2, 0x73, 0x10, 0xe4, + 0x73, 0x64, 0x46, 0xa0, 0x7f, 0x43, 0xa9, 0x6f, 0x69, 0xe4, 0xfb, 0x1a, 0x78, 0x0f, 0xc4, 0xd0, + 0x57, 0xef, 0x42, 0x30, 0x08, 0xc1, 0x0f, 0xd0, 0xa5, 0x5c, 0x41, 0x93, 0xf9, 0x54, 0x08, 0xa6, + 0x54, 0xbe, 0x40, 0xe6, 0x3b, 0xe8, 0x52, 0xb9, 0xa3, 0x62, 0x0d, 0x21, 0x98, 0x4b, 0x68, 0x21, + 0x70, 0xa0, 0xf0, 0x47, 0x08, 0x87, 0xe9, 0xc3, 0xa4, 0xcd, 0x68, 0x08, 0x7e, 0x94, 0x1c, 0xa4, + 0x4a, 0xe6, 0x4b, 0x2d, 0xf3, 0x42, 0x59, 0xa6, 0x99, 0x03, 0x77, 0x93, 0x83, 0xd4, 0x25, 0x31, + 0x17, 0x0e, 0x20, 0x70, 0x84, 0x2e, 0x16, 0xf4, 0xf9, 0x75, 0x09, 0xe0, 0x82, 0x7c, 0x75, 0xc7, + 0xf5, 0x45, 0xb7, 0x12, 0xe6, 0x3a, 0xf6, 0x81, 0x0f, 0xca, 0xbc, 0xe9, 0x2d, 0x84, 0x0e, 0x94, + 0x5d, 0xc8, 0x6e, 0x4d, 0x4c, 0x8d, 0xcd, 0x8d, 0x7b, 0x63, 0x47, 0x1b, 0xab, 0xe7, 0xd1, 0xcc, + 0x76, 0x37, 0x13, 0x8f, 0x3c, 0xe0, 0x59, 0x9a, 0x70, 0x58, 0x7d, 0x84, 0x96, 0x4e, 0xf9, 0xcf, + 0xc0, 0x18, 0x4d, 0xa8, 0xcd, 0xb0, 0xa2, 0x36, 0x43, 0xf5, 0x2c, 0x37, 0x46, 0xfb, 0x29, 0x35, + 0x1b, 0x63, 0xfe, 0x1b, 0x5f, 0x46, 0xd3, 0x3c, 0xea, 0x66, 0x31, 0xf8, 0x22, 0x3d, 0x04, 0xbd, + 0x30, 0x56, 0xbd, 0x9a, 0x8e, 0xed, 0xcb, 0x90, 0x75, 0x75, 0xe3, 0xad, 0x27, 0x7f, 0x2e, 0x9f, + 0x79, 0x72, 0xb2, 0x5c, 0x79, 0x7a, 0xb2, 0x5c, 0xf9, 0xe3, 0x64, 0xb9, 0xf2, 0xf8, 0xaf, 0xe5, + 0x33, 0x1f, 0x5c, 0x69, 0xa7, 0xea, 0x02, 0xea, 0x51, 0xba, 0x5e, 0x6c, 0xc1, 0x9b, 0xeb, 0xfd, + 0x97, 0xd2, 0x3a, 0xa7, 0x96, 0xdb, 0xcd, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x20, 0x7d, 0xf5, + 0xf9, 0x6c, 0x0b, 0x00, 0x00, } func (m *RequestHeader) Marshal() (dAtA []byte, err error) { @@ -797,18 +796,6 @@ func (m *InternalRaftRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - if m.V2 != nil { - { - size, err := m.V2.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } if m.ID != 0 { i = encodeVarintRaftInternal(dAtA, i, uint64(m.ID)) i-- @@ -934,10 +921,6 @@ func (m *InternalRaftRequest) Size() (n int) { if m.ID != 0 { n += 1 + sovRaftInternal(uint64(m.ID)) } - if m.V2 != nil { - l = m.V2.Size() - n += 1 + l + sovRaftInternal(uint64(l)) - } if m.Range != nil { l = m.Range.Size() n += 1 + l + sovRaftInternal(uint64(l)) @@ -1279,42 +1262,6 @@ func (m *InternalRaftRequest) Unmarshal(dAtA []byte) error { break } } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field V2", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.V2 == nil { - m.V2 = &Request{} - } - if err := m.V2.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Range", wireType) diff --git a/api/etcdserverpb/raft_internal.proto b/api/etcdserverpb/raft_internal.proto index 88b8ab5279ef..b200950a1c19 100644 --- a/api/etcdserverpb/raft_internal.proto +++ b/api/etcdserverpb/raft_internal.proto @@ -2,7 +2,6 @@ syntax = "proto3"; package etcdserverpb; import "gogoproto/gogo.proto"; -import "etcdserver.proto"; import "rpc.proto"; import "etcd/api/versionpb/version.proto"; import "etcd/api/membershippb/membership.proto"; @@ -32,7 +31,8 @@ message InternalRaftRequest { RequestHeader header = 100; uint64 ID = 1; - Request v2 = 2; + reserved 2; + reserved "v2"; RangeRequest range = 3; PutRequest put = 4; diff --git a/scripts/etcd_version_annotations.txt b/scripts/etcd_version_annotations.txt index 48071fb66d1d..1ba1f1241c92 100644 --- a/scripts/etcd_version_annotations.txt +++ b/scripts/etcd_version_annotations.txt @@ -214,7 +214,6 @@ etcdserverpb.InternalRaftRequest.lease_revoke: "" etcdserverpb.InternalRaftRequest.put: "" etcdserverpb.InternalRaftRequest.range: "" etcdserverpb.InternalRaftRequest.txn: "" -etcdserverpb.InternalRaftRequest.v2: "" etcdserverpb.LeaseCheckpoint: "3.4" etcdserverpb.LeaseCheckpoint.ID: "" etcdserverpb.LeaseCheckpoint.remaining_TTL: "" @@ -337,24 +336,6 @@ etcdserverpb.RangeResponse.count: "" etcdserverpb.RangeResponse.header: "" etcdserverpb.RangeResponse.kvs: "" etcdserverpb.RangeResponse.more: "" -etcdserverpb.Request: "" -etcdserverpb.Request.Dir: "" -etcdserverpb.Request.Expiration: "" -etcdserverpb.Request.ID: "" -etcdserverpb.Request.Method: "" -etcdserverpb.Request.Path: "" -etcdserverpb.Request.PrevExist: "" -etcdserverpb.Request.PrevIndex: "" -etcdserverpb.Request.PrevValue: "" -etcdserverpb.Request.Quorum: "" -etcdserverpb.Request.Recursive: "" -etcdserverpb.Request.Refresh: "" -etcdserverpb.Request.Since: "" -etcdserverpb.Request.Sorted: "" -etcdserverpb.Request.Stream: "" -etcdserverpb.Request.Time: "" -etcdserverpb.Request.Val: "" -etcdserverpb.Request.Wait: "" etcdserverpb.RequestHeader: "3.0" etcdserverpb.RequestHeader.ID: "" etcdserverpb.RequestHeader.auth_revision: "3.1" diff --git a/server/storage/wal/version.go b/server/storage/wal/version.go index 8453fb0553d6..97c1d66c4bf3 100644 --- a/server/storage/wal/version.go +++ b/server/storage/wal/version.go @@ -108,14 +108,7 @@ func visitEntryData(entryType raftpb.EntryType, data []byte, visitor Visitor) er case raftpb.EntryNormal: var raftReq etcdserverpb.InternalRaftRequest if err := pbutil.Unmarshaler(&raftReq).Unmarshal(data); err != nil { - // try V2 Request - var r etcdserverpb.Request - if pbutil.Unmarshaler(&r).Unmarshal(data) != nil { - // return original error - return err - } - msg = proto.MessageReflect(&r) - break + return err } msg = proto.MessageReflect(&raftReq) if raftReq.DowngradeVersionTest != nil { From 8c9707dda4c6395ccc67fb1da0ed48e0aee0d7d5 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Thu, 5 Feb 2026 15:07:16 +0100 Subject: [PATCH 0788/1068] dependency: bump github.com/coreos/go-systemd/v22 from 22.6.0 to 22.7.0 Reference: - #21235 Signed-off-by: Chun-Hung Tseng --- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 18 files changed, 27 insertions(+), 27 deletions(-) diff --git a/cache/go.mod b/cache/go.mod index 0e1ee2a646e3..4c6fbac22331 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -14,7 +14,7 @@ require ( require ( github.com/coreos/go-semver v0.3.1 // indirect - github.com/coreos/go-systemd/v22 v22.6.0 // indirect + github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect diff --git a/cache/go.sum b/cache/go.sum index 3a1827d54c78..48ba37bf625f 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -4,8 +4,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= -github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= +github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= +github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 94091f5d0811..b2a39bd68a6b 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -5,7 +5,7 @@ go 1.25.0 toolchain go1.25.6 require ( - github.com/coreos/go-systemd/v22 v22.6.0 + github.com/coreos/go-systemd/v22 v22.7.0 github.com/stretchr/testify v1.11.1 go.uber.org/zap v1.27.1 golang.org/x/sys v0.40.0 diff --git a/client/pkg/go.sum b/client/pkg/go.sum index 7019a0992472..081cf854dfb8 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -1,5 +1,5 @@ -github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= -github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= +github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= +github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/client/v3/go.mod b/client/v3/go.mod index 61b6a1815538..58ed706f5745 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -20,7 +20,7 @@ require ( require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.6.0 // indirect + github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index d3f234abd233..874c2af465e4 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -4,8 +4,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= -github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= +github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= +github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 3cd60d9ed7b2..98f31229d0b0 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -27,7 +27,7 @@ require ( github.com/clipperhouse/stringish v0.1.1 // indirect github.com/clipperhouse/uax29/v2 v2.3.0 // indirect github.com/coreos/go-semver v0.3.1 // indirect - github.com/coreos/go-systemd/v22 v22.6.0 // indirect + github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index aafe3ef0d2b0..fb9593682772 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -16,8 +16,8 @@ github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuh github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= -github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= +github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= +github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 7394fe715bf7..3c984daf3ddc 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -36,7 +36,7 @@ require ( github.com/clipperhouse/displaywidth v0.6.2 // indirect github.com/clipperhouse/stringish v0.1.1 // indirect github.com/clipperhouse/uax29/v2 v2.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.6.0 // indirect + github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect github.com/go-logr/logr v1.4.3 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index c5bf1826b9f5..815b0b4193de 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -14,8 +14,8 @@ github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD9 github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= -github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= +github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= +github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/go.mod b/go.mod index a1b7b065b05c..bce99453ba97 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,7 @@ require ( github.com/clipperhouse/displaywidth v0.6.2 // indirect github.com/clipperhouse/stringish v0.1.1 // indirect github.com/clipperhouse/uax29/v2 v2.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.6.0 // indirect + github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect github.com/go-logr/logr v1.4.3 // indirect diff --git a/go.sum b/go.sum index 429a5f00f23a..d1ccb0e6727f 100644 --- a/go.sum +++ b/go.sum @@ -25,8 +25,8 @@ github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD9 github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= -github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= +github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= +github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/pkg/go.mod b/pkg/go.mod index 2291d14bfc1e..742407bd818f 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -19,7 +19,7 @@ require ( require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.6.0 // indirect + github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index a42687d0bf94..336c0cc039bc 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -1,7 +1,7 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= -github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= +github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= +github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= diff --git a/server/go.mod b/server/go.mod index 039597bdc217..ca521df3a86d 100644 --- a/server/go.mod +++ b/server/go.mod @@ -6,7 +6,7 @@ toolchain go1.25.6 require ( github.com/coreos/go-semver v0.3.1 - github.com/coreos/go-systemd/v22 v22.6.0 + github.com/coreos/go-systemd/v22 v22.7.0 github.com/dustin/go-humanize v1.0.1 github.com/gogo/protobuf v1.3.2 github.com/golang-jwt/jwt/v5 v5.3.0 diff --git a/server/go.sum b/server/go.sum index 6b43c53212cf..e0fad94aae3f 100644 --- a/server/go.sum +++ b/server/go.sum @@ -8,8 +8,8 @@ github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD9 github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= -github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= +github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= +github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/tests/go.mod b/tests/go.mod index 8f5cef11de2a..d46474945d98 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -64,7 +64,7 @@ require ( github.com/clipperhouse/displaywidth v0.6.2 // indirect github.com/clipperhouse/stringish v0.1.1 // indirect github.com/clipperhouse/uax29/v2 v2.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.6.0 // indirect + github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/creack/pty v1.1.18 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dustin/go-humanize v1.0.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index 45f9ba6a2f01..ff7e4faf602f 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -29,8 +29,8 @@ github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD9 github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= -github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= +github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= +github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= From 365856a781211a9bc411aeb009d29fd3643750dc Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 20 Nov 2025 17:57:22 -0500 Subject: [PATCH 0789/1068] generate: scripts/genproto.sh Signed-off-by: Jordan Liggitt --- api/versionpb/version.pb.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/api/versionpb/version.pb.go b/api/versionpb/version.pb.go index 71c74eb71929..4cf88137c2eb 100644 --- a/api/versionpb/version.pb.go +++ b/api/versionpb/version.pb.go @@ -8,8 +8,8 @@ import ( math "math" _ "github.com/gogo/protobuf/gogoproto" - descriptor "github.com/gogo/protobuf/protoc-gen-gogo/descriptor" proto "github.com/golang/protobuf/proto" + descriptorpb "google.golang.org/protobuf/types/descriptorpb" ) // Reference imports to suppress errors if they are not otherwise used. @@ -24,7 +24,7 @@ var _ = math.Inf const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package var E_EtcdVersionMsg = &proto.ExtensionDesc{ - ExtendedType: (*descriptor.MessageOptions)(nil), + ExtendedType: (*descriptorpb.MessageOptions)(nil), ExtensionType: (*string)(nil), Field: 50000, Name: "versionpb.etcd_version_msg", @@ -33,7 +33,7 @@ var E_EtcdVersionMsg = &proto.ExtensionDesc{ } var E_EtcdVersionField = &proto.ExtensionDesc{ - ExtendedType: (*descriptor.FieldOptions)(nil), + ExtendedType: (*descriptorpb.FieldOptions)(nil), ExtensionType: (*string)(nil), Field: 50001, Name: "versionpb.etcd_version_field", @@ -42,7 +42,7 @@ var E_EtcdVersionField = &proto.ExtensionDesc{ } var E_EtcdVersionEnum = &proto.ExtensionDesc{ - ExtendedType: (*descriptor.EnumOptions)(nil), + ExtendedType: (*descriptorpb.EnumOptions)(nil), ExtensionType: (*string)(nil), Field: 50002, Name: "versionpb.etcd_version_enum", @@ -51,7 +51,7 @@ var E_EtcdVersionEnum = &proto.ExtensionDesc{ } var E_EtcdVersionEnumValue = &proto.ExtensionDesc{ - ExtendedType: (*descriptor.EnumValueOptions)(nil), + ExtendedType: (*descriptorpb.EnumValueOptions)(nil), ExtensionType: (*string)(nil), Field: 50003, Name: "versionpb.etcd_version_enum_value", From 733b3d74bb915410618d2f222667c04d372e720d Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 6 Feb 2026 11:12:11 +0000 Subject: [PATCH 0790/1068] Remove apply_v2.go Signed-off-by: Benjamin Wang --- server/etcdserver/apply/apply.go | 13 +---- server/etcdserver/apply/apply_v2.go | 76 ----------------------------- 2 files changed, 1 insertion(+), 88 deletions(-) delete mode 100644 server/etcdserver/apply/apply_v2.go diff --git a/server/etcdserver/apply/apply.go b/server/etcdserver/apply/apply.go index 74b01e380e71..8730260499c7 100644 --- a/server/etcdserver/apply/apply.go +++ b/server/etcdserver/apply/apply.go @@ -26,20 +26,9 @@ import ( func Apply(lg *zap.Logger, e *raftpb.Entry, uberApply UberApplier, w wait.Wait, shouldApplyV3 membership.ShouldApplyV3) (ar *Result, id uint64) { var raftReq pb.InternalRaftRequest - if !pbutil.MaybeUnmarshal(&raftReq, e.Data) { // backward compatible - var r pb.Request - rp := &r - pbutil.MustUnmarshal(rp, e.Data) - lg.Debug("Apply", zap.Stringer("V2request", rp)) - raftReq = v2ToV3Request(lg, (*RequestV2)(rp)) - } + pbutil.MustUnmarshal(&raftReq, e.Data) lg.Debug("Apply", zap.Stringer("raftReq", &raftReq)) - if raftReq.V2 != nil { - req := (*RequestV2)(raftReq.V2) - raftReq = v2ToV3Request(lg, req) - } - id = raftReq.ID if id == 0 { if raftReq.Header == nil { diff --git a/server/etcdserver/apply/apply_v2.go b/server/etcdserver/apply/apply_v2.go deleted file mode 100644 index 77c235cc06d7..000000000000 --- a/server/etcdserver/apply/apply_v2.go +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2016 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package apply - -import ( - "encoding/json" - "net/http" - "path" - "regexp" - - "go.uber.org/zap" - - pb "go.etcd.io/etcd/api/v3/etcdserverpb" - "go.etcd.io/etcd/api/v3/membershippb" - "go.etcd.io/etcd/server/v3/etcdserver/api/membership" -) - -var ( - storeMemberAttributeRegexp = regexp.MustCompile(path.Join(membership.StoreMembersPrefix, "[[:xdigit:]]{1,16}", "attributes")) -) - -type RequestV2 pb.Request - -func (r *RequestV2) String() string { - rpb := pb.Request(*r) - return rpb.String() -} - -func v2ToV3Request(lg *zap.Logger, r *RequestV2) pb.InternalRaftRequest { - if r.Method != http.MethodPut || (!storeMemberAttributeRegexp.MatchString(r.Path) && r.Path != membership.StoreClusterVersionKey()) { - lg.Panic("detected disallowed v2 WAL for stage --v2-deprecation=write-only", zap.String("method", r.Method)) - } - if storeMemberAttributeRegexp.MatchString(r.Path) { - id := membership.MustParseMemberIDFromKey(lg, path.Dir(r.Path)) - var attr membership.Attributes - if err := json.Unmarshal([]byte(r.Val), &attr); err != nil { - lg.Panic("failed to unmarshal", zap.String("value", r.Val), zap.Error(err)) - } - return pb.InternalRaftRequest{ - Header: &pb.RequestHeader{ - ID: r.ID, - }, - ClusterMemberAttrSet: &membershippb.ClusterMemberAttrSetRequest{ - Member_ID: uint64(id), - MemberAttributes: &membershippb.Attributes{ - Name: attr.Name, - ClientUrls: attr.ClientURLs, - }, - }, - } - } - if r.Path == membership.StoreClusterVersionKey() { - return pb.InternalRaftRequest{ - Header: &pb.RequestHeader{ - ID: r.ID, - }, - ClusterVersionSet: &membershippb.ClusterVersionSetRequest{ - Ver: r.Val, - }, - } - } - lg.Panic("detected disallowed v2 WAL for stage --v2-deprecation=write-only", zap.String("method", r.Method)) - return pb.InternalRaftRequest{} -} From 662bec8feb8b0c73bd38a78ee0374444f85463a2 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 6 Feb 2026 11:48:25 +0100 Subject: [PATCH 0791/1068] Fix TestCacheLaggingWatcher flake Signed-off-by: Marek Siarkowicz --- cache/cache.go | 5 +++++ cache/demux.go | 40 +++++++++++++++++++++++++++++++++ tests/integration/cache_test.go | 11 +++++++-- 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index 41df1086298d..65d337087d07 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -409,3 +409,8 @@ func (c *Cache) validateRange(startKey, endKey []byte) error { return nil } } + +// WaitForNextResync blocks until the next resync loop iteration is complete. +func (c *Cache) WaitForNextResync(ctx context.Context) error { + return c.demux.WaitForNextResync(ctx) +} diff --git a/cache/demux.go b/cache/demux.go index 1c4d05860b3c..06258d8d36cd 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -35,6 +35,8 @@ type demux struct { minRev, maxRev int64 // History stores events within [minRev, maxRev]. history ringBuffer[[]*clientv3.Event] + // resynced is used to notify that resync loop was completed. + resynced *notifier } func NewDemux(ctx context.Context, wg *sync.WaitGroup, historyWindowSize int, resyncInterval time.Duration) *demux { @@ -53,6 +55,7 @@ func newDemux(historyWindowSize int, resyncInterval time.Duration) *demux { laggingWatchers: make(map[*watcher]int64), history: *newRingBuffer(historyWindowSize, func(batch []*clientv3.Event) int64 { return batch[0].Kv.ModRevision }), resyncInterval: resyncInterval, + resynced: newNotifier(), } } @@ -67,11 +70,17 @@ func (d *demux) resyncLoop(ctx context.Context) { return case <-timer.C: d.resyncLaggingWatchers() + d.resynced.notify() timer.Reset(d.resyncInterval) } } } +// WaitForNextResync blocks until the next resync loop iteration is complete. +func (d *demux) WaitForNextResync(ctx context.Context) error { + return d.resynced.wait(ctx) +} + func (d *demux) Register(w *watcher, startingRev int64) { d.mu.Lock() defer d.mu.Unlock() @@ -315,3 +324,34 @@ func (d *demux) resyncLaggingWatchers() { } } } + +func newNotifier() *notifier { + return ¬ifier{ + ch: make(chan struct{}), + } +} + +type notifier struct { + mu sync.RWMutex + ch chan struct{} +} + +func (n *notifier) notify() { + n.mu.Lock() + defer n.mu.Unlock() + previous := n.ch + n.ch = make(chan struct{}) + close(previous) +} + +func (n *notifier) wait(ctx context.Context) error { + n.mu.RLock() + ch := n.ch + n.mu.RUnlock() + select { + case <-ch: + return nil + case <-ctx.Done(): + return ctx.Err() + } +} diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 3e53d7627876..db0240eb118b 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -1096,6 +1096,7 @@ func TestCacheLaggingWatcher(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + ctx := t.Context() c, err := cache.New( client, prefix, cache.WithHistoryWindowSize(tt.window), @@ -1107,12 +1108,18 @@ func TestCacheLaggingWatcher(t *testing.T) { } defer c.Close() - if err := c.WaitReady(t.Context()); err != nil { + if err := c.WaitReady(ctx); err != nil { t.Fatalf("cache not ready: %v", err) } - ch := c.Watch(t.Context(), prefix, clientv3.WithPrefix()) + ch := c.Watch(ctx, prefix, clientv3.WithPrefix()) + if err := c.WaitForNextResync(ctx); err != nil { + t.Fatalf("cache not synced: %v", err) + } generateEvents(t, client, prefix, tt.eventCount) + if err := c.WaitForNextResync(ctx); err != nil { + t.Fatalf("cache not synced: %v", err) + } gotEvents, ok := collectAndAssertAtomicEvents(t, ch) closed := !ok From 8542aea02f987cfe91218fe6d7ec6f419f2a49f0 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 20 Nov 2025 18:09:39 -0500 Subject: [PATCH 0792/1068] Split out grpc generation Signed-off-by: Jordan Liggitt --- scripts/genproto.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scripts/genproto.sh b/scripts/genproto.sh index 02e7898835a8..c84e9202b4bb 100755 --- a/scripts/genproto.sh +++ b/scripts/genproto.sh @@ -77,6 +77,8 @@ if [[ $(protoc --version | cut -f2 -d' ') != "3.20.3" ]]; then fi GOFAST_BIN=$(tool_get_bin github.com/gogo/protobuf/protoc-gen-gofast) +GOGEN_BIN=$(tool_get_bin google.golang.org/protobuf/cmd/protoc-gen-go) +GOGENGRPC_BIN=$(tool_get_bin google.golang.org/grpc/cmd/protoc-gen-go-grpc) GRPC_GATEWAY_BIN=$(tool_get_bin github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway) OPENAPIV2_BIN=$(tool_get_bin github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2) GOGOPROTO_ROOT="$(tool_pkg_dir github.com/gogo/protobuf/proto)/.." @@ -114,6 +116,8 @@ download_googleapi echo echo "Resolved binary and packages versions:" echo " - protoc-gen-gofast: ${GOFAST_BIN}" +echo " - protoc-gen-go: ${GOGEN_BIN}" +echo " - protoc-gen-go-grpc: ${GOGENGRPC_BIN}" echo " - protoc-gen-grpc-gateway: ${GRPC_GATEWAY_BIN}" echo " - openapiv2: ${OPENAPIV2_BIN}" echo " - gogoproto-root: ${GOGOPROTO_ROOT}" @@ -128,8 +132,10 @@ log_callout -e "\\nRunning gofast (gogo) proto generation..." for dir in ${DIRS}; do run pushd "${dir}" - run protoc --gofast_out=plugins=grpc:. -I=".:${GOGOPROTO_PATH}:${ETCD_ROOT_DIR}/..:${RAFT_ROOT}:${ETCD_ROOT_DIR}:${GOOGLEAPI_ROOT}" \ + run protoc --gofast_out=. -I=".:${GOGOPROTO_PATH}:${ETCD_ROOT_DIR}/..:${RAFT_ROOT}:${ETCD_ROOT_DIR}:${GOOGLEAPI_ROOT}" \ "--gofast_opt=paths=source_relative,${module_mappings}" \ + --go-grpc_out=. \ + "--go-grpc_opt=paths=source_relative,${module_mappings}" \ -I"${GRPC_GATEWAY_ROOT}" \ --plugin="${GOFAST_BIN}" ./**/*.proto From 7e031584329bd45ef83117f523021ab5efe968a6 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 6 Feb 2026 11:38:07 +0000 Subject: [PATCH 0793/1068] Fix workflow failures: remove usage of the v2 Request Signed-off-by: Benjamin Wang --- server/etcdserver/server_test.go | 104 --------------------- tests/robustness/report/wal.go | 16 ++-- tools/etcd-dump-logs/etcd-dump-log_test.go | 23 ----- tools/etcd-dump-logs/main.go | 34 +------ tools/etcd-dump-logs/raw_test.go | 5 - 5 files changed, 12 insertions(+), 170 deletions(-) diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index 81942e5d16d7..55f5d710707c 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -30,8 +30,6 @@ import ( "testing" "time" - "github.com/coreos/go-semver/semver" - "github.com/golang/protobuf/proto" //nolint:staticcheck // TODO: remove for a supported version "github.com/prometheus/client_golang/prometheus" ptestutil "github.com/prometheus/client_golang/prometheus/testutil" "github.com/stretchr/testify/assert" @@ -41,7 +39,6 @@ import ( pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/membershippb" - "go.etcd.io/etcd/api/v3/version" "go.etcd.io/etcd/client/pkg/v3/fileutil" "go.etcd.io/etcd/client/pkg/v3/testutil" "go.etcd.io/etcd/client/pkg/v3/types" @@ -53,11 +50,9 @@ import ( "go.etcd.io/etcd/pkg/v3/wait" "go.etcd.io/etcd/server/v3/auth" "go.etcd.io/etcd/server/v3/config" - "go.etcd.io/etcd/server/v3/etcdserver/api" "go.etcd.io/etcd/server/v3/etcdserver/api/membership" "go.etcd.io/etcd/server/v3/etcdserver/api/rafthttp" "go.etcd.io/etcd/server/v3/etcdserver/api/snap" - "go.etcd.io/etcd/server/v3/etcdserver/api/v3alarm" apply2 "go.etcd.io/etcd/server/v3/etcdserver/apply" "go.etcd.io/etcd/server/v3/etcdserver/cindex" "go.etcd.io/etcd/server/v3/etcdserver/errors" @@ -67,7 +62,6 @@ import ( "go.etcd.io/etcd/server/v3/mock/mockstore" "go.etcd.io/etcd/server/v3/mock/mockwait" serverstorage "go.etcd.io/etcd/server/v3/storage" - "go.etcd.io/etcd/server/v3/storage/backend" betesting "go.etcd.io/etcd/server/v3/storage/backend/testing" "go.etcd.io/etcd/server/v3/storage/mvcc" "go.etcd.io/etcd/server/v3/storage/schema" @@ -149,94 +143,6 @@ func (uberApplierMock) Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership return &apply2.Result{} } -// TestV2SetMemberAttributes validates support of hybrid v3.5 cluster which still uses v2 request. -// TODO: Remove in v3.7 -func TestV2SetMemberAttributes(t *testing.T) { - be, _ := betesting.NewDefaultTmpBackend(t) - defer betesting.Close(t, be) - cl := newTestClusterWithBackend(t, []*membership.Member{{ID: 1}}, be) - - cfg := config.ServerConfig{ - ServerFeatureGate: features.NewDefaultServerFeatureGate("test", nil), - } - - srv := &EtcdServer{ - lgMu: new(sync.RWMutex), - lg: zaptest.NewLogger(t), - cluster: cl, - consistIndex: cindex.NewConsistentIndex(be), - w: wait.New(), - Cfg: cfg, - } - as, err := v3alarm.NewAlarmStore(srv.lg, schema.NewAlarmBackend(srv.lg, be)) - if err != nil { - t.Fatal(err) - } - srv.alarmStore = as - srv.uberApply = srv.NewUberApplier() - - req := pb.Request{ - Method: "PUT", - ID: 1, - Path: membership.MemberAttributesStorePath(1), - Val: `{"Name":"abc","ClientURLs":["http://127.0.0.1:2379"]}`, - } - data, err := proto.Marshal(&req) - if err != nil { - t.Fatal(err) - } - srv.applyEntryNormal(&raftpb.Entry{ - Data: data, - }, membership.ApplyV2storeOnly) - w := membership.Attributes{Name: "abc", ClientURLs: []string{"http://127.0.0.1:2379"}} - if g := cl.Member(1).Attributes; !reflect.DeepEqual(g, w) { - t.Errorf("attributes = %v, want %v", g, w) - } -} - -// TestV2SetClusterVersion validates support of hybrid v3.5 cluster which still uses v2 request. -// TODO: Remove in v3.7 -func TestV2SetClusterVersion(t *testing.T) { - be, _ := betesting.NewDefaultTmpBackend(t) - defer betesting.Close(t, be) - cl := newTestClusterWithBackend(t, []*membership.Member{}, be) - cl.SetVersion(semver.New("3.4.0"), api.UpdateCapability, membership.ApplyBoth) - cfg := config.ServerConfig{ - ServerFeatureGate: features.NewDefaultServerFeatureGate("test", nil), - } - - srv := &EtcdServer{ - lgMu: new(sync.RWMutex), - lg: zaptest.NewLogger(t), - cluster: cl, - consistIndex: cindex.NewConsistentIndex(be), - w: wait.New(), - Cfg: cfg, - } - as, err := v3alarm.NewAlarmStore(srv.lg, schema.NewAlarmBackend(srv.lg, be)) - if err != nil { - t.Fatal(err) - } - srv.alarmStore = as - srv.uberApply = srv.NewUberApplier() - - req := pb.Request{ - Method: "PUT", - ID: 1, - Path: membership.StoreClusterVersionKey(), - Val: "3.5.0", - } - data, err := proto.Marshal(&req) - if err != nil { - t.Fatal(err) - } - srv.applyEntryNormal(&raftpb.Entry{ - Data: data, - }, membership.ApplyV2storeOnly) - if g := cl.Version(); !reflect.DeepEqual(*g, version.V3_5) { - t.Errorf("attributes = %v, want %v", *g, version.V3_5) - } -} func TestApplyConfStateWithRestart(t *testing.T) { n := newNodeRecorder() srv := newServer(t, n) @@ -1484,16 +1390,6 @@ func newTestCluster(tb testing.TB) *membership.RaftCluster { return membership.NewCluster(zaptest.NewLogger(tb)) } -func newTestClusterWithBackend(tb testing.TB, membs []*membership.Member, be backend.Backend) *membership.RaftCluster { - lg := zaptest.NewLogger(tb) - c := membership.NewCluster(lg) - c.SetBackend(schema.NewMembershipBackend(lg, be)) - for _, m := range membs { - c.AddMember(m, true) - } - return c -} - type nopTransporter struct{} func newNopTransporter() rafthttp.Transporter { diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index e8d09294cf80..f28be8e436ce 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -28,7 +28,6 @@ import ( pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/client/pkg/v3/fileutil" - "go.etcd.io/etcd/pkg/v3/pbutil" "go.etcd.io/etcd/server/v3/storage/datadir" "go.etcd.io/etcd/server/v3/storage/wal" "go.etcd.io/etcd/server/v3/storage/wal/walpb" @@ -217,12 +216,17 @@ func parseEntryNormal(ent raftpb.Entry) (*model.EtcdRequest, error) { return nil, nil } if err := raftReq.Unmarshal(ent.Data); err != nil { - var r pb.Request - isV2Entry := pbutil.MaybeUnmarshal(&r, ent.Data) - if !isV2Entry { - return nil, err + // PR https://github.com/etcd-io/etcd/pull/21263 removed v2 requests + // in etcd v3.7. However, robustness always uses the latest protobuf + // definitions to parse WAL entries generated by all previous versions. + // etcd v3.4 and v3.5 generate v2 requests during bootstrap, which the + // v3.7 protobuf can no longer parse. As a result, robustness fails when + // parsing those WAL entries. We intentionally ignore this error here. + // See https://github.com/etcd-io/etcd/pull/21263#discussion_r2776042340 + if strings.Contains(err.Error(), "proto: wrong wireType") { + return nil, nil } - return nil, nil + return nil, err } switch { case raftReq.Put != nil: diff --git a/tools/etcd-dump-logs/etcd-dump-log_test.go b/tools/etcd-dump-logs/etcd-dump-log_test.go index c2581cebb78e..000755cfe979 100644 --- a/tools/etcd-dump-logs/etcd-dump-log_test.go +++ b/tools/etcd-dump-logs/etcd-dump-log_test.go @@ -107,7 +107,6 @@ func mustCreateWALLog(t *testing.T, path string) { // append entries into wal log appendConfigChangeEnts(&ents) - appendNormalRequestEnts(&ents) appendNormalIRREnts(&ents) appendUnknownNormalEnts(&ents) @@ -133,28 +132,6 @@ func appendConfigChangeEnts(ents *[]raftpb.Entry) { *ents = append(*ents, configChangeEntries...) } -func appendNormalRequestEnts(ents *[]raftpb.Entry) { - a := true - b := false - - requests := []etcdserverpb.Request{ - {ID: 0, Method: "", Path: "/path0", Val: "{\"hey\":\"ho\",\"hi\":[\"yo\"]}", Dir: true, PrevValue: "", PrevIndex: 0, PrevExist: &b, Expiration: 9, Wait: false, Since: 1, Recursive: false, Sorted: false, Quorum: false, Time: 1, Stream: false, Refresh: &b}, - {ID: 1, Method: methodQGet, Path: "/path1", Val: "{\"0\":\"1\",\"2\":[\"3\"]}", Dir: false, PrevValue: "", PrevIndex: 0, PrevExist: &b, Expiration: 9, Wait: false, Since: 1, Recursive: false, Sorted: false, Quorum: false, Time: 1, Stream: false, Refresh: &b}, - {ID: 2, Method: methodSync, Path: "/path2", Val: "{\"0\":\"1\",\"2\":[\"3\"]}", Dir: false, PrevValue: "", PrevIndex: 0, PrevExist: &b, Expiration: 2, Wait: false, Since: 1, Recursive: false, Sorted: false, Quorum: false, Time: 1, Stream: false, Refresh: &b}, - {ID: 3, Method: methodDelete, Path: "/path3", Val: "{\"hey\":\"ho\",\"hi\":[\"yo\"]}", Dir: false, PrevValue: "", PrevIndex: 0, PrevExist: &a, Expiration: 2, Wait: false, Since: 1, Recursive: false, Sorted: false, Quorum: false, Time: 1, Stream: false, Refresh: &b}, - {ID: 4, Method: methodRandom, Path: "/path4/superlong" + strings.Repeat("/path", 30), Val: "{\"hey\":\"ho\",\"hi\":[\"yo\"]}", Dir: false, PrevValue: "", PrevIndex: 0, PrevExist: &b, Expiration: 2, Wait: false, Since: 1, Recursive: false, Sorted: false, Quorum: false, Time: 1, Stream: false, Refresh: &b}, - } - - for i, request := range requests { - var currentry raftpb.Entry - currentry.Term = 3 - currentry.Index = uint64(i + 5) - currentry.Type = raftpb.EntryNormal - currentry.Data = pbutil.MustMarshal(&request) - *ents = append(*ents, currentry) - } -} - func appendNormalIRREnts(ents *[]raftpb.Entry) { irrrange := &etcdserverpb.RangeRequest{Key: []byte("1"), RangeEnd: []byte("hi"), Limit: 6, Revision: 1, SortOrder: 1, SortTarget: 0, Serializable: false, KeysOnly: false, CountOnly: false, MinModRevision: 0, MaxModRevision: 20000, MinCreateRevision: 0, MaxCreateRevision: 20000} diff --git a/tools/etcd-dump-logs/main.go b/tools/etcd-dump-logs/main.go index f0d2a29c4ac7..d596bbb7176c 100644 --- a/tools/etcd-dump-logs/main.go +++ b/tools/etcd-dump-logs/main.go @@ -28,7 +28,6 @@ import ( "os/exec" "path/filepath" "strings" - "time" "go.uber.org/zap" @@ -213,15 +212,6 @@ func genIDSlice(a []uint64) []types.ID { return ids } -// excerpt replaces middle part with ellipsis and returns a double-quoted -// string safely escaped with Go syntax. -func excerpt(str string, pre, suf int) string { - if pre+suf > len(str) { - return fmt.Sprintf("%q", str) - } - return fmt.Sprintf("%q...%q", str[:pre], str[len(str)-suf:]) -} - type EntryFilter func(e raftpb.Entry) (bool, string) // The 9 pass functions below takes the raftpb.Entry and return if the entry should be printed and the type of entry, @@ -236,9 +226,8 @@ func passInternalRaftRequest(entry raftpb.Entry) (bool, string) { } func passUnknownNormal(entry raftpb.Entry) (bool, string) { - var rr1 etcdserverpb.Request var rr2 etcdserverpb.InternalRaftRequest - return (entry.Type == raftpb.EntryNormal) && (rr1.Unmarshal(entry.Data) != nil) && (rr2.Unmarshal(entry.Data) != nil), "UnknownNormal" + return (entry.Type == raftpb.EntryNormal) && (rr2.Unmarshal(entry.Data) != nil), "UnknownNormal" } func passIRRRange(entry raftpb.Entry) (bool, string) { @@ -282,9 +271,8 @@ func passIRRLeaseCheckpoint(entry raftpb.Entry) (bool, string) { } func passRequest(entry raftpb.Entry) (bool, string) { - var rr1 etcdserverpb.Request var rr2 etcdserverpb.InternalRaftRequest - return entry.Type == raftpb.EntryNormal && rr1.Unmarshal(entry.Data) == nil && rr2.Unmarshal(entry.Data) != nil, "Request" + return entry.Type == raftpb.EntryNormal && rr2.Unmarshal(entry.Data) != nil, "Request" } type EntryPrinter func(e raftpb.Entry) @@ -319,23 +307,6 @@ func printConfChange(entry raftpb.Entry) { } } -func printRequest(entry raftpb.Entry) { - var r etcdserverpb.Request - if err := r.Unmarshal(entry.Data); err == nil { - fmt.Printf("%4d\t%10d\tnorm", entry.Term, entry.Index) - switch r.Method { - case "": - fmt.Print("\tnoop") - case methodSync: - fmt.Printf("\tmethod=SYNC time=%q", time.Unix(0, r.Time).UTC()) - case methodQGet, methodDelete: - fmt.Printf("\tmethod=%s path=%s", r.Method, excerpt(r.Path, 64, 64)) - default: - fmt.Printf("\tmethod=%s path=%s val=%s", r.Method, excerpt(r.Path, 64, 64), excerpt(r.Val, 128, 0)) - } - } -} - // evaluateEntrytypeFlag evaluates entry-type flag and choose proper filter/filters to filter entries func evaluateEntrytypeFlag(entrytype string) []EntryFilter { var entrytypelist []string @@ -378,7 +349,6 @@ func listEntriesType(entrytype string, streamdecoder string, ents []raftpb.Entry entryFilters := evaluateEntrytypeFlag(entrytype) printerMap := map[string]EntryPrinter{ "InternalRaftRequest": printInternalRaftRequest, - "Request": printRequest, "ConfigChange": printConfChange, "UnknownNormal": printUnknownNormal, } diff --git a/tools/etcd-dump-logs/raw_test.go b/tools/etcd-dump-logs/raw_test.go index c30537769921..345a632d8824 100644 --- a/tools/etcd-dump-logs/raw_test.go +++ b/tools/etcd-dump-logs/raw_test.go @@ -34,11 +34,6 @@ Entry: Term:1 Index:1 Type:EntryConfChange Data:"\010\001\020\000\030\002\"\000" Entry: Term:2 Index:2 Type:EntryConfChange Data:"\010\002\020\001\030\002\"\000" Entry: Term:2 Index:3 Type:EntryConfChange Data:"\010\003\020\002\030\002\"\000" Entry: Term:2 Index:4 Type:EntryConfChange Data:"\010\004\020\003\030\003\"\000" -Entry: Term:3 Index:5 Data:"\010\000\022\000\032\006/path0\"\030{\"hey\":\"ho\",\"hi\":[\"yo\"]}(\0012\0008\000@\000H\tP\000X\001`+"`"+`\000h\000p\000x\001\200\001\000\210\001\000" -Entry: Term:3 Index:6 Data:"\010\001\022\004QGET\032\006/path1\"\023{\"0\":\"1\",\"2\":[\"3\"]}(\0002\0008\000@\000H\tP\000X\001`+"`"+`\000h\000p\000x\001\200\001\000\210\001\000" -Entry: Term:3 Index:7 Data:"\010\002\022\004SYNC\032\006/path2\"\023{\"0\":\"1\",\"2\":[\"3\"]}(\0002\0008\000@\000H\002P\000X\001`+"`"+`\000h\000p\000x\001\200\001\000\210\001\000" -Entry: Term:3 Index:8 Data:"\010\003\022\006DELETE\032\006/path3\"\030{\"hey\":\"ho\",\"hi\":[\"yo\"]}(\0002\0008\000@\001H\002P\000X\001`+"`"+`\000h\000p\000x\001\200\001\000\210\001\000" -Entry: Term:3 Index:9 Data:"\010\004\022\006RANDOM\032\246\001/path4/superlong/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path/path\"\030{\"hey\":\"ho\",\"hi\":[\"yo\"]}(\0002\0008\000@\000H\002P\000X\001`+"`"+`\000h\000p\000x\001\200\001\000\210\001\000" Entry: Term:4 Index:10 Data:"\010\005\032\025\n\0011\022\002hi\030\006 \001(\001X\240\234\001h\240\234\001" Entry: Term:5 Index:11 Data:"\010\006\"\020\n\004foo1\022\004bar1\030\0010\001" Entry: Term:6 Index:12 Data:"\010\007*\010\n\0010\022\0019\030\001" From 99c1962dbc955a1e4edfe0800e5afdb02870fdc9 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Tue, 10 Feb 2026 16:51:26 +0100 Subject: [PATCH 0794/1068] dependency: bump github.com/anishathalye/porcupine from v1.0.2 to v1.1.0 Signed-off-by: Chun-Hung Tseng --- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/go.mod b/tests/go.mod index 6b08f8d21f44..c6666c11911c 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -16,7 +16,7 @@ replace ( ) require ( - github.com/anishathalye/porcupine v1.0.2 + github.com/anishathalye/porcupine v1.1.0 github.com/antithesishq/antithesis-sdk-go v0.4.3 github.com/coreos/go-semver v0.3.1 github.com/golang-jwt/jwt/v5 v5.3.0 diff --git a/tests/go.sum b/tests/go.sum index a9d65d0ba49e..f49d3f1b4188 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -2,8 +2,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= -github.com/anishathalye/porcupine v1.0.2 h1:cXMWjnN95KYsbZVTi9VmXj0ePs1w3ZJ82zWoXDy6WPE= -github.com/anishathalye/porcupine v1.0.2/go.mod h1:WM0SsFjWNl2Y4BqHr/E/ll2yY1GY1jqn+W7Z/84Zoog= +github.com/anishathalye/porcupine v1.1.0 h1:jkMLqDejaWqvhvjxYKyqwQO3d1Jw+/08wHiIw0O4wcU= +github.com/anishathalye/porcupine v1.1.0/go.mod h1:WM0SsFjWNl2Y4BqHr/E/ll2yY1GY1jqn+W7Z/84Zoog= github.com/antithesishq/antithesis-sdk-go v0.4.3 h1:a2hGdDogClzHzFu20r1z0tzD6zwSWUipiaerAjZVP90= github.com/antithesishq/antithesis-sdk-go v0.4.3/go.mod h1:IUpT2DPAKh6i/YhSbt6Gl3v2yvUZjmKncl7U91fup7E= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= From b788976e263eee3aa2ba7b3751374d197e4a375f Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 20 Nov 2025 18:10:21 -0500 Subject: [PATCH 0795/1068] generate: scripts/genproto.sh Signed-off-by: Jordan Liggitt --- api/etcdserverpb/rpc.pb.go | 1927 ---------------- api/etcdserverpb/rpc_grpc.pb.go | 2015 +++++++++++++++++ .../v3election/v3electionpb/v3election.pb.go | 276 --- .../v3electionpb/v3election_grpc.pb.go | 294 +++ .../api/v3lock/v3lockpb/v3lock.pb.go | 138 -- .../api/v3lock/v3lockpb/v3lock_grpc.pb.go | 156 ++ 6 files changed, 2465 insertions(+), 2341 deletions(-) create mode 100644 api/etcdserverpb/rpc_grpc.pb.go create mode 100644 server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go create mode 100644 server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go diff --git a/api/etcdserverpb/rpc.pb.go b/api/etcdserverpb/rpc.pb.go index eb12da698dfe..bcf9aa7f2eb5 100644 --- a/api/etcdserverpb/rpc.pb.go +++ b/api/etcdserverpb/rpc.pb.go @@ -4,7 +4,6 @@ package etcdserverpb import ( - context "context" fmt "fmt" io "io" math "math" @@ -17,9 +16,6 @@ import ( mvccpb "go.etcd.io/etcd/api/v3/mvccpb" _ "go.etcd.io/etcd/api/v3/versionpb" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" ) // Reference imports to suppress errors if they are not otherwise used. @@ -6606,1929 +6602,6 @@ var fileDescriptor_77a6da22d6a3feb1 = []byte{ 0xcf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x82, 0x9b, 0xab, 0xde, 0x11, 0x44, 0x00, 0x00, } -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// KVClient is the client API for KV service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type KVClient interface { - // Range gets the keys in the range from the key-value store. - Range(ctx context.Context, in *RangeRequest, opts ...grpc.CallOption) (*RangeResponse, error) - // Put puts the given key into the key-value store. - // A put request increments the revision of the key-value store - // and generates one event in the event history. - Put(ctx context.Context, in *PutRequest, opts ...grpc.CallOption) (*PutResponse, error) - // DeleteRange deletes the given range from the key-value store. - // A delete request increments the revision of the key-value store - // and generates a delete event in the event history for every deleted key. - DeleteRange(ctx context.Context, in *DeleteRangeRequest, opts ...grpc.CallOption) (*DeleteRangeResponse, error) - // Txn processes multiple requests in a single transaction. - // A txn request increments the revision of the key-value store - // and generates events with the same revision for every completed request. - // It is not allowed to modify the same key several times within one txn. - Txn(ctx context.Context, in *TxnRequest, opts ...grpc.CallOption) (*TxnResponse, error) - // Compact compacts the event history in the etcd key-value store. The key-value - // store should be periodically compacted or the event history will continue to grow - // indefinitely. - Compact(ctx context.Context, in *CompactionRequest, opts ...grpc.CallOption) (*CompactionResponse, error) -} - -type kVClient struct { - cc *grpc.ClientConn -} - -func NewKVClient(cc *grpc.ClientConn) KVClient { - return &kVClient{cc} -} - -func (c *kVClient) Range(ctx context.Context, in *RangeRequest, opts ...grpc.CallOption) (*RangeResponse, error) { - out := new(RangeResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.KV/Range", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *kVClient) Put(ctx context.Context, in *PutRequest, opts ...grpc.CallOption) (*PutResponse, error) { - out := new(PutResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.KV/Put", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *kVClient) DeleteRange(ctx context.Context, in *DeleteRangeRequest, opts ...grpc.CallOption) (*DeleteRangeResponse, error) { - out := new(DeleteRangeResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.KV/DeleteRange", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *kVClient) Txn(ctx context.Context, in *TxnRequest, opts ...grpc.CallOption) (*TxnResponse, error) { - out := new(TxnResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.KV/Txn", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *kVClient) Compact(ctx context.Context, in *CompactionRequest, opts ...grpc.CallOption) (*CompactionResponse, error) { - out := new(CompactionResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.KV/Compact", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// KVServer is the server API for KV service. -type KVServer interface { - // Range gets the keys in the range from the key-value store. - Range(context.Context, *RangeRequest) (*RangeResponse, error) - // Put puts the given key into the key-value store. - // A put request increments the revision of the key-value store - // and generates one event in the event history. - Put(context.Context, *PutRequest) (*PutResponse, error) - // DeleteRange deletes the given range from the key-value store. - // A delete request increments the revision of the key-value store - // and generates a delete event in the event history for every deleted key. - DeleteRange(context.Context, *DeleteRangeRequest) (*DeleteRangeResponse, error) - // Txn processes multiple requests in a single transaction. - // A txn request increments the revision of the key-value store - // and generates events with the same revision for every completed request. - // It is not allowed to modify the same key several times within one txn. - Txn(context.Context, *TxnRequest) (*TxnResponse, error) - // Compact compacts the event history in the etcd key-value store. The key-value - // store should be periodically compacted or the event history will continue to grow - // indefinitely. - Compact(context.Context, *CompactionRequest) (*CompactionResponse, error) -} - -// UnimplementedKVServer can be embedded to have forward compatible implementations. -type UnimplementedKVServer struct { -} - -func (*UnimplementedKVServer) Range(ctx context.Context, req *RangeRequest) (*RangeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Range not implemented") -} -func (*UnimplementedKVServer) Put(ctx context.Context, req *PutRequest) (*PutResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Put not implemented") -} -func (*UnimplementedKVServer) DeleteRange(ctx context.Context, req *DeleteRangeRequest) (*DeleteRangeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteRange not implemented") -} -func (*UnimplementedKVServer) Txn(ctx context.Context, req *TxnRequest) (*TxnResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Txn not implemented") -} -func (*UnimplementedKVServer) Compact(ctx context.Context, req *CompactionRequest) (*CompactionResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Compact not implemented") -} - -func RegisterKVServer(s *grpc.Server, srv KVServer) { - s.RegisterService(&_KV_serviceDesc, srv) -} - -func _KV_Range_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RangeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(KVServer).Range(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.KV/Range", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(KVServer).Range(ctx, req.(*RangeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _KV_Put_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PutRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(KVServer).Put(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.KV/Put", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(KVServer).Put(ctx, req.(*PutRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _KV_DeleteRange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteRangeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(KVServer).DeleteRange(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.KV/DeleteRange", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(KVServer).DeleteRange(ctx, req.(*DeleteRangeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _KV_Txn_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TxnRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(KVServer).Txn(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.KV/Txn", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(KVServer).Txn(ctx, req.(*TxnRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _KV_Compact_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CompactionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(KVServer).Compact(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.KV/Compact", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(KVServer).Compact(ctx, req.(*CompactionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _KV_serviceDesc = grpc.ServiceDesc{ - ServiceName: "etcdserverpb.KV", - HandlerType: (*KVServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Range", - Handler: _KV_Range_Handler, - }, - { - MethodName: "Put", - Handler: _KV_Put_Handler, - }, - { - MethodName: "DeleteRange", - Handler: _KV_DeleteRange_Handler, - }, - { - MethodName: "Txn", - Handler: _KV_Txn_Handler, - }, - { - MethodName: "Compact", - Handler: _KV_Compact_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "rpc.proto", -} - -// WatchClient is the client API for Watch service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type WatchClient interface { - // Watch watches for events happening or that have happened. Both input and output - // are streams; the input stream is for creating and canceling watchers and the output - // stream sends events. One watch RPC can watch on multiple key ranges, streaming events - // for several watches at once. The entire event history can be watched starting from the - // last compaction revision. - Watch(ctx context.Context, opts ...grpc.CallOption) (Watch_WatchClient, error) -} - -type watchClient struct { - cc *grpc.ClientConn -} - -func NewWatchClient(cc *grpc.ClientConn) WatchClient { - return &watchClient{cc} -} - -func (c *watchClient) Watch(ctx context.Context, opts ...grpc.CallOption) (Watch_WatchClient, error) { - stream, err := c.cc.NewStream(ctx, &_Watch_serviceDesc.Streams[0], "/etcdserverpb.Watch/Watch", opts...) - if err != nil { - return nil, err - } - x := &watchWatchClient{stream} - return x, nil -} - -type Watch_WatchClient interface { - Send(*WatchRequest) error - Recv() (*WatchResponse, error) - grpc.ClientStream -} - -type watchWatchClient struct { - grpc.ClientStream -} - -func (x *watchWatchClient) Send(m *WatchRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *watchWatchClient) Recv() (*WatchResponse, error) { - m := new(WatchResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// WatchServer is the server API for Watch service. -type WatchServer interface { - // Watch watches for events happening or that have happened. Both input and output - // are streams; the input stream is for creating and canceling watchers and the output - // stream sends events. One watch RPC can watch on multiple key ranges, streaming events - // for several watches at once. The entire event history can be watched starting from the - // last compaction revision. - Watch(Watch_WatchServer) error -} - -// UnimplementedWatchServer can be embedded to have forward compatible implementations. -type UnimplementedWatchServer struct { -} - -func (*UnimplementedWatchServer) Watch(srv Watch_WatchServer) error { - return status.Errorf(codes.Unimplemented, "method Watch not implemented") -} - -func RegisterWatchServer(s *grpc.Server, srv WatchServer) { - s.RegisterService(&_Watch_serviceDesc, srv) -} - -func _Watch_Watch_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(WatchServer).Watch(&watchWatchServer{stream}) -} - -type Watch_WatchServer interface { - Send(*WatchResponse) error - Recv() (*WatchRequest, error) - grpc.ServerStream -} - -type watchWatchServer struct { - grpc.ServerStream -} - -func (x *watchWatchServer) Send(m *WatchResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *watchWatchServer) Recv() (*WatchRequest, error) { - m := new(WatchRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _Watch_serviceDesc = grpc.ServiceDesc{ - ServiceName: "etcdserverpb.Watch", - HandlerType: (*WatchServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{ - { - StreamName: "Watch", - Handler: _Watch_Watch_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "rpc.proto", -} - -// LeaseClient is the client API for Lease service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type LeaseClient interface { - // LeaseGrant creates a lease which expires if the server does not receive a keepAlive - // within a given time to live period. All keys attached to the lease will be expired and - // deleted if the lease expires. Each expired key generates a delete event in the event history. - LeaseGrant(ctx context.Context, in *LeaseGrantRequest, opts ...grpc.CallOption) (*LeaseGrantResponse, error) - // LeaseRevoke revokes a lease. All keys attached to the lease will expire and be deleted. - LeaseRevoke(ctx context.Context, in *LeaseRevokeRequest, opts ...grpc.CallOption) (*LeaseRevokeResponse, error) - // LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client - // to the server and streaming keep alive responses from the server to the client. - LeaseKeepAlive(ctx context.Context, opts ...grpc.CallOption) (Lease_LeaseKeepAliveClient, error) - // LeaseTimeToLive retrieves lease information. - LeaseTimeToLive(ctx context.Context, in *LeaseTimeToLiveRequest, opts ...grpc.CallOption) (*LeaseTimeToLiveResponse, error) - // LeaseLeases lists all existing leases. - LeaseLeases(ctx context.Context, in *LeaseLeasesRequest, opts ...grpc.CallOption) (*LeaseLeasesResponse, error) -} - -type leaseClient struct { - cc *grpc.ClientConn -} - -func NewLeaseClient(cc *grpc.ClientConn) LeaseClient { - return &leaseClient{cc} -} - -func (c *leaseClient) LeaseGrant(ctx context.Context, in *LeaseGrantRequest, opts ...grpc.CallOption) (*LeaseGrantResponse, error) { - out := new(LeaseGrantResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Lease/LeaseGrant", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *leaseClient) LeaseRevoke(ctx context.Context, in *LeaseRevokeRequest, opts ...grpc.CallOption) (*LeaseRevokeResponse, error) { - out := new(LeaseRevokeResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Lease/LeaseRevoke", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *leaseClient) LeaseKeepAlive(ctx context.Context, opts ...grpc.CallOption) (Lease_LeaseKeepAliveClient, error) { - stream, err := c.cc.NewStream(ctx, &_Lease_serviceDesc.Streams[0], "/etcdserverpb.Lease/LeaseKeepAlive", opts...) - if err != nil { - return nil, err - } - x := &leaseLeaseKeepAliveClient{stream} - return x, nil -} - -type Lease_LeaseKeepAliveClient interface { - Send(*LeaseKeepAliveRequest) error - Recv() (*LeaseKeepAliveResponse, error) - grpc.ClientStream -} - -type leaseLeaseKeepAliveClient struct { - grpc.ClientStream -} - -func (x *leaseLeaseKeepAliveClient) Send(m *LeaseKeepAliveRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *leaseLeaseKeepAliveClient) Recv() (*LeaseKeepAliveResponse, error) { - m := new(LeaseKeepAliveResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *leaseClient) LeaseTimeToLive(ctx context.Context, in *LeaseTimeToLiveRequest, opts ...grpc.CallOption) (*LeaseTimeToLiveResponse, error) { - out := new(LeaseTimeToLiveResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Lease/LeaseTimeToLive", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *leaseClient) LeaseLeases(ctx context.Context, in *LeaseLeasesRequest, opts ...grpc.CallOption) (*LeaseLeasesResponse, error) { - out := new(LeaseLeasesResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Lease/LeaseLeases", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// LeaseServer is the server API for Lease service. -type LeaseServer interface { - // LeaseGrant creates a lease which expires if the server does not receive a keepAlive - // within a given time to live period. All keys attached to the lease will be expired and - // deleted if the lease expires. Each expired key generates a delete event in the event history. - LeaseGrant(context.Context, *LeaseGrantRequest) (*LeaseGrantResponse, error) - // LeaseRevoke revokes a lease. All keys attached to the lease will expire and be deleted. - LeaseRevoke(context.Context, *LeaseRevokeRequest) (*LeaseRevokeResponse, error) - // LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client - // to the server and streaming keep alive responses from the server to the client. - LeaseKeepAlive(Lease_LeaseKeepAliveServer) error - // LeaseTimeToLive retrieves lease information. - LeaseTimeToLive(context.Context, *LeaseTimeToLiveRequest) (*LeaseTimeToLiveResponse, error) - // LeaseLeases lists all existing leases. - LeaseLeases(context.Context, *LeaseLeasesRequest) (*LeaseLeasesResponse, error) -} - -// UnimplementedLeaseServer can be embedded to have forward compatible implementations. -type UnimplementedLeaseServer struct { -} - -func (*UnimplementedLeaseServer) LeaseGrant(ctx context.Context, req *LeaseGrantRequest) (*LeaseGrantResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method LeaseGrant not implemented") -} -func (*UnimplementedLeaseServer) LeaseRevoke(ctx context.Context, req *LeaseRevokeRequest) (*LeaseRevokeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method LeaseRevoke not implemented") -} -func (*UnimplementedLeaseServer) LeaseKeepAlive(srv Lease_LeaseKeepAliveServer) error { - return status.Errorf(codes.Unimplemented, "method LeaseKeepAlive not implemented") -} -func (*UnimplementedLeaseServer) LeaseTimeToLive(ctx context.Context, req *LeaseTimeToLiveRequest) (*LeaseTimeToLiveResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method LeaseTimeToLive not implemented") -} -func (*UnimplementedLeaseServer) LeaseLeases(ctx context.Context, req *LeaseLeasesRequest) (*LeaseLeasesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method LeaseLeases not implemented") -} - -func RegisterLeaseServer(s *grpc.Server, srv LeaseServer) { - s.RegisterService(&_Lease_serviceDesc, srv) -} - -func _Lease_LeaseGrant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(LeaseGrantRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LeaseServer).LeaseGrant(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Lease/LeaseGrant", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LeaseServer).LeaseGrant(ctx, req.(*LeaseGrantRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Lease_LeaseRevoke_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(LeaseRevokeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LeaseServer).LeaseRevoke(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Lease/LeaseRevoke", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LeaseServer).LeaseRevoke(ctx, req.(*LeaseRevokeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Lease_LeaseKeepAlive_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(LeaseServer).LeaseKeepAlive(&leaseLeaseKeepAliveServer{stream}) -} - -type Lease_LeaseKeepAliveServer interface { - Send(*LeaseKeepAliveResponse) error - Recv() (*LeaseKeepAliveRequest, error) - grpc.ServerStream -} - -type leaseLeaseKeepAliveServer struct { - grpc.ServerStream -} - -func (x *leaseLeaseKeepAliveServer) Send(m *LeaseKeepAliveResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *leaseLeaseKeepAliveServer) Recv() (*LeaseKeepAliveRequest, error) { - m := new(LeaseKeepAliveRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _Lease_LeaseTimeToLive_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(LeaseTimeToLiveRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LeaseServer).LeaseTimeToLive(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Lease/LeaseTimeToLive", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LeaseServer).LeaseTimeToLive(ctx, req.(*LeaseTimeToLiveRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Lease_LeaseLeases_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(LeaseLeasesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LeaseServer).LeaseLeases(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Lease/LeaseLeases", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LeaseServer).LeaseLeases(ctx, req.(*LeaseLeasesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Lease_serviceDesc = grpc.ServiceDesc{ - ServiceName: "etcdserverpb.Lease", - HandlerType: (*LeaseServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "LeaseGrant", - Handler: _Lease_LeaseGrant_Handler, - }, - { - MethodName: "LeaseRevoke", - Handler: _Lease_LeaseRevoke_Handler, - }, - { - MethodName: "LeaseTimeToLive", - Handler: _Lease_LeaseTimeToLive_Handler, - }, - { - MethodName: "LeaseLeases", - Handler: _Lease_LeaseLeases_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "LeaseKeepAlive", - Handler: _Lease_LeaseKeepAlive_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "rpc.proto", -} - -// ClusterClient is the client API for Cluster service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ClusterClient interface { - // MemberAdd adds a member into the cluster. - MemberAdd(ctx context.Context, in *MemberAddRequest, opts ...grpc.CallOption) (*MemberAddResponse, error) - // MemberRemove removes an existing member from the cluster. - MemberRemove(ctx context.Context, in *MemberRemoveRequest, opts ...grpc.CallOption) (*MemberRemoveResponse, error) - // MemberUpdate updates the member configuration. - MemberUpdate(ctx context.Context, in *MemberUpdateRequest, opts ...grpc.CallOption) (*MemberUpdateResponse, error) - // MemberList lists all the members in the cluster. - MemberList(ctx context.Context, in *MemberListRequest, opts ...grpc.CallOption) (*MemberListResponse, error) - // MemberPromote promotes a member from raft learner (non-voting) to raft voting member. - MemberPromote(ctx context.Context, in *MemberPromoteRequest, opts ...grpc.CallOption) (*MemberPromoteResponse, error) -} - -type clusterClient struct { - cc *grpc.ClientConn -} - -func NewClusterClient(cc *grpc.ClientConn) ClusterClient { - return &clusterClient{cc} -} - -func (c *clusterClient) MemberAdd(ctx context.Context, in *MemberAddRequest, opts ...grpc.CallOption) (*MemberAddResponse, error) { - out := new(MemberAddResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberAdd", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterClient) MemberRemove(ctx context.Context, in *MemberRemoveRequest, opts ...grpc.CallOption) (*MemberRemoveResponse, error) { - out := new(MemberRemoveResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberRemove", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterClient) MemberUpdate(ctx context.Context, in *MemberUpdateRequest, opts ...grpc.CallOption) (*MemberUpdateResponse, error) { - out := new(MemberUpdateResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberUpdate", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterClient) MemberList(ctx context.Context, in *MemberListRequest, opts ...grpc.CallOption) (*MemberListResponse, error) { - out := new(MemberListResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberList", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterClient) MemberPromote(ctx context.Context, in *MemberPromoteRequest, opts ...grpc.CallOption) (*MemberPromoteResponse, error) { - out := new(MemberPromoteResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberPromote", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ClusterServer is the server API for Cluster service. -type ClusterServer interface { - // MemberAdd adds a member into the cluster. - MemberAdd(context.Context, *MemberAddRequest) (*MemberAddResponse, error) - // MemberRemove removes an existing member from the cluster. - MemberRemove(context.Context, *MemberRemoveRequest) (*MemberRemoveResponse, error) - // MemberUpdate updates the member configuration. - MemberUpdate(context.Context, *MemberUpdateRequest) (*MemberUpdateResponse, error) - // MemberList lists all the members in the cluster. - MemberList(context.Context, *MemberListRequest) (*MemberListResponse, error) - // MemberPromote promotes a member from raft learner (non-voting) to raft voting member. - MemberPromote(context.Context, *MemberPromoteRequest) (*MemberPromoteResponse, error) -} - -// UnimplementedClusterServer can be embedded to have forward compatible implementations. -type UnimplementedClusterServer struct { -} - -func (*UnimplementedClusterServer) MemberAdd(ctx context.Context, req *MemberAddRequest) (*MemberAddResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MemberAdd not implemented") -} -func (*UnimplementedClusterServer) MemberRemove(ctx context.Context, req *MemberRemoveRequest) (*MemberRemoveResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MemberRemove not implemented") -} -func (*UnimplementedClusterServer) MemberUpdate(ctx context.Context, req *MemberUpdateRequest) (*MemberUpdateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MemberUpdate not implemented") -} -func (*UnimplementedClusterServer) MemberList(ctx context.Context, req *MemberListRequest) (*MemberListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MemberList not implemented") -} -func (*UnimplementedClusterServer) MemberPromote(ctx context.Context, req *MemberPromoteRequest) (*MemberPromoteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MemberPromote not implemented") -} - -func RegisterClusterServer(s *grpc.Server, srv ClusterServer) { - s.RegisterService(&_Cluster_serviceDesc, srv) -} - -func _Cluster_MemberAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MemberAddRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterServer).MemberAdd(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Cluster/MemberAdd", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterServer).MemberAdd(ctx, req.(*MemberAddRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Cluster_MemberRemove_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MemberRemoveRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterServer).MemberRemove(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Cluster/MemberRemove", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterServer).MemberRemove(ctx, req.(*MemberRemoveRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Cluster_MemberUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MemberUpdateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterServer).MemberUpdate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Cluster/MemberUpdate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterServer).MemberUpdate(ctx, req.(*MemberUpdateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Cluster_MemberList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MemberListRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterServer).MemberList(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Cluster/MemberList", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterServer).MemberList(ctx, req.(*MemberListRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Cluster_MemberPromote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MemberPromoteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterServer).MemberPromote(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Cluster/MemberPromote", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterServer).MemberPromote(ctx, req.(*MemberPromoteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Cluster_serviceDesc = grpc.ServiceDesc{ - ServiceName: "etcdserverpb.Cluster", - HandlerType: (*ClusterServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "MemberAdd", - Handler: _Cluster_MemberAdd_Handler, - }, - { - MethodName: "MemberRemove", - Handler: _Cluster_MemberRemove_Handler, - }, - { - MethodName: "MemberUpdate", - Handler: _Cluster_MemberUpdate_Handler, - }, - { - MethodName: "MemberList", - Handler: _Cluster_MemberList_Handler, - }, - { - MethodName: "MemberPromote", - Handler: _Cluster_MemberPromote_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "rpc.proto", -} - -// MaintenanceClient is the client API for Maintenance service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type MaintenanceClient interface { - // Alarm activates, deactivates, and queries alarms regarding cluster health. - Alarm(ctx context.Context, in *AlarmRequest, opts ...grpc.CallOption) (*AlarmResponse, error) - // Status gets the status of the member. - Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) - // Defragment defragments a member's backend database to recover storage space. - Defragment(ctx context.Context, in *DefragmentRequest, opts ...grpc.CallOption) (*DefragmentResponse, error) - // Hash computes the hash of whole backend keyspace, - // including key, lease, and other buckets in storage. - // This is designed for testing ONLY! - // Do not rely on this in production with ongoing transactions, - // since Hash operation does not hold MVCC locks. - // Use "HashKV" API instead for "key" bucket consistency checks. - Hash(ctx context.Context, in *HashRequest, opts ...grpc.CallOption) (*HashResponse, error) - // HashKV computes the hash of all MVCC keys up to a given revision. - // It only iterates "key" bucket in backend storage. - HashKV(ctx context.Context, in *HashKVRequest, opts ...grpc.CallOption) (*HashKVResponse, error) - // Snapshot sends a snapshot of the entire backend from a member over a stream to a client. - Snapshot(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (Maintenance_SnapshotClient, error) - // MoveLeader requests current leader node to transfer its leadership to transferee. - MoveLeader(ctx context.Context, in *MoveLeaderRequest, opts ...grpc.CallOption) (*MoveLeaderResponse, error) - // Downgrade requests downgrades, verifies feasibility or cancels downgrade - // on the cluster version. - // Supported since etcd 3.5. - Downgrade(ctx context.Context, in *DowngradeRequest, opts ...grpc.CallOption) (*DowngradeResponse, error) -} - -type maintenanceClient struct { - cc *grpc.ClientConn -} - -func NewMaintenanceClient(cc *grpc.ClientConn) MaintenanceClient { - return &maintenanceClient{cc} -} - -func (c *maintenanceClient) Alarm(ctx context.Context, in *AlarmRequest, opts ...grpc.CallOption) (*AlarmResponse, error) { - out := new(AlarmResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Alarm", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *maintenanceClient) Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) { - out := new(StatusResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Status", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *maintenanceClient) Defragment(ctx context.Context, in *DefragmentRequest, opts ...grpc.CallOption) (*DefragmentResponse, error) { - out := new(DefragmentResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Defragment", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *maintenanceClient) Hash(ctx context.Context, in *HashRequest, opts ...grpc.CallOption) (*HashResponse, error) { - out := new(HashResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Hash", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *maintenanceClient) HashKV(ctx context.Context, in *HashKVRequest, opts ...grpc.CallOption) (*HashKVResponse, error) { - out := new(HashKVResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/HashKV", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *maintenanceClient) Snapshot(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (Maintenance_SnapshotClient, error) { - stream, err := c.cc.NewStream(ctx, &_Maintenance_serviceDesc.Streams[0], "/etcdserverpb.Maintenance/Snapshot", opts...) - if err != nil { - return nil, err - } - x := &maintenanceSnapshotClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Maintenance_SnapshotClient interface { - Recv() (*SnapshotResponse, error) - grpc.ClientStream -} - -type maintenanceSnapshotClient struct { - grpc.ClientStream -} - -func (x *maintenanceSnapshotClient) Recv() (*SnapshotResponse, error) { - m := new(SnapshotResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *maintenanceClient) MoveLeader(ctx context.Context, in *MoveLeaderRequest, opts ...grpc.CallOption) (*MoveLeaderResponse, error) { - out := new(MoveLeaderResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/MoveLeader", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *maintenanceClient) Downgrade(ctx context.Context, in *DowngradeRequest, opts ...grpc.CallOption) (*DowngradeResponse, error) { - out := new(DowngradeResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Downgrade", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// MaintenanceServer is the server API for Maintenance service. -type MaintenanceServer interface { - // Alarm activates, deactivates, and queries alarms regarding cluster health. - Alarm(context.Context, *AlarmRequest) (*AlarmResponse, error) - // Status gets the status of the member. - Status(context.Context, *StatusRequest) (*StatusResponse, error) - // Defragment defragments a member's backend database to recover storage space. - Defragment(context.Context, *DefragmentRequest) (*DefragmentResponse, error) - // Hash computes the hash of whole backend keyspace, - // including key, lease, and other buckets in storage. - // This is designed for testing ONLY! - // Do not rely on this in production with ongoing transactions, - // since Hash operation does not hold MVCC locks. - // Use "HashKV" API instead for "key" bucket consistency checks. - Hash(context.Context, *HashRequest) (*HashResponse, error) - // HashKV computes the hash of all MVCC keys up to a given revision. - // It only iterates "key" bucket in backend storage. - HashKV(context.Context, *HashKVRequest) (*HashKVResponse, error) - // Snapshot sends a snapshot of the entire backend from a member over a stream to a client. - Snapshot(*SnapshotRequest, Maintenance_SnapshotServer) error - // MoveLeader requests current leader node to transfer its leadership to transferee. - MoveLeader(context.Context, *MoveLeaderRequest) (*MoveLeaderResponse, error) - // Downgrade requests downgrades, verifies feasibility or cancels downgrade - // on the cluster version. - // Supported since etcd 3.5. - Downgrade(context.Context, *DowngradeRequest) (*DowngradeResponse, error) -} - -// UnimplementedMaintenanceServer can be embedded to have forward compatible implementations. -type UnimplementedMaintenanceServer struct { -} - -func (*UnimplementedMaintenanceServer) Alarm(ctx context.Context, req *AlarmRequest) (*AlarmResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Alarm not implemented") -} -func (*UnimplementedMaintenanceServer) Status(ctx context.Context, req *StatusRequest) (*StatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Status not implemented") -} -func (*UnimplementedMaintenanceServer) Defragment(ctx context.Context, req *DefragmentRequest) (*DefragmentResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Defragment not implemented") -} -func (*UnimplementedMaintenanceServer) Hash(ctx context.Context, req *HashRequest) (*HashResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Hash not implemented") -} -func (*UnimplementedMaintenanceServer) HashKV(ctx context.Context, req *HashKVRequest) (*HashKVResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method HashKV not implemented") -} -func (*UnimplementedMaintenanceServer) Snapshot(req *SnapshotRequest, srv Maintenance_SnapshotServer) error { - return status.Errorf(codes.Unimplemented, "method Snapshot not implemented") -} -func (*UnimplementedMaintenanceServer) MoveLeader(ctx context.Context, req *MoveLeaderRequest) (*MoveLeaderResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MoveLeader not implemented") -} -func (*UnimplementedMaintenanceServer) Downgrade(ctx context.Context, req *DowngradeRequest) (*DowngradeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Downgrade not implemented") -} - -func RegisterMaintenanceServer(s *grpc.Server, srv MaintenanceServer) { - s.RegisterService(&_Maintenance_serviceDesc, srv) -} - -func _Maintenance_Alarm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AlarmRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MaintenanceServer).Alarm(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Maintenance/Alarm", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MaintenanceServer).Alarm(ctx, req.(*AlarmRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Maintenance_Status_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(StatusRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MaintenanceServer).Status(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Maintenance/Status", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MaintenanceServer).Status(ctx, req.(*StatusRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Maintenance_Defragment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DefragmentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MaintenanceServer).Defragment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Maintenance/Defragment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MaintenanceServer).Defragment(ctx, req.(*DefragmentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Maintenance_Hash_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(HashRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MaintenanceServer).Hash(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Maintenance/Hash", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MaintenanceServer).Hash(ctx, req.(*HashRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Maintenance_HashKV_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(HashKVRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MaintenanceServer).HashKV(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Maintenance/HashKV", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MaintenanceServer).HashKV(ctx, req.(*HashKVRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Maintenance_Snapshot_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(SnapshotRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(MaintenanceServer).Snapshot(m, &maintenanceSnapshotServer{stream}) -} - -type Maintenance_SnapshotServer interface { - Send(*SnapshotResponse) error - grpc.ServerStream -} - -type maintenanceSnapshotServer struct { - grpc.ServerStream -} - -func (x *maintenanceSnapshotServer) Send(m *SnapshotResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _Maintenance_MoveLeader_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MoveLeaderRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MaintenanceServer).MoveLeader(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Maintenance/MoveLeader", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MaintenanceServer).MoveLeader(ctx, req.(*MoveLeaderRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Maintenance_Downgrade_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DowngradeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MaintenanceServer).Downgrade(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Maintenance/Downgrade", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MaintenanceServer).Downgrade(ctx, req.(*DowngradeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Maintenance_serviceDesc = grpc.ServiceDesc{ - ServiceName: "etcdserverpb.Maintenance", - HandlerType: (*MaintenanceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Alarm", - Handler: _Maintenance_Alarm_Handler, - }, - { - MethodName: "Status", - Handler: _Maintenance_Status_Handler, - }, - { - MethodName: "Defragment", - Handler: _Maintenance_Defragment_Handler, - }, - { - MethodName: "Hash", - Handler: _Maintenance_Hash_Handler, - }, - { - MethodName: "HashKV", - Handler: _Maintenance_HashKV_Handler, - }, - { - MethodName: "MoveLeader", - Handler: _Maintenance_MoveLeader_Handler, - }, - { - MethodName: "Downgrade", - Handler: _Maintenance_Downgrade_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "Snapshot", - Handler: _Maintenance_Snapshot_Handler, - ServerStreams: true, - }, - }, - Metadata: "rpc.proto", -} - -// AuthClient is the client API for Auth service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type AuthClient interface { - // AuthEnable enables authentication. - AuthEnable(ctx context.Context, in *AuthEnableRequest, opts ...grpc.CallOption) (*AuthEnableResponse, error) - // AuthDisable disables authentication. - AuthDisable(ctx context.Context, in *AuthDisableRequest, opts ...grpc.CallOption) (*AuthDisableResponse, error) - // AuthStatus displays authentication status. - AuthStatus(ctx context.Context, in *AuthStatusRequest, opts ...grpc.CallOption) (*AuthStatusResponse, error) - // Authenticate processes an authenticate request. - Authenticate(ctx context.Context, in *AuthenticateRequest, opts ...grpc.CallOption) (*AuthenticateResponse, error) - // UserAdd adds a new user. User name cannot be empty. - UserAdd(ctx context.Context, in *AuthUserAddRequest, opts ...grpc.CallOption) (*AuthUserAddResponse, error) - // UserGet gets detailed user information. - UserGet(ctx context.Context, in *AuthUserGetRequest, opts ...grpc.CallOption) (*AuthUserGetResponse, error) - // UserList gets a list of all users. - UserList(ctx context.Context, in *AuthUserListRequest, opts ...grpc.CallOption) (*AuthUserListResponse, error) - // UserDelete deletes a specified user. - UserDelete(ctx context.Context, in *AuthUserDeleteRequest, opts ...grpc.CallOption) (*AuthUserDeleteResponse, error) - // UserChangePassword changes the password of a specified user. - UserChangePassword(ctx context.Context, in *AuthUserChangePasswordRequest, opts ...grpc.CallOption) (*AuthUserChangePasswordResponse, error) - // UserGrantRole grants a role to a specified user. - UserGrantRole(ctx context.Context, in *AuthUserGrantRoleRequest, opts ...grpc.CallOption) (*AuthUserGrantRoleResponse, error) - // UserRevokeRole revokes a role of specified user. - UserRevokeRole(ctx context.Context, in *AuthUserRevokeRoleRequest, opts ...grpc.CallOption) (*AuthUserRevokeRoleResponse, error) - // RoleAdd adds a new role. Role name cannot be empty. - RoleAdd(ctx context.Context, in *AuthRoleAddRequest, opts ...grpc.CallOption) (*AuthRoleAddResponse, error) - // RoleGet gets detailed role information. - RoleGet(ctx context.Context, in *AuthRoleGetRequest, opts ...grpc.CallOption) (*AuthRoleGetResponse, error) - // RoleList gets lists of all roles. - RoleList(ctx context.Context, in *AuthRoleListRequest, opts ...grpc.CallOption) (*AuthRoleListResponse, error) - // RoleDelete deletes a specified role. - RoleDelete(ctx context.Context, in *AuthRoleDeleteRequest, opts ...grpc.CallOption) (*AuthRoleDeleteResponse, error) - // RoleGrantPermission grants a permission of a specified key or range to a specified role. - RoleGrantPermission(ctx context.Context, in *AuthRoleGrantPermissionRequest, opts ...grpc.CallOption) (*AuthRoleGrantPermissionResponse, error) - // RoleRevokePermission revokes a key or range permission of a specified role. - RoleRevokePermission(ctx context.Context, in *AuthRoleRevokePermissionRequest, opts ...grpc.CallOption) (*AuthRoleRevokePermissionResponse, error) -} - -type authClient struct { - cc *grpc.ClientConn -} - -func NewAuthClient(cc *grpc.ClientConn) AuthClient { - return &authClient{cc} -} - -func (c *authClient) AuthEnable(ctx context.Context, in *AuthEnableRequest, opts ...grpc.CallOption) (*AuthEnableResponse, error) { - out := new(AuthEnableResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/AuthEnable", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) AuthDisable(ctx context.Context, in *AuthDisableRequest, opts ...grpc.CallOption) (*AuthDisableResponse, error) { - out := new(AuthDisableResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/AuthDisable", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) AuthStatus(ctx context.Context, in *AuthStatusRequest, opts ...grpc.CallOption) (*AuthStatusResponse, error) { - out := new(AuthStatusResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/AuthStatus", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) Authenticate(ctx context.Context, in *AuthenticateRequest, opts ...grpc.CallOption) (*AuthenticateResponse, error) { - out := new(AuthenticateResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/Authenticate", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) UserAdd(ctx context.Context, in *AuthUserAddRequest, opts ...grpc.CallOption) (*AuthUserAddResponse, error) { - out := new(AuthUserAddResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserAdd", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) UserGet(ctx context.Context, in *AuthUserGetRequest, opts ...grpc.CallOption) (*AuthUserGetResponse, error) { - out := new(AuthUserGetResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserGet", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) UserList(ctx context.Context, in *AuthUserListRequest, opts ...grpc.CallOption) (*AuthUserListResponse, error) { - out := new(AuthUserListResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserList", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) UserDelete(ctx context.Context, in *AuthUserDeleteRequest, opts ...grpc.CallOption) (*AuthUserDeleteResponse, error) { - out := new(AuthUserDeleteResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserDelete", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) UserChangePassword(ctx context.Context, in *AuthUserChangePasswordRequest, opts ...grpc.CallOption) (*AuthUserChangePasswordResponse, error) { - out := new(AuthUserChangePasswordResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserChangePassword", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) UserGrantRole(ctx context.Context, in *AuthUserGrantRoleRequest, opts ...grpc.CallOption) (*AuthUserGrantRoleResponse, error) { - out := new(AuthUserGrantRoleResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserGrantRole", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) UserRevokeRole(ctx context.Context, in *AuthUserRevokeRoleRequest, opts ...grpc.CallOption) (*AuthUserRevokeRoleResponse, error) { - out := new(AuthUserRevokeRoleResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserRevokeRole", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) RoleAdd(ctx context.Context, in *AuthRoleAddRequest, opts ...grpc.CallOption) (*AuthRoleAddResponse, error) { - out := new(AuthRoleAddResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleAdd", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) RoleGet(ctx context.Context, in *AuthRoleGetRequest, opts ...grpc.CallOption) (*AuthRoleGetResponse, error) { - out := new(AuthRoleGetResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleGet", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) RoleList(ctx context.Context, in *AuthRoleListRequest, opts ...grpc.CallOption) (*AuthRoleListResponse, error) { - out := new(AuthRoleListResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleList", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) RoleDelete(ctx context.Context, in *AuthRoleDeleteRequest, opts ...grpc.CallOption) (*AuthRoleDeleteResponse, error) { - out := new(AuthRoleDeleteResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleDelete", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) RoleGrantPermission(ctx context.Context, in *AuthRoleGrantPermissionRequest, opts ...grpc.CallOption) (*AuthRoleGrantPermissionResponse, error) { - out := new(AuthRoleGrantPermissionResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleGrantPermission", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authClient) RoleRevokePermission(ctx context.Context, in *AuthRoleRevokePermissionRequest, opts ...grpc.CallOption) (*AuthRoleRevokePermissionResponse, error) { - out := new(AuthRoleRevokePermissionResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleRevokePermission", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// AuthServer is the server API for Auth service. -type AuthServer interface { - // AuthEnable enables authentication. - AuthEnable(context.Context, *AuthEnableRequest) (*AuthEnableResponse, error) - // AuthDisable disables authentication. - AuthDisable(context.Context, *AuthDisableRequest) (*AuthDisableResponse, error) - // AuthStatus displays authentication status. - AuthStatus(context.Context, *AuthStatusRequest) (*AuthStatusResponse, error) - // Authenticate processes an authenticate request. - Authenticate(context.Context, *AuthenticateRequest) (*AuthenticateResponse, error) - // UserAdd adds a new user. User name cannot be empty. - UserAdd(context.Context, *AuthUserAddRequest) (*AuthUserAddResponse, error) - // UserGet gets detailed user information. - UserGet(context.Context, *AuthUserGetRequest) (*AuthUserGetResponse, error) - // UserList gets a list of all users. - UserList(context.Context, *AuthUserListRequest) (*AuthUserListResponse, error) - // UserDelete deletes a specified user. - UserDelete(context.Context, *AuthUserDeleteRequest) (*AuthUserDeleteResponse, error) - // UserChangePassword changes the password of a specified user. - UserChangePassword(context.Context, *AuthUserChangePasswordRequest) (*AuthUserChangePasswordResponse, error) - // UserGrantRole grants a role to a specified user. - UserGrantRole(context.Context, *AuthUserGrantRoleRequest) (*AuthUserGrantRoleResponse, error) - // UserRevokeRole revokes a role of specified user. - UserRevokeRole(context.Context, *AuthUserRevokeRoleRequest) (*AuthUserRevokeRoleResponse, error) - // RoleAdd adds a new role. Role name cannot be empty. - RoleAdd(context.Context, *AuthRoleAddRequest) (*AuthRoleAddResponse, error) - // RoleGet gets detailed role information. - RoleGet(context.Context, *AuthRoleGetRequest) (*AuthRoleGetResponse, error) - // RoleList gets lists of all roles. - RoleList(context.Context, *AuthRoleListRequest) (*AuthRoleListResponse, error) - // RoleDelete deletes a specified role. - RoleDelete(context.Context, *AuthRoleDeleteRequest) (*AuthRoleDeleteResponse, error) - // RoleGrantPermission grants a permission of a specified key or range to a specified role. - RoleGrantPermission(context.Context, *AuthRoleGrantPermissionRequest) (*AuthRoleGrantPermissionResponse, error) - // RoleRevokePermission revokes a key or range permission of a specified role. - RoleRevokePermission(context.Context, *AuthRoleRevokePermissionRequest) (*AuthRoleRevokePermissionResponse, error) -} - -// UnimplementedAuthServer can be embedded to have forward compatible implementations. -type UnimplementedAuthServer struct { -} - -func (*UnimplementedAuthServer) AuthEnable(ctx context.Context, req *AuthEnableRequest) (*AuthEnableResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AuthEnable not implemented") -} -func (*UnimplementedAuthServer) AuthDisable(ctx context.Context, req *AuthDisableRequest) (*AuthDisableResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AuthDisable not implemented") -} -func (*UnimplementedAuthServer) AuthStatus(ctx context.Context, req *AuthStatusRequest) (*AuthStatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AuthStatus not implemented") -} -func (*UnimplementedAuthServer) Authenticate(ctx context.Context, req *AuthenticateRequest) (*AuthenticateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Authenticate not implemented") -} -func (*UnimplementedAuthServer) UserAdd(ctx context.Context, req *AuthUserAddRequest) (*AuthUserAddResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserAdd not implemented") -} -func (*UnimplementedAuthServer) UserGet(ctx context.Context, req *AuthUserGetRequest) (*AuthUserGetResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserGet not implemented") -} -func (*UnimplementedAuthServer) UserList(ctx context.Context, req *AuthUserListRequest) (*AuthUserListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserList not implemented") -} -func (*UnimplementedAuthServer) UserDelete(ctx context.Context, req *AuthUserDeleteRequest) (*AuthUserDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserDelete not implemented") -} -func (*UnimplementedAuthServer) UserChangePassword(ctx context.Context, req *AuthUserChangePasswordRequest) (*AuthUserChangePasswordResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserChangePassword not implemented") -} -func (*UnimplementedAuthServer) UserGrantRole(ctx context.Context, req *AuthUserGrantRoleRequest) (*AuthUserGrantRoleResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserGrantRole not implemented") -} -func (*UnimplementedAuthServer) UserRevokeRole(ctx context.Context, req *AuthUserRevokeRoleRequest) (*AuthUserRevokeRoleResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserRevokeRole not implemented") -} -func (*UnimplementedAuthServer) RoleAdd(ctx context.Context, req *AuthRoleAddRequest) (*AuthRoleAddResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RoleAdd not implemented") -} -func (*UnimplementedAuthServer) RoleGet(ctx context.Context, req *AuthRoleGetRequest) (*AuthRoleGetResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RoleGet not implemented") -} -func (*UnimplementedAuthServer) RoleList(ctx context.Context, req *AuthRoleListRequest) (*AuthRoleListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RoleList not implemented") -} -func (*UnimplementedAuthServer) RoleDelete(ctx context.Context, req *AuthRoleDeleteRequest) (*AuthRoleDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RoleDelete not implemented") -} -func (*UnimplementedAuthServer) RoleGrantPermission(ctx context.Context, req *AuthRoleGrantPermissionRequest) (*AuthRoleGrantPermissionResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RoleGrantPermission not implemented") -} -func (*UnimplementedAuthServer) RoleRevokePermission(ctx context.Context, req *AuthRoleRevokePermissionRequest) (*AuthRoleRevokePermissionResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RoleRevokePermission not implemented") -} - -func RegisterAuthServer(s *grpc.Server, srv AuthServer) { - s.RegisterService(&_Auth_serviceDesc, srv) -} - -func _Auth_AuthEnable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthEnableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).AuthEnable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/AuthEnable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).AuthEnable(ctx, req.(*AuthEnableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_AuthDisable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthDisableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).AuthDisable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/AuthDisable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).AuthDisable(ctx, req.(*AuthDisableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_AuthStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthStatusRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).AuthStatus(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/AuthStatus", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).AuthStatus(ctx, req.(*AuthStatusRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_Authenticate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthenticateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).Authenticate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/Authenticate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).Authenticate(ctx, req.(*AuthenticateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_UserAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthUserAddRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).UserAdd(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/UserAdd", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).UserAdd(ctx, req.(*AuthUserAddRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_UserGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthUserGetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).UserGet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/UserGet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).UserGet(ctx, req.(*AuthUserGetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_UserList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthUserListRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).UserList(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/UserList", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).UserList(ctx, req.(*AuthUserListRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_UserDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthUserDeleteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).UserDelete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/UserDelete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).UserDelete(ctx, req.(*AuthUserDeleteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_UserChangePassword_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthUserChangePasswordRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).UserChangePassword(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/UserChangePassword", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).UserChangePassword(ctx, req.(*AuthUserChangePasswordRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_UserGrantRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthUserGrantRoleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).UserGrantRole(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/UserGrantRole", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).UserGrantRole(ctx, req.(*AuthUserGrantRoleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_UserRevokeRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthUserRevokeRoleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).UserRevokeRole(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/UserRevokeRole", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).UserRevokeRole(ctx, req.(*AuthUserRevokeRoleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_RoleAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthRoleAddRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).RoleAdd(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/RoleAdd", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).RoleAdd(ctx, req.(*AuthRoleAddRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_RoleGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthRoleGetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).RoleGet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/RoleGet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).RoleGet(ctx, req.(*AuthRoleGetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_RoleList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthRoleListRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).RoleList(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/RoleList", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).RoleList(ctx, req.(*AuthRoleListRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_RoleDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthRoleDeleteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).RoleDelete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/RoleDelete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).RoleDelete(ctx, req.(*AuthRoleDeleteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_RoleGrantPermission_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthRoleGrantPermissionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).RoleGrantPermission(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/RoleGrantPermission", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).RoleGrantPermission(ctx, req.(*AuthRoleGrantPermissionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Auth_RoleRevokePermission_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthRoleRevokePermissionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServer).RoleRevokePermission(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/etcdserverpb.Auth/RoleRevokePermission", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServer).RoleRevokePermission(ctx, req.(*AuthRoleRevokePermissionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Auth_serviceDesc = grpc.ServiceDesc{ - ServiceName: "etcdserverpb.Auth", - HandlerType: (*AuthServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "AuthEnable", - Handler: _Auth_AuthEnable_Handler, - }, - { - MethodName: "AuthDisable", - Handler: _Auth_AuthDisable_Handler, - }, - { - MethodName: "AuthStatus", - Handler: _Auth_AuthStatus_Handler, - }, - { - MethodName: "Authenticate", - Handler: _Auth_Authenticate_Handler, - }, - { - MethodName: "UserAdd", - Handler: _Auth_UserAdd_Handler, - }, - { - MethodName: "UserGet", - Handler: _Auth_UserGet_Handler, - }, - { - MethodName: "UserList", - Handler: _Auth_UserList_Handler, - }, - { - MethodName: "UserDelete", - Handler: _Auth_UserDelete_Handler, - }, - { - MethodName: "UserChangePassword", - Handler: _Auth_UserChangePassword_Handler, - }, - { - MethodName: "UserGrantRole", - Handler: _Auth_UserGrantRole_Handler, - }, - { - MethodName: "UserRevokeRole", - Handler: _Auth_UserRevokeRole_Handler, - }, - { - MethodName: "RoleAdd", - Handler: _Auth_RoleAdd_Handler, - }, - { - MethodName: "RoleGet", - Handler: _Auth_RoleGet_Handler, - }, - { - MethodName: "RoleList", - Handler: _Auth_RoleList_Handler, - }, - { - MethodName: "RoleDelete", - Handler: _Auth_RoleDelete_Handler, - }, - { - MethodName: "RoleGrantPermission", - Handler: _Auth_RoleGrantPermission_Handler, - }, - { - MethodName: "RoleRevokePermission", - Handler: _Auth_RoleRevokePermission_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "rpc.proto", -} - func (m *ResponseHeader) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) diff --git a/api/etcdserverpb/rpc_grpc.pb.go b/api/etcdserverpb/rpc_grpc.pb.go new file mode 100644 index 000000000000..122242e167b1 --- /dev/null +++ b/api/etcdserverpb/rpc_grpc.pb.go @@ -0,0 +1,2015 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. + +package etcdserverpb + +import ( + context "context" + + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// KVClient is the client API for KV service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type KVClient interface { + // Range gets the keys in the range from the key-value store. + Range(ctx context.Context, in *RangeRequest, opts ...grpc.CallOption) (*RangeResponse, error) + // Put puts the given key into the key-value store. + // A put request increments the revision of the key-value store + // and generates one event in the event history. + Put(ctx context.Context, in *PutRequest, opts ...grpc.CallOption) (*PutResponse, error) + // DeleteRange deletes the given range from the key-value store. + // A delete request increments the revision of the key-value store + // and generates a delete event in the event history for every deleted key. + DeleteRange(ctx context.Context, in *DeleteRangeRequest, opts ...grpc.CallOption) (*DeleteRangeResponse, error) + // Txn processes multiple requests in a single transaction. + // A txn request increments the revision of the key-value store + // and generates events with the same revision for every completed request. + // It is not allowed to modify the same key several times within one txn. + Txn(ctx context.Context, in *TxnRequest, opts ...grpc.CallOption) (*TxnResponse, error) + // Compact compacts the event history in the etcd key-value store. The key-value + // store should be periodically compacted or the event history will continue to grow + // indefinitely. + Compact(ctx context.Context, in *CompactionRequest, opts ...grpc.CallOption) (*CompactionResponse, error) +} + +type kVClient struct { + cc grpc.ClientConnInterface +} + +func NewKVClient(cc grpc.ClientConnInterface) KVClient { + return &kVClient{cc} +} + +func (c *kVClient) Range(ctx context.Context, in *RangeRequest, opts ...grpc.CallOption) (*RangeResponse, error) { + out := new(RangeResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.KV/Range", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *kVClient) Put(ctx context.Context, in *PutRequest, opts ...grpc.CallOption) (*PutResponse, error) { + out := new(PutResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.KV/Put", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *kVClient) DeleteRange(ctx context.Context, in *DeleteRangeRequest, opts ...grpc.CallOption) (*DeleteRangeResponse, error) { + out := new(DeleteRangeResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.KV/DeleteRange", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *kVClient) Txn(ctx context.Context, in *TxnRequest, opts ...grpc.CallOption) (*TxnResponse, error) { + out := new(TxnResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.KV/Txn", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *kVClient) Compact(ctx context.Context, in *CompactionRequest, opts ...grpc.CallOption) (*CompactionResponse, error) { + out := new(CompactionResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.KV/Compact", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// KVServer is the server API for KV service. +// All implementations must embed UnimplementedKVServer +// for forward compatibility +type KVServer interface { + // Range gets the keys in the range from the key-value store. + Range(context.Context, *RangeRequest) (*RangeResponse, error) + // Put puts the given key into the key-value store. + // A put request increments the revision of the key-value store + // and generates one event in the event history. + Put(context.Context, *PutRequest) (*PutResponse, error) + // DeleteRange deletes the given range from the key-value store. + // A delete request increments the revision of the key-value store + // and generates a delete event in the event history for every deleted key. + DeleteRange(context.Context, *DeleteRangeRequest) (*DeleteRangeResponse, error) + // Txn processes multiple requests in a single transaction. + // A txn request increments the revision of the key-value store + // and generates events with the same revision for every completed request. + // It is not allowed to modify the same key several times within one txn. + Txn(context.Context, *TxnRequest) (*TxnResponse, error) + // Compact compacts the event history in the etcd key-value store. The key-value + // store should be periodically compacted or the event history will continue to grow + // indefinitely. + Compact(context.Context, *CompactionRequest) (*CompactionResponse, error) + mustEmbedUnimplementedKVServer() +} + +// UnimplementedKVServer must be embedded to have forward compatible implementations. +type UnimplementedKVServer struct { +} + +func (UnimplementedKVServer) Range(context.Context, *RangeRequest) (*RangeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Range not implemented") +} +func (UnimplementedKVServer) Put(context.Context, *PutRequest) (*PutResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Put not implemented") +} +func (UnimplementedKVServer) DeleteRange(context.Context, *DeleteRangeRequest) (*DeleteRangeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteRange not implemented") +} +func (UnimplementedKVServer) Txn(context.Context, *TxnRequest) (*TxnResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Txn not implemented") +} +func (UnimplementedKVServer) Compact(context.Context, *CompactionRequest) (*CompactionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Compact not implemented") +} +func (UnimplementedKVServer) mustEmbedUnimplementedKVServer() {} + +// UnsafeKVServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to KVServer will +// result in compilation errors. +type UnsafeKVServer interface { + mustEmbedUnimplementedKVServer() +} + +func RegisterKVServer(s grpc.ServiceRegistrar, srv KVServer) { + s.RegisterService(&KV_ServiceDesc, srv) +} + +func _KV_Range_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RangeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(KVServer).Range(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.KV/Range", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(KVServer).Range(ctx, req.(*RangeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _KV_Put_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PutRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(KVServer).Put(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.KV/Put", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(KVServer).Put(ctx, req.(*PutRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _KV_DeleteRange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteRangeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(KVServer).DeleteRange(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.KV/DeleteRange", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(KVServer).DeleteRange(ctx, req.(*DeleteRangeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _KV_Txn_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TxnRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(KVServer).Txn(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.KV/Txn", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(KVServer).Txn(ctx, req.(*TxnRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _KV_Compact_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CompactionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(KVServer).Compact(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.KV/Compact", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(KVServer).Compact(ctx, req.(*CompactionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// KV_ServiceDesc is the grpc.ServiceDesc for KV service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var KV_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "etcdserverpb.KV", + HandlerType: (*KVServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Range", + Handler: _KV_Range_Handler, + }, + { + MethodName: "Put", + Handler: _KV_Put_Handler, + }, + { + MethodName: "DeleteRange", + Handler: _KV_DeleteRange_Handler, + }, + { + MethodName: "Txn", + Handler: _KV_Txn_Handler, + }, + { + MethodName: "Compact", + Handler: _KV_Compact_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "rpc.proto", +} + +// WatchClient is the client API for Watch service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type WatchClient interface { + // Watch watches for events happening or that have happened. Both input and output + // are streams; the input stream is for creating and canceling watchers and the output + // stream sends events. One watch RPC can watch on multiple key ranges, streaming events + // for several watches at once. The entire event history can be watched starting from the + // last compaction revision. + Watch(ctx context.Context, opts ...grpc.CallOption) (Watch_WatchClient, error) +} + +type watchClient struct { + cc grpc.ClientConnInterface +} + +func NewWatchClient(cc grpc.ClientConnInterface) WatchClient { + return &watchClient{cc} +} + +func (c *watchClient) Watch(ctx context.Context, opts ...grpc.CallOption) (Watch_WatchClient, error) { + stream, err := c.cc.NewStream(ctx, &Watch_ServiceDesc.Streams[0], "/etcdserverpb.Watch/Watch", opts...) + if err != nil { + return nil, err + } + x := &watchWatchClient{stream} + return x, nil +} + +type Watch_WatchClient interface { + Send(*WatchRequest) error + Recv() (*WatchResponse, error) + grpc.ClientStream +} + +type watchWatchClient struct { + grpc.ClientStream +} + +func (x *watchWatchClient) Send(m *WatchRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *watchWatchClient) Recv() (*WatchResponse, error) { + m := new(WatchResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// WatchServer is the server API for Watch service. +// All implementations must embed UnimplementedWatchServer +// for forward compatibility +type WatchServer interface { + // Watch watches for events happening or that have happened. Both input and output + // are streams; the input stream is for creating and canceling watchers and the output + // stream sends events. One watch RPC can watch on multiple key ranges, streaming events + // for several watches at once. The entire event history can be watched starting from the + // last compaction revision. + Watch(Watch_WatchServer) error + mustEmbedUnimplementedWatchServer() +} + +// UnimplementedWatchServer must be embedded to have forward compatible implementations. +type UnimplementedWatchServer struct { +} + +func (UnimplementedWatchServer) Watch(Watch_WatchServer) error { + return status.Errorf(codes.Unimplemented, "method Watch not implemented") +} +func (UnimplementedWatchServer) mustEmbedUnimplementedWatchServer() {} + +// UnsafeWatchServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to WatchServer will +// result in compilation errors. +type UnsafeWatchServer interface { + mustEmbedUnimplementedWatchServer() +} + +func RegisterWatchServer(s grpc.ServiceRegistrar, srv WatchServer) { + s.RegisterService(&Watch_ServiceDesc, srv) +} + +func _Watch_Watch_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(WatchServer).Watch(&watchWatchServer{stream}) +} + +type Watch_WatchServer interface { + Send(*WatchResponse) error + Recv() (*WatchRequest, error) + grpc.ServerStream +} + +type watchWatchServer struct { + grpc.ServerStream +} + +func (x *watchWatchServer) Send(m *WatchResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *watchWatchServer) Recv() (*WatchRequest, error) { + m := new(WatchRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// Watch_ServiceDesc is the grpc.ServiceDesc for Watch service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Watch_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "etcdserverpb.Watch", + HandlerType: (*WatchServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{ + { + StreamName: "Watch", + Handler: _Watch_Watch_Handler, + ServerStreams: true, + ClientStreams: true, + }, + }, + Metadata: "rpc.proto", +} + +// LeaseClient is the client API for Lease service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type LeaseClient interface { + // LeaseGrant creates a lease which expires if the server does not receive a keepAlive + // within a given time to live period. All keys attached to the lease will be expired and + // deleted if the lease expires. Each expired key generates a delete event in the event history. + LeaseGrant(ctx context.Context, in *LeaseGrantRequest, opts ...grpc.CallOption) (*LeaseGrantResponse, error) + // LeaseRevoke revokes a lease. All keys attached to the lease will expire and be deleted. + LeaseRevoke(ctx context.Context, in *LeaseRevokeRequest, opts ...grpc.CallOption) (*LeaseRevokeResponse, error) + // LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client + // to the server and streaming keep alive responses from the server to the client. + LeaseKeepAlive(ctx context.Context, opts ...grpc.CallOption) (Lease_LeaseKeepAliveClient, error) + // LeaseTimeToLive retrieves lease information. + LeaseTimeToLive(ctx context.Context, in *LeaseTimeToLiveRequest, opts ...grpc.CallOption) (*LeaseTimeToLiveResponse, error) + // LeaseLeases lists all existing leases. + LeaseLeases(ctx context.Context, in *LeaseLeasesRequest, opts ...grpc.CallOption) (*LeaseLeasesResponse, error) +} + +type leaseClient struct { + cc grpc.ClientConnInterface +} + +func NewLeaseClient(cc grpc.ClientConnInterface) LeaseClient { + return &leaseClient{cc} +} + +func (c *leaseClient) LeaseGrant(ctx context.Context, in *LeaseGrantRequest, opts ...grpc.CallOption) (*LeaseGrantResponse, error) { + out := new(LeaseGrantResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Lease/LeaseGrant", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *leaseClient) LeaseRevoke(ctx context.Context, in *LeaseRevokeRequest, opts ...grpc.CallOption) (*LeaseRevokeResponse, error) { + out := new(LeaseRevokeResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Lease/LeaseRevoke", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *leaseClient) LeaseKeepAlive(ctx context.Context, opts ...grpc.CallOption) (Lease_LeaseKeepAliveClient, error) { + stream, err := c.cc.NewStream(ctx, &Lease_ServiceDesc.Streams[0], "/etcdserverpb.Lease/LeaseKeepAlive", opts...) + if err != nil { + return nil, err + } + x := &leaseLeaseKeepAliveClient{stream} + return x, nil +} + +type Lease_LeaseKeepAliveClient interface { + Send(*LeaseKeepAliveRequest) error + Recv() (*LeaseKeepAliveResponse, error) + grpc.ClientStream +} + +type leaseLeaseKeepAliveClient struct { + grpc.ClientStream +} + +func (x *leaseLeaseKeepAliveClient) Send(m *LeaseKeepAliveRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *leaseLeaseKeepAliveClient) Recv() (*LeaseKeepAliveResponse, error) { + m := new(LeaseKeepAliveResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *leaseClient) LeaseTimeToLive(ctx context.Context, in *LeaseTimeToLiveRequest, opts ...grpc.CallOption) (*LeaseTimeToLiveResponse, error) { + out := new(LeaseTimeToLiveResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Lease/LeaseTimeToLive", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *leaseClient) LeaseLeases(ctx context.Context, in *LeaseLeasesRequest, opts ...grpc.CallOption) (*LeaseLeasesResponse, error) { + out := new(LeaseLeasesResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Lease/LeaseLeases", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// LeaseServer is the server API for Lease service. +// All implementations must embed UnimplementedLeaseServer +// for forward compatibility +type LeaseServer interface { + // LeaseGrant creates a lease which expires if the server does not receive a keepAlive + // within a given time to live period. All keys attached to the lease will be expired and + // deleted if the lease expires. Each expired key generates a delete event in the event history. + LeaseGrant(context.Context, *LeaseGrantRequest) (*LeaseGrantResponse, error) + // LeaseRevoke revokes a lease. All keys attached to the lease will expire and be deleted. + LeaseRevoke(context.Context, *LeaseRevokeRequest) (*LeaseRevokeResponse, error) + // LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client + // to the server and streaming keep alive responses from the server to the client. + LeaseKeepAlive(Lease_LeaseKeepAliveServer) error + // LeaseTimeToLive retrieves lease information. + LeaseTimeToLive(context.Context, *LeaseTimeToLiveRequest) (*LeaseTimeToLiveResponse, error) + // LeaseLeases lists all existing leases. + LeaseLeases(context.Context, *LeaseLeasesRequest) (*LeaseLeasesResponse, error) + mustEmbedUnimplementedLeaseServer() +} + +// UnimplementedLeaseServer must be embedded to have forward compatible implementations. +type UnimplementedLeaseServer struct { +} + +func (UnimplementedLeaseServer) LeaseGrant(context.Context, *LeaseGrantRequest) (*LeaseGrantResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LeaseGrant not implemented") +} +func (UnimplementedLeaseServer) LeaseRevoke(context.Context, *LeaseRevokeRequest) (*LeaseRevokeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LeaseRevoke not implemented") +} +func (UnimplementedLeaseServer) LeaseKeepAlive(Lease_LeaseKeepAliveServer) error { + return status.Errorf(codes.Unimplemented, "method LeaseKeepAlive not implemented") +} +func (UnimplementedLeaseServer) LeaseTimeToLive(context.Context, *LeaseTimeToLiveRequest) (*LeaseTimeToLiveResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LeaseTimeToLive not implemented") +} +func (UnimplementedLeaseServer) LeaseLeases(context.Context, *LeaseLeasesRequest) (*LeaseLeasesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LeaseLeases not implemented") +} +func (UnimplementedLeaseServer) mustEmbedUnimplementedLeaseServer() {} + +// UnsafeLeaseServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to LeaseServer will +// result in compilation errors. +type UnsafeLeaseServer interface { + mustEmbedUnimplementedLeaseServer() +} + +func RegisterLeaseServer(s grpc.ServiceRegistrar, srv LeaseServer) { + s.RegisterService(&Lease_ServiceDesc, srv) +} + +func _Lease_LeaseGrant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LeaseGrantRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LeaseServer).LeaseGrant(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Lease/LeaseGrant", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LeaseServer).LeaseGrant(ctx, req.(*LeaseGrantRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Lease_LeaseRevoke_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LeaseRevokeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LeaseServer).LeaseRevoke(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Lease/LeaseRevoke", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LeaseServer).LeaseRevoke(ctx, req.(*LeaseRevokeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Lease_LeaseKeepAlive_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(LeaseServer).LeaseKeepAlive(&leaseLeaseKeepAliveServer{stream}) +} + +type Lease_LeaseKeepAliveServer interface { + Send(*LeaseKeepAliveResponse) error + Recv() (*LeaseKeepAliveRequest, error) + grpc.ServerStream +} + +type leaseLeaseKeepAliveServer struct { + grpc.ServerStream +} + +func (x *leaseLeaseKeepAliveServer) Send(m *LeaseKeepAliveResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *leaseLeaseKeepAliveServer) Recv() (*LeaseKeepAliveRequest, error) { + m := new(LeaseKeepAliveRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func _Lease_LeaseTimeToLive_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LeaseTimeToLiveRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LeaseServer).LeaseTimeToLive(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Lease/LeaseTimeToLive", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LeaseServer).LeaseTimeToLive(ctx, req.(*LeaseTimeToLiveRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Lease_LeaseLeases_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LeaseLeasesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LeaseServer).LeaseLeases(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Lease/LeaseLeases", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LeaseServer).LeaseLeases(ctx, req.(*LeaseLeasesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Lease_ServiceDesc is the grpc.ServiceDesc for Lease service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Lease_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "etcdserverpb.Lease", + HandlerType: (*LeaseServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "LeaseGrant", + Handler: _Lease_LeaseGrant_Handler, + }, + { + MethodName: "LeaseRevoke", + Handler: _Lease_LeaseRevoke_Handler, + }, + { + MethodName: "LeaseTimeToLive", + Handler: _Lease_LeaseTimeToLive_Handler, + }, + { + MethodName: "LeaseLeases", + Handler: _Lease_LeaseLeases_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "LeaseKeepAlive", + Handler: _Lease_LeaseKeepAlive_Handler, + ServerStreams: true, + ClientStreams: true, + }, + }, + Metadata: "rpc.proto", +} + +// ClusterClient is the client API for Cluster service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ClusterClient interface { + // MemberAdd adds a member into the cluster. + MemberAdd(ctx context.Context, in *MemberAddRequest, opts ...grpc.CallOption) (*MemberAddResponse, error) + // MemberRemove removes an existing member from the cluster. + MemberRemove(ctx context.Context, in *MemberRemoveRequest, opts ...grpc.CallOption) (*MemberRemoveResponse, error) + // MemberUpdate updates the member configuration. + MemberUpdate(ctx context.Context, in *MemberUpdateRequest, opts ...grpc.CallOption) (*MemberUpdateResponse, error) + // MemberList lists all the members in the cluster. + MemberList(ctx context.Context, in *MemberListRequest, opts ...grpc.CallOption) (*MemberListResponse, error) + // MemberPromote promotes a member from raft learner (non-voting) to raft voting member. + MemberPromote(ctx context.Context, in *MemberPromoteRequest, opts ...grpc.CallOption) (*MemberPromoteResponse, error) +} + +type clusterClient struct { + cc grpc.ClientConnInterface +} + +func NewClusterClient(cc grpc.ClientConnInterface) ClusterClient { + return &clusterClient{cc} +} + +func (c *clusterClient) MemberAdd(ctx context.Context, in *MemberAddRequest, opts ...grpc.CallOption) (*MemberAddResponse, error) { + out := new(MemberAddResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberAdd", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clusterClient) MemberRemove(ctx context.Context, in *MemberRemoveRequest, opts ...grpc.CallOption) (*MemberRemoveResponse, error) { + out := new(MemberRemoveResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberRemove", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clusterClient) MemberUpdate(ctx context.Context, in *MemberUpdateRequest, opts ...grpc.CallOption) (*MemberUpdateResponse, error) { + out := new(MemberUpdateResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberUpdate", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clusterClient) MemberList(ctx context.Context, in *MemberListRequest, opts ...grpc.CallOption) (*MemberListResponse, error) { + out := new(MemberListResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberList", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clusterClient) MemberPromote(ctx context.Context, in *MemberPromoteRequest, opts ...grpc.CallOption) (*MemberPromoteResponse, error) { + out := new(MemberPromoteResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberPromote", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ClusterServer is the server API for Cluster service. +// All implementations must embed UnimplementedClusterServer +// for forward compatibility +type ClusterServer interface { + // MemberAdd adds a member into the cluster. + MemberAdd(context.Context, *MemberAddRequest) (*MemberAddResponse, error) + // MemberRemove removes an existing member from the cluster. + MemberRemove(context.Context, *MemberRemoveRequest) (*MemberRemoveResponse, error) + // MemberUpdate updates the member configuration. + MemberUpdate(context.Context, *MemberUpdateRequest) (*MemberUpdateResponse, error) + // MemberList lists all the members in the cluster. + MemberList(context.Context, *MemberListRequest) (*MemberListResponse, error) + // MemberPromote promotes a member from raft learner (non-voting) to raft voting member. + MemberPromote(context.Context, *MemberPromoteRequest) (*MemberPromoteResponse, error) + mustEmbedUnimplementedClusterServer() +} + +// UnimplementedClusterServer must be embedded to have forward compatible implementations. +type UnimplementedClusterServer struct { +} + +func (UnimplementedClusterServer) MemberAdd(context.Context, *MemberAddRequest) (*MemberAddResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method MemberAdd not implemented") +} +func (UnimplementedClusterServer) MemberRemove(context.Context, *MemberRemoveRequest) (*MemberRemoveResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method MemberRemove not implemented") +} +func (UnimplementedClusterServer) MemberUpdate(context.Context, *MemberUpdateRequest) (*MemberUpdateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method MemberUpdate not implemented") +} +func (UnimplementedClusterServer) MemberList(context.Context, *MemberListRequest) (*MemberListResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method MemberList not implemented") +} +func (UnimplementedClusterServer) MemberPromote(context.Context, *MemberPromoteRequest) (*MemberPromoteResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method MemberPromote not implemented") +} +func (UnimplementedClusterServer) mustEmbedUnimplementedClusterServer() {} + +// UnsafeClusterServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ClusterServer will +// result in compilation errors. +type UnsafeClusterServer interface { + mustEmbedUnimplementedClusterServer() +} + +func RegisterClusterServer(s grpc.ServiceRegistrar, srv ClusterServer) { + s.RegisterService(&Cluster_ServiceDesc, srv) +} + +func _Cluster_MemberAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MemberAddRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClusterServer).MemberAdd(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Cluster/MemberAdd", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClusterServer).MemberAdd(ctx, req.(*MemberAddRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cluster_MemberRemove_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MemberRemoveRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClusterServer).MemberRemove(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Cluster/MemberRemove", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClusterServer).MemberRemove(ctx, req.(*MemberRemoveRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cluster_MemberUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MemberUpdateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClusterServer).MemberUpdate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Cluster/MemberUpdate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClusterServer).MemberUpdate(ctx, req.(*MemberUpdateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cluster_MemberList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MemberListRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClusterServer).MemberList(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Cluster/MemberList", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClusterServer).MemberList(ctx, req.(*MemberListRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cluster_MemberPromote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MemberPromoteRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClusterServer).MemberPromote(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Cluster/MemberPromote", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClusterServer).MemberPromote(ctx, req.(*MemberPromoteRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Cluster_ServiceDesc is the grpc.ServiceDesc for Cluster service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Cluster_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "etcdserverpb.Cluster", + HandlerType: (*ClusterServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "MemberAdd", + Handler: _Cluster_MemberAdd_Handler, + }, + { + MethodName: "MemberRemove", + Handler: _Cluster_MemberRemove_Handler, + }, + { + MethodName: "MemberUpdate", + Handler: _Cluster_MemberUpdate_Handler, + }, + { + MethodName: "MemberList", + Handler: _Cluster_MemberList_Handler, + }, + { + MethodName: "MemberPromote", + Handler: _Cluster_MemberPromote_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "rpc.proto", +} + +// MaintenanceClient is the client API for Maintenance service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MaintenanceClient interface { + // Alarm activates, deactivates, and queries alarms regarding cluster health. + Alarm(ctx context.Context, in *AlarmRequest, opts ...grpc.CallOption) (*AlarmResponse, error) + // Status gets the status of the member. + Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) + // Defragment defragments a member's backend database to recover storage space. + Defragment(ctx context.Context, in *DefragmentRequest, opts ...grpc.CallOption) (*DefragmentResponse, error) + // Hash computes the hash of whole backend keyspace, + // including key, lease, and other buckets in storage. + // This is designed for testing ONLY! + // Do not rely on this in production with ongoing transactions, + // since Hash operation does not hold MVCC locks. + // Use "HashKV" API instead for "key" bucket consistency checks. + Hash(ctx context.Context, in *HashRequest, opts ...grpc.CallOption) (*HashResponse, error) + // HashKV computes the hash of all MVCC keys up to a given revision. + // It only iterates "key" bucket in backend storage. + HashKV(ctx context.Context, in *HashKVRequest, opts ...grpc.CallOption) (*HashKVResponse, error) + // Snapshot sends a snapshot of the entire backend from a member over a stream to a client. + Snapshot(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (Maintenance_SnapshotClient, error) + // MoveLeader requests current leader node to transfer its leadership to transferee. + MoveLeader(ctx context.Context, in *MoveLeaderRequest, opts ...grpc.CallOption) (*MoveLeaderResponse, error) + // Downgrade requests downgrades, verifies feasibility or cancels downgrade + // on the cluster version. + // Supported since etcd 3.5. + Downgrade(ctx context.Context, in *DowngradeRequest, opts ...grpc.CallOption) (*DowngradeResponse, error) +} + +type maintenanceClient struct { + cc grpc.ClientConnInterface +} + +func NewMaintenanceClient(cc grpc.ClientConnInterface) MaintenanceClient { + return &maintenanceClient{cc} +} + +func (c *maintenanceClient) Alarm(ctx context.Context, in *AlarmRequest, opts ...grpc.CallOption) (*AlarmResponse, error) { + out := new(AlarmResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Alarm", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *maintenanceClient) Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) { + out := new(StatusResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Status", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *maintenanceClient) Defragment(ctx context.Context, in *DefragmentRequest, opts ...grpc.CallOption) (*DefragmentResponse, error) { + out := new(DefragmentResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Defragment", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *maintenanceClient) Hash(ctx context.Context, in *HashRequest, opts ...grpc.CallOption) (*HashResponse, error) { + out := new(HashResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Hash", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *maintenanceClient) HashKV(ctx context.Context, in *HashKVRequest, opts ...grpc.CallOption) (*HashKVResponse, error) { + out := new(HashKVResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/HashKV", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *maintenanceClient) Snapshot(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (Maintenance_SnapshotClient, error) { + stream, err := c.cc.NewStream(ctx, &Maintenance_ServiceDesc.Streams[0], "/etcdserverpb.Maintenance/Snapshot", opts...) + if err != nil { + return nil, err + } + x := &maintenanceSnapshotClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type Maintenance_SnapshotClient interface { + Recv() (*SnapshotResponse, error) + grpc.ClientStream +} + +type maintenanceSnapshotClient struct { + grpc.ClientStream +} + +func (x *maintenanceSnapshotClient) Recv() (*SnapshotResponse, error) { + m := new(SnapshotResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *maintenanceClient) MoveLeader(ctx context.Context, in *MoveLeaderRequest, opts ...grpc.CallOption) (*MoveLeaderResponse, error) { + out := new(MoveLeaderResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/MoveLeader", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *maintenanceClient) Downgrade(ctx context.Context, in *DowngradeRequest, opts ...grpc.CallOption) (*DowngradeResponse, error) { + out := new(DowngradeResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Downgrade", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MaintenanceServer is the server API for Maintenance service. +// All implementations must embed UnimplementedMaintenanceServer +// for forward compatibility +type MaintenanceServer interface { + // Alarm activates, deactivates, and queries alarms regarding cluster health. + Alarm(context.Context, *AlarmRequest) (*AlarmResponse, error) + // Status gets the status of the member. + Status(context.Context, *StatusRequest) (*StatusResponse, error) + // Defragment defragments a member's backend database to recover storage space. + Defragment(context.Context, *DefragmentRequest) (*DefragmentResponse, error) + // Hash computes the hash of whole backend keyspace, + // including key, lease, and other buckets in storage. + // This is designed for testing ONLY! + // Do not rely on this in production with ongoing transactions, + // since Hash operation does not hold MVCC locks. + // Use "HashKV" API instead for "key" bucket consistency checks. + Hash(context.Context, *HashRequest) (*HashResponse, error) + // HashKV computes the hash of all MVCC keys up to a given revision. + // It only iterates "key" bucket in backend storage. + HashKV(context.Context, *HashKVRequest) (*HashKVResponse, error) + // Snapshot sends a snapshot of the entire backend from a member over a stream to a client. + Snapshot(*SnapshotRequest, Maintenance_SnapshotServer) error + // MoveLeader requests current leader node to transfer its leadership to transferee. + MoveLeader(context.Context, *MoveLeaderRequest) (*MoveLeaderResponse, error) + // Downgrade requests downgrades, verifies feasibility or cancels downgrade + // on the cluster version. + // Supported since etcd 3.5. + Downgrade(context.Context, *DowngradeRequest) (*DowngradeResponse, error) + mustEmbedUnimplementedMaintenanceServer() +} + +// UnimplementedMaintenanceServer must be embedded to have forward compatible implementations. +type UnimplementedMaintenanceServer struct { +} + +func (UnimplementedMaintenanceServer) Alarm(context.Context, *AlarmRequest) (*AlarmResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Alarm not implemented") +} +func (UnimplementedMaintenanceServer) Status(context.Context, *StatusRequest) (*StatusResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Status not implemented") +} +func (UnimplementedMaintenanceServer) Defragment(context.Context, *DefragmentRequest) (*DefragmentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Defragment not implemented") +} +func (UnimplementedMaintenanceServer) Hash(context.Context, *HashRequest) (*HashResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Hash not implemented") +} +func (UnimplementedMaintenanceServer) HashKV(context.Context, *HashKVRequest) (*HashKVResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method HashKV not implemented") +} +func (UnimplementedMaintenanceServer) Snapshot(*SnapshotRequest, Maintenance_SnapshotServer) error { + return status.Errorf(codes.Unimplemented, "method Snapshot not implemented") +} +func (UnimplementedMaintenanceServer) MoveLeader(context.Context, *MoveLeaderRequest) (*MoveLeaderResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method MoveLeader not implemented") +} +func (UnimplementedMaintenanceServer) Downgrade(context.Context, *DowngradeRequest) (*DowngradeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Downgrade not implemented") +} +func (UnimplementedMaintenanceServer) mustEmbedUnimplementedMaintenanceServer() {} + +// UnsafeMaintenanceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MaintenanceServer will +// result in compilation errors. +type UnsafeMaintenanceServer interface { + mustEmbedUnimplementedMaintenanceServer() +} + +func RegisterMaintenanceServer(s grpc.ServiceRegistrar, srv MaintenanceServer) { + s.RegisterService(&Maintenance_ServiceDesc, srv) +} + +func _Maintenance_Alarm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AlarmRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MaintenanceServer).Alarm(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Maintenance/Alarm", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MaintenanceServer).Alarm(ctx, req.(*AlarmRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Maintenance_Status_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StatusRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MaintenanceServer).Status(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Maintenance/Status", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MaintenanceServer).Status(ctx, req.(*StatusRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Maintenance_Defragment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DefragmentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MaintenanceServer).Defragment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Maintenance/Defragment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MaintenanceServer).Defragment(ctx, req.(*DefragmentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Maintenance_Hash_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(HashRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MaintenanceServer).Hash(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Maintenance/Hash", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MaintenanceServer).Hash(ctx, req.(*HashRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Maintenance_HashKV_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(HashKVRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MaintenanceServer).HashKV(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Maintenance/HashKV", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MaintenanceServer).HashKV(ctx, req.(*HashKVRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Maintenance_Snapshot_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(SnapshotRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(MaintenanceServer).Snapshot(m, &maintenanceSnapshotServer{stream}) +} + +type Maintenance_SnapshotServer interface { + Send(*SnapshotResponse) error + grpc.ServerStream +} + +type maintenanceSnapshotServer struct { + grpc.ServerStream +} + +func (x *maintenanceSnapshotServer) Send(m *SnapshotResponse) error { + return x.ServerStream.SendMsg(m) +} + +func _Maintenance_MoveLeader_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MoveLeaderRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MaintenanceServer).MoveLeader(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Maintenance/MoveLeader", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MaintenanceServer).MoveLeader(ctx, req.(*MoveLeaderRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Maintenance_Downgrade_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DowngradeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MaintenanceServer).Downgrade(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Maintenance/Downgrade", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MaintenanceServer).Downgrade(ctx, req.(*DowngradeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Maintenance_ServiceDesc is the grpc.ServiceDesc for Maintenance service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Maintenance_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "etcdserverpb.Maintenance", + HandlerType: (*MaintenanceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Alarm", + Handler: _Maintenance_Alarm_Handler, + }, + { + MethodName: "Status", + Handler: _Maintenance_Status_Handler, + }, + { + MethodName: "Defragment", + Handler: _Maintenance_Defragment_Handler, + }, + { + MethodName: "Hash", + Handler: _Maintenance_Hash_Handler, + }, + { + MethodName: "HashKV", + Handler: _Maintenance_HashKV_Handler, + }, + { + MethodName: "MoveLeader", + Handler: _Maintenance_MoveLeader_Handler, + }, + { + MethodName: "Downgrade", + Handler: _Maintenance_Downgrade_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "Snapshot", + Handler: _Maintenance_Snapshot_Handler, + ServerStreams: true, + }, + }, + Metadata: "rpc.proto", +} + +// AuthClient is the client API for Auth service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AuthClient interface { + // AuthEnable enables authentication. + AuthEnable(ctx context.Context, in *AuthEnableRequest, opts ...grpc.CallOption) (*AuthEnableResponse, error) + // AuthDisable disables authentication. + AuthDisable(ctx context.Context, in *AuthDisableRequest, opts ...grpc.CallOption) (*AuthDisableResponse, error) + // AuthStatus displays authentication status. + AuthStatus(ctx context.Context, in *AuthStatusRequest, opts ...grpc.CallOption) (*AuthStatusResponse, error) + // Authenticate processes an authenticate request. + Authenticate(ctx context.Context, in *AuthenticateRequest, opts ...grpc.CallOption) (*AuthenticateResponse, error) + // UserAdd adds a new user. User name cannot be empty. + UserAdd(ctx context.Context, in *AuthUserAddRequest, opts ...grpc.CallOption) (*AuthUserAddResponse, error) + // UserGet gets detailed user information. + UserGet(ctx context.Context, in *AuthUserGetRequest, opts ...grpc.CallOption) (*AuthUserGetResponse, error) + // UserList gets a list of all users. + UserList(ctx context.Context, in *AuthUserListRequest, opts ...grpc.CallOption) (*AuthUserListResponse, error) + // UserDelete deletes a specified user. + UserDelete(ctx context.Context, in *AuthUserDeleteRequest, opts ...grpc.CallOption) (*AuthUserDeleteResponse, error) + // UserChangePassword changes the password of a specified user. + UserChangePassword(ctx context.Context, in *AuthUserChangePasswordRequest, opts ...grpc.CallOption) (*AuthUserChangePasswordResponse, error) + // UserGrantRole grants a role to a specified user. + UserGrantRole(ctx context.Context, in *AuthUserGrantRoleRequest, opts ...grpc.CallOption) (*AuthUserGrantRoleResponse, error) + // UserRevokeRole revokes a role of specified user. + UserRevokeRole(ctx context.Context, in *AuthUserRevokeRoleRequest, opts ...grpc.CallOption) (*AuthUserRevokeRoleResponse, error) + // RoleAdd adds a new role. Role name cannot be empty. + RoleAdd(ctx context.Context, in *AuthRoleAddRequest, opts ...grpc.CallOption) (*AuthRoleAddResponse, error) + // RoleGet gets detailed role information. + RoleGet(ctx context.Context, in *AuthRoleGetRequest, opts ...grpc.CallOption) (*AuthRoleGetResponse, error) + // RoleList gets lists of all roles. + RoleList(ctx context.Context, in *AuthRoleListRequest, opts ...grpc.CallOption) (*AuthRoleListResponse, error) + // RoleDelete deletes a specified role. + RoleDelete(ctx context.Context, in *AuthRoleDeleteRequest, opts ...grpc.CallOption) (*AuthRoleDeleteResponse, error) + // RoleGrantPermission grants a permission of a specified key or range to a specified role. + RoleGrantPermission(ctx context.Context, in *AuthRoleGrantPermissionRequest, opts ...grpc.CallOption) (*AuthRoleGrantPermissionResponse, error) + // RoleRevokePermission revokes a key or range permission of a specified role. + RoleRevokePermission(ctx context.Context, in *AuthRoleRevokePermissionRequest, opts ...grpc.CallOption) (*AuthRoleRevokePermissionResponse, error) +} + +type authClient struct { + cc grpc.ClientConnInterface +} + +func NewAuthClient(cc grpc.ClientConnInterface) AuthClient { + return &authClient{cc} +} + +func (c *authClient) AuthEnable(ctx context.Context, in *AuthEnableRequest, opts ...grpc.CallOption) (*AuthEnableResponse, error) { + out := new(AuthEnableResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/AuthEnable", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) AuthDisable(ctx context.Context, in *AuthDisableRequest, opts ...grpc.CallOption) (*AuthDisableResponse, error) { + out := new(AuthDisableResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/AuthDisable", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) AuthStatus(ctx context.Context, in *AuthStatusRequest, opts ...grpc.CallOption) (*AuthStatusResponse, error) { + out := new(AuthStatusResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/AuthStatus", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) Authenticate(ctx context.Context, in *AuthenticateRequest, opts ...grpc.CallOption) (*AuthenticateResponse, error) { + out := new(AuthenticateResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/Authenticate", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) UserAdd(ctx context.Context, in *AuthUserAddRequest, opts ...grpc.CallOption) (*AuthUserAddResponse, error) { + out := new(AuthUserAddResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserAdd", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) UserGet(ctx context.Context, in *AuthUserGetRequest, opts ...grpc.CallOption) (*AuthUserGetResponse, error) { + out := new(AuthUserGetResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserGet", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) UserList(ctx context.Context, in *AuthUserListRequest, opts ...grpc.CallOption) (*AuthUserListResponse, error) { + out := new(AuthUserListResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserList", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) UserDelete(ctx context.Context, in *AuthUserDeleteRequest, opts ...grpc.CallOption) (*AuthUserDeleteResponse, error) { + out := new(AuthUserDeleteResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserDelete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) UserChangePassword(ctx context.Context, in *AuthUserChangePasswordRequest, opts ...grpc.CallOption) (*AuthUserChangePasswordResponse, error) { + out := new(AuthUserChangePasswordResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserChangePassword", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) UserGrantRole(ctx context.Context, in *AuthUserGrantRoleRequest, opts ...grpc.CallOption) (*AuthUserGrantRoleResponse, error) { + out := new(AuthUserGrantRoleResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserGrantRole", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) UserRevokeRole(ctx context.Context, in *AuthUserRevokeRoleRequest, opts ...grpc.CallOption) (*AuthUserRevokeRoleResponse, error) { + out := new(AuthUserRevokeRoleResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserRevokeRole", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) RoleAdd(ctx context.Context, in *AuthRoleAddRequest, opts ...grpc.CallOption) (*AuthRoleAddResponse, error) { + out := new(AuthRoleAddResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleAdd", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) RoleGet(ctx context.Context, in *AuthRoleGetRequest, opts ...grpc.CallOption) (*AuthRoleGetResponse, error) { + out := new(AuthRoleGetResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleGet", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) RoleList(ctx context.Context, in *AuthRoleListRequest, opts ...grpc.CallOption) (*AuthRoleListResponse, error) { + out := new(AuthRoleListResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleList", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) RoleDelete(ctx context.Context, in *AuthRoleDeleteRequest, opts ...grpc.CallOption) (*AuthRoleDeleteResponse, error) { + out := new(AuthRoleDeleteResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleDelete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) RoleGrantPermission(ctx context.Context, in *AuthRoleGrantPermissionRequest, opts ...grpc.CallOption) (*AuthRoleGrantPermissionResponse, error) { + out := new(AuthRoleGrantPermissionResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleGrantPermission", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) RoleRevokePermission(ctx context.Context, in *AuthRoleRevokePermissionRequest, opts ...grpc.CallOption) (*AuthRoleRevokePermissionResponse, error) { + out := new(AuthRoleRevokePermissionResponse) + err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleRevokePermission", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AuthServer is the server API for Auth service. +// All implementations must embed UnimplementedAuthServer +// for forward compatibility +type AuthServer interface { + // AuthEnable enables authentication. + AuthEnable(context.Context, *AuthEnableRequest) (*AuthEnableResponse, error) + // AuthDisable disables authentication. + AuthDisable(context.Context, *AuthDisableRequest) (*AuthDisableResponse, error) + // AuthStatus displays authentication status. + AuthStatus(context.Context, *AuthStatusRequest) (*AuthStatusResponse, error) + // Authenticate processes an authenticate request. + Authenticate(context.Context, *AuthenticateRequest) (*AuthenticateResponse, error) + // UserAdd adds a new user. User name cannot be empty. + UserAdd(context.Context, *AuthUserAddRequest) (*AuthUserAddResponse, error) + // UserGet gets detailed user information. + UserGet(context.Context, *AuthUserGetRequest) (*AuthUserGetResponse, error) + // UserList gets a list of all users. + UserList(context.Context, *AuthUserListRequest) (*AuthUserListResponse, error) + // UserDelete deletes a specified user. + UserDelete(context.Context, *AuthUserDeleteRequest) (*AuthUserDeleteResponse, error) + // UserChangePassword changes the password of a specified user. + UserChangePassword(context.Context, *AuthUserChangePasswordRequest) (*AuthUserChangePasswordResponse, error) + // UserGrantRole grants a role to a specified user. + UserGrantRole(context.Context, *AuthUserGrantRoleRequest) (*AuthUserGrantRoleResponse, error) + // UserRevokeRole revokes a role of specified user. + UserRevokeRole(context.Context, *AuthUserRevokeRoleRequest) (*AuthUserRevokeRoleResponse, error) + // RoleAdd adds a new role. Role name cannot be empty. + RoleAdd(context.Context, *AuthRoleAddRequest) (*AuthRoleAddResponse, error) + // RoleGet gets detailed role information. + RoleGet(context.Context, *AuthRoleGetRequest) (*AuthRoleGetResponse, error) + // RoleList gets lists of all roles. + RoleList(context.Context, *AuthRoleListRequest) (*AuthRoleListResponse, error) + // RoleDelete deletes a specified role. + RoleDelete(context.Context, *AuthRoleDeleteRequest) (*AuthRoleDeleteResponse, error) + // RoleGrantPermission grants a permission of a specified key or range to a specified role. + RoleGrantPermission(context.Context, *AuthRoleGrantPermissionRequest) (*AuthRoleGrantPermissionResponse, error) + // RoleRevokePermission revokes a key or range permission of a specified role. + RoleRevokePermission(context.Context, *AuthRoleRevokePermissionRequest) (*AuthRoleRevokePermissionResponse, error) + mustEmbedUnimplementedAuthServer() +} + +// UnimplementedAuthServer must be embedded to have forward compatible implementations. +type UnimplementedAuthServer struct { +} + +func (UnimplementedAuthServer) AuthEnable(context.Context, *AuthEnableRequest) (*AuthEnableResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AuthEnable not implemented") +} +func (UnimplementedAuthServer) AuthDisable(context.Context, *AuthDisableRequest) (*AuthDisableResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AuthDisable not implemented") +} +func (UnimplementedAuthServer) AuthStatus(context.Context, *AuthStatusRequest) (*AuthStatusResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AuthStatus not implemented") +} +func (UnimplementedAuthServer) Authenticate(context.Context, *AuthenticateRequest) (*AuthenticateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Authenticate not implemented") +} +func (UnimplementedAuthServer) UserAdd(context.Context, *AuthUserAddRequest) (*AuthUserAddResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UserAdd not implemented") +} +func (UnimplementedAuthServer) UserGet(context.Context, *AuthUserGetRequest) (*AuthUserGetResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UserGet not implemented") +} +func (UnimplementedAuthServer) UserList(context.Context, *AuthUserListRequest) (*AuthUserListResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UserList not implemented") +} +func (UnimplementedAuthServer) UserDelete(context.Context, *AuthUserDeleteRequest) (*AuthUserDeleteResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UserDelete not implemented") +} +func (UnimplementedAuthServer) UserChangePassword(context.Context, *AuthUserChangePasswordRequest) (*AuthUserChangePasswordResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UserChangePassword not implemented") +} +func (UnimplementedAuthServer) UserGrantRole(context.Context, *AuthUserGrantRoleRequest) (*AuthUserGrantRoleResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UserGrantRole not implemented") +} +func (UnimplementedAuthServer) UserRevokeRole(context.Context, *AuthUserRevokeRoleRequest) (*AuthUserRevokeRoleResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UserRevokeRole not implemented") +} +func (UnimplementedAuthServer) RoleAdd(context.Context, *AuthRoleAddRequest) (*AuthRoleAddResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RoleAdd not implemented") +} +func (UnimplementedAuthServer) RoleGet(context.Context, *AuthRoleGetRequest) (*AuthRoleGetResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RoleGet not implemented") +} +func (UnimplementedAuthServer) RoleList(context.Context, *AuthRoleListRequest) (*AuthRoleListResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RoleList not implemented") +} +func (UnimplementedAuthServer) RoleDelete(context.Context, *AuthRoleDeleteRequest) (*AuthRoleDeleteResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RoleDelete not implemented") +} +func (UnimplementedAuthServer) RoleGrantPermission(context.Context, *AuthRoleGrantPermissionRequest) (*AuthRoleGrantPermissionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RoleGrantPermission not implemented") +} +func (UnimplementedAuthServer) RoleRevokePermission(context.Context, *AuthRoleRevokePermissionRequest) (*AuthRoleRevokePermissionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RoleRevokePermission not implemented") +} +func (UnimplementedAuthServer) mustEmbedUnimplementedAuthServer() {} + +// UnsafeAuthServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AuthServer will +// result in compilation errors. +type UnsafeAuthServer interface { + mustEmbedUnimplementedAuthServer() +} + +func RegisterAuthServer(s grpc.ServiceRegistrar, srv AuthServer) { + s.RegisterService(&Auth_ServiceDesc, srv) +} + +func _Auth_AuthEnable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthEnableRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).AuthEnable(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/AuthEnable", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).AuthEnable(ctx, req.(*AuthEnableRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_AuthDisable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthDisableRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).AuthDisable(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/AuthDisable", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).AuthDisable(ctx, req.(*AuthDisableRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_AuthStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthStatusRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).AuthStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/AuthStatus", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).AuthStatus(ctx, req.(*AuthStatusRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_Authenticate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthenticateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).Authenticate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/Authenticate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).Authenticate(ctx, req.(*AuthenticateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_UserAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthUserAddRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).UserAdd(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/UserAdd", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).UserAdd(ctx, req.(*AuthUserAddRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_UserGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthUserGetRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).UserGet(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/UserGet", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).UserGet(ctx, req.(*AuthUserGetRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_UserList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthUserListRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).UserList(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/UserList", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).UserList(ctx, req.(*AuthUserListRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_UserDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthUserDeleteRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).UserDelete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/UserDelete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).UserDelete(ctx, req.(*AuthUserDeleteRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_UserChangePassword_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthUserChangePasswordRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).UserChangePassword(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/UserChangePassword", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).UserChangePassword(ctx, req.(*AuthUserChangePasswordRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_UserGrantRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthUserGrantRoleRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).UserGrantRole(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/UserGrantRole", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).UserGrantRole(ctx, req.(*AuthUserGrantRoleRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_UserRevokeRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthUserRevokeRoleRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).UserRevokeRole(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/UserRevokeRole", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).UserRevokeRole(ctx, req.(*AuthUserRevokeRoleRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_RoleAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthRoleAddRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).RoleAdd(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/RoleAdd", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).RoleAdd(ctx, req.(*AuthRoleAddRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_RoleGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthRoleGetRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).RoleGet(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/RoleGet", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).RoleGet(ctx, req.(*AuthRoleGetRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_RoleList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthRoleListRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).RoleList(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/RoleList", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).RoleList(ctx, req.(*AuthRoleListRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_RoleDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthRoleDeleteRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).RoleDelete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/RoleDelete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).RoleDelete(ctx, req.(*AuthRoleDeleteRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_RoleGrantPermission_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthRoleGrantPermissionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).RoleGrantPermission(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/RoleGrantPermission", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).RoleGrantPermission(ctx, req.(*AuthRoleGrantPermissionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_RoleRevokePermission_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthRoleRevokePermissionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).RoleRevokePermission(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/etcdserverpb.Auth/RoleRevokePermission", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).RoleRevokePermission(ctx, req.(*AuthRoleRevokePermissionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Auth_ServiceDesc is the grpc.ServiceDesc for Auth service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Auth_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "etcdserverpb.Auth", + HandlerType: (*AuthServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "AuthEnable", + Handler: _Auth_AuthEnable_Handler, + }, + { + MethodName: "AuthDisable", + Handler: _Auth_AuthDisable_Handler, + }, + { + MethodName: "AuthStatus", + Handler: _Auth_AuthStatus_Handler, + }, + { + MethodName: "Authenticate", + Handler: _Auth_Authenticate_Handler, + }, + { + MethodName: "UserAdd", + Handler: _Auth_UserAdd_Handler, + }, + { + MethodName: "UserGet", + Handler: _Auth_UserGet_Handler, + }, + { + MethodName: "UserList", + Handler: _Auth_UserList_Handler, + }, + { + MethodName: "UserDelete", + Handler: _Auth_UserDelete_Handler, + }, + { + MethodName: "UserChangePassword", + Handler: _Auth_UserChangePassword_Handler, + }, + { + MethodName: "UserGrantRole", + Handler: _Auth_UserGrantRole_Handler, + }, + { + MethodName: "UserRevokeRole", + Handler: _Auth_UserRevokeRole_Handler, + }, + { + MethodName: "RoleAdd", + Handler: _Auth_RoleAdd_Handler, + }, + { + MethodName: "RoleGet", + Handler: _Auth_RoleGet_Handler, + }, + { + MethodName: "RoleList", + Handler: _Auth_RoleList_Handler, + }, + { + MethodName: "RoleDelete", + Handler: _Auth_RoleDelete_Handler, + }, + { + MethodName: "RoleGrantPermission", + Handler: _Auth_RoleGrantPermission_Handler, + }, + { + MethodName: "RoleRevokePermission", + Handler: _Auth_RoleRevokePermission_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "rpc.proto", +} diff --git a/server/etcdserver/api/v3election/v3electionpb/v3election.pb.go b/server/etcdserver/api/v3election/v3electionpb/v3election.pb.go index 02369cde5695..731032b6afa7 100644 --- a/server/etcdserver/api/v3election/v3electionpb/v3election.pb.go +++ b/server/etcdserver/api/v3election/v3electionpb/v3election.pb.go @@ -4,7 +4,6 @@ package v3electionpb import ( - context "context" fmt "fmt" io "io" math "math" @@ -15,9 +14,6 @@ import ( etcdserverpb "go.etcd.io/etcd/api/v3/etcdserverpb" mvccpb "go.etcd.io/etcd/api/v3/mvccpb" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" ) // Reference imports to suppress errors if they are not otherwise used. @@ -590,278 +586,6 @@ var fileDescriptor_c9b1f26cc432a035 = []byte{ 0x00, 0x00, 0xff, 0xff, 0xcd, 0x58, 0x82, 0xe2, 0xeb, 0x05, 0x00, 0x00, } -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// ElectionClient is the client API for Election service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ElectionClient interface { - // Campaign waits to acquire leadership in an election, returning a LeaderKey - // representing the leadership if successful. The LeaderKey can then be used - // to issue new values on the election, transactionally guard API requests on - // leadership still being held, and resign from the election. - Campaign(ctx context.Context, in *CampaignRequest, opts ...grpc.CallOption) (*CampaignResponse, error) - // Proclaim updates the leader's posted value with a new value. - Proclaim(ctx context.Context, in *ProclaimRequest, opts ...grpc.CallOption) (*ProclaimResponse, error) - // Leader returns the current election proclamation, if any. - Leader(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (*LeaderResponse, error) - // Observe streams election proclamations in-order as made by the election's - // elected leaders. - Observe(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (Election_ObserveClient, error) - // Resign releases election leadership so other campaigners may acquire - // leadership on the election. - Resign(ctx context.Context, in *ResignRequest, opts ...grpc.CallOption) (*ResignResponse, error) -} - -type electionClient struct { - cc *grpc.ClientConn -} - -func NewElectionClient(cc *grpc.ClientConn) ElectionClient { - return &electionClient{cc} -} - -func (c *electionClient) Campaign(ctx context.Context, in *CampaignRequest, opts ...grpc.CallOption) (*CampaignResponse, error) { - out := new(CampaignResponse) - err := c.cc.Invoke(ctx, "/v3electionpb.Election/Campaign", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *electionClient) Proclaim(ctx context.Context, in *ProclaimRequest, opts ...grpc.CallOption) (*ProclaimResponse, error) { - out := new(ProclaimResponse) - err := c.cc.Invoke(ctx, "/v3electionpb.Election/Proclaim", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *electionClient) Leader(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (*LeaderResponse, error) { - out := new(LeaderResponse) - err := c.cc.Invoke(ctx, "/v3electionpb.Election/Leader", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *electionClient) Observe(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (Election_ObserveClient, error) { - stream, err := c.cc.NewStream(ctx, &_Election_serviceDesc.Streams[0], "/v3electionpb.Election/Observe", opts...) - if err != nil { - return nil, err - } - x := &electionObserveClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Election_ObserveClient interface { - Recv() (*LeaderResponse, error) - grpc.ClientStream -} - -type electionObserveClient struct { - grpc.ClientStream -} - -func (x *electionObserveClient) Recv() (*LeaderResponse, error) { - m := new(LeaderResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *electionClient) Resign(ctx context.Context, in *ResignRequest, opts ...grpc.CallOption) (*ResignResponse, error) { - out := new(ResignResponse) - err := c.cc.Invoke(ctx, "/v3electionpb.Election/Resign", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ElectionServer is the server API for Election service. -type ElectionServer interface { - // Campaign waits to acquire leadership in an election, returning a LeaderKey - // representing the leadership if successful. The LeaderKey can then be used - // to issue new values on the election, transactionally guard API requests on - // leadership still being held, and resign from the election. - Campaign(context.Context, *CampaignRequest) (*CampaignResponse, error) - // Proclaim updates the leader's posted value with a new value. - Proclaim(context.Context, *ProclaimRequest) (*ProclaimResponse, error) - // Leader returns the current election proclamation, if any. - Leader(context.Context, *LeaderRequest) (*LeaderResponse, error) - // Observe streams election proclamations in-order as made by the election's - // elected leaders. - Observe(*LeaderRequest, Election_ObserveServer) error - // Resign releases election leadership so other campaigners may acquire - // leadership on the election. - Resign(context.Context, *ResignRequest) (*ResignResponse, error) -} - -// UnimplementedElectionServer can be embedded to have forward compatible implementations. -type UnimplementedElectionServer struct { -} - -func (*UnimplementedElectionServer) Campaign(ctx context.Context, req *CampaignRequest) (*CampaignResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Campaign not implemented") -} -func (*UnimplementedElectionServer) Proclaim(ctx context.Context, req *ProclaimRequest) (*ProclaimResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Proclaim not implemented") -} -func (*UnimplementedElectionServer) Leader(ctx context.Context, req *LeaderRequest) (*LeaderResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Leader not implemented") -} -func (*UnimplementedElectionServer) Observe(req *LeaderRequest, srv Election_ObserveServer) error { - return status.Errorf(codes.Unimplemented, "method Observe not implemented") -} -func (*UnimplementedElectionServer) Resign(ctx context.Context, req *ResignRequest) (*ResignResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Resign not implemented") -} - -func RegisterElectionServer(s *grpc.Server, srv ElectionServer) { - s.RegisterService(&_Election_serviceDesc, srv) -} - -func _Election_Campaign_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CampaignRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ElectionServer).Campaign(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/v3electionpb.Election/Campaign", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ElectionServer).Campaign(ctx, req.(*CampaignRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Election_Proclaim_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProclaimRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ElectionServer).Proclaim(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/v3electionpb.Election/Proclaim", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ElectionServer).Proclaim(ctx, req.(*ProclaimRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Election_Leader_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(LeaderRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ElectionServer).Leader(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/v3electionpb.Election/Leader", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ElectionServer).Leader(ctx, req.(*LeaderRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Election_Observe_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(LeaderRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(ElectionServer).Observe(m, &electionObserveServer{stream}) -} - -type Election_ObserveServer interface { - Send(*LeaderResponse) error - grpc.ServerStream -} - -type electionObserveServer struct { - grpc.ServerStream -} - -func (x *electionObserveServer) Send(m *LeaderResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _Election_Resign_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ResignRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ElectionServer).Resign(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/v3electionpb.Election/Resign", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ElectionServer).Resign(ctx, req.(*ResignRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Election_serviceDesc = grpc.ServiceDesc{ - ServiceName: "v3electionpb.Election", - HandlerType: (*ElectionServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Campaign", - Handler: _Election_Campaign_Handler, - }, - { - MethodName: "Proclaim", - Handler: _Election_Proclaim_Handler, - }, - { - MethodName: "Leader", - Handler: _Election_Leader_Handler, - }, - { - MethodName: "Resign", - Handler: _Election_Resign_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "Observe", - Handler: _Election_Observe_Handler, - ServerStreams: true, - }, - }, - Metadata: "v3election.proto", -} - func (m *CampaignRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) diff --git a/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go b/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go new file mode 100644 index 000000000000..e1fb40c05ee9 --- /dev/null +++ b/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go @@ -0,0 +1,294 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. + +package v3electionpb + +import ( + context "context" + + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// ElectionClient is the client API for Election service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ElectionClient interface { + // Campaign waits to acquire leadership in an election, returning a LeaderKey + // representing the leadership if successful. The LeaderKey can then be used + // to issue new values on the election, transactionally guard API requests on + // leadership still being held, and resign from the election. + Campaign(ctx context.Context, in *CampaignRequest, opts ...grpc.CallOption) (*CampaignResponse, error) + // Proclaim updates the leader's posted value with a new value. + Proclaim(ctx context.Context, in *ProclaimRequest, opts ...grpc.CallOption) (*ProclaimResponse, error) + // Leader returns the current election proclamation, if any. + Leader(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (*LeaderResponse, error) + // Observe streams election proclamations in-order as made by the election's + // elected leaders. + Observe(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (Election_ObserveClient, error) + // Resign releases election leadership so other campaigners may acquire + // leadership on the election. + Resign(ctx context.Context, in *ResignRequest, opts ...grpc.CallOption) (*ResignResponse, error) +} + +type electionClient struct { + cc grpc.ClientConnInterface +} + +func NewElectionClient(cc grpc.ClientConnInterface) ElectionClient { + return &electionClient{cc} +} + +func (c *electionClient) Campaign(ctx context.Context, in *CampaignRequest, opts ...grpc.CallOption) (*CampaignResponse, error) { + out := new(CampaignResponse) + err := c.cc.Invoke(ctx, "/v3electionpb.Election/Campaign", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *electionClient) Proclaim(ctx context.Context, in *ProclaimRequest, opts ...grpc.CallOption) (*ProclaimResponse, error) { + out := new(ProclaimResponse) + err := c.cc.Invoke(ctx, "/v3electionpb.Election/Proclaim", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *electionClient) Leader(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (*LeaderResponse, error) { + out := new(LeaderResponse) + err := c.cc.Invoke(ctx, "/v3electionpb.Election/Leader", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *electionClient) Observe(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (Election_ObserveClient, error) { + stream, err := c.cc.NewStream(ctx, &Election_ServiceDesc.Streams[0], "/v3electionpb.Election/Observe", opts...) + if err != nil { + return nil, err + } + x := &electionObserveClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type Election_ObserveClient interface { + Recv() (*LeaderResponse, error) + grpc.ClientStream +} + +type electionObserveClient struct { + grpc.ClientStream +} + +func (x *electionObserveClient) Recv() (*LeaderResponse, error) { + m := new(LeaderResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *electionClient) Resign(ctx context.Context, in *ResignRequest, opts ...grpc.CallOption) (*ResignResponse, error) { + out := new(ResignResponse) + err := c.cc.Invoke(ctx, "/v3electionpb.Election/Resign", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ElectionServer is the server API for Election service. +// All implementations must embed UnimplementedElectionServer +// for forward compatibility +type ElectionServer interface { + // Campaign waits to acquire leadership in an election, returning a LeaderKey + // representing the leadership if successful. The LeaderKey can then be used + // to issue new values on the election, transactionally guard API requests on + // leadership still being held, and resign from the election. + Campaign(context.Context, *CampaignRequest) (*CampaignResponse, error) + // Proclaim updates the leader's posted value with a new value. + Proclaim(context.Context, *ProclaimRequest) (*ProclaimResponse, error) + // Leader returns the current election proclamation, if any. + Leader(context.Context, *LeaderRequest) (*LeaderResponse, error) + // Observe streams election proclamations in-order as made by the election's + // elected leaders. + Observe(*LeaderRequest, Election_ObserveServer) error + // Resign releases election leadership so other campaigners may acquire + // leadership on the election. + Resign(context.Context, *ResignRequest) (*ResignResponse, error) + mustEmbedUnimplementedElectionServer() +} + +// UnimplementedElectionServer must be embedded to have forward compatible implementations. +type UnimplementedElectionServer struct { +} + +func (UnimplementedElectionServer) Campaign(context.Context, *CampaignRequest) (*CampaignResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Campaign not implemented") +} +func (UnimplementedElectionServer) Proclaim(context.Context, *ProclaimRequest) (*ProclaimResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Proclaim not implemented") +} +func (UnimplementedElectionServer) Leader(context.Context, *LeaderRequest) (*LeaderResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Leader not implemented") +} +func (UnimplementedElectionServer) Observe(*LeaderRequest, Election_ObserveServer) error { + return status.Errorf(codes.Unimplemented, "method Observe not implemented") +} +func (UnimplementedElectionServer) Resign(context.Context, *ResignRequest) (*ResignResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Resign not implemented") +} +func (UnimplementedElectionServer) mustEmbedUnimplementedElectionServer() {} + +// UnsafeElectionServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ElectionServer will +// result in compilation errors. +type UnsafeElectionServer interface { + mustEmbedUnimplementedElectionServer() +} + +func RegisterElectionServer(s grpc.ServiceRegistrar, srv ElectionServer) { + s.RegisterService(&Election_ServiceDesc, srv) +} + +func _Election_Campaign_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CampaignRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ElectionServer).Campaign(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/v3electionpb.Election/Campaign", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ElectionServer).Campaign(ctx, req.(*CampaignRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Election_Proclaim_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ProclaimRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ElectionServer).Proclaim(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/v3electionpb.Election/Proclaim", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ElectionServer).Proclaim(ctx, req.(*ProclaimRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Election_Leader_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LeaderRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ElectionServer).Leader(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/v3electionpb.Election/Leader", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ElectionServer).Leader(ctx, req.(*LeaderRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Election_Observe_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(LeaderRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ElectionServer).Observe(m, &electionObserveServer{stream}) +} + +type Election_ObserveServer interface { + Send(*LeaderResponse) error + grpc.ServerStream +} + +type electionObserveServer struct { + grpc.ServerStream +} + +func (x *electionObserveServer) Send(m *LeaderResponse) error { + return x.ServerStream.SendMsg(m) +} + +func _Election_Resign_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ResignRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ElectionServer).Resign(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/v3electionpb.Election/Resign", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ElectionServer).Resign(ctx, req.(*ResignRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Election_ServiceDesc is the grpc.ServiceDesc for Election service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Election_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "v3electionpb.Election", + HandlerType: (*ElectionServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Campaign", + Handler: _Election_Campaign_Handler, + }, + { + MethodName: "Proclaim", + Handler: _Election_Proclaim_Handler, + }, + { + MethodName: "Leader", + Handler: _Election_Leader_Handler, + }, + { + MethodName: "Resign", + Handler: _Election_Resign_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "Observe", + Handler: _Election_Observe_Handler, + ServerStreams: true, + }, + }, + Metadata: "v3election.proto", +} diff --git a/server/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go b/server/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go index 39c04abe179b..9c5a3d5ed320 100644 --- a/server/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go +++ b/server/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go @@ -4,7 +4,6 @@ package v3lockpb import ( - context "context" fmt "fmt" io "io" math "math" @@ -14,9 +13,6 @@ import ( proto "github.com/golang/protobuf/proto" etcdserverpb "go.etcd.io/etcd/api/v3/etcdserverpb" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" ) // Reference imports to suppress errors if they are not otherwise used. @@ -280,140 +276,6 @@ var fileDescriptor_52389b3e2f253201 = []byte{ 0x70, 0x02, 0x00, 0x00, } -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// LockClient is the client API for Lock service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type LockClient interface { - // Lock acquires a distributed shared lock on a given named lock. - // On success, it will return a unique key that exists so long as the - // lock is held by the caller. This key can be used in conjunction with - // transactions to safely ensure updates to etcd only occur while holding - // lock ownership. The lock is held until Unlock is called on the key or the - // lease associate with the owner expires. - Lock(ctx context.Context, in *LockRequest, opts ...grpc.CallOption) (*LockResponse, error) - // Unlock takes a key returned by Lock and releases the hold on lock. The - // next Lock caller waiting for the lock will then be woken up and given - // ownership of the lock. - Unlock(ctx context.Context, in *UnlockRequest, opts ...grpc.CallOption) (*UnlockResponse, error) -} - -type lockClient struct { - cc *grpc.ClientConn -} - -func NewLockClient(cc *grpc.ClientConn) LockClient { - return &lockClient{cc} -} - -func (c *lockClient) Lock(ctx context.Context, in *LockRequest, opts ...grpc.CallOption) (*LockResponse, error) { - out := new(LockResponse) - err := c.cc.Invoke(ctx, "/v3lockpb.Lock/Lock", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *lockClient) Unlock(ctx context.Context, in *UnlockRequest, opts ...grpc.CallOption) (*UnlockResponse, error) { - out := new(UnlockResponse) - err := c.cc.Invoke(ctx, "/v3lockpb.Lock/Unlock", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// LockServer is the server API for Lock service. -type LockServer interface { - // Lock acquires a distributed shared lock on a given named lock. - // On success, it will return a unique key that exists so long as the - // lock is held by the caller. This key can be used in conjunction with - // transactions to safely ensure updates to etcd only occur while holding - // lock ownership. The lock is held until Unlock is called on the key or the - // lease associate with the owner expires. - Lock(context.Context, *LockRequest) (*LockResponse, error) - // Unlock takes a key returned by Lock and releases the hold on lock. The - // next Lock caller waiting for the lock will then be woken up and given - // ownership of the lock. - Unlock(context.Context, *UnlockRequest) (*UnlockResponse, error) -} - -// UnimplementedLockServer can be embedded to have forward compatible implementations. -type UnimplementedLockServer struct { -} - -func (*UnimplementedLockServer) Lock(ctx context.Context, req *LockRequest) (*LockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Lock not implemented") -} -func (*UnimplementedLockServer) Unlock(ctx context.Context, req *UnlockRequest) (*UnlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Unlock not implemented") -} - -func RegisterLockServer(s *grpc.Server, srv LockServer) { - s.RegisterService(&_Lock_serviceDesc, srv) -} - -func _Lock_Lock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(LockRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LockServer).Lock(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/v3lockpb.Lock/Lock", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LockServer).Lock(ctx, req.(*LockRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Lock_Unlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UnlockRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LockServer).Unlock(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/v3lockpb.Lock/Unlock", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LockServer).Unlock(ctx, req.(*UnlockRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Lock_serviceDesc = grpc.ServiceDesc{ - ServiceName: "v3lockpb.Lock", - HandlerType: (*LockServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Lock", - Handler: _Lock_Lock_Handler, - }, - { - MethodName: "Unlock", - Handler: _Lock_Unlock_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "v3lock.proto", -} - func (m *LockRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) diff --git a/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go b/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go new file mode 100644 index 000000000000..08da4bcdffd0 --- /dev/null +++ b/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go @@ -0,0 +1,156 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. + +package v3lockpb + +import ( + context "context" + + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// LockClient is the client API for Lock service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type LockClient interface { + // Lock acquires a distributed shared lock on a given named lock. + // On success, it will return a unique key that exists so long as the + // lock is held by the caller. This key can be used in conjunction with + // transactions to safely ensure updates to etcd only occur while holding + // lock ownership. The lock is held until Unlock is called on the key or the + // lease associate with the owner expires. + Lock(ctx context.Context, in *LockRequest, opts ...grpc.CallOption) (*LockResponse, error) + // Unlock takes a key returned by Lock and releases the hold on lock. The + // next Lock caller waiting for the lock will then be woken up and given + // ownership of the lock. + Unlock(ctx context.Context, in *UnlockRequest, opts ...grpc.CallOption) (*UnlockResponse, error) +} + +type lockClient struct { + cc grpc.ClientConnInterface +} + +func NewLockClient(cc grpc.ClientConnInterface) LockClient { + return &lockClient{cc} +} + +func (c *lockClient) Lock(ctx context.Context, in *LockRequest, opts ...grpc.CallOption) (*LockResponse, error) { + out := new(LockResponse) + err := c.cc.Invoke(ctx, "/v3lockpb.Lock/Lock", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *lockClient) Unlock(ctx context.Context, in *UnlockRequest, opts ...grpc.CallOption) (*UnlockResponse, error) { + out := new(UnlockResponse) + err := c.cc.Invoke(ctx, "/v3lockpb.Lock/Unlock", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// LockServer is the server API for Lock service. +// All implementations must embed UnimplementedLockServer +// for forward compatibility +type LockServer interface { + // Lock acquires a distributed shared lock on a given named lock. + // On success, it will return a unique key that exists so long as the + // lock is held by the caller. This key can be used in conjunction with + // transactions to safely ensure updates to etcd only occur while holding + // lock ownership. The lock is held until Unlock is called on the key or the + // lease associate with the owner expires. + Lock(context.Context, *LockRequest) (*LockResponse, error) + // Unlock takes a key returned by Lock and releases the hold on lock. The + // next Lock caller waiting for the lock will then be woken up and given + // ownership of the lock. + Unlock(context.Context, *UnlockRequest) (*UnlockResponse, error) + mustEmbedUnimplementedLockServer() +} + +// UnimplementedLockServer must be embedded to have forward compatible implementations. +type UnimplementedLockServer struct { +} + +func (UnimplementedLockServer) Lock(context.Context, *LockRequest) (*LockResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Lock not implemented") +} +func (UnimplementedLockServer) Unlock(context.Context, *UnlockRequest) (*UnlockResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Unlock not implemented") +} +func (UnimplementedLockServer) mustEmbedUnimplementedLockServer() {} + +// UnsafeLockServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to LockServer will +// result in compilation errors. +type UnsafeLockServer interface { + mustEmbedUnimplementedLockServer() +} + +func RegisterLockServer(s grpc.ServiceRegistrar, srv LockServer) { + s.RegisterService(&Lock_ServiceDesc, srv) +} + +func _Lock_Lock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LockRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LockServer).Lock(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/v3lockpb.Lock/Lock", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LockServer).Lock(ctx, req.(*LockRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Lock_Unlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UnlockRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LockServer).Unlock(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/v3lockpb.Lock/Unlock", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LockServer).Unlock(ctx, req.(*UnlockRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Lock_ServiceDesc is the grpc.ServiceDesc for Lock service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Lock_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "v3lockpb.Lock", + HandlerType: (*LockServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Lock", + Handler: _Lock_Lock_Handler, + }, + { + MethodName: "Unlock", + Handler: _Lock_Unlock_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "v3lock.proto", +} From 3ad14cc4bb38af3ac59539a78ff99d690461438f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Feb 2026 20:52:47 +0000 Subject: [PATCH 0796/1068] build(deps): bump github/codeql-action from 4.32.1 to 4.32.2 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.1 to 4.32.2. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/6bc82e05fd0ea64601dd4b465378bbcf57de0314...45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.32.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index b4ae4241fe1a..d0a839798769 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@6bc82e05fd0ea64601dd4b465378bbcf57de0314 # v4.32.1 + uses: github/codeql-action/init@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@6bc82e05fd0ea64601dd4b465378bbcf57de0314 # v4.32.1 + uses: github/codeql-action/autobuild@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@6bc82e05fd0ea64601dd4b465378bbcf57de0314 # v4.32.1 + uses: github/codeql-action/analyze@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index a3d8ee005f08..2a998f553688 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@6bc82e05fd0ea64601dd4b465378bbcf57de0314 # v4.32.1 + uses: github/codeql-action/upload-sarif@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2 with: sarif_file: results.sarif From a5a351b01b1d41e83c691bd9a048a3eafb0f4948 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Tue, 10 Feb 2026 16:55:02 +0100 Subject: [PATCH 0797/1068] dependency: bump golang.org/x/mod from 0.32.0 to 0.33.0, bump golang.org/x/tools from 0.41.0 to 0.42.0, bump golang.org/x/sys from 0.40.0 to 0.41.0, bump golang.org/x/text from 0.33.0 to 0.34.0 Reference: - #21279 - #21278 - #21277 - #21276 - #21273 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 6 +++--- api/go.sum | 12 ++++++------ cache/go.mod | 6 +++--- cache/go.sum | 12 ++++++------ client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 6 +++--- client/v3/go.sum | 12 ++++++------ etcdctl/go.mod | 6 +++--- etcdctl/go.sum | 12 ++++++------ etcdutl/go.mod | 8 ++++---- etcdutl/go.sum | 16 ++++++++-------- go.mod | 12 ++++++------ go.sum | 24 ++++++++++++------------ go.work.sum | 8 +++++--- pkg/go.mod | 6 +++--- pkg/go.sum | 12 ++++++------ server/go.mod | 8 ++++---- server/go.sum | 16 ++++++++-------- tests/go.mod | 8 ++++---- tests/go.sum | 16 ++++++++-------- tools/mod/go.mod | 16 ++++++++-------- tools/mod/go.sum | 32 ++++++++++++++++---------------- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 6 +++--- tools/testgrid-analysis/go.sum | 12 ++++++------ 27 files changed, 143 insertions(+), 141 deletions(-) diff --git a/api/go.mod b/api/go.mod index 89115647c983..06ea8e001a93 100644 --- a/api/go.mod +++ b/api/go.mod @@ -21,9 +21,9 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.40.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index d78ad3f99b36..e8f6c6b202d8 100644 --- a/api/go.sum +++ b/api/go.sum @@ -53,20 +53,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/cache/go.mod b/cache/go.mod index 52bb0af63d89..68439063842f 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -23,9 +23,9 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/grpc v1.78.0 // indirect diff --git a/cache/go.sum b/cache/go.sum index 48ba37bf625f..f9a52bda6a8b 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -79,20 +79,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index d3de111dba9b..ebaae767158c 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.7.0 github.com/stretchr/testify v1.11.1 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.40.0 + golang.org/x/sys v0.41.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index 081cf854dfb8..3383826c8389 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -24,8 +24,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index 91906f7cfa7b..9449f362c586 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -36,9 +36,9 @@ require ( go.opentelemetry.io/otel/trace v1.40.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/protobuf v1.36.11 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 874c2af465e4..09ccad65ae85 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -87,20 +87,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 0f3ebe4533b0..d96125b8b812 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -42,9 +42,9 @@ require ( github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/protobuf v1.36.11 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index fb9593682772..ccd427e76119 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -119,8 +119,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -128,12 +128,12 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 08cf81a36537..2cc0f1a3a7c2 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -80,10 +80,10 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.47.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/crypto v0.48.0 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 815b0b4193de..fdc43afeebaa 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -148,8 +148,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -157,8 +157,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -169,12 +169,12 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index 387566a71258..6c84859ae3eb 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 - golang.org/x/tools v0.41.0 + golang.org/x/tools v0.42.0 google.golang.org/grpc v1.78.0 google.golang.org/protobuf v1.36.11 ) @@ -95,12 +95,12 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.47.0 // indirect - golang.org/x/mod v0.32.0 // indirect - golang.org/x/net v0.49.0 // indirect + golang.org/x/crypto v0.48.0 // indirect + golang.org/x/mod v0.33.0 // indirect + golang.org/x/net v0.50.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index 02c339d1801f..067d615abe41 100644 --- a/go.sum +++ b/go.sum @@ -188,16 +188,16 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c= -golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU= +golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= +golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -207,8 +207,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -224,12 +224,12 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -240,8 +240,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc= -golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= +golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= +golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go.work.sum b/go.work.sum index 1a926c25499c..5fa4ca8d6f52 100644 --- a/go.work.sum +++ b/go.work.sum @@ -931,7 +931,7 @@ golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhp golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg= +golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= @@ -944,7 +944,7 @@ golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= @@ -967,6 +967,7 @@ golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= @@ -977,12 +978,13 @@ golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= -golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc= +golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= diff --git a/pkg/go.mod b/pkg/go.mod index b71ca4f320ff..0bf4909bf3ac 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.40.0 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.40.0 + golang.org/x/sys v0.41.0 google.golang.org/grpc v1.78.0 ) @@ -26,8 +26,8 @@ require ( go.opentelemetry.io/otel v1.40.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 336c0cc039bc..f733220ddaa1 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -56,12 +56,12 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= diff --git a/server/go.mod b/server/go.mod index b9cc6ff29abf..e1f50cf521b5 100644 --- a/server/go.mod +++ b/server/go.mod @@ -35,8 +35,8 @@ require ( go.opentelemetry.io/otel/sdk v1.40.0 go.opentelemetry.io/otel/trace v1.40.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.47.0 - golang.org/x/net v0.49.0 + golang.org/x/crypto v0.48.0 + golang.org/x/net v0.50.0 golang.org/x/time v0.14.0 google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 google.golang.org/grpc v1.78.0 @@ -69,8 +69,8 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index 809833b21fb5..7d108dd766ca 100644 --- a/server/go.sum +++ b/server/go.sum @@ -126,8 +126,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -135,8 +135,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -146,12 +146,12 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index c6666c11911c..e2ad76a4a557 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -47,7 +47,7 @@ require ( go.opentelemetry.io/otel/sdk v1.40.0 go.opentelemetry.io/proto/otlp v1.9.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.47.0 + golang.org/x/crypto v0.48.0 golang.org/x/sync v0.19.0 golang.org/x/time v0.14.0 google.golang.org/grpc v1.78.0 @@ -98,9 +98,9 @@ require ( go.opentelemetry.io/otel/trace v1.40.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index f49d3f1b4188..310140c210de 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -194,8 +194,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -211,8 +211,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -228,12 +228,12 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 562c145ecfdf..2a5097baa9e1 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -16,7 +16,7 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee - golang.org/x/tools v0.41.0 + golang.org/x/tools v0.42.0 gotest.tools/gotestsum v1.13.0 gotest.tools/v3 v3.5.2 honnef.co/go/tools v0.6.1 @@ -236,16 +236,16 @@ require ( go.uber.org/zap v1.27.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.47.0 // indirect + golang.org/x/crypto v0.48.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546 // indirect - golang.org/x/mod v0.32.0 // indirect - golang.org/x/net v0.49.0 // indirect + golang.org/x/mod v0.33.0 // indirect + golang.org/x/net v0.50.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/telemetry v0.0.0-20260109210033-bd525da824e2 // indirect - golang.org/x/term v0.39.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 // indirect + golang.org/x/term v0.40.0 // indirect + golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/grpc v1.78.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 39c47c5f378d..6174a9ee7abc 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -576,8 +576,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -593,8 +593,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c= -golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU= +golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= +golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -615,8 +615,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -657,10 +657,10 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/telemetry v0.0.0-20260109210033-bd525da824e2 h1:O1cMQHRfwNpDfDJerqRoE2oD+AFlyid87D40L/OkkJo= -golang.org/x/telemetry v0.0.0-20260109210033-bd525da824e2/go.mod h1:b7fPSJ0pKZ3ccUh8gnTONJxhn3c/PS6tyzQvyqw4iA8= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 h1:bTLqdHv7xrGlFbvf5/TXNxy/iUwwdkjhqQTJDjW7aj0= +golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4/go.mod h1:g5NllXBEermZrmR51cJDQxmJUHUOfRAaNyWBM+R+548= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -673,8 +673,8 @@ golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY= -golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww= +golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= +golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -688,8 +688,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= @@ -704,8 +704,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc= -golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= +golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= +golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 18874364cba3..c63766869180 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -22,6 +22,6 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/image v0.25.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/text v0.34.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 018d6558aefa..a489a1581423 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -55,8 +55,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index e393c0a76fe5..f159584fac7d 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -17,9 +17,9 @@ require ( github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/otel v1.40.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/grpc v1.78.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index db97af03de24..a8f21597b3d4 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1341,8 +1341,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1489,8 +1489,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1521,8 +1521,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From f7d3dc04b50356222d2fc320a9c47d83d3837863 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 5 Feb 2026 19:04:58 -0500 Subject: [PATCH 0798/1068] recover: Embed unimplemented grpc interfaces Signed-off-by: Jordan Liggitt --- client/v3/client_test.go | 4 ++-- client/v3/mock/mockserver/mockserver.go | 10 ++++++++-- server/etcdserver/api/v3election/election.go | 4 +++- server/etcdserver/api/v3lock/lock.go | 4 +++- server/etcdserver/api/v3rpc/auth.go | 2 ++ server/etcdserver/api/v3rpc/key.go | 2 ++ server/etcdserver/api/v3rpc/lease.go | 1 + server/etcdserver/api/v3rpc/maintenance.go | 3 +++ server/etcdserver/api/v3rpc/member.go | 2 ++ server/etcdserver/api/v3rpc/watch.go | 3 +++ server/proxy/grpcproxy/auth.go | 2 ++ server/proxy/grpcproxy/cluster.go | 3 +++ server/proxy/grpcproxy/election.go | 2 ++ server/proxy/grpcproxy/kv.go | 2 ++ server/proxy/grpcproxy/lease.go | 3 +++ server/proxy/grpcproxy/lock.go | 2 ++ server/proxy/grpcproxy/maintenance.go | 2 ++ server/proxy/grpcproxy/watch.go | 3 +++ 18 files changed, 48 insertions(+), 6 deletions(-) diff --git a/client/v3/client_test.go b/client/v3/client_test.go index 4d98c10f304e..6380f59fadf3 100644 --- a/client/v3/client_test.go +++ b/client/v3/client_test.go @@ -546,7 +546,7 @@ func (mm mockMaintenance) Downgrade(ctx context.Context, action DowngradeAction, } type mockFailingAuthServer struct { - *etcdserverpb.UnimplementedAuthServer + etcdserverpb.UnimplementedAuthServer } func (mockFailingAuthServer) Authenticate(context.Context, *etcdserverpb.AuthenticateRequest) (*etcdserverpb.AuthenticateResponse, error) { @@ -554,7 +554,7 @@ func (mockFailingAuthServer) Authenticate(context.Context, *etcdserverpb.Authent } type mockAuthServer struct { - *etcdserverpb.UnimplementedAuthServer + etcdserverpb.UnimplementedAuthServer } func (mockAuthServer) Authenticate(context.Context, *etcdserverpb.AuthenticateRequest) (*etcdserverpb.AuthenticateResponse, error) { diff --git a/client/v3/mock/mockserver/mockserver.go b/client/v3/mock/mockserver/mockserver.go index 0467cfd5df55..618cf6774d92 100644 --- a/client/v3/mock/mockserver/mockserver.go +++ b/client/v3/mock/mockserver/mockserver.go @@ -165,7 +165,10 @@ func (ms *MockServers) Stop() { ms.wg.Wait() } -type mockKVServer struct{} +type mockKVServer struct { + // we want compile errors if new methods are added + pb.UnsafeKVServer +} func (m *mockKVServer) Range(context.Context, *pb.RangeRequest) (*pb.RangeResponse, error) { return &pb.RangeResponse{}, nil @@ -191,7 +194,10 @@ func (m *mockKVServer) Lease(context.Context, *pb.LeaseGrantRequest) (*pb.LeaseG return &pb.LeaseGrantResponse{}, nil } -type mockLeaseServer struct{} +type mockLeaseServer struct { + // we want compile errors if new methods are added + pb.UnsafeLeaseServer +} func (s mockLeaseServer) LeaseGrant(context.Context, *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error) { return &pb.LeaseGrantResponse{}, nil diff --git a/server/etcdserver/api/v3election/election.go b/server/etcdserver/api/v3election/election.go index 77a9c4bcb42c..6f806f14c418 100644 --- a/server/etcdserver/api/v3election/election.go +++ b/server/etcdserver/api/v3election/election.go @@ -29,10 +29,12 @@ var ErrMissingLeaderKey = errors.New(`"leader" field must be provided`) type electionServer struct { c *clientv3.Client + // we want compile errors if new methods are added + epb.UnsafeElectionServer } func NewElectionServer(c *clientv3.Client) epb.ElectionServer { - return &electionServer{c} + return &electionServer{c: c} } func (es *electionServer) Campaign(ctx context.Context, req *epb.CampaignRequest) (*epb.CampaignResponse, error) { diff --git a/server/etcdserver/api/v3lock/lock.go b/server/etcdserver/api/v3lock/lock.go index c8ef56ebaebb..1cf633561513 100644 --- a/server/etcdserver/api/v3lock/lock.go +++ b/server/etcdserver/api/v3lock/lock.go @@ -24,10 +24,12 @@ import ( type lockServer struct { c *clientv3.Client + // we want compile errors if new methods are added + v3lockpb.UnsafeLockServer } func NewLockServer(c *clientv3.Client) v3lockpb.LockServer { - return &lockServer{c} + return &lockServer{c: c} } func (ls *lockServer) Lock(ctx context.Context, req *v3lockpb.LockRequest) (*v3lockpb.LockResponse, error) { diff --git a/server/etcdserver/api/v3rpc/auth.go b/server/etcdserver/api/v3rpc/auth.go index 15ef5f34777f..15b0bdd13619 100644 --- a/server/etcdserver/api/v3rpc/auth.go +++ b/server/etcdserver/api/v3rpc/auth.go @@ -24,6 +24,8 @@ import ( type AuthServer struct { authenticator etcdserver.Authenticator + // we want compile errors if new methods are added + pb.UnsafeAuthServer } func NewAuthServer(s *etcdserver.EtcdServer) *AuthServer { diff --git a/server/etcdserver/api/v3rpc/key.go b/server/etcdserver/api/v3rpc/key.go index 3da35922c2c2..bbf790753114 100644 --- a/server/etcdserver/api/v3rpc/key.go +++ b/server/etcdserver/api/v3rpc/key.go @@ -33,6 +33,8 @@ type kvServer struct { // Txn.Success can have at most 128 operations, // and Txn.Failure can have at most 128 operations. maxTxnOps uint + // we want compile errors if new methods are added + pb.UnsafeKVServer } func NewKVServer(s *etcdserver.EtcdServer) pb.KVServer { diff --git a/server/etcdserver/api/v3rpc/lease.go b/server/etcdserver/api/v3rpc/lease.go index 4f871d770368..97ee8a901bd3 100644 --- a/server/etcdserver/api/v3rpc/lease.go +++ b/server/etcdserver/api/v3rpc/lease.go @@ -30,6 +30,7 @@ type LeaseServer struct { lg *zap.Logger hdr header le etcdserver.Lessor + pb.UnsafeLeaseServer } func NewLeaseServer(s *etcdserver.EtcdServer) pb.LeaseServer { diff --git a/server/etcdserver/api/v3rpc/maintenance.go b/server/etcdserver/api/v3rpc/maintenance.go index cf65dad0da7c..9a437bc5bd5b 100644 --- a/server/etcdserver/api/v3rpc/maintenance.go +++ b/server/etcdserver/api/v3rpc/maintenance.go @@ -89,6 +89,9 @@ type maintenanceServer struct { cg ConfigGetter healthNotifier notifier + + // we want compile errors if new methods are added + pb.UnsafeMaintenanceServer } func NewMaintenanceServer(s *etcdserver.EtcdServer, healthNotifier notifier) pb.MaintenanceServer { diff --git a/server/etcdserver/api/v3rpc/member.go b/server/etcdserver/api/v3rpc/member.go index 57768b39256a..29293e0f535a 100644 --- a/server/etcdserver/api/v3rpc/member.go +++ b/server/etcdserver/api/v3rpc/member.go @@ -29,6 +29,8 @@ import ( type ClusterServer struct { cluster api.Cluster server *etcdserver.EtcdServer + // we want compile errors if new methods are added + pb.UnsafeClusterServer } func NewClusterServer(s *etcdserver.EtcdServer) *ClusterServer { diff --git a/server/etcdserver/api/v3rpc/watch.go b/server/etcdserver/api/v3rpc/watch.go index 3869260a9f48..193cb185d54e 100644 --- a/server/etcdserver/api/v3rpc/watch.go +++ b/server/etcdserver/api/v3rpc/watch.go @@ -51,6 +51,9 @@ type watchServer struct { sg apply.RaftStatusGetter watchable mvcc.WatchableKV ag AuthGetter + + // we want compile errors if new methods are added + pb.UnsafeWatchServer } // NewWatchServer returns a new watch server. diff --git a/server/proxy/grpcproxy/auth.go b/server/proxy/grpcproxy/auth.go index 753dfa47acfb..f85f8b223d3f 100644 --- a/server/proxy/grpcproxy/auth.go +++ b/server/proxy/grpcproxy/auth.go @@ -23,6 +23,8 @@ import ( type AuthProxy struct { authClient pb.AuthClient + // we want compile errors if new methods are added + pb.UnsafeAuthServer } func NewAuthProxy(c *clientv3.Client) pb.AuthServer { diff --git a/server/proxy/grpcproxy/cluster.go b/server/proxy/grpcproxy/cluster.go index d5d9007d6ebf..3d478ce44bd5 100644 --- a/server/proxy/grpcproxy/cluster.go +++ b/server/proxy/grpcproxy/cluster.go @@ -45,6 +45,9 @@ type clusterProxy struct { umu sync.RWMutex umap map[string]endpoints.Endpoint + + // we want compile errors if new methods are added + pb.UnsafeClusterServer } // NewClusterProxy takes optional prefix to fetch grpc-proxy member endpoints. diff --git a/server/proxy/grpcproxy/election.go b/server/proxy/grpcproxy/election.go index a52abef686d5..cf24deec7e16 100644 --- a/server/proxy/grpcproxy/election.go +++ b/server/proxy/grpcproxy/election.go @@ -23,6 +23,8 @@ import ( type electionProxy struct { electionClient v3electionpb.ElectionClient + // we want compile errors if new methods are added + v3electionpb.UnsafeElectionServer } func NewElectionProxy(client *clientv3.Client) v3electionpb.ElectionServer { diff --git a/server/proxy/grpcproxy/kv.go b/server/proxy/grpcproxy/kv.go index 3df361d644e0..865cd36b5617 100644 --- a/server/proxy/grpcproxy/kv.go +++ b/server/proxy/grpcproxy/kv.go @@ -26,6 +26,8 @@ import ( type kvProxy struct { kv clientv3.KV cache cache.Cache + // we want compile errors if new methods are added + pb.UnsafeKVServer } func NewKvProxy(c *clientv3.Client) (pb.KVServer, <-chan struct{}) { diff --git a/server/proxy/grpcproxy/lease.go b/server/proxy/grpcproxy/lease.go index dc42dc5a0d88..8fd403fa0f4d 100644 --- a/server/proxy/grpcproxy/lease.go +++ b/server/proxy/grpcproxy/lease.go @@ -47,6 +47,9 @@ type leaseProxy struct { // wg waits until all outstanding leaseProxyStream quit. wg sync.WaitGroup + + // we want compile errors if new methods are added + pb.LeaseServer } func NewLeaseProxy(ctx context.Context, c *clientv3.Client) (pb.LeaseServer, <-chan struct{}) { diff --git a/server/proxy/grpcproxy/lock.go b/server/proxy/grpcproxy/lock.go index a7c1af5c7e3e..275a78f4b80a 100644 --- a/server/proxy/grpcproxy/lock.go +++ b/server/proxy/grpcproxy/lock.go @@ -23,6 +23,8 @@ import ( type lockProxy struct { lockClient v3lockpb.LockClient + // we want compile errors if new methods are added + v3lockpb.UnsafeLockServer } func NewLockProxy(client *clientv3.Client) v3lockpb.LockServer { diff --git a/server/proxy/grpcproxy/maintenance.go b/server/proxy/grpcproxy/maintenance.go index 553b66c4b73b..1174f3d804fa 100644 --- a/server/proxy/grpcproxy/maintenance.go +++ b/server/proxy/grpcproxy/maintenance.go @@ -25,6 +25,8 @@ import ( type maintenanceProxy struct { maintenanceClient pb.MaintenanceClient + // we want compile errors if new methods are added + pb.UnsafeMaintenanceServer } func NewMaintenanceProxy(c *clientv3.Client) pb.MaintenanceServer { diff --git a/server/proxy/grpcproxy/watch.go b/server/proxy/grpcproxy/watch.go index 98fd1f78bc55..20e00deced16 100644 --- a/server/proxy/grpcproxy/watch.go +++ b/server/proxy/grpcproxy/watch.go @@ -46,6 +46,9 @@ type watchProxy struct { // kv is used for permission checking kv clientv3.KV lg *zap.Logger + + // we want compile errors if new methods are added + pb.UnsafeWatchServer } func NewWatchProxy(ctx context.Context, lg *zap.Logger, c *clientv3.Client) (pb.WatchServer, <-chan struct{}) { From d72d40a90e4193d8552ed36d5eb092836db2689f Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 20 Nov 2025 18:16:18 -0500 Subject: [PATCH 0799/1068] Drop enum prefix gogo option Signed-off-by: Jordan Liggitt --- api/authpb/auth.proto | 1 - api/mvccpb/kv.proto | 1 - server/lease/leasepb/lease.proto | 1 - 3 files changed, 3 deletions(-) diff --git a/api/authpb/auth.proto b/api/authpb/auth.proto index 5a7856bb73dc..28abb11ae019 100644 --- a/api/authpb/auth.proto +++ b/api/authpb/auth.proto @@ -9,7 +9,6 @@ option (gogoproto.marshaler_all) = true; option (gogoproto.sizer_all) = true; option (gogoproto.unmarshaler_all) = true; option (gogoproto.goproto_getters_all) = false; -option (gogoproto.goproto_enum_prefix_all) = false; message UserAddOptions { bool no_password = 1; diff --git a/api/mvccpb/kv.proto b/api/mvccpb/kv.proto index a93479c69f74..1edbe6b9cf6c 100644 --- a/api/mvccpb/kv.proto +++ b/api/mvccpb/kv.proto @@ -9,7 +9,6 @@ option (gogoproto.marshaler_all) = true; option (gogoproto.sizer_all) = true; option (gogoproto.unmarshaler_all) = true; option (gogoproto.goproto_getters_all) = false; -option (gogoproto.goproto_enum_prefix_all) = false; message KeyValue { // key is the key in bytes. An empty key is not allowed. diff --git a/server/lease/leasepb/lease.proto b/server/lease/leasepb/lease.proto index d63179754835..59ce15f5ea72 100644 --- a/server/lease/leasepb/lease.proto +++ b/server/lease/leasepb/lease.proto @@ -10,7 +10,6 @@ option (gogoproto.marshaler_all) = true; option (gogoproto.sizer_all) = true; option (gogoproto.unmarshaler_all) = true; option (gogoproto.goproto_getters_all) = false; -option (gogoproto.goproto_enum_prefix_all) = false; message Lease { int64 ID = 1; From 00e1ab6b6808c4113e93e8167befc1ad1efa0ffe Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 20 Nov 2025 18:16:30 -0500 Subject: [PATCH 0800/1068] generate: scripts/genproto.sh Signed-off-by: Jordan Liggitt --- api/authpb/auth.pb.go | 54 ++++++++++++++++---------------- api/mvccpb/kv.pb.go | 48 ++++++++++++++-------------- server/lease/leasepb/lease.pb.go | 12 +++---- 3 files changed, 57 insertions(+), 57 deletions(-) diff --git a/api/authpb/auth.pb.go b/api/authpb/auth.pb.go index 37374c5a7111..0f604be47a51 100644 --- a/api/authpb/auth.pb.go +++ b/api/authpb/auth.pb.go @@ -27,9 +27,9 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type Permission_Type int32 const ( - READ Permission_Type = 0 - WRITE Permission_Type = 1 - READWRITE Permission_Type = 2 + Permission_READ Permission_Type = 0 + Permission_WRITE Permission_Type = 1 + Permission_READWRITE Permission_Type = 2 ) var Permission_Type_name = map[int32]string{ @@ -232,30 +232,30 @@ func init() { func init() { proto.RegisterFile("auth.proto", fileDescriptor_8bbd6f3875b0e874) } var fileDescriptor_8bbd6f3875b0e874 = []byte{ - // 359 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xcf, 0x4e, 0xc2, 0x40, - 0x10, 0xc6, 0xbb, 0xb4, 0x60, 0x3b, 0x08, 0x21, 0x1b, 0xa2, 0x0d, 0xc6, 0xda, 0xf4, 0xd4, 0x78, - 0x68, 0x15, 0x0e, 0x7a, 0xc5, 0xc8, 0xc1, 0x93, 0x64, 0x83, 0x31, 0xf1, 0x42, 0x8a, 0xdd, 0xd4, - 0x06, 0xd8, 0x6d, 0xda, 0xaa, 0xe1, 0xe2, 0x73, 0x78, 0xf0, 0x81, 0x38, 0xf2, 0x08, 0x82, 0x2f, - 0x62, 0xba, 0xcb, 0x9f, 0x10, 0x3d, 0xed, 0x37, 0xdf, 0x7c, 0x33, 0xfb, 0xcb, 0x2e, 0x40, 0xf0, - 0x9a, 0xbf, 0x78, 0x49, 0xca, 0x73, 0x8e, 0x2b, 0x85, 0x4e, 0x46, 0xad, 0x66, 0xc4, 0x23, 0x2e, - 0x2c, 0xbf, 0x50, 0xb2, 0xeb, 0x5c, 0x42, 0xfd, 0x21, 0xa3, 0x69, 0x37, 0x0c, 0xef, 0x93, 0x3c, - 0xe6, 0x2c, 0xc3, 0x67, 0x50, 0x65, 0x7c, 0x98, 0x04, 0x59, 0xf6, 0xce, 0xd3, 0xd0, 0x44, 0x36, - 0x72, 0x75, 0x02, 0x8c, 0xf7, 0xd7, 0x8e, 0xf3, 0x01, 0x5a, 0x31, 0x82, 0x31, 0x68, 0x2c, 0x98, - 0x52, 0x91, 0x38, 0x24, 0x42, 0xe3, 0x16, 0xe8, 0xdb, 0xc9, 0x92, 0xf0, 0xb7, 0x35, 0x6e, 0x42, - 0x39, 0xe5, 0x13, 0x9a, 0x99, 0xaa, 0xad, 0xba, 0x06, 0x91, 0x05, 0xbe, 0x80, 0x03, 0x2e, 0x6f, - 0x36, 0x35, 0x1b, 0xb9, 0xd5, 0xf6, 0x91, 0x27, 0x81, 0xbd, 0x7d, 0x2e, 0xb2, 0x89, 0x39, 0x5f, - 0x08, 0xa0, 0x4f, 0xd3, 0x69, 0x9c, 0x65, 0x31, 0x67, 0xb8, 0x03, 0x7a, 0x42, 0xd3, 0xe9, 0x60, - 0x96, 0x48, 0x94, 0x7a, 0xfb, 0x78, 0xb3, 0x61, 0x97, 0xf2, 0x8a, 0x36, 0xd9, 0x06, 0x71, 0x03, - 0xd4, 0x31, 0x9d, 0xad, 0x11, 0x0b, 0x89, 0x4f, 0xc0, 0x48, 0x03, 0x16, 0xd1, 0x21, 0x65, 0xa1, - 0xa9, 0x4a, 0x74, 0x61, 0xf4, 0x58, 0xe8, 0x9c, 0x83, 0x26, 0xc6, 0x74, 0xd0, 0x48, 0xaf, 0x7b, - 0xdb, 0x50, 0xb0, 0x01, 0xe5, 0x47, 0x72, 0x37, 0xe8, 0x35, 0x10, 0xae, 0x81, 0x51, 0x98, 0xb2, - 0x2c, 0x39, 0x03, 0xd0, 0x08, 0x9f, 0xd0, 0x7f, 0x9f, 0xe7, 0x1a, 0x6a, 0x63, 0x3a, 0xdb, 0x61, - 0x99, 0x25, 0x5b, 0x75, 0xab, 0x6d, 0xfc, 0x17, 0x98, 0xec, 0x07, 0x6f, 0xae, 0xe6, 0x4b, 0x4b, - 0x59, 0x2c, 0x2d, 0x65, 0xbe, 0xb2, 0xd0, 0x62, 0x65, 0xa1, 0xef, 0x95, 0x85, 0x3e, 0x7f, 0x2c, - 0xe5, 0xe9, 0x34, 0xe2, 0x1e, 0xcd, 0x9f, 0x43, 0x2f, 0xe6, 0x7e, 0x71, 0xfa, 0x41, 0x12, 0xfb, - 0x6f, 0x1d, 0x5f, 0xae, 0x1c, 0x55, 0xc4, 0x3f, 0x77, 0x7e, 0x03, 0x00, 0x00, 0xff, 0xff, 0x61, - 0x5a, 0xfe, 0x48, 0x13, 0x02, 0x00, 0x00, + // 356 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xcf, 0x4e, 0xf2, 0x40, + 0x14, 0xc5, 0x19, 0x5a, 0xf8, 0xda, 0xcb, 0x07, 0x21, 0x13, 0xa2, 0x0d, 0xc6, 0xda, 0x74, 0xd5, + 0xb8, 0x68, 0x95, 0x6e, 0xdc, 0x62, 0x64, 0xe1, 0x4a, 0x32, 0xc1, 0x98, 0xb8, 0x21, 0xc5, 0x4e, + 0x6a, 0x03, 0xcc, 0x6d, 0xda, 0xaa, 0x61, 0xe3, 0x73, 0xb8, 0xf0, 0x81, 0x58, 0xfa, 0x08, 0x8a, + 0x2f, 0x62, 0xda, 0xe1, 0x4f, 0x88, 0xae, 0xe6, 0xdc, 0x73, 0xcf, 0xbd, 0xf3, 0xcb, 0x0c, 0x40, + 0xf0, 0x94, 0x3f, 0xba, 0x49, 0x8a, 0x39, 0xd2, 0x7a, 0xa1, 0x93, 0x49, 0xb7, 0x13, 0x61, 0x84, + 0xa5, 0xe5, 0x15, 0x4a, 0x76, 0xed, 0x73, 0x68, 0xdd, 0x66, 0x3c, 0xed, 0x87, 0xe1, 0x4d, 0x92, + 0xc7, 0x28, 0x32, 0x7a, 0x02, 0x0d, 0x81, 0xe3, 0x24, 0xc8, 0xb2, 0x17, 0x4c, 0x43, 0x83, 0x58, + 0xc4, 0xd1, 0x18, 0x08, 0x1c, 0xae, 0x1d, 0xfb, 0x15, 0xd4, 0x62, 0x84, 0x52, 0x50, 0x45, 0x30, + 0xe7, 0x65, 0xe2, 0x3f, 0x2b, 0x35, 0xed, 0x82, 0xb6, 0x9d, 0xac, 0x96, 0xfe, 0xb6, 0xa6, 0x1d, + 0xa8, 0xa5, 0x38, 0xe3, 0x99, 0xa1, 0x58, 0x8a, 0xa3, 0x33, 0x59, 0xd0, 0x33, 0xf8, 0x87, 0xf2, + 0x66, 0x43, 0xb5, 0x88, 0xd3, 0xe8, 0x1d, 0xb8, 0x12, 0xd8, 0xdd, 0xe7, 0x62, 0x9b, 0x98, 0xfd, + 0x4e, 0x00, 0x86, 0x3c, 0x9d, 0xc7, 0x59, 0x16, 0xa3, 0xa0, 0x3e, 0x68, 0x09, 0x4f, 0xe7, 0xa3, + 0x45, 0x22, 0x51, 0x5a, 0xbd, 0xc3, 0xcd, 0x86, 0x5d, 0xca, 0x2d, 0xda, 0x6c, 0x1b, 0xa4, 0x6d, + 0x50, 0xa6, 0x7c, 0xb1, 0x46, 0x2c, 0x24, 0x3d, 0x02, 0x3d, 0x0d, 0x44, 0xc4, 0xc7, 0x5c, 0x84, + 0x86, 0x22, 0xd1, 0x4b, 0x63, 0x20, 0x42, 0xfb, 0x14, 0xd4, 0x72, 0x4c, 0x03, 0x95, 0x0d, 0xfa, + 0x57, 0xed, 0x0a, 0xd5, 0xa1, 0x76, 0xc7, 0xae, 0x47, 0x83, 0x36, 0xa1, 0x4d, 0xd0, 0x0b, 0x53, + 0x96, 0x55, 0x7b, 0x04, 0x2a, 0xc3, 0x19, 0xff, 0xf3, 0x79, 0x2e, 0xa0, 0x39, 0xe5, 0x8b, 0x1d, + 0x96, 0x51, 0xb5, 0x14, 0xa7, 0xd1, 0xa3, 0xbf, 0x81, 0xd9, 0x7e, 0xf0, 0xd2, 0x5f, 0x7e, 0x99, + 0x95, 0xe5, 0xca, 0x24, 0x1f, 0x2b, 0x93, 0x7c, 0xae, 0x4c, 0xf2, 0xf6, 0x6d, 0x56, 0xee, 0x8f, + 0x23, 0x74, 0x79, 0xfe, 0x10, 0xba, 0x31, 0x7a, 0xc5, 0xe9, 0x05, 0x49, 0xec, 0x3d, 0xfb, 0x9e, + 0x5c, 0x37, 0xa9, 0x97, 0x7f, 0xec, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xb9, 0x28, 0xd9, 0xaa, + 0x0f, 0x02, 0x00, 0x00, } func (m *UserAddOptions) Marshal() (dAtA []byte, err error) { diff --git a/api/mvccpb/kv.pb.go b/api/mvccpb/kv.pb.go index 2fed4242ccc6..e4d9f0e2904d 100644 --- a/api/mvccpb/kv.pb.go +++ b/api/mvccpb/kv.pb.go @@ -27,8 +27,8 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type Event_EventType int32 const ( - PUT Event_EventType = 0 - DELETE Event_EventType = 1 + Event_PUT Event_EventType = 0 + Event_DELETE Event_EventType = 1 ) var Event_EventType_name = map[int32]string{ @@ -164,28 +164,28 @@ func init() { func init() { proto.RegisterFile("kv.proto", fileDescriptor_2216fe83c9c12408) } var fileDescriptor_2216fe83c9c12408 = []byte{ - // 327 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xc1, 0x6a, 0xfa, 0x40, - 0x10, 0xc6, 0xb3, 0x46, 0xa3, 0xff, 0x51, 0xfc, 0x87, 0x45, 0x68, 0x28, 0x34, 0xa4, 0x5e, 0x6a, - 0x29, 0x24, 0xa0, 0x87, 0xde, 0x4b, 0x73, 0xb2, 0x87, 0x12, 0x6c, 0x0f, 0xbd, 0x48, 0x8c, 0x83, - 0x84, 0xa8, 0x1b, 0x62, 0xba, 0x90, 0x37, 0xe9, 0xbd, 0xf7, 0x3e, 0x87, 0x47, 0x1f, 0xa1, 0xda, - 0x17, 0x29, 0x3b, 0x5b, 0xed, 0xa5, 0x97, 0xdd, 0x99, 0xef, 0xfb, 0xb1, 0xf3, 0x0d, 0x0b, 0xad, - 0x4c, 0xfa, 0x79, 0x21, 0x4a, 0xc1, 0xad, 0x95, 0x4c, 0x92, 0x7c, 0x76, 0xde, 0x5b, 0x88, 0x85, - 0x20, 0x29, 0x50, 0x95, 0x76, 0xfb, 0x1f, 0x0c, 0x5a, 0x63, 0xac, 0x9e, 0xe3, 0xe5, 0x2b, 0x72, - 0x1b, 0xcc, 0x0c, 0x2b, 0x87, 0x79, 0x6c, 0xd0, 0x89, 0x54, 0xc9, 0xaf, 0xe0, 0x7f, 0x52, 0x60, - 0x5c, 0xe2, 0xb4, 0x40, 0x99, 0x6e, 0x52, 0xb1, 0x76, 0x6a, 0x1e, 0x1b, 0x98, 0x51, 0x57, 0xcb, - 0xd1, 0x8f, 0xca, 0x2f, 0xa1, 0xb3, 0x12, 0xf3, 0x5f, 0xca, 0x24, 0xaa, 0xbd, 0x12, 0xf3, 0x13, - 0xe2, 0x40, 0x53, 0x62, 0x41, 0x6e, 0x9d, 0xdc, 0x63, 0xcb, 0x7b, 0xd0, 0x90, 0x2a, 0x80, 0xd3, - 0xa0, 0xc9, 0xba, 0x51, 0xea, 0x12, 0xe3, 0x0d, 0x3a, 0x16, 0xd1, 0xba, 0xe9, 0xbf, 0x33, 0x68, - 0x84, 0x12, 0xd7, 0x25, 0xbf, 0x81, 0x7a, 0x59, 0xe5, 0x48, 0x71, 0xbb, 0xc3, 0x33, 0x5f, 0xef, - 0xe9, 0x93, 0xa9, 0xcf, 0x49, 0x95, 0x63, 0x44, 0x10, 0xf7, 0xa0, 0x96, 0x49, 0xca, 0xde, 0x1e, - 0xda, 0x47, 0xf4, 0xb8, 0x78, 0x54, 0xcb, 0x24, 0xbf, 0x86, 0x66, 0x5e, 0xa0, 0x9c, 0x66, 0x92, - 0xc2, 0xff, 0x85, 0x59, 0x0a, 0x18, 0xcb, 0xbe, 0x07, 0xff, 0x4e, 0xef, 0xf3, 0x26, 0x98, 0x8f, - 0x4f, 0x13, 0xdb, 0xe0, 0x00, 0xd6, 0x7d, 0xf8, 0x10, 0x4e, 0x42, 0x9b, 0xdd, 0xdd, 0x6e, 0xf7, - 0xae, 0xb1, 0xdb, 0xbb, 0xc6, 0xf6, 0xe0, 0xb2, 0xdd, 0xc1, 0x65, 0x9f, 0x07, 0x97, 0xbd, 0x7d, - 0xb9, 0xc6, 0xcb, 0xc5, 0x42, 0xf8, 0x58, 0x26, 0x73, 0x3f, 0x15, 0x81, 0xba, 0x83, 0x38, 0x4f, - 0x03, 0x39, 0x0a, 0xf4, 0xac, 0x99, 0x45, 0xdf, 0x32, 0xfa, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x78, - 0x06, 0x46, 0xf5, 0xc0, 0x01, 0x00, 0x00, + // 322 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xc1, 0x4e, 0xc2, 0x40, + 0x10, 0x86, 0x59, 0x0a, 0x05, 0x07, 0x82, 0xcd, 0x86, 0xc4, 0xc6, 0xc4, 0xa6, 0x72, 0x11, 0x63, + 0xd2, 0x26, 0xf0, 0x06, 0xc6, 0x9e, 0xf0, 0x60, 0x1a, 0xf4, 0xe0, 0x85, 0x94, 0x32, 0x21, 0x4d, + 0x81, 0x6d, 0x4a, 0x9d, 0xa4, 0x6f, 0xe2, 0xdd, 0xbb, 0xcf, 0xc1, 0xd1, 0x47, 0x50, 0x7c, 0x11, + 0xd3, 0x59, 0xc1, 0x8b, 0x97, 0xdd, 0x99, 0xff, 0xff, 0xb2, 0xf3, 0x4f, 0x16, 0xda, 0x29, 0x79, + 0x59, 0xae, 0x0a, 0x25, 0xcd, 0x35, 0xc5, 0x71, 0x36, 0x3f, 0xef, 0x2f, 0xd5, 0x52, 0xb1, 0xe4, + 0x57, 0x95, 0x76, 0x07, 0xef, 0x02, 0xda, 0x13, 0x2c, 0x9f, 0xa2, 0xd5, 0x0b, 0x4a, 0x0b, 0x8c, + 0x14, 0x4b, 0x5b, 0xb8, 0x62, 0xd8, 0x0d, 0xab, 0x52, 0x5e, 0xc1, 0x69, 0x9c, 0x63, 0x54, 0xe0, + 0x2c, 0x47, 0x4a, 0xb6, 0x89, 0xda, 0xd8, 0x75, 0x57, 0x0c, 0x8d, 0xb0, 0xa7, 0xe5, 0xf0, 0x57, + 0x95, 0x97, 0xd0, 0x5d, 0xab, 0xc5, 0x1f, 0x65, 0x30, 0xd5, 0x59, 0xab, 0xc5, 0x11, 0xb1, 0xa1, + 0x45, 0x98, 0xb3, 0xdb, 0x60, 0xf7, 0xd0, 0xca, 0x3e, 0x34, 0xa9, 0x0a, 0x60, 0x37, 0x79, 0xb2, + 0x6e, 0x2a, 0x75, 0x85, 0xd1, 0x16, 0x6d, 0x93, 0x69, 0xdd, 0x0c, 0xde, 0x04, 0x34, 0x03, 0xc2, + 0x4d, 0x21, 0x6f, 0xa0, 0x51, 0x94, 0x19, 0x72, 0xdc, 0xde, 0xe8, 0xcc, 0xd3, 0x7b, 0x7a, 0x6c, + 0xea, 0x73, 0x5a, 0x66, 0x18, 0x32, 0x24, 0x5d, 0xa8, 0xa7, 0xc4, 0xd9, 0x3b, 0x23, 0xeb, 0x80, + 0x1e, 0x16, 0x0f, 0xeb, 0x29, 0xc9, 0x6b, 0x68, 0x65, 0x39, 0xd2, 0x2c, 0x25, 0x0e, 0xff, 0x1f, + 0x66, 0x56, 0xc0, 0x84, 0x06, 0x2e, 0x9c, 0x1c, 0xdf, 0x97, 0x2d, 0x30, 0x1e, 0x1e, 0xa7, 0x56, + 0x4d, 0x02, 0x98, 0x77, 0xc1, 0x7d, 0x30, 0x0d, 0x2c, 0x71, 0x3b, 0xde, 0x7d, 0x39, 0xb5, 0xdd, + 0xde, 0x11, 0x1f, 0x7b, 0x47, 0x7c, 0xee, 0x1d, 0xf1, 0xfa, 0xed, 0xd4, 0x9e, 0x2f, 0x96, 0xca, + 0xc3, 0x22, 0x5e, 0x78, 0x89, 0xf2, 0xab, 0xdb, 0x8f, 0xb2, 0xc4, 0xa7, 0xb1, 0xaf, 0xe7, 0xcc, + 0x4d, 0xfe, 0x92, 0xf1, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf9, 0xc9, 0x87, 0x6b, 0xbc, 0x01, + 0x00, 0x00, } func (m *KeyValue) Marshal() (dAtA []byte, err error) { diff --git a/server/lease/leasepb/lease.pb.go b/server/lease/leasepb/lease.pb.go index ee833d31a730..d2524b1ab191 100644 --- a/server/lease/leasepb/lease.pb.go +++ b/server/lease/leasepb/lease.pb.go @@ -156,7 +156,7 @@ func init() { func init() { proto.RegisterFile("lease.proto", fileDescriptor_3dd57e402472b33a) } var fileDescriptor_3dd57e402472b33a = []byte{ - // 283 bytes of a gzipped FileDescriptorProto + // 278 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0xce, 0x49, 0x4d, 0x2c, 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x07, 0x73, 0x0a, 0x92, 0xa4, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x62, 0xfa, 0x20, 0x16, 0x44, 0x5a, 0x4a, 0x3e, 0xb5, 0x24, 0x39, 0x45, @@ -170,11 +170,11 @@ var fileDescriptor_3dd57e402472b33a = []byte{ 0x54, 0xa8, 0x0c, 0xd8, 0x46, 0x6e, 0x23, 0x15, 0x3d, 0x64, 0xf7, 0xe9, 0x61, 0x57, 0x1b, 0x84, 0xc3, 0x0c, 0xa5, 0x0a, 0x2e, 0x51, 0x34, 0x5b, 0x8b, 0x0b, 0xf2, 0xf3, 0x8a, 0x53, 0x85, 0xe2, 0xb9, 0xc4, 0x31, 0xb4, 0x40, 0xa4, 0xa0, 0xf6, 0xaa, 0x12, 0xb0, 0x17, 0xa2, 0x38, 0x08, 0x97, - 0x29, 0x4e, 0x9e, 0x27, 0x1e, 0xca, 0x31, 0x5c, 0x78, 0x28, 0xc7, 0x70, 0xe2, 0x91, 0x1c, 0xe3, - 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0xce, 0x78, 0x2c, 0xc7, 0x10, 0xa5, 0x9f, 0x9e, - 0x0f, 0x36, 0x5b, 0x2f, 0x33, 0x1f, 0x1c, 0xf6, 0xfa, 0x10, 0x4b, 0xf4, 0xcb, 0x8c, 0xf5, 0xc1, - 0x51, 0xa6, 0x0f, 0x8d, 0x38, 0x6b, 0x28, 0x9d, 0xc4, 0x06, 0x8e, 0x10, 0x63, 0x40, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x0e, 0x16, 0x3b, 0xc4, 0xdf, 0x01, 0x00, 0x00, + 0x29, 0x4e, 0xae, 0x27, 0x1e, 0xca, 0x31, 0x9c, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, + 0x83, 0x47, 0x72, 0x8c, 0x33, 0x1e, 0xcb, 0x31, 0x44, 0xe9, 0xa7, 0xe7, 0x83, 0xcd, 0xd5, 0xcb, + 0xcc, 0x07, 0x87, 0xbb, 0x3e, 0xc4, 0x02, 0xfd, 0x32, 0x63, 0x7d, 0x70, 0x74, 0xe9, 0x43, 0x23, + 0xcd, 0x1a, 0x4a, 0x27, 0xb1, 0x81, 0x23, 0xc3, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x8a, 0x0c, + 0x6f, 0x95, 0xdb, 0x01, 0x00, 0x00, } func (m *Lease) Marshal() (dAtA []byte, err error) { From b79f8d8a67bdfc166b8db2e935d4854b0a188efd Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 20 Nov 2025 18:16:42 -0500 Subject: [PATCH 0801/1068] recover: Backfill enum constants Signed-off-by: Jordan Liggitt --- api/authpb/deprecated.go | 24 ++++++++++++++++++++++++ api/mvccpb/deprecated.go | 22 ++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 api/authpb/deprecated.go create mode 100644 api/mvccpb/deprecated.go diff --git a/api/authpb/deprecated.go b/api/authpb/deprecated.go new file mode 100644 index 000000000000..6d703f17bffd --- /dev/null +++ b/api/authpb/deprecated.go @@ -0,0 +1,24 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package authpb + +const ( + // Alias of Permission_READ + READ = Permission_READ + // Alias of Permission_WRITE + WRITE = Permission_WRITE + // Alias of Permission_READWRITE + READWRITE = Permission_READWRITE +) diff --git a/api/mvccpb/deprecated.go b/api/mvccpb/deprecated.go new file mode 100644 index 000000000000..90e67fa6d544 --- /dev/null +++ b/api/mvccpb/deprecated.go @@ -0,0 +1,22 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvccpb + +const ( + // Alias of Event_PUT + PUT = Event_PUT + // Alias of Permission_WRITE + DELETE = Event_DELETE +) From f275959c6ed4259db2db69765dc812d42e5fc8ba Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 6 Feb 2026 02:16:54 -0500 Subject: [PATCH 0802/1068] Drop goproto_getters_all gogo option Signed-off-by: Jordan Liggitt --- api/authpb/auth.proto | 1 - api/etcdserverpb/etcdserver.proto | 1 - api/etcdserverpb/raft_internal.proto | 1 - api/membershippb/membership.proto | 1 - api/mvccpb/kv.proto | 1 - server/etcdserver/api/snap/snappb/snap.proto | 1 - server/lease/leasepb/lease.proto | 1 - server/storage/wal/walpb/record.proto | 1 - 8 files changed, 8 deletions(-) diff --git a/api/authpb/auth.proto b/api/authpb/auth.proto index 28abb11ae019..bdb6b522ccd6 100644 --- a/api/authpb/auth.proto +++ b/api/authpb/auth.proto @@ -8,7 +8,6 @@ option go_package = "go.etcd.io/etcd/api/v3/authpb"; option (gogoproto.marshaler_all) = true; option (gogoproto.sizer_all) = true; option (gogoproto.unmarshaler_all) = true; -option (gogoproto.goproto_getters_all) = false; message UserAddOptions { bool no_password = 1; diff --git a/api/etcdserverpb/etcdserver.proto b/api/etcdserverpb/etcdserver.proto index 623f52c0ebce..9e0f19bac250 100644 --- a/api/etcdserverpb/etcdserver.proto +++ b/api/etcdserverpb/etcdserver.proto @@ -8,7 +8,6 @@ option go_package = "go.etcd.io/etcd/api/v3/etcdserverpb"; option (gogoproto.marshaler_all) = true; option (gogoproto.sizer_all) = true; option (gogoproto.unmarshaler_all) = true; -option (gogoproto.goproto_getters_all) = false; message Metadata { optional uint64 NodeID = 1 [(gogoproto.nullable) = false]; diff --git a/api/etcdserverpb/raft_internal.proto b/api/etcdserverpb/raft_internal.proto index b200950a1c19..19c79d20e4bb 100644 --- a/api/etcdserverpb/raft_internal.proto +++ b/api/etcdserverpb/raft_internal.proto @@ -11,7 +11,6 @@ option go_package = "go.etcd.io/etcd/api/v3/etcdserverpb"; option (gogoproto.marshaler_all) = true; option (gogoproto.sizer_all) = true; option (gogoproto.unmarshaler_all) = true; -option (gogoproto.goproto_getters_all) = false; message RequestHeader { option (versionpb.etcd_version_msg) = "3.0"; diff --git a/api/membershippb/membership.proto b/api/membershippb/membership.proto index cbccfefccf45..dc1d11c09f45 100644 --- a/api/membershippb/membership.proto +++ b/api/membershippb/membership.proto @@ -9,7 +9,6 @@ option go_package = "go.etcd.io/etcd/api/v3/membershippb"; option (gogoproto.marshaler_all) = true; option (gogoproto.sizer_all) = true; option (gogoproto.unmarshaler_all) = true; -option (gogoproto.goproto_getters_all) = false; // RaftAttributes represents the raft related attributes of an etcd member. message RaftAttributes { diff --git a/api/mvccpb/kv.proto b/api/mvccpb/kv.proto index 1edbe6b9cf6c..771483f5200f 100644 --- a/api/mvccpb/kv.proto +++ b/api/mvccpb/kv.proto @@ -8,7 +8,6 @@ option go_package = "go.etcd.io/etcd/api/v3/mvccpb"; option (gogoproto.marshaler_all) = true; option (gogoproto.sizer_all) = true; option (gogoproto.unmarshaler_all) = true; -option (gogoproto.goproto_getters_all) = false; message KeyValue { // key is the key in bytes. An empty key is not allowed. diff --git a/server/etcdserver/api/snap/snappb/snap.proto b/server/etcdserver/api/snap/snappb/snap.proto index 0a74744e4b2d..867096583ec9 100644 --- a/server/etcdserver/api/snap/snappb/snap.proto +++ b/server/etcdserver/api/snap/snappb/snap.proto @@ -8,7 +8,6 @@ option go_package = "go.etcd.io/etcd/server/v3/etcdserver/api/snap/snappb"; option (gogoproto.marshaler_all) = true; option (gogoproto.sizer_all) = true; option (gogoproto.unmarshaler_all) = true; -option (gogoproto.goproto_getters_all) = false; message snapshot { optional uint32 crc = 1 [(gogoproto.nullable) = false]; diff --git a/server/lease/leasepb/lease.proto b/server/lease/leasepb/lease.proto index 59ce15f5ea72..97745554854b 100644 --- a/server/lease/leasepb/lease.proto +++ b/server/lease/leasepb/lease.proto @@ -9,7 +9,6 @@ option go_package = "go.etcd.io/etcd/server/v3/lease/leasepb;leasepb"; option (gogoproto.marshaler_all) = true; option (gogoproto.sizer_all) = true; option (gogoproto.unmarshaler_all) = true; -option (gogoproto.goproto_getters_all) = false; message Lease { int64 ID = 1; diff --git a/server/storage/wal/walpb/record.proto b/server/storage/wal/walpb/record.proto index e1050fde4816..287095110a86 100644 --- a/server/storage/wal/walpb/record.proto +++ b/server/storage/wal/walpb/record.proto @@ -9,7 +9,6 @@ option go_package = "go.etcd.io/etcd/server/v3/storage/wal/walpb"; option (gogoproto.marshaler_all) = true; option (gogoproto.sizer_all) = true; option (gogoproto.unmarshaler_all) = true; -option (gogoproto.goproto_getters_all) = false; message Record { optional int64 type = 1 [(gogoproto.nullable) = false]; From 3f25f23440e535e98362bcb7cb0fad9bd02a56cc Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 6 Feb 2026 02:17:06 -0500 Subject: [PATCH 0803/1068] generate: scripts/genproto.sh Signed-off-by: Jordan Liggitt --- api/authpb/auth.pb.go | 113 +++++- api/etcdserverpb/etcdserver.pb.go | 25 +- api/etcdserverpb/raft_internal.pb.go | 403 +++++++++++++++---- api/membershippb/membership.pb.go | 140 +++++-- api/mvccpb/kv.pb.go | 106 ++++- server/etcdserver/api/snap/snappb/snap.pb.go | 27 +- server/lease/leasepb/lease.pb.go | 47 ++- server/storage/wal/walpb/record.pb.go | 78 +++- 8 files changed, 761 insertions(+), 178 deletions(-) diff --git a/api/authpb/auth.pb.go b/api/authpb/auth.pb.go index 0f604be47a51..cb675a90f8c9 100644 --- a/api/authpb/auth.pb.go +++ b/api/authpb/auth.pb.go @@ -92,6 +92,13 @@ func (m *UserAddOptions) XXX_DiscardUnknown() { var xxx_messageInfo_UserAddOptions proto.InternalMessageInfo +func (m *UserAddOptions) GetNoPassword() bool { + if m != nil { + return m.NoPassword + } + return false +} + // User is a single entry in the bucket authUsers type User struct { Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -136,6 +143,34 @@ func (m *User) XXX_DiscardUnknown() { var xxx_messageInfo_User proto.InternalMessageInfo +func (m *User) GetName() []byte { + if m != nil { + return m.Name + } + return nil +} + +func (m *User) GetPassword() []byte { + if m != nil { + return m.Password + } + return nil +} + +func (m *User) GetRoles() []string { + if m != nil { + return m.Roles + } + return nil +} + +func (m *User) GetOptions() *UserAddOptions { + if m != nil { + return m.Options + } + return nil +} + // Permission is a single entity type Permission struct { PermType Permission_Type `protobuf:"varint,1,opt,name=permType,proto3,enum=authpb.Permission_Type" json:"permType,omitempty"` @@ -179,6 +214,27 @@ func (m *Permission) XXX_DiscardUnknown() { var xxx_messageInfo_Permission proto.InternalMessageInfo +func (m *Permission) GetPermType() Permission_Type { + if m != nil { + return m.PermType + } + return Permission_READ +} + +func (m *Permission) GetKey() []byte { + if m != nil { + return m.Key + } + return nil +} + +func (m *Permission) GetRangeEnd() []byte { + if m != nil { + return m.RangeEnd + } + return nil +} + // Role is a single entry in the bucket authRoles type Role struct { Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -221,6 +277,20 @@ func (m *Role) XXX_DiscardUnknown() { var xxx_messageInfo_Role proto.InternalMessageInfo +func (m *Role) GetName() []byte { + if m != nil { + return m.Name + } + return nil +} + +func (m *Role) GetKeyPermission() []*Permission { + if m != nil { + return m.KeyPermission + } + return nil +} + func init() { proto.RegisterEnum("authpb.Permission_Type", Permission_Type_name, Permission_Type_value) proto.RegisterType((*UserAddOptions)(nil), "authpb.UserAddOptions") @@ -232,30 +302,29 @@ func init() { func init() { proto.RegisterFile("auth.proto", fileDescriptor_8bbd6f3875b0e874) } var fileDescriptor_8bbd6f3875b0e874 = []byte{ - // 356 bytes of a gzipped FileDescriptorProto + // 352 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xcf, 0x4e, 0xf2, 0x40, 0x14, 0xc5, 0x19, 0x5a, 0xf8, 0xda, 0xcb, 0x07, 0x21, 0x13, 0xa2, 0x0d, 0xc6, 0xda, 0x74, 0xd5, - 0xb8, 0x68, 0x95, 0x6e, 0xdc, 0x62, 0x64, 0xe1, 0x4a, 0x32, 0xc1, 0x98, 0xb8, 0x21, 0xc5, 0x4e, - 0x6a, 0x03, 0xcc, 0x6d, 0xda, 0xaa, 0x61, 0xe3, 0x73, 0xb8, 0xf0, 0x81, 0x58, 0xfa, 0x08, 0x8a, - 0x2f, 0x62, 0xda, 0xe1, 0x4f, 0x88, 0xae, 0xe6, 0xdc, 0x73, 0xcf, 0xbd, 0xf3, 0xcb, 0x0c, 0x40, - 0xf0, 0x94, 0x3f, 0xba, 0x49, 0x8a, 0x39, 0xd2, 0x7a, 0xa1, 0x93, 0x49, 0xb7, 0x13, 0x61, 0x84, - 0xa5, 0xe5, 0x15, 0x4a, 0x76, 0xed, 0x73, 0x68, 0xdd, 0x66, 0x3c, 0xed, 0x87, 0xe1, 0x4d, 0x92, - 0xc7, 0x28, 0x32, 0x7a, 0x02, 0x0d, 0x81, 0xe3, 0x24, 0xc8, 0xb2, 0x17, 0x4c, 0x43, 0x83, 0x58, - 0xc4, 0xd1, 0x18, 0x08, 0x1c, 0xae, 0x1d, 0xfb, 0x15, 0xd4, 0x62, 0x84, 0x52, 0x50, 0x45, 0x30, - 0xe7, 0x65, 0xe2, 0x3f, 0x2b, 0x35, 0xed, 0x82, 0xb6, 0x9d, 0xac, 0x96, 0xfe, 0xb6, 0xa6, 0x1d, - 0xa8, 0xa5, 0x38, 0xe3, 0x99, 0xa1, 0x58, 0x8a, 0xa3, 0x33, 0x59, 0xd0, 0x33, 0xf8, 0x87, 0xf2, - 0x66, 0x43, 0xb5, 0x88, 0xd3, 0xe8, 0x1d, 0xb8, 0x12, 0xd8, 0xdd, 0xe7, 0x62, 0x9b, 0x98, 0xfd, - 0x4e, 0x00, 0x86, 0x3c, 0x9d, 0xc7, 0x59, 0x16, 0xa3, 0xa0, 0x3e, 0x68, 0x09, 0x4f, 0xe7, 0xa3, - 0x45, 0x22, 0x51, 0x5a, 0xbd, 0xc3, 0xcd, 0x86, 0x5d, 0xca, 0x2d, 0xda, 0x6c, 0x1b, 0xa4, 0x6d, - 0x50, 0xa6, 0x7c, 0xb1, 0x46, 0x2c, 0x24, 0x3d, 0x02, 0x3d, 0x0d, 0x44, 0xc4, 0xc7, 0x5c, 0x84, - 0x86, 0x22, 0xd1, 0x4b, 0x63, 0x20, 0x42, 0xfb, 0x14, 0xd4, 0x72, 0x4c, 0x03, 0x95, 0x0d, 0xfa, - 0x57, 0xed, 0x0a, 0xd5, 0xa1, 0x76, 0xc7, 0xae, 0x47, 0x83, 0x36, 0xa1, 0x4d, 0xd0, 0x0b, 0x53, - 0x96, 0x55, 0x7b, 0x04, 0x2a, 0xc3, 0x19, 0xff, 0xf3, 0x79, 0x2e, 0xa0, 0x39, 0xe5, 0x8b, 0x1d, - 0x96, 0x51, 0xb5, 0x14, 0xa7, 0xd1, 0xa3, 0xbf, 0x81, 0xd9, 0x7e, 0xf0, 0xd2, 0x5f, 0x7e, 0x99, - 0x95, 0xe5, 0xca, 0x24, 0x1f, 0x2b, 0x93, 0x7c, 0xae, 0x4c, 0xf2, 0xf6, 0x6d, 0x56, 0xee, 0x8f, - 0x23, 0x74, 0x79, 0xfe, 0x10, 0xba, 0x31, 0x7a, 0xc5, 0xe9, 0x05, 0x49, 0xec, 0x3d, 0xfb, 0x9e, - 0x5c, 0x37, 0xa9, 0x97, 0x7f, 0xec, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xb9, 0x28, 0xd9, 0xaa, - 0x0f, 0x02, 0x00, 0x00, + 0xb8, 0x68, 0x15, 0x36, 0x6e, 0x31, 0xb2, 0x70, 0x25, 0x99, 0x60, 0x4c, 0xdc, 0x90, 0x62, 0x27, + 0xb5, 0x01, 0xe6, 0x36, 0x6d, 0xd5, 0xb0, 0xf1, 0x39, 0x5c, 0xf8, 0x40, 0x2e, 0x7d, 0x04, 0x83, + 0x2f, 0x62, 0x3a, 0xc3, 0x9f, 0x10, 0x5d, 0xcd, 0xb9, 0xe7, 0x9e, 0x7b, 0xe7, 0x97, 0x19, 0x80, + 0xf0, 0xa9, 0x78, 0xf4, 0xd3, 0x0c, 0x0b, 0xa4, 0xf5, 0x52, 0xa7, 0xd3, 0x6e, 0x27, 0xc6, 0x18, + 0xa5, 0x15, 0x94, 0x4a, 0x75, 0xdd, 0x73, 0x68, 0xdd, 0xe6, 0x3c, 0x1b, 0x44, 0xd1, 0x4d, 0x5a, + 0x24, 0x28, 0x72, 0x7a, 0x02, 0x0d, 0x81, 0x93, 0x34, 0xcc, 0xf3, 0x17, 0xcc, 0x22, 0x8b, 0x38, + 0xc4, 0x33, 0x18, 0x08, 0x1c, 0xad, 0x1d, 0xf7, 0x15, 0xf4, 0x72, 0x84, 0x52, 0xd0, 0x45, 0xb8, + 0xe0, 0x32, 0xf1, 0x9f, 0x49, 0x4d, 0xbb, 0x60, 0x6c, 0x27, 0xab, 0xd2, 0xdf, 0xd6, 0xb4, 0x03, + 0xb5, 0x0c, 0xe7, 0x3c, 0xb7, 0x34, 0x47, 0xf3, 0x4c, 0xa6, 0x0a, 0x7a, 0x06, 0xff, 0x50, 0xdd, + 0x6c, 0xe9, 0x0e, 0xf1, 0x1a, 0xbd, 0x03, 0x5f, 0x01, 0xfb, 0xfb, 0x5c, 0x6c, 0x13, 0x73, 0xdf, + 0x09, 0xc0, 0x88, 0x67, 0x8b, 0x24, 0xcf, 0x13, 0x14, 0xb4, 0x0f, 0x46, 0xca, 0xb3, 0xc5, 0x78, + 0x99, 0x2a, 0x94, 0x56, 0xef, 0x70, 0xb3, 0x61, 0x97, 0xf2, 0xcb, 0x36, 0xdb, 0x06, 0x69, 0x1b, + 0xb4, 0x19, 0x5f, 0xae, 0x11, 0x4b, 0x49, 0x8f, 0xc0, 0xcc, 0x42, 0x11, 0xf3, 0x09, 0x17, 0x91, + 0xa5, 0x29, 0x74, 0x69, 0x0c, 0x45, 0xe4, 0x9e, 0x82, 0x2e, 0xc7, 0x0c, 0xd0, 0xd9, 0x70, 0x70, + 0xd5, 0xae, 0x50, 0x13, 0x6a, 0x77, 0xec, 0x7a, 0x3c, 0x6c, 0x13, 0xda, 0x04, 0xb3, 0x34, 0x55, + 0x59, 0x75, 0xc7, 0xa0, 0x33, 0x9c, 0xf3, 0x3f, 0x9f, 0xe7, 0x02, 0x9a, 0x33, 0xbe, 0xdc, 0x61, + 0x59, 0x55, 0x47, 0xf3, 0x1a, 0x3d, 0xfa, 0x1b, 0x98, 0xed, 0x07, 0x2f, 0x83, 0x8f, 0x95, 0x4d, + 0x3e, 0x57, 0x36, 0xf9, 0x5a, 0xd9, 0xe4, 0xed, 0xdb, 0xae, 0xdc, 0x1f, 0xc7, 0xe8, 0xf3, 0xe2, + 0x21, 0xf2, 0x13, 0x0c, 0xca, 0x33, 0x08, 0xd3, 0x24, 0x78, 0xee, 0x07, 0x6a, 0xd5, 0xb4, 0x2e, + 0xff, 0xb7, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x18, 0xad, 0x5a, 0xa6, 0x0b, 0x02, 0x00, 0x00, } func (m *UserAddOptions) Marshal() (dAtA []byte, err error) { diff --git a/api/etcdserverpb/etcdserver.pb.go b/api/etcdserverpb/etcdserver.pb.go index 562f83f46b5b..8666f97ce424 100644 --- a/api/etcdserverpb/etcdserver.pb.go +++ b/api/etcdserverpb/etcdserver.pb.go @@ -65,6 +65,20 @@ func (m *Metadata) XXX_DiscardUnknown() { var xxx_messageInfo_Metadata proto.InternalMessageInfo +func (m *Metadata) GetNodeID() uint64 { + if m != nil { + return m.NodeID + } + return 0 +} + +func (m *Metadata) GetClusterID() uint64 { + if m != nil { + return m.ClusterID + } + return 0 +} + func init() { proto.RegisterType((*Metadata)(nil), "etcdserverpb.Metadata") } @@ -72,18 +86,17 @@ func init() { func init() { proto.RegisterFile("etcdserver.proto", fileDescriptor_09ffbeb3bebbce7e) } var fileDescriptor_09ffbeb3bebbce7e = []byte{ - // 163 bytes of a gzipped FileDescriptorProto + // 159 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x48, 0x2d, 0x49, 0x4e, 0x29, 0x4e, 0x2d, 0x2a, 0x4b, 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x41, 0x88, 0x14, 0x24, 0x49, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, 0x83, 0x25, 0xf4, 0x41, 0x2c, 0x88, 0x1a, 0x25, 0x1f, 0x2e, 0x0e, 0xdf, 0xd4, 0x92, 0xc4, 0x94, 0xc4, 0x92, 0x44, 0x21, 0x19, 0x2e, 0x36, 0xbf, 0xfc, 0x94, 0x54, 0x4f, 0x17, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x16, 0x27, 0x96, 0x13, 0xf7, 0xe4, 0x19, 0x82, 0xa0, 0x62, 0x42, 0x4a, 0x5c, 0x9c, 0xce, 0x39, 0xa5, 0xc5, 0x25, 0xa9, 0x45, 0x9e, - 0x2e, 0x12, 0x4c, 0x48, 0x0a, 0x10, 0xc2, 0x4e, 0x96, 0x27, 0x1e, 0xca, 0x31, 0x9c, 0x78, 0x24, - 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x33, 0x1e, 0xcb, 0x31, 0x44, 0x29, - 0xa7, 0xe7, 0xeb, 0x81, 0x9c, 0xa2, 0x97, 0x99, 0xaf, 0x0f, 0xa2, 0xf5, 0x13, 0x0b, 0x32, 0xf5, - 0xcb, 0x8c, 0xf5, 0x91, 0x9d, 0x07, 0x08, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x35, 0xe7, 0x3d, 0xbf, - 0x00, 0x00, 0x00, + 0x2e, 0x12, 0x4c, 0x48, 0x0a, 0x10, 0xc2, 0x4e, 0xa6, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, + 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x8c, 0xc7, 0x72, 0x0c, 0x51, 0xca, 0xe9, 0xf9, 0x7a, 0x20, + 0x67, 0xe8, 0x65, 0xe6, 0xeb, 0x83, 0x68, 0xfd, 0xc4, 0x82, 0x4c, 0xfd, 0x32, 0x63, 0x7d, 0x64, + 0xa7, 0x01, 0x02, 0x00, 0x00, 0xff, 0xff, 0x1c, 0xb8, 0x7e, 0x00, 0xbb, 0x00, 0x00, 0x00, } func (m *Metadata) Marshal() (dAtA []byte, err error) { diff --git a/api/etcdserverpb/raft_internal.pb.go b/api/etcdserverpb/raft_internal.pb.go index de48f6cb82aa..fb02e309ff83 100644 --- a/api/etcdserverpb/raft_internal.pb.go +++ b/api/etcdserverpb/raft_internal.pb.go @@ -70,6 +70,27 @@ func (m *RequestHeader) XXX_DiscardUnknown() { var xxx_messageInfo_RequestHeader proto.InternalMessageInfo +func (m *RequestHeader) GetID() uint64 { + if m != nil { + return m.ID + } + return 0 +} + +func (m *RequestHeader) GetUsername() string { + if m != nil { + return m.Username + } + return "" +} + +func (m *RequestHeader) GetAuthRevision() uint64 { + if m != nil { + return m.AuthRevision + } + return 0 +} + // An InternalRaftRequest is the union of all requests which can be // sent via raft. type InternalRaftRequest struct { @@ -143,6 +164,230 @@ func (m *InternalRaftRequest) XXX_DiscardUnknown() { var xxx_messageInfo_InternalRaftRequest proto.InternalMessageInfo +func (m *InternalRaftRequest) GetHeader() *RequestHeader { + if m != nil { + return m.Header + } + return nil +} + +func (m *InternalRaftRequest) GetID() uint64 { + if m != nil { + return m.ID + } + return 0 +} + +func (m *InternalRaftRequest) GetRange() *RangeRequest { + if m != nil { + return m.Range + } + return nil +} + +func (m *InternalRaftRequest) GetPut() *PutRequest { + if m != nil { + return m.Put + } + return nil +} + +func (m *InternalRaftRequest) GetDeleteRange() *DeleteRangeRequest { + if m != nil { + return m.DeleteRange + } + return nil +} + +func (m *InternalRaftRequest) GetTxn() *TxnRequest { + if m != nil { + return m.Txn + } + return nil +} + +func (m *InternalRaftRequest) GetCompaction() *CompactionRequest { + if m != nil { + return m.Compaction + } + return nil +} + +func (m *InternalRaftRequest) GetLeaseGrant() *LeaseGrantRequest { + if m != nil { + return m.LeaseGrant + } + return nil +} + +func (m *InternalRaftRequest) GetLeaseRevoke() *LeaseRevokeRequest { + if m != nil { + return m.LeaseRevoke + } + return nil +} + +func (m *InternalRaftRequest) GetAlarm() *AlarmRequest { + if m != nil { + return m.Alarm + } + return nil +} + +func (m *InternalRaftRequest) GetLeaseCheckpoint() *LeaseCheckpointRequest { + if m != nil { + return m.LeaseCheckpoint + } + return nil +} + +func (m *InternalRaftRequest) GetAuthEnable() *AuthEnableRequest { + if m != nil { + return m.AuthEnable + } + return nil +} + +func (m *InternalRaftRequest) GetAuthDisable() *AuthDisableRequest { + if m != nil { + return m.AuthDisable + } + return nil +} + +func (m *InternalRaftRequest) GetAuthStatus() *AuthStatusRequest { + if m != nil { + return m.AuthStatus + } + return nil +} + +func (m *InternalRaftRequest) GetAuthenticate() *InternalAuthenticateRequest { + if m != nil { + return m.Authenticate + } + return nil +} + +func (m *InternalRaftRequest) GetAuthUserAdd() *AuthUserAddRequest { + if m != nil { + return m.AuthUserAdd + } + return nil +} + +func (m *InternalRaftRequest) GetAuthUserDelete() *AuthUserDeleteRequest { + if m != nil { + return m.AuthUserDelete + } + return nil +} + +func (m *InternalRaftRequest) GetAuthUserGet() *AuthUserGetRequest { + if m != nil { + return m.AuthUserGet + } + return nil +} + +func (m *InternalRaftRequest) GetAuthUserChangePassword() *AuthUserChangePasswordRequest { + if m != nil { + return m.AuthUserChangePassword + } + return nil +} + +func (m *InternalRaftRequest) GetAuthUserGrantRole() *AuthUserGrantRoleRequest { + if m != nil { + return m.AuthUserGrantRole + } + return nil +} + +func (m *InternalRaftRequest) GetAuthUserRevokeRole() *AuthUserRevokeRoleRequest { + if m != nil { + return m.AuthUserRevokeRole + } + return nil +} + +func (m *InternalRaftRequest) GetAuthUserList() *AuthUserListRequest { + if m != nil { + return m.AuthUserList + } + return nil +} + +func (m *InternalRaftRequest) GetAuthRoleList() *AuthRoleListRequest { + if m != nil { + return m.AuthRoleList + } + return nil +} + +func (m *InternalRaftRequest) GetAuthRoleAdd() *AuthRoleAddRequest { + if m != nil { + return m.AuthRoleAdd + } + return nil +} + +func (m *InternalRaftRequest) GetAuthRoleDelete() *AuthRoleDeleteRequest { + if m != nil { + return m.AuthRoleDelete + } + return nil +} + +func (m *InternalRaftRequest) GetAuthRoleGet() *AuthRoleGetRequest { + if m != nil { + return m.AuthRoleGet + } + return nil +} + +func (m *InternalRaftRequest) GetAuthRoleGrantPermission() *AuthRoleGrantPermissionRequest { + if m != nil { + return m.AuthRoleGrantPermission + } + return nil +} + +func (m *InternalRaftRequest) GetAuthRoleRevokePermission() *AuthRoleRevokePermissionRequest { + if m != nil { + return m.AuthRoleRevokePermission + } + return nil +} + +func (m *InternalRaftRequest) GetClusterVersionSet() *membershippb.ClusterVersionSetRequest { + if m != nil { + return m.ClusterVersionSet + } + return nil +} + +func (m *InternalRaftRequest) GetClusterMemberAttrSet() *membershippb.ClusterMemberAttrSetRequest { + if m != nil { + return m.ClusterMemberAttrSet + } + return nil +} + +func (m *InternalRaftRequest) GetDowngradeInfoSet() *membershippb.DowngradeInfoSetRequest { + if m != nil { + return m.DowngradeInfoSet + } + return nil +} + +func (m *InternalRaftRequest) GetDowngradeVersionTest() *DowngradeVersionTestRequest { + if m != nil { + return m.DowngradeVersionTest + } + return nil +} + type EmptyResponse struct { XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -228,6 +473,27 @@ func (m *InternalAuthenticateRequest) XXX_DiscardUnknown() { var xxx_messageInfo_InternalAuthenticateRequest proto.InternalMessageInfo +func (m *InternalAuthenticateRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *InternalAuthenticateRequest) GetPassword() string { + if m != nil { + return m.Password + } + return "" +} + +func (m *InternalAuthenticateRequest) GetSimpleToken() string { + if m != nil { + return m.SimpleToken + } + return "" +} + func init() { proto.RegisterType((*RequestHeader)(nil), "etcdserverpb.RequestHeader") proto.RegisterType((*InternalRaftRequest)(nil), "etcdserverpb.InternalRaftRequest") @@ -238,76 +504,75 @@ func init() { func init() { proto.RegisterFile("raft_internal.proto", fileDescriptor_b4c9a9be0cfca103) } var fileDescriptor_b4c9a9be0cfca103 = []byte{ - // 1093 bytes of a gzipped FileDescriptorProto + // 1088 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x56, 0x4d, 0x73, 0x1b, 0x45, - 0x10, 0x8d, 0x6c, 0x27, 0xb6, 0x46, 0xb6, 0xe3, 0x8c, 0x4d, 0x32, 0xd8, 0x55, 0xc6, 0x71, 0x20, - 0x18, 0x08, 0x72, 0xb0, 0x81, 0x2a, 0xb8, 0x80, 0x62, 0xb9, 0x1c, 0xa7, 0x92, 0x94, 0x6b, 0x63, - 0xa8, 0x14, 0x14, 0xb5, 0x8c, 0x76, 0xdb, 0xd2, 0xc6, 0xab, 0xdd, 0x65, 0x66, 0xe4, 0x38, 0x57, - 0x8e, 0x9c, 0x81, 0xca, 0x8f, 0xe0, 0xc0, 0xe7, 0x7f, 0xc8, 0x81, 0x8f, 0x00, 0x7f, 0x00, 0xcc, - 0x85, 0x3b, 0x70, 0xa7, 0xe6, 0x63, 0x67, 0xb5, 0xd2, 0xc8, 0xb7, 0x55, 0xf7, 0xeb, 0xf7, 0xde, - 0xcc, 0x76, 0xaf, 0x1a, 0xcd, 0x33, 0x7a, 0x20, 0xfc, 0x28, 0x11, 0xc0, 0x12, 0x1a, 0xd7, 0x33, - 0x96, 0x8a, 0x14, 0x4f, 0x83, 0x08, 0x42, 0x0e, 0xec, 0x08, 0x58, 0xd6, 0x5a, 0x5c, 0x68, 0xa7, - 0xed, 0x54, 0x25, 0xd6, 0xe5, 0x93, 0xc6, 0x2c, 0x56, 0x59, 0x16, 0x98, 0xc7, 0x15, 0x09, 0x5f, - 0xa7, 0x59, 0xb4, 0x7e, 0x04, 0x8c, 0x47, 0x69, 0x92, 0xb5, 0xf2, 0x27, 0x83, 0xb8, 0x6a, 0x11, - 0x5d, 0xe8, 0xb6, 0x80, 0xf1, 0x4e, 0x94, 0x65, 0xad, 0xbe, 0x1f, 0x1a, 0xb7, 0xca, 0xd0, 0x8c, - 0x07, 0x9f, 0xf4, 0x80, 0x8b, 0x9b, 0x40, 0x43, 0x60, 0x78, 0x16, 0x8d, 0xed, 0x36, 0x49, 0x65, - 0xa5, 0xb2, 0x36, 0xe1, 0x8d, 0xed, 0x36, 0xf1, 0x22, 0x9a, 0xea, 0x71, 0x69, 0xb5, 0x0b, 0x64, - 0x6c, 0xa5, 0xb2, 0x56, 0xf5, 0xec, 0x6f, 0x7c, 0x0d, 0xcd, 0xd0, 0x9e, 0xe8, 0xf8, 0x0c, 0x8e, - 0x22, 0xa9, 0x4d, 0xc6, 0x65, 0xd9, 0x8d, 0xc9, 0xcf, 0x7e, 0x20, 0xe3, 0x9b, 0xf5, 0xd7, 0xbc, - 0x69, 0x99, 0xf5, 0x4c, 0xf2, 0xed, 0xc9, 0x4f, 0x55, 0xf8, 0xfa, 0xea, 0xe3, 0x79, 0x34, 0xbf, - 0x6b, 0xce, 0xef, 0xd1, 0x03, 0x61, 0x0c, 0xe0, 0x4d, 0x74, 0xae, 0xa3, 0x4c, 0x90, 0x70, 0xa5, - 0xb2, 0x56, 0xdb, 0x58, 0xaa, 0xf7, 0xdf, 0x4a, 0xbd, 0xe4, 0xd3, 0x33, 0xd0, 0x21, 0xbf, 0xd7, - 0xd1, 0x59, 0x46, 0x93, 0x36, 0x28, 0x2f, 0xb5, 0x8d, 0xc5, 0x01, 0x0e, 0x99, 0x32, 0x44, 0x9e, - 0x06, 0xe2, 0x97, 0xd1, 0x78, 0xd6, 0x13, 0x64, 0x42, 0xe1, 0x49, 0x19, 0xbf, 0xd7, 0xcb, 0xdd, - 0x79, 0x12, 0x84, 0xb7, 0xd0, 0x74, 0x08, 0x31, 0x08, 0xf0, 0xb5, 0xc8, 0x59, 0x55, 0xb4, 0x52, - 0x2e, 0x6a, 0x2a, 0x44, 0x49, 0xaa, 0x16, 0x16, 0x31, 0x29, 0x28, 0x8e, 0x13, 0x72, 0xce, 0x25, - 0xb8, 0x7f, 0x9c, 0x58, 0x41, 0x71, 0x9c, 0xe0, 0x77, 0x10, 0x0a, 0xd2, 0x6e, 0x46, 0x03, 0x21, - 0xef, 0x77, 0x52, 0x95, 0x3c, 0x57, 0x2e, 0xd9, 0xb2, 0xf9, 0xbc, 0xb2, 0xaf, 0x04, 0xbf, 0x8b, - 0x6a, 0x31, 0x50, 0x0e, 0x7e, 0x9b, 0xd1, 0x44, 0x90, 0x29, 0x17, 0xc3, 0x6d, 0x09, 0xd8, 0x91, - 0x79, 0xcb, 0x10, 0xdb, 0x90, 0x3c, 0xb3, 0x66, 0x60, 0x70, 0x94, 0x1e, 0x02, 0xa9, 0xba, 0xce, - 0xac, 0x28, 0x3c, 0x05, 0xb0, 0x67, 0x8e, 0x8b, 0x98, 0x7c, 0x2d, 0x34, 0xa6, 0xac, 0x4b, 0x90, - 0xeb, 0xb5, 0x34, 0x64, 0xca, 0xbe, 0x16, 0x05, 0xc4, 0xf7, 0xd1, 0x9c, 0x96, 0x0d, 0x3a, 0x10, - 0x1c, 0x66, 0x69, 0x94, 0x08, 0x52, 0x53, 0xc5, 0xcf, 0x3b, 0xa4, 0xb7, 0x2c, 0xc8, 0xd0, 0xe4, - 0x5d, 0xf8, 0xba, 0x77, 0x3e, 0x2e, 0x03, 0x70, 0x03, 0xd5, 0x54, 0xdb, 0x42, 0x42, 0x5b, 0x31, - 0x90, 0xbf, 0x9d, 0xb7, 0xda, 0xe8, 0x89, 0xce, 0xb6, 0x02, 0xd8, 0x3b, 0xa1, 0x36, 0x84, 0x9b, - 0x48, 0xf5, 0xb6, 0x1f, 0x46, 0x5c, 0x71, 0xfc, 0x33, 0xe9, 0xba, 0x14, 0xc9, 0xd1, 0xd4, 0x08, - 0x7b, 0x29, 0xb4, 0x88, 0xe1, 0x5b, 0xc6, 0x08, 0x17, 0x54, 0xf4, 0x38, 0xf9, 0x6f, 0xa4, 0x91, - 0x7b, 0x0a, 0x30, 0x70, 0xb2, 0x37, 0xb4, 0x23, 0x9d, 0xc3, 0x77, 0xb5, 0x23, 0x48, 0x44, 0x14, - 0x50, 0x01, 0xe4, 0x5f, 0x4d, 0xf6, 0x52, 0x99, 0x2c, 0x1f, 0xbb, 0x46, 0x1f, 0x34, 0xb7, 0x56, - 0xaa, 0xc7, 0xdb, 0x66, 0xb6, 0xe5, 0xb0, 0xfb, 0x34, 0x0c, 0xc9, 0x8f, 0x53, 0xa3, 0x8e, 0xf8, - 0x1e, 0x07, 0xd6, 0x08, 0xc3, 0xd2, 0x11, 0x4d, 0x0c, 0xdf, 0x45, 0x73, 0x05, 0x8d, 0x1e, 0x02, - 0xf2, 0x93, 0x66, 0xba, 0xe2, 0x66, 0x32, 0xd3, 0x63, 0xc8, 0x66, 0x69, 0x29, 0x5c, 0xb6, 0xd5, - 0x06, 0x41, 0x7e, 0x3e, 0xd5, 0xd6, 0x0e, 0x88, 0x21, 0x5b, 0x3b, 0x20, 0x70, 0x1b, 0x3d, 0x5b, - 0xd0, 0x04, 0x1d, 0x39, 0x96, 0x7e, 0x46, 0x39, 0x7f, 0x98, 0xb2, 0x90, 0xfc, 0xa2, 0x29, 0x5f, - 0x71, 0x53, 0x6e, 0x29, 0xf4, 0x9e, 0x01, 0xe7, 0xec, 0x17, 0xa9, 0x33, 0x8d, 0xef, 0xa3, 0x85, - 0x3e, 0xbf, 0x72, 0x9e, 0x7c, 0x96, 0xc6, 0x40, 0x9e, 0x6a, 0x8d, 0xab, 0x23, 0x6c, 0xab, 0x59, - 0x4c, 0x8b, 0xb6, 0xb9, 0x40, 0x07, 0x33, 0xf8, 0x43, 0xf4, 0x4c, 0xc1, 0xac, 0x47, 0x53, 0x53, - 0xff, 0xaa, 0xa9, 0x5f, 0x74, 0x53, 0x9b, 0x19, 0xed, 0xe3, 0xc6, 0x74, 0x28, 0x85, 0x6f, 0xa2, - 0xd9, 0x82, 0x3c, 0x8e, 0xb8, 0x20, 0xbf, 0x69, 0xd6, 0xcb, 0x6e, 0xd6, 0xdb, 0x11, 0x17, 0xa5, - 0x3e, 0xca, 0x83, 0x96, 0x49, 0x5a, 0xd3, 0x4c, 0xbf, 0x8f, 0x64, 0x92, 0xd2, 0x43, 0x4c, 0x79, - 0xd0, 0xbe, 0x7a, 0xc5, 0x24, 0x3b, 0xf2, 0xeb, 0xea, 0xa8, 0x57, 0x2f, 0x6b, 0x06, 0x3b, 0xd2, - 0xc4, 0x6c, 0x47, 0x2a, 0x1a, 0xd3, 0x91, 0xdf, 0x54, 0x47, 0x75, 0xa4, 0xac, 0x72, 0x74, 0x64, - 0x11, 0x2e, 0xdb, 0x92, 0x1d, 0xf9, 0xed, 0xa9, 0xb6, 0x06, 0x3b, 0xd2, 0xc4, 0xf0, 0x03, 0xb4, - 0xd8, 0x47, 0xa3, 0x1a, 0x25, 0x03, 0xd6, 0x8d, 0xb8, 0xfa, 0x63, 0xfd, 0x4e, 0x73, 0x5e, 0x1b, - 0xc1, 0x29, 0xe1, 0x7b, 0x16, 0x9d, 0xf3, 0x5f, 0xa2, 0xee, 0x3c, 0xee, 0xa2, 0xa5, 0x42, 0xcb, - 0xb4, 0x4e, 0x9f, 0xd8, 0xf7, 0x5a, 0xec, 0x55, 0xb7, 0x98, 0xee, 0x92, 0x61, 0x35, 0x42, 0x47, - 0x00, 0xf0, 0xc7, 0x68, 0x3e, 0x88, 0x7b, 0x5c, 0x00, 0xf3, 0xcd, 0x92, 0xe2, 0x73, 0x10, 0xe4, - 0x73, 0x64, 0x46, 0xa0, 0x7f, 0x43, 0xa9, 0x6f, 0x69, 0xe4, 0xfb, 0x1a, 0x78, 0x0f, 0xc4, 0xd0, - 0x57, 0xef, 0x42, 0x30, 0x08, 0xc1, 0x0f, 0xd0, 0xa5, 0x5c, 0x41, 0x93, 0xf9, 0x54, 0x08, 0xa6, - 0x54, 0xbe, 0x40, 0xe6, 0x3b, 0xe8, 0x52, 0xb9, 0xa3, 0x62, 0x0d, 0x21, 0x98, 0x4b, 0x68, 0x21, - 0x70, 0xa0, 0xf0, 0x47, 0x08, 0x87, 0xe9, 0xc3, 0xa4, 0xcd, 0x68, 0x08, 0x7e, 0x94, 0x1c, 0xa4, - 0x4a, 0xe6, 0x4b, 0x2d, 0xf3, 0x42, 0x59, 0xa6, 0x99, 0x03, 0x77, 0x93, 0x83, 0xd4, 0x25, 0x31, - 0x17, 0x0e, 0x20, 0x70, 0x84, 0x2e, 0x16, 0xf4, 0xf9, 0x75, 0x09, 0xe0, 0x82, 0x7c, 0x75, 0xc7, - 0xf5, 0x45, 0xb7, 0x12, 0xe6, 0x3a, 0xf6, 0x81, 0x0f, 0xca, 0xbc, 0xe9, 0x2d, 0x84, 0x0e, 0x94, - 0x5d, 0xc8, 0x6e, 0x4d, 0x4c, 0x8d, 0xcd, 0x8d, 0x7b, 0x63, 0x47, 0x1b, 0xab, 0xe7, 0xd1, 0xcc, - 0x76, 0x37, 0x13, 0x8f, 0x3c, 0xe0, 0x59, 0x9a, 0x70, 0x58, 0x7d, 0x84, 0x96, 0x4e, 0xf9, 0xcf, - 0xc0, 0x18, 0x4d, 0xa8, 0xcd, 0xb0, 0xa2, 0x36, 0x43, 0xf5, 0x2c, 0x37, 0x46, 0xfb, 0x29, 0x35, - 0x1b, 0x63, 0xfe, 0x1b, 0x5f, 0x46, 0xd3, 0x3c, 0xea, 0x66, 0x31, 0xf8, 0x22, 0x3d, 0x04, 0xbd, - 0x30, 0x56, 0xbd, 0x9a, 0x8e, 0xed, 0xcb, 0x90, 0x75, 0x75, 0xe3, 0xad, 0x27, 0x7f, 0x2e, 0x9f, - 0x79, 0x72, 0xb2, 0x5c, 0x79, 0x7a, 0xb2, 0x5c, 0xf9, 0xe3, 0x64, 0xb9, 0xf2, 0xf8, 0xaf, 0xe5, - 0x33, 0x1f, 0x5c, 0x69, 0xa7, 0xea, 0x02, 0xea, 0x51, 0xba, 0x5e, 0x6c, 0xc1, 0x9b, 0xeb, 0xfd, - 0x97, 0xd2, 0x3a, 0xa7, 0x96, 0xdb, 0xcd, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x20, 0x7d, 0xf5, - 0xf9, 0x6c, 0x0b, 0x00, 0x00, + 0x10, 0x45, 0xb6, 0x63, 0x5b, 0x23, 0xdb, 0x71, 0xc6, 0x26, 0x19, 0xec, 0x2a, 0xe3, 0x38, 0x10, + 0x0c, 0x04, 0x39, 0xd8, 0x84, 0x03, 0x17, 0x50, 0x2c, 0x97, 0xe3, 0x54, 0x92, 0x72, 0x6d, 0x0c, + 0x95, 0x82, 0xa2, 0x96, 0xd1, 0x6e, 0x5b, 0xda, 0x78, 0xb5, 0xbb, 0xcc, 0x8c, 0x1c, 0xe7, 0xca, + 0x91, 0x33, 0x50, 0xf9, 0x11, 0x1c, 0xf8, 0xfc, 0x0f, 0x1c, 0xf8, 0x08, 0xf0, 0x07, 0x28, 0x73, + 0xe1, 0x0e, 0xdc, 0x53, 0xf3, 0xb1, 0xb3, 0x5a, 0x69, 0xe4, 0xdb, 0xaa, 0xfb, 0xf5, 0x7b, 0x6f, + 0x66, 0xbb, 0x57, 0x8d, 0x16, 0x18, 0x3d, 0x14, 0x7e, 0x94, 0x08, 0x60, 0x09, 0x8d, 0xeb, 0x19, + 0x4b, 0x45, 0x8a, 0x67, 0x40, 0x04, 0x21, 0x07, 0x76, 0x0c, 0x2c, 0x6b, 0x2d, 0x2d, 0xb6, 0xd3, + 0x76, 0xaa, 0x12, 0x1b, 0xf2, 0x49, 0x63, 0x96, 0xaa, 0x2c, 0x0b, 0xcc, 0xe3, 0xaa, 0x84, 0x6f, + 0xd0, 0x2c, 0xda, 0x38, 0x06, 0xc6, 0xa3, 0x34, 0xc9, 0x5a, 0xf9, 0x93, 0x41, 0x5c, 0xb5, 0x88, + 0x2e, 0x74, 0x5b, 0xc0, 0x78, 0x27, 0xca, 0xb2, 0x56, 0xdf, 0x0f, 0x8d, 0x5b, 0x63, 0x68, 0xd6, + 0x83, 0x4f, 0x7b, 0xc0, 0xc5, 0x2d, 0xa0, 0x21, 0x30, 0x3c, 0x87, 0xc6, 0xf6, 0x9a, 0xa4, 0xb2, + 0x5a, 0x59, 0x9f, 0xf0, 0xc6, 0xf6, 0x9a, 0x78, 0x09, 0x4d, 0xf7, 0xb8, 0xb4, 0xda, 0x05, 0x32, + 0xb6, 0x5a, 0x59, 0xaf, 0x7a, 0xf6, 0x37, 0xbe, 0x86, 0x66, 0x69, 0x4f, 0x74, 0x7c, 0x06, 0xc7, + 0x91, 0xd4, 0x26, 0xe3, 0xb2, 0xec, 0xe6, 0xd4, 0xe7, 0x3f, 0x92, 0xf1, 0xad, 0xfa, 0x9b, 0xde, + 0x8c, 0xcc, 0x7a, 0x26, 0xf9, 0xce, 0xd4, 0x67, 0x2a, 0x7c, 0x7d, 0xed, 0xc9, 0x02, 0x5a, 0xd8, + 0x33, 0xe7, 0xf7, 0xe8, 0xa1, 0x30, 0x06, 0xf0, 0x16, 0x9a, 0xec, 0x28, 0x13, 0x24, 0x5c, 0xad, + 0xac, 0xd7, 0x36, 0x97, 0xeb, 0xfd, 0xb7, 0x52, 0x2f, 0xf9, 0xf4, 0x0c, 0x74, 0xc8, 0xef, 0x75, + 0x74, 0x8e, 0xd1, 0xa4, 0x0d, 0xca, 0x4b, 0x6d, 0x73, 0x69, 0x80, 0x43, 0xa6, 0x0c, 0x91, 0xa7, + 0x81, 0xf8, 0x35, 0x34, 0x9e, 0xf5, 0x04, 0x99, 0x50, 0x78, 0x52, 0xc6, 0xef, 0xf7, 0x72, 0x77, + 0x9e, 0x04, 0xe1, 0x6d, 0x34, 0x13, 0x42, 0x0c, 0x02, 0x7c, 0x2d, 0x72, 0x4e, 0x15, 0xad, 0x96, + 0x8b, 0x9a, 0x0a, 0x51, 0x92, 0xaa, 0x85, 0x45, 0x4c, 0x0a, 0x8a, 0x93, 0x84, 0x4c, 0xba, 0x04, + 0x0f, 0x4e, 0x12, 0x2b, 0x28, 0x4e, 0x12, 0xfc, 0x2e, 0x42, 0x41, 0xda, 0xcd, 0x68, 0x20, 0xe4, + 0xfd, 0x4e, 0xa9, 0x92, 0x17, 0xcb, 0x25, 0xdb, 0x36, 0x9f, 0x57, 0xf6, 0x95, 0xe0, 0xf7, 0x50, + 0x2d, 0x06, 0xca, 0xc1, 0x6f, 0x33, 0x9a, 0x08, 0x32, 0xed, 0x62, 0xb8, 0x23, 0x01, 0xbb, 0x32, + 0x6f, 0x19, 0x62, 0x1b, 0x92, 0x67, 0xd6, 0x0c, 0x0c, 0x8e, 0xd3, 0x23, 0x20, 0x55, 0xd7, 0x99, + 0x15, 0x85, 0xa7, 0x00, 0xf6, 0xcc, 0x71, 0x11, 0x93, 0xaf, 0x85, 0xc6, 0x94, 0x75, 0x09, 0x72, + 0xbd, 0x96, 0x86, 0x4c, 0xd9, 0xd7, 0xa2, 0x80, 0xf8, 0x01, 0x9a, 0xd7, 0xb2, 0x41, 0x07, 0x82, + 0xa3, 0x2c, 0x8d, 0x12, 0x41, 0x6a, 0xaa, 0xf8, 0x25, 0x87, 0xf4, 0xb6, 0x05, 0x19, 0x9a, 0xbc, + 0x0b, 0xdf, 0xf2, 0xce, 0xc7, 0x65, 0x00, 0x6e, 0xa0, 0x9a, 0x6a, 0x5b, 0x48, 0x68, 0x2b, 0x06, + 0xf2, 0x8f, 0xf3, 0x56, 0x1b, 0x3d, 0xd1, 0xd9, 0x51, 0x00, 0x7b, 0x27, 0xd4, 0x86, 0x70, 0x13, + 0xa9, 0xde, 0xf6, 0xc3, 0x88, 0x2b, 0x8e, 0x7f, 0xa7, 0x5c, 0x97, 0x22, 0x39, 0x9a, 0x1a, 0x61, + 0x2f, 0x85, 0x16, 0x31, 0x7c, 0xdb, 0x18, 0xe1, 0x82, 0x8a, 0x1e, 0x27, 0xff, 0x8f, 0x34, 0x72, + 0x5f, 0x01, 0x06, 0x4e, 0x76, 0x43, 0x3b, 0xd2, 0x39, 0x7c, 0x4f, 0x3b, 0x82, 0x44, 0x44, 0x01, + 0x15, 0x40, 0xfe, 0xd3, 0x64, 0xaf, 0x96, 0xc9, 0xf2, 0xb1, 0x6b, 0xf4, 0x41, 0x73, 0x6b, 0xa5, + 0x7a, 0xbc, 0x63, 0x66, 0x5b, 0x0e, 0xbb, 0x4f, 0xc3, 0x90, 0xfc, 0x3c, 0x3d, 0xea, 0x88, 0xef, + 0x73, 0x60, 0x8d, 0x30, 0x2c, 0x1d, 0xd1, 0xc4, 0xf0, 0x3d, 0x34, 0x5f, 0xd0, 0xe8, 0x21, 0x20, + 0xbf, 0x68, 0xa6, 0x2b, 0x6e, 0x26, 0x33, 0x3d, 0x86, 0x6c, 0x8e, 0x96, 0xc2, 0x65, 0x5b, 0x6d, + 0x10, 0xe4, 0xd7, 0x33, 0x6d, 0xed, 0x82, 0x18, 0xb2, 0xb5, 0x0b, 0x02, 0xb7, 0xd1, 0x0b, 0x05, + 0x4d, 0xd0, 0x91, 0x63, 0xe9, 0x67, 0x94, 0xf3, 0x47, 0x29, 0x0b, 0xc9, 0x6f, 0x9a, 0xf2, 0x75, + 0x37, 0xe5, 0xb6, 0x42, 0xef, 0x1b, 0x70, 0xce, 0x7e, 0x91, 0x3a, 0xd3, 0xf8, 0x01, 0x5a, 0xec, + 0xf3, 0x2b, 0xe7, 0xc9, 0x67, 0x69, 0x0c, 0xe4, 0xa9, 0xd6, 0xb8, 0x3a, 0xc2, 0xb6, 0x9a, 0xc5, + 0xb4, 0x68, 0x9b, 0x0b, 0x74, 0x30, 0x83, 0x3f, 0x42, 0xcf, 0x17, 0xcc, 0x7a, 0x34, 0x35, 0xf5, + 0xef, 0x9a, 0xfa, 0x15, 0x37, 0xb5, 0x99, 0xd1, 0x3e, 0x6e, 0x4c, 0x87, 0x52, 0xf8, 0x16, 0x9a, + 0x2b, 0xc8, 0xe3, 0x88, 0x0b, 0xf2, 0x87, 0x66, 0xbd, 0xec, 0x66, 0xbd, 0x13, 0x71, 0x51, 0xea, + 0xa3, 0x3c, 0x68, 0x99, 0xa4, 0x35, 0xcd, 0xf4, 0xe7, 0x48, 0x26, 0x29, 0x3d, 0xc4, 0x94, 0x07, + 0xed, 0xab, 0x57, 0x4c, 0xb2, 0x23, 0xbf, 0xa9, 0x8e, 0x7a, 0xf5, 0xb2, 0x66, 0xb0, 0x23, 0x4d, + 0xcc, 0x76, 0xa4, 0xa2, 0x31, 0x1d, 0xf9, 0x6d, 0x75, 0x54, 0x47, 0xca, 0x2a, 0x47, 0x47, 0x16, + 0xe1, 0xb2, 0x2d, 0xd9, 0x91, 0xdf, 0x9d, 0x69, 0x6b, 0xb0, 0x23, 0x4d, 0x0c, 0x3f, 0x44, 0x4b, + 0x7d, 0x34, 0xaa, 0x51, 0x32, 0x60, 0xdd, 0x88, 0xab, 0x3f, 0xd6, 0xef, 0x35, 0xe7, 0xb5, 0x11, + 0x9c, 0x12, 0xbe, 0x6f, 0xd1, 0x39, 0xff, 0x25, 0xea, 0xce, 0xe3, 0x2e, 0x5a, 0x2e, 0xb4, 0x4c, + 0xeb, 0xf4, 0x89, 0xfd, 0xa0, 0xc5, 0xde, 0x70, 0x8b, 0xe9, 0x2e, 0x19, 0x56, 0x23, 0x74, 0x04, + 0x00, 0x7f, 0x82, 0x16, 0x82, 0xb8, 0xc7, 0x05, 0x30, 0xdf, 0x2c, 0x29, 0x3e, 0x07, 0x41, 0xbe, + 0x40, 0x66, 0x04, 0xfa, 0x37, 0x94, 0xfa, 0xb6, 0x46, 0x7e, 0xa0, 0x81, 0xf7, 0x41, 0x0c, 0x7d, + 0xf5, 0x2e, 0x04, 0x83, 0x10, 0xfc, 0x10, 0x5d, 0xca, 0x15, 0x34, 0x99, 0x4f, 0x85, 0x60, 0x4a, + 0xe5, 0x4b, 0x64, 0xbe, 0x83, 0x2e, 0x95, 0xbb, 0x2a, 0xd6, 0x10, 0x82, 0xb9, 0x84, 0x16, 0x03, + 0x07, 0x0a, 0x7f, 0x8c, 0x70, 0x98, 0x3e, 0x4a, 0xda, 0x8c, 0x86, 0xe0, 0x47, 0xc9, 0x61, 0xaa, + 0x64, 0xbe, 0xd2, 0x32, 0x2f, 0x97, 0x65, 0x9a, 0x39, 0x70, 0x2f, 0x39, 0x4c, 0x5d, 0x12, 0xf3, + 0xe1, 0x00, 0x02, 0x47, 0xe8, 0x62, 0x41, 0x9f, 0x5f, 0x97, 0x00, 0x2e, 0xc8, 0xd7, 0x77, 0x5d, + 0x5f, 0x74, 0x2b, 0x61, 0xae, 0xe3, 0x00, 0xf8, 0xa0, 0xcc, 0xdb, 0xde, 0x62, 0xe8, 0x40, 0xd9, + 0x85, 0xec, 0xf6, 0xc4, 0xf4, 0xd8, 0xfc, 0xb8, 0x37, 0x76, 0xbc, 0xb9, 0x76, 0x1e, 0xcd, 0xee, + 0x74, 0x33, 0xf1, 0xd8, 0x03, 0x9e, 0xa5, 0x09, 0x87, 0xb5, 0xc7, 0x68, 0xf9, 0x8c, 0xff, 0x0c, + 0x8c, 0xd1, 0x84, 0xda, 0x0c, 0x2b, 0x6a, 0x33, 0x54, 0xcf, 0x72, 0x63, 0xb4, 0x9f, 0x52, 0xb3, + 0x31, 0xe6, 0xbf, 0xf1, 0x65, 0x34, 0xc3, 0xa3, 0x6e, 0x16, 0x83, 0x2f, 0xd2, 0x23, 0xd0, 0x0b, + 0x63, 0xd5, 0xab, 0xe9, 0xd8, 0x81, 0x0c, 0x59, 0x57, 0x37, 0x6f, 0xfc, 0x74, 0xba, 0x52, 0x79, + 0x7a, 0xba, 0x52, 0xf9, 0xeb, 0x74, 0xa5, 0xf2, 0xe4, 0xef, 0x95, 0xe7, 0x3e, 0xbc, 0xd2, 0x4e, + 0xd5, 0xe1, 0xeb, 0x51, 0xba, 0x51, 0x6c, 0xc0, 0x5b, 0x1b, 0xfd, 0x17, 0xd2, 0x9a, 0x54, 0x8b, + 0xed, 0xd6, 0xb3, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe2, 0x24, 0x94, 0xa1, 0x68, 0x0b, 0x00, 0x00, } func (m *RequestHeader) Marshal() (dAtA []byte, err error) { diff --git a/api/membershippb/membership.pb.go b/api/membershippb/membership.pb.go index 85a2a741f31e..1b6447b54783 100644 --- a/api/membershippb/membership.pb.go +++ b/api/membershippb/membership.pb.go @@ -69,6 +69,20 @@ func (m *RaftAttributes) XXX_DiscardUnknown() { var xxx_messageInfo_RaftAttributes proto.InternalMessageInfo +func (m *RaftAttributes) GetPeerUrls() []string { + if m != nil { + return m.PeerUrls + } + return nil +} + +func (m *RaftAttributes) GetIsLearner() bool { + if m != nil { + return m.IsLearner + } + return false +} + // Attributes represents all the non-raft related attributes of an etcd member. type Attributes struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -111,6 +125,20 @@ func (m *Attributes) XXX_DiscardUnknown() { var xxx_messageInfo_Attributes proto.InternalMessageInfo +func (m *Attributes) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Attributes) GetClientUrls() []string { + if m != nil { + return m.ClientUrls + } + return nil +} + type Member struct { ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` RaftAttributes *RaftAttributes `protobuf:"bytes,2,opt,name=raft_attributes,json=raftAttributes,proto3" json:"raft_attributes,omitempty"` @@ -153,6 +181,27 @@ func (m *Member) XXX_DiscardUnknown() { var xxx_messageInfo_Member proto.InternalMessageInfo +func (m *Member) GetID() uint64 { + if m != nil { + return m.ID + } + return 0 +} + +func (m *Member) GetRaftAttributes() *RaftAttributes { + if m != nil { + return m.RaftAttributes + } + return nil +} + +func (m *Member) GetMemberAttributes() *Attributes { + if m != nil { + return m.MemberAttributes + } + return nil +} + type ClusterVersionSetRequest struct { Ver string `protobuf:"bytes,1,opt,name=ver,proto3" json:"ver,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -193,6 +242,13 @@ func (m *ClusterVersionSetRequest) XXX_DiscardUnknown() { var xxx_messageInfo_ClusterVersionSetRequest proto.InternalMessageInfo +func (m *ClusterVersionSetRequest) GetVer() string { + if m != nil { + return m.Ver + } + return "" +} + type ClusterMemberAttrSetRequest struct { Member_ID uint64 `protobuf:"varint,1,opt,name=member_ID,json=memberID,proto3" json:"member_ID,omitempty"` MemberAttributes *Attributes `protobuf:"bytes,2,opt,name=member_attributes,json=memberAttributes,proto3" json:"member_attributes,omitempty"` @@ -234,6 +290,20 @@ func (m *ClusterMemberAttrSetRequest) XXX_DiscardUnknown() { var xxx_messageInfo_ClusterMemberAttrSetRequest proto.InternalMessageInfo +func (m *ClusterMemberAttrSetRequest) GetMember_ID() uint64 { + if m != nil { + return m.Member_ID + } + return 0 +} + +func (m *ClusterMemberAttrSetRequest) GetMemberAttributes() *Attributes { + if m != nil { + return m.MemberAttributes + } + return nil +} + type DowngradeInfoSetRequest struct { Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` Ver string `protobuf:"bytes,2,opt,name=ver,proto3" json:"ver,omitempty"` @@ -275,6 +345,20 @@ func (m *DowngradeInfoSetRequest) XXX_DiscardUnknown() { var xxx_messageInfo_DowngradeInfoSetRequest proto.InternalMessageInfo +func (m *DowngradeInfoSetRequest) GetEnabled() bool { + if m != nil { + return m.Enabled + } + return false +} + +func (m *DowngradeInfoSetRequest) GetVer() string { + if m != nil { + return m.Ver + } + return "" +} + func init() { proto.RegisterType((*RaftAttributes)(nil), "membershippb.RaftAttributes") proto.RegisterType((*Attributes)(nil), "membershippb.Attributes") @@ -287,34 +371,34 @@ func init() { func init() { proto.RegisterFile("membership.proto", fileDescriptor_949fe0d019050ef5) } var fileDescriptor_949fe0d019050ef5 = []byte{ - // 422 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x52, 0xc1, 0x6e, 0xd3, 0x40, - 0x10, 0xed, 0x3a, 0x55, 0x6b, 0x4f, 0x51, 0x28, 0x2b, 0x24, 0xac, 0x06, 0x8c, 0x55, 0x2e, 0x39, - 0xd9, 0x12, 0x51, 0x0f, 0x70, 0x03, 0xd2, 0x43, 0x10, 0xe5, 0xb0, 0xa8, 0x1c, 0xb8, 0x44, 0xeb, - 0x66, 0x62, 0x56, 0x72, 0xbc, 0x66, 0x77, 0x5d, 0xee, 0x1c, 0xf9, 0x02, 0xfe, 0x82, 0x13, 0xff, - 0xd0, 0x23, 0x9f, 0x00, 0xe1, 0x47, 0x90, 0x77, 0x9d, 0xd8, 0x11, 0x9c, 0x7a, 0x1b, 0x3f, 0xcf, - 0xbc, 0x79, 0xef, 0xed, 0xc0, 0xf1, 0x0a, 0x57, 0x19, 0x2a, 0xfd, 0x51, 0x54, 0x49, 0xa5, 0xa4, - 0x91, 0xf4, 0x4e, 0x87, 0x54, 0xd9, 0xc9, 0xfd, 0x5c, 0xe6, 0xd2, 0xfe, 0x48, 0x9b, 0xca, 0xf5, - 0x9c, 0xc4, 0x68, 0xae, 0x16, 0x29, 0xaf, 0x44, 0x7a, 0x8d, 0x4a, 0x0b, 0x59, 0x56, 0xd9, 0xa6, - 0x72, 0x1d, 0xa7, 0x97, 0x30, 0x64, 0x7c, 0x69, 0x5e, 0x18, 0xa3, 0x44, 0x56, 0x1b, 0xd4, 0x74, - 0x04, 0x41, 0x85, 0xa8, 0xe6, 0xb5, 0x2a, 0x74, 0x48, 0xe2, 0xc1, 0x38, 0x60, 0x7e, 0x03, 0x5c, - 0xaa, 0x42, 0xd3, 0x47, 0x00, 0x42, 0xcf, 0x0b, 0xe4, 0xaa, 0x44, 0x15, 0x7a, 0x31, 0x19, 0xfb, - 0x2c, 0x10, 0xfa, 0x8d, 0x03, 0x9e, 0x1f, 0x7e, 0xf9, 0x11, 0x0e, 0x26, 0xc9, 0xd9, 0xe9, 0x6b, - 0x80, 0x1e, 0x25, 0x85, 0xfd, 0x92, 0xaf, 0x30, 0x24, 0x31, 0x19, 0x07, 0xcc, 0xd6, 0xf4, 0x31, - 0x1c, 0x5d, 0x15, 0x02, 0x4b, 0xe3, 0x16, 0x79, 0x76, 0x11, 0x38, 0xa8, 0x59, 0xd5, 0x71, 0x7d, - 0x27, 0x70, 0x70, 0x61, 0xbd, 0xd2, 0x21, 0x78, 0xb3, 0xa9, 0xa5, 0xd9, 0x67, 0xde, 0x6c, 0x4a, - 0xcf, 0xe1, 0xae, 0xe2, 0x4b, 0x33, 0xe7, 0xdb, 0x5d, 0x56, 0xd3, 0xd1, 0xd3, 0x87, 0x49, 0x3f, - 0x9d, 0x64, 0xd7, 0x22, 0x1b, 0xaa, 0x5d, 0xcb, 0xe7, 0x70, 0xcf, 0xb5, 0xf7, 0x89, 0x06, 0x96, - 0x28, 0xdc, 0x25, 0xea, 0x91, 0xb4, 0x2f, 0xd2, 0x21, 0x9d, 0xe2, 0x33, 0x08, 0x5f, 0x15, 0xb5, - 0x36, 0xa8, 0xde, 0xbb, 0xb0, 0xdf, 0xa1, 0x61, 0xf8, 0xa9, 0x46, 0x6d, 0xe8, 0x31, 0x0c, 0xae, - 0x51, 0xb5, 0x51, 0x34, 0x65, 0x37, 0xf6, 0x95, 0xc0, 0xa8, 0x9d, 0xbb, 0xd8, 0x72, 0xf7, 0x46, - 0x47, 0x10, 0xb4, 0x32, 0xb7, 0x21, 0xf8, 0x0e, 0xb0, 0x51, 0xfc, 0xc7, 0x83, 0x77, 0x7b, 0x0f, - 0x6f, 0xe1, 0xc1, 0x54, 0x7e, 0x2e, 0x73, 0xc5, 0x17, 0x38, 0x2b, 0x97, 0xb2, 0xa7, 0x23, 0x84, - 0x43, 0x2c, 0x79, 0x56, 0xe0, 0xc2, 0xaa, 0xf0, 0xd9, 0xe6, 0x73, 0x63, 0xce, 0xfb, 0xd7, 0xdc, - 0xcb, 0x67, 0x37, 0xbf, 0xa3, 0xbd, 0x9b, 0x75, 0x44, 0x7e, 0xae, 0x23, 0xf2, 0x6b, 0x1d, 0x91, - 0x6f, 0x7f, 0xa2, 0xbd, 0x0f, 0x4f, 0x72, 0x99, 0x34, 0x37, 0x9a, 0x08, 0x99, 0x76, 0xb7, 0x3a, - 0x49, 0xfb, 0x82, 0xb3, 0x03, 0x7b, 0xaa, 0x93, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xcf, 0x56, - 0x21, 0x97, 0x04, 0x03, 0x00, 0x00, + // 417 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x52, 0xb1, 0x8e, 0xd3, 0x40, + 0x10, 0x65, 0x9d, 0xd3, 0x9d, 0x3d, 0x87, 0xc2, 0xb1, 0x42, 0xc2, 0xba, 0x80, 0xb1, 0x8e, 0x26, + 0x95, 0x2d, 0x11, 0xa5, 0xa1, 0x03, 0x72, 0x45, 0x10, 0x47, 0xb1, 0xe8, 0x28, 0x68, 0xa2, 0xf5, + 0x65, 0x62, 0x56, 0x72, 0xbc, 0x66, 0x77, 0x1d, 0x7a, 0x4a, 0xbe, 0x80, 0xbf, 0xa0, 0xe2, 0x1f, + 0x28, 0xf9, 0x04, 0x14, 0x7e, 0x04, 0x79, 0xd7, 0x89, 0x1d, 0x41, 0x75, 0xdd, 0xf8, 0x79, 0xe6, + 0xcd, 0x7b, 0x6f, 0x07, 0xce, 0xd6, 0xb8, 0xce, 0x50, 0xe9, 0x8f, 0xa2, 0x4a, 0x2a, 0x25, 0x8d, + 0xa4, 0x77, 0x3b, 0xa4, 0xca, 0xce, 0x1f, 0xe4, 0x32, 0x97, 0xf6, 0x47, 0xda, 0x54, 0xae, 0xe7, + 0x3c, 0x46, 0x73, 0xb3, 0x4c, 0x79, 0x25, 0xd2, 0x0d, 0x2a, 0x2d, 0x64, 0x59, 0x65, 0xbb, 0xca, + 0x75, 0x5c, 0x5c, 0xc3, 0x90, 0xf1, 0x95, 0x79, 0x61, 0x8c, 0x12, 0x59, 0x6d, 0x50, 0xd3, 0x11, + 0x04, 0x15, 0xa2, 0x5a, 0xd4, 0xaa, 0xd0, 0x21, 0x89, 0x07, 0xe3, 0x80, 0xf9, 0x0d, 0x70, 0xad, + 0x0a, 0x4d, 0x1f, 0x03, 0x08, 0xbd, 0x28, 0x90, 0xab, 0x12, 0x55, 0xe8, 0xc5, 0x64, 0xec, 0xb3, + 0x40, 0xe8, 0x37, 0x0e, 0x78, 0x7e, 0xf2, 0xe5, 0x47, 0x38, 0x98, 0x24, 0xd3, 0x8b, 0xd7, 0x00, + 0x3d, 0x4a, 0x0a, 0x47, 0x25, 0x5f, 0x63, 0x48, 0x62, 0x32, 0x0e, 0x98, 0xad, 0xe9, 0x13, 0x38, + 0xbd, 0x29, 0x04, 0x96, 0xc6, 0x2d, 0xf2, 0xec, 0x22, 0x70, 0x50, 0xb3, 0xaa, 0xe3, 0xfa, 0x4e, + 0xe0, 0xf8, 0xca, 0x7a, 0xa5, 0x43, 0xf0, 0xe6, 0x33, 0x4b, 0x73, 0xc4, 0xbc, 0xf9, 0x8c, 0x5e, + 0xc2, 0x3d, 0xc5, 0x57, 0x66, 0xc1, 0xf7, 0xbb, 0xac, 0xa6, 0xd3, 0x67, 0x8f, 0x92, 0x7e, 0x3a, + 0xc9, 0xa1, 0x45, 0x36, 0x54, 0x87, 0x96, 0x2f, 0xe1, 0xbe, 0x6b, 0xef, 0x13, 0x0d, 0x2c, 0x51, + 0x78, 0x48, 0xd4, 0x23, 0x69, 0x5f, 0xa4, 0x43, 0x3a, 0xc5, 0x53, 0x08, 0x5f, 0x15, 0xb5, 0x36, + 0xa8, 0xde, 0xbb, 0xb0, 0xdf, 0xa1, 0x61, 0xf8, 0xa9, 0x46, 0x6d, 0xe8, 0x19, 0x0c, 0x36, 0xa8, + 0xda, 0x28, 0x9a, 0xb2, 0x1b, 0xfb, 0x4a, 0x60, 0xd4, 0xce, 0x5d, 0xed, 0xb9, 0x7b, 0xa3, 0x23, + 0x08, 0x5a, 0x99, 0xfb, 0x10, 0x7c, 0x07, 0xd8, 0x28, 0xfe, 0xe3, 0xc1, 0xbb, 0xbd, 0x87, 0xb7, + 0xf0, 0x70, 0x26, 0x3f, 0x97, 0xb9, 0xe2, 0x4b, 0x9c, 0x97, 0x2b, 0xd9, 0xd3, 0x11, 0xc2, 0x09, + 0x96, 0x3c, 0x2b, 0x70, 0x69, 0x55, 0xf8, 0x6c, 0xf7, 0xb9, 0x33, 0xe7, 0xfd, 0x6b, 0xee, 0xe5, + 0xf4, 0xe7, 0x36, 0x22, 0xbf, 0xb6, 0x11, 0xf9, 0xbd, 0x8d, 0xc8, 0xb7, 0x3f, 0xd1, 0x9d, 0x0f, + 0x4f, 0x73, 0x99, 0x34, 0xf7, 0x99, 0x08, 0x99, 0x76, 0x77, 0x3a, 0x49, 0xfb, 0x62, 0xb3, 0x63, + 0x7b, 0xa6, 0x93, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x65, 0x91, 0xd1, 0xcb, 0x00, 0x03, 0x00, + 0x00, } func (m *RaftAttributes) Marshal() (dAtA []byte, err error) { diff --git a/api/mvccpb/kv.pb.go b/api/mvccpb/kv.pb.go index e4d9f0e2904d..72d3d34ff476 100644 --- a/api/mvccpb/kv.pb.go +++ b/api/mvccpb/kv.pb.go @@ -104,6 +104,48 @@ func (m *KeyValue) XXX_DiscardUnknown() { var xxx_messageInfo_KeyValue proto.InternalMessageInfo +func (m *KeyValue) GetKey() []byte { + if m != nil { + return m.Key + } + return nil +} + +func (m *KeyValue) GetCreateRevision() int64 { + if m != nil { + return m.CreateRevision + } + return 0 +} + +func (m *KeyValue) GetModRevision() int64 { + if m != nil { + return m.ModRevision + } + return 0 +} + +func (m *KeyValue) GetVersion() int64 { + if m != nil { + return m.Version + } + return 0 +} + +func (m *KeyValue) GetValue() []byte { + if m != nil { + return m.Value + } + return nil +} + +func (m *KeyValue) GetLease() int64 { + if m != nil { + return m.Lease + } + return 0 +} + type Event struct { // type is the kind of event. If type is a PUT, it indicates // new data has been stored to the key. If type is a DELETE, @@ -155,6 +197,27 @@ func (m *Event) XXX_DiscardUnknown() { var xxx_messageInfo_Event proto.InternalMessageInfo +func (m *Event) GetType() Event_EventType { + if m != nil { + return m.Type + } + return Event_PUT +} + +func (m *Event) GetKv() *KeyValue { + if m != nil { + return m.Kv + } + return nil +} + +func (m *Event) GetPrevKv() *KeyValue { + if m != nil { + return m.PrevKv + } + return nil +} + func init() { proto.RegisterEnum("mvccpb.Event_EventType", Event_EventType_name, Event_EventType_value) proto.RegisterType((*KeyValue)(nil), "mvccpb.KeyValue") @@ -164,28 +227,27 @@ func init() { func init() { proto.RegisterFile("kv.proto", fileDescriptor_2216fe83c9c12408) } var fileDescriptor_2216fe83c9c12408 = []byte{ - // 322 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xc1, 0x4e, 0xc2, 0x40, - 0x10, 0x86, 0x59, 0x0a, 0x05, 0x07, 0x82, 0xcd, 0x86, 0xc4, 0xc6, 0xc4, 0xa6, 0x72, 0x11, 0x63, - 0xd2, 0x26, 0xf0, 0x06, 0xc6, 0x9e, 0xf0, 0x60, 0x1a, 0xf4, 0xe0, 0x85, 0x94, 0x32, 0x21, 0x4d, - 0x81, 0x6d, 0x4a, 0x9d, 0xa4, 0x6f, 0xe2, 0xdd, 0xbb, 0xcf, 0xc1, 0xd1, 0x47, 0x50, 0x7c, 0x11, - 0xd3, 0x59, 0xc1, 0x8b, 0x97, 0xdd, 0x99, 0xff, 0xff, 0xb2, 0xf3, 0x4f, 0x16, 0xda, 0x29, 0x79, - 0x59, 0xae, 0x0a, 0x25, 0xcd, 0x35, 0xc5, 0x71, 0x36, 0x3f, 0xef, 0x2f, 0xd5, 0x52, 0xb1, 0xe4, - 0x57, 0x95, 0x76, 0x07, 0xef, 0x02, 0xda, 0x13, 0x2c, 0x9f, 0xa2, 0xd5, 0x0b, 0x4a, 0x0b, 0x8c, - 0x14, 0x4b, 0x5b, 0xb8, 0x62, 0xd8, 0x0d, 0xab, 0x52, 0x5e, 0xc1, 0x69, 0x9c, 0x63, 0x54, 0xe0, - 0x2c, 0x47, 0x4a, 0xb6, 0x89, 0xda, 0xd8, 0x75, 0x57, 0x0c, 0x8d, 0xb0, 0xa7, 0xe5, 0xf0, 0x57, - 0x95, 0x97, 0xd0, 0x5d, 0xab, 0xc5, 0x1f, 0x65, 0x30, 0xd5, 0x59, 0xab, 0xc5, 0x11, 0xb1, 0xa1, - 0x45, 0x98, 0xb3, 0xdb, 0x60, 0xf7, 0xd0, 0xca, 0x3e, 0x34, 0xa9, 0x0a, 0x60, 0x37, 0x79, 0xb2, - 0x6e, 0x2a, 0x75, 0x85, 0xd1, 0x16, 0x6d, 0x93, 0x69, 0xdd, 0x0c, 0xde, 0x04, 0x34, 0x03, 0xc2, - 0x4d, 0x21, 0x6f, 0xa0, 0x51, 0x94, 0x19, 0x72, 0xdc, 0xde, 0xe8, 0xcc, 0xd3, 0x7b, 0x7a, 0x6c, - 0xea, 0x73, 0x5a, 0x66, 0x18, 0x32, 0x24, 0x5d, 0xa8, 0xa7, 0xc4, 0xd9, 0x3b, 0x23, 0xeb, 0x80, - 0x1e, 0x16, 0x0f, 0xeb, 0x29, 0xc9, 0x6b, 0x68, 0x65, 0x39, 0xd2, 0x2c, 0x25, 0x0e, 0xff, 0x1f, - 0x66, 0x56, 0xc0, 0x84, 0x06, 0x2e, 0x9c, 0x1c, 0xdf, 0x97, 0x2d, 0x30, 0x1e, 0x1e, 0xa7, 0x56, - 0x4d, 0x02, 0x98, 0x77, 0xc1, 0x7d, 0x30, 0x0d, 0x2c, 0x71, 0x3b, 0xde, 0x7d, 0x39, 0xb5, 0xdd, - 0xde, 0x11, 0x1f, 0x7b, 0x47, 0x7c, 0xee, 0x1d, 0xf1, 0xfa, 0xed, 0xd4, 0x9e, 0x2f, 0x96, 0xca, - 0xc3, 0x22, 0x5e, 0x78, 0x89, 0xf2, 0xab, 0xdb, 0x8f, 0xb2, 0xc4, 0xa7, 0xb1, 0xaf, 0xe7, 0xcc, - 0x4d, 0xfe, 0x92, 0xf1, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf9, 0xc9, 0x87, 0x6b, 0xbc, 0x01, - 0x00, 0x00, + // 318 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xc1, 0x4a, 0xc3, 0x40, + 0x10, 0x86, 0xbb, 0x4d, 0x9b, 0xd6, 0x69, 0xa9, 0x61, 0x29, 0x18, 0x04, 0x43, 0xec, 0xc5, 0x8a, + 0x90, 0x40, 0xfb, 0x06, 0x62, 0x4e, 0xf5, 0x20, 0xa1, 0x7a, 0xf0, 0x52, 0xd2, 0x74, 0x28, 0x21, + 0x6d, 0x37, 0xa4, 0x71, 0x20, 0x6f, 0xe2, 0xdd, 0xbb, 0xcf, 0xe1, 0xd1, 0x47, 0x90, 0xfa, 0x22, + 0x92, 0x59, 0x53, 0x2f, 0x5e, 0x76, 0x67, 0xfe, 0xff, 0x63, 0xe7, 0x1f, 0x16, 0xba, 0x29, 0x79, + 0x59, 0xae, 0x0a, 0x25, 0xcd, 0x2d, 0xc5, 0x71, 0xb6, 0x3c, 0x1f, 0xae, 0xd5, 0x5a, 0xb1, 0xe4, + 0x57, 0x95, 0x76, 0x47, 0xef, 0x02, 0xba, 0x33, 0x2c, 0x9f, 0xa2, 0xcd, 0x0b, 0x4a, 0x0b, 0x8c, + 0x14, 0x4b, 0x5b, 0xb8, 0x62, 0xdc, 0x0f, 0xab, 0x52, 0x5e, 0xc1, 0x69, 0x9c, 0x63, 0x54, 0xe0, + 0x22, 0x47, 0x4a, 0xf6, 0x89, 0xda, 0xd9, 0x4d, 0x57, 0x8c, 0x8d, 0x70, 0xa0, 0xe5, 0xf0, 0x57, + 0x95, 0x97, 0xd0, 0xdf, 0xaa, 0xd5, 0x1f, 0x65, 0x30, 0xd5, 0xdb, 0xaa, 0xd5, 0x11, 0xb1, 0xa1, + 0x43, 0x98, 0xb3, 0xdb, 0x62, 0xb7, 0x6e, 0xe5, 0x10, 0xda, 0x54, 0x05, 0xb0, 0xdb, 0x3c, 0x59, + 0x37, 0x95, 0xba, 0xc1, 0x68, 0x8f, 0xb6, 0xc9, 0xb4, 0x6e, 0x46, 0x6f, 0x02, 0xda, 0x01, 0xe1, + 0xae, 0x90, 0x37, 0xd0, 0x2a, 0xca, 0x0c, 0x39, 0xee, 0x60, 0x72, 0xe6, 0xe9, 0x3d, 0x3d, 0x36, + 0xf5, 0x39, 0x2f, 0x33, 0x0c, 0x19, 0x92, 0x2e, 0x34, 0x53, 0xe2, 0xec, 0xbd, 0x89, 0x55, 0xa3, + 0xf5, 0xe2, 0x61, 0x33, 0x25, 0x79, 0x0d, 0x9d, 0x2c, 0x47, 0x5a, 0xa4, 0xc4, 0xe1, 0xff, 0xc3, + 0xcc, 0x0a, 0x98, 0xd1, 0xc8, 0x85, 0x93, 0xe3, 0xfb, 0xb2, 0x03, 0xc6, 0xc3, 0xe3, 0xdc, 0x6a, + 0x48, 0x00, 0xf3, 0x2e, 0xb8, 0x0f, 0xe6, 0x81, 0x25, 0x6e, 0xfd, 0x8f, 0x83, 0x23, 0x3e, 0x0f, + 0x8e, 0xf8, 0x3a, 0x38, 0xe2, 0xf5, 0xdb, 0x69, 0x3c, 0x5f, 0xac, 0x95, 0x87, 0x45, 0xbc, 0xf2, + 0x12, 0xe5, 0x57, 0xb7, 0x1f, 0x65, 0x89, 0x4f, 0x53, 0x5f, 0xcf, 0x58, 0x9a, 0xfc, 0x1d, 0xd3, + 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5c, 0x5b, 0xa6, 0x27, 0xb8, 0x01, 0x00, 0x00, } func (m *KeyValue) Marshal() (dAtA []byte, err error) { diff --git a/server/etcdserver/api/snap/snappb/snap.pb.go b/server/etcdserver/api/snap/snappb/snap.pb.go index ff9d39c7ec25..bc735db1b7ae 100644 --- a/server/etcdserver/api/snap/snappb/snap.pb.go +++ b/server/etcdserver/api/snap/snappb/snap.pb.go @@ -65,6 +65,20 @@ func (m *Snapshot) XXX_DiscardUnknown() { var xxx_messageInfo_Snapshot proto.InternalMessageInfo +func (m *Snapshot) GetCrc() uint32 { + if m != nil { + return m.Crc + } + return 0 +} + +func (m *Snapshot) GetData() []byte { + if m != nil { + return m.Data + } + return nil +} + func init() { proto.RegisterType((*Snapshot)(nil), "snappb.snapshot") } @@ -72,18 +86,17 @@ func init() { func init() { proto.RegisterFile("snap.proto", fileDescriptor_f2e3c045ebf84d00) } var fileDescriptor_f2e3c045ebf84d00 = []byte{ - // 164 bytes of a gzipped FileDescriptorProto + // 160 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2a, 0xce, 0x4b, 0x2c, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x03, 0xb1, 0x0b, 0x92, 0xa4, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x42, 0xfa, 0x20, 0x16, 0x44, 0x56, 0xc9, 0x8c, 0x8b, 0x03, 0x24, 0x5f, 0x9c, 0x91, 0x5f, 0x22, 0x24, 0xc6, 0xc5, 0x9c, 0x5c, 0x94, 0x2c, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0xeb, 0xc4, 0x72, 0xe2, 0x9e, 0x3c, 0x43, 0x10, 0x48, 0x40, 0x48, 0x88, 0x8b, 0x25, 0x25, 0xb1, 0x24, - 0x51, 0x82, 0x49, 0x81, 0x51, 0x83, 0x27, 0x08, 0xcc, 0x76, 0xf2, 0x3a, 0xf1, 0x50, 0x8e, 0xe1, - 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf1, 0x58, 0x8e, - 0x21, 0xca, 0x24, 0x3d, 0x5f, 0x2f, 0xb5, 0x24, 0x39, 0x45, 0x2f, 0x33, 0x5f, 0x1f, 0x44, 0xeb, - 0x17, 0xa7, 0x16, 0x95, 0xa5, 0x16, 0xe9, 0x97, 0x19, 0x83, 0xb9, 0x50, 0x5e, 0x62, 0x41, 0xa6, - 0x3e, 0xc8, 0x52, 0x7d, 0x88, 0xcb, 0x00, 0x01, 0x00, 0x00, 0xff, 0xff, 0x8d, 0x65, 0xd9, 0x03, - 0xae, 0x00, 0x00, 0x00, + 0x51, 0x82, 0x49, 0x81, 0x51, 0x83, 0x27, 0x08, 0xcc, 0x76, 0x72, 0x3b, 0xf1, 0x48, 0x8e, 0xf1, + 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x67, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x49, 0xcf, + 0xd7, 0x4b, 0x2d, 0x49, 0x4e, 0xd1, 0xcb, 0xcc, 0xd7, 0x07, 0xd1, 0xfa, 0xc5, 0xa9, 0x45, 0x65, + 0xa9, 0x45, 0xfa, 0x65, 0xc6, 0x60, 0x2e, 0x94, 0x97, 0x58, 0x90, 0xa9, 0x0f, 0xb2, 0x50, 0x1f, + 0xe2, 0x2a, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x70, 0xd3, 0x61, 0xf6, 0xaa, 0x00, 0x00, 0x00, } func (m *Snapshot) Marshal() (dAtA []byte, err error) { diff --git a/server/lease/leasepb/lease.pb.go b/server/lease/leasepb/lease.pb.go index d2524b1ab191..949bbfdc3b6b 100644 --- a/server/lease/leasepb/lease.pb.go +++ b/server/lease/leasepb/lease.pb.go @@ -67,6 +67,27 @@ func (m *Lease) XXX_DiscardUnknown() { var xxx_messageInfo_Lease proto.InternalMessageInfo +func (m *Lease) GetID() int64 { + if m != nil { + return m.ID + } + return 0 +} + +func (m *Lease) GetTTL() int64 { + if m != nil { + return m.TTL + } + return 0 +} + +func (m *Lease) GetRemainingTTL() int64 { + if m != nil { + return m.RemainingTTL + } + return 0 +} + type LeaseInternalRequest struct { LeaseTimeToLiveRequest *etcdserverpb.LeaseTimeToLiveRequest `protobuf:"bytes,1,opt,name=LeaseTimeToLiveRequest,proto3" json:"LeaseTimeToLiveRequest,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -107,6 +128,13 @@ func (m *LeaseInternalRequest) XXX_DiscardUnknown() { var xxx_messageInfo_LeaseInternalRequest proto.InternalMessageInfo +func (m *LeaseInternalRequest) GetLeaseTimeToLiveRequest() *etcdserverpb.LeaseTimeToLiveRequest { + if m != nil { + return m.LeaseTimeToLiveRequest + } + return nil +} + type LeaseInternalResponse struct { LeaseTimeToLiveResponse *etcdserverpb.LeaseTimeToLiveResponse `protobuf:"bytes,1,opt,name=LeaseTimeToLiveResponse,proto3" json:"LeaseTimeToLiveResponse,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -147,6 +175,13 @@ func (m *LeaseInternalResponse) XXX_DiscardUnknown() { var xxx_messageInfo_LeaseInternalResponse proto.InternalMessageInfo +func (m *LeaseInternalResponse) GetLeaseTimeToLiveResponse() *etcdserverpb.LeaseTimeToLiveResponse { + if m != nil { + return m.LeaseTimeToLiveResponse + } + return nil +} + func init() { proto.RegisterType((*Lease)(nil), "leasepb.Lease") proto.RegisterType((*LeaseInternalRequest)(nil), "leasepb.LeaseInternalRequest") @@ -156,7 +191,7 @@ func init() { func init() { proto.RegisterFile("lease.proto", fileDescriptor_3dd57e402472b33a) } var fileDescriptor_3dd57e402472b33a = []byte{ - // 278 bytes of a gzipped FileDescriptorProto + // 274 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0xce, 0x49, 0x4d, 0x2c, 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x07, 0x73, 0x0a, 0x92, 0xa4, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x62, 0xfa, 0x20, 0x16, 0x44, 0x5a, 0x4a, 0x3e, 0xb5, 0x24, 0x39, 0x45, @@ -170,11 +205,11 @@ var fileDescriptor_3dd57e402472b33a = []byte{ 0x54, 0xa8, 0x0c, 0xd8, 0x46, 0x6e, 0x23, 0x15, 0x3d, 0x64, 0xf7, 0xe9, 0x61, 0x57, 0x1b, 0x84, 0xc3, 0x0c, 0xa5, 0x0a, 0x2e, 0x51, 0x34, 0x5b, 0x8b, 0x0b, 0xf2, 0xf3, 0x8a, 0x53, 0x85, 0xe2, 0xb9, 0xc4, 0x31, 0xb4, 0x40, 0xa4, 0xa0, 0xf6, 0xaa, 0x12, 0xb0, 0x17, 0xa2, 0x38, 0x08, 0x97, - 0x29, 0x4e, 0xae, 0x27, 0x1e, 0xca, 0x31, 0x9c, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, - 0x83, 0x47, 0x72, 0x8c, 0x33, 0x1e, 0xcb, 0x31, 0x44, 0xe9, 0xa7, 0xe7, 0x83, 0xcd, 0xd5, 0xcb, - 0xcc, 0x07, 0x87, 0xbb, 0x3e, 0xc4, 0x02, 0xfd, 0x32, 0x63, 0x7d, 0x70, 0x74, 0xe9, 0x43, 0x23, - 0xcd, 0x1a, 0x4a, 0x27, 0xb1, 0x81, 0x23, 0xc3, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x8a, 0x0c, - 0x6f, 0x95, 0xdb, 0x01, 0x00, 0x00, + 0x29, 0x4e, 0x8e, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, + 0x8c, 0xc7, 0x72, 0x0c, 0x51, 0xfa, 0xe9, 0xf9, 0x60, 0x33, 0xf5, 0x32, 0xf3, 0xc1, 0x61, 0xae, + 0x0f, 0x31, 0x5c, 0xbf, 0xcc, 0x58, 0x1f, 0x1c, 0x55, 0xfa, 0xd0, 0x08, 0xb3, 0x86, 0xd2, 0x49, + 0x6c, 0xe0, 0x88, 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x93, 0x5c, 0x2a, 0xb6, 0xd7, 0x01, + 0x00, 0x00, } func (m *Lease) Marshal() (dAtA []byte, err error) { diff --git a/server/storage/wal/walpb/record.pb.go b/server/storage/wal/walpb/record.pb.go index 5605fbdaa310..c27c81a7be48 100644 --- a/server/storage/wal/walpb/record.pb.go +++ b/server/storage/wal/walpb/record.pb.go @@ -67,6 +67,27 @@ func (m *Record) XXX_DiscardUnknown() { var xxx_messageInfo_Record proto.InternalMessageInfo +func (m *Record) GetType() int64 { + if m != nil { + return m.Type + } + return 0 +} + +func (m *Record) GetCrc() uint32 { + if m != nil { + return m.Crc + } + return 0 +} + +func (m *Record) GetData() []byte { + if m != nil { + return m.Data + } + return nil +} + // Keep in sync with raftpb.SnapshotMetadata. type Snapshot struct { Index uint64 `protobuf:"varint,1,opt,name=index" json:"index"` @@ -111,6 +132,27 @@ func (m *Snapshot) XXX_DiscardUnknown() { var xxx_messageInfo_Snapshot proto.InternalMessageInfo +func (m *Snapshot) GetIndex() uint64 { + if m != nil { + return m.Index + } + return 0 +} + +func (m *Snapshot) GetTerm() uint64 { + if m != nil { + return m.Term + } + return 0 +} + +func (m *Snapshot) GetConfState() *raftpb.ConfState { + if m != nil { + return m.ConfState + } + return nil +} + func init() { proto.RegisterType((*Record)(nil), "walpb.Record") proto.RegisterType((*Snapshot)(nil), "walpb.Snapshot") @@ -119,24 +161,24 @@ func init() { func init() { proto.RegisterFile("record.proto", fileDescriptor_bf94fd919e302a1d) } var fileDescriptor_bf94fd919e302a1d = []byte{ - // 266 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x3c, 0x90, 0x41, 0x4e, 0xc3, 0x30, - 0x14, 0x44, 0x63, 0x92, 0x22, 0x30, 0x65, 0x51, 0x0b, 0xa1, 0x28, 0x8b, 0x10, 0x75, 0x15, 0x09, - 0x29, 0x46, 0x70, 0x02, 0xca, 0x9e, 0x45, 0xba, 0x63, 0x83, 0x5c, 0xe7, 0x27, 0x54, 0x6a, 0xf3, - 0xad, 0x1f, 0xab, 0x85, 0x9b, 0x70, 0xa4, 0x2c, 0x39, 0x01, 0x82, 0x70, 0x11, 0x64, 0xa7, 0xb0, - 0xfa, 0xa3, 0x37, 0x9a, 0x19, 0xcb, 0x7c, 0x4a, 0xa0, 0x91, 0xaa, 0xc2, 0x10, 0x5a, 0x14, 0x93, - 0xbd, 0xda, 0x98, 0x55, 0x72, 0xd1, 0x60, 0x83, 0x9e, 0x48, 0xa7, 0x46, 0x33, 0x99, 0x91, 0xaa, - 0xad, 0x59, 0x49, 0x77, 0x46, 0x34, 0x7f, 0xe4, 0xc7, 0xa5, 0xcf, 0x8b, 0x98, 0x47, 0xf6, 0xcd, - 0x40, 0xcc, 0x32, 0x96, 0x87, 0x8b, 0xa8, 0xff, 0xbc, 0x0a, 0x4a, 0x4f, 0xc4, 0x25, 0x0f, 0x35, - 0xe9, 0xf8, 0x28, 0x63, 0xf9, 0xf9, 0xc1, 0x70, 0x40, 0x08, 0x1e, 0x55, 0xca, 0xaa, 0x38, 0xcc, - 0x58, 0x3e, 0x2d, 0xbd, 0x9e, 0x13, 0x3f, 0x59, 0xb6, 0xca, 0x74, 0x2f, 0x68, 0x45, 0xc2, 0x27, - 0xeb, 0xb6, 0x82, 0x57, 0x5f, 0x19, 0x1d, 0x92, 0x23, 0xf2, 0x6b, 0x40, 0x5b, 0x5f, 0x1a, 0xfd, - 0xaf, 0x01, 0x6d, 0xc5, 0x0d, 0xe7, 0x1a, 0xdb, 0xfa, 0xb9, 0xb3, 0xca, 0x82, 0xef, 0x3e, 0xbb, - 0x9d, 0x15, 0xe3, 0xcb, 0x8b, 0x07, 0x6c, 0xeb, 0xa5, 0x33, 0xca, 0x53, 0xfd, 0x27, 0x17, 0xf7, - 0xfd, 0x77, 0x1a, 0xf4, 0x43, 0xca, 0x3e, 0x86, 0x94, 0x7d, 0x0d, 0x29, 0x7b, 0xff, 0x49, 0x83, - 0xa7, 0xeb, 0x06, 0x0b, 0xb0, 0xba, 0x2a, 0xd6, 0x28, 0xdd, 0x95, 0x1d, 0xd0, 0x0e, 0x48, 0xee, - 0xee, 0x64, 0x67, 0x91, 0x54, 0x03, 0x72, 0xaf, 0x36, 0xd2, 0xff, 0xd7, 0x6f, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xcf, 0xa9, 0xf0, 0x02, 0x45, 0x01, 0x00, 0x00, + // 262 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x3c, 0x90, 0xb1, 0x4e, 0xc3, 0x30, + 0x18, 0x84, 0x6b, 0x92, 0x22, 0x30, 0x65, 0xa8, 0x85, 0x50, 0x94, 0x21, 0x44, 0x9d, 0x22, 0x21, + 0xd9, 0x08, 0x66, 0x96, 0xb2, 0x33, 0xa4, 0x1b, 0x0b, 0x72, 0x9d, 0x3f, 0xa1, 0x52, 0x9b, 0xdf, + 0xfa, 0x63, 0xb5, 0xf0, 0x26, 0x3c, 0x52, 0x47, 0x9e, 0x00, 0xa1, 0xf0, 0x22, 0xc8, 0x4e, 0xe9, + 0xf4, 0x9f, 0xbe, 0xd3, 0xdd, 0x59, 0xe6, 0x13, 0x02, 0x83, 0x54, 0x49, 0x4b, 0xe8, 0x50, 0x8c, + 0x77, 0x7a, 0x6d, 0x97, 0xe9, 0x55, 0x83, 0x0d, 0x06, 0xa2, 0xbc, 0x1a, 0xcc, 0x74, 0x4a, 0xba, + 0x76, 0x76, 0xa9, 0xfc, 0x19, 0xd0, 0xec, 0x99, 0x9f, 0x96, 0x21, 0x2f, 0x12, 0x1e, 0xbb, 0x0f, + 0x0b, 0x09, 0xcb, 0x59, 0x11, 0xcd, 0xe3, 0xfd, 0xf7, 0xcd, 0xa8, 0x0c, 0x44, 0x5c, 0xf3, 0xc8, + 0x90, 0x49, 0x4e, 0x72, 0x56, 0x5c, 0x1e, 0x0c, 0x0f, 0x84, 0xe0, 0x71, 0xa5, 0x9d, 0x4e, 0xa2, + 0x9c, 0x15, 0x93, 0x32, 0xe8, 0x19, 0xf1, 0xb3, 0x45, 0xab, 0x6d, 0xf7, 0x86, 0x4e, 0xa4, 0x7c, + 0xbc, 0x6a, 0x2b, 0x78, 0x0f, 0x95, 0xf1, 0x21, 0x39, 0xa0, 0xb0, 0x06, 0xb4, 0x09, 0xa5, 0xf1, + 0x71, 0x0d, 0x68, 0x23, 0xee, 0x38, 0x37, 0xd8, 0xd6, 0xaf, 0x9d, 0xd3, 0x0e, 0x42, 0xf7, 0xc5, + 0xfd, 0x54, 0x0e, 0x2f, 0x97, 0x4f, 0xd8, 0xd6, 0x0b, 0x6f, 0x94, 0xe7, 0xe6, 0x5f, 0xce, 0x1f, + 0xf7, 0x7d, 0xc6, 0xbe, 0xfa, 0x8c, 0xfd, 0xf4, 0x19, 0xfb, 0xfc, 0xcd, 0x46, 0x2f, 0xb7, 0x0d, + 0x4a, 0x70, 0xa6, 0x92, 0x2b, 0x54, 0xfe, 0xaa, 0x0e, 0x68, 0x0b, 0xa4, 0xb6, 0x0f, 0xaa, 0x73, + 0x48, 0xba, 0x01, 0xb5, 0xd3, 0x6b, 0x15, 0xfe, 0xea, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x70, 0x50, + 0xc0, 0xd5, 0x41, 0x01, 0x00, 0x00, } func (m *Record) Marshal() (dAtA []byte, err error) { From 15ce34cb5f932c9da498fd145e0678069c80134f Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 6 Feb 2026 02:29:04 -0500 Subject: [PATCH 0804/1068] Drop marshaler_all, unmarshaler_all, sizer_all gogo options Signed-off-by: Jordan Liggitt --- api/authpb/auth.proto | 6 ------ api/etcdserverpb/etcdserver.proto | 4 ---- api/etcdserverpb/raft_internal.proto | 5 ----- api/etcdserverpb/rpc.proto | 4 ---- api/membershippb/membership.proto | 5 ----- api/mvccpb/kv.proto | 6 ------ api/versionpb/version.proto | 4 ---- server/etcdserver/api/snap/snappb/snap.proto | 4 ---- .../etcdserver/api/v3election/v3electionpb/v3election.proto | 4 ---- server/etcdserver/api/v3lock/v3lockpb/v3lock.proto | 4 ---- server/lease/leasepb/lease.proto | 5 ----- server/storage/wal/walpb/record.proto | 4 ---- 12 files changed, 55 deletions(-) diff --git a/api/authpb/auth.proto b/api/authpb/auth.proto index bdb6b522ccd6..41bcaaecbf18 100644 --- a/api/authpb/auth.proto +++ b/api/authpb/auth.proto @@ -1,14 +1,8 @@ syntax = "proto3"; package authpb; -import "gogoproto/gogo.proto"; - option go_package = "go.etcd.io/etcd/api/v3/authpb"; -option (gogoproto.marshaler_all) = true; -option (gogoproto.sizer_all) = true; -option (gogoproto.unmarshaler_all) = true; - message UserAddOptions { bool no_password = 1; }; diff --git a/api/etcdserverpb/etcdserver.proto b/api/etcdserverpb/etcdserver.proto index 9e0f19bac250..0b0fbb479f68 100644 --- a/api/etcdserverpb/etcdserver.proto +++ b/api/etcdserverpb/etcdserver.proto @@ -5,10 +5,6 @@ import "gogoproto/gogo.proto"; option go_package = "go.etcd.io/etcd/api/v3/etcdserverpb"; -option (gogoproto.marshaler_all) = true; -option (gogoproto.sizer_all) = true; -option (gogoproto.unmarshaler_all) = true; - message Metadata { optional uint64 NodeID = 1 [(gogoproto.nullable) = false]; optional uint64 ClusterID = 2 [(gogoproto.nullable) = false]; diff --git a/api/etcdserverpb/raft_internal.proto b/api/etcdserverpb/raft_internal.proto index 19c79d20e4bb..51767ea9ecab 100644 --- a/api/etcdserverpb/raft_internal.proto +++ b/api/etcdserverpb/raft_internal.proto @@ -1,17 +1,12 @@ syntax = "proto3"; package etcdserverpb; -import "gogoproto/gogo.proto"; import "rpc.proto"; import "etcd/api/versionpb/version.proto"; import "etcd/api/membershippb/membership.proto"; option go_package = "go.etcd.io/etcd/api/v3/etcdserverpb"; -option (gogoproto.marshaler_all) = true; -option (gogoproto.sizer_all) = true; -option (gogoproto.unmarshaler_all) = true; - message RequestHeader { option (versionpb.etcd_version_msg) = "3.0"; diff --git a/api/etcdserverpb/rpc.proto b/api/etcdserverpb/rpc.proto index c9710b8dfa86..b23baa51d97b 100644 --- a/api/etcdserverpb/rpc.proto +++ b/api/etcdserverpb/rpc.proto @@ -1,7 +1,6 @@ syntax = "proto3"; package etcdserverpb; -import "gogoproto/gogo.proto"; import "etcd/api/mvccpb/kv.proto"; import "etcd/api/authpb/auth.proto"; import "etcd/api/versionpb/version.proto"; @@ -12,9 +11,6 @@ import "protoc-gen-openapiv2/options/annotations.proto"; option go_package = "go.etcd.io/etcd/api/v3/etcdserverpb"; -option (gogoproto.marshaler_all) = true; -option (gogoproto.unmarshaler_all) = true; - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { security_definitions: { security: { diff --git a/api/membershippb/membership.proto b/api/membershippb/membership.proto index dc1d11c09f45..93a632f01b83 100644 --- a/api/membershippb/membership.proto +++ b/api/membershippb/membership.proto @@ -1,15 +1,10 @@ syntax = "proto3"; package membershippb; -import "gogoproto/gogo.proto"; import "etcd/api/versionpb/version.proto"; option go_package = "go.etcd.io/etcd/api/v3/membershippb"; -option (gogoproto.marshaler_all) = true; -option (gogoproto.sizer_all) = true; -option (gogoproto.unmarshaler_all) = true; - // RaftAttributes represents the raft related attributes of an etcd member. message RaftAttributes { option (versionpb.etcd_version_msg) = "3.5"; diff --git a/api/mvccpb/kv.proto b/api/mvccpb/kv.proto index 771483f5200f..6e035362f6e2 100644 --- a/api/mvccpb/kv.proto +++ b/api/mvccpb/kv.proto @@ -1,14 +1,8 @@ syntax = "proto3"; package mvccpb; -import "gogoproto/gogo.proto"; - option go_package = "go.etcd.io/etcd/api/v3/mvccpb"; -option (gogoproto.marshaler_all) = true; -option (gogoproto.sizer_all) = true; -option (gogoproto.unmarshaler_all) = true; - message KeyValue { // key is the key in bytes. An empty key is not allowed. bytes key = 1; diff --git a/api/versionpb/version.proto b/api/versionpb/version.proto index c81b2f58a44d..1ee99fadb19f 100644 --- a/api/versionpb/version.proto +++ b/api/versionpb/version.proto @@ -1,14 +1,10 @@ syntax = "proto3"; package versionpb; -import "gogoproto/gogo.proto"; import "google/protobuf/descriptor.proto"; option go_package = "go.etcd.io/etcd/api/v3/versionpb"; -option (gogoproto.marshaler_all) = true; -option (gogoproto.unmarshaler_all) = true; - // Indicates etcd version that introduced the message, used to determine minimal etcd version required to interpret wal that includes this message. extend google.protobuf.MessageOptions { optional string etcd_version_msg = 50000; diff --git a/server/etcdserver/api/snap/snappb/snap.proto b/server/etcdserver/api/snap/snappb/snap.proto index 867096583ec9..599740d610c8 100644 --- a/server/etcdserver/api/snap/snappb/snap.proto +++ b/server/etcdserver/api/snap/snappb/snap.proto @@ -5,10 +5,6 @@ import "gogoproto/gogo.proto"; option go_package = "go.etcd.io/etcd/server/v3/etcdserver/api/snap/snappb"; -option (gogoproto.marshaler_all) = true; -option (gogoproto.sizer_all) = true; -option (gogoproto.unmarshaler_all) = true; - message snapshot { optional uint32 crc = 1 [(gogoproto.nullable) = false]; optional bytes data = 2; diff --git a/server/etcdserver/api/v3election/v3electionpb/v3election.proto b/server/etcdserver/api/v3election/v3electionpb/v3election.proto index 6042776b90cb..6f0488b02304 100644 --- a/server/etcdserver/api/v3election/v3electionpb/v3election.proto +++ b/server/etcdserver/api/v3election/v3electionpb/v3election.proto @@ -1,7 +1,6 @@ syntax = "proto3"; package v3electionpb; -import "gogoproto/gogo.proto"; import "etcd/api/etcdserverpb/rpc.proto"; import "etcd/api/mvccpb/kv.proto"; @@ -10,9 +9,6 @@ import "google/api/annotations.proto"; option go_package = "go.etcd.io/etcd/server/v3/etcdserver/api/v3election/v3electionpb"; -option (gogoproto.marshaler_all) = true; -option (gogoproto.unmarshaler_all) = true; - // The election service exposes client-side election facilities as a gRPC interface. service Election { // Campaign waits to acquire leadership in an election, returning a LeaderKey diff --git a/server/etcdserver/api/v3lock/v3lockpb/v3lock.proto b/server/etcdserver/api/v3lock/v3lockpb/v3lock.proto index 88a1c8242849..bcc074d1b264 100644 --- a/server/etcdserver/api/v3lock/v3lockpb/v3lock.proto +++ b/server/etcdserver/api/v3lock/v3lockpb/v3lock.proto @@ -1,7 +1,6 @@ syntax = "proto3"; package v3lockpb; -import "gogoproto/gogo.proto"; import "etcd/api/etcdserverpb/rpc.proto"; // for grpc-gateway @@ -9,9 +8,6 @@ import "google/api/annotations.proto"; option go_package = "go.etcd.io/etcd/server/v3/etcdserver/api/v3lock/v3lockpb"; -option (gogoproto.marshaler_all) = true; -option (gogoproto.unmarshaler_all) = true; - // The lock service exposes client-side locking facilities as a gRPC interface. service Lock { // Lock acquires a distributed shared lock on a given named lock. diff --git a/server/lease/leasepb/lease.proto b/server/lease/leasepb/lease.proto index 97745554854b..2ffcfcc8a046 100644 --- a/server/lease/leasepb/lease.proto +++ b/server/lease/leasepb/lease.proto @@ -1,15 +1,10 @@ syntax = "proto3"; package leasepb; -import "gogoproto/gogo.proto"; import "etcd/api/etcdserverpb/rpc.proto"; option go_package = "go.etcd.io/etcd/server/v3/lease/leasepb;leasepb"; -option (gogoproto.marshaler_all) = true; -option (gogoproto.sizer_all) = true; -option (gogoproto.unmarshaler_all) = true; - message Lease { int64 ID = 1; int64 TTL = 2; diff --git a/server/storage/wal/walpb/record.proto b/server/storage/wal/walpb/record.proto index 287095110a86..d20f4f2f3239 100644 --- a/server/storage/wal/walpb/record.proto +++ b/server/storage/wal/walpb/record.proto @@ -6,10 +6,6 @@ import "raftpb/raft.proto"; option go_package = "go.etcd.io/etcd/server/v3/storage/wal/walpb"; -option (gogoproto.marshaler_all) = true; -option (gogoproto.sizer_all) = true; -option (gogoproto.unmarshaler_all) = true; - message Record { optional int64 type = 1 [(gogoproto.nullable) = false]; optional uint32 crc = 2 [(gogoproto.nullable) = false]; From 727c5a2e43f5a53b8662dc0a9d12cb9b91361103 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 6 Feb 2026 02:29:12 -0500 Subject: [PATCH 0805/1068] generate: scripts/genproto.sh Signed-off-by: Jordan Liggitt --- api/authpb/auth.pb.go | 45 +- api/etcdserverpb/raft_internal.pb.go | 127 ++-- api/etcdserverpb/rpc.pb.go | 575 +++++++++--------- api/membershippb/membership.pb.go | 54 +- api/mvccpb/kv.pb.go | 43 +- api/versionpb/version.pb.go | 38 +- .../v3election/v3electionpb/v3election.pb.go | 73 ++- .../api/v3lock/v3lockpb/v3lock.pb.go | 48 +- server/lease/leasepb/lease.pb.go | 36 +- 9 files changed, 513 insertions(+), 526 deletions(-) diff --git a/api/authpb/auth.pb.go b/api/authpb/auth.pb.go index cb675a90f8c9..5e0872ad780c 100644 --- a/api/authpb/auth.pb.go +++ b/api/authpb/auth.pb.go @@ -9,7 +9,6 @@ import ( math "math" math_bits "math/bits" - _ "github.com/gogo/protobuf/gogoproto" proto "github.com/golang/protobuf/proto" ) @@ -302,29 +301,29 @@ func init() { func init() { proto.RegisterFile("auth.proto", fileDescriptor_8bbd6f3875b0e874) } var fileDescriptor_8bbd6f3875b0e874 = []byte{ - // 352 bytes of a gzipped FileDescriptorProto + // 342 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xcf, 0x4e, 0xf2, 0x40, - 0x14, 0xc5, 0x19, 0x5a, 0xf8, 0xda, 0xcb, 0x07, 0x21, 0x13, 0xa2, 0x0d, 0xc6, 0xda, 0x74, 0xd5, - 0xb8, 0x68, 0x15, 0x36, 0x6e, 0x31, 0xb2, 0x70, 0x25, 0x99, 0x60, 0x4c, 0xdc, 0x90, 0x62, 0x27, - 0xb5, 0x01, 0xe6, 0x36, 0x6d, 0xd5, 0xb0, 0xf1, 0x39, 0x5c, 0xf8, 0x40, 0x2e, 0x7d, 0x04, 0x83, - 0x2f, 0x62, 0x3a, 0xc3, 0x9f, 0x10, 0x5d, 0xcd, 0xb9, 0xe7, 0x9e, 0x7b, 0xe7, 0x97, 0x19, 0x80, - 0xf0, 0xa9, 0x78, 0xf4, 0xd3, 0x0c, 0x0b, 0xa4, 0xf5, 0x52, 0xa7, 0xd3, 0x6e, 0x27, 0xc6, 0x18, - 0xa5, 0x15, 0x94, 0x4a, 0x75, 0xdd, 0x73, 0x68, 0xdd, 0xe6, 0x3c, 0x1b, 0x44, 0xd1, 0x4d, 0x5a, - 0x24, 0x28, 0x72, 0x7a, 0x02, 0x0d, 0x81, 0x93, 0x34, 0xcc, 0xf3, 0x17, 0xcc, 0x22, 0x8b, 0x38, - 0xc4, 0x33, 0x18, 0x08, 0x1c, 0xad, 0x1d, 0xf7, 0x15, 0xf4, 0x72, 0x84, 0x52, 0xd0, 0x45, 0xb8, - 0xe0, 0x32, 0xf1, 0x9f, 0x49, 0x4d, 0xbb, 0x60, 0x6c, 0x27, 0xab, 0xd2, 0xdf, 0xd6, 0xb4, 0x03, - 0xb5, 0x0c, 0xe7, 0x3c, 0xb7, 0x34, 0x47, 0xf3, 0x4c, 0xa6, 0x0a, 0x7a, 0x06, 0xff, 0x50, 0xdd, - 0x6c, 0xe9, 0x0e, 0xf1, 0x1a, 0xbd, 0x03, 0x5f, 0x01, 0xfb, 0xfb, 0x5c, 0x6c, 0x13, 0x73, 0xdf, - 0x09, 0xc0, 0x88, 0x67, 0x8b, 0x24, 0xcf, 0x13, 0x14, 0xb4, 0x0f, 0x46, 0xca, 0xb3, 0xc5, 0x78, - 0x99, 0x2a, 0x94, 0x56, 0xef, 0x70, 0xb3, 0x61, 0x97, 0xf2, 0xcb, 0x36, 0xdb, 0x06, 0x69, 0x1b, - 0xb4, 0x19, 0x5f, 0xae, 0x11, 0x4b, 0x49, 0x8f, 0xc0, 0xcc, 0x42, 0x11, 0xf3, 0x09, 0x17, 0x91, - 0xa5, 0x29, 0x74, 0x69, 0x0c, 0x45, 0xe4, 0x9e, 0x82, 0x2e, 0xc7, 0x0c, 0xd0, 0xd9, 0x70, 0x70, - 0xd5, 0xae, 0x50, 0x13, 0x6a, 0x77, 0xec, 0x7a, 0x3c, 0x6c, 0x13, 0xda, 0x04, 0xb3, 0x34, 0x55, - 0x59, 0x75, 0xc7, 0xa0, 0x33, 0x9c, 0xf3, 0x3f, 0x9f, 0xe7, 0x02, 0x9a, 0x33, 0xbe, 0xdc, 0x61, - 0x59, 0x55, 0x47, 0xf3, 0x1a, 0x3d, 0xfa, 0x1b, 0x98, 0xed, 0x07, 0x2f, 0x83, 0x8f, 0x95, 0x4d, - 0x3e, 0x57, 0x36, 0xf9, 0x5a, 0xd9, 0xe4, 0xed, 0xdb, 0xae, 0xdc, 0x1f, 0xc7, 0xe8, 0xf3, 0xe2, - 0x21, 0xf2, 0x13, 0x0c, 0xca, 0x33, 0x08, 0xd3, 0x24, 0x78, 0xee, 0x07, 0x6a, 0xd5, 0xb4, 0x2e, - 0xff, 0xb7, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x18, 0xad, 0x5a, 0xa6, 0x0b, 0x02, 0x00, 0x00, + 0x14, 0xc5, 0x19, 0x5a, 0xf8, 0xda, 0xcb, 0x07, 0x21, 0x37, 0x46, 0x1b, 0x8d, 0xb5, 0xe9, 0xaa, + 0x71, 0xd1, 0x2a, 0x6c, 0xdc, 0x62, 0x64, 0xe1, 0x4a, 0x32, 0xc1, 0x98, 0xb8, 0x21, 0xc5, 0x4e, + 0xb0, 0x01, 0x66, 0x9a, 0x99, 0xaa, 0x61, 0xe3, 0x73, 0xb8, 0xf0, 0x81, 0x5c, 0xfa, 0x08, 0x06, + 0x5f, 0xc4, 0xb4, 0xc3, 0x9f, 0x10, 0x5d, 0xf5, 0x9e, 0xd3, 0x73, 0xee, 0xfc, 0x32, 0x03, 0x10, + 0x3f, 0xe5, 0x8f, 0x61, 0x26, 0x45, 0x2e, 0xb0, 0x5e, 0xcc, 0xd9, 0xd8, 0x3f, 0x87, 0xd6, 0xad, + 0x62, 0xb2, 0x97, 0x24, 0x37, 0x59, 0x9e, 0x0a, 0xae, 0xf0, 0x04, 0x1a, 0x5c, 0x8c, 0xb2, 0x58, + 0xa9, 0x17, 0x21, 0x13, 0x87, 0x78, 0x24, 0xb0, 0x28, 0x70, 0x31, 0x58, 0x39, 0xfe, 0x2b, 0x98, + 0x45, 0x05, 0x11, 0x4c, 0x1e, 0xcf, 0x59, 0x99, 0xf8, 0x4f, 0xcb, 0x19, 0x0f, 0xc1, 0xda, 0x34, + 0xab, 0xa5, 0xbf, 0xd1, 0xb8, 0x07, 0x35, 0x29, 0x66, 0x4c, 0x39, 0x86, 0x67, 0x04, 0x36, 0xd5, + 0x02, 0xcf, 0xe0, 0x9f, 0xd0, 0x27, 0x3b, 0xa6, 0x47, 0x82, 0x46, 0x67, 0x3f, 0xd4, 0x68, 0xe1, + 0x2e, 0x17, 0x5d, 0xc7, 0xfc, 0x77, 0x02, 0x30, 0x60, 0x72, 0x9e, 0x2a, 0x95, 0x0a, 0x8e, 0x5d, + 0xb0, 0x32, 0x26, 0xe7, 0xc3, 0x45, 0xa6, 0x51, 0x5a, 0x9d, 0x83, 0xf5, 0x86, 0x6d, 0x2a, 0x2c, + 0x7e, 0xd3, 0x4d, 0x10, 0xdb, 0x60, 0x4c, 0xd9, 0x62, 0x85, 0x58, 0x8c, 0x78, 0x04, 0xb6, 0x8c, + 0xf9, 0x84, 0x8d, 0x18, 0x4f, 0x1c, 0x43, 0xa3, 0x97, 0x46, 0x9f, 0x27, 0xfe, 0x29, 0x98, 0x65, + 0xcd, 0x02, 0x93, 0xf6, 0x7b, 0x57, 0xed, 0x0a, 0xda, 0x50, 0xbb, 0xa3, 0xd7, 0xc3, 0x7e, 0x9b, + 0x60, 0x13, 0xec, 0xc2, 0xd4, 0xb2, 0xea, 0x0f, 0xc1, 0xa4, 0x62, 0xc6, 0xfe, 0xbc, 0x9e, 0x0b, + 0x68, 0x4e, 0xd9, 0x62, 0x8b, 0xe5, 0x54, 0x3d, 0x23, 0x68, 0x74, 0xf0, 0x37, 0x30, 0xdd, 0x0d, + 0x5e, 0x46, 0x1f, 0x4b, 0x97, 0x7c, 0x2e, 0x5d, 0xf2, 0xb5, 0x74, 0xc9, 0xdb, 0xb7, 0x5b, 0xb9, + 0x3f, 0x9e, 0x88, 0x90, 0xe5, 0x0f, 0x49, 0x98, 0x8a, 0xa8, 0xf8, 0x46, 0x71, 0x96, 0x46, 0xcf, + 0xdd, 0x48, 0xaf, 0x1a, 0xd7, 0xcb, 0x77, 0xee, 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x1b, + 0x2e, 0xdd, 0xf5, 0x01, 0x00, 0x00, } func (m *UserAddOptions) Marshal() (dAtA []byte, err error) { diff --git a/api/etcdserverpb/raft_internal.pb.go b/api/etcdserverpb/raft_internal.pb.go index fb02e309ff83..3c7d28d9e1fd 100644 --- a/api/etcdserverpb/raft_internal.pb.go +++ b/api/etcdserverpb/raft_internal.pb.go @@ -9,7 +9,6 @@ import ( math "math" math_bits "math/bits" - _ "github.com/gogo/protobuf/gogoproto" proto "github.com/golang/protobuf/proto" membershippb "go.etcd.io/etcd/api/v3/membershippb" _ "go.etcd.io/etcd/api/v3/versionpb" @@ -504,75 +503,75 @@ func init() { func init() { proto.RegisterFile("raft_internal.proto", fileDescriptor_b4c9a9be0cfca103) } var fileDescriptor_b4c9a9be0cfca103 = []byte{ - // 1088 bytes of a gzipped FileDescriptorProto + // 1077 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x56, 0x4d, 0x73, 0x1b, 0x45, 0x10, 0x45, 0xb6, 0x63, 0x5b, 0x23, 0xdb, 0x71, 0xc6, 0x26, 0x19, 0xec, 0x2a, 0xe3, 0x38, 0x10, 0x0c, 0x04, 0x39, 0xd8, 0x84, 0x03, 0x17, 0x50, 0x2c, 0x97, 0xe3, 0x54, 0x92, 0x72, 0x6d, 0x0c, 0x95, 0x82, 0xa2, 0x96, 0xd1, 0x6e, 0x5b, 0xda, 0x78, 0xb5, 0xbb, 0xcc, 0x8c, 0x1c, 0xe7, 0xca, 0x91, 0x33, 0x50, 0xf9, 0x11, 0x1c, 0xf8, 0xfc, 0x0f, 0x1c, 0xf8, 0x08, 0xf0, 0x07, 0x28, 0x73, - 0xe1, 0x0e, 0xdc, 0x53, 0xf3, 0xb1, 0xb3, 0x5a, 0x69, 0xe4, 0xdb, 0xaa, 0xfb, 0xf5, 0x7b, 0x6f, + 0xe1, 0x0e, 0xdc, 0x53, 0xf3, 0xb1, 0xb3, 0x5a, 0x69, 0xe4, 0x9b, 0xb6, 0xfb, 0xf5, 0x7b, 0x6f, 0x66, 0xbb, 0x57, 0x8d, 0x16, 0x18, 0x3d, 0x14, 0x7e, 0x94, 0x08, 0x60, 0x09, 0x8d, 0xeb, 0x19, - 0x4b, 0x45, 0x8a, 0x67, 0x40, 0x04, 0x21, 0x07, 0x76, 0x0c, 0x2c, 0x6b, 0x2d, 0x2d, 0xb6, 0xd3, - 0x76, 0xaa, 0x12, 0x1b, 0xf2, 0x49, 0x63, 0x96, 0xaa, 0x2c, 0x0b, 0xcc, 0xe3, 0xaa, 0x84, 0x6f, - 0xd0, 0x2c, 0xda, 0x38, 0x06, 0xc6, 0xa3, 0x34, 0xc9, 0x5a, 0xf9, 0x93, 0x41, 0x5c, 0xb5, 0x88, - 0x2e, 0x74, 0x5b, 0xc0, 0x78, 0x27, 0xca, 0xb2, 0x56, 0xdf, 0x0f, 0x8d, 0x5b, 0x63, 0x68, 0xd6, - 0x83, 0x4f, 0x7b, 0xc0, 0xc5, 0x2d, 0xa0, 0x21, 0x30, 0x3c, 0x87, 0xc6, 0xf6, 0x9a, 0xa4, 0xb2, - 0x5a, 0x59, 0x9f, 0xf0, 0xc6, 0xf6, 0x9a, 0x78, 0x09, 0x4d, 0xf7, 0xb8, 0xb4, 0xda, 0x05, 0x32, - 0xb6, 0x5a, 0x59, 0xaf, 0x7a, 0xf6, 0x37, 0xbe, 0x86, 0x66, 0x69, 0x4f, 0x74, 0x7c, 0x06, 0xc7, - 0x91, 0xd4, 0x26, 0xe3, 0xb2, 0xec, 0xe6, 0xd4, 0xe7, 0x3f, 0x92, 0xf1, 0xad, 0xfa, 0x9b, 0xde, - 0x8c, 0xcc, 0x7a, 0x26, 0xf9, 0xce, 0xd4, 0x67, 0x2a, 0x7c, 0x7d, 0xed, 0xc9, 0x02, 0x5a, 0xd8, - 0x33, 0xe7, 0xf7, 0xe8, 0xa1, 0x30, 0x06, 0xf0, 0x16, 0x9a, 0xec, 0x28, 0x13, 0x24, 0x5c, 0xad, - 0xac, 0xd7, 0x36, 0x97, 0xeb, 0xfd, 0xb7, 0x52, 0x2f, 0xf9, 0xf4, 0x0c, 0x74, 0xc8, 0xef, 0x75, - 0x74, 0x8e, 0xd1, 0xa4, 0x0d, 0xca, 0x4b, 0x6d, 0x73, 0x69, 0x80, 0x43, 0xa6, 0x0c, 0x91, 0xa7, - 0x81, 0xf8, 0x35, 0x34, 0x9e, 0xf5, 0x04, 0x99, 0x50, 0x78, 0x52, 0xc6, 0xef, 0xf7, 0x72, 0x77, - 0x9e, 0x04, 0xe1, 0x6d, 0x34, 0x13, 0x42, 0x0c, 0x02, 0x7c, 0x2d, 0x72, 0x4e, 0x15, 0xad, 0x96, - 0x8b, 0x9a, 0x0a, 0x51, 0x92, 0xaa, 0x85, 0x45, 0x4c, 0x0a, 0x8a, 0x93, 0x84, 0x4c, 0xba, 0x04, - 0x0f, 0x4e, 0x12, 0x2b, 0x28, 0x4e, 0x12, 0xfc, 0x2e, 0x42, 0x41, 0xda, 0xcd, 0x68, 0x20, 0xe4, - 0xfd, 0x4e, 0xa9, 0x92, 0x17, 0xcb, 0x25, 0xdb, 0x36, 0x9f, 0x57, 0xf6, 0x95, 0xe0, 0xf7, 0x50, - 0x2d, 0x06, 0xca, 0xc1, 0x6f, 0x33, 0x9a, 0x08, 0x32, 0xed, 0x62, 0xb8, 0x23, 0x01, 0xbb, 0x32, - 0x6f, 0x19, 0x62, 0x1b, 0x92, 0x67, 0xd6, 0x0c, 0x0c, 0x8e, 0xd3, 0x23, 0x20, 0x55, 0xd7, 0x99, - 0x15, 0x85, 0xa7, 0x00, 0xf6, 0xcc, 0x71, 0x11, 0x93, 0xaf, 0x85, 0xc6, 0x94, 0x75, 0x09, 0x72, - 0xbd, 0x96, 0x86, 0x4c, 0xd9, 0xd7, 0xa2, 0x80, 0xf8, 0x01, 0x9a, 0xd7, 0xb2, 0x41, 0x07, 0x82, - 0xa3, 0x2c, 0x8d, 0x12, 0x41, 0x6a, 0xaa, 0xf8, 0x25, 0x87, 0xf4, 0xb6, 0x05, 0x19, 0x9a, 0xbc, - 0x0b, 0xdf, 0xf2, 0xce, 0xc7, 0x65, 0x00, 0x6e, 0xa0, 0x9a, 0x6a, 0x5b, 0x48, 0x68, 0x2b, 0x06, - 0xf2, 0x8f, 0xf3, 0x56, 0x1b, 0x3d, 0xd1, 0xd9, 0x51, 0x00, 0x7b, 0x27, 0xd4, 0x86, 0x70, 0x13, - 0xa9, 0xde, 0xf6, 0xc3, 0x88, 0x2b, 0x8e, 0x7f, 0xa7, 0x5c, 0x97, 0x22, 0x39, 0x9a, 0x1a, 0x61, - 0x2f, 0x85, 0x16, 0x31, 0x7c, 0xdb, 0x18, 0xe1, 0x82, 0x8a, 0x1e, 0x27, 0xff, 0x8f, 0x34, 0x72, - 0x5f, 0x01, 0x06, 0x4e, 0x76, 0x43, 0x3b, 0xd2, 0x39, 0x7c, 0x4f, 0x3b, 0x82, 0x44, 0x44, 0x01, - 0x15, 0x40, 0xfe, 0xd3, 0x64, 0xaf, 0x96, 0xc9, 0xf2, 0xb1, 0x6b, 0xf4, 0x41, 0x73, 0x6b, 0xa5, - 0x7a, 0xbc, 0x63, 0x66, 0x5b, 0x0e, 0xbb, 0x4f, 0xc3, 0x90, 0xfc, 0x3c, 0x3d, 0xea, 0x88, 0xef, - 0x73, 0x60, 0x8d, 0x30, 0x2c, 0x1d, 0xd1, 0xc4, 0xf0, 0x3d, 0x34, 0x5f, 0xd0, 0xe8, 0x21, 0x20, - 0xbf, 0x68, 0xa6, 0x2b, 0x6e, 0x26, 0x33, 0x3d, 0x86, 0x6c, 0x8e, 0x96, 0xc2, 0x65, 0x5b, 0x6d, - 0x10, 0xe4, 0xd7, 0x33, 0x6d, 0xed, 0x82, 0x18, 0xb2, 0xb5, 0x0b, 0x02, 0xb7, 0xd1, 0x0b, 0x05, - 0x4d, 0xd0, 0x91, 0x63, 0xe9, 0x67, 0x94, 0xf3, 0x47, 0x29, 0x0b, 0xc9, 0x6f, 0x9a, 0xf2, 0x75, - 0x37, 0xe5, 0xb6, 0x42, 0xef, 0x1b, 0x70, 0xce, 0x7e, 0x91, 0x3a, 0xd3, 0xf8, 0x01, 0x5a, 0xec, - 0xf3, 0x2b, 0xe7, 0xc9, 0x67, 0x69, 0x0c, 0xe4, 0xa9, 0xd6, 0xb8, 0x3a, 0xc2, 0xb6, 0x9a, 0xc5, - 0xb4, 0x68, 0x9b, 0x0b, 0x74, 0x30, 0x83, 0x3f, 0x42, 0xcf, 0x17, 0xcc, 0x7a, 0x34, 0x35, 0xf5, - 0xef, 0x9a, 0xfa, 0x15, 0x37, 0xb5, 0x99, 0xd1, 0x3e, 0x6e, 0x4c, 0x87, 0x52, 0xf8, 0x16, 0x9a, - 0x2b, 0xc8, 0xe3, 0x88, 0x0b, 0xf2, 0x87, 0x66, 0xbd, 0xec, 0x66, 0xbd, 0x13, 0x71, 0x51, 0xea, - 0xa3, 0x3c, 0x68, 0x99, 0xa4, 0x35, 0xcd, 0xf4, 0xe7, 0x48, 0x26, 0x29, 0x3d, 0xc4, 0x94, 0x07, - 0xed, 0xab, 0x57, 0x4c, 0xb2, 0x23, 0xbf, 0xa9, 0x8e, 0x7a, 0xf5, 0xb2, 0x66, 0xb0, 0x23, 0x4d, - 0xcc, 0x76, 0xa4, 0xa2, 0x31, 0x1d, 0xf9, 0x6d, 0x75, 0x54, 0x47, 0xca, 0x2a, 0x47, 0x47, 0x16, - 0xe1, 0xb2, 0x2d, 0xd9, 0x91, 0xdf, 0x9d, 0x69, 0x6b, 0xb0, 0x23, 0x4d, 0x0c, 0x3f, 0x44, 0x4b, - 0x7d, 0x34, 0xaa, 0x51, 0x32, 0x60, 0xdd, 0x88, 0xab, 0x3f, 0xd6, 0xef, 0x35, 0xe7, 0xb5, 0x11, - 0x9c, 0x12, 0xbe, 0x6f, 0xd1, 0x39, 0xff, 0x25, 0xea, 0xce, 0xe3, 0x2e, 0x5a, 0x2e, 0xb4, 0x4c, - 0xeb, 0xf4, 0x89, 0xfd, 0xa0, 0xc5, 0xde, 0x70, 0x8b, 0xe9, 0x2e, 0x19, 0x56, 0x23, 0x74, 0x04, - 0x00, 0x7f, 0x82, 0x16, 0x82, 0xb8, 0xc7, 0x05, 0x30, 0xdf, 0x2c, 0x29, 0x3e, 0x07, 0x41, 0xbe, - 0x40, 0x66, 0x04, 0xfa, 0x37, 0x94, 0xfa, 0xb6, 0x46, 0x7e, 0xa0, 0x81, 0xf7, 0x41, 0x0c, 0x7d, - 0xf5, 0x2e, 0x04, 0x83, 0x10, 0xfc, 0x10, 0x5d, 0xca, 0x15, 0x34, 0x99, 0x4f, 0x85, 0x60, 0x4a, - 0xe5, 0x4b, 0x64, 0xbe, 0x83, 0x2e, 0x95, 0xbb, 0x2a, 0xd6, 0x10, 0x82, 0xb9, 0x84, 0x16, 0x03, - 0x07, 0x0a, 0x7f, 0x8c, 0x70, 0x98, 0x3e, 0x4a, 0xda, 0x8c, 0x86, 0xe0, 0x47, 0xc9, 0x61, 0xaa, - 0x64, 0xbe, 0xd2, 0x32, 0x2f, 0x97, 0x65, 0x9a, 0x39, 0x70, 0x2f, 0x39, 0x4c, 0x5d, 0x12, 0xf3, - 0xe1, 0x00, 0x02, 0x47, 0xe8, 0x62, 0x41, 0x9f, 0x5f, 0x97, 0x00, 0x2e, 0xc8, 0xd7, 0x77, 0x5d, - 0x5f, 0x74, 0x2b, 0x61, 0xae, 0xe3, 0x00, 0xf8, 0xa0, 0xcc, 0xdb, 0xde, 0x62, 0xe8, 0x40, 0xd9, - 0x85, 0xec, 0xf6, 0xc4, 0xf4, 0xd8, 0xfc, 0xb8, 0x37, 0x76, 0xbc, 0xb9, 0x76, 0x1e, 0xcd, 0xee, - 0x74, 0x33, 0xf1, 0xd8, 0x03, 0x9e, 0xa5, 0x09, 0x87, 0xb5, 0xc7, 0x68, 0xf9, 0x8c, 0xff, 0x0c, - 0x8c, 0xd1, 0x84, 0xda, 0x0c, 0x2b, 0x6a, 0x33, 0x54, 0xcf, 0x72, 0x63, 0xb4, 0x9f, 0x52, 0xb3, - 0x31, 0xe6, 0xbf, 0xf1, 0x65, 0x34, 0xc3, 0xa3, 0x6e, 0x16, 0x83, 0x2f, 0xd2, 0x23, 0xd0, 0x0b, - 0x63, 0xd5, 0xab, 0xe9, 0xd8, 0x81, 0x0c, 0x59, 0x57, 0x37, 0x6f, 0xfc, 0x74, 0xba, 0x52, 0x79, - 0x7a, 0xba, 0x52, 0xf9, 0xeb, 0x74, 0xa5, 0xf2, 0xe4, 0xef, 0x95, 0xe7, 0x3e, 0xbc, 0xd2, 0x4e, - 0xd5, 0xe1, 0xeb, 0x51, 0xba, 0x51, 0x6c, 0xc0, 0x5b, 0x1b, 0xfd, 0x17, 0xd2, 0x9a, 0x54, 0x8b, - 0xed, 0xd6, 0xb3, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe2, 0x24, 0x94, 0xa1, 0x68, 0x0b, 0x00, 0x00, + 0x4b, 0x45, 0x8a, 0x67, 0x40, 0x04, 0x21, 0x07, 0x76, 0x0c, 0x2c, 0x6b, 0x2d, 0x55, 0x59, 0x16, + 0xe8, 0xc4, 0xd2, 0xaa, 0x4c, 0x6c, 0xd0, 0x2c, 0xda, 0x38, 0x06, 0xc6, 0xa3, 0x34, 0xc9, 0x5a, + 0xf9, 0x2f, 0x83, 0xb8, 0x6a, 0x11, 0x5d, 0xe8, 0xb6, 0x80, 0xf1, 0x4e, 0x94, 0x65, 0xad, 0xbe, + 0x07, 0x8d, 0x5b, 0x63, 0x68, 0xd6, 0x83, 0x4f, 0x7b, 0xc0, 0xc5, 0x2d, 0xa0, 0x21, 0x30, 0x3c, + 0x87, 0xc6, 0xf6, 0x9a, 0xa4, 0xb2, 0x5a, 0x59, 0x9f, 0xf0, 0xc6, 0xf6, 0x9a, 0x78, 0x09, 0x4d, + 0xf7, 0xb8, 0x34, 0xd5, 0x05, 0x32, 0xb6, 0x5a, 0x59, 0xaf, 0x7a, 0xf6, 0x19, 0x5f, 0x43, 0xb3, + 0xb4, 0x27, 0x3a, 0x3e, 0x83, 0xe3, 0x48, 0x6a, 0x93, 0x71, 0x59, 0x76, 0x73, 0xea, 0xf3, 0x1f, + 0xc9, 0xf8, 0x56, 0xfd, 0x4d, 0x6f, 0x46, 0x66, 0x3d, 0x93, 0x7c, 0x67, 0xea, 0x33, 0x15, 0xbe, + 0xbe, 0xf6, 0x64, 0x01, 0x2d, 0xec, 0x99, 0x93, 0x7a, 0xf4, 0x50, 0x18, 0x03, 0x78, 0x0b, 0x4d, + 0x76, 0x94, 0x09, 0x12, 0xae, 0x56, 0xd6, 0x6b, 0x9b, 0xcb, 0xf5, 0xfe, 0xf3, 0xd7, 0x4b, 0x3e, + 0x3d, 0x03, 0x1d, 0xf2, 0x7b, 0x1d, 0x9d, 0x63, 0x34, 0x69, 0x83, 0xf2, 0x52, 0xdb, 0x5c, 0x1a, + 0xe0, 0x90, 0x29, 0x43, 0xe4, 0x69, 0x20, 0x7e, 0x0d, 0x8d, 0x67, 0x3d, 0x41, 0x26, 0x14, 0x9e, + 0x94, 0xf1, 0xfb, 0xbd, 0xdc, 0x9d, 0x27, 0x41, 0x78, 0x1b, 0xcd, 0x84, 0x10, 0x83, 0x00, 0x5f, + 0x8b, 0x9c, 0x53, 0x45, 0xab, 0xe5, 0xa2, 0xa6, 0x42, 0x94, 0xa4, 0x6a, 0x61, 0x11, 0x93, 0x82, + 0xe2, 0x24, 0x21, 0x93, 0x2e, 0xc1, 0x83, 0x93, 0xc4, 0x0a, 0x8a, 0x93, 0x04, 0xbf, 0x8b, 0x50, + 0x90, 0x76, 0x33, 0x1a, 0x08, 0x79, 0xbf, 0x53, 0xaa, 0xe4, 0xc5, 0x72, 0xc9, 0xb6, 0xcd, 0xe7, + 0x95, 0x7d, 0x25, 0xf8, 0x3d, 0x54, 0x8b, 0x81, 0x72, 0xf0, 0xdb, 0x8c, 0x26, 0x82, 0x4c, 0xbb, + 0x18, 0xee, 0x48, 0xc0, 0xae, 0xcc, 0x5b, 0x86, 0xd8, 0x86, 0xe4, 0x99, 0x35, 0x03, 0x83, 0xe3, + 0xf4, 0x08, 0x48, 0xd5, 0x75, 0x66, 0x45, 0xe1, 0x29, 0x80, 0x3d, 0x73, 0x5c, 0xc4, 0xe4, 0x6b, + 0xa1, 0x31, 0x65, 0x5d, 0x82, 0x5c, 0xaf, 0xa5, 0x21, 0x53, 0xf6, 0xb5, 0x28, 0x20, 0x7e, 0x80, + 0xe6, 0xb5, 0x6c, 0xd0, 0x81, 0xe0, 0x28, 0x4b, 0xa3, 0x44, 0x90, 0x9a, 0x2a, 0x7e, 0xc9, 0x21, + 0xbd, 0x6d, 0x41, 0x86, 0x26, 0xef, 0xc2, 0xb7, 0xbc, 0xf3, 0x71, 0x19, 0x80, 0x1b, 0xa8, 0xa6, + 0xda, 0x16, 0x12, 0xda, 0x8a, 0x81, 0xfc, 0xe3, 0xbc, 0xd5, 0x46, 0x4f, 0x74, 0x76, 0x14, 0xc0, + 0xde, 0x09, 0xb5, 0x21, 0xdc, 0x44, 0xaa, 0xb7, 0xfd, 0x30, 0xe2, 0x8a, 0xe3, 0xdf, 0x29, 0xd7, + 0xa5, 0x48, 0x8e, 0xa6, 0x46, 0xd8, 0x4b, 0xa1, 0x45, 0x0c, 0xdf, 0x36, 0x46, 0xb8, 0xa0, 0xa2, + 0xc7, 0xc9, 0xff, 0x23, 0x8d, 0xdc, 0x57, 0x80, 0x81, 0x93, 0xdd, 0xd0, 0x8e, 0x74, 0x0e, 0xdf, + 0xd3, 0x8e, 0x20, 0x11, 0x51, 0x40, 0x05, 0x90, 0xff, 0x34, 0xd9, 0xab, 0x65, 0xb2, 0x7c, 0xec, + 0x1a, 0x7d, 0xd0, 0xdc, 0x5a, 0xa9, 0x1e, 0xef, 0x98, 0xd9, 0x96, 0xc3, 0xee, 0xd3, 0x30, 0x24, + 0x3f, 0x4f, 0x8f, 0x3a, 0xe2, 0xfb, 0x1c, 0x58, 0x23, 0x0c, 0x4b, 0x47, 0x34, 0x31, 0x7c, 0x0f, + 0xcd, 0x17, 0x34, 0x7a, 0x08, 0xc8, 0x2f, 0x9a, 0xe9, 0x8a, 0x9b, 0xc9, 0x4c, 0x8f, 0x21, 0x9b, + 0xa3, 0xa5, 0x70, 0xd9, 0x56, 0x1b, 0x04, 0xf9, 0xf5, 0x4c, 0x5b, 0xbb, 0x20, 0x86, 0x6c, 0xed, + 0x82, 0xc0, 0x6d, 0xf4, 0x42, 0x41, 0x13, 0x74, 0xe4, 0x58, 0xfa, 0x19, 0xe5, 0xfc, 0x51, 0xca, + 0x42, 0xf2, 0x9b, 0xa6, 0x7c, 0xdd, 0x4d, 0xb9, 0xad, 0xd0, 0xfb, 0x06, 0x9c, 0xb3, 0x5f, 0xa4, + 0xce, 0x34, 0x7e, 0x80, 0x16, 0xfb, 0xfc, 0xca, 0x79, 0xf2, 0x59, 0x1a, 0x03, 0x79, 0xaa, 0x35, + 0xae, 0x8e, 0xb0, 0xad, 0x66, 0x31, 0x2d, 0xda, 0xe6, 0x02, 0x1d, 0xcc, 0xe0, 0x8f, 0xd0, 0xf3, + 0x05, 0xb3, 0x1e, 0x4d, 0x4d, 0xfd, 0xbb, 0xa6, 0x7e, 0xc5, 0x4d, 0x6d, 0x66, 0xb4, 0x8f, 0x1b, + 0xd3, 0xa1, 0x14, 0xbe, 0x85, 0xe6, 0x0a, 0xf2, 0x38, 0xe2, 0x82, 0xfc, 0xa1, 0x59, 0x2f, 0xbb, + 0x59, 0xef, 0x44, 0x5c, 0x94, 0xfa, 0x28, 0x0f, 0x5a, 0x26, 0x69, 0x4d, 0x33, 0xfd, 0x39, 0x92, + 0x49, 0x4a, 0x0f, 0x31, 0xe5, 0x41, 0xfb, 0xea, 0x15, 0x93, 0xec, 0xc8, 0x6f, 0xaa, 0xa3, 0x5e, + 0xbd, 0xac, 0x19, 0xec, 0x48, 0x13, 0xb3, 0x1d, 0xa9, 0x68, 0x4c, 0x47, 0x7e, 0x5b, 0x1d, 0xd5, + 0x91, 0xb2, 0xca, 0xd1, 0x91, 0x45, 0xb8, 0x6c, 0x4b, 0x76, 0xe4, 0x77, 0x67, 0xda, 0x1a, 0xec, + 0x48, 0x13, 0xc3, 0x0f, 0xd1, 0x52, 0x1f, 0x8d, 0x6a, 0x94, 0x0c, 0x58, 0x37, 0xe2, 0xea, 0x8f, + 0xf5, 0x7b, 0xcd, 0x79, 0x6d, 0x04, 0xa7, 0x84, 0xef, 0x5b, 0x74, 0xce, 0x7f, 0x89, 0xba, 0xf3, + 0xb8, 0x8b, 0x96, 0x0b, 0x2d, 0xd3, 0x3a, 0x7d, 0x62, 0x3f, 0x68, 0xb1, 0x37, 0xdc, 0x62, 0xba, + 0x4b, 0x86, 0xd5, 0x08, 0x1d, 0x01, 0xc0, 0x9f, 0xa0, 0x85, 0x20, 0xee, 0x71, 0x01, 0xcc, 0x37, + 0x4b, 0x8a, 0xcf, 0x41, 0x90, 0x2f, 0x90, 0x19, 0x81, 0xfe, 0x0d, 0xa5, 0xbe, 0xad, 0x91, 0x1f, + 0x68, 0xe0, 0x7d, 0x10, 0x43, 0x5f, 0xbd, 0x0b, 0xc1, 0x20, 0x04, 0x3f, 0x44, 0x97, 0x72, 0x05, + 0x4d, 0xe6, 0x53, 0x21, 0x98, 0x52, 0xf9, 0x12, 0x99, 0xef, 0xa0, 0x4b, 0xe5, 0xae, 0x8a, 0x35, + 0x84, 0x60, 0x2e, 0xa1, 0xc5, 0xc0, 0x81, 0xc2, 0x1f, 0x23, 0x1c, 0xa6, 0x8f, 0x92, 0x36, 0xa3, + 0x21, 0xf8, 0x51, 0x72, 0x98, 0x2a, 0x99, 0xaf, 0xb4, 0xcc, 0xcb, 0x65, 0x99, 0x66, 0x0e, 0xdc, + 0x4b, 0x0e, 0x53, 0x97, 0xc4, 0x7c, 0x38, 0x80, 0xc0, 0x11, 0xba, 0x58, 0xd0, 0xe7, 0xd7, 0x25, + 0x80, 0x0b, 0xf2, 0xf5, 0x5d, 0xd7, 0x17, 0xdd, 0x4a, 0x98, 0xeb, 0x38, 0x00, 0x3e, 0x28, 0xf3, + 0xb6, 0xb7, 0x18, 0x3a, 0x50, 0x76, 0x21, 0xbb, 0x3d, 0x31, 0x3d, 0x36, 0x3f, 0xee, 0x8d, 0x1d, + 0x6f, 0xae, 0x9d, 0x47, 0xb3, 0x3b, 0xdd, 0x4c, 0x3c, 0xf6, 0x80, 0x67, 0x69, 0xc2, 0x61, 0xed, + 0x31, 0x5a, 0x3e, 0xe3, 0x3f, 0x03, 0x63, 0x34, 0xa1, 0x36, 0xc3, 0x8a, 0xda, 0x0c, 0xd5, 0x6f, + 0xb9, 0x31, 0xda, 0x4f, 0xa9, 0xd9, 0x18, 0xf3, 0x67, 0x7c, 0x19, 0xcd, 0xf0, 0xa8, 0x9b, 0xc5, + 0xe0, 0x8b, 0xf4, 0x08, 0xf4, 0xc2, 0x58, 0xf5, 0x6a, 0x3a, 0x76, 0x20, 0x43, 0xd6, 0xd5, 0xcd, + 0x1b, 0x3f, 0x9d, 0xae, 0x54, 0x9e, 0x9e, 0xae, 0x54, 0xfe, 0x3a, 0x5d, 0xa9, 0x3c, 0xf9, 0x7b, + 0xe5, 0xb9, 0x0f, 0xaf, 0xb4, 0x53, 0x75, 0xf8, 0x7a, 0x94, 0x6e, 0x14, 0x1b, 0xf0, 0xd6, 0x46, + 0xff, 0x85, 0xb4, 0x26, 0xd5, 0x62, 0xbb, 0xf5, 0x2c, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x47, 0x30, + 0xbe, 0x52, 0x0b, 0x00, 0x00, } func (m *RequestHeader) Marshal() (dAtA []byte, err error) { diff --git a/api/etcdserverpb/rpc.pb.go b/api/etcdserverpb/rpc.pb.go index bcf9aa7f2eb5..ca1a8931a24b 100644 --- a/api/etcdserverpb/rpc.pb.go +++ b/api/etcdserverpb/rpc.pb.go @@ -9,7 +9,6 @@ import ( math "math" math_bits "math/bits" - _ "github.com/gogo/protobuf/gogoproto" proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" authpb "go.etcd.io/etcd/api/v3/authpb" @@ -6313,293 +6312,293 @@ func init() { func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) } var fileDescriptor_77a6da22d6a3feb1 = []byte{ - // 4574 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x3c, 0x5d, 0x6f, 0x1b, 0x57, - 0x76, 0x1a, 0x92, 0x12, 0xc9, 0xc3, 0x0f, 0xd1, 0xd7, 0xb2, 0x4d, 0xd3, 0xb6, 0xac, 0x8c, 0xed, - 0xc4, 0x71, 0x62, 0xd1, 0x96, 0xec, 0x64, 0xeb, 0x22, 0xe9, 0xd2, 0x12, 0x63, 0x6b, 0x2d, 0x4b, - 0xca, 0x88, 0x76, 0x36, 0x2e, 0xb0, 0xea, 0x88, 0xbc, 0xa6, 0x66, 0x45, 0xce, 0x70, 0x67, 0x86, - 0xb4, 0x94, 0x3e, 0x6c, 0xba, 0xed, 0x76, 0xb1, 0x2d, 0xb0, 0x40, 0x53, 0xa0, 0x58, 0x14, 0xed, - 0x4b, 0x5b, 0xa0, 0x7d, 0x68, 0x8b, 0xf6, 0xa1, 0x0f, 0x45, 0x0b, 0xf4, 0xa1, 0x7d, 0x68, 0x1f, - 0x0a, 0x14, 0xe8, 0x1f, 0x68, 0xd3, 0x7d, 0xea, 0xaf, 0x58, 0xdc, 0xaf, 0xb9, 0x77, 0xbe, 0x24, - 0x67, 0xa5, 0x60, 0x5f, 0x62, 0xce, 0x3d, 0x9f, 0xf7, 0x9c, 0x7b, 0xcf, 0xb9, 0xf7, 0x9c, 0x1b, - 0x41, 0xd1, 0x1d, 0x75, 0x17, 0x47, 0xae, 0xe3, 0x3b, 0xa8, 0x8c, 0xfd, 0x6e, 0xcf, 0xc3, 0xee, - 0x04, 0xbb, 0xa3, 0xdd, 0xc6, 0x5c, 0xdf, 0xe9, 0x3b, 0x14, 0xd0, 0x24, 0xbf, 0x18, 0x4e, 0xa3, - 0x4e, 0x70, 0x9a, 0xe6, 0xc8, 0x6a, 0x0e, 0x27, 0xdd, 0xee, 0x68, 0xb7, 0xb9, 0x3f, 0xe1, 0x90, - 0x46, 0x00, 0x31, 0xc7, 0xfe, 0xde, 0x68, 0x97, 0xfe, 0xc3, 0x61, 0x0b, 0x01, 0x6c, 0x82, 0x5d, - 0xcf, 0x72, 0xec, 0xd1, 0xae, 0xf8, 0xc5, 0x31, 0x2e, 0xf7, 0x1d, 0xa7, 0x3f, 0xc0, 0x8c, 0xde, - 0xb6, 0x1d, 0xdf, 0xf4, 0x2d, 0xc7, 0xf6, 0x38, 0x94, 0xfd, 0xd3, 0xbd, 0xdd, 0xc7, 0xf6, 0x6d, - 0x67, 0x84, 0x6d, 0x73, 0x64, 0x4d, 0x96, 0x9a, 0xce, 0x88, 0xe2, 0xc4, 0xf1, 0xf5, 0x9f, 0x68, - 0x50, 0x35, 0xb0, 0x37, 0x72, 0x6c, 0x0f, 0x3f, 0xc6, 0x66, 0x0f, 0xbb, 0xe8, 0x0a, 0x40, 0x77, - 0x30, 0xf6, 0x7c, 0xec, 0xee, 0x58, 0xbd, 0xba, 0xb6, 0xa0, 0xdd, 0xcc, 0x19, 0x45, 0x3e, 0xb2, - 0xd6, 0x43, 0x97, 0xa0, 0x38, 0xc4, 0xc3, 0x5d, 0x06, 0xcd, 0x50, 0x68, 0x81, 0x0d, 0xac, 0xf5, - 0x50, 0x03, 0x0a, 0x2e, 0x9e, 0x58, 0x44, 0xdd, 0x7a, 0x76, 0x41, 0xbb, 0x99, 0x35, 0x82, 0x6f, - 0x42, 0xe8, 0x9a, 0x2f, 0xfd, 0x1d, 0x1f, 0xbb, 0xc3, 0x7a, 0x8e, 0x11, 0x92, 0x81, 0x0e, 0x76, - 0x87, 0x0f, 0xf2, 0x3f, 0xf8, 0x87, 0x7a, 0x76, 0x79, 0xf1, 0x8e, 0xfe, 0xaf, 0xd3, 0x50, 0x36, - 0x4c, 0xbb, 0x8f, 0x0d, 0xfc, 0xbd, 0x31, 0xf6, 0x7c, 0x54, 0x83, 0xec, 0x3e, 0x3e, 0xa4, 0x7a, - 0x94, 0x0d, 0xf2, 0x93, 0x31, 0xb2, 0xfb, 0x78, 0x07, 0xdb, 0x4c, 0x83, 0x32, 0x61, 0x64, 0xf7, - 0x71, 0xdb, 0xee, 0xa1, 0x39, 0x98, 0x1e, 0x58, 0x43, 0xcb, 0xe7, 0xe2, 0xd9, 0x47, 0x48, 0xaf, - 0x5c, 0x44, 0xaf, 0x15, 0x00, 0xcf, 0x71, 0xfd, 0x1d, 0xc7, 0xed, 0x61, 0xb7, 0x3e, 0xbd, 0xa0, - 0xdd, 0xac, 0x2e, 0x5d, 0x5f, 0x54, 0x3d, 0xbc, 0xa8, 0x2a, 0xb4, 0xb8, 0xed, 0xb8, 0xfe, 0x26, - 0xc1, 0x35, 0x8a, 0x9e, 0xf8, 0x89, 0x3e, 0x82, 0x12, 0x65, 0xe2, 0x9b, 0x6e, 0x1f, 0xfb, 0xf5, - 0x19, 0xca, 0xe5, 0xc6, 0x31, 0x5c, 0x3a, 0x14, 0xd9, 0xa0, 0xe2, 0xd9, 0x6f, 0xa4, 0x43, 0xd9, - 0xc3, 0xae, 0x65, 0x0e, 0xac, 0xcf, 0xcc, 0xdd, 0x01, 0xae, 0xe7, 0x17, 0xb4, 0x9b, 0x05, 0x23, - 0x34, 0x46, 0xe6, 0xbf, 0x8f, 0x0f, 0xbd, 0x1d, 0xc7, 0x1e, 0x1c, 0xd6, 0x0b, 0x14, 0xa1, 0x40, - 0x06, 0x36, 0xed, 0xc1, 0x21, 0xf5, 0x9e, 0x33, 0xb6, 0x7d, 0x06, 0x2d, 0x52, 0x68, 0x91, 0x8e, - 0x50, 0xf0, 0x5d, 0xa8, 0x0d, 0x2d, 0x7b, 0x67, 0xe8, 0xf4, 0x76, 0x02, 0x83, 0x00, 0x31, 0xc8, - 0xc3, 0xfc, 0xef, 0x51, 0x0f, 0xdc, 0x35, 0xaa, 0x43, 0xcb, 0x7e, 0xea, 0xf4, 0x0c, 0x61, 0x1f, - 0x42, 0x62, 0x1e, 0x84, 0x49, 0x4a, 0x51, 0x12, 0xf3, 0x40, 0x25, 0x79, 0x1f, 0xce, 0x12, 0x29, - 0x5d, 0x17, 0x9b, 0x3e, 0x96, 0x54, 0xe5, 0x30, 0xd5, 0x99, 0xa1, 0x65, 0xaf, 0x50, 0x94, 0x10, - 0xa1, 0x79, 0x10, 0x23, 0xac, 0x44, 0x09, 0xcd, 0x83, 0x30, 0xa1, 0xfe, 0x3e, 0x14, 0x03, 0xbf, - 0xa0, 0x02, 0xe4, 0x36, 0x36, 0x37, 0xda, 0xb5, 0x29, 0x04, 0x30, 0xd3, 0xda, 0x5e, 0x69, 0x6f, - 0xac, 0xd6, 0x34, 0x54, 0x82, 0xfc, 0x6a, 0x9b, 0x7d, 0x64, 0x1a, 0xf9, 0x2f, 0xf8, 0x7a, 0x7b, - 0x02, 0x20, 0x5d, 0x81, 0xf2, 0x90, 0x7d, 0xd2, 0xfe, 0xb4, 0x36, 0x45, 0x90, 0x9f, 0xb7, 0x8d, - 0xed, 0xb5, 0xcd, 0x8d, 0x9a, 0x46, 0xb8, 0xac, 0x18, 0xed, 0x56, 0xa7, 0x5d, 0xcb, 0x10, 0x8c, - 0xa7, 0x9b, 0xab, 0xb5, 0x2c, 0x2a, 0xc2, 0xf4, 0xf3, 0xd6, 0xfa, 0xb3, 0x76, 0x2d, 0x17, 0x30, - 0x93, 0xab, 0xf8, 0x4f, 0x34, 0xa8, 0x70, 0x77, 0xb3, 0xbd, 0x85, 0xee, 0xc1, 0xcc, 0x1e, 0xdd, - 0x5f, 0x74, 0x25, 0x97, 0x96, 0x2e, 0x47, 0xd6, 0x46, 0x68, 0x0f, 0x1a, 0x1c, 0x17, 0xe9, 0x90, - 0xdd, 0x9f, 0x78, 0xf5, 0xcc, 0x42, 0xf6, 0x66, 0x69, 0xa9, 0xb6, 0xc8, 0x22, 0xc9, 0xe2, 0x13, - 0x7c, 0xf8, 0xdc, 0x1c, 0x8c, 0xb1, 0x41, 0x80, 0x08, 0x41, 0x6e, 0xe8, 0xb8, 0x98, 0x2e, 0xf8, - 0x82, 0x41, 0x7f, 0x93, 0x5d, 0x40, 0x7d, 0xce, 0x17, 0x3b, 0xfb, 0x90, 0xea, 0xfd, 0xa7, 0x06, - 0xb0, 0x35, 0xf6, 0xd3, 0xb7, 0xd8, 0x1c, 0x4c, 0x4f, 0x88, 0x04, 0xbe, 0xbd, 0xd8, 0x07, 0xdd, - 0x5b, 0xd8, 0xf4, 0x70, 0xb0, 0xb7, 0xc8, 0x07, 0x5a, 0x80, 0xfc, 0xc8, 0xc5, 0x93, 0x9d, 0xfd, - 0x09, 0x95, 0x56, 0x90, 0x7e, 0x9a, 0x21, 0xe3, 0x4f, 0x26, 0xe8, 0x16, 0x94, 0xad, 0xbe, 0xed, - 0xb8, 0x78, 0x87, 0x31, 0x9d, 0x56, 0xd1, 0x96, 0x8c, 0x12, 0x03, 0xd2, 0x29, 0x29, 0xb8, 0x4c, - 0xd4, 0x4c, 0x22, 0xee, 0x3a, 0x81, 0xc9, 0xf9, 0x7c, 0xae, 0x41, 0x89, 0xce, 0xe7, 0x44, 0xc6, - 0x5e, 0x92, 0x13, 0xc9, 0x50, 0xb2, 0x98, 0xc1, 0x63, 0x53, 0x93, 0x2a, 0xd8, 0x80, 0x56, 0xf1, - 0x00, 0xfb, 0xf8, 0x24, 0xc1, 0x4b, 0x31, 0x65, 0x36, 0xd1, 0x94, 0x52, 0xde, 0x5f, 0x68, 0x70, - 0x36, 0x24, 0xf0, 0x44, 0x53, 0xaf, 0x43, 0xbe, 0x47, 0x99, 0x31, 0x9d, 0xb2, 0x86, 0xf8, 0x44, - 0xf7, 0xa0, 0xc0, 0x55, 0xf2, 0xea, 0xd9, 0xe4, 0x65, 0x28, 0xb5, 0xcc, 0x33, 0x2d, 0x3d, 0xa9, - 0xe6, 0x3f, 0x65, 0xa0, 0xc8, 0x8d, 0xb1, 0x39, 0x42, 0x2d, 0xa8, 0xb8, 0xec, 0x63, 0x87, 0xce, - 0x99, 0xeb, 0xd8, 0x48, 0x8f, 0x93, 0x8f, 0xa7, 0x8c, 0x32, 0x27, 0xa1, 0xc3, 0xe8, 0x57, 0xa1, - 0x24, 0x58, 0x8c, 0xc6, 0x3e, 0x77, 0x54, 0x3d, 0xcc, 0x40, 0x2e, 0xed, 0xc7, 0x53, 0x06, 0x70, - 0xf4, 0xad, 0xb1, 0x8f, 0x3a, 0x30, 0x27, 0x88, 0xd9, 0xfc, 0xb8, 0x1a, 0x59, 0xca, 0x65, 0x21, - 0xcc, 0x25, 0xee, 0xce, 0xc7, 0x53, 0x06, 0xe2, 0xf4, 0x0a, 0x10, 0xad, 0x4a, 0x95, 0xfc, 0x03, - 0x96, 0x5f, 0x62, 0x2a, 0x75, 0x0e, 0x6c, 0xce, 0x44, 0x58, 0x6b, 0x59, 0xd1, 0xad, 0x73, 0x60, - 0x07, 0x26, 0x7b, 0x58, 0x84, 0x3c, 0x1f, 0xd6, 0xff, 0x23, 0x03, 0x20, 0x3c, 0xb6, 0x39, 0x42, - 0xab, 0x50, 0x75, 0xf9, 0x57, 0xc8, 0x7e, 0x97, 0x12, 0xed, 0xc7, 0x1d, 0x3d, 0x65, 0x54, 0x04, - 0x11, 0x53, 0xf7, 0x43, 0x28, 0x07, 0x5c, 0xa4, 0x09, 0x2f, 0x26, 0x98, 0x30, 0xe0, 0x50, 0x12, - 0x04, 0xc4, 0x88, 0x9f, 0xc0, 0xb9, 0x80, 0x3e, 0xc1, 0x8a, 0x6f, 0x1c, 0x61, 0xc5, 0x80, 0xe1, - 0x59, 0xc1, 0x41, 0xb5, 0xe3, 0x23, 0x45, 0x31, 0x69, 0xc8, 0x8b, 0x09, 0x86, 0x64, 0x48, 0xaa, - 0x25, 0x03, 0x0d, 0x43, 0xa6, 0x04, 0x92, 0xf6, 0xd9, 0xb8, 0xfe, 0x57, 0x39, 0xc8, 0xaf, 0x38, - 0xc3, 0x91, 0xe9, 0x92, 0x45, 0x34, 0xe3, 0x62, 0x6f, 0x3c, 0xf0, 0xa9, 0x01, 0xab, 0x4b, 0xd7, - 0xc2, 0x32, 0x38, 0x9a, 0xf8, 0xd7, 0xa0, 0xa8, 0x06, 0x27, 0x21, 0xc4, 0x3c, 0xcb, 0x67, 0x5e, - 0x83, 0x98, 0xe7, 0x78, 0x4e, 0x22, 0x02, 0x42, 0x56, 0x06, 0x84, 0x06, 0xe4, 0xf9, 0x01, 0x8f, - 0x05, 0xeb, 0xc7, 0x53, 0x86, 0x18, 0x40, 0x6f, 0xc3, 0x6c, 0x34, 0x15, 0x4e, 0x73, 0x9c, 0x6a, - 0x37, 0x9c, 0x39, 0xaf, 0x41, 0x39, 0x94, 0xa1, 0x67, 0x38, 0x5e, 0x69, 0xa8, 0xe4, 0xe5, 0xf3, - 0x22, 0xac, 0x93, 0x63, 0x45, 0xf9, 0xf1, 0x94, 0x08, 0xec, 0x57, 0x45, 0x60, 0x2f, 0xa8, 0x89, - 0x96, 0xd8, 0x95, 0xc7, 0xf8, 0xeb, 0x6a, 0xd4, 0xfa, 0x26, 0x21, 0x0e, 0x90, 0x64, 0xf8, 0xd2, - 0x0d, 0xa8, 0x84, 0x4c, 0x46, 0x72, 0x64, 0xfb, 0xe3, 0x67, 0xad, 0x75, 0x96, 0x50, 0x1f, 0xd1, - 0x1c, 0x6a, 0xd4, 0x34, 0x92, 0xa0, 0xd7, 0xdb, 0xdb, 0xdb, 0xb5, 0x0c, 0x3a, 0x0f, 0xc5, 0x8d, - 0xcd, 0xce, 0x0e, 0xc3, 0xca, 0x36, 0xf2, 0x7f, 0xcc, 0x22, 0x89, 0xcc, 0xcf, 0x9f, 0x06, 0x3c, - 0x79, 0x8a, 0x56, 0x32, 0xf3, 0x94, 0x92, 0x99, 0x35, 0x91, 0x99, 0x33, 0x32, 0x33, 0x67, 0x11, - 0x82, 0xe9, 0xf5, 0x76, 0x6b, 0x9b, 0x26, 0x69, 0xc6, 0x7a, 0x39, 0x9e, 0xad, 0x1f, 0x56, 0xa1, - 0xcc, 0xdc, 0xb3, 0x33, 0xb6, 0xc9, 0x61, 0xe2, 0xaf, 0x35, 0x00, 0xb9, 0x61, 0x51, 0x13, 0xf2, - 0x5d, 0xa6, 0x42, 0x5d, 0xa3, 0x11, 0xf0, 0x5c, 0xa2, 0xc7, 0x0d, 0x81, 0x85, 0xee, 0x42, 0xde, - 0x1b, 0x77, 0xbb, 0xd8, 0x13, 0x99, 0xfb, 0x42, 0x34, 0x08, 0xf3, 0x80, 0x68, 0x08, 0x3c, 0x42, - 0xf2, 0xd2, 0xb4, 0x06, 0x63, 0x9a, 0xc7, 0x8f, 0x26, 0xe1, 0x78, 0x32, 0xc6, 0xfe, 0x99, 0x06, - 0x25, 0x65, 0x5b, 0xfc, 0x82, 0x29, 0xe0, 0x32, 0x14, 0xa9, 0x32, 0xb8, 0xc7, 0x93, 0x40, 0xc1, - 0x90, 0x03, 0xe8, 0x3d, 0x28, 0x8a, 0x9d, 0x24, 0xf2, 0x40, 0x3d, 0x99, 0xed, 0xe6, 0xc8, 0x90, - 0xa8, 0x52, 0xc9, 0x0e, 0x9c, 0xa1, 0x76, 0xea, 0x92, 0xdb, 0x87, 0xb0, 0xac, 0x7a, 0x2c, 0xd7, - 0x22, 0xc7, 0xf2, 0x06, 0x14, 0x46, 0x7b, 0x87, 0x9e, 0xd5, 0x35, 0x07, 0x5c, 0x9d, 0xe0, 0x5b, - 0x72, 0xdd, 0x06, 0xa4, 0x72, 0x3d, 0x89, 0x01, 0x24, 0xd3, 0xf3, 0x50, 0x7a, 0x6c, 0x7a, 0x7b, - 0x5c, 0x49, 0x39, 0x7e, 0x0f, 0x2a, 0x64, 0xfc, 0xc9, 0xf3, 0xd7, 0x50, 0x5f, 0x50, 0x2d, 0xeb, - 0xff, 0xac, 0x41, 0x55, 0x90, 0x9d, 0xc8, 0x41, 0x08, 0x72, 0x7b, 0xa6, 0xb7, 0x47, 0x8d, 0x51, - 0x31, 0xe8, 0x6f, 0xf4, 0x36, 0xd4, 0xba, 0x6c, 0xfe, 0x3b, 0x91, 0x7b, 0xd7, 0x2c, 0x1f, 0x0f, - 0xf6, 0xfe, 0xbb, 0x50, 0x21, 0x24, 0x3b, 0xe1, 0x7b, 0x90, 0xd8, 0xc6, 0xef, 0x19, 0xe5, 0x3d, - 0x3a, 0xe7, 0xa8, 0xfa, 0x26, 0x94, 0x99, 0x31, 0x4e, 0x5b, 0x77, 0x69, 0xd7, 0x06, 0xcc, 0x6e, - 0xdb, 0xe6, 0xc8, 0xdb, 0x73, 0xfc, 0x88, 0xcd, 0x97, 0xf5, 0xbf, 0xd7, 0xa0, 0x26, 0x81, 0x27, - 0xd2, 0xe1, 0x2d, 0x98, 0x75, 0xf1, 0xd0, 0xb4, 0x6c, 0xcb, 0xee, 0xef, 0xec, 0x1e, 0xfa, 0xd8, - 0xe3, 0xd7, 0xd7, 0x6a, 0x30, 0xfc, 0x90, 0x8c, 0x12, 0x65, 0x77, 0x07, 0xce, 0x2e, 0x0f, 0xd2, - 0xf4, 0x37, 0x7a, 0x23, 0x1c, 0xa5, 0x8b, 0xd2, 0x6e, 0x62, 0x5c, 0xea, 0xfc, 0xd3, 0x0c, 0x94, - 0x3f, 0x31, 0xfd, 0xae, 0x58, 0x41, 0x68, 0x0d, 0xaa, 0x41, 0x18, 0xa7, 0x23, 0x5c, 0xef, 0xc8, - 0x81, 0x83, 0xd2, 0x88, 0x7b, 0x8d, 0x38, 0x70, 0x54, 0xba, 0xea, 0x00, 0x65, 0x65, 0xda, 0x5d, - 0x3c, 0x08, 0x58, 0x65, 0xd2, 0x59, 0x51, 0x44, 0x95, 0x95, 0x3a, 0x80, 0xbe, 0x0d, 0xb5, 0x91, - 0xeb, 0xf4, 0x5d, 0xec, 0x79, 0x01, 0x33, 0x96, 0xc2, 0xf5, 0x04, 0x66, 0x5b, 0x1c, 0x35, 0x72, - 0x8a, 0xb9, 0xf7, 0x78, 0xca, 0x98, 0x1d, 0x85, 0x61, 0x32, 0xb0, 0xce, 0xca, 0xf3, 0x1e, 0x8b, - 0xac, 0x3f, 0xca, 0x02, 0x8a, 0x4f, 0xf3, 0xab, 0x1e, 0x93, 0x6f, 0x40, 0xd5, 0xf3, 0x4d, 0x37, - 0xb6, 0xe6, 0x2b, 0x74, 0x34, 0x58, 0xf1, 0x6f, 0x41, 0xa0, 0xd9, 0x8e, 0xed, 0xf8, 0xd6, 0xcb, - 0x43, 0x76, 0x41, 0x31, 0xaa, 0x62, 0x78, 0x83, 0x8e, 0xa2, 0x0d, 0xc8, 0xbf, 0xb4, 0x06, 0x3e, - 0x76, 0xbd, 0xfa, 0xf4, 0x42, 0xf6, 0x66, 0x75, 0xe9, 0x9d, 0xe3, 0x1c, 0xb3, 0xf8, 0x11, 0xc5, - 0xef, 0x1c, 0x8e, 0xd4, 0xd3, 0x2f, 0x67, 0xa2, 0x1e, 0xe3, 0x67, 0x92, 0x6f, 0x44, 0x3a, 0x14, - 0x5e, 0x11, 0xa6, 0x3b, 0x56, 0x8f, 0xe6, 0xe2, 0x60, 0x1f, 0xde, 0x33, 0xf2, 0x14, 0xb0, 0xd6, - 0x43, 0xd7, 0xa0, 0xf0, 0xd2, 0x35, 0xfb, 0x43, 0x6c, 0xfb, 0xec, 0x96, 0x2f, 0x71, 0x02, 0x80, - 0xbe, 0x08, 0x20, 0x55, 0x21, 0x99, 0x6f, 0x63, 0x73, 0xeb, 0x59, 0xa7, 0x36, 0x85, 0xca, 0x50, - 0xd8, 0xd8, 0x5c, 0x6d, 0xaf, 0xb7, 0x49, 0x6e, 0x14, 0x39, 0xef, 0xae, 0xdc, 0x74, 0x2d, 0xe1, - 0x88, 0xd0, 0x9a, 0x50, 0xf5, 0xd2, 0xc2, 0x97, 0x6e, 0xa1, 0x97, 0x60, 0x71, 0x57, 0xbf, 0x0a, - 0x73, 0x49, 0x4b, 0x43, 0x20, 0xdc, 0xd3, 0xff, 0x2d, 0x03, 0x15, 0xbe, 0x11, 0x4e, 0xb4, 0x73, - 0x2f, 0x2a, 0x5a, 0xf1, 0xeb, 0x89, 0x30, 0x52, 0x1d, 0xf2, 0x6c, 0x83, 0xf4, 0xf8, 0xfd, 0x57, - 0x7c, 0x92, 0xe0, 0xcc, 0xd6, 0x3b, 0xee, 0x71, 0xb7, 0x07, 0xdf, 0x89, 0x61, 0x73, 0x3a, 0x35, - 0x6c, 0x06, 0x1b, 0xce, 0xf4, 0xf8, 0xc1, 0xaa, 0x28, 0x5d, 0x51, 0x16, 0x9b, 0x8a, 0x00, 0x43, - 0x3e, 0xcb, 0xa7, 0xf8, 0x0c, 0xdd, 0x80, 0x19, 0x3c, 0xc1, 0xb6, 0xef, 0xd5, 0x4b, 0x34, 0x91, - 0x56, 0xc4, 0x85, 0xaa, 0x4d, 0x46, 0x0d, 0x0e, 0x94, 0xae, 0xfa, 0x10, 0xce, 0xd0, 0xfb, 0xee, - 0x23, 0xd7, 0xb4, 0xd5, 0x3b, 0x7b, 0xa7, 0xb3, 0xce, 0xd3, 0x0e, 0xf9, 0x89, 0xaa, 0x90, 0x59, - 0x5b, 0xe5, 0xf6, 0xc9, 0xac, 0xad, 0x4a, 0xfa, 0xdf, 0xd7, 0x00, 0xa9, 0x0c, 0x4e, 0xe4, 0x8b, - 0x88, 0x14, 0xa1, 0x47, 0x56, 0xea, 0x31, 0x07, 0xd3, 0xd8, 0x75, 0x1d, 0x97, 0x05, 0x4a, 0x83, - 0x7d, 0x48, 0x6d, 0x6e, 0x73, 0x65, 0x0c, 0x3c, 0x71, 0xf6, 0x83, 0x08, 0xc0, 0xd8, 0x6a, 0x71, - 0xe5, 0x3b, 0x70, 0x36, 0x84, 0x7e, 0x3a, 0x29, 0x7e, 0x13, 0x66, 0x29, 0xd7, 0x95, 0x3d, 0xdc, - 0xdd, 0x1f, 0x39, 0x96, 0x1d, 0xd3, 0x00, 0x5d, 0x23, 0xb1, 0x4b, 0xa4, 0x0b, 0x32, 0x45, 0x36, - 0xe7, 0x72, 0x30, 0xd8, 0xe9, 0xac, 0xcb, 0xa5, 0xbe, 0x0b, 0xe7, 0x23, 0x0c, 0xc5, 0xcc, 0x7e, - 0x0d, 0x4a, 0xdd, 0x60, 0xd0, 0xe3, 0x27, 0xc8, 0x2b, 0x61, 0x75, 0xa3, 0xa4, 0x2a, 0x85, 0x94, - 0xf1, 0x6d, 0xb8, 0x10, 0x93, 0x71, 0x1a, 0xe6, 0xb8, 0xa7, 0xdf, 0x81, 0x73, 0x94, 0xf3, 0x13, - 0x8c, 0x47, 0xad, 0x81, 0x35, 0x39, 0xde, 0x2d, 0x87, 0x7c, 0xbe, 0x0a, 0xc5, 0xd7, 0xbb, 0xac, - 0xa4, 0xe8, 0x36, 0x17, 0xdd, 0xb1, 0x86, 0xb8, 0xe3, 0xac, 0xa7, 0x6b, 0x4b, 0x12, 0xf9, 0x3e, - 0x3e, 0xf4, 0xf8, 0xf1, 0x91, 0xfe, 0x96, 0xd1, 0xeb, 0x6f, 0x35, 0x6e, 0x4e, 0x95, 0xcf, 0xd7, - 0xbc, 0x35, 0xe6, 0x01, 0xfa, 0x64, 0x0f, 0xe2, 0x1e, 0x01, 0xb0, 0xda, 0x9c, 0x32, 0x12, 0x28, - 0x4c, 0xb2, 0x50, 0x39, 0xaa, 0xf0, 0x15, 0xbe, 0x71, 0xe8, 0x7f, 0xbc, 0xd8, 0x49, 0xe9, 0x4d, - 0x28, 0x51, 0xc8, 0xb6, 0x6f, 0xfa, 0x63, 0x2f, 0xcd, 0x73, 0xcb, 0xfa, 0x8f, 0x34, 0xbe, 0xa3, - 0x04, 0x9f, 0x13, 0xcd, 0xf9, 0x2e, 0xcc, 0xd0, 0x1b, 0xa2, 0xb8, 0xe9, 0x5c, 0x4c, 0x58, 0xd8, - 0x4c, 0x23, 0x83, 0x23, 0x2a, 0xe7, 0x24, 0x0d, 0x66, 0x9e, 0xd2, 0xce, 0x81, 0xa2, 0x6d, 0x4e, - 0x78, 0xce, 0x36, 0x87, 0xac, 0xfc, 0x58, 0x34, 0xe8, 0x6f, 0x7a, 0x21, 0xc0, 0xd8, 0x7d, 0x66, - 0xac, 0xb3, 0x1b, 0x48, 0xd1, 0x08, 0xbe, 0x89, 0x61, 0xbb, 0x03, 0x0b, 0xdb, 0x3e, 0x85, 0xe6, - 0x28, 0x54, 0x19, 0x41, 0x37, 0xa0, 0x68, 0x79, 0xeb, 0xd8, 0x74, 0x6d, 0x5e, 0xe2, 0x57, 0x02, - 0xb3, 0x84, 0xc8, 0x35, 0xf6, 0x1d, 0xa8, 0x31, 0xcd, 0x5a, 0xbd, 0x9e, 0x72, 0xda, 0x0f, 0xe4, - 0x6b, 0x11, 0xf9, 0x21, 0xfe, 0x99, 0xe3, 0xf9, 0xff, 0x9d, 0x06, 0x67, 0x14, 0x01, 0x27, 0x72, - 0xc1, 0xbb, 0x30, 0xc3, 0xfa, 0x2f, 0xfc, 0x28, 0x38, 0x17, 0xa6, 0x62, 0x62, 0x0c, 0x8e, 0x83, - 0x16, 0x21, 0xcf, 0x7e, 0x89, 0x6b, 0x5c, 0x32, 0xba, 0x40, 0x92, 0x2a, 0x2f, 0xc2, 0x59, 0x0e, - 0xc3, 0x43, 0x27, 0x69, 0xcf, 0xe5, 0xc2, 0x11, 0xe2, 0x87, 0x1a, 0xcc, 0x85, 0x09, 0x4e, 0x34, - 0x4b, 0x45, 0xef, 0xcc, 0x57, 0xd2, 0xfb, 0x5b, 0x42, 0xef, 0x67, 0xa3, 0x9e, 0x72, 0xe4, 0x8c, - 0xae, 0x38, 0xd5, 0xbb, 0x99, 0xb0, 0x77, 0x25, 0xaf, 0x9f, 0x04, 0x73, 0x12, 0xcc, 0x4e, 0x34, - 0xa7, 0xf7, 0x5f, 0x6b, 0x4e, 0xca, 0x11, 0x2c, 0x36, 0xb9, 0x35, 0xb1, 0x8c, 0xd6, 0x2d, 0x2f, - 0xc8, 0x38, 0xef, 0x40, 0x79, 0x60, 0xd9, 0xd8, 0x74, 0x79, 0x0f, 0x49, 0x53, 0xd7, 0xe3, 0x7d, - 0x23, 0x04, 0x94, 0xac, 0x7e, 0x5b, 0x03, 0xa4, 0xf2, 0xfa, 0xe5, 0x78, 0xab, 0x29, 0x0c, 0xbc, - 0xe5, 0x3a, 0x43, 0xc7, 0x3f, 0x6e, 0x99, 0xdd, 0xd3, 0x7f, 0x57, 0x83, 0x73, 0x11, 0x8a, 0x5f, - 0x86, 0xe6, 0xf7, 0xf4, 0xcb, 0x70, 0x66, 0x15, 0x8b, 0x33, 0x5e, 0xac, 0x76, 0xb0, 0x0d, 0x48, - 0x85, 0x9e, 0xce, 0x29, 0xe6, 0x1b, 0x70, 0xe6, 0xa9, 0x33, 0x21, 0x81, 0x9c, 0x80, 0x65, 0x98, - 0x62, 0xc5, 0xac, 0xc0, 0x5e, 0xc1, 0xb7, 0x0c, 0xbd, 0xdb, 0x80, 0x54, 0xca, 0xd3, 0x50, 0x67, - 0x59, 0xff, 0x5f, 0x0d, 0xca, 0xad, 0x81, 0xe9, 0x0e, 0x85, 0x2a, 0x1f, 0xc2, 0x0c, 0xab, 0xcc, - 0xf0, 0x32, 0xeb, 0x9b, 0x61, 0x7e, 0x2a, 0x2e, 0xfb, 0x68, 0xb1, 0x3a, 0x0e, 0xa7, 0x22, 0x53, - 0xe1, 0x9d, 0xe5, 0xd5, 0x48, 0xa7, 0x79, 0x15, 0xdd, 0x86, 0x69, 0x93, 0x90, 0xd0, 0xf4, 0x5a, - 0x8d, 0x96, 0xcb, 0x28, 0x37, 0x72, 0x25, 0x32, 0x18, 0x96, 0xfe, 0x01, 0x94, 0x14, 0x09, 0x28, - 0x0f, 0xd9, 0x47, 0x6d, 0x7e, 0x4d, 0x6a, 0xad, 0x74, 0xd6, 0x9e, 0xb3, 0x12, 0x62, 0x15, 0x60, - 0xb5, 0x1d, 0x7c, 0x67, 0x12, 0x1a, 0x7b, 0x26, 0xe7, 0xc3, 0xf3, 0x96, 0xaa, 0xa1, 0x96, 0xa6, - 0x61, 0xe6, 0x75, 0x34, 0x94, 0x22, 0x7e, 0x4b, 0x83, 0x0a, 0x37, 0xcd, 0x49, 0x53, 0x33, 0xe5, - 0x9c, 0x92, 0x9a, 0x95, 0x69, 0x18, 0x1c, 0x51, 0xea, 0xf0, 0x2f, 0x1a, 0xd4, 0x56, 0x9d, 0x57, - 0x76, 0xdf, 0x35, 0x7b, 0xc1, 0x1e, 0xfc, 0x28, 0xe2, 0xce, 0xc5, 0x48, 0xa5, 0x3f, 0x82, 0x2f, - 0x07, 0x22, 0x6e, 0xad, 0xcb, 0x5a, 0x0a, 0xcb, 0xef, 0xe2, 0x53, 0xff, 0x26, 0xcc, 0x46, 0x88, - 0x88, 0x83, 0x9e, 0xb7, 0xd6, 0xd7, 0x56, 0x89, 0x43, 0x68, 0xbd, 0xb7, 0xbd, 0xd1, 0x7a, 0xb8, - 0xde, 0xe6, 0x5d, 0xd9, 0xd6, 0xc6, 0x4a, 0x7b, 0x5d, 0x3a, 0xea, 0xbe, 0x98, 0xc1, 0x7d, 0x7d, - 0x00, 0x67, 0x14, 0x85, 0x4e, 0xda, 0x1c, 0x4b, 0xd6, 0x57, 0x4a, 0xfb, 0x06, 0x5c, 0x0a, 0xa4, - 0x3d, 0x67, 0xc0, 0x0e, 0xf6, 0xd4, 0xcb, 0xda, 0x84, 0x0b, 0x2d, 0x1a, 0xe4, 0xa7, 0xa0, 0x7c, - 0x4f, 0xaf, 0x43, 0x85, 0x9f, 0x8f, 0xa2, 0x21, 0xe3, 0xcf, 0x73, 0x50, 0x15, 0xa0, 0xaf, 0x47, - 0x7f, 0x74, 0x1e, 0x66, 0x7a, 0xbb, 0xdb, 0xd6, 0x67, 0xa2, 0xa3, 0xcb, 0xbf, 0xc8, 0xf8, 0x80, - 0xc9, 0x61, 0xef, 0x34, 0xf8, 0x17, 0xba, 0xcc, 0x9e, 0x70, 0xac, 0xd9, 0x3d, 0x7c, 0x40, 0x8f, - 0x51, 0x39, 0x43, 0x0e, 0xd0, 0x72, 0x28, 0x7f, 0xcf, 0x41, 0x6f, 0xc9, 0xca, 0xfb, 0x0e, 0xb4, - 0x0c, 0x35, 0xf2, 0xbb, 0x35, 0x1a, 0x0d, 0x2c, 0xdc, 0x63, 0x0c, 0xc8, 0x05, 0x39, 0x27, 0xcf, - 0x49, 0x31, 0x04, 0x74, 0x15, 0x66, 0xe8, 0xe5, 0xd1, 0xab, 0x17, 0x48, 0x46, 0x96, 0xa8, 0x7c, - 0x18, 0xbd, 0x0d, 0x25, 0xa6, 0xf1, 0x9a, 0xfd, 0xcc, 0xc3, 0xf4, 0xb5, 0x83, 0x52, 0x49, 0x51, - 0x61, 0xe1, 0x13, 0x1a, 0xa4, 0x9d, 0xd0, 0x50, 0x13, 0xaa, 0x9e, 0xef, 0xb8, 0x66, 0x5f, 0xb8, - 0x91, 0x3e, 0x75, 0x50, 0xca, 0x7d, 0x11, 0xb0, 0x54, 0xe1, 0xe3, 0xb1, 0xe3, 0x9b, 0xe1, 0x27, - 0x0e, 0xef, 0x19, 0x2a, 0x0c, 0x7d, 0x0b, 0x2a, 0x3d, 0xb1, 0x48, 0xd6, 0xec, 0x97, 0x0e, 0x7d, - 0xd6, 0x10, 0xeb, 0xde, 0xad, 0xaa, 0x28, 0x92, 0x53, 0x98, 0x54, 0xbd, 0xc9, 0x56, 0x42, 0x14, - 0xc4, 0xdb, 0xd8, 0x26, 0xa9, 0x9d, 0x55, 0x70, 0x0a, 0x86, 0xf8, 0x44, 0xd7, 0xa1, 0xc2, 0x32, - 0xc1, 0xf3, 0xd0, 0x6a, 0x08, 0x0f, 0x92, 0x3c, 0xd6, 0x1a, 0xfb, 0x7b, 0x6d, 0x4a, 0x14, 0x5b, - 0x94, 0x57, 0x00, 0x11, 0xe8, 0xaa, 0xe5, 0x25, 0x82, 0x39, 0x71, 0xe2, 0x8a, 0xbe, 0xaf, 0x6f, - 0xc0, 0x59, 0x02, 0xc5, 0xb6, 0x6f, 0x75, 0x95, 0xa3, 0x98, 0x38, 0xec, 0x6b, 0x91, 0xc3, 0xbe, - 0xe9, 0x79, 0xaf, 0x1c, 0xb7, 0xc7, 0xd5, 0x0c, 0xbe, 0xa5, 0xb4, 0x7f, 0xd4, 0x98, 0x36, 0xcf, - 0xbc, 0xd0, 0x41, 0xfd, 0x2b, 0xf2, 0x43, 0xbf, 0x02, 0x79, 0xfe, 0x40, 0x8a, 0xd7, 0x3f, 0xcf, - 0x2f, 0xb2, 0x87, 0x59, 0x8b, 0x9c, 0xf1, 0x26, 0x83, 0x2a, 0x35, 0x3a, 0x8e, 0x4f, 0x96, 0xcb, - 0x9e, 0xe9, 0xed, 0xe1, 0xde, 0x96, 0x60, 0x1e, 0xaa, 0x0e, 0xdf, 0x37, 0x22, 0x60, 0xa9, 0xfb, - 0x5d, 0xa9, 0xfa, 0x23, 0xec, 0x1f, 0xa1, 0xba, 0xda, 0x7f, 0x38, 0x27, 0x48, 0x78, 0xdb, 0xf4, - 0x75, 0xa8, 0x7e, 0xac, 0xc1, 0x15, 0x41, 0xb6, 0xb2, 0x67, 0xda, 0x7d, 0x2c, 0x94, 0xf9, 0x45, - 0xed, 0x15, 0x9f, 0x74, 0xf6, 0x35, 0x27, 0xfd, 0x04, 0xea, 0xc1, 0xa4, 0x69, 0x2d, 0xca, 0x19, - 0xa8, 0x93, 0x18, 0x7b, 0x41, 0x90, 0xa4, 0xbf, 0xc9, 0x98, 0xeb, 0x0c, 0x82, 0x6b, 0x20, 0xf9, - 0x2d, 0x99, 0xad, 0xc3, 0x45, 0xc1, 0x8c, 0x17, 0x87, 0xc2, 0xdc, 0x62, 0x73, 0x3a, 0x92, 0x1b, - 0xf7, 0x07, 0xe1, 0x71, 0xf4, 0x52, 0x4a, 0x24, 0x09, 0xbb, 0x90, 0x4a, 0xd1, 0x92, 0xa4, 0xcc, - 0xb3, 0x1d, 0x40, 0x74, 0x56, 0x4e, 0xec, 0x31, 0x38, 0x61, 0x99, 0x08, 0xe7, 0x4b, 0x80, 0xc0, - 0x63, 0x4b, 0x20, 0x5d, 0x2a, 0x86, 0xf9, 0x40, 0x51, 0x62, 0xf6, 0x2d, 0xec, 0x0e, 0x2d, 0xcf, - 0x53, 0x1a, 0x71, 0x49, 0xe6, 0x7a, 0x13, 0x72, 0x23, 0xcc, 0x8f, 0x2f, 0xa5, 0x25, 0x24, 0xf6, - 0x84, 0x42, 0x4c, 0xe1, 0x52, 0xcc, 0x10, 0xae, 0x0a, 0x31, 0xcc, 0x21, 0x89, 0x72, 0xa2, 0x6a, - 0x8a, 0xe2, 0x7f, 0x26, 0xa5, 0xf8, 0x9f, 0x0d, 0x17, 0xff, 0x43, 0x47, 0x6a, 0x35, 0x50, 0x9d, - 0xce, 0x91, 0xba, 0xc3, 0x1c, 0x10, 0xc4, 0xb7, 0xd3, 0xe1, 0xfa, 0x07, 0x3c, 0x50, 0x9d, 0x56, - 0x3a, 0x17, 0x01, 0x3e, 0x13, 0x0e, 0xf0, 0x3a, 0x94, 0x89, 0x93, 0x0c, 0xb5, 0x2b, 0x92, 0x33, - 0x42, 0x63, 0x32, 0x18, 0xef, 0xc3, 0x5c, 0x38, 0x18, 0x9f, 0x48, 0xa9, 0x39, 0x98, 0xf6, 0x9d, - 0x7d, 0x2c, 0x72, 0x0a, 0xfb, 0x88, 0x99, 0x35, 0x08, 0xd4, 0xa7, 0x63, 0xd6, 0xef, 0x4a, 0xae, - 0x74, 0x03, 0x9e, 0x74, 0x06, 0x64, 0x39, 0x8a, 0xdb, 0x3f, 0xfb, 0x90, 0xb2, 0x3e, 0x81, 0xf3, - 0xd1, 0xe0, 0x7b, 0x3a, 0x93, 0xd8, 0x61, 0x9b, 0x33, 0x29, 0x3c, 0x9f, 0x8e, 0x80, 0x17, 0x32, - 0x4e, 0x2a, 0x41, 0xf7, 0x74, 0x78, 0xff, 0x3a, 0x34, 0x92, 0x62, 0xf0, 0xa9, 0xee, 0xc5, 0x20, - 0x24, 0x9f, 0x0e, 0xd7, 0x1f, 0x6a, 0x92, 0xad, 0xba, 0x6a, 0x3e, 0xf8, 0x2a, 0x6c, 0x45, 0xae, - 0xbb, 0x13, 0x2c, 0x9f, 0x66, 0x10, 0x2d, 0xb3, 0xc9, 0xd1, 0x52, 0x92, 0x50, 0x44, 0xb1, 0xff, - 0x64, 0xa8, 0xff, 0x3a, 0x57, 0x2f, 0x17, 0x26, 0xf3, 0xce, 0x49, 0x85, 0x91, 0xf4, 0x1c, 0x08, - 0xa3, 0x1f, 0xb1, 0xad, 0xa2, 0x26, 0xa9, 0xd3, 0x71, 0xdd, 0x6f, 0xc8, 0x04, 0x13, 0xcb, 0x63, - 0xa7, 0x23, 0xc1, 0x84, 0x85, 0xf4, 0x14, 0x76, 0x2a, 0x22, 0x6e, 0xb5, 0xa0, 0x18, 0xdc, 0xfd, - 0x95, 0x97, 0xca, 0x25, 0xc8, 0x6f, 0x6c, 0x6e, 0x6f, 0xb5, 0x56, 0xc8, 0xd5, 0x76, 0x0e, 0xf2, - 0x2b, 0x9b, 0x86, 0xf1, 0x6c, 0xab, 0x43, 0xee, 0xb6, 0xd1, 0x87, 0x4b, 0x4b, 0x3f, 0xcb, 0x42, - 0xe6, 0xc9, 0x73, 0xf4, 0x29, 0x4c, 0xb3, 0x87, 0x73, 0x47, 0xbc, 0x9f, 0x6c, 0x1c, 0xf5, 0x36, - 0x50, 0xbf, 0xf0, 0x83, 0xff, 0xfe, 0xd9, 0x1f, 0x66, 0xce, 0xe8, 0xe5, 0xe6, 0x64, 0xb9, 0xb9, - 0x3f, 0x69, 0xd2, 0x24, 0xfb, 0x40, 0xbb, 0x85, 0x3e, 0x86, 0xec, 0xd6, 0xd8, 0x47, 0xa9, 0xef, - 0x2a, 0x1b, 0xe9, 0xcf, 0x05, 0xf5, 0x73, 0x94, 0xe9, 0xac, 0x0e, 0x9c, 0xe9, 0x68, 0xec, 0x13, - 0x96, 0xdf, 0x83, 0x92, 0xfa, 0xd8, 0xef, 0xd8, 0xc7, 0x96, 0x8d, 0xe3, 0x1f, 0x12, 0xea, 0x57, - 0xa8, 0xa8, 0x0b, 0x3a, 0xe2, 0xa2, 0xd8, 0x73, 0x44, 0x75, 0x16, 0x9d, 0x03, 0x1b, 0xa5, 0x3e, - 0xc5, 0x6c, 0xa4, 0xbf, 0x2d, 0x8c, 0xcd, 0xc2, 0x3f, 0xb0, 0x09, 0xcb, 0xef, 0xf2, 0x47, 0x84, - 0x5d, 0x1f, 0x5d, 0x4d, 0x78, 0x05, 0xa6, 0xbe, 0x6e, 0x6a, 0x2c, 0xa4, 0x23, 0x70, 0x21, 0x97, - 0xa9, 0x90, 0xf3, 0xfa, 0x19, 0x2e, 0xa4, 0x1b, 0xa0, 0x3c, 0xd0, 0x6e, 0x2d, 0x75, 0x61, 0x9a, - 0x76, 0xcf, 0xd1, 0x0b, 0xf1, 0xa3, 0x91, 0xf0, 0x2e, 0x21, 0xc5, 0xd1, 0xa1, 0xbe, 0xbb, 0x3e, - 0x47, 0x05, 0x55, 0xf5, 0x22, 0x11, 0x44, 0x7b, 0xe7, 0x0f, 0xb4, 0x5b, 0x37, 0xb5, 0x3b, 0xda, - 0xd2, 0xdf, 0x4c, 0xc3, 0x34, 0xed, 0xd2, 0xa0, 0x7d, 0x00, 0xd9, 0x25, 0x8e, 0xce, 0x2e, 0xd6, - 0x80, 0x8e, 0xce, 0x2e, 0xde, 0x60, 0xd6, 0x1b, 0x54, 0xe8, 0x9c, 0x3e, 0x4b, 0x84, 0xd2, 0xe6, - 0x4f, 0x93, 0xf6, 0xba, 0x88, 0x1d, 0x7f, 0xac, 0xf1, 0x76, 0x15, 0xdb, 0x66, 0x28, 0x89, 0x5b, - 0xa8, 0x43, 0x1c, 0x5d, 0x0e, 0x09, 0x4d, 0x61, 0xfd, 0x3e, 0x15, 0xd8, 0xd4, 0x6b, 0x52, 0xa0, - 0x4b, 0x31, 0x1e, 0x68, 0xb7, 0x5e, 0xd4, 0xf5, 0xb3, 0xdc, 0xca, 0x11, 0x08, 0xfa, 0x3e, 0x54, - 0xc3, 0xbd, 0x4c, 0x74, 0x2d, 0x41, 0x56, 0xb4, 0x37, 0xda, 0xb8, 0x7e, 0x34, 0x12, 0xd7, 0x69, - 0x9e, 0xea, 0xc4, 0x85, 0x33, 0xc9, 0xfb, 0x18, 0x8f, 0x4c, 0x82, 0xc4, 0x7d, 0x80, 0xfe, 0x54, - 0xe3, 0xed, 0x68, 0xd9, 0x8a, 0x44, 0x49, 0xdc, 0x63, 0x1d, 0xcf, 0xc6, 0x8d, 0x63, 0xb0, 0xb8, - 0x12, 0x1f, 0x50, 0x25, 0xde, 0xd7, 0xe7, 0xa4, 0x12, 0xbe, 0x35, 0xc4, 0xbe, 0xc3, 0xb5, 0x78, - 0x71, 0x59, 0xbf, 0x10, 0x32, 0x4e, 0x08, 0x2a, 0x9d, 0xc5, 0x5a, 0x86, 0x89, 0xce, 0x0a, 0x75, - 0x25, 0x13, 0x9d, 0x15, 0xee, 0x37, 0x26, 0x39, 0x8b, 0x37, 0x08, 0x13, 0x9c, 0x15, 0x40, 0x96, - 0xfe, 0x3f, 0x07, 0xf9, 0x15, 0xf6, 0x3f, 0x23, 0x21, 0x07, 0x8a, 0x41, 0x13, 0x0d, 0xcd, 0x27, - 0xd5, 0xe9, 0xe5, 0x55, 0xae, 0x71, 0x35, 0x15, 0xce, 0x15, 0x7a, 0x83, 0x2a, 0x74, 0x49, 0x3f, - 0x4f, 0x24, 0xf3, 0xff, 0xdf, 0xa9, 0xc9, 0xaa, 0xb9, 0x4d, 0xb3, 0xd7, 0x23, 0x86, 0xf8, 0x4d, - 0x28, 0xab, 0x2d, 0x2d, 0xf4, 0x46, 0x62, 0x6f, 0x40, 0xed, 0x8f, 0x35, 0xf4, 0xa3, 0x50, 0xb8, - 0xe4, 0xeb, 0x54, 0xf2, 0xbc, 0x7e, 0x31, 0x41, 0xb2, 0x4b, 0x51, 0x43, 0xc2, 0x59, 0xef, 0x29, - 0x59, 0x78, 0xa8, 0xc9, 0x95, 0x2c, 0x3c, 0xdc, 0xba, 0x3a, 0x52, 0xf8, 0x98, 0xa2, 0x12, 0xe1, - 0x1e, 0x80, 0x6c, 0x0e, 0xa1, 0x44, 0x5b, 0x2a, 0x17, 0xd6, 0x68, 0x70, 0x88, 0xf7, 0x95, 0x74, - 0x9d, 0x8a, 0xe5, 0xeb, 0x2e, 0x22, 0x76, 0x60, 0x79, 0x3e, 0xdb, 0x98, 0x95, 0x50, 0x6b, 0x07, - 0x25, 0xce, 0x27, 0xdc, 0x29, 0x6a, 0x5c, 0x3b, 0x12, 0x87, 0x4b, 0xbf, 0x41, 0xa5, 0x5f, 0xd5, - 0x1b, 0x09, 0xd2, 0x47, 0x0c, 0x97, 0x2c, 0xb6, 0xcf, 0xf3, 0x50, 0x7a, 0x6a, 0x5a, 0xb6, 0x8f, - 0x6d, 0xd3, 0xee, 0x62, 0xb4, 0x0b, 0xd3, 0x34, 0x77, 0x47, 0x03, 0xb1, 0xda, 0xc9, 0x88, 0x06, - 0xe2, 0x50, 0x29, 0x5f, 0x5f, 0xa0, 0x82, 0x1b, 0xfa, 0x39, 0x22, 0x78, 0x28, 0x59, 0x37, 0x59, - 0x13, 0x40, 0xbb, 0x85, 0x5e, 0xc2, 0x0c, 0x6f, 0xe1, 0x47, 0x18, 0x85, 0x8a, 0x6a, 0x8d, 0xcb, - 0xc9, 0xc0, 0xa4, 0xb5, 0xac, 0x8a, 0xf1, 0x28, 0x1e, 0x91, 0x33, 0x01, 0x90, 0x1d, 0xa9, 0xa8, - 0x47, 0x63, 0x9d, 0xac, 0xc6, 0x42, 0x3a, 0x42, 0x92, 0x4d, 0x55, 0x99, 0xbd, 0x00, 0x97, 0xc8, - 0xfd, 0x0e, 0xe4, 0x1e, 0x9b, 0xde, 0x1e, 0x8a, 0xe4, 0x5e, 0xe5, 0xc5, 0x6d, 0xa3, 0x91, 0x04, - 0xe2, 0x52, 0xae, 0x52, 0x29, 0x17, 0x59, 0x28, 0x53, 0xa5, 0xd0, 0x37, 0xa5, 0xcc, 0x7e, 0xec, - 0xb9, 0x6d, 0xd4, 0x7e, 0xa1, 0xb7, 0xbb, 0x51, 0xfb, 0x85, 0x5f, 0xe8, 0xa6, 0xdb, 0x8f, 0x48, - 0xd9, 0x9f, 0x10, 0x39, 0x23, 0x28, 0x88, 0x87, 0xa9, 0x28, 0xf2, 0x9c, 0x27, 0xf2, 0x9a, 0xb5, - 0x31, 0x9f, 0x06, 0xe6, 0xd2, 0xae, 0x51, 0x69, 0x57, 0xf4, 0x7a, 0xcc, 0x5b, 0x1c, 0xf3, 0x81, - 0x76, 0xeb, 0x8e, 0x86, 0xbe, 0x0f, 0x20, 0x9b, 0x76, 0xb1, 0x3d, 0x18, 0x6d, 0x04, 0xc6, 0xf6, - 0x60, 0xac, 0xdf, 0xa7, 0x2f, 0x52, 0xb9, 0x37, 0xf5, 0x6b, 0x51, 0xb9, 0xbe, 0x6b, 0xda, 0xde, - 0x4b, 0xec, 0xde, 0x66, 0x75, 0x7f, 0x6f, 0xcf, 0x1a, 0x91, 0x29, 0xbb, 0x50, 0x0c, 0x6a, 0xcd, - 0xd1, 0x78, 0x1b, 0xed, 0xfe, 0x44, 0xe3, 0x6d, 0xac, 0x19, 0x13, 0x0e, 0x3c, 0xa1, 0xf5, 0x22, - 0x50, 0xc9, 0x16, 0xfc, 0xcb, 0x1a, 0xe4, 0xc8, 0x91, 0x9c, 0x1c, 0x4f, 0x64, 0xb9, 0x27, 0x3a, - 0xfb, 0x58, 0xc5, 0x3a, 0x3a, 0xfb, 0x78, 0xa5, 0x28, 0x7c, 0x3c, 0x21, 0xd7, 0xb5, 0x26, 0xab, - 0xa3, 0x90, 0x99, 0x3a, 0x50, 0x52, 0xca, 0x40, 0x28, 0x81, 0x59, 0xb8, 0x02, 0x1e, 0x4d, 0x78, - 0x09, 0x35, 0x24, 0xfd, 0x12, 0x95, 0x77, 0x8e, 0x25, 0x3c, 0x2a, 0xaf, 0xc7, 0x30, 0x88, 0x40, - 0x3e, 0x3b, 0xbe, 0xf3, 0x13, 0x66, 0x17, 0xde, 0xfd, 0x0b, 0xe9, 0x08, 0xa9, 0xb3, 0x93, 0x5b, - 0xff, 0x15, 0x94, 0xd5, 0xd2, 0x0f, 0x4a, 0x50, 0x3e, 0x52, 0xa3, 0x8f, 0x66, 0x92, 0xa4, 0xca, - 0x51, 0x38, 0xb6, 0x51, 0x91, 0xa6, 0x82, 0x46, 0x04, 0x0f, 0x20, 0xcf, 0x4b, 0x40, 0x49, 0x26, - 0x0d, 0x97, 0xf1, 0x93, 0x4c, 0x1a, 0xa9, 0x1f, 0x85, 0xcf, 0xcf, 0x54, 0x22, 0xb9, 0x8a, 0x8a, - 0x6c, 0xcd, 0xa5, 0x3d, 0xc2, 0x7e, 0x9a, 0x34, 0x59, 0xb6, 0x4d, 0x93, 0xa6, 0x54, 0x08, 0xd2, - 0xa4, 0xf5, 0xb1, 0xcf, 0xe3, 0x81, 0xb8, 0x5e, 0xa3, 0x14, 0x66, 0x6a, 0x86, 0xd4, 0x8f, 0x42, - 0x49, 0xba, 0xde, 0x48, 0x81, 0x22, 0x3d, 0x1e, 0x00, 0xc8, 0x72, 0x54, 0xf4, 0xcc, 0x9a, 0xd8, - 0x29, 0x88, 0x9e, 0x59, 0x93, 0x2b, 0x5a, 0xe1, 0x18, 0x2b, 0xe5, 0xb2, 0xdb, 0x15, 0x91, 0xfc, - 0x85, 0x06, 0x28, 0x5e, 0xb0, 0x42, 0xef, 0x24, 0x73, 0x4f, 0xec, 0x3a, 0x34, 0xde, 0x7d, 0x3d, - 0xe4, 0xa4, 0x80, 0x2c, 0x55, 0xea, 0x52, 0xec, 0xd1, 0x2b, 0xa2, 0xd4, 0xe7, 0x1a, 0x54, 0x42, - 0x45, 0x2e, 0xf4, 0x66, 0x8a, 0x4f, 0x23, 0xad, 0x87, 0xc6, 0x5b, 0xc7, 0xe2, 0x25, 0x1d, 0xe6, - 0x95, 0x15, 0x20, 0x6e, 0x35, 0xbf, 0xa3, 0x41, 0x35, 0x5c, 0x0b, 0x43, 0x29, 0xbc, 0x63, 0x1d, - 0x8b, 0xc6, 0xcd, 0xe3, 0x11, 0x8f, 0x76, 0x8f, 0xbc, 0xd0, 0x0c, 0x20, 0xcf, 0x8b, 0x66, 0x49, - 0x0b, 0x3f, 0xdc, 0xe2, 0x48, 0x5a, 0xf8, 0x91, 0x8a, 0x5b, 0xc2, 0xc2, 0x77, 0x9d, 0x01, 0x56, - 0xb6, 0x19, 0xaf, 0xa5, 0xa5, 0x49, 0x3b, 0x7a, 0x9b, 0x45, 0x0a, 0x71, 0x69, 0xd2, 0xe4, 0x36, - 0x13, 0x25, 0x33, 0x94, 0xc2, 0xec, 0x98, 0x6d, 0x16, 0xad, 0xb8, 0x25, 0x6c, 0x33, 0x2a, 0x50, - 0xd9, 0x66, 0xb2, 0x94, 0x95, 0xb4, 0xcd, 0x62, 0xdd, 0x98, 0xa4, 0x6d, 0x16, 0xaf, 0x86, 0x25, - 0xf8, 0x91, 0xca, 0x0d, 0x6d, 0xb3, 0xb3, 0x09, 0xc5, 0x2e, 0xf4, 0x6e, 0x8a, 0x11, 0x13, 0x7b, - 0x3b, 0x8d, 0xdb, 0xaf, 0x89, 0x9d, 0xba, 0xc6, 0x99, 0xf9, 0xc5, 0x1a, 0xff, 0x23, 0x0d, 0xe6, - 0x92, 0xea, 0x63, 0x28, 0x45, 0x4e, 0x4a, 0x2b, 0xa8, 0xb1, 0xf8, 0xba, 0xe8, 0x47, 0x5b, 0x2b, - 0x58, 0xf5, 0x0f, 0xfb, 0x5f, 0xb4, 0x9a, 0x2f, 0xae, 0xc2, 0x15, 0x98, 0x69, 0x8d, 0xac, 0x27, - 0xf8, 0x10, 0x9d, 0x2d, 0x64, 0x1a, 0x15, 0xc2, 0xd7, 0x71, 0xad, 0xcf, 0xe8, 0x5f, 0xbd, 0x58, - 0xc8, 0xec, 0x96, 0x01, 0x02, 0x84, 0xa9, 0x7f, 0xff, 0x72, 0x5e, 0xfb, 0xaf, 0x2f, 0xe7, 0xb5, - 0xff, 0xf9, 0x72, 0x5e, 0xfb, 0xe9, 0xff, 0xcd, 0x4f, 0xbd, 0xb8, 0xd6, 0x77, 0xa8, 0x5a, 0x8b, - 0x96, 0xd3, 0x94, 0x7f, 0x89, 0x63, 0xb9, 0xa9, 0xaa, 0xba, 0x3b, 0x43, 0xff, 0x74, 0xc6, 0xf2, - 0xcf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x82, 0x9b, 0xab, 0xde, 0x11, 0x44, 0x00, 0x00, + // 4564 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x3c, 0x5d, 0x6f, 0x5c, 0x49, + 0x56, 0xbe, 0xdd, 0xb6, 0xdb, 0x7d, 0xfa, 0xc3, 0x9d, 0x8a, 0x93, 0x74, 0x3a, 0x89, 0xe3, 0xb9, + 0x49, 0x66, 0x32, 0x99, 0x89, 0x3b, 0xb1, 0x93, 0x99, 0x25, 0x68, 0x86, 0xed, 0xd8, 0x3d, 0x89, + 0x37, 0x8e, 0xed, 0xb9, 0xee, 0x64, 0x76, 0x82, 0xb4, 0xe6, 0xba, 0xbb, 0x62, 0xdf, 0x75, 0xf7, + 0xbd, 0xbd, 0xf7, 0x5e, 0x77, 0xec, 0xe1, 0x61, 0x87, 0x85, 0x65, 0xb5, 0x20, 0xad, 0xc4, 0x20, + 0xa1, 0x15, 0x82, 0x17, 0x40, 0x82, 0x07, 0x40, 0xf0, 0xc0, 0x03, 0x02, 0x89, 0x07, 0x78, 0x80, + 0x07, 0x24, 0x24, 0xfe, 0x00, 0x0c, 0xfb, 0xc4, 0xaf, 0x58, 0xd5, 0xd7, 0xad, 0xaa, 0xfb, 0x61, + 0x67, 0xd6, 0x1e, 0xed, 0x4b, 0x7c, 0xab, 0xea, 0x7c, 0xd5, 0x39, 0x55, 0xe7, 0x54, 0x9d, 0x53, + 0x69, 0x28, 0xfa, 0xc3, 0xee, 0xfc, 0xd0, 0xf7, 0x42, 0x0f, 0x95, 0x71, 0xd8, 0xed, 0x05, 0xd8, + 0x1f, 0x61, 0x7f, 0xb8, 0xdd, 0xa8, 0x93, 0x56, 0xd3, 0x1e, 0x3a, 0xcd, 0xc1, 0xa8, 0xdb, 0x1d, + 0x6e, 0x37, 0xf7, 0x46, 0x0c, 0xae, 0xd1, 0x88, 0x46, 0xec, 0xfd, 0x70, 0x77, 0xb8, 0x4d, 0xff, + 0xf0, 0xb1, 0xb9, 0x68, 0x6c, 0x84, 0xfd, 0xc0, 0xf1, 0xdc, 0xe1, 0xb6, 0xf8, 0xe2, 0x10, 0x97, + 0x77, 0x3c, 0x6f, 0xa7, 0x8f, 0x19, 0xbe, 0xeb, 0x7a, 0xa1, 0x1d, 0x3a, 0x9e, 0x1b, 0xf0, 0x51, + 0xf6, 0xa7, 0x7b, 0x7b, 0x07, 0xbb, 0xb7, 0xbd, 0x21, 0x76, 0xed, 0xa1, 0x33, 0x5a, 0x68, 0x7a, + 0x43, 0x0a, 0x93, 0x84, 0x37, 0x7f, 0x62, 0x40, 0xd5, 0xc2, 0xc1, 0xd0, 0x73, 0x03, 0xfc, 0x18, + 0xdb, 0x3d, 0xec, 0xa3, 0x2b, 0x00, 0xdd, 0xfe, 0x7e, 0x10, 0x62, 0x7f, 0xcb, 0xe9, 0xd5, 0x8d, + 0x39, 0xe3, 0xe6, 0xb8, 0x55, 0xe4, 0x3d, 0x2b, 0x3d, 0x74, 0x09, 0x8a, 0x03, 0x3c, 0xd8, 0x66, + 0xa3, 0x39, 0x3a, 0x3a, 0xc5, 0x3a, 0x56, 0x7a, 0xa8, 0x01, 0x53, 0x3e, 0x1e, 0x39, 0x44, 0xdc, + 0x7a, 0x7e, 0xce, 0xb8, 0x99, 0xb7, 0xa2, 0x36, 0x41, 0xf4, 0xed, 0x97, 0xe1, 0x56, 0x88, 0xfd, + 0x41, 0x7d, 0x9c, 0x21, 0x92, 0x8e, 0x0e, 0xf6, 0x07, 0x0f, 0x0a, 0x3f, 0xf8, 0x87, 0x7a, 0x7e, + 0x71, 0xfe, 0x8e, 0xf9, 0xaf, 0x13, 0x50, 0xb6, 0x6c, 0x77, 0x07, 0x5b, 0xf8, 0x7b, 0xfb, 0x38, + 0x08, 0x51, 0x0d, 0xf2, 0x7b, 0xf8, 0x90, 0xca, 0x51, 0xb6, 0xc8, 0x27, 0x23, 0xe4, 0xee, 0xe0, + 0x2d, 0xec, 0x32, 0x09, 0xca, 0x84, 0x90, 0xbb, 0x83, 0xdb, 0x6e, 0x0f, 0xcd, 0xc0, 0x44, 0xdf, + 0x19, 0x38, 0x21, 0x67, 0xcf, 0x1a, 0x9a, 0x5c, 0xe3, 0x31, 0xb9, 0x96, 0x00, 0x02, 0xcf, 0x0f, + 0xb7, 0x3c, 0xbf, 0x87, 0xfd, 0xfa, 0xc4, 0x9c, 0x71, 0xb3, 0xba, 0x70, 0x7d, 0x5e, 0xb5, 0xe5, + 0xbc, 0x2a, 0xd0, 0xfc, 0xa6, 0xe7, 0x87, 0xeb, 0x04, 0xd6, 0x2a, 0x06, 0xe2, 0x13, 0x7d, 0x04, + 0x25, 0x4a, 0x24, 0xb4, 0xfd, 0x1d, 0x1c, 0xd6, 0x27, 0x29, 0x95, 0x1b, 0xc7, 0x50, 0xe9, 0x50, + 0x60, 0x8b, 0xb2, 0x67, 0xdf, 0xc8, 0x84, 0x72, 0x80, 0x7d, 0xc7, 0xee, 0x3b, 0x9f, 0xd9, 0xdb, + 0x7d, 0x5c, 0x2f, 0xcc, 0x19, 0x37, 0xa7, 0x2c, 0xad, 0x8f, 0xcc, 0x7f, 0x0f, 0x1f, 0x06, 0x5b, + 0x9e, 0xdb, 0x3f, 0xac, 0x4f, 0x51, 0x80, 0x29, 0xd2, 0xb1, 0xee, 0xf6, 0x0f, 0xa9, 0xf5, 0xbc, + 0x7d, 0x37, 0x64, 0xa3, 0x45, 0x3a, 0x5a, 0xa4, 0x3d, 0x74, 0xf8, 0x2e, 0xd4, 0x06, 0x8e, 0xbb, + 0x35, 0xf0, 0x7a, 0x5b, 0x91, 0x42, 0x80, 0x28, 0xe4, 0x61, 0xe1, 0xf7, 0xa8, 0x05, 0xee, 0x5a, + 0xd5, 0x81, 0xe3, 0x3e, 0xf5, 0x7a, 0x96, 0xd0, 0x0f, 0x41, 0xb1, 0x0f, 0x74, 0x94, 0x52, 0x1c, + 0xc5, 0x3e, 0x50, 0x51, 0xde, 0x87, 0xb3, 0x84, 0x4b, 0xd7, 0xc7, 0x76, 0x88, 0x25, 0x56, 0x59, + 0xc7, 0x3a, 0x33, 0x70, 0xdc, 0x25, 0x0a, 0xa2, 0x21, 0xda, 0x07, 0x09, 0xc4, 0x4a, 0x1c, 0xd1, + 0x3e, 0xd0, 0x11, 0xcd, 0xf7, 0xa1, 0x18, 0xd9, 0x05, 0x4d, 0xc1, 0xf8, 0xda, 0xfa, 0x5a, 0xbb, + 0x36, 0x86, 0x00, 0x26, 0x5b, 0x9b, 0x4b, 0xed, 0xb5, 0xe5, 0x9a, 0x81, 0x4a, 0x50, 0x58, 0x6e, + 0xb3, 0x46, 0xae, 0x51, 0xf8, 0x82, 0xaf, 0xb7, 0x27, 0x00, 0xd2, 0x14, 0xa8, 0x00, 0xf9, 0x27, + 0xed, 0x4f, 0x6b, 0x63, 0x04, 0xf8, 0x79, 0xdb, 0xda, 0x5c, 0x59, 0x5f, 0xab, 0x19, 0x84, 0xca, + 0x92, 0xd5, 0x6e, 0x75, 0xda, 0xb5, 0x1c, 0x81, 0x78, 0xba, 0xbe, 0x5c, 0xcb, 0xa3, 0x22, 0x4c, + 0x3c, 0x6f, 0xad, 0x3e, 0x6b, 0xd7, 0xc6, 0x23, 0x62, 0x72, 0x15, 0xff, 0x89, 0x01, 0x15, 0x6e, + 0x6e, 0xb6, 0xb7, 0xd0, 0x3d, 0x98, 0xdc, 0xa5, 0xfb, 0x8b, 0xae, 0xe4, 0xd2, 0xc2, 0xe5, 0xd8, + 0xda, 0xd0, 0xf6, 0xa0, 0xc5, 0x61, 0x91, 0x09, 0xf9, 0xbd, 0x51, 0x50, 0xcf, 0xcd, 0xe5, 0x6f, + 0x96, 0x16, 0x6a, 0xf3, 0xcc, 0x93, 0xcc, 0x3f, 0xc1, 0x87, 0xcf, 0xed, 0xfe, 0x3e, 0xb6, 0xc8, + 0x20, 0x42, 0x30, 0x3e, 0xf0, 0x7c, 0x4c, 0x17, 0xfc, 0x94, 0x45, 0xbf, 0xc9, 0x2e, 0xa0, 0x36, + 0xe7, 0x8b, 0x9d, 0x35, 0xa4, 0x78, 0xff, 0x69, 0x00, 0x6c, 0xec, 0x87, 0xd9, 0x5b, 0x6c, 0x06, + 0x26, 0x46, 0x84, 0x03, 0xdf, 0x5e, 0xac, 0x41, 0xf7, 0x16, 0xb6, 0x03, 0x1c, 0xed, 0x2d, 0xd2, + 0x40, 0x73, 0x50, 0x18, 0xfa, 0x78, 0xb4, 0xb5, 0x37, 0xa2, 0xdc, 0xa6, 0xa4, 0x9d, 0x26, 0x49, + 0xff, 0x93, 0x11, 0xba, 0x05, 0x65, 0x67, 0xc7, 0xf5, 0x7c, 0xbc, 0xc5, 0x88, 0x4e, 0xa8, 0x60, + 0x0b, 0x56, 0x89, 0x0d, 0xd2, 0x29, 0x29, 0xb0, 0x8c, 0xd5, 0x64, 0x2a, 0xec, 0x2a, 0x19, 0x93, + 0xf3, 0xf9, 0xdc, 0x80, 0x12, 0x9d, 0xcf, 0x89, 0x94, 0xbd, 0x20, 0x27, 0x92, 0xa3, 0x68, 0x09, + 0x85, 0x27, 0xa6, 0x26, 0x45, 0x70, 0x01, 0x2d, 0xe3, 0x3e, 0x0e, 0xf1, 0x49, 0x9c, 0x97, 0xa2, + 0xca, 0x7c, 0xaa, 0x2a, 0x25, 0xbf, 0xbf, 0x30, 0xe0, 0xac, 0xc6, 0xf0, 0x44, 0x53, 0xaf, 0x43, + 0xa1, 0x47, 0x89, 0x31, 0x99, 0xf2, 0x96, 0x68, 0xa2, 0x7b, 0x30, 0xc5, 0x45, 0x0a, 0xea, 0xf9, + 0xf4, 0x65, 0x28, 0xa5, 0x2c, 0x30, 0x29, 0x03, 0x29, 0xe6, 0x3f, 0xe5, 0xa0, 0xc8, 0x95, 0xb1, + 0x3e, 0x44, 0x2d, 0xa8, 0xf8, 0xac, 0xb1, 0x45, 0xe7, 0xcc, 0x65, 0x6c, 0x64, 0xfb, 0xc9, 0xc7, + 0x63, 0x56, 0x99, 0xa3, 0xd0, 0x6e, 0xf4, 0xab, 0x50, 0x12, 0x24, 0x86, 0xfb, 0x21, 0x37, 0x54, + 0x5d, 0x27, 0x20, 0x97, 0xf6, 0xe3, 0x31, 0x0b, 0x38, 0xf8, 0xc6, 0x7e, 0x88, 0x3a, 0x30, 0x23, + 0x90, 0xd9, 0xfc, 0xb8, 0x18, 0x79, 0x4a, 0x65, 0x4e, 0xa7, 0x92, 0x34, 0xe7, 0xe3, 0x31, 0x0b, + 0x71, 0x7c, 0x65, 0x10, 0x2d, 0x4b, 0x91, 0xc2, 0x03, 0x16, 0x5f, 0x12, 0x22, 0x75, 0x0e, 0x5c, + 0x4e, 0x44, 0x68, 0x6b, 0x51, 0x91, 0xad, 0x73, 0xe0, 0x46, 0x2a, 0x7b, 0x58, 0x84, 0x02, 0xef, + 0x36, 0xff, 0x23, 0x07, 0x20, 0x2c, 0xb6, 0x3e, 0x44, 0xcb, 0x50, 0xf5, 0x79, 0x4b, 0xd3, 0xdf, + 0xa5, 0x54, 0xfd, 0x71, 0x43, 0x8f, 0x59, 0x15, 0x81, 0xc4, 0xc4, 0xfd, 0x10, 0xca, 0x11, 0x15, + 0xa9, 0xc2, 0x8b, 0x29, 0x2a, 0x8c, 0x28, 0x94, 0x04, 0x02, 0x51, 0xe2, 0x27, 0x70, 0x2e, 0xc2, + 0x4f, 0xd1, 0xe2, 0x1b, 0x47, 0x68, 0x31, 0x22, 0x78, 0x56, 0x50, 0x50, 0xf5, 0xf8, 0x48, 0x11, + 0x4c, 0x2a, 0xf2, 0x62, 0x8a, 0x22, 0x19, 0x90, 0xaa, 0xc9, 0x48, 0x42, 0x4d, 0x95, 0x40, 0xc2, + 0x3e, 0xeb, 0x37, 0xff, 0x6a, 0x1c, 0x0a, 0x4b, 0xde, 0x60, 0x68, 0xfb, 0x64, 0x11, 0x4d, 0xfa, + 0x38, 0xd8, 0xef, 0x87, 0x54, 0x81, 0xd5, 0x85, 0x6b, 0x3a, 0x0f, 0x0e, 0x26, 0xfe, 0x5a, 0x14, + 0xd4, 0xe2, 0x28, 0x04, 0x99, 0x47, 0xf9, 0xdc, 0x6b, 0x20, 0xf3, 0x18, 0xcf, 0x51, 0x84, 0x43, + 0xc8, 0x4b, 0x87, 0xd0, 0x80, 0x02, 0x3f, 0xe0, 0x31, 0x67, 0xfd, 0x78, 0xcc, 0x12, 0x1d, 0xe8, + 0x6d, 0x98, 0x8e, 0x87, 0xc2, 0x09, 0x0e, 0x53, 0xed, 0xea, 0x91, 0xf3, 0x1a, 0x94, 0xb5, 0x08, + 0x3d, 0xc9, 0xe1, 0x4a, 0x03, 0x25, 0x2e, 0x9f, 0x17, 0x6e, 0x9d, 0x1c, 0x2b, 0xca, 0x8f, 0xc7, + 0x84, 0x63, 0xbf, 0x2a, 0x1c, 0xfb, 0x94, 0x1a, 0x68, 0x89, 0x5e, 0xb9, 0x8f, 0xbf, 0xae, 0x7a, + 0xad, 0x6f, 0x12, 0xe4, 0x08, 0x48, 0xba, 0x2f, 0xd3, 0x82, 0x8a, 0xa6, 0x32, 0x12, 0x23, 0xdb, + 0x1f, 0x3f, 0x6b, 0xad, 0xb2, 0x80, 0xfa, 0x88, 0xc6, 0x50, 0xab, 0x66, 0x90, 0x00, 0xbd, 0xda, + 0xde, 0xdc, 0xac, 0xe5, 0xd0, 0x79, 0x28, 0xae, 0xad, 0x77, 0xb6, 0x18, 0x54, 0xbe, 0x51, 0xf8, + 0x63, 0xe6, 0x49, 0x64, 0x7c, 0xfe, 0x34, 0xa2, 0xc9, 0x43, 0xb4, 0x12, 0x99, 0xc7, 0x94, 0xc8, + 0x6c, 0x88, 0xc8, 0x9c, 0x93, 0x91, 0x39, 0x8f, 0x10, 0x4c, 0xac, 0xb6, 0x5b, 0x9b, 0x34, 0x48, + 0x33, 0xd2, 0x8b, 0xc9, 0x68, 0xfd, 0xb0, 0x0a, 0x65, 0x66, 0x9e, 0xad, 0x7d, 0x97, 0x1c, 0x26, + 0xfe, 0xda, 0x00, 0x90, 0x1b, 0x16, 0x35, 0xa1, 0xd0, 0x65, 0x22, 0xd4, 0x0d, 0xea, 0x01, 0xcf, + 0xa5, 0x5a, 0xdc, 0x12, 0x50, 0xe8, 0x2e, 0x14, 0x82, 0xfd, 0x6e, 0x17, 0x07, 0x22, 0x72, 0x5f, + 0x88, 0x3b, 0x61, 0xee, 0x10, 0x2d, 0x01, 0x47, 0x50, 0x5e, 0xda, 0x4e, 0x7f, 0x9f, 0xc6, 0xf1, + 0xa3, 0x51, 0x38, 0x9c, 0xf4, 0xb1, 0x7f, 0x66, 0x40, 0x49, 0xd9, 0x16, 0xbf, 0x60, 0x08, 0xb8, + 0x0c, 0x45, 0x2a, 0x0c, 0xee, 0xf1, 0x20, 0x30, 0x65, 0xc9, 0x0e, 0xf4, 0x1e, 0x14, 0xc5, 0x4e, + 0x12, 0x71, 0xa0, 0x9e, 0x4e, 0x76, 0x7d, 0x68, 0x49, 0x50, 0x29, 0x64, 0x07, 0xce, 0x50, 0x3d, + 0x75, 0xc9, 0xed, 0x43, 0x68, 0x56, 0x3d, 0x96, 0x1b, 0xb1, 0x63, 0x79, 0x03, 0xa6, 0x86, 0xbb, + 0x87, 0x81, 0xd3, 0xb5, 0xfb, 0x5c, 0x9c, 0xa8, 0x2d, 0xa9, 0x6e, 0x02, 0x52, 0xa9, 0x9e, 0x44, + 0x01, 0x92, 0xe8, 0x79, 0x28, 0x3d, 0xb6, 0x83, 0x5d, 0x2e, 0xa4, 0xec, 0xbf, 0x07, 0x15, 0xd2, + 0xff, 0xe4, 0xf9, 0x6b, 0x88, 0x2f, 0xb0, 0x16, 0xcd, 0x7f, 0x36, 0xa0, 0x2a, 0xd0, 0x4e, 0x64, + 0x20, 0x04, 0xe3, 0xbb, 0x76, 0xb0, 0x4b, 0x95, 0x51, 0xb1, 0xe8, 0x37, 0x7a, 0x1b, 0x6a, 0x5d, + 0x36, 0xff, 0xad, 0xd8, 0xbd, 0x6b, 0x9a, 0xf7, 0x47, 0x7b, 0xff, 0x5d, 0xa8, 0x10, 0x94, 0x2d, + 0xfd, 0x1e, 0x24, 0xb6, 0xf1, 0x7b, 0x56, 0x79, 0x97, 0xce, 0x39, 0x2e, 0xbe, 0x0d, 0x65, 0xa6, + 0x8c, 0xd3, 0x96, 0x5d, 0xea, 0xb5, 0x01, 0xd3, 0x9b, 0xae, 0x3d, 0x0c, 0x76, 0xbd, 0x30, 0xa6, + 0xf3, 0x45, 0xf3, 0xef, 0x0d, 0xa8, 0xc9, 0xc1, 0x13, 0xc9, 0xf0, 0x16, 0x4c, 0xfb, 0x78, 0x60, + 0x3b, 0xae, 0xe3, 0xee, 0x6c, 0x6d, 0x1f, 0x86, 0x38, 0xe0, 0xd7, 0xd7, 0x6a, 0xd4, 0xfd, 0x90, + 0xf4, 0x12, 0x61, 0xb7, 0xfb, 0xde, 0x36, 0x77, 0xd2, 0xf4, 0x1b, 0xbd, 0xa1, 0x7b, 0xe9, 0xa2, + 0xd4, 0x9b, 0xe8, 0x97, 0x32, 0xff, 0x34, 0x07, 0xe5, 0x4f, 0xec, 0xb0, 0x2b, 0x56, 0x10, 0x5a, + 0x81, 0x6a, 0xe4, 0xc6, 0x69, 0x0f, 0x97, 0x3b, 0x76, 0xe0, 0xa0, 0x38, 0xe2, 0x5e, 0x23, 0x0e, + 0x1c, 0x95, 0xae, 0xda, 0x41, 0x49, 0xd9, 0x6e, 0x17, 0xf7, 0x23, 0x52, 0xb9, 0x6c, 0x52, 0x14, + 0x50, 0x25, 0xa5, 0x76, 0xa0, 0x6f, 0x43, 0x6d, 0xe8, 0x7b, 0x3b, 0x3e, 0x0e, 0x82, 0x88, 0x18, + 0x0b, 0xe1, 0x66, 0x0a, 0xb1, 0x0d, 0x0e, 0x1a, 0x3b, 0xc5, 0xdc, 0x7b, 0x3c, 0x66, 0x4d, 0x0f, + 0xf5, 0x31, 0xe9, 0x58, 0xa7, 0xe5, 0x79, 0x8f, 0x79, 0xd6, 0x1f, 0xe5, 0x01, 0x25, 0xa7, 0xf9, + 0x55, 0x8f, 0xc9, 0x37, 0xa0, 0x1a, 0x84, 0xb6, 0x9f, 0x58, 0xf3, 0x15, 0xda, 0x1b, 0xad, 0xf8, + 0xb7, 0x20, 0x92, 0x6c, 0xcb, 0xf5, 0x42, 0xe7, 0xe5, 0x21, 0xbb, 0xa0, 0x58, 0x55, 0xd1, 0xbd, + 0x46, 0x7b, 0xd1, 0x1a, 0x14, 0x5e, 0x3a, 0xfd, 0x10, 0xfb, 0x41, 0x7d, 0x62, 0x2e, 0x7f, 0xb3, + 0xba, 0xf0, 0xce, 0x71, 0x86, 0x99, 0xff, 0x88, 0xc2, 0x77, 0x0e, 0x87, 0xea, 0xe9, 0x97, 0x13, + 0x51, 0x8f, 0xf1, 0x93, 0xe9, 0x37, 0x22, 0x13, 0xa6, 0x5e, 0x11, 0xa2, 0x5b, 0x4e, 0x8f, 0xc6, + 0xe2, 0x68, 0x1f, 0xde, 0xb3, 0x0a, 0x74, 0x60, 0xa5, 0x87, 0xae, 0xc1, 0xd4, 0x4b, 0xdf, 0xde, + 0x19, 0x60, 0x37, 0x64, 0xb7, 0x7c, 0x09, 0x13, 0x0d, 0x98, 0xf3, 0x00, 0x52, 0x14, 0x12, 0xf9, + 0xd6, 0xd6, 0x37, 0x9e, 0x75, 0x6a, 0x63, 0xa8, 0x0c, 0x53, 0x6b, 0xeb, 0xcb, 0xed, 0xd5, 0x36, + 0x89, 0x8d, 0x22, 0xe6, 0xdd, 0x95, 0x9b, 0xae, 0x25, 0x0c, 0xa1, 0xad, 0x09, 0x55, 0x2e, 0x43, + 0xbf, 0x74, 0x0b, 0xb9, 0x04, 0x89, 0xbb, 0xe6, 0x55, 0x98, 0x49, 0x5b, 0x1a, 0x02, 0xe0, 0x9e, + 0xf9, 0x6f, 0x39, 0xa8, 0xf0, 0x8d, 0x70, 0xa2, 0x9d, 0x7b, 0x51, 0x91, 0x8a, 0x5f, 0x4f, 0x84, + 0x92, 0xea, 0x50, 0x60, 0x1b, 0xa4, 0xc7, 0xef, 0xbf, 0xa2, 0x49, 0x9c, 0x33, 0x5b, 0xef, 0xb8, + 0xc7, 0xcd, 0x1e, 0xb5, 0x53, 0xdd, 0xe6, 0x44, 0xa6, 0xdb, 0x8c, 0x36, 0x9c, 0x1d, 0xf0, 0x83, + 0x55, 0x51, 0x9a, 0xa2, 0x2c, 0x36, 0x15, 0x19, 0xd4, 0x6c, 0x56, 0xc8, 0xb0, 0x19, 0xba, 0x01, + 0x93, 0x78, 0x84, 0xdd, 0x30, 0xa8, 0x97, 0x68, 0x20, 0xad, 0x88, 0x0b, 0x55, 0x9b, 0xf4, 0x5a, + 0x7c, 0x50, 0x9a, 0xea, 0x43, 0x38, 0x43, 0xef, 0xbb, 0x8f, 0x7c, 0xdb, 0x55, 0xef, 0xec, 0x9d, + 0xce, 0x2a, 0x0f, 0x3b, 0xe4, 0x13, 0x55, 0x21, 0xb7, 0xb2, 0xcc, 0xf5, 0x93, 0x5b, 0x59, 0x96, + 0xf8, 0xbf, 0x6f, 0x00, 0x52, 0x09, 0x9c, 0xc8, 0x16, 0x31, 0x2e, 0x42, 0x8e, 0xbc, 0x94, 0x63, + 0x06, 0x26, 0xb0, 0xef, 0x7b, 0x3e, 0x73, 0x94, 0x16, 0x6b, 0x48, 0x69, 0x6e, 0x73, 0x61, 0x2c, + 0x3c, 0xf2, 0xf6, 0x22, 0x0f, 0xc0, 0xc8, 0x1a, 0x49, 0xe1, 0x3b, 0x70, 0x56, 0x03, 0x3f, 0x9d, + 0x10, 0xbf, 0x0e, 0xd3, 0x94, 0xea, 0xd2, 0x2e, 0xee, 0xee, 0x0d, 0x3d, 0xc7, 0x4d, 0x48, 0x80, + 0xae, 0x11, 0xdf, 0x25, 0xc2, 0x05, 0x99, 0x22, 0x9b, 0x73, 0x39, 0xea, 0xec, 0x74, 0x56, 0xe5, + 0x52, 0xdf, 0x86, 0xf3, 0x31, 0x82, 0x62, 0x66, 0xbf, 0x06, 0xa5, 0x6e, 0xd4, 0x19, 0xf0, 0x13, + 0xe4, 0x15, 0x5d, 0xdc, 0x38, 0xaa, 0x8a, 0x21, 0x79, 0x7c, 0x1b, 0x2e, 0x24, 0x78, 0x9c, 0x86, + 0x3a, 0xee, 0x99, 0x77, 0xe0, 0x1c, 0xa5, 0xfc, 0x04, 0xe3, 0x61, 0xab, 0xef, 0x8c, 0x8e, 0x37, + 0xcb, 0x21, 0x9f, 0xaf, 0x82, 0xf1, 0xf5, 0x2e, 0x2b, 0xc9, 0xba, 0xcd, 0x59, 0x77, 0x9c, 0x01, + 0xee, 0x78, 0xab, 0xd9, 0xd2, 0x92, 0x40, 0xbe, 0x87, 0x0f, 0x03, 0x7e, 0x7c, 0xa4, 0xdf, 0xd2, + 0x7b, 0xfd, 0xad, 0xc1, 0xd5, 0xa9, 0xd2, 0xf9, 0x9a, 0xb7, 0xc6, 0x2c, 0xc0, 0x0e, 0xd9, 0x83, + 0xb8, 0x47, 0x06, 0x58, 0x6e, 0x4e, 0xe9, 0x89, 0x04, 0x26, 0x51, 0xa8, 0x1c, 0x17, 0xf8, 0x0a, + 0xdf, 0x38, 0xf4, 0x9f, 0x20, 0x71, 0x52, 0x7a, 0x13, 0x4a, 0x74, 0x64, 0x33, 0xb4, 0xc3, 0xfd, + 0x20, 0xcb, 0x72, 0x8b, 0xe6, 0x8f, 0x0c, 0xbe, 0xa3, 0x04, 0x9d, 0x13, 0xcd, 0xf9, 0x2e, 0x4c, + 0xd2, 0x1b, 0xa2, 0xb8, 0xe9, 0x5c, 0x4c, 0x59, 0xd8, 0x4c, 0x22, 0x8b, 0x03, 0x2a, 0xe7, 0x24, + 0x03, 0x26, 0x9f, 0xd2, 0xca, 0x81, 0x22, 0xed, 0xb8, 0xb0, 0x9c, 0x6b, 0x0f, 0x58, 0xfa, 0xb1, + 0x68, 0xd1, 0x6f, 0x7a, 0x21, 0xc0, 0xd8, 0x7f, 0x66, 0xad, 0xb2, 0x1b, 0x48, 0xd1, 0x8a, 0xda, + 0x44, 0xb1, 0xdd, 0xbe, 0x83, 0xdd, 0x90, 0x8e, 0x8e, 0xd3, 0x51, 0xa5, 0x07, 0xdd, 0x80, 0xa2, + 0x13, 0xac, 0x62, 0xdb, 0x77, 0x79, 0x8a, 0x5f, 0x71, 0xcc, 0x72, 0x44, 0xae, 0xb1, 0xef, 0x40, + 0x8d, 0x49, 0xd6, 0xea, 0xf5, 0x94, 0xd3, 0x7e, 0xc4, 0xdf, 0x88, 0xf1, 0xd7, 0xe8, 0xe7, 0x8e, + 0xa7, 0xff, 0x77, 0x06, 0x9c, 0x51, 0x18, 0x9c, 0xc8, 0x04, 0xef, 0xc2, 0x24, 0xab, 0xbf, 0xf0, + 0xa3, 0xe0, 0x8c, 0x8e, 0xc5, 0xd8, 0x58, 0x1c, 0x06, 0xcd, 0x43, 0x81, 0x7d, 0x89, 0x6b, 0x5c, + 0x3a, 0xb8, 0x00, 0x92, 0x22, 0xcf, 0xc3, 0x59, 0x3e, 0x86, 0x07, 0x5e, 0xda, 0x9e, 0x1b, 0xd7, + 0x3d, 0xc4, 0x0f, 0x0d, 0x98, 0xd1, 0x11, 0x4e, 0x34, 0x4b, 0x45, 0xee, 0xdc, 0x57, 0x92, 0xfb, + 0x5b, 0x42, 0xee, 0x67, 0xc3, 0x9e, 0x72, 0xe4, 0x8c, 0xaf, 0x38, 0xd5, 0xba, 0x39, 0xdd, 0xba, + 0x92, 0xd6, 0x4f, 0xa2, 0x39, 0x09, 0x62, 0x27, 0x9a, 0xd3, 0xfb, 0xaf, 0x35, 0x27, 0xe5, 0x08, + 0x96, 0x98, 0xdc, 0x8a, 0x58, 0x46, 0xab, 0x4e, 0x10, 0x45, 0x9c, 0x77, 0xa0, 0xdc, 0x77, 0x5c, + 0x6c, 0xfb, 0xbc, 0x86, 0x64, 0xa8, 0xeb, 0xf1, 0xbe, 0xa5, 0x0d, 0x4a, 0x52, 0xbf, 0x6d, 0x00, + 0x52, 0x69, 0xfd, 0x72, 0xac, 0xd5, 0x14, 0x0a, 0xde, 0xf0, 0xbd, 0x81, 0x17, 0x1e, 0xb7, 0xcc, + 0xee, 0x99, 0xbf, 0x6b, 0xc0, 0xb9, 0x18, 0xc6, 0x2f, 0x43, 0xf2, 0x7b, 0xe6, 0x65, 0x38, 0xb3, + 0x8c, 0xc5, 0x19, 0x2f, 0x91, 0x3b, 0xd8, 0x04, 0xa4, 0x8e, 0x9e, 0xce, 0x29, 0xe6, 0x1b, 0x70, + 0xe6, 0xa9, 0x37, 0x22, 0x8e, 0x9c, 0x0c, 0x4b, 0x37, 0xc5, 0x92, 0x59, 0x91, 0xbe, 0xa2, 0xb6, + 0x74, 0xbd, 0x9b, 0x80, 0x54, 0xcc, 0xd3, 0x10, 0x67, 0xd1, 0xfc, 0x5f, 0x03, 0xca, 0xad, 0xbe, + 0xed, 0x0f, 0x84, 0x28, 0x1f, 0xc2, 0x24, 0xcb, 0xcc, 0xf0, 0x34, 0xeb, 0x9b, 0x3a, 0x3d, 0x15, + 0x96, 0x35, 0x5a, 0x2c, 0x8f, 0xc3, 0xb1, 0xc8, 0x54, 0x78, 0x65, 0x79, 0x39, 0x56, 0x69, 0x5e, + 0x46, 0xb7, 0x61, 0xc2, 0x26, 0x28, 0x34, 0xbc, 0x56, 0xe3, 0xe9, 0x32, 0x4a, 0x8d, 0x5c, 0x89, + 0x2c, 0x06, 0x65, 0x7e, 0x00, 0x25, 0x85, 0x03, 0x2a, 0x40, 0xfe, 0x51, 0x9b, 0x5f, 0x93, 0x5a, + 0x4b, 0x9d, 0x95, 0xe7, 0x2c, 0x85, 0x58, 0x05, 0x58, 0x6e, 0x47, 0xed, 0x5c, 0x4a, 0x61, 0xcf, + 0xe6, 0x74, 0x78, 0xdc, 0x52, 0x25, 0x34, 0xb2, 0x24, 0xcc, 0xbd, 0x8e, 0x84, 0x92, 0xc5, 0x6f, + 0x19, 0x50, 0xe1, 0xaa, 0x39, 0x69, 0x68, 0xa6, 0x94, 0x33, 0x42, 0xb3, 0x32, 0x0d, 0x8b, 0x03, + 0x4a, 0x19, 0xfe, 0xc5, 0x80, 0xda, 0xb2, 0xf7, 0xca, 0xdd, 0xf1, 0xed, 0x5e, 0xb4, 0x07, 0x3f, + 0x8a, 0x99, 0x73, 0x3e, 0x96, 0xe9, 0x8f, 0xc1, 0xcb, 0x8e, 0x98, 0x59, 0xeb, 0x32, 0x97, 0xc2, + 0xe2, 0xbb, 0x68, 0x9a, 0xdf, 0x84, 0xe9, 0x18, 0x12, 0x31, 0xd0, 0xf3, 0xd6, 0xea, 0xca, 0x32, + 0x31, 0x08, 0xcd, 0xf7, 0xb6, 0xd7, 0x5a, 0x0f, 0x57, 0xdb, 0xbc, 0x2a, 0xdb, 0x5a, 0x5b, 0x6a, + 0xaf, 0x4a, 0x43, 0xdd, 0x17, 0x33, 0xb8, 0x6f, 0xf6, 0xe1, 0x8c, 0x22, 0xd0, 0x49, 0x8b, 0x63, + 0xe9, 0xf2, 0x4a, 0x6e, 0xdf, 0x80, 0x4b, 0x11, 0xb7, 0xe7, 0x6c, 0xb0, 0x83, 0x03, 0xf5, 0xb2, + 0x36, 0xe2, 0x4c, 0x8b, 0x16, 0xf9, 0x14, 0x98, 0xef, 0x99, 0x75, 0xa8, 0xf0, 0xf3, 0x51, 0xdc, + 0x65, 0xfc, 0xf9, 0x38, 0x54, 0xc5, 0xd0, 0xd7, 0x23, 0x3f, 0x3a, 0x0f, 0x93, 0xbd, 0xed, 0x4d, + 0xe7, 0x33, 0x51, 0xd1, 0xe5, 0x2d, 0xd2, 0xdf, 0x67, 0x7c, 0xd8, 0x3b, 0x0d, 0xde, 0x42, 0x97, + 0xd9, 0x13, 0x8e, 0x15, 0xb7, 0x87, 0x0f, 0xe8, 0x31, 0x6a, 0xdc, 0x92, 0x1d, 0x34, 0x1d, 0xca, + 0xdf, 0x73, 0xd0, 0x5b, 0xb2, 0xf2, 0xbe, 0x03, 0x2d, 0x42, 0x8d, 0x7c, 0xb7, 0x86, 0xc3, 0xbe, + 0x83, 0x7b, 0x8c, 0x00, 0xb9, 0x20, 0x8f, 0xcb, 0x73, 0x52, 0x02, 0x00, 0x5d, 0x85, 0x49, 0x7a, + 0x79, 0x0c, 0xea, 0x53, 0x24, 0x22, 0x4b, 0x50, 0xde, 0x8d, 0xde, 0x86, 0x12, 0x93, 0x78, 0xc5, + 0x7d, 0x16, 0x60, 0xfa, 0xda, 0x41, 0xc9, 0xa4, 0xa8, 0x63, 0xfa, 0x09, 0x0d, 0xb2, 0x4e, 0x68, + 0xa8, 0x09, 0xd5, 0x20, 0xf4, 0x7c, 0x7b, 0x47, 0x98, 0x91, 0x3e, 0x75, 0x50, 0xd2, 0x7d, 0xb1, + 0x61, 0x29, 0xc2, 0xc7, 0xfb, 0x5e, 0x68, 0xeb, 0x4f, 0x1c, 0xde, 0xb3, 0xd4, 0x31, 0xf4, 0x2d, + 0xa8, 0xf4, 0xc4, 0x22, 0x59, 0x71, 0x5f, 0x7a, 0xf4, 0x59, 0x43, 0xa2, 0x7a, 0xb7, 0xac, 0x82, + 0x48, 0x4a, 0x3a, 0xaa, 0x7a, 0x93, 0xad, 0x68, 0x18, 0xc4, 0xda, 0xd8, 0x25, 0xa1, 0x9d, 0x65, + 0x70, 0xa6, 0x2c, 0xd1, 0x44, 0xd7, 0xa1, 0xc2, 0x22, 0xc1, 0x73, 0x6d, 0x35, 0xe8, 0x9d, 0x24, + 0x8e, 0xb5, 0xf6, 0xc3, 0xdd, 0x36, 0x45, 0x4a, 0x2c, 0xca, 0x2b, 0x80, 0xc8, 0xe8, 0xb2, 0x13, + 0xa4, 0x0e, 0x73, 0xe4, 0xd4, 0x15, 0x7d, 0xdf, 0x5c, 0x83, 0xb3, 0x64, 0x14, 0xbb, 0xa1, 0xd3, + 0x55, 0x8e, 0x62, 0xe2, 0xb0, 0x6f, 0xc4, 0x0e, 0xfb, 0x76, 0x10, 0xbc, 0xf2, 0xfc, 0x1e, 0x17, + 0x33, 0x6a, 0x4b, 0x6e, 0xff, 0x68, 0x30, 0x69, 0x9e, 0x05, 0xda, 0x41, 0xfd, 0x2b, 0xd2, 0x43, + 0xbf, 0x02, 0x05, 0xfe, 0x40, 0x8a, 0xe7, 0x3f, 0xcf, 0xcf, 0xb3, 0x87, 0x59, 0xf3, 0x9c, 0xf0, + 0x3a, 0x1b, 0x55, 0x72, 0x74, 0x1c, 0x9e, 0x2c, 0x97, 0x5d, 0x3b, 0xd8, 0xc5, 0xbd, 0x0d, 0x41, + 0x5c, 0xcb, 0x0e, 0xdf, 0xb7, 0x62, 0xc3, 0x52, 0xf6, 0xbb, 0x52, 0xf4, 0x47, 0x38, 0x3c, 0x42, + 0x74, 0xb5, 0xfe, 0x70, 0x4e, 0xa0, 0xf0, 0xb2, 0xe9, 0xeb, 0x60, 0xfd, 0xd8, 0x80, 0x2b, 0x02, + 0x6d, 0x69, 0xd7, 0x76, 0x77, 0xb0, 0x10, 0xe6, 0x17, 0xd5, 0x57, 0x72, 0xd2, 0xf9, 0xd7, 0x9c, + 0xf4, 0x13, 0xa8, 0x47, 0x93, 0xa6, 0xb9, 0x28, 0xaf, 0xaf, 0x4e, 0x62, 0x3f, 0x88, 0x9c, 0x24, + 0xfd, 0x26, 0x7d, 0xbe, 0xd7, 0x8f, 0xae, 0x81, 0xe4, 0x5b, 0x12, 0x5b, 0x85, 0x8b, 0x82, 0x18, + 0x4f, 0x0e, 0xe9, 0xd4, 0x12, 0x73, 0x3a, 0x92, 0x1a, 0xb7, 0x07, 0xa1, 0x71, 0xf4, 0x52, 0x4a, + 0x45, 0xd1, 0x4d, 0x48, 0xb9, 0x18, 0x69, 0x5c, 0x66, 0xd9, 0x0e, 0x20, 0x32, 0x2b, 0x27, 0xf6, + 0xc4, 0x38, 0x21, 0x99, 0x3a, 0xce, 0x97, 0x00, 0x19, 0x4f, 0x2c, 0x81, 0x6c, 0xae, 0x18, 0x66, + 0x23, 0x41, 0x89, 0xda, 0x37, 0xb0, 0x3f, 0x70, 0x82, 0x40, 0x29, 0xc4, 0xa5, 0xa9, 0xeb, 0x4d, + 0x18, 0x1f, 0x62, 0x7e, 0x7c, 0x29, 0x2d, 0x20, 0xb1, 0x27, 0x14, 0x64, 0x3a, 0x2e, 0xd9, 0x0c, + 0xe0, 0xaa, 0x60, 0xc3, 0x0c, 0x92, 0xca, 0x27, 0x2e, 0xa6, 0x48, 0xfe, 0xe7, 0x32, 0x92, 0xff, + 0x79, 0x3d, 0xf9, 0xaf, 0x1d, 0xa9, 0x55, 0x47, 0x75, 0x3a, 0x47, 0xea, 0x0e, 0x33, 0x40, 0xe4, + 0xdf, 0x4e, 0x87, 0xea, 0x1f, 0x70, 0x47, 0x75, 0x5a, 0xe1, 0x5c, 0x38, 0xf8, 0x9c, 0xee, 0xe0, + 0x4d, 0x28, 0x13, 0x23, 0x59, 0x6a, 0x55, 0x64, 0xdc, 0xd2, 0xfa, 0xa4, 0x33, 0xde, 0x83, 0x19, + 0xdd, 0x19, 0x9f, 0x48, 0xa8, 0x19, 0x98, 0x08, 0xbd, 0x3d, 0x2c, 0x62, 0x0a, 0x6b, 0x24, 0xd4, + 0x1a, 0x39, 0xea, 0xd3, 0x51, 0xeb, 0x77, 0x25, 0x55, 0xba, 0x01, 0x4f, 0x3a, 0x03, 0xb2, 0x1c, + 0xc5, 0xed, 0x9f, 0x35, 0x24, 0xaf, 0x4f, 0xe0, 0x7c, 0xdc, 0xf9, 0x9e, 0xce, 0x24, 0xb6, 0xd8, + 0xe6, 0x4c, 0x73, 0xcf, 0xa7, 0xc3, 0xe0, 0x85, 0xf4, 0x93, 0x8a, 0xd3, 0x3d, 0x1d, 0xda, 0xbf, + 0x0e, 0x8d, 0x34, 0x1f, 0x7c, 0xaa, 0x7b, 0x31, 0x72, 0xc9, 0xa7, 0x43, 0xf5, 0x87, 0x86, 0x24, + 0xab, 0xae, 0x9a, 0x0f, 0xbe, 0x0a, 0x59, 0x11, 0xeb, 0xee, 0x44, 0xcb, 0xa7, 0x19, 0x79, 0xcb, + 0x7c, 0xba, 0xb7, 0x94, 0x28, 0x14, 0x50, 0xec, 0x3f, 0xe9, 0xea, 0xbf, 0xce, 0xd5, 0xcb, 0x99, + 0xc9, 0xb8, 0x73, 0x52, 0x66, 0x24, 0x3c, 0x47, 0xcc, 0x68, 0x23, 0xb1, 0x55, 0xd4, 0x20, 0x75, + 0x3a, 0xa6, 0xfb, 0x0d, 0x19, 0x60, 0x12, 0x71, 0xec, 0x74, 0x38, 0xd8, 0x30, 0x97, 0x1d, 0xc2, + 0x4e, 0x85, 0xc5, 0xad, 0x16, 0x14, 0xa3, 0xbb, 0xbf, 0xf2, 0x52, 0xb9, 0x04, 0x85, 0xb5, 0xf5, + 0xcd, 0x8d, 0xd6, 0x12, 0xb9, 0xda, 0xce, 0x40, 0x61, 0x69, 0xdd, 0xb2, 0x9e, 0x6d, 0x74, 0xc8, + 0xdd, 0x36, 0xfe, 0x70, 0x69, 0xe1, 0x67, 0x79, 0xc8, 0x3d, 0x79, 0x8e, 0x3e, 0x85, 0x09, 0xf6, + 0x70, 0xee, 0x88, 0xf7, 0x93, 0x8d, 0xa3, 0xde, 0x06, 0x9a, 0x17, 0x7e, 0xf0, 0xdf, 0x3f, 0xfb, + 0xc3, 0xdc, 0x19, 0xb3, 0xdc, 0x1c, 0x2d, 0x36, 0xf7, 0x46, 0x4d, 0x1a, 0x64, 0x1f, 0x18, 0xb7, + 0xd0, 0xc7, 0x90, 0xdf, 0xd8, 0x0f, 0x51, 0xe6, 0xbb, 0xca, 0x46, 0xf6, 0x73, 0x41, 0xf3, 0x1c, + 0x25, 0x3a, 0x6d, 0x02, 0x27, 0x3a, 0xdc, 0x0f, 0x09, 0xc9, 0xef, 0x41, 0x49, 0x7d, 0xec, 0x77, + 0xec, 0x63, 0xcb, 0xc6, 0xf1, 0x0f, 0x09, 0xcd, 0x2b, 0x94, 0xd5, 0x05, 0x13, 0x71, 0x56, 0xec, + 0x39, 0xa2, 0x3a, 0x8b, 0xce, 0x81, 0x8b, 0x32, 0x9f, 0x62, 0x36, 0xb2, 0xdf, 0x16, 0x26, 0x66, + 0x11, 0x1e, 0xb8, 0x84, 0xe4, 0x77, 0xf9, 0x23, 0xc2, 0x6e, 0x88, 0xae, 0xa6, 0xbc, 0x02, 0x53, + 0x5f, 0x37, 0x35, 0xe6, 0xb2, 0x01, 0x38, 0x93, 0xcb, 0x94, 0xc9, 0x79, 0xf3, 0x0c, 0x67, 0xd2, + 0x8d, 0x40, 0x1e, 0x18, 0xb7, 0x16, 0xba, 0x30, 0x41, 0xab, 0xe7, 0xe8, 0x85, 0xf8, 0x68, 0xa4, + 0xbc, 0x4b, 0xc8, 0x30, 0xb4, 0x56, 0x77, 0x37, 0x67, 0x28, 0xa3, 0xaa, 0x59, 0x24, 0x8c, 0x68, + 0xed, 0xfc, 0x81, 0x71, 0xeb, 0xa6, 0x71, 0xc7, 0x58, 0xf8, 0x9b, 0x09, 0x98, 0xa0, 0x55, 0x1a, + 0xb4, 0x07, 0x20, 0xab, 0xc4, 0xf1, 0xd9, 0x25, 0x0a, 0xd0, 0xf1, 0xd9, 0x25, 0x0b, 0xcc, 0x66, + 0x83, 0x32, 0x9d, 0x31, 0xa7, 0x09, 0x53, 0x5a, 0xfc, 0x69, 0xd2, 0x5a, 0x17, 0xd1, 0xe3, 0x8f, + 0x0d, 0x5e, 0xae, 0x62, 0xdb, 0x0c, 0xa5, 0x51, 0xd3, 0x2a, 0xc4, 0xf1, 0xe5, 0x90, 0x52, 0x14, + 0x36, 0xef, 0x53, 0x86, 0x4d, 0xb3, 0x26, 0x19, 0xfa, 0x14, 0xe2, 0x81, 0x71, 0xeb, 0x45, 0xdd, + 0x3c, 0xcb, 0xb5, 0x1c, 0x1b, 0x41, 0xdf, 0x87, 0xaa, 0x5e, 0xcb, 0x44, 0xd7, 0x52, 0x78, 0xc5, + 0x6b, 0xa3, 0x8d, 0xeb, 0x47, 0x03, 0x71, 0x99, 0x66, 0xa9, 0x4c, 0x9c, 0x39, 0xe3, 0xbc, 0x87, + 0xf1, 0xd0, 0x26, 0x40, 0xdc, 0x06, 0xe8, 0x4f, 0x0d, 0x5e, 0x8e, 0x96, 0xa5, 0x48, 0x94, 0x46, + 0x3d, 0x51, 0xf1, 0x6c, 0xdc, 0x38, 0x06, 0x8a, 0x0b, 0xf1, 0x01, 0x15, 0xe2, 0x7d, 0x73, 0x46, + 0x0a, 0x11, 0x3a, 0x03, 0x1c, 0x7a, 0x5c, 0x8a, 0x17, 0x97, 0xcd, 0x0b, 0x9a, 0x72, 0xb4, 0x51, + 0x69, 0x2c, 0x56, 0x32, 0x4c, 0x35, 0x96, 0x56, 0x95, 0x4c, 0x35, 0x96, 0x5e, 0x6f, 0x4c, 0x33, + 0x16, 0x2f, 0x10, 0xa6, 0x18, 0x2b, 0x1a, 0x59, 0xf8, 0xff, 0x71, 0x28, 0x2c, 0xb1, 0xff, 0x8c, + 0x84, 0x3c, 0x28, 0x46, 0x45, 0x34, 0x34, 0x9b, 0x96, 0xa7, 0x97, 0x57, 0xb9, 0xc6, 0xd5, 0xcc, + 0x71, 0x2e, 0xd0, 0x1b, 0x54, 0xa0, 0x4b, 0xe6, 0x79, 0xc2, 0x99, 0xff, 0x7f, 0xa7, 0x26, 0xcb, + 0xe6, 0x36, 0xed, 0x5e, 0x8f, 0x28, 0xe2, 0x37, 0xa1, 0xac, 0x96, 0xb4, 0xd0, 0x1b, 0xa9, 0xb5, + 0x01, 0xb5, 0x3e, 0xd6, 0x30, 0x8f, 0x02, 0xe1, 0x9c, 0xaf, 0x53, 0xce, 0xb3, 0xe6, 0xc5, 0x14, + 0xce, 0x3e, 0x05, 0xd5, 0x98, 0xb3, 0xda, 0x53, 0x3a, 0x73, 0xad, 0xc8, 0x95, 0xce, 0x5c, 0x2f, + 0x5d, 0x1d, 0xc9, 0x7c, 0x9f, 0x82, 0x12, 0xe6, 0x01, 0x80, 0x2c, 0x0e, 0xa1, 0x54, 0x5d, 0x2a, + 0x17, 0xd6, 0xb8, 0x73, 0x48, 0xd6, 0x95, 0x4c, 0x93, 0xb2, 0xe5, 0xeb, 0x2e, 0xc6, 0xb6, 0xef, + 0x04, 0x21, 0xdb, 0x98, 0x15, 0xad, 0xb4, 0x83, 0x52, 0xe7, 0xa3, 0x57, 0x8a, 0x1a, 0xd7, 0x8e, + 0x84, 0xe1, 0xdc, 0x6f, 0x50, 0xee, 0x57, 0xcd, 0x46, 0x0a, 0xf7, 0x21, 0x83, 0x25, 0x8b, 0xed, + 0xf3, 0x02, 0x94, 0x9e, 0xda, 0x8e, 0x1b, 0x62, 0xd7, 0x76, 0xbb, 0x18, 0x6d, 0xc3, 0x04, 0x8d, + 0xdd, 0x71, 0x47, 0xac, 0x56, 0x32, 0xe2, 0x8e, 0x58, 0x4b, 0xe5, 0x9b, 0x73, 0x94, 0x71, 0xc3, + 0x3c, 0x47, 0x18, 0x0f, 0x24, 0xe9, 0x26, 0x2b, 0x02, 0x18, 0xb7, 0xd0, 0x4b, 0x98, 0xe4, 0x25, + 0xfc, 0x18, 0x21, 0x2d, 0xa9, 0xd6, 0xb8, 0x9c, 0x3e, 0x98, 0xb6, 0x96, 0x55, 0x36, 0x01, 0x85, + 0x23, 0x7c, 0x46, 0x00, 0xb2, 0x22, 0x15, 0xb7, 0x68, 0xa2, 0x92, 0xd5, 0x98, 0xcb, 0x06, 0x48, + 0xd3, 0xa9, 0xca, 0xb3, 0x17, 0xc1, 0x12, 0xbe, 0xdf, 0x81, 0xf1, 0xc7, 0x76, 0xb0, 0x8b, 0x62, + 0xb1, 0x57, 0x79, 0x71, 0xdb, 0x68, 0xa4, 0x0d, 0x71, 0x2e, 0x57, 0x29, 0x97, 0x8b, 0xcc, 0x95, + 0xa9, 0x5c, 0xe8, 0x9b, 0x52, 0xa6, 0x3f, 0xf6, 0xdc, 0x36, 0xae, 0x3f, 0xed, 0xed, 0x6e, 0x5c, + 0x7f, 0xfa, 0x0b, 0xdd, 0x6c, 0xfd, 0x11, 0x2e, 0x7b, 0x23, 0xc2, 0x67, 0x08, 0x53, 0xe2, 0x61, + 0x2a, 0x8a, 0x3d, 0xe7, 0x89, 0xbd, 0x66, 0x6d, 0xcc, 0x66, 0x0d, 0x73, 0x6e, 0xd7, 0x28, 0xb7, + 0x2b, 0x66, 0x3d, 0x61, 0x2d, 0x0e, 0xf9, 0xc0, 0xb8, 0x75, 0xc7, 0x40, 0xdf, 0x07, 0x90, 0x45, + 0xbb, 0xc4, 0x1e, 0x8c, 0x17, 0x02, 0x13, 0x7b, 0x30, 0x51, 0xef, 0x33, 0xe7, 0x29, 0xdf, 0x9b, + 0xe6, 0xb5, 0x38, 0xdf, 0xd0, 0xb7, 0xdd, 0xe0, 0x25, 0xf6, 0x6f, 0xb3, 0xbc, 0x7f, 0xb0, 0xeb, + 0x0c, 0xc9, 0x94, 0x7d, 0x28, 0x46, 0xb9, 0xe6, 0xb8, 0xbf, 0x8d, 0x57, 0x7f, 0xe2, 0xfe, 0x36, + 0x51, 0x8c, 0xd1, 0x1d, 0x8f, 0xb6, 0x5e, 0x04, 0x28, 0xd9, 0x82, 0x7f, 0x59, 0x83, 0x71, 0x72, + 0x24, 0x27, 0xc7, 0x13, 0x99, 0xee, 0x89, 0xcf, 0x3e, 0x91, 0xb1, 0x8e, 0xcf, 0x3e, 0x99, 0x29, + 0xd2, 0x8f, 0x27, 0xe4, 0xba, 0xd6, 0x64, 0x79, 0x14, 0x32, 0x53, 0x0f, 0x4a, 0x4a, 0x1a, 0x08, + 0xa5, 0x10, 0xd3, 0x33, 0xe0, 0xf1, 0x80, 0x97, 0x92, 0x43, 0x32, 0x2f, 0x51, 0x7e, 0xe7, 0x58, + 0xc0, 0xa3, 0xfc, 0x7a, 0x0c, 0x82, 0x30, 0xe4, 0xb3, 0xe3, 0x3b, 0x3f, 0x65, 0x76, 0xfa, 0xee, + 0x9f, 0xcb, 0x06, 0xc8, 0x9c, 0x9d, 0xdc, 0xfa, 0xaf, 0xa0, 0xac, 0xa6, 0x7e, 0x50, 0x8a, 0xf0, + 0xb1, 0x1c, 0x7d, 0x3c, 0x92, 0xa4, 0x65, 0x8e, 0x74, 0xdf, 0x46, 0x59, 0xda, 0x0a, 0x18, 0x61, + 0xdc, 0x87, 0x02, 0x4f, 0x01, 0xa5, 0xa9, 0x54, 0x4f, 0xe3, 0xa7, 0xa9, 0x34, 0x96, 0x3f, 0xd2, + 0xcf, 0xcf, 0x94, 0x23, 0xb9, 0x8a, 0x8a, 0x68, 0xcd, 0xb9, 0x3d, 0xc2, 0x61, 0x16, 0x37, 0x99, + 0xb6, 0xcd, 0xe2, 0xa6, 0x64, 0x08, 0xb2, 0xb8, 0xed, 0xe0, 0x90, 0xfb, 0x03, 0x71, 0xbd, 0x46, + 0x19, 0xc4, 0xd4, 0x08, 0x69, 0x1e, 0x05, 0x92, 0x76, 0xbd, 0x91, 0x0c, 0x45, 0x78, 0x3c, 0x00, + 0x90, 0xe9, 0xa8, 0xf8, 0x99, 0x35, 0xb5, 0x52, 0x10, 0x3f, 0xb3, 0xa6, 0x67, 0xb4, 0x74, 0x1f, + 0x2b, 0xf9, 0xb2, 0xdb, 0x15, 0xe1, 0xfc, 0x85, 0x01, 0x28, 0x99, 0xb0, 0x42, 0xef, 0xa4, 0x53, + 0x4f, 0xad, 0x3a, 0x34, 0xde, 0x7d, 0x3d, 0xe0, 0x34, 0x87, 0x2c, 0x45, 0xea, 0x52, 0xe8, 0xe1, + 0x2b, 0x22, 0xd4, 0xe7, 0x06, 0x54, 0xb4, 0x24, 0x17, 0x7a, 0x33, 0xc3, 0xa6, 0xb1, 0xd2, 0x43, + 0xe3, 0xad, 0x63, 0xe1, 0xd2, 0x0e, 0xf3, 0xca, 0x0a, 0x10, 0xb7, 0x9a, 0xdf, 0x31, 0xa0, 0xaa, + 0xe7, 0xc2, 0x50, 0x06, 0xed, 0x44, 0xc5, 0xa2, 0x71, 0xf3, 0x78, 0xc0, 0xa3, 0xcd, 0x23, 0x2f, + 0x34, 0x7d, 0x28, 0xf0, 0xa4, 0x59, 0xda, 0xc2, 0xd7, 0x4b, 0x1c, 0x69, 0x0b, 0x3f, 0x96, 0x71, + 0x4b, 0x59, 0xf8, 0xbe, 0xd7, 0xc7, 0xca, 0x36, 0xe3, 0xb9, 0xb4, 0x2c, 0x6e, 0x47, 0x6f, 0xb3, + 0x58, 0x22, 0x2e, 0x8b, 0x9b, 0xdc, 0x66, 0x22, 0x65, 0x86, 0x32, 0x88, 0x1d, 0xb3, 0xcd, 0xe2, + 0x19, 0xb7, 0x94, 0x6d, 0x46, 0x19, 0x2a, 0xdb, 0x4c, 0xa6, 0xb2, 0xd2, 0xb6, 0x59, 0xa2, 0x1a, + 0x93, 0xb6, 0xcd, 0x92, 0xd9, 0xb0, 0x14, 0x3b, 0x52, 0xbe, 0xda, 0x36, 0x3b, 0x9b, 0x92, 0xec, + 0x42, 0xef, 0x66, 0x28, 0x31, 0xb5, 0xb6, 0xd3, 0xb8, 0xfd, 0x9a, 0xd0, 0x99, 0x6b, 0x9c, 0xa9, + 0x5f, 0xac, 0xf1, 0x3f, 0x32, 0x60, 0x26, 0x2d, 0x3f, 0x86, 0x32, 0xf8, 0x64, 0x94, 0x82, 0x1a, + 0xf3, 0xaf, 0x0b, 0x7e, 0xb4, 0xb6, 0xa2, 0x55, 0xff, 0x70, 0xe7, 0x8b, 0x56, 0xf3, 0xc5, 0x55, + 0xb8, 0x02, 0x93, 0xad, 0xa1, 0xf3, 0x04, 0x1f, 0xa2, 0xb3, 0x53, 0xb9, 0x46, 0x85, 0xd0, 0xf5, + 0x7c, 0xe7, 0x33, 0xfa, 0xab, 0x17, 0x73, 0xb9, 0xed, 0x32, 0x40, 0x04, 0x30, 0xf6, 0xef, 0x5f, + 0xce, 0x1a, 0xff, 0xf5, 0xe5, 0xac, 0xf1, 0x3f, 0x5f, 0xce, 0x1a, 0x3f, 0xfd, 0xbf, 0xd9, 0xb1, + 0x17, 0xd7, 0x76, 0x3c, 0x2a, 0xd6, 0xbc, 0xe3, 0x35, 0xe5, 0x2f, 0x71, 0x2c, 0x36, 0x55, 0x51, + 0xb7, 0x27, 0xe9, 0x4f, 0x67, 0x2c, 0xfe, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x08, 0x5e, 0xc8, 0xca, + 0xfb, 0x43, 0x00, 0x00, } func (m *ResponseHeader) Marshal() (dAtA []byte, err error) { diff --git a/api/membershippb/membership.pb.go b/api/membershippb/membership.pb.go index 1b6447b54783..fe7b956a944c 100644 --- a/api/membershippb/membership.pb.go +++ b/api/membershippb/membership.pb.go @@ -9,7 +9,6 @@ import ( math "math" math_bits "math/bits" - _ "github.com/gogo/protobuf/gogoproto" proto "github.com/golang/protobuf/proto" _ "go.etcd.io/etcd/api/v3/versionpb" ) @@ -371,33 +370,32 @@ func init() { func init() { proto.RegisterFile("membership.proto", fileDescriptor_949fe0d019050ef5) } var fileDescriptor_949fe0d019050ef5 = []byte{ - // 417 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x52, 0xb1, 0x8e, 0xd3, 0x40, - 0x10, 0x65, 0x9d, 0xd3, 0x9d, 0x3d, 0x87, 0xc2, 0xb1, 0x42, 0xc2, 0xba, 0x80, 0xb1, 0x8e, 0x26, - 0x95, 0x2d, 0x11, 0xa5, 0xa1, 0x03, 0x72, 0x45, 0x10, 0x47, 0xb1, 0xe8, 0x28, 0x68, 0xa2, 0xf5, - 0x65, 0x62, 0x56, 0x72, 0xbc, 0x66, 0x77, 0x1d, 0x7a, 0x4a, 0xbe, 0x80, 0xbf, 0xa0, 0xe2, 0x1f, - 0x28, 0xf9, 0x04, 0x14, 0x7e, 0x04, 0x79, 0xd7, 0x89, 0x1d, 0x41, 0x75, 0xdd, 0xf8, 0x79, 0xe6, - 0xcd, 0x7b, 0x6f, 0x07, 0xce, 0xd6, 0xb8, 0xce, 0x50, 0xe9, 0x8f, 0xa2, 0x4a, 0x2a, 0x25, 0x8d, - 0xa4, 0x77, 0x3b, 0xa4, 0xca, 0xce, 0x1f, 0xe4, 0x32, 0x97, 0xf6, 0x47, 0xda, 0x54, 0xae, 0xe7, - 0x3c, 0x46, 0x73, 0xb3, 0x4c, 0x79, 0x25, 0xd2, 0x0d, 0x2a, 0x2d, 0x64, 0x59, 0x65, 0xbb, 0xca, - 0x75, 0x5c, 0x5c, 0xc3, 0x90, 0xf1, 0x95, 0x79, 0x61, 0x8c, 0x12, 0x59, 0x6d, 0x50, 0xd3, 0x11, - 0x04, 0x15, 0xa2, 0x5a, 0xd4, 0xaa, 0xd0, 0x21, 0x89, 0x07, 0xe3, 0x80, 0xf9, 0x0d, 0x70, 0xad, - 0x0a, 0x4d, 0x1f, 0x03, 0x08, 0xbd, 0x28, 0x90, 0xab, 0x12, 0x55, 0xe8, 0xc5, 0x64, 0xec, 0xb3, - 0x40, 0xe8, 0x37, 0x0e, 0x78, 0x7e, 0xf2, 0xe5, 0x47, 0x38, 0x98, 0x24, 0xd3, 0x8b, 0xd7, 0x00, - 0x3d, 0x4a, 0x0a, 0x47, 0x25, 0x5f, 0x63, 0x48, 0x62, 0x32, 0x0e, 0x98, 0xad, 0xe9, 0x13, 0x38, - 0xbd, 0x29, 0x04, 0x96, 0xc6, 0x2d, 0xf2, 0xec, 0x22, 0x70, 0x50, 0xb3, 0xaa, 0xe3, 0xfa, 0x4e, - 0xe0, 0xf8, 0xca, 0x7a, 0xa5, 0x43, 0xf0, 0xe6, 0x33, 0x4b, 0x73, 0xc4, 0xbc, 0xf9, 0x8c, 0x5e, - 0xc2, 0x3d, 0xc5, 0x57, 0x66, 0xc1, 0xf7, 0xbb, 0xac, 0xa6, 0xd3, 0x67, 0x8f, 0x92, 0x7e, 0x3a, - 0xc9, 0xa1, 0x45, 0x36, 0x54, 0x87, 0x96, 0x2f, 0xe1, 0xbe, 0x6b, 0xef, 0x13, 0x0d, 0x2c, 0x51, - 0x78, 0x48, 0xd4, 0x23, 0x69, 0x5f, 0xa4, 0x43, 0x3a, 0xc5, 0x53, 0x08, 0x5f, 0x15, 0xb5, 0x36, - 0xa8, 0xde, 0xbb, 0xb0, 0xdf, 0xa1, 0x61, 0xf8, 0xa9, 0x46, 0x6d, 0xe8, 0x19, 0x0c, 0x36, 0xa8, - 0xda, 0x28, 0x9a, 0xb2, 0x1b, 0xfb, 0x4a, 0x60, 0xd4, 0xce, 0x5d, 0xed, 0xb9, 0x7b, 0xa3, 0x23, - 0x08, 0x5a, 0x99, 0xfb, 0x10, 0x7c, 0x07, 0xd8, 0x28, 0xfe, 0xe3, 0xc1, 0xbb, 0xbd, 0x87, 0xb7, - 0xf0, 0x70, 0x26, 0x3f, 0x97, 0xb9, 0xe2, 0x4b, 0x9c, 0x97, 0x2b, 0xd9, 0xd3, 0x11, 0xc2, 0x09, - 0x96, 0x3c, 0x2b, 0x70, 0x69, 0x55, 0xf8, 0x6c, 0xf7, 0xb9, 0x33, 0xe7, 0xfd, 0x6b, 0xee, 0xe5, - 0xf4, 0xe7, 0x36, 0x22, 0xbf, 0xb6, 0x11, 0xf9, 0xbd, 0x8d, 0xc8, 0xb7, 0x3f, 0xd1, 0x9d, 0x0f, - 0x4f, 0x73, 0x99, 0x34, 0xf7, 0x99, 0x08, 0x99, 0x76, 0x77, 0x3a, 0x49, 0xfb, 0x62, 0xb3, 0x63, - 0x7b, 0xa6, 0x93, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x65, 0x91, 0xd1, 0xcb, 0x00, 0x03, 0x00, + // 401 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x52, 0x3f, 0xcf, 0xd2, 0x40, + 0x18, 0xf7, 0xda, 0x37, 0xd0, 0x3e, 0x18, 0xc4, 0x5b, 0x6c, 0x44, 0x6b, 0x83, 0x0b, 0x53, 0x9b, + 0x48, 0x58, 0xdc, 0x54, 0x18, 0x30, 0xe2, 0x70, 0x06, 0x07, 0x17, 0x72, 0x85, 0x07, 0xbc, 0xa4, + 0xb4, 0xf5, 0xee, 0x8a, 0xbb, 0xa3, 0x9f, 0xc0, 0x6f, 0xe1, 0xe4, 0x77, 0x70, 0xf4, 0x23, 0x18, + 0xfc, 0x22, 0xa6, 0xd7, 0x42, 0x4b, 0x74, 0x7a, 0xb7, 0xe7, 0x7e, 0xb9, 0xe7, 0xf7, 0x2f, 0x0f, + 0x0c, 0x0e, 0x78, 0x88, 0x51, 0xaa, 0x8f, 0x22, 0x0f, 0x73, 0x99, 0xe9, 0x8c, 0xde, 0x6d, 0x90, + 0x3c, 0x7e, 0x18, 0xa0, 0xde, 0x6c, 0x23, 0x9e, 0x8b, 0xe8, 0x88, 0x52, 0x89, 0x2c, 0xcd, 0xe3, + 0xf3, 0x54, 0xfd, 0x1f, 0xad, 0xa0, 0xcf, 0xf8, 0x4e, 0xbf, 0xd0, 0x5a, 0x8a, 0xb8, 0xd0, 0xa8, + 0xe8, 0x10, 0xdc, 0x1c, 0x51, 0xae, 0x0b, 0x99, 0x28, 0x8f, 0x04, 0xf6, 0xd8, 0x65, 0x4e, 0x09, + 0xac, 0x64, 0xa2, 0xe8, 0x63, 0x00, 0xa1, 0xd6, 0x09, 0x72, 0x99, 0xa2, 0xf4, 0xac, 0x80, 0x8c, + 0x1d, 0xe6, 0x0a, 0xf5, 0xa6, 0x02, 0x9e, 0x77, 0xbf, 0xfc, 0xf0, 0xec, 0x49, 0x38, 0x1d, 0xbd, + 0x06, 0x68, 0x51, 0x52, 0xb8, 0x49, 0xf9, 0x01, 0x3d, 0x12, 0x90, 0xb1, 0xcb, 0xcc, 0x4c, 0x9f, + 0x40, 0x6f, 0x93, 0x08, 0x4c, 0x75, 0x25, 0x64, 0x19, 0x21, 0xa8, 0xa0, 0x52, 0xaa, 0xe1, 0xfa, + 0x4e, 0xa0, 0xb3, 0x34, 0xa9, 0x68, 0x1f, 0xac, 0xc5, 0xcc, 0xd0, 0xdc, 0x30, 0x6b, 0x31, 0xa3, + 0x73, 0xb8, 0x27, 0xf9, 0x4e, 0xaf, 0xf9, 0x45, 0xcb, 0x78, 0xea, 0x3d, 0x7b, 0x14, 0xb6, 0x7b, + 0x08, 0xaf, 0x23, 0xb2, 0xbe, 0xbc, 0x8e, 0x3c, 0x87, 0xfb, 0xd5, 0xf7, 0x36, 0x91, 0x6d, 0x88, + 0xbc, 0x6b, 0xa2, 0x16, 0x49, 0xdd, 0x7d, 0x83, 0x34, 0x8e, 0xa7, 0xe0, 0xbd, 0x4a, 0x0a, 0xa5, + 0x51, 0xbe, 0xaf, 0xca, 0x7e, 0x87, 0x9a, 0xe1, 0xa7, 0x02, 0x95, 0xa6, 0x03, 0xb0, 0x8f, 0x28, + 0xeb, 0x2a, 0xca, 0xb1, 0x59, 0xfb, 0x4a, 0x60, 0x58, 0xef, 0x2d, 0x2f, 0xdc, 0xad, 0xd5, 0x21, + 0xb8, 0xb5, 0xcd, 0x4b, 0x09, 0x4e, 0x05, 0x98, 0x2a, 0xfe, 0x93, 0xc1, 0xba, 0x7d, 0x86, 0xb7, + 0xf0, 0x60, 0x96, 0x7d, 0x4e, 0xf7, 0x92, 0x6f, 0x71, 0x91, 0xee, 0xb2, 0x96, 0x0f, 0x0f, 0xba, + 0x98, 0xf2, 0x38, 0xc1, 0xad, 0x71, 0xe1, 0xb0, 0xf3, 0xf3, 0x1c, 0xce, 0xfa, 0x37, 0xdc, 0xcb, + 0xe9, 0xcf, 0x93, 0x4f, 0x7e, 0x9d, 0x7c, 0xf2, 0xfb, 0xe4, 0x93, 0x6f, 0x7f, 0xfc, 0x3b, 0x1f, + 0x9e, 0xee, 0xb3, 0xb0, 0xbc, 0xcf, 0x50, 0x64, 0x51, 0x73, 0xa7, 0x93, 0xa8, 0x6d, 0x36, 0xee, + 0x98, 0x33, 0x9d, 0xfc, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x15, 0x23, 0xc3, 0x3f, 0xea, 0x02, 0x00, 0x00, } diff --git a/api/mvccpb/kv.pb.go b/api/mvccpb/kv.pb.go index 72d3d34ff476..5cda10d01587 100644 --- a/api/mvccpb/kv.pb.go +++ b/api/mvccpb/kv.pb.go @@ -9,7 +9,6 @@ import ( math "math" math_bits "math/bits" - _ "github.com/gogo/protobuf/gogoproto" proto "github.com/golang/protobuf/proto" ) @@ -227,27 +226,27 @@ func init() { func init() { proto.RegisterFile("kv.proto", fileDescriptor_2216fe83c9c12408) } var fileDescriptor_2216fe83c9c12408 = []byte{ - // 318 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xc1, 0x4a, 0xc3, 0x40, - 0x10, 0x86, 0xbb, 0x4d, 0x9b, 0xd6, 0x69, 0xa9, 0x61, 0x29, 0x18, 0x04, 0x43, 0xec, 0xc5, 0x8a, - 0x90, 0x40, 0xfb, 0x06, 0x62, 0x4e, 0xf5, 0x20, 0xa1, 0x7a, 0xf0, 0x52, 0xd2, 0x74, 0x28, 0x21, - 0x6d, 0x37, 0xa4, 0x71, 0x20, 0x6f, 0xe2, 0xdd, 0xbb, 0xcf, 0xe1, 0xd1, 0x47, 0x90, 0xfa, 0x22, - 0x92, 0x59, 0x53, 0x2f, 0x5e, 0x76, 0x67, 0xfe, 0xff, 0x63, 0xe7, 0x1f, 0x16, 0xba, 0x29, 0x79, - 0x59, 0xae, 0x0a, 0x25, 0xcd, 0x2d, 0xc5, 0x71, 0xb6, 0x3c, 0x1f, 0xae, 0xd5, 0x5a, 0xb1, 0xe4, - 0x57, 0x95, 0x76, 0x47, 0xef, 0x02, 0xba, 0x33, 0x2c, 0x9f, 0xa2, 0xcd, 0x0b, 0x4a, 0x0b, 0x8c, - 0x14, 0x4b, 0x5b, 0xb8, 0x62, 0xdc, 0x0f, 0xab, 0x52, 0x5e, 0xc1, 0x69, 0x9c, 0x63, 0x54, 0xe0, - 0x22, 0x47, 0x4a, 0xf6, 0x89, 0xda, 0xd9, 0x4d, 0x57, 0x8c, 0x8d, 0x70, 0xa0, 0xe5, 0xf0, 0x57, - 0x95, 0x97, 0xd0, 0xdf, 0xaa, 0xd5, 0x1f, 0x65, 0x30, 0xd5, 0xdb, 0xaa, 0xd5, 0x11, 0xb1, 0xa1, - 0x43, 0x98, 0xb3, 0xdb, 0x62, 0xb7, 0x6e, 0xe5, 0x10, 0xda, 0x54, 0x05, 0xb0, 0xdb, 0x3c, 0x59, - 0x37, 0x95, 0xba, 0xc1, 0x68, 0x8f, 0xb6, 0xc9, 0xb4, 0x6e, 0x46, 0x6f, 0x02, 0xda, 0x01, 0xe1, - 0xae, 0x90, 0x37, 0xd0, 0x2a, 0xca, 0x0c, 0x39, 0xee, 0x60, 0x72, 0xe6, 0xe9, 0x3d, 0x3d, 0x36, - 0xf5, 0x39, 0x2f, 0x33, 0x0c, 0x19, 0x92, 0x2e, 0x34, 0x53, 0xe2, 0xec, 0xbd, 0x89, 0x55, 0xa3, - 0xf5, 0xe2, 0x61, 0x33, 0x25, 0x79, 0x0d, 0x9d, 0x2c, 0x47, 0x5a, 0xa4, 0xc4, 0xe1, 0xff, 0xc3, - 0xcc, 0x0a, 0x98, 0xd1, 0xc8, 0x85, 0x93, 0xe3, 0xfb, 0xb2, 0x03, 0xc6, 0xc3, 0xe3, 0xdc, 0x6a, - 0x48, 0x00, 0xf3, 0x2e, 0xb8, 0x0f, 0xe6, 0x81, 0x25, 0x6e, 0xfd, 0x8f, 0x83, 0x23, 0x3e, 0x0f, - 0x8e, 0xf8, 0x3a, 0x38, 0xe2, 0xf5, 0xdb, 0x69, 0x3c, 0x5f, 0xac, 0x95, 0x87, 0x45, 0xbc, 0xf2, - 0x12, 0xe5, 0x57, 0xb7, 0x1f, 0x65, 0x89, 0x4f, 0x53, 0x5f, 0xcf, 0x58, 0x9a, 0xfc, 0x1d, 0xd3, - 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5c, 0x5b, 0xa6, 0x27, 0xb8, 0x01, 0x00, 0x00, + // 308 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xc1, 0x4e, 0xb3, 0x40, + 0x14, 0x85, 0x3b, 0xa5, 0xa5, 0xfd, 0x6f, 0x9b, 0xfe, 0x64, 0x62, 0x22, 0x1b, 0x09, 0x76, 0x63, + 0x8d, 0x09, 0x24, 0xed, 0x1b, 0x18, 0x59, 0xd5, 0x85, 0x21, 0xe8, 0xc2, 0x4d, 0x43, 0xe1, 0xc6, + 0x10, 0x4a, 0x67, 0x42, 0xf1, 0x26, 0xbc, 0x89, 0x7b, 0xf7, 0x3e, 0x87, 0x4b, 0x1f, 0xc1, 0xe0, + 0x8b, 0x18, 0x66, 0xa4, 0x6e, 0xdc, 0xc0, 0x9c, 0x73, 0xbe, 0xcc, 0x3d, 0x37, 0x03, 0xe3, 0x9c, + 0x3c, 0x59, 0x8a, 0x4a, 0x70, 0xb3, 0xa0, 0x24, 0x91, 0xdb, 0xf9, 0x1b, 0x83, 0xf1, 0x1a, 0xeb, + 0x87, 0x78, 0xf7, 0x8c, 0xdc, 0x02, 0x23, 0xc7, 0xda, 0x66, 0x2e, 0x5b, 0x4c, 0xc3, 0xf6, 0xc8, + 0x2f, 0xe0, 0x7f, 0x52, 0x62, 0x5c, 0xe1, 0xa6, 0x44, 0xca, 0x0e, 0x99, 0xd8, 0xdb, 0x7d, 0x97, + 0x2d, 0x8c, 0x70, 0xa6, 0xed, 0xf0, 0xc7, 0xe5, 0xe7, 0x30, 0x2d, 0x44, 0xfa, 0x4b, 0x19, 0x8a, + 0x9a, 0x14, 0x22, 0x3d, 0x22, 0x36, 0x8c, 0x08, 0x4b, 0x95, 0x0e, 0x54, 0xda, 0x49, 0x7e, 0x02, + 0x43, 0x6a, 0x0b, 0xd8, 0x43, 0x35, 0x59, 0x8b, 0xd6, 0xdd, 0x61, 0x7c, 0x40, 0xdb, 0x54, 0xb4, + 0x16, 0xf3, 0x57, 0x06, 0xc3, 0x80, 0x70, 0x5f, 0xf1, 0x2b, 0x18, 0x54, 0xb5, 0x44, 0x55, 0x77, + 0xb6, 0x3c, 0xf5, 0xf4, 0x46, 0x9e, 0x0a, 0xf5, 0x37, 0xaa, 0x25, 0x86, 0x0a, 0xe2, 0x2e, 0xf4, + 0x73, 0x52, 0xdd, 0x27, 0x4b, 0xab, 0x43, 0xbb, 0xc5, 0xc3, 0x7e, 0x4e, 0xfc, 0x12, 0x46, 0xb2, + 0x44, 0xda, 0xe4, 0xa4, 0xca, 0xff, 0x85, 0x99, 0x2d, 0xb0, 0xa6, 0xb9, 0x0b, 0xff, 0x8e, 0xf7, + 0xf3, 0x11, 0x18, 0x77, 0xf7, 0x91, 0xd5, 0xe3, 0x00, 0xe6, 0x4d, 0x70, 0x1b, 0x44, 0x81, 0xc5, + 0xae, 0xfd, 0xf7, 0xc6, 0x61, 0x1f, 0x8d, 0xc3, 0x3e, 0x1b, 0x87, 0xbd, 0x7c, 0x39, 0xbd, 0xc7, + 0xb3, 0x27, 0xe1, 0x61, 0x95, 0xa4, 0x5e, 0x26, 0xfc, 0xf6, 0xef, 0xc7, 0x32, 0xf3, 0x69, 0xe5, + 0xeb, 0x19, 0x5b, 0x53, 0x3d, 0xcb, 0xea, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xcb, 0xc0, 0x08, 0x63, + 0xa2, 0x01, 0x00, 0x00, } func (m *KeyValue) Marshal() (dAtA []byte, err error) { diff --git a/api/versionpb/version.pb.go b/api/versionpb/version.pb.go index 4cf88137c2eb..62ee5a63a8f8 100644 --- a/api/versionpb/version.pb.go +++ b/api/versionpb/version.pb.go @@ -7,7 +7,6 @@ import ( fmt "fmt" math "math" - _ "github.com/gogo/protobuf/gogoproto" proto "github.com/golang/protobuf/proto" descriptorpb "google.golang.org/protobuf/types/descriptorpb" ) @@ -69,23 +68,22 @@ func init() { func init() { proto.RegisterFile("version.proto", fileDescriptor_7d2c07d79758f814) } var fileDescriptor_7d2c07d79758f814 = []byte{ - // 284 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0xd1, 0xc1, 0x4a, 0xc3, 0x30, - 0x18, 0x07, 0x70, 0x83, 0x20, 0x2c, 0xa0, 0xce, 0x30, 0x50, 0x86, 0xd6, 0x7a, 0xf3, 0x94, 0x80, - 0xbb, 0xed, 0x28, 0xe8, 0xad, 0x2a, 0x1e, 0x76, 0x10, 0xa4, 0xb4, 0x6b, 0x16, 0x02, 0x6d, 0xbf, - 0xd0, 0xb4, 0x7d, 0x04, 0xd9, 0x23, 0xf8, 0x48, 0x1e, 0xa7, 0xbe, 0x80, 0xd4, 0x17, 0x91, 0xa4, - 0xa9, 0xac, 0xd6, 0x53, 0xfb, 0x7d, 0xdf, 0xff, 0xff, 0xeb, 0xa1, 0x78, 0xbf, 0xe6, 0x85, 0x96, - 0x90, 0x53, 0x55, 0x40, 0x09, 0x64, 0xe4, 0x46, 0x15, 0x4f, 0x27, 0x02, 0x04, 0xd8, 0x2d, 0x33, - 0x6f, 0x6d, 0x60, 0xea, 0x0b, 0x00, 0x91, 0x72, 0x66, 0xa7, 0xb8, 0x5a, 0xb1, 0x84, 0xeb, 0x65, - 0x21, 0x55, 0x09, 0x45, 0x9b, 0x98, 0xdf, 0xe1, 0x31, 0x2f, 0x97, 0x49, 0xe8, 0xa4, 0x30, 0xd3, - 0x82, 0x9c, 0xd3, 0xb6, 0x46, 0xbb, 0x1a, 0x0d, 0xb8, 0xd6, 0x91, 0xe0, 0xf7, 0xaa, 0x94, 0x90, - 0xeb, 0x93, 0xcd, 0xcb, 0xae, 0x8f, 0x2e, 0x47, 0x8f, 0x07, 0xa6, 0xba, 0x68, 0x9b, 0x81, 0x16, - 0x6b, 0x84, 0xe6, 0x0f, 0x98, 0xf4, 0xbc, 0x95, 0xe4, 0x69, 0x42, 0xce, 0x06, 0xe2, 0xad, 0xd9, - 0x77, 0xde, 0xbb, 0xf3, 0xc6, 0x5b, 0x9e, 0x0d, 0x18, 0x31, 0xc0, 0x47, 0x3d, 0x91, 0xe7, 0x55, - 0x46, 0x4e, 0x07, 0xe0, 0x4d, 0x5e, 0x65, 0x9d, 0xf7, 0xe1, 0xbc, 0xc3, 0x2d, 0xcf, 0xdc, 0x0d, - 0xf7, 0x8c, 0x8f, 0x07, 0x5c, 0x58, 0x47, 0x69, 0xc5, 0xc9, 0xc5, 0xbf, 0xe8, 0xc2, 0xdc, 0x3a, - 0xf9, 0xd3, 0xc9, 0x93, 0x3f, 0xb2, 0x0d, 0xad, 0x11, 0xba, 0xbe, 0x7a, 0x6b, 0x3c, 0xb4, 0x69, - 0x3c, 0xf4, 0xd5, 0x78, 0xe8, 0xf5, 0xdb, 0xdb, 0x79, 0xf2, 0x05, 0x50, 0x93, 0xa6, 0x12, 0x98, - 0x79, 0xb2, 0x48, 0x49, 0x56, 0xcf, 0xd8, 0xef, 0xbf, 0x8b, 0xf7, 0xec, 0xf7, 0x66, 0x3f, 0x01, - 0x00, 0x00, 0xff, 0xff, 0xe8, 0x02, 0x15, 0xc0, 0xde, 0x01, 0x00, 0x00, + // 271 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2d, 0x4b, 0x2d, 0x2a, + 0xce, 0xcc, 0xcf, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x84, 0x72, 0x0b, 0x92, 0xa4, + 0x14, 0xd2, 0xf3, 0xf3, 0xd3, 0x73, 0x52, 0xf5, 0xc1, 0x12, 0x49, 0xa5, 0x69, 0xfa, 0x29, 0xa9, + 0xc5, 0xc9, 0x45, 0x99, 0x05, 0x25, 0xf9, 0x45, 0x10, 0xc5, 0x56, 0x7e, 0x5c, 0x02, 0xa9, 0x25, + 0xc9, 0x29, 0xf1, 0x50, 0x3d, 0xf1, 0xb9, 0xc5, 0xe9, 0x42, 0xf2, 0x7a, 0x10, 0x6d, 0x7a, 0x30, + 0x6d, 0x7a, 0xbe, 0xa9, 0xc5, 0xc5, 0x89, 0xe9, 0xa9, 0xfe, 0x05, 0x25, 0x99, 0xf9, 0x79, 0xc5, + 0x12, 0x17, 0xda, 0x98, 0x15, 0x18, 0x35, 0x38, 0x83, 0xf8, 0x40, 0x5a, 0xc3, 0x20, 0x3a, 0x7d, + 0x8b, 0xd3, 0x3b, 0x18, 0x19, 0xad, 0x02, 0xb8, 0x84, 0x50, 0xcc, 0x4b, 0xcb, 0x4c, 0xcd, 0x49, + 0x11, 0x92, 0xc5, 0x30, 0xd1, 0x0d, 0x24, 0x0e, 0x33, 0xef, 0x22, 0xd4, 0x3c, 0x01, 0x24, 0xf3, + 0xc0, 0x0a, 0x40, 0x26, 0xfa, 0x72, 0x09, 0xa2, 0x98, 0x98, 0x9a, 0x57, 0x9a, 0x2b, 0x24, 0x83, + 0x61, 0xa0, 0x6b, 0x5e, 0x69, 0x2e, 0xcc, 0xbc, 0x4b, 0x50, 0xf3, 0xf8, 0x91, 0xcc, 0x03, 0xc9, + 0x83, 0x8c, 0x8b, 0xe5, 0x12, 0xc7, 0x30, 0x2e, 0xbe, 0x2c, 0x31, 0xa7, 0x34, 0x55, 0x48, 0x11, + 0xab, 0xa1, 0x61, 0x20, 0x39, 0x98, 0xc9, 0x97, 0xa1, 0x26, 0x8b, 0xa0, 0x99, 0x0c, 0x56, 0xd4, + 0xc1, 0xc8, 0xe8, 0x64, 0x74, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, + 0x31, 0xce, 0x78, 0x2c, 0xc7, 0x10, 0xa5, 0x90, 0x9e, 0xaf, 0x07, 0x52, 0xad, 0x97, 0x99, 0xaf, + 0x0f, 0xa2, 0xf5, 0x13, 0x0b, 0x32, 0xf5, 0xcb, 0x8c, 0xf5, 0xe1, 0xb1, 0x94, 0xc4, 0x06, 0xb6, + 0xcf, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x16, 0x4f, 0x52, 0x12, 0xc8, 0x01, 0x00, 0x00, } diff --git a/server/etcdserver/api/v3election/v3electionpb/v3election.pb.go b/server/etcdserver/api/v3election/v3electionpb/v3election.pb.go index 731032b6afa7..894ea34b0a26 100644 --- a/server/etcdserver/api/v3election/v3electionpb/v3election.pb.go +++ b/server/etcdserver/api/v3election/v3electionpb/v3election.pb.go @@ -9,7 +9,6 @@ import ( math "math" math_bits "math/bits" - _ "github.com/gogo/protobuf/gogoproto" proto "github.com/golang/protobuf/proto" etcdserverpb "go.etcd.io/etcd/api/v3/etcdserverpb" mvccpb "go.etcd.io/etcd/api/v3/mvccpb" @@ -548,42 +547,42 @@ func init() { func init() { proto.RegisterFile("v3election.proto", fileDescriptor_c9b1f26cc432a035) } var fileDescriptor_c9b1f26cc432a035 = []byte{ - // 556 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x94, 0x41, 0x6f, 0xd3, 0x30, - 0x14, 0xc7, 0x71, 0x5a, 0xca, 0x78, 0x74, 0x5b, 0x15, 0x8a, 0x28, 0xa5, 0x64, 0x95, 0xb9, 0x4c, - 0x3d, 0xc4, 0x68, 0xe5, 0xd4, 0xd3, 0x04, 0x02, 0x4d, 0x1a, 0x12, 0xe0, 0x03, 0x02, 0x6e, 0x6e, - 0xf6, 0x94, 0x55, 0x4d, 0xe3, 0x90, 0x74, 0x91, 0x7a, 0xe5, 0x2b, 0x70, 0x80, 0x8f, 0xc4, 0x11, - 0x89, 0x2f, 0x80, 0x0a, 0x1f, 0x04, 0xd9, 0x4e, 0x9a, 0x34, 0x6a, 0x11, 0x5a, 0x6f, 0x8e, 0xdf, - 0xdf, 0xef, 0xf7, 0xfe, 0xcf, 0x2f, 0x86, 0x56, 0x3a, 0xc4, 0x00, 0xbd, 0xf9, 0x44, 0x86, 0x6e, - 0x14, 0xcb, 0xb9, 0xb4, 0x9b, 0xc5, 0x4e, 0x34, 0xee, 0xb6, 0x7d, 0xe9, 0x4b, 0x1d, 0x60, 0x6a, - 0x65, 0x34, 0xdd, 0x23, 0x9c, 0x7b, 0x17, 0x4c, 0x44, 0x13, 0xa6, 0x16, 0x09, 0xc6, 0x29, 0xc6, - 0xd1, 0x98, 0xc5, 0x91, 0x97, 0x09, 0x3a, 0x2b, 0xc1, 0x2c, 0xf5, 0xbc, 0x68, 0xcc, 0xa6, 0x69, - 0x16, 0xe9, 0xf9, 0x52, 0xfa, 0x01, 0xea, 0x98, 0x08, 0x43, 0x39, 0x17, 0x8a, 0x94, 0x98, 0x28, - 0x7d, 0x0b, 0x87, 0xcf, 0xc5, 0x2c, 0x12, 0x13, 0x3f, 0xe4, 0xf8, 0xe9, 0x0a, 0x93, 0xb9, 0x6d, - 0x43, 0x3d, 0x14, 0x33, 0xec, 0x90, 0x3e, 0x39, 0x6e, 0x72, 0xbd, 0xb6, 0xdb, 0x70, 0x33, 0x40, - 0x91, 0x60, 0xc7, 0xea, 0x93, 0xe3, 0x1a, 0x37, 0x1f, 0x6a, 0x37, 0x15, 0xc1, 0x15, 0x76, 0x6a, - 0x5a, 0x6a, 0x3e, 0xe8, 0x02, 0x5a, 0x45, 0xca, 0x24, 0x92, 0x61, 0x82, 0xf6, 0x53, 0x68, 0x5c, - 0xa2, 0xb8, 0xc0, 0x58, 0x67, 0xbd, 0x73, 0xd2, 0x73, 0xcb, 0x3e, 0xdc, 0x5c, 0x77, 0xa6, 0x35, - 0x3c, 0xd3, 0xda, 0x0c, 0x1a, 0x81, 0x39, 0x65, 0xe9, 0x53, 0xf7, 0xdd, 0x72, 0xab, 0xdc, 0x57, - 0x3a, 0x76, 0x8e, 0x0b, 0x9e, 0xc9, 0xe8, 0x07, 0xb8, 0xbd, 0xda, 0xdc, 0xe8, 0xa3, 0x05, 0xb5, - 0x29, 0x2e, 0x74, 0xba, 0x26, 0x57, 0x4b, 0xb5, 0x13, 0x63, 0xaa, 0x1d, 0xd4, 0xb8, 0x5a, 0x16, - 0x5e, 0xeb, 0x25, 0xaf, 0xf4, 0x31, 0xec, 0x9b, 0xd4, 0xff, 0x68, 0x13, 0xbd, 0x84, 0x83, 0x5c, - 0xb4, 0x93, 0xf1, 0x3e, 0x58, 0xd3, 0x34, 0x33, 0xdd, 0x72, 0xcd, 0x8d, 0xba, 0xe7, 0xb8, 0x78, - 0xa7, 0x1a, 0xcc, 0xad, 0x69, 0x4a, 0x4f, 0x61, 0x9f, 0x63, 0x52, 0xba, 0xb5, 0xa2, 0x57, 0xe4, - 0xff, 0x7a, 0xf5, 0x12, 0x0e, 0xf2, 0x0c, 0xbb, 0xd4, 0x4a, 0xdf, 0xc3, 0xe1, 0x9b, 0x58, 0x7a, - 0x81, 0x98, 0xcc, 0xae, 0x5b, 0x4b, 0x31, 0x48, 0x56, 0x79, 0x90, 0xce, 0xa0, 0x55, 0x64, 0xde, - 0xa5, 0xc6, 0x93, 0xaf, 0x75, 0xd8, 0x7b, 0x91, 0x15, 0x60, 0x4f, 0x61, 0x2f, 0x9f, 0x4f, 0xfb, - 0xd1, 0x7a, 0x65, 0x95, 0x5f, 0xa1, 0xeb, 0x6c, 0x0b, 0x1b, 0x0a, 0xed, 0x7f, 0xfe, 0xf9, 0xe7, - 0x8b, 0xd5, 0xa5, 0xf7, 0x58, 0x3a, 0x64, 0xb9, 0x90, 0x79, 0x99, 0x6c, 0x44, 0x06, 0x0a, 0x96, - 0x7b, 0xa8, 0xc2, 0x2a, 0x5d, 0xab, 0xc2, 0xaa, 0xd6, 0xb7, 0xc0, 0xa2, 0x4c, 0xa6, 0x60, 0x1e, - 0x34, 0x4c, 0x6f, 0xed, 0x87, 0x9b, 0x3a, 0x9e, 0x83, 0x7a, 0x9b, 0x83, 0x19, 0xc6, 0xd1, 0x98, - 0x0e, 0xbd, 0xbb, 0x86, 0x31, 0x17, 0xa5, 0x20, 0x3e, 0xdc, 0x7a, 0x3d, 0xd6, 0x0d, 0xdf, 0x85, - 0x72, 0xa4, 0x29, 0x0f, 0x68, 0x7b, 0x8d, 0x22, 0x4d, 0xe2, 0x11, 0x19, 0x3c, 0x21, 0xca, 0x8d, - 0x19, 0xd0, 0x2a, 0x67, 0x6d, 0xf0, 0xab, 0x9c, 0xf5, 0x99, 0xde, 0xe2, 0x26, 0xd6, 0xa2, 0x11, - 0x19, 0x3c, 0xe3, 0xdf, 0x97, 0x0e, 0xf9, 0xb1, 0x74, 0xc8, 0xaf, 0xa5, 0x43, 0xbe, 0xfd, 0x76, - 0x6e, 0x7c, 0x3c, 0xf5, 0xa5, 0x9e, 0x29, 0x77, 0x22, 0xf5, 0x63, 0xcb, 0xcc, 0x70, 0xe9, 0xf3, - 0xab, 0x51, 0xd3, 0xaf, 0x69, 0xc1, 0x65, 0xe5, 0x12, 0xc6, 0x0d, 0xfd, 0xb4, 0x0e, 0xff, 0x06, - 0x00, 0x00, 0xff, 0xff, 0xcd, 0x58, 0x82, 0xe2, 0xeb, 0x05, 0x00, 0x00, + // 548 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xcd, 0x6e, 0xd3, 0x4c, + 0x14, 0xfd, 0xc6, 0xc9, 0x17, 0xca, 0x25, 0x6d, 0x23, 0x53, 0x44, 0x08, 0xc1, 0x8d, 0x86, 0x4d, + 0x95, 0x85, 0x07, 0x35, 0xac, 0xb2, 0xaa, 0x40, 0xa0, 0x4a, 0x45, 0x02, 0x66, 0x81, 0x80, 0xdd, + 0xc4, 0xbd, 0x4a, 0xa3, 0x38, 0x1e, 0x63, 0xbb, 0x96, 0xb2, 0xe5, 0x15, 0x58, 0xc0, 0x23, 0xb1, + 0x44, 0xe2, 0x05, 0x50, 0xe0, 0x41, 0xd0, 0xcc, 0xd8, 0xf1, 0x8f, 0x12, 0x84, 0xc8, 0x6e, 0x3c, + 0xf7, 0xcc, 0x3d, 0xf7, 0x9c, 0x39, 0x1e, 0xe8, 0xa4, 0x23, 0xf4, 0xd1, 0x4b, 0x66, 0x32, 0x70, + 0xc3, 0x48, 0x26, 0xd2, 0x6e, 0x17, 0x3b, 0xe1, 0xa4, 0x77, 0x8c, 0x89, 0x77, 0xc9, 0x44, 0x38, + 0x63, 0x6a, 0x11, 0x63, 0x94, 0x62, 0x14, 0x4e, 0x58, 0x14, 0x7a, 0x06, 0xde, 0xeb, 0xae, 0x01, + 0x8b, 0xd4, 0xf3, 0xc2, 0x09, 0x9b, 0xa7, 0x59, 0xa5, 0x3f, 0x95, 0x72, 0xea, 0xa3, 0xae, 0x89, + 0x20, 0x90, 0x89, 0x50, 0x3d, 0x63, 0x53, 0xa5, 0xaf, 0xe1, 0xf0, 0xa9, 0x58, 0x84, 0x62, 0x36, + 0x0d, 0x38, 0x7e, 0xb8, 0xc6, 0x38, 0xb1, 0x6d, 0x68, 0x06, 0x62, 0x81, 0x5d, 0x32, 0x20, 0x27, + 0x6d, 0xae, 0xd7, 0xf6, 0x11, 0xfc, 0xef, 0xa3, 0x88, 0xb1, 0x6b, 0x0d, 0xc8, 0x49, 0x83, 0x9b, + 0x0f, 0xb5, 0x9b, 0x0a, 0xff, 0x1a, 0xbb, 0x0d, 0x0d, 0x35, 0x1f, 0x74, 0x09, 0x9d, 0xa2, 0x65, + 0x1c, 0xca, 0x20, 0x46, 0xfb, 0x31, 0xb4, 0xae, 0x50, 0x5c, 0x62, 0xa4, 0xbb, 0xde, 0x3a, 0xed, + 0xbb, 0x65, 0x1d, 0x6e, 0x8e, 0x3b, 0xd7, 0x18, 0x9e, 0x61, 0x6d, 0x06, 0x2d, 0xdf, 0x9c, 0xb2, + 0xf4, 0xa9, 0xbb, 0x6e, 0xd9, 0x14, 0xf7, 0x85, 0xae, 0x5d, 0xe0, 0x92, 0x67, 0x30, 0xfa, 0x0e, + 0x6e, 0xae, 0x37, 0x37, 0xea, 0xe8, 0x40, 0x63, 0x8e, 0x4b, 0xdd, 0xae, 0xcd, 0xd5, 0x52, 0xed, + 0x44, 0x98, 0x6a, 0x05, 0x0d, 0xae, 0x96, 0x85, 0xd6, 0x66, 0x49, 0x2b, 0x7d, 0x08, 0xfb, 0xa6, + 0xf5, 0x1f, 0x6c, 0xa2, 0x57, 0x70, 0x90, 0x83, 0x76, 0x12, 0x3e, 0x00, 0x6b, 0x9e, 0x66, 0xa2, + 0x3b, 0xae, 0xb9, 0x51, 0xf7, 0x02, 0x97, 0x6f, 0x94, 0xc1, 0xdc, 0x9a, 0xa7, 0xf4, 0x0c, 0xf6, + 0x39, 0xc6, 0xa5, 0x5b, 0x2b, 0xbc, 0x22, 0x7f, 0xe7, 0xd5, 0x73, 0x38, 0xc8, 0x3b, 0xec, 0x32, + 0x2b, 0x7d, 0x0b, 0x87, 0xaf, 0x22, 0xe9, 0xf9, 0x62, 0xb6, 0xf8, 0xd7, 0x59, 0x8a, 0x20, 0x59, + 0xe5, 0x20, 0x9d, 0x43, 0xa7, 0xe8, 0xbc, 0xcb, 0x8c, 0xa7, 0x9f, 0x9b, 0xb0, 0xf7, 0x2c, 0x1b, + 0xc0, 0x9e, 0xc3, 0x5e, 0x9e, 0x4f, 0xfb, 0x41, 0x75, 0xb2, 0xda, 0xaf, 0xd0, 0x73, 0xb6, 0x95, + 0x0d, 0x0b, 0x1d, 0x7c, 0xfc, 0xfe, 0xeb, 0x93, 0xd5, 0xa3, 0x77, 0x58, 0x3a, 0x62, 0x39, 0x90, + 0x79, 0x19, 0x6c, 0x4c, 0x86, 0x8a, 0x2c, 0xd7, 0x50, 0x27, 0xab, 0xb9, 0x56, 0x27, 0xab, 0x4b, + 0xdf, 0x42, 0x16, 0x66, 0x30, 0x45, 0xe6, 0x41, 0xcb, 0x78, 0x6b, 0xdf, 0xdf, 0xe4, 0x78, 0x4e, + 0xd4, 0xdf, 0x5c, 0xcc, 0x68, 0x1c, 0x4d, 0xd3, 0xa5, 0xb7, 0x2b, 0x34, 0xe6, 0xa2, 0x14, 0xc9, + 0x14, 0x6e, 0xbc, 0x9c, 0x68, 0xc3, 0x77, 0x61, 0x39, 0xd6, 0x2c, 0xf7, 0xe8, 0x51, 0x85, 0x45, + 0x9a, 0xc6, 0x63, 0x32, 0x7c, 0x44, 0x94, 0x1a, 0x13, 0xd0, 0x3a, 0x4f, 0x25, 0xf8, 0x75, 0x9e, + 0x6a, 0xa6, 0xb7, 0xa8, 0x89, 0x34, 0x68, 0x4c, 0x86, 0x4f, 0xf8, 0xd7, 0x95, 0x43, 0xbe, 0xad, + 0x1c, 0xf2, 0x63, 0xe5, 0x90, 0x2f, 0x3f, 0x9d, 0xff, 0xde, 0x9f, 0x4d, 0xa5, 0xce, 0x94, 0x3b, + 0x93, 0xfa, 0xb1, 0x65, 0x26, 0x5c, 0xfa, 0xfc, 0x3a, 0x6a, 0xfa, 0x35, 0x2d, 0x78, 0x59, 0x79, + 0x84, 0x49, 0x4b, 0x3f, 0xad, 0xa3, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x8d, 0x13, 0xc0, 0xca, + 0xd5, 0x05, 0x00, 0x00, } func (m *CampaignRequest) Marshal() (dAtA []byte, err error) { diff --git a/server/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go b/server/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go index 9c5a3d5ed320..2870d74ec74c 100644 --- a/server/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go +++ b/server/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go @@ -9,7 +9,6 @@ import ( math "math" math_bits "math/bits" - _ "github.com/gogo/protobuf/gogoproto" proto "github.com/golang/protobuf/proto" etcdserverpb "go.etcd.io/etcd/api/v3/etcdserverpb" _ "google.golang.org/genproto/googleapis/api/annotations" @@ -250,30 +249,29 @@ func init() { func init() { proto.RegisterFile("v3lock.proto", fileDescriptor_52389b3e2f253201) } var fileDescriptor_52389b3e2f253201 = []byte{ - // 356 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x92, 0xcd, 0x4a, 0xc3, 0x40, - 0x10, 0xc7, 0xdd, 0xb6, 0x16, 0xd9, 0xa6, 0x2a, 0x4b, 0xd5, 0x10, 0x4a, 0xac, 0x39, 0x15, 0x0f, - 0x59, 0x68, 0x05, 0xc5, 0xa3, 0x07, 0x11, 0x11, 0x84, 0x80, 0x0a, 0xde, 0xd2, 0x74, 0x88, 0xa5, - 0x71, 0x27, 0x26, 0x69, 0xc1, 0xab, 0xaf, 0xe0, 0xc5, 0xc7, 0xf0, 0x31, 0x3c, 0x0a, 0xbe, 0x80, - 0x54, 0x1f, 0x44, 0x32, 0x9b, 0xd8, 0xaa, 0x47, 0x2f, 0xc9, 0xec, 0xce, 0x6f, 0xfe, 0xf3, 0xb1, - 0xc3, 0x8d, 0x69, 0x3f, 0xc2, 0x60, 0xec, 0xc6, 0x09, 0x66, 0x28, 0x56, 0xf4, 0x29, 0x1e, 0x58, - 0xad, 0x10, 0x43, 0xa4, 0x4b, 0x99, 0x5b, 0xda, 0x6f, 0x6d, 0x43, 0x16, 0x0c, 0xa5, 0x1f, 0x8f, - 0x64, 0x6e, 0xa4, 0x90, 0x4c, 0x21, 0x89, 0x07, 0x32, 0x89, 0x83, 0x02, 0x68, 0x87, 0x88, 0x61, - 0x04, 0x84, 0xf8, 0x4a, 0x61, 0xe6, 0x67, 0x23, 0x54, 0xa9, 0xf6, 0x3a, 0xfb, 0xbc, 0x71, 0x86, - 0xc1, 0xd8, 0x83, 0xbb, 0x09, 0xa4, 0x99, 0x10, 0xbc, 0xa6, 0xfc, 0x5b, 0x30, 0x59, 0x87, 0x75, - 0x0d, 0x8f, 0x6c, 0xd1, 0xe2, 0xcb, 0x11, 0xf8, 0x29, 0x98, 0x95, 0x0e, 0xeb, 0x56, 0x3d, 0x7d, - 0x70, 0x2e, 0xb9, 0xa1, 0x03, 0xd3, 0x18, 0x55, 0x0a, 0x62, 0x8f, 0xd7, 0x6f, 0xc0, 0x1f, 0x42, - 0x42, 0xb1, 0x8d, 0x5e, 0xdb, 0x5d, 0xac, 0xc7, 0x2d, 0xb9, 0x13, 0x62, 0xbc, 0x82, 0x15, 0xeb, - 0xbc, 0x3a, 0x86, 0x7b, 0x52, 0x36, 0xbc, 0xdc, 0x74, 0x76, 0x78, 0xf3, 0x42, 0x45, 0x0b, 0x25, - 0x15, 0x08, 0x9b, 0x23, 0xc7, 0x7c, 0xb5, 0x44, 0xfe, 0x93, 0xbc, 0xf7, 0xcc, 0x78, 0x2d, 0xef, - 0x41, 0x9c, 0x17, 0xff, 0x0d, 0xb7, 0x1c, 0xb6, 0xbb, 0x30, 0x14, 0x6b, 0xf3, 0xf7, 0xb5, 0x56, - 0x73, 0xcc, 0x87, 0xb7, 0xcf, 0xc7, 0x8a, 0x70, 0x9a, 0x72, 0xda, 0x97, 0x39, 0x40, 0x9f, 0x43, - 0xb6, 0x2b, 0xae, 0x78, 0x5d, 0x57, 0x28, 0xb6, 0xe6, 0xb1, 0x3f, 0xda, 0xb2, 0xcc, 0xbf, 0x8e, - 0x42, 0xd6, 0x22, 0xd9, 0x96, 0xb3, 0xf6, 0x2d, 0x3b, 0x51, 0x85, 0xf0, 0xd1, 0xe9, 0xcb, 0xcc, - 0x66, 0xaf, 0x33, 0x9b, 0xbd, 0xcf, 0x6c, 0xf6, 0xf4, 0x61, 0x2f, 0x5d, 0x1f, 0x84, 0x48, 0xcd, - 0xba, 0x23, 0xa4, 0x0d, 0x90, 0xba, 0xeb, 0x3c, 0x76, 0x3e, 0x03, 0x7a, 0x7c, 0x9d, 0x4f, 0x96, - 0x69, 0x07, 0x75, 0xda, 0x80, 0xfe, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcb, 0x48, 0x31, 0x4a, - 0x70, 0x02, 0x00, 0x00, + // 346 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x29, 0x33, 0xce, 0xc9, + 0x4f, 0xce, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x80, 0xf0, 0x0a, 0x92, 0xa4, 0xe4, + 0x53, 0x4b, 0x92, 0x53, 0xf4, 0x13, 0x0b, 0x32, 0xf5, 0x41, 0x8c, 0xe2, 0xd4, 0xa2, 0xb2, 0xd4, + 0xa2, 0x82, 0x24, 0xfd, 0xa2, 0x82, 0x64, 0x88, 0x52, 0x29, 0x99, 0xf4, 0xfc, 0xfc, 0xf4, 0x9c, + 0x54, 0xb0, 0x92, 0xc4, 0xbc, 0xbc, 0xfc, 0x92, 0xc4, 0x92, 0xcc, 0xfc, 0xbc, 0x62, 0x88, 0xac, + 0x92, 0x39, 0x17, 0xb7, 0x4f, 0x7e, 0x72, 0x76, 0x50, 0x6a, 0x61, 0x69, 0x6a, 0x71, 0x89, 0x90, + 0x10, 0x17, 0x4b, 0x5e, 0x62, 0x6e, 0xaa, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x4f, 0x10, 0x98, 0x2d, + 0x24, 0xc2, 0xc5, 0x9a, 0x93, 0x9a, 0x58, 0x9c, 0x2a, 0xc1, 0xa4, 0xc0, 0xa8, 0xc1, 0x1c, 0x04, + 0xe1, 0x28, 0x85, 0x71, 0xf1, 0x40, 0x34, 0x16, 0x17, 0xe4, 0xe7, 0x15, 0xa7, 0x0a, 0x99, 0x70, + 0xb1, 0x65, 0xa4, 0x26, 0xa6, 0xa4, 0x16, 0x81, 0xf5, 0x72, 0x1b, 0xc9, 0xe8, 0x21, 0xbb, 0x47, + 0x0f, 0xa6, 0xce, 0x03, 0xac, 0x26, 0x08, 0xaa, 0x56, 0x48, 0x80, 0x8b, 0x39, 0x3b, 0xb5, 0x12, + 0x6c, 0x32, 0x4f, 0x10, 0x88, 0xa9, 0xa4, 0xc8, 0xc5, 0x1b, 0x9a, 0x97, 0x83, 0xe4, 0x24, 0xa8, + 0x12, 0x46, 0x84, 0x12, 0x37, 0x2e, 0x3e, 0x98, 0x12, 0x4a, 0x2c, 0x37, 0xda, 0xc0, 0xc8, 0xc5, + 0x02, 0xf2, 0x83, 0x90, 0x3f, 0x94, 0x16, 0xd5, 0x83, 0x05, 0xab, 0x1e, 0x52, 0xa0, 0x48, 0x89, + 0xa1, 0x0b, 0x43, 0x4c, 0x53, 0x92, 0x68, 0xba, 0xfc, 0x64, 0x32, 0x93, 0x90, 0x12, 0xaf, 0x7e, + 0x99, 0xb1, 0x3e, 0x48, 0x01, 0x98, 0xb0, 0x62, 0xd4, 0x12, 0x0a, 0xe7, 0x62, 0x83, 0xb8, 0x50, + 0x48, 0x1c, 0xa1, 0x17, 0xc5, 0x5b, 0x52, 0x12, 0x98, 0x12, 0x50, 0x63, 0xa5, 0xc0, 0xc6, 0x8a, + 0x28, 0xf1, 0xc3, 0x8d, 0x2d, 0xcd, 0x83, 0x1a, 0xec, 0xe4, 0x75, 0xe2, 0x91, 0x1c, 0xe3, 0x85, + 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0xce, 0x78, 0x2c, 0xc7, 0x10, 0x65, 0x91, 0x9e, 0x0f, + 0xf6, 0xac, 0x5e, 0x66, 0x3e, 0x38, 0x05, 0xe8, 0x43, 0x7c, 0x0d, 0xd2, 0x8b, 0x08, 0x03, 0x70, + 0xe4, 0x43, 0xec, 0xd3, 0x87, 0x59, 0x9b, 0xc4, 0x06, 0x4e, 0x01, 0xc6, 0x80, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x2a, 0x20, 0x0d, 0x43, 0x5a, 0x02, 0x00, 0x00, } func (m *LockRequest) Marshal() (dAtA []byte, err error) { diff --git a/server/lease/leasepb/lease.pb.go b/server/lease/leasepb/lease.pb.go index 949bbfdc3b6b..784a64a9db01 100644 --- a/server/lease/leasepb/lease.pb.go +++ b/server/lease/leasepb/lease.pb.go @@ -9,7 +9,6 @@ import ( math "math" math_bits "math/bits" - _ "github.com/gogo/protobuf/gogoproto" proto "github.com/golang/protobuf/proto" etcdserverpb "go.etcd.io/etcd/api/v3/etcdserverpb" ) @@ -191,25 +190,24 @@ func init() { func init() { proto.RegisterFile("lease.proto", fileDescriptor_3dd57e402472b33a) } var fileDescriptor_3dd57e402472b33a = []byte{ - // 274 bytes of a gzipped FileDescriptorProto + // 261 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0xce, 0x49, 0x4d, 0x2c, - 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x07, 0x73, 0x0a, 0x92, 0xa4, 0x44, 0xd2, - 0xf3, 0xd3, 0xf3, 0xc1, 0x62, 0xfa, 0x20, 0x16, 0x44, 0x5a, 0x4a, 0x3e, 0xb5, 0x24, 0x39, 0x45, - 0x3f, 0xb1, 0x20, 0x53, 0x1f, 0xc4, 0x28, 0x4e, 0x2d, 0x2a, 0x4b, 0x2d, 0x2a, 0x48, 0xd2, 0x2f, - 0x2a, 0x48, 0x86, 0x28, 0x50, 0xf2, 0xe5, 0x62, 0xf5, 0x01, 0x99, 0x20, 0xc4, 0xc7, 0xc5, 0xe4, - 0xe9, 0x22, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x1c, 0xc4, 0xe4, 0xe9, 0x22, 0x24, 0xc0, 0xc5, 0x1c, - 0x12, 0xe2, 0x23, 0xc1, 0x04, 0x16, 0x00, 0x31, 0x85, 0x94, 0xb8, 0x78, 0x82, 0x52, 0x73, 0x13, - 0x33, 0xf3, 0x32, 0xf3, 0xd2, 0x41, 0x52, 0xcc, 0x60, 0x29, 0x14, 0x31, 0xa5, 0x12, 0x2e, 0x11, - 0xb0, 0x71, 0x9e, 0x79, 0x25, 0xa9, 0x45, 0x79, 0x89, 0x39, 0x41, 0xa9, 0x85, 0xa5, 0xa9, 0xc5, - 0x25, 0x42, 0x31, 0x5c, 0x62, 0x60, 0xf1, 0x90, 0xcc, 0xdc, 0xd4, 0x90, 0x7c, 0x9f, 0xcc, 0xb2, - 0x54, 0xa8, 0x0c, 0xd8, 0x46, 0x6e, 0x23, 0x15, 0x3d, 0x64, 0xf7, 0xe9, 0x61, 0x57, 0x1b, 0x84, - 0xc3, 0x0c, 0xa5, 0x0a, 0x2e, 0x51, 0x34, 0x5b, 0x8b, 0x0b, 0xf2, 0xf3, 0x8a, 0x53, 0x85, 0xe2, - 0xb9, 0xc4, 0x31, 0xb4, 0x40, 0xa4, 0xa0, 0xf6, 0xaa, 0x12, 0xb0, 0x17, 0xa2, 0x38, 0x08, 0x97, - 0x29, 0x4e, 0x8e, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, - 0x8c, 0xc7, 0x72, 0x0c, 0x51, 0xfa, 0xe9, 0xf9, 0x60, 0x33, 0xf5, 0x32, 0xf3, 0xc1, 0x61, 0xae, - 0x0f, 0x31, 0x5c, 0xbf, 0xcc, 0x58, 0x1f, 0x1c, 0x55, 0xfa, 0xd0, 0x08, 0xb3, 0x86, 0xd2, 0x49, - 0x6c, 0xe0, 0x88, 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x93, 0x5c, 0x2a, 0xb6, 0xd7, 0x01, - 0x00, 0x00, + 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x07, 0x73, 0x0a, 0x92, 0xa4, 0xe4, 0x53, + 0x4b, 0x92, 0x53, 0xf4, 0x13, 0x0b, 0x32, 0xf5, 0x41, 0x8c, 0xe2, 0xd4, 0xa2, 0xb2, 0xd4, 0xa2, + 0x82, 0x24, 0xfd, 0xa2, 0x82, 0x64, 0x88, 0x4a, 0x25, 0x5f, 0x2e, 0x56, 0x1f, 0x90, 0x5a, 0x21, + 0x3e, 0x2e, 0x26, 0x4f, 0x17, 0x09, 0x46, 0x05, 0x46, 0x0d, 0xe6, 0x20, 0x26, 0x4f, 0x17, 0x21, + 0x01, 0x2e, 0xe6, 0x90, 0x10, 0x1f, 0x09, 0x26, 0xb0, 0x00, 0x88, 0x29, 0xa4, 0xc4, 0xc5, 0x13, + 0x94, 0x9a, 0x9b, 0x98, 0x99, 0x97, 0x99, 0x97, 0x0e, 0x92, 0x62, 0x06, 0x4b, 0xa1, 0x88, 0x29, + 0x95, 0x70, 0x89, 0x80, 0x8d, 0xf3, 0xcc, 0x2b, 0x49, 0x2d, 0xca, 0x4b, 0xcc, 0x09, 0x4a, 0x2d, + 0x2c, 0x4d, 0x2d, 0x2e, 0x11, 0x8a, 0xe1, 0x12, 0x03, 0x8b, 0x87, 0x64, 0xe6, 0xa6, 0x86, 0xe4, + 0xfb, 0x64, 0x96, 0xa5, 0x42, 0x65, 0xc0, 0x36, 0x72, 0x1b, 0xa9, 0xe8, 0x21, 0xbb, 0x4f, 0x0f, + 0xbb, 0xda, 0x20, 0x1c, 0x66, 0x28, 0x55, 0x70, 0x89, 0xa2, 0xd9, 0x5a, 0x5c, 0x90, 0x9f, 0x57, + 0x9c, 0x2a, 0x14, 0xcf, 0x25, 0x8e, 0xa1, 0x05, 0x22, 0x05, 0xb5, 0x57, 0x95, 0x80, 0xbd, 0x10, + 0xc5, 0x41, 0xb8, 0x4c, 0x71, 0x72, 0x3c, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, + 0x8f, 0xe4, 0x18, 0x67, 0x3c, 0x96, 0x63, 0x88, 0xd2, 0x4f, 0xcf, 0x07, 0x9b, 0xa9, 0x97, 0x99, + 0x0f, 0x0e, 0x73, 0x7d, 0x88, 0xe1, 0xfa, 0x65, 0xc6, 0xfa, 0xe0, 0x48, 0xd1, 0x87, 0x46, 0x8d, + 0x35, 0x94, 0x4e, 0x62, 0x03, 0x47, 0x84, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x2c, 0x7a, 0xc1, + 0x88, 0xc1, 0x01, 0x00, 0x00, } func (m *Lease) Marshal() (dAtA []byte, err error) { From 90652f5b5a58e68eab84f5707cc21dd2f45ae776 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 20 Nov 2025 18:24:03 -0500 Subject: [PATCH 0806/1068] Ensure local and go bin are used in genproto Signed-off-by: Jordan Liggitt --- go.work.sum | 1 - scripts/genproto.sh | 5 +++-- tools/mod/go.mod | 19 ++++++++++--------- tools/mod/go.sum | 2 ++ tools/mod/tools.go | 2 ++ 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/go.work.sum b/go.work.sum index 6a9c1646061f..d5c666861fc1 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1039,7 +1039,6 @@ google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeB google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6 h1:ExN12ndbJ608cboPYflpTny6mXSzPrDLh0iTaVrRrds= google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6/go.mod h1:6ytKWczdvnpnO+m+JiG9NjEDzR1FJfsnmJdG7B8QVZ8= google.golang.org/grpc/gcp/observability v1.0.1 h1:2IQ7szW1gobfZaS/sDSAu2uxO0V/aTryMZvlcyqKqQA= diff --git a/scripts/genproto.sh b/scripts/genproto.sh index c84e9202b4bb..2253eb2a2df2 100755 --- a/scripts/genproto.sh +++ b/scripts/genproto.sh @@ -45,6 +45,9 @@ fi source ./scripts/test_lib.sh +PATH=$(pwd)/bin:$(go env GOPATH)/bin:$PATH +export PATH + if [[ $(protoc --version | cut -f2 -d' ') != "3.20.3" ]]; then echo "Could not find protoc 3.20.3, installing now..." @@ -70,8 +73,6 @@ if [[ $(protoc --version | cut -f2 -d' ') != "3.20.3" ]]; then wget ${download_url} && unzip -p ${protoc_download_file} bin/protoc > tmpFile && mv tmpFile bin/protoc rm ${protoc_download_file} chmod +x bin/protoc - PATH=$PATH:$(pwd)/bin - export PATH echo "Now running: $(protoc --version)" fi diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 562c145ecfdf..7d43132dcf43 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -16,7 +16,9 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee - golang.org/x/tools v0.41.0 + golang.org/x/tools v0.42.0 + google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 + google.golang.org/protobuf v1.36.11 gotest.tools/gotestsum v1.13.0 gotest.tools/v3 v3.5.2 honnef.co/go/tools v0.6.1 @@ -236,20 +238,19 @@ require ( go.uber.org/zap v1.27.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.47.0 // indirect + golang.org/x/crypto v0.48.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546 // indirect - golang.org/x/mod v0.32.0 // indirect - golang.org/x/net v0.49.0 // indirect + golang.org/x/mod v0.33.0 // indirect + golang.org/x/net v0.50.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/telemetry v0.0.0-20260109210033-bd525da824e2 // indirect - golang.org/x/term v0.39.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 // indirect + golang.org/x/term v0.40.0 // indirect + golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/grpc v1.78.0 // indirect - google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect mvdan.cc/gofumpt v0.9.2 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 39c47c5f378d..7c6de3c44fb0 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -721,6 +721,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 h1:F29+wU6Ee6qgu9TddPgooOdaqsxTMunOoj8KA5yuS5A= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1/go.mod h1:5KF+wpkbTSbGcR9zteSqZV6fqFOWBl4Yde8En8MryZA= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/tools/mod/tools.go b/tools/mod/tools.go index e88aa4a7a1ca..c5869ccdddd4 100644 --- a/tools/mod/tools.go +++ b/tools/mod/tools.go @@ -31,6 +31,8 @@ import ( _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2" _ "github.com/ryancurrah/gomodguard/cmd/gomodguard" _ "golang.org/x/tools/cmd/goimports" + _ "google.golang.org/grpc/cmd/protoc-gen-go-grpc" + _ "google.golang.org/protobuf/cmd/protoc-gen-go" _ "gotest.tools/gotestsum" _ "gotest.tools/v3" _ "honnef.co/go/tools/cmd/staticcheck" From 555dc0b2deaa51ccb77ff4ad7c3bf0a07d755d07 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 20 Nov 2025 18:35:12 -0500 Subject: [PATCH 0807/1068] generate: scripts/genproto.sh Signed-off-by: Jordan Liggitt --- api/etcdserverpb/rpc_grpc.pb.go | 540 ++++++++++-------- .../v3electionpb/v3election_grpc.pb.go | 106 ++-- .../api/v3lock/v3lockpb/v3lock_grpc.pb.go | 46 +- 3 files changed, 398 insertions(+), 294 deletions(-) diff --git a/api/etcdserverpb/rpc_grpc.pb.go b/api/etcdserverpb/rpc_grpc.pb.go index 122242e167b1..68e0b4fb41a7 100644 --- a/api/etcdserverpb/rpc_grpc.pb.go +++ b/api/etcdserverpb/rpc_grpc.pb.go @@ -1,4 +1,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v3.20.3 +// source: rpc.proto package etcdserverpb @@ -12,8 +16,16 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + KV_Range_FullMethodName = "/etcdserverpb.KV/Range" + KV_Put_FullMethodName = "/etcdserverpb.KV/Put" + KV_DeleteRange_FullMethodName = "/etcdserverpb.KV/DeleteRange" + KV_Txn_FullMethodName = "/etcdserverpb.KV/Txn" + KV_Compact_FullMethodName = "/etcdserverpb.KV/Compact" +) // KVClient is the client API for KV service. // @@ -49,8 +61,9 @@ func NewKVClient(cc grpc.ClientConnInterface) KVClient { } func (c *kVClient) Range(ctx context.Context, in *RangeRequest, opts ...grpc.CallOption) (*RangeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RangeResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.KV/Range", in, out, opts...) + err := c.cc.Invoke(ctx, KV_Range_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -58,8 +71,9 @@ func (c *kVClient) Range(ctx context.Context, in *RangeRequest, opts ...grpc.Cal } func (c *kVClient) Put(ctx context.Context, in *PutRequest, opts ...grpc.CallOption) (*PutResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(PutResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.KV/Put", in, out, opts...) + err := c.cc.Invoke(ctx, KV_Put_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -67,8 +81,9 @@ func (c *kVClient) Put(ctx context.Context, in *PutRequest, opts ...grpc.CallOpt } func (c *kVClient) DeleteRange(ctx context.Context, in *DeleteRangeRequest, opts ...grpc.CallOption) (*DeleteRangeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteRangeResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.KV/DeleteRange", in, out, opts...) + err := c.cc.Invoke(ctx, KV_DeleteRange_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -76,8 +91,9 @@ func (c *kVClient) DeleteRange(ctx context.Context, in *DeleteRangeRequest, opts } func (c *kVClient) Txn(ctx context.Context, in *TxnRequest, opts ...grpc.CallOption) (*TxnResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(TxnResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.KV/Txn", in, out, opts...) + err := c.cc.Invoke(ctx, KV_Txn_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -85,8 +101,9 @@ func (c *kVClient) Txn(ctx context.Context, in *TxnRequest, opts ...grpc.CallOpt } func (c *kVClient) Compact(ctx context.Context, in *CompactionRequest, opts ...grpc.CallOption) (*CompactionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CompactionResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.KV/Compact", in, out, opts...) + err := c.cc.Invoke(ctx, KV_Compact_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -95,7 +112,7 @@ func (c *kVClient) Compact(ctx context.Context, in *CompactionRequest, opts ...g // KVServer is the server API for KV service. // All implementations must embed UnimplementedKVServer -// for forward compatibility +// for forward compatibility. type KVServer interface { // Range gets the keys in the range from the key-value store. Range(context.Context, *RangeRequest) (*RangeResponse, error) @@ -119,9 +136,12 @@ type KVServer interface { mustEmbedUnimplementedKVServer() } -// UnimplementedKVServer must be embedded to have forward compatible implementations. -type UnimplementedKVServer struct { -} +// UnimplementedKVServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedKVServer struct{} func (UnimplementedKVServer) Range(context.Context, *RangeRequest) (*RangeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Range not implemented") @@ -139,6 +159,7 @@ func (UnimplementedKVServer) Compact(context.Context, *CompactionRequest) (*Comp return nil, status.Errorf(codes.Unimplemented, "method Compact not implemented") } func (UnimplementedKVServer) mustEmbedUnimplementedKVServer() {} +func (UnimplementedKVServer) testEmbeddedByValue() {} // UnsafeKVServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to KVServer will @@ -148,6 +169,13 @@ type UnsafeKVServer interface { } func RegisterKVServer(s grpc.ServiceRegistrar, srv KVServer) { + // If the following call pancis, it indicates UnimplementedKVServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&KV_ServiceDesc, srv) } @@ -161,7 +189,7 @@ func _KV_Range_Handler(srv interface{}, ctx context.Context, dec func(interface{ } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.KV/Range", + FullMethod: KV_Range_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(KVServer).Range(ctx, req.(*RangeRequest)) @@ -179,7 +207,7 @@ func _KV_Put_Handler(srv interface{}, ctx context.Context, dec func(interface{}) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.KV/Put", + FullMethod: KV_Put_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(KVServer).Put(ctx, req.(*PutRequest)) @@ -197,7 +225,7 @@ func _KV_DeleteRange_Handler(srv interface{}, ctx context.Context, dec func(inte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.KV/DeleteRange", + FullMethod: KV_DeleteRange_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(KVServer).DeleteRange(ctx, req.(*DeleteRangeRequest)) @@ -215,7 +243,7 @@ func _KV_Txn_Handler(srv interface{}, ctx context.Context, dec func(interface{}) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.KV/Txn", + FullMethod: KV_Txn_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(KVServer).Txn(ctx, req.(*TxnRequest)) @@ -233,7 +261,7 @@ func _KV_Compact_Handler(srv interface{}, ctx context.Context, dec func(interfac } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.KV/Compact", + FullMethod: KV_Compact_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(KVServer).Compact(ctx, req.(*CompactionRequest)) @@ -273,6 +301,10 @@ var KV_ServiceDesc = grpc.ServiceDesc{ Metadata: "rpc.proto", } +const ( + Watch_Watch_FullMethodName = "/etcdserverpb.Watch/Watch" +) + // WatchClient is the client API for Watch service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -282,7 +314,7 @@ type WatchClient interface { // stream sends events. One watch RPC can watch on multiple key ranges, streaming events // for several watches at once. The entire event history can be watched starting from the // last compaction revision. - Watch(ctx context.Context, opts ...grpc.CallOption) (Watch_WatchClient, error) + Watch(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[WatchRequest, WatchResponse], error) } type watchClient struct { @@ -293,58 +325,44 @@ func NewWatchClient(cc grpc.ClientConnInterface) WatchClient { return &watchClient{cc} } -func (c *watchClient) Watch(ctx context.Context, opts ...grpc.CallOption) (Watch_WatchClient, error) { - stream, err := c.cc.NewStream(ctx, &Watch_ServiceDesc.Streams[0], "/etcdserverpb.Watch/Watch", opts...) +func (c *watchClient) Watch(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[WatchRequest, WatchResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &Watch_ServiceDesc.Streams[0], Watch_Watch_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &watchWatchClient{stream} + x := &grpc.GenericClientStream[WatchRequest, WatchResponse]{ClientStream: stream} return x, nil } -type Watch_WatchClient interface { - Send(*WatchRequest) error - Recv() (*WatchResponse, error) - grpc.ClientStream -} - -type watchWatchClient struct { - grpc.ClientStream -} - -func (x *watchWatchClient) Send(m *WatchRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *watchWatchClient) Recv() (*WatchResponse, error) { - m := new(WatchResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Watch_WatchClient = grpc.BidiStreamingClient[WatchRequest, WatchResponse] // WatchServer is the server API for Watch service. // All implementations must embed UnimplementedWatchServer -// for forward compatibility +// for forward compatibility. type WatchServer interface { // Watch watches for events happening or that have happened. Both input and output // are streams; the input stream is for creating and canceling watchers and the output // stream sends events. One watch RPC can watch on multiple key ranges, streaming events // for several watches at once. The entire event history can be watched starting from the // last compaction revision. - Watch(Watch_WatchServer) error + Watch(grpc.BidiStreamingServer[WatchRequest, WatchResponse]) error mustEmbedUnimplementedWatchServer() } -// UnimplementedWatchServer must be embedded to have forward compatible implementations. -type UnimplementedWatchServer struct { -} +// UnimplementedWatchServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedWatchServer struct{} -func (UnimplementedWatchServer) Watch(Watch_WatchServer) error { +func (UnimplementedWatchServer) Watch(grpc.BidiStreamingServer[WatchRequest, WatchResponse]) error { return status.Errorf(codes.Unimplemented, "method Watch not implemented") } func (UnimplementedWatchServer) mustEmbedUnimplementedWatchServer() {} +func (UnimplementedWatchServer) testEmbeddedByValue() {} // UnsafeWatchServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to WatchServer will @@ -354,34 +372,22 @@ type UnsafeWatchServer interface { } func RegisterWatchServer(s grpc.ServiceRegistrar, srv WatchServer) { + // If the following call pancis, it indicates UnimplementedWatchServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Watch_ServiceDesc, srv) } func _Watch_Watch_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(WatchServer).Watch(&watchWatchServer{stream}) + return srv.(WatchServer).Watch(&grpc.GenericServerStream[WatchRequest, WatchResponse]{ServerStream: stream}) } -type Watch_WatchServer interface { - Send(*WatchResponse) error - Recv() (*WatchRequest, error) - grpc.ServerStream -} - -type watchWatchServer struct { - grpc.ServerStream -} - -func (x *watchWatchServer) Send(m *WatchResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *watchWatchServer) Recv() (*WatchRequest, error) { - m := new(WatchRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Watch_WatchServer = grpc.BidiStreamingServer[WatchRequest, WatchResponse] // Watch_ServiceDesc is the grpc.ServiceDesc for Watch service. // It's only intended for direct use with grpc.RegisterService, @@ -401,6 +407,14 @@ var Watch_ServiceDesc = grpc.ServiceDesc{ Metadata: "rpc.proto", } +const ( + Lease_LeaseGrant_FullMethodName = "/etcdserverpb.Lease/LeaseGrant" + Lease_LeaseRevoke_FullMethodName = "/etcdserverpb.Lease/LeaseRevoke" + Lease_LeaseKeepAlive_FullMethodName = "/etcdserverpb.Lease/LeaseKeepAlive" + Lease_LeaseTimeToLive_FullMethodName = "/etcdserverpb.Lease/LeaseTimeToLive" + Lease_LeaseLeases_FullMethodName = "/etcdserverpb.Lease/LeaseLeases" +) + // LeaseClient is the client API for Lease service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -413,7 +427,7 @@ type LeaseClient interface { LeaseRevoke(ctx context.Context, in *LeaseRevokeRequest, opts ...grpc.CallOption) (*LeaseRevokeResponse, error) // LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client // to the server and streaming keep alive responses from the server to the client. - LeaseKeepAlive(ctx context.Context, opts ...grpc.CallOption) (Lease_LeaseKeepAliveClient, error) + LeaseKeepAlive(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[LeaseKeepAliveRequest, LeaseKeepAliveResponse], error) // LeaseTimeToLive retrieves lease information. LeaseTimeToLive(ctx context.Context, in *LeaseTimeToLiveRequest, opts ...grpc.CallOption) (*LeaseTimeToLiveResponse, error) // LeaseLeases lists all existing leases. @@ -429,8 +443,9 @@ func NewLeaseClient(cc grpc.ClientConnInterface) LeaseClient { } func (c *leaseClient) LeaseGrant(ctx context.Context, in *LeaseGrantRequest, opts ...grpc.CallOption) (*LeaseGrantResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(LeaseGrantResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Lease/LeaseGrant", in, out, opts...) + err := c.cc.Invoke(ctx, Lease_LeaseGrant_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -438,48 +453,32 @@ func (c *leaseClient) LeaseGrant(ctx context.Context, in *LeaseGrantRequest, opt } func (c *leaseClient) LeaseRevoke(ctx context.Context, in *LeaseRevokeRequest, opts ...grpc.CallOption) (*LeaseRevokeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(LeaseRevokeResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Lease/LeaseRevoke", in, out, opts...) + err := c.cc.Invoke(ctx, Lease_LeaseRevoke_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *leaseClient) LeaseKeepAlive(ctx context.Context, opts ...grpc.CallOption) (Lease_LeaseKeepAliveClient, error) { - stream, err := c.cc.NewStream(ctx, &Lease_ServiceDesc.Streams[0], "/etcdserverpb.Lease/LeaseKeepAlive", opts...) +func (c *leaseClient) LeaseKeepAlive(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[LeaseKeepAliveRequest, LeaseKeepAliveResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &Lease_ServiceDesc.Streams[0], Lease_LeaseKeepAlive_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &leaseLeaseKeepAliveClient{stream} + x := &grpc.GenericClientStream[LeaseKeepAliveRequest, LeaseKeepAliveResponse]{ClientStream: stream} return x, nil } -type Lease_LeaseKeepAliveClient interface { - Send(*LeaseKeepAliveRequest) error - Recv() (*LeaseKeepAliveResponse, error) - grpc.ClientStream -} - -type leaseLeaseKeepAliveClient struct { - grpc.ClientStream -} - -func (x *leaseLeaseKeepAliveClient) Send(m *LeaseKeepAliveRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *leaseLeaseKeepAliveClient) Recv() (*LeaseKeepAliveResponse, error) { - m := new(LeaseKeepAliveResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Lease_LeaseKeepAliveClient = grpc.BidiStreamingClient[LeaseKeepAliveRequest, LeaseKeepAliveResponse] func (c *leaseClient) LeaseTimeToLive(ctx context.Context, in *LeaseTimeToLiveRequest, opts ...grpc.CallOption) (*LeaseTimeToLiveResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(LeaseTimeToLiveResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Lease/LeaseTimeToLive", in, out, opts...) + err := c.cc.Invoke(ctx, Lease_LeaseTimeToLive_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -487,8 +486,9 @@ func (c *leaseClient) LeaseTimeToLive(ctx context.Context, in *LeaseTimeToLiveRe } func (c *leaseClient) LeaseLeases(ctx context.Context, in *LeaseLeasesRequest, opts ...grpc.CallOption) (*LeaseLeasesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(LeaseLeasesResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Lease/LeaseLeases", in, out, opts...) + err := c.cc.Invoke(ctx, Lease_LeaseLeases_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -497,7 +497,7 @@ func (c *leaseClient) LeaseLeases(ctx context.Context, in *LeaseLeasesRequest, o // LeaseServer is the server API for Lease service. // All implementations must embed UnimplementedLeaseServer -// for forward compatibility +// for forward compatibility. type LeaseServer interface { // LeaseGrant creates a lease which expires if the server does not receive a keepAlive // within a given time to live period. All keys attached to the lease will be expired and @@ -507,7 +507,7 @@ type LeaseServer interface { LeaseRevoke(context.Context, *LeaseRevokeRequest) (*LeaseRevokeResponse, error) // LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client // to the server and streaming keep alive responses from the server to the client. - LeaseKeepAlive(Lease_LeaseKeepAliveServer) error + LeaseKeepAlive(grpc.BidiStreamingServer[LeaseKeepAliveRequest, LeaseKeepAliveResponse]) error // LeaseTimeToLive retrieves lease information. LeaseTimeToLive(context.Context, *LeaseTimeToLiveRequest) (*LeaseTimeToLiveResponse, error) // LeaseLeases lists all existing leases. @@ -515,9 +515,12 @@ type LeaseServer interface { mustEmbedUnimplementedLeaseServer() } -// UnimplementedLeaseServer must be embedded to have forward compatible implementations. -type UnimplementedLeaseServer struct { -} +// UnimplementedLeaseServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedLeaseServer struct{} func (UnimplementedLeaseServer) LeaseGrant(context.Context, *LeaseGrantRequest) (*LeaseGrantResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method LeaseGrant not implemented") @@ -525,7 +528,7 @@ func (UnimplementedLeaseServer) LeaseGrant(context.Context, *LeaseGrantRequest) func (UnimplementedLeaseServer) LeaseRevoke(context.Context, *LeaseRevokeRequest) (*LeaseRevokeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method LeaseRevoke not implemented") } -func (UnimplementedLeaseServer) LeaseKeepAlive(Lease_LeaseKeepAliveServer) error { +func (UnimplementedLeaseServer) LeaseKeepAlive(grpc.BidiStreamingServer[LeaseKeepAliveRequest, LeaseKeepAliveResponse]) error { return status.Errorf(codes.Unimplemented, "method LeaseKeepAlive not implemented") } func (UnimplementedLeaseServer) LeaseTimeToLive(context.Context, *LeaseTimeToLiveRequest) (*LeaseTimeToLiveResponse, error) { @@ -535,6 +538,7 @@ func (UnimplementedLeaseServer) LeaseLeases(context.Context, *LeaseLeasesRequest return nil, status.Errorf(codes.Unimplemented, "method LeaseLeases not implemented") } func (UnimplementedLeaseServer) mustEmbedUnimplementedLeaseServer() {} +func (UnimplementedLeaseServer) testEmbeddedByValue() {} // UnsafeLeaseServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to LeaseServer will @@ -544,6 +548,13 @@ type UnsafeLeaseServer interface { } func RegisterLeaseServer(s grpc.ServiceRegistrar, srv LeaseServer) { + // If the following call pancis, it indicates UnimplementedLeaseServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Lease_ServiceDesc, srv) } @@ -557,7 +568,7 @@ func _Lease_LeaseGrant_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Lease/LeaseGrant", + FullMethod: Lease_LeaseGrant_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LeaseServer).LeaseGrant(ctx, req.(*LeaseGrantRequest)) @@ -575,7 +586,7 @@ func _Lease_LeaseRevoke_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Lease/LeaseRevoke", + FullMethod: Lease_LeaseRevoke_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LeaseServer).LeaseRevoke(ctx, req.(*LeaseRevokeRequest)) @@ -584,30 +595,11 @@ func _Lease_LeaseRevoke_Handler(srv interface{}, ctx context.Context, dec func(i } func _Lease_LeaseKeepAlive_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(LeaseServer).LeaseKeepAlive(&leaseLeaseKeepAliveServer{stream}) -} - -type Lease_LeaseKeepAliveServer interface { - Send(*LeaseKeepAliveResponse) error - Recv() (*LeaseKeepAliveRequest, error) - grpc.ServerStream -} - -type leaseLeaseKeepAliveServer struct { - grpc.ServerStream + return srv.(LeaseServer).LeaseKeepAlive(&grpc.GenericServerStream[LeaseKeepAliveRequest, LeaseKeepAliveResponse]{ServerStream: stream}) } -func (x *leaseLeaseKeepAliveServer) Send(m *LeaseKeepAliveResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *leaseLeaseKeepAliveServer) Recv() (*LeaseKeepAliveRequest, error) { - m := new(LeaseKeepAliveRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Lease_LeaseKeepAliveServer = grpc.BidiStreamingServer[LeaseKeepAliveRequest, LeaseKeepAliveResponse] func _Lease_LeaseTimeToLive_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(LeaseTimeToLiveRequest) @@ -619,7 +611,7 @@ func _Lease_LeaseTimeToLive_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Lease/LeaseTimeToLive", + FullMethod: Lease_LeaseTimeToLive_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LeaseServer).LeaseTimeToLive(ctx, req.(*LeaseTimeToLiveRequest)) @@ -637,7 +629,7 @@ func _Lease_LeaseLeases_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Lease/LeaseLeases", + FullMethod: Lease_LeaseLeases_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LeaseServer).LeaseLeases(ctx, req.(*LeaseLeasesRequest)) @@ -680,6 +672,14 @@ var Lease_ServiceDesc = grpc.ServiceDesc{ Metadata: "rpc.proto", } +const ( + Cluster_MemberAdd_FullMethodName = "/etcdserverpb.Cluster/MemberAdd" + Cluster_MemberRemove_FullMethodName = "/etcdserverpb.Cluster/MemberRemove" + Cluster_MemberUpdate_FullMethodName = "/etcdserverpb.Cluster/MemberUpdate" + Cluster_MemberList_FullMethodName = "/etcdserverpb.Cluster/MemberList" + Cluster_MemberPromote_FullMethodName = "/etcdserverpb.Cluster/MemberPromote" +) + // ClusterClient is the client API for Cluster service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -705,8 +705,9 @@ func NewClusterClient(cc grpc.ClientConnInterface) ClusterClient { } func (c *clusterClient) MemberAdd(ctx context.Context, in *MemberAddRequest, opts ...grpc.CallOption) (*MemberAddResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(MemberAddResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberAdd", in, out, opts...) + err := c.cc.Invoke(ctx, Cluster_MemberAdd_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -714,8 +715,9 @@ func (c *clusterClient) MemberAdd(ctx context.Context, in *MemberAddRequest, opt } func (c *clusterClient) MemberRemove(ctx context.Context, in *MemberRemoveRequest, opts ...grpc.CallOption) (*MemberRemoveResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(MemberRemoveResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberRemove", in, out, opts...) + err := c.cc.Invoke(ctx, Cluster_MemberRemove_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -723,8 +725,9 @@ func (c *clusterClient) MemberRemove(ctx context.Context, in *MemberRemoveReques } func (c *clusterClient) MemberUpdate(ctx context.Context, in *MemberUpdateRequest, opts ...grpc.CallOption) (*MemberUpdateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(MemberUpdateResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberUpdate", in, out, opts...) + err := c.cc.Invoke(ctx, Cluster_MemberUpdate_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -732,8 +735,9 @@ func (c *clusterClient) MemberUpdate(ctx context.Context, in *MemberUpdateReques } func (c *clusterClient) MemberList(ctx context.Context, in *MemberListRequest, opts ...grpc.CallOption) (*MemberListResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(MemberListResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberList", in, out, opts...) + err := c.cc.Invoke(ctx, Cluster_MemberList_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -741,8 +745,9 @@ func (c *clusterClient) MemberList(ctx context.Context, in *MemberListRequest, o } func (c *clusterClient) MemberPromote(ctx context.Context, in *MemberPromoteRequest, opts ...grpc.CallOption) (*MemberPromoteResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(MemberPromoteResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Cluster/MemberPromote", in, out, opts...) + err := c.cc.Invoke(ctx, Cluster_MemberPromote_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -751,7 +756,7 @@ func (c *clusterClient) MemberPromote(ctx context.Context, in *MemberPromoteRequ // ClusterServer is the server API for Cluster service. // All implementations must embed UnimplementedClusterServer -// for forward compatibility +// for forward compatibility. type ClusterServer interface { // MemberAdd adds a member into the cluster. MemberAdd(context.Context, *MemberAddRequest) (*MemberAddResponse, error) @@ -766,9 +771,12 @@ type ClusterServer interface { mustEmbedUnimplementedClusterServer() } -// UnimplementedClusterServer must be embedded to have forward compatible implementations. -type UnimplementedClusterServer struct { -} +// UnimplementedClusterServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedClusterServer struct{} func (UnimplementedClusterServer) MemberAdd(context.Context, *MemberAddRequest) (*MemberAddResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method MemberAdd not implemented") @@ -786,6 +794,7 @@ func (UnimplementedClusterServer) MemberPromote(context.Context, *MemberPromoteR return nil, status.Errorf(codes.Unimplemented, "method MemberPromote not implemented") } func (UnimplementedClusterServer) mustEmbedUnimplementedClusterServer() {} +func (UnimplementedClusterServer) testEmbeddedByValue() {} // UnsafeClusterServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ClusterServer will @@ -795,6 +804,13 @@ type UnsafeClusterServer interface { } func RegisterClusterServer(s grpc.ServiceRegistrar, srv ClusterServer) { + // If the following call pancis, it indicates UnimplementedClusterServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Cluster_ServiceDesc, srv) } @@ -808,7 +824,7 @@ func _Cluster_MemberAdd_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Cluster/MemberAdd", + FullMethod: Cluster_MemberAdd_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ClusterServer).MemberAdd(ctx, req.(*MemberAddRequest)) @@ -826,7 +842,7 @@ func _Cluster_MemberRemove_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Cluster/MemberRemove", + FullMethod: Cluster_MemberRemove_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ClusterServer).MemberRemove(ctx, req.(*MemberRemoveRequest)) @@ -844,7 +860,7 @@ func _Cluster_MemberUpdate_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Cluster/MemberUpdate", + FullMethod: Cluster_MemberUpdate_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ClusterServer).MemberUpdate(ctx, req.(*MemberUpdateRequest)) @@ -862,7 +878,7 @@ func _Cluster_MemberList_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Cluster/MemberList", + FullMethod: Cluster_MemberList_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ClusterServer).MemberList(ctx, req.(*MemberListRequest)) @@ -880,7 +896,7 @@ func _Cluster_MemberPromote_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Cluster/MemberPromote", + FullMethod: Cluster_MemberPromote_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ClusterServer).MemberPromote(ctx, req.(*MemberPromoteRequest)) @@ -920,6 +936,17 @@ var Cluster_ServiceDesc = grpc.ServiceDesc{ Metadata: "rpc.proto", } +const ( + Maintenance_Alarm_FullMethodName = "/etcdserverpb.Maintenance/Alarm" + Maintenance_Status_FullMethodName = "/etcdserverpb.Maintenance/Status" + Maintenance_Defragment_FullMethodName = "/etcdserverpb.Maintenance/Defragment" + Maintenance_Hash_FullMethodName = "/etcdserverpb.Maintenance/Hash" + Maintenance_HashKV_FullMethodName = "/etcdserverpb.Maintenance/HashKV" + Maintenance_Snapshot_FullMethodName = "/etcdserverpb.Maintenance/Snapshot" + Maintenance_MoveLeader_FullMethodName = "/etcdserverpb.Maintenance/MoveLeader" + Maintenance_Downgrade_FullMethodName = "/etcdserverpb.Maintenance/Downgrade" +) + // MaintenanceClient is the client API for Maintenance service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -941,7 +968,7 @@ type MaintenanceClient interface { // It only iterates "key" bucket in backend storage. HashKV(ctx context.Context, in *HashKVRequest, opts ...grpc.CallOption) (*HashKVResponse, error) // Snapshot sends a snapshot of the entire backend from a member over a stream to a client. - Snapshot(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (Maintenance_SnapshotClient, error) + Snapshot(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[SnapshotResponse], error) // MoveLeader requests current leader node to transfer its leadership to transferee. MoveLeader(ctx context.Context, in *MoveLeaderRequest, opts ...grpc.CallOption) (*MoveLeaderResponse, error) // Downgrade requests downgrades, verifies feasibility or cancels downgrade @@ -959,8 +986,9 @@ func NewMaintenanceClient(cc grpc.ClientConnInterface) MaintenanceClient { } func (c *maintenanceClient) Alarm(ctx context.Context, in *AlarmRequest, opts ...grpc.CallOption) (*AlarmResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AlarmResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Alarm", in, out, opts...) + err := c.cc.Invoke(ctx, Maintenance_Alarm_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -968,8 +996,9 @@ func (c *maintenanceClient) Alarm(ctx context.Context, in *AlarmRequest, opts .. } func (c *maintenanceClient) Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StatusResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Status", in, out, opts...) + err := c.cc.Invoke(ctx, Maintenance_Status_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -977,8 +1006,9 @@ func (c *maintenanceClient) Status(ctx context.Context, in *StatusRequest, opts } func (c *maintenanceClient) Defragment(ctx context.Context, in *DefragmentRequest, opts ...grpc.CallOption) (*DefragmentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DefragmentResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Defragment", in, out, opts...) + err := c.cc.Invoke(ctx, Maintenance_Defragment_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -986,8 +1016,9 @@ func (c *maintenanceClient) Defragment(ctx context.Context, in *DefragmentReques } func (c *maintenanceClient) Hash(ctx context.Context, in *HashRequest, opts ...grpc.CallOption) (*HashResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(HashResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Hash", in, out, opts...) + err := c.cc.Invoke(ctx, Maintenance_Hash_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -995,20 +1026,22 @@ func (c *maintenanceClient) Hash(ctx context.Context, in *HashRequest, opts ...g } func (c *maintenanceClient) HashKV(ctx context.Context, in *HashKVRequest, opts ...grpc.CallOption) (*HashKVResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(HashKVResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/HashKV", in, out, opts...) + err := c.cc.Invoke(ctx, Maintenance_HashKV_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *maintenanceClient) Snapshot(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (Maintenance_SnapshotClient, error) { - stream, err := c.cc.NewStream(ctx, &Maintenance_ServiceDesc.Streams[0], "/etcdserverpb.Maintenance/Snapshot", opts...) +func (c *maintenanceClient) Snapshot(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[SnapshotResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &Maintenance_ServiceDesc.Streams[0], Maintenance_Snapshot_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &maintenanceSnapshotClient{stream} + x := &grpc.GenericClientStream[SnapshotRequest, SnapshotResponse]{ClientStream: stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -1018,26 +1051,13 @@ func (c *maintenanceClient) Snapshot(ctx context.Context, in *SnapshotRequest, o return x, nil } -type Maintenance_SnapshotClient interface { - Recv() (*SnapshotResponse, error) - grpc.ClientStream -} - -type maintenanceSnapshotClient struct { - grpc.ClientStream -} - -func (x *maintenanceSnapshotClient) Recv() (*SnapshotResponse, error) { - m := new(SnapshotResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Maintenance_SnapshotClient = grpc.ServerStreamingClient[SnapshotResponse] func (c *maintenanceClient) MoveLeader(ctx context.Context, in *MoveLeaderRequest, opts ...grpc.CallOption) (*MoveLeaderResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(MoveLeaderResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/MoveLeader", in, out, opts...) + err := c.cc.Invoke(ctx, Maintenance_MoveLeader_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1045,8 +1065,9 @@ func (c *maintenanceClient) MoveLeader(ctx context.Context, in *MoveLeaderReques } func (c *maintenanceClient) Downgrade(ctx context.Context, in *DowngradeRequest, opts ...grpc.CallOption) (*DowngradeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DowngradeResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Maintenance/Downgrade", in, out, opts...) + err := c.cc.Invoke(ctx, Maintenance_Downgrade_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1055,7 +1076,7 @@ func (c *maintenanceClient) Downgrade(ctx context.Context, in *DowngradeRequest, // MaintenanceServer is the server API for Maintenance service. // All implementations must embed UnimplementedMaintenanceServer -// for forward compatibility +// for forward compatibility. type MaintenanceServer interface { // Alarm activates, deactivates, and queries alarms regarding cluster health. Alarm(context.Context, *AlarmRequest) (*AlarmResponse, error) @@ -1074,7 +1095,7 @@ type MaintenanceServer interface { // It only iterates "key" bucket in backend storage. HashKV(context.Context, *HashKVRequest) (*HashKVResponse, error) // Snapshot sends a snapshot of the entire backend from a member over a stream to a client. - Snapshot(*SnapshotRequest, Maintenance_SnapshotServer) error + Snapshot(*SnapshotRequest, grpc.ServerStreamingServer[SnapshotResponse]) error // MoveLeader requests current leader node to transfer its leadership to transferee. MoveLeader(context.Context, *MoveLeaderRequest) (*MoveLeaderResponse, error) // Downgrade requests downgrades, verifies feasibility or cancels downgrade @@ -1084,9 +1105,12 @@ type MaintenanceServer interface { mustEmbedUnimplementedMaintenanceServer() } -// UnimplementedMaintenanceServer must be embedded to have forward compatible implementations. -type UnimplementedMaintenanceServer struct { -} +// UnimplementedMaintenanceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedMaintenanceServer struct{} func (UnimplementedMaintenanceServer) Alarm(context.Context, *AlarmRequest) (*AlarmResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Alarm not implemented") @@ -1103,7 +1127,7 @@ func (UnimplementedMaintenanceServer) Hash(context.Context, *HashRequest) (*Hash func (UnimplementedMaintenanceServer) HashKV(context.Context, *HashKVRequest) (*HashKVResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method HashKV not implemented") } -func (UnimplementedMaintenanceServer) Snapshot(*SnapshotRequest, Maintenance_SnapshotServer) error { +func (UnimplementedMaintenanceServer) Snapshot(*SnapshotRequest, grpc.ServerStreamingServer[SnapshotResponse]) error { return status.Errorf(codes.Unimplemented, "method Snapshot not implemented") } func (UnimplementedMaintenanceServer) MoveLeader(context.Context, *MoveLeaderRequest) (*MoveLeaderResponse, error) { @@ -1113,6 +1137,7 @@ func (UnimplementedMaintenanceServer) Downgrade(context.Context, *DowngradeReque return nil, status.Errorf(codes.Unimplemented, "method Downgrade not implemented") } func (UnimplementedMaintenanceServer) mustEmbedUnimplementedMaintenanceServer() {} +func (UnimplementedMaintenanceServer) testEmbeddedByValue() {} // UnsafeMaintenanceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to MaintenanceServer will @@ -1122,6 +1147,13 @@ type UnsafeMaintenanceServer interface { } func RegisterMaintenanceServer(s grpc.ServiceRegistrar, srv MaintenanceServer) { + // If the following call pancis, it indicates UnimplementedMaintenanceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Maintenance_ServiceDesc, srv) } @@ -1135,7 +1167,7 @@ func _Maintenance_Alarm_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Maintenance/Alarm", + FullMethod: Maintenance_Alarm_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MaintenanceServer).Alarm(ctx, req.(*AlarmRequest)) @@ -1153,7 +1185,7 @@ func _Maintenance_Status_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Maintenance/Status", + FullMethod: Maintenance_Status_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MaintenanceServer).Status(ctx, req.(*StatusRequest)) @@ -1171,7 +1203,7 @@ func _Maintenance_Defragment_Handler(srv interface{}, ctx context.Context, dec f } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Maintenance/Defragment", + FullMethod: Maintenance_Defragment_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MaintenanceServer).Defragment(ctx, req.(*DefragmentRequest)) @@ -1189,7 +1221,7 @@ func _Maintenance_Hash_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Maintenance/Hash", + FullMethod: Maintenance_Hash_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MaintenanceServer).Hash(ctx, req.(*HashRequest)) @@ -1207,7 +1239,7 @@ func _Maintenance_HashKV_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Maintenance/HashKV", + FullMethod: Maintenance_HashKV_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MaintenanceServer).HashKV(ctx, req.(*HashKVRequest)) @@ -1220,21 +1252,11 @@ func _Maintenance_Snapshot_Handler(srv interface{}, stream grpc.ServerStream) er if err := stream.RecvMsg(m); err != nil { return err } - return srv.(MaintenanceServer).Snapshot(m, &maintenanceSnapshotServer{stream}) + return srv.(MaintenanceServer).Snapshot(m, &grpc.GenericServerStream[SnapshotRequest, SnapshotResponse]{ServerStream: stream}) } -type Maintenance_SnapshotServer interface { - Send(*SnapshotResponse) error - grpc.ServerStream -} - -type maintenanceSnapshotServer struct { - grpc.ServerStream -} - -func (x *maintenanceSnapshotServer) Send(m *SnapshotResponse) error { - return x.ServerStream.SendMsg(m) -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Maintenance_SnapshotServer = grpc.ServerStreamingServer[SnapshotResponse] func _Maintenance_MoveLeader_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MoveLeaderRequest) @@ -1246,7 +1268,7 @@ func _Maintenance_MoveLeader_Handler(srv interface{}, ctx context.Context, dec f } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Maintenance/MoveLeader", + FullMethod: Maintenance_MoveLeader_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MaintenanceServer).MoveLeader(ctx, req.(*MoveLeaderRequest)) @@ -1264,7 +1286,7 @@ func _Maintenance_Downgrade_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Maintenance/Downgrade", + FullMethod: Maintenance_Downgrade_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MaintenanceServer).Downgrade(ctx, req.(*DowngradeRequest)) @@ -1318,6 +1340,26 @@ var Maintenance_ServiceDesc = grpc.ServiceDesc{ Metadata: "rpc.proto", } +const ( + Auth_AuthEnable_FullMethodName = "/etcdserverpb.Auth/AuthEnable" + Auth_AuthDisable_FullMethodName = "/etcdserverpb.Auth/AuthDisable" + Auth_AuthStatus_FullMethodName = "/etcdserverpb.Auth/AuthStatus" + Auth_Authenticate_FullMethodName = "/etcdserverpb.Auth/Authenticate" + Auth_UserAdd_FullMethodName = "/etcdserverpb.Auth/UserAdd" + Auth_UserGet_FullMethodName = "/etcdserverpb.Auth/UserGet" + Auth_UserList_FullMethodName = "/etcdserverpb.Auth/UserList" + Auth_UserDelete_FullMethodName = "/etcdserverpb.Auth/UserDelete" + Auth_UserChangePassword_FullMethodName = "/etcdserverpb.Auth/UserChangePassword" + Auth_UserGrantRole_FullMethodName = "/etcdserverpb.Auth/UserGrantRole" + Auth_UserRevokeRole_FullMethodName = "/etcdserverpb.Auth/UserRevokeRole" + Auth_RoleAdd_FullMethodName = "/etcdserverpb.Auth/RoleAdd" + Auth_RoleGet_FullMethodName = "/etcdserverpb.Auth/RoleGet" + Auth_RoleList_FullMethodName = "/etcdserverpb.Auth/RoleList" + Auth_RoleDelete_FullMethodName = "/etcdserverpb.Auth/RoleDelete" + Auth_RoleGrantPermission_FullMethodName = "/etcdserverpb.Auth/RoleGrantPermission" + Auth_RoleRevokePermission_FullMethodName = "/etcdserverpb.Auth/RoleRevokePermission" +) + // AuthClient is the client API for Auth service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -1367,8 +1409,9 @@ func NewAuthClient(cc grpc.ClientConnInterface) AuthClient { } func (c *authClient) AuthEnable(ctx context.Context, in *AuthEnableRequest, opts ...grpc.CallOption) (*AuthEnableResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthEnableResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/AuthEnable", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_AuthEnable_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1376,8 +1419,9 @@ func (c *authClient) AuthEnable(ctx context.Context, in *AuthEnableRequest, opts } func (c *authClient) AuthDisable(ctx context.Context, in *AuthDisableRequest, opts ...grpc.CallOption) (*AuthDisableResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthDisableResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/AuthDisable", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_AuthDisable_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1385,8 +1429,9 @@ func (c *authClient) AuthDisable(ctx context.Context, in *AuthDisableRequest, op } func (c *authClient) AuthStatus(ctx context.Context, in *AuthStatusRequest, opts ...grpc.CallOption) (*AuthStatusResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthStatusResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/AuthStatus", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_AuthStatus_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1394,8 +1439,9 @@ func (c *authClient) AuthStatus(ctx context.Context, in *AuthStatusRequest, opts } func (c *authClient) Authenticate(ctx context.Context, in *AuthenticateRequest, opts ...grpc.CallOption) (*AuthenticateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthenticateResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/Authenticate", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_Authenticate_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1403,8 +1449,9 @@ func (c *authClient) Authenticate(ctx context.Context, in *AuthenticateRequest, } func (c *authClient) UserAdd(ctx context.Context, in *AuthUserAddRequest, opts ...grpc.CallOption) (*AuthUserAddResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthUserAddResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserAdd", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_UserAdd_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1412,8 +1459,9 @@ func (c *authClient) UserAdd(ctx context.Context, in *AuthUserAddRequest, opts . } func (c *authClient) UserGet(ctx context.Context, in *AuthUserGetRequest, opts ...grpc.CallOption) (*AuthUserGetResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthUserGetResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserGet", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_UserGet_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1421,8 +1469,9 @@ func (c *authClient) UserGet(ctx context.Context, in *AuthUserGetRequest, opts . } func (c *authClient) UserList(ctx context.Context, in *AuthUserListRequest, opts ...grpc.CallOption) (*AuthUserListResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthUserListResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserList", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_UserList_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1430,8 +1479,9 @@ func (c *authClient) UserList(ctx context.Context, in *AuthUserListRequest, opts } func (c *authClient) UserDelete(ctx context.Context, in *AuthUserDeleteRequest, opts ...grpc.CallOption) (*AuthUserDeleteResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthUserDeleteResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserDelete", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_UserDelete_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1439,8 +1489,9 @@ func (c *authClient) UserDelete(ctx context.Context, in *AuthUserDeleteRequest, } func (c *authClient) UserChangePassword(ctx context.Context, in *AuthUserChangePasswordRequest, opts ...grpc.CallOption) (*AuthUserChangePasswordResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthUserChangePasswordResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserChangePassword", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_UserChangePassword_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1448,8 +1499,9 @@ func (c *authClient) UserChangePassword(ctx context.Context, in *AuthUserChangeP } func (c *authClient) UserGrantRole(ctx context.Context, in *AuthUserGrantRoleRequest, opts ...grpc.CallOption) (*AuthUserGrantRoleResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthUserGrantRoleResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserGrantRole", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_UserGrantRole_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1457,8 +1509,9 @@ func (c *authClient) UserGrantRole(ctx context.Context, in *AuthUserGrantRoleReq } func (c *authClient) UserRevokeRole(ctx context.Context, in *AuthUserRevokeRoleRequest, opts ...grpc.CallOption) (*AuthUserRevokeRoleResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthUserRevokeRoleResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/UserRevokeRole", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_UserRevokeRole_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1466,8 +1519,9 @@ func (c *authClient) UserRevokeRole(ctx context.Context, in *AuthUserRevokeRoleR } func (c *authClient) RoleAdd(ctx context.Context, in *AuthRoleAddRequest, opts ...grpc.CallOption) (*AuthRoleAddResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthRoleAddResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleAdd", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_RoleAdd_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1475,8 +1529,9 @@ func (c *authClient) RoleAdd(ctx context.Context, in *AuthRoleAddRequest, opts . } func (c *authClient) RoleGet(ctx context.Context, in *AuthRoleGetRequest, opts ...grpc.CallOption) (*AuthRoleGetResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthRoleGetResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleGet", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_RoleGet_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1484,8 +1539,9 @@ func (c *authClient) RoleGet(ctx context.Context, in *AuthRoleGetRequest, opts . } func (c *authClient) RoleList(ctx context.Context, in *AuthRoleListRequest, opts ...grpc.CallOption) (*AuthRoleListResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthRoleListResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleList", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_RoleList_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1493,8 +1549,9 @@ func (c *authClient) RoleList(ctx context.Context, in *AuthRoleListRequest, opts } func (c *authClient) RoleDelete(ctx context.Context, in *AuthRoleDeleteRequest, opts ...grpc.CallOption) (*AuthRoleDeleteResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthRoleDeleteResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleDelete", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_RoleDelete_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1502,8 +1559,9 @@ func (c *authClient) RoleDelete(ctx context.Context, in *AuthRoleDeleteRequest, } func (c *authClient) RoleGrantPermission(ctx context.Context, in *AuthRoleGrantPermissionRequest, opts ...grpc.CallOption) (*AuthRoleGrantPermissionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthRoleGrantPermissionResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleGrantPermission", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_RoleGrantPermission_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1511,8 +1569,9 @@ func (c *authClient) RoleGrantPermission(ctx context.Context, in *AuthRoleGrantP } func (c *authClient) RoleRevokePermission(ctx context.Context, in *AuthRoleRevokePermissionRequest, opts ...grpc.CallOption) (*AuthRoleRevokePermissionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthRoleRevokePermissionResponse) - err := c.cc.Invoke(ctx, "/etcdserverpb.Auth/RoleRevokePermission", in, out, opts...) + err := c.cc.Invoke(ctx, Auth_RoleRevokePermission_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1521,7 +1580,7 @@ func (c *authClient) RoleRevokePermission(ctx context.Context, in *AuthRoleRevok // AuthServer is the server API for Auth service. // All implementations must embed UnimplementedAuthServer -// for forward compatibility +// for forward compatibility. type AuthServer interface { // AuthEnable enables authentication. AuthEnable(context.Context, *AuthEnableRequest) (*AuthEnableResponse, error) @@ -1560,9 +1619,12 @@ type AuthServer interface { mustEmbedUnimplementedAuthServer() } -// UnimplementedAuthServer must be embedded to have forward compatible implementations. -type UnimplementedAuthServer struct { -} +// UnimplementedAuthServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedAuthServer struct{} func (UnimplementedAuthServer) AuthEnable(context.Context, *AuthEnableRequest) (*AuthEnableResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AuthEnable not implemented") @@ -1616,6 +1678,7 @@ func (UnimplementedAuthServer) RoleRevokePermission(context.Context, *AuthRoleRe return nil, status.Errorf(codes.Unimplemented, "method RoleRevokePermission not implemented") } func (UnimplementedAuthServer) mustEmbedUnimplementedAuthServer() {} +func (UnimplementedAuthServer) testEmbeddedByValue() {} // UnsafeAuthServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AuthServer will @@ -1625,6 +1688,13 @@ type UnsafeAuthServer interface { } func RegisterAuthServer(s grpc.ServiceRegistrar, srv AuthServer) { + // If the following call pancis, it indicates UnimplementedAuthServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Auth_ServiceDesc, srv) } @@ -1638,7 +1708,7 @@ func _Auth_AuthEnable_Handler(srv interface{}, ctx context.Context, dec func(int } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/AuthEnable", + FullMethod: Auth_AuthEnable_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).AuthEnable(ctx, req.(*AuthEnableRequest)) @@ -1656,7 +1726,7 @@ func _Auth_AuthDisable_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/AuthDisable", + FullMethod: Auth_AuthDisable_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).AuthDisable(ctx, req.(*AuthDisableRequest)) @@ -1674,7 +1744,7 @@ func _Auth_AuthStatus_Handler(srv interface{}, ctx context.Context, dec func(int } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/AuthStatus", + FullMethod: Auth_AuthStatus_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).AuthStatus(ctx, req.(*AuthStatusRequest)) @@ -1692,7 +1762,7 @@ func _Auth_Authenticate_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/Authenticate", + FullMethod: Auth_Authenticate_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).Authenticate(ctx, req.(*AuthenticateRequest)) @@ -1710,7 +1780,7 @@ func _Auth_UserAdd_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/UserAdd", + FullMethod: Auth_UserAdd_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).UserAdd(ctx, req.(*AuthUserAddRequest)) @@ -1728,7 +1798,7 @@ func _Auth_UserGet_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/UserGet", + FullMethod: Auth_UserGet_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).UserGet(ctx, req.(*AuthUserGetRequest)) @@ -1746,7 +1816,7 @@ func _Auth_UserList_Handler(srv interface{}, ctx context.Context, dec func(inter } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/UserList", + FullMethod: Auth_UserList_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).UserList(ctx, req.(*AuthUserListRequest)) @@ -1764,7 +1834,7 @@ func _Auth_UserDelete_Handler(srv interface{}, ctx context.Context, dec func(int } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/UserDelete", + FullMethod: Auth_UserDelete_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).UserDelete(ctx, req.(*AuthUserDeleteRequest)) @@ -1782,7 +1852,7 @@ func _Auth_UserChangePassword_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/UserChangePassword", + FullMethod: Auth_UserChangePassword_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).UserChangePassword(ctx, req.(*AuthUserChangePasswordRequest)) @@ -1800,7 +1870,7 @@ func _Auth_UserGrantRole_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/UserGrantRole", + FullMethod: Auth_UserGrantRole_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).UserGrantRole(ctx, req.(*AuthUserGrantRoleRequest)) @@ -1818,7 +1888,7 @@ func _Auth_UserRevokeRole_Handler(srv interface{}, ctx context.Context, dec func } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/UserRevokeRole", + FullMethod: Auth_UserRevokeRole_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).UserRevokeRole(ctx, req.(*AuthUserRevokeRoleRequest)) @@ -1836,7 +1906,7 @@ func _Auth_RoleAdd_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/RoleAdd", + FullMethod: Auth_RoleAdd_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).RoleAdd(ctx, req.(*AuthRoleAddRequest)) @@ -1854,7 +1924,7 @@ func _Auth_RoleGet_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/RoleGet", + FullMethod: Auth_RoleGet_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).RoleGet(ctx, req.(*AuthRoleGetRequest)) @@ -1872,7 +1942,7 @@ func _Auth_RoleList_Handler(srv interface{}, ctx context.Context, dec func(inter } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/RoleList", + FullMethod: Auth_RoleList_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).RoleList(ctx, req.(*AuthRoleListRequest)) @@ -1890,7 +1960,7 @@ func _Auth_RoleDelete_Handler(srv interface{}, ctx context.Context, dec func(int } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/RoleDelete", + FullMethod: Auth_RoleDelete_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).RoleDelete(ctx, req.(*AuthRoleDeleteRequest)) @@ -1908,7 +1978,7 @@ func _Auth_RoleGrantPermission_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/RoleGrantPermission", + FullMethod: Auth_RoleGrantPermission_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).RoleGrantPermission(ctx, req.(*AuthRoleGrantPermissionRequest)) @@ -1926,7 +1996,7 @@ func _Auth_RoleRevokePermission_Handler(srv interface{}, ctx context.Context, de } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/etcdserverpb.Auth/RoleRevokePermission", + FullMethod: Auth_RoleRevokePermission_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).RoleRevokePermission(ctx, req.(*AuthRoleRevokePermissionRequest)) diff --git a/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go b/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go index e1fb40c05ee9..03ffabb140d8 100644 --- a/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go +++ b/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go @@ -1,4 +1,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v3.20.3 +// source: v3election.proto package v3electionpb @@ -12,12 +16,22 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + Election_Campaign_FullMethodName = "/v3electionpb.Election/Campaign" + Election_Proclaim_FullMethodName = "/v3electionpb.Election/Proclaim" + Election_Leader_FullMethodName = "/v3electionpb.Election/Leader" + Election_Observe_FullMethodName = "/v3electionpb.Election/Observe" + Election_Resign_FullMethodName = "/v3electionpb.Election/Resign" +) // ElectionClient is the client API for Election service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// The election service exposes client-side election facilities as a gRPC interface. type ElectionClient interface { // Campaign waits to acquire leadership in an election, returning a LeaderKey // representing the leadership if successful. The LeaderKey can then be used @@ -30,7 +44,7 @@ type ElectionClient interface { Leader(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (*LeaderResponse, error) // Observe streams election proclamations in-order as made by the election's // elected leaders. - Observe(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (Election_ObserveClient, error) + Observe(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[LeaderResponse], error) // Resign releases election leadership so other campaigners may acquire // leadership on the election. Resign(ctx context.Context, in *ResignRequest, opts ...grpc.CallOption) (*ResignResponse, error) @@ -45,8 +59,9 @@ func NewElectionClient(cc grpc.ClientConnInterface) ElectionClient { } func (c *electionClient) Campaign(ctx context.Context, in *CampaignRequest, opts ...grpc.CallOption) (*CampaignResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CampaignResponse) - err := c.cc.Invoke(ctx, "/v3electionpb.Election/Campaign", in, out, opts...) + err := c.cc.Invoke(ctx, Election_Campaign_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -54,8 +69,9 @@ func (c *electionClient) Campaign(ctx context.Context, in *CampaignRequest, opts } func (c *electionClient) Proclaim(ctx context.Context, in *ProclaimRequest, opts ...grpc.CallOption) (*ProclaimResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ProclaimResponse) - err := c.cc.Invoke(ctx, "/v3electionpb.Election/Proclaim", in, out, opts...) + err := c.cc.Invoke(ctx, Election_Proclaim_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -63,20 +79,22 @@ func (c *electionClient) Proclaim(ctx context.Context, in *ProclaimRequest, opts } func (c *electionClient) Leader(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (*LeaderResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(LeaderResponse) - err := c.cc.Invoke(ctx, "/v3electionpb.Election/Leader", in, out, opts...) + err := c.cc.Invoke(ctx, Election_Leader_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *electionClient) Observe(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (Election_ObserveClient, error) { - stream, err := c.cc.NewStream(ctx, &Election_ServiceDesc.Streams[0], "/v3electionpb.Election/Observe", opts...) +func (c *electionClient) Observe(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[LeaderResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &Election_ServiceDesc.Streams[0], Election_Observe_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &electionObserveClient{stream} + x := &grpc.GenericClientStream[LeaderRequest, LeaderResponse]{ClientStream: stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -86,26 +104,13 @@ func (c *electionClient) Observe(ctx context.Context, in *LeaderRequest, opts .. return x, nil } -type Election_ObserveClient interface { - Recv() (*LeaderResponse, error) - grpc.ClientStream -} - -type electionObserveClient struct { - grpc.ClientStream -} - -func (x *electionObserveClient) Recv() (*LeaderResponse, error) { - m := new(LeaderResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Election_ObserveClient = grpc.ServerStreamingClient[LeaderResponse] func (c *electionClient) Resign(ctx context.Context, in *ResignRequest, opts ...grpc.CallOption) (*ResignResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ResignResponse) - err := c.cc.Invoke(ctx, "/v3electionpb.Election/Resign", in, out, opts...) + err := c.cc.Invoke(ctx, Election_Resign_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -114,7 +119,9 @@ func (c *electionClient) Resign(ctx context.Context, in *ResignRequest, opts ... // ElectionServer is the server API for Election service. // All implementations must embed UnimplementedElectionServer -// for forward compatibility +// for forward compatibility. +// +// The election service exposes client-side election facilities as a gRPC interface. type ElectionServer interface { // Campaign waits to acquire leadership in an election, returning a LeaderKey // representing the leadership if successful. The LeaderKey can then be used @@ -127,16 +134,19 @@ type ElectionServer interface { Leader(context.Context, *LeaderRequest) (*LeaderResponse, error) // Observe streams election proclamations in-order as made by the election's // elected leaders. - Observe(*LeaderRequest, Election_ObserveServer) error + Observe(*LeaderRequest, grpc.ServerStreamingServer[LeaderResponse]) error // Resign releases election leadership so other campaigners may acquire // leadership on the election. Resign(context.Context, *ResignRequest) (*ResignResponse, error) mustEmbedUnimplementedElectionServer() } -// UnimplementedElectionServer must be embedded to have forward compatible implementations. -type UnimplementedElectionServer struct { -} +// UnimplementedElectionServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedElectionServer struct{} func (UnimplementedElectionServer) Campaign(context.Context, *CampaignRequest) (*CampaignResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Campaign not implemented") @@ -147,13 +157,14 @@ func (UnimplementedElectionServer) Proclaim(context.Context, *ProclaimRequest) ( func (UnimplementedElectionServer) Leader(context.Context, *LeaderRequest) (*LeaderResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Leader not implemented") } -func (UnimplementedElectionServer) Observe(*LeaderRequest, Election_ObserveServer) error { +func (UnimplementedElectionServer) Observe(*LeaderRequest, grpc.ServerStreamingServer[LeaderResponse]) error { return status.Errorf(codes.Unimplemented, "method Observe not implemented") } func (UnimplementedElectionServer) Resign(context.Context, *ResignRequest) (*ResignResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Resign not implemented") } func (UnimplementedElectionServer) mustEmbedUnimplementedElectionServer() {} +func (UnimplementedElectionServer) testEmbeddedByValue() {} // UnsafeElectionServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ElectionServer will @@ -163,6 +174,13 @@ type UnsafeElectionServer interface { } func RegisterElectionServer(s grpc.ServiceRegistrar, srv ElectionServer) { + // If the following call pancis, it indicates UnimplementedElectionServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Election_ServiceDesc, srv) } @@ -176,7 +194,7 @@ func _Election_Campaign_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/v3electionpb.Election/Campaign", + FullMethod: Election_Campaign_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ElectionServer).Campaign(ctx, req.(*CampaignRequest)) @@ -194,7 +212,7 @@ func _Election_Proclaim_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/v3electionpb.Election/Proclaim", + FullMethod: Election_Proclaim_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ElectionServer).Proclaim(ctx, req.(*ProclaimRequest)) @@ -212,7 +230,7 @@ func _Election_Leader_Handler(srv interface{}, ctx context.Context, dec func(int } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/v3electionpb.Election/Leader", + FullMethod: Election_Leader_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ElectionServer).Leader(ctx, req.(*LeaderRequest)) @@ -225,21 +243,11 @@ func _Election_Observe_Handler(srv interface{}, stream grpc.ServerStream) error if err := stream.RecvMsg(m); err != nil { return err } - return srv.(ElectionServer).Observe(m, &electionObserveServer{stream}) + return srv.(ElectionServer).Observe(m, &grpc.GenericServerStream[LeaderRequest, LeaderResponse]{ServerStream: stream}) } -type Election_ObserveServer interface { - Send(*LeaderResponse) error - grpc.ServerStream -} - -type electionObserveServer struct { - grpc.ServerStream -} - -func (x *electionObserveServer) Send(m *LeaderResponse) error { - return x.ServerStream.SendMsg(m) -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Election_ObserveServer = grpc.ServerStreamingServer[LeaderResponse] func _Election_Resign_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ResignRequest) @@ -251,7 +259,7 @@ func _Election_Resign_Handler(srv interface{}, ctx context.Context, dec func(int } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/v3electionpb.Election/Resign", + FullMethod: Election_Resign_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ElectionServer).Resign(ctx, req.(*ResignRequest)) diff --git a/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go b/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go index 08da4bcdffd0..767e8b9b7f8d 100644 --- a/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go +++ b/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go @@ -1,4 +1,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v3.20.3 +// source: v3lock.proto package v3lockpb @@ -12,12 +16,19 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + Lock_Lock_FullMethodName = "/v3lockpb.Lock/Lock" + Lock_Unlock_FullMethodName = "/v3lockpb.Lock/Unlock" +) // LockClient is the client API for Lock service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// The lock service exposes client-side locking facilities as a gRPC interface. type LockClient interface { // Lock acquires a distributed shared lock on a given named lock. // On success, it will return a unique key that exists so long as the @@ -41,8 +52,9 @@ func NewLockClient(cc grpc.ClientConnInterface) LockClient { } func (c *lockClient) Lock(ctx context.Context, in *LockRequest, opts ...grpc.CallOption) (*LockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(LockResponse) - err := c.cc.Invoke(ctx, "/v3lockpb.Lock/Lock", in, out, opts...) + err := c.cc.Invoke(ctx, Lock_Lock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -50,8 +62,9 @@ func (c *lockClient) Lock(ctx context.Context, in *LockRequest, opts ...grpc.Cal } func (c *lockClient) Unlock(ctx context.Context, in *UnlockRequest, opts ...grpc.CallOption) (*UnlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UnlockResponse) - err := c.cc.Invoke(ctx, "/v3lockpb.Lock/Unlock", in, out, opts...) + err := c.cc.Invoke(ctx, Lock_Unlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -60,7 +73,9 @@ func (c *lockClient) Unlock(ctx context.Context, in *UnlockRequest, opts ...grpc // LockServer is the server API for Lock service. // All implementations must embed UnimplementedLockServer -// for forward compatibility +// for forward compatibility. +// +// The lock service exposes client-side locking facilities as a gRPC interface. type LockServer interface { // Lock acquires a distributed shared lock on a given named lock. // On success, it will return a unique key that exists so long as the @@ -76,9 +91,12 @@ type LockServer interface { mustEmbedUnimplementedLockServer() } -// UnimplementedLockServer must be embedded to have forward compatible implementations. -type UnimplementedLockServer struct { -} +// UnimplementedLockServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedLockServer struct{} func (UnimplementedLockServer) Lock(context.Context, *LockRequest) (*LockResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Lock not implemented") @@ -87,6 +105,7 @@ func (UnimplementedLockServer) Unlock(context.Context, *UnlockRequest) (*UnlockR return nil, status.Errorf(codes.Unimplemented, "method Unlock not implemented") } func (UnimplementedLockServer) mustEmbedUnimplementedLockServer() {} +func (UnimplementedLockServer) testEmbeddedByValue() {} // UnsafeLockServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to LockServer will @@ -96,6 +115,13 @@ type UnsafeLockServer interface { } func RegisterLockServer(s grpc.ServiceRegistrar, srv LockServer) { + // If the following call pancis, it indicates UnimplementedLockServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Lock_ServiceDesc, srv) } @@ -109,7 +135,7 @@ func _Lock_Lock_Handler(srv interface{}, ctx context.Context, dec func(interface } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/v3lockpb.Lock/Lock", + FullMethod: Lock_Lock_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LockServer).Lock(ctx, req.(*LockRequest)) @@ -127,7 +153,7 @@ func _Lock_Unlock_Handler(srv interface{}, ctx context.Context, dec func(interfa } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/v3lockpb.Lock/Unlock", + FullMethod: Lock_Unlock_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(LockServer).Unlock(ctx, req.(*UnlockRequest)) From a2d30dd52bfe7a789a3c3496bebeb84db8de8adb Mon Sep 17 00:00:00 2001 From: Nont Date: Fri, 6 Feb 2026 23:05:29 -0600 Subject: [PATCH 0808/1068] Deduplicate the setup data and refactor firstRev Signed-off-by: Nont --- tests/common/kv_test.go | 114 +++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 66 deletions(-) diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index a9b9bd178047..fb62669c6558 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -67,45 +67,36 @@ func TestKVGet(t *testing.T) { cc := testutils.MustClient(clus.Client()) testutils.ExecuteUntil(ctx, t, func() { - kvs := [][]string{ - {"a", "bar"}, - {"b", "bar"}, - {"c", "bar1"}, - {"c", "bar2"}, - {"c", "bar"}, - {"foo", "bar"}, - {"foo/abc", "bar"}, - {"fop", "bar"}, - } + resp, err := cc.Get(ctx, "", config.GetOptions{Prefix: true}) + require.NoError(t, err) + firstRev := resp.Header.Revision - var firstHeader *etcdserverpb.ResponseHeader - for i := range kvs { - resp, err := cc.Put(ctx, kvs[i][0], kvs[i][1], config.PutOptions{}) - require.NoErrorf(t, err, "count not put key value %q", kvs[i]) - if i == 0 { - firstHeader = resp.Header - } - } + kvA := createKV("a", "bar", firstRev+1, firstRev+1, 1) + kvB := createKV("b", "bar", firstRev+2, firstRev+2, 1) + kvCV1 := createKV("c", "bar1", firstRev+3, firstRev+3, 1) + kvCV2 := createKV("c", "bar2", firstRev+3, firstRev+4, 2) + kvC := createKV("c", "bar", firstRev+3, firstRev+5, 3) + kvFoo := createKV("foo", "bar", firstRev+6, firstRev+6, 1) + kvFooAbc := createKV("foo/abc", "bar", firstRev+7, firstRev+7, 1) + kvFop := createKV("fop", "bar", firstRev+8, firstRev+8, 1) - firstRev := firstHeader.Revision - kvA := createKV("a", "bar", firstRev, firstRev, 1) - kvB := createKV("b", "bar", firstRev+1, firstRev+1, 1) - kvC := createKV("c", "bar", firstRev+2, firstRev+4, 3) - kvCV1 := createKV("c", "bar1", firstRev+2, firstRev+2, 1) - kvCV2 := createKV("c", "bar2", firstRev+2, firstRev+3, 2) - kvFoo := createKV("foo", "bar", firstRev+5, firstRev+5, 1) - kvFooAbc := createKV("foo/abc", "bar", firstRev+6, firstRev+6, 1) - kvFop := createKV("fop", "bar", firstRev+7, firstRev+7, 1) + inputs := []*mvccpb.KeyValue{kvA, kvB, kvCV1, kvCV2, kvC, kvFoo, kvFooAbc, kvFop} + for i := range inputs { + _, putError := cc.Put(ctx, string(inputs[i].Key), string(inputs[i].Value), config.PutOptions{}) + require.NoErrorf(t, putError, "count not put key value %q", inputs[i]) + } allKvs := []*mvccpb.KeyValue{kvA, kvB, kvC, kvFoo, kvFooAbc, kvFop} kvsByVersion := []*mvccpb.KeyValue{kvA, kvB, kvFoo, kvFooAbc, kvFop, kvC} reversedKvs := []*mvccpb.KeyValue{kvFop, kvFooAbc, kvFoo, kvC, kvB, kvA} - allKvsKeysOnly := make([]*mvccpb.KeyValue, 0, len(allKvs)) - for _, kv := range allKvs { - allKvsKeysOnly = append(allKvsKeysOnly, &mvccpb.KeyValue{Key: kv.Key, CreateRevision: kv.CreateRevision, ModRevision: kv.ModRevision, Version: kv.Version}) + + currentResp, err := cc.Get(ctx, "", config.GetOptions{Prefix: true}) + require.NoError(t, err) + currentHeader := &etcdserverpb.ResponseHeader{ + ClusterId: currentResp.Header.ClusterId, + Revision: currentResp.Header.Revision, + RaftTerm: currentResp.Header.RaftTerm, } - reversedKvsKeysOnly := slices.Clone(allKvsKeysOnly) - slices.Reverse(reversedKvsKeysOnly) type testcase struct { name string @@ -115,31 +106,31 @@ func TestKVGet(t *testing.T) { wantResponse *clientv3.GetResponse } tests := []testcase{ - {name: "Get one specific key (a)", begin: "a", wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, - {name: "Get one specific key (a), serializable", begin: "a", options: config.GetOptions{Serializable: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, - {name: "Get [a, c)", begin: "a", options: config.GetOptions{End: "c"}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 2, Kvs: []*mvccpb.KeyValue{kvA, kvB}}}, - {name: "blank key with --prefix option -> all KVs", begin: "", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: allKvs}}, - {name: "blank key with --from-key option -> all KVs", begin: "", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: allKvs}}, - {name: "Range covering all keys -> all KVs", begin: "a", options: config.GetOptions{End: "x"}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: allKvs}}, - {name: "blank key with --prefix and revision -> [first key, entry at specified revision]", begin: "", options: config.GetOptions{Prefix: true, Revision: int(firstRev + 2)}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 3, Kvs: []*mvccpb.KeyValue{kvA, kvB, kvCV1}}}, - {name: "--count-only for one single key", begin: "a", options: config.GetOptions{CountOnly: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 1, Kvs: nil}}, - {name: "--prefix of foo -> all entries with the prefix", begin: "foo", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 2, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc}}}, - {name: "--from-key of 'foo' -> [", begin: "foo", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 3, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc, kvFop}}}, - {name: "blank key with limit set", begin: "", options: config.GetOptions{Prefix: true, Limit: 2}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB}, More: true}}, - {name: "all kvs ordered by mod revision ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: allKvs}}, - {name: "all KVs ordered by version ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: kvsByVersion}}, - {name: "all KVs ordered by create revision, unspecified sort order", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortNone, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: allKvs}}, - {name: "all KVs ordered by create revision descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: reversedKvs}}, - {name: "all KVs ordered by key descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: reversedKvs}}, - {name: "all KVs descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: reversedKvs}}, - {name: "Get first version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 2}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvCV1}}}, - {name: "Get second version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 3}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvCV2}}}, - {name: "Get third version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 4}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, - {name: "Get the latest version of 'c'", begin: "c", wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, - {name: "all KVs with mininum mod revision sorted by mod revision", begin: "", options: config.GetOptions{Prefix: true, MinModRevision: int(firstRev) + 2, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvC, kvFoo, kvFooAbc, kvFop}}}, - {name: "all KVs with maximum mod revision, sorted by key descending", begin: "", options: config.GetOptions{Prefix: true, MaxModRevision: int(firstRev) + 3, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvB, kvA}}}, - {name: "all KVs with minimum create revision, sorted by version, descending", begin: "", options: config.GetOptions{Prefix: true, MinCreateRevision: int(firstRev) + 2, Order: clientv3.SortDescend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvC, kvFoo, kvFooAbc, kvFop}}}, - {name: "all KVs with maximimum create revision, sorted by value", begin: "", options: config.GetOptions{Prefix: true, MaxCreateRevision: int(firstRev) + 5, Order: clientv3.SortDescend, SortBy: clientv3.SortByValue}, wantResponse: &clientv3.GetResponse{Header: createHeader(firstHeader, 7), Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB, kvC, kvFoo}}}, + {name: "Get one specific key (a)", begin: "a", wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, + {name: "Get one specific key (a), serializable", begin: "a", options: config.GetOptions{Serializable: true}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, + {name: "Get [a, c)", begin: "a", options: config.GetOptions{End: "c"}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 2, Kvs: []*mvccpb.KeyValue{kvA, kvB}}}, + {name: "blank key with --prefix option -> all KVs", begin: "", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs}}, + {name: "blank key with --from-key option -> all KVs", begin: "", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs}}, + {name: "Range covering all keys -> all KVs", begin: "a", options: config.GetOptions{End: "x"}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs}}, + {name: "blank key with --prefix and revision -> [first key, entry at specified revision]", begin: "", options: config.GetOptions{Prefix: true, Revision: int(firstRev + 3)}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 3, Kvs: []*mvccpb.KeyValue{kvA, kvB, kvCV1}}}, + {name: "--count-only for one single key", begin: "a", options: config.GetOptions{CountOnly: true}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: nil}}, + {name: "--prefix of foo -> all entries with the prefix", begin: "foo", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 2, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc}}}, + {name: "--from-key of 'foo' -> [", begin: "foo", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 3, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc, kvFop}}}, + {name: "blank key with limit set", begin: "", options: config.GetOptions{Prefix: true, Limit: 2}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB}, More: true}}, + {name: "all kvs ordered by mod revision ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs}}, + {name: "all KVs ordered by version ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: kvsByVersion}}, + {name: "all KVs ordered by create revision, unspecified sort order", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortNone, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs}}, + {name: "all KVs ordered by create revision descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: reversedKvs}}, + {name: "all KVs ordered by key descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: reversedKvs}}, + {name: "all KVs descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: reversedKvs}}, + {name: "Get first version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 3}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvCV1}}}, + {name: "Get second version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 4}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvCV2}}}, + {name: "Get third version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 5}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, + {name: "Get the latest version of 'c'", begin: "c", wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, + {name: "all KVs with mininum mod revision sorted by mod revision", begin: "", options: config.GetOptions{Prefix: true, MinModRevision: int(firstRev) + 3, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvC, kvFoo, kvFooAbc, kvFop}}}, + {name: "all KVs with maximum mod revision, sorted by key descending", begin: "", options: config.GetOptions{Prefix: true, MaxModRevision: int(firstRev) + 4, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvB, kvA}}}, + {name: "all KVs with minimum create revision, sorted by version, descending", begin: "", options: config.GetOptions{Prefix: true, MinCreateRevision: int(firstRev) + 3, Order: clientv3.SortDescend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvC, kvFoo, kvFooAbc, kvFop}}}, + {name: "all KVs with maximimum create revision, sorted by value", begin: "", options: config.GetOptions{Prefix: true, MaxCreateRevision: int(firstRev) + 6, Order: clientv3.SortDescend, SortBy: clientv3.SortByValue}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB, kvC, kvFoo}}}, } testsWithKeysOnly := make([]testcase, 0, len(tests)) for _, otc := range tests { @@ -177,15 +168,6 @@ func createKV(key, val string, createRev, modRev, ver int64) *mvccpb.KeyValue { } } -//nolint:unparam -func createHeader(firstHeader *etcdserverpb.ResponseHeader, offset int64) *etcdserverpb.ResponseHeader { - return &etcdserverpb.ResponseHeader{ - ClusterId: firstHeader.ClusterId, - Revision: firstHeader.Revision + offset, - RaftTerm: firstHeader.RaftTerm, - } -} - func dropValue(s []*mvccpb.KeyValue) []*mvccpb.KeyValue { ss := make([]*mvccpb.KeyValue, 0, len(s)) for _, kv := range s { From c1625be3061ad33b36a8d673c404bf4e0ca63f30 Mon Sep 17 00:00:00 2001 From: Nont Date: Thu, 5 Feb 2026 22:22:03 -0600 Subject: [PATCH 0809/1068] Add range test cases by value Signed-off-by: Nont --- tests/common/kv_test.go | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index fb62669c6558..d9cde9281cf8 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -71,14 +71,14 @@ func TestKVGet(t *testing.T) { require.NoError(t, err) firstRev := resp.Header.Revision - kvA := createKV("a", "bar", firstRev+1, firstRev+1, 1) - kvB := createKV("b", "bar", firstRev+2, firstRev+2, 1) - kvCV1 := createKV("c", "bar1", firstRev+3, firstRev+3, 1) - kvCV2 := createKV("c", "bar2", firstRev+3, firstRev+4, 2) - kvC := createKV("c", "bar", firstRev+3, firstRev+5, 3) + kvA := createKV("a", "aa1", firstRev+1, firstRev+1, 1) + kvB := createKV("b", "a", firstRev+2, firstRev+2, 1) + kvCV1 := createKV("c", "ac1", firstRev+3, firstRev+3, 1) + kvCV2 := createKV("c", "ac2", firstRev+3, firstRev+4, 2) + kvC := createKV("c", "aac", firstRev+3, firstRev+5, 3) kvFoo := createKV("foo", "bar", firstRev+6, firstRev+6, 1) - kvFooAbc := createKV("foo/abc", "bar", firstRev+7, firstRev+7, 1) - kvFop := createKV("fop", "bar", firstRev+8, firstRev+8, 1) + kvFooAbc := createKV("foo/abc", "0", firstRev+7, firstRev+7, 1) + kvFop := createKV("fop", "s", firstRev+8, firstRev+8, 1) inputs := []*mvccpb.KeyValue{kvA, kvB, kvCV1, kvCV2, kvC, kvFoo, kvFooAbc, kvFop} for i := range inputs { @@ -89,6 +89,8 @@ func TestKVGet(t *testing.T) { allKvs := []*mvccpb.KeyValue{kvA, kvB, kvC, kvFoo, kvFooAbc, kvFop} kvsByVersion := []*mvccpb.KeyValue{kvA, kvB, kvFoo, kvFooAbc, kvFop, kvC} reversedKvs := []*mvccpb.KeyValue{kvFop, kvFooAbc, kvFoo, kvC, kvB, kvA} + kvsByValue := []*mvccpb.KeyValue{kvFooAbc, kvB, kvA, kvC, kvFoo, kvFop} + kvsByValueDesc := []*mvccpb.KeyValue{kvFop, kvFoo, kvC, kvA, kvB, kvFooAbc} currentResp, err := cc.Get(ctx, "", config.GetOptions{Prefix: true}) require.NoError(t, err) @@ -122,6 +124,9 @@ func TestKVGet(t *testing.T) { {name: "all KVs ordered by create revision, unspecified sort order", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortNone, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs}}, {name: "all KVs ordered by create revision descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: reversedKvs}}, {name: "all KVs ordered by key descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: reversedKvs}}, + {name: "all KVs ordered by value, unspecified sort order", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortNone, SortBy: clientv3.SortByValue}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: kvsByValue}}, + {name: "all KVs ordered by value, ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByValue}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: kvsByValue}}, + {name: "all KVs ordered by value descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByValue}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: kvsByValueDesc}}, {name: "all KVs descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: reversedKvs}}, {name: "Get first version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 3}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvCV1}}}, {name: "Get second version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 4}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvCV2}}}, @@ -130,7 +135,7 @@ func TestKVGet(t *testing.T) { {name: "all KVs with mininum mod revision sorted by mod revision", begin: "", options: config.GetOptions{Prefix: true, MinModRevision: int(firstRev) + 3, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvC, kvFoo, kvFooAbc, kvFop}}}, {name: "all KVs with maximum mod revision, sorted by key descending", begin: "", options: config.GetOptions{Prefix: true, MaxModRevision: int(firstRev) + 4, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvB, kvA}}}, {name: "all KVs with minimum create revision, sorted by version, descending", begin: "", options: config.GetOptions{Prefix: true, MinCreateRevision: int(firstRev) + 3, Order: clientv3.SortDescend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvC, kvFoo, kvFooAbc, kvFop}}}, - {name: "all KVs with maximimum create revision, sorted by value", begin: "", options: config.GetOptions{Prefix: true, MaxCreateRevision: int(firstRev) + 6, Order: clientv3.SortDescend, SortBy: clientv3.SortByValue}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB, kvC, kvFoo}}}, + {name: "all KVs with maximimum create revision, sorted by value", begin: "", options: config.GetOptions{Prefix: true, MaxCreateRevision: int(firstRev) + 6, Order: clientv3.SortDescend, SortBy: clientv3.SortByValue}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvFoo, kvC, kvA, kvB}}}, } testsWithKeysOnly := make([]testcase, 0, len(tests)) for _, otc := range tests { From d40b3b6b2f4310d6a35666fc38c579c79bfbcfb1 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Wed, 11 Feb 2026 10:56:27 -0500 Subject: [PATCH 0810/1068] walpb: Add fixture to detect byte differences in WAL serialization Signed-off-by: Jordan Liggitt --- server/storage/wal/testdata/TestNew.wal | Bin 0 -> 72 bytes server/storage/wal/wal_test.go | 12 ++++++++++++ 2 files changed, 12 insertions(+) create mode 100644 server/storage/wal/testdata/TestNew.wal diff --git a/server/storage/wal/testdata/TestNew.wal b/server/storage/wal/testdata/TestNew.wal new file mode 100644 index 0000000000000000000000000000000000000000..fda4671635c42e361e8d2253d8361cb778769249 GIT binary patch literal 72 zcmZQ!0D~3|76C9r2*PjUU=(P*@^=Bd6i0D>ZfZ(mNg_mo4?;C@unIKXZal~+#lpb= G(g^@?77IiG literal 0 HcmV?d00001 diff --git a/server/storage/wal/wal_test.go b/server/storage/wal/wal_test.go index bbc6f5181433..461533372008 100644 --- a/server/storage/wal/wal_test.go +++ b/server/storage/wal/wal_test.go @@ -69,6 +69,18 @@ func TestNew(t *testing.T) { t.Fatalf("err = %v, want nil", err) } + if os.Getenv("ETCD_UPDATE_FIXTURE_DATA") == "true" { + os.WriteFile("testdata/TestNew.wal", gd, os.FileMode(0644)) + } + fixtureData, err := os.ReadFile("testdata/TestNew.wal") + if err != nil { + t.Fatal(err) + } + if !bytes.Equal(gd, fixtureData) { + t.Log("data did not match fixture, rerun with ETCD_UPDATE_FIXTURE_DATA=true to regenerate fixture") + t.Errorf("data = %v, want %v", gd, fixtureData) + } + var wb bytes.Buffer e := newEncoder(&wb, 0, 0) err = e.encode(&walpb.Record{Type: CrcType, Crc: 0}) From 4d7aaa431d8b51d4717177f7a83719d3d8485394 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 6 Feb 2026 02:58:22 -0500 Subject: [PATCH 0811/1068] etcdserverpb: drop gogoproto.nullable Signed-off-by: Jordan Liggitt --- api/etcdserverpb/etcdserver.pb.go | 64 +++++++++++++++++-------------- api/etcdserverpb/etcdserver.proto | 6 +-- api/go.mod | 1 - api/go.sum | 43 +++------------------ cache/go.mod | 1 - cache/go.sum | 43 +++------------------ client/v3/go.mod | 1 - client/v3/go.sum | 43 +++------------------ etcdctl/go.mod | 1 - etcdctl/go.sum | 43 +++------------------ 10 files changed, 62 insertions(+), 184 deletions(-) diff --git a/api/etcdserverpb/etcdserver.pb.go b/api/etcdserverpb/etcdserver.pb.go index 8666f97ce424..442814b3d774 100644 --- a/api/etcdserverpb/etcdserver.pb.go +++ b/api/etcdserverpb/etcdserver.pb.go @@ -9,7 +9,6 @@ import ( math "math" math_bits "math/bits" - _ "github.com/gogo/protobuf/gogoproto" proto "github.com/golang/protobuf/proto" ) @@ -25,8 +24,8 @@ var _ = math.Inf const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type Metadata struct { - NodeID uint64 `protobuf:"varint,1,opt,name=NodeID" json:"NodeID"` - ClusterID uint64 `protobuf:"varint,2,opt,name=ClusterID" json:"ClusterID"` + NodeID *uint64 `protobuf:"varint,1,opt,name=NodeID" json:"NodeID,omitempty"` + ClusterID *uint64 `protobuf:"varint,2,opt,name=ClusterID" json:"ClusterID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -66,15 +65,15 @@ func (m *Metadata) XXX_DiscardUnknown() { var xxx_messageInfo_Metadata proto.InternalMessageInfo func (m *Metadata) GetNodeID() uint64 { - if m != nil { - return m.NodeID + if m != nil && m.NodeID != nil { + return *m.NodeID } return 0 } func (m *Metadata) GetClusterID() uint64 { - if m != nil { - return m.ClusterID + if m != nil && m.ClusterID != nil { + return *m.ClusterID } return 0 } @@ -86,17 +85,16 @@ func init() { func init() { proto.RegisterFile("etcdserver.proto", fileDescriptor_09ffbeb3bebbce7e) } var fileDescriptor_09ffbeb3bebbce7e = []byte{ - // 159 bytes of a gzipped FileDescriptorProto + // 139 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x48, 0x2d, 0x49, 0x4e, 0x29, 0x4e, 0x2d, 0x2a, 0x4b, 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x41, 0x88, - 0x14, 0x24, 0x49, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, 0x83, 0x25, 0xf4, 0x41, 0x2c, 0x88, 0x1a, 0x25, - 0x1f, 0x2e, 0x0e, 0xdf, 0xd4, 0x92, 0xc4, 0x94, 0xc4, 0x92, 0x44, 0x21, 0x19, 0x2e, 0x36, 0xbf, - 0xfc, 0x94, 0x54, 0x4f, 0x17, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x16, 0x27, 0x96, 0x13, 0xf7, 0xe4, - 0x19, 0x82, 0xa0, 0x62, 0x42, 0x4a, 0x5c, 0x9c, 0xce, 0x39, 0xa5, 0xc5, 0x25, 0xa9, 0x45, 0x9e, - 0x2e, 0x12, 0x4c, 0x48, 0x0a, 0x10, 0xc2, 0x4e, 0xa6, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, - 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x8c, 0xc7, 0x72, 0x0c, 0x51, 0xca, 0xe9, 0xf9, 0x7a, 0x20, - 0x67, 0xe8, 0x65, 0xe6, 0xeb, 0x83, 0x68, 0xfd, 0xc4, 0x82, 0x4c, 0xfd, 0x32, 0x63, 0x7d, 0x64, - 0xa7, 0x01, 0x02, 0x00, 0x00, 0xff, 0xff, 0x1c, 0xb8, 0x7e, 0x00, 0xbb, 0x00, 0x00, 0x00, + 0x14, 0x24, 0x29, 0x39, 0x70, 0x71, 0xf8, 0xa6, 0x96, 0x24, 0xa6, 0x24, 0x96, 0x24, 0x0a, 0x89, + 0x71, 0xb1, 0xf9, 0xe5, 0xa7, 0xa4, 0x7a, 0xba, 0x48, 0x30, 0x2a, 0x30, 0x6a, 0xb0, 0x04, 0x41, + 0x79, 0x42, 0x32, 0x5c, 0x9c, 0xce, 0x39, 0xa5, 0xc5, 0x25, 0xa9, 0x45, 0x9e, 0x2e, 0x12, 0x4c, + 0x60, 0x29, 0x84, 0x80, 0x93, 0xe9, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, + 0x24, 0xc7, 0x38, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x72, 0x7a, 0xbe, 0x1e, 0xc8, 0x12, 0xbd, 0xcc, + 0x7c, 0x7d, 0x10, 0xad, 0x9f, 0x58, 0x90, 0xa9, 0x5f, 0x66, 0xac, 0x8f, 0x6c, 0x31, 0x20, 0x00, + 0x00, 0xff, 0xff, 0x5c, 0x60, 0x56, 0x96, 0x99, 0x00, 0x00, 0x00, } func (m *Metadata) Marshal() (dAtA []byte, err error) { @@ -123,12 +121,16 @@ func (m *Metadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - i = encodeVarintEtcdserver(dAtA, i, uint64(m.ClusterID)) - i-- - dAtA[i] = 0x10 - i = encodeVarintEtcdserver(dAtA, i, uint64(m.NodeID)) - i-- - dAtA[i] = 0x8 + if m.ClusterID != nil { + i = encodeVarintEtcdserver(dAtA, i, uint64(*m.ClusterID)) + i-- + dAtA[i] = 0x10 + } + if m.NodeID != nil { + i = encodeVarintEtcdserver(dAtA, i, uint64(*m.NodeID)) + i-- + dAtA[i] = 0x8 + } return len(dAtA) - i, nil } @@ -149,8 +151,12 @@ func (m *Metadata) Size() (n int) { } var l int _ = l - n += 1 + sovEtcdserver(uint64(m.NodeID)) - n += 1 + sovEtcdserver(uint64(m.ClusterID)) + if m.NodeID != nil { + n += 1 + sovEtcdserver(uint64(*m.NodeID)) + } + if m.ClusterID != nil { + n += 1 + sovEtcdserver(uint64(*m.ClusterID)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -196,7 +202,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error { if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType) } - m.NodeID = 0 + var v uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEtcdserver @@ -206,16 +212,17 @@ func (m *Metadata) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.NodeID |= uint64(b&0x7F) << shift + v |= uint64(b&0x7F) << shift if b < 0x80 { break } } + m.NodeID = &v case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field ClusterID", wireType) } - m.ClusterID = 0 + var v uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEtcdserver @@ -225,11 +232,12 @@ func (m *Metadata) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ClusterID |= uint64(b&0x7F) << shift + v |= uint64(b&0x7F) << shift if b < 0x80 { break } } + m.ClusterID = &v default: iNdEx = preIndex skippy, err := skipEtcdserver(dAtA[iNdEx:]) diff --git a/api/etcdserverpb/etcdserver.proto b/api/etcdserverpb/etcdserver.proto index 0b0fbb479f68..e824f71e5bbf 100644 --- a/api/etcdserverpb/etcdserver.proto +++ b/api/etcdserverpb/etcdserver.proto @@ -1,11 +1,9 @@ syntax = "proto2"; package etcdserverpb; -import "gogoproto/gogo.proto"; - option go_package = "go.etcd.io/etcd/api/v3/etcdserverpb"; message Metadata { - optional uint64 NodeID = 1 [(gogoproto.nullable) = false]; - optional uint64 ClusterID = 2 [(gogoproto.nullable) = false]; + optional uint64 NodeID = 1; + optional uint64 ClusterID = 2; } diff --git a/api/go.mod b/api/go.mod index 89115647c983..4081442d8f8c 100644 --- a/api/go.mod +++ b/api/go.mod @@ -6,7 +6,6 @@ toolchain go1.25.7 require ( github.com/coreos/go-semver v0.3.1 - github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 github.com/stretchr/testify v1.11.1 diff --git a/api/go.sum b/api/go.sum index d78ad3f99b36..07e05fe5814e 100644 --- a/api/go.sum +++ b/api/go.sum @@ -8,8 +8,6 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -18,8 +16,6 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -30,8 +26,6 @@ github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0t github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= @@ -44,37 +38,12 @@ go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4A go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= diff --git a/cache/go.mod b/cache/go.mod index 52bb0af63d89..7d1d8e1fbade 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -16,7 +16,6 @@ require ( github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect diff --git a/cache/go.sum b/cache/go.sum index 48ba37bf625f..75debdc66d65 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -12,8 +12,6 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -26,8 +24,6 @@ github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajR github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -48,8 +44,6 @@ github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0t github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= @@ -70,37 +64,12 @@ go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= diff --git a/client/v3/go.mod b/client/v3/go.mod index 91906f7cfa7b..bb09b8bfce4c 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -22,7 +22,6 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 874c2af465e4..a033ce8b63c8 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -14,8 +14,6 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -28,8 +26,6 @@ github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajR github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -54,8 +50,6 @@ github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0t github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= @@ -78,37 +72,12 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 0f3ebe4533b0..dc3c69618eb5 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -30,7 +30,6 @@ require ( github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect - github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index fb9593682772..d7f6211e026c 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -29,8 +29,6 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -45,8 +43,6 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZ github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -87,8 +83,6 @@ github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= @@ -110,40 +104,15 @@ go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= From c96c9e0c06793c0d1264340ead7ffc3faa4620ac Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 6 Feb 2026 03:28:29 -0500 Subject: [PATCH 0812/1068] walpb: drop gogoproto.nullable Signed-off-by: Jordan Liggitt --- server/storage/wal/walpb/record.proto | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/server/storage/wal/walpb/record.proto b/server/storage/wal/walpb/record.proto index d20f4f2f3239..b1403df0c37c 100644 --- a/server/storage/wal/walpb/record.proto +++ b/server/storage/wal/walpb/record.proto @@ -1,21 +1,20 @@ syntax = "proto2"; package walpb; -import "gogoproto/gogo.proto"; import "raftpb/raft.proto"; option go_package = "go.etcd.io/etcd/server/v3/storage/wal/walpb"; message Record { - optional int64 type = 1 [(gogoproto.nullable) = false]; - optional uint32 crc = 2 [(gogoproto.nullable) = false]; + optional int64 type = 1; + optional uint32 crc = 2; optional bytes data = 3; } // Keep in sync with raftpb.SnapshotMetadata. message Snapshot { - optional uint64 index = 1 [(gogoproto.nullable) = false]; - optional uint64 term = 2 [(gogoproto.nullable) = false]; + optional uint64 index = 1; + optional uint64 term = 2; // Field populated since >=etcd-3.5.0. optional raftpb.ConfState conf_state = 3; } From cb9b87ab497c9fea20623e2bdc8547910fb82dd2 Mon Sep 17 00:00:00 2001 From: Madhav Murali Date: Sat, 31 Jan 2026 16:15:01 +0000 Subject: [PATCH 0813/1068] tests:make robustness report id match log id Signed-off-by: Madhav Murali --- tests/robustness/model/history.go | 62 ++++++++++++++-------------- tests/robustness/model/types.go | 29 ++++++++++++- tests/robustness/model/types_test.go | 54 ++++++++++++++++++++++++ 3 files changed, 113 insertions(+), 32 deletions(-) create mode 100644 tests/robustness/model/types_test.go diff --git a/tests/robustness/model/history.go b/tests/robustness/model/history.go index 51db0c5daa2b..ba27f01e8229 100644 --- a/tests/robustness/model/history.go +++ b/tests/robustness/model/history.go @@ -70,7 +70,7 @@ func (h *AppendableHistory) AppendRange(startKey, endKey string, revision, limit respRevision = resp.Header.Revision respMemberID = resp.Header.MemberId } - h.appendSuccessful(request, start, end, rangeResponseWithMemberID(resp.Kvs, resp.Count, respRevision, respMemberID)) + h.appendSuccessful(request, start, end, rangeResponseWithMemberID(resp.Kvs, resp.Count, respRevision, MemberID(respMemberID))) } func (h *AppendableHistory) AppendPut(key, value string, start, end time.Duration, resp *clientv3.PutResponse, err error) { @@ -80,12 +80,12 @@ func (h *AppendableHistory) AppendPut(key, value string, start, end time.Duratio return } var revision int64 - var MemberID uint64 + var memberID MemberID if resp != nil && resp.Header != nil { revision = resp.Header.Revision - MemberID = resp.Header.MemberId + memberID = MemberID(resp.Header.MemberId) } - h.appendSuccessful(request, start, end, putResponseWithMemberID(revision, MemberID)) + h.appendSuccessful(request, start, end, putResponseWithMemberID(revision, memberID)) } func (h *AppendableHistory) AppendPutWithLease(key, value string, leaseID int64, start, end time.Duration, resp *clientv3.PutResponse, err error) { @@ -95,12 +95,12 @@ func (h *AppendableHistory) AppendPutWithLease(key, value string, leaseID int64, return } var revision int64 - var MemberID uint64 + var memberID MemberID if resp != nil && resp.Header != nil { revision = resp.Header.Revision - MemberID = resp.Header.MemberId + memberID = MemberID(resp.Header.MemberId) } - h.appendSuccessful(request, start, end, putResponseWithMemberID(revision, MemberID)) + h.appendSuccessful(request, start, end, putResponseWithMemberID(revision, memberID)) } func (h *AppendableHistory) AppendLeaseGrant(start, end time.Duration, resp *clientv3.LeaseGrantResponse, err error) { @@ -114,12 +114,12 @@ func (h *AppendableHistory) AppendLeaseGrant(start, end time.Duration, resp *cli return } var revision int64 - var MemberID uint64 + var memberID MemberID if resp != nil && resp.ResponseHeader != nil { revision = resp.ResponseHeader.Revision - MemberID = resp.ResponseHeader.MemberId + memberID = MemberID(resp.ResponseHeader.MemberId) } - h.appendSuccessful(request, start, end, leaseGrantResponseWithMemberID(revision, MemberID)) + h.appendSuccessful(request, start, end, leaseGrantResponseWithMemberID(revision, memberID)) } func (h *AppendableHistory) AppendLeaseRevoke(id int64, start, end time.Duration, resp *clientv3.LeaseRevokeResponse, err error) { @@ -129,12 +129,12 @@ func (h *AppendableHistory) AppendLeaseRevoke(id int64, start, end time.Duration return } var revision int64 - var MemberID uint64 + var memberID MemberID if resp != nil && resp.Header != nil { revision = resp.Header.Revision - MemberID = resp.Header.MemberId + memberID = MemberID(resp.Header.MemberId) } - h.appendSuccessful(request, start, end, leaseRevokeResponseWithMemberID(revision, MemberID)) + h.appendSuccessful(request, start, end, leaseRevokeResponseWithMemberID(revision, memberID)) } func (h *AppendableHistory) AppendDelete(key string, start, end time.Duration, resp *clientv3.DeleteResponse, err error) { @@ -144,14 +144,14 @@ func (h *AppendableHistory) AppendDelete(key string, start, end time.Duration, r return } var revision int64 - var MemberID uint64 + var memberID MemberID var deleted int64 if resp != nil && resp.Header != nil { revision = resp.Header.Revision - MemberID = resp.Header.MemberId + memberID = MemberID(resp.Header.MemberId) deleted = resp.Deleted } - h.appendSuccessful(request, start, end, deleteResponseWithMemberID(deleted, revision, MemberID)) + h.appendSuccessful(request, start, end, deleteResponseWithMemberID(deleted, revision, memberID)) } func (h *AppendableHistory) AppendTxn(cmp []clientv3.Cmp, clientOnSuccessOps, clientOnFailure []clientv3.Op, start, end time.Duration, resp *clientv3.TxnResponse, err error) { @@ -173,16 +173,16 @@ func (h *AppendableHistory) AppendTxn(cmp []clientv3.Cmp, clientOnSuccessOps, cl return } var revision int64 - var MemberID uint64 + var memberID MemberID if resp != nil && resp.Header != nil { revision = resp.Header.Revision - MemberID = resp.Header.MemberId + memberID = MemberID(resp.Header.MemberId) } results := []EtcdOperationResult{} for _, resp := range resp.Responses { results = append(results, toEtcdOperationResult(resp)) } - h.appendSuccessful(request, start, end, txnResponseWithMemberID(results, resp.Succeeded, revision, MemberID)) + h.appendSuccessful(request, start, end, txnResponseWithMemberID(results, resp.Succeeded, revision, memberID)) } func (h *AppendableHistory) appendClientError(request EtcdRequest, start, end time.Duration, err error) { @@ -374,7 +374,7 @@ func rangeResponse(kvs []*mvccpb.KeyValue, count int64, revision int64) MaybeEtc return rangeResponseWithMemberID(kvs, count, revision, 0) } -func rangeResponseWithMemberID(kvs []*mvccpb.KeyValue, count int64, revision int64, MemberID uint64) MaybeEtcdResponse { +func rangeResponseWithMemberID(kvs []*mvccpb.KeyValue, count int64, revision int64, memberID MemberID) MaybeEtcdResponse { result := RangeResponse{KVs: make([]KeyValue, len(kvs)), Count: count} for i, kv := range kvs { @@ -387,7 +387,7 @@ func rangeResponseWithMemberID(kvs []*mvccpb.KeyValue, count int64, revision int }, } } - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Range: &result, Revision: revision, MemberID: MemberID}} + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Range: &result, Revision: revision, MemberID: memberID}} } func failedResponse(err error) MaybeEtcdResponse { @@ -406,8 +406,8 @@ func putResponse(revision int64) MaybeEtcdResponse { return putResponseWithMemberID(revision, 0) } -func putResponseWithMemberID(revision int64, MemberID uint64) MaybeEtcdResponse { - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Results: []EtcdOperationResult{{}}}, Revision: revision, MemberID: MemberID}} +func putResponseWithMemberID(revision int64, memberID MemberID) MaybeEtcdResponse { + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Results: []EtcdOperationResult{{}}}, Revision: revision, MemberID: memberID}} } func deleteRequest(key string) EtcdRequest { @@ -418,8 +418,8 @@ func deleteResponse(deleted int64, revision int64) MaybeEtcdResponse { return deleteResponseWithMemberID(deleted, revision, 0) } -func deleteResponseWithMemberID(deleted int64, revision int64, MemberID uint64) MaybeEtcdResponse { - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Results: []EtcdOperationResult{{Deleted: deleted}}}, Revision: revision, MemberID: MemberID}} +func deleteResponseWithMemberID(deleted int64, revision int64, memberID MemberID) MaybeEtcdResponse { + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Results: []EtcdOperationResult{{Deleted: deleted}}}, Revision: revision, MemberID: memberID}} } func compareRevisionAndPutRequest(key string, expectedRevision int64, value string) EtcdRequest { @@ -473,8 +473,8 @@ func txnResponse(result []EtcdOperationResult, succeeded bool, revision int64) M return txnResponseWithMemberID(result, succeeded, revision, 0) } -func txnResponseWithMemberID(result []EtcdOperationResult, succeeded bool, revision int64, MemberID uint64) MaybeEtcdResponse { - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Results: result, Failure: !succeeded}, Revision: revision, MemberID: MemberID}} +func txnResponseWithMemberID(result []EtcdOperationResult, succeeded bool, revision int64, memberID MemberID) MaybeEtcdResponse { + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{Txn: &TxnResponse{Results: result, Failure: !succeeded}, Revision: revision, MemberID: memberID}} } func putWithLeaseRequest(key, value string, leaseID int64) EtcdRequest { @@ -489,8 +489,8 @@ func leaseGrantResponse(revision int64) MaybeEtcdResponse { return leaseGrantResponseWithMemberID(revision, 0) } -func leaseGrantResponseWithMemberID(revision int64, MemberID uint64) MaybeEtcdResponse { - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{LeaseGrant: &LeaseGrantReponse{}, Revision: revision, MemberID: MemberID}} +func leaseGrantResponseWithMemberID(revision int64, memberID MemberID) MaybeEtcdResponse { + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{LeaseGrant: &LeaseGrantReponse{}, Revision: revision, MemberID: memberID}} } func leaseRevokeRequest(leaseID int64) EtcdRequest { @@ -501,8 +501,8 @@ func leaseRevokeResponse(revision int64) MaybeEtcdResponse { return leaseRevokeResponseWithMemberID(revision, 0) } -func leaseRevokeResponseWithMemberID(revision int64, MemberID uint64) MaybeEtcdResponse { - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{LeaseRevoke: &LeaseRevokeResponse{}, Revision: revision, MemberID: MemberID}} +func leaseRevokeResponseWithMemberID(revision int64, memberID MemberID) MaybeEtcdResponse { + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{LeaseRevoke: &LeaseRevokeResponse{}, Revision: revision, MemberID: memberID}} } func defragmentRequest() EtcdRequest { diff --git a/tests/robustness/model/types.go b/tests/robustness/model/types.go index 0a3e0cd9146b..e5879b179cdc 100644 --- a/tests/robustness/model/types.go +++ b/tests/robustness/model/types.go @@ -15,11 +15,14 @@ package model import ( + "encoding/json" "errors" "hash/fnv" "maps" "reflect" "slices" + + "go.etcd.io/etcd/client/pkg/v3/types" ) // RevisionForNonLinearizableResponse is a fake revision value used to @@ -138,6 +141,30 @@ type MaybeEtcdResponse struct { var ErrEtcdFutureRev = errors.New("future rev") +type MemberID uint64 + +// MarshalJSON implements the json.Marshaler interface for MemberID. +// It marshals the MemberID as a hexadecimal string. +func (m MemberID) MarshalJSON() ([]byte, error) { + return json.Marshal(types.ID(m).String()) +} + +// UnmarshalJSON implements the json.Unmarshaler interface for MemberID. +// It unmarshals the MemberID from a hexadecimal string. +func (m *MemberID) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + + id, err := types.IDFromString(s) + if err != nil { + return err + } + *m = MemberID(id) + return nil +} + type EtcdResponse struct { Txn *TxnResponse Range *RangeResponse @@ -147,7 +174,7 @@ type EtcdResponse struct { Compact *CompactResponse ClientError string Revision int64 - MemberID uint64 + MemberID MemberID `json:"member-id,omitempty"` } func Match(r1, r2 MaybeEtcdResponse) bool { diff --git a/tests/robustness/model/types_test.go b/tests/robustness/model/types_test.go new file mode 100644 index 000000000000..c0cd72d2781d --- /dev/null +++ b/tests/robustness/model/types_test.go @@ -0,0 +1,54 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package model + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/require" + + "go.etcd.io/etcd/client/pkg/v3/types" +) + +func TestMemberIDMatchesTypesID(t *testing.T) { + raw := uint64(13770331908272521436) + + mID := MemberID(raw) + jsonBytes, err := json.Marshal(mID) + require.NoError(t, err) + jsonStr := string(jsonBytes) + + tID := types.ID(raw) + expectedHex := tID.String() + require.JSONEq(t, "\""+expectedHex+"\"", jsonStr) +} + +func TestMemberIDMatchesTypesIDUnmarshal(t *testing.T) { + raw := uint64(13770331908272521999) + mID := MemberID(raw) + + jsonBytes, err := json.Marshal(mID) + require.NoError(t, err) + + tID := types.ID(raw) + expectedHex := "\"" + tID.String() + "\"" + require.JSONEq(t, expectedHex, string(jsonBytes)) + + var parsedID MemberID + err = json.Unmarshal(jsonBytes, &parsedID) + require.NoError(t, err) + require.Equal(t, mID, parsedID) +} From 7d26286630fc8f53d630892b964be5abd197004d Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 6 Feb 2026 02:59:02 -0500 Subject: [PATCH 0814/1068] etcdserverpb: use field getters Signed-off-by: Jordan Liggitt --- etcdutl/etcdutl/common_test.go | 4 ++-- etcdutl/snapshot/v3_snapshot.go | 4 ++-- server/etcdserver/bootstrap.go | 8 ++++---- tools/etcd-dump-logs/main.go | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/etcdutl/etcdutl/common_test.go b/etcdutl/etcdutl/common_test.go index 3a27fbe96c35..b1055f13066f 100644 --- a/etcdutl/etcdutl/common_test.go +++ b/etcdutl/etcdutl/common_test.go @@ -81,8 +81,8 @@ func TestGetLatestWalSnap(t *testing.T) { // populate wal file w, err := wal.Create(lg, datadir.ToWALDir(dataDir), pbutil.MustMarshal( &etcdserverpb.Metadata{ - NodeID: 1, - ClusterID: 2, + NodeID: new(uint64(1)), + ClusterID: new(uint64(2)), }, )) require.NoError(t, err) diff --git a/etcdutl/snapshot/v3_snapshot.go b/etcdutl/snapshot/v3_snapshot.go index 81dde9a0d0e0..11adc031e406 100644 --- a/etcdutl/snapshot/v3_snapshot.go +++ b/etcdutl/snapshot/v3_snapshot.go @@ -519,8 +519,8 @@ func (s *v3Manager) saveWALAndSnap() (*raftpb.HardState, error) { s.cl.AddMember(m, true) } - m := s.cl.MemberByName(s.name) - md := &etcdserverpb.Metadata{NodeID: uint64(m.ID), ClusterID: uint64(s.cl.ID())} + m := s.cl.MemberByName(s.name) //nolint:staticcheck // See https://github.com/dominikh/go-tools/issues/1698 + md := &etcdserverpb.Metadata{NodeID: new(uint64(m.ID)), ClusterID: new(uint64(s.cl.ID()))} metadata, merr := md.Marshal() if merr != nil { return nil, merr diff --git a/server/etcdserver/bootstrap.go b/server/etcdserver/bootstrap.go index 3d480b216291..6e91ca438c22 100644 --- a/server/etcdserver/bootstrap.go +++ b/server/etcdserver/bootstrap.go @@ -660,8 +660,8 @@ func openWALFromSnapshot(cfg config.ServerConfig, snapshot *raftpb.Snapshot) (*w } var metadata etcdserverpb.Metadata pbutil.MustUnmarshal(&metadata, wmetadata) - id := types.ID(metadata.NodeID) - cid := types.ID(metadata.ClusterID) + id := types.ID(metadata.GetNodeID()) + cid := types.ID(metadata.GetClusterID()) meta := &snapshotMetadata{clusterID: cid, nodeID: id} return w, &st, ents, snapshot, meta } @@ -674,8 +674,8 @@ type snapshotMetadata struct { func bootstrapNewWAL(cfg config.ServerConfig, cl *bootstrappedCluster) *bootstrappedWAL { metadata := pbutil.MustMarshal( &etcdserverpb.Metadata{ - NodeID: uint64(cl.nodeID), - ClusterID: uint64(cl.cl.ID()), + NodeID: new(uint64(cl.nodeID)), + ClusterID: new(uint64(cl.cl.ID())), }, ) w, err := wal.Create(cfg.Logger, cfg.WALDir(), metadata) diff --git a/tools/etcd-dump-logs/main.go b/tools/etcd-dump-logs/main.go index d596bbb7176c..a269538bd39b 100644 --- a/tools/etcd-dump-logs/main.go +++ b/tools/etcd-dump-logs/main.go @@ -199,8 +199,8 @@ func snapDir(dataDir string) string { return filepath.Join(dataDir, "member", "s func parseWALMetadata(b []byte) (id, cid types.ID) { var metadata etcdserverpb.Metadata pbutil.MustUnmarshal(&metadata, b) - id = types.ID(metadata.NodeID) - cid = types.ID(metadata.ClusterID) + id = types.ID(metadata.GetNodeID()) + cid = types.ID(metadata.GetClusterID()) return id, cid } From 00e0296486bbc16e45586400a234abe28d0b1f23 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 6 Feb 2026 03:28:44 -0500 Subject: [PATCH 0815/1068] generate: ./scripts/genproto.sh Signed-off-by: Jordan Liggitt --- server/storage/wal/walpb/record.pb.go | 127 +++++++++++++++----------- 1 file changed, 72 insertions(+), 55 deletions(-) diff --git a/server/storage/wal/walpb/record.pb.go b/server/storage/wal/walpb/record.pb.go index c27c81a7be48..8c22cd15c8e6 100644 --- a/server/storage/wal/walpb/record.pb.go +++ b/server/storage/wal/walpb/record.pb.go @@ -9,7 +9,6 @@ import ( math "math" math_bits "math/bits" - _ "github.com/gogo/protobuf/gogoproto" proto "github.com/golang/protobuf/proto" raftpb "go.etcd.io/raft/v3/raftpb" ) @@ -26,8 +25,8 @@ var _ = math.Inf const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type Record struct { - Type int64 `protobuf:"varint,1,opt,name=type" json:"type"` - Crc uint32 `protobuf:"varint,2,opt,name=crc" json:"crc"` + Type *int64 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"` + Crc *uint32 `protobuf:"varint,2,opt,name=crc" json:"crc,omitempty"` Data []byte `protobuf:"bytes,3,opt,name=data" json:"data,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -68,15 +67,15 @@ func (m *Record) XXX_DiscardUnknown() { var xxx_messageInfo_Record proto.InternalMessageInfo func (m *Record) GetType() int64 { - if m != nil { - return m.Type + if m != nil && m.Type != nil { + return *m.Type } return 0 } func (m *Record) GetCrc() uint32 { - if m != nil { - return m.Crc + if m != nil && m.Crc != nil { + return *m.Crc } return 0 } @@ -90,8 +89,8 @@ func (m *Record) GetData() []byte { // Keep in sync with raftpb.SnapshotMetadata. type Snapshot struct { - Index uint64 `protobuf:"varint,1,opt,name=index" json:"index"` - Term uint64 `protobuf:"varint,2,opt,name=term" json:"term"` + Index *uint64 `protobuf:"varint,1,opt,name=index" json:"index,omitempty"` + Term *uint64 `protobuf:"varint,2,opt,name=term" json:"term,omitempty"` // Field populated since >=etcd-3.5.0. ConfState *raftpb.ConfState `protobuf:"bytes,3,opt,name=conf_state,json=confState" json:"conf_state,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -133,15 +132,15 @@ func (m *Snapshot) XXX_DiscardUnknown() { var xxx_messageInfo_Snapshot proto.InternalMessageInfo func (m *Snapshot) GetIndex() uint64 { - if m != nil { - return m.Index + if m != nil && m.Index != nil { + return *m.Index } return 0 } func (m *Snapshot) GetTerm() uint64 { - if m != nil { - return m.Term + if m != nil && m.Term != nil { + return *m.Term } return 0 } @@ -161,24 +160,22 @@ func init() { func init() { proto.RegisterFile("record.proto", fileDescriptor_bf94fd919e302a1d) } var fileDescriptor_bf94fd919e302a1d = []byte{ - // 262 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x3c, 0x90, 0xb1, 0x4e, 0xc3, 0x30, - 0x18, 0x84, 0x6b, 0x92, 0x22, 0x30, 0x65, 0xa8, 0x85, 0x50, 0x94, 0x21, 0x44, 0x9d, 0x22, 0x21, - 0xd9, 0x08, 0x66, 0x96, 0xb2, 0x33, 0xa4, 0x1b, 0x0b, 0x72, 0x9d, 0x3f, 0xa1, 0x52, 0x9b, 0xdf, - 0xfa, 0x63, 0xb5, 0xf0, 0x26, 0x3c, 0x52, 0x47, 0x9e, 0x00, 0xa1, 0xf0, 0x22, 0xc8, 0x4e, 0xe9, - 0xf4, 0x9f, 0xbe, 0xd3, 0xdd, 0x59, 0xe6, 0x13, 0x02, 0x83, 0x54, 0x49, 0x4b, 0xe8, 0x50, 0x8c, - 0x77, 0x7a, 0x6d, 0x97, 0xe9, 0x55, 0x83, 0x0d, 0x06, 0xa2, 0xbc, 0x1a, 0xcc, 0x74, 0x4a, 0xba, - 0x76, 0x76, 0xa9, 0xfc, 0x19, 0xd0, 0xec, 0x99, 0x9f, 0x96, 0x21, 0x2f, 0x12, 0x1e, 0xbb, 0x0f, - 0x0b, 0x09, 0xcb, 0x59, 0x11, 0xcd, 0xe3, 0xfd, 0xf7, 0xcd, 0xa8, 0x0c, 0x44, 0x5c, 0xf3, 0xc8, - 0x90, 0x49, 0x4e, 0x72, 0x56, 0x5c, 0x1e, 0x0c, 0x0f, 0x84, 0xe0, 0x71, 0xa5, 0x9d, 0x4e, 0xa2, - 0x9c, 0x15, 0x93, 0x32, 0xe8, 0x19, 0xf1, 0xb3, 0x45, 0xab, 0x6d, 0xf7, 0x86, 0x4e, 0xa4, 0x7c, - 0xbc, 0x6a, 0x2b, 0x78, 0x0f, 0x95, 0xf1, 0x21, 0x39, 0xa0, 0xb0, 0x06, 0xb4, 0x09, 0xa5, 0xf1, - 0x71, 0x0d, 0x68, 0x23, 0xee, 0x38, 0x37, 0xd8, 0xd6, 0xaf, 0x9d, 0xd3, 0x0e, 0x42, 0xf7, 0xc5, - 0xfd, 0x54, 0x0e, 0x2f, 0x97, 0x4f, 0xd8, 0xd6, 0x0b, 0x6f, 0x94, 0xe7, 0xe6, 0x5f, 0xce, 0x1f, - 0xf7, 0x7d, 0xc6, 0xbe, 0xfa, 0x8c, 0xfd, 0xf4, 0x19, 0xfb, 0xfc, 0xcd, 0x46, 0x2f, 0xb7, 0x0d, - 0x4a, 0x70, 0xa6, 0x92, 0x2b, 0x54, 0xfe, 0xaa, 0x0e, 0x68, 0x0b, 0xa4, 0xb6, 0x0f, 0xaa, 0x73, - 0x48, 0xba, 0x01, 0xb5, 0xd3, 0x6b, 0x15, 0xfe, 0xea, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x70, 0x50, - 0xc0, 0xd5, 0x41, 0x01, 0x00, 0x00, + // 239 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x34, 0x8f, 0x41, 0x4a, 0xc4, 0x30, + 0x14, 0x86, 0x8d, 0xed, 0x88, 0xc6, 0x11, 0x9c, 0xe0, 0xa2, 0xb8, 0x28, 0x65, 0x56, 0x05, 0x21, + 0x11, 0x5d, 0xbb, 0x19, 0x6f, 0x90, 0xd9, 0xb9, 0x91, 0x4c, 0x9a, 0x8e, 0x03, 0x63, 0x5f, 0x78, + 0x7d, 0x4c, 0xf5, 0x26, 0x1e, 0xc9, 0xa5, 0x47, 0x90, 0x7a, 0x11, 0xc9, 0x2b, 0xb3, 0xfa, 0xbf, + 0xf0, 0xff, 0x7c, 0xe4, 0xc9, 0x39, 0x06, 0x0f, 0xd8, 0xe8, 0x88, 0x40, 0xa0, 0x66, 0x83, 0xdb, + 0xc7, 0xcd, 0xed, 0x02, 0x5d, 0x4b, 0x71, 0x63, 0x52, 0x4c, 0xcd, 0x72, 0x25, 0xcf, 0x2c, 0x2f, + 0x95, 0x92, 0x39, 0x7d, 0xc6, 0x50, 0x88, 0x4a, 0xd4, 0x99, 0x65, 0x56, 0xd7, 0x32, 0xf3, 0xe8, + 0x8b, 0xd3, 0x4a, 0xd4, 0x57, 0x36, 0x61, 0x5a, 0x35, 0x8e, 0x5c, 0x91, 0x55, 0xa2, 0x9e, 0x5b, + 0xe6, 0x65, 0x2b, 0xcf, 0xd7, 0x9d, 0x8b, 0xfd, 0x1b, 0x90, 0xba, 0x91, 0xb3, 0x5d, 0xd7, 0x84, + 0x0f, 0xd6, 0xe4, 0x76, 0x7a, 0xb0, 0x3b, 0xe0, 0x3b, 0x8b, 0x72, 0xcb, 0xac, 0xee, 0xa5, 0xf4, + 0xd0, 0xb5, 0xaf, 0x3d, 0x39, 0x0a, 0xec, 0xbb, 0x7c, 0x58, 0xe8, 0xe9, 0x87, 0xfa, 0x19, 0xba, + 0x76, 0x9d, 0x0a, 0x7b, 0xe1, 0x8f, 0xb8, 0x7a, 0xfa, 0x1e, 0x4b, 0xf1, 0x33, 0x96, 0xe2, 0x77, + 0x2c, 0xc5, 0xd7, 0x5f, 0x79, 0xf2, 0x72, 0xb7, 0x05, 0x1d, 0xc8, 0x37, 0x7a, 0x07, 0x26, 0xa5, + 0xe9, 0x03, 0x1e, 0x02, 0x9a, 0xc3, 0xa3, 0xe9, 0x09, 0xd0, 0x6d, 0x83, 0x19, 0xdc, 0xde, 0xf0, + 0xf5, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x48, 0x29, 0xe6, 0x31, 0x13, 0x01, 0x00, 0x00, } func (m *Record) Marshal() (dAtA []byte, err error) { @@ -212,12 +209,16 @@ func (m *Record) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - i = encodeVarintRecord(dAtA, i, uint64(m.Crc)) - i-- - dAtA[i] = 0x10 - i = encodeVarintRecord(dAtA, i, uint64(m.Type)) - i-- - dAtA[i] = 0x8 + if m.Crc != nil { + i = encodeVarintRecord(dAtA, i, uint64(*m.Crc)) + i-- + dAtA[i] = 0x10 + } + if m.Type != nil { + i = encodeVarintRecord(dAtA, i, uint64(*m.Type)) + i-- + dAtA[i] = 0x8 + } return len(dAtA) - i, nil } @@ -257,12 +258,16 @@ func (m *Snapshot) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - i = encodeVarintRecord(dAtA, i, uint64(m.Term)) - i-- - dAtA[i] = 0x10 - i = encodeVarintRecord(dAtA, i, uint64(m.Index)) - i-- - dAtA[i] = 0x8 + if m.Term != nil { + i = encodeVarintRecord(dAtA, i, uint64(*m.Term)) + i-- + dAtA[i] = 0x10 + } + if m.Index != nil { + i = encodeVarintRecord(dAtA, i, uint64(*m.Index)) + i-- + dAtA[i] = 0x8 + } return len(dAtA) - i, nil } @@ -283,8 +288,12 @@ func (m *Record) Size() (n int) { } var l int _ = l - n += 1 + sovRecord(uint64(m.Type)) - n += 1 + sovRecord(uint64(m.Crc)) + if m.Type != nil { + n += 1 + sovRecord(uint64(*m.Type)) + } + if m.Crc != nil { + n += 1 + sovRecord(uint64(*m.Crc)) + } if m.Data != nil { l = len(m.Data) n += 1 + l + sovRecord(uint64(l)) @@ -301,8 +310,12 @@ func (m *Snapshot) Size() (n int) { } var l int _ = l - n += 1 + sovRecord(uint64(m.Index)) - n += 1 + sovRecord(uint64(m.Term)) + if m.Index != nil { + n += 1 + sovRecord(uint64(*m.Index)) + } + if m.Term != nil { + n += 1 + sovRecord(uint64(*m.Term)) + } if m.ConfState != nil { l = m.ConfState.Size() n += 1 + l + sovRecord(uint64(l)) @@ -352,7 +365,7 @@ func (m *Record) Unmarshal(dAtA []byte) error { if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } - m.Type = 0 + var v int64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowRecord @@ -362,16 +375,17 @@ func (m *Record) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Type |= int64(b&0x7F) << shift + v |= int64(b&0x7F) << shift if b < 0x80 { break } } + m.Type = &v case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Crc", wireType) } - m.Crc = 0 + var v uint32 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowRecord @@ -381,11 +395,12 @@ func (m *Record) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Crc |= uint32(b&0x7F) << shift + v |= uint32(b&0x7F) << shift if b < 0x80 { break } } + m.Crc = &v case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) @@ -475,7 +490,7 @@ func (m *Snapshot) Unmarshal(dAtA []byte) error { if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType) } - m.Index = 0 + var v uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowRecord @@ -485,16 +500,17 @@ func (m *Snapshot) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Index |= uint64(b&0x7F) << shift + v |= uint64(b&0x7F) << shift if b < 0x80 { break } } + m.Index = &v case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Term", wireType) } - m.Term = 0 + var v uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowRecord @@ -504,11 +520,12 @@ func (m *Snapshot) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Term |= uint64(b&0x7F) << shift + v |= uint64(b&0x7F) << shift if b < 0x80 { break } } + m.Term = &v case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ConfState", wireType) From 38783cba1adeffc05119a82a4e922bcfffb60e3a Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 6 Feb 2026 02:34:58 -0500 Subject: [PATCH 0816/1068] snappb: drop gogoproto.nullable Signed-off-by: Jordan Liggitt --- server/etcdserver/api/snap/snappb/snap.proto | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/server/etcdserver/api/snap/snappb/snap.proto b/server/etcdserver/api/snap/snappb/snap.proto index 599740d610c8..7e97db993002 100644 --- a/server/etcdserver/api/snap/snappb/snap.proto +++ b/server/etcdserver/api/snap/snappb/snap.proto @@ -1,11 +1,9 @@ syntax = "proto2"; package snappb; -import "gogoproto/gogo.proto"; - option go_package = "go.etcd.io/etcd/server/v3/etcdserver/api/snap/snappb"; message snapshot { - optional uint32 crc = 1 [(gogoproto.nullable) = false]; + optional uint32 crc = 1; optional bytes data = 2; } From 8b2b532625a63034960ee9bd6e0d942aa049489d Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 6 Feb 2026 03:36:10 -0500 Subject: [PATCH 0817/1068] walpb: use field getters and set field pointers Signed-off-by: Jordan Liggitt --- contrib/raftexample/raft.go | 8 ++-- etcdutl/etcdutl/common_test.go | 18 ++++---- etcdutl/snapshot/v3_snapshot.go | 2 +- server/etcdserver/api/snap/snapshotter.go | 2 +- .../etcdserver/api/snap/snapshotter_test.go | 6 +-- server/etcdserver/bootstrap.go | 6 +-- server/etcdserver/bootstrap_test.go | 4 +- server/storage/storage.go | 8 ++-- server/storage/wal/decoder.go | 2 +- server/storage/wal/doc.go | 8 +++- server/storage/wal/encoder.go | 2 +- server/storage/wal/record_test.go | 6 +-- server/storage/wal/repair.go | 4 +- server/storage/wal/wal.go | 44 +++++++++---------- server/storage/wal/wal_test.go | 34 +++++++------- server/storage/wal/walpb/record.go | 6 +-- server/storage/wal/walpb/record_test.go | 4 +- server/verify/verify.go | 4 +- tests/robustness/report/wal.go | 4 +- tests/robustness/report/wal_test.go | 16 +++---- tools/etcd-dump-logs/main.go | 5 ++- tools/etcd-dump-logs/raw.go | 12 ++--- 22 files changed, 105 insertions(+), 100 deletions(-) diff --git a/contrib/raftexample/raft.go b/contrib/raftexample/raft.go index 615e8c13e297..d059115fabdb 100644 --- a/contrib/raftexample/raft.go +++ b/contrib/raftexample/raft.go @@ -118,8 +118,8 @@ func newRaftNode(id int, peers []string, join bool, getSnapshot func() ([]byte, func (rc *raftNode) saveSnap(snap raftpb.Snapshot) error { walSnap := walpb.Snapshot{ - Index: snap.Metadata.Index, - Term: snap.Metadata.Term, + Index: new(snap.Metadata.Index), + Term: new(snap.Metadata.Term), ConfState: &snap.Metadata.ConfState, } // save the snapshot file before writing the snapshot to the wal. @@ -232,9 +232,9 @@ func (rc *raftNode) openWAL(snapshot *raftpb.Snapshot) *wal.WAL { walsnap := walpb.Snapshot{} if snapshot != nil { - walsnap.Index, walsnap.Term = snapshot.Metadata.Index, snapshot.Metadata.Term + walsnap.Index, walsnap.Term = new(snapshot.Metadata.Index), new(snapshot.Metadata.Term) } - log.Printf("loading WAL at term %d and index %d", walsnap.Term, walsnap.Index) + log.Printf("loading WAL at term %d and index %d", walsnap.GetTerm(), walsnap.GetIndex()) w, err := wal.Open(zap.NewExample(), rc.waldir, walsnap) if err != nil { log.Fatalf("raftexample: error loading wal (%v)", err) diff --git a/etcdutl/etcdutl/common_test.go b/etcdutl/etcdutl/common_test.go index 3a27fbe96c35..2e9120b5a153 100644 --- a/etcdutl/etcdutl/common_test.go +++ b/etcdutl/etcdutl/common_test.go @@ -40,23 +40,23 @@ func TestGetLatestWalSnap(t *testing.T) { { name: "wal snapshot records match the snapshot files", walSnaps: []walpb.Snapshot{ - {Index: 10, Term: 2}, - {Index: 20, Term: 3}, - {Index: 30, Term: 5}, + {Index: new(uint64(10)), Term: new(uint64(2))}, + {Index: new(uint64(20)), Term: new(uint64(3))}, + {Index: new(uint64(30)), Term: new(uint64(5))}, }, snapshots: []raftpb.Snapshot{ {Metadata: raftpb.SnapshotMetadata{Index: 10, Term: 2}}, {Metadata: raftpb.SnapshotMetadata{Index: 20, Term: 3}}, {Metadata: raftpb.SnapshotMetadata{Index: 30, Term: 5}}, }, - expectedLatestWALSnap: walpb.Snapshot{Index: 30, Term: 5}, + expectedLatestWALSnap: walpb.Snapshot{Index: new(uint64(30)), Term: new(uint64(5))}, }, { name: "there are orphan snapshot files", walSnaps: []walpb.Snapshot{ - {Index: 10, Term: 2}, - {Index: 20, Term: 3}, - {Index: 35, Term: 5}, + {Index: new(uint64(10)), Term: new(uint64(2))}, + {Index: new(uint64(20)), Term: new(uint64(3))}, + {Index: new(uint64(35)), Term: new(uint64(5))}, }, snapshots: []raftpb.Snapshot{ {Metadata: raftpb.SnapshotMetadata{Index: 10, Term: 2}}, @@ -65,7 +65,7 @@ func TestGetLatestWalSnap(t *testing.T) { {Metadata: raftpb.SnapshotMetadata{Index: 40, Term: 6}}, {Metadata: raftpb.SnapshotMetadata{Index: 50, Term: 7}}, }, - expectedLatestWALSnap: walpb.Snapshot{Index: 35, Term: 5}, + expectedLatestWALSnap: walpb.Snapshot{Index: new(uint64(35)), Term: new(uint64(5))}, }, } @@ -91,7 +91,7 @@ func TestGetLatestWalSnap(t *testing.T) { walSnap.ConfState = &raftpb.ConfState{Voters: []uint64{1}} walErr := w.SaveSnapshot(walSnap) require.NoError(t, walErr) - walErr = w.Save(raftpb.HardState{Term: walSnap.Term, Commit: walSnap.Index, Vote: 1}, nil) + walErr = w.Save(raftpb.HardState{Term: walSnap.GetTerm(), Commit: walSnap.GetIndex(), Vote: 1}, nil) require.NoError(t, walErr) } err = w.Close() diff --git a/etcdutl/snapshot/v3_snapshot.go b/etcdutl/snapshot/v3_snapshot.go index 81dde9a0d0e0..28f9a5689ac7 100644 --- a/etcdutl/snapshot/v3_snapshot.go +++ b/etcdutl/snapshot/v3_snapshot.go @@ -586,7 +586,7 @@ func (s *v3Manager) saveWALAndSnap() (*raftpb.HardState, error) { if err := sn.SaveSnap(raftSnap); err != nil { return nil, err } - snapshot := walpb.Snapshot{Index: commit, Term: term, ConfState: &confState} + snapshot := walpb.Snapshot{Index: &commit, Term: &term, ConfState: &confState} return &hardState, w.SaveSnapshot(snapshot) } diff --git a/server/etcdserver/api/snap/snapshotter.go b/server/etcdserver/api/snap/snapshotter.go index 0de6f9b91ea5..95e3a92e115f 100644 --- a/server/etcdserver/api/snap/snapshotter.go +++ b/server/etcdserver/api/snap/snapshotter.go @@ -114,7 +114,7 @@ func (s *Snapshotter) LoadNewestAvailable(walSnaps []walpb.Snapshot) (*raftpb.Sn return s.loadMatching(func(snapshot *raftpb.Snapshot) bool { m := snapshot.Metadata for i := len(walSnaps) - 1; i >= 0; i-- { - if m.Term == walSnaps[i].Term && m.Index == walSnaps[i].Index { + if m.Term == walSnaps[i].GetTerm() && m.Index == walSnaps[i].GetIndex() { return true } } diff --git a/server/etcdserver/api/snap/snapshotter_test.go b/server/etcdserver/api/snap/snapshotter_test.go index 51d0ac0443a2..b0fd09410bc6 100644 --- a/server/etcdserver/api/snap/snapshotter_test.go +++ b/server/etcdserver/api/snap/snapshotter_test.go @@ -180,17 +180,17 @@ func TestLoadNewestSnap(t *testing.T) { }, { name: "loadnewestavailable-newest", - availableWALSnaps: []walpb.Snapshot{{Index: 0, Term: 0}, {Index: 1, Term: 1}, {Index: 5, Term: 1}}, + availableWALSnaps: []walpb.Snapshot{{Index: new(uint64(0)), Term: new(uint64(0))}, {Index: new(uint64(1)), Term: new(uint64(1))}, {Index: new(uint64(5)), Term: new(uint64(1))}}, expected: &newSnap, }, { name: "loadnewestavailable-newest-unsorted", - availableWALSnaps: []walpb.Snapshot{{Index: 5, Term: 1}, {Index: 1, Term: 1}, {Index: 0, Term: 0}}, + availableWALSnaps: []walpb.Snapshot{{Index: new(uint64(5)), Term: new(uint64(1))}, {Index: new(uint64(1)), Term: new(uint64(1))}, {Index: new(uint64(0)), Term: new(uint64(0))}}, expected: &newSnap, }, { name: "loadnewestavailable-previous", - availableWALSnaps: []walpb.Snapshot{{Index: 0, Term: 0}, {Index: 1, Term: 1}}, + availableWALSnaps: []walpb.Snapshot{{Index: new(uint64(0)), Term: new(uint64(0))}, {Index: new(uint64(1)), Term: new(uint64(1))}}, expected: testSnap, }, } diff --git a/server/etcdserver/bootstrap.go b/server/etcdserver/bootstrap.go index 3d480b216291..4ce3d68f3538 100644 --- a/server/etcdserver/bootstrap.go +++ b/server/etcdserver/bootstrap.go @@ -421,8 +421,8 @@ func recoverSnapshot(cfg config.ServerConfig, be backend.Backend, beExist bool, idx := len(walSnaps) - 1 snapshot = &raftpb.Snapshot{ Metadata: raftpb.SnapshotMetadata{ - Term: walSnaps[idx].Term, - Index: walSnaps[idx].Index, + Term: walSnaps[idx].GetTerm(), + Index: walSnaps[idx].GetIndex(), }, } if walSnaps[idx].ConfState != nil { @@ -632,7 +632,7 @@ func bootstrapWALFromSnapshot(cfg config.ServerConfig, snapshot *raftpb.Snapshot func openWALFromSnapshot(cfg config.ServerConfig, snapshot *raftpb.Snapshot) (*wal.WAL, *raftpb.HardState, []raftpb.Entry, *raftpb.Snapshot, *snapshotMetadata) { var walsnap walpb.Snapshot if snapshot != nil { - walsnap.Index, walsnap.Term = snapshot.Metadata.Index, snapshot.Metadata.Term + walsnap.Index, walsnap.Term = new(snapshot.Metadata.Index), new(snapshot.Metadata.Term) } repaired := false for { diff --git a/server/etcdserver/bootstrap_test.go b/server/etcdserver/bootstrap_test.go index 3d2bb8a9595a..4884a958f3ca 100644 --- a/server/etcdserver/bootstrap_test.go +++ b/server/etcdserver/bootstrap_test.go @@ -253,8 +253,8 @@ func createWALFileWithSnapshotRecord(cfg config.ServerConfig, snapshotTerm, snap }() walSnap := walpb.Snapshot{ - Index: snapshotIndex, - Term: snapshotTerm, + Index: &snapshotIndex, + Term: &snapshotTerm, ConfState: &raftpb.ConfState{ Voters: []uint64{0x00ffca74}, AutoLeave: false, diff --git a/server/storage/storage.go b/server/storage/storage.go index 99a37a23d071..6e2a201f5282 100644 --- a/server/storage/storage.go +++ b/server/storage/storage.go @@ -61,8 +61,8 @@ func (st *storage) SaveSnap(snap raftpb.Snapshot) error { st.mux.RLock() defer st.mux.RUnlock() walsnap := walpb.Snapshot{ - Index: snap.Metadata.Index, - Term: snap.Metadata.Term, + Index: new(snap.Metadata.Index), + Term: new(snap.Metadata.Term), ConfState: &snap.Metadata.ConfState, } // save the snapshot file before writing the snapshot to the wal. @@ -117,8 +117,8 @@ func (st *storage) MinimalEtcdVersion() *semver.Version { panic(err) } if sn != nil { - walsnap.Index = sn.Metadata.Index - walsnap.Term = sn.Metadata.Term + walsnap.Index = new(sn.Metadata.Index) + walsnap.Term = new(sn.Metadata.Term) walsnap.ConfState = &sn.Metadata.ConfState } w, err := st.w.Reopen(st.lg, walsnap) diff --git a/server/storage/wal/decoder.go b/server/storage/wal/decoder.go index bdd4962e97f7..a0d8558a2eed 100644 --- a/server/storage/wal/decoder.go +++ b/server/storage/wal/decoder.go @@ -128,7 +128,7 @@ func (d *decoder) decodeRecord(rec *walpb.Record) error { } // skip crc checking if the record type is CrcType - if rec.Type != CrcType { + if rec.GetType() != CrcType { _, err := d.crc.Write(rec.Data) if err != nil { return err diff --git a/server/storage/wal/doc.go b/server/storage/wal/doc.go index 0f7ef8527bea..8839ca3064f7 100644 --- a/server/storage/wal/doc.go +++ b/server/storage/wal/doc.go @@ -28,7 +28,9 @@ to it with the Save method: After saving a raft snapshot to disk, SaveSnapshot method should be called to record it. So WAL can match with the saved snapshot when restarting. - err := w.SaveSnapshot(walpb.Snapshot{Index: 10, Term: 2}) + index := uint64(10) + term := uint64(2) + err := w.SaveSnapshot(walpb.Snapshot{Index: &index, Term: &term}) When a user has finished using a WAL it must be closed: @@ -58,7 +60,9 @@ If a second cut issues 0x10 entries with incremental index later, then the file At a later time a WAL can be opened at a particular snapshot. If there is no snapshot, an empty snapshot should be passed in. - w, err := wal.Open("/var/lib/etcd", walpb.Snapshot{Index: 10, Term: 2}) + index := uint64(10) + term := uint64(2) + w, err := wal.Open("/var/lib/etcd", walpb.Snapshot{Index: &index, Term: &term}) ... The snapshot must have been written to the WAL. diff --git a/server/storage/wal/encoder.go b/server/storage/wal/encoder.go index 5944ba7b120f..1379bb47c0c0 100644 --- a/server/storage/wal/encoder.go +++ b/server/storage/wal/encoder.go @@ -65,7 +65,7 @@ func (e *encoder) encode(rec *walpb.Record) error { defer e.mu.Unlock() e.crc.Write(rec.Data) - rec.Crc = e.crc.Sum32() + rec.Crc = new(e.crc.Sum32()) var ( data []byte err error diff --git a/server/storage/wal/record_test.go b/server/storage/wal/record_test.go index 85ceebed9c11..c8681b0dfc3a 100644 --- a/server/storage/wal/record_test.go +++ b/server/storage/wal/record_test.go @@ -42,7 +42,7 @@ func TestReadRecord(t *testing.T) { wr *walpb.Record we error }{ - {infoRecord, &walpb.Record{Type: 1, Crc: crc32.Checksum(infoData, crcTable), Data: infoData}, nil}, + {infoRecord, &walpb.Record{Type: new(int64(1)), Crc: new(crc32.Checksum(infoData, crcTable)), Data: infoData}, nil}, {[]byte(""), &walpb.Record{}, io.EOF}, {infoRecord[:14], &walpb.Record{}, io.ErrUnexpectedEOF}, {infoRecord[:len(infoRecord)-len(infoData)], &walpb.Record{}, io.ErrUnexpectedEOF}, @@ -75,7 +75,7 @@ func TestWriteRecord(t *testing.T) { d := []byte("Hello world!") buf := new(bytes.Buffer) e := newEncoder(buf, 0, 0) - e.encode(&walpb.Record{Type: typ, Data: d}) + e.encode(&walpb.Record{Type: new(typ), Data: d}) e.flush() f, err := createFileWithData(t, buf) if err != nil { @@ -86,7 +86,7 @@ func TestWriteRecord(t *testing.T) { if err != nil { t.Errorf("err = %v, want nil", err) } - if b.Type != typ { + if b.GetType() != typ { t.Errorf("type = %d, want %d", b.Type, typ) } if !reflect.DeepEqual(b.Data, d) { diff --git a/server/storage/wal/repair.go b/server/storage/wal/repair.go index f8f814f04497..0cdfd006febf 100644 --- a/server/storage/wal/repair.go +++ b/server/storage/wal/repair.go @@ -49,14 +49,14 @@ func Repair(lg *zap.Logger, dirpath string) bool { switch { case err == nil: // update crc of the decoder when necessary - if rec.Type == CrcType { + if rec.GetType() == CrcType { crc := decoder.LastCRC() // current crc of decoder must match the crc of the record. // do no need to match 0 crc, since the decoder is a new one at this case. if crc != 0 && rec.Validate(crc) != nil { return false } - decoder.UpdateCRC(rec.Crc) + decoder.UpdateCRC(rec.GetCrc()) } continue diff --git a/server/storage/wal/wal.go b/server/storage/wal/wal.go index f3d7bc5f4d44..da48ef32ade8 100644 --- a/server/storage/wal/wal.go +++ b/server/storage/wal/wal.go @@ -166,7 +166,7 @@ func Create(lg *zap.Logger, dirpath string, metadata []byte) (*WAL, error) { if err = w.saveCrc(0); err != nil { return nil, err } - if err = w.encoder.encode(&walpb.Record{Type: MetadataType, Data: metadata}); err != nil { + if err = w.encoder.encode(&walpb.Record{Type: new(MetadataType), Data: metadata}); err != nil { return nil, err } if err = w.SaveSnapshot(walpb.Snapshot{}); err != nil { @@ -402,7 +402,7 @@ func selectWALFiles(lg *zap.Logger, dirpath string, snap walpb.Snapshot) ([]stri return nil, -1, fmt.Errorf("readWALNames failed: %w", err) } - nameIndex, ok := searchIndex(lg, names, snap.Index) + nameIndex, ok := searchIndex(lg, names, snap.GetIndex()) if !ok { return nil, -1, fmt.Errorf("wal: file not found which matches the snapshot index '%d'", snap.Index) } @@ -479,13 +479,13 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb. var match bool for err = decoder.Decode(rec); err == nil; err = decoder.Decode(rec) { - switch rec.Type { + switch rec.GetType() { case EntryType: e := MustUnmarshalEntry(rec.Data) // 0 <= e.Index-w.start.Index - 1 < len(ents) - if e.Index > w.start.Index { + if e.Index > w.start.GetIndex() { // prevent "panic: runtime error: slice bounds out of range [:13038096702221461992] with capacity 0" - offset := e.Index - w.start.Index - 1 + offset := e.Index - w.start.GetIndex() - 1 if offset > uint64(len(ents)) { // return error before append call causes runtime panic. // We still return the continuous WAL entries that have already been read. @@ -516,13 +516,13 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb. state.Reset() return nil, state, nil, ErrCRCMismatch } - decoder.UpdateCRC(rec.Crc) + decoder.UpdateCRC(rec.GetCrc()) case SnapshotType: var snap walpb.Snapshot pbutil.MustUnmarshal(&snap, rec.Data) - if snap.Index == w.start.Index { - if snap.Term != w.start.Term { + if snap.GetIndex() == w.start.GetIndex() { + if snap.GetTerm() != w.start.GetTerm() { state.Reset() return nil, state, nil, ErrSnapshotMismatch } @@ -619,7 +619,7 @@ func ValidSnapshotEntries(lg *zap.Logger, walDir string) ([]walpb.Snapshot, erro decoder := NewDecoder(rs...) for err = decoder.Decode(rec); err == nil; err = decoder.Decode(rec) { - switch rec.Type { + switch rec.GetType() { case SnapshotType: var loadedSnap walpb.Snapshot pbutil.MustUnmarshal(&loadedSnap, rec.Data) @@ -633,7 +633,7 @@ func ValidSnapshotEntries(lg *zap.Logger, walDir string) ([]walpb.Snapshot, erro if crc != 0 && rec.Validate(crc) != nil { return nil, ErrCRCMismatch } - decoder.UpdateCRC(rec.Crc) + decoder.UpdateCRC(rec.GetCrc()) } } // We do not have to read out all the WAL entries @@ -645,7 +645,7 @@ func ValidSnapshotEntries(lg *zap.Logger, walDir string) ([]walpb.Snapshot, erro // filter out any snaps that are newer than the committed hardstate n := 0 for _, s := range snaps { - if s.Index <= state.Commit { + if s.GetIndex() <= state.Commit { snaps[n] = s n++ } @@ -693,7 +693,7 @@ func Verify(lg *zap.Logger, walDir string, snap walpb.Snapshot) (*raftpb.HardSta decoder := NewDecoder(rs...) for err = decoder.Decode(rec); err == nil; err = decoder.Decode(rec) { - switch rec.Type { + switch rec.GetType() { case MetadataType: if metadata != nil && !bytes.Equal(metadata, rec.Data) { return nil, ErrMetadataConflict @@ -706,12 +706,12 @@ func Verify(lg *zap.Logger, walDir string, snap walpb.Snapshot) (*raftpb.HardSta if crc != 0 && rec.Validate(crc) != nil { return nil, ErrCRCMismatch } - decoder.UpdateCRC(rec.Crc) + decoder.UpdateCRC(rec.GetCrc()) case SnapshotType: var loadedSnap walpb.Snapshot pbutil.MustUnmarshal(&loadedSnap, rec.Data) - if loadedSnap.Index == snap.Index { - if loadedSnap.Term != snap.Term { + if loadedSnap.GetIndex() == snap.GetIndex() { + if loadedSnap.GetTerm() != snap.GetTerm() { return nil, ErrSnapshotMismatch } match = true @@ -777,7 +777,7 @@ func (w *WAL) cut() error { return err } - if err = w.encoder.encode(&walpb.Record{Type: MetadataType, Data: w.metadata}); err != nil { + if err = w.encoder.encode(&walpb.Record{Type: new(MetadataType), Data: w.metadata}); err != nil { return err } @@ -934,7 +934,7 @@ func (w *WAL) Close() error { func (w *WAL) saveEntry(e *raftpb.Entry) error { // TODO: add MustMarshalTo to reduce one allocation. b := pbutil.MustMarshal(e) - rec := &walpb.Record{Type: EntryType, Data: b} + rec := &walpb.Record{Type: new(EntryType), Data: b} if err := w.encoder.encode(rec); err != nil { return err } @@ -948,7 +948,7 @@ func (w *WAL) saveState(s *raftpb.HardState) error { } w.state = *s b := pbutil.MustMarshal(s) - rec := &walpb.Record{Type: StateType, Data: b} + rec := &walpb.Record{Type: new(StateType), Data: b} return w.encoder.encode(rec) } @@ -1000,19 +1000,19 @@ func (w *WAL) SaveSnapshot(e walpb.Snapshot) error { w.mu.Lock() defer w.mu.Unlock() - rec := &walpb.Record{Type: SnapshotType, Data: b} + rec := &walpb.Record{Type: new(SnapshotType), Data: b} if err := w.encoder.encode(rec); err != nil { return err } // update enti only when snapshot is ahead of last index - if w.enti < e.Index { - w.enti = e.Index + if w.enti < e.GetIndex() { + w.enti = e.GetIndex() } return w.sync() } func (w *WAL) saveCrc(prevCrc uint32) error { - return w.encoder.encode(&walpb.Record{Type: CrcType, Crc: prevCrc}) + return w.encoder.encode(&walpb.Record{Type: new(CrcType), Crc: &prevCrc}) } func (w *WAL) tail() *fileutil.LockedFile { diff --git a/server/storage/wal/wal_test.go b/server/storage/wal/wal_test.go index 461533372008..2f9baf40180b 100644 --- a/server/storage/wal/wal_test.go +++ b/server/storage/wal/wal_test.go @@ -83,12 +83,12 @@ func TestNew(t *testing.T) { var wb bytes.Buffer e := newEncoder(&wb, 0, 0) - err = e.encode(&walpb.Record{Type: CrcType, Crc: 0}) + err = e.encode(&walpb.Record{Type: new(CrcType), Crc: new(uint32(0))}) require.NoErrorf(t, err, "err = %v, want nil", err) - err = e.encode(&walpb.Record{Type: MetadataType, Data: []byte("somedata")}) + err = e.encode(&walpb.Record{Type: new(MetadataType), Data: []byte("somedata")}) require.NoErrorf(t, err, "err = %v, want nil", err) r := &walpb.Record{ - Type: SnapshotType, + Type: new(SnapshotType), Data: pbutil.MustMarshal(&walpb.Snapshot{}), } err = e.encode(r) @@ -245,7 +245,7 @@ func TestOpenAtIndex(t *testing.T) { } f.Close() - w, err = Open(zaptest.NewLogger(t), dir, walpb.Snapshot{Index: 5}) + w, err = Open(zaptest.NewLogger(t), dir, walpb.Snapshot{Index: new(uint64(5))}) require.NoErrorf(t, err, "err = %v, want nil", err) if g := filepath.Base(w.tail().Name()); g != wname { t.Errorf("name = %+v, want %+v", g, wname) @@ -343,7 +343,7 @@ func TestCut(t *testing.T) { if err = w.cut(); err != nil { t.Fatal(err) } - snap := walpb.Snapshot{Index: 2, Term: 1, ConfState: &confState} + snap := walpb.Snapshot{Index: new(uint64(2)), Term: new(uint64(1)), ConfState: &confState} if err = w.SaveSnapshot(snap); err != nil { t.Fatal(err) } @@ -579,7 +579,7 @@ func TestRecoverAfterCut(t *testing.T) { t.Fatal(err) } for i := 0; i < 10; i++ { - if err = md.SaveSnapshot(walpb.Snapshot{Index: uint64(i), Term: 1, ConfState: &confState}); err != nil { + if err = md.SaveSnapshot(walpb.Snapshot{Index: new(uint64(i)), Term: new(uint64(1)), ConfState: &confState}); err != nil { t.Fatal(err) } es := []raftpb.Entry{{Index: uint64(i)}} @@ -597,7 +597,7 @@ func TestRecoverAfterCut(t *testing.T) { } for i := 0; i < 10; i++ { - w, err := Open(zaptest.NewLogger(t), p, walpb.Snapshot{Index: uint64(i), Term: 1}) + w, err := Open(zaptest.NewLogger(t), p, walpb.Snapshot{Index: new(uint64(i)), Term: new(uint64(1))}) if err != nil { if i <= 4 { if !strings.Contains(err.Error(), "do not increase continuously") { @@ -1022,12 +1022,12 @@ func TestReadAllFail(t *testing.T) { func TestValidSnapshotEntries(t *testing.T) { p := t.TempDir() snap0 := walpb.Snapshot{} - snap1 := walpb.Snapshot{Index: 1, Term: 1, ConfState: &confState} + snap1 := walpb.Snapshot{Index: new(uint64(1)), Term: new(uint64(1)), ConfState: &confState} state1 := raftpb.HardState{Commit: 1, Term: 1} - snap2 := walpb.Snapshot{Index: 2, Term: 1, ConfState: &confState} - snap3 := walpb.Snapshot{Index: 3, Term: 2, ConfState: &confState} + snap2 := walpb.Snapshot{Index: new(uint64(2)), Term: new(uint64(1)), ConfState: &confState} + snap3 := walpb.Snapshot{Index: new(uint64(3)), Term: new(uint64(2)), ConfState: &confState} state2 := raftpb.HardState{Commit: 3, Term: 2} - snap4 := walpb.Snapshot{Index: 4, Term: 2, ConfState: &confState} // will be orphaned since the last committed entry will be snap3 + snap4 := walpb.Snapshot{Index: new(uint64(4)), Term: new(uint64(2)), ConfState: &confState} // will be orphaned since the last committed entry will be snap3 func() { w, err := Create(zaptest.NewLogger(t), p, nil) if err != nil { @@ -1075,10 +1075,10 @@ func TestValidSnapshotEntriesAfterPurgeWal(t *testing.T) { }() p := t.TempDir() snap0 := walpb.Snapshot{} - snap1 := walpb.Snapshot{Index: 1, Term: 1, ConfState: &confState} + snap1 := walpb.Snapshot{Index: new(uint64(1)), Term: new(uint64(1)), ConfState: &confState} state1 := raftpb.HardState{Commit: 1, Term: 1} - snap2 := walpb.Snapshot{Index: 2, Term: 1, ConfState: &confState} - snap3 := walpb.Snapshot{Index: 3, Term: 2, ConfState: &confState} + snap2 := walpb.Snapshot{Index: new(uint64(2)), Term: new(uint64(1)), ConfState: &confState} + snap3 := walpb.Snapshot{Index: new(uint64(3)), Term: new(uint64(2)), ConfState: &confState} state2 := raftpb.HardState{Commit: 3, Term: 2} func() { w, err := Create(zaptest.NewLogger(t), p, nil) @@ -1164,7 +1164,7 @@ func TestLastRecordLengthExceedFileEnd(t *testing.T) { require.ErrorIs(t, err, io.ErrUnexpectedEOF) break } - if rec.Type == EntryType { + if rec.GetType() == EntryType { e := MustUnmarshalEntry(rec.Data) t.Logf("Validating normal entry: %v", e) recData := fmt.Sprintf("waldata%d", e.Index) @@ -1181,8 +1181,8 @@ func TestLastRecordLengthExceedFileEnd(t *testing.T) { require.NoError(t, os.Rename(fileName, newFileName)) w, err := Open(zaptest.NewLogger(t), filepath.Dir(fileName), walpb.Snapshot{ - Index: 0, - Term: 0, + Index: new(uint64(0)), + Term: new(uint64(0)), }) require.NoError(t, err) defer w.Close() diff --git a/server/storage/wal/walpb/record.go b/server/storage/wal/walpb/record.go index 30e6c061366f..8a490b4b0bb0 100644 --- a/server/storage/wal/walpb/record.go +++ b/server/storage/wal/walpb/record.go @@ -22,10 +22,10 @@ import ( var ErrCRCMismatch = errors.New("walpb: crc mismatch") func (rec *Record) Validate(crc uint32) error { - if rec.Crc == crc { + if rec.GetCrc() == crc { return nil } - return fmt.Errorf("%w: expected: %x computed: %x", ErrCRCMismatch, rec.Crc, crc) + return fmt.Errorf("%w: expected: %x computed: %x", ErrCRCMismatch, rec.GetCrc(), crc) } // ValidateSnapshotForWrite ensures the Snapshot the newly written snapshot is valid. @@ -34,7 +34,7 @@ func (rec *Record) Validate(crc uint32) error { // to the requirements. func ValidateSnapshotForWrite(e *Snapshot) error { // Since etcd>=3.5.0 - if e.ConfState == nil && e.Index > 0 { + if e.ConfState == nil && e.GetIndex() > 0 { return errors.New("Saved (not-initial) snapshot is missing ConfState: " + e.String()) } return nil diff --git a/server/storage/wal/walpb/record_test.go b/server/storage/wal/walpb/record_test.go index 5a466eae84d7..5af88fa993f8 100644 --- a/server/storage/wal/walpb/record_test.go +++ b/server/storage/wal/walpb/record_test.go @@ -38,8 +38,8 @@ func TestValidateSnapshot(t *testing.T) { wantErr bool }{ {name: "empty", snap: &Snapshot{}, wantErr: false}, - {name: "invalid", snap: &Snapshot{Index: 5, Term: 3}, wantErr: true}, - {name: "valid", snap: &Snapshot{Index: 5, Term: 3, ConfState: &raftpb.ConfState{Voters: []uint64{0x00cad1}}}, wantErr: false}, + {name: "invalid", snap: &Snapshot{Index: new(uint64(5)), Term: new(uint64(3))}, wantErr: true}, + {name: "valid", snap: &Snapshot{Index: new(uint64(5)), Term: new(uint64(3)), ConfState: &raftpb.ConfState{Voters: []uint64{0x00cad1}}}, wantErr: false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/server/verify/verify.go b/server/verify/verify.go index 0dc99afc819f..c01421305b66 100644 --- a/server/verify/verify.go +++ b/server/verify/verify.go @@ -123,8 +123,8 @@ func validateConsistentIndex(cfg Config, hardstate *raftpb.HardState, snapshot * return fmt.Errorf("backend.Term (%v) must be <= WAL.HardState.term, (%v)", term, hardstate.Term) } - if index < snapshot.Index { - return fmt.Errorf("backend.ConsistentIndex (%v) must be >= last snapshot index (%v)", index, snapshot.Index) + if index < snapshot.GetIndex() { + return fmt.Errorf("backend.ConsistentIndex (%v) must be >= last snapshot index (%v)", index, snapshot.GetIndex()) } cfg.Logger.Info("verification: consistentIndex OK", zap.Uint64("backend-consistent-index", index), zap.Uint64("hardstate-commit", hardstate.Commit)) diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index f28be8e436ce..ad69658b35ea 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -372,7 +372,7 @@ func ReadAllWALEntries(lg *zap.Logger, dirpath string) (state raftpb.HardState, rec := &walpb.Record{} decoder := wal.NewDecoder(files...) for err = decoder.Decode(rec); err == nil; err = decoder.Decode(rec) { - switch rec.Type { + switch rec.GetType() { case wal.EntryType: e := wal.MustUnmarshalEntry(rec.Data) i := len(ents) @@ -391,7 +391,7 @@ func ReadAllWALEntries(lg *zap.Logger, dirpath string) (state raftpb.HardState, state.Reset() return state, nil, wal.ErrCRCMismatch } - decoder.UpdateCRC(rec.Crc) + decoder.UpdateCRC(rec.GetCrc()) case wal.SnapshotType: default: return state, nil, fmt.Errorf("unexpected block type %d", rec.Type) diff --git a/tests/robustness/report/wal_test.go b/tests/robustness/report/wal_test.go index b3b2d3d019eb..9fa90ca7919d 100644 --- a/tests/robustness/report/wal_test.go +++ b/tests/robustness/report/wal_test.go @@ -486,7 +486,7 @@ func TestWriteReadWAL(t *testing.T) { entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, { - snapshot: &walpb.Snapshot{Index: 3, ConfState: &raftpb.ConfState{}}, + snapshot: &walpb.Snapshot{Index: new(uint64(3)), ConfState: &raftpb.ConfState{}}, }, { state: &raftpb.HardState{Commit: 5}, @@ -511,14 +511,14 @@ func TestWriteReadWAL(t *testing.T) { entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, { - snapshot: &walpb.Snapshot{Index: 3, ConfState: &raftpb.ConfState{}}, + snapshot: &walpb.Snapshot{Index: new(uint64(3)), ConfState: &raftpb.ConfState{}}, }, { state: &raftpb.HardState{Commit: 5}, entries: []raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, }, - readAt: walpb.Snapshot{Index: 3}, + readAt: walpb.Snapshot{Index: new(uint64(3))}, walReadAll: want{ wantState: raftpb.HardState{Commit: 5}, wantEntries: []raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, @@ -540,7 +540,7 @@ func TestWriteReadWAL(t *testing.T) { entries: []raftpb.Entry{{Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, }, { - snapshot: &walpb.Snapshot{Index: 3, ConfState: &raftpb.ConfState{}}, + snapshot: &walpb.Snapshot{Index: new(uint64(3)), ConfState: &raftpb.ConfState{}}, }, { state: &raftpb.HardState{Commit: 4}, @@ -560,7 +560,7 @@ func TestWriteReadWAL(t *testing.T) { name: "entries preceding snapshot", operations: []batch{ { - snapshot: &walpb.Snapshot{Index: 4, ConfState: &raftpb.ConfState{}}, + snapshot: &walpb.Snapshot{Index: new(uint64(4)), ConfState: &raftpb.ConfState{}}, }, { state: &raftpb.HardState{Commit: 2}, @@ -575,7 +575,7 @@ func TestWriteReadWAL(t *testing.T) { entries: []raftpb.Entry{{Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, }, }, - readAt: walpb.Snapshot{Index: 4}, + readAt: walpb.Snapshot{Index: new(uint64(4))}, walReadAll: want{ wantState: raftpb.HardState{Commit: 6}, wantEntries: []raftpb.Entry{{Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, @@ -593,14 +593,14 @@ func TestWriteReadWAL(t *testing.T) { entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, { - snapshot: &walpb.Snapshot{Index: 3, ConfState: &raftpb.ConfState{}}, + snapshot: &walpb.Snapshot{Index: new(uint64(3)), ConfState: &raftpb.ConfState{}}, }, { state: &raftpb.HardState{Commit: 5}, entries: []raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, }, - readAt: walpb.Snapshot{Index: 4}, + readAt: walpb.Snapshot{Index: new(uint64(4))}, walReadAll: want{ wantError: "snapshot not found", wantState: raftpb.HardState{Commit: 5}, diff --git a/tools/etcd-dump-logs/main.go b/tools/etcd-dump-logs/main.go index d596bbb7176c..8c9eaf6e161a 100644 --- a/tools/etcd-dump-logs/main.go +++ b/tools/etcd-dump-logs/main.go @@ -126,7 +126,8 @@ func readUsingReadAll(lg *zap.Logger, startFromIndex bool, startIndex *uint64, e if *startIndex > 0 { *startIndex-- } - walsnap.Index = *startIndex + index := *startIndex + walsnap.Index = &index } else { if *snapfile == "" { ss := snap.New(lg, snapDir(dataDir)) @@ -137,7 +138,7 @@ func readUsingReadAll(lg *zap.Logger, startFromIndex bool, startIndex *uint64, e switch { case err == nil: - walsnap.Index, walsnap.Term = snapshot.Metadata.Index, snapshot.Metadata.Term + walsnap.Index, walsnap.Term = new(snapshot.Metadata.Index), new(snapshot.Metadata.Term) nodes := genIDSlice(snapshot.Metadata.ConfState.Voters) confStateJSON, merr := json.Marshal(snapshot.Metadata.ConfState) diff --git a/tools/etcd-dump-logs/raw.go b/tools/etcd-dump-logs/raw.go index 1638d149df59..5b5bb6c94056 100644 --- a/tools/etcd-dump-logs/raw.go +++ b/tools/etcd-dump-logs/raw.go @@ -63,8 +63,8 @@ func readRaw(fromIndex *uint64, waldir string, out io.Writer) { crcDesync = true } printRec(&rec, fromIndex, out) - if rec.Type == wal.CrcType { - decoder.UpdateCRC(rec.Crc) + if rec.GetType() == wal.CrcType { + decoder.UpdateCRC(rec.GetCrc()) crcDesync = false } continue @@ -82,13 +82,13 @@ func readRaw(fromIndex *uint64, waldir string, out io.Writer) { } func printRec(rec *walpb.Record, fromIndex *uint64, out io.Writer) { - switch rec.Type { + switch rec.GetType() { case wal.MetadataType: var metadata etcdserverpb.Metadata pbutil.MustUnmarshal(&metadata, rec.Data) fmt.Fprintf(out, "Metadata: %s\n", metadata.String()) case wal.CrcType: - fmt.Fprintf(out, "CRC: %d\n", rec.Crc) + fmt.Fprintf(out, "CRC: %d\n", rec.GetCrc()) case wal.EntryType: e := wal.MustUnmarshalEntry(rec.Data) if fromIndex == nil || e.Index >= *fromIndex { @@ -97,7 +97,7 @@ func printRec(rec *walpb.Record, fromIndex *uint64, out io.Writer) { case wal.SnapshotType: var snap walpb.Snapshot pbutil.MustUnmarshal(&snap, rec.Data) - if fromIndex == nil || snap.Index >= *fromIndex { + if fromIndex == nil || snap.GetIndex() >= *fromIndex { fmt.Fprintf(out, "Snapshot: %s\n", snap.String()) } case wal.StateType: @@ -107,6 +107,6 @@ func printRec(rec *walpb.Record, fromIndex *uint64, out io.Writer) { fmt.Fprintf(out, "HardState: %s\n", state.String()) } default: - log.Printf("Unexpected WAL log type: %d", rec.Type) + log.Printf("Unexpected WAL log type: %d", rec.GetType()) } } From a8e98bea46720d1422bda4498b04869c7bd7f211 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 6 Feb 2026 02:35:14 -0500 Subject: [PATCH 0818/1068] generate: ./scripts/genproto.sh Signed-off-by: Jordan Liggitt --- server/etcdserver/api/snap/snappb/snap.pb.go | 43 +++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/server/etcdserver/api/snap/snappb/snap.pb.go b/server/etcdserver/api/snap/snappb/snap.pb.go index bc735db1b7ae..3e087dd05d10 100644 --- a/server/etcdserver/api/snap/snappb/snap.pb.go +++ b/server/etcdserver/api/snap/snappb/snap.pb.go @@ -9,7 +9,6 @@ import ( math "math" math_bits "math/bits" - _ "github.com/gogo/protobuf/gogoproto" proto "github.com/golang/protobuf/proto" ) @@ -25,7 +24,7 @@ var _ = math.Inf const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type Snapshot struct { - Crc uint32 `protobuf:"varint,1,opt,name=crc" json:"crc"` + Crc *uint32 `protobuf:"varint,1,opt,name=crc" json:"crc,omitempty"` Data []byte `protobuf:"bytes,2,opt,name=data" json:"data,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -66,8 +65,8 @@ func (m *Snapshot) XXX_DiscardUnknown() { var xxx_messageInfo_Snapshot proto.InternalMessageInfo func (m *Snapshot) GetCrc() uint32 { - if m != nil { - return m.Crc + if m != nil && m.Crc != nil { + return *m.Crc } return 0 } @@ -86,17 +85,16 @@ func init() { func init() { proto.RegisterFile("snap.proto", fileDescriptor_f2e3c045ebf84d00) } var fileDescriptor_f2e3c045ebf84d00 = []byte{ - // 160 bytes of a gzipped FileDescriptorProto + // 140 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2a, 0xce, 0x4b, 0x2c, - 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x03, 0xb1, 0x0b, 0x92, 0xa4, 0x44, 0xd2, 0xf3, - 0xd3, 0xf3, 0xc1, 0x42, 0xfa, 0x20, 0x16, 0x44, 0x56, 0xc9, 0x8c, 0x8b, 0x03, 0x24, 0x5f, 0x9c, - 0x91, 0x5f, 0x22, 0x24, 0xc6, 0xc5, 0x9c, 0x5c, 0x94, 0x2c, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0xeb, - 0xc4, 0x72, 0xe2, 0x9e, 0x3c, 0x43, 0x10, 0x48, 0x40, 0x48, 0x88, 0x8b, 0x25, 0x25, 0xb1, 0x24, - 0x51, 0x82, 0x49, 0x81, 0x51, 0x83, 0x27, 0x08, 0xcc, 0x76, 0x72, 0x3b, 0xf1, 0x48, 0x8e, 0xf1, - 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x67, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x49, 0xcf, - 0xd7, 0x4b, 0x2d, 0x49, 0x4e, 0xd1, 0xcb, 0xcc, 0xd7, 0x07, 0xd1, 0xfa, 0xc5, 0xa9, 0x45, 0x65, - 0xa9, 0x45, 0xfa, 0x65, 0xc6, 0x60, 0x2e, 0x94, 0x97, 0x58, 0x90, 0xa9, 0x0f, 0xb2, 0x50, 0x1f, - 0xe2, 0x2a, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x70, 0xd3, 0x61, 0xf6, 0xaa, 0x00, 0x00, 0x00, + 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x03, 0xb1, 0x0b, 0x92, 0x94, 0x0c, 0xb8, 0x38, + 0x40, 0xac, 0xe2, 0x8c, 0xfc, 0x12, 0x21, 0x01, 0x2e, 0xe6, 0xe4, 0xa2, 0x64, 0x09, 0x46, 0x05, + 0x46, 0x0d, 0xde, 0x20, 0x10, 0x53, 0x48, 0x88, 0x8b, 0x25, 0x25, 0xb1, 0x24, 0x51, 0x82, 0x49, + 0x81, 0x51, 0x83, 0x27, 0x08, 0xcc, 0x76, 0x72, 0x3b, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, + 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x67, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x49, 0xcf, 0xd7, 0x4b, 0x2d, + 0x49, 0x4e, 0xd1, 0xcb, 0xcc, 0xd7, 0x07, 0xd1, 0xfa, 0xc5, 0xa9, 0x45, 0x65, 0xa9, 0x45, 0xfa, + 0x65, 0xc6, 0x60, 0x2e, 0x94, 0x97, 0x58, 0x90, 0xa9, 0x0f, 0xb2, 0x4a, 0x1f, 0x62, 0x33, 0x20, + 0x00, 0x00, 0xff, 0xff, 0x64, 0x15, 0x9e, 0x77, 0x8e, 0x00, 0x00, 0x00, } func (m *Snapshot) Marshal() (dAtA []byte, err error) { @@ -130,9 +128,11 @@ func (m *Snapshot) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - i = encodeVarintSnap(dAtA, i, uint64(m.Crc)) - i-- - dAtA[i] = 0x8 + if m.Crc != nil { + i = encodeVarintSnap(dAtA, i, uint64(*m.Crc)) + i-- + dAtA[i] = 0x8 + } return len(dAtA) - i, nil } @@ -153,7 +153,9 @@ func (m *Snapshot) Size() (n int) { } var l int _ = l - n += 1 + sovSnap(uint64(m.Crc)) + if m.Crc != nil { + n += 1 + sovSnap(uint64(*m.Crc)) + } if m.Data != nil { l = len(m.Data) n += 1 + l + sovSnap(uint64(l)) @@ -203,7 +205,7 @@ func (m *Snapshot) Unmarshal(dAtA []byte) error { if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Crc", wireType) } - m.Crc = 0 + var v uint32 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowSnap @@ -213,11 +215,12 @@ func (m *Snapshot) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Crc |= uint32(b&0x7F) << shift + v |= uint32(b&0x7F) << shift if b < 0x80 { break } } + m.Crc = &v case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) From 8817b2491817e18828d0c86abf07f824221e209b Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Wed, 11 Feb 2026 10:20:07 -0500 Subject: [PATCH 0819/1068] walpb: validate previously non-nullable fields are populated before encoding Signed-off-by: Jordan Liggitt --- server/storage/wal/encoder.go | 5 +++++ server/storage/wal/wal.go | 3 ++- server/storage/wal/wal_test.go | 8 ++++---- server/storage/wal/walpb/record.go | 6 ++++++ server/storage/wal/walpb/record_test.go | 3 ++- tests/robustness/report/wal_test.go | 10 +++++----- tools/etcd-dump-logs/raw_test.go | 2 +- 7 files changed, 25 insertions(+), 12 deletions(-) diff --git a/server/storage/wal/encoder.go b/server/storage/wal/encoder.go index 1379bb47c0c0..7d5aef08de46 100644 --- a/server/storage/wal/encoder.go +++ b/server/storage/wal/encoder.go @@ -16,6 +16,7 @@ package wal import ( "encoding/binary" + "errors" "hash" "io" "os" @@ -61,6 +62,10 @@ func newFileEncoder(f *os.File, prevCrc uint32) (*encoder, error) { } func (e *encoder) encode(rec *walpb.Record) error { + if rec.Type == nil { + return errors.New("record is missing type") + } + e.mu.Lock() defer e.mu.Unlock() diff --git a/server/storage/wal/wal.go b/server/storage/wal/wal.go index da48ef32ade8..6c944e3abdd2 100644 --- a/server/storage/wal/wal.go +++ b/server/storage/wal/wal.go @@ -169,7 +169,8 @@ func Create(lg *zap.Logger, dirpath string, metadata []byte) (*WAL, error) { if err = w.encoder.encode(&walpb.Record{Type: new(MetadataType), Data: metadata}); err != nil { return nil, err } - if err = w.SaveSnapshot(walpb.Snapshot{}); err != nil { + // Create an empty snapshot record during the initial bootstrap only. + if err = w.SaveSnapshot(walpb.Snapshot{Index: new(uint64(0)), Term: new(uint64(0))}); err != nil { return nil, err } diff --git a/server/storage/wal/wal_test.go b/server/storage/wal/wal_test.go index 2f9baf40180b..40abdb1e3a5f 100644 --- a/server/storage/wal/wal_test.go +++ b/server/storage/wal/wal_test.go @@ -89,7 +89,7 @@ func TestNew(t *testing.T) { require.NoErrorf(t, err, "err = %v, want nil", err) r := &walpb.Record{ Type: new(SnapshotType), - Data: pbutil.MustMarshal(&walpb.Snapshot{}), + Data: pbutil.MustMarshal(&walpb.Snapshot{Index: new(uint64(0)), Term: new(uint64(0))}), } err = e.encode(r) require.NoErrorf(t, err, "err = %v, want nil", err) @@ -457,7 +457,7 @@ func TestRecover(t *testing.T) { if err != nil { t.Fatal(err) } - if err = w.SaveSnapshot(walpb.Snapshot{}); err != nil { + if err = w.SaveSnapshot(walpb.Snapshot{Index: new(uint64(0)), Term: new(uint64(0))}); err != nil { t.Fatal(err) } @@ -632,7 +632,7 @@ func TestOpenAtUncommittedIndex(t *testing.T) { if err != nil { t.Fatal(err) } - if err = w.SaveSnapshot(walpb.Snapshot{}); err != nil { + if err = w.SaveSnapshot(walpb.Snapshot{Index: new(uint64(0)), Term: new(uint64(0))}); err != nil { t.Fatal(err) } if err = w.Save(raftpb.HardState{}, []raftpb.Entry{{Index: 0}}); err != nil { @@ -1021,7 +1021,7 @@ func TestReadAllFail(t *testing.T) { // for hardstate func TestValidSnapshotEntries(t *testing.T) { p := t.TempDir() - snap0 := walpb.Snapshot{} + snap0 := walpb.Snapshot{Index: new(uint64(0)), Term: new(uint64(0))} snap1 := walpb.Snapshot{Index: new(uint64(1)), Term: new(uint64(1)), ConfState: &confState} state1 := raftpb.HardState{Commit: 1, Term: 1} snap2 := walpb.Snapshot{Index: new(uint64(2)), Term: new(uint64(1)), ConfState: &confState} diff --git a/server/storage/wal/walpb/record.go b/server/storage/wal/walpb/record.go index 8a490b4b0bb0..ddeeab7e745a 100644 --- a/server/storage/wal/walpb/record.go +++ b/server/storage/wal/walpb/record.go @@ -33,6 +33,12 @@ func (rec *Record) Validate(crc uint32) error { // There might exist log-entries written by old etcd versions that does not conform // to the requirements. func ValidateSnapshotForWrite(e *Snapshot) error { + if e.Index == nil { + return errors.New("snapshot is missing index: " + e.String()) + } + if e.Term == nil { + return errors.New("snapshot is missing term: " + e.String()) + } // Since etcd>=3.5.0 if e.ConfState == nil && e.GetIndex() > 0 { return errors.New("Saved (not-initial) snapshot is missing ConfState: " + e.String()) diff --git a/server/storage/wal/walpb/record_test.go b/server/storage/wal/walpb/record_test.go index 5af88fa993f8..acf1032edc58 100644 --- a/server/storage/wal/walpb/record_test.go +++ b/server/storage/wal/walpb/record_test.go @@ -37,7 +37,8 @@ func TestValidateSnapshot(t *testing.T) { snap *Snapshot wantErr bool }{ - {name: "empty", snap: &Snapshot{}, wantErr: false}, + {name: "empty", snap: &Snapshot{}, wantErr: true}, // index and term must be explicitly set + {name: "initial", snap: &Snapshot{Index: new(uint64(0)), Term: new(uint64(0))}, wantErr: false}, {name: "invalid", snap: &Snapshot{Index: new(uint64(5)), Term: new(uint64(3))}, wantErr: true}, {name: "valid", snap: &Snapshot{Index: new(uint64(5)), Term: new(uint64(3)), ConfState: &raftpb.ConfState{Voters: []uint64{0x00cad1}}}, wantErr: false}, } diff --git a/tests/robustness/report/wal_test.go b/tests/robustness/report/wal_test.go index 9fa90ca7919d..fa5a95cd3e4b 100644 --- a/tests/robustness/report/wal_test.go +++ b/tests/robustness/report/wal_test.go @@ -486,7 +486,7 @@ func TestWriteReadWAL(t *testing.T) { entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, { - snapshot: &walpb.Snapshot{Index: new(uint64(3)), ConfState: &raftpb.ConfState{}}, + snapshot: &walpb.Snapshot{Index: new(uint64(3)), Term: new(uint64(0)), ConfState: &raftpb.ConfState{}}, }, { state: &raftpb.HardState{Commit: 5}, @@ -511,7 +511,7 @@ func TestWriteReadWAL(t *testing.T) { entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, { - snapshot: &walpb.Snapshot{Index: new(uint64(3)), ConfState: &raftpb.ConfState{}}, + snapshot: &walpb.Snapshot{Index: new(uint64(3)), Term: new(uint64(0)), ConfState: &raftpb.ConfState{}}, }, { state: &raftpb.HardState{Commit: 5}, @@ -540,7 +540,7 @@ func TestWriteReadWAL(t *testing.T) { entries: []raftpb.Entry{{Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, }, { - snapshot: &walpb.Snapshot{Index: new(uint64(3)), ConfState: &raftpb.ConfState{}}, + snapshot: &walpb.Snapshot{Index: new(uint64(3)), Term: new(uint64(0)), ConfState: &raftpb.ConfState{}}, }, { state: &raftpb.HardState{Commit: 4}, @@ -560,7 +560,7 @@ func TestWriteReadWAL(t *testing.T) { name: "entries preceding snapshot", operations: []batch{ { - snapshot: &walpb.Snapshot{Index: new(uint64(4)), ConfState: &raftpb.ConfState{}}, + snapshot: &walpb.Snapshot{Index: new(uint64(4)), Term: new(uint64(0)), ConfState: &raftpb.ConfState{}}, }, { state: &raftpb.HardState{Commit: 2}, @@ -593,7 +593,7 @@ func TestWriteReadWAL(t *testing.T) { entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, { - snapshot: &walpb.Snapshot{Index: new(uint64(3)), ConfState: &raftpb.ConfState{}}, + snapshot: &walpb.Snapshot{Index: new(uint64(3)), Term: new(uint64(0)), ConfState: &raftpb.ConfState{}}, }, { state: &raftpb.HardState{Commit: 5}, diff --git a/tools/etcd-dump-logs/raw_test.go b/tools/etcd-dump-logs/raw_test.go index 345a632d8824..2d978f70a644 100644 --- a/tools/etcd-dump-logs/raw_test.go +++ b/tools/etcd-dump-logs/raw_test.go @@ -29,7 +29,7 @@ func Test_readRaw(t *testing.T) { assert.Equal(t, `CRC: 0 Metadata: -Snapshot: +Snapshot: index:0 term:0 Entry: Term:1 Index:1 Type:EntryConfChange Data:"\010\001\020\000\030\002\"\000" Entry: Term:2 Index:2 Type:EntryConfChange Data:"\010\002\020\001\030\002\"\000" Entry: Term:2 Index:3 Type:EntryConfChange Data:"\010\003\020\002\030\002\"\000" From 3e27c182be738607348d0d0cfc00623ec3ebcf33 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Thu, 12 Feb 2026 10:29:10 +0000 Subject: [PATCH 0820/1068] Replace authpb.READ and authpb.WRITE with authpb.Permission_READ and authpb.Permission_WRITE Also mark authpb.READ, authpb.WRITE and authpb.READWRITE as deprecated Signed-off-by: Benjamin Wang --- api/authpb/deprecated.go | 9 ++++-- client/v3/auth.go | 6 ++-- server/auth/range_perm_cache.go | 14 ++++----- server/auth/range_perm_cache_test.go | 4 +-- server/auth/store.go | 8 ++--- server/auth/store_test.go | 36 +++++++++++----------- server/etcdserver/apply/auth_test.go | 6 ++-- server/etcdserver/txn/txn_test.go | 2 +- server/storage/schema/auth_roles_test.go | 20 ++++++------ tests/e2e/v3_curl_auth_test.go | 2 +- tests/integration/v3_auth_test.go | 2 +- tools/etcd-dump-logs/etcd-dump-log_test.go | 2 +- 12 files changed, 57 insertions(+), 54 deletions(-) diff --git a/api/authpb/deprecated.go b/api/authpb/deprecated.go index 6d703f17bffd..df853b7b497a 100644 --- a/api/authpb/deprecated.go +++ b/api/authpb/deprecated.go @@ -15,10 +15,13 @@ package authpb const ( - // Alias of Permission_READ + // READ is an alias of Permission_READ + // Deprecated: use Permission_READ instead. Will be removed in v3.8. READ = Permission_READ - // Alias of Permission_WRITE + // WRITE is an alias of Permission_WRITE + // Deprecated: use Permission_WRITE instead. Will be removed in v3.8. WRITE = Permission_WRITE - // Alias of Permission_READWRITE + // READWRITE is an alias of Permission_READWRITE + // Deprecated: use Permission_READWRITE instead. Will be removed in v3.8. READWRITE = Permission_READWRITE ) diff --git a/client/v3/auth.go b/client/v3/auth.go index 382172b21bf5..7d9a55f1d408 100644 --- a/client/v3/auth.go +++ b/client/v3/auth.go @@ -49,9 +49,9 @@ type ( ) const ( - PermRead = authpb.READ - PermWrite = authpb.WRITE - PermReadWrite = authpb.READWRITE + PermRead = authpb.Permission_READ + PermWrite = authpb.Permission_WRITE + PermReadWrite = authpb.Permission_READWRITE ) type UserAddOptions authpb.UserAddOptions diff --git a/server/auth/range_perm_cache.go b/server/auth/range_perm_cache.go index 539ed290e681..57753efd4a1b 100644 --- a/server/auth/range_perm_cache.go +++ b/server/auth/range_perm_cache.go @@ -51,14 +51,14 @@ func getMergedPerms(tx UnsafeAuthReader, userName string) *unifiedRangePermissio } switch perm.PermType { - case authpb.READWRITE: + case authpb.Permission_READWRITE: readPerms.Insert(ivl, struct{}{}) writePerms.Insert(ivl, struct{}{}) - case authpb.READ: + case authpb.Permission_READ: readPerms.Insert(ivl, struct{}{}) - case authpb.WRITE: + case authpb.Permission_WRITE: writePerms.Insert(ivl, struct{}{}) } } @@ -84,9 +84,9 @@ func checkKeyInterval( ivl := adt.NewBytesAffineInterval(key, rangeEnd) switch permtyp { - case authpb.READ: + case authpb.Permission_READ: return cachedPerms.readPerms.Contains(ivl) - case authpb.WRITE: + case authpb.Permission_WRITE: return cachedPerms.writePerms.Contains(ivl) default: lg.Panic("unknown auth type", zap.String("auth-type", permtyp.String())) @@ -97,9 +97,9 @@ func checkKeyInterval( func checkKeyPoint(lg *zap.Logger, cachedPerms *unifiedRangePermissions, key []byte, permtyp authpb.Permission_Type) bool { pt := adt.NewBytesAffinePoint(key) switch permtyp { - case authpb.READ: + case authpb.Permission_READ: return cachedPerms.readPerms.Intersects(pt) - case authpb.WRITE: + case authpb.Permission_WRITE: return cachedPerms.writePerms.Intersects(pt) default: lg.Panic("unknown auth type", zap.String("auth-type", permtyp.String())) diff --git a/server/auth/range_perm_cache_test.go b/server/auth/range_perm_cache_test.go index 4b39acbcb2f3..f267a7cf6381 100644 --- a/server/auth/range_perm_cache_test.go +++ b/server/auth/range_perm_cache_test.go @@ -77,7 +77,7 @@ func TestRangePermission(t *testing.T) { readPerms.Insert(p, struct{}{}) } - result := checkKeyInterval(zaptest.NewLogger(t), &unifiedRangePermissions{readPerms: readPerms}, tt.begin, tt.end, authpb.READ) + result := checkKeyInterval(zaptest.NewLogger(t), &unifiedRangePermissions{readPerms: readPerms}, tt.begin, tt.end, authpb.Permission_READ) if result != tt.want { t.Errorf("#%d: result=%t, want=%t", i, result, tt.want) } @@ -128,7 +128,7 @@ func TestKeyPermission(t *testing.T) { readPerms.Insert(p, struct{}{}) } - result := checkKeyPoint(zaptest.NewLogger(t), &unifiedRangePermissions{readPerms: readPerms}, tt.key, authpb.READ) + result := checkKeyPoint(zaptest.NewLogger(t), &unifiedRangePermissions{readPerms: readPerms}, tt.key, authpb.Permission_READ) if result != tt.want { t.Errorf("#%d: result=%t, want=%t", i, result, tt.want) } diff --git a/server/auth/store.go b/server/auth/store.go index b31fee3effa0..076947ea6202 100644 --- a/server/auth/store.go +++ b/server/auth/store.go @@ -41,7 +41,7 @@ import ( var _ AuthStore = (*authStore)(nil) var ( - rootPerm = authpb.Permission{PermType: authpb.READWRITE, Key: []byte{}, RangeEnd: []byte{0}} + rootPerm = authpb.Permission{PermType: authpb.Permission_READWRITE, Key: []byte{}, RangeEnd: []byte{0}} ErrRootUserNotExist = errors.New("auth: root user does not exist") ErrRootRoleNotExist = errors.New("auth: root user does not have root role") @@ -899,15 +899,15 @@ func (as *authStore) isOpPermitted(userName string, revision uint64, key, rangeE } func (as *authStore) IsPutPermitted(authInfo *AuthInfo, key []byte) error { - return as.isOpPermitted(authInfo.Username, authInfo.Revision, key, nil, authpb.WRITE) + return as.isOpPermitted(authInfo.Username, authInfo.Revision, key, nil, authpb.Permission_WRITE) } func (as *authStore) IsRangePermitted(authInfo *AuthInfo, key, rangeEnd []byte) error { - return as.isOpPermitted(authInfo.Username, authInfo.Revision, key, rangeEnd, authpb.READ) + return as.isOpPermitted(authInfo.Username, authInfo.Revision, key, rangeEnd, authpb.Permission_READ) } func (as *authStore) IsDeleteRangePermitted(authInfo *AuthInfo, key, rangeEnd []byte) error { - return as.isOpPermitted(authInfo.Username, authInfo.Revision, key, rangeEnd, authpb.WRITE) + return as.isOpPermitted(authInfo.Username, authInfo.Revision, key, rangeEnd, authpb.Permission_WRITE) } func (as *authStore) IsAdminPermitted(authInfo *AuthInfo) error { diff --git a/server/auth/store_test.go b/server/auth/store_test.go index df13fbc297d0..1aac1fbde2e4 100644 --- a/server/auth/store_test.go +++ b/server/auth/store_test.go @@ -380,7 +380,7 @@ func TestIsOpPermitted(t *testing.T) { } perm := &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte("Keys"), RangeEnd: []byte("RangeEnd"), } @@ -473,7 +473,7 @@ func TestRoleGrantPermission(t *testing.T) { } perm := &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte("Keys"), RangeEnd: []byte("RangeEnd"), } @@ -526,7 +526,7 @@ func TestRoleGrantInvalidPermission(t *testing.T) { { name: "valid range", perm: &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte("Keys"), RangeEnd: []byte("RangeEnd"), }, @@ -535,7 +535,7 @@ func TestRoleGrantInvalidPermission(t *testing.T) { { name: "invalid range: nil key", perm: &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: nil, RangeEnd: []byte("RangeEnd"), }, @@ -544,7 +544,7 @@ func TestRoleGrantInvalidPermission(t *testing.T) { { name: "valid range: single key", perm: &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte("Keys"), RangeEnd: nil, }, @@ -553,7 +553,7 @@ func TestRoleGrantInvalidPermission(t *testing.T) { { name: "valid range: single key", perm: &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte("Keys"), RangeEnd: []byte{}, }, @@ -562,7 +562,7 @@ func TestRoleGrantInvalidPermission(t *testing.T) { { name: "invalid range: empty (Key == RangeEnd)", perm: &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte("a"), RangeEnd: []byte("a"), }, @@ -571,7 +571,7 @@ func TestRoleGrantInvalidPermission(t *testing.T) { { name: "invalid range: empty (Key > RangeEnd)", perm: &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte("b"), RangeEnd: []byte("a"), }, @@ -580,7 +580,7 @@ func TestRoleGrantInvalidPermission(t *testing.T) { { name: "invalid range: length of key is 0", perm: &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte(""), RangeEnd: []byte("a"), }, @@ -589,7 +589,7 @@ func TestRoleGrantInvalidPermission(t *testing.T) { { name: "invalid range: length of key is 0", perm: &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte(""), RangeEnd: []byte(""), }, @@ -598,7 +598,7 @@ func TestRoleGrantInvalidPermission(t *testing.T) { { name: "invalid range: length of key is 0", perm: &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte(""), RangeEnd: []byte{0x00}, }, @@ -607,7 +607,7 @@ func TestRoleGrantInvalidPermission(t *testing.T) { { name: "valid range: single key permission for []byte{0x00}", perm: &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte{0x00}, RangeEnd: []byte(""), }, @@ -616,7 +616,7 @@ func TestRoleGrantInvalidPermission(t *testing.T) { { name: "valid range: \"a\" or larger keys", perm: &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte("a"), RangeEnd: []byte{0x00}, }, @@ -625,7 +625,7 @@ func TestRoleGrantInvalidPermission(t *testing.T) { { name: "valid range: the entire keys", perm: &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte{0x00}, RangeEnd: []byte{0x00}, }, @@ -652,7 +652,7 @@ func TestRootRoleGrantPermission(t *testing.T) { defer tearDown(t) perm := &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte("Keys"), RangeEnd: []byte("RangeEnd"), } @@ -671,7 +671,7 @@ func TestRootRoleGrantPermission(t *testing.T) { // whatever grant permission to root, it always return root permission. expectPerm := &authpb.Permission{ - PermType: authpb.READWRITE, + PermType: authpb.Permission_READWRITE, Key: []byte{}, RangeEnd: []byte{0}, } @@ -689,7 +689,7 @@ func TestRoleRevokePermission(t *testing.T) { } perm := &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte("Keys"), RangeEnd: []byte("RangeEnd"), } @@ -746,7 +746,7 @@ func TestUserRevokePermission(t *testing.T) { } perm := &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte("WriteKeyBegin"), RangeEnd: []byte("WriteKeyEnd"), } diff --git a/server/etcdserver/apply/auth_test.go b/server/etcdserver/apply/auth_test.go index fc87aaec886a..d6e434cbccce 100644 --- a/server/etcdserver/apply/auth_test.go +++ b/server/etcdserver/apply/auth_test.go @@ -143,7 +143,7 @@ func mustCreateRolesAndEnableAuth(t *testing.T, authApplier *authApplierV3) { _, err = authApplier.UserGrantRole(&pb.AuthUserGrantRoleRequest{User: userReadOnly, Role: roleReadOnly}) require.NoError(t, err) _, err = authApplier.RoleGrantPermission(&pb.AuthRoleGrantPermissionRequest{Name: roleReadOnly, Perm: &authpb.Permission{ - PermType: authpb.READ, + PermType: authpb.Permission_READ, Key: []byte(key), RangeEnd: []byte(rangeEnd), }}) @@ -156,7 +156,7 @@ func mustCreateRolesAndEnableAuth(t *testing.T, authApplier *authApplierV3) { _, err = authApplier.UserGrantRole(&pb.AuthUserGrantRoleRequest{User: userWriteOnly, Role: roleWriteOnly}) require.NoError(t, err) _, err = authApplier.RoleGrantPermission(&pb.AuthRoleGrantPermissionRequest{Name: roleWriteOnly, Perm: &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte(key), RangeEnd: []byte(rangeEnd), }}) @@ -810,7 +810,7 @@ func TestCheckLeasePutsKeys(t *testing.T) { _, err = aa.as.RoleGrantPermission(&pb.AuthRoleGrantPermissionRequest{ Name: "bobsrole", Perm: &authpb.Permission{ - PermType: authpb.READWRITE, + PermType: authpb.Permission_READWRITE, Key: []byte("a"), RangeEnd: nil, }, diff --git a/server/etcdserver/txn/txn_test.go b/server/etcdserver/txn/txn_test.go index bf1ac21d39ba..89e9cbd40429 100644 --- a/server/etcdserver/txn/txn_test.go +++ b/server/etcdserver/txn/txn_test.go @@ -637,7 +637,7 @@ func setupAuth(t *testing.T, be backend.Backend) auth.AuthStore { _, err = as.RoleGrantPermission(&pb.AuthRoleGrantPermissionRequest{ Name: "rw", Perm: &authpb.Permission{ - PermType: authpb.READWRITE, + PermType: authpb.Permission_READWRITE, Key: []byte("foo"), RangeEnd: []byte("zoo"), }, diff --git a/server/storage/schema/auth_roles_test.go b/server/storage/schema/auth_roles_test.go index 7f90663d854d..8b09853c38e7 100644 --- a/server/storage/schema/auth_roles_test.go +++ b/server/storage/schema/auth_roles_test.go @@ -45,7 +45,7 @@ func TestGetAllRoles(t *testing.T) { Name: []byte("readKey"), KeyPermission: []*authpb.Permission{ { - PermType: authpb.READ, + PermType: authpb.Permission_READ, Key: []byte("key"), RangeEnd: []byte("end"), }, @@ -57,7 +57,7 @@ func TestGetAllRoles(t *testing.T) { Name: []byte("readKey"), KeyPermission: []*authpb.Permission{ { - PermType: authpb.READ, + PermType: authpb.Permission_READ, Key: []byte("key"), RangeEnd: []byte("end"), }, @@ -85,7 +85,7 @@ func TestGetAllRoles(t *testing.T) { Name: []byte("role1"), KeyPermission: []*authpb.Permission{ { - PermType: authpb.READ, + PermType: authpb.Permission_READ, }, }, }) @@ -96,13 +96,13 @@ func TestGetAllRoles(t *testing.T) { Name: []byte("role1"), KeyPermission: []*authpb.Permission{ { - PermType: authpb.READWRITE, + PermType: authpb.Permission_READWRITE, }, }, }) }, want: []*authpb.Role{ - {Name: []byte("role1"), KeyPermission: []*authpb.Permission{{PermType: authpb.READWRITE}}}, + {Name: []byte("role1"), KeyPermission: []*authpb.Permission{{PermType: authpb.Permission_READWRITE}}}, {Name: []byte("role2")}, }, }, @@ -150,7 +150,7 @@ func TestGetRole(t *testing.T) { Name: []byte("role1"), KeyPermission: []*authpb.Permission{ { - PermType: authpb.READ, + PermType: authpb.Permission_READ, Key: []byte("key"), RangeEnd: []byte("end"), }, @@ -161,7 +161,7 @@ func TestGetRole(t *testing.T) { Name: []byte("role1"), KeyPermission: []*authpb.Permission{ { - PermType: authpb.READ, + PermType: authpb.Permission_READ, Key: []byte("key"), RangeEnd: []byte("end"), }, @@ -185,7 +185,7 @@ func TestGetRole(t *testing.T) { Name: []byte("role1"), KeyPermission: []*authpb.Permission{ { - PermType: authpb.READ, + PermType: authpb.Permission_READ, }, }, }) @@ -193,14 +193,14 @@ func TestGetRole(t *testing.T) { Name: []byte("role1"), KeyPermission: []*authpb.Permission{ { - PermType: authpb.READWRITE, + PermType: authpb.Permission_READWRITE, }, }, }) }, want: &authpb.Role{ Name: []byte("role1"), - KeyPermission: []*authpb.Permission{{PermType: authpb.READWRITE}}, + KeyPermission: []*authpb.Permission{{PermType: authpb.Permission_READWRITE}}, }, }, } diff --git a/tests/e2e/v3_curl_auth_test.go b/tests/e2e/v3_curl_auth_test.go index c8745d23179a..8a07b67dd3f8 100644 --- a/tests/e2e/v3_curl_auth_test.go +++ b/tests/e2e/v3_curl_auth_test.go @@ -360,7 +360,7 @@ func testCurlV3AuthRoleManagePermission(cx ctlCtx) { grantPermissionReq, err := json.Marshal(&pb.AuthRoleGrantPermissionRequest{ Name: rolename, Perm: &authpb.Permission{ - PermType: authpb.READ, + PermType: authpb.Permission_READ, Key: []byte("fakeKey"), }, }) diff --git a/tests/integration/v3_auth_test.go b/tests/integration/v3_auth_test.go index 582c9108337a..278017f56bca 100644 --- a/tests/integration/v3_auth_test.go +++ b/tests/integration/v3_auth_test.go @@ -374,7 +374,7 @@ func authSetupUsers(t *testing.T, auth pb.AuthClient, users []user) { } perm := &authpb.Permission{ - PermType: authpb.READWRITE, + PermType: authpb.Permission_READWRITE, Key: []byte(user.key), RangeEnd: []byte(user.end), } diff --git a/tools/etcd-dump-logs/etcd-dump-log_test.go b/tools/etcd-dump-logs/etcd-dump-log_test.go index 000755cfe979..f49cca49b5d9 100644 --- a/tools/etcd-dump-logs/etcd-dump-log_test.go +++ b/tools/etcd-dump-logs/etcd-dump-log_test.go @@ -186,7 +186,7 @@ func appendNormalIRREnts(ents *[]raftpb.Entry) { irrauthroleget := &etcdserverpb.AuthRoleGetRequest{Role: "role3"} perm := &authpb.Permission{ - PermType: authpb.WRITE, + PermType: authpb.Permission_WRITE, Key: []byte("Keys"), RangeEnd: []byte("RangeEnd"), } From b1bf9524c8173e382acefe08ae9256089cfba457 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 6 Feb 2026 02:37:05 -0500 Subject: [PATCH 0821/1068] snappb: use GetCrc Signed-off-by: Jordan Liggitt --- server/etcdserver/api/snap/snapshotter.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/etcdserver/api/snap/snapshotter.go b/server/etcdserver/api/snap/snapshotter.go index 0de6f9b91ea5..90ce472eaa7f 100644 --- a/server/etcdserver/api/snap/snapshotter.go +++ b/server/etcdserver/api/snap/snapshotter.go @@ -78,7 +78,7 @@ func (s *Snapshotter) save(snapshot *raftpb.Snapshot) error { fname := fmt.Sprintf("%016x-%016x%s", snapshot.Metadata.Term, snapshot.Metadata.Index, snapSuffix) b := pbutil.MustMarshal(snapshot) crc := crc32.Update(0, crcTable, b) - snap := snappb.Snapshot{Crc: crc, Data: b} + snap := snappb.Snapshot{Crc: &crc, Data: b} d, err := snap.Marshal() if err != nil { return err @@ -172,16 +172,16 @@ func Read(lg *zap.Logger, snapname string) (*raftpb.Snapshot, error) { return nil, err } - if len(serializedSnap.Data) == 0 || serializedSnap.Crc == 0 { + if len(serializedSnap.Data) == 0 || serializedSnap.GetCrc() == 0 { lg.Warn("failed to read empty snapshot data", zap.String("path", snapname)) return nil, ErrEmptySnapshot } crc := crc32.Update(0, crcTable, serializedSnap.Data) - if crc != serializedSnap.Crc { + if crc != serializedSnap.GetCrc() { lg.Warn("snap file is corrupt", zap.String("path", snapname), - zap.Uint32("prev-crc", serializedSnap.Crc), + zap.Uint32("prev-crc", serializedSnap.GetCrc()), zap.Uint32("new-crc", crc), ) return nil, ErrCRCMismatch From 6989240eaba591fc020937f655cb2d524b6c5743 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Thu, 12 Feb 2026 10:34:36 +0000 Subject: [PATCH 0822/1068] Replace mvccpb.PUT and mvccpb.DELETE with mvccpb.Event_PUT and mvccpb.Event_DELETE Also mark mvccpb.PUT and mvccpb.DELETE as deprecated Signed-off-by: Benjamin Wang --- api/mvccpb/deprecated.go | 6 +- cache/cache_test.go | 168 +++++++++--------- client/v3/concurrency/election.go | 4 +- client/v3/concurrency/key.go | 2 +- client/v3/experimental/recipes/barrier.go | 2 +- .../v3/experimental/recipes/double_barrier.go | 6 +- .../v3/experimental/recipes/priority_queue.go | 2 +- client/v3/experimental/recipes/queue.go | 2 +- client/v3/experimental/recipes/rwmutex.go | 2 +- client/v3/watch.go | 4 +- etcdctl/ctlv3/command/make_mirror_command.go | 4 +- server/etcdserver/api/v3rpc/watch.go | 6 +- server/storage/mvcc/kv_test.go | 6 +- server/storage/mvcc/watchable_store.go | 4 +- server/storage/mvcc/watchable_store_test.go | 32 ++-- server/storage/mvcc/watchable_store_txn.go | 4 +- server/storage/mvcc/watcher_test.go | 8 +- tests/e2e/watch_test.go | 12 +- .../experimental/recipes/v3_lock_test.go | 4 +- .../clientv3/watch/v3_watch_test.go | 38 ++-- tests/integration/v3_lease_test.go | 2 +- tests/robustness/client/client.go | 4 +- tests/robustness/traffic/kubernetes.go | 4 +- 23 files changed, 164 insertions(+), 162 deletions(-) diff --git a/api/mvccpb/deprecated.go b/api/mvccpb/deprecated.go index 90e67fa6d544..cc810ab45d41 100644 --- a/api/mvccpb/deprecated.go +++ b/api/mvccpb/deprecated.go @@ -15,8 +15,10 @@ package mvccpb const ( - // Alias of Event_PUT + // PUT is an alias of Event_PUT + // Deprecated: use Event_PUT instead. Will be removed in v3.8. PUT = Event_PUT - // Alias of Permission_WRITE + // DELETE is an alias of Permission_WRITE + // Deprecated: use Event_DELETE instead. Will be removed in v3.8. DELETE = Event_DELETE ) diff --git a/cache/cache_test.go b/cache/cache_test.go index 5cf338da3817..6e82f442a93e 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -36,153 +36,153 @@ func TestCacheWatchAtomicOrderedDelivery(t *testing.T) { { name: "single_event", sentBatches: [][]*clientv3.Event{ - {event(mvccpb.PUT, "/a", 5)}, + {event(mvccpb.Event_PUT, "/a", 5)}, }, wantBatch: []*clientv3.Event{ - event(mvccpb.PUT, "/a", 5), + event(mvccpb.Event_PUT, "/a", 5), }, }, { name: "same_revision_batch", sentBatches: [][]*clientv3.Event{ { - event(mvccpb.PUT, "/a", 10), - event(mvccpb.PUT, "/b", 10), + event(mvccpb.Event_PUT, "/a", 10), + event(mvccpb.Event_PUT, "/b", 10), }, }, wantBatch: []*clientv3.Event{ - event(mvccpb.PUT, "/a", 10), - event(mvccpb.PUT, "/b", 10), + event(mvccpb.Event_PUT, "/a", 10), + event(mvccpb.Event_PUT, "/b", 10), }, }, { name: "mixed_revisions_in_single_response", sentBatches: [][]*clientv3.Event{ { - event(mvccpb.PUT, "/a", 11), - event(mvccpb.PUT, "/b", 11), - event(mvccpb.PUT, "/c", 12), + event(mvccpb.Event_PUT, "/a", 11), + event(mvccpb.Event_PUT, "/b", 11), + event(mvccpb.Event_PUT, "/c", 12), }, }, wantBatch: []*clientv3.Event{ - event(mvccpb.PUT, "/a", 11), - event(mvccpb.PUT, "/b", 11), - event(mvccpb.PUT, "/c", 12), + event(mvccpb.Event_PUT, "/a", 11), + event(mvccpb.Event_PUT, "/b", 11), + event(mvccpb.Event_PUT, "/c", 12), }, }, { name: "mixed_event_types_same_revision", sentBatches: [][]*clientv3.Event{ { - event(mvccpb.PUT, "/x", 5), - event(mvccpb.PUT, "/y", 6), - event(mvccpb.DELETE, "/x", 6), + event(mvccpb.Event_PUT, "/x", 5), + event(mvccpb.Event_PUT, "/y", 6), + event(mvccpb.Event_DELETE, "/x", 6), }, }, wantBatch: []*clientv3.Event{ - event(mvccpb.PUT, "/x", 5), - event(mvccpb.PUT, "/y", 6), - event(mvccpb.DELETE, "/x", 6), + event(mvccpb.Event_PUT, "/x", 5), + event(mvccpb.Event_PUT, "/y", 6), + event(mvccpb.Event_DELETE, "/x", 6), }, }, { name: "all_events_in_one_response", sentBatches: [][]*clientv3.Event{ { - event(mvccpb.PUT, "/a", 2), - event(mvccpb.PUT, "/b", 2), - event(mvccpb.PUT, "/c", 3), - event(mvccpb.PUT, "/d", 4), - event(mvccpb.PUT, "/e", 4), - event(mvccpb.PUT, "/f", 5), - event(mvccpb.PUT, "/g", 6), - event(mvccpb.PUT, "/h", 6), - event(mvccpb.PUT, "/i", 7), - event(mvccpb.PUT, "/j", 7), + event(mvccpb.Event_PUT, "/a", 2), + event(mvccpb.Event_PUT, "/b", 2), + event(mvccpb.Event_PUT, "/c", 3), + event(mvccpb.Event_PUT, "/d", 4), + event(mvccpb.Event_PUT, "/e", 4), + event(mvccpb.Event_PUT, "/f", 5), + event(mvccpb.Event_PUT, "/g", 6), + event(mvccpb.Event_PUT, "/h", 6), + event(mvccpb.Event_PUT, "/i", 7), + event(mvccpb.Event_PUT, "/j", 7), }, }, wantBatch: []*clientv3.Event{ - event(mvccpb.PUT, "/a", 2), - event(mvccpb.PUT, "/b", 2), - event(mvccpb.PUT, "/c", 3), - event(mvccpb.PUT, "/d", 4), - event(mvccpb.PUT, "/e", 4), - event(mvccpb.PUT, "/f", 5), - event(mvccpb.PUT, "/g", 6), - event(mvccpb.PUT, "/h", 6), - event(mvccpb.PUT, "/i", 7), - event(mvccpb.PUT, "/j", 7), + event(mvccpb.Event_PUT, "/a", 2), + event(mvccpb.Event_PUT, "/b", 2), + event(mvccpb.Event_PUT, "/c", 3), + event(mvccpb.Event_PUT, "/d", 4), + event(mvccpb.Event_PUT, "/e", 4), + event(mvccpb.Event_PUT, "/f", 5), + event(mvccpb.Event_PUT, "/g", 6), + event(mvccpb.Event_PUT, "/h", 6), + event(mvccpb.Event_PUT, "/i", 7), + event(mvccpb.Event_PUT, "/j", 7), }, }, { name: "one_revision_group_per_response", sentBatches: [][]*clientv3.Event{ - {event(mvccpb.PUT, "/a", 2), event(mvccpb.PUT, "/b", 2)}, - {event(mvccpb.PUT, "/c", 3)}, - {event(mvccpb.PUT, "/d", 4), event(mvccpb.PUT, "/e", 4)}, - {event(mvccpb.PUT, "/f", 5)}, - {event(mvccpb.PUT, "/g", 6), event(mvccpb.PUT, "/h", 6)}, - {event(mvccpb.PUT, "/i", 7), event(mvccpb.PUT, "/j", 7)}, + {event(mvccpb.Event_PUT, "/a", 2), event(mvccpb.Event_PUT, "/b", 2)}, + {event(mvccpb.Event_PUT, "/c", 3)}, + {event(mvccpb.Event_PUT, "/d", 4), event(mvccpb.Event_PUT, "/e", 4)}, + {event(mvccpb.Event_PUT, "/f", 5)}, + {event(mvccpb.Event_PUT, "/g", 6), event(mvccpb.Event_PUT, "/h", 6)}, + {event(mvccpb.Event_PUT, "/i", 7), event(mvccpb.Event_PUT, "/j", 7)}, }, wantBatch: []*clientv3.Event{ - event(mvccpb.PUT, "/a", 2), - event(mvccpb.PUT, "/b", 2), - event(mvccpb.PUT, "/c", 3), - event(mvccpb.PUT, "/d", 4), - event(mvccpb.PUT, "/e", 4), - event(mvccpb.PUT, "/f", 5), - event(mvccpb.PUT, "/g", 6), - event(mvccpb.PUT, "/h", 6), - event(mvccpb.PUT, "/i", 7), - event(mvccpb.PUT, "/j", 7), + event(mvccpb.Event_PUT, "/a", 2), + event(mvccpb.Event_PUT, "/b", 2), + event(mvccpb.Event_PUT, "/c", 3), + event(mvccpb.Event_PUT, "/d", 4), + event(mvccpb.Event_PUT, "/e", 4), + event(mvccpb.Event_PUT, "/f", 5), + event(mvccpb.Event_PUT, "/g", 6), + event(mvccpb.Event_PUT, "/h", 6), + event(mvccpb.Event_PUT, "/i", 7), + event(mvccpb.Event_PUT, "/j", 7), }, }, { name: "two_revision_groups_per_response", sentBatches: [][]*clientv3.Event{ - {event(mvccpb.PUT, "/a", 2), event(mvccpb.PUT, "/b", 2), event(mvccpb.PUT, "/c", 3)}, - {event(mvccpb.PUT, "/d", 4), event(mvccpb.PUT, "/e", 4), event(mvccpb.PUT, "/f", 5)}, - {event(mvccpb.PUT, "/g", 6), event(mvccpb.PUT, "/h", 6)}, - {event(mvccpb.PUT, "/i", 7), event(mvccpb.PUT, "/j", 7)}, + {event(mvccpb.Event_PUT, "/a", 2), event(mvccpb.Event_PUT, "/b", 2), event(mvccpb.Event_PUT, "/c", 3)}, + {event(mvccpb.Event_PUT, "/d", 4), event(mvccpb.Event_PUT, "/e", 4), event(mvccpb.Event_PUT, "/f", 5)}, + {event(mvccpb.Event_PUT, "/g", 6), event(mvccpb.Event_PUT, "/h", 6)}, + {event(mvccpb.Event_PUT, "/i", 7), event(mvccpb.Event_PUT, "/j", 7)}, }, wantBatch: []*clientv3.Event{ - event(mvccpb.PUT, "/a", 2), - event(mvccpb.PUT, "/b", 2), - event(mvccpb.PUT, "/c", 3), - event(mvccpb.PUT, "/d", 4), - event(mvccpb.PUT, "/e", 4), - event(mvccpb.PUT, "/f", 5), - event(mvccpb.PUT, "/g", 6), - event(mvccpb.PUT, "/h", 6), - event(mvccpb.PUT, "/i", 7), - event(mvccpb.PUT, "/j", 7), + event(mvccpb.Event_PUT, "/a", 2), + event(mvccpb.Event_PUT, "/b", 2), + event(mvccpb.Event_PUT, "/c", 3), + event(mvccpb.Event_PUT, "/d", 4), + event(mvccpb.Event_PUT, "/e", 4), + event(mvccpb.Event_PUT, "/f", 5), + event(mvccpb.Event_PUT, "/g", 6), + event(mvccpb.Event_PUT, "/h", 6), + event(mvccpb.Event_PUT, "/i", 7), + event(mvccpb.Event_PUT, "/j", 7), }, }, { name: "three_revision_groups_per_response", sentBatches: [][]*clientv3.Event{ { - event(mvccpb.PUT, "/a", 2), event(mvccpb.PUT, "/b", 2), - event(mvccpb.PUT, "/c", 3), - event(mvccpb.PUT, "/d", 4), event(mvccpb.PUT, "/e", 4), + event(mvccpb.Event_PUT, "/a", 2), event(mvccpb.Event_PUT, "/b", 2), + event(mvccpb.Event_PUT, "/c", 3), + event(mvccpb.Event_PUT, "/d", 4), event(mvccpb.Event_PUT, "/e", 4), }, { - event(mvccpb.PUT, "/f", 5), - event(mvccpb.PUT, "/g", 6), event(mvccpb.PUT, "/h", 6), - event(mvccpb.PUT, "/i", 7), event(mvccpb.PUT, "/j", 7), + event(mvccpb.Event_PUT, "/f", 5), + event(mvccpb.Event_PUT, "/g", 6), event(mvccpb.Event_PUT, "/h", 6), + event(mvccpb.Event_PUT, "/i", 7), event(mvccpb.Event_PUT, "/j", 7), }, }, wantBatch: []*clientv3.Event{ - event(mvccpb.PUT, "/a", 2), - event(mvccpb.PUT, "/b", 2), - event(mvccpb.PUT, "/c", 3), - event(mvccpb.PUT, "/d", 4), - event(mvccpb.PUT, "/e", 4), - event(mvccpb.PUT, "/f", 5), - event(mvccpb.PUT, "/g", 6), - event(mvccpb.PUT, "/h", 6), - event(mvccpb.PUT, "/i", 7), - event(mvccpb.PUT, "/j", 7), + event(mvccpb.Event_PUT, "/a", 2), + event(mvccpb.Event_PUT, "/b", 2), + event(mvccpb.Event_PUT, "/c", 3), + event(mvccpb.Event_PUT, "/d", 4), + event(mvccpb.Event_PUT, "/e", 4), + event(mvccpb.Event_PUT, "/f", 5), + event(mvccpb.Event_PUT, "/g", 6), + event(mvccpb.Event_PUT, "/h", 6), + event(mvccpb.Event_PUT, "/i", 7), + event(mvccpb.Event_PUT, "/j", 7), }, }, } diff --git a/client/v3/concurrency/election.go b/client/v3/concurrency/election.go index ac1303dd8b48..2b196b96a1a9 100644 --- a/client/v3/concurrency/election.go +++ b/client/v3/concurrency/election.go @@ -196,7 +196,7 @@ func (e *Election) observe(ctx context.Context, ch chan<- v3.GetResponse) { } // only accept puts; a delete will make observe() spin for _, ev := range wr.Events { - if ev.Type == mvccpb.PUT { + if ev.Type == mvccpb.Event_PUT { hdr, kv = &wr.Header, ev.Kv // may have multiple revs; hdr.rev = the last rev // set to kv's rev in case batch has multiple Puts @@ -226,7 +226,7 @@ func (e *Election) observe(ctx context.Context, ch chan<- v3.GetResponse) { return } for _, ev := range wr.Events { - if ev.Type == mvccpb.DELETE { + if ev.Type == mvccpb.Event_DELETE { keyDeleted = true break } diff --git a/client/v3/concurrency/key.go b/client/v3/concurrency/key.go index 92e365c47151..fe3279893353 100644 --- a/client/v3/concurrency/key.go +++ b/client/v3/concurrency/key.go @@ -30,7 +30,7 @@ func waitDelete(ctx context.Context, client *v3.Client, key string, rev int64) e wch := client.Watch(cctx, key, v3.WithRev(rev)) for wr = range wch { for _, ev := range wr.Events { - if ev.Type == mvccpb.DELETE { + if ev.Type == mvccpb.Event_DELETE { return nil } } diff --git a/client/v3/experimental/recipes/barrier.go b/client/v3/experimental/recipes/barrier.go index daf4abefb3a3..6f9093ab75a5 100644 --- a/client/v3/experimental/recipes/barrier.go +++ b/client/v3/experimental/recipes/barrier.go @@ -61,6 +61,6 @@ func (b *Barrier) Wait() error { b.client, b.key, resp.Header.Revision+1, - []mvccpb.Event_EventType{mvccpb.DELETE}) + []mvccpb.Event_EventType{mvccpb.Event_DELETE}) return err } diff --git a/client/v3/experimental/recipes/double_barrier.go b/client/v3/experimental/recipes/double_barrier.go index e0d00247f1c7..b0af2aa6e8ca 100644 --- a/client/v3/experimental/recipes/double_barrier.go +++ b/client/v3/experimental/recipes/double_barrier.go @@ -92,7 +92,7 @@ func (b *DoubleBarrier) Enter() error { client, b.key+"/ready", ek.Revision(), - []mvccpb.Event_EventType{mvccpb.PUT}) + []mvccpb.Event_EventType{mvccpb.Event_PUT}) return err } @@ -147,7 +147,7 @@ func (b *DoubleBarrier) Leave() error { client, string(highest.Key), highest.ModRevision, - []mvccpb.Event_EventType{mvccpb.DELETE}) + []mvccpb.Event_EventType{mvccpb.Event_DELETE}) if err != nil { return err } @@ -164,7 +164,7 @@ func (b *DoubleBarrier) Leave() error { client, key, lowest.ModRevision, - []mvccpb.Event_EventType{mvccpb.DELETE}) + []mvccpb.Event_EventType{mvccpb.Event_DELETE}) if err != nil { return err } diff --git a/client/v3/experimental/recipes/priority_queue.go b/client/v3/experimental/recipes/priority_queue.go index 1b26067466fa..84a99f208b7e 100644 --- a/client/v3/experimental/recipes/priority_queue.go +++ b/client/v3/experimental/recipes/priority_queue.go @@ -65,7 +65,7 @@ func (q *PriorityQueue) Dequeue() (string, error) { q.client, q.key, resp.Header.Revision, - []mvccpb.Event_EventType{mvccpb.PUT}) + []mvccpb.Event_EventType{mvccpb.Event_PUT}) if err != nil { return "", err } diff --git a/client/v3/experimental/recipes/queue.go b/client/v3/experimental/recipes/queue.go index 9c6b0378e110..025723720c8b 100644 --- a/client/v3/experimental/recipes/queue.go +++ b/client/v3/experimental/recipes/queue.go @@ -62,7 +62,7 @@ func (q *Queue) Dequeue() (string, error) { q.client, q.keyPrefix, resp.Header.Revision, - []mvccpb.Event_EventType{mvccpb.PUT}) + []mvccpb.Event_EventType{mvccpb.Event_PUT}) if err != nil { return "", err } diff --git a/client/v3/experimental/recipes/rwmutex.go b/client/v3/experimental/recipes/rwmutex.go index d961ead3f04f..34a8f5363b27 100644 --- a/client/v3/experimental/recipes/rwmutex.go +++ b/client/v3/experimental/recipes/rwmutex.go @@ -81,7 +81,7 @@ func (rwm *RWMutex) waitOnLastRev(pfx string) (bool, error) { client, string(lastKey.Kvs[0].Key), rwm.myKey.Revision(), - []mvccpb.Event_EventType{mvccpb.DELETE}) + []mvccpb.Event_EventType{mvccpb.Event_DELETE}) return false, err } diff --git a/client/v3/watch.go b/client/v3/watch.go index 9c6fb22315af..b0ab779f31ce 100644 --- a/client/v3/watch.go +++ b/client/v3/watch.go @@ -33,8 +33,8 @@ import ( ) const ( - EventTypeDelete = mvccpb.DELETE - EventTypePut = mvccpb.PUT + EventTypeDelete = mvccpb.Event_DELETE + EventTypePut = mvccpb.Event_PUT closeSendErrTimeout = 250 * time.Millisecond diff --git a/etcdctl/ctlv3/command/make_mirror_command.go b/etcdctl/ctlv3/command/make_mirror_command.go index eea3d293e8b2..697c9b9d8c63 100644 --- a/etcdctl/ctlv3/command/make_mirror_command.go +++ b/etcdctl/ctlv3/command/make_mirror_command.go @@ -217,10 +217,10 @@ func makeMirror(ctx context.Context, c *clientv3.Client, dc *clientv3.Client) er } switch ev.Type { - case mvccpb.PUT: + case mvccpb.Event_PUT: ops = append(ops, clientv3.OpPut(modifyPrefix(string(ev.Kv.Key)), string(ev.Kv.Value))) atomic.AddInt64(&total, 1) - case mvccpb.DELETE: + case mvccpb.Event_DELETE: ops = append(ops, clientv3.OpDelete(modifyPrefix(string(ev.Kv.Key)))) atomic.AddInt64(&total, 1) default: diff --git a/server/etcdserver/api/v3rpc/watch.go b/server/etcdserver/api/v3rpc/watch.go index 193cb185d54e..c501dcf69953 100644 --- a/server/etcdserver/api/v3rpc/watch.go +++ b/server/etcdserver/api/v3rpc/watch.go @@ -574,7 +574,7 @@ func (sws *serverWatchStream) sendLoop() { } func IsCreateEvent(e mvccpb.Event) bool { - return e.Type == mvccpb.PUT && e.Kv.CreateRevision == e.Kv.ModRevision + return e.Type == mvccpb.Event_PUT && e.Kv.CreateRevision == e.Kv.ModRevision } func sendFragments( @@ -633,11 +633,11 @@ func (sws *serverWatchStream) newResponseHeader(rev int64) *pb.ResponseHeader { } func filterNoDelete(e mvccpb.Event) bool { - return e.Type == mvccpb.DELETE + return e.Type == mvccpb.Event_DELETE } func filterNoPut(e mvccpb.Event) bool { - return e.Type == mvccpb.PUT + return e.Type == mvccpb.Event_PUT } // FiltersFromRequest returns "mvcc.FilterFunc" from a given watch create request. diff --git a/server/storage/mvcc/kv_test.go b/server/storage/mvcc/kv_test.go index 734868a235e5..bfe9a5987594 100644 --- a/server/storage/mvcc/kv_test.go +++ b/server/storage/mvcc/kv_test.go @@ -783,7 +783,7 @@ func TestWatchableKVWatch(t *testing.T) { wev := []mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{ Key: []byte("foo"), Value: []byte("bar"), @@ -794,7 +794,7 @@ func TestWatchableKVWatch(t *testing.T) { }, }, { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{ Key: []byte("foo1"), Value: []byte("bar1"), @@ -805,7 +805,7 @@ func TestWatchableKVWatch(t *testing.T) { }, }, { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{ Key: []byte("foo1"), Value: []byte("bar11"), diff --git a/server/storage/mvcc/watchable_store.go b/server/storage/mvcc/watchable_store.go index 9df1101fcd12..89817f43ad81 100644 --- a/server/storage/mvcc/watchable_store.go +++ b/server/storage/mvcc/watchable_store.go @@ -476,9 +476,9 @@ func kvsToEvents(lg *zap.Logger, revs, vals [][]byte) (evs []mvccpb.Event) { lg.Panic("failed to unmarshal mvccpb.KeyValue", zap.Error(err)) } - ty := mvccpb.PUT + ty := mvccpb.Event_PUT if isTombstone(revs[i]) { - ty = mvccpb.DELETE + ty = mvccpb.Event_DELETE // patch in mod revision so watchers won't skip kv.ModRevision = BytesToRev(revs[i]).Main } diff --git a/server/storage/mvcc/watchable_store_test.go b/server/storage/mvcc/watchable_store_test.go index ecfe03bfb14d..706ba1409c66 100644 --- a/server/storage/mvcc/watchable_store_test.go +++ b/server/storage/mvcc/watchable_store_test.go @@ -323,7 +323,7 @@ func TestSyncWatchers(t *testing.T) { assert.Len(t, events, 1) assert.Equal(t, []mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{ Key: testKey, CreateRevision: 2, @@ -354,7 +354,7 @@ func TestRangeEvents(t *testing.T) { expectEvents := []mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{ Key: foo1, CreateRevision: 2, @@ -364,7 +364,7 @@ func TestRangeEvents(t *testing.T) { }, }, { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{ Key: foo2, CreateRevision: 3, @@ -374,7 +374,7 @@ func TestRangeEvents(t *testing.T) { }, }, { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{ Key: foo3, CreateRevision: 4, @@ -384,14 +384,14 @@ func TestRangeEvents(t *testing.T) { }, }, { - Type: mvccpb.DELETE, + Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{ Key: foo1, ModRevision: 5, }, }, { - Type: mvccpb.DELETE, + Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{ Key: foo2, ModRevision: 5, @@ -610,31 +610,31 @@ func testWatchRestore(t *testing.T, delayBeforeRestore, delayAfterRestore time.D name: "zero revision", startRevision: 0, wantEvents: []mvccpb.Event{ - {Type: mvccpb.PUT, Kv: &mvccpb.KeyValue{Key: testKey, Value: testValue, CreateRevision: 2, ModRevision: 2, Version: 1}}, - {Type: mvccpb.DELETE, Kv: &mvccpb.KeyValue{Key: testKey, ModRevision: 3}}, + {Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: testKey, Value: testValue, CreateRevision: 2, ModRevision: 2, Version: 1}}, + {Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: testKey, ModRevision: 3}}, }, }, { name: "revision before first write", startRevision: 1, wantEvents: []mvccpb.Event{ - {Type: mvccpb.PUT, Kv: &mvccpb.KeyValue{Key: testKey, Value: testValue, CreateRevision: 2, ModRevision: 2, Version: 1}}, - {Type: mvccpb.DELETE, Kv: &mvccpb.KeyValue{Key: testKey, ModRevision: 3}}, + {Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: testKey, Value: testValue, CreateRevision: 2, ModRevision: 2, Version: 1}}, + {Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: testKey, ModRevision: 3}}, }, }, { name: "revision of first write", startRevision: 2, wantEvents: []mvccpb.Event{ - {Type: mvccpb.PUT, Kv: &mvccpb.KeyValue{Key: testKey, Value: testValue, CreateRevision: 2, ModRevision: 2, Version: 1}}, - {Type: mvccpb.DELETE, Kv: &mvccpb.KeyValue{Key: testKey, ModRevision: 3}}, + {Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: testKey, Value: testValue, CreateRevision: 2, ModRevision: 2, Version: 1}}, + {Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: testKey, ModRevision: 3}}, }, }, { name: "current revision", startRevision: 3, wantEvents: []mvccpb.Event{ - {Type: mvccpb.DELETE, Kv: &mvccpb.KeyValue{Key: testKey, ModRevision: 3}}, + {Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: testKey, ModRevision: 3}}, }, }, { @@ -772,15 +772,15 @@ func TestNewMapwatcherToEventMap(t *testing.T) { evs := []mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: k0, Value: v0}, }, { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: k1, Value: v1}, }, { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: k2, Value: v2}, }, } diff --git a/server/storage/mvcc/watchable_store_txn.go b/server/storage/mvcc/watchable_store_txn.go index b70d8ceca47b..b1d13d2c7e08 100644 --- a/server/storage/mvcc/watchable_store_txn.go +++ b/server/storage/mvcc/watchable_store_txn.go @@ -31,10 +31,10 @@ func (tw *watchableStoreTxnWrite) End() { for i, change := range changes { evs[i].Kv = &changes[i] if change.CreateRevision == 0 { - evs[i].Type = mvccpb.DELETE + evs[i].Type = mvccpb.Event_DELETE evs[i].Kv.ModRevision = rev } else { - evs[i].Type = mvccpb.PUT + evs[i].Type = mvccpb.Event_PUT } } diff --git a/server/storage/mvcc/watcher_test.go b/server/storage/mvcc/watcher_test.go index db979eb40125..7a3cfe03ccf5 100644 --- a/server/storage/mvcc/watcher_test.go +++ b/server/storage/mvcc/watcher_test.go @@ -237,9 +237,9 @@ func TestWatchDeleteRange(t *testing.T) { s.DeleteRange(from, to) we := []mvccpb.Event{ - {Type: mvccpb.DELETE, Kv: &mvccpb.KeyValue{Key: []byte("foo_0"), ModRevision: 5}}, - {Type: mvccpb.DELETE, Kv: &mvccpb.KeyValue{Key: []byte("foo_1"), ModRevision: 5}}, - {Type: mvccpb.DELETE, Kv: &mvccpb.KeyValue{Key: []byte("foo_2"), ModRevision: 5}}, + {Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: []byte("foo_0"), ModRevision: 5}}, + {Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: []byte("foo_1"), ModRevision: 5}}, + {Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: []byte("foo_2"), ModRevision: 5}}, } select { @@ -426,7 +426,7 @@ func TestWatcherWatchWithFilter(t *testing.T) { defer w.Close() filterPut := func(e mvccpb.Event) bool { - return e.Type == mvccpb.PUT + return e.Type == mvccpb.Event_PUT } w.Watch(t.Context(), 0, []byte("foo"), nil, 0, filterPut) diff --git a/tests/e2e/watch_test.go b/tests/e2e/watch_test.go index c628a0cc888c..827896c62fd4 100644 --- a/tests/e2e/watch_test.go +++ b/tests/e2e/watch_test.go @@ -315,11 +315,11 @@ func TestDeleteEventDrop_Issue18089(t *testing.T) { case watchResp := <-watchChan: require.Len(t, watchResp.Events, 2) - require.Equal(t, mvccpb.DELETE, watchResp.Events[0].Type) + require.Equal(t, mvccpb.Event_DELETE, watchResp.Events[0].Type) deletedKey := string(watchResp.Events[0].Kv.Key) require.Equal(t, key, deletedKey) - require.Equal(t, mvccpb.PUT, watchResp.Events[1].Type) + require.Equal(t, mvccpb.Event_PUT, watchResp.Events[1].Type) updatedKey := string(watchResp.Events[1].Kv.Key) require.Equal(t, key, updatedKey) @@ -390,7 +390,7 @@ func testStartWatcherFromCompactedRevision(t *testing.T, performCompactOnTombsto assert.NoError(t, derr) respHeader = resp.Header - requestedValues = append(requestedValues, valueEvent{value: "", typ: mvccpb.DELETE}) + requestedValues = append(requestedValues, valueEvent{value: "", typ: mvccpb.Event_DELETE}) } else { value := fmt.Sprintf("%d", vi) @@ -399,7 +399,7 @@ func testStartWatcherFromCompactedRevision(t *testing.T, performCompactOnTombsto assert.NoError(t, perr) respHeader = resp.Header - requestedValues = append(requestedValues, valueEvent{value: value, typ: mvccpb.PUT}) + requestedValues = append(requestedValues, valueEvent{value: value, typ: mvccpb.Event_PUT}) } lastRevision = respHeader.Revision @@ -482,7 +482,7 @@ func testStartWatcherFromCompactedRevision(t *testing.T, performCompactOnTombsto updatedKey := string(ev.Kv.Key) require.Equal(t, key, updatedKey) - if expected.typ == mvccpb.PUT { + if expected.typ == mvccpb.Event_PUT { updatedValue := string(ev.Kv.Value) require.Equal(t, expected.value, updatedValue) } @@ -532,7 +532,7 @@ func TestResumeCompactionOnTombstone(t *testing.T) { case watchResp := <-c1.Watch(ctx, firstKey, clientv3.WithRev(deleteResp.Header.Revision)): require.Len(t, watchResp.Events, 1) - require.Equal(t, mvccpb.DELETE, watchResp.Events[0].Type) + require.Equal(t, mvccpb.Event_DELETE, watchResp.Events[0].Type) deletedKey := string(watchResp.Events[0].Kv.Key) require.Equal(t, firstKey, deletedKey) diff --git a/tests/integration/clientv3/experimental/recipes/v3_lock_test.go b/tests/integration/clientv3/experimental/recipes/v3_lock_test.go index 3e50fc1b45c4..c97bc09d3946 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_lock_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_lock_test.go @@ -248,7 +248,7 @@ func TestMutexWaitsOnCurrentHolder(t *testing.T) { case wrp := <-wch: require.Lenf(t, wrp.Events, 1, "expect a event, but got %v events", len(wrp.Events)) e := wrp.Events[0] - require.Equalf(t, mvccpb.PUT, e.Type, "expect a put event on prefix test-mutex, but got event type %v", e.Type) + require.Equalf(t, mvccpb.Event_PUT, e.Type, "expect a put event on prefix test-mutex, but got event type %v", e.Type) case <-time.After(time.Second): t.Fatalf("failed to receive a watch response") } @@ -261,7 +261,7 @@ func TestMutexWaitsOnCurrentHolder(t *testing.T) { case wrp := <-wch: require.Lenf(t, wrp.Events, 1, "expect a event, but got %v events", len(wrp.Events)) e := wrp.Events[0] - require.Equalf(t, mvccpb.DELETE, e.Type, "expect a delete event on prefix test-mutex, but got event type %v", e.Type) + require.Equalf(t, mvccpb.Event_DELETE, e.Type, "expect a delete event on prefix test-mutex, but got event type %v", e.Type) case <-time.After(time.Second): t.Fatal("failed to receive a watch response") } diff --git a/tests/integration/clientv3/watch/v3_watch_test.go b/tests/integration/clientv3/watch/v3_watch_test.go index 04944c4e75c6..f8ea8f013be1 100644 --- a/tests/integration/clientv3/watch/v3_watch_test.go +++ b/tests/integration/clientv3/watch/v3_watch_test.go @@ -64,7 +64,7 @@ func TestV3WatchFromCurrentRevision(t *testing.T) { Created: false, Events: []*mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 2, Version: 1}, }, }, @@ -98,7 +98,7 @@ func TestV3WatchFromCurrentRevision(t *testing.T) { Created: false, Events: []*mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("fooLong"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 2, Version: 1}, }, }, @@ -133,7 +133,7 @@ func TestV3WatchFromCurrentRevision(t *testing.T) { Created: false, Events: []*mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("fooLong"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 2, Version: 1}, }, }, @@ -155,7 +155,7 @@ func TestV3WatchFromCurrentRevision(t *testing.T) { Created: false, Events: []*mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 2, Version: 1}, }, }, @@ -165,7 +165,7 @@ func TestV3WatchFromCurrentRevision(t *testing.T) { Created: false, Events: []*mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 3, Version: 2}, }, }, @@ -175,7 +175,7 @@ func TestV3WatchFromCurrentRevision(t *testing.T) { Created: false, Events: []*mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 4, Version: 3}, }, }, @@ -198,7 +198,7 @@ func TestV3WatchFromCurrentRevision(t *testing.T) { Created: false, Events: []*mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 2, Version: 1}, }, }, @@ -208,7 +208,7 @@ func TestV3WatchFromCurrentRevision(t *testing.T) { Created: false, Events: []*mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 3, Version: 2}, }, }, @@ -218,7 +218,7 @@ func TestV3WatchFromCurrentRevision(t *testing.T) { Created: false, Events: []*mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 4, Version: 3}, }, }, @@ -607,7 +607,7 @@ func TestV3WatchEmptyKey(t *testing.T) { require.NoError(t, rerr) wevs := []*mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo"), CreateRevision: 2, ModRevision: 2, Version: 1}, }, } @@ -791,15 +791,15 @@ func testV3WatchMultipleEventsTxn(t *testing.T, startRev int64) { wevents := []*mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo0"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 2, Version: 1}, }, { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo1"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 2, Version: 1}, }, { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo2"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 2, Version: 1}, }, } @@ -861,19 +861,19 @@ func TestV3WatchMultipleEventsPutUnsynced(t *testing.T) { allWevents := []*mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo0"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 2, Version: 1}, }, { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo1"), Value: []byte("bar"), CreateRevision: 3, ModRevision: 3, Version: 1}, }, { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo0"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 4, Version: 2}, }, { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo1"), Value: []byte("bar"), CreateRevision: 3, ModRevision: 5, Version: 2}, }, } @@ -1064,7 +1064,7 @@ func testV3WatchMultipleStreams(t *testing.T, startRev int64) { wg.Add(len(streams)) wevents := []*mvccpb.Event{ { - Type: mvccpb.PUT, + Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 2, Version: 1}, }, } @@ -1264,7 +1264,7 @@ func TestV3WatchWithFilter(t *testing.T) { case resp := <-recv: wevs := []*mvccpb.Event{ { - Type: mvccpb.DELETE, + Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: []byte("foo"), ModRevision: 3}, }, } diff --git a/tests/integration/v3_lease_test.go b/tests/integration/v3_lease_test.go index 11c3da2840da..ade65c891870 100644 --- a/tests/integration/v3_lease_test.go +++ b/tests/integration/v3_lease_test.go @@ -266,7 +266,7 @@ func TestV3LeaseExpire(t *testing.T) { errc <- err case len(resp.Events) != 1: fallthrough - case resp.Events[0].Type != mvccpb.DELETE: + case resp.Events[0].Type != mvccpb.Event_DELETE: errc <- fmt.Errorf("expected key delete, got %v", resp) default: errc <- nil diff --git a/tests/robustness/client/client.go b/tests/robustness/client/client.go index 6b0393e9c775..19d75c2ec562 100644 --- a/tests/robustness/client/client.go +++ b/tests/robustness/client/client.go @@ -367,9 +367,9 @@ func toWatchEvent(event clientv3.Event) (watch model.WatchEvent) { watch.IsCreate = event.IsCreate() switch event.Type { - case mvccpb.PUT: + case mvccpb.Event_PUT: watch.Type = model.PutOperation - case mvccpb.DELETE: + case mvccpb.Event_DELETE: watch.Type = model.DeleteOperation default: panic(fmt.Sprintf("Unexpected event type: %s", event.Type)) diff --git a/tests/robustness/traffic/kubernetes.go b/tests/robustness/traffic/kubernetes.go index a413c3432807..4eaa82d3d321 100644 --- a/tests/robustness/traffic/kubernetes.go +++ b/tests/robustness/traffic/kubernetes.go @@ -368,9 +368,9 @@ func (s *storage) Update(resp clientv3.WatchResponse) { } s.revision = e.Kv.ModRevision switch e.Type { - case mvccpb.PUT: + case mvccpb.Event_PUT: s.keyRevision[string(e.Kv.Key)] = e.Kv.ModRevision - case mvccpb.DELETE: + case mvccpb.Event_DELETE: delete(s.keyRevision, string(e.Kv.Key)) } } From c7beaef0c4ee5f46fee4fe2ec56bb83c6c836ba0 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Thu, 12 Feb 2026 15:57:53 +0100 Subject: [PATCH 0823/1068] Robustness: reduce log noise in runWatchLoop Signed-off-by: Chun-Hung Tseng --- tests/robustness/traffic/traffic.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index a788b7b3265a..e6bf28edf661 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -401,10 +401,9 @@ func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) if err != nil { return } - err = runWatch(ctx, p, cfg) - if err != nil { - p.Logger.Error("runWatchLoop: Get failed", zap.Error(err)) - } + // Client.get may fail when the blackhole is injected. + // We suppress logging for these expected failures to avoid polluting the logs. + _ = runWatch(ctx, p, cfg) } } From 0b2a9942ee66172f4385039b8133d3ffec76d10d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Feb 2026 18:23:11 +0000 Subject: [PATCH 0824/1068] build(deps): bump distroless/static-debian12 from `cd64bec` to `20bc6c0` Bumps distroless/static-debian12 from `cd64bec` to `20bc6c0`. --- updated-dependencies: - dependency-name: distroless/static-debian12 dependency-version: 20bc6c0bc4d625a22a8fde3e55f6515709b32055ef8fb9cfbddaa06d1760f838 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 979e8514d2ec..8d9db55f6fb6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG ARCH=amd64 -FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:cd64bec9cec257044ce3a8dd3620cf83b387920100332f2b041f19c4d2febf93 +FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:20bc6c0bc4d625a22a8fde3e55f6515709b32055ef8fb9cfbddaa06d1760f838 ADD etcd /usr/local/bin/ ADD etcdctl /usr/local/bin/ From 64924dbcff509e065c6076c8d8a831c5c37cb15d Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Thu, 12 Feb 2026 21:35:34 +0100 Subject: [PATCH 0825/1068] robustness: fix validate_test test name typo Signed-off-by: Chun-Hung Tseng --- tests/robustness/validate/validate_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/robustness/validate/validate_test.go b/tests/robustness/validate/validate_test.go index 925e500544a7..5ab479ca59cf 100644 --- a/tests/robustness/validate/validate_test.go +++ b/tests/robustness/validate/validate_test.go @@ -1551,7 +1551,7 @@ func TestValidateWatch(t *testing.T) { }, }, { - name: "Resumable - missing first matching event - pass", + name: "Resumable - missing first matching event - fail", reports: []report.ClientReport{ { Watch: []model.WatchOperation{ @@ -1579,7 +1579,7 @@ func TestValidateWatch(t *testing.T) { expectError: errBrokeResumable.Error(), }, { - name: "Resumable - missing first matching event with prefix - pass", + name: "Resumable - missing first matching event with prefix - fail", reports: []report.ClientReport{ { Watch: []model.WatchOperation{ @@ -1607,7 +1607,7 @@ func TestValidateWatch(t *testing.T) { expectError: errBrokeResumable.Error(), }, { - name: "Resumable - missing first matching event with prefix - pass", + name: "Resumable - missing first matching event with prefix - fail", reports: []report.ClientReport{ { Watch: []model.WatchOperation{ @@ -1697,7 +1697,7 @@ func TestValidateWatch(t *testing.T) { expectError: errBrokeIsCreate.Error(), }, { - name: "IsCreate - put after delete marked as not created - pass", + name: "IsCreate - put after delete marked as not created - fail", reports: []report.ClientReport{ { Watch: []model.WatchOperation{ From 16841b6a1f86db63da79a6fd517b7962d0ddfc4f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Feb 2026 18:22:38 +0000 Subject: [PATCH 0826/1068] build(deps): bump github/codeql-action from 4.32.2 to 4.32.3 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.2 to 4.32.3. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2...9e907b5e64f6b83e7804b09294d44122997950d6) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.32.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index d0a839798769..093aadd79034 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2 + uses: github/codeql-action/init@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2 + uses: github/codeql-action/autobuild@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2 + uses: github/codeql-action/analyze@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 2a998f553688..14dab8597a57 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2 + uses: github/codeql-action/upload-sarif@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3 with: sarif_file: results.sarif From e5b0872e2f89a2eadec605b68b3a9a891b35ca2a Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 21 Feb 2026 00:02:39 +0800 Subject: [PATCH 0827/1068] dependency: bump github.com/golang-jwt/jwt/v5 from 5.3.0 to 5.3.1 Reference: - #21324 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 8 ++++---- go.mod | 20 ++++++++++---------- go.sum | 8 ++++---- go.work.sum | 24 ++++++++++++------------ pkg/go.mod | 12 ++++++------ pkg/go.sum | 4 ++-- server/go.mod | 4 ++-- server/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 23 files changed, 70 insertions(+), 70 deletions(-) diff --git a/api/go.mod b/api/go.mod index 4081442d8f8c..181a515a3840 100644 --- a/api/go.mod +++ b/api/go.mod @@ -10,7 +10,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 github.com/stretchr/testify v1.11.1 google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 - google.golang.org/grpc v1.78.0 + google.golang.org/grpc v1.79.1 google.golang.org/protobuf v1.36.11 ) diff --git a/api/go.sum b/api/go.sum index 07e05fe5814e..2d89d2274ea6 100644 --- a/api/go.sum +++ b/api/go.sum @@ -50,8 +50,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= +google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/cache/go.mod b/cache/go.mod index 7d1d8e1fbade..22715e3c164d 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -27,7 +27,7 @@ require ( golang.org/x/text v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect - google.golang.org/grpc v1.78.0 // indirect + google.golang.org/grpc v1.79.1 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index 75debdc66d65..f9ae3c3d9157 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -76,8 +76,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= +google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index bb09b8bfce4c..9cccb4119a70 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.1 - google.golang.org/grpc v1.78.0 + google.golang.org/grpc v1.79.1 sigs.k8s.io/yaml v1.6.0 ) diff --git a/client/v3/go.sum b/client/v3/go.sum index a033ce8b63c8..909a00c2b7f4 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -84,8 +84,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= +google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index dc3c69618eb5..8f72e440818e 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.78.0 + google.golang.org/grpc v1.79.1 ) require ( diff --git a/etcdctl/go.sum b/etcdctl/go.sum index d7f6211e026c..e1dcaa0f3463 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -119,8 +119,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= +google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 1ffd0e4d5f70..ce2904a8603c 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -42,7 +42,7 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.3.0 // indirect + github.com/golang-jwt/jwt/v5 v5.3.1 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/uuid v1.6.0 // indirect @@ -87,7 +87,7 @@ require ( golang.org/x/time v0.14.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect - google.golang.org/grpc v1.78.0 // indirect + google.golang.org/grpc v1.79.1 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index b4ebe8e005ca..456700d1b98c 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -30,8 +30,8 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= -github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= +github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -185,8 +185,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= +google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index cd17a3d588b8..6388941119b6 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,8 @@ module go.etcd.io/etcd/v3 -go 1.25.0 +go 1.26 -toolchain go1.25.7 +toolchain go1.26.0 replace ( go.etcd.io/etcd/api/v3 => ./api @@ -35,8 +35,8 @@ require ( go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 - golang.org/x/tools v0.41.0 - google.golang.org/grpc v1.78.0 + golang.org/x/tools v0.42.0 + google.golang.org/grpc v1.79.1 google.golang.org/protobuf v1.36.11 ) @@ -54,7 +54,7 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.3.0 // indirect + github.com/golang-jwt/jwt/v5 v5.3.1 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/uuid v1.6.0 // indirect @@ -94,12 +94,12 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.47.0 // indirect - golang.org/x/mod v0.32.0 // indirect - golang.org/x/net v0.49.0 // indirect + golang.org/x/crypto v0.48.0 // indirect + golang.org/x/mod v0.33.0 // indirect + golang.org/x/net v0.50.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index 1a94275e49cd..e0004d182812 100644 --- a/go.sum +++ b/go.sum @@ -36,8 +36,8 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= -github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= +github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -197,8 +197,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= +google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.work.sum b/go.work.sum index 91a1d9a85721..a0dea97f614c 100644 --- a/go.work.sum +++ b/go.work.sum @@ -7,8 +7,8 @@ buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-2025042515311 buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250425153114-8976f5be98c1.1/go.mod h1:avRlCjnFzl98VPaeCtJ24RrV/wwHFzB8sWXhj26+n/U= buf.build/go/protovalidate v0.12.0 h1:4GKJotbspQjRCcqZMGVSuC8SjwZ/FmgtSuKDpKUTZew= buf.build/go/protovalidate v0.12.0/go.mod h1:q3PFfbzI05LeqxSwq+begW2syjy2Z6hLxZSkP1OH/D0= -cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= -cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= +cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= +cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= cloud.google.com/go v0.121.2 h1:v2qQpN6Dx9x2NmwrqlesOt3Ys4ol5/lFZ6Mg1B7OJCg= cloud.google.com/go v0.121.2/go.mod h1:nRFlrHq39MNVWu+zESP2PosMWA0ryJw8KUBZ2iZpxbw= cloud.google.com/go/accessapproval v1.7.1 h1:/5YjNhR6lzCvmJZAnByYkfEgWjfAKwYP6nkuTk6nKFE= @@ -213,8 +213,8 @@ github.com/cloudflare/circl v1.1.0 h1:bZgT/A+cikZnKIwn7xL2OBj012Bmvho/o6RpRvv3GK github.com/cloudflare/redoctober v0.0.0-20211013234631-6a74ccc611f6 h1:QKzett0dn5FhjcIHNKSClEilabfhWCnsdijq3ftm9Ms= github.com/cloudflare/redoctober v0.0.0-20211013234631-6a74ccc611f6/go.mod h1:Ikt4Wfpln1YOrak+auA8BNxgiilj0Y2y7nO+aN2eMzk= github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nCtnAiZdYFd45cYZPs8vOOIYKfk= -github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= -github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= +github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w= +github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI= github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= github.com/cristalhq/acmd v0.12.0 h1:RdlKnxjN+txbQosg8p/TRNZ+J1Rdne43MVQZ1zDhGWk= github.com/cristalhq/acmd v0.12.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= @@ -222,14 +222,14 @@ github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh github.com/ebitengine/purego v0.9.1 h1:a/k2f2HQU3Pi399RPW1MOaZyhKJL9w/xFpKAg4q1s0A= github.com/ebitengine/purego v0.9.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= -github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329 h1:K+fnvUM0VZ7ZFJf0n4L/BRlnsb9pL/GuDG6FqaH+PwM= -github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329/go.mod h1:Alz8LEClvR7xKsrq3qzoc4N0guvVNSS8KmSChGYr9hs= -github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= -github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= +github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA= +github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU= +github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g= +github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= -github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= -github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= +github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4= +github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= @@ -466,8 +466,8 @@ go.etcd.io/etcd/client/v2 v2.305.12/go.mod h1:aQ/yhsxMu+Oht1FOupSr60oBvcS9cKXHrz go.etcd.io/etcd/raft/v3 v3.5.12 h1:7r22RufdDsq2z3STjoR7Msz6fYH8tmbkdheGfwJNRmU= go.etcd.io/etcd/raft/v3 v3.5.12/go.mod h1:ERQuZVe79PI6vcC3DlKBukDCLja/L7YMu29B74Iwj4U= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opentelemetry.io/contrib/detectors/gcp v1.38.0 h1:ZoYbqX7OaA/TAikspPl3ozPI6iY6LiIY9I8cUfm+pJs= -go.opentelemetry.io/contrib/detectors/gcp v1.38.0/go.mod h1:SU+iU7nu5ud4oCb3LQOhIZ3nRLj6FNVrKgtflbaf2ts= +go.opentelemetry.io/contrib/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE= +go.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= diff --git a/pkg/go.mod b/pkg/go.mod index b71ca4f320ff..7b9c3629e972 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -1,8 +1,8 @@ module go.etcd.io/etcd/pkg/v3 -go 1.25.0 +go 1.26 -toolchain go1.25.7 +toolchain go1.26.0 require ( github.com/creack/pty v1.1.18 @@ -13,8 +13,8 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.40.0 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.40.0 - google.golang.org/grpc v1.78.0 + golang.org/x/sys v0.41.0 + google.golang.org/grpc v1.79.1 ) require ( @@ -26,8 +26,8 @@ require ( go.opentelemetry.io/otel v1.40.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 336c0cc039bc..ee788127ea8f 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -66,8 +66,8 @@ gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= +google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index da63fbe07a67..3da7a08aa0a5 100644 --- a/server/go.mod +++ b/server/go.mod @@ -9,7 +9,7 @@ require ( github.com/coreos/go-systemd/v22 v22.7.0 github.com/dustin/go-humanize v1.0.1 github.com/gogo/protobuf v1.3.2 - github.com/golang-jwt/jwt/v5 v5.3.0 + github.com/golang-jwt/jwt/v5 v5.3.1 github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 @@ -39,7 +39,7 @@ require ( golang.org/x/net v0.49.0 golang.org/x/time v0.14.0 google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 - google.golang.org/grpc v1.78.0 + google.golang.org/grpc v1.79.1 google.golang.org/protobuf v1.36.11 gopkg.in/natefinch/lumberjack.v2 v2.2.1 k8s.io/utils v0.0.0-20260108192941-914a6e750570 diff --git a/server/go.sum b/server/go.sum index 482a7d41e11f..20aadaaa0108 100644 --- a/server/go.sum +++ b/server/go.sum @@ -22,8 +22,8 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= -github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= +github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -162,8 +162,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= +google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index 3801e240f173..6e6ae88c65d6 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -19,7 +19,7 @@ require ( github.com/anishathalye/porcupine v1.0.2 github.com/antithesishq/antithesis-sdk-go v0.4.3 github.com/coreos/go-semver v0.3.1 - github.com/golang-jwt/jwt/v5 v5.3.0 + github.com/golang-jwt/jwt/v5 v5.3.1 github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 @@ -49,7 +49,7 @@ require ( golang.org/x/crypto v0.47.0 golang.org/x/sync v0.19.0 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.78.0 + google.golang.org/grpc v1.79.1 google.golang.org/protobuf v1.36.11 ) diff --git a/tests/go.sum b/tests/go.sum index 1bba926e2e67..f2d724d41d43 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -42,8 +42,8 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= -github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= +github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -199,8 +199,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= +google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 3838d1cb0afa..ddfc3ede4dcb 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -249,7 +249,7 @@ require ( golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect - google.golang.org/grpc v1.78.0 // indirect + google.golang.org/grpc v1.79.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect mvdan.cc/gofumpt v0.9.2 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 9530c82c4888..40ede575527f 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -715,8 +715,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= +google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 h1:F29+wU6Ee6qgu9TddPgooOdaqsxTMunOoj8KA5yuS5A= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1/go.mod h1:5KF+wpkbTSbGcR9zteSqZV6fqFOWBl4Yde8En8MryZA= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index e393c0a76fe5..824e5990dbf8 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -21,5 +21,5 @@ require ( golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect - google.golang.org/grpc v1.78.0 // indirect + google.golang.org/grpc v1.79.1 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index db97af03de24..84eb9beb0092 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1895,8 +1895,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= +google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 99d3167ed9659b2a2fe6633c6932257b7a6e87bd Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 21 Feb 2026 00:05:09 +0800 Subject: [PATCH 0828/1068] dependency: bump google.golang.org/grpc/cmd/protoc-gen-go-grpc from 1.5.1 to 1.6.1 Reference: - #21316 Signed-off-by: Chun-Hung Tseng --- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index ddfc3ede4dcb..12ab40ae21bb 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -17,7 +17,7 @@ require ( go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee golang.org/x/tools v0.42.0 - google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 + google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1 google.golang.org/protobuf v1.36.11 gotest.tools/gotestsum v1.13.0 gotest.tools/v3 v3.5.2 diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 40ede575527f..dfb4556e7fbf 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -717,8 +717,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 h1:F29+wU6Ee6qgu9TddPgooOdaqsxTMunOoj8KA5yuS5A= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1/go.mod h1:5KF+wpkbTSbGcR9zteSqZV6fqFOWBl4Yde8En8MryZA= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1 h1:/WILD1UcXj/ujCxgoL/DvRgt2CP3txG8+FwkUbb9110= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1/go.mod h1:YNKnb2OAApgYn2oYY47Rn7alMr1zWjb2U8Q0aoGWiNc= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= From e00a3fcd5622e040522f2f199d768b470b76a473 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 21 Feb 2026 00:07:22 +0800 Subject: [PATCH 0829/1068] dependency: bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.39.0 to 1.40.0 Reference: - #21322 Signed-off-by: Chun-Hung Tseng --- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- server/go.mod | 4 ++-- server/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index ce2904a8603c..da7317a14a96 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -72,8 +72,8 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 // indirect go.opentelemetry.io/otel v1.40.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.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/metric v1.40.0 // indirect go.opentelemetry.io/otel/sdk v1.40.0 // indirect go.opentelemetry.io/otel/trace v1.40.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 456700d1b98c..092af599b41a 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -116,10 +116,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= +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= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= diff --git a/go.mod b/go.mod index 6388941119b6..69cbe759490f 100644 --- a/go.mod +++ b/go.mod @@ -86,8 +86,8 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 // indirect go.opentelemetry.io/otel v1.40.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.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/metric v1.40.0 // indirect go.opentelemetry.io/otel/sdk v1.40.0 // indirect go.opentelemetry.io/otel/trace v1.40.0 // indirect diff --git a/go.sum b/go.sum index e0004d182812..f2b4d1de20ad 100644 --- a/go.sum +++ b/go.sum @@ -124,10 +124,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= +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= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= diff --git a/server/go.mod b/server/go.mod index 3da7a08aa0a5..f8de06146693 100644 --- a/server/go.mod +++ b/server/go.mod @@ -31,7 +31,7 @@ require ( go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 go.opentelemetry.io/otel v1.40.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 go.opentelemetry.io/otel/sdk v1.40.0 go.opentelemetry.io/otel/trace v1.40.0 go.uber.org/zap v1.27.1 @@ -64,7 +64,7 @@ require ( github.com/sirupsen/logrus v1.9.4 // indirect github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect go.opentelemetry.io/otel/metric v1.40.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/server/go.sum b/server/go.sum index 20aadaaa0108..5b5592438947 100644 --- a/server/go.sum +++ b/server/go.sum @@ -94,10 +94,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= +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= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= diff --git a/tests/go.mod b/tests/go.mod index 6e6ae88c65d6..8fe7bdf3d840 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -91,8 +91,8 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.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/metric v1.40.0 // indirect go.opentelemetry.io/otel/trace v1.40.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index f2d724d41d43..b3bfd0e5adb6 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -130,10 +130,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c= +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= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= From 0c63d2ebad954142186c5e8c389db2ce5b371061 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 21 Feb 2026 00:08:02 +0800 Subject: [PATCH 0830/1068] dependency: bump go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc from 0.64.0 to 0.65.0 Reference: - #21320 Signed-off-by: Chun-Hung Tseng --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index da7317a14a96..0345efc9af84 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -70,7 +70,7 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect go.opentelemetry.io/otel 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 diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 092af599b41a..b09a098832db 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -112,8 +112,8 @@ go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51L go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= diff --git a/go.mod b/go.mod index 69cbe759490f..4249ac2874a5 100644 --- a/go.mod +++ b/go.mod @@ -84,7 +84,7 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect go.opentelemetry.io/otel 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 diff --git a/go.sum b/go.sum index f2b4d1de20ad..9b555364ae13 100644 --- a/go.sum +++ b/go.sum @@ -120,8 +120,8 @@ go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51L go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= diff --git a/server/go.mod b/server/go.mod index f8de06146693..ab8aca967083 100644 --- a/server/go.mod +++ b/server/go.mod @@ -29,7 +29,7 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 go.opentelemetry.io/otel v1.40.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 go.opentelemetry.io/otel/sdk v1.40.0 diff --git a/server/go.sum b/server/go.sum index 5b5592438947..dde9baeb85d4 100644 --- a/server/go.sum +++ b/server/go.sum @@ -90,8 +90,8 @@ go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51L go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= diff --git a/tests/go.mod b/tests/go.mod index 8fe7bdf3d840..4fc32011ebe7 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -41,7 +41,7 @@ require ( go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 go.opentelemetry.io/otel v1.40.0 go.opentelemetry.io/otel/sdk v1.40.0 go.opentelemetry.io/proto/otlp v1.9.0 diff --git a/tests/go.sum b/tests/go.sum index b3bfd0e5adb6..6abd81b6dcb5 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -126,8 +126,8 @@ go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51L go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0 h1:RN3ifU8y4prNWeEnQp2kRRHz8UwonAEYZl8tUzHEXAk= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0/go.mod h1:habDz3tEWiFANTo6oUE99EmaFUrCNYAAg3wiVmusm70= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= From d8f2a0e99fa57003bf82a0eaceaca0ead12380a3 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 21 Feb 2026 00:09:35 +0800 Subject: [PATCH 0831/1068] dependency: bump honnef.co/go/tools from 0.6.1 to 0.7.0 Reference: - #21317 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 16 ++++++++-------- api/go.sum | 12 ++++++------ cache/go.mod | 16 ++++++++-------- cache/go.sum | 12 ++++++------ client/v3/go.mod | 16 ++++++++-------- client/v3/go.sum | 12 ++++++------ etcdctl/go.mod | 16 ++++++++-------- etcdctl/go.sum | 12 ++++++------ etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 12 ++++++------ go.mod | 6 +++--- go.sum | 12 ++++++------ go.work.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 18 +++++++++--------- server/go.sum | 12 ++++++------ tests/go.mod | 20 ++++++++++---------- tests/go.sum | 12 ++++++------ tools/mod/go.mod | 8 ++++---- tools/mod/go.sum | 16 ++++++++-------- tools/testgrid-analysis/go.mod | 12 ++++++------ tools/testgrid-analysis/go.sum | 4 ++-- 23 files changed, 130 insertions(+), 130 deletions(-) diff --git a/api/go.mod b/api/go.mod index 181a515a3840..be264a6f701f 100644 --- a/api/go.mod +++ b/api/go.mod @@ -1,15 +1,15 @@ module go.etcd.io/etcd/api/v3 -go 1.25.0 +go 1.26 -toolchain go1.25.7 +toolchain go1.26.0 require ( github.com/coreos/go-semver v0.3.1 github.com/golang/protobuf v1.5.4 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 github.com/stretchr/testify v1.11.1 - google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 + google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 google.golang.org/grpc v1.79.1 google.golang.org/protobuf v1.36.11 ) @@ -20,9 +20,9 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.40.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 2d89d2274ea6..8465ad1e2d6f 100644 --- a/api/go.sum +++ b/api/go.sum @@ -14,8 +14,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -46,10 +46,10 @@ golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/cache/go.mod b/cache/go.mod index 22715e3c164d..1929c071efa8 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -1,8 +1,8 @@ module go.etcd.io/etcd/cache/v3 -go 1.25.0 +go 1.26 -toolchain go1.25.7 +toolchain go1.26.0 require ( github.com/google/go-cmp v0.7.0 @@ -17,16 +17,16 @@ require ( github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/grpc v1.79.1 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/cache/go.sum b/cache/go.sum index f9ae3c3d9157..e51b84fda31f 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -22,8 +22,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -72,10 +72,10 @@ golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/client/v3/go.mod b/client/v3/go.mod index 9cccb4119a70..39c9ceadd687 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -1,8 +1,8 @@ module go.etcd.io/etcd/client/v3 -go 1.25.0 +go 1.26 -toolchain go1.25.7 +toolchain go1.26.0 require ( github.com/coreos/go-semver v0.3.1 @@ -24,7 +24,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect @@ -35,11 +35,11 @@ require ( go.opentelemetry.io/otel/trace v1.40.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 909a00c2b7f4..bbb3cae7c806 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -24,8 +24,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -80,10 +80,10 @@ golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 8f72e440818e..f1a9ec27cfcf 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -1,8 +1,8 @@ module go.etcd.io/etcd/etcdctl/v3 -go 1.25.0 +go 1.26 -toolchain go1.25.7 +toolchain go1.26.0 require ( github.com/bgentry/speakeasy v0.2.0 @@ -31,7 +31,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -41,11 +41,11 @@ require ( github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index e1dcaa0f3463..d17016b5552c 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -39,8 +39,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -115,10 +115,10 @@ golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 0345efc9af84..7e108e8ee817 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -49,7 +49,7 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -85,8 +85,8 @@ require ( golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect golang.org/x/time v0.14.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/grpc v1.79.1 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index b09a098832db..e93c932c56b9 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -44,8 +44,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -181,10 +181,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/go.mod b/go.mod index 4249ac2874a5..06815c2eb356 100644 --- a/go.mod +++ b/go.mod @@ -61,7 +61,7 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -100,8 +100,8 @@ require ( golang.org/x/sync v0.19.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/utils v0.0.0-20260108192941-914a6e750570 // indirect diff --git a/go.sum b/go.sum index 9b555364ae13..7c3e6158ebda 100644 --- a/go.sum +++ b/go.sum @@ -50,8 +50,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -193,10 +193,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/go.work.sum b/go.work.sum index a0dea97f614c..3a425e8e48c1 100644 --- a/go.work.sum +++ b/go.work.sum @@ -478,8 +478,8 @@ golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhp golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw= -golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= +golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= diff --git a/pkg/go.mod b/pkg/go.mod index 7b9c3629e972..4523539f5f35 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -28,7 +28,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.50.0 // indirect golang.org/x/text v0.34.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index ee788127ea8f..e8323b484d18 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -64,8 +64,8 @@ golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= -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 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/server/go.mod b/server/go.mod index ab8aca967083..3391232b43bf 100644 --- a/server/go.mod +++ b/server/go.mod @@ -1,8 +1,8 @@ module go.etcd.io/etcd/server/v3 -go 1.25.0 +go 1.26 -toolchain go1.25.7 +toolchain go1.26.0 require ( github.com/coreos/go-semver v0.3.1 @@ -14,7 +14,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 @@ -35,10 +35,10 @@ require ( go.opentelemetry.io/otel/sdk v1.40.0 go.opentelemetry.io/otel/trace v1.40.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.47.0 - golang.org/x/net v0.49.0 + golang.org/x/crypto v0.48.0 + golang.org/x/net v0.50.0 golang.org/x/time v0.14.0 - google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 + google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 google.golang.org/grpc v1.79.1 google.golang.org/protobuf v1.36.11 gopkg.in/natefinch/lumberjack.v2 v2.2.1 @@ -69,9 +69,9 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index dde9baeb85d4..bdb62adf8318 100644 --- a/server/go.sum +++ b/server/go.sum @@ -36,8 +36,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -158,10 +158,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/tests/go.mod b/tests/go.mod index 4fc32011ebe7..f5034a90c6b0 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -1,8 +1,8 @@ module go.etcd.io/etcd/tests/v3 -go 1.25.0 +go 1.26 -toolchain go1.25.7 +toolchain go1.26.0 replace ( go.etcd.io/etcd/api/v3 => ../api @@ -16,14 +16,14 @@ replace ( ) require ( - github.com/anishathalye/porcupine v1.0.2 + github.com/anishathalye/porcupine v1.1.0 github.com/antithesishq/antithesis-sdk-go v0.4.3 github.com/coreos/go-semver v0.3.1 github.com/golang-jwt/jwt/v5 v5.3.1 github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 github.com/olekukonko/tablewriter v1.1.3 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 @@ -46,7 +46,7 @@ require ( go.opentelemetry.io/otel/sdk v1.40.0 go.opentelemetry.io/proto/otlp v1.9.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.47.0 + golang.org/x/crypto v0.48.0 golang.org/x/sync v0.19.0 golang.org/x/time v0.14.0 google.golang.org/grpc v1.79.1 @@ -97,11 +97,11 @@ require ( go.opentelemetry.io/otel/trace v1.40.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/utils v0.0.0-20260108192941-914a6e750570 // indirect diff --git a/tests/go.sum b/tests/go.sum index 6abd81b6dcb5..d71434183b1b 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -56,8 +56,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -195,10 +195,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 12ab40ae21bb..b2ee5d7795a7 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -11,7 +11,7 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint/v2 v2.9.0 github.com/google/yamlfmt v0.21.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 github.com/ryancurrah/gomodguard v1.4.1 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 @@ -21,7 +21,7 @@ require ( google.golang.org/protobuf v1.36.11 gotest.tools/gotestsum v1.13.0 gotest.tools/v3 v3.5.2 - honnef.co/go/tools v0.6.1 + honnef.co/go/tools v0.7.0 ) require ( @@ -247,8 +247,8 @@ require ( golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 // indirect golang.org/x/term v0.40.0 // indirect golang.org/x/text v0.34.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/grpc v1.79.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index dfb4556e7fbf..81d446d92e52 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -252,8 +252,8 @@ github.com/gostaticanalysis/nilerr v0.1.2/go.mod h1:A19UHhoY3y8ahoL7YKz6sdjDtduw github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= @@ -711,10 +711,10 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= +google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1 h1:/WILD1UcXj/ujCxgoL/DvRgt2CP3txG8+FwkUbb9110= @@ -738,8 +738,8 @@ gotest.tools/gotestsum v1.13.0 h1:+Lh454O9mu9AMG1APV4o0y7oDYKyik/3kBOiCqiEpRo= gotest.tools/gotestsum v1.13.0/go.mod h1:7f0NS5hFb0dWr4NtcsAsF0y1kzjEFfAil0HiBQJE03Q= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= -honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= -honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= +honnef.co/go/tools v0.7.0 h1:w6WUp1VbkqPEgLz4rkBzH/CSU6HkoqNLp6GstyTx3lU= +honnef.co/go/tools v0.7.0/go.mod h1:pm29oPxeP3P82ISxZDgIYeOaf9ta6Pi0EWvCFoLG2vc= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= mvdan.cc/gofumpt v0.9.2 h1:zsEMWL8SVKGHNztrx6uZrXdp7AX8r421Vvp23sz7ik4= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 824e5990dbf8..985b2034adc8 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -1,8 +1,8 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 -go 1.25.0 +go 1.26 -toolchain go1.25.7 +toolchain go1.26.0 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 @@ -17,9 +17,9 @@ require ( github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/otel v1.40.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/grpc v1.79.1 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 84eb9beb0092..6b89343f16cb 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1848,8 +1848,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= -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 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= From 7b4dda823bf1dd8719ab20fd4068bb3c93d8a481 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 21 Feb 2026 10:47:32 +0800 Subject: [PATCH 0832/1068] Run ./scripts/genproto.sh Signed-off-by: Chun-Hung Tseng --- api/etcdserverpb/rpc_grpc.pb.go | 96 +++++++++---------- .../v3electionpb/v3election_grpc.pb.go | 14 +-- .../api/v3lock/v3lockpb/v3lock_grpc.pb.go | 8 +- 3 files changed, 59 insertions(+), 59 deletions(-) diff --git a/api/etcdserverpb/rpc_grpc.pb.go b/api/etcdserverpb/rpc_grpc.pb.go index 68e0b4fb41a7..0ae1548b97cb 100644 --- a/api/etcdserverpb/rpc_grpc.pb.go +++ b/api/etcdserverpb/rpc_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.5.1 +// - protoc-gen-go-grpc v1.6.1 // - protoc v3.20.3 // source: rpc.proto @@ -144,19 +144,19 @@ type KVServer interface { type UnimplementedKVServer struct{} func (UnimplementedKVServer) Range(context.Context, *RangeRequest) (*RangeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Range not implemented") + return nil, status.Error(codes.Unimplemented, "method Range not implemented") } func (UnimplementedKVServer) Put(context.Context, *PutRequest) (*PutResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Put not implemented") + return nil, status.Error(codes.Unimplemented, "method Put not implemented") } func (UnimplementedKVServer) DeleteRange(context.Context, *DeleteRangeRequest) (*DeleteRangeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteRange not implemented") + return nil, status.Error(codes.Unimplemented, "method DeleteRange not implemented") } func (UnimplementedKVServer) Txn(context.Context, *TxnRequest) (*TxnResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Txn not implemented") + return nil, status.Error(codes.Unimplemented, "method Txn not implemented") } func (UnimplementedKVServer) Compact(context.Context, *CompactionRequest) (*CompactionResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Compact not implemented") + return nil, status.Error(codes.Unimplemented, "method Compact not implemented") } func (UnimplementedKVServer) mustEmbedUnimplementedKVServer() {} func (UnimplementedKVServer) testEmbeddedByValue() {} @@ -169,7 +169,7 @@ type UnsafeKVServer interface { } func RegisterKVServer(s grpc.ServiceRegistrar, srv KVServer) { - // If the following call pancis, it indicates UnimplementedKVServer was + // If the following call panics, it indicates UnimplementedKVServer was // embedded by pointer and is nil. This will cause panics if an // unimplemented method is ever invoked, so we test this at initialization // time to prevent it from happening at runtime later due to I/O. @@ -359,7 +359,7 @@ type WatchServer interface { type UnimplementedWatchServer struct{} func (UnimplementedWatchServer) Watch(grpc.BidiStreamingServer[WatchRequest, WatchResponse]) error { - return status.Errorf(codes.Unimplemented, "method Watch not implemented") + return status.Error(codes.Unimplemented, "method Watch not implemented") } func (UnimplementedWatchServer) mustEmbedUnimplementedWatchServer() {} func (UnimplementedWatchServer) testEmbeddedByValue() {} @@ -372,7 +372,7 @@ type UnsafeWatchServer interface { } func RegisterWatchServer(s grpc.ServiceRegistrar, srv WatchServer) { - // If the following call pancis, it indicates UnimplementedWatchServer was + // If the following call panics, it indicates UnimplementedWatchServer was // embedded by pointer and is nil. This will cause panics if an // unimplemented method is ever invoked, so we test this at initialization // time to prevent it from happening at runtime later due to I/O. @@ -523,19 +523,19 @@ type LeaseServer interface { type UnimplementedLeaseServer struct{} func (UnimplementedLeaseServer) LeaseGrant(context.Context, *LeaseGrantRequest) (*LeaseGrantResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method LeaseGrant not implemented") + return nil, status.Error(codes.Unimplemented, "method LeaseGrant not implemented") } func (UnimplementedLeaseServer) LeaseRevoke(context.Context, *LeaseRevokeRequest) (*LeaseRevokeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method LeaseRevoke not implemented") + return nil, status.Error(codes.Unimplemented, "method LeaseRevoke not implemented") } func (UnimplementedLeaseServer) LeaseKeepAlive(grpc.BidiStreamingServer[LeaseKeepAliveRequest, LeaseKeepAliveResponse]) error { - return status.Errorf(codes.Unimplemented, "method LeaseKeepAlive not implemented") + return status.Error(codes.Unimplemented, "method LeaseKeepAlive not implemented") } func (UnimplementedLeaseServer) LeaseTimeToLive(context.Context, *LeaseTimeToLiveRequest) (*LeaseTimeToLiveResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method LeaseTimeToLive not implemented") + return nil, status.Error(codes.Unimplemented, "method LeaseTimeToLive not implemented") } func (UnimplementedLeaseServer) LeaseLeases(context.Context, *LeaseLeasesRequest) (*LeaseLeasesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method LeaseLeases not implemented") + return nil, status.Error(codes.Unimplemented, "method LeaseLeases not implemented") } func (UnimplementedLeaseServer) mustEmbedUnimplementedLeaseServer() {} func (UnimplementedLeaseServer) testEmbeddedByValue() {} @@ -548,7 +548,7 @@ type UnsafeLeaseServer interface { } func RegisterLeaseServer(s grpc.ServiceRegistrar, srv LeaseServer) { - // If the following call pancis, it indicates UnimplementedLeaseServer was + // If the following call panics, it indicates UnimplementedLeaseServer was // embedded by pointer and is nil. This will cause panics if an // unimplemented method is ever invoked, so we test this at initialization // time to prevent it from happening at runtime later due to I/O. @@ -779,19 +779,19 @@ type ClusterServer interface { type UnimplementedClusterServer struct{} func (UnimplementedClusterServer) MemberAdd(context.Context, *MemberAddRequest) (*MemberAddResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MemberAdd not implemented") + return nil, status.Error(codes.Unimplemented, "method MemberAdd not implemented") } func (UnimplementedClusterServer) MemberRemove(context.Context, *MemberRemoveRequest) (*MemberRemoveResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MemberRemove not implemented") + return nil, status.Error(codes.Unimplemented, "method MemberRemove not implemented") } func (UnimplementedClusterServer) MemberUpdate(context.Context, *MemberUpdateRequest) (*MemberUpdateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MemberUpdate not implemented") + return nil, status.Error(codes.Unimplemented, "method MemberUpdate not implemented") } func (UnimplementedClusterServer) MemberList(context.Context, *MemberListRequest) (*MemberListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MemberList not implemented") + return nil, status.Error(codes.Unimplemented, "method MemberList not implemented") } func (UnimplementedClusterServer) MemberPromote(context.Context, *MemberPromoteRequest) (*MemberPromoteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MemberPromote not implemented") + return nil, status.Error(codes.Unimplemented, "method MemberPromote not implemented") } func (UnimplementedClusterServer) mustEmbedUnimplementedClusterServer() {} func (UnimplementedClusterServer) testEmbeddedByValue() {} @@ -804,7 +804,7 @@ type UnsafeClusterServer interface { } func RegisterClusterServer(s grpc.ServiceRegistrar, srv ClusterServer) { - // If the following call pancis, it indicates UnimplementedClusterServer was + // If the following call panics, it indicates UnimplementedClusterServer was // embedded by pointer and is nil. This will cause panics if an // unimplemented method is ever invoked, so we test this at initialization // time to prevent it from happening at runtime later due to I/O. @@ -1113,28 +1113,28 @@ type MaintenanceServer interface { type UnimplementedMaintenanceServer struct{} func (UnimplementedMaintenanceServer) Alarm(context.Context, *AlarmRequest) (*AlarmResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Alarm not implemented") + return nil, status.Error(codes.Unimplemented, "method Alarm not implemented") } func (UnimplementedMaintenanceServer) Status(context.Context, *StatusRequest) (*StatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Status not implemented") + return nil, status.Error(codes.Unimplemented, "method Status not implemented") } func (UnimplementedMaintenanceServer) Defragment(context.Context, *DefragmentRequest) (*DefragmentResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Defragment not implemented") + return nil, status.Error(codes.Unimplemented, "method Defragment not implemented") } func (UnimplementedMaintenanceServer) Hash(context.Context, *HashRequest) (*HashResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Hash not implemented") + return nil, status.Error(codes.Unimplemented, "method Hash not implemented") } func (UnimplementedMaintenanceServer) HashKV(context.Context, *HashKVRequest) (*HashKVResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method HashKV not implemented") + return nil, status.Error(codes.Unimplemented, "method HashKV not implemented") } func (UnimplementedMaintenanceServer) Snapshot(*SnapshotRequest, grpc.ServerStreamingServer[SnapshotResponse]) error { - return status.Errorf(codes.Unimplemented, "method Snapshot not implemented") + return status.Error(codes.Unimplemented, "method Snapshot not implemented") } func (UnimplementedMaintenanceServer) MoveLeader(context.Context, *MoveLeaderRequest) (*MoveLeaderResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MoveLeader not implemented") + return nil, status.Error(codes.Unimplemented, "method MoveLeader not implemented") } func (UnimplementedMaintenanceServer) Downgrade(context.Context, *DowngradeRequest) (*DowngradeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Downgrade not implemented") + return nil, status.Error(codes.Unimplemented, "method Downgrade not implemented") } func (UnimplementedMaintenanceServer) mustEmbedUnimplementedMaintenanceServer() {} func (UnimplementedMaintenanceServer) testEmbeddedByValue() {} @@ -1147,7 +1147,7 @@ type UnsafeMaintenanceServer interface { } func RegisterMaintenanceServer(s grpc.ServiceRegistrar, srv MaintenanceServer) { - // If the following call pancis, it indicates UnimplementedMaintenanceServer was + // If the following call panics, it indicates UnimplementedMaintenanceServer was // embedded by pointer and is nil. This will cause panics if an // unimplemented method is ever invoked, so we test this at initialization // time to prevent it from happening at runtime later due to I/O. @@ -1627,55 +1627,55 @@ type AuthServer interface { type UnimplementedAuthServer struct{} func (UnimplementedAuthServer) AuthEnable(context.Context, *AuthEnableRequest) (*AuthEnableResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AuthEnable not implemented") + return nil, status.Error(codes.Unimplemented, "method AuthEnable not implemented") } func (UnimplementedAuthServer) AuthDisable(context.Context, *AuthDisableRequest) (*AuthDisableResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AuthDisable not implemented") + return nil, status.Error(codes.Unimplemented, "method AuthDisable not implemented") } func (UnimplementedAuthServer) AuthStatus(context.Context, *AuthStatusRequest) (*AuthStatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AuthStatus not implemented") + return nil, status.Error(codes.Unimplemented, "method AuthStatus not implemented") } func (UnimplementedAuthServer) Authenticate(context.Context, *AuthenticateRequest) (*AuthenticateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Authenticate not implemented") + return nil, status.Error(codes.Unimplemented, "method Authenticate not implemented") } func (UnimplementedAuthServer) UserAdd(context.Context, *AuthUserAddRequest) (*AuthUserAddResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserAdd not implemented") + return nil, status.Error(codes.Unimplemented, "method UserAdd not implemented") } func (UnimplementedAuthServer) UserGet(context.Context, *AuthUserGetRequest) (*AuthUserGetResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserGet not implemented") + return nil, status.Error(codes.Unimplemented, "method UserGet not implemented") } func (UnimplementedAuthServer) UserList(context.Context, *AuthUserListRequest) (*AuthUserListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserList not implemented") + return nil, status.Error(codes.Unimplemented, "method UserList not implemented") } func (UnimplementedAuthServer) UserDelete(context.Context, *AuthUserDeleteRequest) (*AuthUserDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserDelete not implemented") + return nil, status.Error(codes.Unimplemented, "method UserDelete not implemented") } func (UnimplementedAuthServer) UserChangePassword(context.Context, *AuthUserChangePasswordRequest) (*AuthUserChangePasswordResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserChangePassword not implemented") + return nil, status.Error(codes.Unimplemented, "method UserChangePassword not implemented") } func (UnimplementedAuthServer) UserGrantRole(context.Context, *AuthUserGrantRoleRequest) (*AuthUserGrantRoleResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserGrantRole not implemented") + return nil, status.Error(codes.Unimplemented, "method UserGrantRole not implemented") } func (UnimplementedAuthServer) UserRevokeRole(context.Context, *AuthUserRevokeRoleRequest) (*AuthUserRevokeRoleResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserRevokeRole not implemented") + return nil, status.Error(codes.Unimplemented, "method UserRevokeRole not implemented") } func (UnimplementedAuthServer) RoleAdd(context.Context, *AuthRoleAddRequest) (*AuthRoleAddResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RoleAdd not implemented") + return nil, status.Error(codes.Unimplemented, "method RoleAdd not implemented") } func (UnimplementedAuthServer) RoleGet(context.Context, *AuthRoleGetRequest) (*AuthRoleGetResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RoleGet not implemented") + return nil, status.Error(codes.Unimplemented, "method RoleGet not implemented") } func (UnimplementedAuthServer) RoleList(context.Context, *AuthRoleListRequest) (*AuthRoleListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RoleList not implemented") + return nil, status.Error(codes.Unimplemented, "method RoleList not implemented") } func (UnimplementedAuthServer) RoleDelete(context.Context, *AuthRoleDeleteRequest) (*AuthRoleDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RoleDelete not implemented") + return nil, status.Error(codes.Unimplemented, "method RoleDelete not implemented") } func (UnimplementedAuthServer) RoleGrantPermission(context.Context, *AuthRoleGrantPermissionRequest) (*AuthRoleGrantPermissionResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RoleGrantPermission not implemented") + return nil, status.Error(codes.Unimplemented, "method RoleGrantPermission not implemented") } func (UnimplementedAuthServer) RoleRevokePermission(context.Context, *AuthRoleRevokePermissionRequest) (*AuthRoleRevokePermissionResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RoleRevokePermission not implemented") + return nil, status.Error(codes.Unimplemented, "method RoleRevokePermission not implemented") } func (UnimplementedAuthServer) mustEmbedUnimplementedAuthServer() {} func (UnimplementedAuthServer) testEmbeddedByValue() {} @@ -1688,7 +1688,7 @@ type UnsafeAuthServer interface { } func RegisterAuthServer(s grpc.ServiceRegistrar, srv AuthServer) { - // If the following call pancis, it indicates UnimplementedAuthServer was + // If the following call panics, it indicates UnimplementedAuthServer was // embedded by pointer and is nil. This will cause panics if an // unimplemented method is ever invoked, so we test this at initialization // time to prevent it from happening at runtime later due to I/O. diff --git a/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go b/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go index 03ffabb140d8..655a2cac44dd 100644 --- a/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go +++ b/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.5.1 +// - protoc-gen-go-grpc v1.6.1 // - protoc v3.20.3 // source: v3election.proto @@ -149,19 +149,19 @@ type ElectionServer interface { type UnimplementedElectionServer struct{} func (UnimplementedElectionServer) Campaign(context.Context, *CampaignRequest) (*CampaignResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Campaign not implemented") + return nil, status.Error(codes.Unimplemented, "method Campaign not implemented") } func (UnimplementedElectionServer) Proclaim(context.Context, *ProclaimRequest) (*ProclaimResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Proclaim not implemented") + return nil, status.Error(codes.Unimplemented, "method Proclaim not implemented") } func (UnimplementedElectionServer) Leader(context.Context, *LeaderRequest) (*LeaderResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Leader not implemented") + return nil, status.Error(codes.Unimplemented, "method Leader not implemented") } func (UnimplementedElectionServer) Observe(*LeaderRequest, grpc.ServerStreamingServer[LeaderResponse]) error { - return status.Errorf(codes.Unimplemented, "method Observe not implemented") + return status.Error(codes.Unimplemented, "method Observe not implemented") } func (UnimplementedElectionServer) Resign(context.Context, *ResignRequest) (*ResignResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Resign not implemented") + return nil, status.Error(codes.Unimplemented, "method Resign not implemented") } func (UnimplementedElectionServer) mustEmbedUnimplementedElectionServer() {} func (UnimplementedElectionServer) testEmbeddedByValue() {} @@ -174,7 +174,7 @@ type UnsafeElectionServer interface { } func RegisterElectionServer(s grpc.ServiceRegistrar, srv ElectionServer) { - // If the following call pancis, it indicates UnimplementedElectionServer was + // If the following call panics, it indicates UnimplementedElectionServer was // embedded by pointer and is nil. This will cause panics if an // unimplemented method is ever invoked, so we test this at initialization // time to prevent it from happening at runtime later due to I/O. diff --git a/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go b/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go index 767e8b9b7f8d..38b789577bf9 100644 --- a/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go +++ b/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.5.1 +// - protoc-gen-go-grpc v1.6.1 // - protoc v3.20.3 // source: v3lock.proto @@ -99,10 +99,10 @@ type LockServer interface { type UnimplementedLockServer struct{} func (UnimplementedLockServer) Lock(context.Context, *LockRequest) (*LockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Lock not implemented") + return nil, status.Error(codes.Unimplemented, "method Lock not implemented") } func (UnimplementedLockServer) Unlock(context.Context, *UnlockRequest) (*UnlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Unlock not implemented") + return nil, status.Error(codes.Unimplemented, "method Unlock not implemented") } func (UnimplementedLockServer) mustEmbedUnimplementedLockServer() {} func (UnimplementedLockServer) testEmbeddedByValue() {} @@ -115,7 +115,7 @@ type UnsafeLockServer interface { } func RegisterLockServer(s grpc.ServiceRegistrar, srv LockServer) { - // If the following call pancis, it indicates UnimplementedLockServer was + // If the following call panics, it indicates UnimplementedLockServer was // embedded by pointer and is nil. This will cause panics if an // unimplemented method is ever invoked, so we test this at initialization // time to prevent it from happening at runtime later due to I/O. From 789fe4396a2b27a1e0966bc4fbcb2dd61d418200 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Tue, 17 Feb 2026 22:43:01 -0800 Subject: [PATCH 0833/1068] Fix TestEmbedEtcdStopDuringBootstrapping flake Remove the unstable global logger in the BeforeTests, and move it to `TestMain`. This removes the race condition, and therefore the flake. Signed-off-by: Ivan Valdes --- tests/framework/integration/testing.go | 3 --- tests/integration/main_test.go | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/framework/integration/testing.go b/tests/framework/integration/testing.go index 35d9a0d83dcf..7a6fde90ae1e 100644 --- a/tests/framework/integration/testing.go +++ b/tests/framework/integration/testing.go @@ -20,9 +20,7 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" - "go.uber.org/zap/zapgrpc" "go.uber.org/zap/zaptest" - "google.golang.org/grpc/grpclog" "go.etcd.io/etcd/client/pkg/v3/testutil" "go.etcd.io/etcd/client/pkg/v3/verify" @@ -124,7 +122,6 @@ func BeforeTest(t testutil.TB, opts ...TestOption) { revertFunc() }) - grpclog.SetLoggerV2(zapgrpc.NewLogger(zaptest.NewLogger(t).Named("grpc"))) insideTestContext = true os.Chdir(t.TempDir()) diff --git a/tests/integration/main_test.go b/tests/integration/main_test.go index 748da914dcfc..8d9922dc6919 100644 --- a/tests/integration/main_test.go +++ b/tests/integration/main_test.go @@ -15,11 +15,15 @@ package integration import ( + "os" "testing" + "google.golang.org/grpc/grpclog" + "go.etcd.io/etcd/client/pkg/v3/testutil" ) func TestMain(m *testing.M) { testutil.MustTestMainWithLeakDetection(m) + grpclog.SetLoggerV2(grpclog.NewLoggerV2(os.Stderr, os.Stderr, os.Stderr)) } From e8f6a6bc1585a3a5ced79bce0f7511bfafb0eb2b Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 14 Feb 2026 09:32:01 +0100 Subject: [PATCH 0834/1068] robustness: Fix LeaseGrantReponse typo to LeaseGrantResponse Signed-off-by: Chun-Hung Tseng --- tests/robustness/model/deterministic.go | 4 ++-- tests/robustness/model/history.go | 2 +- tests/robustness/model/types.go | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/robustness/model/deterministic.go b/tests/robustness/model/deterministic.go index 6142b1a0cb02..527121e8deb5 100644 --- a/tests/robustness/model/deterministic.go +++ b/tests/robustness/model/deterministic.go @@ -220,14 +220,14 @@ func (s EtcdState) stepLeaseGrant(request EtcdRequest) (EtcdState, MaybeEtcdResp newState := s.DeepCopy() // Empty LeaseID means the request failed and client didn't get response. Ignore it as client cannot use lease without knowing its id. if request.LeaseGrant.LeaseID == 0 { - return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Revision: newState.Revision, LeaseGrant: &LeaseGrantReponse{}}} + return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Revision: newState.Revision, LeaseGrant: &LeaseGrantResponse{}}} } lease := EtcdLease{ LeaseID: request.LeaseGrant.LeaseID, Keys: map[string]struct{}{}, } newState.Leases[request.LeaseGrant.LeaseID] = lease - return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Revision: newState.Revision, LeaseGrant: &LeaseGrantReponse{}}} + return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Revision: newState.Revision, LeaseGrant: &LeaseGrantResponse{}}} } func (s EtcdState) stepLeaseRevoke(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { diff --git a/tests/robustness/model/history.go b/tests/robustness/model/history.go index ba27f01e8229..8e9e3652cd31 100644 --- a/tests/robustness/model/history.go +++ b/tests/robustness/model/history.go @@ -490,7 +490,7 @@ func leaseGrantResponse(revision int64) MaybeEtcdResponse { } func leaseGrantResponseWithMemberID(revision int64, memberID MemberID) MaybeEtcdResponse { - return MaybeEtcdResponse{EtcdResponse: EtcdResponse{LeaseGrant: &LeaseGrantReponse{}, Revision: revision, MemberID: memberID}} + return MaybeEtcdResponse{EtcdResponse: EtcdResponse{LeaseGrant: &LeaseGrantResponse{}, Revision: revision, MemberID: memberID}} } func leaseRevokeRequest(leaseID int64) EtcdRequest { diff --git a/tests/robustness/model/types.go b/tests/robustness/model/types.go index e5879b179cdc..e52e40568086 100644 --- a/tests/robustness/model/types.go +++ b/tests/robustness/model/types.go @@ -168,7 +168,7 @@ func (m *MemberID) UnmarshalJSON(data []byte) error { type EtcdResponse struct { Txn *TxnResponse Range *RangeResponse - LeaseGrant *LeaseGrantReponse + LeaseGrant *LeaseGrantResponse LeaseRevoke *LeaseRevokeResponse Defragment *DefragmentResponse Compact *CompactResponse @@ -203,7 +203,7 @@ type RangeResponse struct { Count int64 } -type LeaseGrantReponse struct { +type LeaseGrantResponse struct { LeaseID int64 } type ( From 60590ffed76b3a0a9fa6a11f384c6f0720e4b0f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Feb 2026 19:24:55 +0000 Subject: [PATCH 0835/1068] build(deps): bump actions/stale from 10.1.1 to 10.2.0 Bumps [actions/stale](https://github.com/actions/stale) from 10.1.1 to 10.2.0. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/997185467fa4f803885201cee163a9f38240193d...b5d41d4e1d5dceea10e7104786b73624c18a190f) --- updated-dependencies: - dependency-name: actions/stale dependency-version: 10.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/stale.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index 055adc80b9f1..7f1839bda648 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -13,7 +13,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@997185467fa4f803885201cee163a9f38240193d #v10.1.1 + - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f #v10.2.0 with: days-before-stale: 90 days-before-close: 21 From 28849873ca8185e518f4de0cecbed98418e4031e Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 14 Feb 2026 09:25:05 +0100 Subject: [PATCH 0836/1068] robustness: fix typos in validate package comments Signed-off-by: Chun-Hung Tseng --- tests/robustness/validate/patch_history.go | 2 +- tests/robustness/validate/watch.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/robustness/validate/patch_history.go b/tests/robustness/validate/patch_history.go index 7a7405e850e9..98c8711d5af9 100644 --- a/tests/robustness/validate/patch_history.go +++ b/tests/robustness/validate/patch_history.go @@ -88,7 +88,7 @@ func watchRevisions(reports []report.ClientReport) map[model.PutOptions]int64 { kv := model.PutOptions{Key: event.Key, Value: event.Value} putRevisions[kv] = event.Revision case model.DeleteOperation: - // Delete events are also created by leaseRevoke rquest. + // Delete events are also created by leaseRevoke request. default: panic(fmt.Sprintf("unknown event type %q", event.Type)) } diff --git a/tests/robustness/validate/watch.go b/tests/robustness/validate/watch.go index eb840e527526..b64dcb8765ab 100644 --- a/tests/robustness/validate/watch.go +++ b/tests/robustness/validate/watch.go @@ -259,7 +259,7 @@ func validatePrevKV(lg *zap.Logger, replay *model.EtcdReplay, report report.Clie } for _, resp := range op.Responses { for _, event := range resp.Events { - // Get state state just before the current event. + // Get state just before the current event. state, err2 := replay.StateForRevision(event.Revision - 1) if err2 != nil { panic(err2) @@ -291,7 +291,7 @@ func validateIsCreate(lg *zap.Logger, replay *model.EtcdReplay, report report.Cl for _, op := range report.Watch { for _, resp := range op.Responses { for _, event := range resp.Events { - // Get state state just before the current event. + // Get state just before the current event. state, err2 := replay.StateForRevision(event.Revision - 1) if err2 != nil { panic(err2) From 3fdac9ebac08da7a25a571e1a83592ff1e35ce1d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Feb 2026 13:08:14 +0000 Subject: [PATCH 0837/1068] build(deps): bump github/codeql-action from 4.32.3 to 4.32.4 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.3 to 4.32.4. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/9e907b5e64f6b83e7804b09294d44122997950d6...89a39a4e59826350b863aa6b6252a07ad50cf83e) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.32.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 093aadd79034..13e9565d5d20 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3 + uses: github/codeql-action/init@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3 + uses: github/codeql-action/autobuild@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3 + uses: github/codeql-action/analyze@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 14dab8597a57..e7e0480bb9f8 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3 + uses: github/codeql-action/upload-sarif@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 with: sarif_file: results.sarif From 43a89f9056cab2795f91b59bca2d1b2990af4482 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 14 Feb 2026 09:25:48 +0100 Subject: [PATCH 0838/1068] robustness: fix wrong context usage for List and StaleList requests in etcdTrafficClient.Request() All other request types already use opCtx, aligning List and StaleList operations to use it too. Signed-off-by: Chun-Hung Tseng --- tests/robustness/traffic/etcd.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index 329de822bd03..c74f9f2e0904 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -222,14 +222,14 @@ func (c etcdTrafficClient) Request(ctx context.Context, request etcdRequestType, } case List: var resp *clientv3.GetResponse - resp, err = c.client.Range(ctx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), 0, limit) + resp, err = c.client.Range(opCtx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), 0, limit) if resp != nil { c.keyStore.SyncKeys(resp) rev = resp.Header.Revision } case StaleList: var resp *clientv3.GetResponse - resp, err = c.client.Range(ctx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), lastRev, limit) + resp, err = c.client.Range(opCtx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), lastRev, limit) if resp != nil { rev = resp.Header.Revision } From 74f216a0365a135285c3abf9b64050b06e9473c6 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 14 Feb 2026 09:24:14 +0100 Subject: [PATCH 0839/1068] robustness: fix misleading success log on serializable validation failure Signed-off-by: Chun-Hung Tseng --- tests/robustness/validate/operations.go | 3 ++- tests/robustness/validate/watch.go | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/robustness/validate/operations.go b/tests/robustness/validate/operations.go index 79de6b48f6e3..900127216bbd 100644 --- a/tests/robustness/validate/operations.go +++ b/tests/robustness/validate/operations.go @@ -64,8 +64,9 @@ func validateSerializableOperations(lg *zap.Logger, operations []porcupine.Opera err := validateSerializableOperationsError(lg, operations, replay) if err != nil { lg.Error("Serializable validation failed", zap.Duration("duration", time.Since(start)), zap.Error(err)) + } else { + lg.Info("Serializable validation success", zap.Duration("duration", time.Since(start))) } - lg.Info("Serializable validation success", zap.Duration("duration", time.Since(start))) return ResultFromError(err) } diff --git a/tests/robustness/validate/watch.go b/tests/robustness/validate/watch.go index eb840e527526..828f504a8ee2 100644 --- a/tests/robustness/validate/watch.go +++ b/tests/robustness/validate/watch.go @@ -45,8 +45,9 @@ func validateWatch(lg *zap.Logger, cfg Config, reports []report.ClientReport, re err := validateWatchError(lg, cfg, reports, replay) if err != nil { lg.Error("Watch validation failed", zap.Duration("duration", time.Since(start)), zap.Error(err)) + } else { + lg.Info("Watch validation success", zap.Duration("duration", time.Since(start))) } - lg.Info("Watch validation success", zap.Duration("duration", time.Since(start))) return ResultFromError(err) } From 07f66e0e9d7f86d763aae46bd448a0a8442bc006 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Mon, 9 Feb 2026 19:51:52 -0500 Subject: [PATCH 0840/1068] grpc: replace Dial APIs with NewClient Replace deprecated grpc.Dial and grpc.DialContext calls with grpc.NewClient. Preserve DialTimeout behavior in the client dial flow with a health probe, rather than depending on experimental ClientConn.Connect() API. Signed-off-by: Wei Fu --- client/v3/client.go | 50 +++++++++++++--- client/v3/client_test.go | 57 ++++++++++++++++--- client/v3/config.go | 4 +- client/v3/naming/doc.go | 4 +- server/embed/etcd.go | 8 +-- server/etcdmain/grpc_proxy.go | 3 - tests/common/e2e_test.go | 5 ++ tests/e2e/ctl_v3_kv_test.go | 56 ++++++++++++++++++ tests/e2e/ctl_v3_member_test.go | 4 +- tests/e2e/utils.go | 2 - tests/framework/e2e/cluster.go | 6 ++ tests/framework/e2e/etcdctl.go | 13 ++++- tests/framework/integration/cluster.go | 9 ++- .../clientv3/connectivity/black_hole_test.go | 3 - .../clientv3/connectivity/dial_test.go | 5 -- .../connectivity/network_partition_test.go | 4 -- tests/integration/clientv3/kv_test.go | 3 - .../integration/clientv3/maintenance_test.go | 3 +- .../integration/clientv3/mirror_auth_test.go | 2 - .../clientv3/naming/resolver_test.go | 2 +- tests/integration/clientv3/user_test.go | 3 - tests/integration/v3_failover_test.go | 2 - tests/integration/v3_grpc_test.go | 2 - tests/integration/v3_tls_test.go | 5 +- 24 files changed, 192 insertions(+), 63 deletions(-) diff --git a/client/v3/client.go b/client/v3/client.go index dd0ee4997270..1b32a23d221b 100644 --- a/client/v3/client.go +++ b/client/v3/client.go @@ -29,6 +29,7 @@ import ( "google.golang.org/grpc/codes" grpccredentials "google.golang.org/grpc/credentials" "google.golang.org/grpc/credentials/insecure" + healthpb "google.golang.org/grpc/health/grpc_health_v1" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/status" @@ -324,20 +325,55 @@ func (c *Client) dial(creds grpccredentials.TransportCredentials, dopts ...grpc. opts = append(opts, c.cfg.DialOptions...) - dctx := c.ctx - if c.cfg.DialTimeout > 0 { - var cancel context.CancelFunc - dctx, cancel = context.WithTimeout(c.ctx, c.cfg.DialTimeout) - defer cancel() // TODO: Is this right for cases where grpc.WithBlock() is not set on the dial options? - } target := fmt.Sprintf("%s://%p/%s", resolver.Schema, c, authority(c.endpoints[0])) - conn, err := grpc.DialContext(dctx, target, opts...) //nolint:staticcheck // TODO: remove for a supported version + conn, err := grpc.NewClient(target, opts...) if err != nil { return nil, err } + if dialTimeout := c.cfg.DialTimeout; dialTimeout > 0 { + dctx, cancel := context.WithTimeout(c.ctx, dialTimeout) + defer cancel() + + if err := waitForConnection(dctx, conn); err != nil { + conn.Close() + return nil, err + } + } return conn, nil } +func waitForConnection(ctx context.Context, conn *grpc.ClientConn) error { + cli := healthpb.NewHealthClient(conn) + + // Use WaitForReady to wait until the connection is ready. The health check + // may return Unimplemented if the server does not expose the health endpoint, + // or FailedPrecondition if the leader has not yet applied the configuration + // change that enables it. In both cases, we can still treat the connection as + // healthy enough to proceed. + // + // Use withMax to disable retrying on Unimplemented, so that we can + // return the original error immediately. + _, err := cli.Check(ctx, &healthpb.HealthCheckRequest{}, grpc.WaitForReady(true), withMax(0)) + if err == nil { + return nil + } + if cerr := ctx.Err(); cerr != nil { + if serr, ok := status.FromError(err); ok && serr.Message() != "" { + return fmt.Errorf("etcdclient: failed to connect to the etcd server: %s: %w", serr.Message(), cerr) + } + return fmt.Errorf("etcdclient: failed to connect to the etcd server: %w", cerr) + } + + serr, ok := status.FromError(err) + if ok { + switch serr.Code() { + case codes.Unimplemented, codes.FailedPrecondition: + return nil + } + } + return fmt.Errorf("etcdclient: failed to dial by invoking health endpoint: %w", err) +} + func authority(endpoint string) string { spl := strings.SplitN(endpoint, "://", 2) if len(spl) < 2 { diff --git a/client/v3/client_test.go b/client/v3/client_test.go index 6380f59fadf3..0cf5cec6a79e 100644 --- a/client/v3/client_test.go +++ b/client/v3/client_test.go @@ -29,6 +29,8 @@ import ( "go.uber.org/zap" "go.uber.org/zap/zaptest" "google.golang.org/grpc" + "google.golang.org/grpc/health" + healthpb "google.golang.org/grpc/health/grpc_health_v1" "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" @@ -44,15 +46,59 @@ func NewClient(t *testing.T, cfg Config) (*Client, error) { return New(cfg) } +func TestDialNotImplemented(t *testing.T) { + testutil.RegisterLeakDetection(t) + + ln, err := net.Listen("tcp", "127.0.0.1:0") + require.NoError(t, err) + defer ln.Close() + + srv := grpc.NewServer() + serveDone := make(chan error) + go func() { + defer close(serveDone) + srv.Serve(ln) + }() + defer func() { + srv.Stop() + <-serveDone + }() + + ep := ln.Addr().String() + cfg := Config{ + Endpoints: []string{ep}, + DialTimeout: 10 * time.Second, + } + c, err := NewClient(t, cfg) + require.NoError(t, err) + defer c.Close() + + _, err = c.Get(t.Context(), "foo") + require.ErrorContains(t, err, "code = Unimplemented desc = unknown service etcdserverpb.KV") +} + func TestDialCancel(t *testing.T) { testutil.RegisterLeakDetection(t) - // accept first connection so client is created with dial timeout - ln, err := net.Listen("unix", "dialcancel:12345") + // Start a real gRPC endpoint with health service so initial dial readiness + // check succeeds before switching endpoints below. + ln, err := net.Listen("tcp", "127.0.0.1:0") require.NoError(t, err) defer ln.Close() - ep := "unix://dialcancel:12345" + srv := grpc.NewServer() + healthpb.RegisterHealthServer(srv, health.NewServer()) + serveDone := make(chan error) + go func() { + defer close(serveDone) + srv.Serve(ln) + }() + defer func() { + srv.Stop() + <-serveDone + }() + + ep := ln.Addr().String() cfg := Config{ Endpoints: []string{ep}, DialTimeout: 30 * time.Second, @@ -98,17 +144,14 @@ func TestDialTimeout(t *testing.T) { wantError := context.DeadlineExceeded - // grpc.WithBlock to block until connection up or timeout testCfgs := []Config{ { Endpoints: []string{"http://254.0.0.1:12345"}, DialTimeout: 2 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version }, { Endpoints: []string{"http://254.0.0.1:12345"}, DialTimeout: time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version Username: "abc", Password: "def", }, @@ -137,7 +180,7 @@ func TestDialTimeout(t *testing.T) { case <-time.After(5 * time.Second): t.Errorf("#%d: failed to timeout dial on time", i) case err := <-donec: - if err.Error() != wantError.Error() { + if !errors.Is(err, wantError) { t.Errorf("#%d: unexpected error '%v', want '%v'", i, err, wantError) } } diff --git a/client/v3/config.go b/client/v3/config.go index 61d093760749..89405d80e291 100644 --- a/client/v3/config.go +++ b/client/v3/config.go @@ -73,8 +73,8 @@ type Config struct { RejectOldCluster bool `json:"reject-old-cluster"` // DialOptions is a list of dial options for the grpc client (e.g., for interceptors). - // For example, pass "grpc.WithBlock()" to block until the underlying connection is up. - // Without this, Dial returns immediately and connecting the server happens in background. + // Note that grpc.NewClient ignores options that are specific to grpc.Dial such as + // "grpc.WithBlock()". Use DialTimeout to bound client initialization time. DialOptions []grpc.DialOption // Context is the default client context; it can be used to cancel grpc dial out and diff --git a/client/v3/naming/doc.go b/client/v3/naming/doc.go index f2050a6aa6c2..48409b3df01f 100644 --- a/client/v3/naming/doc.go +++ b/client/v3/naming/doc.go @@ -39,7 +39,9 @@ // func etcdDial(c *clientv3.Client, service string) (*grpc.ClientConn, error) { // etcdResolver, err := resolver.NewBuilder(c); // if err { return nil, err } -// return grpc.Dial("etcd:///" + service, grpc.WithResolvers(etcdResolver)) +// conn, err := grpc.NewClient("etcd:///"+service, grpc.WithResolvers(etcdResolver)) +// if err != nil { return nil, err } +// return conn, nil // } // // Optionally, force delete an endpoint: diff --git a/server/embed/etcd.go b/server/embed/etcd.go index 87d3af045ceb..c91953ac9cb0 100644 --- a/server/embed/etcd.go +++ b/server/embed/etcd.go @@ -831,13 +831,13 @@ func (e *Etcd) grpcGatewayDial(splitHTTP bool) (grpcDial func(ctx context.Contex opts = append(opts, grpc.WithTransportCredentials(insecure.NewCredentials())) } - return func(ctx context.Context) (*grpc.ClientConn, error) { - conn, err := grpc.DialContext(ctx, addr, opts...) //nolint:staticcheck // TODO: remove for a supported version + return func(_ context.Context) (*grpc.ClientConn, error) { + conn, err := grpc.NewClient(addr, opts...) if err != nil { - sctx.lg.Error("grpc gateway failed to dial", zap.String("addr", addr), zap.Error(err)) + sctx.lg.Error("failed to setup grpc-gateway client", zap.String("addr", addr), zap.Error(err)) return nil, err } - return conn, err + return conn, nil } } diff --git a/server/etcdmain/grpc_proxy.go b/server/etcdmain/grpc_proxy.go index 67d5d671777b..f444a5f394c3 100644 --- a/server/etcdmain/grpc_proxy.go +++ b/server/etcdmain/grpc_proxy.go @@ -383,9 +383,6 @@ func newProxyClientCfg(lg *zap.Logger, eps []string, tls *transport.TLSInfo) (*c Endpoints: eps, DialTimeout: 5 * time.Second, Logger: lg, - DialOptions: []grpc.DialOption{ - grpc.WithBlock(), //nolint:staticcheck // TODO: remove for a supported version - }, } if tls != nil { clientTLS, err := tls.ClientConfig() diff --git a/tests/common/e2e_test.go b/tests/common/e2e_test.go index 2453740175fb..2844bcbf31ef 100644 --- a/tests/common/e2e_test.go +++ b/tests/common/e2e_test.go @@ -20,6 +20,7 @@ import ( "fmt" "os" "strconv" + "time" "go.etcd.io/etcd/client/pkg/v3/fileutil" "go.etcd.io/etcd/tests/v3/framework" @@ -111,6 +112,10 @@ func WithEndpoints(endpoints []string) config.ClientOption { return e2e.WithEndpoints(endpoints) } +func WithDialTimeout(tio time.Duration) config.ClientOption { + return e2e.WithDialTimeout(tio) +} + func WithHTTP2Debug() config.ClusterOption { return e2e.WithHTTP2Debug() } diff --git a/tests/e2e/ctl_v3_kv_test.go b/tests/e2e/ctl_v3_kv_test.go index 82211946c35b..753d8e65b7b9 100644 --- a/tests/e2e/ctl_v3_kv_test.go +++ b/tests/e2e/ctl_v3_kv_test.go @@ -17,6 +17,7 @@ package e2e import ( "context" "fmt" + "net" "strings" "testing" "time" @@ -45,6 +46,24 @@ func TestCtlV3GetCountOnly(t *testing.T) { testCtl(t, getCountOnlyTest) func TestCtlV3DelTimeout(t *testing.T) { testCtl(t, delTest, withDefaultDialTimeout()) } +func TestCtlV3TimeoutWhenNoProcessListensOnEndpoint(t *testing.T) { + e2e.BeforeTest(t) + + endpoint := unusedLocalTCPAddr(t) + cmdArgs := []string{ + e2e.BinPath.Etcdctl, + "--debug", + "--endpoints", endpoint, + "--dial-timeout", "5s", + "get", "foo", + } + assertEtcdctlDialTimedout(t, cmdArgs, nil) +} + +func TestCtlV3TimeoutWhenTLSClientCertMissing(t *testing.T) { + testCtl(t, timeoutWhenTLSClientCertMissingTest, withCfg(*e2e.NewConfigClientTLS())) +} + func TestCtlV3GetRevokedCRL(t *testing.T) { cfg := e2e.NewConfig( e2e.WithClusterSize(1), @@ -64,6 +83,43 @@ func testGetRevokedCRL(cx ctlCtx) { require.NoError(cx.t, ctlV3Put(cx, "k", "v", "")) } +func timeoutWhenTLSClientCertMissingTest(cx ctlCtx) { + cmdArgs := []string{ + e2e.BinPath.Etcdctl, + "--debug", + "--endpoints", strings.Join(cx.epc.EndpointsGRPC(), ","), + "--dial-timeout", "5s", + "get", "foo", + } + assertEtcdctlDialTimedout(cx.t, cmdArgs, nil) +} + +func unusedLocalTCPAddr(t *testing.T) string { + t.Helper() + + l, err := net.Listen("tcp", "127.0.0.1:0") + require.NoError(t, err) + defer l.Close() + + return l.Addr().String() +} + +func assertEtcdctlDialTimedout(t *testing.T, cmdArgs []string, envVars map[string]string) { + t.Helper() + + proc, err := e2e.SpawnCmd(cmdArgs, envVars) + require.NoError(t, err) + proc.Wait() + + err = proc.Close() + require.Error(t, err) + + out := strings.Join(proc.Lines(), "\n") + require.Containsf(t, out, context.DeadlineExceeded.Error(), + "expected timeout output, got close error: %v, output: %q", err, out, + ) +} + func putTest(cx ctlCtx) { key, value := "foo", "bar" diff --git a/tests/e2e/ctl_v3_member_test.go b/tests/e2e/ctl_v3_member_test.go index b3a54292b377..2015d4fbe0f6 100644 --- a/tests/e2e/ctl_v3_member_test.go +++ b/tests/e2e/ctl_v3_member_test.go @@ -141,7 +141,9 @@ func TestCtlV3ConsistentMemberList(t *testing.T) { default: } - mresp, merr := epc.Etcdctl().MemberList(ctx, true) + // Defailt timeout is 2s. We need to set a longer + // timeout here to make sure we can get the response. + mresp, merr := epc.Etcdctl(e2e.WithDialTimeout(5*time.Second)).MemberList(ctx, true) if merr != nil { continue } diff --git a/tests/e2e/utils.go b/tests/e2e/utils.go index ab630d443f08..bff9b474fc8c 100644 --- a/tests/e2e/utils.go +++ b/tests/e2e/utils.go @@ -33,7 +33,6 @@ import ( "go.uber.org/zap" "golang.org/x/sync/errgroup" - "google.golang.org/grpc" "go.etcd.io/etcd/client/pkg/v3/transport" clientv3 "go.etcd.io/etcd/client/v3" @@ -50,7 +49,6 @@ func newClient(t *testing.T, entpoints []string, cfg e2e.ClientConfig) *clientv3 ccfg := clientv3.Config{ Endpoints: entpoints, DialTimeout: 5 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version } if tlscfg != nil { ccfg.TLS, err = tlscfg.ClientConfig() diff --git a/tests/framework/e2e/cluster.go b/tests/framework/e2e/cluster.go index 7c4c94ac0ac5..73f48a5bd892 100644 --- a/tests/framework/e2e/cluster.go +++ b/tests/framework/e2e/cluster.go @@ -55,6 +55,7 @@ type ClientConfig struct { CertAuthority bool AutoTLS bool RevokeCerts bool + DialTimeout time.Duration } // allow alphanumerics, underscores and dashes @@ -1142,6 +1143,11 @@ func (epc *EtcdProcessCluster) WaitMembersForLeader(ctx context.Context, tb test default: } for i := range membs { + if !membs[i].IsRunning() { + // if member[i] has stopped + continue + } + resp, err := membs[i].Etcdctl().Status(ctx) if err != nil { if strings.Contains(err.Error(), "connection refused") { diff --git a/tests/framework/e2e/etcdctl.go b/tests/framework/e2e/etcdctl.go index f1ec993a6e89..c39b74806094 100644 --- a/tests/framework/e2e/etcdctl.go +++ b/tests/framework/e2e/etcdctl.go @@ -24,8 +24,6 @@ import ( "strings" "time" - "google.golang.org/grpc" - "go.etcd.io/etcd/api/v3/authpb" "go.etcd.io/etcd/api/v3/etcdserverpb" clientv3 "go.etcd.io/etcd/client/v3" @@ -53,7 +51,6 @@ func NewEtcdctl(cfg ClientConfig, endpoints []string, opts ...config.ClientOptio client, err := clientv3.New(clientv3.Config{ Endpoints: ctl.endpoints, DialTimeout: 5 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version Username: ctl.authConfig.Username, Password: ctl.authConfig.Password, Token: ctl.authConfig.Token, @@ -89,6 +86,13 @@ func WithEndpoints(endpoints []string) config.ClientOption { } } +func WithDialTimeout(tio time.Duration) config.ClientOption { + return func(c any) { + ctl := c.(*EtcdctlV3) + ctl.cfg.DialTimeout = tio + } +} + func (ctl *EtcdctlV3) DowngradeEnable(ctx context.Context, version string) error { _, err := SpawnWithExpectLines(ctx, ctl.cmdArgs("downgrade", "enable", version), nil, expect.ExpectedResponse{Value: "Downgrade enable success"}) return err @@ -418,6 +422,9 @@ func (ctl *EtcdctlV3) flags() map[string]string { } else if !ctl.authConfig.Empty() { fmap["user"] = ctl.authConfig.Username + ":" + ctl.authConfig.Password } + if ctl.cfg.DialTimeout != 0 { + fmap["dial-timeout"] = ctl.cfg.DialTimeout.String() + } return fmap } diff --git a/tests/framework/integration/cluster.go b/tests/framework/integration/cluster.go index 2d03ba9556f7..fe10ec145b61 100644 --- a/tests/framework/integration/cluster.go +++ b/tests/framework/integration/cluster.go @@ -897,7 +897,6 @@ func NewClientV3(m *Member) (*clientv3.Client, error) { cfg := clientv3.Config{ Endpoints: []string{m.GRPCURL}, DialTimeout: 5 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version MaxCallSendMsgSize: m.ClientMaxCallSendMsgSize, MaxCallRecvMsgSize: m.ClientMaxCallRecvMsgSize, Logger: m.Logger.Named("client"), @@ -1488,11 +1487,17 @@ func WithEndpoints(endpoints []string) framecfg.ClientOption { } } +func WithDialTimeout(tio time.Duration) framecfg.ClientOption { + return func(c any) { + cfg := c.(*clientv3.Config) + cfg.DialTimeout = tio + } +} + func (c *Cluster) newClientCfg() (*clientv3.Config, error) { cfg := &clientv3.Config{ Endpoints: c.Endpoints(), DialTimeout: 5 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version MaxCallSendMsgSize: c.Cfg.ClientMaxCallSendMsgSize, MaxCallRecvMsgSize: c.Cfg.ClientMaxCallRecvMsgSize, } diff --git a/tests/integration/clientv3/connectivity/black_hole_test.go b/tests/integration/clientv3/connectivity/black_hole_test.go index 939002a24e0c..3b04acd8d29d 100644 --- a/tests/integration/clientv3/connectivity/black_hole_test.go +++ b/tests/integration/clientv3/connectivity/black_hole_test.go @@ -23,7 +23,6 @@ import ( "time" "github.com/stretchr/testify/require" - "google.golang.org/grpc" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" @@ -49,7 +48,6 @@ func TestBalancerUnderBlackholeKeepAliveWatch(t *testing.T) { ccfg := clientv3.Config{ Endpoints: []string{eps[0]}, DialTimeout: time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version DialKeepAliveTime: time.Second, DialKeepAliveTimeout: 500 * time.Millisecond, } @@ -175,7 +173,6 @@ func testBalancerUnderBlackholeNoKeepAlive(t *testing.T, op func(*clientv3.Clien ccfg := clientv3.Config{ Endpoints: []string{eps[0]}, DialTimeout: 1 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version } cli, err := integration.NewClient(t, ccfg) require.NoError(t, err) diff --git a/tests/integration/clientv3/connectivity/dial_test.go b/tests/integration/clientv3/connectivity/dial_test.go index 22ca09edbbcf..3132d91ced29 100644 --- a/tests/integration/clientv3/connectivity/dial_test.go +++ b/tests/integration/clientv3/connectivity/dial_test.go @@ -22,7 +22,6 @@ import ( "time" "github.com/stretchr/testify/require" - "google.golang.org/grpc" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/client/pkg/v3/transport" @@ -60,7 +59,6 @@ func TestDialTLSExpired(t *testing.T) { _, err = integration.NewClient(t, clientv3.Config{ Endpoints: []string{clus.Members[0].GRPCURL}, DialTimeout: 3 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version TLS: tls, }) require.Truef(t, clientv3test.IsClientTimeout(err), "expected dial timeout error") @@ -76,7 +74,6 @@ func TestDialTLSNoConfig(t *testing.T) { c, err := integration.NewClient(t, clientv3.Config{ Endpoints: []string{clus.Members[0].GRPCURL}, DialTimeout: time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version }) defer func() { if c != nil { @@ -112,7 +109,6 @@ func testDialSetEndpoints(t *testing.T, setBefore bool) { cfg := clientv3.Config{ Endpoints: []string{eps[toKill]}, DialTimeout: 1 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version } cli, err := integration.NewClient(t, cfg) require.NoError(t, err) @@ -165,7 +161,6 @@ func TestRejectOldCluster(t *testing.T) { cfg := clientv3.Config{ Endpoints: []string{clus.Members[0].GRPCURL, clus.Members[1].GRPCURL}, DialTimeout: 5 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version RejectOldCluster: true, } cli, err := integration.NewClient(t, cfg) diff --git a/tests/integration/clientv3/connectivity/network_partition_test.go b/tests/integration/clientv3/connectivity/network_partition_test.go index 0039ea30cff0..e92151d2b495 100644 --- a/tests/integration/clientv3/connectivity/network_partition_test.go +++ b/tests/integration/clientv3/connectivity/network_partition_test.go @@ -23,7 +23,6 @@ import ( "time" "github.com/stretchr/testify/require" - "google.golang.org/grpc" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" @@ -122,7 +121,6 @@ func testBalancerUnderNetworkPartition(t *testing.T, op func(*clientv3.Client, c ccfg := clientv3.Config{ Endpoints: []string{eps[0]}, DialTimeout: 3 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version } cli, err := integration.NewClient(t, ccfg) require.NoError(t, err) @@ -177,7 +175,6 @@ func TestBalancerUnderNetworkPartitionLinearizableGetLeaderElection(t *testing.T cli, err := integration.NewClient(t, clientv3.Config{ Endpoints: []string{eps[(lead+1)%2]}, DialTimeout: 2 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version }) require.NoError(t, err) defer cli.Close() @@ -279,7 +276,6 @@ func TestDropReadUnderNetworkPartition(t *testing.T) { ccfg := clientv3.Config{ Endpoints: eps, DialTimeout: 10 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version } cli, err := integration.NewClient(t, ccfg) require.NoError(t, err) diff --git a/tests/integration/clientv3/kv_test.go b/tests/integration/clientv3/kv_test.go index 6bdc8650a71e..661bafa0fefe 100644 --- a/tests/integration/clientv3/kv_test.go +++ b/tests/integration/clientv3/kv_test.go @@ -27,7 +27,6 @@ import ( "time" "github.com/stretchr/testify/require" - "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -780,7 +779,6 @@ func TestKVForLearner(t *testing.T) { cfg := clientv3.Config{ Endpoints: []string{learnerEp}, DialTimeout: 5 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version } // this client only has endpoint of the learner member cli, err := integration.NewClient(t, cfg) @@ -853,7 +851,6 @@ func TestBalancerSupportLearner(t *testing.T) { cfg := clientv3.Config{ Endpoints: []string{learnerEp}, DialTimeout: 5 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version } cli, err := integration.NewClient(t, cfg) if err != nil { diff --git a/tests/integration/clientv3/maintenance_test.go b/tests/integration/clientv3/maintenance_test.go index db3ef762a47e..97cd69ba74e1 100644 --- a/tests/integration/clientv3/maintenance_test.go +++ b/tests/integration/clientv3/maintenance_test.go @@ -30,7 +30,6 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" - "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -432,7 +431,7 @@ func TestMaintenanceStatus(t *testing.T) { } t.Logf("Creating client...") - cli, err := integration.NewClient(t, clientv3.Config{Endpoints: eps, DialOptions: []grpc.DialOption{grpc.WithBlock()}}) //nolint:staticcheck // TODO: remove for a supported version + cli, err := integration.NewClient(t, clientv3.Config{Endpoints: eps}) require.NoError(t, err) defer cli.Close() t.Logf("Creating client [DONE]") diff --git a/tests/integration/clientv3/mirror_auth_test.go b/tests/integration/clientv3/mirror_auth_test.go index dc024e13ef9a..f8e2a0446d86 100644 --- a/tests/integration/clientv3/mirror_auth_test.go +++ b/tests/integration/clientv3/mirror_auth_test.go @@ -22,7 +22,6 @@ import ( "time" "github.com/stretchr/testify/require" - "google.golang.org/grpc" "go.etcd.io/etcd/api/v3/mvccpb" clientv3 "go.etcd.io/etcd/client/v3" @@ -54,7 +53,6 @@ func TestMirrorSync_Authenticated(t *testing.T) { cfg := clientv3.Config{ Endpoints: initialClient.Endpoints(), DialTimeout: 5 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version Username: "syncer", Password: "syncfoo", } diff --git a/tests/integration/clientv3/naming/resolver_test.go b/tests/integration/clientv3/naming/resolver_test.go index 9d8cc3064aa9..8cd5c674859b 100644 --- a/tests/integration/clientv3/naming/resolver_test.go +++ b/tests/integration/clientv3/naming/resolver_test.go @@ -75,7 +75,7 @@ func testEtcdGRPCResolver(t *testing.T, lbPolicy string) { } // Create connection with provided lb policy - conn, err := grpc.Dial("etcd:///foo", grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithResolvers(b), //nolint:staticcheck // TODO: remove for a supported version + conn, err := grpc.NewClient("etcd:///foo", grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithResolvers(b), grpc.WithDefaultServiceConfig(fmt.Sprintf(`{"loadBalancingPolicy":"%s"}`, lbPolicy))) if err != nil { t.Fatal("failed to connect to foo", err) diff --git a/tests/integration/clientv3/user_test.go b/tests/integration/clientv3/user_test.go index f2d6c2c7c348..696fe955bb30 100644 --- a/tests/integration/clientv3/user_test.go +++ b/tests/integration/clientv3/user_test.go @@ -21,7 +21,6 @@ import ( "time" "github.com/stretchr/testify/require" - "google.golang.org/grpc" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" @@ -60,7 +59,6 @@ func TestAddUserAfterDelete(t *testing.T) { cfg := clientv3.Config{ Endpoints: authapi.Endpoints(), DialTimeout: 5 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version } cfg.Username, cfg.Password = "root", "123" authed, err := integration.NewClient(t, cfg) @@ -116,7 +114,6 @@ func TestUserErrorAuth(t *testing.T) { cfg := clientv3.Config{ Endpoints: authapi.Endpoints(), DialTimeout: 5 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version } cfg.Username, cfg.Password = "wrong-id", "123" _, err = integration.NewClient(t, cfg) diff --git a/tests/integration/v3_failover_test.go b/tests/integration/v3_failover_test.go index 0f4be335c660..8375d31dbf0e 100644 --- a/tests/integration/v3_failover_test.go +++ b/tests/integration/v3_failover_test.go @@ -23,7 +23,6 @@ import ( "time" "github.com/stretchr/testify/require" - "google.golang.org/grpc" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" @@ -93,7 +92,6 @@ func createClient(t *testing.T, cc *tls.Config, clus *integration.Cluster) (*cli cli, err := integration.NewClient(t, clientv3.Config{ Endpoints: clus.Endpoints(), DialTimeout: 5 * time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version TLS: cc, }) if err != nil { diff --git a/tests/integration/v3_grpc_test.go b/tests/integration/v3_grpc_test.go index 1363bbb3b47c..74cdd974c968 100644 --- a/tests/integration/v3_grpc_test.go +++ b/tests/integration/v3_grpc_test.go @@ -1578,7 +1578,6 @@ func TestTLSGRPCRejectSecureClient(t *testing.T) { defer clus.Terminate(t) clus.Members[0].ClientTLSInfo = &integration.TestTLSInfo - clus.Members[0].DialOptions = []grpc.DialOption{grpc.WithBlock()} //nolint:staticcheck // TODO: remove for a supported version clus.Members[0].GRPCURL = strings.Replace(clus.Members[0].GRPCURL, "http://", "https://", 1) client, err := integration.NewClientV3(clus.Members[0]) if client != nil || err == nil { @@ -1727,7 +1726,6 @@ func testTLSReload( continue } cli, cerr := integration.NewClient(t, clientv3.Config{ - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version Endpoints: []string{clus.Members[0].GRPCURL}, DialTimeout: time.Second, TLS: cc, diff --git a/tests/integration/v3_tls_test.go b/tests/integration/v3_tls_test.go index 949e42314190..eaa1ace06830 100644 --- a/tests/integration/v3_tls_test.go +++ b/tests/integration/v3_tls_test.go @@ -23,7 +23,6 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "google.golang.org/grpc" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/tests/v3/framework/integration" @@ -66,7 +65,6 @@ func testTLSCipherSuites(t *testing.T, valid bool) { cli, cerr := integration.NewClient(t, clientv3.Config{ Endpoints: []string{clus.Members[0].GRPCURL}, DialTimeout: time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version TLS: cc, }) if cli != nil { @@ -129,12 +127,11 @@ func TestTLSMinMaxVersion(t *testing.T) { cli, cerr := integration.NewClient(t, clientv3.Config{ Endpoints: []string{clus.Members[0].GRPCURL}, DialTimeout: time.Second, - DialOptions: []grpc.DialOption{grpc.WithBlock()}, //nolint:staticcheck // TODO: remove for a supported version TLS: cc, }) if cerr != nil { assert.Truef(t, tt.expectError, "got TLS handshake error while expecting success: %v", cerr) - assert.Equal(t, context.DeadlineExceeded, cerr) + assert.ErrorIs(t, cerr, context.DeadlineExceeded) return } From 30a2b7f3cb2bc3cb3b9b9339b7e1870f8b5a0a90 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 26 Feb 2026 14:16:42 +0100 Subject: [PATCH 0841/1068] Document issue #20418 in robustness documentation Signed-off-by: Marek Siarkowicz --- tests/robustness/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/robustness/README.md b/tests/robustness/README.md index 7f5b090039e1..f9f33c1ebc8a 100644 --- a/tests/robustness/README.md +++ b/tests/robustness/README.md @@ -36,6 +36,7 @@ For more details on Antithesis integration, see the [antithesis directory](../an | Watch on future revision returns notifications [#20221] | Jun 2025 | v3.4 or earlier | Robustness, after covering connection to multiple members | | | | Watch on future revision returns old events [#20221] | Jun 2025 | v3.4 or earlier | Antithesis, after covering connection to multiple members | | | | Panic from db page expected to be 5 [#20271] | Jul 2025 | v3.4 or earlier | Antithesis | | | +| Stale reads caused by process pausing [#20418] | Jul 2025 | v3.1 | Antithesis | | | [c272ade]: https://github.com/etcd-io/etcd/tree/c272adec29afaa69f08b7458422c53b8978c7af1 [a438759]: https://github.com/etcd-io/etcd/tree/a438759bf0bcafce851fae1a84a8511452b6b704 @@ -54,6 +55,7 @@ For more details on Antithesis integration, see the [antithesis directory](../an [#20221]: https://github.com/etcd-io/etcd/issues/20221 [#18055]: https://github.com/etcd-io/etcd/issues/18055 [#20271]: https://github.com/etcd-io/etcd/issues/20271 +[#20418]: https://github.com/etcd-io/etcd/issues/20418 ## Maintaining Bug Reproducibility During Non-Trivial Changes From 4972ef9f2843960d0adc58ef123ad63ddfe96498 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 27 Feb 2026 23:30:23 +0800 Subject: [PATCH 0842/1068] dependency: bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.27.8 to 2.28.0 Reference: - #21349 - #21344 Signed-off-by: Chun-Hung Tseng --- api/go.mod | 4 ++-- api/go.sum | 8 ++++---- cache/go.mod | 4 ++-- cache/go.sum | 8 ++++---- client/v3/go.mod | 4 ++-- client/v3/go.sum | 8 ++++---- etcdctl/go.mod | 4 ++-- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 14 +++++++------- etcdutl/go.sum | 20 ++++++++++---------- go.mod | 4 ++-- go.sum | 8 ++++---- pkg/go.mod | 2 +- pkg/go.sum | 12 ++++++------ server/go.mod | 4 ++-- server/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 8 ++++---- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 12 ++++++------ 22 files changed, 79 insertions(+), 79 deletions(-) diff --git a/api/go.mod b/api/go.mod index be264a6f701f..5e72e6aaa325 100644 --- a/api/go.mod +++ b/api/go.mod @@ -7,7 +7,7 @@ toolchain go1.26.0 require ( github.com/coreos/go-semver v0.3.1 github.com/golang/protobuf v1.5.4 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 github.com/stretchr/testify v1.11.1 google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 google.golang.org/grpc v1.79.1 @@ -20,7 +20,7 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.40.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect - golang.org/x/net v0.50.0 // indirect + golang.org/x/net v0.51.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect diff --git a/api/go.sum b/api/go.sum index 8465ad1e2d6f..cec00661819d 100644 --- a/api/go.sum +++ b/api/go.sum @@ -14,8 +14,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -38,8 +38,8 @@ go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4A go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= diff --git a/cache/go.mod b/cache/go.mod index 1929c071efa8..f918fa379624 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -17,12 +17,12 @@ require ( github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect - golang.org/x/net v0.50.0 // indirect + golang.org/x/net v0.51.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect diff --git a/cache/go.sum b/cache/go.sum index e51b84fda31f..6ecdb96dfc91 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -22,8 +22,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -64,8 +64,8 @@ go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= diff --git a/client/v3/go.mod b/client/v3/go.mod index 39c9ceadd687..786928d413e4 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -24,7 +24,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect @@ -35,7 +35,7 @@ require ( go.opentelemetry.io/otel/trace v1.40.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.50.0 // indirect + golang.org/x/net v0.51.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index bbb3cae7c806..18c061f37ca8 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -24,8 +24,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -72,8 +72,8 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index f1a9ec27cfcf..d0ac0357e863 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -31,7 +31,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -41,7 +41,7 @@ require ( github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.50.0 // indirect + golang.org/x/net v0.51.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index d17016b5552c..9294f8d4a963 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -39,8 +39,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -104,8 +104,8 @@ go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 7e108e8ee817..d37435437038 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -1,8 +1,8 @@ module go.etcd.io/etcd/etcdutl/v3 -go 1.25.0 +go 1.26 -toolchain go1.25.7 +toolchain go1.26.0 replace ( go.etcd.io/etcd/api/v3 => ../api @@ -49,7 +49,7 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -80,10 +80,10 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.47.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/crypto v0.48.0 // indirect + golang.org/x/net v0.51.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index e93c932c56b9..774b9855e702 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -44,8 +44,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -143,8 +143,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -152,8 +152,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -163,12 +163,12 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index 06815c2eb356..373aa1fba3d1 100644 --- a/go.mod +++ b/go.mod @@ -61,7 +61,7 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -96,7 +96,7 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.48.0 // indirect golang.org/x/mod v0.33.0 // indirect - golang.org/x/net v0.50.0 // indirect + golang.org/x/net v0.51.0 // indirect golang.org/x/sync v0.19.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect diff --git a/go.sum b/go.sum index 7c3e6158ebda..76488674942a 100644 --- a/go.sum +++ b/go.sum @@ -50,8 +50,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -162,8 +162,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/pkg/go.mod b/pkg/go.mod index 4523539f5f35..c1e200193702 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -26,7 +26,7 @@ require ( go.opentelemetry.io/otel v1.40.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.50.0 // indirect + golang.org/x/net v0.51.0 // indirect golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/protobuf v1.36.11 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index e8323b484d18..3a9239940fca 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -56,12 +56,12 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= diff --git a/server/go.mod b/server/go.mod index 3391232b43bf..3f07ee64d999 100644 --- a/server/go.mod +++ b/server/go.mod @@ -14,7 +14,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 @@ -36,7 +36,7 @@ require ( go.opentelemetry.io/otel/trace v1.40.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.48.0 - golang.org/x/net v0.50.0 + golang.org/x/net v0.51.0 golang.org/x/time v0.14.0 google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 google.golang.org/grpc v1.79.1 diff --git a/server/go.sum b/server/go.sum index bdb62adf8318..c971b8c18b27 100644 --- a/server/go.sum +++ b/server/go.sum @@ -36,8 +36,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -130,8 +130,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tests/go.mod b/tests/go.mod index f5034a90c6b0..cd39b392a470 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -23,7 +23,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 github.com/olekukonko/tablewriter v1.1.3 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 @@ -97,7 +97,7 @@ require ( go.opentelemetry.io/otel/trace v1.40.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.50.0 // indirect + golang.org/x/net v0.51.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect diff --git a/tests/go.sum b/tests/go.sum index d71434183b1b..0b991142b364 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -56,8 +56,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -166,8 +166,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index c3b48e2c45de..b704454acc04 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -11,7 +11,7 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint/v2 v2.10.1 github.com/google/yamlfmt v0.21.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 github.com/ryancurrah/gomodguard v1.4.1 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 @@ -240,7 +240,7 @@ require ( golang.org/x/crypto v0.48.0 // indirect golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358 // indirect golang.org/x/mod v0.33.0 // indirect - golang.org/x/net v0.50.0 // indirect + golang.org/x/net v0.51.0 // indirect golang.org/x/sync v0.19.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 0c293f38a008..9da674c8e6e8 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -252,8 +252,8 @@ github.com/gostaticanalysis/nilerr v0.1.2/go.mod h1:A19UHhoY3y8ahoL7YKz6sdjDtduw github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= @@ -612,8 +612,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 985b2034adc8..2142a2de0a00 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -17,7 +17,7 @@ require ( github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/otel v1.40.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect - golang.org/x/net v0.50.0 // indirect + golang.org/x/net v0.51.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 6b89343f16cb..60921f2f4461 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1341,8 +1341,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1489,8 +1489,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1521,8 +1521,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 980e4dad59b4a989a9db15b53a77b8f9e624782f Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Sat, 28 Feb 2026 17:18:03 -0500 Subject: [PATCH 0843/1068] tests/antithesis: add basetime for debug Signed-off-by: Wei Fu --- tests/antithesis/test-template/robustness/traffic/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index c7b888b08e57..161a04c5dda1 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -80,7 +80,7 @@ func main() { } }() - lg.Info("Start traffic generation", zap.Duration("duration", duration)) + lg.Info("Start traffic generation", zap.Duration("duration", duration), zap.String("base-time", baseTime.UTC().Format("2006-01-02T15:04:05.000000Z0700"))) r.Client, err = runTraffic(ctx, lg, tf, hosts, baseTime, duration) if err != nil { lg.Error("Failed to generate traffic") From bd24036903b0387a8d1c9d9b668cb17391468458 Mon Sep 17 00:00:00 2001 From: carsontham Date: Fri, 27 Feb 2026 00:35:51 +0800 Subject: [PATCH 0844/1068] client/pkg: fix revive unexported-return issue Signed-off-by: carsontham --- client/pkg/types/set.go | 43 ++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/client/pkg/types/set.go b/client/pkg/types/set.go index 3e69c8d8b943..8c9d8773ef1b 100644 --- a/client/pkg/types/set.go +++ b/client/pkg/types/set.go @@ -23,15 +23,23 @@ import ( type Set interface { Add(string) Remove(string) - Contains(string) bool + Contains(val ...string) bool Equals(Set) bool Length() int Values() []string Copy() Set Sub(Set) Set + + // ContainsAll returns whether the set contains all given values + // Deprecated: Use Contains instead. + ContainsAll(values []string) bool +} + +type ThreadsafeSet interface { + Set } -func NewUnsafeSet(values ...string) *unsafeSet { +func NewUnsafeSet(values ...string) Set { set := &unsafeSet{make(map[string]struct{})} for _, v := range values { set.Add(v) @@ -39,11 +47,13 @@ func NewUnsafeSet(values ...string) *unsafeSet { return set } -func NewThreadsafeSet(values ...string) *tsafeSet { +func NewThreadsafeSet(values ...string) ThreadsafeSet { us := NewUnsafeSet(values...) return &tsafeSet{us, sync.RWMutex{}} } +var _ Set = (*unsafeSet)(nil) + type unsafeSet struct { d map[string]struct{} } @@ -59,12 +69,17 @@ func (us *unsafeSet) Remove(value string) { } // Contains returns whether the set contains the given value -func (us *unsafeSet) Contains(value string) (exists bool) { - _, exists = us.d[value] - return exists +func (us *unsafeSet) Contains(values ...string) (exists bool) { + for _, value := range values { + if _, exists := us.d[value]; !exists { + return false + } + } + return true } // ContainsAll returns whether the set contains all given values +// Deprecated: Use Contains instead. func (us *unsafeSet) ContainsAll(values []string) bool { for _, s := range values { if !us.Contains(s) { @@ -122,8 +137,10 @@ func (us *unsafeSet) Sub(other Set) Set { return result } +var _ ThreadsafeSet = (*tsafeSet)(nil) + type tsafeSet struct { - us *unsafeSet + us Set m sync.RWMutex } @@ -139,10 +156,18 @@ func (ts *tsafeSet) Remove(value string) { ts.us.Remove(value) } -func (ts *tsafeSet) Contains(value string) (exists bool) { +func (ts *tsafeSet) Contains(values ...string) (exists bool) { + ts.m.RLock() + defer ts.m.RUnlock() + return ts.us.Contains(values...) +} + +// ContainsAll returns whether the set contains all given values +// Deprecated: Use Contains instead. +func (ts *tsafeSet) ContainsAll(values []string) bool { ts.m.RLock() defer ts.m.RUnlock() - return ts.us.Contains(value) + return ts.us.ContainsAll(values) } func (ts *tsafeSet) Equals(other Set) bool { From 19a7a2d0c6f3097002d13834f02fc2ee7e76047f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 19:24:45 +0000 Subject: [PATCH 0845/1068] build(deps): bump actions/setup-go from 6.2.0 to 6.3.0 Bumps [actions/setup-go](https://github.com/actions/setup-go) from 6.2.0 to 6.3.0. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5...4b73464bb391d4059bd26b0524d20df3927bd417) --- updated-dependencies: - dependency-name: actions/setup-go dependency-version: 6.3.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/measure-testgrid-flakiness.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/measure-testgrid-flakiness.yaml b/.github/workflows/measure-testgrid-flakiness.yaml index 64b1b3eaf480..69af088c1db5 100644 --- a/.github/workflows/measure-testgrid-flakiness.yaml +++ b/.github/workflows/measure-testgrid-flakiness.yaml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - id: goversion run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - - uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0 + - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 with: go-version: ${{ steps.goversion.outputs.goversion }} - env: From 6c2553c80ae74bd084fa543824e04b1d516f0598 Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 3 Mar 2026 21:46:06 +0800 Subject: [PATCH 0846/1068] dependency: bump go.opentelemetry.io/otel from 1.40.0 to 1.41.0 Signed-off-by: joshjms --- api/go.mod | 2 +- api/go.sum | 12 ++++++------ cache/go.sum | 12 ++++++------ client/v3/go.mod | 4 ++-- client/v3/go.sum | 12 ++++++------ etcdctl/go.sum | 12 ++++++------ etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 12 ++++++------ go.mod | 6 +++--- go.sum | 12 ++++++------ pkg/go.mod | 4 ++-- pkg/go.sum | 12 ++++++------ server/go.mod | 6 +++--- server/go.sum | 12 ++++++------ tests/go.mod | 6 +++--- tests/go.sum | 12 ++++++------ tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 12 ++++++------ 18 files changed, 78 insertions(+), 78 deletions(-) diff --git a/api/go.mod b/api/go.mod index 5e72e6aaa325..047ab201b870 100644 --- a/api/go.mod +++ b/api/go.mod @@ -18,7 +18,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - go.opentelemetry.io/otel v1.40.0 // indirect + go.opentelemetry.io/otel v1.41.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect golang.org/x/net v0.51.0 // indirect golang.org/x/sys v0.41.0 // indirect diff --git a/api/go.sum b/api/go.sum index cec00661819d..a1a9192cff5f 100644 --- a/api/go.sum +++ b/api/go.sum @@ -28,16 +28,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= +go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= +go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= +go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= +go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= diff --git a/cache/go.sum b/cache/go.sum index 6ecdb96dfc91..69d3b33adbad 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -46,16 +46,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= +go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= +go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= +go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= +go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= 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= diff --git a/client/v3/go.mod b/client/v3/go.mod index 786928d413e4..4e6f413706f2 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -30,9 +30,9 @@ require ( github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.5 // indirect github.com/prometheus/procfs v0.16.1 // indirect - go.opentelemetry.io/otel/metric v1.40.0 // indirect + go.opentelemetry.io/otel/metric v1.41.0 // indirect go.opentelemetry.io/otel/sdk v1.40.0 // indirect - go.opentelemetry.io/otel/trace v1.40.0 // indirect + go.opentelemetry.io/otel/trace v1.41.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.51.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 18c061f37ca8..a38f1b895a4d 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -52,16 +52,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= +go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= +go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= +go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= +go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= 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= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 9294f8d4a963..e4eb254b0314 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -85,16 +85,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= +go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= +go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= +go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= +go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= 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= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index d37435437038..e0dd6f97ceef 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -71,12 +71,12 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect - go.opentelemetry.io/otel v1.40.0 // indirect + go.opentelemetry.io/otel v1.41.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/metric v1.40.0 // indirect + go.opentelemetry.io/otel/metric v1.41.0 // indirect go.opentelemetry.io/otel/sdk v1.40.0 // indirect - go.opentelemetry.io/otel/trace v1.40.0 // indirect + go.opentelemetry.io/otel/trace v1.41.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 774b9855e702..83cefd80126a 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -114,20 +114,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= -go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= +go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= 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= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= +go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= +go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= 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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/go.mod b/go.mod index 373aa1fba3d1..fecade479fe6 100644 --- a/go.mod +++ b/go.mod @@ -85,12 +85,12 @@ require ( go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect - go.opentelemetry.io/otel v1.40.0 // indirect + go.opentelemetry.io/otel v1.41.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/metric v1.40.0 // indirect + go.opentelemetry.io/otel/metric v1.41.0 // indirect go.opentelemetry.io/otel/sdk v1.40.0 // indirect - go.opentelemetry.io/otel/trace v1.40.0 // indirect + go.opentelemetry.io/otel/trace v1.41.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect diff --git a/go.sum b/go.sum index 76488674942a..a346d694eff6 100644 --- a/go.sum +++ b/go.sum @@ -122,20 +122,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= -go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= +go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= 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= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= +go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= +go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= 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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/pkg/go.mod b/pkg/go.mod index c1e200193702..08b1a12e470c 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -11,7 +11,7 @@ require ( github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.opentelemetry.io/otel/trace v1.40.0 + go.opentelemetry.io/otel/trace v1.41.0 go.uber.org/zap v1.27.1 golang.org/x/sys v0.41.0 google.golang.org/grpc v1.79.1 @@ -23,7 +23,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - go.opentelemetry.io/otel v1.40.0 // indirect + go.opentelemetry.io/otel v1.41.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.51.0 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 3a9239940fca..2885392ef9b8 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -39,16 +39,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= +go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= +go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= +go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= +go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= 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= diff --git a/server/go.mod b/server/go.mod index 3f07ee64d999..adace5c9f5eb 100644 --- a/server/go.mod +++ b/server/go.mod @@ -30,10 +30,10 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 - go.opentelemetry.io/otel v1.40.0 + go.opentelemetry.io/otel v1.41.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 go.opentelemetry.io/otel/sdk v1.40.0 - go.opentelemetry.io/otel/trace v1.40.0 + go.opentelemetry.io/otel/trace v1.41.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.48.0 golang.org/x/net v0.51.0 @@ -65,7 +65,7 @@ require ( github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect - go.opentelemetry.io/otel/metric v1.40.0 // indirect + go.opentelemetry.io/otel/metric v1.41.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect diff --git a/server/go.sum b/server/go.sum index c971b8c18b27..47441a76e56e 100644 --- a/server/go.sum +++ b/server/go.sum @@ -92,20 +92,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= -go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= +go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= 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= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= +go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= +go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= 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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/tests/go.mod b/tests/go.mod index cd39b392a470..b4bf2fc0b6a3 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -42,7 +42,7 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 - go.opentelemetry.io/otel v1.40.0 + go.opentelemetry.io/otel v1.41.0 go.opentelemetry.io/otel/sdk v1.40.0 go.opentelemetry.io/proto/otlp v1.9.0 go.uber.org/zap v1.27.1 @@ -93,8 +93,8 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // 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/metric v1.40.0 // indirect - go.opentelemetry.io/otel/trace v1.40.0 // indirect + go.opentelemetry.io/otel/metric v1.41.0 // indirect + go.opentelemetry.io/otel/trace v1.41.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.51.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 0b991142b364..cba4964abe9d 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -128,20 +128,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= -go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= +go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= 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= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= +go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= +go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= 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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 2142a2de0a00..383e40ab8c60 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -15,7 +15,7 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.10 // indirect - go.opentelemetry.io/otel v1.40.0 // indirect + go.opentelemetry.io/otel v1.41.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect golang.org/x/net v0.51.0 // indirect golang.org/x/sys v0.41.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 60921f2f4461..b308fa76c45c 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1184,16 +1184,16 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= 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/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= +go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= +go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= +go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= +go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= From 81bc3df51b575b4012c60b7fd3a7eb6ad861d09a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 19:24:41 +0000 Subject: [PATCH 0847/1068] build(deps): bump actions/upload-artifact from 6.0.0 to 7.0.0 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6.0.0 to 7.0.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/b7c566a772e6b6bfb58ed0dc250532a479d7789f...bbbca2ddaa5d8feaa63e36b76fdaad77386f024f) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: 7.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index e7e0480bb9f8..985433686fab 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -42,7 +42,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 + uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 with: name: SARIF file path: results.sarif From cacf30afd0738b370116767807af26f2dc235b73 Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 3 Mar 2026 22:01:07 +0800 Subject: [PATCH 0848/1068] dependency: bump go.opentelemetry.io/otel/sdk from 1.40.0 to 1.41.0 Signed-off-by: joshjms --- api/go.mod | 2 +- api/go.sum | 8 ++++---- cache/go.sum | 8 ++++---- client/v3/go.mod | 2 +- client/v3/go.sum | 8 ++++---- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 2 +- etcdutl/go.sum | 8 ++++---- go.mod | 2 +- go.sum | 8 ++++---- pkg/go.mod | 2 +- pkg/go.sum | 8 ++++---- server/go.mod | 2 +- server/go.sum | 8 ++++---- tests/go.mod | 2 +- tests/go.sum | 8 ++++---- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 8 ++++---- 18 files changed, 48 insertions(+), 48 deletions(-) diff --git a/api/go.mod b/api/go.mod index 047ab201b870..cf413d2ab1ac 100644 --- a/api/go.mod +++ b/api/go.mod @@ -19,7 +19,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.41.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.41.0 // indirect golang.org/x/net v0.51.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect diff --git a/api/go.sum b/api/go.sum index a1a9192cff5f..b7355ac51f06 100644 --- a/api/go.sum +++ b/api/go.sum @@ -32,10 +32,10 @@ go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= +go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= +go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= +go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= diff --git a/cache/go.sum b/cache/go.sum index 69d3b33adbad..a487a654b407 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -50,10 +50,10 @@ go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= +go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= +go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= +go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/client/v3/go.mod b/client/v3/go.mod index 4e6f413706f2..1eea4218c6ea 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -31,7 +31,7 @@ require ( github.com/prometheus/common v0.67.5 // indirect github.com/prometheus/procfs v0.16.1 // indirect go.opentelemetry.io/otel/metric v1.41.0 // indirect - go.opentelemetry.io/otel/sdk v1.40.0 // indirect + go.opentelemetry.io/otel/sdk v1.41.0 // indirect go.opentelemetry.io/otel/trace v1.41.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index a38f1b895a4d..9abee4302d77 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -56,10 +56,10 @@ go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= +go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= +go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= +go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index e4eb254b0314..c0a86c0f59d5 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -89,10 +89,10 @@ go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= +go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= +go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= +go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index e0dd6f97ceef..aec272c4ad08 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -75,7 +75,7 @@ require ( 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/metric v1.41.0 // indirect - go.opentelemetry.io/otel/sdk v1.40.0 // indirect + go.opentelemetry.io/otel/sdk v1.41.0 // indirect go.opentelemetry.io/otel/trace v1.41.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 83cefd80126a..e501ac3224d5 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -122,10 +122,10 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDO go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= +go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= +go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= +go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= diff --git a/go.mod b/go.mod index fecade479fe6..31c9c0dd72e7 100644 --- a/go.mod +++ b/go.mod @@ -89,7 +89,7 @@ require ( 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/metric v1.41.0 // indirect - go.opentelemetry.io/otel/sdk v1.40.0 // indirect + go.opentelemetry.io/otel/sdk v1.41.0 // indirect go.opentelemetry.io/otel/trace v1.41.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/go.sum b/go.sum index a346d694eff6..60426c756771 100644 --- a/go.sum +++ b/go.sum @@ -130,10 +130,10 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDO go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= +go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= +go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= +go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= diff --git a/pkg/go.mod b/pkg/go.mod index 08b1a12e470c..740c80c0ede2 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -24,7 +24,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.opentelemetry.io/otel v1.41.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.41.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.51.0 // indirect golang.org/x/text v0.34.0 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 2885392ef9b8..931225050215 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -43,10 +43,10 @@ go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= +go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= +go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= +go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/server/go.mod b/server/go.mod index adace5c9f5eb..cf917d45a8d0 100644 --- a/server/go.mod +++ b/server/go.mod @@ -32,7 +32,7 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 go.opentelemetry.io/otel v1.41.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 - go.opentelemetry.io/otel/sdk v1.40.0 + go.opentelemetry.io/otel/sdk v1.41.0 go.opentelemetry.io/otel/trace v1.41.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.48.0 diff --git a/server/go.sum b/server/go.sum index 47441a76e56e..9fc86d8fc127 100644 --- a/server/go.sum +++ b/server/go.sum @@ -100,10 +100,10 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDO go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= +go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= +go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= +go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= diff --git a/tests/go.mod b/tests/go.mod index b4bf2fc0b6a3..3398bba4ecef 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -43,7 +43,7 @@ require ( go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 go.opentelemetry.io/otel v1.41.0 - go.opentelemetry.io/otel/sdk v1.40.0 + go.opentelemetry.io/otel/sdk v1.41.0 go.opentelemetry.io/proto/otlp v1.9.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.48.0 diff --git a/tests/go.sum b/tests/go.sum index cba4964abe9d..d42a6c9645d2 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -136,10 +136,10 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDO go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= +go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= +go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= +go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 383e40ab8c60..e92645979235 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -16,7 +16,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/otel v1.41.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.41.0 // indirect golang.org/x/net v0.51.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index b308fa76c45c..9979149cfae7 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1188,10 +1188,10 @@ go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= +go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= +go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= +go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= From 6d0d25f693108d2d67478d22d1febf51fa9bd39c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 19:24:37 +0000 Subject: [PATCH 0849/1068] build(deps): bump github/codeql-action from 4.32.4 to 4.32.5 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.4 to 4.32.5. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/89a39a4e59826350b863aa6b6252a07ad50cf83e...c793b717bc78562f491db7b0e93a3a178b099162) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.32.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 13e9565d5d20..96630bee244b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 + uses: github/codeql-action/init@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 + uses: github/codeql-action/autobuild@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 + uses: github/codeql-action/analyze@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index e7e0480bb9f8..d338df0bdf8e 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 + uses: github/codeql-action/upload-sarif@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5 with: sarif_file: results.sarif From 9bdc27c79a818f9bb3248144a88ef73d4e94a579 Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 3 Mar 2026 22:15:07 +0800 Subject: [PATCH 0850/1068] dependency: bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.40.0 to 1.41.0 Signed-off-by: joshjms --- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- server/go.mod | 4 ++-- server/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index aec272c4ad08..7db70cc4351b 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -72,8 +72,8 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect go.opentelemetry.io/otel v1.41.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/otlp/otlptrace v1.41.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 // indirect go.opentelemetry.io/otel/metric v1.41.0 // indirect go.opentelemetry.io/otel/sdk v1.41.0 // indirect go.opentelemetry.io/otel/trace v1.41.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index e501ac3224d5..0f21697da97c 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -116,10 +116,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= -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= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 h1:ao6Oe+wSebTlQ1OEht7jlYTzQKE+pnx/iNywFvTbuuI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0/go.mod h1:u3T6vz0gh/NVzgDgiwkgLxpsSF6PaPmo2il0apGJbls= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qcf28TWz719lE3/hMB4KkyDuLJIvgJnFGcd0kEUI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0= go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= diff --git a/go.mod b/go.mod index 31c9c0dd72e7..296a114e1bc8 100644 --- a/go.mod +++ b/go.mod @@ -86,8 +86,8 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect go.opentelemetry.io/otel v1.41.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/otlp/otlptrace v1.41.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 // indirect go.opentelemetry.io/otel/metric v1.41.0 // indirect go.opentelemetry.io/otel/sdk v1.41.0 // indirect go.opentelemetry.io/otel/trace v1.41.0 // indirect diff --git a/go.sum b/go.sum index 60426c756771..5050c9cc2f81 100644 --- a/go.sum +++ b/go.sum @@ -124,10 +124,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= -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= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 h1:ao6Oe+wSebTlQ1OEht7jlYTzQKE+pnx/iNywFvTbuuI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0/go.mod h1:u3T6vz0gh/NVzgDgiwkgLxpsSF6PaPmo2il0apGJbls= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qcf28TWz719lE3/hMB4KkyDuLJIvgJnFGcd0kEUI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0= go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= diff --git a/server/go.mod b/server/go.mod index cf917d45a8d0..7cb645d8b950 100644 --- a/server/go.mod +++ b/server/go.mod @@ -31,7 +31,7 @@ require ( go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 go.opentelemetry.io/otel v1.41.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 go.opentelemetry.io/otel/sdk v1.41.0 go.opentelemetry.io/otel/trace v1.41.0 go.uber.org/zap v1.27.1 @@ -64,7 +64,7 @@ require ( github.com/sirupsen/logrus v1.9.4 // indirect github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 // indirect go.opentelemetry.io/otel/metric v1.41.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/server/go.sum b/server/go.sum index 9fc86d8fc127..2288059354c4 100644 --- a/server/go.sum +++ b/server/go.sum @@ -94,10 +94,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= -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= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 h1:ao6Oe+wSebTlQ1OEht7jlYTzQKE+pnx/iNywFvTbuuI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0/go.mod h1:u3T6vz0gh/NVzgDgiwkgLxpsSF6PaPmo2il0apGJbls= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qcf28TWz719lE3/hMB4KkyDuLJIvgJnFGcd0kEUI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0= go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= diff --git a/tests/go.mod b/tests/go.mod index 3398bba4ecef..956c43e33ae4 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -91,8 +91,8 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // 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/otlp/otlptrace v1.41.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 // indirect go.opentelemetry.io/otel/metric v1.41.0 // indirect go.opentelemetry.io/otel/trace v1.41.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index d42a6c9645d2..7e1924ddd56e 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -130,10 +130,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= -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= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 h1:ao6Oe+wSebTlQ1OEht7jlYTzQKE+pnx/iNywFvTbuuI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0/go.mod h1:u3T6vz0gh/NVzgDgiwkgLxpsSF6PaPmo2il0apGJbls= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qcf28TWz719lE3/hMB4KkyDuLJIvgJnFGcd0kEUI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0= go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= From 96ade37439e39755e7d6da489b242924167300e3 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Fri, 27 Feb 2026 17:26:41 +0100 Subject: [PATCH 0851/1068] robustness: log MemberID in the porcupine visualization Fixes #19029 Signed-off-by: Chun-Hung Tseng --- tests/robustness/model/describe.go | 8 ++++++ tests/robustness/model/describe_test.go | 27 +++++++++++++++++++ tests/robustness/model/deterministic.go | 6 +++++ tests/robustness/model/history.go | 5 +++- tests/robustness/model/non_deterministic.go | 6 +++++ tests/robustness/report/client.go | 1 + .../robustness/validate/patch_history_test.go | 2 +- tests/robustness/validate/result.go | 1 + 8 files changed, 54 insertions(+), 2 deletions(-) diff --git a/tests/robustness/model/describe.go b/tests/robustness/model/describe.go index 486eae98694b..9bdf05b14374 100644 --- a/tests/robustness/model/describe.go +++ b/tests/robustness/model/describe.go @@ -21,6 +21,7 @@ import ( "sort" "strings" + "go.etcd.io/etcd/client/pkg/v3/types" clientv3 "go.etcd.io/etcd/client/v3" ) @@ -258,6 +259,13 @@ func describeRangeResponse(request RangeOptions, response RangeResponse) string return describeValueOrHash(response.KVs[0].Value) } +func DescribeOperationMetadata(response MaybeEtcdResponse) string { + if response.MemberID != 0 { + return fmt.Sprintf("memberID: %s", types.ID(response.MemberID).String()) + } + return "" +} + func describeValueOrHash(value ValueOrHash) string { if value.Hash != 0 { return fmt.Sprintf("hash: %d", value.Hash) diff --git a/tests/robustness/model/describe_test.go b/tests/robustness/model/describe_test.go index 8cea7e833c2a..71e7b017cf02 100644 --- a/tests/robustness/model/describe_test.go +++ b/tests/robustness/model/describe_test.go @@ -174,3 +174,30 @@ func TestModelDescribe(t *testing.T) { assert.Equal(t, tc.expectDescribe, NonDeterministicModel.DescribeOperation(tc.req, tc.resp)) } } + +func TestDescribeOperationMetadata(t *testing.T) { + tcs := []struct { + resp MaybeEtcdResponse + expectDescribe string + }{ + { + resp: MaybeEtcdResponse{}, + expectDescribe: "", + }, + { + resp: MaybeEtcdResponse{EtcdResponse: EtcdResponse{MemberID: 1}}, + expectDescribe: "memberID: 1", + }, + { + resp: MaybeEtcdResponse{EtcdResponse: EtcdResponse{MemberID: 100}}, + expectDescribe: "memberID: 64", + }, + { + resp: MaybeEtcdResponse{EtcdResponse: EtcdResponse{MemberID: 255}}, + expectDescribe: "memberID: ff", + }, + } + for _, tc := range tcs { + assert.Equal(t, tc.expectDescribe, DescribeOperationMetadata(tc.resp)) + } +} diff --git a/tests/robustness/model/deterministic.go b/tests/robustness/model/deterministic.go index 527121e8deb5..8de5c2c7637f 100644 --- a/tests/robustness/model/deterministic.go +++ b/tests/robustness/model/deterministic.go @@ -52,6 +52,12 @@ var DeterministicModel = porcupine.Model{ DescribeOperation: func(in, out any) string { return fmt.Sprintf("%s -> %s", describeEtcdRequest(in.(EtcdRequest)), describeEtcdResponse(in.(EtcdRequest), MaybeEtcdResponse{EtcdResponse: out.(EtcdResponse)})) }, + DescribeOperationMetadata: func(info any) string { + if info == nil { + return "" + } + return DescribeOperationMetadata(MaybeEtcdResponse{EtcdResponse: info.(EtcdResponse)}) + }, DescribeState: func(st any) string { data, err := json.MarshalIndent(st, "", " ") if err != nil { diff --git a/tests/robustness/model/history.go b/tests/robustness/model/history.go index 8e9e3652cd31..47da7a3baac3 100644 --- a/tests/robustness/model/history.go +++ b/tests/robustness/model/history.go @@ -198,6 +198,7 @@ func (h *AppendableHistory) appendSuccessful(request EtcdRequest, start, end tim Call: start.Nanoseconds(), Output: response, Return: end.Nanoseconds(), + Metadata: response, } h.append(op) } @@ -300,12 +301,14 @@ func (h *AppendableHistory) AppendCompact(rev int64, start, end time.Duration, r } func (h *AppendableHistory) appendFailed(request EtcdRequest, start, end time.Duration, err error) { + resp := failedResponse(err) op := porcupine.Operation{ ClientId: h.streamID, Input: request, Call: start.Nanoseconds(), - Output: failedResponse(err), + Output: resp, Return: end.Nanoseconds(), + Metadata: resp, } isRead := request.IsRead() if !isRead { diff --git a/tests/robustness/model/non_deterministic.go b/tests/robustness/model/non_deterministic.go index c1c9839063da..65706ecd9e85 100644 --- a/tests/robustness/model/non_deterministic.go +++ b/tests/robustness/model/non_deterministic.go @@ -41,6 +41,12 @@ var NonDeterministicModel = porcupine.Model{ DescribeOperation: func(in, out any) string { return fmt.Sprintf("%s -> %s", describeEtcdRequest(in.(EtcdRequest)), describeEtcdResponse(in.(EtcdRequest), out.(MaybeEtcdResponse))) }, + DescribeOperationMetadata: func(info any) string { + if info == nil { + return "" + } + return DescribeOperationMetadata(info.(MaybeEtcdResponse)) + }, DescribeState: func(st any) string { etcdStates := st.(nonDeterministicState) desc := make([]string, 0, len(etcdStates)) diff --git a/tests/robustness/report/client.go b/tests/robustness/report/client.go index f604c4f22351..4585f91ec013 100644 --- a/tests/robustness/report/client.go +++ b/tests/robustness/report/client.go @@ -169,6 +169,7 @@ func loadKeyValueOperations(path string) (operations []porcupine.Operation, err Call: operation.Call, Output: operation.Output, Return: operation.Return, + Metadata: operation.Output, }) } return operations, nil diff --git a/tests/robustness/validate/patch_history_test.go b/tests/robustness/validate/patch_history_test.go index 27bd85e7afd8..744cfb6e4f3b 100644 --- a/tests/robustness/validate/patch_history_test.go +++ b/tests/robustness/validate/patch_history_test.go @@ -559,7 +559,7 @@ func TestPatchHistory(t *testing.T) { patched := patchLinearizableOperations(operations, reports, tc.persistedRequest) if diff := cmp.Diff(tc.expectedRemainingOperations, patched, cmpopts.EquateEmpty(), - cmpopts.IgnoreFields(porcupine.Operation{}, "Input", "Call", "ClientId"), + cmpopts.IgnoreFields(porcupine.Operation{}, "Input", "Call", "ClientId", "Metadata"), ); diff != "" { t.Errorf("Response didn't match expected, diff:\n%s", diff) } diff --git a/tests/robustness/validate/result.go b/tests/robustness/validate/result.go index f0d18ce8e1f1..08bcb527de77 100644 --- a/tests/robustness/validate/result.go +++ b/tests/robustness/validate/result.go @@ -104,6 +104,7 @@ func (r *LinearizationResult) AddToVisualization(serializable []porcupine.Operat Start: op.Call, End: op.Return, Description: r.Model.DescribeOperation(op.Input, op.Output), + Details: r.Model.DescribeOperationMetadata(op.Metadata), }) } r.Info.AddAnnotations(annotations) From a873badc67b4bbaf3ba39768cbb84f978ee6cfca Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 26 Feb 2026 13:57:29 -0800 Subject: [PATCH 0852/1068] Add ok-to-test label to cherrypick bot PRs Automatically adds the ok-to-test label for cherrypick bot pull requests. Granted that only etcd-io members can trigger the bot to open a new pull request, it should be safe. Signed-off-by: Ivan Valdes --- .../workflows/cherrypick-bot-ok-to-test.yaml | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/cherrypick-bot-ok-to-test.yaml diff --git a/.github/workflows/cherrypick-bot-ok-to-test.yaml b/.github/workflows/cherrypick-bot-ok-to-test.yaml new file mode 100644 index 000000000000..98006abfa56c --- /dev/null +++ b/.github/workflows/cherrypick-bot-ok-to-test.yaml @@ -0,0 +1,36 @@ +--- +name: Add ok-to-test Label to Cherrypick Bot Pull Requests +permissions: read-all + +on: + pull_request_target: + types: + - opened + branches: + - release-3.6 + - release-3.5 + - release-3.4 + +jobs: + approve: + name: Add ok-to-test label + # 90416843 = k8s-infra-cherrypick-robot account ID. + if: | + github.event.actor.id == 90416843 && + !contains(github.event.pull_request.labels.*.name, 'ok-to-test') + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - name: Update PR + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + debug: ${{ secrets.ACTIONS_RUNNER_DEBUG == 'true' }} + script: | + github.rest.issues.addLabels({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + labels: ['ok-to-test'] + }); From 1882ae4a9c76856a49f848bd2f610c3c7d8fef86 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 4 Mar 2026 12:33:53 +0100 Subject: [PATCH 0853/1068] Fix README linter issues Signed-off-by: Chun-Hung Tseng --- tests/robustness/README.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/tests/robustness/README.md b/tests/robustness/README.md index f9f33c1ebc8a..bcbef6e2f539 100644 --- a/tests/robustness/README.md +++ b/tests/robustness/README.md @@ -110,7 +110,7 @@ These tests cover various scenarios, including: Etcd provides strict serializability for KV operations and eventual consistency for Watch. -**Etcd Guarantees** +#### Etcd Guarantees * **Key-value API operations** * **Watch API guarantees** @@ -161,7 +161,7 @@ Errors in the etcd model could be causing false positives, which makes the abili * **For local runs:** this would be by identifying log line, in the following example that would be `/tmp/TestRobustnessExploratory_Etcd_HighTraffic_ClusterOfSize1`: - ``` + ```text logger.go:146: 2024-04-08T09:45:27.734+0200 INFO Saving robustness test report {"path": "/tmp/TestRobustnessExploratory_Etcd_HighTraffic_ClusterOfSize1"} ``` @@ -194,7 +194,7 @@ Errors in the etcd model could be causing false positives, which makes the abili If robustness tests fail, we want to analyse the report to confirm if the issue is on etcd side. The location of the directory with the report is mentioned in the `Saving robustness test report` log. Logs from report generation should look like: -``` +```text logger.go:146: 2024-05-08T10:42:54.429+0200 INFO Saving robustness test report {"path": "/tmp/TestRobustnessRegression_Issue14370/1715157774429416550"} logger.go:146: 2024-05-08T10:42:54.429+0200 INFO Saving member data dir {"member": "TestRobustnessRegressionIssue14370-test-0", "path": "/tmp/TestRobustnessRegression_Issue14370/1715157774429416550/server-TestRobustnessRegressionIssue14370-test-0"} logger.go:146: 2024-05-08T10:42:54.430+0200 INFO no watch operations for client, skip persisting {"client-id": 1} @@ -239,7 +239,7 @@ After a couple of tries robustness tests should fail with a log `Linearization i Example: -``` +```text logger.go:146: 2025-08-01T22:54:26.550+0900 INFO Validating linearizable operations {"timeout": "5m0s"} logger.go:146: 2025-08-01T22:54:26.755+0900 ERROR Linearization illegal {"duration": "205.05225ms"} logger.go:146: 2025-08-01T22:54:26.755+0900 INFO Skipping other validations as linearization failed @@ -264,7 +264,6 @@ All following requests are invalid (connected with red line) as they have revisi Etcd guarantees that revision is non-decreasing, so this shows a bug in etcd as there is no way revision should decrease. This is consistent with the root cause of [#14370] as it was an issue with the process crash causing the last write to be lost. - ### Example analysis of a watch issue Let's reproduce and analyse robustness test report for issue [#15271]. @@ -273,7 +272,7 @@ After a couple of tries robustness tests should fail with a logs `Broke watch gu Example: -``` +```text logger.go:146: 2024-05-08T10:50:11.301+0200 INFO Validating linearizable operations {"timeout": "5m0s"} logger.go:146: 2024-05-08T10:50:15.754+0200 INFO Linearization success {"duration": "4.453346487s"} logger.go:146: 2024-05-08T10:50:15.754+0200 INFO Validating watch @@ -294,7 +293,7 @@ Each line consists of json blob corresponding to a single watch request sent by Look for events with `Revision` equal to revision mentioned in the first log with `Broke watch guarantee`, in this case, look for `"Revision":3,`. You should see watch responses where the `Revision` decreases like ones below: -``` +```text {"Events":[{"Type":"put-operation","Key":"key5","Value":{"Value":"793","Hash":0},"Revision":799,"IsCreate":false,"PrevValue":null}],"IsProgressNotify":false,"Revision":799,"Time":3202907249,"Error":""} {"Events":[{"Type":"put-operation","Key":"key4","Value":{"Value":"1","Hash":0},"Revision":3,"IsCreate":true,"PrevValue":null}, ... ``` @@ -304,4 +303,3 @@ However, the following line includes an event with `Revision` equal `3`. If you follow the `revision` throughout the file you should notice that watch replayed revisions for a second time. This is incorrect and breaks `Ordered` [watch API guarantees]. This is consistent with the root cause of [#15271] where the member reconnecting to cluster will resend revisions. - From 54f9b82f6f372c7302482e0a507b6da49d453c7a Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 5 Mar 2026 15:14:35 -0800 Subject: [PATCH 0854/1068] Limit cherrypick action to needs-ok-to-test label 1. Limit running the workflow only when the needs-ok-to-test label is added. 2. Add a catch to prevent removing the label from failing, so it doesn't mark the workflow as failed. Signed-off-by: Ivan Valdes --- .../workflows/cherrypick-bot-ok-to-test.yaml | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/.github/workflows/cherrypick-bot-ok-to-test.yaml b/.github/workflows/cherrypick-bot-ok-to-test.yaml index 7a64e76365bd..82598b6f41ee 100644 --- a/.github/workflows/cherrypick-bot-ok-to-test.yaml +++ b/.github/workflows/cherrypick-bot-ok-to-test.yaml @@ -17,7 +17,7 @@ jobs: # 90416843 = k8s-infra-cherrypick-robot account ID. if: | github.event.pull_request.user.id == 90416843 && - contains(github.event.pull_request.labels.*.name, 'needs-ok-to-test') + github.event.label.name == 'needs-ok-to-test' runs-on: ubuntu-latest permissions: pull-requests: write @@ -28,15 +28,19 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} debug: ${{ secrets.ACTIONS_RUNNER_DEBUG == 'true' }} script: | - await github.rest.issues.removeLabel({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - name: 'needs-ok-to-test' - }); + try { + await github.rest.issues.removeLabel({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + name: 'needs-ok-to-test' + }); + } catch (e) { + if (e.status !== 404) throw e; + } await github.rest.issues.addLabels({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - labels: ['ok-to-test'] + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + labels: ['ok-to-test'] }); From 667de83da5fddc44c39f1b4f530558f97a3e0e24 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 4 Mar 2026 10:54:22 -0800 Subject: [PATCH 0855/1068] Fix auto-label cherrypick bot workflow From previous tests, the event.actor.id is null. So, change the approach to check pull_request.author.id instead. Also, change the trigger to when the PR is labeled with needs-ok-to-test, so we can cleanly add the ok-to-test label AND remove the needs-ok-to-test label. No bot will remove the needs-ok-to-test label, which may cause confusion. Signed-off-by: Ivan Valdes --- .../workflows/cherrypick-bot-ok-to-test.yaml | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/.github/workflows/cherrypick-bot-ok-to-test.yaml b/.github/workflows/cherrypick-bot-ok-to-test.yaml index 98006abfa56c..11db4f2bcf48 100644 --- a/.github/workflows/cherrypick-bot-ok-to-test.yaml +++ b/.github/workflows/cherrypick-bot-ok-to-test.yaml @@ -1,23 +1,23 @@ --- -name: Add ok-to-test Label to Cherrypick Bot Pull Requests +name: Auto-label ok-to-test (cherrypick bot) permissions: read-all on: pull_request_target: types: - - opened + - labeled branches: - release-3.6 - release-3.5 - release-3.4 jobs: - approve: - name: Add ok-to-test label + add-label: + name: Add label # 90416843 = k8s-infra-cherrypick-robot account ID. if: | - github.event.actor.id == 90416843 && - !contains(github.event.pull_request.labels.*.name, 'ok-to-test') + github.event.pull_request.user.id == 90416843 && + contains(github.event.pull_request.labels.*.name, 'needs-ok-to-test') runs-on: ubuntu-latest permissions: pull-requests: write @@ -28,9 +28,15 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} debug: ${{ secrets.ACTIONS_RUNNER_DEBUG == 'true' }} script: | - github.rest.issues.addLabels({ + await github.rest.issues.addLabels({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, labels: ['ok-to-test'] }); + await github.rest.issues.removeLabel({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + name: 'needs-ok-to-test' + }); From 5dc2e1955bb77fc8170d7b75f0e95291240cd95d Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 6 Mar 2026 08:53:06 -0800 Subject: [PATCH 0856/1068] Ensure Approve GitHub Workflows runs on release-3.6 Signed-off-by: Ivan Valdes --- .github/workflows/gh-workflow-approve.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/gh-workflow-approve.yaml b/.github/workflows/gh-workflow-approve.yaml index 7cc227bdd470..76422b4977f0 100644 --- a/.github/workflows/gh-workflow-approve.yaml +++ b/.github/workflows/gh-workflow-approve.yaml @@ -9,6 +9,7 @@ on: - synchronize branches: - main + - release-3.6 - release-3.5 - release-3.4 From 3b33ce9e1e23953be738ee008385c418fc70ff70 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Fri, 6 Mar 2026 13:16:14 +0100 Subject: [PATCH 0857/1068] Update kubernetes patches for coverage tests Signed-off-by: Aleksander Mistewicz --- .../0002-Add-kubernetesEtcdContractTracker.patch | 4 ++-- .../patches/kubernetes/0004-Configure-cmd-tests.patch | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/robustness/coverage/patches/kubernetes/0002-Add-kubernetesEtcdContractTracker.patch b/tests/robustness/coverage/patches/kubernetes/0002-Add-kubernetesEtcdContractTracker.patch index 88a27653ca4f..bd36b7129f80 100644 --- a/tests/robustness/coverage/patches/kubernetes/0002-Add-kubernetesEtcdContractTracker.patch +++ b/tests/robustness/coverage/patches/kubernetes/0002-Add-kubernetesEtcdContractTracker.patch @@ -90,10 +90,10 @@ index 00000000000..c16eecb20fa + return k.Interface.OptimisticDelete(ctx, key, expectedRevision, opts) +} diff --git a/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go b/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go -index 53fc9f97a70..8870369d471 100644 +index 6b60601a784..235850a44f2 100644 --- a/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go +++ b/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go -@@ -351,8 +351,16 @@ var newETCD3Client = func(c storagebackend.TransportConfig) (*kubernetes.Client, +@@ -354,8 +354,16 @@ var newETCD3Client = func(c storagebackend.TransportConfig) (*kubernetes.Client, TLS: tlsConfig, Logger: etcd3ClientLogger, } diff --git a/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch b/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch index 62d9318341df..1590a619c822 100644 --- a/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch +++ b/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch @@ -5,7 +5,7 @@ Subject: [PATCH 4/4] Configure cmd tests diff --git a/hack/lib/etcd.sh b/hack/lib/etcd.sh -index 6e99d244c80..62af49e3e5c 100755 +index 15c4e59bba9..a22e8d04775 100755 --- a/hack/lib/etcd.sh +++ b/hack/lib/etcd.sh @@ -25,6 +25,8 @@ ETCD_PORT=${ETCD_PORT:-2379} @@ -21,10 +21,10 @@ index 6e99d244c80..62af49e3e5c 100755 else ETCD_LOGFILE=${ETCD_LOGFILE:-"/dev/null"} fi -- kube::log::info "etcd --advertise-client-urls ${KUBE_INTEGRATION_ETCD_URL} --data-dir ${ETCD_DIR} --listen-client-urls http://${ETCD_HOST}:${ETCD_PORT} --log-level=${ETCD_LOGLEVEL} 2> \"${ETCD_LOGFILE}\" >/dev/null" -- etcd --advertise-client-urls "${KUBE_INTEGRATION_ETCD_URL}" --data-dir "${ETCD_DIR}" --listen-client-urls "${KUBE_INTEGRATION_ETCD_URL}" --log-level="${ETCD_LOGLEVEL}" 2> "${ETCD_LOGFILE}" >/dev/null & -+ kube::log::info "etcd --advertise-client-urls ${KUBE_INTEGRATION_ETCD_URL} --data-dir ${ETCD_DIR} --listen-client-urls http://${ETCD_HOST}:${ETCD_PORT} --log-level=${ETCD_LOGLEVEL} --enable-distributed-tracing --distributed-tracing-address=\"0.0.0.0:4317\" --distributed-tracing-service-name=\"etcd\" --distributed-tracing-sampling-rate=1000000 2> \"${ETCD_LOGFILE}\" >/dev/null" -+ etcd --advertise-client-urls "${KUBE_INTEGRATION_ETCD_URL}" --data-dir "${ETCD_DIR}" --listen-client-urls "${KUBE_INTEGRATION_ETCD_URL}" --log-level="${ETCD_LOGLEVEL}" --enable-distributed-tracing --distributed-tracing-address="192.168.32.1:4317" --distributed-tracing-service-name="etcd" --distributed-tracing-sampling-rate=1000000 2> "${ETCD_LOGFILE}" >/dev/null & +- kube::log::info "etcd --advertise-client-urls ${KUBE_INTEGRATION_ETCD_URL} --data-dir ${ETCD_DIR} --listen-client-urls http://${ETCD_HOST}:${ETCD_PORT} --listen-peer-urls http://localhost:0 --log-level=${ETCD_LOGLEVEL} 2> \"${ETCD_LOGFILE}\" >/dev/null" +- etcd --advertise-client-urls "${KUBE_INTEGRATION_ETCD_URL}" --data-dir "${ETCD_DIR}" --listen-client-urls "${KUBE_INTEGRATION_ETCD_URL}" --listen-peer-urls "http://localhost:0" --log-level="${ETCD_LOGLEVEL}" 2> "${ETCD_LOGFILE}" >/dev/null & ++ kube::log::info "etcd --advertise-client-urls ${KUBE_INTEGRATION_ETCD_URL} --data-dir ${ETCD_DIR} --listen-client-urls http://${ETCD_HOST}:${ETCD_PORT} --listen-peer-urls http://localhost:0 --log-level=${ETCD_LOGLEVEL} --enable-distributed-tracing --distributed-tracing-address=\"192.168.32.1:4317\" --distributed-tracing-service-name=\"etcd\" --distributed-tracing-sampling-rate=1000000 2> \"${ETCD_LOGFILE}\" >/dev/null" ++ etcd --advertise-client-urls "${KUBE_INTEGRATION_ETCD_URL}" --data-dir "${ETCD_DIR}" --listen-client-urls "${KUBE_INTEGRATION_ETCD_URL}" --listen-peer-urls "http://localhost:0" --log-level="${ETCD_LOGLEVEL}" --enable-distributed-tracing --distributed-tracing-address="192.168.32.1:4317" --distributed-tracing-service-name="etcd" --distributed-tracing-sampling-rate=1000000 2> "${ETCD_LOGFILE}" >/dev/null & ETCD_PID=$! echo "Waiting for etcd to come up." From 321c9dc470388656018c4ac89d9a81225cdc1979 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 4 Mar 2026 14:49:57 -0800 Subject: [PATCH 0858/1068] Update auto-label cherrypick bot workflow execution order First, remove the needs-ok-to-test label, then add ok-to-test. This should avoid triggering a second workflow run. Signed-off-by: Ivan Valdes --- .github/workflows/cherrypick-bot-ok-to-test.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/cherrypick-bot-ok-to-test.yaml b/.github/workflows/cherrypick-bot-ok-to-test.yaml index 11db4f2bcf48..7a64e76365bd 100644 --- a/.github/workflows/cherrypick-bot-ok-to-test.yaml +++ b/.github/workflows/cherrypick-bot-ok-to-test.yaml @@ -28,15 +28,15 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} debug: ${{ secrets.ACTIONS_RUNNER_DEBUG == 'true' }} script: | - await github.rest.issues.addLabels({ + await github.rest.issues.removeLabel({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - labels: ['ok-to-test'] - }); - await github.rest.issues.removeLabel({ + name: 'needs-ok-to-test' + }); + await github.rest.issues.addLabels({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - name: 'needs-ok-to-test' + labels: ['ok-to-test'] }); From 8578ef58f4664827cf48d1f8c32608a6b33f66fc Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 6 Mar 2026 08:55:06 -0800 Subject: [PATCH 0859/1068] Ensure Dependabot runs on release-3.6 Signed-off-by: Ivan Valdes --- .github/dependabot.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6931f34066e7..bea854f3b4d3 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -36,3 +36,9 @@ updates: target-branch: "release-3.5" schedule: interval: monthly + + - package-ecosystem: docker + directory: / + target-branch: "release-3.6" + schedule: + interval: monthly From 5cb596be82a332b3cb05bab691bc93957112c51e Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 5 Mar 2026 20:51:26 +0100 Subject: [PATCH 0860/1068] Revert "Reuse events between sync loops" This reverts commit 348c0cb2be84b9aa1800aca39df1fb9bc2bbf343. Signed-off-by: Marek Siarkowicz --- server/storage/mvcc/watchable_store.go | 57 ++++++++------------------ 1 file changed, 16 insertions(+), 41 deletions(-) diff --git a/server/storage/mvcc/watchable_store.go b/server/storage/mvcc/watchable_store.go index 89817f43ad81..7b96f55807c8 100644 --- a/server/storage/mvcc/watchable_store.go +++ b/server/storage/mvcc/watchable_store.go @@ -225,7 +225,6 @@ func (s *watchableStore) syncWatchersLoop() { delayTicker := time.NewTicker(watchResyncPeriod) defer delayTicker.Stop() - var evs []mvccpb.Event for { s.mu.RLock() @@ -235,7 +234,7 @@ func (s *watchableStore) syncWatchersLoop() { unsyncedWatchers := 0 if lastUnsyncedWatchers > 0 { - unsyncedWatchers, evs = s.syncWatchers(evs) + unsyncedWatchers = s.syncWatchers() } syncDuration := time.Since(st) @@ -343,12 +342,12 @@ func (s *watchableStore) moveVictims() (moved int) { // 2. iterate over the set to get the minimum revision and remove compacted watchers // 3. use minimum revision to get all key-value pairs and send those events to watchers // 4. remove synced watchers in set from unsynced group and move to synced group -func (s *watchableStore) syncWatchers(evs []mvccpb.Event) (int, []mvccpb.Event) { +func (s *watchableStore) syncWatchers() int { s.mu.Lock() defer s.mu.Unlock() if s.unsynced.size() == 0 { - return 0, []mvccpb.Event{} + return 0 } s.store.revMu.RLock() @@ -361,7 +360,7 @@ func (s *watchableStore) syncWatchers(evs []mvccpb.Event) (int, []mvccpb.Event) compactionRev := s.store.compactMainRev wg, minRev := s.unsynced.choose(maxWatchersPerSync, curRev, compactionRev) - evs = rangeEventsWithReuse(s.store.lg, s.store.b, evs, minRev, curRev+1) + evs := rangeEvents(s.store.lg, s.store.b, minRev, curRev+1, wg) victims := make(watcherBatch) wb := newWatcherBatch(wg, evs) @@ -410,43 +409,11 @@ func (s *watchableStore) syncWatchers(evs []mvccpb.Event) (int, []mvccpb.Event) } slowWatcherGauge.Set(float64(s.unsynced.size() + vsz)) - return s.unsynced.size(), evs -} - -// rangeEventsWithReuse returns events in range [minRev, maxRev), while reusing already provided events. -func rangeEventsWithReuse(lg *zap.Logger, b backend.Backend, evs []mvccpb.Event, minRev, maxRev int64) []mvccpb.Event { - if len(evs) == 0 { - return rangeEvents(lg, b, minRev, maxRev) - } - // append from left - if evs[0].Kv.ModRevision > minRev { - evs = append(rangeEvents(lg, b, minRev, evs[0].Kv.ModRevision), evs...) - } - // cut from left - prefixIndex := 0 - for prefixIndex < len(evs) && evs[prefixIndex].Kv.ModRevision < minRev { - prefixIndex++ - } - evs = evs[prefixIndex:] - - if len(evs) == 0 { - return rangeEvents(lg, b, minRev, maxRev) - } - // append from right - if evs[len(evs)-1].Kv.ModRevision+1 < maxRev { - evs = append(evs, rangeEvents(lg, b, evs[len(evs)-1].Kv.ModRevision+1, maxRev)...) - } - // cut from right - suffixIndex := len(evs) - 1 - for suffixIndex >= 0 && evs[suffixIndex].Kv.ModRevision >= maxRev { - suffixIndex-- - } - evs = evs[:suffixIndex+1] - return evs + return s.unsynced.size() } // rangeEvents returns events in range [minRev, maxRev). -func rangeEvents(lg *zap.Logger, b backend.Backend, minRev, maxRev int64) []mvccpb.Event { +func rangeEvents(lg *zap.Logger, b backend.Backend, minRev, maxRev int64, c contains) []mvccpb.Event { if minRev < 0 { lg.Warn("Unexpected negative revision range start", zap.Int64("minRev", minRev)) minRev = 0 @@ -460,7 +427,7 @@ func rangeEvents(lg *zap.Logger, b backend.Backend, minRev, maxRev int64) []mvcc tx := b.ReadTx() tx.RLock() revs, vs := tx.UnsafeRange(schema.Key, minBytes, maxBytes, 0) - evs := kvsToEvents(lg, revs, vs) + evs := kvsToEvents(lg, c, revs, vs) // Must unlock after kvsToEvents, because vs (come from boltdb memory) is not deep copy. // We can only unlock after Unmarshal, which will do deep copy. // Otherwise we will trigger SIGSEGV during boltdb re-mmap. @@ -468,14 +435,22 @@ func rangeEvents(lg *zap.Logger, b backend.Backend, minRev, maxRev int64) []mvcc return evs } +type contains interface { + contains(string) bool +} + // kvsToEvents gets all events for the watchers from all key-value pairs -func kvsToEvents(lg *zap.Logger, revs, vals [][]byte) (evs []mvccpb.Event) { +func kvsToEvents(lg *zap.Logger, c contains, revs, vals [][]byte) (evs []mvccpb.Event) { for i, v := range vals { var kv mvccpb.KeyValue if err := kv.Unmarshal(v); err != nil { lg.Panic("failed to unmarshal mvccpb.KeyValue", zap.Error(err)) } + if !c.contains(string(kv.Key)) { + continue + } + ty := mvccpb.Event_PUT if isTombstone(revs[i]) { ty = mvccpb.Event_DELETE From f9b0e0b5868dc99176d6201682bb6756932626c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Mar 2026 20:10:44 +0000 Subject: [PATCH 0861/1068] build(deps): bump docker/login-action from 3.7.0 to 4.0.0 Bumps [docker/login-action](https://github.com/docker/login-action) from 3.7.0 to 4.0.0. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/c94ce9fb468520275223c153574b00df6fe4bcc9...b45d80f862d83dbcd57f89517bcf500b2ab88fb2) --- updated-dependencies: - dependency-name: docker/login-action dependency-version: 4.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 77952c516dbc..8db6a114b4d6 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -45,7 +45,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Login to Antithesis Docker Registry - uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0 + uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 with: registry: ${{ env.REGISTRY }} username: _json_key From 6280cc31caffe1c4d0709f1e0ca84dbd788d3962 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Mar 2026 20:10:39 +0000 Subject: [PATCH 0862/1068] build(deps): bump github/codeql-action from 4.32.5 to 4.32.6 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.5 to 4.32.6. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/c793b717bc78562f491db7b0e93a3a178b099162...0d579ffd059c29b07949a3cce3983f0780820c98) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.32.6 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 96630bee244b..02ce1a4b2e38 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5 + uses: github/codeql-action/init@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5 + uses: github/codeql-action/autobuild@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5 + uses: github/codeql-action/analyze@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index afd4433693cd..0b22e13748a9 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5 + uses: github/codeql-action/upload-sarif@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6 with: sarif_file: results.sarif From 26b202932ea327523a344f10b761a7e774323134 Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 10 Mar 2026 23:18:37 +0800 Subject: [PATCH 0863/1068] dependency: bump go.opentelemetry.io/otel/sdk from 1.41.0 to 1.42.0 Signed-off-by: joshjms --- api/go.mod | 4 ++-- api/go.sum | 20 ++++++++++---------- cache/go.sum | 20 ++++++++++---------- client/v3/go.mod | 6 +++--- client/v3/go.sum | 20 ++++++++++---------- etcdctl/go.sum | 20 ++++++++++---------- etcdutl/go.mod | 8 ++++---- etcdutl/go.sum | 20 ++++++++++---------- go.mod | 8 ++++---- go.sum | 20 ++++++++++---------- pkg/go.mod | 6 +++--- pkg/go.sum | 20 ++++++++++---------- server/go.mod | 8 ++++---- server/go.sum | 20 ++++++++++---------- tests/go.mod | 8 ++++---- tests/go.sum | 20 ++++++++++---------- tools/testgrid-analysis/go.mod | 4 ++-- tools/testgrid-analysis/go.sum | 20 ++++++++++---------- 18 files changed, 126 insertions(+), 126 deletions(-) diff --git a/api/go.mod b/api/go.mod index 81e34ea60bca..dc5e2bc16639 100644 --- a/api/go.mod +++ b/api/go.mod @@ -18,8 +18,8 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - go.opentelemetry.io/otel v1.41.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.41.0 // indirect + go.opentelemetry.io/otel v1.42.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect golang.org/x/net v0.51.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect diff --git a/api/go.sum b/api/go.sum index b7355ac51f06..f39429f5dd98 100644 --- a/api/go.sum +++ b/api/go.sum @@ -28,16 +28,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= -go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= -go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= -go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= -go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= -go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= -go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= -go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= -go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= +go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= +go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= +go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= +go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= +go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= +go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= +go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= +go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= +go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= +go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= diff --git a/cache/go.sum b/cache/go.sum index a487a654b407..c4540490fd57 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -46,16 +46,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= -go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= -go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= -go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= -go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= -go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= -go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= -go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= -go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= +go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= +go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= +go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= +go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= +go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= +go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= +go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= +go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= +go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= +go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= 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= diff --git a/client/v3/go.mod b/client/v3/go.mod index 664686b8f2b5..995a4e94bd86 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -30,9 +30,9 @@ require ( github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.5 // indirect github.com/prometheus/procfs v0.16.1 // indirect - go.opentelemetry.io/otel/metric v1.41.0 // indirect - go.opentelemetry.io/otel/sdk v1.41.0 // indirect - go.opentelemetry.io/otel/trace v1.41.0 // indirect + go.opentelemetry.io/otel/metric v1.42.0 // indirect + go.opentelemetry.io/otel/sdk v1.42.0 // indirect + go.opentelemetry.io/otel/trace v1.42.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.51.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 9abee4302d77..4840fa93533a 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -52,16 +52,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= -go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= -go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= -go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= -go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= -go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= -go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= -go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= -go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= +go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= +go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= +go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= +go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= +go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= +go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= +go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= +go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= +go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= +go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= 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= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index c0a86c0f59d5..e4cd9286b776 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -85,16 +85,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= -go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= -go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= -go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= -go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= -go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= -go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= -go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= -go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= +go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= +go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= +go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= +go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= +go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= +go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= +go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= +go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= +go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= +go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= 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= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 8f9194eab6f9..6d5f49365298 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -71,12 +71,12 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect - go.opentelemetry.io/otel v1.41.0 // indirect + go.opentelemetry.io/otel v1.42.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 // indirect - go.opentelemetry.io/otel/metric v1.41.0 // indirect - go.opentelemetry.io/otel/sdk v1.41.0 // indirect - go.opentelemetry.io/otel/trace v1.41.0 // indirect + go.opentelemetry.io/otel/metric v1.42.0 // indirect + go.opentelemetry.io/otel/sdk v1.42.0 // indirect + go.opentelemetry.io/otel/trace v1.42.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 0f21697da97c..13b6a004011c 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -114,20 +114,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= -go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= -go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= +go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= +go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 h1:ao6Oe+wSebTlQ1OEht7jlYTzQKE+pnx/iNywFvTbuuI= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0/go.mod h1:u3T6vz0gh/NVzgDgiwkgLxpsSF6PaPmo2il0apGJbls= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qcf28TWz719lE3/hMB4KkyDuLJIvgJnFGcd0kEUI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0= -go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= -go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= -go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= -go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= -go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= -go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= -go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= +go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= +go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= +go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= +go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= +go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= +go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= +go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= +go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= 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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/go.mod b/go.mod index 56aa857012db..e82599bde2b6 100644 --- a/go.mod +++ b/go.mod @@ -85,12 +85,12 @@ require ( go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect - go.opentelemetry.io/otel v1.41.0 // indirect + go.opentelemetry.io/otel v1.42.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 // indirect - go.opentelemetry.io/otel/metric v1.41.0 // indirect - go.opentelemetry.io/otel/sdk v1.41.0 // indirect - go.opentelemetry.io/otel/trace v1.41.0 // indirect + go.opentelemetry.io/otel/metric v1.42.0 // indirect + go.opentelemetry.io/otel/sdk v1.42.0 // indirect + go.opentelemetry.io/otel/trace v1.42.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect diff --git a/go.sum b/go.sum index 5050c9cc2f81..e0ed14b0e10f 100644 --- a/go.sum +++ b/go.sum @@ -122,20 +122,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= -go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= -go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= +go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= +go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 h1:ao6Oe+wSebTlQ1OEht7jlYTzQKE+pnx/iNywFvTbuuI= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0/go.mod h1:u3T6vz0gh/NVzgDgiwkgLxpsSF6PaPmo2il0apGJbls= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qcf28TWz719lE3/hMB4KkyDuLJIvgJnFGcd0kEUI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0= -go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= -go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= -go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= -go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= -go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= -go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= -go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= +go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= +go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= +go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= +go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= +go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= +go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= +go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= +go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= 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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/pkg/go.mod b/pkg/go.mod index bf6ec9d06695..5d3ac264ce29 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -11,7 +11,7 @@ require ( github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.opentelemetry.io/otel/trace v1.41.0 + go.opentelemetry.io/otel/trace v1.42.0 go.uber.org/zap v1.27.1 golang.org/x/sys v0.41.0 google.golang.org/grpc v1.79.1 @@ -23,8 +23,8 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - go.opentelemetry.io/otel v1.41.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.41.0 // indirect + go.opentelemetry.io/otel v1.42.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.51.0 // indirect golang.org/x/text v0.34.0 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 931225050215..0f22b967211a 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -39,16 +39,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= -go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= -go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= -go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= -go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= -go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= -go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= -go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= -go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= +go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= +go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= +go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= +go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= +go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= +go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= +go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= +go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= +go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= +go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= 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= diff --git a/server/go.mod b/server/go.mod index 51310576cd79..6110b9959c4f 100644 --- a/server/go.mod +++ b/server/go.mod @@ -30,10 +30,10 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 - go.opentelemetry.io/otel v1.41.0 + go.opentelemetry.io/otel v1.42.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 - go.opentelemetry.io/otel/sdk v1.41.0 - go.opentelemetry.io/otel/trace v1.41.0 + go.opentelemetry.io/otel/sdk v1.42.0 + go.opentelemetry.io/otel/trace v1.42.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.48.0 golang.org/x/net v0.51.0 @@ -65,7 +65,7 @@ require ( github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 // indirect - go.opentelemetry.io/otel/metric v1.41.0 // indirect + go.opentelemetry.io/otel/metric v1.42.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect diff --git a/server/go.sum b/server/go.sum index 2288059354c4..cd36b457ef6e 100644 --- a/server/go.sum +++ b/server/go.sum @@ -92,20 +92,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= -go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= -go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= +go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= +go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 h1:ao6Oe+wSebTlQ1OEht7jlYTzQKE+pnx/iNywFvTbuuI= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0/go.mod h1:u3T6vz0gh/NVzgDgiwkgLxpsSF6PaPmo2il0apGJbls= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qcf28TWz719lE3/hMB4KkyDuLJIvgJnFGcd0kEUI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0= -go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= -go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= -go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= -go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= -go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= -go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= -go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= +go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= +go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= +go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= +go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= +go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= +go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= +go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= +go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= 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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/tests/go.mod b/tests/go.mod index 2e570d06ccb1..5d25c929a722 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -42,8 +42,8 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 - go.opentelemetry.io/otel v1.41.0 - go.opentelemetry.io/otel/sdk v1.41.0 + go.opentelemetry.io/otel v1.42.0 + go.opentelemetry.io/otel/sdk v1.42.0 go.opentelemetry.io/proto/otlp v1.9.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.48.0 @@ -93,8 +93,8 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 // indirect - go.opentelemetry.io/otel/metric v1.41.0 // indirect - go.opentelemetry.io/otel/trace v1.41.0 // indirect + go.opentelemetry.io/otel/metric v1.42.0 // indirect + go.opentelemetry.io/otel/trace v1.42.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.51.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 7e1924ddd56e..93030a155bd2 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -128,20 +128,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= -go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= -go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= +go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= +go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 h1:ao6Oe+wSebTlQ1OEht7jlYTzQKE+pnx/iNywFvTbuuI= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0/go.mod h1:u3T6vz0gh/NVzgDgiwkgLxpsSF6PaPmo2il0apGJbls= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qcf28TWz719lE3/hMB4KkyDuLJIvgJnFGcd0kEUI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0= -go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= -go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= -go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= -go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= -go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= -go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= -go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= +go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= +go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= +go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= +go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= +go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= +go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= +go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= +go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= 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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 70f2c70ff3b2..7be468d2a5e9 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -15,8 +15,8 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.10 // indirect - go.opentelemetry.io/otel v1.41.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.41.0 // indirect + go.opentelemetry.io/otel v1.42.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect golang.org/x/net v0.51.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 9979149cfae7..738ae76ba09f 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1184,16 +1184,16 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= 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/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= -go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= -go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= -go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= -go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= -go.opentelemetry.io/otel/sdk/metric v1.41.0 h1:siZQIYBAUd1rlIWQT2uCxWJxcCO7q3TriaMlf08rXw8= -go.opentelemetry.io/otel/sdk/metric v1.41.0/go.mod h1:HNBuSvT7ROaGtGI50ArdRLUnvRTRGniSUZbxiWxSO8Y= -go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= -go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= +go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= +go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= +go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= +go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= +go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= +go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= +go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= +go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= +go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= +go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= From a95ab33050638d78eec226e16d33649d0f2d6ee3 Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 10 Mar 2026 23:19:40 +0800 Subject: [PATCH 0864/1068] dependency: bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.41.0 to 1.42.0 Signed-off-by: joshjms --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 12 ++++++------ go.mod | 6 +++--- go.sum | 12 ++++++------ pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 6 +++--- server/go.sum | 12 ++++++------ tests/go.mod | 6 +++--- tests/go.sum | 12 ++++++------ tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 22 files changed, 57 insertions(+), 57 deletions(-) diff --git a/api/go.mod b/api/go.mod index dc5e2bc16639..297c66177937 100644 --- a/api/go.mod +++ b/api/go.mod @@ -10,7 +10,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 github.com/stretchr/testify v1.11.1 google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 - google.golang.org/grpc v1.79.1 + google.golang.org/grpc v1.79.2 google.golang.org/protobuf v1.36.11 ) diff --git a/api/go.sum b/api/go.sum index f39429f5dd98..4616a16f5b58 100644 --- a/api/go.sum +++ b/api/go.sum @@ -50,8 +50,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= -google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= +google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/cache/go.mod b/cache/go.mod index 8bd9d4846010..1faf60f1169f 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -27,7 +27,7 @@ require ( golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/grpc v1.79.1 // indirect + google.golang.org/grpc v1.79.2 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index c4540490fd57..0fab37d686e3 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -76,8 +76,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= -google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= +google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index 995a4e94bd86..1bdd17c6e6d6 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.1 - google.golang.org/grpc v1.79.1 + google.golang.org/grpc v1.79.2 sigs.k8s.io/yaml v1.6.0 ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 4840fa93533a..235afeed756c 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -84,8 +84,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= -google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= +google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index ab216738d702..0ffeb5291f6a 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.79.1 + google.golang.org/grpc v1.79.2 ) require ( diff --git a/etcdctl/go.sum b/etcdctl/go.sum index e4cd9286b776..3dfba7749b72 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -119,8 +119,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= -google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= +google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 6d5f49365298..eec28bbbaa4e 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -72,8 +72,8 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect go.opentelemetry.io/otel v1.42.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect go.opentelemetry.io/otel/metric v1.42.0 // indirect go.opentelemetry.io/otel/sdk v1.42.0 // indirect go.opentelemetry.io/otel/trace v1.42.0 // indirect @@ -87,7 +87,7 @@ require ( golang.org/x/time v0.14.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/grpc v1.79.1 // indirect + google.golang.org/grpc v1.79.2 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 13b6a004011c..55c9602e72f0 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -116,10 +116,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 h1:ao6Oe+wSebTlQ1OEht7jlYTzQKE+pnx/iNywFvTbuuI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0/go.mod h1:u3T6vz0gh/NVzgDgiwkgLxpsSF6PaPmo2il0apGJbls= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qcf28TWz719lE3/hMB4KkyDuLJIvgJnFGcd0kEUI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= @@ -185,8 +185,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= -google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= +google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index e82599bde2b6..139b89011c66 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 golang.org/x/tools v0.42.0 - google.golang.org/grpc v1.79.1 + google.golang.org/grpc v1.79.2 google.golang.org/protobuf v1.36.11 ) @@ -86,8 +86,8 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect go.opentelemetry.io/otel v1.42.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect go.opentelemetry.io/otel/metric v1.42.0 // indirect go.opentelemetry.io/otel/sdk v1.42.0 // indirect go.opentelemetry.io/otel/trace v1.42.0 // indirect diff --git a/go.sum b/go.sum index e0ed14b0e10f..fd2ee9a701c6 100644 --- a/go.sum +++ b/go.sum @@ -124,10 +124,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 h1:ao6Oe+wSebTlQ1OEht7jlYTzQKE+pnx/iNywFvTbuuI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0/go.mod h1:u3T6vz0gh/NVzgDgiwkgLxpsSF6PaPmo2il0apGJbls= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qcf28TWz719lE3/hMB4KkyDuLJIvgJnFGcd0kEUI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= @@ -197,8 +197,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= -google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= +google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/go.mod b/pkg/go.mod index 5d3ac264ce29..fcea68b97e69 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -14,7 +14,7 @@ require ( go.opentelemetry.io/otel/trace v1.42.0 go.uber.org/zap v1.27.1 golang.org/x/sys v0.41.0 - google.golang.org/grpc v1.79.1 + google.golang.org/grpc v1.79.2 ) require ( diff --git a/pkg/go.sum b/pkg/go.sum index 0f22b967211a..e26aed051f75 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -66,8 +66,8 @@ gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= -google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= +google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index 6110b9959c4f..df4e79a678ab 100644 --- a/server/go.mod +++ b/server/go.mod @@ -31,7 +31,7 @@ require ( go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 go.opentelemetry.io/otel v1.42.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 go.opentelemetry.io/otel/sdk v1.42.0 go.opentelemetry.io/otel/trace v1.42.0 go.uber.org/zap v1.27.1 @@ -39,7 +39,7 @@ require ( golang.org/x/net v0.51.0 golang.org/x/time v0.14.0 google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 - google.golang.org/grpc v1.79.1 + google.golang.org/grpc v1.79.2 google.golang.org/protobuf v1.36.11 gopkg.in/natefinch/lumberjack.v2 v2.2.1 k8s.io/utils v0.0.0-20260108192941-914a6e750570 @@ -64,7 +64,7 @@ require ( github.com/sirupsen/logrus v1.9.4 // indirect github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect go.opentelemetry.io/otel/metric v1.42.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/server/go.sum b/server/go.sum index cd36b457ef6e..331ea88f76ee 100644 --- a/server/go.sum +++ b/server/go.sum @@ -94,10 +94,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 h1:ao6Oe+wSebTlQ1OEht7jlYTzQKE+pnx/iNywFvTbuuI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0/go.mod h1:u3T6vz0gh/NVzgDgiwkgLxpsSF6PaPmo2il0apGJbls= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qcf28TWz719lE3/hMB4KkyDuLJIvgJnFGcd0kEUI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= @@ -162,8 +162,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= -google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= +google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index 5d25c929a722..dce7f6b9931c 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -49,7 +49,7 @@ require ( golang.org/x/crypto v0.48.0 golang.org/x/sync v0.19.0 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.79.1 + google.golang.org/grpc v1.79.2 google.golang.org/protobuf v1.36.11 ) @@ -91,8 +91,8 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect go.opentelemetry.io/otel/metric v1.42.0 // indirect go.opentelemetry.io/otel/trace v1.42.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 93030a155bd2..efa0317360af 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -130,10 +130,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 h1:ao6Oe+wSebTlQ1OEht7jlYTzQKE+pnx/iNywFvTbuuI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0/go.mod h1:u3T6vz0gh/NVzgDgiwkgLxpsSF6PaPmo2il0apGJbls= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qcf28TWz719lE3/hMB4KkyDuLJIvgJnFGcd0kEUI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= @@ -199,8 +199,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= -google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= +google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index b43910d202da..fa546958b650 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -248,7 +248,7 @@ require ( golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/grpc v1.79.1 // indirect + google.golang.org/grpc v1.79.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect mvdan.cc/gofumpt v0.9.2 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 9da674c8e6e8..13c823d97e69 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -716,8 +716,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= -google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= +google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1 h1:/WILD1UcXj/ujCxgoL/DvRgt2CP3txG8+FwkUbb9110= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1/go.mod h1:YNKnb2OAApgYn2oYY47Rn7alMr1zWjb2U8Q0aoGWiNc= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 7be468d2a5e9..3b0e934e89d4 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -21,5 +21,5 @@ require ( golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/grpc v1.79.1 // indirect + google.golang.org/grpc v1.79.2 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 738ae76ba09f..ebe343a199d2 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1895,8 +1895,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY= -google.golang.org/grpc v1.79.1/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= +google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 510f7ce00ab2e9500fca16cc8f89f07959fdfb3c Mon Sep 17 00:00:00 2001 From: joshjms Date: Tue, 10 Mar 2026 23:23:16 +0800 Subject: [PATCH 0865/1068] dependency: bump github.com/golangci/golangci-lint/v2 from 2.10.1 to 2.11.1 in /tools/mod Signed-off-by: joshjms --- go.work.sum | 20 ++++++++++---------- tools/mod/go.mod | 18 +++++++++--------- tools/mod/go.sum | 36 ++++++++++++++++++------------------ 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/go.work.sum b/go.work.sum index d76afd516027..40c072c6dfa0 100644 --- a/go.work.sum +++ b/go.work.sum @@ -173,8 +173,8 @@ github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4 github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0 h1:uF5Q/hWnDU1XZeT6CsrRSxHLroUSEYYO3kgES+yd+So= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0/go.mod h1:ccdDYaY5+gO+cbnQdFxEXqfy0RkoV25H3jLXUDNM3wg= -github.com/anthropics/anthropic-sdk-go v1.22.0 h1:sgo4Ob5pC5InKCi/5Ukn5t9EjPJ7KTMaKm5beOYt6rM= -github.com/anthropics/anthropic-sdk-go v1.22.0/go.mod h1:WTz31rIUHUHqai2UslPpw5CwXrQP3geYBioRV4WOLvE= +github.com/anthropics/anthropic-sdk-go v1.26.0 h1:oUTzFaUpAevfuELAP1sjL6CQJ9HHAfT7CoSYSac11PY= +github.com/anthropics/anthropic-sdk-go v1.26.0/go.mod h1:qUKmaW+uuPB64iy1l+4kOSvaLqPXnHTTBKH6RVZ7q5Q= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= @@ -219,8 +219,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo github.com/cristalhq/acmd v0.12.0 h1:RdlKnxjN+txbQosg8p/TRNZ+J1Rdne43MVQZ1zDhGWk= github.com/cristalhq/acmd v0.12.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ= -github.com/ebitengine/purego v0.9.1 h1:a/k2f2HQU3Pi399RPW1MOaZyhKJL9w/xFpKAg4q1s0A= -github.com/ebitengine/purego v0.9.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= +github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA= github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU= @@ -385,8 +385,8 @@ github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0 h1:LiZB1h0GIcudcDci2 github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0/go.mod h1:F/7q8/HZz+TXjlsoZQQKVYvXTZaFH4QRa3y+j1p7MS0= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= -github.com/openai/openai-go/v3 v3.18.0 h1:PpheJdvPgi8Ou77rJ1zsNmJTdmC7kvqDrGxbwAYq2nQ= -github.com/openai/openai-go/v3 v3.18.0/go.mod h1:cdufnVK14cWcT9qA1rRtrXx4FTRsgbDPW7Ia7SS5cZo= +github.com/openai/openai-go/v3 v3.23.0 h1:FRFwTcB4FoWFtIunTY/8fgHvzSHgqbfWjiCwOMVrsvw= +github.com/openai/openai-go/v3 v3.23.0/go.mod h1:cdufnVK14cWcT9qA1rRtrXx4FTRsgbDPW7Ia7SS5cZo= github.com/otiai10/curr v1.0.0 h1:TJIWdbX0B+kpNagQrjgq8bCMrbhiuX73M2XwgtDMoOI= github.com/otiai10/mint v1.3.1 h1:BCmzIS3n71sGfHB5NMNDB3lHYPz8fWSkCAErHed//qc= github.com/phpdave11/gofpdf v1.4.2 h1:KPKiIbfwbvC/wOncwhrpRdXVj2CZTCFlw4wnoyjtHfQ= @@ -410,8 +410,8 @@ github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY= github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= -github.com/shirou/gopsutil/v4 v4.26.1 h1:TOkEyriIXk2HX9d4isZJtbjXbEjf5qyKPAzbzY0JWSo= -github.com/shirou/gopsutil/v4 v4.26.1/go.mod h1:medLI9/UNAb0dOI9Q3/7yWSqKkj00u+1tgY8nvv41pc= +github.com/shirou/gopsutil/v4 v4.26.2 h1:X8i6sicvUFih4BmYIGT1m2wwgw2VG9YgrDTi7cIRGUI= +github.com/shirou/gopsutil/v4 v4.26.2/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= @@ -484,8 +484,8 @@ google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA= google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genai v1.45.0 h1:s80ZpS42XW0zu/ogiOtenCio17nJ7reEFJjoCftukpA= -google.golang.org/genai v1.45.0/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= +google.golang.org/genai v1.47.0 h1:iWCS7gEdO6rctOqfCYLOrZGKu2D+N42aTnCEcBvB1jo= +google.golang.org/genai v1.47.0/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230720185612-659f7aaaa771 h1:gm8vsVR64Jx1GxHY8M+p8YA2bxU/H/lymcutB2l7l9s= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index fa546958b650..1412070fbd12 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -9,7 +9,7 @@ require ( github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint/v2 v2.10.1 + github.com/golangci/golangci-lint/v2 v2.11.1 github.com/google/yamlfmt v0.21.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 github.com/ryancurrah/gomodguard v1.4.1 @@ -42,12 +42,12 @@ require ( github.com/BurntSushi/toml v1.6.0 // indirect github.com/Djarvur/go-err113 v0.1.1 // indirect github.com/Masterminds/semver/v3 v3.4.0 // indirect - github.com/MirrexOne/unqueryvet v1.5.3 // indirect + github.com/MirrexOne/unqueryvet v1.5.4 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect github.com/alecthomas/chroma/v2 v2.23.1 // indirect github.com/alecthomas/go-check-sumtype v0.3.1 // indirect github.com/alexkohler/nakedret/v2 v2.0.6 // indirect - github.com/alexkohler/prealloc v1.0.2 // indirect + github.com/alexkohler/prealloc v1.1.0 // indirect github.com/alfatraining/structtag v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect github.com/alingse/nilnesserr v0.2.0 // indirect @@ -137,7 +137,7 @@ require ( github.com/jmoiron/sqlx v1.4.0 // indirect github.com/julz/importas v0.2.0 // indirect github.com/karamaru-alpha/copyloopvar v1.2.2 // indirect - github.com/kisielk/errcheck v1.9.0 // indirect + github.com/kisielk/errcheck v1.10.0 // indirect github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 // indirect github.com/kkHAIKE/contextcheck v1.1.6 // indirect github.com/kulti/thelper v0.7.1 // indirect @@ -150,7 +150,7 @@ require ( github.com/ldez/tagliatelle v0.7.2 // indirect github.com/ldez/usetesting v0.5.0 // indirect github.com/leonklingele/grouper v1.1.2 // indirect - github.com/lib/pq v1.11.1 // indirect + github.com/lib/pq v1.11.2 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/macabu/inamedparam v0.2.0 // indirect github.com/manuelarte/embeddedstructfieldcheck v0.4.0 // indirect @@ -162,7 +162,7 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.19 // indirect github.com/mattn/go-sqlite3 v1.14.24 // indirect - github.com/mgechev/revive v1.14.0 // indirect + github.com/mgechev/revive v1.15.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moricho/tparallel v0.3.2 // indirect @@ -195,10 +195,10 @@ require ( github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect - github.com/securego/gosec/v2 v2.23.0 // indirect + github.com/securego/gosec/v2 v2.24.7 // indirect github.com/sirupsen/logrus v1.9.4 // indirect github.com/sivchari/containedctx v1.0.3 // indirect - github.com/sonatard/noctx v0.4.0 // indirect + github.com/sonatard/noctx v0.5.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/sourcegraph/go-diff v0.7.0 // indirect github.com/spf13/afero v1.15.0 // indirect @@ -218,7 +218,7 @@ require ( github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect github.com/ultraware/funlen v0.2.0 // indirect github.com/ultraware/whitespace v0.2.0 // indirect - github.com/uudashr/gocognit v1.2.0 // indirect + github.com/uudashr/gocognit v1.2.1 // indirect github.com/uudashr/iface v1.4.1 // indirect github.com/weppos/publicsuffix-go v0.30.3-0.20240510084413-5f1d03393b3d // indirect github.com/xen0n/gosmopolitan v1.3.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 13c823d97e69..9307e1928b0d 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -33,8 +33,8 @@ github.com/Djarvur/go-err113 v0.1.1 h1:eHfopDqXRwAi+YmCUas75ZE0+hoBHJ2GQNLYRSxao github.com/Djarvur/go-err113 v0.1.1/go.mod h1:IaWJdYFLg76t2ihfflPZnM1LIQszWOsFDh2hhhAVF6k= github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= -github.com/MirrexOne/unqueryvet v1.5.3 h1:LpT3rsH+IY3cQddWF9bg4C7jsbASdGnrOSofY8IPEiw= -github.com/MirrexOne/unqueryvet v1.5.3/go.mod h1:fs9Zq6eh1LRIhsDIsxf9PONVUjYdFHdtkHIgZdJnyPU= +github.com/MirrexOne/unqueryvet v1.5.4 h1:38QOxShO7JmMWT+eCdDMbcUgGCOeJphVkzzRgyLJgsQ= +github.com/MirrexOne/unqueryvet v1.5.4/go.mod h1:fs9Zq6eh1LRIhsDIsxf9PONVUjYdFHdtkHIgZdJnyPU= github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= @@ -50,8 +50,8 @@ github.com/alexfalkowski/gocovmerge v1.11.0 h1:mHYRBKEBHxjTWveV6RCAnCAhF6l1evO9J github.com/alexfalkowski/gocovmerge v1.11.0/go.mod h1:gkfERgPiozeXq7FlJBQDmTeXo8FnrNxZwabB4uSGZ3M= github.com/alexkohler/nakedret/v2 v2.0.6 h1:ME3Qef1/KIKr3kWX3nti3hhgNxw6aqN5pZmQiFSsuzQ= github.com/alexkohler/nakedret/v2 v2.0.6/go.mod h1:l3RKju/IzOMQHmsEvXwkqMDzHHvurNQfAgE1eVmT40Q= -github.com/alexkohler/prealloc v1.0.2 h1:MPo8cIkGkZytq7WNH9UHv3DIX1mPz1RatPXnZb0zHWQ= -github.com/alexkohler/prealloc v1.0.2/go.mod h1:fT39Jge3bQrfA7nPMDngUfvUbQGQeJyGQnR+913SCig= +github.com/alexkohler/prealloc v1.1.0 h1:cKGRBqlXw5iyQGLYhrXrDlcHxugXpTq4tQ5c91wkf8M= +github.com/alexkohler/prealloc v1.1.0/go.mod h1:fT39Jge3bQrfA7nPMDngUfvUbQGQeJyGQnR+913SCig= github.com/alfatraining/structtag v1.0.0 h1:2qmcUqNcCoyVJ0up879K614L9PazjBSFruTB0GOFjCc= github.com/alfatraining/structtag v1.0.0/go.mod h1:p3Xi5SwzTi+Ryj64DqjLWz7XurHxbGsq6y3ubePJPus= github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= @@ -207,8 +207,8 @@ github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarog github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint/v2 v2.10.1 h1:flhw5Px6ojbLyEFzXvJn5B2HEdkkRlkhE1SnmCbQBiE= -github.com/golangci/golangci-lint/v2 v2.10.1/go.mod h1:dBsrOk6zj0vDhlTv+IiJGqkDokR24IVTS7W3EVfPTQY= +github.com/golangci/golangci-lint/v2 v2.11.1 h1:aGbjflzzKNIdOoq/NawrhFjYpkNY4WzPSeIp2zBbzG8= +github.com/golangci/golangci-lint/v2 v2.11.1/go.mod h1:wexdFBIQNhHNhDe1oqzlGFE5dYUqlfccWJKWjoWF1GI= github.com/golangci/golines v0.15.0 h1:Qnph25g8Y1c5fdo1X7GaRDGgnMHgnxh4Gk4VfPTtRx0= github.com/golangci/golines v0.15.0/go.mod h1:AZjXd23tbHMpowhtnGlj9KCNsysj72aeZVVHnVcZx10= github.com/golangci/misspell v0.8.0 h1:qvxQhiE2/5z+BVRo1kwYA8yGz+lOlu5Jfvtx2b04Jbg= @@ -282,8 +282,8 @@ github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx github.com/karamaru-alpha/copyloopvar v1.2.2 h1:yfNQvP9YaGQR7VaWLYcfZUlRP2eo2vhExWKxD/fP6q0= github.com/karamaru-alpha/copyloopvar v1.2.2/go.mod h1:oY4rGZqZ879JkJMtX3RRkcXRkmUvH0x35ykgaKgsgJY= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/errcheck v1.9.0 h1:9xt1zI9EBfcYBvdU1nVrzMzzUPUtPKs9bVSIM3TAb3M= -github.com/kisielk/errcheck v1.9.0/go.mod h1:kQxWMMVZgIkDq7U8xtG/n2juOjbLgZtedi0D+/VL/i8= +github.com/kisielk/errcheck v1.10.0 h1:Lvs/YAHP24YKg08LA8oDw2z9fJVme090RAXd90S+rrw= +github.com/kisielk/errcheck v1.10.0/go.mod h1:kQxWMMVZgIkDq7U8xtG/n2juOjbLgZtedi0D+/VL/i8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 h1:veS9QfglfvqAw2e+eeNT/SbGySq8ajECXJ9e4fPoLhY= github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= @@ -318,8 +318,8 @@ github.com/ldez/usetesting v0.5.0/go.mod h1:Spnb4Qppf8JTuRgblLrEWb7IE6rDmUpGvxY3 github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.11.1 h1:wuChtj2hfsGmmx3nf1m7xC2XpK6OtelS2shMY+bGMtI= -github.com/lib/pq v1.11.1/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA= +github.com/lib/pq v1.11.2 h1:x6gxUeu39V0BHZiugWe8LXZYZ+Utk7hSJGThs8sdzfs= +github.com/lib/pq v1.11.2/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/macabu/inamedparam v0.2.0 h1:VyPYpOc10nkhI2qeNUdh3Zket4fcZjEWe35poddBCpE= @@ -345,8 +345,8 @@ github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhg github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/mgechev/revive v1.14.0 h1:CC2Ulb3kV7JFYt+izwORoS3VT/+Plb8BvslI/l1yZsc= -github.com/mgechev/revive v1.14.0/go.mod h1:MvnujelCZBZCaoDv5B3foPo6WWgULSSFxvfxp7GsPfo= +github.com/mgechev/revive v1.15.0 h1:vJ0HzSBzfNyPbHKolgiFjHxLek9KUijhqh42yGoqZ8Q= +github.com/mgechev/revive v1.15.0/go.mod h1:LlAKO3QQe9OJ0pVZzI2GPa8CbXGZ/9lNpCGvK4T/a8A= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -429,8 +429,8 @@ github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tM github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= github.com/sashamelentyev/usestdlibvars v1.29.0 h1:8J0MoRrw4/NAXtjQqTHrbW9NN+3iMf7Knkq057v4XOQ= github.com/sashamelentyev/usestdlibvars v1.29.0/go.mod h1:8PpnjHMk5VdeWlVb4wCdrB8PNbLqZ3wBZTZWkrpZZL8= -github.com/securego/gosec/v2 v2.23.0 h1:h4TtF64qFzvnkqvsHC/knT7YC5fqyOCItlVR8+ptEBo= -github.com/securego/gosec/v2 v2.23.0/go.mod h1:qRHEgXLFuYUDkI2T7W7NJAmOkxVhkR0x9xyHOIcMNZ0= +github.com/securego/gosec/v2 v2.24.7 h1:3k5yJnrhT1TTdsG0ZsnenlfCcT+7Y/+zeCPHbL7QAn8= +github.com/securego/gosec/v2 v2.24.7/go.mod h1:AdDJbjcG/XxFgVv7pW19vMNYlFM6+Q6Qy3t6lWAUcEY= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= @@ -442,8 +442,8 @@ github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= -github.com/sonatard/noctx v0.4.0 h1:7MC/5Gg4SQ4lhLYR6mvOP6mQVSxCrdyiExo7atBs27o= -github.com/sonatard/noctx v0.4.0/go.mod h1:64XdbzFb18XL4LporKXp8poqZtPKbCrqQ402CV+kJas= +github.com/sonatard/noctx v0.5.0 h1:e/jdaqAsuWVOKQ0P6NWiIdDNHmHT5SwuuSfojFjzwrw= +github.com/sonatard/noctx v0.5.0/go.mod h1:64XdbzFb18XL4LporKXp8poqZtPKbCrqQ402CV+kJas= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= @@ -495,8 +495,8 @@ github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLk github.com/ultraware/funlen v0.2.0/go.mod h1:ZE0q4TsJ8T1SQcjmkhN/w+MceuatI6pBFSxxyteHIJA= github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSWoFa+g= github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= -github.com/uudashr/gocognit v1.2.0 h1:3BU9aMr1xbhPlvJLSydKwdLN3tEUUrzPSSM8S4hDYRA= -github.com/uudashr/gocognit v1.2.0/go.mod h1:k/DdKPI6XBZO1q7HgoV2juESI2/Ofj9AcHPZhBBdrTU= +github.com/uudashr/gocognit v1.2.1 h1:CSJynt5txTnORn/DkhiB4mZjwPuifyASC8/6Q0I/QS4= +github.com/uudashr/gocognit v1.2.1/go.mod h1:acaubQc6xYlXFEMb9nWX2dYBzJ/bIjEkc1zzvyIZg5Q= github.com/uudashr/iface v1.4.1 h1:J16Xl1wyNX9ofhpHmQ9h9gk5rnv2A6lX/2+APLTo0zU= github.com/uudashr/iface v1.4.1/go.mod h1:pbeBPlbuU2qkNDn0mmfrxP2X+wjPMIQAy+r1MBXSXtg= github.com/weppos/publicsuffix-go v0.13.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= From 4f3d3399f9ec58eb331c82bc39da98b28d0cdc7a Mon Sep 17 00:00:00 2001 From: Nont Date: Fri, 13 Mar 2026 09:20:43 -0500 Subject: [PATCH 0866/1068] Fix the antithesis build failure in #21473 Signed-off-by: Nont --- tests/antithesis/server/Dockerfile | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/antithesis/server/Dockerfile b/tests/antithesis/server/Dockerfile index 121a60b5e3e2..7814e4caef6a 100644 --- a/tests/antithesis/server/Dockerfile +++ b/tests/antithesis/server/Dockerfile @@ -35,6 +35,17 @@ RUN go mod tidy RUN mkdir /etcd_instrumented RUN `go env GOPATH`/bin/antithesis-go-instrumentor /etcd /etcd_instrumented +# Remove this once antithesis fixed the bug +# The instrumentor's notifier library doesn't preserve the go and toolchain directives +# This makes any subsequent `go mod tidy` run remove all the directives and replaced them with one generated by the notifier folder +# Updating /etcd_instrumented/notifier/go.mod with the original directives would prevent all subsequent `go mod tidy` from removing the directives +# However `go mod tidy` is already invoked by the instrumentor, so it needs to be fixed as well. +RUN for d in /etcd_instrumented/customer /etcd_instrumented/notifier; do \ + cd ${d}; \ + go mod edit -go=$(grep '^go ' /etcd/go.mod | cut -f2 -d' '); \ + go mod edit -toolchain=$(grep 'toolchain ' /etcd/go.mod | cut -f2 -d' '); \ + done + WORKDIR /etcd_instrumented/customer # Some previous versions hardcode CGO_ENABLED=0 From 2a49537307bd55d6a0819fbca81ee4029cd9685a Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 12 Mar 2026 19:13:21 +0100 Subject: [PATCH 0867/1068] Split traffic profile into 3 areas KeyValue, Watch and Compaction Signed-off-by: Marek Siarkowicz --- .../test-template/robustness/traffic/main.go | 56 ++++++----- tests/robustness/failpoint/trigger.go | 2 +- tests/robustness/main_test.go | 2 +- tests/robustness/scenarios/scenarios.go | 99 +++++++++++++------ tests/robustness/traffic/traffic.go | 86 +++++++++------- 5 files changed, 154 insertions(+), 91 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 161a04c5dda1..fbd4ede51982 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -42,12 +42,16 @@ var ( DefaultRevisionOffset = int64(100) profile = traffic.Profile{ - MinimalQPS: 100, - MaximalQPS: 1000, - BurstableQPS: 1000, - MemberClientCount: 3, - ClusterClientCount: 1, - MaxNonUniqueRequestConcurrency: 3, + KeyValue: &traffic.KeyValue{ + MinimalQPS: 100, + MaximalQPS: 1000, + BurstableQPS: 1000, + MemberClientCount: 3, + ClusterClientCount: 1, + MaxNonUniqueRequestConcurrency: 3, + }, + Watch: &traffic.WatchDefault, + Compaction: &traffic.CompactionDefault, } trafficNames = []string{ "etcd", @@ -142,11 +146,11 @@ func simulateTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, ho var wg sync.WaitGroup leaseStorage := identity.NewLeaseIDStorage() kubernetesStorage := traffic.NewKubernetesStorage() - limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), profile.BurstableQPS) - concurrencyLimiter := traffic.NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) + limiter := rate.NewLimiter(rate.Limit(profile.KeyValue.MaximalQPS), profile.KeyValue.BurstableQPS) + concurrencyLimiter := traffic.NewConcurrencyLimiter(profile.KeyValue.MaxNonUniqueRequestConcurrency) finish := closeAfter(ctx, duration) keyStore := traffic.NewKeyStore(10, "key") - for i := range profile.MemberClientCount { + for i := range profile.KeyValue.MemberClientCount { c := connect(clientSet, []string{hosts[i%len(hosts)]}) wg.Add(1) go func(c *client.RecordingClient) { @@ -164,7 +168,7 @@ func simulateTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, ho }) }(c) } - for range profile.ClusterClientCount { + for range profile.KeyValue.ClusterClientCount { c := connect(clientSet, hosts) wg.Add(1) go func(c *client.RecordingClient) { @@ -182,8 +186,8 @@ func simulateTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, ho }) }(c) } - if !profile.ForbidRunWatchLoop { - for i := range profile.MemberClientCount { + if profile.Watch != nil { + for i := range profile.Watch.MemberClientCount { c := connect(clientSet, []string{hosts[i%len(hosts)]}) wg.Add(1) go func(c *client.RecordingClient) { @@ -199,7 +203,7 @@ func simulateTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, ho }) }(c) } - for range profile.ClusterClientCount { + for range profile.Watch.ClusterClientCount { c := connect(clientSet, hosts) wg.Add(1) go func(c *client.RecordingClient) { @@ -216,18 +220,20 @@ func simulateTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, ho }(c) } } - wg.Add(1) - compactClient := connect(clientSet, hosts) - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - tf.RunCompactLoop(ctx, traffic.RunCompactLoopParam{ - Client: c, - Period: traffic.DefaultCompactionPeriod, - Finish: finish, - }) - }(compactClient) - defragPeriod := traffic.DefaultCompactionPeriod * time.Duration(len(hosts)) + if profile.Compaction != nil { + wg.Add(1) + compactClient := connect(clientSet, hosts) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + tf.RunCompactLoop(ctx, traffic.RunCompactLoopParam{ + Client: c, + Period: profile.Compaction.Period, + Finish: finish, + }) + }(compactClient) + } + defragPeriod := profile.Compaction.Period * time.Duration(len(hosts)) for _, h := range hosts { c := connect(clientSet, []string{h}) wg.Add(1) diff --git a/tests/robustness/failpoint/trigger.go b/tests/robustness/failpoint/trigger.go index 05caded26df1..44ed69f439ec 100644 --- a/tests/robustness/failpoint/trigger.go +++ b/tests/robustness/failpoint/trigger.go @@ -91,7 +91,7 @@ func (t triggerCompact) Trigger(ctx context.Context, _ *testing.T, member e2e.Et } func (t triggerCompact) Available(config e2e.EtcdProcessClusterConfig, _ e2e.EtcdProcess, profile traffic.Profile) bool { - if profile.ForbidCompaction { + if profile.Compaction != nil { return false } // Since the introduction of compaction into traffic, injecting compaction failpoints started interfering with the peer proxy. diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index be053f2356eb..239b12cac7c7 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -45,7 +45,7 @@ var testRunner = framework.E2eTestRunner var ( WaitBeforeFailpoint = time.Second - WaitJitter = traffic.DefaultCompactionPeriod + WaitJitter = time.Millisecond * 200 WaitAfterFailpoint = time.Second ) diff --git a/tests/robustness/scenarios/scenarios.go b/tests/robustness/scenarios/scenarios.go index 4b1febf42bc8..af6d5d320b86 100644 --- a/tests/robustness/scenarios/scenarios.go +++ b/tests/robustness/scenarios/scenarios.go @@ -43,22 +43,38 @@ var trafficProfiles = []TrafficProfile{ { Name: "EtcdHighTraffic", Traffic: traffic.EtcdPut, - Profile: traffic.HighTrafficProfile, + Profile: traffic.Profile{ + KeyValue: &traffic.KeyValueHigh, + Watch: &traffic.WatchDefault, + Compaction: &traffic.CompactionDefault, + }, }, { Name: "EtcdTrafficDeleteLeases", Traffic: traffic.EtcdPutDeleteLease, - Profile: traffic.LowTraffic, + Profile: traffic.Profile{ + KeyValue: &traffic.KeyValueMedium, + Watch: &traffic.WatchDefault, + Compaction: &traffic.CompactionDefault, + }, }, { Name: "KubernetesHighTraffic", Traffic: traffic.Kubernetes, - Profile: traffic.HighTrafficProfile, + Profile: traffic.Profile{ + KeyValue: &traffic.KeyValueHigh, + Watch: &traffic.WatchDefault, + Compaction: &traffic.CompactionDefault, + }, }, { Name: "KubernetesLowTraffic", Traffic: traffic.Kubernetes, - Profile: traffic.LowTraffic, + Profile: traffic.Profile{ + KeyValue: &traffic.KeyValueMedium, + Watch: &traffic.WatchDefault, + Compaction: &traffic.CompactionDefault, + }, }, } @@ -141,15 +157,17 @@ func Exploratory(_ *testing.T) []TestScenario { newScenarios := scenarios for _, s := range scenarios { // LazyFS increases the load on the CPU, so we run it with a more lightweight case. - if s.Profile.MinimalQPS <= 100 && s.Cluster.ClusterSize == 1 { + if s.Profile.KeyValue.MinimalQPS <= 100 && s.Cluster.ClusterSize == 1 { lazyfsCluster := s.Cluster lazyfsCluster.LazyFSEnabled = true + profileWithoutCompaction := s.Profile + profileWithoutCompaction.Compaction = nil newScenarios = append(newScenarios, TestScenario{ Name: filepath.Join(s.Name, "LazyFS"), Failpoint: s.Failpoint, Cluster: lazyfsCluster, Traffic: s.Traffic, - Profile: s.Profile.WithoutCompaction(), + Profile: profileWithoutCompaction, Watch: s.Watch, }) } @@ -167,8 +185,11 @@ func Regression(t *testing.T) []TestScenario { scenarios = append(scenarios, TestScenario{ Name: "Issue14370", Failpoint: failpoint.RaftBeforeSavePanic, - Profile: traffic.LowTraffic.WithoutWatchLoop(), - Traffic: traffic.EtcdPutDeleteLease, + Profile: traffic.Profile{ + KeyValue: &traffic.KeyValueMedium, + Compaction: &traffic.CompactionDefault, + }, + Traffic: traffic.EtcdPutDeleteLease, Cluster: *e2e.NewConfig( e2e.WithClusterSize(1), e2e.WithGoFailEnabled(true), @@ -177,8 +198,11 @@ func Regression(t *testing.T) []TestScenario { scenarios = append(scenarios, TestScenario{ Name: "Issue14685", Failpoint: failpoint.DefragBeforeCopyPanic, - Profile: traffic.LowTraffic.WithoutWatchLoop(), - Traffic: traffic.EtcdPutDeleteLease, + Profile: traffic.Profile{ + KeyValue: &traffic.KeyValueMedium, + Compaction: &traffic.CompactionDefault, + }, + Traffic: traffic.EtcdPutDeleteLease, Cluster: *e2e.NewConfig( e2e.WithClusterSize(1), e2e.WithGoFailEnabled(true), @@ -187,8 +211,11 @@ func Regression(t *testing.T) []TestScenario { scenarios = append(scenarios, TestScenario{ Name: "Issue13766", Failpoint: failpoint.KillFailpoint, - Profile: traffic.HighTrafficProfile.WithoutWatchLoop(), - Traffic: traffic.EtcdPut, + Profile: traffic.Profile{ + KeyValue: &traffic.KeyValueHigh, + Compaction: &traffic.CompactionDefault, + }, + Traffic: traffic.EtcdPut, Cluster: *e2e.NewConfig( e2e.WithSnapshotCount(100), ), @@ -198,7 +225,11 @@ func Regression(t *testing.T) []TestScenario { Watch: client.WatchConfig{ RequestProgress: true, }, - Profile: traffic.LowTraffic, + Profile: traffic.Profile{ + KeyValue: &traffic.KeyValueMedium, + Watch: &traffic.WatchDefault, + Compaction: &traffic.CompactionDefault, + }, Traffic: traffic.EtcdPutDeleteLease, Failpoint: failpoint.KillFailpoint, Cluster: *e2e.NewConfig( @@ -206,8 +237,12 @@ func Regression(t *testing.T) []TestScenario { ), }) scenarios = append(scenarios, TestScenario{ - Name: "Issue17529", - Profile: traffic.HighTrafficProfile, + Name: "Issue17529", + Profile: traffic.Profile{ + KeyValue: &traffic.KeyValueHigh, + Watch: &traffic.WatchDefault, + Compaction: &traffic.CompactionDefault, + }, Traffic: traffic.Kubernetes, Failpoint: failpoint.SleepBeforeSendWatchResponse, Cluster: *e2e.NewConfig( @@ -218,8 +253,10 @@ func Regression(t *testing.T) []TestScenario { }) scenarios = append(scenarios, TestScenario{ - Name: "Issue17780", - Profile: traffic.LowTraffic.WithoutCompaction().WithoutWatchLoop(), + Name: "Issue17780", + Profile: traffic.Profile{ + KeyValue: &traffic.KeyValueMedium, + }, Failpoint: failpoint.BatchCompactBeforeSetFinishedCompactPanic, Traffic: traffic.Kubernetes, Cluster: *e2e.NewConfig( @@ -245,13 +282,9 @@ func Regression(t *testing.T) []TestScenario { scenarios = append(scenarios, TestScenario{ Name: "Issue19179", Profile: traffic.Profile{ - MinimalQPS: 50, - MaximalQPS: 100, - BurstableQPS: 100, - MemberClientCount: 6, - ClusterClientCount: 2, - MaxNonUniqueRequestConcurrency: 3, - }.WithoutCompaction(), + KeyValue: &traffic.KeyValueVeryLow, + Watch: &traffic.WatchDefault, + }, Failpoint: failpoint.BatchCompactBeforeSetFinishedCompactPanic, Traffic: traffic.KubernetesCreateDelete, Cluster: *e2e.NewConfig( @@ -262,8 +295,12 @@ func Regression(t *testing.T) []TestScenario { ), }) scenarios = append(scenarios, TestScenario{ - Name: "Issue18089", - Profile: traffic.LowTraffic.WithCompactionPeriod(100 * time.Millisecond), // Use frequent compaction for high reproduce rate + Name: "Issue18089", + Profile: traffic.Profile{ + KeyValue: &traffic.KeyValueMedium, + Compaction: &traffic.CompactionFrequent, // Use frequent compaction for high reproduce rate + Watch: &traffic.WatchDefault, + }, Failpoint: failpoint.SleepBeforeSendWatchResponse, Traffic: traffic.EtcdDelete, Cluster: *e2e.NewConfig( @@ -283,9 +320,13 @@ func Regression(t *testing.T) []TestScenario { scenarios = append(scenarios, TestScenario{ Name: "Issue15271", Failpoint: failpoint.BlackholeUntilSnapshot, - Profile: traffic.HighTrafficProfile, - Traffic: traffic.EtcdPut, - Cluster: *e2e.NewConfig(opts...), + Profile: traffic.Profile{ + KeyValue: &traffic.KeyValueHigh, + Compaction: &traffic.CompactionDefault, + Watch: &traffic.WatchDefault, + }, + Traffic: traffic.EtcdPut, + Cluster: *e2e.NewConfig(opts...), }) } return scenarios diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index e6bf28edf661..6beaf498a9c6 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -38,10 +38,17 @@ var ( RequestTimeout = 200 * time.Millisecond WatchTimeout = 500 * time.Millisecond MultiOpTxnOpCount = 4 - DefaultCompactionPeriod = 200 * time.Millisecond - DefaultRevisionOffset = int64(100) + MinimalCompactionPeriod = 100 * time.Millisecond - LowTraffic = Profile{ + KeyValueVeryLow = KeyValue{ + MinimalQPS: 50, + MaximalQPS: 100, + BurstableQPS: 100, + MemberClientCount: 6, + ClusterClientCount: 2, + MaxNonUniqueRequestConcurrency: 3, + } + KeyValueMedium = KeyValue{ MinimalQPS: 100, MaximalQPS: 200, BurstableQPS: 1000, @@ -49,7 +56,7 @@ var ( ClusterClientCount: 2, MaxNonUniqueRequestConcurrency: 3, } - HighTrafficProfile = Profile{ + KeyValueHigh = KeyValue{ MinimalQPS: 100, MaximalQPS: 1000, BurstableQPS: 1000, @@ -57,6 +64,17 @@ var ( ClusterClientCount: 2, MaxNonUniqueRequestConcurrency: 3, } + WatchDefault = Watch{ + MemberClientCount: 6, + ClusterClientCount: 2, + RevisionOffset: 100, + } + CompactionDefault = Compaction{ + Period: 200 * time.Millisecond, + } + CompactionFrequent = Compaction{ + Period: 100 * time.Millisecond, + } ) func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2e.EtcdProcessCluster, profile Profile, traffic Traffic, failpointInjected <-chan report.FailpointInjection, clientSet *client.ClientSet) []report.ClientReport { @@ -64,13 +82,13 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 lm := identity.NewLeaseIDStorage() // Use the highest MaximalQPS of all traffic profiles as burst otherwise actual traffic may be accidentally limited - limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), profile.BurstableQPS) + limiter := rate.NewLimiter(rate.Limit(profile.KeyValue.MaximalQPS), profile.KeyValue.BurstableQPS) err := CheckEmptyDatabaseAtStart(ctx, lg, endpoints, clientSet) require.NoError(t, err) wg := sync.WaitGroup{} - nonUniqueWriteLimiter := NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency) + nonUniqueWriteLimiter := NewConcurrencyLimiter(profile.KeyValue.MaxNonUniqueRequestConcurrency) finish := make(chan struct{}) keyStore := NewKeyStore(10, "key") @@ -78,7 +96,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 lg.Info("Start traffic") startTime := time.Since(clientSet.BaseTime()) - for i := range profile.MemberClientCount { + for i := range profile.KeyValue.MemberClientCount { wg.Add(1) c, nerr := clientSet.NewClient([]string{endpoints[i%len(endpoints)]}) @@ -99,7 +117,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 }) }(c) } - for range profile.ClusterClientCount { + for range profile.KeyValue.ClusterClientCount { wg.Add(1) c, nerr := clientSet.NewClient(endpoints) @@ -120,8 +138,8 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 }) }(c) } - if !profile.ForbidRunWatchLoop { - for i := range profile.MemberClientCount { + if profile.Watch != nil { + for i := range profile.Watch.MemberClientCount { wg.Add(1) c, nerr := clientSet.NewClient([]string{endpoints[i%len(endpoints)]}) require.NoError(t, nerr) @@ -138,7 +156,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 }) }(c) } - for range profile.ClusterClientCount { + for range profile.Watch.ClusterClientCount { wg.Add(1) c, nerr := clientSet.NewClient(endpoints) require.NoError(t, nerr) @@ -156,24 +174,23 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 }(c) } } - if !profile.ForbidCompaction { + if profile.Compaction != nil { wg.Add(1) c, nerr := clientSet.NewClient(endpoints) if nerr != nil { t.Fatal(nerr) } + + if profile.Compaction.Period < MinimalCompactionPeriod { + t.Fatalf("Compaction period %v below minimal %v", profile.Compaction.Period, MinimalCompactionPeriod) + } go func(c *client.RecordingClient) { defer wg.Done() defer c.Close() - compactionPeriod := DefaultCompactionPeriod - if profile.CompactPeriod != time.Duration(0) { - compactionPeriod = profile.CompactPeriod - } - traffic.RunCompactLoop(ctx, RunCompactLoopParam{ Client: c, - Period: compactionPeriod, + Period: profile.Compaction.Period, Finish: finish, }) }(c) @@ -213,8 +230,8 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 watchTotal := CalculateWatchStats(reports, startTime, endTime) lg.Info("Reporting complete watch", zap.Int("requests", watchTotal.Requests), zap.Int("events", watchTotal.Events), zap.Float64("eventsQPS", watchTotal.EventsQPS()), zap.Int("progressNotifies", watchTotal.ProgressNotifies), zap.Int("immediateClosures", watchTotal.ImmediateClosures), zap.Duration("period", watchTotal.Period), zap.Duration("avgDuration", watchTotal.AvgDuration())) - if beforeFailpointStats.QPS() < profile.MinimalQPS { - t.Errorf("Requiring minimal %f qps before failpoint injection for test results to be reliable, got %f qps", profile.MinimalQPS, beforeFailpointStats.QPS()) + if beforeFailpointStats.QPS() < profile.KeyValue.MinimalQPS { + t.Errorf("Requiring minimal %f qps before failpoint injection for test results to be reliable, got %f qps", profile.KeyValue.MinimalQPS, beforeFailpointStats.QPS()) } // TODO: Validate QPS post failpoint injection to ensure that we sufficiently cover the period when the cluster recovers. return reports @@ -328,30 +345,28 @@ func (ts *trafficStats) QPS() float64 { } type Profile struct { + KeyValue *KeyValue + Watch *Watch + Compaction *Compaction +} + +type KeyValue struct { MinimalQPS float64 MaximalQPS float64 BurstableQPS int MaxNonUniqueRequestConcurrency int MemberClientCount int ClusterClientCount int - ForbidCompaction bool - CompactPeriod time.Duration - ForbidRunWatchLoop bool -} - -func (p Profile) WithoutCompaction() Profile { - p.ForbidCompaction = true - return p } -func (p Profile) WithCompactionPeriod(cp time.Duration) Profile { - p.CompactPeriod = cp - return p +type Watch struct { + MemberClientCount int + ClusterClientCount int + RevisionOffset int64 } -func (p Profile) WithoutWatchLoop() Profile { - p.ForbidRunWatchLoop = true - return p +type Compaction struct { + Period time.Duration } type RunTrafficLoopParam struct { @@ -372,6 +387,7 @@ type RunCompactLoopParam struct { } type RunWatchLoopParam struct { + Config Watch Client *client.RecordingClient QPSLimiter *rate.Limiter // TODO: merge 2 key stores into 1 @@ -415,7 +431,7 @@ func runWatch(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) err if err != nil { return err } - rev := resp.Header.Revision + DefaultRevisionOffset + rev := resp.Header.Revision + p.Config.RevisionOffset watchCtx, watchCancel := context.WithTimeout(ctx, WatchTimeout) defer watchCancel() From f1213672d0f530c3ec398aaa61f047e85f1a46bb Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 25 Feb 2026 08:02:15 +0100 Subject: [PATCH 0868/1068] robustness: make revision offset configurable Signed-off-by: Chun-Hung Tseng --- .../test-template/robustness/traffic/main.go | 5 ++-- tests/robustness/traffic/traffic.go | 29 ++++++++++++++----- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index fbd4ede51982..a8a88f94b3ce 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -38,8 +38,7 @@ import ( ) var ( - DefaultWatchInterval = 250 * time.Millisecond - DefaultRevisionOffset = int64(100) + DefaultWatchInterval = 250 * time.Millisecond profile = traffic.Profile{ KeyValue: &traffic.KeyValue{ @@ -194,6 +193,7 @@ func simulateTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, ho defer wg.Done() defer c.Close() tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ + Config: *profile.Watch, Client: c, QPSLimiter: limiter, KeyStore: keyStore, @@ -210,6 +210,7 @@ func simulateTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, ho defer wg.Done() defer c.Close() tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ + Config: *profile.Watch, Client: c, QPSLimiter: limiter, KeyStore: keyStore, diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index 6beaf498a9c6..4d22f376a82d 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -29,10 +29,23 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/client" "go.etcd.io/etcd/tests/v3/robustness/identity" "go.etcd.io/etcd/tests/v3/robustness/model" + "go.etcd.io/etcd/tests/v3/robustness/random" "go.etcd.io/etcd/tests/v3/robustness/report" "go.etcd.io/etcd/tests/v3/robustness/validate" ) +type Range struct { + Min int64 + Max int64 +} + +func (r Range) Rand() int64 { + if r.Min == r.Max { + return r.Min + } + return random.RandRange(r.Min, r.Max+1) +} + var ( DefaultLeaseTTL int64 = 7200 RequestTimeout = 200 * time.Millisecond @@ -65,9 +78,9 @@ var ( MaxNonUniqueRequestConcurrency: 3, } WatchDefault = Watch{ - MemberClientCount: 6, - ClusterClientCount: 2, - RevisionOffset: 100, + MemberClientCount: 6, + ClusterClientCount: 2, + RevisionOffsetRange: Range{Min: -100, Max: 100}, } CompactionDefault = Compaction{ Period: 200 * time.Millisecond, @@ -147,6 +160,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 defer wg.Done() defer c.Close() traffic.RunWatchLoop(ctx, RunWatchLoopParam{ + Config: *profile.Watch, Client: c, QPSLimiter: limiter, KeyStore: keyStore, @@ -164,6 +178,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 defer wg.Done() defer c.Close() traffic.RunWatchLoop(ctx, RunWatchLoopParam{ + Config: *profile.Watch, Client: c, QPSLimiter: limiter, KeyStore: keyStore, @@ -360,9 +375,9 @@ type KeyValue struct { } type Watch struct { - MemberClientCount int - ClusterClientCount int - RevisionOffset int64 + MemberClientCount int + ClusterClientCount int + RevisionOffsetRange Range } type Compaction struct { @@ -431,7 +446,7 @@ func runWatch(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) err if err != nil { return err } - rev := resp.Header.Revision + p.Config.RevisionOffset + rev := resp.Header.Revision + p.Config.RevisionOffsetRange.Rand() watchCtx, watchCancel := context.WithTimeout(ctx, WatchTimeout) defer watchCancel() From 5080de6be401aef0a1d01c3b5adb4120bfdf2aea Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 17 Mar 2026 19:29:12 +0100 Subject: [PATCH 0869/1068] Improve robustness benchmarks Analysed linearization timeouts in Antithesis platform. Based on that created dedicated benchmark BacktracingHeavy to cause similar CPU profile targetting the nonDeterministicModel.Equal method to >50% usage. Improved names of other benchmarks and retuned them to execute in 20ms allowing shuffling to make results more reliable. Signed-off-by: Marek Siarkowicz --- tests/robustness/model/replay.go | 10 ++ tests/robustness/validate/operations_test.go | 103 +++++++++++++++---- 2 files changed, 91 insertions(+), 22 deletions(-) diff --git a/tests/robustness/model/replay.go b/tests/robustness/model/replay.go index 22f087cebd86..f7dfadcf32e1 100644 --- a/tests/robustness/model/replay.go +++ b/tests/robustness/model/replay.go @@ -18,8 +18,18 @@ import ( "fmt" "sort" "strings" + + "github.com/anishathalye/porcupine" ) +func NewReplayFromOperations(ops []porcupine.Operation) *EtcdReplay { + requests := []EtcdRequest{} + for _, op := range ops { + requests = append(requests, op.Input.(EtcdRequest)) + } + return NewReplay(requests) +} + func NewReplay(persistedRequests []EtcdRequest) *EtcdReplay { state := freshEtcdState() // Padding for index 0 and 1, so the index matches the revision. diff --git a/tests/robustness/validate/operations_test.go b/tests/robustness/validate/operations_test.go index e6ffd9fcaf79..9033e9a616c0 100644 --- a/tests/robustness/validate/operations_test.go +++ b/tests/robustness/validate/operations_test.go @@ -296,56 +296,60 @@ func keyValueRevision(key, value string, rev int64) model.KeyValue { func BenchmarkValidateLinearizableOperations(b *testing.B) { lg := zap.NewNop() - b.Run("Successes", func(b *testing.B) { - history := allPutSuccesses(1000) + b.Run("SequentialSuccessPuts", func(b *testing.B) { + history := sequentialSuccessPuts(7000, 2) shuffles := shuffleHistory(history, b.N) b.ResetTimer() validateShuffles(b, lg, shuffles, time.Second) }) - b.Run("AllFailures", func(b *testing.B) { - history := allPutFailures(10) + b.Run("SequentialFailedPuts", func(b *testing.B) { + history := sequentialFailedPuts(14, 1) shuffles := shuffleHistory(history, b.N) b.ResetTimer() validateShuffles(b, lg, shuffles, time.Second) }) - b.Run("PutFailuresWithRead", func(b *testing.B) { - history := putFailuresWithRead(b, 8) + b.Run("ConcurrentFailedPutsWithRead", func(b *testing.B) { + history := concurrentFailedPutsWithRead(b, 13) shuffles := shuffleHistory(history, b.N) b.ResetTimer() validateShuffles(b, lg, shuffles, time.Second) }) + b.Run("BacktrackingHeavy", func(b *testing.B) { + history := backtrackingHeavy(b) + shuffles := shuffleHistory(history, b.N) + b.ResetTimer() + for i := 0; i < len(shuffles); i++ { + validateLinearizableOperationsAndVisualize(lg, shuffles[i], time.Second) + } + }) } -func allPutSuccesses(concurrencyCount int) []porcupine.Operation { +func sequentialSuccessPuts(count int, startRevision int64) []porcupine.Operation { ops := []porcupine.Operation{} - for i := 0; i < concurrencyCount; i++ { + for i := 0; i < count; i++ { ops = append(ops, porcupine.Operation{ ClientId: i, Input: putRequest("key", "value"), - Output: txnResponse(int64(i)+2, model.EtcdOperationResult{}), - Call: int64(i), - Return: int64(i) + int64(concurrencyCount), + Output: txnResponse(startRevision+int64(i), model.EtcdOperationResult{}), + Call: int64(i * 2), + Return: int64(i*2 + 1), }) } return ops } -func putFailuresWithRead(b *testing.B, concurrencyCount int) []porcupine.Operation { +func concurrentFailedPutsWithRead(b *testing.B, concurrencyCount int) []porcupine.Operation { ops := []porcupine.Operation{} for i := 0; i < concurrencyCount; i++ { ops = append(ops, porcupine.Operation{ ClientId: i, - Input: putRequest(fmt.Sprintf("key%d", i), "value"), + Input: putRequest("key", "value"), Output: errorResponse(fmt.Errorf("timeout")), Call: int64(i), Return: int64(i) + int64(concurrencyCount), }) } - requests := []model.EtcdRequest{} - for _, op := range ops { - requests = append(requests, op.Input.(model.EtcdRequest)) - } - replay := model.NewReplay(requests) + replay := model.NewReplayFromOperations(ops) state, err := replay.StateForRevision(int64(concurrencyCount) + 1) if err != nil { b.Fatal(err) @@ -362,17 +366,72 @@ func putFailuresWithRead(b *testing.B, concurrencyCount int) []porcupine.Operati return ops } -func allPutFailures(concurrencyCount int) []porcupine.Operation { +func sequentialFailedPuts(count int, keyCount int) []porcupine.Operation { ops := []porcupine.Operation{} - for i := 0; i < concurrencyCount; i++ { + for i := 0; i < count; i++ { + key := "key0" + if keyCount > 1 { + key = fmt.Sprintf("key%d", i%keyCount) + } ops = append(ops, porcupine.Operation{ ClientId: i, - Input: putRequest("key", "value"), + Input: putRequest(key, "value"), Output: errorResponse(fmt.Errorf("timeout")), + Call: int64(i * 2), + Return: int64(i*2 + 1), + }) + } + return ops +} + +func backtrackingHeavy(b *testing.B) (ops []porcupine.Operation) { + for i := 0; i < 30; i++ { + ops = append(ops, porcupine.Operation{ + ClientId: -1, + Input: putRequest(fmt.Sprintf("key%d", i+1000), "value"), + Output: txnResponse(int64(i+2), model.EtcdOperationResult{}), Call: int64(i), - Return: int64(i) + int64(concurrencyCount), + Return: int64(i) + 1, + }) + } + startTime := int64(1000) + + failedPuts := 4 + for i := 0; i < failedPuts; i++ { + ops = append(ops, porcupine.Operation{ + ClientId: i, + Input: putRequest(fmt.Sprintf("key%d", i), "value"), + Output: errorResponse(fmt.Errorf("timeout")), + Call: startTime + int64(i), + Return: startTime + 1000 + int64(i), + }) + } + replay := model.NewReplayFromOperations(ops) + state, err := replay.StateForRevision(int64(30 + 1)) + if err != nil { + b.Fatal(err) + } + + concurrentReads := 3 + for i := 0; i < concurrentReads; i++ { + request := rangeRequest(fmt.Sprintf("key%d", i), "", 0, 0) + _, resp := state.Step(request) + ops = append(ops, porcupine.Operation{ + ClientId: failedPuts + i, + Input: request, + Output: resp, + Call: startTime + 1100, + Return: startTime + 2100, }) } + + ops = append(ops, porcupine.Operation{ + ClientId: 99, + Input: rangeRequest("key0", "", 0, 0), + Output: rangeResponse(0, keyValueRevision("key0", "wrong", 9999)), + Call: startTime + 3000, + Return: startTime + 4000, + }) return ops } From 4304ef1787b8a701100fe1b31340e87be00f64c9 Mon Sep 17 00:00:00 2001 From: Himanshu Singh Date: Thu, 15 Jan 2026 15:03:56 +0000 Subject: [PATCH 0870/1068] fix: Create scripts/fix/bom.sh and remove updatebom.sh - Create scripts/fix/bom.sh to generate bill-of-materials.json - Add intentional first execution to fetch dependencies (avoids dirty state in clean repos) - Use load_workspace_relative_modules_for_bom for proper module list - Protect go.sum and go.mod with temporary backups during generation - Run license-bill-of-materials with GOOS=linux for consistent output - Add ETCD_ROOT_DIR support for dynamic path resolution - Update Makefile fix-bom target to use the new script - Remove scripts/updatebom.sh (functionality now in scripts/fix/bom.sh) - Use 'exit' instead of 'return' (return only works in functions/sourced scripts) - Add || true to first BOM run to ignore expected failures - Verified: bash syntax, shellcheck -x, make verify-shellcheck all passed Signed-off-by: Himanshu Singh --- Makefile | 2 +- scripts/fix/bom.sh | 53 ++++++++++++++++++++++++++++++++++++++++++ scripts/updatebom.sh | 55 -------------------------------------------- 3 files changed, 54 insertions(+), 56 deletions(-) create mode 100755 scripts/fix/bom.sh delete mode 100755 scripts/updatebom.sh diff --git a/Makefile b/Makefile index 12503f0d0aa2..98a6a8f3c279 100644 --- a/Makefile +++ b/Makefile @@ -111,7 +111,7 @@ verify-bom: .PHONY: fix-bom fix-bom: - ./scripts/updatebom.sh + ./scripts/fix/bom.sh .PHONY: verify-dep verify-dep: diff --git a/scripts/fix/bom.sh b/scripts/fix/bom.sh new file mode 100755 index 000000000000..423552045090 --- /dev/null +++ b/scripts/fix/bom.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +# Copyright 2026 The etcd Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euo pipefail + +ETCD_ROOT_DIR=${ETCD_ROOT_DIR:-$(git rev-parse --show-toplevel)} +source "${ETCD_ROOT_DIR}/scripts/test_lib.sh" + +log_callout "Generating bill of materials..." + +_bom_modules=() +load_workspace_relative_modules_for_bom _bom_modules + +# Internally license-bill-of-materials tends to modify go.sum +run cp go.sum go.sum.tmp || exit 2 +run cp go.mod go.mod.tmp || exit 2 + +# Intentionally run the command once first, so it fetches dependencies. The exit code on the first +# run in a just cloned repository is always dirty. +GOOS=linux run_go_tool github.com/appscodelabs/license-bill-of-materials \ + --override-file ./bill-of-materials.override.json "${_bom_modules[@]}" &>/dev/null || true + +# BOM file should be generated for linux. Otherwise running this command on other operating systems such as OSX +# results in certain dependencies being excluded from the BOM file, such as procfs. +# For more info, https://github.com/etcd-io/etcd/issues/19665 +output=$(GOOS=linux run_go_tool github.com/appscodelabs/license-bill-of-materials \ + --override-file ./bill-of-materials.override.json \ + "${_bom_modules[@]}") +code="$?" + +run cp go.sum.tmp go.sum || exit 2 +run cp go.mod.tmp go.mod || exit 2 + +if [ "${code}" -ne 0 ]; then + log_error -e "license-bill-of-materials (code: ${code}) failed with:\\n${output}" + exit 255 +fi + +echo "${output}" > bill-of-materials.json +log_success "bill-of-materials.json generated" diff --git a/scripts/updatebom.sh b/scripts/updatebom.sh deleted file mode 100755 index 710ffac17134..000000000000 --- a/scripts/updatebom.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2025 The etcd Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -euo pipefail - -source ./scripts/test_lib.sh - -function bom_fix { - log_callout "generating bill-of-materials.json" - - cp go.mod go.mod.tmp - cp go.sum go.sum.tmp - - local _bom_modules=() - load_workspace_relative_modules_for_bom _bom_modules - - # Intentionally run the command once first, so it fetches dependencies. The exit code on the first - # run in a just cloned repository is always dirty. - GOOS=linux run_go_tool github.com/appscodelabs/license-bill-of-materials \ - --override-file ./bill-of-materials.override.json "${_bom_modules[@]}" &>/dev/null - - # BOM file should be generated for linux. Otherwise running this command on other operating systems such as OSX - # results in certain dependencies being excluded from the BOM file, such as procfs. - # For more info, https://github.com/etcd-io/etcd/issues/19665 - if GOOS=linux run_go_tool "github.com/appscodelabs/license-bill-of-materials" \ - --override-file ./bill-of-materials.override.json \ - "${_bom_modules[@]}" > ./bill-of-materials.json.tmp; then - cp ./bill-of-materials.json.tmp ./bill-of-materials.json - log_success "bom refreshed" - else - log_error "FAIL: bom refreshing failed" - mv go.mod.tmp go.mod - mv go.sum.tmp go.sum - return 2 - fi - mv go.mod.tmp go.mod - mv go.sum.tmp go.sum -} - -# only build when called directly, not sourced -if [[ "$0" =~ updatebom.sh$ ]]; then - bom_fix -fi From 8706ee9439456504ced8ee27c3396704fd247824 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 20 Mar 2026 09:30:48 +0000 Subject: [PATCH 0871/1068] Bump google.golang.org/grpc to v1.79.3 Signed-off-by: Benjamin Wang --- api/go.mod | 8 ++++---- api/go.sum | 16 ++++++++-------- bill-of-materials.json | 9 --------- cache/go.mod | 8 ++++---- cache/go.sum | 16 ++++++++-------- client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 8 ++++---- client/v3/go.sum | 16 ++++++++-------- etcdctl/go.mod | 8 ++++---- etcdctl/go.sum | 16 ++++++++-------- etcdutl/go.mod | 10 +++++----- etcdutl/go.sum | 24 ++++++++++++------------ go.mod | 12 ++++++------ go.sum | 24 ++++++++++++------------ pkg/go.mod | 8 ++++---- pkg/go.sum | 16 ++++++++-------- server/go.mod | 10 +++++----- server/go.sum | 24 ++++++++++++------------ tests/go.mod | 12 ++++++------ tests/go.sum | 24 ++++++++++++------------ tools/mod/go.mod | 14 +++++++------- tools/mod/go.sum | 28 ++++++++++++++-------------- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 8 ++++---- tools/testgrid-analysis/go.sum | 16 ++++++++-------- 27 files changed, 169 insertions(+), 178 deletions(-) diff --git a/api/go.mod b/api/go.mod index 297c66177937..c6d886286a24 100644 --- a/api/go.mod +++ b/api/go.mod @@ -10,7 +10,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 github.com/stretchr/testify v1.11.1 google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 - google.golang.org/grpc v1.79.2 + google.golang.org/grpc v1.79.3 google.golang.org/protobuf v1.36.11 ) @@ -20,9 +20,9 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.42.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 4616a16f5b58..ea23e9eafb8d 100644 --- a/api/go.sum +++ b/api/go.sum @@ -38,20 +38,20 @@ go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9 go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/bill-of-materials.json b/bill-of-materials.json index 49e4831088d4..9a4265c164cd 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -17,15 +17,6 @@ } ] }, - { - "project": "github.com/antithesishq/antithesis-sdk-go", - "licenses": [ - { - "type": "MIT License", - "confidence": 1 - } - ] - }, { "project": "github.com/beorn7/perks/quantile", "licenses": [ diff --git a/cache/go.mod b/cache/go.mod index 1faf60f1169f..4af834e9bfd1 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -22,12 +22,12 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/grpc v1.79.2 // indirect + google.golang.org/grpc v1.79.3 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index 0fab37d686e3..5b252d0ba983 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -64,20 +64,20 @@ go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 42e46a031d17..16958cced44e 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.7.0 github.com/stretchr/testify v1.11.1 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.41.0 + golang.org/x/sys v0.42.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index 081cf854dfb8..a738d0455ddc 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -24,8 +24,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index 1bdd17c6e6d6..d68f5b6cb2b8 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.1 - google.golang.org/grpc v1.79.2 + google.golang.org/grpc v1.79.3 sigs.k8s.io/yaml v1.6.0 ) @@ -35,9 +35,9 @@ require ( go.opentelemetry.io/otel/trace v1.42.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/protobuf v1.36.11 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 235afeed756c..1adb59cacab1 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -72,20 +72,20 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 0ffeb5291f6a..e633ad3e2ea2 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.79.2 + google.golang.org/grpc v1.79.3 ) require ( @@ -41,9 +41,9 @@ require ( github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/protobuf v1.36.11 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 3dfba7749b72..2561af1b7225 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -104,13 +104,13 @@ go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= @@ -119,8 +119,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index eec28bbbaa4e..0c0cc4002210 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -80,14 +80,14 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.48.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/crypto v0.49.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/grpc v1.79.2 // indirect + google.golang.org/grpc v1.79.3 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 55c9602e72f0..dcc57fbdb33f 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -143,8 +143,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -152,23 +152,23 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -185,8 +185,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index 139b89011c66..0724b720f3a8 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 golang.org/x/tools v0.42.0 - google.golang.org/grpc v1.79.2 + google.golang.org/grpc v1.79.3 google.golang.org/protobuf v1.36.11 ) @@ -94,12 +94,12 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.48.0 // indirect + golang.org/x/crypto v0.49.0 // indirect golang.org/x/mod v0.33.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index fd2ee9a701c6..726fd9e6737e 100644 --- a/go.sum +++ b/go.sum @@ -151,8 +151,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= @@ -162,23 +162,23 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -197,8 +197,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/go.mod b/pkg/go.mod index fcea68b97e69..dbeaa04a3bed 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -13,8 +13,8 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.42.0 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.41.0 - google.golang.org/grpc v1.79.2 + golang.org/x/sys v0.42.0 + google.golang.org/grpc v1.79.3 ) require ( @@ -26,8 +26,8 @@ require ( go.opentelemetry.io/otel v1.42.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index e26aed051f75..fc626076e2ec 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -56,18 +56,18 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index df4e79a678ab..40b66b1aa535 100644 --- a/server/go.mod +++ b/server/go.mod @@ -35,11 +35,11 @@ require ( go.opentelemetry.io/otel/sdk v1.42.0 go.opentelemetry.io/otel/trace v1.42.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.48.0 - golang.org/x/net v0.51.0 + golang.org/x/crypto v0.49.0 + golang.org/x/net v0.52.0 golang.org/x/time v0.14.0 google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 - google.golang.org/grpc v1.79.2 + google.golang.org/grpc v1.79.3 google.golang.org/protobuf v1.36.11 gopkg.in/natefinch/lumberjack.v2 v2.2.1 k8s.io/utils v0.0.0-20260108192941-914a6e750570 @@ -69,8 +69,8 @@ require ( go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index 331ea88f76ee..689ff8bfada0 100644 --- a/server/go.sum +++ b/server/go.sum @@ -121,8 +121,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -130,22 +130,22 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -162,8 +162,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index dce7f6b9931c..f8be2e199136 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -46,10 +46,10 @@ require ( go.opentelemetry.io/otel/sdk v1.42.0 go.opentelemetry.io/proto/otlp v1.9.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.48.0 - golang.org/x/sync v0.19.0 + golang.org/x/crypto v0.49.0 + golang.org/x/sync v0.20.0 golang.org/x/time v0.14.0 - google.golang.org/grpc v1.79.2 + google.golang.org/grpc v1.79.3 google.golang.org/protobuf v1.36.11 ) @@ -97,9 +97,9 @@ require ( go.opentelemetry.io/otel/trace v1.42.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index efa0317360af..123bf11cf3e0 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -157,8 +157,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -166,23 +166,23 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -199,8 +199,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 1412070fbd12..7f29e58cae56 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -237,18 +237,18 @@ require ( go.uber.org/zap v1.27.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.48.0 // indirect + golang.org/x/crypto v0.49.0 // indirect golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358 // indirect golang.org/x/mod v0.33.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.41.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.42.0 // indirect golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 // indirect - golang.org/x/term v0.40.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/term v0.41.0 // indirect + golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/grpc v1.79.2 // indirect + google.golang.org/grpc v1.79.3 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect mvdan.cc/gofumpt v0.9.2 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 9307e1928b0d..d6bcf355f4f1 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -573,8 +573,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -612,8 +612,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -624,8 +624,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -654,8 +654,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 h1:bTLqdHv7xrGlFbvf5/TXNxy/iUwwdkjhqQTJDjW7aj0= golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4/go.mod h1:g5NllXBEermZrmR51cJDQxmJUHUOfRAaNyWBM+R+548= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -670,8 +670,8 @@ golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= -golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM= +golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU= +golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -685,8 +685,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= @@ -716,8 +716,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1 h1:/WILD1UcXj/ujCxgoL/DvRgt2CP3txG8+FwkUbb9110= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1/go.mod h1:YNKnb2OAApgYn2oYY47Rn7alMr1zWjb2U8Q0aoGWiNc= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index a30c8ca98647..561534316dbb 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -22,6 +22,6 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect golang.org/x/image v0.25.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/text v0.35.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 5d8366fa8b05..5c0861c37584 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -55,8 +55,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 3b0e934e89d4..619baa1f3477 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -17,9 +17,9 @@ require ( github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/otel v1.42.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/grpc v1.79.2 // indirect + google.golang.org/grpc v1.79.3 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index ebe343a199d2..68c1f7bf4135 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1341,8 +1341,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1489,8 +1489,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1521,8 +1521,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1895,8 +1895,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 17699bdf9017aa44cf598b9cc620d32e8671f281 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 Mar 2026 09:24:58 +0000 Subject: [PATCH 0872/1068] build(deps): bump github/codeql-action from 4.32.6 to 4.33.0 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.6 to 4.33.0. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/0d579ffd059c29b07949a3cce3983f0780820c98...b1bff81932f5cdfc8695c7752dcee935dcd061c8) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.33.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 02ce1a4b2e38..f254a9c3bd7d 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6 + uses: github/codeql-action/init@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6 + uses: github/codeql-action/autobuild@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6 + uses: github/codeql-action/analyze@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 0b22e13748a9..890e55d0fcdc 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6 + uses: github/codeql-action/upload-sarif@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0 with: sarif_file: results.sarif From fad024fb281013ca59c6760b29fbeb7622190593 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 20 Mar 2026 09:34:59 +0000 Subject: [PATCH 0873/1068] Bump golang.org/x/mod to v0.34.0 Signed-off-by: Benjamin Wang --- go.mod | 2 +- go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 0724b720f3a8..02e826d1555a 100644 --- a/go.mod +++ b/go.mod @@ -95,7 +95,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.49.0 // indirect - golang.org/x/mod v0.33.0 // indirect + golang.org/x/mod v0.34.0 // indirect golang.org/x/net v0.52.0 // indirect golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.42.0 // indirect diff --git a/go.sum b/go.sum index 726fd9e6737e..070794bbb3cf 100644 --- a/go.sum +++ b/go.sum @@ -155,8 +155,8 @@ golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= -golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= +golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI= +golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 7f29e58cae56..15e11bcdb2af 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -239,7 +239,7 @@ require ( go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.49.0 // indirect golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358 // indirect - golang.org/x/mod v0.33.0 // indirect + golang.org/x/mod v0.34.0 // indirect golang.org/x/net v0.52.0 // indirect golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.42.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index d6bcf355f4f1..0f918543f433 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -590,8 +590,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= -golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= +golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI= +golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= From a1eded2a944e5fb0c076ffdcd8a40c48e54ed565 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 20 Mar 2026 09:36:46 +0000 Subject: [PATCH 0874/1068] Bump golang.org/x/tools to v0.43.0 Signed-off-by: Benjamin Wang --- go.mod | 2 +- go.sum | 4 ++-- tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 02e826d1555a..506cba4f2b7a 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.uber.org/zap v1.27.1 golang.org/x/time v0.14.0 - golang.org/x/tools v0.42.0 + golang.org/x/tools v0.43.0 google.golang.org/grpc v1.79.3 google.golang.org/protobuf v1.36.11 ) diff --git a/go.sum b/go.sum index 070794bbb3cf..6199e2a0c7b9 100644 --- a/go.sum +++ b/go.sum @@ -185,8 +185,8 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= -golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= +golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s= +golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 15e11bcdb2af..7ded3034b252 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -16,7 +16,7 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee - golang.org/x/tools v0.42.0 + golang.org/x/tools v0.43.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1 google.golang.org/protobuf v1.36.11 gotest.tools/gotestsum v1.13.0 @@ -243,7 +243,7 @@ require ( golang.org/x/net v0.52.0 // indirect golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.42.0 // indirect - golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 // indirect + golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c // indirect golang.org/x/term v0.41.0 // indirect golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 0f918543f433..3460513fdc5d 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -656,8 +656,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 h1:bTLqdHv7xrGlFbvf5/TXNxy/iUwwdkjhqQTJDjW7aj0= -golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4/go.mod h1:g5NllXBEermZrmR51cJDQxmJUHUOfRAaNyWBM+R+548= +golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c h1:6a8FdnNk6bTXBjR4AGKFgUKuo+7GnR3FX5L7CbveeZc= +golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c/go.mod h1:TpUTTEp9frx7rTdLpC9gFG9kdI7zVLFTFFlqaH2Cncw= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -701,8 +701,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= -golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= +golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s= +golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= From 439a90d2bcf66397a0949f423958c7622d481760 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 20 Mar 2026 09:38:18 +0000 Subject: [PATCH 0875/1068] Bump golang.org/x/time to v0.15.0 Signed-off-by: Benjamin Wang --- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index e633ad3e2ea2..999854e6b90a 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -17,7 +17,7 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.1 - golang.org/x/time v0.14.0 + golang.org/x/time v0.15.0 google.golang.org/grpc v1.79.3 ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 2561af1b7225..be994248b33d 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -111,8 +111,8 @@ golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= -golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= -golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= +golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 0c0cc4002210..153a795e4ef4 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -84,7 +84,7 @@ require ( golang.org/x/net v0.52.0 // indirect golang.org/x/sys v0.42.0 // indirect golang.org/x/text v0.35.0 // indirect - golang.org/x/time v0.14.0 // indirect + golang.org/x/time v0.15.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/grpc v1.79.3 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index dcc57fbdb33f..9cb0bd7d6d65 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -169,8 +169,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= -golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= -golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= +golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/go.mod b/go.mod index 506cba4f2b7a..778d7f69373f 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( go.etcd.io/etcd/tests/v3 v3.0.0-00010101000000-000000000000 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.uber.org/zap v1.27.1 - golang.org/x/time v0.14.0 + golang.org/x/time v0.15.0 golang.org/x/tools v0.43.0 google.golang.org/grpc v1.79.3 google.golang.org/protobuf v1.36.11 diff --git a/go.sum b/go.sum index 6199e2a0c7b9..70e158828724 100644 --- a/go.sum +++ b/go.sum @@ -179,8 +179,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= -golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= -golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= +golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/server/go.mod b/server/go.mod index 40b66b1aa535..b4958d96ce6a 100644 --- a/server/go.mod +++ b/server/go.mod @@ -37,7 +37,7 @@ require ( go.uber.org/zap v1.27.1 golang.org/x/crypto v0.49.0 golang.org/x/net v0.52.0 - golang.org/x/time v0.14.0 + golang.org/x/time v0.15.0 google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 google.golang.org/grpc v1.79.3 google.golang.org/protobuf v1.36.11 diff --git a/server/go.sum b/server/go.sum index 689ff8bfada0..d42d6af3a601 100644 --- a/server/go.sum +++ b/server/go.sum @@ -146,8 +146,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= -golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= -golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= +golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/tests/go.mod b/tests/go.mod index f8be2e199136..9292a86c5ab9 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -48,7 +48,7 @@ require ( go.uber.org/zap v1.27.1 golang.org/x/crypto v0.49.0 golang.org/x/sync v0.20.0 - golang.org/x/time v0.14.0 + golang.org/x/time v0.15.0 google.golang.org/grpc v1.79.3 google.golang.org/protobuf v1.36.11 ) diff --git a/tests/go.sum b/tests/go.sum index 123bf11cf3e0..c00d54905196 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -183,8 +183,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= -golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= -golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= +golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= From 8d9682a5c33918a19d492dc992352f3ac57a07aa Mon Sep 17 00:00:00 2001 From: Alok Kumar Singh Date: Mon, 23 Mar 2026 20:32:06 +0530 Subject: [PATCH 0876/1068] cache: Add consistent read for cache Signed-off-by: Alok Kumar Singh --- cache/README.md | 2 + cache/cache.go | 108 ++++++-- cache/cache_test.go | 180 +++++++++++- cache/clock.go | 54 ++++ cache/config.go | 30 +- cache/fake_clock_test.go | 111 ++++++++ cache/progress_requestor.go | 114 ++++++++ cache/progress_requestor_test.go | 155 +++++++++++ tests/integration/cache_test.go | 453 +++++++++++++++++++++---------- 9 files changed, 1036 insertions(+), 171 deletions(-) create mode 100644 cache/clock.go create mode 100644 cache/fake_clock_test.go create mode 100644 cache/progress_requestor.go create mode 100644 cache/progress_requestor_test.go diff --git a/cache/README.md b/cache/README.md index 2c6bf8e59f2f..5a66c5855c96 100644 --- a/cache/README.md +++ b/cache/README.md @@ -1,3 +1,5 @@ # etcd cache Experimental etcd client cache library. + +**Note:** gRPC proxy is not supported. The cache relies on `RequestProgress` RPCs, which the gRPC proxy does not forward. diff --git a/cache/cache.go b/cache/cache.go index 65d337087d07..e148a30dc4c2 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -23,6 +23,7 @@ import ( "time" pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" ) @@ -31,24 +32,33 @@ var ( ErrUnsupportedRequest = errors.New("cache: unsupported request parameters") // Returned when the requested key or key‑range is invalid (empty or reversed) or lies outside c.prefix. ErrKeyRangeInvalid = errors.New("cache: invalid or out‑of‑range key range") + // Returned when the cache timed out waiting for the requested revision + ErrCacheTimeout = errors.New("cache: timed out waiting for revision") ) // Cache buffers a single etcd Watch for a given key‐prefix and fan‑outs local watchers. +// +// Note: gRPC proxy is not supported. Cache relies on RequestProgress RPCs, +// which the gRPC proxy does not forward. type Cache struct { - prefix string // prefix is the key-prefix this shard is responsible for ("" = root). - cfg Config // immutable runtime configuration - watcher clientv3.Watcher - kv clientv3.KV - demux *demux // demux fans incoming events out to active watchers and manages resync. - store *store // last‑observed snapshot - ready *ready - stop context.CancelFunc - waitGroup sync.WaitGroup - internalCtx context.Context + prefix string // prefix is the key-prefix this shard is responsible for ("" = root). + cfg Config // immutable runtime configuration + watcher clientv3.Watcher + kv clientv3.KV + demux *demux // demux fans incoming events out to active watchers and manages resync. + store *store // last‑observed snapshot + ready *ready + stop context.CancelFunc + waitGroup sync.WaitGroup + internalCtx context.Context + progressRequestor progressRequestor } // New builds a cache shard that watches only the requested prefix. // For the root cache pass "". +// +// Note: gRPC proxy is not supported. Cache relies on RequestProgress RPCs, +// which the gRPC proxy does not forward. func New(client *clientv3.Client, prefix string, opts ...Option) (*Cache, error) { cfg := defaultConfig() for _, opt := range opts { @@ -65,23 +75,28 @@ func New(client *clientv3.Client, prefix string, opts ...Option) (*Cache, error) internalCtx, cancel := context.WithCancel(context.Background()) cache := &Cache{ - prefix: prefix, - cfg: cfg, - watcher: client.Watcher, - kv: client.KV, - store: newStore(cfg.BTreeDegree, cfg.HistoryWindowSize), - ready: newReady(), - stop: cancel, - internalCtx: internalCtx, + prefix: prefix, + cfg: cfg, + watcher: client.Watcher, + kv: client.KV, + store: newStore(cfg.BTreeDegree, cfg.HistoryWindowSize), + ready: newReady(), + stop: cancel, + internalCtx: internalCtx, + progressRequestor: newConditionalProgressRequestor(client.Watcher, realClock{}, cfg.ProgressRequestInterval), } cache.demux = NewDemux(internalCtx, &cache.waitGroup, cfg.HistoryWindowSize, cfg.ResyncInterval) - cache.waitGroup.Add(1) + cache.waitGroup.Add(2) go func() { defer cache.waitGroup.Done() cache.getWatchLoop() }() + go func() { + defer cache.waitGroup.Done() + cache.progressRequestor.run(internalCtx) + }() return cache, nil } @@ -161,6 +176,19 @@ func (c *Cache) Get(ctx context.Context, key string, opts ...clientv3.OpOption) endKey := op.RangeBytes() requestedRev := op.Rev() + if !op.IsSerializable() { + serverRev, err := c.serverRevision(ctx) + if err != nil { + return nil, err + } + if requestedRev > serverRev { + return nil, rpctypes.ErrFutureRev + } + if err = c.waitTillRevision(ctx, serverRev); err != nil { + return nil, err + } + } + kvs, latestRev, err := c.store.Get(startKey, endKey, requestedRev) if err != nil { return nil, err @@ -196,6 +224,45 @@ func (c *Cache) WaitForRevision(ctx context.Context, rev int64) error { } } +func (c *Cache) serverRevision(ctx context.Context) (int64, error) { + key := c.prefix + if key == "" { + key = "/" + } + resp, err := c.kv.Get(ctx, key, clientv3.WithLimit(1), clientv3.WithCountOnly()) + if err != nil { + return 0, err + } + return resp.Header.Revision, nil +} + +func (c *Cache) waitTillRevision(ctx context.Context, rev int64) error { + if c.store.LatestRev() >= rev { + return nil + } + + c.progressRequestor.add() + defer c.progressRequestor.remove() + + ticker := time.NewTicker(revisionPollInterval) + defer ticker.Stop() + timeout := time.After(c.cfg.WaitTimeout) + + // TODO: rewrite from periodic polling to passive notification + for { + if c.store.LatestRev() >= rev { + return nil + } + select { + case <-ticker.C: + case <-timeout: + return ErrCacheTimeout + case <-ctx.Done(): + return ctx.Err() + } + } +} + // Close cancels the private context and blocks until all goroutines return. func (c *Cache) Close() { c.stop() @@ -358,9 +425,6 @@ func (c *Cache) validateGet(key string, op clientv3.Op) (KeyPredicate, error) { return nil, fmt.Errorf("%w: MinCreateRev(%d) not supported", ErrUnsupportedRequest, op.MinCreateRev()) case op.MaxCreateRev() != 0: return nil, fmt.Errorf("%w: MaxCreateRev(%d) not supported", ErrUnsupportedRequest, op.MaxCreateRev()) - // cache now only serves serializable reads of the latest revision (rev == 0). - case !op.IsSerializable(): - return nil, fmt.Errorf("%w: non-serializable request", ErrUnsupportedRequest) } startKey := []byte(key) diff --git a/cache/cache_test.go b/cache/cache_test.go index 6e82f442a93e..ce3aad2ac697 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -16,6 +16,8 @@ package cache import ( "context" + "errors" + "fmt" "sync" "testing" "time" @@ -501,6 +503,7 @@ type mockWatcher struct { wg sync.WaitGroup mu sync.Mutex lastStartRev int64 + progressErr error } func newMockWatcher(buf int) *mockWatcher { @@ -522,7 +525,7 @@ func (m *mockWatcher) Watch(ctx context.Context, _ string, opts ...clientv3.OpOp return out } -func (m *mockWatcher) RequestProgress(_ context.Context) error { return nil } +func (m *mockWatcher) RequestProgress(_ context.Context) error { return m.progressErr } func (m *mockWatcher) Close() error { m.closeOnce.Do(func() { close(m.responses) }) @@ -600,6 +603,7 @@ func (m *mockWatcher) streamResponses(ctx context.Context, out chan<- clientv3.W type kvStub struct { queued []*clientv3.GetResponse defaultResp *clientv3.GetResponse + defaultErr error } func newKVStub(resps ...*clientv3.GetResponse) *kvStub { @@ -610,7 +614,11 @@ func newKVStub(resps ...*clientv3.GetResponse) *kvStub { } } -func (s *kvStub) Get(ctx context.Context, key string, _ ...clientv3.OpOption) (*clientv3.GetResponse, error) { +func (s *kvStub) Get(_ context.Context, key string, opts ...clientv3.OpOption) (*clientv3.GetResponse, error) { + if s.defaultErr != nil { + return nil, s.defaultErr + } + if len(s.queued) > 0 { next := s.queued[0] s.queued = s.queued[1:] @@ -692,3 +700,171 @@ func verifySnapshot(t *testing.T, cache *Cache, want []*mvccpb.KeyValue) { t.Fatalf("cache snapshot mismatch (-want +got):\n%s", diff) } } + +type noopProgressNotifier struct{} + +func (n *noopProgressNotifier) RequestProgress(_ context.Context) error { + return nil +} + +func newTestProgressRequestor() *conditionalProgressRequestor { + return newConditionalProgressRequestor(&noopProgressNotifier{}, realClock{}, 100*time.Millisecond) +} + +func newCacheForWaitTest(serverRev int64, localRev int64, pr progressRequestor) (*Cache, *store) { + cfg := defaultConfig() + st := newStore(cfg.BTreeDegree, cfg.HistoryWindowSize) + if localRev > 0 { + st.Restore(nil, localRev) + } + kv := &kvStub{ + defaultResp: &clientv3.GetResponse{Header: &pb.ResponseHeader{Revision: serverRev}}, + } + return &Cache{ + kv: kv, + store: st, + prefix: "/", + progressRequestor: pr, + cfg: cfg, + }, st +} + +func TestWaitTillRevision(t *testing.T) { + t.Run("cache_already_caught_up", func(t *testing.T) { + c, _ := newCacheForWaitTest(10, 10, newTestProgressRequestor()) + + if err := c.waitTillRevision(context.Background(), 10); err != nil { + t.Fatalf("unexpected error: %v", err) + } + }) + + t.Run("local_rev_sufficient_skips_server_call", func(t *testing.T) { + cfg := defaultConfig() + st := newStore(cfg.BTreeDegree, cfg.HistoryWindowSize) + st.Restore(nil, 10) + c := &Cache{ + kv: &kvStub{defaultErr: fmt.Errorf("should not be called")}, + store: st, + prefix: "/", + progressRequestor: newTestProgressRequestor(), + cfg: cfg, + } + + if err := c.waitTillRevision(context.Background(), 5); err != nil { + t.Fatalf("unexpected error: %v", err) + } + }) + + t.Run("cache_catches_up", func(t *testing.T) { + c, st := newCacheForWaitTest(15, 5, newTestProgressRequestor()) + + go func() { + time.Sleep(200 * time.Millisecond) + st.Restore(nil, 10) + }() + + ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) + defer cancel() + if err := c.waitTillRevision(ctx, 10); err != nil { + t.Fatalf("unexpected error: %v", err) + } + }) + + t.Run("rev_zero_cache_caught_up", func(t *testing.T) { + c, _ := newCacheForWaitTest(10, 10, newTestProgressRequestor()) + + if err := c.waitTillRevision(context.Background(), 0); err != nil { + t.Fatalf("unexpected error: %v", err) + } + }) + + t.Run("rev_zero_waits_for_server_rev", func(t *testing.T) { + c, st := newCacheForWaitTest(10, 5, newTestProgressRequestor()) + + go func() { + time.Sleep(200 * time.Millisecond) + st.Restore(nil, 10) + }() + + ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) + defer cancel() + if err := c.waitTillRevision(ctx, 0); err != nil { + t.Fatalf("unexpected error: %v", err) + } + }) + + t.Run("context_cancelled", func(t *testing.T) { + c, _ := newCacheForWaitTest(10, 5, newTestProgressRequestor()) + + ctx, cancel := context.WithTimeout(context.Background(), 200*time.Millisecond) + defer cancel() + err := c.waitTillRevision(ctx, 10) + if !errors.Is(err, context.DeadlineExceeded) { + t.Fatalf("got %v, want context.DeadlineExceeded", err) + } + }) + + t.Run("timeout", func(t *testing.T) { + c, _ := newCacheForWaitTest(10, 5, newTestProgressRequestor()) + + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + err := c.waitTillRevision(ctx, 10) + if !errors.Is(err, ErrCacheTimeout) { + t.Fatalf("got %v, want ErrCacheTimeout", err) + } + }) +} + +func TestWaitTillRevisionTriggersProgressRequests(t *testing.T) { + fc := newFakeClock() + pr := newTestConditionalProgressRequestor(fc, 50*time.Millisecond) + c, st := newCacheForWaitTest(15, 5, pr) + + // Start progress requestor + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + go pr.run(ctx) + + // Wait for goroutine to start + time.Sleep(10 * time.Millisecond) + + // Initially, no progress requests should be sent (no waiters) + fc.Advance(100 * time.Millisecond) + if err := pollConditionNoChange(func() bool { + return pr.progressRequestsSentCount.Load() == 0 + }); err != nil { + t.Fatal("expected no progress requests without active waiters") + } + + // Start waiting - this should trigger progress requests + errCh := make(chan error, 1) + go func() { + errCh <- c.waitTillRevision(context.Background(), 10) + }() + + // Advance time and wait for progress requests to start + fc.Advance(50 * time.Millisecond) + time.Sleep(10 * time.Millisecond) + + // Verify progress requests are being sent while waiting + if pr.progressRequestsSentCount.Load() == 0 { + t.Fatal("expected progress requests during wait") + } + + // Complete the wait + st.Restore(nil, 15) + + if err := <-errCh; err != nil { + t.Fatalf("unexpected error: %v", err) + } + + // After completion, progress requests should stop + finalCount := pr.progressRequestsSentCount.Load() + fc.Advance(100 * time.Millisecond) + if err := pollConditionNoChange(func() bool { + return pr.progressRequestsSentCount.Load() == finalCount + }); err != nil { + t.Fatalf("expected no new progress requests after completion, got %d initially, then changed", finalCount) + } +} diff --git a/cache/clock.go b/cache/clock.go new file mode 100644 index 000000000000..62b33a668c76 --- /dev/null +++ b/cache/clock.go @@ -0,0 +1,54 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cache + +import "time" + +// Clock allows for injecting fake or real clocks into code +// that needs to do arbitrary things based on time. +type Clock interface { + NewTimer(d time.Duration) Timer +} + +// Timer allows for injecting fake or real timers into code +// that needs to do arbitrary things based on time. +type Timer interface { + Chan() <-chan time.Time + Stop() bool + Reset(d time.Duration) bool +} + +// realClock implements Clock using the standard time package. +type realClock struct{} + +func (realClock) NewTimer(d time.Duration) Timer { + return &realTimer{timer: time.NewTimer(d)} +} + +type realTimer struct { + timer *time.Timer +} + +func (r *realTimer) Chan() <-chan time.Time { + return r.timer.C +} + +func (r *realTimer) Stop() bool { + return r.timer.Stop() +} + +func (r *realTimer) Reset(d time.Duration) bool { + return r.timer.Reset(d) +} diff --git a/cache/config.go b/cache/config.go index cf18ffcc7468..3419ef40134c 100644 --- a/cache/config.go +++ b/cache/config.go @@ -16,6 +16,8 @@ package cache import "time" +const revisionPollInterval = 50 * time.Millisecond + type Config struct { // PerWatcherBufferSize caps each watcher’s buffered channel. // Bigger values tolerate brief client slow-downs at the cost of extra memory. @@ -31,20 +33,26 @@ type Config struct { MaxBackoff time.Duration // GetTimeout is the timeout applied to the first Get() used to bootstrap the cache. GetTimeout time.Duration + // WaitTimeout is the maximum time a consistent Get will wait for the local cache to catch up before returning ErrCacheTimeout. + WaitTimeout time.Duration // BTreeDegree controls the degree (branching factor) of the in-memory B-tree store. BTreeDegree int + // ProgressRequestInterval controls how often progress notifications are requested from the etcd watch stream during a consistent Get. + ProgressRequestInterval time.Duration } // TODO: tune via performance/load tests. func defaultConfig() Config { return Config{ - PerWatcherBufferSize: 10, - HistoryWindowSize: 2048, - ResyncInterval: 50 * time.Millisecond, - InitialBackoff: 50 * time.Millisecond, - MaxBackoff: 2 * time.Second, - GetTimeout: 5 * time.Second, - BTreeDegree: 32, + PerWatcherBufferSize: 10, + HistoryWindowSize: 2048, + ResyncInterval: 50 * time.Millisecond, + InitialBackoff: 50 * time.Millisecond, + MaxBackoff: 2 * time.Second, + GetTimeout: 5 * time.Second, + WaitTimeout: 3 * time.Second, + BTreeDegree: 32, + ProgressRequestInterval: 100 * time.Millisecond, } } @@ -77,3 +85,11 @@ func WithGetTimeout(d time.Duration) Option { func WithBTreeDegree(n int) Option { return func(c *Config) { c.BTreeDegree = n } } + +func WithProgressRequestInterval(d time.Duration) Option { + return func(c *Config) { c.ProgressRequestInterval = d } +} + +func WithWaitTimeout(d time.Duration) Option { + return func(c *Config) { c.WaitTimeout = d } +} diff --git a/cache/fake_clock_test.go b/cache/fake_clock_test.go new file mode 100644 index 000000000000..65bec2f8fa67 --- /dev/null +++ b/cache/fake_clock_test.go @@ -0,0 +1,111 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cache + +// Minimal fake clock for testing, based on +// https://github.com/kubernetes/utils/blob/master/clock/testing/fake_clock.go + +import ( + "sync" + "time" +) + +type fakeClock struct { + lock sync.Mutex + time time.Time + waiters []*fakeClockWaiter +} + +type fakeClockWaiter struct { + targetTime time.Time + destChan chan time.Time +} + +func newFakeClock() *fakeClock { + return &fakeClock{time: time.Now()} +} + +func (f *fakeClock) NewTimer(d time.Duration) Timer { + f.lock.Lock() + defer f.lock.Unlock() + ch := make(chan time.Time, 1) + timer := &fakeTimer{ + fakeClock: f, + waiter: fakeClockWaiter{ + targetTime: f.time.Add(d), + destChan: ch, + }, + } + f.waiters = append(f.waiters, &timer.waiter) + return timer +} + +func (f *fakeClock) Advance(d time.Duration) { + f.lock.Lock() + defer f.lock.Unlock() + f.time = f.time.Add(d) + newWaiters := make([]*fakeClockWaiter, 0, len(f.waiters)) + for _, w := range f.waiters { + if !w.targetTime.After(f.time) { + w.destChan <- f.time + } else { + newWaiters = append(newWaiters, w) + } + } + f.waiters = newWaiters +} + +type fakeTimer struct { + fakeClock *fakeClock + waiter fakeClockWaiter +} + +func (t *fakeTimer) Chan() <-chan time.Time { + return t.waiter.destChan +} + +func (t *fakeTimer) Stop() bool { + t.fakeClock.lock.Lock() + defer t.fakeClock.lock.Unlock() + active := false + newWaiters := make([]*fakeClockWaiter, 0, len(t.fakeClock.waiters)) + for _, w := range t.fakeClock.waiters { + if w != &t.waiter { + newWaiters = append(newWaiters, w) + } else { + active = true + } + } + t.fakeClock.waiters = newWaiters + return active +} + +func (t *fakeTimer) Reset(d time.Duration) bool { + t.fakeClock.lock.Lock() + defer t.fakeClock.lock.Unlock() + active := false + t.waiter.targetTime = t.fakeClock.time.Add(d) + for _, w := range t.fakeClock.waiters { + if w == &t.waiter { + // If timer is found, it has not been fired yet. + active = true + break + } + } + if !active { + t.fakeClock.waiters = append(t.fakeClock.waiters, &t.waiter) + } + return active +} diff --git a/cache/progress_requestor.go b/cache/progress_requestor.go new file mode 100644 index 000000000000..4bde695799fa --- /dev/null +++ b/cache/progress_requestor.go @@ -0,0 +1,114 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cache + +import ( + "context" + "fmt" + "sync" + "time" +) + +type progressNotifier interface { + RequestProgress(ctx context.Context) error +} + +// Copied from https://github.com/kubernetes/kubernetes/blob/4116c15/staging/src/k8s.io/apiserver/pkg/storage/cacher/progress/watch_progress.go +type progressRequestor interface { + // run starts the background loop that sends RequestProgress RPCs. + run(ctx context.Context) + // add increments the count of active waiters so the run loop knows to send RequestProgress RPCs. + add() + // remove decrements the count of active waiters. + remove() +} + +type conditionalProgressRequestor struct { + mux sync.Mutex + cond *sync.Cond + waiting int32 + stopped bool + notifier progressNotifier + requestInterval time.Duration + clock Clock +} + +func newConditionalProgressRequestor(notifier progressNotifier, clock Clock, requestInterval time.Duration) *conditionalProgressRequestor { + waiter := &conditionalProgressRequestor{ + notifier: notifier, + requestInterval: requestInterval, + clock: clock, + } + waiter.cond = sync.NewCond(&waiter.mux) + return waiter +} + +func (p *conditionalProgressRequestor) run(ctx context.Context) { + go func() { + <-ctx.Done() + p.mux.Lock() + defer p.mux.Unlock() + p.stopped = true + p.cond.Signal() + }() + + timer := p.clock.NewTimer(p.requestInterval) + defer timer.Stop() + for { + stopped := func() bool { + p.mux.Lock() + defer p.mux.Unlock() + for p.waiting == 0 && !p.stopped { + p.cond.Wait() + } + return p.stopped + }() + if stopped { + return + } + + select { + case <-timer.Chan(): + shouldContinue := func() bool { + p.mux.Lock() + defer p.mux.Unlock() + return p.waiting > 0 && !p.stopped + }() + if !shouldContinue { + timer.Reset(0) + continue + } + timer.Reset(p.requestInterval) + if err := p.notifier.RequestProgress(ctx); err != nil { + fmt.Printf("RequestProgress failed: %v\n", err) + } + case <-ctx.Done(): + return + } + } +} + +func (p *conditionalProgressRequestor) add() { + p.mux.Lock() + defer p.mux.Unlock() + p.waiting++ + p.cond.Signal() +} + +func (p *conditionalProgressRequestor) remove() { + p.mux.Lock() + defer p.mux.Unlock() + p.waiting-- +} diff --git a/cache/progress_requestor_test.go b/cache/progress_requestor_test.go new file mode 100644 index 000000000000..92837c6221dd --- /dev/null +++ b/cache/progress_requestor_test.go @@ -0,0 +1,155 @@ +// Copyright 2025 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cache + +import ( + "context" + "sync/atomic" + "testing" + "time" +) + +const ( + pollPeriod = 1 * time.Millisecond + minimalNoChange = 20 * time.Millisecond + pollTimeout = 5 * time.Second +) + +// Copied from https://github.com/kubernetes/kubernetes/blob/4116c15/staging/src/k8s.io/apiserver/pkg/storage/cacher/progress/watch_progress_test.go +func TestConditionalProgressRequestor(t *testing.T) { + ctx := context.Background() + + fc := newFakeClock() + pr := newTestConditionalProgressRequestor(fc, 100*time.Millisecond) + stopCtx, cancel := context.WithCancel(ctx) + defer cancel() + go pr.run(stopCtx) + + var wantRequestsSent int32 + var requestsSent int32 + + t.Log("Wait for goroutine to start") + time.Sleep(10 * time.Millisecond) + + t.Log("No progress requests if no-one is waiting") + fc.Advance(250 * time.Millisecond) + + if err := pollConditionNoChange(func() bool { + requestsSent = pr.progressRequestsSentCount.Load() + return requestsSent == wantRequestsSent + }); err != nil { + t.Fatalf("Failed to wait progress requests, err: %s, want: %d, got %d", err, wantRequestsSent, requestsSent) + } + + t.Log("Adding waiters allows progress request to be sent") + pr.add() + fc.Advance(150 * time.Millisecond) + wantRequestsSent++ + if err := pollConditionNoChange(func() bool { + requestsSent = pr.progressRequestsSentCount.Load() + return requestsSent == wantRequestsSent + }); err != nil { + t.Fatalf("Failed to wait progress requests, err: %s, want: %d, got %d", err, wantRequestsSent, requestsSent) + } + + t.Log("Periodically request progress to be sent every period") + for wantRequestsSent < 5 { + fc.Advance(100 * time.Millisecond) + wantRequestsSent++ + + if err := pollConditionNoChange(func() bool { + requestsSent = pr.progressRequestsSentCount.Load() + return requestsSent == wantRequestsSent + }); err != nil { + t.Fatalf("Failed to wait progress requests, err: %s, want: %d, got %d", err, wantRequestsSent, requestsSent) + } + } + pr.remove() + + t.Log("No progress requests if no-one is waiting") + fc.Advance(250 * time.Millisecond) + if err := pollConditionNoChange(func() bool { + requestsSent = pr.progressRequestsSentCount.Load() + return requestsSent == wantRequestsSent + }); err != nil { + t.Fatalf("Failed to wait progress requests, err: %s, want: %d, got %d", err, wantRequestsSent, requestsSent) + } + + t.Log("No progress after stopping") + cancel() + fc.Advance(50 * time.Millisecond) + if err := pollConditionNoChange(func() bool { + requestsSent = pr.progressRequestsSentCount.Load() + return requestsSent == wantRequestsSent + }); err != nil { + t.Fatalf("Failed to wait progress requests, err: %s, want: %d, got %d", err, wantRequestsSent, requestsSent) + } + pr.add() + fc.Advance(250 * time.Millisecond) + if err := pollConditionNoChange(func() bool { + requestsSent = pr.progressRequestsSentCount.Load() + return requestsSent == wantRequestsSent + }); err != nil { + t.Fatalf("Failed to wait progress requests, err: %s, want: %d, got %d", err, wantRequestsSent, requestsSent) + } +} + +func newTestConditionalProgressRequestor(clock Clock, requestInterval time.Duration) *testConditionalProgressRequestor { + pr := &testConditionalProgressRequestor{} + pr.conditionalProgressRequestor = newConditionalProgressRequestor(pr, clock, requestInterval) + return pr +} + +type testConditionalProgressRequestor struct { + *conditionalProgressRequestor + progressRequestsSentCount atomic.Int32 +} + +func (pr *testConditionalProgressRequestor) RequestProgress(ctx context.Context) error { + pr.progressRequestsSentCount.Add(1) + return nil +} + +func pollConditionNoChange(condition func() bool) error { + passCounter := 0 + requiredNumberOfPasses := int(minimalNoChange/pollPeriod) + 1 + deadline := time.Now().Add(pollTimeout) + + ticker := time.NewTicker(pollPeriod) + defer ticker.Stop() + + for { + select { + case <-ticker.C: + if condition() { + passCounter++ + } else { + passCounter = 0 + } + if passCounter >= requiredNumberOfPasses { + return nil + } + if time.Now().After(deadline) { + return &timeoutError{} + } + } + } +} + +type timeoutError struct{} + +func (e *timeoutError) Error() string { + return "timed out waiting for condition to stabilize" +} diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index db0240eb118b..b2b990e3c34c 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -18,6 +18,7 @@ import ( "context" "errors" "fmt" + "math/rand" "strings" "testing" "time" @@ -28,6 +29,7 @@ import ( "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" cache "go.etcd.io/etcd/cache/v3" clientv3 "go.etcd.io/etcd/client/v3" + "go.etcd.io/etcd/pkg/v3/stringutil" "go.etcd.io/etcd/tests/v3/framework/integration" ) @@ -545,6 +547,9 @@ func TestCacheWatchPrefixProgressNotify(t *testing.T) { } func TestCacheWithoutPrefixGet(t *testing.T) { + if integration.ThroughProxy { + t.Skip("grpc proxy currently does not support requesting progress notifications") + } tcs := []struct { name string initialEvents, followupEvents []*clientv3.Event @@ -590,12 +595,12 @@ func TestGet(t *testing.T) { func testGet(t *testing.T, kv clientv3.KV, getReader func() Getter, initialEvents, followupEvents []*clientv3.Event) { ctx := t.Context() t.Log("Setup") - initialRev := applyEvents(ctx, t, kv, initialEvents) + baseRev := applyEvents(ctx, t, kv, initialEvents) reader := getReader() if c, ok := reader.(*cache.Cache); ok { - if err := c.WaitForRevision(ctx, initialRev); err != nil { - t.Fatalf("cache never caught up to rev %d: %v", initialRev, err) + if err := c.WaitForRevision(ctx, baseRev); err != nil { + t.Fatalf("cache never caught up to rev %d: %v", baseRev, err) } } @@ -606,13 +611,27 @@ func testGet(t *testing.T, kv clientv3.KV, getReader func() Getter, initialEvent } } + if followupRev > baseRev { + baseRev = followupRev + } + + latestRev := baseRev + t.Log("Validate") for _, tc := range getTestCases { tc := tc t.Run(tc.name, func(t *testing.T) { - op := clientv3.OpGet(tc.key, tc.opts...) + latestRev += advanceRevision(t, kv) + + opts := tc.opts + if tc.optsFunc != nil { + opts = append(opts, tc.optsFunc(latestRev)...) + } + + op := clientv3.OpGet(tc.key, opts...) requestedRev := op.Rev() - resp, err := reader.Get(ctx, tc.key, tc.opts...) + + resp, err := reader.Get(ctx, tc.key, opts...) if tc.expectErr != nil { if !errors.Is(err, tc.expectErr) { t.Fatalf("expected %v for Get %q; got %v", tc.expectErr, tc.key, err) @@ -620,8 +639,8 @@ func testGet(t *testing.T, kv clientv3.KV, getReader func() Getter, initialEvent return } if err != nil { - if _, ok := reader.(*cache.Cache); ok && requestedRev > 0 && requestedRev < initialRev && errors.Is(err, rpctypes.ErrCompacted) { - t.Logf("expected ErrCompacted: requestedRev=%d < initialCompleteRev=%d", requestedRev, initialRev) + if _, ok := reader.(*cache.Cache); ok && requestedRev > 0 && requestedRev < baseRev && errors.Is(err, rpctypes.ErrCompacted) { + t.Logf("expected ErrCompacted: requestedRev=%d < baseCompleteRev=%d", requestedRev, baseRev) return } t.Fatalf("Get %q failed: %v", tc.key, err) @@ -629,8 +648,14 @@ func testGet(t *testing.T, kv clientv3.KV, getReader func() Getter, initialEvent if diff := cmp.Diff(tc.wantKVs, resp.Kvs); diff != "" { t.Fatalf("unexpected KVs (-want +got):\n%s", diff) } - if resp.Header.Revision != tc.wantRevision { - t.Fatalf("revision: got %d, want %d", resp.Header.Revision, tc.wantRevision) + if op.IsSerializable() { + if resp.Header.Revision < baseRev { + t.Fatalf("revision: got %d, want >= %d", resp.Header.Revision, baseRev) + } + } else { + if resp.Header.Revision != latestRev { + t.Fatalf("revision: got %d, want == %d", resp.Header.Revision, latestRev) + } } }) } @@ -721,147 +746,225 @@ var ( ) type getTestCase struct { - name string - key string - opts []clientv3.OpOption - wantKVs []*mvccpb.KeyValue - wantRevision int64 - expectErr error + name string + key string + opts []clientv3.OpOption + optsFunc func(latestRev int64) []clientv3.OpOption + wantKVs []*mvccpb.KeyValue + expectErr error } var getTestCases = []getTestCase{ { - name: "single key /foo/a", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable()}, - wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv}, - wantRevision: 8, + name: "single key /foo/a", + key: "/foo/a", + opts: []clientv3.OpOption{}, + wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv}, + }, + { + name: "single key /foo/a at rev=2", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRev(2)}, + wantKVs: []*mvccpb.KeyValue{Rev2PutFooA.Kv}, }, { - name: "single key /foo/a at rev=2", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(2)}, - wantKVs: []*mvccpb.KeyValue{Rev2PutFooA.Kv}, - wantRevision: 8, + name: "single key /foo/a at rev=7", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRev(7)}, + wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooA.Kv}, }, { - name: "single key /foo/a at rev=7", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(7)}, - wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooA.Kv}, - wantRevision: 8, + name: "single key /foo/a at rev=latest", + key: "/foo/a", + optsFunc: func(latestRev int64) []clientv3.OpOption { + return []clientv3.OpOption{clientv3.WithRev(latestRev)} + }, + wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv}, }, { - name: "single key /foo/a at rev=8", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(8)}, - wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv}, - wantRevision: 8, + name: "single key /foo/a at rev=latest+1 (future), returns error", + key: "/foo/a", + optsFunc: func(latestRev int64) []clientv3.OpOption { + return []clientv3.OpOption{clientv3.WithRev(latestRev + 1)} + }, + expectErr: rpctypes.ErrFutureRev, }, { - name: "single key /foo/a at rev=9 (future), returns error", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(9)}, + name: "non-existing key", + key: "/doesnotexist", + opts: []clientv3.OpOption{}, + wantKVs: nil, + }, + { + name: "non-existing key at rev=4", + key: "/doesnotexist", + opts: []clientv3.OpOption{clientv3.WithRev(4)}, + wantKVs: nil, + }, + { + name: "non-existing key at rev=latest+1 (future), returns error", + key: "/doesnotexist", + optsFunc: func(latestRev int64) []clientv3.OpOption { + return []clientv3.OpOption{clientv3.WithRev(latestRev + 1)} + }, expectErr: rpctypes.ErrFutureRev, }, { - name: "non-existing key", - key: "/doesnotexist", - opts: []clientv3.OpOption{clientv3.WithSerializable()}, - wantKVs: nil, - wantRevision: 8, + name: "prefix /foo", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv, Rev7TxnPutFooB.Kv, Rev4PutFooC.Kv}, }, { - name: "non-existing key at rev=4", - key: "/doesnotexist", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(4)}, - wantKVs: nil, - wantRevision: 8, + name: "prefix /foo at rev=5", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithRev(5)}, + wantKVs: []*mvccpb.KeyValue{Rev2PutFooA.Kv, Rev3PutFooB.Kv, Rev4PutFooC.Kv, Rev5PutFooD.Kv}, }, { - name: "non-existing key at rev=9 (future), returns error", - key: "/doesnotexist", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(9)}, + name: "prefix /foo/b at rev=4", + key: "/foo/b", + opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithRev(4)}, + wantKVs: []*mvccpb.KeyValue{Rev3PutFooB.Kv}, + }, + { + name: "prefix /foo/b at rev=7", + key: "/foo/b", + opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithRev(7)}, + wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooB.Kv}, + }, + { + name: "prefix /foo at rev=latest+1 (future), returns error", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + optsFunc: func(latestRev int64) []clientv3.OpOption { + return []clientv3.OpOption{clientv3.WithRev(latestRev + 1)} + }, expectErr: rpctypes.ErrFutureRev, }, { - name: "prefix /foo", - key: "/foo", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix()}, - wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv, Rev7TxnPutFooB.Kv, Rev4PutFooC.Kv}, - wantRevision: 8, + name: "range [/foo/a, /foo/c)", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/c")}, + wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv, Rev7TxnPutFooB.Kv}, }, { - name: "prefix /foo at rev=5", - key: "/foo", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix(), clientv3.WithRev(5)}, - wantKVs: []*mvccpb.KeyValue{Rev2PutFooA.Kv, Rev3PutFooB.Kv, Rev4PutFooC.Kv, Rev5PutFooD.Kv}, - wantRevision: 8, + name: "range [/foo/a, /foo/d) at rev=5", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/d"), clientv3.WithRev(5)}, + wantKVs: []*mvccpb.KeyValue{Rev2PutFooA.Kv, Rev3PutFooB.Kv, Rev4PutFooC.Kv}, }, { - name: "prefix /foo/b at rev=4", - key: "/foo/b", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix(), clientv3.WithRev(4)}, - wantKVs: []*mvccpb.KeyValue{Rev3PutFooB.Kv}, - wantRevision: 8, + name: "range [/foo/a, /foo/c) at rev=latest+1 (future), returns error", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/c")}, + optsFunc: func(latestRev int64) []clientv3.OpOption { + return []clientv3.OpOption{clientv3.WithRev(latestRev + 1)} + }, + expectErr: rpctypes.ErrFutureRev, + }, + { + name: "fromKey /foo/b", + key: "/foo/b", + opts: []clientv3.OpOption{clientv3.WithFromKey()}, + wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooB.Kv, Rev4PutFooC.Kv}, }, { - name: "prefix /foo/b at rev=7", - key: "/foo/b", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix(), clientv3.WithRev(7)}, - wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooB.Kv}, - wantRevision: 8, + name: "fromKey /foo/b at rev=7", + key: "/foo/b", + opts: []clientv3.OpOption{clientv3.WithFromKey(), clientv3.WithRev(7)}, + wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooB.Kv, Rev4PutFooC.Kv}, }, { - name: "prefix /foo at rev=9 (future), returns error", - key: "/foo", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix(), clientv3.WithRev(9)}, - wantKVs: []*mvccpb.KeyValue{Rev2PutFooA.Kv, Rev3PutFooB.Kv, Rev4PutFooC.Kv, Rev5PutFooD.Kv}, + name: "fromKey /foo/b at rev=latest+1 (future), returns error", + key: "/foo/b", + opts: []clientv3.OpOption{clientv3.WithFromKey()}, + optsFunc: func(latestRev int64) []clientv3.OpOption { + return []clientv3.OpOption{clientv3.WithRev(latestRev + 1)} + }, expectErr: rpctypes.ErrFutureRev, }, { - name: "range [/foo/a, /foo/c)", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/foo/c")}, - wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv, Rev7TxnPutFooB.Kv}, - wantRevision: 8, + name: "single key /foo/a serializable", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable()}, + wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv}, + }, + { + name: "single key /foo/a serializable at rev=latest+1 (future), returns error", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable()}, + optsFunc: func(latestRev int64) []clientv3.OpOption { + return []clientv3.OpOption{clientv3.WithRev(latestRev + 1)} + }, + expectErr: rpctypes.ErrFutureRev, }, { - name: "range [/foo/a, /foo/d) at rev=5", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/foo/d"), clientv3.WithRev(5)}, - wantKVs: []*mvccpb.KeyValue{Rev2PutFooA.Kv, Rev3PutFooB.Kv, Rev4PutFooC.Kv}, - wantRevision: 8, + name: "non-existing key serializable", + key: "/doesnotexist", + opts: []clientv3.OpOption{clientv3.WithSerializable()}, + wantKVs: nil, }, { - name: "range [/foo/a, /foo/c) at rev=9 (future), returns error", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/foo/c"), clientv3.WithRev(9)}, + name: "non-existing key serializable at rev=latest+1 (future), returns error", + key: "/doesnotexist", + opts: []clientv3.OpOption{clientv3.WithSerializable()}, + optsFunc: func(latestRev int64) []clientv3.OpOption { + return []clientv3.OpOption{clientv3.WithRev(latestRev + 1)} + }, expectErr: rpctypes.ErrFutureRev, }, { - name: "fromKey /foo/b", - key: "/foo/b", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithFromKey()}, - wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooB.Kv, Rev4PutFooC.Kv}, - wantRevision: 8, + name: "prefix /foo serializable", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithSerializable()}, + wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv, Rev7TxnPutFooB.Kv, Rev4PutFooC.Kv}, }, { - name: "fromKey /foo/b at rev=7", - key: "/foo/b", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithFromKey(), clientv3.WithRev(7)}, - wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooB.Kv, Rev4PutFooC.Kv}, - wantRevision: 8, + name: "prefix /foo serializable at rev=latest+1 (future), returns error", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithSerializable()}, + optsFunc: func(latestRev int64) []clientv3.OpOption { + return []clientv3.OpOption{clientv3.WithRev(latestRev + 1)} + }, + expectErr: rpctypes.ErrFutureRev, }, { - name: "fromKey /foo/b at rev=9 (future), returns error", - key: "/foo/b", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithFromKey(), clientv3.WithRev(9)}, + name: "range [/foo/a, /foo/c) serializable", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/c"), clientv3.WithSerializable()}, + wantKVs: []*mvccpb.KeyValue{Rev8PutFooA.Kv, Rev7TxnPutFooB.Kv}, + }, + { + name: "range [/foo/a, /foo/c) serializable at rev=latest+1 (future), returns error", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/c"), clientv3.WithSerializable()}, + optsFunc: func(latestRev int64) []clientv3.OpOption { + return []clientv3.OpOption{clientv3.WithRev(latestRev + 1)} + }, + expectErr: rpctypes.ErrFutureRev, + }, + { + name: "fromKey /foo/b serializable", + key: "/foo/b", + opts: []clientv3.OpOption{clientv3.WithFromKey(), clientv3.WithSerializable()}, + wantKVs: []*mvccpb.KeyValue{Rev7TxnPutFooB.Kv, Rev4PutFooC.Kv}, + }, + { + name: "fromKey /foo/b serializable at rev=latest+1 (future), returns error", + key: "/foo/b", + opts: []clientv3.OpOption{clientv3.WithFromKey(), clientv3.WithSerializable()}, + optsFunc: func(latestRev int64) []clientv3.OpOption { + return []clientv3.OpOption{clientv3.WithRev(latestRev + 1)} + }, expectErr: rpctypes.ErrFutureRev, }, } func TestCacheWithPrefixGetInScope(t *testing.T) { + if integration.ThroughProxy { + t.Skip("grpc proxy currently does not support requesting progress notifications") + } integration.BeforeTest(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) t.Cleanup(func() { clus.Terminate(t) }) @@ -926,61 +1029,108 @@ func testWithPrefixGet(t *testing.T, cli *clientv3.Client, getReader func() Gett Version: 1, } + baseRev := latestRev + testCases := []struct { - name string - key string - opts []clientv3.OpOption - wantKVs []*mvccpb.KeyValue - wantRevision int64 + name string + key string + opts []clientv3.OpOption + optsFunc func(latestRev int64) []clientv3.OpOption + wantKVs []*mvccpb.KeyValue }{ { - name: "single key within cache prefix", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable()}, - wantKVs: []*mvccpb.KeyValue{expectedFooA}, - wantRevision: latestRev, + name: "single key within cache prefix", + key: "/foo/a", + opts: []clientv3.OpOption{}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, + }, + { + name: "single key within cache prefix at latest/progress rev", + key: "/foo/a", + optsFunc: func(latestRev int64) []clientv3.OpOption { + return []clientv3.OpOption{clientv3.WithRev(latestRev)} + }, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, + }, + { + name: "prefix query within cache prefix", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, }, { - name: "single key within cache prefix at latest/progress rev", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(latestRev)}, - wantKVs: []*mvccpb.KeyValue{expectedFooA}, - wantRevision: latestRev, + name: "prefix query within cache prefix at latest/progress rev", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithPrefix()}, + optsFunc: func(latestRev int64) []clientv3.OpOption { + return []clientv3.OpOption{clientv3.WithRev(latestRev)} + }, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, + }, + { + name: "range query within cache prefix", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/b")}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, + }, + { + name: "range query within cache prefix at latest/progress rev", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/z")}, + optsFunc: func(latestRev int64) []clientv3.OpOption { + return []clientv3.OpOption{clientv3.WithRev(latestRev)} + }, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, }, { - name: "prefix query within cache prefix", - key: "/foo", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix()}, - wantKVs: []*mvccpb.KeyValue{expectedFooA}, - wantRevision: latestRev, + name: "single key within cache prefix serializable", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable()}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, }, { - name: "prefix query within cache prefix at latest/progress rev", - key: "/foo", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithPrefix(), clientv3.WithRev(latestRev)}, - wantKVs: []*mvccpb.KeyValue{expectedFooA}, - wantRevision: latestRev, + name: "single key within cache prefix at base rev serializable", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRev(baseRev)}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, }, { - name: "range query within cache prefix", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/foo/b")}, - wantKVs: []*mvccpb.KeyValue{expectedFooA}, - wantRevision: latestRev, + name: "prefix query within cache prefix serializable", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithSerializable()}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, }, { - name: "range query within cache prefix at latest/progress rev", - key: "/foo/a", - opts: []clientv3.OpOption{clientv3.WithSerializable(), clientv3.WithRange("/foo/z"), clientv3.WithRev(latestRev)}, - wantKVs: []*mvccpb.KeyValue{expectedFooA}, - wantRevision: latestRev, + name: "prefix query within cache prefix at base rev serializable", + key: "/foo", + opts: []clientv3.OpOption{clientv3.WithPrefix(), clientv3.WithSerializable(), clientv3.WithRev(baseRev)}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, + }, + { + name: "range query within cache prefix serializable", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/b"), clientv3.WithSerializable()}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, + }, + { + name: "range query within cache prefix at base rev serializable", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRange("/foo/z"), clientv3.WithSerializable(), clientv3.WithRev(baseRev)}, + wantKVs: []*mvccpb.KeyValue{expectedFooA}, }, } for _, tc := range testCases { tc := tc t.Run(tc.name, func(t *testing.T) { - resp, err := reader.Get(ctx, tc.key, tc.opts...) + latestRev += advanceRevision(t, cli) + + opts := tc.opts + if tc.optsFunc != nil { + opts = append(opts, tc.optsFunc(latestRev)...) + } + op := clientv3.OpGet(tc.key, opts...) + resp, err := reader.Get(ctx, tc.key, opts...) if err != nil { t.Fatalf("Get(%q): %v", tc.key, err) } @@ -989,14 +1139,23 @@ func testWithPrefixGet(t *testing.T, cli *clientv3.Client, getReader func() Gett t.Errorf("unexpected KVs (-want +got):\n%s", diff) } - if resp.Header.Revision != tc.wantRevision { - t.Errorf("Header.Revision=%d; want: %d", resp.Header.Revision, tc.wantRevision) + if op.IsSerializable() { + if resp.Header.Revision < baseRev { + t.Errorf("Header.Revision=%d; want >= %d", resp.Header.Revision, baseRev) + } + } else { + if resp.Header.Revision != latestRev { + t.Errorf("Header.Revision=%d; want: %d", resp.Header.Revision, latestRev) + } } }) } } func TestCacheWithPrefixGetOutOfScope(t *testing.T) { + if integration.ThroughProxy { + t.Skip("grpc proxy currently does not support requesting progress notifications") + } integration.BeforeTest(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) t.Cleanup(func() { clus.Terminate(t) }) @@ -1184,6 +1343,9 @@ func TestCacheUnsupportedWatchOptions(t *testing.T) { } func TestCacheUnsupportedGetOptions(t *testing.T) { + if integration.ThroughProxy { + t.Skip("grpc proxy currently does not support requesting progress notifications") + } integration.BeforeTest(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) t.Cleanup(func() { clus.Terminate(t) }) @@ -1210,7 +1372,6 @@ func TestCacheUnsupportedGetOptions(t *testing.T) { {"WithMaxModRevision", []clientv3.OpOption{clientv3.WithMaxModRev(10)}}, {"WithMinCreateRevision", []clientv3.OpOption{clientv3.WithMinCreateRev(3)}}, {"WithMaxCreateRevision", []clientv3.OpOption{clientv3.WithMaxCreateRev(5)}}, - {"NoSerializable", nil}, } for _, tc := range unsupported { @@ -1270,6 +1431,18 @@ func collectAndAssertAtomicEvents(t *testing.T, watch clientv3.WatchChan) (event } } +func advanceRevision(t *testing.T, kv clientv3.KV) int64 { + t.Helper() + n := rand.Intn(3) + 3 + for i := 0; i < n; i++ { + _, err := kv.Put(t.Context(), fmt.Sprintf("/bar/%d/%s", i, stringutil.RandString(10)), "v") + if err != nil { + t.Fatalf("Put: %v", err) + } + } + return int64(n) +} + func applyEvents(ctx context.Context, t *testing.T, kv clientv3.KV, evs []*clientv3.Event) int64 { var lastRev int64 for _, batches := range batchEventsByRevision(evs) { From eea593f0d83cc8e39392b70a468cb481f848a6a9 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 20 Mar 2026 09:40:12 +0000 Subject: [PATCH 0877/1068] Bump github.com/golangci/golangci-lint/v2 to v2.11.3 Signed-off-by: Benjamin Wang --- bill-of-materials.json | 9 +++++++++ go.work.sum | 8 ++++---- tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 8 ++++---- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index 9a4265c164cd..49e4831088d4 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -17,6 +17,15 @@ } ] }, + { + "project": "github.com/antithesishq/antithesis-sdk-go", + "licenses": [ + { + "type": "MIT License", + "confidence": 1 + } + ] + }, { "project": "github.com/beorn7/perks/quantile", "licenses": [ diff --git a/go.work.sum b/go.work.sum index 40c072c6dfa0..7c302607689f 100644 --- a/go.work.sum +++ b/go.work.sum @@ -385,8 +385,8 @@ github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0 h1:LiZB1h0GIcudcDci2 github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0/go.mod h1:F/7q8/HZz+TXjlsoZQQKVYvXTZaFH4QRa3y+j1p7MS0= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= -github.com/openai/openai-go/v3 v3.23.0 h1:FRFwTcB4FoWFtIunTY/8fgHvzSHgqbfWjiCwOMVrsvw= -github.com/openai/openai-go/v3 v3.23.0/go.mod h1:cdufnVK14cWcT9qA1rRtrXx4FTRsgbDPW7Ia7SS5cZo= +github.com/openai/openai-go/v3 v3.26.0 h1:bRt6H/ozMNt/dDkN4gobnLqaEGrRGBzmbVs0xxJEnQE= +github.com/openai/openai-go/v3 v3.26.0/go.mod h1:cdufnVK14cWcT9qA1rRtrXx4FTRsgbDPW7Ia7SS5cZo= github.com/otiai10/curr v1.0.0 h1:TJIWdbX0B+kpNagQrjgq8bCMrbhiuX73M2XwgtDMoOI= github.com/otiai10/mint v1.3.1 h1:BCmzIS3n71sGfHB5NMNDB3lHYPz8fWSkCAErHed//qc= github.com/phpdave11/gofpdf v1.4.2 h1:KPKiIbfwbvC/wOncwhrpRdXVj2CZTCFlw4wnoyjtHfQ= @@ -484,8 +484,8 @@ google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA= google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genai v1.47.0 h1:iWCS7gEdO6rctOqfCYLOrZGKu2D+N42aTnCEcBvB1jo= -google.golang.org/genai v1.47.0/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= +google.golang.org/genai v1.49.0 h1:Se+QJaH2GYK1aaR1o5S38mlU2GD5FnVvP76nfkV7LH0= +google.golang.org/genai v1.49.0/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230720185612-659f7aaaa771 h1:gm8vsVR64Jx1GxHY8M+p8YA2bxU/H/lymcutB2l7l9s= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 7ded3034b252..52f7998518c0 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -9,7 +9,7 @@ require ( github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint/v2 v2.11.1 + github.com/golangci/golangci-lint/v2 v2.11.3 github.com/google/yamlfmt v0.21.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 github.com/ryancurrah/gomodguard v1.4.1 @@ -195,7 +195,7 @@ require ( github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect - github.com/securego/gosec/v2 v2.24.7 // indirect + github.com/securego/gosec/v2 v2.24.8-0.20260309165252-619ce2117e08 // indirect github.com/sirupsen/logrus v1.9.4 // indirect github.com/sivchari/containedctx v1.0.3 // indirect github.com/sonatard/noctx v0.5.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 3460513fdc5d..d6257c420b89 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -207,8 +207,8 @@ github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarog github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint/v2 v2.11.1 h1:aGbjflzzKNIdOoq/NawrhFjYpkNY4WzPSeIp2zBbzG8= -github.com/golangci/golangci-lint/v2 v2.11.1/go.mod h1:wexdFBIQNhHNhDe1oqzlGFE5dYUqlfccWJKWjoWF1GI= +github.com/golangci/golangci-lint/v2 v2.11.3 h1:ySX1GtLwlwOEzcLKJifI/aIVesrcHDno+5mrro8rWes= +github.com/golangci/golangci-lint/v2 v2.11.3/go.mod h1:HmDEVZuxz77cNLumPfNNHAFyMX/b7IbA0tpmAbwiVfo= github.com/golangci/golines v0.15.0 h1:Qnph25g8Y1c5fdo1X7GaRDGgnMHgnxh4Gk4VfPTtRx0= github.com/golangci/golines v0.15.0/go.mod h1:AZjXd23tbHMpowhtnGlj9KCNsysj72aeZVVHnVcZx10= github.com/golangci/misspell v0.8.0 h1:qvxQhiE2/5z+BVRo1kwYA8yGz+lOlu5Jfvtx2b04Jbg= @@ -429,8 +429,8 @@ github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tM github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= github.com/sashamelentyev/usestdlibvars v1.29.0 h1:8J0MoRrw4/NAXtjQqTHrbW9NN+3iMf7Knkq057v4XOQ= github.com/sashamelentyev/usestdlibvars v1.29.0/go.mod h1:8PpnjHMk5VdeWlVb4wCdrB8PNbLqZ3wBZTZWkrpZZL8= -github.com/securego/gosec/v2 v2.24.7 h1:3k5yJnrhT1TTdsG0ZsnenlfCcT+7Y/+zeCPHbL7QAn8= -github.com/securego/gosec/v2 v2.24.7/go.mod h1:AdDJbjcG/XxFgVv7pW19vMNYlFM6+Q6Qy3t6lWAUcEY= +github.com/securego/gosec/v2 v2.24.8-0.20260309165252-619ce2117e08 h1:AoLtJX4WUtZkhhUUMFy3GgecAALp/Mb4S1iyQOA2s0U= +github.com/securego/gosec/v2 v2.24.8-0.20260309165252-619ce2117e08/go.mod h1:+XLCJiRE95ga77XInNELh2M6zQP+PdqiT9Zpm0D9Wpk= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= From 9a24a6421f69cc9b4850ffba3a686f4384b827a0 Mon Sep 17 00:00:00 2001 From: joshjms Date: Fri, 27 Mar 2026 14:05:07 +0800 Subject: [PATCH 0878/1068] dependency: bump github.com/golangci/golangci-lint/v2 from 2.11.3 to 2.11.4 in /tools/mod Signed-off-by: joshjms --- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- go.work.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 8 ++++---- tools/mod/go.sum | 16 ++++++++-------- 11 files changed, 26 insertions(+), 26 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 999854e6b90a..841ffcbf8715 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -29,7 +29,7 @@ require ( github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/fatih/color v1.18.0 // indirect + github.com/fatih/color v1.19.0 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index be994248b33d..2d87a730dd69 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -23,8 +23,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= +github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 153a795e4ef4..67d8a0bb1317 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -38,7 +38,7 @@ require ( github.com/clipperhouse/uax29/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/fatih/color v1.18.0 // indirect + github.com/fatih/color v1.19.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 9cb0bd7d6d65..08b694aad7f3 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -21,8 +21,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= +github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= diff --git a/go.mod b/go.mod index 778d7f69373f..27ff58bd6ee7 100644 --- a/go.mod +++ b/go.mod @@ -50,7 +50,7 @@ require ( github.com/clipperhouse/uax29/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/fatih/color v1.18.0 // indirect + github.com/fatih/color v1.19.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/go.sum b/go.sum index 70e158828724..94a7a295c87c 100644 --- a/go.sum +++ b/go.sum @@ -27,8 +27,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= +github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= diff --git a/go.work.sum b/go.work.sum index 7c302607689f..0e11d8495aa1 100644 --- a/go.work.sum +++ b/go.work.sum @@ -324,8 +324,8 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.4.3 h1:cxFyXhxlvAifxnkKKdlxv8XqUf59tDlYjnV5YYfsJJY= -github.com/jackc/pgx/v5 v5.4.3/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA= +github.com/jackc/pgx/v5 v5.5.4 h1:Xp2aQS8uXButQdnCMWNmvx6UysWQQC+u1EoizjguY+8= +github.com/jackc/pgx/v5 v5.5.4/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A= github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= diff --git a/tests/go.mod b/tests/go.mod index 9292a86c5ab9..cd024ffb1aa9 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -67,7 +67,7 @@ require ( github.com/creack/pty v1.1.18 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/fatih/color v1.18.0 // indirect + github.com/fatih/color v1.19.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/tests/go.sum b/tests/go.sum index c00d54905196..8ca4cc764077 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -33,8 +33,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= +github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 52f7998518c0..5962b45b0212 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -9,7 +9,7 @@ require ( github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/cloudflare/cfssl v1.6.5 github.com/gogo/protobuf v1.3.2 - github.com/golangci/golangci-lint/v2 v2.11.3 + github.com/golangci/golangci-lint/v2 v2.11.4 github.com/google/yamlfmt v0.21.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 github.com/ryancurrah/gomodguard v1.4.1 @@ -85,7 +85,7 @@ require ( github.com/dlclark/regexp2 v1.11.5 // indirect github.com/dnephin/pflag v1.0.7 // indirect github.com/ettle/strcase v0.2.0 // indirect - github.com/fatih/color v1.18.0 // indirect + github.com/fatih/color v1.19.0 // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/firefart/nonamedreturns v1.0.6 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect @@ -188,7 +188,7 @@ require ( github.com/raeperd/recvcheck v0.2.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect + github.com/ryanrolds/sqlclosecheck v0.6.0 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect github.com/sagikazarmark/locafero v0.7.0 // indirect github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect @@ -198,7 +198,7 @@ require ( github.com/securego/gosec/v2 v2.24.8-0.20260309165252-619ce2117e08 // indirect github.com/sirupsen/logrus v1.9.4 // indirect github.com/sivchari/containedctx v1.0.3 // indirect - github.com/sonatard/noctx v0.5.0 // indirect + github.com/sonatard/noctx v0.5.1 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/sourcegraph/go-diff v0.7.0 // indirect github.com/spf13/afero v1.15.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index d6257c420b89..67fc699c536f 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -139,8 +139,8 @@ github.com/dnephin/pflag v1.0.7 h1:oxONGlWxhmUct0YzKTgrpQv9AUA1wtPBn7zuSjJqptk= github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= +github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/firefart/nonamedreturns v1.0.6 h1:vmiBcKV/3EqKY3ZiPxCINmpS431OcE1S47AQUwhrg8E= @@ -207,8 +207,8 @@ github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarog github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint/v2 v2.11.3 h1:ySX1GtLwlwOEzcLKJifI/aIVesrcHDno+5mrro8rWes= -github.com/golangci/golangci-lint/v2 v2.11.3/go.mod h1:HmDEVZuxz77cNLumPfNNHAFyMX/b7IbA0tpmAbwiVfo= +github.com/golangci/golangci-lint/v2 v2.11.4 h1:GK+UlZBN5y7rh2PBnHA93XLSX6RaF7uhzJQ3JwU1wuA= +github.com/golangci/golangci-lint/v2 v2.11.4/go.mod h1:ODQDCASMA3VqfZYIbbQLpTRTzV7O/vjmIRF6u8NyFwI= github.com/golangci/golines v0.15.0 h1:Qnph25g8Y1c5fdo1X7GaRDGgnMHgnxh4Gk4VfPTtRx0= github.com/golangci/golines v0.15.0/go.mod h1:AZjXd23tbHMpowhtnGlj9KCNsysj72aeZVVHnVcZx10= github.com/golangci/misspell v0.8.0 h1:qvxQhiE2/5z+BVRo1kwYA8yGz+lOlu5Jfvtx2b04Jbg= @@ -415,8 +415,8 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7 github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryancurrah/gomodguard v1.4.1 h1:eWC8eUMNZ/wM/PWuZBv7JxxqT5fiIKSIyTvjb7Elr+g= github.com/ryancurrah/gomodguard v1.4.1/go.mod h1:qnMJwV1hX9m+YJseXEBhd2s90+1Xn6x9dLz11ualI1I= -github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= -github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= +github.com/ryanrolds/sqlclosecheck v0.6.0 h1:pEyL9okISdg1F1SEpJNlrEotkTGerv5BMk7U4AG0eVg= +github.com/ryanrolds/sqlclosecheck v0.6.0/go.mod h1:xyX16hsDaCMXHrMJ3JMzGf5OpDfHTOTTQrT7HOFUmeU= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs= github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= @@ -442,8 +442,8 @@ github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= -github.com/sonatard/noctx v0.5.0 h1:e/jdaqAsuWVOKQ0P6NWiIdDNHmHT5SwuuSfojFjzwrw= -github.com/sonatard/noctx v0.5.0/go.mod h1:64XdbzFb18XL4LporKXp8poqZtPKbCrqQ402CV+kJas= +github.com/sonatard/noctx v0.5.1 h1:wklWg9c9ZYugOAk7qG4yP4PBrlQsmSLPTvW1K4PRQMs= +github.com/sonatard/noctx v0.5.1/go.mod h1:64XdbzFb18XL4LporKXp8poqZtPKbCrqQ402CV+kJas= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= From 6df795d34a3d66ac04fb2d348c3567fdefaa4099 Mon Sep 17 00:00:00 2001 From: Upamanyu Sharma Date: Sat, 28 Mar 2026 16:33:03 -0400 Subject: [PATCH 0879/1068] cache: test Get() at a revision in between two updates Signed-off-by: Upamanyu Sharma --- tests/integration/cache_test.go | 34 ++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index b2b990e3c34c..0a0abf195d2c 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -994,7 +994,7 @@ func TestWithPrefixGet(t *testing.T) { func testWithPrefixGet(t *testing.T, cli *clientv3.Client, getReader func() Getter) { ctx := t.Context() - seedResp, err := cli.Put(ctx, "/foo/a", "val") + seedResp, err := cli.Put(ctx, "/foo/a", "val1") if err != nil { t.Fatalf("seed put: %v", err) } @@ -1002,15 +1002,19 @@ func testWithPrefixGet(t *testing.T, cli *clientv3.Client, getReader func() Gett reader := getReader() - var latestRev int64 for i := 0; i < 5; i++ { - r, err := cli.Put(ctx, fmt.Sprintf("/bar/x%d", i), fmt.Sprintf("%d", i)) + _, err = cli.Put(ctx, fmt.Sprintf("/bar/x%d", i), fmt.Sprintf("%d", i)) if err != nil { t.Fatalf("advance put: %v", err) } - latestRev = r.Header.Revision } + resp, err := cli.Put(ctx, "/foo/a", "val2") + if err != nil { + t.Fatalf("second put: %v", err) + } + latestRev := resp.Header.Revision + if err := cli.RequestProgress(ctx); err != nil { t.Fatalf("RequestProgress: %v", err) } @@ -1023,7 +1027,15 @@ func testWithPrefixGet(t *testing.T, cli *clientv3.Client, getReader func() Gett expectedFooA := &mvccpb.KeyValue{ Key: []byte("/foo/a"), - Value: []byte("val"), + Value: []byte("val2"), + CreateRevision: seedRev, + ModRevision: latestRev, + Version: 2, + } + + expectedOldFooA := &mvccpb.KeyValue{ + Key: []byte("/foo/a"), + Value: []byte("val1"), CreateRevision: seedRev, ModRevision: seedRev, Version: 1, @@ -1118,6 +1130,18 @@ func testWithPrefixGet(t *testing.T, cli *clientv3.Client, getReader func() Gett opts: []clientv3.OpOption{clientv3.WithRange("/foo/z"), clientv3.WithSerializable(), clientv3.WithRev(baseRev)}, wantKVs: []*mvccpb.KeyValue{expectedFooA}, }, + { + name: "prefix query within cache prefix at intermediate rev serializable", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRev(seedRev + 1), clientv3.WithSerializable()}, + wantKVs: []*mvccpb.KeyValue{expectedOldFooA}, + }, + { + name: "prefix query within cache prefix at intermediate rev", + key: "/foo/a", + opts: []clientv3.OpOption{clientv3.WithRev(seedRev + 1)}, + wantKVs: []*mvccpb.KeyValue{expectedOldFooA}, + }, } for _, tc := range testCases { From 3008fcaa73fe88c3883645b50e3430bec9631135 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Mar 2026 17:32:57 +0000 Subject: [PATCH 0880/1068] build(deps): bump github/codeql-action from 4.33.0 to 4.34.1 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.33.0 to 4.34.1. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/b1bff81932f5cdfc8695c7752dcee935dcd061c8...38697555549f1db7851b81482ff19f1fa5c4fedc) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.34.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f254a9c3bd7d..d53cac15564b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0 + uses: github/codeql-action/init@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0 + uses: github/codeql-action/autobuild@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0 + uses: github/codeql-action/analyze@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 890e55d0fcdc..3c3929f6055e 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0 + uses: github/codeql-action/upload-sarif@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1 with: sarif_file: results.sarif From ee072a1a64d0105d355e95e876c8f998eb0ef387 Mon Sep 17 00:00:00 2001 From: joshjms Date: Fri, 27 Mar 2026 14:10:45 +0800 Subject: [PATCH 0881/1068] dependency: bump github.com/olekukonko/tablewriter from 1.1.3 to 1.1.4 Signed-off-by: joshjms --- bill-of-materials.json | 11 +---------- etcdctl/go.mod | 12 ++++++------ etcdctl/go.sum | 22 ++++++++++------------ etcdutl/go.mod | 11 +++++------ etcdutl/go.sum | 22 ++++++++++------------ go.mod | 11 +++++------ go.sum | 22 ++++++++++------------ go.work.sum | 2 ++ tests/go.mod | 11 +++++------ tests/go.sum | 22 ++++++++++------------ tools/mod/go.mod | 3 +-- tools/mod/go.sum | 6 ++---- 12 files changed, 67 insertions(+), 88 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index 49e4831088d4..7547b8620258 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -81,16 +81,7 @@ ] }, { - "project": "github.com/clipperhouse/stringish", - "licenses": [ - { - "type": "MIT License", - "confidence": 1 - } - ] - }, - { - "project": "github.com/clipperhouse/uax29/v2", + "project": "github.com/clipperhouse/uax29/v2/graphemes", "licenses": [ { "type": "MIT License", diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 841ffcbf8715..668d012f4f37 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -8,7 +8,7 @@ require ( github.com/bgentry/speakeasy v0.2.0 github.com/cheggaaa/pb/v3 v3.1.7 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.1.3 + github.com/olekukonko/tablewriter v1.1.4 github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 @@ -23,9 +23,9 @@ require ( require ( github.com/VividCortex/ewma v1.2.0 // indirect - github.com/clipperhouse/displaywidth v0.6.2 // indirect - github.com/clipperhouse/stringish v0.1.1 // indirect - github.com/clipperhouse/uax29/v2 v2.3.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/clipperhouse/displaywidth v0.10.0 // indirect + github.com/clipperhouse/uax29/v2 v2.6.0 // indirect github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -37,8 +37,8 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.19 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect - github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 // indirect + github.com/olekukonko/errors v1.2.0 // indirect + github.com/olekukonko/ll v0.1.6 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.52.0 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 2d87a730dd69..73d1732c23a0 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -8,12 +8,10 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= -github.com/clipperhouse/displaywidth v0.6.2 h1:ZDpTkFfpHOKte4RG5O/BOyf3ysnvFswpyYrV7z2uAKo= -github.com/clipperhouse/displaywidth v0.6.2/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= -github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= -github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= -github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= -github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= +github.com/clipperhouse/displaywidth v0.10.0 h1:GhBG8WuerxjFQQYeuZAeVTuyxuX+UraiZGD4HJQ3Y8g= +github.com/clipperhouse/displaywidth v0.10.0/go.mod h1:XqJajYsaiEwkxOj4bowCTMcT1SgvHo9flfF3jQasdbs= +github.com/clipperhouse/uax29/v2 v2.6.0 h1:z0cDbUV+aPASdFb2/ndFnS9ts/WNXgTNNGFoKXuhpos= +github.com/clipperhouse/uax29/v2 v2.6.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= @@ -57,12 +55,12 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= -github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= -github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 h1:jrYnow5+hy3WRDCBypUFvVKNSPPCdqgSXIE9eJDD8LM= -github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= -github.com/olekukonko/tablewriter v1.1.3 h1:VSHhghXxrP0JHl+0NnKid7WoEmd9/urKRJLysb70nnA= -github.com/olekukonko/tablewriter v1.1.3/go.mod h1:9VU0knjhmMkXjnMKrZ3+L2JhhtsQ/L38BbL3CRNE8tM= +github.com/olekukonko/errors v1.2.0 h1:10Zcn4GeV59t/EGqJc8fUjtFT/FuUh5bTMzZ1XwmCRo= +github.com/olekukonko/errors v1.2.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.1.6 h1:lGVTHO+Qc4Qm+fce/2h2m5y9LvqaW+DCN7xW9hsU3uA= +github.com/olekukonko/ll v0.1.6/go.mod h1:NVUmjBb/aCtUpjKk75BhWrOlARz3dqsM+OtszpY4o88= +github.com/olekukonko/tablewriter v1.1.4 h1:ORUMI3dXbMnRlRggJX3+q7OzQFDdvgbN9nVWj1drm6I= +github.com/olekukonko/tablewriter v1.1.4/go.mod h1:+kedxuyTtgoZLwif3P1Em4hARJs+mVnzKxmsCL/C5RY= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 67d8a0bb1317..68b7635c15ed 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -15,7 +15,7 @@ replace ( require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/olekukonko/tablewriter v1.1.3 + github.com/olekukonko/tablewriter v1.1.4 github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 @@ -33,9 +33,8 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/clipperhouse/displaywidth v0.6.2 // indirect - github.com/clipperhouse/stringish v0.1.1 // indirect - github.com/clipperhouse/uax29/v2 v2.3.0 // indirect + github.com/clipperhouse/displaywidth v0.10.0 // indirect + github.com/clipperhouse/uax29/v2 v2.6.0 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.19.0 // indirect @@ -57,8 +56,8 @@ require ( github.com/mattn/go-runewidth v0.0.19 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect - github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 // indirect + github.com/olekukonko/errors v1.2.0 // indirect + github.com/olekukonko/ll v0.1.6 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 08b694aad7f3..2da11b45adf4 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -4,12 +4,10 @@ github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1x github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/clipperhouse/displaywidth v0.6.2 h1:ZDpTkFfpHOKte4RG5O/BOyf3ysnvFswpyYrV7z2uAKo= -github.com/clipperhouse/displaywidth v0.6.2/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= -github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= -github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= -github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= -github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= +github.com/clipperhouse/displaywidth v0.10.0 h1:GhBG8WuerxjFQQYeuZAeVTuyxuX+UraiZGD4HJQ3Y8g= +github.com/clipperhouse/displaywidth v0.10.0/go.mod h1:XqJajYsaiEwkxOj4bowCTMcT1SgvHo9flfF3jQasdbs= +github.com/clipperhouse/uax29/v2 v2.6.0 h1:z0cDbUV+aPASdFb2/ndFnS9ts/WNXgTNNGFoKXuhpos= +github.com/clipperhouse/uax29/v2 v2.6.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -70,12 +68,12 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= -github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= -github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 h1:jrYnow5+hy3WRDCBypUFvVKNSPPCdqgSXIE9eJDD8LM= -github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= -github.com/olekukonko/tablewriter v1.1.3 h1:VSHhghXxrP0JHl+0NnKid7WoEmd9/urKRJLysb70nnA= -github.com/olekukonko/tablewriter v1.1.3/go.mod h1:9VU0knjhmMkXjnMKrZ3+L2JhhtsQ/L38BbL3CRNE8tM= +github.com/olekukonko/errors v1.2.0 h1:10Zcn4GeV59t/EGqJc8fUjtFT/FuUh5bTMzZ1XwmCRo= +github.com/olekukonko/errors v1.2.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.1.6 h1:lGVTHO+Qc4Qm+fce/2h2m5y9LvqaW+DCN7xW9hsU3uA= +github.com/olekukonko/ll v0.1.6/go.mod h1:NVUmjBb/aCtUpjKk75BhWrOlARz3dqsM+OtszpY4o88= +github.com/olekukonko/tablewriter v1.1.4 h1:ORUMI3dXbMnRlRggJX3+q7OzQFDdvgbN9nVWj1drm6I= +github.com/olekukonko/tablewriter v1.1.4/go.mod h1:+kedxuyTtgoZLwif3P1Em4hARJs+mVnzKxmsCL/C5RY= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= diff --git a/go.mod b/go.mod index 27ff58bd6ee7..fa9b15177768 100644 --- a/go.mod +++ b/go.mod @@ -45,9 +45,8 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/clipperhouse/displaywidth v0.6.2 // indirect - github.com/clipperhouse/stringish v0.1.1 // indirect - github.com/clipperhouse/uax29/v2 v2.3.0 // indirect + github.com/clipperhouse/displaywidth v0.10.0 // indirect + github.com/clipperhouse/uax29/v2 v2.6.0 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.19.0 // indirect @@ -69,9 +68,9 @@ require ( github.com/mattn/go-runewidth v0.0.19 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect - github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 // indirect - github.com/olekukonko/tablewriter v1.1.3 // indirect + github.com/olekukonko/errors v1.2.0 // indirect + github.com/olekukonko/ll v0.1.6 // indirect + github.com/olekukonko/tablewriter v1.1.4 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect diff --git a/go.sum b/go.sum index 94a7a295c87c..7e3c5edad0a4 100644 --- a/go.sum +++ b/go.sum @@ -10,12 +10,10 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= -github.com/clipperhouse/displaywidth v0.6.2 h1:ZDpTkFfpHOKte4RG5O/BOyf3ysnvFswpyYrV7z2uAKo= -github.com/clipperhouse/displaywidth v0.6.2/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= -github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= -github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= -github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= -github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= +github.com/clipperhouse/displaywidth v0.10.0 h1:GhBG8WuerxjFQQYeuZAeVTuyxuX+UraiZGD4HJQ3Y8g= +github.com/clipperhouse/displaywidth v0.10.0/go.mod h1:XqJajYsaiEwkxOj4bowCTMcT1SgvHo9flfF3jQasdbs= +github.com/clipperhouse/uax29/v2 v2.6.0 h1:z0cDbUV+aPASdFb2/ndFnS9ts/WNXgTNNGFoKXuhpos= +github.com/clipperhouse/uax29/v2 v2.6.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -76,12 +74,12 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= -github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= -github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 h1:jrYnow5+hy3WRDCBypUFvVKNSPPCdqgSXIE9eJDD8LM= -github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= -github.com/olekukonko/tablewriter v1.1.3 h1:VSHhghXxrP0JHl+0NnKid7WoEmd9/urKRJLysb70nnA= -github.com/olekukonko/tablewriter v1.1.3/go.mod h1:9VU0knjhmMkXjnMKrZ3+L2JhhtsQ/L38BbL3CRNE8tM= +github.com/olekukonko/errors v1.2.0 h1:10Zcn4GeV59t/EGqJc8fUjtFT/FuUh5bTMzZ1XwmCRo= +github.com/olekukonko/errors v1.2.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.1.6 h1:lGVTHO+Qc4Qm+fce/2h2m5y9LvqaW+DCN7xW9hsU3uA= +github.com/olekukonko/ll v0.1.6/go.mod h1:NVUmjBb/aCtUpjKk75BhWrOlARz3dqsM+OtszpY4o88= +github.com/olekukonko/tablewriter v1.1.4 h1:ORUMI3dXbMnRlRggJX3+q7OzQFDdvgbN9nVWj1drm6I= +github.com/olekukonko/tablewriter v1.1.4/go.mod h1:+kedxuyTtgoZLwif3P1Em4hARJs+mVnzKxmsCL/C5RY= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= diff --git a/go.work.sum b/go.work.sum index 0e11d8495aa1..d135befeb142 100644 --- a/go.work.sum +++ b/go.work.sum @@ -207,6 +207,8 @@ github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= +github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= +github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a h1:8d1CEOF1xldesKds5tRG3tExBsMOgWYownMHNCsev54= github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a/go.mod h1:rzgs2ZOiguV6/NpiDgADjRLPNyZlApIWxKpkT+X8SdY= github.com/cloudflare/circl v1.1.0 h1:bZgT/A+cikZnKIwn7xL2OBj012Bmvho/o6RpRvv3GKY= diff --git a/tests/go.mod b/tests/go.mod index cd024ffb1aa9..b616fce68178 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -24,7 +24,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 - github.com/olekukonko/tablewriter v1.1.3 + github.com/olekukonko/tablewriter v1.1.4 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.67.5 @@ -60,9 +60,8 @@ require ( github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cheggaaa/pb/v3 v3.1.7 // indirect - github.com/clipperhouse/displaywidth v0.6.2 // indirect - github.com/clipperhouse/stringish v0.1.1 // indirect - github.com/clipperhouse/uax29/v2 v2.3.0 // indirect + github.com/clipperhouse/displaywidth v0.10.0 // indirect + github.com/clipperhouse/uax29/v2 v2.6.0 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/creack/pty v1.1.18 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -81,8 +80,8 @@ require ( github.com/mattn/go-runewidth v0.0.19 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect - github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 // indirect + github.com/olekukonko/errors v1.2.0 // indirect + github.com/olekukonko/ll v0.1.6 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/sirupsen/logrus v1.9.4 // indirect diff --git a/tests/go.sum b/tests/go.sum index 8ca4cc764077..ab66ee417e42 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -14,12 +14,10 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= -github.com/clipperhouse/displaywidth v0.6.2 h1:ZDpTkFfpHOKte4RG5O/BOyf3ysnvFswpyYrV7z2uAKo= -github.com/clipperhouse/displaywidth v0.6.2/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= -github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= -github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= -github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= -github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= +github.com/clipperhouse/displaywidth v0.10.0 h1:GhBG8WuerxjFQQYeuZAeVTuyxuX+UraiZGD4HJQ3Y8g= +github.com/clipperhouse/displaywidth v0.10.0/go.mod h1:XqJajYsaiEwkxOj4bowCTMcT1SgvHo9flfF3jQasdbs= +github.com/clipperhouse/uax29/v2 v2.6.0 h1:z0cDbUV+aPASdFb2/ndFnS9ts/WNXgTNNGFoKXuhpos= +github.com/clipperhouse/uax29/v2 v2.6.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -82,12 +80,12 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= -github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= -github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 h1:jrYnow5+hy3WRDCBypUFvVKNSPPCdqgSXIE9eJDD8LM= -github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew= -github.com/olekukonko/tablewriter v1.1.3 h1:VSHhghXxrP0JHl+0NnKid7WoEmd9/urKRJLysb70nnA= -github.com/olekukonko/tablewriter v1.1.3/go.mod h1:9VU0knjhmMkXjnMKrZ3+L2JhhtsQ/L38BbL3CRNE8tM= +github.com/olekukonko/errors v1.2.0 h1:10Zcn4GeV59t/EGqJc8fUjtFT/FuUh5bTMzZ1XwmCRo= +github.com/olekukonko/errors v1.2.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.1.6 h1:lGVTHO+Qc4Qm+fce/2h2m5y9LvqaW+DCN7xW9hsU3uA= +github.com/olekukonko/ll v0.1.6/go.mod h1:NVUmjBb/aCtUpjKk75BhWrOlARz3dqsM+OtszpY4o88= +github.com/olekukonko/tablewriter v1.1.4 h1:ORUMI3dXbMnRlRggJX3+q7OzQFDdvgbN9nVWj1drm6I= +github.com/olekukonko/tablewriter v1.1.4/go.mod h1:+kedxuyTtgoZLwif3P1Em4hARJs+mVnzKxmsCL/C5RY= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 5962b45b0212..599c90a54c93 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -75,8 +75,7 @@ require ( github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect github.com/charmbracelet/x/term v0.2.1 // indirect github.com/ckaznocha/intrange v0.3.1 // indirect - github.com/clipperhouse/stringish v0.1.1 // indirect - github.com/clipperhouse/uax29/v2 v2.3.0 // indirect + github.com/clipperhouse/uax29/v2 v2.6.0 // indirect github.com/curioswitch/go-reassign v0.3.0 // indirect github.com/daixiang0/gci v0.13.7 // indirect github.com/dave/dst v0.27.3 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 67fc699c536f..7b4c07d16e41 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -109,10 +109,8 @@ github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQ github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg= github.com/ckaznocha/intrange v0.3.1 h1:j1onQyXvHUsPWujDH6WIjhyH26gkRt/txNlV7LspvJs= github.com/ckaznocha/intrange v0.3.1/go.mod h1:QVepyz1AkUoFQkpEqksSYpNpUo3c5W7nWh/s6SHIJJk= -github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= -github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= -github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= -github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= +github.com/clipperhouse/uax29/v2 v2.6.0 h1:z0cDbUV+aPASdFb2/ndFnS9ts/WNXgTNNGFoKXuhpos= +github.com/clipperhouse/uax29/v2 v2.6.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= github.com/cloudflare/cfssl v1.6.5 h1:46zpNkm6dlNkMZH/wMW22ejih6gIaJbzL2du6vD7ZeI= github.com/cloudflare/cfssl v1.6.5/go.mod h1:Bk1si7sq8h2+yVEDrFJiz3d7Aw+pfjjJSZVaD+Taky4= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= From acea9eda49e4821e691d8c1c5dc565c64ec9b5a3 Mon Sep 17 00:00:00 2001 From: Upamanyu Sharma Date: Sat, 28 Mar 2026 15:46:55 -0400 Subject: [PATCH 0882/1068] cache: avoid returning too-new revision in getSnapshot Signed-off-by: Upamanyu Sharma --- cache/store.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/cache/store.go b/cache/store.go index 63bbc11eb75b..a4e91e21f46b 100644 --- a/cache/store.go +++ b/cache/store.go @@ -87,19 +87,15 @@ func (s *store) getSnapshot(rev int64) (*snapshot, int64, error) { if rev > s.latest.rev { return nil, 0, rpctypes.ErrFutureRev } - oldestRev := s.history.PeekOldest() - if rev < oldestRev { - return nil, 0, rpctypes.ErrCompacted - } var targetSnapshot *snapshot - s.history.AscendGreaterOrEqual(rev, func(rev int64, snap *snapshot) bool { + s.history.DescendLessOrEqual(rev, func(rev int64, snap *snapshot) bool { targetSnapshot = snap return false }) - // If s.history < rev < s.latest.rev serve latest. + if targetSnapshot == nil { - targetSnapshot = &s.latest + return nil, 0, rpctypes.ErrCompacted } return targetSnapshot, s.latest.rev, nil From 27d33f012e37cb1a464efe9c2a316f98f4d43605 Mon Sep 17 00:00:00 2001 From: Alok Kumar Singh Date: Fri, 27 Mar 2026 19:49:46 +0530 Subject: [PATCH 0883/1068] cache: Passive notification for consistent read Signed-off-by: Alok Kumar Singh --- cache/cache.go | 33 ++++++++++++++++++++++----------- cache/cache_test.go | 21 +++++++++++++-------- cache/config.go | 2 -- cache/store.go | 9 ++++++++- 4 files changed, 43 insertions(+), 22 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index e148a30dc4c2..d7842f3f561e 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -244,23 +244,34 @@ func (c *Cache) waitTillRevision(ctx context.Context, rev int64) error { c.progressRequestor.add() defer c.progressRequestor.remove() - ticker := time.NewTicker(revisionPollInterval) - defer ticker.Stop() - timeout := time.After(c.cfg.WaitTimeout) + startTime := time.Now() - // TODO: rewrite from periodic polling to passive notification - for { - if c.store.LatestRev() >= rev { - return nil - } + timeoutCh := time.After(c.cfg.WaitTimeout) + go func() { select { - case <-ticker.C: - case <-timeout: - return ErrCacheTimeout + case <-timeoutCh: + c.store.revCond.Broadcast() case <-ctx.Done(): + c.store.revCond.Broadcast() + } + }() + + c.store.mu.RLock() + defer c.store.mu.RUnlock() + + for c.store.latest.rev < rev { + if time.Since(startTime) >= c.cfg.WaitTimeout { + return ErrCacheTimeout + } + + if ctx.Err() != nil { return ctx.Err() } + + c.store.revCond.Wait() } + + return nil } // Close cancels the private context and blocks until all goroutines return. diff --git a/cache/cache_test.go b/cache/cache_test.go index ce3aad2ac697..47d16d7bfd35 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -20,6 +20,7 @@ import ( "fmt" "sync" "testing" + "testing/synctest" "time" "github.com/google/go-cmp/cmp" @@ -733,7 +734,9 @@ func TestWaitTillRevision(t *testing.T) { t.Run("cache_already_caught_up", func(t *testing.T) { c, _ := newCacheForWaitTest(10, 10, newTestProgressRequestor()) - if err := c.waitTillRevision(context.Background(), 10); err != nil { + ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) + defer cancel() + if err := c.waitTillRevision(ctx, 10); err != nil { t.Fatalf("unexpected error: %v", err) } }) @@ -805,14 +808,16 @@ func TestWaitTillRevision(t *testing.T) { }) t.Run("timeout", func(t *testing.T) { - c, _ := newCacheForWaitTest(10, 5, newTestProgressRequestor()) + synctest.Test(t, func(t *testing.T) { + c, _ := newCacheForWaitTest(10, 5, newTestProgressRequestor()) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - err := c.waitTillRevision(ctx, 10) - if !errors.Is(err, ErrCacheTimeout) { - t.Fatalf("got %v, want ErrCacheTimeout", err) - } + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + err := c.waitTillRevision(ctx, 10) + if !errors.Is(err, ErrCacheTimeout) { + t.Fatalf("got %v, want ErrCacheTimeout", err) + } + }) }) } diff --git a/cache/config.go b/cache/config.go index 3419ef40134c..c7e2e30bc957 100644 --- a/cache/config.go +++ b/cache/config.go @@ -16,8 +16,6 @@ package cache import "time" -const revisionPollInterval = 50 * time.Millisecond - type Config struct { // PerWatcherBufferSize caps each watcher’s buffered channel. // Bigger values tolerate brief client slow-downs at the cost of extra memory. diff --git a/cache/store.go b/cache/store.go index 96151de91391..63bbc11eb75b 100644 --- a/cache/store.go +++ b/cache/store.go @@ -32,6 +32,7 @@ var ErrNotReady = fmt.Errorf("cache: store not ready") // reads at historical revisions can be served until they fall out of the window. type store struct { mu sync.RWMutex + revCond *sync.Cond // revCond is broadcast whenever latest.rev changes degree int latest snapshot // latest is the mutable working snapshot history ringBuffer[*snapshot] // history stores immutable cloned snapshots @@ -39,11 +40,14 @@ type store struct { func newStore(degree int, historyCapacity int) *store { tree := btree.New[*kvItem](degree, kvItemLess) - return &store{ + s := &store{ degree: degree, latest: snapshot{rev: 0, tree: tree}, history: *newRingBuffer(historyCapacity, func(s *snapshot) int64 { return s.rev }), } + // Use RLocker so waiters hold read lock, allowing concurrent reads and non-blocking writes + s.revCond = sync.NewCond(s.mu.RLocker()) + return s } type kvItem struct { @@ -113,6 +117,7 @@ func (s *store) Restore(kvs []*mvccpb.KeyValue, rev int64) { s.history.RebaseHistory() s.latest.rev = rev s.history.Append(newClonedSnapshot(rev, s.latest.tree)) + s.revCond.Broadcast() } func (s *store) Apply(resp clientv3.WatchResponse) error { @@ -142,6 +147,7 @@ func (s *store) applyProgressNotifyLocked(revision int64) { return } s.latest.rev = revision + s.revCond.Broadcast() } func (s *store) applyEventsLocked(events []*clientv3.Event) error { @@ -162,6 +168,7 @@ func (s *store) applyEventsLocked(events []*clientv3.Event) error { } s.latest.rev = rev s.history.Append(newClonedSnapshot(rev, s.latest.tree)) + s.revCond.Broadcast() } return nil } From 114f83179a430485ceb40d36b3f020f1f14db4b0 Mon Sep 17 00:00:00 2001 From: joshjms Date: Fri, 27 Mar 2026 17:19:19 +0800 Subject: [PATCH 0884/1068] dependency: bump golang.org/x/image from v0.25.0 to v0.38.0 Signed-off-by: joshjms --- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 561534316dbb..0921d66a55fc 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -21,7 +21,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect - golang.org/x/image v0.25.0 // indirect + golang.org/x/image v0.38.0 // indirect golang.org/x/text v0.35.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 5c0861c37584..604abde6768f 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -41,8 +41,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= -golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ= -golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs= +golang.org/x/image v0.38.0 h1:5l+q+Y9JDC7mBOMjo4/aPhMDcxEptsX+Tt3GgRQRPuE= +golang.org/x/image v0.38.0/go.mod h1:/3f6vaXC+6CEanU4KJxbcUZyEePbyKbaLoDOe4ehFYY= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= From 80235b87dbfff48b2fae3f33b885b1a22bf7ecf6 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 29 Mar 2026 19:06:08 +0200 Subject: [PATCH 0885/1068] Extract common traffic subfunction between robustness and Antithesis code Signed-off-by: Marek Siarkowicz --- .../test-template/robustness/traffic/main.go | 110 +++------ tests/robustness/traffic/etcd.go | 14 +- tests/robustness/traffic/kubernetes.go | 14 +- tests/robustness/traffic/traffic.go | 209 +++++++++--------- 4 files changed, 149 insertions(+), 198 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index a8a88f94b3ce..555ebcb514a6 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -149,90 +149,42 @@ func simulateTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, ho concurrencyLimiter := traffic.NewConcurrencyLimiter(profile.KeyValue.MaxNonUniqueRequestConcurrency) finish := closeAfter(ctx, duration) keyStore := traffic.NewKeyStore(10, "key") - for i := range profile.KeyValue.MemberClientCount { - c := connect(clientSet, []string{hosts[i%len(hosts)]}) - wg.Add(1) - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - tf.RunKeyValueLoop(ctx, traffic.RunTrafficLoopParam{ - Client: c, - QPSLimiter: limiter, - IDs: clientSet.IdentityProvider(), - LeaseIDStorage: leaseStorage, - NonUniqueRequestConcurrencyLimiter: concurrencyLimiter, - KeyStore: keyStore, - Storage: kubernetesStorage, - Finish: finish, - }) - }(c) - } - for range profile.KeyValue.ClusterClientCount { - c := connect(clientSet, hosts) - wg.Add(1) - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - tf.RunKeyValueLoop(ctx, traffic.RunTrafficLoopParam{ - Client: c, - QPSLimiter: limiter, - IDs: clientSet.IdentityProvider(), - LeaseIDStorage: leaseStorage, - NonUniqueRequestConcurrencyLimiter: concurrencyLimiter, - KeyStore: keyStore, - Storage: kubernetesStorage, - Finish: finish, - }) - }(c) + err := traffic.SimulateKeyValueTraffic(ctx, &wg, profile.KeyValue, hosts, clientSet, tf, traffic.RunTrafficLoopParam{ + QPSLimiter: limiter, + IDs: clientSet.IdentityProvider(), + LeaseIDStorage: leaseStorage, + NonUniqueRequestConcurrencyLimiter: concurrencyLimiter, + KeyStore: keyStore, + Storage: kubernetesStorage, + Finish: finish, + }) + if err != nil { + assert.Unreachable("Client failed to connect to an etcd host", map[string]any{"endpoints": hosts, "error": err}) + os.Exit(1) } if profile.Watch != nil { - for i := range profile.Watch.MemberClientCount { - c := connect(clientSet, []string{hosts[i%len(hosts)]}) - wg.Add(1) - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ - Config: *profile.Watch, - Client: c, - QPSLimiter: limiter, - KeyStore: keyStore, - Storage: kubernetesStorage, - Finish: finish, - Logger: lg, - }) - }(c) - } - for range profile.Watch.ClusterClientCount { - c := connect(clientSet, hosts) - wg.Add(1) - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - tf.RunWatchLoop(ctx, traffic.RunWatchLoopParam{ - Config: *profile.Watch, - Client: c, - QPSLimiter: limiter, - KeyStore: keyStore, - Storage: kubernetesStorage, - Finish: finish, - Logger: lg, - }) - }(c) + err := traffic.SimulateWatchTraffic(ctx, &wg, profile.Watch, hosts, clientSet, tf, traffic.RunWatchLoopParam{ + Config: *profile.Watch, + QPSLimiter: limiter, + KeyStore: keyStore, + Storage: kubernetesStorage, + Finish: finish, + Logger: lg, + }) + if err != nil { + assert.Unreachable("Client failed to connect to an etcd host", map[string]any{"endpoints": hosts, "error": err}) + os.Exit(1) } } if profile.Compaction != nil { - wg.Add(1) - compactClient := connect(clientSet, hosts) - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - tf.RunCompactLoop(ctx, traffic.RunCompactLoopParam{ - Client: c, - Period: profile.Compaction.Period, - Finish: finish, - }) - }(compactClient) + err := traffic.SimulateCompactionTraffic(ctx, &wg, profile.Compaction, hosts, clientSet, tf, traffic.RunCompactLoopParam{ + Period: profile.Compaction.Period, + Finish: finish, + }) + if err != nil { + assert.Unreachable("Client failed to connect to an etcd host", map[string]any{"endpoints": hosts, "error": err}) + os.Exit(1) + } } defragPeriod := profile.Compaction.Period * time.Duration(len(hosts)) for _, h := range hosts { diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index c74f9f2e0904..840eaea298fe 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -102,14 +102,14 @@ func (t etcdTraffic) Name() string { return "Etcd" } -func (t etcdTraffic) RunKeyValueLoop(ctx context.Context, p RunTrafficLoopParam) { +func (t etcdTraffic) RunKeyValueLoop(ctx context.Context, c *client.RecordingClient, p RunTrafficLoopParam) { lastOperationSucceeded := true var lastRev int64 var requestType etcdRequestType client := etcdTrafficClient{ etcdTraffic: t, keyStore: p.KeyStore, - client: p.Client, + client: c, limiter: p.QPSLimiter, idProvider: p.IDs, leaseStorage: p.LeaseIDStorage, @@ -149,13 +149,13 @@ func (t etcdTraffic) RunKeyValueLoop(ctx context.Context, p RunTrafficLoopParam) } } -func (t etcdTraffic) RunWatchLoop(ctx context.Context, p RunWatchLoopParam) { - runWatchLoop(ctx, p, watchLoopConfig{ +func (t etcdTraffic) RunWatchLoop(ctx context.Context, c *client.RecordingClient, p RunWatchLoopParam) { + runWatchLoop(ctx, c, p, watchLoopConfig{ key: p.KeyStore.GetPrefix(), }) } -func (t etcdTraffic) RunCompactLoop(ctx context.Context, param RunCompactLoopParam) { +func (t etcdTraffic) RunCompactLoop(ctx context.Context, c *client.RecordingClient, param RunCompactLoopParam) { var lastRev int64 = 2 ticker := time.NewTicker(param.Period) defer ticker.Stop() @@ -168,7 +168,7 @@ func (t etcdTraffic) RunCompactLoop(ctx context.Context, param RunCompactLoopPar case <-ticker.C: } statusCtx, cancel := context.WithTimeout(ctx, RequestTimeout) - resp, err := param.Client.Status(statusCtx, param.Client.Endpoints()[0]) + resp, err := c.Status(statusCtx, c.Endpoints()[0]) cancel() if err != nil { continue @@ -176,7 +176,7 @@ func (t etcdTraffic) RunCompactLoop(ctx context.Context, param RunCompactLoopPar // Range allows for both revision has been compacted and future revision errors compactRev := random.RandRange(lastRev, resp.Header.Revision+5) - _, err = param.Client.Compact(ctx, compactRev) + _, err = c.Compact(ctx, compactRev) if err != nil { continue } diff --git a/tests/robustness/traffic/kubernetes.go b/tests/robustness/traffic/kubernetes.go index 4eaa82d3d321..e45171c03fa1 100644 --- a/tests/robustness/traffic/kubernetes.go +++ b/tests/robustness/traffic/kubernetes.go @@ -88,8 +88,8 @@ func (t kubernetesTraffic) ExpectUniqueRevision() bool { return true } -func (t kubernetesTraffic) RunKeyValueLoop(ctx context.Context, p RunTrafficLoopParam) { - kc := kubernetes.Client{Client: &clientv3.Client{KV: p.Client}} +func (t kubernetesTraffic) RunKeyValueLoop(ctx context.Context, c *client.RecordingClient, p RunTrafficLoopParam) { + kc := kubernetes.Client{Client: &clientv3.Client{KV: c}} s := p.Storage keyPrefix := "/registry/" + t.resource + "/" g := errgroup.Group{} @@ -103,7 +103,7 @@ func (t kubernetesTraffic) RunKeyValueLoop(ctx context.Context, p RunTrafficLoop return nil default: } - err := t.Read(ctx, p.Client, s, p.QPSLimiter, keyPrefix) + err := t.Read(ctx, c, s, p.QPSLimiter, keyPrefix) if err != nil { continue } @@ -136,8 +136,8 @@ func (t kubernetesTraffic) RunKeyValueLoop(ctx context.Context, p RunTrafficLoop g.Wait() } -func (t kubernetesTraffic) RunWatchLoop(ctx context.Context, p RunWatchLoopParam) { - runWatchLoop(ctx, p, watchLoopConfig{ +func (t kubernetesTraffic) RunWatchLoop(ctx context.Context, c *client.RecordingClient, p RunWatchLoopParam) { + runWatchLoop(ctx, c, p, watchLoopConfig{ key: "/registry/" + t.resource + "/", requireLeader: true, }) @@ -278,7 +278,7 @@ func (t kubernetesTraffic) generateKey() string { return fmt.Sprintf("/registry/%s/%s/%s", t.resource, t.namespace, stringutil.RandString(5)) } -func (t kubernetesTraffic) RunCompactLoop(ctx context.Context, param RunCompactLoopParam) { +func (t kubernetesTraffic) RunCompactLoop(ctx context.Context, c *client.RecordingClient, param RunCompactLoopParam) { // Based on https://github.com/kubernetes/apiserver/blob/7dd4904f1896e11244ba3c5a59797697709de6b6/pkg/storage/etcd3/compact.go#L112-L127 var compactTime int64 var rev int64 @@ -292,7 +292,7 @@ func (t kubernetesTraffic) RunCompactLoop(ctx context.Context, param RunCompactL return } - compactTime, rev, err = compact(ctx, param.Client, compactTime, rev) + compactTime, rev, err = compact(ctx, c, compactTime, rev) if err != nil { continue } diff --git a/tests/robustness/traffic/traffic.go b/tests/robustness/traffic/traffic.go index 4d22f376a82d..04159c6ecc99 100644 --- a/tests/robustness/traffic/traffic.go +++ b/tests/robustness/traffic/traffic.go @@ -109,106 +109,36 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 lg.Info("Start traffic") startTime := time.Since(clientSet.BaseTime()) - for i := range profile.KeyValue.MemberClientCount { - wg.Add(1) - - c, nerr := clientSet.NewClient([]string{endpoints[i%len(endpoints)]}) - require.NoError(t, nerr) - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - - traffic.RunKeyValueLoop(ctx, RunTrafficLoopParam{ - Client: c, - QPSLimiter: limiter, - IDs: clientSet.IdentityProvider(), - LeaseIDStorage: lm, - NonUniqueRequestConcurrencyLimiter: nonUniqueWriteLimiter, - KeyStore: keyStore, - Storage: kubernetesStorage, - Finish: finish, - }) - }(c) - } - for range profile.KeyValue.ClusterClientCount { - wg.Add(1) - - c, nerr := clientSet.NewClient(endpoints) - require.NoError(t, nerr) - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - - traffic.RunKeyValueLoop(ctx, RunTrafficLoopParam{ - Client: c, - QPSLimiter: limiter, - IDs: clientSet.IdentityProvider(), - LeaseIDStorage: lm, - NonUniqueRequestConcurrencyLimiter: nonUniqueWriteLimiter, - KeyStore: keyStore, - Storage: kubernetesStorage, - Finish: finish, - }) - }(c) - } + err = SimulateKeyValueTraffic(ctx, &wg, profile.KeyValue, endpoints, clientSet, traffic, RunTrafficLoopParam{ + QPSLimiter: limiter, + IDs: clientSet.IdentityProvider(), + LeaseIDStorage: lm, + NonUniqueRequestConcurrencyLimiter: nonUniqueWriteLimiter, + KeyStore: keyStore, + Storage: kubernetesStorage, + Finish: finish, + }) + require.NoError(t, err) if profile.Watch != nil { - for i := range profile.Watch.MemberClientCount { - wg.Add(1) - c, nerr := clientSet.NewClient([]string{endpoints[i%len(endpoints)]}) - require.NoError(t, nerr) - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - traffic.RunWatchLoop(ctx, RunWatchLoopParam{ - Config: *profile.Watch, - Client: c, - QPSLimiter: limiter, - KeyStore: keyStore, - Storage: kubernetesStorage, - Finish: finish, - Logger: lg, - }) - }(c) - } - for range profile.Watch.ClusterClientCount { - wg.Add(1) - c, nerr := clientSet.NewClient(endpoints) - require.NoError(t, nerr) - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - traffic.RunWatchLoop(ctx, RunWatchLoopParam{ - Config: *profile.Watch, - Client: c, - QPSLimiter: limiter, - KeyStore: keyStore, - Storage: kubernetesStorage, - Finish: finish, - Logger: lg, - }) - }(c) - } + err = SimulateWatchTraffic(ctx, &wg, profile.Watch, endpoints, clientSet, traffic, RunWatchLoopParam{ + Config: *profile.Watch, + QPSLimiter: limiter, + KeyStore: keyStore, + Storage: kubernetesStorage, + Finish: finish, + Logger: lg, + }) + require.NoError(t, err) } if profile.Compaction != nil { - wg.Add(1) - c, nerr := clientSet.NewClient(endpoints) - if nerr != nil { - t.Fatal(nerr) - } - if profile.Compaction.Period < MinimalCompactionPeriod { t.Fatalf("Compaction period %v below minimal %v", profile.Compaction.Period, MinimalCompactionPeriod) } - go func(c *client.RecordingClient) { - defer wg.Done() - defer c.Close() - - traffic.RunCompactLoop(ctx, RunCompactLoopParam{ - Client: c, - Period: profile.Compaction.Period, - Finish: finish, - }) - }(c) + err = SimulateCompactionTraffic(ctx, &wg, profile.Compaction, endpoints, clientSet, traffic, RunCompactLoopParam{ + Period: profile.Compaction.Period, + Finish: finish, + }) + require.NoError(t, err) } var fr *report.FailpointInjection select { @@ -252,6 +182,78 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2 return reports } +func SimulateKeyValueTraffic(ctx context.Context, wg *sync.WaitGroup, profile *KeyValue, endpoints []string, clientSet *client.ClientSet, tf Traffic, baseParam RunTrafficLoopParam) error { + for i := range profile.MemberClientCount { + c, err := clientSet.NewClient([]string{endpoints[i%len(endpoints)]}) + if err != nil { + return err + } + wg.Add(1) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + + tf.RunKeyValueLoop(ctx, c, baseParam) + }(c) + } + for range profile.ClusterClientCount { + c, err := clientSet.NewClient(endpoints) + if err != nil { + return err + } + wg.Add(1) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + + tf.RunKeyValueLoop(ctx, c, baseParam) + }(c) + } + return nil +} + +func SimulateWatchTraffic(ctx context.Context, wg *sync.WaitGroup, profile *Watch, endpoints []string, clientSet *client.ClientSet, tf Traffic, baseParam RunWatchLoopParam) error { + for i := range profile.MemberClientCount { + c, err := clientSet.NewClient([]string{endpoints[i%len(endpoints)]}) + if err != nil { + return err + } + wg.Add(1) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + tf.RunWatchLoop(ctx, c, baseParam) + }(c) + } + for range profile.ClusterClientCount { + c, err := clientSet.NewClient(endpoints) + if err != nil { + return err + } + wg.Add(1) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + tf.RunWatchLoop(ctx, c, baseParam) + }(c) + } + return nil +} + +func SimulateCompactionTraffic(ctx context.Context, wg *sync.WaitGroup, profile *Compaction, endpoints []string, clientSet *client.ClientSet, tf Traffic, baseParam RunCompactLoopParam) error { + c, err := clientSet.NewClient(endpoints) + if err != nil { + return err + } + wg.Add(1) + go func(c *client.RecordingClient) { + defer wg.Done() + defer c.Close() + tf.RunCompactLoop(ctx, c, baseParam) + }(c) + return nil +} + func CalculateWatchStats(reports []report.ClientReport, start, end time.Duration) (ws watchStats) { ws.Period = end - start if ws.Period <= 0 { @@ -385,7 +387,6 @@ type Compaction struct { } type RunTrafficLoopParam struct { - Client *client.RecordingClient QPSLimiter *rate.Limiter IDs identity.Provider LeaseIDStorage identity.LeaseIDStorage @@ -396,14 +397,12 @@ type RunTrafficLoopParam struct { } type RunCompactLoopParam struct { - Client *client.RecordingClient Period time.Duration Finish <-chan struct{} } type RunWatchLoopParam struct { Config Watch - Client *client.RecordingClient QPSLimiter *rate.Limiter // TODO: merge 2 key stores into 1 KeyStore *keyStore @@ -413,13 +412,13 @@ type RunWatchLoopParam struct { } type Traffic interface { - RunKeyValueLoop(ctx context.Context, param RunTrafficLoopParam) - RunWatchLoop(ctx context.Context, param RunWatchLoopParam) - RunCompactLoop(ctx context.Context, param RunCompactLoopParam) + RunKeyValueLoop(ctx context.Context, c *client.RecordingClient, param RunTrafficLoopParam) + RunWatchLoop(ctx context.Context, c *client.RecordingClient, param RunWatchLoopParam) + RunCompactLoop(ctx context.Context, c *client.RecordingClient, param RunCompactLoopParam) ExpectUniqueRevision() bool } -func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) { +func runWatchLoop(ctx context.Context, c *client.RecordingClient, p RunWatchLoopParam, cfg watchLoopConfig) { for { select { case <-ctx.Done(): @@ -434,15 +433,15 @@ func runWatchLoop(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) } // Client.get may fail when the blackhole is injected. // We suppress logging for these expected failures to avoid polluting the logs. - _ = runWatch(ctx, p, cfg) + _ = runWatch(ctx, c, p, cfg) } } -func runWatch(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) error { +func runWatch(ctx context.Context, c *client.RecordingClient, p RunWatchLoopParam, cfg watchLoopConfig) error { getCtx, getCancel := context.WithTimeout(ctx, RequestTimeout) defer getCancel() - resp, err := p.Client.Get(getCtx, cfg.key) + resp, err := c.Get(getCtx, cfg.key) if err != nil { return err } @@ -454,7 +453,7 @@ func runWatch(ctx context.Context, p RunWatchLoopParam, cfg watchLoopConfig) err if cfg.requireLeader { watchCtx = clientv3.WithRequireLeader(watchCtx) } - w := p.Client.Watch(watchCtx, cfg.key, rev, true, true, true) + w := c.Watch(watchCtx, cfg.key, rev, true, true, true) for { select { case <-ctx.Done(): From 0520465a12129e77af08a61ec9facb7307fa951e Mon Sep 17 00:00:00 2001 From: Gagan H R Date: Wed, 11 Mar 2026 21:40:07 +0530 Subject: [PATCH 0886/1068] ci: set top-level permissions for antithesis-verify workflow Add explicit `permissions: contents: read` at the workflow level to restrict the default GITHUB_TOKEN to read-only access, following the principle of least privilege. This addresses the OpenSSF Scorecard Token-Permissions warning for .github/workflows/antithesis-verify.yml. Signed-off-by: Gagan H R --- .github/workflows/antithesis-verify.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/antithesis-verify.yml b/.github/workflows/antithesis-verify.yml index c6d6abb1a270..1341935cdf3e 100644 --- a/.github/workflows/antithesis-verify.yml +++ b/.github/workflows/antithesis-verify.yml @@ -1,6 +1,9 @@ --- name: Verify Antithesis Docker Compose Pipeline +permissions: + contents: read + on: push: branches: From f100061bfd7ac2e0bd095fc63618454aa6679d3c Mon Sep 17 00:00:00 2001 From: Alok Kumar Singh Date: Fri, 3 Apr 2026 18:15:32 +0530 Subject: [PATCH 0887/1068] cache: Add on-demand progress notification from cache Signed-off-by: Alok Kumar Singh --- cache/cache.go | 5 +++ cache/demux.go | 16 +++++++ cache/demux_test.go | 78 +++++++++++++++++++++++++++++++++ tests/integration/cache_test.go | 70 ++++++++++++++++++++++++++++- 4 files changed, 168 insertions(+), 1 deletion(-) diff --git a/cache/cache.go b/cache/cache.go index d7842f3f561e..7cd9dad8d612 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -101,6 +101,11 @@ func New(client *clientv3.Client, prefix string, opts ...Option) (*Cache, error) return cache, nil } +func (c *Cache) RequestProgress(_ context.Context) error { + c.demux.BroadcastProgress() + return nil +} + // Watch registers a cache-backed watcher for a given key or prefix. // It returns a WatchChan that streams WatchResponses containing events. func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption) clientv3.WatchChan { diff --git a/cache/demux.go b/cache/demux.go index 06258d8d36cd..2579d63a7660 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -163,6 +163,22 @@ func (d *demux) LatestRev() int64 { return d.maxRev } +func (d *demux) BroadcastProgress() { + d.mu.Lock() + defer d.mu.Unlock() + if d.maxRev == 0 { + return + } + resp := clientv3.WatchResponse{ + Header: etcdserverpb.ResponseHeader{ + Revision: d.maxRev, + }, + } + for w := range d.activeWatchers { + w.enqueueResponse(resp) + } +} + func (d *demux) updateStoreLocked(resp clientv3.WatchResponse) { if resp.IsProgressNotify() { d.maxRev = resp.Header.Revision diff --git a/cache/demux_test.go b/cache/demux_test.go index 956ce9a2acdd..fb31998a7eb7 100644 --- a/cache/demux_test.go +++ b/cache/demux_test.go @@ -336,6 +336,84 @@ func TestSlowWatcherResync(t *testing.T) { } } +func TestBroadcastProgress(t *testing.T) { + t.Run("sends progress to active watchers", func(t *testing.T) { + d := newDemux(16, 10*time.Millisecond) + d.Init(1) + d.maxRev = 10 + + w1 := newWatcher(8, nil) + w2 := newWatcher(8, nil) + d.Register(w1, 0) + d.Register(w2, 0) + + d.BroadcastProgress() + + resps1 := readResponses(t, w1, 1) + require.Truef(t, resps1[0].IsProgressNotify(), "expected progress notify") + require.Equal(t, int64(10), resps1[0].Header.Revision) + + resps2 := readResponses(t, w2, 1) + require.Truef(t, resps2[0].IsProgressNotify(), "expected progress notify") + require.Equal(t, int64(10), resps2[0].Header.Revision) + }) + + t.Run("is no-op when maxRev is zero", func(t *testing.T) { + d := newDemux(16, 10*time.Millisecond) + d.Init(1) + + w := newWatcher(8, nil) + d.Register(w, 0) + + d.maxRev = 0 + d.BroadcastProgress() + select { + case <-w.respCh: + t.Fatal("expected no response when maxRev is 0") + default: + } + }) + + t.Run("sends progress only to active watchers", func(t *testing.T) { + d := newDemux(16, 10*time.Millisecond) + d.Init(1) + d.maxRev = 10 + + active := newWatcher(8, nil) + lagging := newWatcher(8, nil) + d.Register(active, 0) // startingRev becomes maxRev+1 => active + d.Register(lagging, 5) + + d.BroadcastProgress() + + activeResps := readResponses(t, active, 1) + require.Truef(t, activeResps[0].IsProgressNotify(), "expected progress notify for active watcher") + require.Equal(t, int64(10), activeResps[0].Header.Revision) + + select { + case <-lagging.respCh: + t.Fatal("expected no progress notify for lagging watcher") + default: + } + }) +} + +func readResponses(t *testing.T, w *watcher, count int) []clientv3.WatchResponse { + t.Helper() + responses := make([]clientv3.WatchResponse, 0, count) + + for i := 0; i < count; i++ { + select { + case resp := <-w.respCh: + responses = append(responses, resp) + case <-time.After(2 * time.Second): + t.Fatalf("timed out waiting for response %d/%d (got %d)", i+1, count, len(responses)) + } + } + + return responses +} + func respWithEventRevs(revs ...int64) clientv3.WatchResponse { events := make([]*clientv3.Event, 0, len(revs)) for _, r := range revs { diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 0a0abf195d2c..2b4196231963 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -488,7 +488,7 @@ func TestCacheWithPrefixWatch(t *testing.T) { } } -func TestCacheWatchPrefixProgressNotify(t *testing.T) { +func TestCacheServerRequestProgress(t *testing.T) { if integration.ThroughProxy { t.Skip("grpc proxy currently does not support requesting progress notifications") } @@ -546,6 +546,74 @@ func TestCacheWatchPrefixProgressNotify(t *testing.T) { } } +func TestCacheRequestProgress(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + t.Cleanup(func() { clus.Terminate(t) }) + client := clus.Client(0) + + ctx := t.Context() + + c, err := cache.New(client, "/foo") + if err != nil { + t.Fatalf("cache.New: %v", err) + } + t.Cleanup(c.Close) + if err := c.WaitReady(ctx); err != nil { + t.Fatalf("cache.WaitReady: %v", err) + } + + wctx, cancel := context.WithTimeout(ctx, 5*time.Second) + defer cancel() + watchCh := c.Watch(wctx, "/foo", clientv3.WithPrefix()) + + // Write some keys under the watched prefix so the cache advances. + var latestRev int64 + for i := 0; i < 3; i++ { + resp, err := client.Put(ctx, fmt.Sprintf("/foo/key-%d", i), "v") + if err != nil { + t.Fatalf("Put(/foo/key-%d): %v", i, err) + } + latestRev = resp.Header.Revision + } + + // Drain the event responses so the watcher is caught up. + // Events may be batched into fewer responses, so count total events. + totalEvents := 0 + for totalEvents < 3 { + select { + case resp := <-watchCh: + if resp.Canceled { + t.Fatalf("unexpected canceled response: %v", resp.CancelReason) + } + totalEvents += len(resp.Events) + case <-wctx.Done(): + t.Fatalf("timed out waiting for events, got %d/3", totalEvents) + } + } + + // Call RequestProgress on the cache — this should deliver a progress + // notification to the watcher with the cache's current revision. + if err := c.RequestProgress(ctx); err != nil { + t.Fatalf("RequestProgress: %v", err) + } + + select { + case resp, ok := <-watchCh: + if !ok { + t.Fatalf("expected watch response, got closed") + } + if !resp.IsProgressNotify() { + t.Fatalf("expected progress notify, got %d events", len(resp.Events)) + } + if resp.Header.Revision < latestRev { + t.Fatalf("progress revision %d < latest rev %d", resp.Header.Revision, latestRev) + } + case <-wctx.Done(): + t.Fatalf("timed out waiting for progress notification from RequestProgress") + } +} + func TestCacheWithoutPrefixGet(t *testing.T) { if integration.ThroughProxy { t.Skip("grpc proxy currently does not support requesting progress notifications") From 8ede6c6b1be098ec69e9dacb2917606a2b198b78 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Apr 2026 17:32:59 +0000 Subject: [PATCH 0888/1068] build(deps): bump docker/login-action from 4.0.0 to 4.1.0 Bumps [docker/login-action](https://github.com/docker/login-action) from 4.0.0 to 4.1.0. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/b45d80f862d83dbcd57f89517bcf500b2ab88fb2...4907a6ddec9925e35a0a9e82d7399ccc52663121) --- updated-dependencies: - dependency-name: docker/login-action dependency-version: 4.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index 8db6a114b4d6..f27cb6ae475c 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -45,7 +45,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Login to Antithesis Docker Registry - uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 + uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 with: registry: ${{ env.REGISTRY }} username: _json_key From 09402706fc358afffe4718f4338706e764583715 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Apr 2026 17:33:21 +0000 Subject: [PATCH 0889/1068] build(deps): bump github/codeql-action from 4.34.1 to 4.35.1 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.34.1 to 4.35.1. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/38697555549f1db7851b81482ff19f1fa5c4fedc...c10b8064de6f491fea524254123dbe5e09572f13) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.35.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index d53cac15564b..adb49f7bfc60 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1 + uses: github/codeql-action/init@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1 + uses: github/codeql-action/autobuild@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1 + uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 3c3929f6055e..178d5f5b06f1 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1 + uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1 with: sarif_file: results.sarif From 4391cb98a2c55c1f9d611856df1de1928fbf221c Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 5 Apr 2026 17:16:02 +0200 Subject: [PATCH 0890/1068] Move read related methods to separate file Signed-off-by: Marek Siarkowicz --- server/etcdserver/read.go | 223 +++++++++++++++++++++++++++++++++ server/etcdserver/v3_server.go | 193 ---------------------------- 2 files changed, 223 insertions(+), 193 deletions(-) create mode 100644 server/etcdserver/read.go diff --git a/server/etcdserver/read.go b/server/etcdserver/read.go new file mode 100644 index 000000000000..671b4caa0c97 --- /dev/null +++ b/server/etcdserver/read.go @@ -0,0 +1,223 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package etcdserver + +import ( + "context" + "encoding/binary" + errorspkg "errors" + "strconv" + "time" + + "go.uber.org/zap" + + "go.etcd.io/etcd/pkg/v3/traceutil" + "go.etcd.io/etcd/server/v3/etcdserver/errors" + "go.etcd.io/raft/v3" +) + +var ( + readIndexRetryTime = 500 * time.Millisecond +) + +func (s *EtcdServer) LinearizableReadNotify(ctx context.Context) error { + return s.linearizableReadNotify(ctx) +} + +func (s *EtcdServer) linearizableReadNotify(ctx context.Context) error { + s.readMu.RLock() + nc := s.readNotifier + s.readMu.RUnlock() + + // signal linearizable loop for current notify if it hasn't been already + select { + case s.readwaitc <- struct{}{}: + default: + } + + // wait for read state notification + select { + case <-nc.c: + return nc.err + case <-ctx.Done(): + return ctx.Err() + case <-s.done: + return errors.ErrStopped + } +} + +func (s *EtcdServer) linearizableReadLoop() { + for { + leaderChangedNotifier := s.leaderChanged.Receive() + select { + case <-leaderChangedNotifier: + continue + case <-s.readwaitc: + case <-s.stopping: + return + } + + // as a single loop is can unlock multiple reads, it is not very useful + // to propagate the trace from Txn or Range. + _, trace := traceutil.EnsureTrace(context.Background(), s.Logger(), "linearizableReadLoop") + + nextnr := newNotifier() + s.readMu.Lock() + nr := s.readNotifier + s.readNotifier = nextnr + s.readMu.Unlock() + + confirmedIndex, err := s.requestCurrentIndex(leaderChangedNotifier) + if isStopped(err) { + return + } + if err != nil { + nr.notify(err) + continue + } + + trace.Step("read index received") + + trace.AddField(traceutil.Field{Key: "readStateIndex", Value: confirmedIndex}) + + appliedIndex := s.getAppliedIndex() + trace.AddField(traceutil.Field{Key: "appliedIndex", Value: strconv.FormatUint(appliedIndex, 10)}) + + if appliedIndex < confirmedIndex { + select { + case <-s.applyWait.Wait(confirmedIndex): + case <-s.stopping: + return + } + } + // unblock all l-reads requested at indices before confirmedIndex + nr.notify(nil) + trace.Step("applied index is now lower than readState.Index") + + trace.LogAllStepsIfLong(traceThreshold) + } +} + +func isStopped(err error) bool { + return errorspkg.Is(err, raft.ErrStopped) || errorspkg.Is(err, errors.ErrStopped) +} + +func (s *EtcdServer) requestCurrentIndex(leaderChangedNotifier <-chan struct{}) (uint64, error) { + requestIDs := map[uint64]struct{}{} + requestID := s.reqIDGen.Next() + requestIDs[requestID] = struct{}{} + err := s.sendReadIndex(requestID) + if err != nil { + return 0, err + } + + lg := s.Logger() + errorTimer := time.NewTimer(s.Cfg.ReqTimeout()) + defer errorTimer.Stop() + retryTimer := time.NewTimer(readIndexRetryTime) + defer retryTimer.Stop() + + firstCommitInTermNotifier := s.firstCommitInTerm.Receive() + + for { + select { + case rs := <-s.r.readStateC: + // Check again if leader changed as when multiple channels are ready, select picks randomly. + select { + case <-leaderChangedNotifier: + readIndexFailed.Inc() + return 0, errors.ErrLeaderChanged + default: + } + responseID := uint64(0) + if len(rs.RequestCtx) == 8 { + responseID = binary.BigEndian.Uint64(rs.RequestCtx) + } + if _, ok := requestIDs[responseID]; !ok { + // a previous request might time out. now we should ignore the response of it and + // continue waiting for the response of the current requests. + lg.Warn( + "ignored out-of-date read index response; local node read indexes queueing up and waiting to be in sync with leader", + zap.Uint64("received-request-id", responseID), + ) + slowReadIndex.Inc() + continue + } + return rs.Index, nil + case <-leaderChangedNotifier: + readIndexFailed.Inc() + // return a retryable error. + return 0, errors.ErrLeaderChanged + case <-firstCommitInTermNotifier: + firstCommitInTermNotifier = s.firstCommitInTerm.Receive() + lg.Info("first commit in current term: resending ReadIndex request") + requestID = s.reqIDGen.Next() + requestIDs[requestID] = struct{}{} + err := s.sendReadIndex(requestID) + if err != nil { + return 0, err + } + retryTimer.Reset(readIndexRetryTime) + continue + case <-retryTimer.C: + lg.Warn( + "waiting for ReadIndex response took too long, retrying", + zap.Uint64("sent-request-id", requestID), + zap.Duration("retry-timeout", readIndexRetryTime), + ) + requestID = s.reqIDGen.Next() + requestIDs[requestID] = struct{}{} + err := s.sendReadIndex(requestID) + if err != nil { + return 0, err + } + retryTimer.Reset(readIndexRetryTime) + continue + case <-errorTimer.C: + lg.Warn( + "timed out waiting for read index response (local node might have slow network)", + zap.Duration("timeout", s.Cfg.ReqTimeout()), + ) + slowReadIndex.Inc() + return 0, errors.ErrTimeout + case <-s.stopping: + return 0, errors.ErrStopped + } + } +} + +func uint64ToBigEndianBytes(number uint64) []byte { + byteResult := make([]byte, 8) + binary.BigEndian.PutUint64(byteResult, number) + return byteResult +} + +func (s *EtcdServer) sendReadIndex(requestIndex uint64) error { + ctxToSend := uint64ToBigEndianBytes(requestIndex) + + cctx, cancel := context.WithTimeout(context.Background(), s.Cfg.ReqTimeout()) + err := s.r.ReadIndex(cctx, ctxToSend) + cancel() + if errorspkg.Is(err, raft.ErrStopped) { + return err + } + if err != nil { + lg := s.Logger() + lg.Warn("failed to get read index from Raft", zap.Error(err)) + readIndexFailed.Inc() + return err + } + return nil +} diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index c76e5009e3ed..cfe3f7f0b7a4 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -17,7 +17,6 @@ package etcdserver import ( "context" "encoding/base64" - "encoding/binary" errorspkg "errors" "strconv" "time" @@ -40,7 +39,6 @@ import ( "go.etcd.io/etcd/server/v3/lease" "go.etcd.io/etcd/server/v3/lease/leasehttp" "go.etcd.io/etcd/server/v3/storage/mvcc" - "go.etcd.io/raft/v3" ) const ( @@ -50,7 +48,6 @@ const ( // We should stop accepting new proposals if the gap growing to a certain point. maxGapBetweenApplyAndCommitIndex = 5000 traceThreshold = 100 * time.Millisecond - readIndexRetryTime = 500 * time.Millisecond // The timeout for the node to catch up its applied index, and is used in // lease related operations, such as LeaseRenew and LeaseTimeToLive. @@ -1066,196 +1063,6 @@ func getRequestType(r *pb.InternalRaftRequest) string { // Watchable returns a watchable interface attached to the etcdserver. func (s *EtcdServer) Watchable() mvcc.WatchableKV { return s.KV() } -func (s *EtcdServer) linearizableReadLoop() { - for { - leaderChangedNotifier := s.leaderChanged.Receive() - select { - case <-leaderChangedNotifier: - continue - case <-s.readwaitc: - case <-s.stopping: - return - } - - // as a single loop is can unlock multiple reads, it is not very useful - // to propagate the trace from Txn or Range. - _, trace := traceutil.EnsureTrace(context.Background(), s.Logger(), "linearizableReadLoop") - - nextnr := newNotifier() - s.readMu.Lock() - nr := s.readNotifier - s.readNotifier = nextnr - s.readMu.Unlock() - - confirmedIndex, err := s.requestCurrentIndex(leaderChangedNotifier) - if isStopped(err) { - return - } - if err != nil { - nr.notify(err) - continue - } - - trace.Step("read index received") - - trace.AddField(traceutil.Field{Key: "readStateIndex", Value: confirmedIndex}) - - appliedIndex := s.getAppliedIndex() - trace.AddField(traceutil.Field{Key: "appliedIndex", Value: strconv.FormatUint(appliedIndex, 10)}) - - if appliedIndex < confirmedIndex { - select { - case <-s.applyWait.Wait(confirmedIndex): - case <-s.stopping: - return - } - } - // unblock all l-reads requested at indices before confirmedIndex - nr.notify(nil) - trace.Step("applied index is now lower than readState.Index") - - trace.LogAllStepsIfLong(traceThreshold) - } -} - -func isStopped(err error) bool { - return errorspkg.Is(err, raft.ErrStopped) || errorspkg.Is(err, errors.ErrStopped) -} - -func (s *EtcdServer) requestCurrentIndex(leaderChangedNotifier <-chan struct{}) (uint64, error) { - requestIDs := map[uint64]struct{}{} - requestID := s.reqIDGen.Next() - requestIDs[requestID] = struct{}{} - err := s.sendReadIndex(requestID) - if err != nil { - return 0, err - } - - lg := s.Logger() - errorTimer := time.NewTimer(s.Cfg.ReqTimeout()) - defer errorTimer.Stop() - retryTimer := time.NewTimer(readIndexRetryTime) - defer retryTimer.Stop() - - firstCommitInTermNotifier := s.firstCommitInTerm.Receive() - - for { - select { - case rs := <-s.r.readStateC: - // Check again if leader changed as when multiple channels are ready, select picks randomly. - select { - case <-leaderChangedNotifier: - readIndexFailed.Inc() - return 0, errors.ErrLeaderChanged - default: - } - responseID := uint64(0) - if len(rs.RequestCtx) == 8 { - responseID = binary.BigEndian.Uint64(rs.RequestCtx) - } - if _, ok := requestIDs[responseID]; !ok { - // a previous request might time out. now we should ignore the response of it and - // continue waiting for the response of the current requests. - lg.Warn( - "ignored out-of-date read index response; local node read indexes queueing up and waiting to be in sync with leader", - zap.Uint64("received-request-id", responseID), - ) - slowReadIndex.Inc() - continue - } - return rs.Index, nil - case <-leaderChangedNotifier: - readIndexFailed.Inc() - // return a retryable error. - return 0, errors.ErrLeaderChanged - case <-firstCommitInTermNotifier: - firstCommitInTermNotifier = s.firstCommitInTerm.Receive() - lg.Info("first commit in current term: resending ReadIndex request") - requestID = s.reqIDGen.Next() - requestIDs[requestID] = struct{}{} - err := s.sendReadIndex(requestID) - if err != nil { - return 0, err - } - retryTimer.Reset(readIndexRetryTime) - continue - case <-retryTimer.C: - lg.Warn( - "waiting for ReadIndex response took too long, retrying", - zap.Uint64("sent-request-id", requestID), - zap.Duration("retry-timeout", readIndexRetryTime), - ) - requestID = s.reqIDGen.Next() - requestIDs[requestID] = struct{}{} - err := s.sendReadIndex(requestID) - if err != nil { - return 0, err - } - retryTimer.Reset(readIndexRetryTime) - continue - case <-errorTimer.C: - lg.Warn( - "timed out waiting for read index response (local node might have slow network)", - zap.Duration("timeout", s.Cfg.ReqTimeout()), - ) - slowReadIndex.Inc() - return 0, errors.ErrTimeout - case <-s.stopping: - return 0, errors.ErrStopped - } - } -} - -func uint64ToBigEndianBytes(number uint64) []byte { - byteResult := make([]byte, 8) - binary.BigEndian.PutUint64(byteResult, number) - return byteResult -} - -func (s *EtcdServer) sendReadIndex(requestIndex uint64) error { - ctxToSend := uint64ToBigEndianBytes(requestIndex) - - cctx, cancel := context.WithTimeout(context.Background(), s.Cfg.ReqTimeout()) - err := s.r.ReadIndex(cctx, ctxToSend) - cancel() - if errorspkg.Is(err, raft.ErrStopped) { - return err - } - if err != nil { - lg := s.Logger() - lg.Warn("failed to get read index from Raft", zap.Error(err)) - readIndexFailed.Inc() - return err - } - return nil -} - -func (s *EtcdServer) LinearizableReadNotify(ctx context.Context) error { - return s.linearizableReadNotify(ctx) -} - -func (s *EtcdServer) linearizableReadNotify(ctx context.Context) error { - s.readMu.RLock() - nc := s.readNotifier - s.readMu.RUnlock() - - // signal linearizable loop for current notify if it hasn't been already - select { - case s.readwaitc <- struct{}{}: - default: - } - - // wait for read state notification - select { - case <-nc.c: - return nc.err - case <-ctx.Done(): - return ctx.Err() - case <-s.done: - return errors.ErrStopped - } -} - func (s *EtcdServer) AuthInfoFromCtx(ctx context.Context) (*auth.AuthInfo, error) { authInfo, err := s.AuthStore().AuthInfoFromCtx(ctx) if authInfo != nil || err != nil { From 309e1804c314e43938371a6fe6129b094b4bb03e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Apr 2026 17:32:54 +0000 Subject: [PATCH 0891/1068] build(deps): bump actions/setup-go from 6.3.0 to 6.4.0 Bumps [actions/setup-go](https://github.com/actions/setup-go) from 6.3.0 to 6.4.0. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/4b73464bb391d4059bd26b0524d20df3927bd417...4a3601121dd01d1626a1e23e37211e3254c1c06c) --- updated-dependencies: - dependency-name: actions/setup-go dependency-version: 6.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/measure-testgrid-flakiness.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/measure-testgrid-flakiness.yaml b/.github/workflows/measure-testgrid-flakiness.yaml index 69af088c1db5..13bdf0ff6f70 100644 --- a/.github/workflows/measure-testgrid-flakiness.yaml +++ b/.github/workflows/measure-testgrid-flakiness.yaml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - id: goversion run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 + - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 with: go-version: ${{ steps.goversion.outputs.goversion }} - env: From f2bfee8834361ff208d0247b3e4ae2c237d7a82e Mon Sep 17 00:00:00 2001 From: Mohanad Date: Sat, 28 Mar 2026 14:10:11 +0000 Subject: [PATCH 0892/1068] Update .devcontainer/devcontainer.json to use the same major.minor as go.work Signed-off-by: Mohanad --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 63070531bd45..75e71bdd7c1b 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,7 +3,7 @@ { "name": "Go", // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - "image": "mcr.microsoft.com/devcontainers/go:1.25-bookworm", + "image": "mcr.microsoft.com/devcontainers/go:1.26-bookworm", // Features to add to the dev container. More info: https://containers.dev/features. "features": { "ghcr.io/devcontainers/features/docker-in-docker:2": {}, From 8bee4041c7ae7d00ecdfec7f32a21d644d37c362 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 5 Apr 2026 17:18:13 +0200 Subject: [PATCH 0893/1068] Remove non-public linearizableReadNotify method Signed-off-by: Marek Siarkowicz --- server/etcdserver/adapters.go | 4 ---- server/etcdserver/read.go | 4 ---- server/etcdserver/server.go | 4 ++-- server/etcdserver/v3_server.go | 6 +++--- 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/server/etcdserver/adapters.go b/server/etcdserver/adapters.go index bc9790bc2e68..4eec3ba0f43f 100644 --- a/server/etcdserver/adapters.go +++ b/server/etcdserver/adapters.go @@ -45,10 +45,6 @@ func (s *serverVersionAdapter) UpdateClusterVersion(version string) { s.GoAttach(func() { s.updateClusterVersionV3(version) }) } -func (s *serverVersionAdapter) LinearizableReadNotify(ctx context.Context) error { - return s.linearizableReadNotify(ctx) -} - func (s *serverVersionAdapter) DowngradeEnable(ctx context.Context, targetVersion *semver.Version) error { raftRequest := membershippb.DowngradeInfoSetRequest{Enabled: true, Ver: targetVersion.String()} _, err := s.raftRequest(ctx, pb.InternalRaftRequest{DowngradeInfoSet: &raftRequest}) diff --git a/server/etcdserver/read.go b/server/etcdserver/read.go index 671b4caa0c97..85bf7e5ec489 100644 --- a/server/etcdserver/read.go +++ b/server/etcdserver/read.go @@ -33,10 +33,6 @@ var ( ) func (s *EtcdServer) LinearizableReadNotify(ctx context.Context) error { - return s.linearizableReadNotify(ctx) -} - -func (s *EtcdServer) linearizableReadNotify(ctx context.Context) error { s.readMu.RLock() nc := s.readNotifier s.readMu.RUnlock() diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index ac708e1ffcb4..85c498cf37ec 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -691,7 +691,7 @@ func (h *downgradeEnabledHandler) ServeHTTP(w http.ResponseWriter, r *http.Reque defer cancel() // serve with linearized downgrade info - if err := h.server.linearizableReadNotify(ctx); err != nil { + if err := h.server.LinearizableReadNotify(ctx); err != nil { http.Error(w, fmt.Sprintf("failed linearized read: %v", err), http.StatusInternalServerError) return @@ -924,7 +924,7 @@ func (s *EtcdServer) ensureLeadership() bool { ctx, cancel := context.WithTimeout(s.ctx, s.Cfg.ReqTimeout()) defer cancel() - if err := s.linearizableReadNotify(ctx); err != nil { + if err := s.LinearizableReadNotify(ctx); err != nil { lg.Warn("Failed to check current member's leadership", zap.Error(err)) return false diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index cfe3f7f0b7a4..8677a706ed94 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -132,7 +132,7 @@ func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRe }(time.Now()) if !r.Serializable { - err = s.linearizableReadNotify(ctx) + err = s.LinearizableReadNotify(ctx) trace.Step("agreement among raft nodes before linearized reading") if err != nil { return nil, err @@ -201,7 +201,7 @@ func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse ) if readOnly { if !txn.IsTxnSerializable(r) { - err := s.linearizableReadNotify(ctx) + err := s.LinearizableReadNotify(ctx) trace.Step("agreement among raft nodes before linearized reading") if err != nil { return nil, err @@ -692,7 +692,7 @@ func (s *EtcdServer) AuthStatus(ctx context.Context, r *pb.AuthStatusRequest) (* } func (s *EtcdServer) Authenticate(ctx context.Context, r *pb.AuthenticateRequest) (*pb.AuthenticateResponse, error) { - if err := s.linearizableReadNotify(ctx); err != nil { + if err := s.LinearizableReadNotify(ctx); err != nil { return nil, err } From 87f4b39552e9a67abbd0a131051b2b3126279e3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ey=C3=BCp=20Can=20Akman?= Date: Sun, 22 Mar 2026 21:40:23 +0300 Subject: [PATCH 0894/1068] client/v3: fix revive unexported-return issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix the unexported-return revive lint violations in the client/v3 module. Changes: - ordering.NewKV() now returns clientv3.KV instead of *kvOrdering - Export stmOption as STMOption so that WithIsolation(), WithAbortContext(), WithPrefetch(), and NewSTM() no longer return/accept an unexported type Part of #18370 Signed-off-by: Eyüp Can Akman --- client/v3/concurrency/stm.go | 11 ++++++----- client/v3/ordering/kv.go | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/client/v3/concurrency/stm.go b/client/v3/concurrency/stm.go index fee17f113616..696baf869ca1 100644 --- a/client/v3/concurrency/stm.go +++ b/client/v3/concurrency/stm.go @@ -65,15 +65,16 @@ type stmOptions struct { prefetch []string } -type stmOption func(*stmOptions) +// STMOption configures STM. +type STMOption func(*stmOptions) // WithIsolation specifies the transaction isolation level. -func WithIsolation(lvl Isolation) stmOption { +func WithIsolation(lvl Isolation) STMOption { return func(so *stmOptions) { so.iso = lvl } } // WithAbortContext specifies the context for permanently aborting the transaction. -func WithAbortContext(ctx context.Context) stmOption { +func WithAbortContext(ctx context.Context) STMOption { return func(so *stmOptions) { so.ctx = ctx } } @@ -81,12 +82,12 @@ func WithAbortContext(ctx context.Context) stmOption { // If an STM transaction will unconditionally fetch a set of keys, prefetching // those keys will save the round-trip cost from requesting each key one by one // with Get(). -func WithPrefetch(keys ...string) stmOption { +func WithPrefetch(keys ...string) STMOption { return func(so *stmOptions) { so.prefetch = append(so.prefetch, keys...) } } // NewSTM initiates a new STM instance, using serializable snapshot isolation by default. -func NewSTM(c *v3.Client, apply func(STM) error, so ...stmOption) (*v3.TxnResponse, error) { +func NewSTM(c *v3.Client, apply func(STM) error, so ...STMOption) (*v3.TxnResponse, error) { opts := &stmOptions{ctx: c.Ctx()} for _, f := range so { f(opts) diff --git a/client/v3/ordering/kv.go b/client/v3/ordering/kv.go index 9075cbf9890c..b843103dce4b 100644 --- a/client/v3/ordering/kv.go +++ b/client/v3/ordering/kv.go @@ -31,7 +31,7 @@ type kvOrdering struct { revMu sync.RWMutex } -func NewKV(kv clientv3.KV, orderViolationFunc OrderViolationFunc) *kvOrdering { +func NewKV(kv clientv3.KV, orderViolationFunc OrderViolationFunc) clientv3.KV { return &kvOrdering{kv, orderViolationFunc, 0, sync.RWMutex{}} } From 93fbdd147c9cd9f9dfb599c254787759bdc5bb72 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 29 Mar 2026 17:44:51 +0200 Subject: [PATCH 0895/1068] Always send periodic progress requsts when collecting events. Signed-off-by: Marek Siarkowicz --- .../test-template/robustness/traffic/main.go | 4 ---- tests/robustness/client/watch.go | 15 +++++---------- tests/robustness/main_test.go | 1 - tests/robustness/scenarios/scenarios.go | 9 --------- 4 files changed, 5 insertions(+), 24 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index a8a88f94b3ce..6a3200f027c8 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -100,9 +100,6 @@ func runTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, hosts [ lg.Fatal("Failed empty database at start check", zap.Error(err)) } maxRevisionChan := make(chan int64, 1) - watchConfig := client.WatchConfig{ - RequestProgress: true, - } g := errgroup.Group{} startTime := time.Since(baseTime) g.Go(func() error { @@ -120,7 +117,6 @@ func runTraffic(ctx context.Context, lg *zap.Logger, tf traffic.Traffic, hosts [ Lg: lg, Endpoints: hosts, MaxRevisionChan: maxRevisionChan, - Cfg: watchConfig, ClientSet: watchSet, }) return err diff --git a/tests/robustness/client/watch.go b/tests/robustness/client/watch.go index 438d1d6af822..84765520c3dd 100644 --- a/tests/robustness/client/watch.go +++ b/tests/robustness/client/watch.go @@ -18,6 +18,7 @@ import ( "context" "errors" "fmt" + "time" "go.uber.org/zap" "golang.org/x/sync/errgroup" @@ -27,7 +28,6 @@ type CollectClusterWatchEventsParam struct { Lg *zap.Logger Endpoints []string MaxRevisionChan <-chan int64 - Cfg WatchConfig ClientSet *ClientSet } @@ -43,7 +43,7 @@ func CollectClusterWatchEvents(ctx context.Context, param CollectClusterWatchEve return err } defer c.Close() - return watchUntilRevision(ctx, param.Lg, c, memberMaxRevisionChan, param.Cfg) + return watchUntilRevision(ctx, param.Lg, c, memberMaxRevisionChan) }) } g.Go(func() error { @@ -57,12 +57,8 @@ func CollectClusterWatchEvents(ctx context.Context, param CollectClusterWatchEve return g.Wait() } -type WatchConfig struct { - RequestProgress bool -} - // watchUntilRevision watches all changes until context is canceled, it has observed the revision provided via maxRevisionChan or maxRevisionChan was closed. -func watchUntilRevision(ctx context.Context, lg *zap.Logger, c *RecordingClient, maxRevisionChan <-chan int64, cfg WatchConfig) error { +func watchUntilRevision(ctx context.Context, lg *zap.Logger, c *RecordingClient, maxRevisionChan <-chan int64) error { var maxRevision int64 var lastRevision int64 = 1 var closing bool @@ -96,14 +92,13 @@ resetWatch: cancel() } } + case <-time.After(100 * time.Millisecond): + c.RequestProgress(ctx) case resp, ok := <-watch: if !ok { lg.Info("Watch channel closed") continue resetWatch } - if cfg.RequestProgress { - c.RequestProgress(ctx) - } if resp.Err() != nil { if resp.Canceled { diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index 239b12cac7c7..b087af2f053c 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -171,7 +171,6 @@ func runScenario(ctx context.Context, t *testing.T, s scenarios.TestScenario, lg Lg: lg, Endpoints: endpoints, MaxRevisionChan: maxRevisionChan, - Cfg: s.Watch, ClientSet: watchSet, }) return err diff --git a/tests/robustness/scenarios/scenarios.go b/tests/robustness/scenarios/scenarios.go index c6fe324951a1..64f4ab3e2497 100644 --- a/tests/robustness/scenarios/scenarios.go +++ b/tests/robustness/scenarios/scenarios.go @@ -26,7 +26,6 @@ import ( "go.etcd.io/etcd/client/pkg/v3/fileutil" "go.etcd.io/etcd/server/v3/etcdserver" "go.etcd.io/etcd/tests/v3/framework/e2e" - "go.etcd.io/etcd/tests/v3/robustness/client" "go.etcd.io/etcd/tests/v3/robustness/failpoint" "go.etcd.io/etcd/tests/v3/robustness/options" "go.etcd.io/etcd/tests/v3/robustness/random" @@ -84,7 +83,6 @@ type TestScenario struct { Cluster e2e.EtcdProcessClusterConfig Traffic traffic.Traffic Profile traffic.Profile - Watch client.WatchConfig } func Exploratory(_ *testing.T) []TestScenario { @@ -168,7 +166,6 @@ func Exploratory(_ *testing.T) []TestScenario { Cluster: lazyfsCluster, Traffic: s.Traffic, Profile: profileWithoutCompaction, - Watch: s.Watch, }) } } @@ -222,9 +219,6 @@ func Regression(t *testing.T) []TestScenario { }) scenarios = append(scenarios, TestScenario{ Name: "Issue15220", - Watch: client.WatchConfig{ - RequestProgress: true, - }, Profile: traffic.Profile{ KeyValue: &traffic.KeyValueMedium, Watch: &traffic.WatchDefault, @@ -311,9 +305,6 @@ func Regression(t *testing.T) []TestScenario { scenarios = append(scenarios, TestScenario{ Name: "Issue20221", Failpoint: failpoint.BlackholeUntilSnapshot, - Watch: client.WatchConfig{ - RequestProgress: true, - }, Profile: traffic.Profile{ KeyValue: &traffic.KeyValueHigh, Watch: &traffic.Watch{ From 977c2321fc3af58489a2d60e5e7a8c823c082baa Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 5 Apr 2026 17:33:07 +0200 Subject: [PATCH 0896/1068] Rename ApplyWait to reflect that it waits for commited index Signed-off-by: Marek Siarkowicz --- server/etcdserver/server.go | 6 ++++-- server/etcdserver/v3_server.go | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index 85c498cf37ec..993c8a819fdc 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -634,7 +634,9 @@ func (s *EtcdServer) purgeFile() { func (s *EtcdServer) Cluster() api.Cluster { return s.cluster } -func (s *EtcdServer) ApplyWait() <-chan struct{} { return s.applyWait.Wait(s.getCommittedIndex()) } +func (s *EtcdServer) ApplyWaitCommit() <-chan struct{} { + return s.applyWait.Wait(s.getCommittedIndex()) +} type ServerPeer interface { ServerV2 @@ -646,7 +648,7 @@ func (s *EtcdServer) LeaseHandler() http.Handler { if s.lessor == nil { return nil } - return leasehttp.NewHandler(s.lessor, s.ApplyWait) + return leasehttp.NewHandler(s.lessor, s.ApplyWaitCommit) } func (s *EtcdServer) RaftHandler() http.Handler { return s.r.transport.Handler() } diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 8677a706ed94..f93728b6c0d1 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -315,7 +315,7 @@ func (s *EtcdServer) LeaseGrant(ctx context.Context, r *pb.LeaseGrantRequest) (* func (s *EtcdServer) waitAppliedIndex() error { select { - case <-s.ApplyWait(): + case <-s.ApplyWaitCommit(): case <-s.stopping: return errors.ErrStopped case <-time.After(applyTimeout): From 571a983be8131eb09318a7ea12e7417788623512 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 7 Apr 2026 11:58:15 +0200 Subject: [PATCH 0897/1068] Test EtcdState Equal Signed-off-by: Marek Siarkowicz --- tests/robustness/model/deterministic_test.go | 156 +++++++++++++++++++ 1 file changed, 156 insertions(+) diff --git a/tests/robustness/model/deterministic_test.go b/tests/robustness/model/deterministic_test.go index cddd6f9c207d..3e3c50e458df 100644 --- a/tests/robustness/model/deterministic_test.go +++ b/tests/robustness/model/deterministic_test.go @@ -16,6 +16,8 @@ package model import ( "encoding/json" + "math/rand" + "slices" "testing" "github.com/google/go-cmp/cmp" @@ -50,6 +52,160 @@ func TestModelDeterministic(t *testing.T) { } } +func TestEtcdStateEqual(t *testing.T) { + testCases := []struct { + name string + s1 EtcdState + s2 EtcdState + equal bool + }{ + { + name: "Fresh states should be equal", + s1: freshEtcdState(), + s2: freshEtcdState(), + equal: true, + }, + { + name: "States from identical history should be equal", + s1: func() EtcdState { + s := freshEtcdState() + s, _ = s.Step(putRequest("key", "1")) + s, _ = s.Step(putRequest("key", "2")) + return s + }(), + s2: func() EtcdState { + s := freshEtcdState() + s, _ = s.Step(putRequest("key", "1")) + s, _ = s.Step(putRequest("key", "2")) + return s + }(), + equal: true, + }, + { + name: "States from different history should not be equal", + s1: func() EtcdState { + s := freshEtcdState() + s, _ = s.Step(putRequest("key", "1")) + s, _ = s.Step(putRequest("key", "2")) + return s + }(), + s2: func() EtcdState { + s := freshEtcdState() + s, _ = s.Step(putRequest("key", "2")) + s, _ = s.Step(putRequest("key", "1")) + return s + }(), + equal: false, + }, + { + name: "Empty states with higher revision should be equal", + s1: func() EtcdState { + s := freshEtcdState() + s, _ = s.Step(putRequest("key", "1")) + s, _ = s.Step(putRequest("key", "2")) + s, _ = s.Step(deleteRequest("key")) + return s + }(), + s2: func() EtcdState { + s := freshEtcdState() + s, _ = s.Step(putRequest("key", "2")) + s, _ = s.Step(putRequest("key", "1")) + s, _ = s.Step(deleteRequest("key")) + return s + }(), + equal: true, + }, + { + name: "Grant and Revoke empty lease should be equal to fresh state", + s1: freshEtcdState(), + s2: func() EtcdState { + s := freshEtcdState() + s, _ = s.Step(leaseGrantRequest(1)) + s, _ = s.Step(leaseRevokeRequest(1)) + return s + }(), + equal: true, + }, + { + name: "Delete via Revoke vs Delete directly should be equal", + s1: func() EtcdState { + s := freshEtcdState() + s, _ = s.Step(leaseGrantRequest(1)) + s, _ = s.Step(putWithLeaseRequest("key", "val", 1)) + s, _ = s.Step(leaseRevokeRequest(1)) + return s + }(), + s2: func() EtcdState { + s := freshEtcdState() + s, _ = s.Step(putRequest("key", "val")) + s, _ = s.Step(deleteRequest("key")) + return s + }(), + equal: true, + }, + { + name: "Put via Txn vs Put directly should be equal", + s1: func() EtcdState { + s := freshEtcdState() + s, _ = s.Step(compareRevisionAndPutRequest("key", 0, "val")) + return s + }(), + s2: func() EtcdState { + s := freshEtcdState() + s, _ = s.Step(putRequest("key", "val")) + return s + }(), + equal: true, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + if tc.s1.Equal(tc.s2) != tc.equal { + t.Errorf("Expected equal=%v, got %v", tc.equal, !tc.equal) + t.Errorf("Diff:\n%v", cmp.Diff(tc.s1, tc.s2)) + } + }) + } +} + +func TestEtcdStateEqualCommutativeRequests(t *testing.T) { + commutativeRequests := []EtcdRequest{ + leaseGrantRequest(1), + leaseGrantRequest(2), + leaseRevokeRequest(3), + leaseRevokeRequest(4), + getRequest("key1"), + getRequest("key2"), + defragmentRequest(), + defragmentRequest(), + compactRequest(1), + compactRequest(2), + } + + baseState := applyRequests(commutativeRequests) + + for i := 0; i < 10_000; i++ { + perm := slices.Clone(commutativeRequests) + rand.Shuffle(len(perm), func(i, j int) { + perm[i], perm[j] = perm[j], perm[i] + }) + s2 := applyRequests(perm) + + if !baseState.Equal(s2) { + t.Errorf("Expected states to be equal after random reordering, but they are not") + } + } +} + +func applyRequests(reqs []EtcdRequest) EtcdState { + state := freshEtcdState() + for _, req := range reqs { + state, _ = state.Step(req) + } + return state +} + type modelTestCase struct { name string operations []testOperation From e87bb79eb4f92b9ffc3492daffeb9410034c4cef Mon Sep 17 00:00:00 2001 From: Alessio Attilio Date: Tue, 7 Apr 2026 11:00:22 +0200 Subject: [PATCH 0898/1068] test: improve kv range tests with key ascending and limit Signed-off-by: Alessio Attilio --- server/etcdserver/txn/range_bench_test.go | 108 ++++++++++++++++++++++ tests/common/kv_test.go | 2 + 2 files changed, 110 insertions(+) create mode 100644 server/etcdserver/txn/range_bench_test.go diff --git a/server/etcdserver/txn/range_bench_test.go b/server/etcdserver/txn/range_bench_test.go new file mode 100644 index 000000000000..cd16516fa7c0 --- /dev/null +++ b/server/etcdserver/txn/range_bench_test.go @@ -0,0 +1,108 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package txn + +import ( + "context" + "fmt" + "os" + "path/filepath" + "testing" + + "go.uber.org/zap" + + pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/server/v3/lease" + "go.etcd.io/etcd/server/v3/storage/backend" + betesting "go.etcd.io/etcd/server/v3/storage/backend/testing" + "go.etcd.io/etcd/server/v3/storage/mvcc" +) + +// BenchmarkRange benchmarks Range requests with different configurations. +// This helps demonstrate the performance improvement from the KEY ASCEND optimization. +func BenchmarkRange(b *testing.B) { + benchmarks := []struct { + name string + limit int64 + sortOrder pb.RangeRequest_SortOrder + sortTarget pb.RangeRequest_SortTarget + }{ + { + name: "no_sort_no_limit", + limit: 0, + }, + { + name: "no_sort_limit_10", + limit: 10, + }, + { + name: "key_ascend_limit_10", + limit: 10, + sortOrder: pb.RangeRequest_ASCEND, + sortTarget: pb.RangeRequest_KEY, + }, + { + name: "key_descend_limit_10", + limit: 10, + sortOrder: pb.RangeRequest_DESCEND, + sortTarget: pb.RangeRequest_KEY, + }, + { + name: "create_ascend_limit_10", + limit: 10, + sortOrder: pb.RangeRequest_ASCEND, + sortTarget: pb.RangeRequest_CREATE, + }, + } + + for _, keyCount := range []int{100, 1000, 10000} { + for _, bm := range benchmarks { + b.Run(fmt.Sprintf("keys_%d/%s", keyCount, bm.name), func(b *testing.B) { + // Disable bbolt logging to avoid interfering with benchmark results. + bcfg := backend.DefaultBackendConfig(zap.NewNop()) + dir, _ := os.MkdirTemp(b.TempDir(), "etcd_backend_bench") + bcfg.Path = filepath.Join(dir, "database") + be := backend.New(bcfg) + defer betesting.Close(b, be) + s := mvcc.NewStore(zap.NewNop(), be, &lease.FakeLessor{}, mvcc.StoreConfig{}) + defer s.Close() + + // Insert keys + for i := range keyCount { + s.Put([]byte(fmt.Sprintf("key-%05d", i)), []byte("value"), lease.NoLease) + } + s.Commit() + + ctx := context.Background() + req := &pb.RangeRequest{ + Key: []byte(""), + RangeEnd: []byte{0}, + Limit: bm.limit, + SortOrder: bm.sortOrder, + SortTarget: bm.sortTarget, + } + + b.ReportAllocs() + b.ResetTimer() + for b.Loop() { + _, _, err := Range(ctx, zap.NewNop(), s, req) + if err != nil { + b.Fatal(err) + } + } + }) + } + } +} diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index d9cde9281cf8..244a6af6faca 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -121,6 +121,8 @@ func TestKVGet(t *testing.T) { {name: "blank key with limit set", begin: "", options: config.GetOptions{Prefix: true, Limit: 2}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB}, More: true}}, {name: "all kvs ordered by mod revision ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs}}, {name: "all KVs ordered by version ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: kvsByVersion}}, + {name: "all KVs ordered by key ascending, limit 2", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByKey, Limit: 2}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB}, More: true}}, + {name: "range [b, z) ordered by key descending, limit 2", begin: "b", options: config.GetOptions{End: "z", Order: clientv3.SortDescend, SortBy: clientv3.SortByKey, Limit: 2}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 5, Kvs: []*mvccpb.KeyValue{kvFop, kvFooAbc}, More: true}}, {name: "all KVs ordered by create revision, unspecified sort order", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortNone, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs}}, {name: "all KVs ordered by create revision descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByCreateRevision}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: reversedKvs}}, {name: "all KVs ordered by key descending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: reversedKvs}}, From c05de5c54ab8b0acd8c501c69164eed02d11671a Mon Sep 17 00:00:00 2001 From: Alessio Attilio Date: Tue, 7 Apr 2026 22:17:26 +0200 Subject: [PATCH 0899/1068] refactor: simplify filterRangeResults with explicit if statements Signed-off-by: Alessio Attilio --- server/etcdserver/txn/range.go | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/server/etcdserver/txn/range.go b/server/etcdserver/txn/range.go index 2ffc920e20e9..84c8539650fd 100644 --- a/server/etcdserver/txn/range.go +++ b/server/etcdserver/txn/range.go @@ -82,20 +82,16 @@ func rangeLimit(r *pb.RangeRequest) int64 { func filterRangeResults(rr *mvcc.RangeResult, r *pb.RangeRequest) { if r.MaxModRevision != 0 { - f := func(kv *mvccpb.KeyValue) bool { return kv.ModRevision > r.MaxModRevision } - pruneKVs(rr, f) + pruneKVs(rr, func(kv *mvccpb.KeyValue) bool { return kv.ModRevision > r.MaxModRevision }) } if r.MinModRevision != 0 { - f := func(kv *mvccpb.KeyValue) bool { return kv.ModRevision < r.MinModRevision } - pruneKVs(rr, f) + pruneKVs(rr, func(kv *mvccpb.KeyValue) bool { return kv.ModRevision < r.MinModRevision }) } if r.MaxCreateRevision != 0 { - f := func(kv *mvccpb.KeyValue) bool { return kv.CreateRevision > r.MaxCreateRevision } - pruneKVs(rr, f) + pruneKVs(rr, func(kv *mvccpb.KeyValue) bool { return kv.CreateRevision > r.MaxCreateRevision }) } if r.MinCreateRevision != 0 { - f := func(kv *mvccpb.KeyValue) bool { return kv.CreateRevision < r.MinCreateRevision } - pruneKVs(rr, f) + pruneKVs(rr, func(kv *mvccpb.KeyValue) bool { return kv.CreateRevision < r.MinCreateRevision }) } } From eec2246ec7bf7e09f9a00f9de99c4d19c3b1eb79 Mon Sep 17 00:00:00 2001 From: Lorenz Brun Date: Mon, 7 Jul 2025 11:32:22 +0200 Subject: [PATCH 0900/1068] server/embed: default WarningUnaryRequestDuration No default is applied right now, either by NewConfig nor any subsequent code. This results in every single request being logged at warning level as the threshold duration is zero. Fixes: 2a26f7ae4c8 ("etcdserver: configure "expensive" requests duration") Signed-off-by: Lorenz Brun --- server/embed/config.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/server/embed/config.go b/server/embed/config.go index 9be01ba8a984..dd79b05802b2 100644 --- a/server/embed/config.go +++ b/server/embed/config.go @@ -508,10 +508,11 @@ func NewConfig() *Config { SnapshotCount: etcdserver.DefaultSnapshotCount, SnapshotCatchUpEntries: etcdserver.DefaultSnapshotCatchUpEntries, - MaxTxnOps: DefaultMaxTxnOps, - MaxRequestBytes: DefaultMaxRequestBytes, - MaxConcurrentStreams: DefaultMaxConcurrentStreams, - WarningApplyDuration: DefaultWarningApplyDuration, + MaxTxnOps: DefaultMaxTxnOps, + MaxRequestBytes: DefaultMaxRequestBytes, + MaxConcurrentStreams: DefaultMaxConcurrentStreams, + WarningApplyDuration: DefaultWarningApplyDuration, + WarningUnaryRequestDuration: DefaultWarningUnaryRequestDuration, GRPCKeepAliveMinTime: DefaultGRPCKeepAliveMinTime, GRPCKeepAliveInterval: DefaultGRPCKeepAliveInterval, From 8a1620168569d9eb346654bcd6b9039959755281 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Wed, 8 Apr 2026 14:55:51 -0400 Subject: [PATCH 0901/1068] *: bump go to 1.26.2 Signed-off-by: Wei Fu --- .go-version | 2 +- api/go.mod | 2 +- cache/go.mod | 2 +- client/pkg/go.mod | 2 +- client/v3/go.mod | 2 +- etcdctl/go.mod | 2 +- etcdutl/go.mod | 2 +- go.mod | 2 +- go.work | 2 +- pkg/go.mod | 2 +- server/go.mod | 2 +- tests/go.mod | 2 +- tools/mod/go.mod | 2 +- tools/rw-heatmaps/go.mod | 2 +- tools/testgrid-analysis/go.mod | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.go-version b/.go-version index dd43a143f021..c7c3f3333e15 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.26.1 +1.26.2 diff --git a/api/go.mod b/api/go.mod index c6d886286a24..90eedd7619be 100644 --- a/api/go.mod +++ b/api/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/api/v3 go 1.26 -toolchain go1.26.1 +toolchain go1.26.2 require ( github.com/coreos/go-semver v0.3.1 diff --git a/cache/go.mod b/cache/go.mod index 4af834e9bfd1..433c5b200953 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/cache/v3 go 1.26 -toolchain go1.26.1 +toolchain go1.26.2 require ( github.com/google/go-cmp v0.7.0 diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 16958cced44e..9a128483454c 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/pkg/v3 go 1.26 -toolchain go1.26.1 +toolchain go1.26.2 require ( github.com/coreos/go-systemd/v22 v22.7.0 diff --git a/client/v3/go.mod b/client/v3/go.mod index d68f5b6cb2b8..91f080e875f8 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/v3 go 1.26 -toolchain go1.26.1 +toolchain go1.26.2 require ( github.com/coreos/go-semver v0.3.1 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 668d012f4f37..95cd48885a41 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdctl/v3 go 1.26 -toolchain go1.26.1 +toolchain go1.26.2 require ( github.com/bgentry/speakeasy v0.2.0 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 68b7635c15ed..d26b3be5106d 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdutl/v3 go 1.26 -toolchain go1.26.1 +toolchain go1.26.2 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/go.mod b/go.mod index fa9b15177768..877ebbd226f4 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/v3 go 1.26 -toolchain go1.26.1 +toolchain go1.26.2 replace ( go.etcd.io/etcd/api/v3 => ./api diff --git a/go.work b/go.work index d1a57d645fa1..980f21826291 100644 --- a/go.work +++ b/go.work @@ -2,7 +2,7 @@ go 1.26 -toolchain go1.26.1 +toolchain go1.26.2 use ( . diff --git a/pkg/go.mod b/pkg/go.mod index dbeaa04a3bed..58126af5cf95 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/pkg/v3 go 1.26 -toolchain go1.26.1 +toolchain go1.26.2 require ( github.com/creack/pty v1.1.18 diff --git a/server/go.mod b/server/go.mod index b4958d96ce6a..d506943b5fa5 100644 --- a/server/go.mod +++ b/server/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/server/v3 go 1.26 -toolchain go1.26.1 +toolchain go1.26.2 require ( github.com/coreos/go-semver v0.3.1 diff --git a/tests/go.mod b/tests/go.mod index b616fce68178..4462fce36c2d 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tests/v3 go 1.26 -toolchain go1.26.1 +toolchain go1.26.2 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 599c90a54c93..3832bd752774 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/v3 go 1.26 -toolchain go1.26.1 +toolchain go1.26.2 require ( github.com/alexfalkowski/gocovmerge v1.11.0 diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 0921d66a55fc..83ed0c23e1ad 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/rw-heatmaps/v3 go 1.26 -toolchain go1.26.1 +toolchain go1.26.2 require ( github.com/spf13/cobra v1.10.2 diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 619baa1f3477..7f1fc55ba391 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 go 1.26 -toolchain go1.26.1 +toolchain go1.26.2 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 From 67751d834268d4ff989015a7aa47dc7045e90f70 Mon Sep 17 00:00:00 2001 From: nihalmaddala Date: Tue, 7 Apr 2026 21:13:20 +0000 Subject: [PATCH 0902/1068] etcdserver: unify raft request entrypoint Remove dead indirection by making raftRequest the single canonical path. This is a mechanical refactor only; request behavior is unchanged. Signed-off-by: nihalmaddala --- server/etcdserver/server.go | 2 +- server/etcdserver/v3_server.go | 16 ++++++---------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index 993c8a819fdc..c658ef4ee9a6 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -402,7 +402,7 @@ func NewServer(cfg config.ServerConfig) (srv *EtcdServer, err error) { return lease.ErrNotPrimary } - srv.raftRequestOnce(ctx, pb.InternalRaftRequest{LeaseCheckpoint: cp}) + srv.raftRequest(ctx, pb.InternalRaftRequest{LeaseCheckpoint: cp}) return nil }) } diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index f93728b6c0d1..7acf7b0cec50 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -306,7 +306,7 @@ func (s *EtcdServer) LeaseGrant(ctx context.Context, r *pb.LeaseGrantRequest) (* return nil, err } - resp, err := s.raftRequestOnce(ctx, pb.InternalRaftRequest{LeaseGrant: r}) + resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{LeaseGrant: r}) if err != nil { return nil, err } @@ -336,7 +336,7 @@ func (s *EtcdServer) LeaseRevoke(ctx context.Context, r *pb.LeaseRevokeRequest) return nil, err } - resp, err := s.raftRequestOnce(ctx, pb.InternalRaftRequest{LeaseRevoke: r}) + resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{LeaseRevoke: r}) if err != nil { return nil, err } @@ -660,7 +660,7 @@ func (s *EtcdServer) waitLeader(ctx context.Context) (*membership.Member, error) } func (s *EtcdServer) Alarm(ctx context.Context, r *pb.AlarmRequest) (*pb.AlarmResponse, error) { - resp, err := s.raftRequestOnce(ctx, pb.InternalRaftRequest{Alarm: r}) + resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{Alarm: r}) if err != nil { return nil, err } @@ -668,7 +668,7 @@ func (s *EtcdServer) Alarm(ctx context.Context, r *pb.AlarmRequest) (*pb.AlarmRe } func (s *EtcdServer) AuthEnable(ctx context.Context, r *pb.AuthEnableRequest) (*pb.AuthEnableResponse, error) { - resp, err := s.raftRequestOnce(ctx, pb.InternalRaftRequest{AuthEnable: r}) + resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthEnable: r}) if err != nil { return nil, err } @@ -731,7 +731,7 @@ func (s *EtcdServer) Authenticate(ctx context.Context, r *pb.AuthenticateRequest SimpleToken: st, } - resp, err = s.raftRequestOnce(ctx, pb.InternalRaftRequest{Authenticate: internalReq}) + resp, err = s.raftRequest(ctx, pb.InternalRaftRequest{Authenticate: internalReq}) if err != nil { return nil, err } @@ -867,7 +867,7 @@ func (s *EtcdServer) RoleDelete(ctx context.Context, r *pb.AuthRoleDeleteRequest return resp.(*pb.AuthRoleDeleteResponse), nil } -func (s *EtcdServer) raftRequestOnce(ctx context.Context, r pb.InternalRaftRequest) (proto.Message, error) { +func (s *EtcdServer) raftRequest(ctx context.Context, r pb.InternalRaftRequest) (proto.Message, error) { result, err := s.processInternalRaftRequestOnce(ctx, r) if err != nil { trace.SpanFromContext(ctx).RecordError(err) @@ -888,10 +888,6 @@ func (s *EtcdServer) raftRequestOnce(ctx context.Context, r pb.InternalRaftReque return result.Resp, nil } -func (s *EtcdServer) raftRequest(ctx context.Context, r pb.InternalRaftRequest) (proto.Message, error) { - return s.raftRequestOnce(ctx, r) -} - // doSerialize handles the auth logic, with permissions checked by "chk", for a serialized request "get". Returns a non-nil error on authentication failure. func (s *EtcdServer) doSerialize(ctx context.Context, chk func(*auth.AuthInfo) error, get func()) error { trace := traceutil.Get(ctx) From 168e29a6dc8eca33154389891dc9feb2be881332 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 5 Apr 2026 17:44:17 +0200 Subject: [PATCH 0903/1068] Extract read struct that doesn't directly depend on server Signed-off-by: Marek Siarkowicz --- server/etcdserver/interface.go | 41 ++++++++++ server/etcdserver/raft.go | 4 + server/etcdserver/read.go | 133 ++++++++++++++++++++----------- server/etcdserver/server.go | 11 +-- server/etcdserver/server_test.go | 1 + 5 files changed, 134 insertions(+), 56 deletions(-) create mode 100644 server/etcdserver/interface.go diff --git a/server/etcdserver/interface.go b/server/etcdserver/interface.go new file mode 100644 index 000000000000..c8f9d9036f47 --- /dev/null +++ b/server/etcdserver/interface.go @@ -0,0 +1,41 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package etcdserver + +import "time" + +func (s *EtcdServer) ApplyWait(deadline uint64) <-chan struct{} { + return s.applyWait.Wait(deadline) +} + +func (s *EtcdServer) Done() <-chan struct{} { + return s.done +} + +func (s *EtcdServer) LeaderChanged() <-chan struct{} { + return s.leaderChanged.Receive() +} + +func (s *EtcdServer) NextRequestID() uint64 { + return s.reqIDGen.Next() +} + +func (s *EtcdServer) RequestTimeout() time.Duration { + return s.Cfg.ReqTimeout() +} + +func (s *EtcdServer) Stopping() <-chan struct{} { + return s.stopping +} diff --git a/server/etcdserver/raft.go b/server/etcdserver/raft.go index fd4b5dac3371..ec3004294b00 100644 --- a/server/etcdserver/raft.go +++ b/server/etcdserver/raft.go @@ -444,3 +444,7 @@ func (r *raftNode) advanceTicks(ticks int) { r.tick() } } + +func (r *raftNode) ReadState() <-chan raft.ReadState { + return r.readStateC +} diff --git a/server/etcdserver/read.go b/server/etcdserver/read.go index 85bf7e5ec489..ff2e7d3e7060 100644 --- a/server/etcdserver/read.go +++ b/server/etcdserver/read.go @@ -19,6 +19,7 @@ import ( "encoding/binary" errorspkg "errors" "strconv" + "sync" "time" "go.uber.org/zap" @@ -32,14 +33,52 @@ var ( readIndexRetryTime = 500 * time.Millisecond ) -func (s *EtcdServer) LinearizableReadNotify(ctx context.Context) error { - s.readMu.RLock() - nc := s.readNotifier - s.readMu.RUnlock() +func newRead(server server, raft raftInterface) *read { + return &read{ + server: server, + raft: raft, + waitC: make(chan struct{}, 1), + notifier: newNotifier(), + } +} + +type read struct { + server server + raft raftInterface + mux sync.RWMutex + // read routine notifies etcd server that it waits for reading by sending an empty struct to + // readwaitC + waitC chan struct{} + // notifier is used to notify the read routine that it can process the request + // when there is no error + notifier *notifier +} + +type server interface { + LeaderChanged() <-chan struct{} + Stopping() <-chan struct{} + Logger() *zap.Logger + AppliedIndex() uint64 + ApplyWait(deadline uint64) <-chan struct{} + NextRequestID() uint64 + RequestTimeout() time.Duration + FirstCommitInTermNotify() <-chan struct{} + Done() <-chan struct{} +} + +type raftInterface interface { + ReadState() <-chan raft.ReadState + ReadIndex(ctx context.Context, rctx []byte) error +} + +func (r *read) LinearizableReadNotify(ctx context.Context) error { + r.mux.RLock() + nc := r.notifier + r.mux.RUnlock() // signal linearizable loop for current notify if it hasn't been already select { - case s.readwaitc <- struct{}{}: + case r.waitC <- struct{}{}: default: } @@ -49,33 +88,33 @@ func (s *EtcdServer) LinearizableReadNotify(ctx context.Context) error { return nc.err case <-ctx.Done(): return ctx.Err() - case <-s.done: + case <-r.server.Done(): return errors.ErrStopped } } -func (s *EtcdServer) linearizableReadLoop() { +func (r *read) linearizableReadLoop() { for { - leaderChangedNotifier := s.leaderChanged.Receive() + leaderChangedNotifier := r.server.LeaderChanged() select { case <-leaderChangedNotifier: continue - case <-s.readwaitc: - case <-s.stopping: + case <-r.waitC: + case <-r.server.Stopping(): return } // as a single loop is can unlock multiple reads, it is not very useful // to propagate the trace from Txn or Range. - _, trace := traceutil.EnsureTrace(context.Background(), s.Logger(), "linearizableReadLoop") + _, trace := traceutil.EnsureTrace(context.Background(), r.server.Logger(), "linearizableReadLoop") nextnr := newNotifier() - s.readMu.Lock() - nr := s.readNotifier - s.readNotifier = nextnr - s.readMu.Unlock() + r.mux.Lock() + nr := r.notifier + r.notifier = nextnr + r.mux.Unlock() - confirmedIndex, err := s.requestCurrentIndex(leaderChangedNotifier) + confirmedIndex, err := r.requestCurrentIndex(leaderChangedNotifier) if isStopped(err) { return } @@ -88,13 +127,13 @@ func (s *EtcdServer) linearizableReadLoop() { trace.AddField(traceutil.Field{Key: "readStateIndex", Value: confirmedIndex}) - appliedIndex := s.getAppliedIndex() + appliedIndex := r.server.AppliedIndex() trace.AddField(traceutil.Field{Key: "appliedIndex", Value: strconv.FormatUint(appliedIndex, 10)}) if appliedIndex < confirmedIndex { select { - case <-s.applyWait.Wait(confirmedIndex): - case <-s.stopping: + case <-r.server.ApplyWait(confirmedIndex): + case <-r.server.Stopping(): return } } @@ -106,30 +145,26 @@ func (s *EtcdServer) linearizableReadLoop() { } } -func isStopped(err error) bool { - return errorspkg.Is(err, raft.ErrStopped) || errorspkg.Is(err, errors.ErrStopped) -} - -func (s *EtcdServer) requestCurrentIndex(leaderChangedNotifier <-chan struct{}) (uint64, error) { +func (r *read) requestCurrentIndex(leaderChangedNotifier <-chan struct{}) (uint64, error) { requestIDs := map[uint64]struct{}{} - requestID := s.reqIDGen.Next() + requestID := r.server.NextRequestID() requestIDs[requestID] = struct{}{} - err := s.sendReadIndex(requestID) + err := r.sendReadIndex(requestID) if err != nil { return 0, err } - lg := s.Logger() - errorTimer := time.NewTimer(s.Cfg.ReqTimeout()) + lg := r.server.Logger() + errorTimer := time.NewTimer(r.server.RequestTimeout()) defer errorTimer.Stop() retryTimer := time.NewTimer(readIndexRetryTime) defer retryTimer.Stop() - firstCommitInTermNotifier := s.firstCommitInTerm.Receive() + firstCommitInTermNotifier := r.server.FirstCommitInTermNotify() for { select { - case rs := <-s.r.readStateC: + case rs := <-r.raft.ReadState(): // Check again if leader changed as when multiple channels are ready, select picks randomly. select { case <-leaderChangedNotifier: @@ -157,11 +192,11 @@ func (s *EtcdServer) requestCurrentIndex(leaderChangedNotifier <-chan struct{}) // return a retryable error. return 0, errors.ErrLeaderChanged case <-firstCommitInTermNotifier: - firstCommitInTermNotifier = s.firstCommitInTerm.Receive() + firstCommitInTermNotifier = r.server.FirstCommitInTermNotify() lg.Info("first commit in current term: resending ReadIndex request") - requestID = s.reqIDGen.Next() + requestID = r.server.NextRequestID() requestIDs[requestID] = struct{}{} - err := s.sendReadIndex(requestID) + err := r.sendReadIndex(requestID) if err != nil { return 0, err } @@ -173,9 +208,9 @@ func (s *EtcdServer) requestCurrentIndex(leaderChangedNotifier <-chan struct{}) zap.Uint64("sent-request-id", requestID), zap.Duration("retry-timeout", readIndexRetryTime), ) - requestID = s.reqIDGen.Next() + requestID = r.server.NextRequestID() requestIDs[requestID] = struct{}{} - err := s.sendReadIndex(requestID) + err := r.sendReadIndex(requestID) if err != nil { return 0, err } @@ -184,36 +219,40 @@ func (s *EtcdServer) requestCurrentIndex(leaderChangedNotifier <-chan struct{}) case <-errorTimer.C: lg.Warn( "timed out waiting for read index response (local node might have slow network)", - zap.Duration("timeout", s.Cfg.ReqTimeout()), + zap.Duration("timeout", r.server.RequestTimeout()), ) slowReadIndex.Inc() return 0, errors.ErrTimeout - case <-s.stopping: + case <-r.server.Stopping(): return 0, errors.ErrStopped } } } -func uint64ToBigEndianBytes(number uint64) []byte { - byteResult := make([]byte, 8) - binary.BigEndian.PutUint64(byteResult, number) - return byteResult -} - -func (s *EtcdServer) sendReadIndex(requestIndex uint64) error { +func (r *read) sendReadIndex(requestIndex uint64) error { ctxToSend := uint64ToBigEndianBytes(requestIndex) - cctx, cancel := context.WithTimeout(context.Background(), s.Cfg.ReqTimeout()) - err := s.r.ReadIndex(cctx, ctxToSend) + cctx, cancel := context.WithTimeout(context.Background(), r.server.RequestTimeout()) + err := r.raft.ReadIndex(cctx, ctxToSend) cancel() if errorspkg.Is(err, raft.ErrStopped) { return err } if err != nil { - lg := s.Logger() + lg := r.server.Logger() lg.Warn("failed to get read index from Raft", zap.Error(err)) readIndexFailed.Inc() return err } return nil } + +func uint64ToBigEndianBytes(number uint64) []byte { + byteResult := make([]byte, 8) + binary.BigEndian.PutUint64(byteResult, number) + return byteResult +} + +func isStopped(err error) bool { + return errorspkg.Is(err, raft.ErrStopped) || errorspkg.Is(err, errors.ErrStopped) +} diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index c658ef4ee9a6..86899e63070f 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -222,13 +222,7 @@ type EtcdServer struct { w wait.Wait - readMu sync.RWMutex - // read routine notifies etcd server that it waits for reading by sending an empty struct to - // readwaitC - readwaitc chan struct{} - // readNotifier is used to notify the read routine that it can process the request - // when there is no error - readNotifier *notifier + *read // stop signals the run goroutine should shutdown. stop chan struct{} @@ -573,8 +567,7 @@ func (s *EtcdServer) start() { s.stop = make(chan struct{}) s.stopping = make(chan struct{}, 1) s.ctx, s.cancel = context.WithCancel(context.Background()) - s.readwaitc = make(chan struct{}, 1) - s.readNotifier = newNotifier() + s.read = newRead(s, &s.r) s.leaderChanged = notify.NewNotifier() if s.ClusterVersion() != nil { lg.Info( diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index 55f5d710707c..9c4b3c7dff65 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -1745,6 +1745,7 @@ func setupTestRequestCurrentIndex(t *testing.T) (*EtcdServer, *testRaftNode) { readStateC: make(chan raft.ReadState, 1), }, } + s.read = newRead(s, &s.r) return s, mockRaft } From d2099842592c55d4139fc6980d523a77737cd05b Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 6 Apr 2026 15:52:32 +0200 Subject: [PATCH 0904/1068] Move read into subpackage Signed-off-by: Marek Siarkowicz --- server/etcdserver/interface.go | 9 ++++++- server/etcdserver/metrics.go | 14 ---------- server/etcdserver/read/metrics.go | 39 ++++++++++++++++++++++++++++ server/etcdserver/{ => read}/read.go | 22 ++++++++-------- server/etcdserver/read/util.go | 31 ++++++++++++++++++++++ server/etcdserver/server.go | 13 +++++----- server/etcdserver/server_test.go | 13 +++++----- server/etcdserver/util.go | 16 ------------ server/etcdserver/v3_server.go | 6 ++--- 9 files changed, 106 insertions(+), 57 deletions(-) create mode 100644 server/etcdserver/read/metrics.go rename server/etcdserver/{ => read}/read.go (93%) create mode 100644 server/etcdserver/read/util.go diff --git a/server/etcdserver/interface.go b/server/etcdserver/interface.go index c8f9d9036f47..aff17a32490b 100644 --- a/server/etcdserver/interface.go +++ b/server/etcdserver/interface.go @@ -14,7 +14,10 @@ package etcdserver -import "time" +import ( + "context" + "time" +) func (s *EtcdServer) ApplyWait(deadline uint64) <-chan struct{} { return s.applyWait.Wait(deadline) @@ -39,3 +42,7 @@ func (s *EtcdServer) RequestTimeout() time.Duration { func (s *EtcdServer) Stopping() <-chan struct{} { return s.stopping } + +func (s *EtcdServer) LinearizableReadNotify(ctx context.Context) error { + return s.read.LinearizableReadNotify(ctx) +} diff --git a/server/etcdserver/metrics.go b/server/etcdserver/metrics.go index 4d39afcf6fa8..06edaab5c2bf 100644 --- a/server/etcdserver/metrics.go +++ b/server/etcdserver/metrics.go @@ -95,18 +95,6 @@ var ( Name: "proposals_failed_total", Help: "The total number of failed proposals seen.", }) - slowReadIndex = prometheus.NewCounter(prometheus.CounterOpts{ - Namespace: "etcd", - Subsystem: "server", - Name: "slow_read_indexes_total", - Help: "The total number of pending read indexes not in sync with leader's or timed out read index requests.", - }) - readIndexFailed = prometheus.NewCounter(prometheus.CounterOpts{ - Namespace: "etcd", - Subsystem: "server", - Name: "read_indexes_failed_total", - Help: "The total number of failed read indexes seen.", - }) requestDurationSec = prometheus.NewHistogramVec( prometheus.HistogramOpts{ Namespace: "etcd", @@ -184,8 +172,6 @@ func init() { prometheus.MustRegister(proposalsApplied) prometheus.MustRegister(proposalsPending) prometheus.MustRegister(proposalsFailed) - prometheus.MustRegister(slowReadIndex) - prometheus.MustRegister(readIndexFailed) prometheus.MustRegister(requestDurationSec) prometheus.MustRegister(leaseExpired) prometheus.MustRegister(currentVersion) diff --git a/server/etcdserver/read/metrics.go b/server/etcdserver/read/metrics.go new file mode 100644 index 000000000000..9199894a3bec --- /dev/null +++ b/server/etcdserver/read/metrics.go @@ -0,0 +1,39 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package read + +import ( + "github.com/prometheus/client_golang/prometheus" +) + +var ( + slowReadIndex = prometheus.NewCounter(prometheus.CounterOpts{ + Namespace: "etcd", + Subsystem: "server", + Name: "slow_read_indexes_total", + Help: "The total number of pending read indexes not in sync with leader's or timed out read index requests.", + }) + readIndexFailed = prometheus.NewCounter(prometheus.CounterOpts{ + Namespace: "etcd", + Subsystem: "server", + Name: "read_indexes_failed_total", + Help: "The total number of failed read indexes seen.", + }) +) + +func init() { + prometheus.MustRegister(slowReadIndex) + prometheus.MustRegister(readIndexFailed) +} diff --git a/server/etcdserver/read.go b/server/etcdserver/read/read.go similarity index 93% rename from server/etcdserver/read.go rename to server/etcdserver/read/read.go index ff2e7d3e7060..39d05f0a74ca 100644 --- a/server/etcdserver/read.go +++ b/server/etcdserver/read/read.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package etcdserver +package read import ( "context" @@ -33,8 +33,8 @@ var ( readIndexRetryTime = 500 * time.Millisecond ) -func newRead(server server, raft raftInterface) *read { - return &read{ +func NewRead(server server, raft raftInterface) *Read { + return &Read{ server: server, raft: raft, waitC: make(chan struct{}, 1), @@ -42,12 +42,12 @@ func newRead(server server, raft raftInterface) *read { } } -type read struct { +type Read struct { server server raft raftInterface mux sync.RWMutex // read routine notifies etcd server that it waits for reading by sending an empty struct to - // readwaitC + // waitC waitC chan struct{} // notifier is used to notify the read routine that it can process the request // when there is no error @@ -71,7 +71,7 @@ type raftInterface interface { ReadIndex(ctx context.Context, rctx []byte) error } -func (r *read) LinearizableReadNotify(ctx context.Context) error { +func (r *Read) LinearizableReadNotify(ctx context.Context) error { r.mux.RLock() nc := r.notifier r.mux.RUnlock() @@ -93,7 +93,7 @@ func (r *read) LinearizableReadNotify(ctx context.Context) error { } } -func (r *read) linearizableReadLoop() { +func (r *Read) LinearizableReadLoop() { for { leaderChangedNotifier := r.server.LeaderChanged() select { @@ -114,7 +114,7 @@ func (r *read) linearizableReadLoop() { r.notifier = nextnr r.mux.Unlock() - confirmedIndex, err := r.requestCurrentIndex(leaderChangedNotifier) + confirmedIndex, err := r.RequestCurrentIndex(leaderChangedNotifier) if isStopped(err) { return } @@ -141,11 +141,11 @@ func (r *read) linearizableReadLoop() { nr.notify(nil) trace.Step("applied index is now lower than readState.Index") - trace.LogAllStepsIfLong(traceThreshold) + trace.LogAllStepsIfLong(100 * time.Millisecond) } } -func (r *read) requestCurrentIndex(leaderChangedNotifier <-chan struct{}) (uint64, error) { +func (r *Read) RequestCurrentIndex(leaderChangedNotifier <-chan struct{}) (uint64, error) { requestIDs := map[uint64]struct{}{} requestID := r.server.NextRequestID() requestIDs[requestID] = struct{}{} @@ -229,7 +229,7 @@ func (r *read) requestCurrentIndex(leaderChangedNotifier <-chan struct{}) (uint6 } } -func (r *read) sendReadIndex(requestIndex uint64) error { +func (r *Read) sendReadIndex(requestIndex uint64) error { ctxToSend := uint64ToBigEndianBytes(requestIndex) cctx, cancel := context.WithTimeout(context.Background(), r.server.RequestTimeout()) diff --git a/server/etcdserver/read/util.go b/server/etcdserver/read/util.go new file mode 100644 index 000000000000..cbaf6d605bb1 --- /dev/null +++ b/server/etcdserver/read/util.go @@ -0,0 +1,31 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package read + +type notifier struct { + c chan struct{} + err error +} + +func newNotifier() *notifier { + return ¬ifier{ + c: make(chan struct{}), + } +} + +func (nc *notifier) notify(err error) { + nc.err = err + close(nc.c) +} diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index 86899e63070f..20b12915df73 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -60,6 +60,7 @@ import ( "go.etcd.io/etcd/server/v3/etcdserver/apply" "go.etcd.io/etcd/server/v3/etcdserver/cindex" "go.etcd.io/etcd/server/v3/etcdserver/errors" + "go.etcd.io/etcd/server/v3/etcdserver/read" serverversion "go.etcd.io/etcd/server/v3/etcdserver/version" "go.etcd.io/etcd/server/v3/features" "go.etcd.io/etcd/server/v3/lease" @@ -222,7 +223,7 @@ type EtcdServer struct { w wait.Wait - *read + read *read.Read // stop signals the run goroutine should shutdown. stop chan struct{} @@ -532,7 +533,7 @@ func (s *EtcdServer) Start() { s.GoAttach(func() { monitorFileDescriptor(s.Logger(), s.stopping) }) s.GoAttach(s.monitorClusterVersions) s.GoAttach(s.monitorStorageVersion) - s.GoAttach(s.linearizableReadLoop) + s.GoAttach(s.read.LinearizableReadLoop) s.GoAttach(s.monitorKVHash) s.GoAttach(s.monitorCompactHash) s.GoAttach(s.monitorDowngrade) @@ -567,7 +568,7 @@ func (s *EtcdServer) start() { s.stop = make(chan struct{}) s.stopping = make(chan struct{}, 1) s.ctx, s.cancel = context.WithCancel(context.Background()) - s.read = newRead(s, &s.r) + s.read = read.NewRead(s, &s.r) s.leaderChanged = notify.NewNotifier() if s.ClusterVersion() != nil { lg.Info( @@ -686,7 +687,7 @@ func (h *downgradeEnabledHandler) ServeHTTP(w http.ResponseWriter, r *http.Reque defer cancel() // serve with linearized downgrade info - if err := h.server.LinearizableReadNotify(ctx); err != nil { + if err := h.server.read.LinearizableReadNotify(ctx); err != nil { http.Error(w, fmt.Sprintf("failed linearized read: %v", err), http.StatusInternalServerError) return @@ -919,7 +920,7 @@ func (s *EtcdServer) ensureLeadership() bool { ctx, cancel := context.WithTimeout(s.ctx, s.Cfg.ReqTimeout()) defer cancel() - if err := s.LinearizableReadNotify(ctx); err != nil { + if err := s.read.LinearizableReadNotify(ctx); err != nil { lg.Warn("Failed to check current member's leadership", zap.Error(err)) return false @@ -1663,7 +1664,7 @@ func (s *EtcdServer) UpdateMember(ctx context.Context, memb membership.Member) ( func (s *EtcdServer) MemberList(ctx context.Context, r *pb.MemberListRequest) ([]*membership.Member, error) { if r.Linearizable { - if err := s.LinearizableReadNotify(ctx); err != nil { + if err := s.read.LinearizableReadNotify(ctx); err != nil { return nil, err } } diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index 9c4b3c7dff65..f9e35d69eea9 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -56,6 +56,7 @@ import ( apply2 "go.etcd.io/etcd/server/v3/etcdserver/apply" "go.etcd.io/etcd/server/v3/etcdserver/cindex" "go.etcd.io/etcd/server/v3/etcdserver/errors" + "go.etcd.io/etcd/server/v3/etcdserver/read" "go.etcd.io/etcd/server/v3/features" "go.etcd.io/etcd/server/v3/lease" "go.etcd.io/etcd/server/v3/mock/mockstorage" @@ -1584,7 +1585,7 @@ func TestRequestCurrentIndex_LeaderChangedRace(t *testing.T) { leaderChangedNotifier := s.leaderChanged.Receive() s.leaderChanged.Notify() - index, err := s.requestCurrentIndex(leaderChangedNotifier) + index, err := s.read.RequestCurrentIndex(leaderChangedNotifier) require.ErrorIs(t, err, errors.ErrLeaderChanged) require.Equal(t, uint64(0), index) @@ -1603,7 +1604,7 @@ func TestRequestCurrentIndex_UniqueRequestID(t *testing.T) { wg.Add(1) go func() { defer wg.Done() - s.requestCurrentIndex(s.leaderChanged.Receive()) + s.read.RequestCurrentIndex(s.leaderChanged.Receive()) }() require.Eventually(t, func() bool { @@ -1629,7 +1630,7 @@ func TestRequestCurrentIndex_Success(t *testing.T) { var err error go func() { defer wg.Done() - index, err = s.requestCurrentIndex(s.leaderChanged.Receive()) + index, err = s.read.RequestCurrentIndex(s.leaderChanged.Receive()) }() require.Eventually(t, func() bool { @@ -1661,7 +1662,7 @@ func TestRequestCurrentIndex_WrongRequestID(t *testing.T) { var err error go func() { defer wg.Done() - index, err = s.requestCurrentIndex(s.leaderChanged.Receive()) + index, err = s.read.RequestCurrentIndex(s.leaderChanged.Receive()) }() require.Eventually(t, func() bool { @@ -1704,7 +1705,7 @@ func TestRequestCurrentIndex_DelayedResponse(t *testing.T) { var err error go func() { defer wg.Done() - index, err = s.requestCurrentIndex(s.leaderChanged.Receive()) + index, err = s.read.RequestCurrentIndex(s.leaderChanged.Receive()) }() require.Eventually(t, func() bool { @@ -1745,7 +1746,7 @@ func setupTestRequestCurrentIndex(t *testing.T) (*EtcdServer, *testRaftNode) { readStateC: make(chan raft.ReadState, 1), }, } - s.read = newRead(s, &s.r) + s.read = read.NewRead(s, &s.r) return s, mockRaft } diff --git a/server/etcdserver/util.go b/server/etcdserver/util.go index b23ab682e494..ab4ce8d60d08 100644 --- a/server/etcdserver/util.go +++ b/server/etcdserver/util.go @@ -79,19 +79,3 @@ func longestConnected(tp rafthttp.Transporter, membs []types.ID) (types.ID, bool } return longest, true } - -type notifier struct { - c chan struct{} - err error -} - -func newNotifier() *notifier { - return ¬ifier{ - c: make(chan struct{}), - } -} - -func (nc *notifier) notify(err error) { - nc.err = err - close(nc.c) -} diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 7acf7b0cec50..9724fa0743d0 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -132,7 +132,7 @@ func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRe }(time.Now()) if !r.Serializable { - err = s.LinearizableReadNotify(ctx) + err = s.read.LinearizableReadNotify(ctx) trace.Step("agreement among raft nodes before linearized reading") if err != nil { return nil, err @@ -201,7 +201,7 @@ func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse ) if readOnly { if !txn.IsTxnSerializable(r) { - err := s.LinearizableReadNotify(ctx) + err := s.read.LinearizableReadNotify(ctx) trace.Step("agreement among raft nodes before linearized reading") if err != nil { return nil, err @@ -692,7 +692,7 @@ func (s *EtcdServer) AuthStatus(ctx context.Context, r *pb.AuthStatusRequest) (* } func (s *EtcdServer) Authenticate(ctx context.Context, r *pb.AuthenticateRequest) (*pb.AuthenticateResponse, error) { - if err := s.LinearizableReadNotify(ctx); err != nil { + if err := s.read.LinearizableReadNotify(ctx); err != nil { return nil, err } From 267ce71e10ef1ce6d3e0f589bdd072a8ec261b9b Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 9 Apr 2026 14:10:18 +0200 Subject: [PATCH 0905/1068] Extract methods for accessing EtcdState fields Signed-off-by: Marek Siarkowicz --- tests/robustness/model/describe.go | 19 ++--- tests/robustness/model/deterministic.go | 89 ++++++++++++++++------ tests/robustness/model/replay.go | 15 +--- tests/robustness/validate/validate_test.go | 33 ++++++++ tests/robustness/validate/watch.go | 14 +++- 5 files changed, 120 insertions(+), 50 deletions(-) diff --git a/tests/robustness/model/describe.go b/tests/robustness/model/describe.go index 9bdf05b14374..8f708a4551b1 100644 --- a/tests/robustness/model/describe.go +++ b/tests/robustness/model/describe.go @@ -16,9 +16,6 @@ package model import ( "fmt" - "maps" - "slices" - "sort" "strings" "go.etcd.io/etcd/client/pkg/v3/types" @@ -91,19 +88,18 @@ func describeEtcdState(state EtcdState) string { if len(state.KeyValues) > 0 { descHTML = append(descHTML, "keys:
      ") - keys := slices.Collect(maps.Keys(state.KeyValues)) - sort.Strings(keys) - for _, key := range keys { - descHTML = append(descHTML, fmt.Sprintf("
    • %s - ", key)) + keys, values, leases := state.KeysValueLeases() + for i := range keys { + descHTML = append(descHTML, fmt.Sprintf("
    • %s - ", keys[i])) - value := state.KeyValues[key] + value := values[i] if value.Value.Value != "" { descHTML = append(descHTML, fmt.Sprintf("val: %q, ", value.Value.Value)) } if value.Value.Hash != 0 { descHTML = append(descHTML, fmt.Sprintf("hash: %d, ", value.Value.Hash)) } - lease := state.KeyLeases[key] + lease := leases[i] if lease != 0 { descHTML = append(descHTML, fmt.Sprintf("lease: %d, ", lease)) } @@ -114,10 +110,9 @@ func describeEtcdState(state EtcdState) string { descHTML = append(descHTML, "
    ") } - if len(state.Leases) > 0 { + leases := state.leases() + if len(leases) > 0 { descHTML = append(descHTML, "leases:
      ") - leases := slices.Collect(maps.Keys(state.Leases)) - slices.Sort(leases) for _, lease := range leases { descHTML = append(descHTML, fmt.Sprintf("
    • %d
    • ", lease)) } diff --git a/tests/robustness/model/deterministic.go b/tests/robustness/model/deterministic.go index 8de5c2c7637f..ea36333a2894 100644 --- a/tests/robustness/model/deterministic.go +++ b/tests/robustness/model/deterministic.go @@ -20,6 +20,7 @@ import ( "html" "maps" "reflect" + "slices" "sort" "github.com/anishathalye/porcupine" @@ -163,7 +164,10 @@ func (s EtcdState) stepTxn(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { newState := s.DeepCopy() failure := false for _, cond := range request.Txn.Conditions { - val := newState.KeyValues[cond.Key] + val, ok := newState.GetValue(cond.Key) + if !ok { + val = &ValueRevision{} + } if cond.ExpectedVersion > 0 { if val.Version != cond.ExpectedVersion { failure = true @@ -187,29 +191,29 @@ func (s EtcdState) stepTxn(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { RangeResponse: newState.getRange(op.Range), } case PutOperation: - _, leaseExists := newState.Leases[op.Put.LeaseID] - if op.Put.LeaseID != 0 && !leaseExists { - break + var leaseID *int64 + if op.Put.LeaseID != 0 { + if !newState.leaseExists(op.Put.LeaseID) { + break + } + leaseID = &op.Put.LeaseID } ver := int64(1) - if val, exists := newState.KeyValues[op.Put.Key]; exists && val.Version > 0 { - ver = val.Version + 1 + valPtr, exists := newState.GetValue(op.Put.Key) + if exists && valPtr.Version > 0 { + ver = valPtr.Version + 1 } - newState.KeyValues[op.Put.Key] = ValueRevision{ + val := ValueRevision{ Value: op.Put.Value, ModRevision: newState.Revision + 1, Version: ver, } + newState.setValueLease(op.Put.Key, val, leaseID) increaseRevision = true - newState = detachFromOldLease(newState, op.Put.Key) - if leaseExists { - newState = attachToNewLease(newState, op.Put.LeaseID, op.Put.Key) - } case DeleteOperation: - if _, ok := newState.KeyValues[op.Delete.Key]; ok { - delete(newState.KeyValues, op.Delete.Key) + if _, ok := newState.GetValue(op.Delete.Key); ok { + newState.deleteKey(op.Delete.Key) increaseRevision = true - newState = detachFromOldLease(newState, op.Delete.Key) opResp[i].Deleted = 1 } default: @@ -294,11 +298,11 @@ func (s EtcdState) getRange(options RangeOptions) RangeResponse { } response.Count = count } else { - value, ok := s.KeyValues[options.Start] + valPtr, ok := s.GetValue(options.Start) if ok { response.KVs = append(response.KVs, KeyValue{ Key: options.Start, - ValueRevision: value, + ValueRevision: *valPtr, }) response.Count = 1 } @@ -306,16 +310,57 @@ func (s EtcdState) getRange(options RangeOptions) RangeResponse { return response } -func detachFromOldLease(s EtcdState, key string) EtcdState { +func (s EtcdState) KeysValueLeases() (keys []string, values []ValueRevision, leases []int64) { + keys = make([]string, 0, len(s.KeyValues)) + values = make([]ValueRevision, 0, len(s.KeyValues)) + leases = make([]int64, 0, len(s.KeyLeases)) + + for k, v := range s.KeyValues { + keys = append(keys, k) + values = append(values, v) + leases = append(leases, s.KeyLeases[k]) + } + return keys, values, leases +} + +func (s EtcdState) leases() []int64 { + return slices.Collect(maps.Keys(s.Leases)) +} + +func (s EtcdState) GetValue(key string) (*ValueRevision, bool) { + val, ok := s.KeyValues[key] + if !ok { + return nil, false + } + return &val, true +} + +func (s EtcdState) setValueLease(key string, val ValueRevision, lease *int64) { + s.KeyValues[key] = val if oldLeaseID, ok := s.KeyLeases[key]; ok { delete(s.Leases[oldLeaseID].Keys, key) + } + if lease != nil { + s.KeyLeases[key] = *lease + s.Leases[*lease].Keys[key] = leased + } else { delete(s.KeyLeases, key) } - return s } -func attachToNewLease(s EtcdState, leaseID int64, key string) EtcdState { - s.KeyLeases[key] = leaseID - s.Leases[leaseID].Keys[key] = leased - return s +func (s EtcdState) leaseExists(lease int64) bool { + _, ok := s.Leases[lease] + return ok +} + +func (s EtcdState) deleteKey(key string) { + delete(s.KeyValues, key) + if oldLeaseID, ok := s.KeyLeases[key]; ok { + delete(s.Leases[oldLeaseID].Keys, key) + } + delete(s.KeyLeases, key) +} + +func (s EtcdState) leaseKeys(leaseID int64) []string { + return slices.Sorted(maps.Keys(s.Leases[leaseID].Keys)) } diff --git a/tests/robustness/model/replay.go b/tests/robustness/model/replay.go index f7dfadcf32e1..8edd121b6fab 100644 --- a/tests/robustness/model/replay.go +++ b/tests/robustness/model/replay.go @@ -16,7 +16,6 @@ package model import ( "fmt" - "sort" "strings" "github.com/anishathalye/porcupine" @@ -99,7 +98,7 @@ func toWatchEvents(prevState *EtcdState, request EtcdRequest, response MaybeEtcd events = append(events, e) } case PutOperation: - _, leaseExists := prevState.Leases[op.Put.LeaseID] + leaseExists := prevState.leaseExists(op.Put.LeaseID) if op.Put.LeaseID != 0 && !leaseExists { break } @@ -112,7 +111,7 @@ func toWatchEvents(prevState *EtcdState, request EtcdRequest, response MaybeEtcd }, Revision: response.Revision, } - if _, ok := prevState.KeyValues[op.Put.Key]; !ok { + if _, ok := prevState.GetValue(op.Put.Key); !ok { e.IsCreate = true } events = append(events, e) @@ -121,15 +120,7 @@ func toWatchEvents(prevState *EtcdState, request EtcdRequest, response MaybeEtcd } } case LeaseRevoke: - deletedKeys := []string{} - for key := range prevState.Leases[request.LeaseRevoke.LeaseID].Keys { - if _, ok := prevState.KeyValues[key]; ok { - deletedKeys = append(deletedKeys, key) - } - } - - sort.Strings(deletedKeys) - for _, key := range deletedKeys { + for _, key := range prevState.leaseKeys(request.LeaseRevoke.LeaseID) { e := PersistedEvent{ Event: Event{ Type: DeleteOperation, diff --git a/tests/robustness/validate/validate_test.go b/tests/robustness/validate/validate_test.go index 5ab479ca59cf..bffb09b9b407 100644 --- a/tests/robustness/validate/validate_test.go +++ b/tests/robustness/validate/validate_test.go @@ -226,6 +226,39 @@ func TestValidateWatch(t *testing.T) { putRequest("b", "2"), }, }, + { + name: "Reliable - Put with non-existent lease doesn't generate watch event - pass", + reports: []report.ClientReport{ + { + Watch: []model.WatchOperation{ + { + Request: model.WatchRequest{ + Key: "a", + }, + Responses: []model.WatchResponse{}, + }, + }, + }, + }, + persistedRequests: []model.EtcdRequest{ + { + Type: model.Txn, + Txn: &model.TxnRequest{ + OperationsOnSuccess: []model.EtcdOperation{ + { + Type: model.PutOperation, + Put: model.PutOptions{ + Key: "a", + Value: model.ToValueOrHash("1"), + LeaseID: 1, + }, + }, + }, + }, + }, + }, + expectError: "", + }, { name: "Ordered, Unique - unique ordered events in separate response - pass", reports: []report.ClientReport{ diff --git a/tests/robustness/validate/watch.go b/tests/robustness/validate/watch.go index 7b68a6b04ebe..59d7a8f51f2d 100644 --- a/tests/robustness/validate/watch.go +++ b/tests/robustness/validate/watch.go @@ -278,9 +278,15 @@ func validatePrevKV(lg *zap.Logger, replay *model.EtcdReplay, report report.Clie // We allow PrevValue to be nil since in the face of compaction, etcd does not // guarantee its presence. - if event.PrevValue != nil && *event.PrevValue != state.KeyValues[event.Key] { - lg.Error("Incorrect event prevValue field", zap.Int("client", report.ClientID), zap.Any("event", event), zap.Any("previousValue", state.KeyValues[event.Key])) - err = errBrokePrevKV + if event.PrevValue != nil { + val, ok := state.GetValue(event.Key) + if !ok { + lg.Error("Incorrect event prevValue field", zap.Int("client", report.ClientID), zap.Any("event", event), zap.Any("previousValue", nil)) + err = errBrokePrevKV + } else if *event.PrevValue != *val { + lg.Error("Incorrect event prevValue field", zap.Int("client", report.ClientID), zap.Any("event", event), zap.Any("previousValue", *val)) + err = errBrokePrevKV + } } } } @@ -299,7 +305,7 @@ func validateIsCreate(lg *zap.Logger, replay *model.EtcdReplay, report report.Cl } // A create event will not have an entry in our history and a non-create // event *should* have an entry in our history. - if _, prevKeyExists := state.KeyValues[event.Key]; event.IsCreate == prevKeyExists { + if _, prevKeyExists := state.GetValue(event.Key); event.IsCreate == prevKeyExists { lg.Error("Incorrect event IsCreate field", zap.Int("client", report.ClientID), zap.Any("event", event)) err = errBrokeIsCreate } From fab5f7e5e5ef55f81320908ac30baedc3cc31a2b Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 6 Apr 2026 17:06:02 +0200 Subject: [PATCH 0906/1068] Rewrite tests to use mock instead of directly depending on EtcdServer Signed-off-by: Marek Siarkowicz --- server/etcdserver/server_test.go | 89 ++++++++++++++++++++------------ 1 file changed, 57 insertions(+), 32 deletions(-) diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index f9e35d69eea9..7545dacba562 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -1578,20 +1578,23 @@ func TestAddFeatureGateMetrics(t *testing.T) { } func TestRequestCurrentIndex_LeaderChangedRace(t *testing.T) { - s, _ := setupTestRequestCurrentIndex(t) + s, mockRaft := setupTestRequestCurrentIndex(t) + r := read.NewRead(s, mockRaft) for i := 0; i < 100; i++ { - s.r.readStateC <- raft.ReadState{Index: 100} - leaderChangedNotifier := s.leaderChanged.Receive() - s.leaderChanged.Notify() + mockRaft.readStateC <- raft.ReadState{Index: 100} + s.leaderChanged <- struct{}{} - index, err := s.read.RequestCurrentIndex(leaderChangedNotifier) + index, err := r.RequestCurrentIndex(s.LeaderChanged()) require.ErrorIs(t, err, errors.ErrLeaderChanged) require.Equal(t, uint64(0), index) - // Clear the readStateC channel for the next iteration, select { - case <-s.r.readStateC: + case <-mockRaft.readStateC: + default: + } + select { + case <-s.leaderChanged: default: } } @@ -1599,19 +1602,20 @@ func TestRequestCurrentIndex_LeaderChangedRace(t *testing.T) { func TestRequestCurrentIndex_UniqueRequestID(t *testing.T) { s, mockRaft := setupTestRequestCurrentIndex(t) + r := read.NewRead(s, mockRaft) wg := sync.WaitGroup{} wg.Add(1) go func() { defer wg.Done() - s.read.RequestCurrentIndex(s.leaderChanged.Receive()) + r.RequestCurrentIndex(s.LeaderChanged()) }() require.Eventually(t, func() bool { return len(mockRaft.getRequests()) >= 2 }, time.Second, 100*time.Millisecond) - s.leaderChanged.Notify() + s.leaderChanged <- struct{}{} wg.Wait() seen := make(map[uint64]bool) @@ -1623,6 +1627,7 @@ func TestRequestCurrentIndex_UniqueRequestID(t *testing.T) { func TestRequestCurrentIndex_Success(t *testing.T) { s, mockRaft := setupTestRequestCurrentIndex(t) + r := read.NewRead(s, mockRaft) wg := sync.WaitGroup{} wg.Add(1) @@ -1630,7 +1635,7 @@ func TestRequestCurrentIndex_Success(t *testing.T) { var err error go func() { defer wg.Done() - index, err = s.read.RequestCurrentIndex(s.leaderChanged.Receive()) + index, err = r.RequestCurrentIndex(s.LeaderChanged()) }() require.Eventually(t, func() bool { @@ -1641,7 +1646,7 @@ func TestRequestCurrentIndex_Success(t *testing.T) { reqIDBytes := make([]byte, 8) binary.BigEndian.PutUint64(reqIDBytes, reqID) - s.r.readStateC <- raft.ReadState{ + mockRaft.readStateC <- raft.ReadState{ Index: 100, RequestCtx: reqIDBytes, } @@ -1655,6 +1660,7 @@ func TestRequestCurrentIndex_Success(t *testing.T) { func TestRequestCurrentIndex_WrongRequestID(t *testing.T) { s, mockRaft := setupTestRequestCurrentIndex(t) + r := read.NewRead(s, mockRaft) wg := sync.WaitGroup{} wg.Add(1) @@ -1662,7 +1668,7 @@ func TestRequestCurrentIndex_WrongRequestID(t *testing.T) { var err error go func() { defer wg.Done() - index, err = s.read.RequestCurrentIndex(s.leaderChanged.Receive()) + index, err = r.RequestCurrentIndex(s.LeaderChanged()) }() require.Eventually(t, func() bool { @@ -1672,7 +1678,7 @@ func TestRequestCurrentIndex_WrongRequestID(t *testing.T) { wrongReqIDBytes := make([]byte, 8) binary.BigEndian.PutUint64(wrongReqIDBytes, 99999) - s.r.readStateC <- raft.ReadState{ + mockRaft.readStateC <- raft.ReadState{ Index: 100, RequestCtx: wrongReqIDBytes, } @@ -1685,7 +1691,7 @@ func TestRequestCurrentIndex_WrongRequestID(t *testing.T) { reqIDBytes := make([]byte, 8) binary.BigEndian.PutUint64(reqIDBytes, reqID) - s.r.readStateC <- raft.ReadState{ + mockRaft.readStateC <- raft.ReadState{ Index: 99, RequestCtx: reqIDBytes, } @@ -1698,6 +1704,7 @@ func TestRequestCurrentIndex_WrongRequestID(t *testing.T) { func TestRequestCurrentIndex_DelayedResponse(t *testing.T) { s, mockRaft := setupTestRequestCurrentIndex(t) + r := read.NewRead(s, mockRaft) wg := sync.WaitGroup{} wg.Add(1) @@ -1705,7 +1712,7 @@ func TestRequestCurrentIndex_DelayedResponse(t *testing.T) { var err error go func() { defer wg.Done() - index, err = s.read.RequestCurrentIndex(s.leaderChanged.Receive()) + index, err = r.RequestCurrentIndex(s.LeaderChanged()) }() require.Eventually(t, func() bool { @@ -1718,7 +1725,7 @@ func TestRequestCurrentIndex_DelayedResponse(t *testing.T) { binary.BigEndian.PutUint64(reqIDBytes, reqID) select { - case s.r.readStateC <- raft.ReadState{ + case mockRaft.readStateC <- raft.ReadState{ Index: 100, RequestCtx: reqIDBytes, }: @@ -1731,31 +1738,28 @@ func TestRequestCurrentIndex_DelayedResponse(t *testing.T) { require.Equal(t, uint64(100), index) } -func setupTestRequestCurrentIndex(t *testing.T) (*EtcdServer, *testRaftNode) { - mockRaft := &testRaftNode{} - s := &EtcdServer{ - lgMu: new(sync.RWMutex), - lg: zaptest.NewLogger(t), - reqIDGen: idutil.NewGenerator(0, time.Time{}), - firstCommitInTerm: notify.NewNotifier(), - leaderChanged: notify.NewNotifier(), - r: raftNode{ - raftNodeConfig: raftNodeConfig{ - Node: mockRaft, - }, - readStateC: make(chan raft.ReadState, 1), - }, +func setupTestRequestCurrentIndex(t *testing.T) (*mockServer, *testRaftNode) { + s := &mockServer{ + leaderChanged: make(chan struct{}, 1), + stopping: make(chan struct{}, 1), + done: make(chan struct{}, 1), + logger: zaptest.NewLogger(t), + timeout: 5 * time.Second, + firstCommit: make(chan struct{}, 1), + } + mockRaft := &testRaftNode{ + readStateC: make(chan raft.ReadState, 1), } - s.read = read.NewRead(s, &s.r) return s, mockRaft } type testRaftNode struct { - raft.Node + readStateC chan raft.ReadState mu sync.Mutex readIndexRequests []uint64 } +func (m *testRaftNode) ReadState() <-chan raft.ReadState { return m.readStateC } func (m *testRaftNode) ReadIndex(ctx context.Context, rctx []byte) error { m.mu.Lock() defer m.mu.Unlock() @@ -1772,3 +1776,24 @@ func (m *testRaftNode) getRequests() []uint64 { copy(res, m.readIndexRequests) return res } + +type mockServer struct { + leaderChanged chan struct{} + stopping chan struct{} + done chan struct{} + logger *zap.Logger + appliedIndex uint64 + nextRequestID uint64 + timeout time.Duration + firstCommit chan struct{} +} + +func (s *mockServer) LeaderChanged() <-chan struct{} { return s.leaderChanged } +func (s *mockServer) Stopping() <-chan struct{} { return s.stopping } +func (s *mockServer) Logger() *zap.Logger { return s.logger } +func (s *mockServer) AppliedIndex() uint64 { return s.appliedIndex } +func (s *mockServer) ApplyWait(deadline uint64) <-chan struct{} { return nil } +func (s *mockServer) NextRequestID() uint64 { s.nextRequestID++; return s.nextRequestID } +func (s *mockServer) RequestTimeout() time.Duration { return s.timeout } +func (s *mockServer) FirstCommitInTermNotify() <-chan struct{} { return s.firstCommit } +func (s *mockServer) Done() <-chan struct{} { return s.done } From d9880e09c4ca9ff50e1684e0767aa128d79e806e Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 18 May 2025 17:54:12 +0200 Subject: [PATCH 0907/1068] Use static list of keys in model Signed-off-by: Marek Siarkowicz Co-authored-by: Nont <9658731+nwnt@users.noreply.github.com> --- tests/robustness/model/describe.go | 15 +- tests/robustness/model/describe_test.go | 8 +- tests/robustness/model/deterministic.go | 233 ++++++++++-------- tests/robustness/model/deterministic_test.go | 60 +++-- tests/robustness/model/non_deterministic.go | 152 ++++++++---- .../model/non_deterministic_test.go | 14 +- tests/robustness/model/replay.go | 43 +++- tests/robustness/model/types.go | 15 -- tests/robustness/validate/operations.go | 8 +- tests/robustness/validate/operations_test.go | 6 +- tests/robustness/validate/validate.go | 4 +- 11 files changed, 344 insertions(+), 214 deletions(-) diff --git a/tests/robustness/model/describe.go b/tests/robustness/model/describe.go index 8f708a4551b1..deb25761c4f2 100644 --- a/tests/robustness/model/describe.go +++ b/tests/robustness/model/describe.go @@ -85,7 +85,15 @@ func describeEtcdState(state EtcdState) string { descHTML = append(descHTML, fmt.Sprintf("

      state, rev: %d, compactRev: %d

      ", state.Revision, state.CompactRevision)) - if len(state.KeyValues) > 0 { + keys := []string{} + for i, v := range state.KeyValues { + if v == nil { + continue + } + keys = append(keys, state.Keys[i]) + } + + if len(keys) > 0 { descHTML = append(descHTML, "keys:
        ") keys, values, leases := state.KeysValueLeases() @@ -99,12 +107,13 @@ func describeEtcdState(state EtcdState) string { if value.Value.Hash != 0 { descHTML = append(descHTML, fmt.Sprintf("hash: %d, ", value.Value.Hash)) } + descHTML = append(descHTML, fmt.Sprintf("mod: %d, ver: %d", value.ModRevision, value.Version)) lease := leases[i] if lease != 0 { - descHTML = append(descHTML, fmt.Sprintf("lease: %d, ", lease)) + descHTML = append(descHTML, fmt.Sprintf(", lease: %d", lease)) } - descHTML = append(descHTML, fmt.Sprintf("mod: %d, ver: %d", value.ModRevision, value.Version)) + descHTML = append(descHTML, "") } descHTML = append(descHTML, "
      ") diff --git a/tests/robustness/model/describe_test.go b/tests/robustness/model/describe_test.go index 71e7b017cf02..3c50053176d0 100644 --- a/tests/robustness/model/describe_test.go +++ b/tests/robustness/model/describe_test.go @@ -18,6 +18,7 @@ import ( "errors" "testing" + "github.com/anishathalye/porcupine" "github.com/stretchr/testify/assert" "go.etcd.io/etcd/api/v3/mvccpb" @@ -170,8 +171,13 @@ func TestModelDescribe(t *testing.T) { expectDescribe: `range("key16".."key16b", limit=2) -> [], count: 0, rev: 16`, }, } + ops := []porcupine.Operation{} for _, tc := range tcs { - assert.Equal(t, tc.expectDescribe, NonDeterministicModel.DescribeOperation(tc.req, tc.resp)) + ops = append(ops, porcupine.Operation{Input: tc.req, Output: tc.resp}) + } + model := NonDeterministicModel(ModelKeys(ops)) + for _, tc := range tcs { + assert.Equal(t, tc.expectDescribe, model.DescribeOperation(tc.req, tc.resp)) } } diff --git a/tests/robustness/model/deterministic.go b/tests/robustness/model/deterministic.go index ea36333a2894..821e8a1d1d77 100644 --- a/tests/robustness/model/deterministic.go +++ b/tests/robustness/model/deterministic.go @@ -18,10 +18,9 @@ import ( "encoding/json" "fmt" "html" - "maps" - "reflect" "slices" "sort" + "unsafe" "github.com/anishathalye/porcupine" @@ -40,40 +39,46 @@ import ( // - Incomplete response when the request is correct, but the model doesn't have all // the data to provide a full response. For example, stale reads as the model doesn't store // the whole change history as real etcd does. -var DeterministicModel = porcupine.Model{ - Init: func() any { - return freshEtcdState() - }, - Step: func(st any, in any, out any) (bool, any) { - return st.(EtcdState).apply(in.(EtcdRequest), out.(EtcdResponse)) - }, - Equal: func(st1, st2 any) bool { - return st1.(EtcdState).Equal(st2.(EtcdState)) - }, - DescribeOperation: func(in, out any) string { - return fmt.Sprintf("%s -> %s", describeEtcdRequest(in.(EtcdRequest)), describeEtcdResponse(in.(EtcdRequest), MaybeEtcdResponse{EtcdResponse: out.(EtcdResponse)})) - }, - DescribeOperationMetadata: func(info any) string { - if info == nil { - return "" - } - return DescribeOperationMetadata(MaybeEtcdResponse{EtcdResponse: info.(EtcdResponse)}) - }, - DescribeState: func(st any) string { - data, err := json.MarshalIndent(st, "", " ") - if err != nil { - panic(err) - } - return "
      " + html.EscapeString(string(data)) + "
      " - }, +var DeterministicModel = func(keys []string) porcupine.Model { + return porcupine.Model{ + Init: func() any { + return freshEtcdState(keys) + }, + Step: func(st any, in any, out any) (bool, any) { + return st.(EtcdState).apply(in.(EtcdRequest), out.(EtcdResponse)) + }, + Equal: func(st1, st2 any) bool { + return st1.(EtcdState).Equal(st2.(EtcdState)) + }, + DescribeOperation: func(in, out any) string { + return fmt.Sprintf("%s -> %s", describeEtcdRequest(in.(EtcdRequest)), describeEtcdResponse(in.(EtcdRequest), MaybeEtcdResponse{EtcdResponse: out.(EtcdResponse)})) + }, + DescribeOperationMetadata: func(info any) string { + if info == nil { + return "" + } + return DescribeOperationMetadata(MaybeEtcdResponse{EtcdResponse: info.(EtcdResponse)}) + }, + DescribeState: func(st any) string { + data, err := json.MarshalIndent(st, "", " ") + if err != nil { + panic(err) + } + return "
      " + html.EscapeString(string(data)) + "
      " + }, + } } type EtcdState struct { - Revision int64 `json:",omitempty"` - CompactRevision int64 `json:",omitempty"` - KeyValues map[string]ValueRevision `json:",omitempty"` - KeyLeases map[string]int64 `json:",omitempty"` - Leases map[int64]EtcdLease `json:",omitempty"` + Revision int64 `json:",omitempty"` + CompactRevision int64 `json:",omitempty"` + // Slices below are positionally aligned. If KeyValue is nil on index i, + // it means the key `Keys[i]` doesn't exist. + Keys []string `json:",omitempty"` + KeyValues []*ValueRevision `json:",omitempty"` + KeyLeases []*int64 `json:",omitempty"` + // All leases sorted by LeaseID. + Leases []int64 `json:",omitempty"` } func (s EtcdState) Equal(other EtcdState) bool { @@ -83,13 +88,22 @@ func (s EtcdState) Equal(other EtcdState) bool { if s.CompactRevision != other.CompactRevision { return false } - if !reflect.DeepEqual(s.KeyValues, other.KeyValues) { - return false + if unsafe.SliceData(s.Keys) != unsafe.SliceData(other.Keys) { + panic("Can only compare states created from the same key slice") + } + return slices.EqualFunc(s.KeyValues, other.KeyValues, equalPtr) && + slices.EqualFunc(s.KeyLeases, other.KeyLeases, equalPtr) && + slices.Equal(s.Leases, other.Leases) +} + +func equalPtr[T comparable](a, b *T) bool { + if a == b { + return true } - if !reflect.DeepEqual(s.KeyLeases, other.KeyLeases) { + if a == nil || b == nil { return false } - return reflect.DeepEqual(s.Leases, other.Leases) + return *a == *b } func (s EtcdState) apply(request EtcdRequest, response EtcdResponse) (bool, EtcdState) { @@ -103,25 +117,22 @@ func (s EtcdState) DeepCopy() EtcdState { CompactRevision: s.CompactRevision, } - newState.KeyValues = maps.Clone(s.KeyValues) - newState.KeyLeases = maps.Clone(s.KeyLeases) - - newLeases := map[int64]EtcdLease{} - for key, val := range s.Leases { - newLeases[key] = val.DeepCopy() - } - newState.Leases = newLeases + newState.Keys = s.Keys + newState.KeyValues = slices.Clone(s.KeyValues) + newState.KeyLeases = slices.Clone(s.KeyLeases) + newState.Leases = slices.Clone(s.Leases) return newState } -func freshEtcdState() EtcdState { +func freshEtcdState(keys []string) EtcdState { return EtcdState{ Revision: 1, // Start from CompactRevision equal -1 as etcd allows client to compact revision 0 for some reason. CompactRevision: -1, - KeyValues: map[string]ValueRevision{}, - KeyLeases: map[string]int64{}, - Leases: map[int64]EtcdLease{}, + Keys: keys, + KeyValues: make([]*ValueRevision, len(keys)), + KeyLeases: make([]*int64, len(keys)), + Leases: make([]int64, 0), } } @@ -199,16 +210,14 @@ func (s EtcdState) stepTxn(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { leaseID = &op.Put.LeaseID } ver := int64(1) - valPtr, exists := newState.GetValue(op.Put.Key) - if exists && valPtr.Version > 0 { - ver = valPtr.Version + 1 + if val, exists := newState.GetValue(op.Put.Key); exists && val.Version > 0 { + ver = val.Version + 1 } - val := ValueRevision{ + newState.setValueLease(op.Put.Key, ValueRevision{ Value: op.Put.Value, ModRevision: newState.Revision + 1, Version: ver, - } - newState.setValueLease(op.Put.Key, val, leaseID) + }, leaseID) increaseRevision = true case DeleteOperation: if _, ok := newState.GetValue(op.Delete.Key); ok { @@ -232,30 +241,27 @@ func (s EtcdState) stepLeaseGrant(request EtcdRequest) (EtcdState, MaybeEtcdResp if request.LeaseGrant.LeaseID == 0 { return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Revision: newState.Revision, LeaseGrant: &LeaseGrantResponse{}}} } - lease := EtcdLease{ - LeaseID: request.LeaseGrant.LeaseID, - Keys: map[string]struct{}{}, - } - newState.Leases[request.LeaseGrant.LeaseID] = lease + newState.Leases = append(newState.Leases, request.LeaseGrant.LeaseID) + sort.Slice(newState.Leases, func(i, j int) bool { return newState.Leases[i] < newState.Leases[j] }) return newState, MaybeEtcdResponse{EtcdResponse: EtcdResponse{Revision: newState.Revision, LeaseGrant: &LeaseGrantResponse{}}} } func (s EtcdState) stepLeaseRevoke(request EtcdRequest) (EtcdState, MaybeEtcdResponse) { newState := s.DeepCopy() - // Delete the keys attached to the lease keyDeleted := false - for key := range newState.Leases[request.LeaseRevoke.LeaseID].Keys { - // same as delete. - if _, ok := newState.KeyValues[key]; ok { - if !keyDeleted { - keyDeleted = true - } - delete(newState.KeyValues, key) - delete(newState.KeyLeases, key) + for i, l := range newState.KeyLeases { + if l != nil && *l == request.LeaseRevoke.LeaseID { + keyDeleted = true + newState.KeyValues[i] = nil + newState.KeyLeases[i] = nil + } + } + for i, l := range newState.Leases { + if l == request.LeaseRevoke.LeaseID { + newState.Leases = append(newState.Leases[:i], newState.Leases[i+1:]...) + break } } - // delete the lease - delete(newState.Leases, request.LeaseRevoke.LeaseID) if keyDeleted { newState.Revision++ } @@ -284,9 +290,13 @@ func (s EtcdState) getRange(options RangeOptions) RangeResponse { } if options.End != "" { var count int64 - for k, v := range s.KeyValues { + for i, v := range s.KeyValues { + if v == nil { + continue + } + k := s.Keys[i] if k >= options.Start && k < options.End { - response.KVs = append(response.KVs, KeyValue{Key: k, ValueRevision: v}) + response.KVs = append(response.KVs, KeyValue{Key: k, ValueRevision: *v}) count++ } } @@ -298,11 +308,11 @@ func (s EtcdState) getRange(options RangeOptions) RangeResponse { } response.Count = count } else { - valPtr, ok := s.GetValue(options.Start) + value, ok := s.GetValue(options.Start) if ok { response.KVs = append(response.KVs, KeyValue{ Key: options.Start, - ValueRevision: *valPtr, + ValueRevision: *value, }) response.Count = 1 } @@ -315,52 +325,71 @@ func (s EtcdState) KeysValueLeases() (keys []string, values []ValueRevision, lea values = make([]ValueRevision, 0, len(s.KeyValues)) leases = make([]int64, 0, len(s.KeyLeases)) - for k, v := range s.KeyValues { - keys = append(keys, k) - values = append(values, v) - leases = append(leases, s.KeyLeases[k]) + for i, v := range s.KeyValues { + if v == nil { + continue + } + keys = append(keys, s.Keys[i]) + values = append(values, *v) + lease := int64(0) + if s.KeyLeases[i] != nil { + lease = *s.KeyLeases[i] + } + leases = append(leases, lease) } return keys, values, leases } func (s EtcdState) leases() []int64 { - return slices.Collect(maps.Keys(s.Leases)) + return slices.Clone(s.Leases) } func (s EtcdState) GetValue(key string) (*ValueRevision, bool) { - val, ok := s.KeyValues[key] - if !ok { - return nil, false + for i, k := range s.Keys { + if k == key { + return s.KeyValues[i], s.KeyValues[i] != nil + } } - return &val, true + return nil, false } -func (s EtcdState) setValueLease(key string, val ValueRevision, lease *int64) { - s.KeyValues[key] = val - if oldLeaseID, ok := s.KeyLeases[key]; ok { - delete(s.Leases[oldLeaseID].Keys, key) - } - if lease != nil { - s.KeyLeases[key] = *lease - s.Leases[*lease].Keys[key] = leased - } else { - delete(s.KeyLeases, key) +func (s EtcdState) leaseExists(lease int64) bool { + for _, l := range s.Leases { + if l == lease { + return true + } } + return false } -func (s EtcdState) leaseExists(lease int64) bool { - _, ok := s.Leases[lease] - return ok +func (s EtcdState) setValueLease(key string, val ValueRevision, lease *int64) { + for i, k := range s.Keys { + if k == key { + s.KeyValues[i] = &val + s.KeyLeases[i] = lease + return + } + } + panic(fmt.Sprintf("couldn't find key %s in EtcdState (%v) when calling setValue", key, s.Keys)) } func (s EtcdState) deleteKey(key string) { - delete(s.KeyValues, key) - if oldLeaseID, ok := s.KeyLeases[key]; ok { - delete(s.Leases[oldLeaseID].Keys, key) + for i, k := range s.Keys { + if k == key { + s.KeyValues[i] = nil + s.KeyLeases[i] = nil + return + } } - delete(s.KeyLeases, key) + panic(fmt.Sprintf("couldn't find key %s in EtcdState (%v) when calling setValue", key, s.Keys)) } func (s EtcdState) leaseKeys(leaseID int64) []string { - return slices.Sorted(maps.Keys(s.Leases[leaseID].Keys)) + keys := []string{} + for i, l := range s.KeyLeases { + if l != nil && *l == leaseID { + keys = append(keys, s.Keys[i]) + } + } + return keys } diff --git a/tests/robustness/model/deterministic_test.go b/tests/robustness/model/deterministic_test.go index 3e3c50e458df..f5737e8859d0 100644 --- a/tests/robustness/model/deterministic_test.go +++ b/tests/robustness/model/deterministic_test.go @@ -15,13 +15,11 @@ package model import ( - "encoding/json" "math/rand" "slices" "testing" "github.com/google/go-cmp/cmp" - "github.com/stretchr/testify/require" "go.etcd.io/etcd/api/v3/mvccpb" ) @@ -30,15 +28,15 @@ func TestModelDeterministic(t *testing.T) { for _, tc := range commonTestScenarios { tc := tc t.Run(tc.name, func(t *testing.T) { - state := DeterministicModel.Init() + keys := keysFromTestOperations(tc.operations) + model := DeterministicModel(keys) + state := model.Init() for _, op := range tc.operations { - ok, newState := DeterministicModel.Step(state, op.req, op.resp.EtcdResponse) + ok, newState := model.Step(state, op.req, op.resp.EtcdResponse) if op.expectFailure == ok { t.Logf("state: %v", state) - t.Errorf("Unexpected operation result, expect: %v, got: %v, operation: %s", !op.expectFailure, ok, DeterministicModel.DescribeOperation(op.req, op.resp.EtcdResponse)) - var loadedState EtcdState - err := json.Unmarshal([]byte(state.(string)), &loadedState) - require.NoErrorf(t, err, "Failed to load state") + t.Errorf("Unexpected operation result, expect: %v, got: %v, operation: %s", !op.expectFailure, ok, model.DescribeOperation(op.req, op.resp.EtcdResponse)) + loadedState := state.(EtcdState) _, resp := loadedState.Step(op.req) t.Errorf("Response diff: %s", cmp.Diff(op.resp, resp)) break @@ -53,6 +51,7 @@ func TestModelDeterministic(t *testing.T) { } func TestEtcdStateEqual(t *testing.T) { + keys := []string{"key"} testCases := []struct { name string s1 EtcdState @@ -61,20 +60,20 @@ func TestEtcdStateEqual(t *testing.T) { }{ { name: "Fresh states should be equal", - s1: freshEtcdState(), - s2: freshEtcdState(), + s1: freshEtcdState(keys), + s2: freshEtcdState(keys), equal: true, }, { name: "States from identical history should be equal", s1: func() EtcdState { - s := freshEtcdState() + s := freshEtcdState(keys) s, _ = s.Step(putRequest("key", "1")) s, _ = s.Step(putRequest("key", "2")) return s }(), s2: func() EtcdState { - s := freshEtcdState() + s := freshEtcdState(keys) s, _ = s.Step(putRequest("key", "1")) s, _ = s.Step(putRequest("key", "2")) return s @@ -84,13 +83,13 @@ func TestEtcdStateEqual(t *testing.T) { { name: "States from different history should not be equal", s1: func() EtcdState { - s := freshEtcdState() + s := freshEtcdState(keys) s, _ = s.Step(putRequest("key", "1")) s, _ = s.Step(putRequest("key", "2")) return s }(), s2: func() EtcdState { - s := freshEtcdState() + s := freshEtcdState(keys) s, _ = s.Step(putRequest("key", "2")) s, _ = s.Step(putRequest("key", "1")) return s @@ -100,14 +99,14 @@ func TestEtcdStateEqual(t *testing.T) { { name: "Empty states with higher revision should be equal", s1: func() EtcdState { - s := freshEtcdState() + s := freshEtcdState(keys) s, _ = s.Step(putRequest("key", "1")) s, _ = s.Step(putRequest("key", "2")) s, _ = s.Step(deleteRequest("key")) return s }(), s2: func() EtcdState { - s := freshEtcdState() + s := freshEtcdState(keys) s, _ = s.Step(putRequest("key", "2")) s, _ = s.Step(putRequest("key", "1")) s, _ = s.Step(deleteRequest("key")) @@ -117,9 +116,9 @@ func TestEtcdStateEqual(t *testing.T) { }, { name: "Grant and Revoke empty lease should be equal to fresh state", - s1: freshEtcdState(), + s1: freshEtcdState(keys), s2: func() EtcdState { - s := freshEtcdState() + s := freshEtcdState(keys) s, _ = s.Step(leaseGrantRequest(1)) s, _ = s.Step(leaseRevokeRequest(1)) return s @@ -129,14 +128,14 @@ func TestEtcdStateEqual(t *testing.T) { { name: "Delete via Revoke vs Delete directly should be equal", s1: func() EtcdState { - s := freshEtcdState() + s := freshEtcdState(keys) s, _ = s.Step(leaseGrantRequest(1)) s, _ = s.Step(putWithLeaseRequest("key", "val", 1)) s, _ = s.Step(leaseRevokeRequest(1)) return s }(), s2: func() EtcdState { - s := freshEtcdState() + s := freshEtcdState(keys) s, _ = s.Step(putRequest("key", "val")) s, _ = s.Step(deleteRequest("key")) return s @@ -146,12 +145,12 @@ func TestEtcdStateEqual(t *testing.T) { { name: "Put via Txn vs Put directly should be equal", s1: func() EtcdState { - s := freshEtcdState() + s := freshEtcdState(keys) s, _ = s.Step(compareRevisionAndPutRequest("key", 0, "val")) return s }(), s2: func() EtcdState { - s := freshEtcdState() + s := freshEtcdState(keys) s, _ = s.Step(putRequest("key", "val")) return s }(), @@ -182,15 +181,16 @@ func TestEtcdStateEqualCommutativeRequests(t *testing.T) { compactRequest(1), compactRequest(2), } + keys := []string{"key1", "key2"} - baseState := applyRequests(commutativeRequests) + baseState := applyRequests(keys, commutativeRequests) for i := 0; i < 10_000; i++ { perm := slices.Clone(commutativeRequests) rand.Shuffle(len(perm), func(i, j int) { perm[i], perm[j] = perm[j], perm[i] }) - s2 := applyRequests(perm) + s2 := applyRequests(keys, perm) if !baseState.Equal(s2) { t.Errorf("Expected states to be equal after random reordering, but they are not") @@ -198,14 +198,22 @@ func TestEtcdStateEqualCommutativeRequests(t *testing.T) { } } -func applyRequests(reqs []EtcdRequest) EtcdState { - state := freshEtcdState() +func applyRequests(keys []string, reqs []EtcdRequest) EtcdState { + state := freshEtcdState(keys) for _, req := range reqs { state, _ = state.Step(req) } return state } +func keysFromTestOperations(ops []testOperation) []string { + requests := make([]EtcdRequest, 0, len(ops)) + for _, op := range ops { + requests = append(requests, op.req) + } + return keysFromRequests(requests) +} + type modelTestCase struct { name string operations []testOperation diff --git a/tests/robustness/model/non_deterministic.go b/tests/robustness/model/non_deterministic.go index 65706ecd9e85..3fbdca7b3995 100644 --- a/tests/robustness/model/non_deterministic.go +++ b/tests/robustness/model/non_deterministic.go @@ -17,7 +17,6 @@ package model import ( "cmp" "fmt" - "reflect" "slices" "strings" @@ -28,47 +27,44 @@ import ( // An unknown/error response doesn't inform whether the request was persisted or not, so the model // considers both cases. This is represented as multiple, equally possible deterministic states. // Failed requests fork the possible states, while successful requests merge and filter them. -var NonDeterministicModel = porcupine.Model{ - Init: func() any { - return nonDeterministicState{freshEtcdState()} - }, - Step: func(st any, in any, out any) (bool, any) { - return st.(nonDeterministicState).apply(in.(EtcdRequest), out.(MaybeEtcdResponse)) - }, - Equal: func(st1, st2 any) bool { - return st1.(nonDeterministicState).Equal(st2.(nonDeterministicState)) - }, - DescribeOperation: func(in, out any) string { - return fmt.Sprintf("%s -> %s", describeEtcdRequest(in.(EtcdRequest)), describeEtcdResponse(in.(EtcdRequest), out.(MaybeEtcdResponse))) - }, - DescribeOperationMetadata: func(info any) string { - if info == nil { - return "" - } - return DescribeOperationMetadata(info.(MaybeEtcdResponse)) - }, - DescribeState: func(st any) string { - etcdStates := st.(nonDeterministicState) - desc := make([]string, 0, len(etcdStates)) - - slices.SortFunc(etcdStates, func(i, j EtcdState) int { - if c := cmp.Compare(i.Revision, j.Revision); c != 0 { - return c +var NonDeterministicModel = func(keys []string) porcupine.Model { + return porcupine.Model{ + Init: func() any { + return nonDeterministicState{freshEtcdState(keys)} + }, + Step: func(st any, in any, out any) (bool, any) { + return st.(nonDeterministicState).apply(in.(EtcdRequest), out.(MaybeEtcdResponse)) + }, + Equal: func(st1, st2 any) bool { + return st1.(nonDeterministicState).Equal(st2.(nonDeterministicState)) + }, + DescribeOperation: func(in, out any) string { + return fmt.Sprintf("%s -> %s", describeEtcdRequest(in.(EtcdRequest)), describeEtcdResponse(in.(EtcdRequest), out.(MaybeEtcdResponse))) + }, + DescribeOperationMetadata: func(info any) string { + if info == nil { + return "" } - return cmp.Compare(i.CompactRevision, j.CompactRevision) - }) - - for i, s := range etcdStates { - // Describe just 3 first states before truncating - if i >= 3 { - desc = append(desc, "...truncated...") - break + return DescribeOperationMetadata(info.(MaybeEtcdResponse)) + }, + DescribeState: func(st any) string { + etcdStates := st.(nonDeterministicState) + desc := make([]string, 0, len(etcdStates)) + + slices.SortFunc(etcdStates, compareStates) + + for i, s := range etcdStates { + // Describe just 3 first states before truncating + if i >= 3 { + desc = append(desc, "...truncated...") + break + } + desc = append(desc, describeEtcdState(s)) } - desc = append(desc, describeEtcdState(s)) - } - return strings.Join(desc, "\n") - }, + return strings.Join(desc, "\n") + }, + } } type nonDeterministicState []EtcdState @@ -77,24 +73,78 @@ func (states nonDeterministicState) Equal(other nonDeterministicState) bool { if len(states) != len(other) { return false } + slices.SortFunc(states, compareStates) + slices.SortFunc(other, compareStates) - otherMatched := make([]bool, len(other)) - for _, sItem := range states { - foundMatchInOther := false - for j, otherItem := range other { - if !otherMatched[j] && sItem.Equal(otherItem) { - otherMatched[j] = true - foundMatchInOther = true - break - } - } - if !foundMatchInOther { + for i := range states { + if !states[i].Equal(other[i]) { return false } } return true } +func compareStates(first, second EtcdState) int { + if c := cmp.Compare(first.Revision, second.Revision); c != 0 { + return c + } + if c := cmp.Compare(first.CompactRevision, second.CompactRevision); c != 0 { + return c + } + if c := cmp.Compare(len(first.KeyValues), len(second.KeyValues)); c != 0 { + return c + } + for i := range first.KeyValues { + if (first.KeyValues[i] == nil) != (second.KeyValues[i] == nil) { + if first.KeyValues[i] == nil { + return -1 + } + return 1 + } + if first.KeyValues[i] == nil { + continue + } + if c := cmp.Compare(first.KeyValues[i].ModRevision, second.KeyValues[i].ModRevision); c != 0 { + return c + } + if c := cmp.Compare(first.KeyValues[i].Version, second.KeyValues[i].Version); c != 0 { + return c + } + if c := cmp.Compare(first.KeyValues[i].Value.Value, second.KeyValues[i].Value.Value); c != 0 { + return c + } + if c := cmp.Compare(first.KeyValues[i].Value.Hash, second.KeyValues[i].Value.Hash); c != 0 { + return c + } + } + if c := cmp.Compare(len(first.KeyLeases), len(second.KeyLeases)); c != 0 { + return c + } + for i := range first.KeyLeases { + if (first.KeyLeases[i] == nil) != (second.KeyLeases[i] == nil) { + if first.KeyLeases[i] == nil { + return -1 + } + return 1 + } + if first.KeyLeases[i] == nil { + continue + } + if c := cmp.Compare(*first.KeyLeases[i], *second.KeyLeases[i]); c != 0 { + return c + } + } + if c := cmp.Compare(len(first.Leases), len(second.Leases)); c != 0 { + return c + } + for i := range first.Leases { + if c := cmp.Compare(first.Leases[i], second.Leases[i]); c != 0 { + return c + } + } + return 0 +} + func (states nonDeterministicState) apply(request EtcdRequest, response MaybeEtcdResponse) (bool, nonDeterministicState) { var newStates nonDeterministicState switch { @@ -116,7 +166,7 @@ func (states nonDeterministicState) applyFailedRequest(request EtcdRequest) nonD for _, s := range states { newStates = append(newStates, s) newState, _ := s.Step(request) - if !reflect.DeepEqual(newState, s) { + if !newState.Equal(s) { newStates = append(newStates, newState) } } diff --git a/tests/robustness/model/non_deterministic_test.go b/tests/robustness/model/non_deterministic_test.go index c53c013265bc..1960f75e9c7c 100644 --- a/tests/robustness/model/non_deterministic_test.go +++ b/tests/robustness/model/non_deterministic_test.go @@ -15,13 +15,11 @@ package model import ( - "encoding/json" "errors" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" "go.etcd.io/etcd/api/v3/mvccpb" ) @@ -328,15 +326,15 @@ func TestModelNonDeterministic(t *testing.T) { for _, tc := range nonDeterministicTestScenarios { tc := tc t.Run(tc.name, func(t *testing.T) { - state := NonDeterministicModel.Init() + keys := keysFromTestOperations(tc.operations) + model := NonDeterministicModel(keys) + state := model.Init() for _, op := range tc.operations { - ok, newState := NonDeterministicModel.Step(state, op.req, op.resp) + ok, newState := model.Step(state, op.req, op.resp) if ok != !op.expectFailure { t.Logf("state: %v", state) - t.Errorf("Unexpected operation result, expect: %v, got: %v, operation: %s", !op.expectFailure, ok, NonDeterministicModel.DescribeOperation(op.req, op.resp)) - var loadedState nonDeterministicState - err := json.Unmarshal([]byte(state.(string)), &loadedState) - require.NoErrorf(t, err, "Failed to load state") + t.Errorf("Unexpected operation result, expect: %v, got: %v, operation: %s", !op.expectFailure, ok, model.DescribeOperation(op.req, op.resp)) + loadedState := state.(nonDeterministicState) for i, s := range loadedState { _, resp := s.Step(op.req) t.Errorf("For state %d, response diff: %s", i, cmp.Diff(op.resp, resp)) diff --git a/tests/robustness/model/replay.go b/tests/robustness/model/replay.go index 8edd121b6fab..a9f3653b1db5 100644 --- a/tests/robustness/model/replay.go +++ b/tests/robustness/model/replay.go @@ -16,6 +16,8 @@ package model import ( "fmt" + "maps" + "slices" "strings" "github.com/anishathalye/porcupine" @@ -30,7 +32,8 @@ func NewReplayFromOperations(ops []porcupine.Operation) *EtcdReplay { } func NewReplay(persistedRequests []EtcdRequest) *EtcdReplay { - state := freshEtcdState() + keys := keysFromRequests(persistedRequests) + state := freshEtcdState(keys) // Padding for index 0 and 1, so the index matches the revision. revisionToEtcdState := []EtcdState{state, state} var events []PersistedEvent @@ -165,3 +168,41 @@ type WatchRequest struct { WithProgressNotify bool WithPrevKV bool } + +func ModelKeys(operations []porcupine.Operation) []string { + requests := []EtcdRequest{} + for _, op := range operations { + requests = append(requests, op.Input.(EtcdRequest)) + } + return keysFromRequests(requests) +} + +func keysFromRequests(requests []EtcdRequest) []string { + keysMap := map[string]bool{} + for _, request := range requests { + switch request.Type { + case Range: + keysMap[request.Range.Start] = true + if request.Range.End != "" { + keysMap[request.Range.End] = true + } + case Txn: + for _, op := range slices.Concat(request.Txn.OperationsOnSuccess, request.Txn.OperationsOnFailure) { + switch op.Type { + case RangeOperation: + keysMap[op.Range.Start] = true + if op.Range.End != "" { + keysMap[op.Range.End] = true + } + case PutOperation: + keysMap[op.Put.Key] = true + case DeleteOperation: + keysMap[op.Delete.Key] = true + } + } + } + } + keys := slices.Collect(maps.Keys(keysMap)) + slices.Sort(keys) + return keys +} diff --git a/tests/robustness/model/types.go b/tests/robustness/model/types.go index e52e40568086..74eaa71a14d1 100644 --- a/tests/robustness/model/types.go +++ b/tests/robustness/model/types.go @@ -18,7 +18,6 @@ import ( "encoding/json" "errors" "hash/fnv" - "maps" "reflect" "slices" @@ -221,20 +220,6 @@ type KeyValue struct { ValueRevision } -var leased = struct{}{} - -type EtcdLease struct { - LeaseID int64 - Keys map[string]struct{} -} - -func (el EtcdLease) DeepCopy() EtcdLease { - return EtcdLease{ - LeaseID: el.LeaseID, - Keys: maps.Clone(el.Keys), - } -} - type ValueRevision struct { Value ValueOrHash `json:",omitempty"` ModRevision int64 `json:",omitempty"` diff --git a/tests/robustness/validate/operations.go b/tests/robustness/validate/operations.go index 900127216bbd..419e2f3ef56f 100644 --- a/tests/robustness/validate/operations.go +++ b/tests/robustness/validate/operations.go @@ -30,13 +30,15 @@ var ( errFutureRevRespRequested = errors.New("request about a future rev with response") ) -func validateLinearizableOperationsAndVisualize(lg *zap.Logger, operations []porcupine.Operation, timeout time.Duration) LinearizationResult { +func validateLinearizableOperationsAndVisualize(lg *zap.Logger, keys []string, operations []porcupine.Operation, timeout time.Duration) LinearizationResult { lg.Info("Validating linearizable operations", zap.Duration("timeout", timeout)) start := time.Now() - check, info := porcupine.CheckOperationsVerbose(model.NonDeterministicModel, operations, timeout) + + model := model.NonDeterministicModel(keys) + check, info := porcupine.CheckOperationsVerbose(model, operations, timeout) result := LinearizationResult{ Info: info, - Model: model.NonDeterministicModel, + Model: model, } switch check { case porcupine.Ok: diff --git a/tests/robustness/validate/operations_test.go b/tests/robustness/validate/operations_test.go index 9033e9a616c0..ab7fce592777 100644 --- a/tests/robustness/validate/operations_test.go +++ b/tests/robustness/validate/operations_test.go @@ -317,9 +317,10 @@ func BenchmarkValidateLinearizableOperations(b *testing.B) { b.Run("BacktrackingHeavy", func(b *testing.B) { history := backtrackingHeavy(b) shuffles := shuffleHistory(history, b.N) + keys := model.ModelKeys(history) b.ResetTimer() for i := 0; i < len(shuffles); i++ { - validateLinearizableOperationsAndVisualize(lg, shuffles[i], time.Second) + validateLinearizableOperationsAndVisualize(lg, keys, shuffles[i], time.Second) } }) } @@ -449,8 +450,9 @@ func shuffleHistory(history []porcupine.Operation, shuffleCount int) [][]porcupi } func validateShuffles(b *testing.B, lg *zap.Logger, shuffles [][]porcupine.Operation, duration time.Duration) { + keys := model.ModelKeys(shuffles[0]) for i := 0; i < len(shuffles); i++ { - result := validateLinearizableOperationsAndVisualize(lg, shuffles[i], duration) + result := validateLinearizableOperationsAndVisualize(lg, keys, shuffles[i], duration) if err := result.Error(); err != nil { b.Fatalf("Not linearizable: %v", err) } diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index 775eb0d62c52..0a8b370c2abb 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -41,8 +41,8 @@ func ValidateAndReturnVisualize(lg *zap.Logger, cfg Config, reports []report.Cli if len(persistedRequests) != 0 { linearizableOperations = patchLinearizableOperations(linearizableOperations, reports, persistedRequests) } - - result.Linearization = validateLinearizableOperationsAndVisualize(lg, linearizableOperations, timeout) + keys := model.ModelKeys(linearizableOperations) + result.Linearization = validateLinearizableOperationsAndVisualize(lg, keys, linearizableOperations, timeout) result.Linearization.AddToVisualization(operationsForVisualization) // Skip other validations if model is not linearizable, as they are expected to fail too and obfuscate the logs. if result.Linearization.Error() != nil { From e5891bd94677f75ccfc84e73e59404be206106ee Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 6 Apr 2026 17:08:45 +0200 Subject: [PATCH 0908/1068] Move current read index tests to read package Signed-off-by: Marek Siarkowicz --- server/etcdserver/read/read_test.go | 251 ++++++++++++++++++++++++++++ server/etcdserver/server_test.go | 223 ------------------------ 2 files changed, 251 insertions(+), 223 deletions(-) create mode 100644 server/etcdserver/read/read_test.go diff --git a/server/etcdserver/read/read_test.go b/server/etcdserver/read/read_test.go new file mode 100644 index 000000000000..cc88c34cd491 --- /dev/null +++ b/server/etcdserver/read/read_test.go @@ -0,0 +1,251 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package read + +import ( + "context" + "encoding/binary" + "sync" + "testing" + "time" + + "github.com/stretchr/testify/require" + "go.uber.org/zap" + "go.uber.org/zap/zaptest" + + "go.etcd.io/etcd/server/v3/etcdserver/errors" + "go.etcd.io/raft/v3" +) + +func TestRequestCurrentIndex_LeaderChangedRace(t *testing.T) { + s, mockRaft := setupTestRequestCurrentIndex(t) + r := NewRead(s, mockRaft) + + for i := 0; i < 100; i++ { + mockRaft.readStateC <- raft.ReadState{Index: 100} + s.leaderChanged <- struct{}{} + + index, err := r.RequestCurrentIndex(s.LeaderChanged()) + require.ErrorIs(t, err, errors.ErrLeaderChanged) + require.Equal(t, uint64(0), index) + + select { + case <-mockRaft.readStateC: + default: + } + select { + case <-s.leaderChanged: + default: + } + } +} + +func TestRequestCurrentIndex_UniqueRequestID(t *testing.T) { + s, mockRaft := setupTestRequestCurrentIndex(t) + r := NewRead(s, mockRaft) + + wg := sync.WaitGroup{} + wg.Add(1) + go func() { + defer wg.Done() + r.RequestCurrentIndex(s.LeaderChanged()) + }() + + require.Eventually(t, func() bool { + return len(mockRaft.getRequests()) >= 2 + }, time.Second, 100*time.Millisecond) + + s.leaderChanged <- struct{}{} + wg.Wait() + + seen := make(map[uint64]bool) + for _, id := range mockRaft.getRequests() { + require.Falsef(t, seen[id], "Found duplicate request ID: %d", id) + seen[id] = true + } +} + +func TestRequestCurrentIndex_Success(t *testing.T) { + s, mockRaft := setupTestRequestCurrentIndex(t) + r := NewRead(s, mockRaft) + + wg := sync.WaitGroup{} + wg.Add(1) + var index uint64 + var err error + go func() { + defer wg.Done() + index, err = r.RequestCurrentIndex(s.LeaderChanged()) + }() + + require.Eventually(t, func() bool { + return len(mockRaft.getRequests()) == 1 + }, time.Second, 100*time.Millisecond) + + reqID := mockRaft.getRequests()[0] + reqIDBytes := make([]byte, 8) + binary.BigEndian.PutUint64(reqIDBytes, reqID) + + mockRaft.readStateC <- raft.ReadState{ + Index: 100, + RequestCtx: reqIDBytes, + } + + wg.Wait() + + require.NoError(t, err) + require.Equal(t, uint64(100), index) + require.Lenf(t, mockRaft.getRequests(), 1, "Expected exactly 1 ReadIndex request") +} + +func TestRequestCurrentIndex_WrongRequestID(t *testing.T) { + s, mockRaft := setupTestRequestCurrentIndex(t) + r := NewRead(s, mockRaft) + + wg := sync.WaitGroup{} + wg.Add(1) + var index uint64 + var err error + go func() { + defer wg.Done() + index, err = r.RequestCurrentIndex(s.LeaderChanged()) + }() + + require.Eventually(t, func() bool { + return len(mockRaft.getRequests()) == 1 + }, time.Second, 10*time.Millisecond) + + wrongReqIDBytes := make([]byte, 8) + binary.BigEndian.PutUint64(wrongReqIDBytes, 99999) + + mockRaft.readStateC <- raft.ReadState{ + Index: 100, + RequestCtx: wrongReqIDBytes, + } + + time.Sleep(100 * time.Millisecond) + requests := mockRaft.getRequests() + require.Lenf(t, requests, 1, "Expected exactly 1 ReadIndex request") + + reqID := requests[0] + reqIDBytes := make([]byte, 8) + binary.BigEndian.PutUint64(reqIDBytes, reqID) + + mockRaft.readStateC <- raft.ReadState{ + Index: 99, + RequestCtx: reqIDBytes, + } + wg.Wait() + + require.NoError(t, err) + require.Equal(t, uint64(99), index) + require.Lenf(t, mockRaft.getRequests(), 1, "Expected exactly 1 ReadIndex request") +} + +func TestRequestCurrentIndex_DelayedResponse(t *testing.T) { + s, mockRaft := setupTestRequestCurrentIndex(t) + r := NewRead(s, mockRaft) + + wg := sync.WaitGroup{} + wg.Add(1) + var index uint64 + var err error + go func() { + defer wg.Done() + index, err = r.RequestCurrentIndex(s.LeaderChanged()) + }() + + require.Eventually(t, func() bool { + return len(mockRaft.getRequests()) >= 3 + }, 2*time.Second, 100*time.Millisecond) + requests := mockRaft.getRequests() + + reqID := requests[1] + reqIDBytes := make([]byte, 8) + binary.BigEndian.PutUint64(reqIDBytes, reqID) + + select { + case mockRaft.readStateC <- raft.ReadState{ + Index: 100, + RequestCtx: reqIDBytes, + }: + case <-time.After(time.Second): + t.Fatal("timed out sending read state") + } + wg.Wait() + + require.NoError(t, err) + require.Equal(t, uint64(100), index) +} + +func setupTestRequestCurrentIndex(t *testing.T) (*mockServer, *testRaftNode) { + s := &mockServer{ + leaderChanged: make(chan struct{}, 1), + stopping: make(chan struct{}, 1), + done: make(chan struct{}, 1), + logger: zaptest.NewLogger(t), + timeout: 5 * time.Second, + firstCommit: make(chan struct{}, 1), + } + mockRaft := &testRaftNode{ + readStateC: make(chan raft.ReadState, 1), + } + return s, mockRaft +} + +type testRaftNode struct { + readStateC chan raft.ReadState + mu sync.Mutex + readIndexRequests []uint64 +} + +func (m *testRaftNode) ReadState() <-chan raft.ReadState { return m.readStateC } +func (m *testRaftNode) ReadIndex(ctx context.Context, rctx []byte) error { + m.mu.Lock() + defer m.mu.Unlock() + if len(rctx) == 8 { + m.readIndexRequests = append(m.readIndexRequests, binary.BigEndian.Uint64(rctx)) + } + return nil +} + +func (m *testRaftNode) getRequests() []uint64 { + m.mu.Lock() + defer m.mu.Unlock() + res := make([]uint64, len(m.readIndexRequests)) + copy(res, m.readIndexRequests) + return res +} + +type mockServer struct { + leaderChanged chan struct{} + stopping chan struct{} + done chan struct{} + logger *zap.Logger + appliedIndex uint64 + nextRequestID uint64 + timeout time.Duration + firstCommit chan struct{} +} + +func (s *mockServer) LeaderChanged() <-chan struct{} { return s.leaderChanged } +func (s *mockServer) Stopping() <-chan struct{} { return s.stopping } +func (s *mockServer) Logger() *zap.Logger { return s.logger } +func (s *mockServer) AppliedIndex() uint64 { return s.appliedIndex } +func (s *mockServer) ApplyWait(deadline uint64) <-chan struct{} { return nil } +func (s *mockServer) NextRequestID() uint64 { s.nextRequestID++; return s.nextRequestID } +func (s *mockServer) RequestTimeout() time.Duration { return s.timeout } +func (s *mockServer) FirstCommitInTermNotify() <-chan struct{} { return s.firstCommit } +func (s *mockServer) Done() <-chan struct{} { return s.done } diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index 7545dacba562..56523bee421a 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -16,7 +16,6 @@ package etcdserver import ( "context" - "encoding/binary" "encoding/json" errorspkg "errors" "fmt" @@ -56,7 +55,6 @@ import ( apply2 "go.etcd.io/etcd/server/v3/etcdserver/apply" "go.etcd.io/etcd/server/v3/etcdserver/cindex" "go.etcd.io/etcd/server/v3/etcdserver/errors" - "go.etcd.io/etcd/server/v3/etcdserver/read" "go.etcd.io/etcd/server/v3/features" "go.etcd.io/etcd/server/v3/lease" "go.etcd.io/etcd/server/v3/mock/mockstorage" @@ -1576,224 +1574,3 @@ func TestAddFeatureGateMetrics(t *testing.T) { err := ptestutil.GatherAndCompare(prometheus.DefaultGatherer, strings.NewReader(expected), "etcd_server_feature_enabled") require.NoErrorf(t, err, "unexpected metric collection result: \n%s", err) } - -func TestRequestCurrentIndex_LeaderChangedRace(t *testing.T) { - s, mockRaft := setupTestRequestCurrentIndex(t) - r := read.NewRead(s, mockRaft) - - for i := 0; i < 100; i++ { - mockRaft.readStateC <- raft.ReadState{Index: 100} - s.leaderChanged <- struct{}{} - - index, err := r.RequestCurrentIndex(s.LeaderChanged()) - require.ErrorIs(t, err, errors.ErrLeaderChanged) - require.Equal(t, uint64(0), index) - - select { - case <-mockRaft.readStateC: - default: - } - select { - case <-s.leaderChanged: - default: - } - } -} - -func TestRequestCurrentIndex_UniqueRequestID(t *testing.T) { - s, mockRaft := setupTestRequestCurrentIndex(t) - r := read.NewRead(s, mockRaft) - - wg := sync.WaitGroup{} - wg.Add(1) - go func() { - defer wg.Done() - r.RequestCurrentIndex(s.LeaderChanged()) - }() - - require.Eventually(t, func() bool { - return len(mockRaft.getRequests()) >= 2 - }, time.Second, 100*time.Millisecond) - - s.leaderChanged <- struct{}{} - wg.Wait() - - seen := make(map[uint64]bool) - for _, id := range mockRaft.getRequests() { - require.Falsef(t, seen[id], "Found duplicate request ID: %d", id) - seen[id] = true - } -} - -func TestRequestCurrentIndex_Success(t *testing.T) { - s, mockRaft := setupTestRequestCurrentIndex(t) - r := read.NewRead(s, mockRaft) - - wg := sync.WaitGroup{} - wg.Add(1) - var index uint64 - var err error - go func() { - defer wg.Done() - index, err = r.RequestCurrentIndex(s.LeaderChanged()) - }() - - require.Eventually(t, func() bool { - return len(mockRaft.getRequests()) == 1 - }, time.Second, 100*time.Millisecond) - - reqID := mockRaft.getRequests()[0] - reqIDBytes := make([]byte, 8) - binary.BigEndian.PutUint64(reqIDBytes, reqID) - - mockRaft.readStateC <- raft.ReadState{ - Index: 100, - RequestCtx: reqIDBytes, - } - - wg.Wait() - - require.NoError(t, err) - require.Equal(t, uint64(100), index) - require.Lenf(t, mockRaft.getRequests(), 1, "Expected exactly 1 ReadIndex request") -} - -func TestRequestCurrentIndex_WrongRequestID(t *testing.T) { - s, mockRaft := setupTestRequestCurrentIndex(t) - r := read.NewRead(s, mockRaft) - - wg := sync.WaitGroup{} - wg.Add(1) - var index uint64 - var err error - go func() { - defer wg.Done() - index, err = r.RequestCurrentIndex(s.LeaderChanged()) - }() - - require.Eventually(t, func() bool { - return len(mockRaft.getRequests()) == 1 - }, time.Second, 10*time.Millisecond) - - wrongReqIDBytes := make([]byte, 8) - binary.BigEndian.PutUint64(wrongReqIDBytes, 99999) - - mockRaft.readStateC <- raft.ReadState{ - Index: 100, - RequestCtx: wrongReqIDBytes, - } - - time.Sleep(100 * time.Millisecond) - requests := mockRaft.getRequests() - require.Lenf(t, requests, 1, "Expected exactly 1 ReadIndex request") - - reqID := requests[0] - reqIDBytes := make([]byte, 8) - binary.BigEndian.PutUint64(reqIDBytes, reqID) - - mockRaft.readStateC <- raft.ReadState{ - Index: 99, - RequestCtx: reqIDBytes, - } - wg.Wait() - - require.NoError(t, err) - require.Equal(t, uint64(99), index) - require.Lenf(t, mockRaft.getRequests(), 1, "Expected exactly 1 ReadIndex request") -} - -func TestRequestCurrentIndex_DelayedResponse(t *testing.T) { - s, mockRaft := setupTestRequestCurrentIndex(t) - r := read.NewRead(s, mockRaft) - - wg := sync.WaitGroup{} - wg.Add(1) - var index uint64 - var err error - go func() { - defer wg.Done() - index, err = r.RequestCurrentIndex(s.LeaderChanged()) - }() - - require.Eventually(t, func() bool { - return len(mockRaft.getRequests()) >= 3 - }, 2*time.Second, 100*time.Millisecond) - requests := mockRaft.getRequests() - - reqID := requests[1] - reqIDBytes := make([]byte, 8) - binary.BigEndian.PutUint64(reqIDBytes, reqID) - - select { - case mockRaft.readStateC <- raft.ReadState{ - Index: 100, - RequestCtx: reqIDBytes, - }: - case <-time.After(time.Second): - t.Fatal("timed out sending read state") - } - wg.Wait() - - require.NoError(t, err) - require.Equal(t, uint64(100), index) -} - -func setupTestRequestCurrentIndex(t *testing.T) (*mockServer, *testRaftNode) { - s := &mockServer{ - leaderChanged: make(chan struct{}, 1), - stopping: make(chan struct{}, 1), - done: make(chan struct{}, 1), - logger: zaptest.NewLogger(t), - timeout: 5 * time.Second, - firstCommit: make(chan struct{}, 1), - } - mockRaft := &testRaftNode{ - readStateC: make(chan raft.ReadState, 1), - } - return s, mockRaft -} - -type testRaftNode struct { - readStateC chan raft.ReadState - mu sync.Mutex - readIndexRequests []uint64 -} - -func (m *testRaftNode) ReadState() <-chan raft.ReadState { return m.readStateC } -func (m *testRaftNode) ReadIndex(ctx context.Context, rctx []byte) error { - m.mu.Lock() - defer m.mu.Unlock() - if len(rctx) == 8 { - m.readIndexRequests = append(m.readIndexRequests, binary.BigEndian.Uint64(rctx)) - } - return nil -} - -func (m *testRaftNode) getRequests() []uint64 { - m.mu.Lock() - defer m.mu.Unlock() - res := make([]uint64, len(m.readIndexRequests)) - copy(res, m.readIndexRequests) - return res -} - -type mockServer struct { - leaderChanged chan struct{} - stopping chan struct{} - done chan struct{} - logger *zap.Logger - appliedIndex uint64 - nextRequestID uint64 - timeout time.Duration - firstCommit chan struct{} -} - -func (s *mockServer) LeaderChanged() <-chan struct{} { return s.leaderChanged } -func (s *mockServer) Stopping() <-chan struct{} { return s.stopping } -func (s *mockServer) Logger() *zap.Logger { return s.logger } -func (s *mockServer) AppliedIndex() uint64 { return s.appliedIndex } -func (s *mockServer) ApplyWait(deadline uint64) <-chan struct{} { return nil } -func (s *mockServer) NextRequestID() uint64 { s.nextRequestID++; return s.nextRequestID } -func (s *mockServer) RequestTimeout() time.Duration { return s.timeout } -func (s *mockServer) FirstCommitInTermNotify() <-chan struct{} { return s.firstCommit } -func (s *mockServer) Done() <-chan struct{} { return s.done } From 0ad188279510b14ab3bd76444dd6c82e7850da47 Mon Sep 17 00:00:00 2001 From: Alessio Attilio Date: Tue, 7 Apr 2026 23:36:21 +0200 Subject: [PATCH 0909/1068] etcdserver: optimize range request with KEY ASCEND sorting Signed-off-by: Alessio Attilio --- server/etcdserver/txn/range.go | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/server/etcdserver/txn/range.go b/server/etcdserver/txn/range.go index 2ffc920e20e9..b54ddb3c685f 100644 --- a/server/etcdserver/txn/range.go +++ b/server/etcdserver/txn/range.go @@ -17,6 +17,7 @@ package txn import ( "bytes" "context" + "math" "sort" "time" @@ -67,19 +68,28 @@ func executeRange(ctx context.Context, lg *zap.Logger, txnRead mvcc.TxnRead, r * func rangeLimit(r *pb.RangeRequest) int64 { limit := r.Limit - if r.SortOrder != pb.RangeRequest_NONE || - r.MinModRevision != 0 || r.MaxModRevision != 0 || - r.MinCreateRevision != 0 || r.MaxCreateRevision != 0 { - // fetch everything; sort and truncate afterwards + if !isDefaultOrdering(r.SortTarget, r.SortOrder) || hasRevisionFilters(r) { limit = 0 } - if limit > 0 { - // fetch one extra for 'more' flag + if limit > 0 && limit < math.MaxInt64 { limit = limit + 1 } return limit } +func isDefaultOrdering(sortTarget pb.RangeRequest_SortTarget, sortOrder pb.RangeRequest_SortOrder) bool { + // Since current mvcc.Range implementation returns results + // sorted by keys in lexiographically ascending order, + // don't re-sort when target is 'KEY' and order is ASCEND + return sortOrder == pb.RangeRequest_NONE || + (sortTarget == pb.RangeRequest_KEY && sortOrder == pb.RangeRequest_ASCEND) +} + +func hasRevisionFilters(r *pb.RangeRequest) bool { + return r.MinModRevision != 0 || r.MaxModRevision != 0 || + r.MinCreateRevision != 0 || r.MaxCreateRevision != 0 +} + func filterRangeResults(rr *mvcc.RangeResult, r *pb.RangeRequest) { if r.MaxModRevision != 0 { f := func(kv *mvccpb.KeyValue) bool { return kv.ModRevision > r.MaxModRevision } @@ -102,17 +112,10 @@ func filterRangeResults(rr *mvcc.RangeResult, r *pb.RangeRequest) { func sortRangeResults(rr *mvcc.RangeResult, r *pb.RangeRequest, lg *zap.Logger) { sortOrder := r.SortOrder if r.SortTarget != pb.RangeRequest_KEY && sortOrder == pb.RangeRequest_NONE { - // Since current mvcc.Range implementation returns results - // sorted by keys in lexiographically ascending order, - // sort ASCEND by default only when target is not 'KEY' sortOrder = pb.RangeRequest_ASCEND - } else if r.SortTarget == pb.RangeRequest_KEY && sortOrder == pb.RangeRequest_ASCEND { - // Since current mvcc.Range implementation returns results - // sorted by keys in lexiographically ascending order, - // don't re-sort when target is 'KEY' and order is ASCEND - sortOrder = pb.RangeRequest_NONE } - if sortOrder != pb.RangeRequest_NONE { + + if !isDefaultOrdering(r.SortTarget, sortOrder) { var sorter sort.Interface switch { case r.SortTarget == pb.RangeRequest_KEY: From d4b7539f2a30cf194cb5453e20e1e9171dcff0cb Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 14 Apr 2026 15:53:13 +0200 Subject: [PATCH 0910/1068] Make requestCurrentIndex private Signed-off-by: Marek Siarkowicz --- server/etcdserver/read/read.go | 4 ++-- server/etcdserver/read/read_test.go | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/server/etcdserver/read/read.go b/server/etcdserver/read/read.go index 39d05f0a74ca..ca43132b7d94 100644 --- a/server/etcdserver/read/read.go +++ b/server/etcdserver/read/read.go @@ -114,7 +114,7 @@ func (r *Read) LinearizableReadLoop() { r.notifier = nextnr r.mux.Unlock() - confirmedIndex, err := r.RequestCurrentIndex(leaderChangedNotifier) + confirmedIndex, err := r.requestCurrentIndex(leaderChangedNotifier) if isStopped(err) { return } @@ -145,7 +145,7 @@ func (r *Read) LinearizableReadLoop() { } } -func (r *Read) RequestCurrentIndex(leaderChangedNotifier <-chan struct{}) (uint64, error) { +func (r *Read) requestCurrentIndex(leaderChangedNotifier <-chan struct{}) (uint64, error) { requestIDs := map[uint64]struct{}{} requestID := r.server.NextRequestID() requestIDs[requestID] = struct{}{} diff --git a/server/etcdserver/read/read_test.go b/server/etcdserver/read/read_test.go index cc88c34cd491..e212598515a3 100644 --- a/server/etcdserver/read/read_test.go +++ b/server/etcdserver/read/read_test.go @@ -37,7 +37,7 @@ func TestRequestCurrentIndex_LeaderChangedRace(t *testing.T) { mockRaft.readStateC <- raft.ReadState{Index: 100} s.leaderChanged <- struct{}{} - index, err := r.RequestCurrentIndex(s.LeaderChanged()) + index, err := r.requestCurrentIndex(s.LeaderChanged()) require.ErrorIs(t, err, errors.ErrLeaderChanged) require.Equal(t, uint64(0), index) @@ -60,7 +60,7 @@ func TestRequestCurrentIndex_UniqueRequestID(t *testing.T) { wg.Add(1) go func() { defer wg.Done() - r.RequestCurrentIndex(s.LeaderChanged()) + r.requestCurrentIndex(s.LeaderChanged()) }() require.Eventually(t, func() bool { @@ -87,7 +87,7 @@ func TestRequestCurrentIndex_Success(t *testing.T) { var err error go func() { defer wg.Done() - index, err = r.RequestCurrentIndex(s.LeaderChanged()) + index, err = r.requestCurrentIndex(s.LeaderChanged()) }() require.Eventually(t, func() bool { @@ -120,7 +120,7 @@ func TestRequestCurrentIndex_WrongRequestID(t *testing.T) { var err error go func() { defer wg.Done() - index, err = r.RequestCurrentIndex(s.LeaderChanged()) + index, err = r.requestCurrentIndex(s.LeaderChanged()) }() require.Eventually(t, func() bool { @@ -164,7 +164,7 @@ func TestRequestCurrentIndex_DelayedResponse(t *testing.T) { var err error go func() { defer wg.Done() - index, err = r.RequestCurrentIndex(s.LeaderChanged()) + index, err = r.requestCurrentIndex(s.LeaderChanged()) }() require.Eventually(t, func() bool { From 5b60474746a26009d29568cc372e2f5ff095aba9 Mon Sep 17 00:00:00 2001 From: YeRongyu Date: Wed, 15 Apr 2026 19:43:13 +0800 Subject: [PATCH 0911/1068] cache: use binary search for ringbuffer bounds Signed-off-by: YeRongyu --- cache/ringbuffer.go | 85 +++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 45 deletions(-) diff --git a/cache/ringbuffer.go b/cache/ringbuffer.go index b1a9da416e79..b3ebafd79f69 100644 --- a/cache/ringbuffer.go +++ b/cache/ringbuffer.go @@ -56,19 +56,9 @@ func (r *ringBuffer[T]) full() bool { } // AscendGreaterOrEqual iterates through entries in ascending order starting from the first entry with revision >= pivot. -// TODO: use binary search on the ring buffer to locate the first entry >= nextRev instead of a full scan func (r *ringBuffer[T]) AscendGreaterOrEqual(pivot int64, iter IterFunc[T]) { - if r.size == 0 { - return - } - - for n, i := 0, r.tail; n < r.size; n, i = n+1, (i+1)%len(r.buffer) { - entry := r.buffer[i] - - if entry.revision < pivot { - continue - } - + for i := r.findFirstIndexGreaterOrEqual(pivot); i < r.size; i++ { + entry := r.at(i) if !iter(entry.revision, entry.item) { return } @@ -77,17 +67,8 @@ func (r *ringBuffer[T]) AscendGreaterOrEqual(pivot int64, iter IterFunc[T]) { // AscendLessThan iterates in ascending order over entries with revision < pivot. func (r *ringBuffer[T]) AscendLessThan(pivot int64, iter IterFunc[T]) { - if r.size == 0 { - return - } - - for n, i := 0, r.tail; n < r.size; n, i = n+1, (i+1)%len(r.buffer) { - entry := r.buffer[i] - - if entry.revision >= pivot { - return - } - + for i := 0; i < r.findFirstIndexGreaterOrEqual(pivot); i++ { + entry := r.at(i) if !iter(entry.revision, entry.item) { return } @@ -96,17 +77,8 @@ func (r *ringBuffer[T]) AscendLessThan(pivot int64, iter IterFunc[T]) { // DescendGreaterThan iterates in descending order over entries with revision > pivot. func (r *ringBuffer[T]) DescendGreaterThan(pivot int64, iter IterFunc[T]) { - if r.size == 0 { - return - } - - for n, i := 0, r.moduloIndex(r.head-1); n < r.size; n, i = n+1, r.moduloIndex(i-1) { - entry := r.buffer[i] - - if entry.revision <= pivot { - return - } - + for i := r.size - 1; i > r.findLastIndexLessOrEqual(pivot); i-- { + entry := r.at(i) if !iter(entry.revision, entry.item) { return } @@ -115,17 +87,8 @@ func (r *ringBuffer[T]) DescendGreaterThan(pivot int64, iter IterFunc[T]) { // DescendLessOrEqual iterates in descending order over entries with revision <= pivot. func (r *ringBuffer[T]) DescendLessOrEqual(pivot int64, iter IterFunc[T]) { - if r.size == 0 { - return - } - - for n, i := 0, r.moduloIndex(r.head-1); n < r.size; n, i = n+1, r.moduloIndex(i-1) { - entry := r.buffer[i] - - if entry.revision > pivot { - continue - } - + for i := r.findLastIndexLessOrEqual(pivot); i >= 0; i-- { + entry := r.at(i) if !iter(entry.revision, entry.item) { return } @@ -159,3 +122,35 @@ func (r *ringBuffer[T]) RebaseHistory() { func (r *ringBuffer[T]) moduloIndex(index int) int { return (index + len(r.buffer)) % len(r.buffer) } + +func (r *ringBuffer[T]) at(logicalIndex int) entry[T] { + return r.buffer[r.moduloIndex(r.tail+logicalIndex)] +} + +func (r *ringBuffer[T]) findFirstIndexGreaterOrEqual(pivot int64) int { + left, right := 0, r.size-1 + for left <= right { + // Prevent overflow; see https://github.com/golang/go/blob/master/src/sort/search.go#L105. + mid := int(uint(left+right) >> 1) + if r.at(mid).revision >= pivot { + right = mid - 1 + } else { + left = mid + 1 + } + } + return left +} + +func (r *ringBuffer[T]) findLastIndexLessOrEqual(pivot int64) int { + left, right := 0, r.size-1 + for left <= right { + // Prevent overflow; see https://github.com/golang/go/blob/master/src/sort/search.go#L105. + mid := int(uint(left+right) >> 1) + if r.at(mid).revision <= pivot { + left = mid + 1 + } else { + right = mid - 1 + } + } + return right +} From e9651023448bb06bd9093a798171e311c7966bbe Mon Sep 17 00:00:00 2001 From: Jefftree Date: Wed, 15 Apr 2026 13:41:10 -0400 Subject: [PATCH 0912/1068] mvcc: rename RangeOptions.Count to CountOnly Signed-off-by: Jefftree --- server/etcdserver/txn/range.go | 6 +++--- server/storage/mvcc/kv.go | 6 +++--- server/storage/mvcc/kvstore_test.go | 4 ++-- server/storage/mvcc/kvstore_txn.go | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/server/etcdserver/txn/range.go b/server/etcdserver/txn/range.go index 2ffc920e20e9..bb766c146d09 100644 --- a/server/etcdserver/txn/range.go +++ b/server/etcdserver/txn/range.go @@ -45,9 +45,9 @@ func executeRange(ctx context.Context, lg *zap.Logger, txnRead mvcc.TxnRead, r * limit := rangeLimit(r) ro := mvcc.RangeOptions{ - Limit: limit, - Rev: r.Revision, - Count: r.CountOnly, + Limit: limit, + Rev: r.Revision, + CountOnly: r.CountOnly, } rr, err := txnRead.Range(ctx, r.Key, mkGteRange(r.RangeEnd), ro) diff --git a/server/storage/mvcc/kv.go b/server/storage/mvcc/kv.go index 6250bb91198b..fbb71cf5b625 100644 --- a/server/storage/mvcc/kv.go +++ b/server/storage/mvcc/kv.go @@ -24,9 +24,9 @@ import ( ) type RangeOptions struct { - Limit int64 - Rev int64 - Count bool + Limit int64 + Rev int64 + CountOnly bool } type RangeResult struct { diff --git a/server/storage/mvcc/kvstore_test.go b/server/storage/mvcc/kvstore_test.go index c993b0d8ba00..e9239c2e1d1b 100644 --- a/server/storage/mvcc/kvstore_test.go +++ b/server/storage/mvcc/kvstore_test.go @@ -207,7 +207,7 @@ func TestStoreRange(t *testing.T) { }, } - ro := RangeOptions{Limit: 1, Rev: 0, Count: false} + ro := RangeOptions{Limit: 1, Rev: 0, CountOnly: false} for i, tt := range tests { s := newFakeStore(lg) b := s.b.(*fakeBackend) @@ -755,7 +755,7 @@ func TestConcurrentReadNotBlockingWrite(t *testing.T) { // readTx2 simulates a short read request readTx2 := s.Read(ConcurrentReadTxMode, traceutil.TODO()) - ro := RangeOptions{Limit: 1, Rev: 0, Count: false} + ro := RangeOptions{Limit: 1, Rev: 0, CountOnly: false} ret, err := readTx2.Range(t.Context(), []byte("foo"), nil, ro) if err != nil { t.Fatalf("failed to range: %v", err) diff --git a/server/storage/mvcc/kvstore_txn.go b/server/storage/mvcc/kvstore_txn.go index c44a2cb3d915..d6d8750d6962 100644 --- a/server/storage/mvcc/kvstore_txn.go +++ b/server/storage/mvcc/kvstore_txn.go @@ -80,7 +80,7 @@ func (tr *storeTxnCommon) rangeKeys(ctx context.Context, key, end []byte, curRev if rev < tr.s.compactMainRev { return &RangeResult{KVs: nil, Count: -1, Rev: 0}, ErrCompacted } - if ro.Count { + if ro.CountOnly { total := tr.s.kvindex.CountRevisions(key, end, rev) tr.trace.Step("count revisions from in-memory index tree") return &RangeResult{KVs: nil, Count: total, Rev: curRev}, nil From daa0f6274268c777150fbd797bddcea7e3ec97db Mon Sep 17 00:00:00 2001 From: Alok Kumar Singh Date: Thu, 16 Apr 2026 22:46:17 +0530 Subject: [PATCH 0913/1068] cache: Support WithProgressNotify() for cache watch Signed-off-by: Alok Kumar Singh --- cache/cache.go | 26 ++++- cache/cache_test.go | 104 +++++++++++++++++++ cache/config.go | 7 ++ cache/demux.go | 17 ++++ cache/demux_test.go | 92 +++++++++++++---- tests/integration/cache_test.go | 173 +++++++++++++++++++++++++++----- 6 files changed, 371 insertions(+), 48 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index 7cd9dad8d612..ed7872e3e8ca 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -28,7 +28,7 @@ import ( ) var ( - // Returned when an option combination isn’t yet handled by the cache (e.g. WithPrevKV, WithProgressNotify for Watch(), WithCountOnly for Get()). + // Returned when an option combination isn’t yet handled by the cache (e.g. WithPrevKV for Watch(), WithCountOnly for Get()). ErrUnsupportedRequest = errors.New("cache: unsupported request parameters") // Returned when the requested key or key‑range is invalid (empty or reversed) or lies outside c.prefix. ErrKeyRangeInvalid = errors.New("cache: invalid or out‑of‑range key range") @@ -52,6 +52,7 @@ type Cache struct { waitGroup sync.WaitGroup internalCtx context.Context progressRequestor progressRequestor + clock Clock } // New builds a cache shard that watches only the requested prefix. @@ -64,7 +65,10 @@ func New(client *clientv3.Client, prefix string, opts ...Option) (*Cache, error) for _, opt := range opts { opt(&cfg) } + return newCache(client, prefix, cfg, realClock{}) +} +func newCache(client *clientv3.Client, prefix string, cfg Config, clock Clock) (*Cache, error) { if cfg.HistoryWindowSize <= 0 { return nil, fmt.Errorf("invalid HistoryWindowSize %d (must be > 0)", cfg.HistoryWindowSize) } @@ -83,7 +87,8 @@ func New(client *clientv3.Client, prefix string, opts ...Option) (*Cache, error) ready: newReady(), stop: cancel, internalCtx: internalCtx, - progressRequestor: newConditionalProgressRequestor(client.Watcher, realClock{}, cfg.ProgressRequestInterval), + progressRequestor: newConditionalProgressRequestor(client.Watcher, clock, cfg.ProgressRequestInterval), + clock: clock, } cache.demux = NewDemux(internalCtx, &cache.waitGroup, cfg.HistoryWindowSize, cfg.ResyncInterval) @@ -135,12 +140,24 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption defer c.waitGroup.Done() defer close(responseChan) defer c.demux.Unregister(w) + + var progressTimer Timer + var progressChan <-chan time.Time + if op.IsProgressNotify() { + progressTimer = c.clock.NewTimer(c.cfg.ProgressNotifyInterval) + defer progressTimer.Stop() + progressChan = progressTimer.Chan() + } + for { select { case <-ctx.Done(): return case <-c.internalCtx.Done(): return + case <-progressChan: + c.demux.BroadcastProgressTo(w) + progressTimer.Reset(c.cfg.ProgressNotifyInterval) case resp, ok := <-w.respCh: if !ok { if w.cancelResp != nil { @@ -158,6 +175,9 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption case <-c.internalCtx.Done(): return case responseChan <- resp: + if progressTimer != nil { + progressTimer.Reset(c.cfg.ProgressNotifyInterval) + } } } } @@ -404,8 +424,6 @@ func (c *Cache) validateWatch(key string, op clientv3.Op) (pred KeyPredicate, er return nil, fmt.Errorf("%w: PrevKV not supported", ErrUnsupportedRequest) case op.IsFragment(): return nil, fmt.Errorf("%w: Fragment not supported", ErrUnsupportedRequest) - case op.IsProgressNotify(): - return nil, fmt.Errorf("%w: ProgressNotify not supported", ErrUnsupportedRequest) case op.IsCreatedNotify(): return nil, fmt.Errorf("%w: CreatedNotify not supported", ErrUnsupportedRequest) case op.IsFilterPut(): diff --git a/cache/cache_test.go b/cache/cache_test.go index 47d16d7bfd35..c153df97c1ce 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -730,6 +730,110 @@ func newCacheForWaitTest(serverRev int64, localRev int64, pr progressRequestor) }, st } +func setupWatcherWithFakeClock(t *testing.T, opts ...clientv3.OpOption) (clientv3.WatchChan, *mockWatcher, *fakeClock) { + t.Helper() + fc := newFakeClock() + mw := newMockWatcher(8) + fakeClient := &clientv3.Client{ + Watcher: mw, + KV: newKVStub(), + } + cfg := defaultConfig() + cfg.ProgressNotifyInterval = 100 * time.Millisecond + c, err := newCache(fakeClient, "", cfg, fc) + if err != nil { + t.Fatalf("newCache: %v", err) + } + t.Cleanup(c.Close) + + mw.responses <- clientv3.WatchResponse{} + <-mw.registered + + ctxWait, cancelWait := context.WithTimeout(t.Context(), time.Second) + defer cancelWait() + if err := c.WaitReady(ctxWait); err != nil { + t.Fatalf("cache did not become Ready: %v", err) + } + + watchOpts := append([]clientv3.OpOption{clientv3.WithPrefix()}, opts...) + watchCh := c.Watch(t.Context(), "", watchOpts...) + + // Seed an event so the cache has a known revision (rev 5), + // then drain it from the watch channel. + mw.responses <- clientv3.WatchResponse{ + Events: []*clientv3.Event{event(mvccpb.Event_PUT, "/a", 5)}, + } + readResponse(t, watchCh) + + return watchCh, mw, fc +} + +func TestCacheWatchProgressNotify(t *testing.T) { + t.Run("watcher requesting notification, receives them periodically", func(t *testing.T) { + progressCh, _, fc := setupWatcherWithFakeClock(t, clientv3.WithProgressNotify()) + + t.Log("First interval — progress notification arrives") + fc.Advance(100 * time.Millisecond) + resp := readResponse(t, progressCh) + if !resp.IsProgressNotify() { + t.Fatalf("expected progress notify, got events: %v", resp.Events) + } + + t.Log("Second interval — another progress notification arrives") + fc.Advance(100 * time.Millisecond) + resp = readResponse(t, progressCh) + if !resp.IsProgressNotify() { + t.Fatalf("expected progress notify, got events: %v", resp.Events) + } + }) + + t.Run("watcher that didn't request progress doesn't receive any", func(t *testing.T) { + plainCh, _, fc := setupWatcherWithFakeClock(t) + + t.Log("Advance past the interval — plain watcher should not receive anything") + fc.Advance(150 * time.Millisecond) + + select { + case got, ok := <-plainCh: + if ok { + t.Fatalf("expected no response on plain watcher, got: IsProgressNotify=%v events=%v", got.IsProgressNotify(), got.Events) + } + default: + } + }) + + t.Run("event resets timer and delays sending progress", func(t *testing.T) { + progressCh, mw, fc := setupWatcherWithFakeClock(t, clientv3.WithProgressNotify()) + + t.Log("Advance partway into the interval, then deliver an event to reset the timer") + fc.Advance(50 * time.Millisecond) + mw.responses <- clientv3.WatchResponse{ + Events: []*clientv3.Event{event(mvccpb.Event_PUT, "/b", 6)}, + } + readResponse(t, progressCh) + + t.Log("100 ms since original start but only 50 ms since event reset — no progress notify") + fc.Advance(50 * time.Millisecond) + select { + case got, ok := <-progressCh: + if ok { + t.Fatalf("expected no progress notify within interval after event, got: IsProgressNotify=%v events=%v", got.IsProgressNotify(), got.Events) + } + default: + } + + t.Log("Full interval after the event — progress notify arrives") + fc.Advance(50 * time.Millisecond) + resp := readResponse(t, progressCh) + if !resp.IsProgressNotify() { + t.Fatalf("expected progress notify, got events: %v", resp.Events) + } + if resp.Header.Revision != 6 { + t.Fatalf("expected progress revision 6, got %d", resp.Header.Revision) + } + }) +} + func TestWaitTillRevision(t *testing.T) { t.Run("cache_already_caught_up", func(t *testing.T) { c, _ := newCacheForWaitTest(10, 10, newTestProgressRequestor()) diff --git a/cache/config.go b/cache/config.go index c7e2e30bc957..025c570c9b0b 100644 --- a/cache/config.go +++ b/cache/config.go @@ -37,6 +37,8 @@ type Config struct { BTreeDegree int // ProgressRequestInterval controls how often progress notifications are requested from the etcd watch stream during a consistent Get. ProgressRequestInterval time.Duration + // ProgressNotifyInterval controls how often progress notifications are sent to local watchers registered with WithProgressNotify(). + ProgressNotifyInterval time.Duration } // TODO: tune via performance/load tests. @@ -51,6 +53,7 @@ func defaultConfig() Config { WaitTimeout: 3 * time.Second, BTreeDegree: 32, ProgressRequestInterval: 100 * time.Millisecond, + ProgressNotifyInterval: 10 * time.Minute, } } @@ -88,6 +91,10 @@ func WithProgressRequestInterval(d time.Duration) Option { return func(c *Config) { c.ProgressRequestInterval = d } } +func WithProgressNotifyInterval(d time.Duration) Option { + return func(c *Config) { c.ProgressNotifyInterval = d } +} + func WithWaitTimeout(d time.Duration) Option { return func(c *Config) { c.WaitTimeout = d } } diff --git a/cache/demux.go b/cache/demux.go index 2579d63a7660..dca89effd93f 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -179,6 +179,23 @@ func (d *demux) BroadcastProgress() { } } +func (d *demux) BroadcastProgressTo(w *watcher) { + d.mu.RLock() + defer d.mu.RUnlock() + if d.maxRev == 0 { + return + } + if _, active := d.activeWatchers[w]; !active { + return + } + resp := clientv3.WatchResponse{ + Header: etcdserverpb.ResponseHeader{ + Revision: d.maxRev, + }, + } + w.enqueueResponse(resp) +} + func (d *demux) updateStoreLocked(resp clientv3.WatchResponse) { if resp.IsProgressNotify() { d.maxRev = resp.Header.Revision diff --git a/cache/demux_test.go b/cache/demux_test.go index fb31998a7eb7..42217e07dd40 100644 --- a/cache/demux_test.go +++ b/cache/demux_test.go @@ -349,13 +349,13 @@ func TestBroadcastProgress(t *testing.T) { d.BroadcastProgress() - resps1 := readResponses(t, w1, 1) - require.Truef(t, resps1[0].IsProgressNotify(), "expected progress notify") - require.Equal(t, int64(10), resps1[0].Header.Revision) + resp1 := readResponse(t, w1.respCh) + require.Truef(t, resp1.IsProgressNotify(), "expected progress notify") + require.Equal(t, int64(10), resp1.Header.Revision) - resps2 := readResponses(t, w2, 1) - require.Truef(t, resps2[0].IsProgressNotify(), "expected progress notify") - require.Equal(t, int64(10), resps2[0].Header.Revision) + resp2 := readResponse(t, w2.respCh) + require.Truef(t, resp2.IsProgressNotify(), "expected progress notify") + require.Equal(t, int64(10), resp2.Header.Revision) }) t.Run("is no-op when maxRev is zero", func(t *testing.T) { @@ -386,9 +386,9 @@ func TestBroadcastProgress(t *testing.T) { d.BroadcastProgress() - activeResps := readResponses(t, active, 1) - require.Truef(t, activeResps[0].IsProgressNotify(), "expected progress notify for active watcher") - require.Equal(t, int64(10), activeResps[0].Header.Revision) + activeResp := readResponse(t, active.respCh) + require.Truef(t, activeResp.IsProgressNotify(), "expected progress notify for active watcher") + require.Equal(t, int64(10), activeResp.Header.Revision) select { case <-lagging.respCh: @@ -398,20 +398,74 @@ func TestBroadcastProgress(t *testing.T) { }) } -func readResponses(t *testing.T, w *watcher, count int) []clientv3.WatchResponse { - t.Helper() - responses := make([]clientv3.WatchResponse, 0, count) +func TestBroadcastProgressTo(t *testing.T) { + t.Run("sends progress only to the target watcher", func(t *testing.T) { + d := newDemux(16, 10*time.Millisecond) + d.Init(1) + d.maxRev = 10 + + target := newWatcher(8, nil) + other := newWatcher(8, nil) + d.Register(target, 0) + d.Register(other, 0) + + d.BroadcastProgressTo(target) + + resp := readResponse(t, target.respCh) + require.Truef(t, resp.IsProgressNotify(), "expected progress notify") + require.Equal(t, int64(10), resp.Header.Revision) - for i := 0; i < count; i++ { select { - case resp := <-w.respCh: - responses = append(responses, resp) - case <-time.After(2 * time.Second): - t.Fatalf("timed out waiting for response %d/%d (got %d)", i+1, count, len(responses)) + case <-other.respCh: + t.Fatal("expected no progress notify for other watcher") + default: } - } + }) + + t.Run("is no-op when maxRev is zero", func(t *testing.T) { + d := newDemux(16, 10*time.Millisecond) + d.Init(1) + + w := newWatcher(8, nil) + d.Register(w, 0) + + d.maxRev = 0 + d.BroadcastProgressTo(w) + + select { + case <-w.respCh: + t.Fatal("expected no response when maxRev is 0") + default: + } + }) + + t.Run("is no-op for lagging watcher", func(t *testing.T) { + d := newDemux(16, 10*time.Millisecond) + d.Init(1) + d.maxRev = 10 + + w := newWatcher(8, nil) + d.Register(w, 5) // startingRev <= maxRev => lagging - return responses + d.BroadcastProgressTo(w) + + select { + case <-w.respCh: + t.Fatal("expected no progress notify for lagging watcher") + default: + } + }) +} + +func readResponse(t *testing.T, ch <-chan clientv3.WatchResponse) clientv3.WatchResponse { + t.Helper() + select { + case resp := <-ch: + return resp + case <-time.After(2 * time.Second): + t.Fatalf("timed out waiting for response") + return clientv3.WatchResponse{} + } } func respWithEventRevs(revs ...int64) clientv3.WatchResponse { diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index 2b4196231963..f1da755d1dc7 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -578,19 +578,7 @@ func TestCacheRequestProgress(t *testing.T) { } // Drain the event responses so the watcher is caught up. - // Events may be batched into fewer responses, so count total events. - totalEvents := 0 - for totalEvents < 3 { - select { - case resp := <-watchCh: - if resp.Canceled { - t.Fatalf("unexpected canceled response: %v", resp.CancelReason) - } - totalEvents += len(resp.Events) - case <-wctx.Done(): - t.Fatalf("timed out waiting for events, got %d/3", totalEvents) - } - } + readEvents(wctx, t, watchCh, 3) // Call RequestProgress on the cache — this should deliver a progress // notification to the watcher with the cache's current revision. @@ -598,20 +586,119 @@ func TestCacheRequestProgress(t *testing.T) { t.Fatalf("RequestProgress: %v", err) } - select { - case resp, ok := <-watchCh: - if !ok { - t.Fatalf("expected watch response, got closed") + resp := waitForProgressNotify(wctx, t, watchCh) + if resp.Header.Revision < latestRev { + t.Fatalf("progress revision %d < latest rev %d", resp.Header.Revision, latestRev) + } +} + +func TestCacheWithProgressNotify(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + t.Cleanup(func() { clus.Terminate(t) }) + client := clus.Client(0) + + ctx := t.Context() + + progressInterval := 200 * time.Millisecond + c, err := cache.New(client, "/foo", cache.WithProgressNotifyInterval(progressInterval)) + if err != nil { + t.Fatalf("cache.New: %v", err) + } + t.Cleanup(c.Close) + if err := c.WaitReady(ctx); err != nil { + t.Fatalf("cache.WaitReady: %v", err) + } + + t.Run("progress notification fires on idle watcher", func(t *testing.T) { + wctx, cancel := context.WithTimeout(ctx, 5*progressInterval) + defer cancel() + + watchCh := c.Watch(wctx, "/foo", clientv3.WithPrefix(), clientv3.WithProgressNotify()) + + // Write a key so the cache has a non-zero revision. + if _, err := client.Put(ctx, "/foo/a", "1"); err != nil { + t.Fatalf("Put: %v", err) } - if !resp.IsProgressNotify() { - t.Fatalf("expected progress notify, got %d events", len(resp.Events)) + readEvents(wctx, t, watchCh, 1) + + // Wait for a progress notification (should arrive after ~progressInterval of idle time). + resp := waitForProgressNotify(wctx, t, watchCh) + if resp.Header.Revision == 0 { + t.Fatalf("progress notification has zero revision") } - if resp.Header.Revision < latestRev { - t.Fatalf("progress revision %d < latest rev %d", resp.Header.Revision, latestRev) + }) + + t.Run("no progress notification without WithProgressNotify", func(t *testing.T) { + wctx, cancel := context.WithTimeout(ctx, 5*progressInterval) + defer cancel() + + watchCh := c.Watch(wctx, "/foo", clientv3.WithPrefix()) + + // Write a key so the watcher gets an event. + if _, err := client.Put(ctx, "/foo/b", "2"); err != nil { + t.Fatalf("Put: %v", err) } - case <-wctx.Done(): - t.Fatalf("timed out waiting for progress notification from RequestProgress") - } + readEvents(wctx, t, watchCh, 1) + + // Wait longer than the progress interval — should NOT get a progress notification. + select { + case resp := <-watchCh: + if resp.IsProgressNotify() { + t.Fatalf("got unexpected progress notification on watcher without WithProgressNotify") + } + case <-time.After(3 * progressInterval): + } + }) + + t.Run("progress notification is elided when events are flowing", func(t *testing.T) { + wctx, cancel := context.WithTimeout(ctx, 5*time.Second) + defer cancel() + + watchCh := c.Watch(wctx, "/foo", clientv3.WithPrefix(), clientv3.WithProgressNotify()) + + // Continuously write keys faster than the progress interval. + done := make(chan struct{}) + go func() { + defer close(done) + for i := 0; i < 10; i++ { + if _, err := client.Put(ctx, fmt.Sprintf("/foo/stream-%d", i), fmt.Sprintf("%d", i)); err != nil { + return + } + time.Sleep(progressInterval / 5) + } + }() + + // Collect responses while writes are happening. + var gotProgress bool + eventCount := 0 + collectLoop: + for { + select { + case resp, ok := <-watchCh: + if !ok { + break collectLoop + } + if resp.IsProgressNotify() { + gotProgress = true + } + eventCount += len(resp.Events) + if eventCount >= 10 { + break collectLoop + } + case <-wctx.Done(): + break collectLoop + } + } + <-done + + if gotProgress { + t.Logf("progress notification received during active writes (elision not guaranteed but noted)") + } + if eventCount != 10 { + t.Fatalf("expected exactly 10 events, got %d", eventCount) + } + }) } func TestCacheWithoutPrefixGet(t *testing.T) { @@ -1408,7 +1495,6 @@ func TestCacheUnsupportedWatchOptions(t *testing.T) { }{ {"WithPrevKV", clientv3.WithPrevKV()}, {"WithFragment", clientv3.WithFragment()}, - {"WithProgressNotify", clientv3.WithProgressNotify()}, {"WithCreatedNotify", clientv3.WithCreatedNotify()}, {"WithFilterPut", clientv3.WithFilterPut()}, {"WithFilterDelete", clientv3.WithFilterDelete()}, @@ -1523,6 +1609,43 @@ func collectAndAssertAtomicEvents(t *testing.T, watch clientv3.WatchChan) (event } } +func readEvents(ctx context.Context, t *testing.T, watchCh clientv3.WatchChan, n int) { + t.Helper() + received := 0 + for received < n { + select { + case resp := <-watchCh: + if resp.Canceled { + t.Fatalf("unexpected canceled response: %v", resp.CancelReason) + } + received += len(resp.Events) + case <-ctx.Done(): + t.Fatalf("timed out draining events, got %d/%d", received, n) + } + } +} + +func waitForProgressNotify(ctx context.Context, t *testing.T, watchCh clientv3.WatchChan) clientv3.WatchResponse { + t.Helper() + for { + select { + case resp, ok := <-watchCh: + if !ok { + t.Fatalf("watch channel closed while waiting for progress notification") + } + if resp.Canceled { + t.Fatalf("unexpected canceled: %v", resp.CancelReason) + } + if resp.IsProgressNotify() { + return resp + } + case <-ctx.Done(): + t.Fatalf("timed out waiting for progress notification") + return clientv3.WatchResponse{} + } + } +} + func advanceRevision(t *testing.T, kv clientv3.KV) int64 { t.Helper() n := rand.Intn(3) + 3 From 4aa4d95855a764ede4bee159fcb441895722752b Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 17 Apr 2026 09:12:27 -0700 Subject: [PATCH 0914/1068] build(deps): bump google.golang.org/grpc from 1.79.3 to 1.80.0 Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.79.3 to 1.80.0. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](grpc/grpc-go@v1.79.3...v1.80.0) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-version: 1.80.0 dependency-type: direct:production update-type: version-update:semver-minor ... Reference: https://github.com/etcd-io/etcd/pull/21561 Signed-off-by: Ivan Valdes --- api/go.mod | 2 +- api/go.sum | 8 ++++---- cache/go.mod | 2 +- cache/go.sum | 8 ++++---- client/v3/go.mod | 2 +- client/v3/go.sum | 8 ++++---- etcdctl/go.mod | 2 +- etcdctl/go.sum | 8 ++++---- etcdutl/go.mod | 2 +- etcdutl/go.sum | 8 ++++---- go.mod | 2 +- go.sum | 8 ++++---- go.work.sum | 22 ++++++++++++++++++---- pkg/go.mod | 2 +- pkg/go.sum | 8 ++++---- server/go.mod | 2 +- server/go.sum | 8 ++++---- tests/go.mod | 2 +- tests/go.sum | 8 ++++---- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 8 ++++---- 23 files changed, 71 insertions(+), 57 deletions(-) diff --git a/api/go.mod b/api/go.mod index 90eedd7619be..b6ba89cdf07c 100644 --- a/api/go.mod +++ b/api/go.mod @@ -10,7 +10,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 github.com/stretchr/testify v1.11.1 google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 - google.golang.org/grpc v1.79.3 + google.golang.org/grpc v1.80.0 google.golang.org/protobuf v1.36.11 ) diff --git a/api/go.sum b/api/go.sum index ea23e9eafb8d..43570f9037c5 100644 --- a/api/go.sum +++ b/api/go.sum @@ -44,14 +44,14 @@ golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/cache/go.mod b/cache/go.mod index 433c5b200953..8ae7d63b535a 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -27,7 +27,7 @@ require ( golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/grpc v1.79.3 // indirect + google.golang.org/grpc v1.80.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index 5b252d0ba983..3d453126b38c 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -70,14 +70,14 @@ golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index 91f080e875f8..f10886e00963 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.1 - google.golang.org/grpc v1.79.3 + google.golang.org/grpc v1.80.0 sigs.k8s.io/yaml v1.6.0 ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 1adb59cacab1..234a8dd41922 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -78,14 +78,14 @@ golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 95cd48885a41..100d29ddfa96 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 - google.golang.org/grpc v1.79.3 + google.golang.org/grpc v1.80.0 ) require ( diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 73d1732c23a0..4a99a420f153 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -111,14 +111,14 @@ golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index d26b3be5106d..ea2af7d1fbf1 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -86,7 +86,7 @@ require ( golang.org/x/time v0.15.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/grpc v1.79.3 // indirect + google.golang.org/grpc v1.80.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 2da11b45adf4..d20e3d337d7b 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -177,14 +177,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index 877ebbd226f4..06882a3ba847 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 golang.org/x/tools v0.43.0 - google.golang.org/grpc v1.79.3 + google.golang.org/grpc v1.80.0 google.golang.org/protobuf v1.36.11 ) diff --git a/go.sum b/go.sum index 7e3c5edad0a4..c25deed76ad7 100644 --- a/go.sum +++ b/go.sum @@ -189,14 +189,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.work.sum b/go.work.sum index d135befeb142..d6e908b8c7e8 100644 --- a/go.work.sum +++ b/go.work.sum @@ -157,8 +157,8 @@ gioui.org/shader v1.0.6/go.mod h1:mWdiME581d/kV7/iEhLmUgUK5iZ09XR5XpduXzbePVM= gioui.org/x v0.2.0 h1:/MbdjKH19F16auv19UiQxli2n6BYPw7eyh9XBOTgmEw= gioui.org/x v0.2.0/go.mod h1:rCGN2nZ8ZHqrtseJoQxCMZpt2xrZUrdZ2WuMRLBJmYs= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= @@ -269,8 +269,8 @@ github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372 h1:FQivqchis6bE2/9uF70M2gmmLpe82esEm2QadL0TEJo= github.com/go-text/typesetting v0.0.0-20230803102845-24e03d8b5372/go.mod h1:evDBbvNR/KaVFZ2ZlDSOWWXIUKq0wCOEtzLxRM8SG3k= -github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198 h1:FSii2UQeSLngl3jFoR4tUKZLprO7qUlh/TKKticc0BM= -github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198/go.mod h1:DTh/Y2+NbnOVVoypCCQrovMPDKUGp4yZpSbWg5D0XIM= +github.com/goccmack/gocc v1.0.2 h1:PHv20lcM1Erz+kovS+c07DnDFp6X5cvghndtTXuEyfE= +github.com/goccmack/gocc v1.0.2/go.mod h1:LXX2tFVUggS/Zgx/ICPOr3MLyusuM7EcbfkPvNsjdO8= github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -287,6 +287,7 @@ github.com/google/cel-go v0.25.0 h1:jsFw9Fhn+3y2kBbltZR4VEz5xKkcIFRPDnuEzAGv5GY= github.com/google/cel-go v0.25.0/go.mod h1:hjEb6r5SuOSlhCHmFoLzu8HGCERvIsDAbxDAyNU/MmI= github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v50 v50.2.0 h1:j2FyongEHlO9nxXLc+LP3wuBSVU9mVxfpdYUexMpIfk= github.com/google/go-pkcs11 v0.2.0 h1:5meDPB26aJ98f+K9G21f0AqZwo/S5BJMJh8nuhMbdsI= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= @@ -363,6 +364,8 @@ github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPK github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= +github.com/mattn/goveralls v0.0.5 h1:spfq8AyZ0cCk57Za6/juJ5btQxeE1FaEGMdfcI+XO48= +github.com/mattn/goveralls v0.0.5/go.mod h1:Xg2LHi51faXLyKXwsndxiW6uxEEQT9+3sjGzzwU4xy0= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/mgechev/dots v1.0.0 h1:o+4OJ3OjWzgQHGJXKfJ8rbH4dqDugu5BiEy84nxg0k4= github.com/mgechev/dots v1.0.0/go.mod h1:rykuMydC9t3wfkM+ccYH3U3ss03vZGg6h3hmOznXLH0= @@ -475,13 +478,24 @@ go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c h1:jTMrjjZRcSH/BDxWhXCP6OWsfVgmnwI7J+F4/nyVXaU= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= +golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= +golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200317205521-2944c61d58b4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= +golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= +gonum.org/v1/tools v0.0.0-20200318103217-c168b003ce8c h1:cJWOvXtcaFSGXz2F4z2AMM0VV7edDDGrxb5GLQH7ayQ= +gonum.org/v1/tools v0.0.0-20200318103217-c168b003ce8c/go.mod h1:fy6Otjqbk477ELp8IXTpw1cObQtLbRCBVonY+bTTfcM= google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA= google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= diff --git a/pkg/go.mod b/pkg/go.mod index 58126af5cf95..9be5d396f3e1 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -14,7 +14,7 @@ require ( go.opentelemetry.io/otel/trace v1.42.0 go.uber.org/zap v1.27.1 golang.org/x/sys v0.42.0 - google.golang.org/grpc v1.79.3 + google.golang.org/grpc v1.80.0 ) require ( diff --git a/pkg/go.sum b/pkg/go.sum index fc626076e2ec..a7b2cc83ffd1 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -62,12 +62,12 @@ golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index d506943b5fa5..1df53303ff03 100644 --- a/server/go.mod +++ b/server/go.mod @@ -39,7 +39,7 @@ require ( golang.org/x/net v0.52.0 golang.org/x/time v0.15.0 google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 - google.golang.org/grpc v1.79.3 + google.golang.org/grpc v1.80.0 google.golang.org/protobuf v1.36.11 gopkg.in/natefinch/lumberjack.v2 v2.2.1 k8s.io/utils v0.0.0-20260108192941-914a6e750570 diff --git a/server/go.sum b/server/go.sum index d42d6af3a601..40f81048fa04 100644 --- a/server/go.sum +++ b/server/go.sum @@ -156,14 +156,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index 4462fce36c2d..252025acee35 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -49,7 +49,7 @@ require ( golang.org/x/crypto v0.49.0 golang.org/x/sync v0.20.0 golang.org/x/time v0.15.0 - google.golang.org/grpc v1.79.3 + google.golang.org/grpc v1.80.0 google.golang.org/protobuf v1.36.11 ) diff --git a/tests/go.sum b/tests/go.sum index ab66ee417e42..f8aa4dad3135 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -191,14 +191,14 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 3832bd752774..7b2d5a446d91 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -247,7 +247,7 @@ require ( golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/grpc v1.79.3 // indirect + google.golang.org/grpc v1.80.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect mvdan.cc/gofumpt v0.9.2 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 7b4c07d16e41..f60518d89036 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -714,8 +714,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1 h1:/WILD1UcXj/ujCxgoL/DvRgt2CP3txG8+FwkUbb9110= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1/go.mod h1:YNKnb2OAApgYn2oYY47Rn7alMr1zWjb2U8Q0aoGWiNc= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 7f1fc55ba391..1e4550461e31 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -21,5 +21,5 @@ require ( golang.org/x/sys v0.42.0 // indirect golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/grpc v1.79.3 // indirect + google.golang.org/grpc v1.80.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 68c1f7bf4135..e744a7f0ccf7 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1611,8 +1611,8 @@ gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJ gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= @@ -1895,8 +1895,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From f28ef956b4375fee8bb39cc38cac4d446331e153 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 17 Apr 2026 09:13:58 -0700 Subject: [PATCH 0915/1068] build(deps): bump go.opentelemetry.io/proto/otlp from 1.9.0 to 1.10.0 Bumps [go.opentelemetry.io/proto/otlp](https://github.com/open-telemetry/opentelemetry-proto-go) from 1.9.0 to 1.10.0. - [Release notes](https://github.com/open-telemetry/opentelemetry-proto-go/releases) - [Commits](open-telemetry/opentelemetry-proto-go@v1.9.0...v1.10.0) --- updated-dependencies: - dependency-name: go.opentelemetry.io/proto/otlp dependency-version: 1.10.0 dependency-type: indirect update-type: version-update:semver-minor ... Reference: https://github.com/etcd-io/etcd/pull/21564 Signed-off-by: Ivan Valdes --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index ea2af7d1fbf1..e0b0f2d67b4f 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -76,7 +76,7 @@ require ( go.opentelemetry.io/otel/metric v1.42.0 // indirect go.opentelemetry.io/otel/sdk v1.42.0 // indirect go.opentelemetry.io/otel/trace v1.42.0 // indirect - go.opentelemetry.io/proto/otlp v1.9.0 // indirect + go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.49.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index d20e3d337d7b..95c226b7cd3b 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -126,8 +126,8 @@ go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9 go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= -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/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= +go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= 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= diff --git a/go.mod b/go.mod index 06882a3ba847..d61d9e4d61bb 100644 --- a/go.mod +++ b/go.mod @@ -90,7 +90,7 @@ require ( go.opentelemetry.io/otel/metric v1.42.0 // indirect go.opentelemetry.io/otel/sdk v1.42.0 // indirect go.opentelemetry.io/otel/trace v1.42.0 // indirect - go.opentelemetry.io/proto/otlp v1.9.0 // indirect + go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.49.0 // indirect diff --git a/go.sum b/go.sum index c25deed76ad7..ef3f3d266e3e 100644 --- a/go.sum +++ b/go.sum @@ -134,8 +134,8 @@ go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9 go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= -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/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= +go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= 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= diff --git a/server/go.mod b/server/go.mod index 1df53303ff03..c1343bc09790 100644 --- a/server/go.mod +++ b/server/go.mod @@ -66,7 +66,7 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect go.opentelemetry.io/otel/metric v1.42.0 // indirect - go.opentelemetry.io/proto/otlp v1.9.0 // indirect + go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/sys v0.42.0 // indirect diff --git a/server/go.sum b/server/go.sum index 40f81048fa04..4eef55e4f9d1 100644 --- a/server/go.sum +++ b/server/go.sum @@ -106,8 +106,8 @@ go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9 go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= -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/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= +go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= 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= diff --git a/tests/go.mod b/tests/go.mod index 252025acee35..a094de01e349 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -44,7 +44,7 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 go.opentelemetry.io/otel v1.42.0 go.opentelemetry.io/otel/sdk v1.42.0 - go.opentelemetry.io/proto/otlp v1.9.0 + go.opentelemetry.io/proto/otlp v1.10.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.49.0 golang.org/x/sync v0.20.0 diff --git a/tests/go.sum b/tests/go.sum index f8aa4dad3135..4defb9fbfb36 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -140,8 +140,8 @@ go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9 go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= -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/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= +go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= 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 e2de22afdcac6faa6e7f67ae8f8cd6e7570808d4 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Wed, 15 Apr 2026 13:49:46 -0400 Subject: [PATCH 0916/1068] mvcc: add WithTotalCount optimization for Range Add WithTotalCount flag to RangeOptions so treeIndex.Revisions() can skip counting all matching keys when only a limited page is needed. Reduces per-page cost from O(total_keys) to O(limit) when the caller opts out of the full total. Signed-off-by: Jefftree --- server/etcdserver/apply/backend.go | 2 +- server/etcdserver/txn/range.go | 13 +++++++------ server/etcdserver/txn/txn.go | 2 +- server/etcdserver/txn/txn_test.go | 2 +- server/etcdserver/v3_server.go | 2 +- server/storage/mvcc/index.go | 13 ++++++++++--- server/storage/mvcc/index_test.go | 2 +- server/storage/mvcc/kv.go | 7 ++++--- server/storage/mvcc/kv_test.go | 2 +- server/storage/mvcc/kvstore_test.go | 2 +- server/storage/mvcc/kvstore_txn.go | 2 +- 11 files changed, 29 insertions(+), 20 deletions(-) diff --git a/server/etcdserver/apply/backend.go b/server/etcdserver/apply/backend.go index ef2f23f76f32..4151956c9be0 100644 --- a/server/etcdserver/apply/backend.go +++ b/server/etcdserver/apply/backend.go @@ -56,7 +56,7 @@ func (a *applierV3backend) DeleteRange(dr *pb.DeleteRangeRequest) (*pb.DeleteRan } func (a *applierV3backend) Range(r *pb.RangeRequest) (*pb.RangeResponse, *traceutil.Trace, error) { - return mvcctxn.Range(context.TODO(), a.options.Logger, a.options.KV, r) + return mvcctxn.Range(context.TODO(), a.options.Logger, a.options.KV, r, true) } func (a *applierV3backend) Txn(rt *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) { diff --git a/server/etcdserver/txn/range.go b/server/etcdserver/txn/range.go index b0b7838425f0..cb8e7bc8e3c4 100644 --- a/server/etcdserver/txn/range.go +++ b/server/etcdserver/txn/range.go @@ -29,7 +29,7 @@ import ( "go.etcd.io/etcd/server/v3/storage/mvcc" ) -func Range(ctx context.Context, lg *zap.Logger, kv mvcc.KV, r *pb.RangeRequest) (resp *pb.RangeResponse, trace *traceutil.Trace, err error) { +func Range(ctx context.Context, lg *zap.Logger, kv mvcc.KV, r *pb.RangeRequest, withTotalCount bool) (resp *pb.RangeResponse, trace *traceutil.Trace, err error) { ctx, trace = traceutil.EnsureTrace(ctx, lg, "range") defer func(start time.Time) { success := err == nil @@ -37,18 +37,19 @@ func Range(ctx context.Context, lg *zap.Logger, kv mvcc.KV, r *pb.RangeRequest) }(time.Now()) txnRead := kv.Read(mvcc.ConcurrentReadTxMode, trace) defer txnRead.End() - resp, err = executeRange(ctx, lg, txnRead, r) + resp, err = executeRange(ctx, lg, txnRead, r, withTotalCount) return resp, trace, err } -func executeRange(ctx context.Context, lg *zap.Logger, txnRead mvcc.TxnRead, r *pb.RangeRequest) (*pb.RangeResponse, error) { +func executeRange(ctx context.Context, lg *zap.Logger, txnRead mvcc.TxnRead, r *pb.RangeRequest, withTotalCount bool) (*pb.RangeResponse, error) { trace := traceutil.Get(ctx) limit := rangeLimit(r) ro := mvcc.RangeOptions{ - Limit: limit, - Rev: r.Revision, - CountOnly: r.CountOnly, + Limit: limit, + Rev: r.Revision, + CountOnly: r.CountOnly, + WithTotalCount: withTotalCount, } rr, err := txnRead.Range(ctx, r.Key, mkGteRange(r.RangeEnd), ro) diff --git a/server/etcdserver/txn/txn.go b/server/etcdserver/txn/txn.go index c937d9b4958e..3407f468b095 100644 --- a/server/etcdserver/txn/txn.go +++ b/server/etcdserver/txn/txn.go @@ -147,7 +147,7 @@ func executeTxn(ctx context.Context, lg *zap.Logger, txnWrite mvcc.TxnWrite, rt traceutil.Field{Key: "req_type", Value: "range"}, traceutil.Field{Key: "range_begin", Value: string(tv.RequestRange.Key)}, traceutil.Field{Key: "range_end", Value: string(tv.RequestRange.RangeEnd)}) - resp, err := executeRange(ctx, lg, txnWrite, tv.RequestRange) + resp, err := executeRange(ctx, lg, txnWrite, tv.RequestRange, true) if err != nil { return 0, fmt.Errorf("applyTxn: failed Range: %w", err) } diff --git a/server/etcdserver/txn/txn_test.go b/server/etcdserver/txn/txn_test.go index 89e9cbd40429..92e2bd76c52d 100644 --- a/server/etcdserver/txn/txn_test.go +++ b/server/etcdserver/txn/txn_test.go @@ -268,7 +268,7 @@ func TestCheckRange(t *testing.T) { ctx, cancel := context.WithCancel(t.Context()) defer cancel() - _, _, err := Range(ctx, zaptest.NewLogger(t), s, tc.op.GetRequestRange()) + _, _, err := Range(ctx, zaptest.NewLogger(t), s, tc.op.GetRequestRange(), true) gotErr := "" if err != nil { diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 9724fa0743d0..dfc5504f67ae 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -142,7 +142,7 @@ func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRe return s.authStore.IsRangePermitted(ai, r.Key, r.RangeEnd) } - get := func() { resp, _, err = txn.Range(ctx, s.Logger(), s.KV(), r) } + get := func() { resp, _, err = txn.Range(ctx, s.Logger(), s.KV(), r, true) } if serr := s.doSerialize(ctx, chk, get); serr != nil { err = serr return nil, err diff --git a/server/storage/mvcc/index.go b/server/storage/mvcc/index.go index 2527705c9c6d..41b43c5f85ac 100644 --- a/server/storage/mvcc/index.go +++ b/server/storage/mvcc/index.go @@ -24,7 +24,7 @@ import ( type index interface { Get(key []byte, atRev int64) (rev, created Revision, ver int64, err error) Range(key, end []byte, atRev int64) ([][]byte, []Revision) - Revisions(key, end []byte, atRev int64, limit int) ([]Revision, int) + Revisions(key, end []byte, atRev int64, limit int, withTotalCount bool) ([]Revision, int) CountRevisions(key, end []byte, atRev int64) int Put(key []byte, rev Revision) Tombstone(key []byte, rev Revision) error @@ -109,7 +109,7 @@ func (ti *treeIndex) unsafeVisit(key, end []byte, f func(ki *keyIndex) bool) { // Revisions returns limited number of revisions from key(included) to end(excluded) // at the given rev. The returned slice is sorted in the order of key. There is no limit if limit <= 0. // The second return parameter isn't capped by the limit and reflects the total number of revisions. -func (ti *treeIndex) Revisions(key, end []byte, atRev int64, limit int) (revs []Revision, total int) { +func (ti *treeIndex) Revisions(key, end []byte, atRev int64, limit int, withTotalCount bool) (revs []Revision, total int) { ti.RLock() defer ti.RUnlock() @@ -125,10 +125,17 @@ func (ti *treeIndex) Revisions(key, end []byte, atRev int64, limit int) (revs [] if limit <= 0 || len(revs) < limit { revs = append(revs, rev) } - total++ + if withTotalCount { + total++ + } else if limit > 0 && len(revs) >= limit { + return false + } } return true }) + if !withTotalCount { + total = len(revs) + } return revs, total } diff --git a/server/storage/mvcc/index_test.go b/server/storage/mvcc/index_test.go index d7f32fded2d8..88811fd94cda 100644 --- a/server/storage/mvcc/index_test.go +++ b/server/storage/mvcc/index_test.go @@ -223,7 +223,7 @@ func TestIndexRevision(t *testing.T) { }, } for i, tt := range tests { - revs, _ := ti.Revisions(tt.key, tt.end, tt.atRev, tt.limit) + revs, _ := ti.Revisions(tt.key, tt.end, tt.atRev, tt.limit, true) if !reflect.DeepEqual(revs, tt.wrevs) { t.Errorf("#%d limit %d: revs = %+v, want %+v", i, tt.limit, revs, tt.wrevs) } diff --git a/server/storage/mvcc/kv.go b/server/storage/mvcc/kv.go index fbb71cf5b625..ef8a9613b889 100644 --- a/server/storage/mvcc/kv.go +++ b/server/storage/mvcc/kv.go @@ -24,9 +24,10 @@ import ( ) type RangeOptions struct { - Limit int64 - Rev int64 - CountOnly bool + Limit int64 + Rev int64 + CountOnly bool + WithTotalCount bool } type RangeResult struct { diff --git a/server/storage/mvcc/kv_test.go b/server/storage/mvcc/kv_test.go index bfe9a5987594..ab1b61c5463d 100644 --- a/server/storage/mvcc/kv_test.go +++ b/server/storage/mvcc/kv_test.go @@ -237,7 +237,7 @@ func testKVRangeLimit(t *testing.T, f rangeFunc) { {100, 3, kvs}, } for i, tt := range tests { - r, err := f(s, []byte("foo"), []byte("foo3"), RangeOptions{Limit: tt.limit}) + r, err := f(s, []byte("foo"), []byte("foo3"), RangeOptions{Limit: tt.limit, WithTotalCount: true}) if err != nil { t.Fatalf("#%d: range error (%v)", i, err) } diff --git a/server/storage/mvcc/kvstore_test.go b/server/storage/mvcc/kvstore_test.go index e9239c2e1d1b..29a623eedf05 100644 --- a/server/storage/mvcc/kvstore_test.go +++ b/server/storage/mvcc/kvstore_test.go @@ -1027,7 +1027,7 @@ type fakeIndex struct { indexCompactRespc chan map[Revision]struct{} } -func (i *fakeIndex) Revisions(key, end []byte, atRev int64, limit int) ([]Revision, int) { +func (i *fakeIndex) Revisions(key, end []byte, atRev int64, limit int, withTotalCount bool) ([]Revision, int) { _, rev := i.Range(key, end, atRev) if len(rev) >= limit { rev = rev[:limit] diff --git a/server/storage/mvcc/kvstore_txn.go b/server/storage/mvcc/kvstore_txn.go index d6d8750d6962..7e537243697c 100644 --- a/server/storage/mvcc/kvstore_txn.go +++ b/server/storage/mvcc/kvstore_txn.go @@ -85,7 +85,7 @@ func (tr *storeTxnCommon) rangeKeys(ctx context.Context, key, end []byte, curRev tr.trace.Step("count revisions from in-memory index tree") return &RangeResult{KVs: nil, Count: total, Rev: curRev}, nil } - revpairs, total := tr.s.kvindex.Revisions(key, end, rev, int(ro.Limit)) + revpairs, total := tr.s.kvindex.Revisions(key, end, rev, int(ro.Limit), ro.WithTotalCount) tr.trace.Step("range keys from in-memory index tree") if len(revpairs) == 0 { return &RangeResult{KVs: nil, Count: total, Rev: curRev}, nil From a0dec2597d28d3888e48c74e223a9e5168933e98 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 17 Apr 2026 09:17:29 -0700 Subject: [PATCH 0917/1068] build(deps): bump go.opentelemetry.io/otel/sdk from 1.42.0 to 1.43.0 Bumps [go.opentelemetry.io/otel/sdk](https://github.com/open-telemetry/opentelemetry-go) from 1.42.0 to 1.43.0. - [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases) - [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md) - [Commits](open-telemetry/opentelemetry-go@v1.42.0...v1.43.0) Signed-off-by: Ivan Valdes --- updated-dependencies: - dependency-name: go.opentelemetry.io/otel/sdk dependency-version: 1.43.0 dependency-type: indirect ... References: * https://github.com/etcd-io/etcd/pull/21590 * https://github.com/etcd-io/etcd/pull/21591 * https://github.com/etcd-io/etcd/pull/21592 * https://github.com/etcd-io/etcd/pull/21593 * https://github.com/etcd-io/etcd/pull/21594 Signed-off-by: Ivan Valdes --- api/go.mod | 4 ++-- api/go.sum | 20 ++++++++++---------- cache/go.sum | 20 ++++++++++---------- client/v3/go.mod | 6 +++--- client/v3/go.sum | 20 ++++++++++---------- etcdctl/go.sum | 20 ++++++++++---------- etcdutl/go.mod | 8 ++++---- etcdutl/go.sum | 20 ++++++++++---------- go.mod | 8 ++++---- go.sum | 20 ++++++++++---------- pkg/go.mod | 6 +++--- pkg/go.sum | 20 ++++++++++---------- server/go.mod | 8 ++++---- server/go.sum | 20 ++++++++++---------- tests/go.mod | 8 ++++---- tests/go.sum | 20 ++++++++++---------- tools/testgrid-analysis/go.mod | 4 ++-- tools/testgrid-analysis/go.sum | 20 ++++++++++---------- 18 files changed, 126 insertions(+), 126 deletions(-) diff --git a/api/go.mod b/api/go.mod index b6ba89cdf07c..92e57ba40d35 100644 --- a/api/go.mod +++ b/api/go.mod @@ -18,8 +18,8 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - go.opentelemetry.io/otel v1.42.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect + go.opentelemetry.io/otel v1.43.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect golang.org/x/net v0.52.0 // indirect golang.org/x/sys v0.42.0 // indirect golang.org/x/text v0.35.0 // indirect diff --git a/api/go.sum b/api/go.sum index 43570f9037c5..91f3992bb69c 100644 --- a/api/go.sum +++ b/api/go.sum @@ -28,16 +28,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= -go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= -go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= -go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= -go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= -go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= -go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= -go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= -go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= -go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= +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/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= diff --git a/cache/go.sum b/cache/go.sum index 3d453126b38c..f44dbc8af64c 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -46,16 +46,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= -go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= -go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= -go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= -go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= -go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= -go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= -go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= -go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= -go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= +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/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= 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= diff --git a/client/v3/go.mod b/client/v3/go.mod index f10886e00963..64d6000b092c 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -30,9 +30,9 @@ require ( github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.5 // indirect github.com/prometheus/procfs v0.16.1 // indirect - go.opentelemetry.io/otel/metric v1.42.0 // indirect - go.opentelemetry.io/otel/sdk v1.42.0 // indirect - go.opentelemetry.io/otel/trace v1.42.0 // indirect + go.opentelemetry.io/otel/metric v1.43.0 // indirect + go.opentelemetry.io/otel/sdk v1.43.0 // indirect + go.opentelemetry.io/otel/trace v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.52.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 234a8dd41922..c529edee34da 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -52,16 +52,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= -go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= -go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= -go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= -go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= -go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= -go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= -go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= -go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= -go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= +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/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= 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= diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 4a99a420f153..b8d3e2fc375b 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -83,16 +83,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= -go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= -go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= -go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= -go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= -go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= -go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= -go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= -go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= -go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= +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/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= 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= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index e0b0f2d67b4f..72dd1dbd66df 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -70,12 +70,12 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect - go.opentelemetry.io/otel v1.42.0 // indirect + go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect - go.opentelemetry.io/otel/metric v1.42.0 // indirect - go.opentelemetry.io/otel/sdk v1.42.0 // indirect - go.opentelemetry.io/otel/trace v1.42.0 // indirect + go.opentelemetry.io/otel/metric v1.43.0 // indirect + go.opentelemetry.io/otel/sdk v1.43.0 // indirect + go.opentelemetry.io/otel/trace v1.43.0 // indirect go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 95c226b7cd3b..e075e742153f 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -112,20 +112,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= -go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= -go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= +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/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= -go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= -go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= -go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= -go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= -go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= -go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= -go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= -go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/go.mod b/go.mod index d61d9e4d61bb..2fef859414f1 100644 --- a/go.mod +++ b/go.mod @@ -84,12 +84,12 @@ require ( go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect - go.opentelemetry.io/otel v1.42.0 // indirect + go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect - go.opentelemetry.io/otel/metric v1.42.0 // indirect - go.opentelemetry.io/otel/sdk v1.42.0 // indirect - go.opentelemetry.io/otel/trace v1.42.0 // indirect + go.opentelemetry.io/otel/metric v1.43.0 // indirect + go.opentelemetry.io/otel/sdk v1.43.0 // indirect + go.opentelemetry.io/otel/trace v1.43.0 // indirect go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect diff --git a/go.sum b/go.sum index ef3f3d266e3e..ed39bcbf1db6 100644 --- a/go.sum +++ b/go.sum @@ -120,20 +120,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= -go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= -go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= +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/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= -go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= -go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= -go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= -go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= -go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= -go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= -go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= -go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/pkg/go.mod b/pkg/go.mod index 9be5d396f3e1..f9625bb02a0e 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -11,7 +11,7 @@ require ( github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.opentelemetry.io/otel/trace v1.42.0 + go.opentelemetry.io/otel/trace v1.43.0 go.uber.org/zap v1.27.1 golang.org/x/sys v0.42.0 google.golang.org/grpc v1.80.0 @@ -23,8 +23,8 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - go.opentelemetry.io/otel v1.42.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect + go.opentelemetry.io/otel v1.43.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.52.0 // indirect golang.org/x/text v0.35.0 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index a7b2cc83ffd1..b42f7bb599ec 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -39,16 +39,16 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= -go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= -go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= -go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= -go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= -go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= -go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= -go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= -go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= -go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= +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/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= 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= diff --git a/server/go.mod b/server/go.mod index c1343bc09790..f21825500ada 100644 --- a/server/go.mod +++ b/server/go.mod @@ -30,10 +30,10 @@ require ( go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 - go.opentelemetry.io/otel v1.42.0 + go.opentelemetry.io/otel v1.43.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 - go.opentelemetry.io/otel/sdk v1.42.0 - go.opentelemetry.io/otel/trace v1.42.0 + go.opentelemetry.io/otel/sdk v1.43.0 + go.opentelemetry.io/otel/trace v1.43.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.49.0 golang.org/x/net v0.52.0 @@ -65,7 +65,7 @@ require ( github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect - go.opentelemetry.io/otel/metric v1.42.0 // indirect + go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect diff --git a/server/go.sum b/server/go.sum index 4eef55e4f9d1..18dce985d5d9 100644 --- a/server/go.sum +++ b/server/go.sum @@ -92,20 +92,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= -go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= -go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= +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/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= -go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= -go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= -go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= -go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= -go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= -go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= -go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= -go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/tests/go.mod b/tests/go.mod index a094de01e349..92e18e5bb06d 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -42,8 +42,8 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 - go.opentelemetry.io/otel v1.42.0 - go.opentelemetry.io/otel/sdk v1.42.0 + go.opentelemetry.io/otel v1.43.0 + go.opentelemetry.io/otel/sdk v1.43.0 go.opentelemetry.io/proto/otlp v1.10.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.49.0 @@ -92,8 +92,8 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect - go.opentelemetry.io/otel/metric v1.42.0 // indirect - go.opentelemetry.io/otel/trace v1.42.0 // indirect + go.opentelemetry.io/otel/metric v1.43.0 // indirect + go.opentelemetry.io/otel/trace v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.52.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 4defb9fbfb36..265b22e17979 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -126,20 +126,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= -go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= -go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= +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/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= -go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= -go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= -go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= -go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= -go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= -go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= -go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= -go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 1e4550461e31..22bedc24d3fe 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -15,8 +15,8 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.10 // indirect - go.opentelemetry.io/otel v1.42.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect + go.opentelemetry.io/otel v1.43.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect golang.org/x/net v0.52.0 // indirect golang.org/x/sys v0.42.0 // indirect golang.org/x/text v0.35.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index e744a7f0ccf7..5df44d6abcf2 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1184,16 +1184,16 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= 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/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= -go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= -go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= -go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= -go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= -go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= -go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= -go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= -go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= -go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= +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/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= From 6d64619cd9932d8dacf7b0e0b0a5fb3198512922 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Apr 2026 17:33:17 +0000 Subject: [PATCH 0918/1068] build(deps): bump github/codeql-action from 4.35.1 to 4.35.2 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.1 to 4.35.2. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/c10b8064de6f491fea524254123dbe5e09572f13...95e58e9a2cdfd71adc6e0353d5c52f41a045d225) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.35.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index adb49f7bfc60..b5840725c548 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1 + uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1 + uses: github/codeql-action/autobuild@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1 + uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 178d5f5b06f1..403ce11c4e50 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1 + uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2 with: sarif_file: results.sarif From bd07558533ab5e60e0650fedbf4ef9f818bfe3f8 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Wed, 15 Apr 2026 13:49:49 -0400 Subject: [PATCH 0919/1068] mvcc: add unit test for Revisions withTotalCount parameter Signed-off-by: Jefftree --- server/storage/mvcc/index_test.go | 60 +++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/server/storage/mvcc/index_test.go b/server/storage/mvcc/index_test.go index 88811fd94cda..596423c4cffe 100644 --- a/server/storage/mvcc/index_test.go +++ b/server/storage/mvcc/index_test.go @@ -234,6 +234,66 @@ func TestIndexRevision(t *testing.T) { } } +func TestIndexRevisionsWithTotalCount(t *testing.T) { + allKeys := [][]byte{[]byte("foo"), []byte("foo1"), []byte("foo2"), []byte("foo2"), []byte("foo1"), []byte("foo")} + allRevs := []Revision{{Main: 1}, {Main: 2}, {Main: 3}, {Main: 4}, {Main: 5}, {Main: 6}} + + ti := newTreeIndex(zaptest.NewLogger(t)) + for i := range allKeys { + ti.Put(allKeys[i], allRevs[i]) + } + + // Range [foo, fop) @ rev 6 matches 3 keys: foo, foo1, foo2. + tests := []struct { + key, end []byte + atRev int64 + limit int + withTotalCount bool + wrevs []Revision + wtotal int + }{ + // withTotalCount=true with limit returns the full total + { + []byte("foo"), []byte("fop"), 6, 1, true, + []Revision{{Main: 6}}, 3, + }, + // withTotalCount=false with limit caps total at len(revs) + { + []byte("foo"), []byte("fop"), 6, 1, false, + []Revision{{Main: 6}}, 1, + }, + // withTotalCount=false with limit larger than matches returns full total + { + []byte("foo"), []byte("fop"), 6, 10, false, + []Revision{{Main: 6}, {Main: 5}, {Main: 4}}, 3, + }, + // withTotalCount=false without limit returns full total + { + []byte("foo"), []byte("fop"), 6, 0, false, + []Revision{{Main: 6}, {Main: 5}, {Main: 4}}, 3, + }, + // withTotalCount=true without limit returns full total + { + []byte("foo"), []byte("fop"), 6, 0, true, + []Revision{{Main: 6}, {Main: 5}, {Main: 4}}, 3, + }, + // withTotalCount=false with no matches + { + []byte("bar"), []byte("baz"), 6, 5, false, + nil, 0, + }, + } + for i, tt := range tests { + revs, total := ti.Revisions(tt.key, tt.end, tt.atRev, tt.limit, tt.withTotalCount) + if !reflect.DeepEqual(revs, tt.wrevs) { + t.Errorf("#%d: revs = %+v, want %+v", i, revs, tt.wrevs) + } + if total != tt.wtotal { + t.Errorf("#%d: total = %d, want %d", i, total, tt.wtotal) + } + } +} + func TestIndexCompactAndKeep(t *testing.T) { maxRev := int64(20) From 5a76157e724681b835786052578a04d63c05bde7 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 17 Apr 2026 09:21:45 -0700 Subject: [PATCH 0920/1068] build(deps): bump golang.org/x/sys from 0.42.0 to 0.43.0 Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.42.0 to 0.43.0. - [Commits](golang/sys@v0.42.0...v0.43.0) Signed-off-by: Ivan Valdes --- updated-dependencies: - dependency-name: golang.org/x/sys dependency-version: 0.43.0 dependency-type: indirect update-type: version-update:semver-minor ... Reference: https://github.com/etcd-io/etcd/pull/21598 Signed-off-by: Ivan Valdes --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- go.work.sum | 1 + pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 25 files changed, 37 insertions(+), 36 deletions(-) diff --git a/api/go.mod b/api/go.mod index 92e57ba40d35..186ffa6a9097 100644 --- a/api/go.mod +++ b/api/go.mod @@ -21,7 +21,7 @@ require ( go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect golang.org/x/net v0.52.0 // indirect - golang.org/x/sys v0.42.0 // indirect + golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/api/go.sum b/api/go.sum index 91f3992bb69c..97674d8b4d54 100644 --- a/api/go.sum +++ b/api/go.sum @@ -40,8 +40,8 @@ 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= golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= diff --git a/cache/go.mod b/cache/go.mod index 8ae7d63b535a..848e5cdb7d19 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -23,7 +23,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect golang.org/x/net v0.52.0 // indirect - golang.org/x/sys v0.42.0 // indirect + golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect diff --git a/cache/go.sum b/cache/go.sum index f44dbc8af64c..77b5c3c74859 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -66,8 +66,8 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 9a128483454c..43a91bb37aa5 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.7.0 github.com/stretchr/testify v1.11.1 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.42.0 + golang.org/x/sys v0.43.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index a738d0455ddc..f6bf09eb9c16 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -24,8 +24,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index 64d6000b092c..bce5671752fa 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -36,7 +36,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.52.0 // indirect - golang.org/x/sys v0.42.0 // indirect + golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index c529edee34da..d37f0a306a2c 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -74,8 +74,8 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 100d29ddfa96..f2ac8f96c08f 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -42,7 +42,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.52.0 // indirect - golang.org/x/sys v0.42.0 // indirect + golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index b8d3e2fc375b..12d5b005306d 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -105,8 +105,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 72dd1dbd66df..3978d2b5b033 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -81,7 +81,7 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.49.0 // indirect golang.org/x/net v0.52.0 // indirect - golang.org/x/sys v0.42.0 // indirect + golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.35.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index e075e742153f..daecf1b756d8 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -161,8 +161,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= diff --git a/go.mod b/go.mod index 2fef859414f1..f3facd095a0f 100644 --- a/go.mod +++ b/go.mod @@ -97,7 +97,7 @@ require ( golang.org/x/mod v0.34.0 // indirect golang.org/x/net v0.52.0 // indirect golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.42.0 // indirect + golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect diff --git a/go.sum b/go.sum index ed39bcbf1db6..b86893feaff9 100644 --- a/go.sum +++ b/go.sum @@ -171,8 +171,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= diff --git a/go.work.sum b/go.work.sum index d6e908b8c7e8..662a6d3d9b69 100644 --- a/go.work.sum +++ b/go.work.sum @@ -487,6 +487,7 @@ golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200317205521-2944c61d58b4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= diff --git a/pkg/go.mod b/pkg/go.mod index f9625bb02a0e..5d56eff7a8e6 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.opentelemetry.io/otel/trace v1.43.0 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.42.0 + golang.org/x/sys v0.43.0 google.golang.org/grpc v1.80.0 ) diff --git a/pkg/go.sum b/pkg/go.sum index b42f7bb599ec..6040d15a2c0b 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -58,8 +58,8 @@ go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= diff --git a/server/go.mod b/server/go.mod index f21825500ada..4fdfeb0057f4 100644 --- a/server/go.mod +++ b/server/go.mod @@ -69,7 +69,7 @@ require ( go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/sys v0.42.0 // indirect + golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/server/go.sum b/server/go.sum index 18dce985d5d9..a1ca588b5ca9 100644 --- a/server/go.sum +++ b/server/go.sum @@ -140,8 +140,8 @@ golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= diff --git a/tests/go.mod b/tests/go.mod index 92e18e5bb06d..5363c8c5103d 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -97,7 +97,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.52.0 // indirect - golang.org/x/sys v0.42.0 // indirect + golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect diff --git a/tests/go.sum b/tests/go.sum index 265b22e17979..475fee9c3bd3 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -175,8 +175,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 7b2d5a446d91..bc22f8e55807 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -241,7 +241,7 @@ require ( golang.org/x/mod v0.34.0 // indirect golang.org/x/net v0.52.0 // indirect golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.42.0 // indirect + golang.org/x/sys v0.43.0 // indirect golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c // indirect golang.org/x/term v0.41.0 // indirect golang.org/x/text v0.35.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index f60518d89036..1281f7fedc83 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -652,8 +652,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c h1:6a8FdnNk6bTXBjR4AGKFgUKuo+7GnR3FX5L7CbveeZc= golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c/go.mod h1:TpUTTEp9frx7rTdLpC9gFG9kdI7zVLFTFFlqaH2Cncw= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 22bedc24d3fe..fc90c0affc8e 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -18,7 +18,7 @@ require ( go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect golang.org/x/net v0.52.0 // indirect - golang.org/x/sys v0.42.0 // indirect + golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/grpc v1.80.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 5df44d6abcf2..7efbbb5ab2fb 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1489,8 +1489,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From 89208c689d928dd518ff9d72888a540acd7a70b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Apr 2026 17:32:58 +0000 Subject: [PATCH 0921/1068] build(deps): bump actions/github-script from 8.0.0 to 9.0.0 Bumps [actions/github-script](https://github.com/actions/github-script) from 8.0.0 to 9.0.0. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/ed597411d8f924073f98dfc5c65a23a2325f34cd...3a2844b7e9c422d3c10d287c895573f7108da1b3) --- updated-dependencies: - dependency-name: actions/github-script dependency-version: 9.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/cherrypick-bot-ok-to-test.yaml | 2 +- .github/workflows/gh-workflow-approve.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cherrypick-bot-ok-to-test.yaml b/.github/workflows/cherrypick-bot-ok-to-test.yaml index 82598b6f41ee..64fcb1942d11 100644 --- a/.github/workflows/cherrypick-bot-ok-to-test.yaml +++ b/.github/workflows/cherrypick-bot-ok-to-test.yaml @@ -23,7 +23,7 @@ jobs: pull-requests: write steps: - name: Update PR - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 with: github-token: ${{ secrets.GITHUB_TOKEN }} debug: ${{ secrets.ACTIONS_RUNNER_DEBUG == 'true' }} diff --git a/.github/workflows/gh-workflow-approve.yaml b/.github/workflows/gh-workflow-approve.yaml index 76422b4977f0..6a4c30691edd 100644 --- a/.github/workflows/gh-workflow-approve.yaml +++ b/.github/workflows/gh-workflow-approve.yaml @@ -22,7 +22,7 @@ jobs: actions: write steps: - name: Update PR - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 continue-on-error: true with: github-token: ${{ secrets.GITHUB_TOKEN }} From 7cb8c49cefbc7cc0e985bceb9ada0f25b3c88a89 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Thu, 16 Apr 2026 09:53:46 -0400 Subject: [PATCH 0922/1068] mvcc: use t.Run for TestIndexRevisionsWithTotalCount subtests Signed-off-by: Jefftree --- server/storage/mvcc/index_test.go | 115 +++++++++++++++++++----------- 1 file changed, 74 insertions(+), 41 deletions(-) diff --git a/server/storage/mvcc/index_test.go b/server/storage/mvcc/index_test.go index 596423c4cffe..2244dbedec79 100644 --- a/server/storage/mvcc/index_test.go +++ b/server/storage/mvcc/index_test.go @@ -245,52 +245,85 @@ func TestIndexRevisionsWithTotalCount(t *testing.T) { // Range [foo, fop) @ rev 6 matches 3 keys: foo, foo1, foo2. tests := []struct { - key, end []byte - atRev int64 - limit int + name string + key, end []byte + atRev int64 + limit int withTotalCount bool - wrevs []Revision - wtotal int + wrevs []Revision + wtotal int }{ - // withTotalCount=true with limit returns the full total { - []byte("foo"), []byte("fop"), 6, 1, true, - []Revision{{Main: 6}}, 3, - }, - // withTotalCount=false with limit caps total at len(revs) - { - []byte("foo"), []byte("fop"), 6, 1, false, - []Revision{{Main: 6}}, 1, - }, - // withTotalCount=false with limit larger than matches returns full total - { - []byte("foo"), []byte("fop"), 6, 10, false, - []Revision{{Main: 6}, {Main: 5}, {Main: 4}}, 3, - }, - // withTotalCount=false without limit returns full total - { - []byte("foo"), []byte("fop"), 6, 0, false, - []Revision{{Main: 6}, {Main: 5}, {Main: 4}}, 3, - }, - // withTotalCount=true without limit returns full total - { - []byte("foo"), []byte("fop"), 6, 0, true, - []Revision{{Main: 6}, {Main: 5}, {Main: 4}}, 3, - }, - // withTotalCount=false with no matches - { - []byte("bar"), []byte("baz"), 6, 5, false, - nil, 0, + name: "withTotalCount=true with limit returns the full total", + key: []byte("foo"), + end: []byte("fop"), + atRev: 6, + limit: 1, + withTotalCount: true, + wrevs: []Revision{{Main: 6}}, + wtotal: 3, + }, + { + name: "withTotalCount=false with limit caps total at len(revs)", + key: []byte("foo"), + end: []byte("fop"), + atRev: 6, + limit: 1, + withTotalCount: false, + wrevs: []Revision{{Main: 6}}, + wtotal: 1, + }, + { + name: "withTotalCount=false with limit larger than matches returns full total", + key: []byte("foo"), + end: []byte("fop"), + atRev: 6, + limit: 10, + withTotalCount: false, + wrevs: []Revision{{Main: 6}, {Main: 5}, {Main: 4}}, + wtotal: 3, + }, + { + name: "withTotalCount=false without limit returns full total", + key: []byte("foo"), + end: []byte("fop"), + atRev: 6, + limit: 0, + withTotalCount: false, + wrevs: []Revision{{Main: 6}, {Main: 5}, {Main: 4}}, + wtotal: 3, + }, + { + name: "withTotalCount=true without limit returns full total", + key: []byte("foo"), + end: []byte("fop"), + atRev: 6, + limit: 0, + withTotalCount: true, + wrevs: []Revision{{Main: 6}, {Main: 5}, {Main: 4}}, + wtotal: 3, + }, + { + name: "withTotalCount=false with no matches", + key: []byte("bar"), + end: []byte("baz"), + atRev: 6, + limit: 5, + withTotalCount: false, + wrevs: nil, + wtotal: 0, }, } - for i, tt := range tests { - revs, total := ti.Revisions(tt.key, tt.end, tt.atRev, tt.limit, tt.withTotalCount) - if !reflect.DeepEqual(revs, tt.wrevs) { - t.Errorf("#%d: revs = %+v, want %+v", i, revs, tt.wrevs) - } - if total != tt.wtotal { - t.Errorf("#%d: total = %d, want %d", i, total, tt.wtotal) - } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + revs, total := ti.Revisions(tt.key, tt.end, tt.atRev, tt.limit, tt.withTotalCount) + if !reflect.DeepEqual(revs, tt.wrevs) { + t.Errorf("revs = %+v, want %+v", revs, tt.wrevs) + } + if total != tt.wtotal { + t.Errorf("total = %d, want %d", total, tt.wtotal) + } + }) } } From 4b5a9d6583e08f39f32596ef5292f22314e976bc Mon Sep 17 00:00:00 2001 From: Jefftree Date: Fri, 17 Apr 2026 00:05:06 -0400 Subject: [PATCH 0923/1068] tests/common: fix flaky TestKVGet by zeroing non-deterministic RaftTerm Signed-off-by: Jefftree --- tests/common/kv_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index 244a6af6faca..8215227442dd 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -97,7 +97,6 @@ func TestKVGet(t *testing.T) { currentHeader := &etcdserverpb.ResponseHeader{ ClusterId: currentResp.Header.ClusterId, Revision: currentResp.Header.Revision, - RaftTerm: currentResp.Header.RaftTerm, } type testcase struct { @@ -157,6 +156,7 @@ func TestKVGet(t *testing.T) { resp, err := cc.Get(ctx, tt.begin, tt.options) require.NoErrorf(t, err, "count not get key %q, err: %s", tt.begin, err) resp.Header.MemberId = 0 + resp.Header.RaftTerm = 0 assert.Equal(t, tt.wantResponse, resp) }) } From 84e27448c0b608c803ba5e99a4d9e78530cd52d7 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 17 Apr 2026 09:23:45 -0700 Subject: [PATCH 0924/1068] build(deps): bump go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc from 0.65.0 to 0.68.0 Bumps [go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc](https://github.com/open-telemetry/opentelemetry-go-contrib) from 0.65.0 to 0.68.0. - [Release notes](https://github.com/open-telemetry/opentelemetry-go-contrib/releases) - [Changelog](https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/CHANGELOG.md) - [Commits](open-telemetry/opentelemetry-go-contrib@zpages/v0.65.0...zpages/v0.68.0) Signed-off-by: Ivan Valdes --- updated-dependencies: - dependency-name: go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc dependency-version: 0.68.0 dependency-type: indirect update-type: version-update:semver-minor ... Reference: https://github.com/etcd-io/etcd/pull/21599 Signed-off-by: Ivan Valdes --- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- server/go.mod | 4 ++-- server/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 3978d2b5b033..44a3894d0f5e 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -69,7 +69,7 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 // indirect go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect @@ -85,7 +85,7 @@ require ( golang.org/x/text v0.35.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect google.golang.org/grpc v1.80.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index daecf1b756d8..e9705d0ff32c 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -110,8 +110,8 @@ go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51L go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 h1:0Qx7VGBacMm9ZENQ7TnNObTYI4ShC+lHI16seduaxZo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0/go.mod h1:Sje3i3MjSPKTSPvVWCaL8ugBzJwik3u4smCjUeuupqg= 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/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= @@ -181,8 +181,8 @@ gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= -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-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/go.mod b/go.mod index f3facd095a0f..5bfe1ad6b033 100644 --- a/go.mod +++ b/go.mod @@ -83,7 +83,7 @@ require ( github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 // indirect go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect @@ -100,7 +100,7 @@ require ( golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/utils v0.0.0-20260108192941-914a6e750570 // indirect diff --git a/go.sum b/go.sum index b86893feaff9..89f349b2d4d6 100644 --- a/go.sum +++ b/go.sum @@ -118,8 +118,8 @@ go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51L go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 h1:0Qx7VGBacMm9ZENQ7TnNObTYI4ShC+lHI16seduaxZo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0/go.mod h1:Sje3i3MjSPKTSPvVWCaL8ugBzJwik3u4smCjUeuupqg= 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/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= @@ -193,8 +193,8 @@ gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= -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-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/server/go.mod b/server/go.mod index 4fdfeb0057f4..3a8df8db606d 100644 --- a/server/go.mod +++ b/server/go.mod @@ -29,7 +29,7 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 go.opentelemetry.io/otel v1.43.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 go.opentelemetry.io/otel/sdk v1.43.0 @@ -71,7 +71,7 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.35.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index a1ca588b5ca9..a1fefef29a07 100644 --- a/server/go.sum +++ b/server/go.sum @@ -90,8 +90,8 @@ go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51L go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 h1:0Qx7VGBacMm9ZENQ7TnNObTYI4ShC+lHI16seduaxZo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0/go.mod h1:Sje3i3MjSPKTSPvVWCaL8ugBzJwik3u4smCjUeuupqg= 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/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= @@ -160,8 +160,8 @@ gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= -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-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/tests/go.mod b/tests/go.mod index 5363c8c5103d..2440a04d40a4 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -41,7 +41,7 @@ require ( go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 go.opentelemetry.io/otel v1.43.0 go.opentelemetry.io/otel/sdk v1.43.0 go.opentelemetry.io/proto/otlp v1.10.0 @@ -100,7 +100,7 @@ require ( golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.35.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/utils v0.0.0-20260108192941-914a6e750570 // indirect diff --git a/tests/go.sum b/tests/go.sum index 475fee9c3bd3..f9315921b5d9 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -124,8 +124,8 @@ go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51L go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 h1:0Qx7VGBacMm9ZENQ7TnNObTYI4ShC+lHI16seduaxZo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0/go.mod h1:Sje3i3MjSPKTSPvVWCaL8ugBzJwik3u4smCjUeuupqg= 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/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= @@ -195,8 +195,8 @@ gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= -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-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= From afdf7e9f1782c2922113ae4db8386a06e024ed75 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Apr 2026 17:33:20 +0000 Subject: [PATCH 0925/1068] build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.0 to 7.0.1. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/bbbca2ddaa5d8feaa63e36b76fdaad77386f024f...043fb46d1a93c77aae656e7c1c64a875d1fc6a0a) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: 7.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 178d5f5b06f1..44db50250066 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -42,7 +42,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: SARIF file path: results.sarif From 767c48b3d12c386e882e652bdac171e09ef23b17 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Thu, 16 Apr 2026 23:16:03 -0400 Subject: [PATCH 0926/1068] txn: fix Range call in bench test to include withTotalCount parameter Signed-off-by: Jefftree --- server/etcdserver/txn/range_bench_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/etcdserver/txn/range_bench_test.go b/server/etcdserver/txn/range_bench_test.go index cd16516fa7c0..cd22a82cafaa 100644 --- a/server/etcdserver/txn/range_bench_test.go +++ b/server/etcdserver/txn/range_bench_test.go @@ -97,7 +97,7 @@ func BenchmarkRange(b *testing.B) { b.ReportAllocs() b.ResetTimer() for b.Loop() { - _, _, err := Range(ctx, zap.NewNop(), s, req) + _, _, err := Range(ctx, zap.NewNop(), s, req, false) if err != nil { b.Fatal(err) } From d61f26a68c9a17b4a0c9cded694f1932de00e37d Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 17 Apr 2026 09:25:46 -0700 Subject: [PATCH 0927/1068] build(deps): bump golang.org/x/tools from 0.43.0 to 0.44.0 in /tools/mod Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.43.0 to 0.44.0. - [Release notes](https://github.com/golang/tools/releases) - [Commits](golang/tools@v0.43.0...v0.44.0) Signed-off-by: Ivan Valdes --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-version: 0.44.0 dependency-type: direct:production update-type: version-update:semver-minor ... Reference: https://github.com/etcd-io/etcd/pull/21624 Signed-off-by: Ivan Valdes --- api/go.mod | 6 +++--- api/go.sum | 12 ++++++------ cache/go.mod | 6 +++--- cache/go.sum | 12 ++++++------ client/v3/go.mod | 6 +++--- client/v3/go.sum | 12 ++++++------ etcdctl/go.mod | 6 +++--- etcdctl/go.sum | 12 ++++++------ etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 12 ++++++------ go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- go.work.sum | 6 +++--- pkg/go.mod | 6 +++--- pkg/go.sum | 12 ++++++------ server/go.mod | 6 +++--- server/go.sum | 12 ++++++------ tests/go.mod | 6 +++--- tests/go.sum | 12 ++++++------ tools/mod/go.mod | 16 ++++++++-------- tools/mod/go.sum | 32 ++++++++++++++++---------------- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 6 +++--- tools/testgrid-analysis/go.sum | 12 ++++++------ 25 files changed, 126 insertions(+), 126 deletions(-) diff --git a/api/go.mod b/api/go.mod index 186ffa6a9097..28d9609fc2bf 100644 --- a/api/go.mod +++ b/api/go.mod @@ -20,9 +20,9 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect - golang.org/x/net v0.52.0 // indirect + golang.org/x/net v0.53.0 // indirect golang.org/x/sys v0.43.0 // indirect - golang.org/x/text v0.35.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect + golang.org/x/text v0.36.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 97674d8b4d54..4c39d011e289 100644 --- a/api/go.sum +++ b/api/go.sum @@ -38,18 +38,18 @@ go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfC go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= -golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= -golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= -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-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/cache/go.mod b/cache/go.mod index 848e5cdb7d19..8508e0ce6d8d 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -22,11 +22,11 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect - golang.org/x/net v0.52.0 // indirect + golang.org/x/net v0.53.0 // indirect golang.org/x/sys v0.43.0 // indirect - golang.org/x/text v0.35.0 // indirect + golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect google.golang.org/grpc v1.80.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/cache/go.sum b/cache/go.sum index 77b5c3c74859..6752a8ac0602 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -64,18 +64,18 @@ go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= -golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= -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-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/client/v3/go.mod b/client/v3/go.mod index bce5671752fa..1317ded1f7da 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -35,11 +35,11 @@ require ( go.opentelemetry.io/otel/trace v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.52.0 // indirect + golang.org/x/net v0.53.0 // indirect golang.org/x/sys v0.43.0 // indirect - golang.org/x/text v0.35.0 // indirect + golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index d37f0a306a2c..46db042cde19 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -72,18 +72,18 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= -golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= -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-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index f2ac8f96c08f..0f231c32a280 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -41,11 +41,11 @@ require ( github.com/olekukonko/ll v0.1.6 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.52.0 // indirect + golang.org/x/net v0.53.0 // indirect golang.org/x/sys v0.43.0 // indirect - golang.org/x/text v0.35.0 // indirect + golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 12d5b005306d..71890adf5b5a 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -102,21 +102,21 @@ go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= -golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= -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-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 44a3894d0f5e..6ae072b7b0e0 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -79,10 +79,10 @@ require ( go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.49.0 // indirect - golang.org/x/net v0.52.0 // indirect + golang.org/x/crypto v0.50.0 // indirect + golang.org/x/net v0.53.0 // indirect golang.org/x/sys v0.43.0 // indirect - golang.org/x/text v0.35.0 // indirect + golang.org/x/text v0.36.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index e9705d0ff32c..c1cb0f33c582 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -141,8 +141,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= -golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= +golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= +golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -150,8 +150,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= -golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -165,8 +165,8 @@ golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index 5bfe1ad6b033..121666b71dbd 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 - golang.org/x/tools v0.43.0 + golang.org/x/tools v0.44.0 google.golang.org/grpc v1.80.0 google.golang.org/protobuf v1.36.11 ) @@ -93,12 +93,12 @@ require ( go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.49.0 // indirect - golang.org/x/mod v0.34.0 // indirect - golang.org/x/net v0.52.0 // indirect + golang.org/x/crypto v0.50.0 // indirect + golang.org/x/mod v0.35.0 // indirect + golang.org/x/net v0.53.0 // indirect golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.43.0 // indirect - golang.org/x/text v0.35.0 // indirect + golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index 89f349b2d4d6..75c947df7b6f 100644 --- a/go.sum +++ b/go.sum @@ -149,19 +149,19 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= -golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= +golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= +golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI= -golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= +golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= +golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= -golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -175,16 +175,16 @@ golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s= -golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= +golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= +golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go.work.sum b/go.work.sum index 662a6d3d9b69..df9d7185d291 100644 --- a/go.work.sum +++ b/go.work.sum @@ -482,17 +482,17 @@ golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= +golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200317205521-2944c61d58b4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= -golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= +golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= gonum.org/v1/tools v0.0.0-20200318103217-c168b003ce8c h1:cJWOvXtcaFSGXz2F4z2AMM0VV7edDDGrxb5GLQH7ayQ= diff --git a/pkg/go.mod b/pkg/go.mod index 5d56eff7a8e6..bbed810dca0e 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -26,9 +26,9 @@ require ( go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.52.0 // indirect - golang.org/x/text v0.35.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect + golang.org/x/net v0.53.0 // indirect + golang.org/x/text v0.36.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index 6040d15a2c0b..26b76abbe107 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -56,16 +56,16 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= -golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= -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-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/server/go.mod b/server/go.mod index 3a8df8db606d..37493916507f 100644 --- a/server/go.mod +++ b/server/go.mod @@ -35,8 +35,8 @@ require ( go.opentelemetry.io/otel/sdk v1.43.0 go.opentelemetry.io/otel/trace v1.43.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.49.0 - golang.org/x/net v0.52.0 + golang.org/x/crypto v0.50.0 + golang.org/x/net v0.53.0 golang.org/x/time v0.15.0 google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 google.golang.org/grpc v1.80.0 @@ -70,7 +70,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/sys v0.43.0 // indirect - golang.org/x/text v0.35.0 // indirect + golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index a1fefef29a07..735b0872ed99 100644 --- a/server/go.sum +++ b/server/go.sum @@ -121,8 +121,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= -golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= +golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= +golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -130,8 +130,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= -golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -144,8 +144,8 @@ golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index 2440a04d40a4..8975eaaf2e70 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -46,7 +46,7 @@ require ( go.opentelemetry.io/otel/sdk v1.43.0 go.opentelemetry.io/proto/otlp v1.10.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.49.0 + golang.org/x/crypto v0.50.0 golang.org/x/sync v0.20.0 golang.org/x/time v0.15.0 google.golang.org/grpc v1.80.0 @@ -96,9 +96,9 @@ require ( go.opentelemetry.io/otel/trace v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.52.0 // indirect + golang.org/x/net v0.53.0 // indirect golang.org/x/sys v0.43.0 // indirect - golang.org/x/text v0.35.0 // indirect + golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index f9315921b5d9..10019d0f5d8f 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -155,8 +155,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= -golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= +golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= +golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -164,8 +164,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= -golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -179,8 +179,8 @@ golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index bc22f8e55807..66a06a7d8133 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -16,7 +16,7 @@ require ( go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee - golang.org/x/tools v0.43.0 + golang.org/x/tools v0.44.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1 google.golang.org/protobuf v1.36.11 gotest.tools/gotestsum v1.13.0 @@ -236,17 +236,17 @@ require ( go.uber.org/zap v1.27.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.49.0 // indirect + golang.org/x/crypto v0.50.0 // indirect golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358 // indirect - golang.org/x/mod v0.34.0 // indirect - golang.org/x/net v0.52.0 // indirect + golang.org/x/mod v0.35.0 // indirect + golang.org/x/net v0.53.0 // indirect golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.43.0 // indirect - golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c // indirect - golang.org/x/term v0.41.0 // indirect - golang.org/x/text v0.35.0 // indirect + golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa // indirect + golang.org/x/term v0.42.0 // indirect + golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect google.golang.org/grpc v1.80.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 1281f7fedc83..af58efd4268d 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -571,8 +571,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= -golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= +golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= +golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -588,8 +588,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI= -golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= +golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= +golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -610,8 +610,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= -golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -654,8 +654,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c h1:6a8FdnNk6bTXBjR4AGKFgUKuo+7GnR3FX5L7CbveeZc= -golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c/go.mod h1:TpUTTEp9frx7rTdLpC9gFG9kdI7zVLFTFFlqaH2Cncw= +golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa h1:efT73AJZfAAUV7SOip6pWGkwJDzIGiKBZGVzHYa+ve4= +golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa/go.mod h1:kHjTxDEnAu6/Nl9lDkzjWpR+bmKfxeiRuSDlsMb70gE= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -668,8 +668,8 @@ golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU= -golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A= +golang.org/x/term v0.42.0 h1:UiKe+zDFmJobeJ5ggPwOshJIVt6/Ft0rcfrXZDLWAWY= +golang.org/x/term v0.42.0/go.mod h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -683,8 +683,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= @@ -699,8 +699,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s= -golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= +golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= +golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= @@ -712,8 +712,8 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= -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-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1 h1:/WILD1UcXj/ujCxgoL/DvRgt2CP3txG8+FwkUbb9110= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 83ed0c23e1ad..f2a2889d92c8 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -22,6 +22,6 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect golang.org/x/image v0.38.0 // indirect - golang.org/x/text v0.35.0 // indirect + golang.org/x/text v0.36.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 604abde6768f..dc7ea9704c2a 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -55,8 +55,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index fc90c0affc8e..66b4fc381dab 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -17,9 +17,9 @@ require ( github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect - golang.org/x/net v0.52.0 // indirect + golang.org/x/net v0.53.0 // indirect golang.org/x/sys v0.43.0 // indirect - golang.org/x/text v0.35.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect + golang.org/x/text v0.36.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect google.golang.org/grpc v1.80.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 7efbbb5ab2fb..984c6fda5337 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1341,8 +1341,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= -golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1521,8 +1521,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1848,8 +1848,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= -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-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= From ce4fe36cf8e57d37c6f3efacce3bfb4012fb86dc Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 17 Apr 2026 12:53:22 +0100 Subject: [PATCH 0928/1068] Simplify (*treeIndex) Revisions Signed-off-by: Benjamin Wang --- server/storage/mvcc/index.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/server/storage/mvcc/index.go b/server/storage/mvcc/index.go index 41b43c5f85ac..16b54ae90bbd 100644 --- a/server/storage/mvcc/index.go +++ b/server/storage/mvcc/index.go @@ -122,20 +122,18 @@ func (ti *treeIndex) Revisions(key, end []byte, atRev int64, limit int, withTota } ti.unsafeVisit(key, end, func(ki *keyIndex) bool { if rev, _, _, err := ki.get(ti.lg, atRev); err == nil { - if limit <= 0 || len(revs) < limit { + reachedLimit := limit > 0 && len(revs) >= limit + if !reachedLimit { revs = append(revs, rev) + } else { + if !withTotalCount { + return false + } } - if withTotalCount { - total++ - } else if limit > 0 && len(revs) >= limit { - return false - } + total++ } return true }) - if !withTotalCount { - total = len(revs) - } return revs, total } From 7ca72c8f3fca0d7e082fadacfda48b4b95d4ca1d Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 17 Apr 2026 09:28:48 -0700 Subject: [PATCH 0929/1068] build(deps): bump github.com/grpc-ecosystem/grpc-gateway/v2 Bumps [github.com/grpc-ecosystem/grpc-gateway/v2](https://github.com/grpc-ecosystem/grpc-gateway) from 2.28.0 to 2.29.0. - [Release notes](https://github.com/grpc-ecosystem/grpc-gateway/releases) - [Commits](grpc-ecosystem/grpc-gateway@v2.28.0...v2.29.0) Signed-off-by: Ivan Valdes --- updated-dependencies: - dependency-name: github.com/grpc-ecosystem/grpc-gateway/v2 dependency-version: 2.29.0 dependency-type: direct:production update-type: version-update:semver-minor ... Reference: https://github.com/etcd-io/etcd/pull/21626 Signed-off-by: Ivan Valdes --- api/go.mod | 6 +++--- api/go.sum | 12 ++++++------ cache/go.mod | 6 +++--- cache/go.sum | 12 ++++++------ client/v3/go.mod | 6 +++--- client/v3/go.sum | 12 ++++++------ etcdctl/go.mod | 6 +++--- etcdctl/go.sum | 12 ++++++------ etcdutl/go.mod | 6 +++--- etcdutl/go.sum | 12 ++++++------ go.mod | 6 +++--- go.sum | 12 ++++++------ go.work.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 6 +++--- server/go.sum | 12 ++++++------ tests/go.mod | 6 +++--- tests/go.sum | 12 ++++++------ tools/mod/go.mod | 6 +++--- tools/mod/go.sum | 12 ++++++------ tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 23 files changed, 89 insertions(+), 89 deletions(-) diff --git a/api/go.mod b/api/go.mod index 28d9609fc2bf..09925edb514c 100644 --- a/api/go.mod +++ b/api/go.mod @@ -7,9 +7,9 @@ toolchain go1.26.2 require ( github.com/coreos/go-semver v0.3.1 github.com/golang/protobuf v1.5.4 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 github.com/stretchr/testify v1.11.1 - google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 + google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 google.golang.org/grpc v1.80.0 google.golang.org/protobuf v1.36.11 ) @@ -23,6 +23,6 @@ require ( golang.org/x/net v0.53.0 // indirect golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.36.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index 4c39d011e289..d1286dee074c 100644 --- a/api/go.sum +++ b/api/go.sum @@ -14,8 +14,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -46,10 +46,10 @@ golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/cache/go.mod b/cache/go.mod index 8508e0ce6d8d..82835773c9b4 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -17,7 +17,7 @@ require ( github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect go.uber.org/multierr v1.11.0 // indirect @@ -25,8 +25,8 @@ require ( golang.org/x/net v0.53.0 // indirect golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.36.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/grpc v1.80.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/cache/go.sum b/cache/go.sum index 6752a8ac0602..2853e7dd4a9f 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -22,8 +22,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -72,10 +72,10 @@ golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/client/v3/go.mod b/client/v3/go.mod index 1317ded1f7da..e60363a2418a 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -24,7 +24,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect @@ -38,8 +38,8 @@ require ( golang.org/x/net v0.53.0 // indirect golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.36.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 46db042cde19..ec4a90602ada 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -24,8 +24,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -80,10 +80,10 @@ golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 0f231c32a280..35f70a90ff7f 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -31,7 +31,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.19.0 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -44,8 +44,8 @@ require ( golang.org/x/net v0.53.0 // indirect golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.36.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 71890adf5b5a..e66c39ce8100 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -37,8 +37,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -113,10 +113,10 @@ golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 6ae072b7b0e0..9351be0e939d 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -48,7 +48,7 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -84,8 +84,8 @@ require ( golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.36.0 // indirect golang.org/x/time v0.15.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/grpc v1.80.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index c1cb0f33c582..67696dedce12 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -42,8 +42,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -179,10 +179,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/go.mod b/go.mod index 121666b71dbd..733f25c481dc 100644 --- a/go.mod +++ b/go.mod @@ -60,7 +60,7 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect @@ -99,8 +99,8 @@ require ( golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.36.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/utils v0.0.0-20260108192941-914a6e750570 // indirect diff --git a/go.sum b/go.sum index 75c947df7b6f..e65f3aaddb5b 100644 --- a/go.sum +++ b/go.sum @@ -48,8 +48,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -191,10 +191,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/go.work.sum b/go.work.sum index df9d7185d291..10331229c6db 100644 --- a/go.work.sum +++ b/go.work.sum @@ -484,8 +484,8 @@ golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= -golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= +golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= diff --git a/pkg/go.mod b/pkg/go.mod index bbed810dca0e..19f87f6f2977 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -28,7 +28,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.53.0 // indirect golang.org/x/text v0.36.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index 26b76abbe107..693ebf8398d2 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -64,8 +64,8 @@ golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/server/go.mod b/server/go.mod index 37493916507f..10f0d9fce63c 100644 --- a/server/go.mod +++ b/server/go.mod @@ -14,7 +14,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 github.com/jonboulle/clockwork v0.5.0 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 @@ -38,7 +38,7 @@ require ( golang.org/x/crypto v0.50.0 golang.org/x/net v0.53.0 golang.org/x/time v0.15.0 - google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 + google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 google.golang.org/grpc v1.80.0 google.golang.org/protobuf v1.36.11 gopkg.in/natefinch/lumberjack.v2 v2.2.1 @@ -71,7 +71,7 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.36.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index 735b0872ed99..1c91002c74aa 100644 --- a/server/go.sum +++ b/server/go.sum @@ -36,8 +36,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -158,10 +158,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/tests/go.mod b/tests/go.mod index 8975eaaf2e70..b2ab94f51bd6 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -23,7 +23,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 github.com/olekukonko/tablewriter v1.1.4 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 @@ -99,8 +99,8 @@ require ( golang.org/x/net v0.53.0 // indirect golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.36.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/utils v0.0.0-20260108192941-914a6e750570 // indirect diff --git a/tests/go.sum b/tests/go.sum index 10019d0f5d8f..82efb77ef413 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -54,8 +54,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= @@ -193,10 +193,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 66a06a7d8133..29a91fd5e4f6 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -11,7 +11,7 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint/v2 v2.11.4 github.com/google/yamlfmt v0.21.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 github.com/ryancurrah/gomodguard v1.4.1 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 @@ -245,8 +245,8 @@ require ( golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa // indirect golang.org/x/term v0.42.0 // indirect golang.org/x/text v0.36.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/grpc v1.80.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index af58efd4268d..ce46d5ffb559 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -250,8 +250,8 @@ github.com/gostaticanalysis/nilerr v0.1.2/go.mod h1:A19UHhoY3y8ahoL7YKz6sdjDtduw github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= @@ -710,10 +710,10 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= -google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1 h1:/WILD1UcXj/ujCxgoL/DvRgt2CP3txG8+FwkUbb9110= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 66b4fc381dab..6238d71b672a 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -20,6 +20,6 @@ require ( golang.org/x/net v0.53.0 // indirect golang.org/x/sys v0.43.0 // indirect golang.org/x/text v0.36.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/grpc v1.80.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 984c6fda5337..ed17fc52e2d5 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1848,8 +1848,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= From fa9d997ce2cb33680ea5f9c418307a5100e5b105 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Fri, 17 Apr 2026 15:00:30 -0400 Subject: [PATCH 0930/1068] grpcproxy: return io.EOF at end of server-streaming RPCs Signed-off-by: Jefftree --- server/proxy/grpcproxy/adapter/chan_stream.go | 21 +++-- .../grpcproxy/adapter/chan_stream_test.go | 79 +++++++++++++++++++ 2 files changed, 93 insertions(+), 7 deletions(-) create mode 100644 server/proxy/grpcproxy/adapter/chan_stream_test.go diff --git a/server/proxy/grpcproxy/adapter/chan_stream.go b/server/proxy/grpcproxy/adapter/chan_stream.go index ea93d72e6f56..020c30e7c6c8 100644 --- a/server/proxy/grpcproxy/adapter/chan_stream.go +++ b/server/proxy/grpcproxy/adapter/chan_stream.go @@ -16,6 +16,7 @@ package adapter import ( "context" + "io" "maps" "google.golang.org/grpc" @@ -139,7 +140,8 @@ func (s *chanStream) RecvMsg(m any) error { } func newPipeStream(ctx context.Context, ssHandler func(chanServerStream) error) chanClientStream { - // ch1 is buffered so server can send error on close + // ch1 is buffered so the server can deliver a terminal status + // (real error or io.EOF) after the handler returns. ch1, ch2 := make(chan any, 1), make(chan any) headerc, trailerc := make(chan metadata.MD, 1), make(chan metadata.MD, 1) @@ -152,12 +154,17 @@ func newPipeStream(ctx context.Context, ssHandler func(chanServerStream) error) ss := chanServerStream{headerc, trailerc, srv, nil} go func() { - if err := ssHandler(ss); err != nil { - select { - case srv.sendc <- err: - case <-sctx.Done(): - case <-cctx.Done(): - } + err := ssHandler(ss) + if err == nil { + // nil means the handler completed successfully; + // the gRPC ClientStream contract requires io.EOF: + // https://github.com/grpc/grpc-go/blob/master/stream.go#L140-L148 + err = io.EOF + } + select { + case srv.sendc <- err: + case <-sctx.Done(): + case <-cctx.Done(): } scancel() ccancel() diff --git a/server/proxy/grpcproxy/adapter/chan_stream_test.go b/server/proxy/grpcproxy/adapter/chan_stream_test.go new file mode 100644 index 000000000000..9a8514944c81 --- /dev/null +++ b/server/proxy/grpcproxy/adapter/chan_stream_test.go @@ -0,0 +1,79 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package adapter + +import ( + "context" + "errors" + "io" + "testing" +) + +// TestPipeStream_HandlerSuccessReturnsEOF verifies that when a server-streaming +// handler completes successfully (returns nil), the client receives io.EOF from +// RecvMsg. This matches the gRPC ClientStream contract: +// +// "It returns io.EOF when the stream completes successfully." +// https://github.com/grpc/grpc-go/blob/master/stream.go +func TestPipeStream_HandlerSuccessReturnsEOF(t *testing.T) { + cs := newPipeStream(context.Background(), func(ss chanServerStream) error { + ss.SendMsg("msg1") //nolint:staticcheck + ss.SendMsg("msg2") //nolint:staticcheck + return nil + }) + + var v any + + if err := cs.RecvMsg(&v); err != nil { + t.Fatalf("RecvMsg() = %v, want nil", err) + } + if v != "msg1" { + t.Fatalf("RecvMsg() got %v, want msg1", v) + } + + if err := cs.RecvMsg(&v); err != nil { + t.Fatalf("RecvMsg() = %v, want nil", err) + } + if v != "msg2" { + t.Fatalf("RecvMsg() got %v, want msg2", v) + } + + if err := cs.RecvMsg(&v); !errors.Is(err, io.EOF) { + t.Fatalf("RecvMsg() = %v, want io.EOF (per gRPC ClientStream contract)", err) + } +} + +// TestPipeStream_HandlerErrorPropagated verifies that when a handler returns a +// non-nil error, the client receives that exact error from RecvMsg. +func TestPipeStream_HandlerErrorPropagated(t *testing.T) { + handlerErr := errors.New("handler failed") + cs := newPipeStream(context.Background(), func(ss chanServerStream) error { + ss.SendMsg("partial") //nolint:staticcheck + return handlerErr + }) + + var v any + + if err := cs.RecvMsg(&v); err != nil { + t.Fatalf("RecvMsg() = %v, want nil", err) + } + if v != "partial" { + t.Fatalf("RecvMsg() got %v, want partial", v) + } + + if err := cs.RecvMsg(&v); !errors.Is(err, handlerErr) { + t.Fatalf("RecvMsg() = %v, want %v", err, handlerErr) + } +} From ef8ed062b76e28b603e7e7846972b41d6cb23929 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Fri, 17 Apr 2026 18:23:32 -0400 Subject: [PATCH 0931/1068] txn: fix range benchmark to enable WithTotalCount Signed-off-by: Jefftree --- server/etcdserver/txn/range_bench_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/etcdserver/txn/range_bench_test.go b/server/etcdserver/txn/range_bench_test.go index cd22a82cafaa..0e7c8b0c0dd2 100644 --- a/server/etcdserver/txn/range_bench_test.go +++ b/server/etcdserver/txn/range_bench_test.go @@ -97,7 +97,7 @@ func BenchmarkRange(b *testing.B) { b.ReportAllocs() b.ResetTimer() for b.Loop() { - _, _, err := Range(ctx, zap.NewNop(), s, req, false) + _, _, err := Range(ctx, zap.NewNop(), s, req, true) if err != nil { b.Fatal(err) } From 974d47c12505a78c25a9ccafb22ffa436442a207 Mon Sep 17 00:00:00 2001 From: Sharath P J Date: Fri, 17 Apr 2026 14:07:24 +0530 Subject: [PATCH 0932/1068] clarify cherry-pick workflow and reorganize script location Signed-off-by: Sharath P J --- .../contributor-guide/cherry-pick.md | 52 +++++++++++++++++++ hack/patch/README.md | 37 ------------- {hack/patch => scripts}/cherrypick.sh | 1 + 3 files changed, 53 insertions(+), 37 deletions(-) create mode 100644 Documentation/contributor-guide/cherry-pick.md delete mode 100644 hack/patch/README.md rename {hack/patch => scripts}/cherrypick.sh (99%) diff --git a/Documentation/contributor-guide/cherry-pick.md b/Documentation/contributor-guide/cherry-pick.md new file mode 100644 index 000000000000..ef58a86b9402 --- /dev/null +++ b/Documentation/contributor-guide/cherry-pick.md @@ -0,0 +1,52 @@ +# Cherry-picking changes + +Cherry-picking applies changes from a PR to a release branch. + +## Recommended workflow (automated) + +Cherry-picks are primarily handled using the **k8s-infra-cherrypick-robot**. + +For example, to cherry-pick a PR onto `release-3.6`, comment on the PR with: + +```bash +/cherry-pick release-3.6 +``` + +The bot will create a cherry-pick PR against the target release branch. + +--- + +## Fallback: manual cherry-pick script + +This script can be used for manual cherry-picks in cases where the automated cherry-pick does not work. + +## Setup + +Set the `UPSTREAM_REMOTE` and `FORK_REMOTE` environment variables. +`UPSTREAM_REMOTE` should be set to git remote name of `github.com/etcd-io/etcd`, +and `FORK_REMOTE` should be set to the git remote name of the forked etcd +repo (`github.com/${github-username}/etcd`). Use `git remote -v` to +look up the git remote names. If etcd has not been forked, create +one on github.com and register it locally with `git remote add ...`. + +```bash +export UPSTREAM_REMOTE=upstream +export FORK_REMOTE=origin +export GITHUB_USER=${github-username} +``` + +Next, install hub from + +## Usage + +To cherry pick PR 12345 onto release-3.6 and propose is as a PR, run: + +```sh +./scripts/cherrypick.sh ${UPSTREAM_REMOTE}/release-3.6 12345 +``` + +To cherry pick 12345 then 56789 and propose them togther as a single PR, run: + +```bash +./scripts/cherrypick.sh ${UPSTREAM_REMOTE}/release-3.6 12345 56789 +``` diff --git a/hack/patch/README.md b/hack/patch/README.md deleted file mode 100644 index 32323f179965..000000000000 --- a/hack/patch/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# ./hack/patch/cherrypick.sh - -Handles cherry-picks of PR(s) from etcd main to a stable etcd release branch automatically. - -## Setup - -Set the `UPSTREAM_REMOTE` and `FORK_REMOTE` environment variables. -`UPSTREAM_REMOTE` should be set to git remote name of `github.com/etcd-io/etcd`, -and `FORK_REMOTE` should be set to the git remote name of the forked etcd -repo (`github.com/${github-username}/etcd`). Use `git remote -v` to -look up the git remote names. If etcd has not been forked, create -one on github.com and register it locally with `git remote add ...`. - - -``` -export UPSTREAM_REMOTE=upstream -export FORK_REMOTE=origin -export GITHUB_USER=${github-username} -``` - -Next, install hub from https://github.com/github/hub - -## Usage - -To cherry pick PR 12345 onto release-3.2 and propose is as a PR, run: - -```sh -./hack/patch/cherrypick.sh ${UPSTREAM_REMOTE}/release-3.2 12345 -``` - -To cherry pick 12345 then 56789 and propose them togther as a single PR, run: - -``` -./hack/patch/cherrypick.sh ${UPSTREAM_REMOTE}/release-3.2 12345 56789 -``` - - diff --git a/hack/patch/cherrypick.sh b/scripts/cherrypick.sh similarity index 99% rename from hack/patch/cherrypick.sh rename to scripts/cherrypick.sh index 9d6e25bf1739..aee52959b204 100755 --- a/hack/patch/cherrypick.sh +++ b/scripts/cherrypick.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +# shellcheck disable=SC2155,SC2128,SC2086 # Based on github.com/kubernetes/kubernetes/blob/v1.8.2/hack/cherry_pick_pull.sh From 7c58249884149390f1294fa0c178d0e06579c594 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 17 Apr 2026 09:58:02 -0700 Subject: [PATCH 0933/1068] build(deps): bump filippo.io/edwards25519 in /tools/mod Bumps [filippo.io/edwards25519](https://github.com/FiloSottile/edwards25519) from 1.1.0 to 1.1.1. - [Commits](FiloSottile/edwards25519@v1.1.0...v1.1.1) Signed-off-by: Ivan Valdes --- updated-dependencies: - dependency-name: filippo.io/edwards25519 dependency-version: 1.1.1 dependency-type: indirect ... Reference: https://github.com/etcd-io/etcd/pull/21332 Signed-off-by: Ivan Valdes --- tools/mod/go.mod | 2 +- tools/mod/go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 29a91fd5e4f6..170cf4804244 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -31,7 +31,7 @@ require ( codeberg.org/polyfloyd/go-errorlint v1.9.0 // indirect dev.gaijin.team/go/exhaustruct/v4 v4.0.0 // indirect dev.gaijin.team/go/golib v0.6.0 // indirect - filippo.io/edwards25519 v1.1.0 // indirect + filippo.io/edwards25519 v1.1.1 // indirect github.com/4meepo/tagalign v1.4.3 // indirect github.com/Abirdcfly/dupword v0.1.7 // indirect github.com/AdminBenni/iota-mixing v1.0.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index ce46d5ffb559..3f770eb612ab 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -11,8 +11,9 @@ dev.gaijin.team/go/exhaustruct/v4 v4.0.0 h1:873r7aNneqoBB3IaFIzhvt2RFYTuHgmMjoKf dev.gaijin.team/go/exhaustruct/v4 v4.0.0/go.mod h1:aZ/k2o4Y05aMJtiux15x8iXaumE88YdiB0Ai4fXOzPI= dev.gaijin.team/go/golib v0.6.0 h1:v6nnznFTs4bppib/NyU1PQxobwDHwCXXl15P7DV5Zgo= dev.gaijin.team/go/golib v0.6.0/go.mod h1:uY1mShx8Z/aNHWDyAkZTkX+uCi5PdX7KsG1eDQa2AVE= -filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +filippo.io/edwards25519 v1.1.1 h1:YpjwWWlNmGIDyXOn8zLzqiD+9TyIlPhGFG96P39uBpw= +filippo.io/edwards25519 v1.1.1/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/4meepo/tagalign v1.4.3 h1:Bnu7jGWwbfpAie2vyl63Zup5KuRv21olsPIha53BJr8= github.com/4meepo/tagalign v1.4.3/go.mod h1:00WwRjiuSbrRJnSVeGWPLp2epS5Q/l4UEy0apLLS37c= github.com/Abirdcfly/dupword v0.1.7 h1:2j8sInznrje4I0CMisSL6ipEBkeJUJAmK1/lfoNGWrQ= From 4002e488636af31c4aeee183c69e69f2e1092349 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Wed, 22 Apr 2026 12:41:21 +0100 Subject: [PATCH 0934/1068] Bump golang.org/x/image to v0.39.0 to resolve GO-2026-4962 Vulnerability #1: GO-2026-4962 Excessive memory allocation when decoding malicious SFNT in golang.org/x/image More info: https://pkg.go.dev/vuln/GO-2026-4962 Module: golang.org/x/image Found in: golang.org/x/image@v0.38.0 Fixed in: golang.org/x/image@v0.39.0 Example traces found: #1: pkg/chart/heatmaps.go:232:10: chart.plotComparisonHeatMapGrid calls plot.Legend.Draw, which eventually calls sfnt.Font.GlyphAdvance #2: pkg/chart/heatmaps.go:232:10: chart.plotComparisonHeatMapGrid calls plot.Legend.Draw, which eventually calls sfnt.Font.GlyphIndex #3: pkg/chart/heatmaps.go:232:10: chart.plotComparisonHeatMapGrid calls plot.Legend.Draw, which eventually calls sfnt.Font.Kern #4: pkg/chart/heatmaps.go:232:10: chart.plotComparisonHeatMapGrid calls plot.Legend.Draw, which eventually calls sfnt.Font.LoadGlyph #5: pkg/chart/heatmaps.go:31:2: chart.init calls draw.init, which eventually calls sfnt.Parse Signed-off-by: Benjamin Wang --- go.work.sum | 1 - tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/go.work.sum b/go.work.sum index 10331229c6db..50c85e8889db 100644 --- a/go.work.sum +++ b/go.work.sum @@ -488,7 +488,6 @@ golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200317205521-2944c61d58b4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index f2a2889d92c8..d17a525f6471 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -21,7 +21,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect - golang.org/x/image v0.38.0 // indirect + golang.org/x/image v0.39.0 // indirect golang.org/x/text v0.36.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index dc7ea9704c2a..2d50e6b0df6f 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -41,8 +41,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= -golang.org/x/image v0.38.0 h1:5l+q+Y9JDC7mBOMjo4/aPhMDcxEptsX+Tt3GgRQRPuE= -golang.org/x/image v0.38.0/go.mod h1:/3f6vaXC+6CEanU4KJxbcUZyEePbyKbaLoDOe4ehFYY= +golang.org/x/image v0.39.0 h1:skVYidAEVKgn8lZ602XO75asgXBgLj9G/FE3RbuPFww= +golang.org/x/image v0.39.0/go.mod h1:sIbmppfU+xFLPIG0FoVUTvyBMmgng1/XAMhQ2ft0hpA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= From 3b916e7e7d9493077b601af8ba5c682912ebf5cd Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Wed, 22 Apr 2026 12:34:34 +0100 Subject: [PATCH 0935/1068] Cleanup the unused function AssertNoV2StoreContent Signed-off-by: Benjamin Wang --- server/storage/util.go | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/server/storage/util.go b/server/storage/util.go index 5852362f724a..62a201593093 100644 --- a/server/storage/util.go +++ b/server/storage/util.go @@ -16,36 +16,16 @@ package storage import ( "encoding/json" - "fmt" "sort" "go.uber.org/zap" "go.etcd.io/etcd/client/pkg/v3/types" "go.etcd.io/etcd/pkg/v3/pbutil" - "go.etcd.io/etcd/server/v3/config" "go.etcd.io/etcd/server/v3/etcdserver/api/membership" - "go.etcd.io/etcd/server/v3/etcdserver/api/v2store" "go.etcd.io/raft/v3/raftpb" ) -// AssertNoV2StoreContent -> depending on the deprecation stage, warns or report an error -// if the v2store contains custom content. -func AssertNoV2StoreContent(lg *zap.Logger, st v2store.Store, deprecationStage config.V2DeprecationEnum) error { - metaOnly, err := membership.IsMetaStoreOnly(st) - if err != nil { - return err - } - if metaOnly { - return nil - } - if deprecationStage.IsAtLeast(config.V2Depr1WriteOnly) { - return fmt.Errorf("detected disallowed custom content in v2store for stage --v2-deprecation=%s", deprecationStage) - } - lg.Warn("detected custom v2store content. Etcd v3.5 is the last version allowing to access it using API v2. Please remove the content.") - return nil -} - // CreateConfigChangeEnts creates a series of Raft entries (i.e. // EntryConfChange) to remove the set of given IDs from the cluster. The ID // `self` is _not_ removed, even if present in the set. From 39c130aaa8e5db60532dcc8ad3ef2d99ed39d61a Mon Sep 17 00:00:00 2001 From: Jefftree Date: Mon, 20 Apr 2026 10:48:09 -0400 Subject: [PATCH 0936/1068] grpcproxy: address review comments on io.EOF handling Signed-off-by: Jefftree --- server/proxy/grpcproxy/adapter/chan_stream.go | 2 +- .../grpcproxy/adapter/chan_stream_test.go | 48 ++++++++++--------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/server/proxy/grpcproxy/adapter/chan_stream.go b/server/proxy/grpcproxy/adapter/chan_stream.go index 020c30e7c6c8..89d57ac8ac33 100644 --- a/server/proxy/grpcproxy/adapter/chan_stream.go +++ b/server/proxy/grpcproxy/adapter/chan_stream.go @@ -158,7 +158,7 @@ func newPipeStream(ctx context.Context, ssHandler func(chanServerStream) error) if err == nil { // nil means the handler completed successfully; // the gRPC ClientStream contract requires io.EOF: - // https://github.com/grpc/grpc-go/blob/master/stream.go#L140-L148 + // https://github.com/grpc/grpc-go/blob/v1.80.0/stream.go#L139-L147 err = io.EOF } select { diff --git a/server/proxy/grpcproxy/adapter/chan_stream_test.go b/server/proxy/grpcproxy/adapter/chan_stream_test.go index 9a8514944c81..ba9759774ec5 100644 --- a/server/proxy/grpcproxy/adapter/chan_stream_test.go +++ b/server/proxy/grpcproxy/adapter/chan_stream_test.go @@ -26,31 +26,31 @@ import ( // RecvMsg. This matches the gRPC ClientStream contract: // // "It returns io.EOF when the stream completes successfully." -// https://github.com/grpc/grpc-go/blob/master/stream.go +// https://github.com/grpc/grpc-go/blob/v1.80.0/stream.go#L139-L147 func TestPipeStream_HandlerSuccessReturnsEOF(t *testing.T) { cs := newPipeStream(context.Background(), func(ss chanServerStream) error { - ss.SendMsg("msg1") //nolint:staticcheck - ss.SendMsg("msg2") //nolint:staticcheck + done := make(chan struct{}) + go func() { + defer close(done) + ss.SendMsg("msg1") //nolint:staticcheck + ss.SendMsg("msg2") //nolint:staticcheck + }() + <-done return nil }) - var v any - - if err := cs.RecvMsg(&v); err != nil { - t.Fatalf("RecvMsg() = %v, want nil", err) - } - if v != "msg1" { - t.Fatalf("RecvMsg() got %v, want msg1", v) - } - - if err := cs.RecvMsg(&v); err != nil { - t.Fatalf("RecvMsg() = %v, want nil", err) - } - if v != "msg2" { - t.Fatalf("RecvMsg() got %v, want msg2", v) + for _, want := range []string{"msg1", "msg2"} { + var v any + if err := cs.RecvMsg(&v); err != nil { //nolint:staticcheck + t.Fatalf("RecvMsg() = %v, want nil", err) + } + if v != want { + t.Fatalf("RecvMsg() got %v, want %s", v, want) + } } - if err := cs.RecvMsg(&v); !errors.Is(err, io.EOF) { + var v any + if err := cs.RecvMsg(&v); !errors.Is(err, io.EOF) { //nolint:staticcheck t.Fatalf("RecvMsg() = %v, want io.EOF (per gRPC ClientStream contract)", err) } } @@ -60,20 +60,24 @@ func TestPipeStream_HandlerSuccessReturnsEOF(t *testing.T) { func TestPipeStream_HandlerErrorPropagated(t *testing.T) { handlerErr := errors.New("handler failed") cs := newPipeStream(context.Background(), func(ss chanServerStream) error { - ss.SendMsg("partial") //nolint:staticcheck + done := make(chan struct{}) + go func() { + defer close(done) + ss.SendMsg("partial") //nolint:staticcheck + }() + <-done return handlerErr }) var v any - - if err := cs.RecvMsg(&v); err != nil { + if err := cs.RecvMsg(&v); err != nil { //nolint:staticcheck t.Fatalf("RecvMsg() = %v, want nil", err) } if v != "partial" { t.Fatalf("RecvMsg() got %v, want partial", v) } - if err := cs.RecvMsg(&v); !errors.Is(err, handlerErr) { + if err := cs.RecvMsg(&v); !errors.Is(err, handlerErr) { //nolint:staticcheck t.Fatalf("RecvMsg() = %v, want %v", err, handlerErr) } } From 76a36bb46ae97034d8a3d8b7cfc8f44830cf1932 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Wed, 22 Apr 2026 15:56:36 +0100 Subject: [PATCH 0937/1068] Cleanup the deprecated V2DeprecationEnum options Signed-off-by: Benjamin Wang --- server/config/v2_deprecation.go | 25 ------------------------- tests/framework/integration/cluster.go | 2 +- 2 files changed, 1 insertion(+), 26 deletions(-) diff --git a/server/config/v2_deprecation.go b/server/config/v2_deprecation.go index c50401cc937a..6c685bac918a 100644 --- a/server/config/v2_deprecation.go +++ b/server/config/v2_deprecation.go @@ -21,48 +21,23 @@ const ( // Default in v3.5, and no longer supported in v3.6. V2Depr0NotYet = V2DeprecationEnum("not-yet") - // Deprecated: to be decommissioned in 3.7. Please use V2Depr0NotYet. - // TODO: remove in 3.7 - //revive:disable-next-line:var-naming - V2_DEPR_0_NOT_YET = V2Depr0NotYet - // V2Depr1WriteOnly means only writing v2store is allowed. // Default in v3.6. Meaningful v2 state is not allowed. // The V2 files are maintained for v3.5 rollback. V2Depr1WriteOnly = V2DeprecationEnum("write-only") - // Deprecated: to be decommissioned in 3.7. Please use V2Depr1WriteOnly. - // TODO: remove in 3.7 - //revive:disable-next-line:var-naming - V2_DEPR_1_WRITE_ONLY = V2Depr1WriteOnly - // V2Depr1WriteOnlyDrop means v2store is WIPED if found !!! // Will be default in 3.7. V2Depr1WriteOnlyDrop = V2DeprecationEnum("write-only-drop-data") - // Deprecated: to be decommissioned in 3.7. Pleae use V2Depr1WriteOnlyDrop. - // TODO: remove in 3.7 - //revive:disable-next-line:var-naming - V2_DEPR_1_WRITE_ONLY_DROP = V2Depr1WriteOnlyDrop - // V2Depr2Gone means v2store is completely gone. The v2store is // neither written nor read. Anything related to v2store will be // cleaned up in v3.8. Usage of this configuration is blocking // ability to rollback to etcd v3.5. V2Depr2Gone = V2DeprecationEnum("gone") - // Deprecated: to be decommissioned in 3.7. Please use V2Depr2Gone. - // TODO: remove in 3.7 - //revive:disable-next-line:var-naming - V2_DEPR_2_GONE = V2Depr2Gone - // V2DeprDefault is the default deprecation level. V2DeprDefault = V2Depr1WriteOnly - - // Deprecated: to be decommissioned in 3.7. Please use V2DeprDefault. - // TODO: remove in 3.7 - //revive:disable-next-line:var-naming - V2_DEPR_DEFAULT = V2DeprDefault ) func (e V2DeprecationEnum) IsAtLeast(v2d V2DeprecationEnum) bool { diff --git a/tests/framework/integration/cluster.go b/tests/framework/integration/cluster.go index fe10ec145b61..a287a8a9f788 100644 --- a/tests/framework/integration/cluster.go +++ b/tests/framework/integration/cluster.go @@ -726,7 +726,7 @@ func MustNewMember(t testutil.TB, mcfg MemberConfig) *Member { m.MaxLearners = mcfg.MaxLearners } m.Metrics = mcfg.Metrics - m.V2Deprecation = config.V2_DEPR_DEFAULT //nolint:staticcheck // TODO: remove for a supported version + m.V2Deprecation = config.V2DeprDefault m.GRPCServerRecorder = &grpctesting.GRPCRecorder{} m.Logger, m.LogObserver = memberLogger(t, mcfg.Name) From a92ed14ccb89d7a435ac973e5ba163b7f9f86ca2 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Mon, 20 Apr 2026 22:58:22 -0400 Subject: [PATCH 0938/1068] tests: add e2e test for snapshot stream via in-process adapter Signed-off-by: Jefftree --- .../integration/clientv3/maintenance_test.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/integration/clientv3/maintenance_test.go b/tests/integration/clientv3/maintenance_test.go index db3ef762a47e..316c3034be95 100644 --- a/tests/integration/clientv3/maintenance_test.go +++ b/tests/integration/clientv3/maintenance_test.go @@ -184,6 +184,25 @@ func TestMaintenanceSnapshotCancel(t *testing.T) { } } +// TestMaintenanceSnapshotFromServerClient verifies that snapshot streams created +// by Member.ServerClient (in-process adapter path) complete successfully. +func TestMaintenanceSnapshotFromServerClient(t *testing.T) { + integration.BeforeTest(t) + + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + defer clus.Terminate(t) + + srvClient := clus.Members[0].ServerClient + require.NotNilf(t, srvClient, "Member.ServerClient must be initialized") + + rc, err := srvClient.Snapshot(t.Context()) + require.NoError(t, err) + defer rc.Close() + + _, err = io.Copy(io.Discard, rc) + require.NoErrorf(t, err, "snapshot stream should terminate cleanly") +} + // TestMaintenanceSnapshotWithVersionTimeout ensures that SnapshotWithVersion function // returns corresponding context errors when context timeout happened before snapshot reading func TestMaintenanceSnapshotWithVersionTimeout(t *testing.T) { From 391db41e9e739346272e4aade6403f0c114f992f Mon Sep 17 00:00:00 2001 From: Stephen Kitt Date: Fri, 24 Apr 2026 11:16:27 +0200 Subject: [PATCH 0939/1068] Bump to otel semconv 1.40.0 This is the latest version provided by otel. Bumping makes no difference to etcd but will allow downstreams such as Kubernetes to clean up their own dependencies. Signed-off-by: Stephen Kitt --- server/embed/config_tracing.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/embed/config_tracing.go b/server/embed/config_tracing.go index 7fa985a75d51..e53541c28753 100644 --- a/server/embed/config_tracing.go +++ b/server/embed/config_tracing.go @@ -23,7 +23,7 @@ import ( "go.opentelemetry.io/otel/propagation" "go.opentelemetry.io/otel/sdk/resource" tracesdk "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.17.0" + semconv "go.opentelemetry.io/otel/semconv/v1.40.0" "go.uber.org/zap" "go.etcd.io/etcd/pkg/v3/traceutil" From 67d17dee57a4b7fa048e3a5366e46e459ac3980b Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Wed, 22 Apr 2026 15:47:23 +0800 Subject: [PATCH 0940/1068] fix parameter name Signed-off-by: shenmu.wy --- server/etcdserver/api/etcdhttp/health.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/etcdserver/api/etcdhttp/health.go b/server/etcdserver/api/etcdhttp/health.go index 26ed4cab1683..1a6fa51be301 100644 --- a/server/etcdserver/api/etcdhttp/health.go +++ b/server/etcdserver/api/etcdhttp/health.go @@ -73,7 +73,7 @@ func HandleHealth(lg *zap.Logger, mux *http.ServeMux, srv ServerHealth) { } // NewHealthHandler handles '/health' requests. -func NewHealthHandler(lg *zap.Logger, hfunc func(ctx context.Context, excludedAlarms StringSet, Serializable bool) Health) http.HandlerFunc { +func NewHealthHandler(lg *zap.Logger, hfunc func(ctx context.Context, excludedAlarms StringSet, serializable bool) Health) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { w.Header().Set("Allow", http.MethodGet) From c12d80944211dc8c396a65ada9cf4df3cb67b53a Mon Sep 17 00:00:00 2001 From: Ali Date: Thu, 23 Apr 2026 00:13:02 +0500 Subject: [PATCH 0941/1068] etcdmain,embed: document JSON/YAML integer requirement for duration fields The etcd command-line flags accept human-readable duration strings (e.g. "10m") via flag.DurationVar. However, when the same fields are read from a JSON or YAML configuration file they are unmarshalled as time.Duration (int64), which only accepts integer values in nanoseconds. Setting such a field to a string like "1m" in a config file produces an unmarshalling error. Document this limitation in two places where it applies to every time.Duration configuration option: * usageline's --config-file section: note that duration fields in the config file must be integer nanoseconds, not human-readable strings * embed.Config struct doc comment: same note for SDK users reading the godoc, with a link to the upstream Go stdlib limitation (golang/go#10275). Fixes #20342 Signed-off-by: Ali --- server/embed/config.go | 7 +++++++ server/etcdmain/help.go | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/server/embed/config.go b/server/embed/config.go index dd79b05802b2..b66a5d98e9c8 100644 --- a/server/embed/config.go +++ b/server/embed/config.go @@ -157,6 +157,13 @@ func init() { } // Config holds the arguments for configuring an etcd server. +// +// Note: time.Duration fields in this struct are unmarshalled from JSON/YAML +// as integer nanoseconds (e.g. 600000000000 for 10 minutes). Human-readable +// duration strings such as "10m" are only accepted by the equivalent +// command-line flags, not by the configuration file. +// This is a [known Go standard library limitation](https://github.com/golang/go/issues/10275) +// where time.Duration is unmarshaled as a plain integer. type Config struct { Name string `json:"name"` Dir string `json:"data-dir"` diff --git a/server/etcdmain/help.go b/server/etcdmain/help.go index f8fd037480e4..a2191157bd0e 100644 --- a/server/etcdmain/help.go +++ b/server/etcdmain/help.go @@ -41,6 +41,10 @@ var ( etcd --config-file Path to the server configuration file. Note that if a configuration file is provided, other command line flags and environment variables will be ignored. + Duration-typed fields (for example --heartbeat-interval, --election-timeout, + --watch-progress-notify-interval) must be specified as integer nanoseconds + in the JSON/YAML file (e.g. 600000000000 for 10m); human-readable strings + such as "10m" are only accepted on the command line. etcd gateway Run the stateless pass-through etcd TCP connection forwarding proxy. From 61d9947f11e1b3a54015da70cd4cddfaed772a33 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Mon, 20 Apr 2026 17:04:43 +0100 Subject: [PATCH 0942/1068] Add an e2e test to reproduce the adding member failure when one member is down Signed-off-by: Benjamin Wang --- server/etcdserver/server.go | 5 ++- server/etcdserver/util.go | 46 +++++++++++++++++--- tests/e2e/ctl_v3_member_test.go | 77 +++++++++++++++++++++++++++++++++ 3 files changed, 119 insertions(+), 9 deletions(-) diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index 20b12915df73..061232555bb2 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -1420,9 +1420,10 @@ func (s *EtcdServer) mayAddMember(memb membership.Member) error { return errors.ErrNotEnoughStartedMembers } - if !isConnectedFullySince(s.r.transport, time.Now().Add(-HealthInterval), s.MemberID(), s.cluster.VotingMembers()) { + // Treat the new member as unavailable when checking quorum safety. + if !isConnectedToQuorumAfterAddingNewMemberSince(s.r.transport, time.Now().Add(-HealthInterval), s.MemberID(), s.cluster.VotingMembers()) { lg.Warn( - "rejecting member add request; local member has not been connected to all peers, reconfigure breaks active quorum", + "rejecting member add request; local member has not been connected to majority peers, reconfigure breaks active quorum", zap.String("local-member-id", s.MemberID().String()), zap.String("requested-member-add", fmt.Sprintf("%+v", memb)), zap.Error(errors.ErrUnhealthy), diff --git a/server/etcdserver/util.go b/server/etcdserver/util.go index ab4ce8d60d08..639413562298 100644 --- a/server/etcdserver/util.go +++ b/server/etcdserver/util.go @@ -17,15 +17,34 @@ package etcdserver import ( "time" + pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/client/pkg/v3/types" "go.etcd.io/etcd/server/v3/etcdserver/api/membership" "go.etcd.io/etcd/server/v3/etcdserver/api/rafthttp" ) -// isConnectedToQuorumSince checks whether the local member is connected to the -// quorum of the cluster since the given time. +// isConnectedToQuorumSince reports whether the local member has been connected +// to a quorum of the current cluster continuously since the given time. func isConnectedToQuorumSince(transport rafthttp.Transporter, since time.Time, self types.ID, members []*membership.Member) bool { - return numConnectedSince(transport, since, self, members) >= (len(members)/2)+1 + return numConnectedSince(transport, since, self, members) >= quorum(len(members)) +} + +// isConnectedToQuorumAfterAddingNewMemberSince reports whether the local member +// has been connected to a quorum continuously since the given time, assuming a +// new member is being added to the cluster. +// +// For a single-member cluster, it always returns true to allow membership +// expansion. +func isConnectedToQuorumAfterAddingNewMemberSince(transport rafthttp.Transporter, since time.Time, self types.ID, members []*membership.Member) bool { + if len(members) == 1 { + // If it's a single member cluster, we should allow adding a new member + return true + } + return numConnectedSince(transport, since, self, members) >= quorum(len(members)+1) +} + +func quorum(num int) int { + return num/2 + 1 } // isConnectedSince checks whether the local member is connected to the @@ -35,10 +54,23 @@ func isConnectedSince(transport rafthttp.Transporter, since time.Time, remote ty return !t.IsZero() && t.Before(since) } -// isConnectedFullySince checks whether the local member is connected to all -// members in the cluster since the given time. -func isConnectedFullySince(transport rafthttp.Transporter, since time.Time, self types.ID, members []*membership.Member) bool { - return numConnectedSince(transport, since, self, members) == len(members) +// exceedsRequestLimit checks if the committed index is too far ahead of the applied index. +// LeaseRevoke requests are prioritized to ensure timely lease expiration, +// which helps mitigate pressure on the cluster. +func exceedsRequestLimit(appliedIndex, committedIndex uint64, r *pb.InternalRaftRequest, enablePriority bool) bool { + if committedIndex <= appliedIndex+maxNormalGap { + return false + } + if enablePriority && isPriorityRequest(r) { + if committedIndex <= appliedIndex+maxPriorityGap { + return false + } + } + return true +} + +func isPriorityRequest(r *pb.InternalRaftRequest) bool { + return r != nil && r.LeaseRevoke != nil } // numConnectedSince counts how many members are connected to the local member diff --git a/tests/e2e/ctl_v3_member_test.go b/tests/e2e/ctl_v3_member_test.go index 2015d4fbe0f6..c777004dae5d 100644 --- a/tests/e2e/ctl_v3_member_test.go +++ b/tests/e2e/ctl_v3_member_test.go @@ -31,6 +31,7 @@ import ( "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/pkg/v3/expect" + "go.etcd.io/etcd/server/v3/etcdserver" "go.etcd.io/etcd/tests/v3/framework/e2e" ) @@ -358,3 +359,79 @@ func TestRemoveNonExistingMember(t *testing.T) { // Ensure that membership is properly bootstrapped. assert.NoError(t, epc.Restart(ctx)) } + +// TestCtlV3MemberAddAsLearnerWithOneMemberDown verifies the case +// of adding new member when one or two existing members are down. +// Refer to https://github.com/etcd-io/etcd/issues/21640 +func TestCtlV3MemberAddAsLearnerWithOneMemberDown(t *testing.T) { + testCases := []struct { + name string + clusterSize int + downMembers int + expectErr bool + }{ + { + name: "0 out of 1 member is down, allow adding member", + clusterSize: 1, + downMembers: 0, + expectErr: false, + }, + { + name: "1 out of 3 members is down, reject adding member", + clusterSize: 3, + downMembers: 1, + expectErr: true, + }, + { + name: "1 out of 4 members is down, allow adding member", + clusterSize: 4, + downMembers: 1, + expectErr: false, + }, + { + name: "1 out of 5 members is down, allow adding member", + clusterSize: 5, + downMembers: 1, + expectErr: false, + }, + { + name: "2 out of 5 members are down, reject adding member", + clusterSize: 5, + downMembers: 2, + expectErr: true, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + e2e.BeforeTest(t) + ctx := t.Context() + + t.Logf("Bootstrap a cluster with %d members", tc.clusterSize) + epc, err := e2e.NewEtcdProcessCluster(ctx, t, + e2e.WithClusterSize(tc.clusterSize), + ) + require.NoError(t, err) + defer func() { + _ = epc.Close() + }() + + t.Logf("Killing %d member", tc.downMembers) + for i := 0; i < tc.downMembers; i++ { + t.Logf("Killing member, name: %s, peerURL: %s", epc.Procs[i].Config().Name, epc.Procs[i].Config().PeerURL.String()) + err = epc.Procs[i].Kill() + require.NoError(t, err) + } + + time.Sleep(etcdserver.HealthInterval + 2*time.Second) + + t.Log("Adding a new learner") + _, err = epc.Procs[len(epc.Procs)-1].Etcdctl().MemberAddAsLearner(ctx, "new-learner", []string{"http://10.0.0.12:2380"}) + if tc.expectErr { + require.Error(t, err) + } else { + require.NoError(t, err) + } + }) + } +} From 1f67badf7e26c41bbeaf3e3309d8fc8d52a2b1b5 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Fri, 24 Apr 2026 19:04:39 -0400 Subject: [PATCH 0943/1068] etcdserverpb: add RangeStream RPC to the KV service RangeStream is a server-streaming counterpart to Range. The server splits the result into a sequence of RangeStreamResponse chunks, each wrapping a RangeResponse, so a client can proto.Merge them together and end up with what a single Range call would have returned. Signed-off-by: Jefftree --- api/etcdserverpb/rpc.pb.go | 779 +++++++++++++++++---------- api/etcdserverpb/rpc.proto | 25 + api/etcdserverpb/rpc_grpc.pb.go | 54 +- scripts/etcd_version_annotations.txt | 2 + 4 files changed, 572 insertions(+), 288 deletions(-) diff --git a/api/etcdserverpb/rpc.pb.go b/api/etcdserverpb/rpc.pb.go index ca1a8931a24b..41ef0bab686c 100644 --- a/api/etcdserverpb/rpc.pb.go +++ b/api/etcdserverpb/rpc.pb.go @@ -6201,6 +6201,65 @@ func (m *AuthRoleRevokePermissionResponse) GetHeader() *ResponseHeader { return nil } +// RangeStreamResponse is the response for the RangeStream RPC. +type RangeStreamResponse struct { + // range_response is a partial response for the KV.RangeStream RPC. + // The result of proto.Merge() applied on all responses should result in the + // same RangeResponse response as to the Range() method. + // + // Field population across chunks: + // - kvs: each chunk carries a disjoint slice of the result. Concatenating + // them in order yields the full key set. + // - header, more, count: set only on the final chunk. Non-merge clients + // can rely on io.EOF (end of stream) to detect completion. These + // fields are provided for clients that merge all responses into a + // single RangeResponse. + RangeResponse *RangeResponse `protobuf:"bytes,1,opt,name=range_response,json=rangeResponse,proto3" json:"range_response,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *RangeStreamResponse) Reset() { *m = RangeStreamResponse{} } +func (m *RangeStreamResponse) String() string { return proto.CompactTextString(m) } +func (*RangeStreamResponse) ProtoMessage() {} +func (*RangeStreamResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_77a6da22d6a3feb1, []int{97} +} +func (m *RangeStreamResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RangeStreamResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RangeStreamResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RangeStreamResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RangeStreamResponse.Merge(m, src) +} +func (m *RangeStreamResponse) XXX_Size() int { + return m.Size() +} +func (m *RangeStreamResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RangeStreamResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RangeStreamResponse proto.InternalMessageInfo + +func (m *RangeStreamResponse) GetRangeResponse() *RangeResponse { + if m != nil { + return m.RangeResponse + } + return nil +} + func init() { proto.RegisterEnum("etcdserverpb.AlarmType", AlarmType_name, AlarmType_value) proto.RegisterEnum("etcdserverpb.RangeRequest_SortOrder", RangeRequest_SortOrder_name, RangeRequest_SortOrder_value) @@ -6307,298 +6366,302 @@ func init() { proto.RegisterType((*AuthRoleDeleteResponse)(nil), "etcdserverpb.AuthRoleDeleteResponse") proto.RegisterType((*AuthRoleGrantPermissionResponse)(nil), "etcdserverpb.AuthRoleGrantPermissionResponse") proto.RegisterType((*AuthRoleRevokePermissionResponse)(nil), "etcdserverpb.AuthRoleRevokePermissionResponse") + proto.RegisterType((*RangeStreamResponse)(nil), "etcdserverpb.RangeStreamResponse") } func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) } var fileDescriptor_77a6da22d6a3feb1 = []byte{ - // 4564 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x3c, 0x5d, 0x6f, 0x5c, 0x49, - 0x56, 0xbe, 0xdd, 0xb6, 0xdb, 0x7d, 0xfa, 0xc3, 0x9d, 0x8a, 0x93, 0x74, 0x3a, 0x89, 0xe3, 0xb9, - 0x49, 0x66, 0x32, 0x99, 0x89, 0x3b, 0xb1, 0x93, 0x99, 0x25, 0x68, 0x86, 0xed, 0xd8, 0x3d, 0x89, - 0x37, 0x8e, 0xed, 0xb9, 0xee, 0x64, 0x76, 0x82, 0xb4, 0xe6, 0xba, 0xbb, 0x62, 0xdf, 0x75, 0xf7, - 0xbd, 0xbd, 0xf7, 0x5e, 0x77, 0xec, 0xe1, 0x61, 0x87, 0x85, 0x65, 0xb5, 0x20, 0xad, 0xc4, 0x20, - 0xa1, 0x15, 0x82, 0x17, 0x40, 0x82, 0x07, 0x40, 0xf0, 0xc0, 0x03, 0x02, 0x89, 0x07, 0x78, 0x80, - 0x07, 0x24, 0x24, 0xfe, 0x00, 0x0c, 0xfb, 0xc4, 0xaf, 0x58, 0xd5, 0xd7, 0xad, 0xaa, 0xfb, 0x61, - 0x67, 0xd6, 0x1e, 0xed, 0x4b, 0x7c, 0xab, 0xea, 0x7c, 0xd5, 0x39, 0x55, 0xe7, 0x54, 0x9d, 0x53, - 0x69, 0x28, 0xfa, 0xc3, 0xee, 0xfc, 0xd0, 0xf7, 0x42, 0x0f, 0x95, 0x71, 0xd8, 0xed, 0x05, 0xd8, - 0x1f, 0x61, 0x7f, 0xb8, 0xdd, 0xa8, 0x93, 0x56, 0xd3, 0x1e, 0x3a, 0xcd, 0xc1, 0xa8, 0xdb, 0x1d, - 0x6e, 0x37, 0xf7, 0x46, 0x0c, 0xae, 0xd1, 0x88, 0x46, 0xec, 0xfd, 0x70, 0x77, 0xb8, 0x4d, 0xff, - 0xf0, 0xb1, 0xb9, 0x68, 0x6c, 0x84, 0xfd, 0xc0, 0xf1, 0xdc, 0xe1, 0xb6, 0xf8, 0xe2, 0x10, 0x97, - 0x77, 0x3c, 0x6f, 0xa7, 0x8f, 0x19, 0xbe, 0xeb, 0x7a, 0xa1, 0x1d, 0x3a, 0x9e, 0x1b, 0xf0, 0x51, - 0xf6, 0xa7, 0x7b, 0x7b, 0x07, 0xbb, 0xb7, 0xbd, 0x21, 0x76, 0xed, 0xa1, 0x33, 0x5a, 0x68, 0x7a, - 0x43, 0x0a, 0x93, 0x84, 0x37, 0x7f, 0x62, 0x40, 0xd5, 0xc2, 0xc1, 0xd0, 0x73, 0x03, 0xfc, 0x18, - 0xdb, 0x3d, 0xec, 0xa3, 0x2b, 0x00, 0xdd, 0xfe, 0x7e, 0x10, 0x62, 0x7f, 0xcb, 0xe9, 0xd5, 0x8d, - 0x39, 0xe3, 0xe6, 0xb8, 0x55, 0xe4, 0x3d, 0x2b, 0x3d, 0x74, 0x09, 0x8a, 0x03, 0x3c, 0xd8, 0x66, - 0xa3, 0x39, 0x3a, 0x3a, 0xc5, 0x3a, 0x56, 0x7a, 0xa8, 0x01, 0x53, 0x3e, 0x1e, 0x39, 0x44, 0xdc, - 0x7a, 0x7e, 0xce, 0xb8, 0x99, 0xb7, 0xa2, 0x36, 0x41, 0xf4, 0xed, 0x97, 0xe1, 0x56, 0x88, 0xfd, - 0x41, 0x7d, 0x9c, 0x21, 0x92, 0x8e, 0x0e, 0xf6, 0x07, 0x0f, 0x0a, 0x3f, 0xf8, 0x87, 0x7a, 0x7e, - 0x71, 0xfe, 0x8e, 0xf9, 0xaf, 0x13, 0x50, 0xb6, 0x6c, 0x77, 0x07, 0x5b, 0xf8, 0x7b, 0xfb, 0x38, - 0x08, 0x51, 0x0d, 0xf2, 0x7b, 0xf8, 0x90, 0xca, 0x51, 0xb6, 0xc8, 0x27, 0x23, 0xe4, 0xee, 0xe0, - 0x2d, 0xec, 0x32, 0x09, 0xca, 0x84, 0x90, 0xbb, 0x83, 0xdb, 0x6e, 0x0f, 0xcd, 0xc0, 0x44, 0xdf, - 0x19, 0x38, 0x21, 0x67, 0xcf, 0x1a, 0x9a, 0x5c, 0xe3, 0x31, 0xb9, 0x96, 0x00, 0x02, 0xcf, 0x0f, - 0xb7, 0x3c, 0xbf, 0x87, 0xfd, 0xfa, 0xc4, 0x9c, 0x71, 0xb3, 0xba, 0x70, 0x7d, 0x5e, 0xb5, 0xe5, - 0xbc, 0x2a, 0xd0, 0xfc, 0xa6, 0xe7, 0x87, 0xeb, 0x04, 0xd6, 0x2a, 0x06, 0xe2, 0x13, 0x7d, 0x04, - 0x25, 0x4a, 0x24, 0xb4, 0xfd, 0x1d, 0x1c, 0xd6, 0x27, 0x29, 0x95, 0x1b, 0xc7, 0x50, 0xe9, 0x50, - 0x60, 0x8b, 0xb2, 0x67, 0xdf, 0xc8, 0x84, 0x72, 0x80, 0x7d, 0xc7, 0xee, 0x3b, 0x9f, 0xd9, 0xdb, - 0x7d, 0x5c, 0x2f, 0xcc, 0x19, 0x37, 0xa7, 0x2c, 0xad, 0x8f, 0xcc, 0x7f, 0x0f, 0x1f, 0x06, 0x5b, - 0x9e, 0xdb, 0x3f, 0xac, 0x4f, 0x51, 0x80, 0x29, 0xd2, 0xb1, 0xee, 0xf6, 0x0f, 0xa9, 0xf5, 0xbc, - 0x7d, 0x37, 0x64, 0xa3, 0x45, 0x3a, 0x5a, 0xa4, 0x3d, 0x74, 0xf8, 0x2e, 0xd4, 0x06, 0x8e, 0xbb, - 0x35, 0xf0, 0x7a, 0x5b, 0x91, 0x42, 0x80, 0x28, 0xe4, 0x61, 0xe1, 0xf7, 0xa8, 0x05, 0xee, 0x5a, - 0xd5, 0x81, 0xe3, 0x3e, 0xf5, 0x7a, 0x96, 0xd0, 0x0f, 0x41, 0xb1, 0x0f, 0x74, 0x94, 0x52, 0x1c, - 0xc5, 0x3e, 0x50, 0x51, 0xde, 0x87, 0xb3, 0x84, 0x4b, 0xd7, 0xc7, 0x76, 0x88, 0x25, 0x56, 0x59, - 0xc7, 0x3a, 0x33, 0x70, 0xdc, 0x25, 0x0a, 0xa2, 0x21, 0xda, 0x07, 0x09, 0xc4, 0x4a, 0x1c, 0xd1, - 0x3e, 0xd0, 0x11, 0xcd, 0xf7, 0xa1, 0x18, 0xd9, 0x05, 0x4d, 0xc1, 0xf8, 0xda, 0xfa, 0x5a, 0xbb, - 0x36, 0x86, 0x00, 0x26, 0x5b, 0x9b, 0x4b, 0xed, 0xb5, 0xe5, 0x9a, 0x81, 0x4a, 0x50, 0x58, 0x6e, - 0xb3, 0x46, 0xae, 0x51, 0xf8, 0x82, 0xaf, 0xb7, 0x27, 0x00, 0xd2, 0x14, 0xa8, 0x00, 0xf9, 0x27, - 0xed, 0x4f, 0x6b, 0x63, 0x04, 0xf8, 0x79, 0xdb, 0xda, 0x5c, 0x59, 0x5f, 0xab, 0x19, 0x84, 0xca, - 0x92, 0xd5, 0x6e, 0x75, 0xda, 0xb5, 0x1c, 0x81, 0x78, 0xba, 0xbe, 0x5c, 0xcb, 0xa3, 0x22, 0x4c, - 0x3c, 0x6f, 0xad, 0x3e, 0x6b, 0xd7, 0xc6, 0x23, 0x62, 0x72, 0x15, 0xff, 0x89, 0x01, 0x15, 0x6e, - 0x6e, 0xb6, 0xb7, 0xd0, 0x3d, 0x98, 0xdc, 0xa5, 0xfb, 0x8b, 0xae, 0xe4, 0xd2, 0xc2, 0xe5, 0xd8, - 0xda, 0xd0, 0xf6, 0xa0, 0xc5, 0x61, 0x91, 0x09, 0xf9, 0xbd, 0x51, 0x50, 0xcf, 0xcd, 0xe5, 0x6f, - 0x96, 0x16, 0x6a, 0xf3, 0xcc, 0x93, 0xcc, 0x3f, 0xc1, 0x87, 0xcf, 0xed, 0xfe, 0x3e, 0xb6, 0xc8, - 0x20, 0x42, 0x30, 0x3e, 0xf0, 0x7c, 0x4c, 0x17, 0xfc, 0x94, 0x45, 0xbf, 0xc9, 0x2e, 0xa0, 0x36, - 0xe7, 0x8b, 0x9d, 0x35, 0xa4, 0x78, 0xff, 0x69, 0x00, 0x6c, 0xec, 0x87, 0xd9, 0x5b, 0x6c, 0x06, - 0x26, 0x46, 0x84, 0x03, 0xdf, 0x5e, 0xac, 0x41, 0xf7, 0x16, 0xb6, 0x03, 0x1c, 0xed, 0x2d, 0xd2, - 0x40, 0x73, 0x50, 0x18, 0xfa, 0x78, 0xb4, 0xb5, 0x37, 0xa2, 0xdc, 0xa6, 0xa4, 0x9d, 0x26, 0x49, - 0xff, 0x93, 0x11, 0xba, 0x05, 0x65, 0x67, 0xc7, 0xf5, 0x7c, 0xbc, 0xc5, 0x88, 0x4e, 0xa8, 0x60, - 0x0b, 0x56, 0x89, 0x0d, 0xd2, 0x29, 0x29, 0xb0, 0x8c, 0xd5, 0x64, 0x2a, 0xec, 0x2a, 0x19, 0x93, - 0xf3, 0xf9, 0xdc, 0x80, 0x12, 0x9d, 0xcf, 0x89, 0x94, 0xbd, 0x20, 0x27, 0x92, 0xa3, 0x68, 0x09, - 0x85, 0x27, 0xa6, 0x26, 0x45, 0x70, 0x01, 0x2d, 0xe3, 0x3e, 0x0e, 0xf1, 0x49, 0x9c, 0x97, 0xa2, - 0xca, 0x7c, 0xaa, 0x2a, 0x25, 0xbf, 0xbf, 0x30, 0xe0, 0xac, 0xc6, 0xf0, 0x44, 0x53, 0xaf, 0x43, - 0xa1, 0x47, 0x89, 0x31, 0x99, 0xf2, 0x96, 0x68, 0xa2, 0x7b, 0x30, 0xc5, 0x45, 0x0a, 0xea, 0xf9, - 0xf4, 0x65, 0x28, 0xa5, 0x2c, 0x30, 0x29, 0x03, 0x29, 0xe6, 0x3f, 0xe5, 0xa0, 0xc8, 0x95, 0xb1, - 0x3e, 0x44, 0x2d, 0xa8, 0xf8, 0xac, 0xb1, 0x45, 0xe7, 0xcc, 0x65, 0x6c, 0x64, 0xfb, 0xc9, 0xc7, - 0x63, 0x56, 0x99, 0xa3, 0xd0, 0x6e, 0xf4, 0xab, 0x50, 0x12, 0x24, 0x86, 0xfb, 0x21, 0x37, 0x54, - 0x5d, 0x27, 0x20, 0x97, 0xf6, 0xe3, 0x31, 0x0b, 0x38, 0xf8, 0xc6, 0x7e, 0x88, 0x3a, 0x30, 0x23, - 0x90, 0xd9, 0xfc, 0xb8, 0x18, 0x79, 0x4a, 0x65, 0x4e, 0xa7, 0x92, 0x34, 0xe7, 0xe3, 0x31, 0x0b, - 0x71, 0x7c, 0x65, 0x10, 0x2d, 0x4b, 0x91, 0xc2, 0x03, 0x16, 0x5f, 0x12, 0x22, 0x75, 0x0e, 0x5c, - 0x4e, 0x44, 0x68, 0x6b, 0x51, 0x91, 0xad, 0x73, 0xe0, 0x46, 0x2a, 0x7b, 0x58, 0x84, 0x02, 0xef, - 0x36, 0xff, 0x23, 0x07, 0x20, 0x2c, 0xb6, 0x3e, 0x44, 0xcb, 0x50, 0xf5, 0x79, 0x4b, 0xd3, 0xdf, - 0xa5, 0x54, 0xfd, 0x71, 0x43, 0x8f, 0x59, 0x15, 0x81, 0xc4, 0xc4, 0xfd, 0x10, 0xca, 0x11, 0x15, - 0xa9, 0xc2, 0x8b, 0x29, 0x2a, 0x8c, 0x28, 0x94, 0x04, 0x02, 0x51, 0xe2, 0x27, 0x70, 0x2e, 0xc2, - 0x4f, 0xd1, 0xe2, 0x1b, 0x47, 0x68, 0x31, 0x22, 0x78, 0x56, 0x50, 0x50, 0xf5, 0xf8, 0x48, 0x11, - 0x4c, 0x2a, 0xf2, 0x62, 0x8a, 0x22, 0x19, 0x90, 0xaa, 0xc9, 0x48, 0x42, 0x4d, 0x95, 0x40, 0xc2, - 0x3e, 0xeb, 0x37, 0xff, 0x6a, 0x1c, 0x0a, 0x4b, 0xde, 0x60, 0x68, 0xfb, 0x64, 0x11, 0x4d, 0xfa, - 0x38, 0xd8, 0xef, 0x87, 0x54, 0x81, 0xd5, 0x85, 0x6b, 0x3a, 0x0f, 0x0e, 0x26, 0xfe, 0x5a, 0x14, - 0xd4, 0xe2, 0x28, 0x04, 0x99, 0x47, 0xf9, 0xdc, 0x6b, 0x20, 0xf3, 0x18, 0xcf, 0x51, 0x84, 0x43, - 0xc8, 0x4b, 0x87, 0xd0, 0x80, 0x02, 0x3f, 0xe0, 0x31, 0x67, 0xfd, 0x78, 0xcc, 0x12, 0x1d, 0xe8, - 0x6d, 0x98, 0x8e, 0x87, 0xc2, 0x09, 0x0e, 0x53, 0xed, 0xea, 0x91, 0xf3, 0x1a, 0x94, 0xb5, 0x08, - 0x3d, 0xc9, 0xe1, 0x4a, 0x03, 0x25, 0x2e, 0x9f, 0x17, 0x6e, 0x9d, 0x1c, 0x2b, 0xca, 0x8f, 0xc7, - 0x84, 0x63, 0xbf, 0x2a, 0x1c, 0xfb, 0x94, 0x1a, 0x68, 0x89, 0x5e, 0xb9, 0x8f, 0xbf, 0xae, 0x7a, - 0xad, 0x6f, 0x12, 0xe4, 0x08, 0x48, 0xba, 0x2f, 0xd3, 0x82, 0x8a, 0xa6, 0x32, 0x12, 0x23, 0xdb, - 0x1f, 0x3f, 0x6b, 0xad, 0xb2, 0x80, 0xfa, 0x88, 0xc6, 0x50, 0xab, 0x66, 0x90, 0x00, 0xbd, 0xda, - 0xde, 0xdc, 0xac, 0xe5, 0xd0, 0x79, 0x28, 0xae, 0xad, 0x77, 0xb6, 0x18, 0x54, 0xbe, 0x51, 0xf8, - 0x63, 0xe6, 0x49, 0x64, 0x7c, 0xfe, 0x34, 0xa2, 0xc9, 0x43, 0xb4, 0x12, 0x99, 0xc7, 0x94, 0xc8, - 0x6c, 0x88, 0xc8, 0x9c, 0x93, 0x91, 0x39, 0x8f, 0x10, 0x4c, 0xac, 0xb6, 0x5b, 0x9b, 0x34, 0x48, - 0x33, 0xd2, 0x8b, 0xc9, 0x68, 0xfd, 0xb0, 0x0a, 0x65, 0x66, 0x9e, 0xad, 0x7d, 0x97, 0x1c, 0x26, - 0xfe, 0xda, 0x00, 0x90, 0x1b, 0x16, 0x35, 0xa1, 0xd0, 0x65, 0x22, 0xd4, 0x0d, 0xea, 0x01, 0xcf, - 0xa5, 0x5a, 0xdc, 0x12, 0x50, 0xe8, 0x2e, 0x14, 0x82, 0xfd, 0x6e, 0x17, 0x07, 0x22, 0x72, 0x5f, - 0x88, 0x3b, 0x61, 0xee, 0x10, 0x2d, 0x01, 0x47, 0x50, 0x5e, 0xda, 0x4e, 0x7f, 0x9f, 0xc6, 0xf1, - 0xa3, 0x51, 0x38, 0x9c, 0xf4, 0xb1, 0x7f, 0x66, 0x40, 0x49, 0xd9, 0x16, 0xbf, 0x60, 0x08, 0xb8, - 0x0c, 0x45, 0x2a, 0x0c, 0xee, 0xf1, 0x20, 0x30, 0x65, 0xc9, 0x0e, 0xf4, 0x1e, 0x14, 0xc5, 0x4e, - 0x12, 0x71, 0xa0, 0x9e, 0x4e, 0x76, 0x7d, 0x68, 0x49, 0x50, 0x29, 0x64, 0x07, 0xce, 0x50, 0x3d, - 0x75, 0xc9, 0xed, 0x43, 0x68, 0x56, 0x3d, 0x96, 0x1b, 0xb1, 0x63, 0x79, 0x03, 0xa6, 0x86, 0xbb, - 0x87, 0x81, 0xd3, 0xb5, 0xfb, 0x5c, 0x9c, 0xa8, 0x2d, 0xa9, 0x6e, 0x02, 0x52, 0xa9, 0x9e, 0x44, - 0x01, 0x92, 0xe8, 0x79, 0x28, 0x3d, 0xb6, 0x83, 0x5d, 0x2e, 0xa4, 0xec, 0xbf, 0x07, 0x15, 0xd2, - 0xff, 0xe4, 0xf9, 0x6b, 0x88, 0x2f, 0xb0, 0x16, 0xcd, 0x7f, 0x36, 0xa0, 0x2a, 0xd0, 0x4e, 0x64, - 0x20, 0x04, 0xe3, 0xbb, 0x76, 0xb0, 0x4b, 0x95, 0x51, 0xb1, 0xe8, 0x37, 0x7a, 0x1b, 0x6a, 0x5d, - 0x36, 0xff, 0xad, 0xd8, 0xbd, 0x6b, 0x9a, 0xf7, 0x47, 0x7b, 0xff, 0x5d, 0xa8, 0x10, 0x94, 0x2d, - 0xfd, 0x1e, 0x24, 0xb6, 0xf1, 0x7b, 0x56, 0x79, 0x97, 0xce, 0x39, 0x2e, 0xbe, 0x0d, 0x65, 0xa6, - 0x8c, 0xd3, 0x96, 0x5d, 0xea, 0xb5, 0x01, 0xd3, 0x9b, 0xae, 0x3d, 0x0c, 0x76, 0xbd, 0x30, 0xa6, - 0xf3, 0x45, 0xf3, 0xef, 0x0d, 0xa8, 0xc9, 0xc1, 0x13, 0xc9, 0xf0, 0x16, 0x4c, 0xfb, 0x78, 0x60, - 0x3b, 0xae, 0xe3, 0xee, 0x6c, 0x6d, 0x1f, 0x86, 0x38, 0xe0, 0xd7, 0xd7, 0x6a, 0xd4, 0xfd, 0x90, - 0xf4, 0x12, 0x61, 0xb7, 0xfb, 0xde, 0x36, 0x77, 0xd2, 0xf4, 0x1b, 0xbd, 0xa1, 0x7b, 0xe9, 0xa2, - 0xd4, 0x9b, 0xe8, 0x97, 0x32, 0xff, 0x34, 0x07, 0xe5, 0x4f, 0xec, 0xb0, 0x2b, 0x56, 0x10, 0x5a, - 0x81, 0x6a, 0xe4, 0xc6, 0x69, 0x0f, 0x97, 0x3b, 0x76, 0xe0, 0xa0, 0x38, 0xe2, 0x5e, 0x23, 0x0e, - 0x1c, 0x95, 0xae, 0xda, 0x41, 0x49, 0xd9, 0x6e, 0x17, 0xf7, 0x23, 0x52, 0xb9, 0x6c, 0x52, 0x14, - 0x50, 0x25, 0xa5, 0x76, 0xa0, 0x6f, 0x43, 0x6d, 0xe8, 0x7b, 0x3b, 0x3e, 0x0e, 0x82, 0x88, 0x18, - 0x0b, 0xe1, 0x66, 0x0a, 0xb1, 0x0d, 0x0e, 0x1a, 0x3b, 0xc5, 0xdc, 0x7b, 0x3c, 0x66, 0x4d, 0x0f, - 0xf5, 0x31, 0xe9, 0x58, 0xa7, 0xe5, 0x79, 0x8f, 0x79, 0xd6, 0x1f, 0xe5, 0x01, 0x25, 0xa7, 0xf9, - 0x55, 0x8f, 0xc9, 0x37, 0xa0, 0x1a, 0x84, 0xb6, 0x9f, 0x58, 0xf3, 0x15, 0xda, 0x1b, 0xad, 0xf8, - 0xb7, 0x20, 0x92, 0x6c, 0xcb, 0xf5, 0x42, 0xe7, 0xe5, 0x21, 0xbb, 0xa0, 0x58, 0x55, 0xd1, 0xbd, - 0x46, 0x7b, 0xd1, 0x1a, 0x14, 0x5e, 0x3a, 0xfd, 0x10, 0xfb, 0x41, 0x7d, 0x62, 0x2e, 0x7f, 0xb3, - 0xba, 0xf0, 0xce, 0x71, 0x86, 0x99, 0xff, 0x88, 0xc2, 0x77, 0x0e, 0x87, 0xea, 0xe9, 0x97, 0x13, - 0x51, 0x8f, 0xf1, 0x93, 0xe9, 0x37, 0x22, 0x13, 0xa6, 0x5e, 0x11, 0xa2, 0x5b, 0x4e, 0x8f, 0xc6, - 0xe2, 0x68, 0x1f, 0xde, 0xb3, 0x0a, 0x74, 0x60, 0xa5, 0x87, 0xae, 0xc1, 0xd4, 0x4b, 0xdf, 0xde, - 0x19, 0x60, 0x37, 0x64, 0xb7, 0x7c, 0x09, 0x13, 0x0d, 0x98, 0xf3, 0x00, 0x52, 0x14, 0x12, 0xf9, - 0xd6, 0xd6, 0x37, 0x9e, 0x75, 0x6a, 0x63, 0xa8, 0x0c, 0x53, 0x6b, 0xeb, 0xcb, 0xed, 0xd5, 0x36, - 0x89, 0x8d, 0x22, 0xe6, 0xdd, 0x95, 0x9b, 0xae, 0x25, 0x0c, 0xa1, 0xad, 0x09, 0x55, 0x2e, 0x43, - 0xbf, 0x74, 0x0b, 0xb9, 0x04, 0x89, 0xbb, 0xe6, 0x55, 0x98, 0x49, 0x5b, 0x1a, 0x02, 0xe0, 0x9e, - 0xf9, 0x6f, 0x39, 0xa8, 0xf0, 0x8d, 0x70, 0xa2, 0x9d, 0x7b, 0x51, 0x91, 0x8a, 0x5f, 0x4f, 0x84, - 0x92, 0xea, 0x50, 0x60, 0x1b, 0xa4, 0xc7, 0xef, 0xbf, 0xa2, 0x49, 0x9c, 0x33, 0x5b, 0xef, 0xb8, - 0xc7, 0xcd, 0x1e, 0xb5, 0x53, 0xdd, 0xe6, 0x44, 0xa6, 0xdb, 0x8c, 0x36, 0x9c, 0x1d, 0xf0, 0x83, - 0x55, 0x51, 0x9a, 0xa2, 0x2c, 0x36, 0x15, 0x19, 0xd4, 0x6c, 0x56, 0xc8, 0xb0, 0x19, 0xba, 0x01, - 0x93, 0x78, 0x84, 0xdd, 0x30, 0xa8, 0x97, 0x68, 0x20, 0xad, 0x88, 0x0b, 0x55, 0x9b, 0xf4, 0x5a, - 0x7c, 0x50, 0x9a, 0xea, 0x43, 0x38, 0x43, 0xef, 0xbb, 0x8f, 0x7c, 0xdb, 0x55, 0xef, 0xec, 0x9d, - 0xce, 0x2a, 0x0f, 0x3b, 0xe4, 0x13, 0x55, 0x21, 0xb7, 0xb2, 0xcc, 0xf5, 0x93, 0x5b, 0x59, 0x96, - 0xf8, 0xbf, 0x6f, 0x00, 0x52, 0x09, 0x9c, 0xc8, 0x16, 0x31, 0x2e, 0x42, 0x8e, 0xbc, 0x94, 0x63, - 0x06, 0x26, 0xb0, 0xef, 0x7b, 0x3e, 0x73, 0x94, 0x16, 0x6b, 0x48, 0x69, 0x6e, 0x73, 0x61, 0x2c, - 0x3c, 0xf2, 0xf6, 0x22, 0x0f, 0xc0, 0xc8, 0x1a, 0x49, 0xe1, 0x3b, 0x70, 0x56, 0x03, 0x3f, 0x9d, - 0x10, 0xbf, 0x0e, 0xd3, 0x94, 0xea, 0xd2, 0x2e, 0xee, 0xee, 0x0d, 0x3d, 0xc7, 0x4d, 0x48, 0x80, - 0xae, 0x11, 0xdf, 0x25, 0xc2, 0x05, 0x99, 0x22, 0x9b, 0x73, 0x39, 0xea, 0xec, 0x74, 0x56, 0xe5, - 0x52, 0xdf, 0x86, 0xf3, 0x31, 0x82, 0x62, 0x66, 0xbf, 0x06, 0xa5, 0x6e, 0xd4, 0x19, 0xf0, 0x13, - 0xe4, 0x15, 0x5d, 0xdc, 0x38, 0xaa, 0x8a, 0x21, 0x79, 0x7c, 0x1b, 0x2e, 0x24, 0x78, 0x9c, 0x86, - 0x3a, 0xee, 0x99, 0x77, 0xe0, 0x1c, 0xa5, 0xfc, 0x04, 0xe3, 0x61, 0xab, 0xef, 0x8c, 0x8e, 0x37, - 0xcb, 0x21, 0x9f, 0xaf, 0x82, 0xf1, 0xf5, 0x2e, 0x2b, 0xc9, 0xba, 0xcd, 0x59, 0x77, 0x9c, 0x01, - 0xee, 0x78, 0xab, 0xd9, 0xd2, 0x92, 0x40, 0xbe, 0x87, 0x0f, 0x03, 0x7e, 0x7c, 0xa4, 0xdf, 0xd2, - 0x7b, 0xfd, 0xad, 0xc1, 0xd5, 0xa9, 0xd2, 0xf9, 0x9a, 0xb7, 0xc6, 0x2c, 0xc0, 0x0e, 0xd9, 0x83, - 0xb8, 0x47, 0x06, 0x58, 0x6e, 0x4e, 0xe9, 0x89, 0x04, 0x26, 0x51, 0xa8, 0x1c, 0x17, 0xf8, 0x0a, - 0xdf, 0x38, 0xf4, 0x9f, 0x20, 0x71, 0x52, 0x7a, 0x13, 0x4a, 0x74, 0x64, 0x33, 0xb4, 0xc3, 0xfd, - 0x20, 0xcb, 0x72, 0x8b, 0xe6, 0x8f, 0x0c, 0xbe, 0xa3, 0x04, 0x9d, 0x13, 0xcd, 0xf9, 0x2e, 0x4c, - 0xd2, 0x1b, 0xa2, 0xb8, 0xe9, 0x5c, 0x4c, 0x59, 0xd8, 0x4c, 0x22, 0x8b, 0x03, 0x2a, 0xe7, 0x24, - 0x03, 0x26, 0x9f, 0xd2, 0xca, 0x81, 0x22, 0xed, 0xb8, 0xb0, 0x9c, 0x6b, 0x0f, 0x58, 0xfa, 0xb1, - 0x68, 0xd1, 0x6f, 0x7a, 0x21, 0xc0, 0xd8, 0x7f, 0x66, 0xad, 0xb2, 0x1b, 0x48, 0xd1, 0x8a, 0xda, - 0x44, 0xb1, 0xdd, 0xbe, 0x83, 0xdd, 0x90, 0x8e, 0x8e, 0xd3, 0x51, 0xa5, 0x07, 0xdd, 0x80, 0xa2, - 0x13, 0xac, 0x62, 0xdb, 0x77, 0x79, 0x8a, 0x5f, 0x71, 0xcc, 0x72, 0x44, 0xae, 0xb1, 0xef, 0x40, - 0x8d, 0x49, 0xd6, 0xea, 0xf5, 0x94, 0xd3, 0x7e, 0xc4, 0xdf, 0x88, 0xf1, 0xd7, 0xe8, 0xe7, 0x8e, - 0xa7, 0xff, 0x77, 0x06, 0x9c, 0x51, 0x18, 0x9c, 0xc8, 0x04, 0xef, 0xc2, 0x24, 0xab, 0xbf, 0xf0, - 0xa3, 0xe0, 0x8c, 0x8e, 0xc5, 0xd8, 0x58, 0x1c, 0x06, 0xcd, 0x43, 0x81, 0x7d, 0x89, 0x6b, 0x5c, - 0x3a, 0xb8, 0x00, 0x92, 0x22, 0xcf, 0xc3, 0x59, 0x3e, 0x86, 0x07, 0x5e, 0xda, 0x9e, 0x1b, 0xd7, - 0x3d, 0xc4, 0x0f, 0x0d, 0x98, 0xd1, 0x11, 0x4e, 0x34, 0x4b, 0x45, 0xee, 0xdc, 0x57, 0x92, 0xfb, - 0x5b, 0x42, 0xee, 0x67, 0xc3, 0x9e, 0x72, 0xe4, 0x8c, 0xaf, 0x38, 0xd5, 0xba, 0x39, 0xdd, 0xba, - 0x92, 0xd6, 0x4f, 0xa2, 0x39, 0x09, 0x62, 0x27, 0x9a, 0xd3, 0xfb, 0xaf, 0x35, 0x27, 0xe5, 0x08, - 0x96, 0x98, 0xdc, 0x8a, 0x58, 0x46, 0xab, 0x4e, 0x10, 0x45, 0x9c, 0x77, 0xa0, 0xdc, 0x77, 0x5c, - 0x6c, 0xfb, 0xbc, 0x86, 0x64, 0xa8, 0xeb, 0xf1, 0xbe, 0xa5, 0x0d, 0x4a, 0x52, 0xbf, 0x6d, 0x00, - 0x52, 0x69, 0xfd, 0x72, 0xac, 0xd5, 0x14, 0x0a, 0xde, 0xf0, 0xbd, 0x81, 0x17, 0x1e, 0xb7, 0xcc, - 0xee, 0x99, 0xbf, 0x6b, 0xc0, 0xb9, 0x18, 0xc6, 0x2f, 0x43, 0xf2, 0x7b, 0xe6, 0x65, 0x38, 0xb3, - 0x8c, 0xc5, 0x19, 0x2f, 0x91, 0x3b, 0xd8, 0x04, 0xa4, 0x8e, 0x9e, 0xce, 0x29, 0xe6, 0x1b, 0x70, - 0xe6, 0xa9, 0x37, 0x22, 0x8e, 0x9c, 0x0c, 0x4b, 0x37, 0xc5, 0x92, 0x59, 0x91, 0xbe, 0xa2, 0xb6, - 0x74, 0xbd, 0x9b, 0x80, 0x54, 0xcc, 0xd3, 0x10, 0x67, 0xd1, 0xfc, 0x5f, 0x03, 0xca, 0xad, 0xbe, - 0xed, 0x0f, 0x84, 0x28, 0x1f, 0xc2, 0x24, 0xcb, 0xcc, 0xf0, 0x34, 0xeb, 0x9b, 0x3a, 0x3d, 0x15, - 0x96, 0x35, 0x5a, 0x2c, 0x8f, 0xc3, 0xb1, 0xc8, 0x54, 0x78, 0x65, 0x79, 0x39, 0x56, 0x69, 0x5e, - 0x46, 0xb7, 0x61, 0xc2, 0x26, 0x28, 0x34, 0xbc, 0x56, 0xe3, 0xe9, 0x32, 0x4a, 0x8d, 0x5c, 0x89, - 0x2c, 0x06, 0x65, 0x7e, 0x00, 0x25, 0x85, 0x03, 0x2a, 0x40, 0xfe, 0x51, 0x9b, 0x5f, 0x93, 0x5a, - 0x4b, 0x9d, 0x95, 0xe7, 0x2c, 0x85, 0x58, 0x05, 0x58, 0x6e, 0x47, 0xed, 0x5c, 0x4a, 0x61, 0xcf, - 0xe6, 0x74, 0x78, 0xdc, 0x52, 0x25, 0x34, 0xb2, 0x24, 0xcc, 0xbd, 0x8e, 0x84, 0x92, 0xc5, 0x6f, - 0x19, 0x50, 0xe1, 0xaa, 0x39, 0x69, 0x68, 0xa6, 0x94, 0x33, 0x42, 0xb3, 0x32, 0x0d, 0x8b, 0x03, - 0x4a, 0x19, 0xfe, 0xc5, 0x80, 0xda, 0xb2, 0xf7, 0xca, 0xdd, 0xf1, 0xed, 0x5e, 0xb4, 0x07, 0x3f, - 0x8a, 0x99, 0x73, 0x3e, 0x96, 0xe9, 0x8f, 0xc1, 0xcb, 0x8e, 0x98, 0x59, 0xeb, 0x32, 0x97, 0xc2, - 0xe2, 0xbb, 0x68, 0x9a, 0xdf, 0x84, 0xe9, 0x18, 0x12, 0x31, 0xd0, 0xf3, 0xd6, 0xea, 0xca, 0x32, - 0x31, 0x08, 0xcd, 0xf7, 0xb6, 0xd7, 0x5a, 0x0f, 0x57, 0xdb, 0xbc, 0x2a, 0xdb, 0x5a, 0x5b, 0x6a, - 0xaf, 0x4a, 0x43, 0xdd, 0x17, 0x33, 0xb8, 0x6f, 0xf6, 0xe1, 0x8c, 0x22, 0xd0, 0x49, 0x8b, 0x63, - 0xe9, 0xf2, 0x4a, 0x6e, 0xdf, 0x80, 0x4b, 0x11, 0xb7, 0xe7, 0x6c, 0xb0, 0x83, 0x03, 0xf5, 0xb2, - 0x36, 0xe2, 0x4c, 0x8b, 0x16, 0xf9, 0x14, 0x98, 0xef, 0x99, 0x75, 0xa8, 0xf0, 0xf3, 0x51, 0xdc, - 0x65, 0xfc, 0xf9, 0x38, 0x54, 0xc5, 0xd0, 0xd7, 0x23, 0x3f, 0x3a, 0x0f, 0x93, 0xbd, 0xed, 0x4d, - 0xe7, 0x33, 0x51, 0xd1, 0xe5, 0x2d, 0xd2, 0xdf, 0x67, 0x7c, 0xd8, 0x3b, 0x0d, 0xde, 0x42, 0x97, - 0xd9, 0x13, 0x8e, 0x15, 0xb7, 0x87, 0x0f, 0xe8, 0x31, 0x6a, 0xdc, 0x92, 0x1d, 0x34, 0x1d, 0xca, - 0xdf, 0x73, 0xd0, 0x5b, 0xb2, 0xf2, 0xbe, 0x03, 0x2d, 0x42, 0x8d, 0x7c, 0xb7, 0x86, 0xc3, 0xbe, - 0x83, 0x7b, 0x8c, 0x00, 0xb9, 0x20, 0x8f, 0xcb, 0x73, 0x52, 0x02, 0x00, 0x5d, 0x85, 0x49, 0x7a, - 0x79, 0x0c, 0xea, 0x53, 0x24, 0x22, 0x4b, 0x50, 0xde, 0x8d, 0xde, 0x86, 0x12, 0x93, 0x78, 0xc5, - 0x7d, 0x16, 0x60, 0xfa, 0xda, 0x41, 0xc9, 0xa4, 0xa8, 0x63, 0xfa, 0x09, 0x0d, 0xb2, 0x4e, 0x68, - 0xa8, 0x09, 0xd5, 0x20, 0xf4, 0x7c, 0x7b, 0x47, 0x98, 0x91, 0x3e, 0x75, 0x50, 0xd2, 0x7d, 0xb1, - 0x61, 0x29, 0xc2, 0xc7, 0xfb, 0x5e, 0x68, 0xeb, 0x4f, 0x1c, 0xde, 0xb3, 0xd4, 0x31, 0xf4, 0x2d, - 0xa8, 0xf4, 0xc4, 0x22, 0x59, 0x71, 0x5f, 0x7a, 0xf4, 0x59, 0x43, 0xa2, 0x7a, 0xb7, 0xac, 0x82, - 0x48, 0x4a, 0x3a, 0xaa, 0x7a, 0x93, 0xad, 0x68, 0x18, 0xc4, 0xda, 0xd8, 0x25, 0xa1, 0x9d, 0x65, - 0x70, 0xa6, 0x2c, 0xd1, 0x44, 0xd7, 0xa1, 0xc2, 0x22, 0xc1, 0x73, 0x6d, 0x35, 0xe8, 0x9d, 0x24, - 0x8e, 0xb5, 0xf6, 0xc3, 0xdd, 0x36, 0x45, 0x4a, 0x2c, 0xca, 0x2b, 0x80, 0xc8, 0xe8, 0xb2, 0x13, - 0xa4, 0x0e, 0x73, 0xe4, 0xd4, 0x15, 0x7d, 0xdf, 0x5c, 0x83, 0xb3, 0x64, 0x14, 0xbb, 0xa1, 0xd3, - 0x55, 0x8e, 0x62, 0xe2, 0xb0, 0x6f, 0xc4, 0x0e, 0xfb, 0x76, 0x10, 0xbc, 0xf2, 0xfc, 0x1e, 0x17, - 0x33, 0x6a, 0x4b, 0x6e, 0xff, 0x68, 0x30, 0x69, 0x9e, 0x05, 0xda, 0x41, 0xfd, 0x2b, 0xd2, 0x43, - 0xbf, 0x02, 0x05, 0xfe, 0x40, 0x8a, 0xe7, 0x3f, 0xcf, 0xcf, 0xb3, 0x87, 0x59, 0xf3, 0x9c, 0xf0, - 0x3a, 0x1b, 0x55, 0x72, 0x74, 0x1c, 0x9e, 0x2c, 0x97, 0x5d, 0x3b, 0xd8, 0xc5, 0xbd, 0x0d, 0x41, - 0x5c, 0xcb, 0x0e, 0xdf, 0xb7, 0x62, 0xc3, 0x52, 0xf6, 0xbb, 0x52, 0xf4, 0x47, 0x38, 0x3c, 0x42, - 0x74, 0xb5, 0xfe, 0x70, 0x4e, 0xa0, 0xf0, 0xb2, 0xe9, 0xeb, 0x60, 0xfd, 0xd8, 0x80, 0x2b, 0x02, - 0x6d, 0x69, 0xd7, 0x76, 0x77, 0xb0, 0x10, 0xe6, 0x17, 0xd5, 0x57, 0x72, 0xd2, 0xf9, 0xd7, 0x9c, - 0xf4, 0x13, 0xa8, 0x47, 0x93, 0xa6, 0xb9, 0x28, 0xaf, 0xaf, 0x4e, 0x62, 0x3f, 0x88, 0x9c, 0x24, - 0xfd, 0x26, 0x7d, 0xbe, 0xd7, 0x8f, 0xae, 0x81, 0xe4, 0x5b, 0x12, 0x5b, 0x85, 0x8b, 0x82, 0x18, - 0x4f, 0x0e, 0xe9, 0xd4, 0x12, 0x73, 0x3a, 0x92, 0x1a, 0xb7, 0x07, 0xa1, 0x71, 0xf4, 0x52, 0x4a, - 0x45, 0xd1, 0x4d, 0x48, 0xb9, 0x18, 0x69, 0x5c, 0x66, 0xd9, 0x0e, 0x20, 0x32, 0x2b, 0x27, 0xf6, - 0xc4, 0x38, 0x21, 0x99, 0x3a, 0xce, 0x97, 0x00, 0x19, 0x4f, 0x2c, 0x81, 0x6c, 0xae, 0x18, 0x66, - 0x23, 0x41, 0x89, 0xda, 0x37, 0xb0, 0x3f, 0x70, 0x82, 0x40, 0x29, 0xc4, 0xa5, 0xa9, 0xeb, 0x4d, - 0x18, 0x1f, 0x62, 0x7e, 0x7c, 0x29, 0x2d, 0x20, 0xb1, 0x27, 0x14, 0x64, 0x3a, 0x2e, 0xd9, 0x0c, - 0xe0, 0xaa, 0x60, 0xc3, 0x0c, 0x92, 0xca, 0x27, 0x2e, 0xa6, 0x48, 0xfe, 0xe7, 0x32, 0x92, 0xff, - 0x79, 0x3d, 0xf9, 0xaf, 0x1d, 0xa9, 0x55, 0x47, 0x75, 0x3a, 0x47, 0xea, 0x0e, 0x33, 0x40, 0xe4, - 0xdf, 0x4e, 0x87, 0xea, 0x1f, 0x70, 0x47, 0x75, 0x5a, 0xe1, 0x5c, 0x38, 0xf8, 0x9c, 0xee, 0xe0, - 0x4d, 0x28, 0x13, 0x23, 0x59, 0x6a, 0x55, 0x64, 0xdc, 0xd2, 0xfa, 0xa4, 0x33, 0xde, 0x83, 0x19, - 0xdd, 0x19, 0x9f, 0x48, 0xa8, 0x19, 0x98, 0x08, 0xbd, 0x3d, 0x2c, 0x62, 0x0a, 0x6b, 0x24, 0xd4, - 0x1a, 0x39, 0xea, 0xd3, 0x51, 0xeb, 0x77, 0x25, 0x55, 0xba, 0x01, 0x4f, 0x3a, 0x03, 0xb2, 0x1c, - 0xc5, 0xed, 0x9f, 0x35, 0x24, 0xaf, 0x4f, 0xe0, 0x7c, 0xdc, 0xf9, 0x9e, 0xce, 0x24, 0xb6, 0xd8, - 0xe6, 0x4c, 0x73, 0xcf, 0xa7, 0xc3, 0xe0, 0x85, 0xf4, 0x93, 0x8a, 0xd3, 0x3d, 0x1d, 0xda, 0xbf, - 0x0e, 0x8d, 0x34, 0x1f, 0x7c, 0xaa, 0x7b, 0x31, 0x72, 0xc9, 0xa7, 0x43, 0xf5, 0x87, 0x86, 0x24, - 0xab, 0xae, 0x9a, 0x0f, 0xbe, 0x0a, 0x59, 0x11, 0xeb, 0xee, 0x44, 0xcb, 0xa7, 0x19, 0x79, 0xcb, - 0x7c, 0xba, 0xb7, 0x94, 0x28, 0x14, 0x50, 0xec, 0x3f, 0xe9, 0xea, 0xbf, 0xce, 0xd5, 0xcb, 0x99, - 0xc9, 0xb8, 0x73, 0x52, 0x66, 0x24, 0x3c, 0x47, 0xcc, 0x68, 0x23, 0xb1, 0x55, 0xd4, 0x20, 0x75, - 0x3a, 0xa6, 0xfb, 0x0d, 0x19, 0x60, 0x12, 0x71, 0xec, 0x74, 0x38, 0xd8, 0x30, 0x97, 0x1d, 0xc2, - 0x4e, 0x85, 0xc5, 0xad, 0x16, 0x14, 0xa3, 0xbb, 0xbf, 0xf2, 0x52, 0xb9, 0x04, 0x85, 0xb5, 0xf5, - 0xcd, 0x8d, 0xd6, 0x12, 0xb9, 0xda, 0xce, 0x40, 0x61, 0x69, 0xdd, 0xb2, 0x9e, 0x6d, 0x74, 0xc8, - 0xdd, 0x36, 0xfe, 0x70, 0x69, 0xe1, 0x67, 0x79, 0xc8, 0x3d, 0x79, 0x8e, 0x3e, 0x85, 0x09, 0xf6, - 0x70, 0xee, 0x88, 0xf7, 0x93, 0x8d, 0xa3, 0xde, 0x06, 0x9a, 0x17, 0x7e, 0xf0, 0xdf, 0x3f, 0xfb, - 0xc3, 0xdc, 0x19, 0xb3, 0xdc, 0x1c, 0x2d, 0x36, 0xf7, 0x46, 0x4d, 0x1a, 0x64, 0x1f, 0x18, 0xb7, - 0xd0, 0xc7, 0x90, 0xdf, 0xd8, 0x0f, 0x51, 0xe6, 0xbb, 0xca, 0x46, 0xf6, 0x73, 0x41, 0xf3, 0x1c, - 0x25, 0x3a, 0x6d, 0x02, 0x27, 0x3a, 0xdc, 0x0f, 0x09, 0xc9, 0xef, 0x41, 0x49, 0x7d, 0xec, 0x77, - 0xec, 0x63, 0xcb, 0xc6, 0xf1, 0x0f, 0x09, 0xcd, 0x2b, 0x94, 0xd5, 0x05, 0x13, 0x71, 0x56, 0xec, - 0x39, 0xa2, 0x3a, 0x8b, 0xce, 0x81, 0x8b, 0x32, 0x9f, 0x62, 0x36, 0xb2, 0xdf, 0x16, 0x26, 0x66, - 0x11, 0x1e, 0xb8, 0x84, 0xe4, 0x77, 0xf9, 0x23, 0xc2, 0x6e, 0x88, 0xae, 0xa6, 0xbc, 0x02, 0x53, - 0x5f, 0x37, 0x35, 0xe6, 0xb2, 0x01, 0x38, 0x93, 0xcb, 0x94, 0xc9, 0x79, 0xf3, 0x0c, 0x67, 0xd2, - 0x8d, 0x40, 0x1e, 0x18, 0xb7, 0x16, 0xba, 0x30, 0x41, 0xab, 0xe7, 0xe8, 0x85, 0xf8, 0x68, 0xa4, - 0xbc, 0x4b, 0xc8, 0x30, 0xb4, 0x56, 0x77, 0x37, 0x67, 0x28, 0xa3, 0xaa, 0x59, 0x24, 0x8c, 0x68, - 0xed, 0xfc, 0x81, 0x71, 0xeb, 0xa6, 0x71, 0xc7, 0x58, 0xf8, 0x9b, 0x09, 0x98, 0xa0, 0x55, 0x1a, - 0xb4, 0x07, 0x20, 0xab, 0xc4, 0xf1, 0xd9, 0x25, 0x0a, 0xd0, 0xf1, 0xd9, 0x25, 0x0b, 0xcc, 0x66, - 0x83, 0x32, 0x9d, 0x31, 0xa7, 0x09, 0x53, 0x5a, 0xfc, 0x69, 0xd2, 0x5a, 0x17, 0xd1, 0xe3, 0x8f, - 0x0d, 0x5e, 0xae, 0x62, 0xdb, 0x0c, 0xa5, 0x51, 0xd3, 0x2a, 0xc4, 0xf1, 0xe5, 0x90, 0x52, 0x14, - 0x36, 0xef, 0x53, 0x86, 0x4d, 0xb3, 0x26, 0x19, 0xfa, 0x14, 0xe2, 0x81, 0x71, 0xeb, 0x45, 0xdd, - 0x3c, 0xcb, 0xb5, 0x1c, 0x1b, 0x41, 0xdf, 0x87, 0xaa, 0x5e, 0xcb, 0x44, 0xd7, 0x52, 0x78, 0xc5, - 0x6b, 0xa3, 0x8d, 0xeb, 0x47, 0x03, 0x71, 0x99, 0x66, 0xa9, 0x4c, 0x9c, 0x39, 0xe3, 0xbc, 0x87, - 0xf1, 0xd0, 0x26, 0x40, 0xdc, 0x06, 0xe8, 0x4f, 0x0d, 0x5e, 0x8e, 0x96, 0xa5, 0x48, 0x94, 0x46, - 0x3d, 0x51, 0xf1, 0x6c, 0xdc, 0x38, 0x06, 0x8a, 0x0b, 0xf1, 0x01, 0x15, 0xe2, 0x7d, 0x73, 0x46, - 0x0a, 0x11, 0x3a, 0x03, 0x1c, 0x7a, 0x5c, 0x8a, 0x17, 0x97, 0xcd, 0x0b, 0x9a, 0x72, 0xb4, 0x51, - 0x69, 0x2c, 0x56, 0x32, 0x4c, 0x35, 0x96, 0x56, 0x95, 0x4c, 0x35, 0x96, 0x5e, 0x6f, 0x4c, 0x33, - 0x16, 0x2f, 0x10, 0xa6, 0x18, 0x2b, 0x1a, 0x59, 0xf8, 0xff, 0x71, 0x28, 0x2c, 0xb1, 0xff, 0x8c, - 0x84, 0x3c, 0x28, 0x46, 0x45, 0x34, 0x34, 0x9b, 0x96, 0xa7, 0x97, 0x57, 0xb9, 0xc6, 0xd5, 0xcc, - 0x71, 0x2e, 0xd0, 0x1b, 0x54, 0xa0, 0x4b, 0xe6, 0x79, 0xc2, 0x99, 0xff, 0x7f, 0xa7, 0x26, 0xcb, - 0xe6, 0x36, 0xed, 0x5e, 0x8f, 0x28, 0xe2, 0x37, 0xa1, 0xac, 0x96, 0xb4, 0xd0, 0x1b, 0xa9, 0xb5, - 0x01, 0xb5, 0x3e, 0xd6, 0x30, 0x8f, 0x02, 0xe1, 0x9c, 0xaf, 0x53, 0xce, 0xb3, 0xe6, 0xc5, 0x14, - 0xce, 0x3e, 0x05, 0xd5, 0x98, 0xb3, 0xda, 0x53, 0x3a, 0x73, 0xad, 0xc8, 0x95, 0xce, 0x5c, 0x2f, - 0x5d, 0x1d, 0xc9, 0x7c, 0x9f, 0x82, 0x12, 0xe6, 0x01, 0x80, 0x2c, 0x0e, 0xa1, 0x54, 0x5d, 0x2a, - 0x17, 0xd6, 0xb8, 0x73, 0x48, 0xd6, 0x95, 0x4c, 0x93, 0xb2, 0xe5, 0xeb, 0x2e, 0xc6, 0xb6, 0xef, - 0x04, 0x21, 0xdb, 0x98, 0x15, 0xad, 0xb4, 0x83, 0x52, 0xe7, 0xa3, 0x57, 0x8a, 0x1a, 0xd7, 0x8e, - 0x84, 0xe1, 0xdc, 0x6f, 0x50, 0xee, 0x57, 0xcd, 0x46, 0x0a, 0xf7, 0x21, 0x83, 0x25, 0x8b, 0xed, - 0xf3, 0x02, 0x94, 0x9e, 0xda, 0x8e, 0x1b, 0x62, 0xd7, 0x76, 0xbb, 0x18, 0x6d, 0xc3, 0x04, 0x8d, - 0xdd, 0x71, 0x47, 0xac, 0x56, 0x32, 0xe2, 0x8e, 0x58, 0x4b, 0xe5, 0x9b, 0x73, 0x94, 0x71, 0xc3, - 0x3c, 0x47, 0x18, 0x0f, 0x24, 0xe9, 0x26, 0x2b, 0x02, 0x18, 0xb7, 0xd0, 0x4b, 0x98, 0xe4, 0x25, - 0xfc, 0x18, 0x21, 0x2d, 0xa9, 0xd6, 0xb8, 0x9c, 0x3e, 0x98, 0xb6, 0x96, 0x55, 0x36, 0x01, 0x85, - 0x23, 0x7c, 0x46, 0x00, 0xb2, 0x22, 0x15, 0xb7, 0x68, 0xa2, 0x92, 0xd5, 0x98, 0xcb, 0x06, 0x48, - 0xd3, 0xa9, 0xca, 0xb3, 0x17, 0xc1, 0x12, 0xbe, 0xdf, 0x81, 0xf1, 0xc7, 0x76, 0xb0, 0x8b, 0x62, - 0xb1, 0x57, 0x79, 0x71, 0xdb, 0x68, 0xa4, 0x0d, 0x71, 0x2e, 0x57, 0x29, 0x97, 0x8b, 0xcc, 0x95, - 0xa9, 0x5c, 0xe8, 0x9b, 0x52, 0xa6, 0x3f, 0xf6, 0xdc, 0x36, 0xae, 0x3f, 0xed, 0xed, 0x6e, 0x5c, - 0x7f, 0xfa, 0x0b, 0xdd, 0x6c, 0xfd, 0x11, 0x2e, 0x7b, 0x23, 0xc2, 0x67, 0x08, 0x53, 0xe2, 0x61, - 0x2a, 0x8a, 0x3d, 0xe7, 0x89, 0xbd, 0x66, 0x6d, 0xcc, 0x66, 0x0d, 0x73, 0x6e, 0xd7, 0x28, 0xb7, - 0x2b, 0x66, 0x3d, 0x61, 0x2d, 0x0e, 0xf9, 0xc0, 0xb8, 0x75, 0xc7, 0x40, 0xdf, 0x07, 0x90, 0x45, - 0xbb, 0xc4, 0x1e, 0x8c, 0x17, 0x02, 0x13, 0x7b, 0x30, 0x51, 0xef, 0x33, 0xe7, 0x29, 0xdf, 0x9b, - 0xe6, 0xb5, 0x38, 0xdf, 0xd0, 0xb7, 0xdd, 0xe0, 0x25, 0xf6, 0x6f, 0xb3, 0xbc, 0x7f, 0xb0, 0xeb, - 0x0c, 0xc9, 0x94, 0x7d, 0x28, 0x46, 0xb9, 0xe6, 0xb8, 0xbf, 0x8d, 0x57, 0x7f, 0xe2, 0xfe, 0x36, - 0x51, 0x8c, 0xd1, 0x1d, 0x8f, 0xb6, 0x5e, 0x04, 0x28, 0xd9, 0x82, 0x7f, 0x59, 0x83, 0x71, 0x72, - 0x24, 0x27, 0xc7, 0x13, 0x99, 0xee, 0x89, 0xcf, 0x3e, 0x91, 0xb1, 0x8e, 0xcf, 0x3e, 0x99, 0x29, - 0xd2, 0x8f, 0x27, 0xe4, 0xba, 0xd6, 0x64, 0x79, 0x14, 0x32, 0x53, 0x0f, 0x4a, 0x4a, 0x1a, 0x08, - 0xa5, 0x10, 0xd3, 0x33, 0xe0, 0xf1, 0x80, 0x97, 0x92, 0x43, 0x32, 0x2f, 0x51, 0x7e, 0xe7, 0x58, - 0xc0, 0xa3, 0xfc, 0x7a, 0x0c, 0x82, 0x30, 0xe4, 0xb3, 0xe3, 0x3b, 0x3f, 0x65, 0x76, 0xfa, 0xee, - 0x9f, 0xcb, 0x06, 0xc8, 0x9c, 0x9d, 0xdc, 0xfa, 0xaf, 0xa0, 0xac, 0xa6, 0x7e, 0x50, 0x8a, 0xf0, - 0xb1, 0x1c, 0x7d, 0x3c, 0x92, 0xa4, 0x65, 0x8e, 0x74, 0xdf, 0x46, 0x59, 0xda, 0x0a, 0x18, 0x61, - 0xdc, 0x87, 0x02, 0x4f, 0x01, 0xa5, 0xa9, 0x54, 0x4f, 0xe3, 0xa7, 0xa9, 0x34, 0x96, 0x3f, 0xd2, - 0xcf, 0xcf, 0x94, 0x23, 0xb9, 0x8a, 0x8a, 0x68, 0xcd, 0xb9, 0x3d, 0xc2, 0x61, 0x16, 0x37, 0x99, - 0xb6, 0xcd, 0xe2, 0xa6, 0x64, 0x08, 0xb2, 0xb8, 0xed, 0xe0, 0x90, 0xfb, 0x03, 0x71, 0xbd, 0x46, - 0x19, 0xc4, 0xd4, 0x08, 0x69, 0x1e, 0x05, 0x92, 0x76, 0xbd, 0x91, 0x0c, 0x45, 0x78, 0x3c, 0x00, - 0x90, 0xe9, 0xa8, 0xf8, 0x99, 0x35, 0xb5, 0x52, 0x10, 0x3f, 0xb3, 0xa6, 0x67, 0xb4, 0x74, 0x1f, - 0x2b, 0xf9, 0xb2, 0xdb, 0x15, 0xe1, 0xfc, 0x85, 0x01, 0x28, 0x99, 0xb0, 0x42, 0xef, 0xa4, 0x53, - 0x4f, 0xad, 0x3a, 0x34, 0xde, 0x7d, 0x3d, 0xe0, 0x34, 0x87, 0x2c, 0x45, 0xea, 0x52, 0xe8, 0xe1, - 0x2b, 0x22, 0xd4, 0xe7, 0x06, 0x54, 0xb4, 0x24, 0x17, 0x7a, 0x33, 0xc3, 0xa6, 0xb1, 0xd2, 0x43, - 0xe3, 0xad, 0x63, 0xe1, 0xd2, 0x0e, 0xf3, 0xca, 0x0a, 0x10, 0xb7, 0x9a, 0xdf, 0x31, 0xa0, 0xaa, - 0xe7, 0xc2, 0x50, 0x06, 0xed, 0x44, 0xc5, 0xa2, 0x71, 0xf3, 0x78, 0xc0, 0xa3, 0xcd, 0x23, 0x2f, - 0x34, 0x7d, 0x28, 0xf0, 0xa4, 0x59, 0xda, 0xc2, 0xd7, 0x4b, 0x1c, 0x69, 0x0b, 0x3f, 0x96, 0x71, - 0x4b, 0x59, 0xf8, 0xbe, 0xd7, 0xc7, 0xca, 0x36, 0xe3, 0xb9, 0xb4, 0x2c, 0x6e, 0x47, 0x6f, 0xb3, - 0x58, 0x22, 0x2e, 0x8b, 0x9b, 0xdc, 0x66, 0x22, 0x65, 0x86, 0x32, 0x88, 0x1d, 0xb3, 0xcd, 0xe2, - 0x19, 0xb7, 0x94, 0x6d, 0x46, 0x19, 0x2a, 0xdb, 0x4c, 0xa6, 0xb2, 0xd2, 0xb6, 0x59, 0xa2, 0x1a, - 0x93, 0xb6, 0xcd, 0x92, 0xd9, 0xb0, 0x14, 0x3b, 0x52, 0xbe, 0xda, 0x36, 0x3b, 0x9b, 0x92, 0xec, - 0x42, 0xef, 0x66, 0x28, 0x31, 0xb5, 0xb6, 0xd3, 0xb8, 0xfd, 0x9a, 0xd0, 0x99, 0x6b, 0x9c, 0xa9, - 0x5f, 0xac, 0xf1, 0x3f, 0x32, 0x60, 0x26, 0x2d, 0x3f, 0x86, 0x32, 0xf8, 0x64, 0x94, 0x82, 0x1a, - 0xf3, 0xaf, 0x0b, 0x7e, 0xb4, 0xb6, 0xa2, 0x55, 0xff, 0x70, 0xe7, 0x8b, 0x56, 0xf3, 0xc5, 0x55, - 0xb8, 0x02, 0x93, 0xad, 0xa1, 0xf3, 0x04, 0x1f, 0xa2, 0xb3, 0x53, 0xb9, 0x46, 0x85, 0xd0, 0xf5, - 0x7c, 0xe7, 0x33, 0xfa, 0xab, 0x17, 0x73, 0xb9, 0xed, 0x32, 0x40, 0x04, 0x30, 0xf6, 0xef, 0x5f, - 0xce, 0x1a, 0xff, 0xf5, 0xe5, 0xac, 0xf1, 0x3f, 0x5f, 0xce, 0x1a, 0x3f, 0xfd, 0xbf, 0xd9, 0xb1, - 0x17, 0xd7, 0x76, 0x3c, 0x2a, 0xd6, 0xbc, 0xe3, 0x35, 0xe5, 0x2f, 0x71, 0x2c, 0x36, 0x55, 0x51, - 0xb7, 0x27, 0xe9, 0x4f, 0x67, 0x2c, 0xfe, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x08, 0x5e, 0xc8, 0xca, - 0xfb, 0x43, 0x00, 0x00, + // 4614 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x3c, 0xdf, 0x6f, 0x1c, 0x49, + 0x5a, 0xee, 0x99, 0xb1, 0xc7, 0xf3, 0xcd, 0x0f, 0x4f, 0xca, 0x4e, 0x76, 0x32, 0x9b, 0x38, 0x4e, + 0x27, 0xd9, 0xcd, 0x66, 0x37, 0x9e, 0xc4, 0x4e, 0x36, 0x47, 0xd0, 0x2e, 0x37, 0xb1, 0x67, 0x13, + 0x5f, 0x1c, 0xdb, 0xdb, 0x9e, 0x64, 0x6f, 0x83, 0x74, 0xa6, 0x3d, 0x53, 0xb1, 0xfb, 0x3c, 0xd3, + 0x3d, 0xd7, 0xdd, 0x9e, 0xd8, 0xcb, 0xc3, 0x2d, 0x07, 0xc7, 0xe9, 0x40, 0x3a, 0x89, 0x45, 0x42, + 0x27, 0x04, 0x2f, 0x80, 0x04, 0x0f, 0x80, 0xe0, 0x01, 0x24, 0x04, 0x12, 0x0f, 0xf0, 0x00, 0x0f, + 0x48, 0x48, 0xfc, 0x03, 0xb0, 0xf0, 0xc4, 0x5f, 0x71, 0xaa, 0x5f, 0x5d, 0x55, 0xdd, 0x3d, 0xb6, + 0xf7, 0xec, 0xd5, 0xbd, 0xc4, 0x5d, 0x55, 0xdf, 0xaf, 0xfa, 0xbe, 0xaa, 0xef, 0xab, 0xfa, 0xbe, + 0xca, 0x40, 0xc1, 0x1f, 0x74, 0xe6, 0x07, 0xbe, 0x17, 0x7a, 0xa8, 0x84, 0xc3, 0x4e, 0x37, 0xc0, + 0xfe, 0x10, 0xfb, 0x83, 0xed, 0x7a, 0x8d, 0xb4, 0x1a, 0xf6, 0xc0, 0x69, 0xf4, 0x87, 0x9d, 0xce, + 0x60, 0xbb, 0xb1, 0x37, 0x64, 0x70, 0xf5, 0x7a, 0x34, 0x62, 0xef, 0x87, 0xbb, 0x83, 0x6d, 0xfa, + 0x87, 0x8f, 0xcd, 0x45, 0x63, 0x43, 0xec, 0x07, 0x8e, 0xe7, 0x0e, 0xb6, 0xc5, 0x17, 0x87, 0xb8, + 0xb4, 0xe3, 0x79, 0x3b, 0x3d, 0xcc, 0xf0, 0x5d, 0xd7, 0x0b, 0xed, 0xd0, 0xf1, 0xdc, 0x80, 0x8f, + 0xb2, 0x3f, 0x9d, 0xdb, 0x3b, 0xd8, 0xbd, 0xed, 0x0d, 0xb0, 0x6b, 0x0f, 0x9c, 0xe1, 0x42, 0xc3, + 0x1b, 0x50, 0x98, 0x24, 0xbc, 0xf9, 0x13, 0x03, 0x2a, 0x16, 0x0e, 0x06, 0x9e, 0x1b, 0xe0, 0x27, + 0xd8, 0xee, 0x62, 0x1f, 0x5d, 0x06, 0xe8, 0xf4, 0xf6, 0x83, 0x10, 0xfb, 0x5b, 0x4e, 0xb7, 0x66, + 0xcc, 0x19, 0x37, 0x73, 0x56, 0x81, 0xf7, 0xac, 0x74, 0xd1, 0x9b, 0x50, 0xe8, 0xe3, 0xfe, 0x36, + 0x1b, 0xcd, 0xd0, 0xd1, 0x49, 0xd6, 0xb1, 0xd2, 0x45, 0x75, 0x98, 0xf4, 0xf1, 0xd0, 0x21, 0xe2, + 0xd6, 0xb2, 0x73, 0xc6, 0xcd, 0xac, 0x15, 0xb5, 0x09, 0xa2, 0x6f, 0xbf, 0x0a, 0xb7, 0x42, 0xec, + 0xf7, 0x6b, 0x39, 0x86, 0x48, 0x3a, 0xda, 0xd8, 0xef, 0x3f, 0xcc, 0xff, 0xe0, 0xef, 0x6a, 0xd9, + 0xc5, 0xf9, 0x3b, 0xe6, 0xbf, 0x8c, 0x43, 0xc9, 0xb2, 0xdd, 0x1d, 0x6c, 0xe1, 0xef, 0xed, 0xe3, + 0x20, 0x44, 0x55, 0xc8, 0xee, 0xe1, 0x43, 0x2a, 0x47, 0xc9, 0x22, 0x9f, 0x8c, 0x90, 0xbb, 0x83, + 0xb7, 0xb0, 0xcb, 0x24, 0x28, 0x11, 0x42, 0xee, 0x0e, 0x6e, 0xb9, 0x5d, 0x34, 0x03, 0xe3, 0x3d, + 0xa7, 0xef, 0x84, 0x9c, 0x3d, 0x6b, 0x68, 0x72, 0xe5, 0x62, 0x72, 0x2d, 0x01, 0x04, 0x9e, 0x1f, + 0x6e, 0x79, 0x7e, 0x17, 0xfb, 0xb5, 0xf1, 0x39, 0xe3, 0x66, 0x65, 0xe1, 0xfa, 0xbc, 0x6a, 0xcb, + 0x79, 0x55, 0xa0, 0xf9, 0x4d, 0xcf, 0x0f, 0xd7, 0x09, 0xac, 0x55, 0x08, 0xc4, 0x27, 0xfa, 0x08, + 0x8a, 0x94, 0x48, 0x68, 0xfb, 0x3b, 0x38, 0xac, 0x4d, 0x50, 0x2a, 0x37, 0x8e, 0xa1, 0xd2, 0xa6, + 0xc0, 0x16, 0x65, 0xcf, 0xbe, 0x91, 0x09, 0xa5, 0x00, 0xfb, 0x8e, 0xdd, 0x73, 0x3e, 0xb3, 0xb7, + 0x7b, 0xb8, 0x96, 0x9f, 0x33, 0x6e, 0x4e, 0x5a, 0x5a, 0x1f, 0x99, 0xff, 0x1e, 0x3e, 0x0c, 0xb6, + 0x3c, 0xb7, 0x77, 0x58, 0x9b, 0xa4, 0x00, 0x93, 0xa4, 0x63, 0xdd, 0xed, 0x1d, 0x52, 0xeb, 0x79, + 0xfb, 0x6e, 0xc8, 0x46, 0x0b, 0x74, 0xb4, 0x40, 0x7b, 0xe8, 0xf0, 0x5d, 0xa8, 0xf6, 0x1d, 0x77, + 0xab, 0xef, 0x75, 0xb7, 0x22, 0x85, 0x00, 0x51, 0xc8, 0xa3, 0xfc, 0xef, 0x50, 0x0b, 0xdc, 0xb5, + 0x2a, 0x7d, 0xc7, 0x7d, 0xe6, 0x75, 0x2d, 0xa1, 0x1f, 0x82, 0x62, 0x1f, 0xe8, 0x28, 0xc5, 0x38, + 0x8a, 0x7d, 0xa0, 0xa2, 0x3c, 0x80, 0x69, 0xc2, 0xa5, 0xe3, 0x63, 0x3b, 0xc4, 0x12, 0xab, 0xa4, + 0x63, 0x9d, 0xeb, 0x3b, 0xee, 0x12, 0x05, 0xd1, 0x10, 0xed, 0x83, 0x04, 0x62, 0x39, 0x8e, 0x68, + 0x1f, 0xe8, 0x88, 0xe6, 0x03, 0x28, 0x44, 0x76, 0x41, 0x93, 0x90, 0x5b, 0x5b, 0x5f, 0x6b, 0x55, + 0xc7, 0x10, 0xc0, 0x44, 0x73, 0x73, 0xa9, 0xb5, 0xb6, 0x5c, 0x35, 0x50, 0x11, 0xf2, 0xcb, 0x2d, + 0xd6, 0xc8, 0xd4, 0xf3, 0x5f, 0xf0, 0xf5, 0xf6, 0x14, 0x40, 0x9a, 0x02, 0xe5, 0x21, 0xfb, 0xb4, + 0xf5, 0x69, 0x75, 0x8c, 0x00, 0xbf, 0x68, 0x59, 0x9b, 0x2b, 0xeb, 0x6b, 0x55, 0x83, 0x50, 0x59, + 0xb2, 0x5a, 0xcd, 0x76, 0xab, 0x9a, 0x21, 0x10, 0xcf, 0xd6, 0x97, 0xab, 0x59, 0x54, 0x80, 0xf1, + 0x17, 0xcd, 0xd5, 0xe7, 0xad, 0x6a, 0x2e, 0x22, 0x26, 0x57, 0xf1, 0x1f, 0x19, 0x50, 0xe6, 0xe6, + 0x66, 0x7b, 0x0b, 0xdd, 0x83, 0x89, 0x5d, 0xba, 0xbf, 0xe8, 0x4a, 0x2e, 0x2e, 0x5c, 0x8a, 0xad, + 0x0d, 0x6d, 0x0f, 0x5a, 0x1c, 0x16, 0x99, 0x90, 0xdd, 0x1b, 0x06, 0xb5, 0xcc, 0x5c, 0xf6, 0x66, + 0x71, 0xa1, 0x3a, 0xcf, 0x3c, 0xc9, 0xfc, 0x53, 0x7c, 0xf8, 0xc2, 0xee, 0xed, 0x63, 0x8b, 0x0c, + 0x22, 0x04, 0xb9, 0xbe, 0xe7, 0x63, 0xba, 0xe0, 0x27, 0x2d, 0xfa, 0x4d, 0x76, 0x01, 0xb5, 0x39, + 0x5f, 0xec, 0xac, 0x21, 0xc5, 0xfb, 0x0f, 0x03, 0x60, 0x63, 0x3f, 0x1c, 0xbd, 0xc5, 0x66, 0x60, + 0x7c, 0x48, 0x38, 0xf0, 0xed, 0xc5, 0x1a, 0x74, 0x6f, 0x61, 0x3b, 0xc0, 0xd1, 0xde, 0x22, 0x0d, + 0x34, 0x07, 0xf9, 0x81, 0x8f, 0x87, 0x5b, 0x7b, 0x43, 0xca, 0x6d, 0x52, 0xda, 0x69, 0x82, 0xf4, + 0x3f, 0x1d, 0xa2, 0x5b, 0x50, 0x72, 0x76, 0x5c, 0xcf, 0xc7, 0x5b, 0x8c, 0xe8, 0xb8, 0x0a, 0xb6, + 0x60, 0x15, 0xd9, 0x20, 0x9d, 0x92, 0x02, 0xcb, 0x58, 0x4d, 0xa4, 0xc2, 0xae, 0x92, 0x31, 0x39, + 0x9f, 0xcf, 0x0d, 0x28, 0xd2, 0xf9, 0x9c, 0x4a, 0xd9, 0x0b, 0x72, 0x22, 0x19, 0x8a, 0x96, 0x50, + 0x78, 0x62, 0x6a, 0x52, 0x04, 0x17, 0xd0, 0x32, 0xee, 0xe1, 0x10, 0x9f, 0xc6, 0x79, 0x29, 0xaa, + 0xcc, 0xa6, 0xaa, 0x52, 0xf2, 0xfb, 0x33, 0x03, 0xa6, 0x35, 0x86, 0xa7, 0x9a, 0x7a, 0x0d, 0xf2, + 0x5d, 0x4a, 0x8c, 0xc9, 0x94, 0xb5, 0x44, 0x13, 0xdd, 0x83, 0x49, 0x2e, 0x52, 0x50, 0xcb, 0xa6, + 0x2f, 0x43, 0x29, 0x65, 0x9e, 0x49, 0x19, 0x48, 0x31, 0xff, 0x31, 0x03, 0x05, 0xae, 0x8c, 0xf5, + 0x01, 0x6a, 0x42, 0xd9, 0x67, 0x8d, 0x2d, 0x3a, 0x67, 0x2e, 0x63, 0x7d, 0xb4, 0x9f, 0x7c, 0x32, + 0x66, 0x95, 0x38, 0x0a, 0xed, 0x46, 0xbf, 0x0c, 0x45, 0x41, 0x62, 0xb0, 0x1f, 0x72, 0x43, 0xd5, + 0x74, 0x02, 0x72, 0x69, 0x3f, 0x19, 0xb3, 0x80, 0x83, 0x6f, 0xec, 0x87, 0xa8, 0x0d, 0x33, 0x02, + 0x99, 0xcd, 0x8f, 0x8b, 0x91, 0xa5, 0x54, 0xe6, 0x74, 0x2a, 0x49, 0x73, 0x3e, 0x19, 0xb3, 0x10, + 0xc7, 0x57, 0x06, 0xd1, 0xb2, 0x14, 0x29, 0x3c, 0x60, 0xf1, 0x25, 0x21, 0x52, 0xfb, 0xc0, 0xe5, + 0x44, 0x84, 0xb6, 0x16, 0x15, 0xd9, 0xda, 0x07, 0x6e, 0xa4, 0xb2, 0x47, 0x05, 0xc8, 0xf3, 0x6e, + 0xf3, 0xdf, 0x33, 0x00, 0xc2, 0x62, 0xeb, 0x03, 0xb4, 0x0c, 0x15, 0x9f, 0xb7, 0x34, 0xfd, 0xbd, + 0x99, 0xaa, 0x3f, 0x6e, 0xe8, 0x31, 0xab, 0x2c, 0x90, 0x98, 0xb8, 0x1f, 0x42, 0x29, 0xa2, 0x22, + 0x55, 0x78, 0x31, 0x45, 0x85, 0x11, 0x85, 0xa2, 0x40, 0x20, 0x4a, 0xfc, 0x04, 0xce, 0x47, 0xf8, + 0x29, 0x5a, 0xbc, 0x7a, 0x84, 0x16, 0x23, 0x82, 0xd3, 0x82, 0x82, 0xaa, 0xc7, 0xc7, 0x8a, 0x60, + 0x52, 0x91, 0x17, 0x53, 0x14, 0xc9, 0x80, 0x54, 0x4d, 0x46, 0x12, 0x6a, 0xaa, 0x04, 0x12, 0xf6, + 0x59, 0xbf, 0xf9, 0x17, 0x39, 0xc8, 0x2f, 0x79, 0xfd, 0x81, 0xed, 0x93, 0x45, 0x34, 0xe1, 0xe3, + 0x60, 0xbf, 0x17, 0x52, 0x05, 0x56, 0x16, 0xae, 0xe9, 0x3c, 0x38, 0x98, 0xf8, 0x6b, 0x51, 0x50, + 0x8b, 0xa3, 0x10, 0x64, 0x1e, 0xe5, 0x33, 0x27, 0x40, 0xe6, 0x31, 0x9e, 0xa3, 0x08, 0x87, 0x90, + 0x95, 0x0e, 0xa1, 0x0e, 0x79, 0x7e, 0xc0, 0x63, 0xce, 0xfa, 0xc9, 0x98, 0x25, 0x3a, 0xd0, 0x3b, + 0x30, 0x15, 0x0f, 0x85, 0xe3, 0x1c, 0xa6, 0xd2, 0xd1, 0x23, 0xe7, 0x35, 0x28, 0x69, 0x11, 0x7a, + 0x82, 0xc3, 0x15, 0xfb, 0x4a, 0x5c, 0xbe, 0x20, 0xdc, 0x3a, 0x39, 0x56, 0x94, 0x9e, 0x8c, 0x09, + 0xc7, 0x7e, 0x45, 0x38, 0xf6, 0x49, 0x35, 0xd0, 0x12, 0xbd, 0x72, 0x1f, 0x7f, 0x5d, 0xf5, 0x5a, + 0xdf, 0x24, 0xc8, 0x11, 0x90, 0x74, 0x5f, 0xa6, 0x05, 0x65, 0x4d, 0x65, 0x24, 0x46, 0xb6, 0x3e, + 0x7e, 0xde, 0x5c, 0x65, 0x01, 0xf5, 0x31, 0x8d, 0xa1, 0x56, 0xd5, 0x20, 0x01, 0x7a, 0xb5, 0xb5, + 0xb9, 0x59, 0xcd, 0xa0, 0x0b, 0x50, 0x58, 0x5b, 0x6f, 0x6f, 0x31, 0xa8, 0x6c, 0x3d, 0xff, 0x87, + 0xcc, 0x93, 0xc8, 0xf8, 0xfc, 0x69, 0x44, 0x93, 0x87, 0x68, 0x25, 0x32, 0x8f, 0x29, 0x91, 0xd9, + 0x10, 0x91, 0x39, 0x23, 0x23, 0x73, 0x16, 0x21, 0x18, 0x5f, 0x6d, 0x35, 0x37, 0x69, 0x90, 0x66, + 0xa4, 0x17, 0x93, 0xd1, 0xfa, 0x51, 0x05, 0x4a, 0xcc, 0x3c, 0x5b, 0xfb, 0x2e, 0x39, 0x4c, 0xfc, + 0xa5, 0x01, 0x20, 0x37, 0x2c, 0x6a, 0x40, 0xbe, 0xc3, 0x44, 0xa8, 0x19, 0xd4, 0x03, 0x9e, 0x4f, + 0xb5, 0xb8, 0x25, 0xa0, 0xd0, 0x5d, 0xc8, 0x07, 0xfb, 0x9d, 0x0e, 0x0e, 0x44, 0xe4, 0x7e, 0x23, + 0xee, 0x84, 0xb9, 0x43, 0xb4, 0x04, 0x1c, 0x41, 0x79, 0x65, 0x3b, 0xbd, 0x7d, 0x1a, 0xc7, 0x8f, + 0x46, 0xe1, 0x70, 0xd2, 0xc7, 0xfe, 0x89, 0x01, 0x45, 0x65, 0x5b, 0xfc, 0x9c, 0x21, 0xe0, 0x12, + 0x14, 0xa8, 0x30, 0xb8, 0xcb, 0x83, 0xc0, 0xa4, 0x25, 0x3b, 0xd0, 0xfb, 0x50, 0x10, 0x3b, 0x49, + 0xc4, 0x81, 0x5a, 0x3a, 0xd9, 0xf5, 0x81, 0x25, 0x41, 0xa5, 0x90, 0x6d, 0x38, 0x47, 0xf5, 0xd4, + 0x21, 0xb7, 0x0f, 0xa1, 0x59, 0xf5, 0x58, 0x6e, 0xc4, 0x8e, 0xe5, 0x75, 0x98, 0x1c, 0xec, 0x1e, + 0x06, 0x4e, 0xc7, 0xee, 0x71, 0x71, 0xa2, 0xb6, 0xa4, 0xba, 0x09, 0x48, 0xa5, 0x7a, 0x1a, 0x05, + 0x48, 0xa2, 0x17, 0xa0, 0xf8, 0xc4, 0x0e, 0x76, 0xb9, 0x90, 0xb2, 0xff, 0x1e, 0x94, 0x49, 0xff, + 0xd3, 0x17, 0x27, 0x10, 0x5f, 0x60, 0x2d, 0x9a, 0xff, 0x64, 0x40, 0x45, 0xa0, 0x9d, 0xca, 0x40, + 0x08, 0x72, 0xbb, 0x76, 0xb0, 0x4b, 0x95, 0x51, 0xb6, 0xe8, 0x37, 0x7a, 0x07, 0xaa, 0x1d, 0x36, + 0xff, 0xad, 0xd8, 0xbd, 0x6b, 0x8a, 0xf7, 0x47, 0x7b, 0xff, 0x3d, 0x28, 0x13, 0x94, 0x2d, 0xfd, + 0x1e, 0x24, 0xb6, 0xf1, 0xfb, 0x56, 0x69, 0x97, 0xce, 0x39, 0x2e, 0xbe, 0x0d, 0x25, 0xa6, 0x8c, + 0xb3, 0x96, 0x5d, 0xea, 0xb5, 0x0e, 0x53, 0x9b, 0xae, 0x3d, 0x08, 0x76, 0xbd, 0x30, 0xa6, 0xf3, + 0x45, 0xf3, 0x6f, 0x0d, 0xa8, 0xca, 0xc1, 0x53, 0xc9, 0xf0, 0x36, 0x4c, 0xf9, 0xb8, 0x6f, 0x3b, + 0xae, 0xe3, 0xee, 0x6c, 0x6d, 0x1f, 0x86, 0x38, 0xe0, 0xd7, 0xd7, 0x4a, 0xd4, 0xfd, 0x88, 0xf4, + 0x12, 0x61, 0xb7, 0x7b, 0xde, 0x36, 0x77, 0xd2, 0xf4, 0x1b, 0x5d, 0xd5, 0xbd, 0x74, 0x41, 0xea, + 0x4d, 0xf4, 0x4b, 0x99, 0x7f, 0x9a, 0x81, 0xd2, 0x27, 0x76, 0xd8, 0x11, 0x2b, 0x08, 0xad, 0x40, + 0x25, 0x72, 0xe3, 0xb4, 0x87, 0xcb, 0x1d, 0x3b, 0x70, 0x50, 0x1c, 0x71, 0xaf, 0x11, 0x07, 0x8e, + 0x72, 0x47, 0xed, 0xa0, 0xa4, 0x6c, 0xb7, 0x83, 0x7b, 0x11, 0xa9, 0xcc, 0x68, 0x52, 0x14, 0x50, + 0x25, 0xa5, 0x76, 0xa0, 0x6f, 0x43, 0x75, 0xe0, 0x7b, 0x3b, 0x3e, 0x0e, 0x82, 0x88, 0x18, 0x0b, + 0xe1, 0x66, 0x0a, 0xb1, 0x0d, 0x0e, 0x1a, 0x3b, 0xc5, 0xdc, 0x7b, 0x32, 0x66, 0x4d, 0x0d, 0xf4, + 0x31, 0xe9, 0x58, 0xa7, 0xe4, 0x79, 0x8f, 0x79, 0xd6, 0x1f, 0x65, 0x01, 0x25, 0xa7, 0xf9, 0x55, + 0x8f, 0xc9, 0x37, 0xa0, 0x12, 0x84, 0xb6, 0x9f, 0x58, 0xf3, 0x65, 0xda, 0x1b, 0xad, 0xf8, 0xb7, + 0x21, 0x92, 0x6c, 0xcb, 0xf5, 0x42, 0xe7, 0xd5, 0x21, 0xbb, 0xa0, 0x58, 0x15, 0xd1, 0xbd, 0x46, + 0x7b, 0xd1, 0x1a, 0xe4, 0x5f, 0x39, 0xbd, 0x10, 0xfb, 0x41, 0x6d, 0x7c, 0x2e, 0x7b, 0xb3, 0xb2, + 0xf0, 0xee, 0x71, 0x86, 0x99, 0xff, 0x88, 0xc2, 0xb7, 0x0f, 0x07, 0xea, 0xe9, 0x97, 0x13, 0x51, + 0x8f, 0xf1, 0x13, 0xe9, 0x37, 0x22, 0x13, 0x26, 0x5f, 0x13, 0xa2, 0x5b, 0x4e, 0x97, 0xc6, 0xe2, + 0x68, 0x1f, 0xde, 0xb3, 0xf2, 0x74, 0x60, 0xa5, 0x8b, 0xae, 0xc1, 0xe4, 0x2b, 0xdf, 0xde, 0xe9, + 0x63, 0x37, 0x64, 0xb7, 0x7c, 0x09, 0x13, 0x0d, 0x98, 0xf3, 0x00, 0x52, 0x14, 0x12, 0xf9, 0xd6, + 0xd6, 0x37, 0x9e, 0xb7, 0xab, 0x63, 0xa8, 0x04, 0x93, 0x6b, 0xeb, 0xcb, 0xad, 0xd5, 0x16, 0x89, + 0x8d, 0x22, 0xe6, 0xdd, 0x95, 0x9b, 0xae, 0x29, 0x0c, 0xa1, 0xad, 0x09, 0x55, 0x2e, 0x43, 0xbf, + 0x74, 0x0b, 0xb9, 0x04, 0x89, 0xbb, 0xe6, 0x15, 0x98, 0x49, 0x5b, 0x1a, 0x02, 0xe0, 0x9e, 0xf9, + 0xaf, 0x19, 0x28, 0xf3, 0x8d, 0x70, 0xaa, 0x9d, 0x7b, 0x51, 0x91, 0x8a, 0x5f, 0x4f, 0x84, 0x92, + 0x6a, 0x90, 0x67, 0x1b, 0xa4, 0xcb, 0xef, 0xbf, 0xa2, 0x49, 0x9c, 0x33, 0x5b, 0xef, 0xb8, 0xcb, + 0xcd, 0x1e, 0xb5, 0x53, 0xdd, 0xe6, 0xf8, 0x48, 0xb7, 0x19, 0x6d, 0x38, 0x3b, 0xe0, 0x07, 0xab, + 0x82, 0x34, 0x45, 0x49, 0x6c, 0x2a, 0x32, 0xa8, 0xd9, 0x2c, 0x3f, 0xc2, 0x66, 0xe8, 0x06, 0x4c, + 0xe0, 0x21, 0x76, 0xc3, 0xa0, 0x56, 0xa4, 0x81, 0xb4, 0x2c, 0x2e, 0x54, 0x2d, 0xd2, 0x6b, 0xf1, + 0x41, 0x69, 0xaa, 0x0f, 0xe1, 0x1c, 0xbd, 0xef, 0x3e, 0xf6, 0x6d, 0x57, 0xbd, 0xb3, 0xb7, 0xdb, + 0xab, 0x3c, 0xec, 0x90, 0x4f, 0x54, 0x81, 0xcc, 0xca, 0x32, 0xd7, 0x4f, 0x66, 0x65, 0x59, 0xe2, + 0xff, 0xae, 0x01, 0x48, 0x25, 0x70, 0x2a, 0x5b, 0xc4, 0xb8, 0x08, 0x39, 0xb2, 0x52, 0x8e, 0x19, + 0x18, 0xc7, 0xbe, 0xef, 0xf9, 0xcc, 0x51, 0x5a, 0xac, 0x21, 0xa5, 0xb9, 0xcd, 0x85, 0xb1, 0xf0, + 0xd0, 0xdb, 0x8b, 0x3c, 0x00, 0x23, 0x6b, 0x24, 0x85, 0x6f, 0xc3, 0xb4, 0x06, 0x7e, 0x36, 0x21, + 0x7e, 0x1d, 0xa6, 0x28, 0xd5, 0xa5, 0x5d, 0xdc, 0xd9, 0x1b, 0x78, 0x8e, 0x9b, 0x90, 0x00, 0x5d, + 0x23, 0xbe, 0x4b, 0x84, 0x0b, 0x32, 0x45, 0x36, 0xe7, 0x52, 0xd4, 0xd9, 0x6e, 0xaf, 0xca, 0xa5, + 0xbe, 0x0d, 0x17, 0x62, 0x04, 0xc5, 0xcc, 0x7e, 0x05, 0x8a, 0x9d, 0xa8, 0x33, 0xe0, 0x27, 0xc8, + 0xcb, 0xba, 0xb8, 0x71, 0x54, 0x15, 0x43, 0xf2, 0xf8, 0x36, 0xbc, 0x91, 0xe0, 0x71, 0x16, 0xea, + 0xb8, 0x67, 0xde, 0x81, 0xf3, 0x94, 0xf2, 0x53, 0x8c, 0x07, 0xcd, 0x9e, 0x33, 0x3c, 0xde, 0x2c, + 0x87, 0x7c, 0xbe, 0x0a, 0xc6, 0xd7, 0xbb, 0xac, 0x24, 0xeb, 0x16, 0x67, 0xdd, 0x76, 0xfa, 0xb8, + 0xed, 0xad, 0x8e, 0x96, 0x96, 0x04, 0xf2, 0x3d, 0x7c, 0x18, 0xf0, 0xe3, 0x23, 0xfd, 0x96, 0xde, + 0xeb, 0xaf, 0x0d, 0xae, 0x4e, 0x95, 0xce, 0xd7, 0xbc, 0x35, 0x66, 0x01, 0x76, 0xc8, 0x1e, 0xc4, + 0x5d, 0x32, 0xc0, 0x72, 0x73, 0x4a, 0x4f, 0x24, 0x30, 0x89, 0x42, 0xa5, 0xb8, 0xc0, 0x97, 0xf9, + 0xc6, 0xa1, 0xff, 0x04, 0x89, 0x93, 0xd2, 0x5b, 0x50, 0xa4, 0x23, 0x9b, 0xa1, 0x1d, 0xee, 0x07, + 0xa3, 0x2c, 0xb7, 0x68, 0xfe, 0xc8, 0xe0, 0x3b, 0x4a, 0xd0, 0x39, 0xd5, 0x9c, 0xef, 0xc2, 0x04, + 0xbd, 0x21, 0x8a, 0x9b, 0xce, 0xc5, 0x94, 0x85, 0xcd, 0x24, 0xb2, 0x38, 0xa0, 0x72, 0x4e, 0x32, + 0x60, 0xe2, 0x19, 0xad, 0x1c, 0x28, 0xd2, 0xe6, 0x84, 0xe5, 0x5c, 0xbb, 0xcf, 0xd2, 0x8f, 0x05, + 0x8b, 0x7e, 0xd3, 0x0b, 0x01, 0xc6, 0xfe, 0x73, 0x6b, 0x95, 0xdd, 0x40, 0x0a, 0x56, 0xd4, 0x26, + 0x8a, 0xed, 0xf4, 0x1c, 0xec, 0x86, 0x74, 0x34, 0x47, 0x47, 0x95, 0x1e, 0x74, 0x03, 0x0a, 0x4e, + 0xb0, 0x8a, 0x6d, 0xdf, 0xe5, 0x29, 0x7e, 0xc5, 0x31, 0xcb, 0x11, 0xb9, 0xc6, 0xbe, 0x03, 0x55, + 0x26, 0x59, 0xb3, 0xdb, 0x55, 0x4e, 0xfb, 0x11, 0x7f, 0x23, 0xc6, 0x5f, 0xa3, 0x9f, 0x39, 0x9e, + 0xfe, 0xdf, 0x18, 0x70, 0x4e, 0x61, 0x70, 0x2a, 0x13, 0xbc, 0x07, 0x13, 0xac, 0xfe, 0xc2, 0x8f, + 0x82, 0x33, 0x3a, 0x16, 0x63, 0x63, 0x71, 0x18, 0x34, 0x0f, 0x79, 0xf6, 0x25, 0xae, 0x71, 0xe9, + 0xe0, 0x02, 0x48, 0x8a, 0x3c, 0x0f, 0xd3, 0x7c, 0x0c, 0xf7, 0xbd, 0xb4, 0x3d, 0x97, 0xd3, 0x3d, + 0xc4, 0x0f, 0x0d, 0x98, 0xd1, 0x11, 0x4e, 0x35, 0x4b, 0x45, 0xee, 0xcc, 0x57, 0x92, 0xfb, 0x5b, + 0x42, 0xee, 0xe7, 0x83, 0xae, 0x72, 0xe4, 0x8c, 0xaf, 0x38, 0xd5, 0xba, 0x19, 0xdd, 0xba, 0x92, + 0xd6, 0x4f, 0xa2, 0x39, 0x09, 0x62, 0xa7, 0x9a, 0xd3, 0x83, 0x13, 0xcd, 0x49, 0x39, 0x82, 0x25, + 0x26, 0xb7, 0x22, 0x96, 0xd1, 0xaa, 0x13, 0x44, 0x11, 0xe7, 0x5d, 0x28, 0xf5, 0x1c, 0x17, 0xdb, + 0x3e, 0xaf, 0x21, 0x19, 0xea, 0x7a, 0xbc, 0x6f, 0x69, 0x83, 0x92, 0xd4, 0x6f, 0x1a, 0x80, 0x54, + 0x5a, 0xbf, 0x18, 0x6b, 0x35, 0x84, 0x82, 0x37, 0x7c, 0xaf, 0xef, 0x85, 0xc7, 0x2d, 0xb3, 0x7b, + 0xe6, 0x6f, 0x1b, 0x70, 0x3e, 0x86, 0xf1, 0x8b, 0x90, 0xfc, 0x9e, 0x79, 0x09, 0xce, 0x2d, 0x63, + 0x71, 0xc6, 0x4b, 0xe4, 0x0e, 0x36, 0x01, 0xa9, 0xa3, 0x67, 0x73, 0x8a, 0xf9, 0x06, 0x9c, 0x7b, + 0xe6, 0x0d, 0x89, 0x23, 0x27, 0xc3, 0xd2, 0x4d, 0xb1, 0x64, 0x56, 0xa4, 0xaf, 0xa8, 0x2d, 0x5d, + 0xef, 0x26, 0x20, 0x15, 0xf3, 0x2c, 0xc4, 0x59, 0x34, 0xff, 0xc7, 0x80, 0x52, 0xb3, 0x67, 0xfb, + 0x7d, 0x21, 0xca, 0x87, 0x30, 0xc1, 0x32, 0x33, 0x3c, 0xcd, 0xfa, 0x96, 0x4e, 0x4f, 0x85, 0x65, + 0x8d, 0x26, 0xcb, 0xe3, 0x70, 0x2c, 0x32, 0x15, 0x5e, 0x59, 0x5e, 0x8e, 0x55, 0x9a, 0x97, 0xd1, + 0x6d, 0x18, 0xb7, 0x09, 0x0a, 0x0d, 0xaf, 0x95, 0x78, 0xba, 0x8c, 0x52, 0x23, 0x57, 0x22, 0x8b, + 0x41, 0x99, 0x1f, 0x40, 0x51, 0xe1, 0x80, 0xf2, 0x90, 0x7d, 0xdc, 0xe2, 0xd7, 0xa4, 0xe6, 0x52, + 0x7b, 0xe5, 0x05, 0x4b, 0x21, 0x56, 0x00, 0x96, 0x5b, 0x51, 0x3b, 0x93, 0x52, 0xd8, 0xb3, 0x39, + 0x1d, 0x1e, 0xb7, 0x54, 0x09, 0x8d, 0x51, 0x12, 0x66, 0x4e, 0x22, 0xa1, 0x64, 0xf1, 0x1b, 0x06, + 0x94, 0xb9, 0x6a, 0x4e, 0x1b, 0x9a, 0x29, 0xe5, 0x11, 0xa1, 0x59, 0x99, 0x86, 0xc5, 0x01, 0xa5, + 0x0c, 0xff, 0x6c, 0x40, 0x75, 0xd9, 0x7b, 0xed, 0xee, 0xf8, 0x76, 0x37, 0xda, 0x83, 0x1f, 0xc5, + 0xcc, 0x39, 0x1f, 0xcb, 0xf4, 0xc7, 0xe0, 0x65, 0x47, 0xcc, 0xac, 0x35, 0x99, 0x4b, 0x61, 0xf1, + 0x5d, 0x34, 0xcd, 0x6f, 0xc2, 0x54, 0x0c, 0x89, 0x18, 0xe8, 0x45, 0x73, 0x75, 0x65, 0x99, 0x18, + 0x84, 0xe6, 0x7b, 0x5b, 0x6b, 0xcd, 0x47, 0xab, 0x2d, 0x5e, 0x95, 0x6d, 0xae, 0x2d, 0xb5, 0x56, + 0xa5, 0xa1, 0xee, 0x8b, 0x19, 0xdc, 0x37, 0x7b, 0x70, 0x4e, 0x11, 0xe8, 0xb4, 0xc5, 0xb1, 0x74, + 0x79, 0x25, 0xb7, 0x6f, 0xc0, 0x9b, 0x11, 0xb7, 0x17, 0x6c, 0xb0, 0x8d, 0x03, 0xf5, 0xb2, 0x36, + 0xe4, 0x4c, 0x0b, 0x16, 0xf9, 0x14, 0x98, 0xef, 0x9b, 0x35, 0x28, 0xf3, 0xf3, 0x51, 0xdc, 0x65, + 0xfc, 0x69, 0x0e, 0x2a, 0x62, 0xe8, 0xeb, 0x91, 0x1f, 0x5d, 0x80, 0x89, 0xee, 0xf6, 0xa6, 0xf3, + 0x99, 0xa8, 0xe8, 0xf2, 0x16, 0xe9, 0xef, 0x31, 0x3e, 0xec, 0x9d, 0x06, 0x6f, 0xa1, 0x4b, 0xec, + 0x09, 0xc7, 0x8a, 0xdb, 0xc5, 0x07, 0xf4, 0x18, 0x95, 0xb3, 0x64, 0x07, 0x4d, 0x87, 0xf2, 0xf7, + 0x1c, 0xf4, 0x96, 0xac, 0xbc, 0xef, 0x40, 0x8b, 0x50, 0x25, 0xdf, 0xcd, 0xc1, 0xa0, 0xe7, 0xe0, + 0x2e, 0x23, 0x40, 0x2e, 0xc8, 0x39, 0x79, 0x4e, 0x4a, 0x00, 0xa0, 0x2b, 0x30, 0x41, 0x2f, 0x8f, + 0x41, 0x6d, 0x92, 0x44, 0x64, 0x09, 0xca, 0xbb, 0xd1, 0x3b, 0x50, 0x64, 0x12, 0xaf, 0xb8, 0xcf, + 0x03, 0x4c, 0x5f, 0x3b, 0x28, 0x99, 0x14, 0x75, 0x4c, 0x3f, 0xa1, 0xc1, 0xa8, 0x13, 0x1a, 0x6a, + 0x40, 0x25, 0x08, 0x3d, 0xdf, 0xde, 0x11, 0x66, 0xa4, 0x4f, 0x1d, 0x94, 0x74, 0x5f, 0x6c, 0x58, + 0x8a, 0xf0, 0xf1, 0xbe, 0x17, 0xda, 0xfa, 0x13, 0x87, 0xf7, 0x2d, 0x75, 0x0c, 0x7d, 0x0b, 0xca, + 0x5d, 0xb1, 0x48, 0x56, 0xdc, 0x57, 0x1e, 0x7d, 0xd6, 0x90, 0xa8, 0xde, 0x2d, 0xab, 0x20, 0x92, + 0x92, 0x8e, 0xaa, 0xde, 0x64, 0xcb, 0x1a, 0x06, 0xb1, 0x36, 0x76, 0x49, 0x68, 0x67, 0x19, 0x9c, + 0x49, 0x4b, 0x34, 0xd1, 0x75, 0x28, 0xb3, 0x48, 0xf0, 0x42, 0x5b, 0x0d, 0x7a, 0x27, 0x89, 0x63, + 0xcd, 0xfd, 0x70, 0xb7, 0x45, 0x91, 0x12, 0x8b, 0xf2, 0x32, 0x20, 0x32, 0xba, 0xec, 0x04, 0xa9, + 0xc3, 0x1c, 0x39, 0x75, 0x45, 0xdf, 0x37, 0xd7, 0x60, 0x9a, 0x8c, 0x62, 0x37, 0x74, 0x3a, 0xca, + 0x51, 0x4c, 0x1c, 0xf6, 0x8d, 0xd8, 0x61, 0xdf, 0x0e, 0x82, 0xd7, 0x9e, 0xdf, 0xe5, 0x62, 0x46, + 0x6d, 0xc9, 0xed, 0x1f, 0x0c, 0x26, 0xcd, 0xf3, 0x40, 0x3b, 0xa8, 0x7f, 0x45, 0x7a, 0xe8, 0x97, + 0x20, 0xcf, 0x1f, 0x48, 0xf1, 0xfc, 0xe7, 0x85, 0x79, 0xf6, 0x30, 0x6b, 0x9e, 0x13, 0x5e, 0x67, + 0xa3, 0x4a, 0x8e, 0x8e, 0xc3, 0x93, 0xe5, 0xb2, 0x6b, 0x07, 0xbb, 0xb8, 0xbb, 0x21, 0x88, 0x6b, + 0xd9, 0xe1, 0xfb, 0x56, 0x6c, 0x58, 0xca, 0x7e, 0x57, 0x8a, 0xfe, 0x18, 0x87, 0x47, 0x88, 0xae, + 0xd6, 0x1f, 0xce, 0x0b, 0x14, 0x5e, 0x36, 0x3d, 0x09, 0xd6, 0x8f, 0x0d, 0xb8, 0x2c, 0xd0, 0x96, + 0x76, 0x6d, 0x77, 0x07, 0x0b, 0x61, 0x7e, 0x5e, 0x7d, 0x25, 0x27, 0x9d, 0x3d, 0xe1, 0xa4, 0x9f, + 0x42, 0x2d, 0x9a, 0x34, 0xcd, 0x45, 0x79, 0x3d, 0x75, 0x12, 0xfb, 0x41, 0xe4, 0x24, 0xe9, 0x37, + 0xe9, 0xf3, 0xbd, 0x5e, 0x74, 0x0d, 0x24, 0xdf, 0x92, 0xd8, 0x2a, 0x5c, 0x14, 0xc4, 0x78, 0x72, + 0x48, 0xa7, 0x96, 0x98, 0xd3, 0x91, 0xd4, 0xb8, 0x3d, 0x08, 0x8d, 0xa3, 0x97, 0x52, 0x2a, 0x8a, + 0x6e, 0x42, 0xca, 0xc5, 0x48, 0xe3, 0x32, 0xcb, 0x76, 0x00, 0x91, 0x59, 0x39, 0xb1, 0x27, 0xc6, + 0x09, 0xc9, 0xd4, 0x71, 0xbe, 0x04, 0xc8, 0x78, 0x62, 0x09, 0x8c, 0xe6, 0x8a, 0x61, 0x36, 0x12, + 0x94, 0xa8, 0x7d, 0x03, 0xfb, 0x7d, 0x27, 0x08, 0x94, 0x42, 0x5c, 0x9a, 0xba, 0xde, 0x82, 0xdc, + 0x00, 0xf3, 0xe3, 0x4b, 0x71, 0x01, 0x89, 0x3d, 0xa1, 0x20, 0xd3, 0x71, 0xc9, 0xa6, 0x0f, 0x57, + 0x04, 0x1b, 0x66, 0x90, 0x54, 0x3e, 0x71, 0x31, 0x45, 0xf2, 0x3f, 0x33, 0x22, 0xf9, 0x9f, 0xd5, + 0x93, 0xff, 0xda, 0x91, 0x5a, 0x75, 0x54, 0x67, 0x73, 0xa4, 0x6e, 0x33, 0x03, 0x44, 0xfe, 0xed, + 0x6c, 0xa8, 0xfe, 0x1e, 0x77, 0x54, 0x67, 0x15, 0xce, 0x85, 0x83, 0xcf, 0xe8, 0x0e, 0xde, 0x84, + 0x12, 0x31, 0x92, 0xa5, 0x56, 0x45, 0x72, 0x96, 0xd6, 0x27, 0x9d, 0xf1, 0x1e, 0xcc, 0xe8, 0xce, + 0xf8, 0x54, 0x42, 0xcd, 0xc0, 0x78, 0xe8, 0xed, 0x61, 0x11, 0x53, 0x58, 0x23, 0xa1, 0xd6, 0xc8, + 0x51, 0x9f, 0x8d, 0x5a, 0xbf, 0x2b, 0xa9, 0xd2, 0x0d, 0x78, 0xda, 0x19, 0x90, 0xe5, 0x28, 0x6e, + 0xff, 0xac, 0x21, 0x79, 0x7d, 0x02, 0x17, 0xe2, 0xce, 0xf7, 0x6c, 0x26, 0xb1, 0xc5, 0x36, 0x67, + 0x9a, 0x7b, 0x3e, 0x1b, 0x06, 0x2f, 0xa5, 0x9f, 0x54, 0x9c, 0xee, 0xd9, 0xd0, 0xfe, 0x55, 0xa8, + 0xa7, 0xf9, 0xe0, 0x33, 0xdd, 0x8b, 0x91, 0x4b, 0x3e, 0x1b, 0xaa, 0x3f, 0x34, 0x24, 0x59, 0x75, + 0xd5, 0x7c, 0xf0, 0x55, 0xc8, 0x8a, 0x58, 0x77, 0x27, 0x5a, 0x3e, 0x8d, 0xc8, 0x5b, 0x66, 0xd3, + 0xbd, 0xa5, 0x44, 0xa1, 0x80, 0x62, 0xff, 0x49, 0x57, 0xff, 0x75, 0xae, 0x5e, 0xce, 0x4c, 0xc6, + 0x9d, 0xd3, 0x32, 0x23, 0xe1, 0x39, 0x62, 0x46, 0x1b, 0x89, 0xad, 0xa2, 0x06, 0xa9, 0xb3, 0x31, + 0xdd, 0xaf, 0xc9, 0x00, 0x93, 0x88, 0x63, 0x67, 0xc3, 0xc1, 0x86, 0xb9, 0xd1, 0x21, 0xec, 0x6c, + 0x58, 0x6c, 0xc3, 0x34, 0x7d, 0xee, 0xb6, 0x19, 0xfa, 0xd8, 0x96, 0x77, 0xfc, 0x47, 0x50, 0x61, + 0x31, 0x4f, 0xbc, 0x9d, 0x39, 0xc1, 0xdb, 0x3e, 0xab, 0xec, 0xab, 0x4d, 0xc1, 0xe3, 0xc1, 0xad, + 0x26, 0x14, 0xa2, 0xfc, 0x82, 0xf2, 0x1a, 0xba, 0x08, 0xf9, 0xb5, 0xf5, 0xcd, 0x8d, 0xe6, 0x12, + 0xb9, 0x3e, 0xcf, 0x40, 0x7e, 0x69, 0xdd, 0xb2, 0x9e, 0x6f, 0xb4, 0xc9, 0xfd, 0x39, 0xfe, 0x38, + 0x6a, 0xe1, 0xef, 0x73, 0x90, 0x79, 0xfa, 0x02, 0x7d, 0x0a, 0xe3, 0xec, 0x71, 0xde, 0x11, 0x6f, + 0x34, 0xeb, 0x47, 0xc9, 0x68, 0xbe, 0xf1, 0x83, 0xff, 0xfa, 0xbf, 0xdf, 0xcf, 0x9c, 0x33, 0x4b, + 0x8d, 0xe1, 0x62, 0x63, 0x6f, 0xd8, 0xa0, 0x22, 0x3f, 0x34, 0x6e, 0xa1, 0x0d, 0x28, 0x2a, 0x8a, + 0x38, 0x92, 0xc1, 0xd5, 0x94, 0x31, 0x5d, 0x7f, 0xe6, 0xd8, 0x1d, 0x03, 0x7d, 0x0c, 0xd9, 0x8d, + 0xfd, 0x10, 0x8d, 0x7c, 0x0d, 0x5a, 0x1f, 0xfd, 0xc8, 0xd1, 0x3c, 0x4f, 0xc5, 0x9c, 0x32, 0x81, + 0x8b, 0x39, 0xd8, 0x0f, 0x89, 0x90, 0xdf, 0x83, 0xa2, 0xfa, 0x44, 0xf1, 0xd8, 0x27, 0xa2, 0xf5, + 0xe3, 0x9f, 0x3f, 0x9a, 0x97, 0x29, 0xab, 0x37, 0x4c, 0xc4, 0x59, 0xb1, 0x47, 0x94, 0x91, 0x5e, + 0x3e, 0x86, 0x6c, 0xfb, 0xc0, 0x45, 0x23, 0x1f, 0x90, 0xd6, 0x47, 0xbf, 0x88, 0x4c, 0xcc, 0x22, + 0x3c, 0x70, 0x09, 0xc9, 0xef, 0xf2, 0xa7, 0x8f, 0x9d, 0x10, 0x5d, 0x49, 0x79, 0xbb, 0xa6, 0xbe, + 0xc9, 0xaa, 0xcf, 0x8d, 0x06, 0xe0, 0x4c, 0x2e, 0x51, 0x26, 0x17, 0xcc, 0x73, 0x9c, 0x49, 0x27, + 0x02, 0x79, 0x68, 0xdc, 0x5a, 0xe8, 0xc0, 0x38, 0xad, 0xf9, 0xa3, 0x97, 0xe2, 0xa3, 0x9e, 0xf2, + 0x9a, 0x62, 0xc4, 0xd2, 0xd1, 0x5e, 0x0b, 0x98, 0x33, 0x94, 0x51, 0xc5, 0x2c, 0x10, 0x46, 0xb4, + 0xe2, 0xff, 0xd0, 0xb8, 0x75, 0xd3, 0xb8, 0x63, 0x2c, 0xfc, 0xd5, 0x38, 0x8c, 0xd3, 0xda, 0x12, + 0xda, 0x03, 0x90, 0xb5, 0xed, 0xf8, 0xec, 0x12, 0x65, 0xf3, 0xf8, 0xec, 0x92, 0x65, 0x71, 0xb3, + 0x4e, 0x99, 0xce, 0x98, 0x53, 0x84, 0x29, 0x2d, 0x59, 0x35, 0x68, 0x85, 0x8e, 0xe8, 0xf1, 0xc7, + 0x06, 0x2f, 0xb2, 0x31, 0xe7, 0x80, 0xd2, 0xa8, 0x69, 0x75, 0xed, 0xf8, 0x72, 0x48, 0x29, 0x65, + 0x9b, 0xf7, 0x29, 0xc3, 0x86, 0x59, 0x95, 0x0c, 0x7d, 0x0a, 0xf1, 0xd0, 0xb8, 0xf5, 0xb2, 0x66, + 0x4e, 0x73, 0x2d, 0xc7, 0x46, 0xd0, 0xf7, 0xa1, 0xa2, 0x57, 0x60, 0xd1, 0xb5, 0x14, 0x5e, 0xf1, + 0x8a, 0x6e, 0xfd, 0xfa, 0xd1, 0x40, 0x5c, 0xa6, 0x59, 0x2a, 0x13, 0x67, 0xce, 0x38, 0xef, 0x61, + 0x3c, 0xb0, 0x09, 0x10, 0xb7, 0x01, 0xfa, 0x63, 0x83, 0x17, 0xd1, 0x65, 0x01, 0x15, 0xa5, 0x51, + 0x4f, 0xd4, 0x69, 0xeb, 0x37, 0x8e, 0x81, 0xe2, 0x42, 0x7c, 0x40, 0x85, 0x78, 0x60, 0xce, 0x48, + 0x21, 0x42, 0xa7, 0x8f, 0x43, 0x8f, 0x4b, 0xf1, 0xf2, 0x92, 0xf9, 0x86, 0xa6, 0x1c, 0x6d, 0x54, + 0x1a, 0x8b, 0x15, 0x3a, 0x53, 0x8d, 0xa5, 0xd5, 0x52, 0x53, 0x8d, 0xa5, 0x57, 0x49, 0xd3, 0x8c, + 0xc5, 0xcb, 0x9a, 0x29, 0xc6, 0x8a, 0x46, 0x16, 0xfe, 0x3f, 0x07, 0xf9, 0x25, 0xf6, 0x5f, 0xa8, + 0x90, 0x07, 0x85, 0xa8, 0xf4, 0x87, 0x66, 0xd3, 0xaa, 0x0b, 0xf2, 0x02, 0x5a, 0xbf, 0x32, 0x72, + 0x9c, 0x0b, 0x74, 0x95, 0x0a, 0xf4, 0xa6, 0x79, 0x81, 0x70, 0xe6, 0xff, 0x4b, 0xab, 0xc1, 0x72, + 0xd0, 0x0d, 0xbb, 0xdb, 0x25, 0x8a, 0xf8, 0x75, 0x28, 0xa9, 0x85, 0x38, 0x74, 0x35, 0xb5, 0xa2, + 0xa1, 0x56, 0xf5, 0xea, 0xe6, 0x51, 0x20, 0x9c, 0xf3, 0x75, 0xca, 0x79, 0xd6, 0xbc, 0x98, 0xc2, + 0xd9, 0xa7, 0xa0, 0x1a, 0x73, 0x56, 0x31, 0x4b, 0x67, 0xae, 0x95, 0xe6, 0xd2, 0x99, 0xeb, 0x05, + 0xb7, 0x23, 0x99, 0xef, 0x53, 0x50, 0xc2, 0x3c, 0x00, 0x90, 0x25, 0x2d, 0x94, 0xaa, 0x4b, 0xe5, + 0x9a, 0x1d, 0x77, 0x0e, 0xc9, 0x6a, 0x98, 0x69, 0x52, 0xb6, 0x7c, 0xdd, 0xc5, 0xd8, 0xf6, 0x9c, + 0x20, 0x64, 0x1b, 0xb3, 0xac, 0x15, 0xa4, 0x50, 0xea, 0x7c, 0xf4, 0xfa, 0x56, 0xfd, 0xda, 0x91, + 0x30, 0x9c, 0xfb, 0x0d, 0xca, 0xfd, 0x8a, 0x59, 0x4f, 0xe1, 0x3e, 0x60, 0xb0, 0x64, 0xb1, 0x7d, + 0x9e, 0x87, 0xe2, 0x33, 0xdb, 0x71, 0x43, 0xec, 0xda, 0x6e, 0x07, 0xa3, 0x6d, 0x18, 0xa7, 0xa7, + 0x81, 0xb8, 0x23, 0x56, 0xeb, 0x2f, 0x71, 0x47, 0xac, 0x15, 0x20, 0xcc, 0x39, 0xca, 0xb8, 0x6e, + 0x9e, 0x27, 0x8c, 0xfb, 0x92, 0x74, 0x83, 0x95, 0x2e, 0x8c, 0x5b, 0xe8, 0x15, 0x4c, 0xf0, 0x87, + 0x07, 0x31, 0x42, 0x5a, 0x2a, 0xb0, 0x7e, 0x29, 0x7d, 0x30, 0x6d, 0x2d, 0xab, 0x6c, 0x02, 0x0a, + 0x47, 0xf8, 0x0c, 0x01, 0x64, 0x1d, 0x2d, 0x6e, 0xd1, 0x44, 0xfd, 0xad, 0x3e, 0x37, 0x1a, 0x20, + 0x4d, 0xa7, 0x2a, 0xcf, 0x6e, 0x04, 0x4b, 0xf8, 0x7e, 0x07, 0x72, 0x4f, 0xec, 0x60, 0x17, 0xc5, + 0x62, 0xaf, 0xf2, 0x4e, 0xb8, 0x5e, 0x4f, 0x1b, 0xe2, 0x5c, 0xae, 0x50, 0x2e, 0x17, 0x99, 0x2b, + 0x53, 0xb9, 0xd0, 0x97, 0xb0, 0x4c, 0x7f, 0xec, 0x91, 0x70, 0x5c, 0x7f, 0xda, 0x8b, 0xe3, 0xb8, + 0xfe, 0xf4, 0x77, 0xc5, 0xa3, 0xf5, 0x47, 0xb8, 0xec, 0x0d, 0x09, 0x9f, 0x01, 0x4c, 0x8a, 0xe7, + 0xb4, 0x28, 0xf6, 0x08, 0x29, 0xf6, 0x06, 0xb7, 0x3e, 0x3b, 0x6a, 0x98, 0x73, 0xbb, 0x46, 0xb9, + 0x5d, 0x36, 0x6b, 0x09, 0x6b, 0x71, 0xc8, 0x87, 0xc6, 0xad, 0x3b, 0x06, 0xfa, 0x3e, 0x80, 0x2c, + 0x35, 0x26, 0xf6, 0x60, 0xbc, 0x7c, 0x99, 0xd8, 0x83, 0x89, 0x2a, 0xa5, 0x39, 0x4f, 0xf9, 0xde, + 0x34, 0xaf, 0xc5, 0xf9, 0x86, 0xbe, 0xed, 0x06, 0xaf, 0xb0, 0x7f, 0x9b, 0x55, 0x2b, 0x82, 0x5d, + 0x67, 0x40, 0xa6, 0xec, 0x43, 0x21, 0xca, 0x90, 0xc7, 0xfd, 0x6d, 0xbc, 0x66, 0x15, 0xf7, 0xb7, + 0x89, 0x12, 0x92, 0xee, 0x78, 0xb4, 0xf5, 0x22, 0x40, 0xc9, 0x16, 0xfc, 0xf3, 0x2a, 0xe4, 0xc8, + 0x45, 0x82, 0x1c, 0x4f, 0x64, 0x92, 0x2a, 0x3e, 0xfb, 0x44, 0x9e, 0x3d, 0x3e, 0xfb, 0x64, 0x7e, + 0x4b, 0x3f, 0x9e, 0x90, 0x4b, 0x66, 0x83, 0x65, 0x7f, 0xc8, 0x4c, 0x3d, 0x28, 0x2a, 0xc9, 0x2b, + 0x94, 0x42, 0x4c, 0xcf, 0xdb, 0xc7, 0x03, 0x5e, 0x4a, 0xe6, 0xcb, 0x7c, 0x93, 0xf2, 0x3b, 0xcf, + 0x02, 0x1e, 0xe5, 0xd7, 0x65, 0x10, 0x84, 0x21, 0x9f, 0x1d, 0xdf, 0xf9, 0x29, 0xb3, 0xd3, 0x77, + 0xff, 0xdc, 0x68, 0x80, 0x91, 0xb3, 0x93, 0x5b, 0xff, 0x35, 0x94, 0xd4, 0x84, 0x15, 0x4a, 0x11, + 0x3e, 0x56, 0x59, 0x88, 0x47, 0x92, 0xb4, 0x7c, 0x97, 0xee, 0xdb, 0x28, 0x4b, 0x5b, 0x01, 0x23, + 0x8c, 0x7b, 0x90, 0xe7, 0x89, 0xab, 0x34, 0x95, 0xea, 0xc5, 0x87, 0x34, 0x95, 0xc6, 0xb2, 0x5e, + 0xfa, 0xf9, 0x99, 0x72, 0x24, 0x17, 0x68, 0x11, 0xad, 0x39, 0xb7, 0xc7, 0x38, 0x1c, 0xc5, 0x4d, + 0x26, 0x9b, 0x47, 0x71, 0x53, 0xf2, 0x1a, 0xa3, 0xb8, 0xed, 0xe0, 0x90, 0xfb, 0x03, 0x91, 0x14, + 0x40, 0x23, 0x88, 0xa9, 0x11, 0xd2, 0x3c, 0x0a, 0x24, 0xed, 0x7a, 0x23, 0x19, 0x8a, 0xf0, 0x78, + 0x00, 0x20, 0x93, 0x68, 0xf1, 0x33, 0x6b, 0x6a, 0x7d, 0x23, 0x7e, 0x66, 0x4d, 0xcf, 0xc3, 0xe9, + 0x3e, 0x56, 0xf2, 0x65, 0xb7, 0x2b, 0xc2, 0xf9, 0x0b, 0x03, 0x50, 0x32, 0xcd, 0x86, 0xde, 0x4d, + 0xa7, 0x9e, 0x5a, 0x2b, 0xa9, 0xbf, 0x77, 0x32, 0xe0, 0x34, 0x87, 0x2c, 0x45, 0xea, 0x50, 0xe8, + 0xc1, 0x6b, 0x22, 0xd4, 0xe7, 0x06, 0x94, 0xb5, 0xd4, 0x1c, 0x7a, 0x6b, 0x84, 0x4d, 0x63, 0x05, + 0x93, 0xfa, 0xdb, 0xc7, 0xc2, 0xa5, 0x1d, 0xe6, 0x95, 0x15, 0x20, 0x6e, 0x35, 0xbf, 0x65, 0x40, + 0x45, 0xcf, 0xe0, 0xa1, 0x11, 0xb4, 0x13, 0x75, 0x96, 0xfa, 0xcd, 0xe3, 0x01, 0x8f, 0x36, 0x8f, + 0xbc, 0xd0, 0xf4, 0x20, 0xcf, 0x53, 0x7d, 0x69, 0x0b, 0x5f, 0x2f, 0xcc, 0xa4, 0x2d, 0xfc, 0x58, + 0x9e, 0x30, 0x65, 0xe1, 0xfb, 0x5e, 0x0f, 0x2b, 0xdb, 0x8c, 0x67, 0x00, 0x47, 0x71, 0x3b, 0x7a, + 0x9b, 0xc5, 0xd2, 0x87, 0xa3, 0xb8, 0xc9, 0x6d, 0x26, 0x12, 0x7d, 0x68, 0x04, 0xb1, 0x63, 0xb6, + 0x59, 0x3c, 0x4f, 0x98, 0xb2, 0xcd, 0x28, 0x43, 0x65, 0x9b, 0xc9, 0x04, 0x5c, 0xda, 0x36, 0x4b, + 0xd4, 0x90, 0xd2, 0xb6, 0x59, 0x32, 0x87, 0x97, 0x62, 0x47, 0xca, 0x57, 0xdb, 0x66, 0xd3, 0x29, + 0x29, 0x3a, 0xf4, 0xde, 0x08, 0x25, 0xa6, 0x56, 0xa4, 0xea, 0xb7, 0x4f, 0x08, 0x3d, 0x72, 0x8d, + 0x33, 0xf5, 0x8b, 0x35, 0xfe, 0x07, 0x06, 0xcc, 0xa4, 0x65, 0xf5, 0xd0, 0x08, 0x3e, 0x23, 0x0a, + 0x58, 0xf5, 0xf9, 0x93, 0x82, 0x1f, 0xad, 0xad, 0x68, 0xd5, 0x3f, 0xda, 0xf9, 0xa2, 0xd9, 0x78, + 0x79, 0x05, 0x2e, 0xc3, 0x44, 0x73, 0xe0, 0x3c, 0xc5, 0x87, 0x68, 0x7a, 0x32, 0x53, 0x2f, 0x13, + 0xba, 0x9e, 0xef, 0x7c, 0x46, 0x7f, 0xab, 0x63, 0x2e, 0xb3, 0x5d, 0x02, 0x88, 0x00, 0xc6, 0xfe, + 0xed, 0xcb, 0x59, 0xe3, 0x3f, 0xbf, 0x9c, 0x35, 0xfe, 0xfb, 0xcb, 0x59, 0xe3, 0xa7, 0xff, 0x3b, + 0x3b, 0xf6, 0xf2, 0xda, 0x8e, 0x47, 0xc5, 0x9a, 0x77, 0xbc, 0x86, 0xfc, 0xfd, 0x90, 0xc5, 0x86, + 0x2a, 0xea, 0xf6, 0x04, 0xfd, 0xc1, 0x8f, 0xc5, 0x9f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x7a, 0x33, + 0x06, 0x6b, 0xb1, 0x44, 0x00, 0x00, } func (m *ResponseHeader) Marshal() (dAtA []byte, err error) { @@ -11286,6 +11349,45 @@ func (m *AuthRoleRevokePermissionResponse) MarshalToSizedBuffer(dAtA []byte) (in return len(dAtA) - i, nil } +func (m *RangeStreamResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RangeStreamResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RangeStreamResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if m.RangeResponse != nil { + { + size, err := m.RangeResponse.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintRpc(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintRpc(dAtA []byte, offset int, v uint64) int { offset -= sovRpc(v) base := offset @@ -13428,6 +13530,22 @@ func (m *AuthRoleRevokePermissionResponse) Size() (n int) { return n } +func (m *RangeStreamResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.RangeResponse != nil { + l = m.RangeResponse.Size() + n += 1 + l + sovRpc(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func sovRpc(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -24531,6 +24649,93 @@ func (m *AuthRoleRevokePermissionResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *RangeStreamResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRpc + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RangeStreamResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RangeStreamResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RangeResponse", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRpc + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthRpc + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRpc + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RangeResponse == nil { + m.RangeResponse = &RangeResponse{} + } + if err := m.RangeResponse.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipRpc(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthRpc + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipRpc(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/api/etcdserverpb/rpc.proto b/api/etcdserverpb/rpc.proto index b23baa51d97b..31d5283473b0 100644 --- a/api/etcdserverpb/rpc.proto +++ b/api/etcdserverpb/rpc.proto @@ -39,6 +39,14 @@ service KV { }; } + // RangeStream gets the keys in the range from the key-value store. + // + // This RPC is intentionally gRPC-only and does not provide a + // grpc-gateway REST mapping, because streaming chunked responses + // are not a good fit for standard JSON/REST semantics. + rpc RangeStream(RangeRequest) returns (stream RangeStreamResponse) { + } + // Put puts the given key into the key-value store. // A put request increments the revision of the key-value store // and generates one event in the event history. @@ -1430,3 +1438,20 @@ message AuthRoleRevokePermissionResponse { ResponseHeader header = 1; } + +// RangeStreamResponse is the response for the RangeStream RPC. +message RangeStreamResponse { + option (versionpb.etcd_version_msg) = "3.7"; + // range_response is a partial response for the KV.RangeStream RPC. + // The result of proto.Merge() applied on all responses should result in the + // same RangeResponse response as to the Range() method. + // + // Field population across chunks: + // - kvs: each chunk carries a disjoint slice of the result. Concatenating + // them in order yields the full key set. + // - header, more, count: set only on the final chunk. Non-merge clients + // can rely on io.EOF (end of stream) to detect completion. These + // fields are provided for clients that merge all responses into a + // single RangeResponse. + RangeResponse range_response = 1; +} diff --git a/api/etcdserverpb/rpc_grpc.pb.go b/api/etcdserverpb/rpc_grpc.pb.go index 0ae1548b97cb..fb11d78c6f43 100644 --- a/api/etcdserverpb/rpc_grpc.pb.go +++ b/api/etcdserverpb/rpc_grpc.pb.go @@ -21,6 +21,7 @@ const _ = grpc.SupportPackageIsVersion9 const ( KV_Range_FullMethodName = "/etcdserverpb.KV/Range" + KV_RangeStream_FullMethodName = "/etcdserverpb.KV/RangeStream" KV_Put_FullMethodName = "/etcdserverpb.KV/Put" KV_DeleteRange_FullMethodName = "/etcdserverpb.KV/DeleteRange" KV_Txn_FullMethodName = "/etcdserverpb.KV/Txn" @@ -33,6 +34,12 @@ const ( type KVClient interface { // Range gets the keys in the range from the key-value store. Range(ctx context.Context, in *RangeRequest, opts ...grpc.CallOption) (*RangeResponse, error) + // RangeStream gets the keys in the range from the key-value store. + // + // This RPC is intentionally gRPC-only and does not provide a + // grpc-gateway REST mapping, because streaming chunked responses + // are not a good fit for standard JSON/REST semantics. + RangeStream(ctx context.Context, in *RangeRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[RangeStreamResponse], error) // Put puts the given key into the key-value store. // A put request increments the revision of the key-value store // and generates one event in the event history. @@ -70,6 +77,25 @@ func (c *kVClient) Range(ctx context.Context, in *RangeRequest, opts ...grpc.Cal return out, nil } +func (c *kVClient) RangeStream(ctx context.Context, in *RangeRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[RangeStreamResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &KV_ServiceDesc.Streams[0], KV_RangeStream_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[RangeRequest, RangeStreamResponse]{ClientStream: stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type KV_RangeStreamClient = grpc.ServerStreamingClient[RangeStreamResponse] + func (c *kVClient) Put(ctx context.Context, in *PutRequest, opts ...grpc.CallOption) (*PutResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(PutResponse) @@ -116,6 +142,12 @@ func (c *kVClient) Compact(ctx context.Context, in *CompactionRequest, opts ...g type KVServer interface { // Range gets the keys in the range from the key-value store. Range(context.Context, *RangeRequest) (*RangeResponse, error) + // RangeStream gets the keys in the range from the key-value store. + // + // This RPC is intentionally gRPC-only and does not provide a + // grpc-gateway REST mapping, because streaming chunked responses + // are not a good fit for standard JSON/REST semantics. + RangeStream(*RangeRequest, grpc.ServerStreamingServer[RangeStreamResponse]) error // Put puts the given key into the key-value store. // A put request increments the revision of the key-value store // and generates one event in the event history. @@ -146,6 +178,9 @@ type UnimplementedKVServer struct{} func (UnimplementedKVServer) Range(context.Context, *RangeRequest) (*RangeResponse, error) { return nil, status.Error(codes.Unimplemented, "method Range not implemented") } +func (UnimplementedKVServer) RangeStream(*RangeRequest, grpc.ServerStreamingServer[RangeStreamResponse]) error { + return status.Error(codes.Unimplemented, "method RangeStream not implemented") +} func (UnimplementedKVServer) Put(context.Context, *PutRequest) (*PutResponse, error) { return nil, status.Error(codes.Unimplemented, "method Put not implemented") } @@ -197,6 +232,17 @@ func _KV_Range_Handler(srv interface{}, ctx context.Context, dec func(interface{ return interceptor(ctx, in, info, handler) } +func _KV_RangeStream_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(RangeRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(KVServer).RangeStream(m, &grpc.GenericServerStream[RangeRequest, RangeStreamResponse]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type KV_RangeStreamServer = grpc.ServerStreamingServer[RangeStreamResponse] + func _KV_Put_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(PutRequest) if err := dec(in); err != nil { @@ -297,7 +343,13 @@ var KV_ServiceDesc = grpc.ServiceDesc{ Handler: _KV_Compact_Handler, }, }, - Streams: []grpc.StreamDesc{}, + Streams: []grpc.StreamDesc{ + { + StreamName: "RangeStream", + Handler: _KV_RangeStream_Handler, + ServerStreams: true, + }, + }, Metadata: "rpc.proto", } diff --git a/scripts/etcd_version_annotations.txt b/scripts/etcd_version_annotations.txt index 1ba1f1241c92..c700c58d658e 100644 --- a/scripts/etcd_version_annotations.txt +++ b/scripts/etcd_version_annotations.txt @@ -336,6 +336,8 @@ etcdserverpb.RangeResponse.count: "" etcdserverpb.RangeResponse.header: "" etcdserverpb.RangeResponse.kvs: "" etcdserverpb.RangeResponse.more: "" +etcdserverpb.RangeStreamResponse: "3.7" +etcdserverpb.RangeStreamResponse.range_response: "" etcdserverpb.RequestHeader: "3.0" etcdserverpb.RequestHeader.ID: "" etcdserverpb.RequestHeader.auth_revision: "3.1" From f29af7e547a3e55df736b79bf3ba1c2f52bbad30 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 25 Apr 2026 23:28:08 +0200 Subject: [PATCH 0944/1068] robustness: fix accidental hard coded value in getRequest() Signed-off-by: Chun-Hung Tseng --- tests/robustness/validate/validate_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/robustness/validate/validate_test.go b/tests/robustness/validate/validate_test.go index bffb09b9b407..8b7c62153cd2 100644 --- a/tests/robustness/validate/validate_test.go +++ b/tests/robustness/validate/validate_test.go @@ -2088,7 +2088,7 @@ func getRequest(key string) model.EtcdRequest { Type: model.Range, Range: &model.RangeRequest{ RangeOptions: model.RangeOptions{ - Start: "key", + Start: key, }, }, } From 608f673dcb5538bbfa8ed504f54f4f14619a4470 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Fri, 24 Apr 2026 19:04:44 -0400 Subject: [PATCH 0945/1068] *: implement server-side RangeStream Wire up the RangeStream handler end to end: the v3rpc layer streams chunks out, the txn range path honors the pinned revision and CountOnly semantics, and retry, mock, and the grpcproxy adapter learn about the new method so clients and proxies route it correctly. Integration tests cover the chunking behavior and header handling. Signed-off-by: Jefftree --- client/v3/mock/mockserver/mockserver.go | 6 + client/v3/retry.go | 4 + server/etcdserver/api/v3rpc/header.go | 13 +- server/etcdserver/api/v3rpc/key.go | 45 ++++ server/etcdserver/txn/range.go | 23 +- server/etcdserver/v3_server.go | 139 +++++++++++ .../grpcproxy/adapter/kv_client_adapter.go | 6 + server/proxy/grpcproxy/kv.go | 7 + tests/integration/v3_grpc_test.go | 229 ++++++++++++++++++ 9 files changed, 465 insertions(+), 7 deletions(-) diff --git a/client/v3/mock/mockserver/mockserver.go b/client/v3/mock/mockserver/mockserver.go index 618cf6774d92..960900f74ea7 100644 --- a/client/v3/mock/mockserver/mockserver.go +++ b/client/v3/mock/mockserver/mockserver.go @@ -22,7 +22,9 @@ import ( "sync" "google.golang.org/grpc" + "google.golang.org/grpc/codes" "google.golang.org/grpc/resolver" + "google.golang.org/grpc/status" pb "go.etcd.io/etcd/api/v3/etcdserverpb" ) @@ -186,6 +188,10 @@ func (m *mockKVServer) Txn(context.Context, *pb.TxnRequest) (*pb.TxnResponse, er return &pb.TxnResponse{}, nil } +func (m *mockKVServer) RangeStream(*pb.RangeRequest, grpc.ServerStreamingServer[pb.RangeStreamResponse]) error { + return status.Error(codes.Unimplemented, "RangeStream is not supported by the mock server") +} + func (m *mockKVServer) Compact(context.Context, *pb.CompactionRequest) (*pb.CompactionResponse, error) { return &pb.CompactionResponse{}, nil } diff --git a/client/v3/retry.go b/client/v3/retry.go index 9152c53a7d4c..d4263c4b281e 100644 --- a/client/v3/retry.go +++ b/client/v3/retry.go @@ -108,6 +108,10 @@ func (rkv *retryKVClient) Range(ctx context.Context, in *pb.RangeRequest, opts . return rkv.kc.Range(ctx, in, append(opts, withRepeatablePolicy())...) } +func (rkv *retryKVClient) RangeStream(ctx context.Context, in *pb.RangeRequest, opts ...grpc.CallOption) (pb.KV_RangeStreamClient, error) { + return rkv.kc.RangeStream(ctx, in, opts...) +} + func (rkv *retryKVClient) Put(ctx context.Context, in *pb.PutRequest, opts ...grpc.CallOption) (resp *pb.PutResponse, err error) { return rkv.kc.Put(ctx, in, opts...) } diff --git a/server/etcdserver/api/v3rpc/header.go b/server/etcdserver/api/v3rpc/header.go index 8fe4e5863b8b..8986a5985050 100644 --- a/server/etcdserver/api/v3rpc/header.go +++ b/server/etcdserver/api/v3rpc/header.go @@ -38,13 +38,20 @@ func newHeader(s *etcdserver.EtcdServer) header { // fill populates pb.ResponseHeader using etcdserver information func (h *header) fill(rh *pb.ResponseHeader) { + h.fillWithoutRevision(rh) + if rh.Revision == 0 { + rh.Revision = h.rev() + } +} + +// fillWithoutRevision populates pb.ResponseHeader except for Revision. +// Streaming handlers use this because the pinned read revision must be set +// by the handler rather than silently replaced with the live store revision. +func (h *header) fillWithoutRevision(rh *pb.ResponseHeader) { if rh == nil { panic("unexpected nil resp.Header") } rh.ClusterId = uint64(h.clusterID) rh.MemberId = uint64(h.memberID) rh.RaftTerm = h.sg.Term() - if rh.Revision == 0 { - rh.Revision = h.rev() - } } diff --git a/server/etcdserver/api/v3rpc/key.go b/server/etcdserver/api/v3rpc/key.go index bbf790753114..4f87716a73aa 100644 --- a/server/etcdserver/api/v3rpc/key.go +++ b/server/etcdserver/api/v3rpc/key.go @@ -18,10 +18,14 @@ package v3rpc import ( "context" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" "go.etcd.io/etcd/pkg/v3/adt" "go.etcd.io/etcd/server/v3/etcdserver" + "go.etcd.io/etcd/server/v3/etcdserver/txn" ) type kvServer struct { @@ -55,6 +59,34 @@ func (s *kvServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResp return resp, nil } +func (s *kvServer) RangeStream(r *pb.RangeRequest, rs pb.KV_RangeStreamServer) error { + if err := checkRangeStreamRequest(r); err != nil { + return err + } + err := s.kv.RangeStream(r, &headerFillingRangeStream{KV_RangeStreamServer: rs, hdr: &s.hdr}) + if err != nil { + return togRPCError(err) + } + return nil +} + +// headerFillingRangeStream wraps KV_RangeStreamServer to fill the cluster +// header (cluster ID, member ID, raft term) on the chunk that carries it. +// Revision is not filled: the handler must set it to the pinned read +// revision so that a missing value surfaces as zero instead of being +// silently replaced with the live store revision. +type headerFillingRangeStream struct { + pb.KV_RangeStreamServer + hdr *header +} + +func (s *headerFillingRangeStream) Send(resp *pb.RangeStreamResponse) error { + if resp.RangeResponse.Header != nil { + s.hdr.fillWithoutRevision(resp.RangeResponse.Header) + } + return s.KV_RangeStreamServer.Send(resp) +} + func (s *kvServer) Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error) { if err := checkPutRequest(r); err != nil { return nil, err @@ -134,6 +166,19 @@ func checkRangeRequest(r *pb.RangeRequest) error { return nil } +func checkRangeStreamRequest(r *pb.RangeRequest) error { + if err := checkRangeRequest(r); err != nil { + return err + } + if !txn.IsDefaultOrdering(r.SortTarget, r.SortOrder) { + return status.Errorf(codes.Unimplemented, "RangeStream does not support custom sort orders") + } + if txn.HasRevisionFilters(r) { + return status.Errorf(codes.Unimplemented, "RangeStream does not support revision filters") + } + return nil +} + func checkPutRequest(r *pb.PutRequest) error { if len(r.Key) == 0 { return rpctypes.ErrGRPCEmptyKey diff --git a/server/etcdserver/txn/range.go b/server/etcdserver/txn/range.go index cb8e7bc8e3c4..592ffa63c6a2 100644 --- a/server/etcdserver/txn/range.go +++ b/server/etcdserver/txn/range.go @@ -29,6 +29,21 @@ import ( "go.etcd.io/etcd/server/v3/storage/mvcc" ) +// Count returns the number of keys in [key, rangeEnd) at the given revision. +// A revision of 0 reads at the latest revision. +func Count(ctx context.Context, lg *zap.Logger, kv mvcc.KV, key, rangeEnd []byte, revision int64) (int64, error) { + resp, _, err := Range(ctx, lg, kv, &pb.RangeRequest{ + Key: key, + RangeEnd: rangeEnd, + Revision: revision, + CountOnly: true, + }, false) + if err != nil { + return 0, err + } + return resp.Count, nil +} + func Range(ctx context.Context, lg *zap.Logger, kv mvcc.KV, r *pb.RangeRequest, withTotalCount bool) (resp *pb.RangeResponse, trace *traceutil.Trace, err error) { ctx, trace = traceutil.EnsureTrace(ctx, lg, "range") defer func(start time.Time) { @@ -69,7 +84,7 @@ func executeRange(ctx context.Context, lg *zap.Logger, txnRead mvcc.TxnRead, r * func rangeLimit(r *pb.RangeRequest) int64 { limit := r.Limit - if !isDefaultOrdering(r.SortTarget, r.SortOrder) || hasRevisionFilters(r) { + if !IsDefaultOrdering(r.SortTarget, r.SortOrder) || HasRevisionFilters(r) { limit = 0 } if limit > 0 && limit < math.MaxInt64 { @@ -78,7 +93,7 @@ func rangeLimit(r *pb.RangeRequest) int64 { return limit } -func isDefaultOrdering(sortTarget pb.RangeRequest_SortTarget, sortOrder pb.RangeRequest_SortOrder) bool { +func IsDefaultOrdering(sortTarget pb.RangeRequest_SortTarget, sortOrder pb.RangeRequest_SortOrder) bool { // Since current mvcc.Range implementation returns results // sorted by keys in lexiographically ascending order, // don't re-sort when target is 'KEY' and order is ASCEND @@ -86,7 +101,7 @@ func isDefaultOrdering(sortTarget pb.RangeRequest_SortTarget, sortOrder pb.Range (sortTarget == pb.RangeRequest_KEY && sortOrder == pb.RangeRequest_ASCEND) } -func hasRevisionFilters(r *pb.RangeRequest) bool { +func HasRevisionFilters(r *pb.RangeRequest) bool { return r.MinModRevision != 0 || r.MaxModRevision != 0 || r.MinCreateRevision != 0 || r.MaxCreateRevision != 0 } @@ -112,7 +127,7 @@ func sortRangeResults(rr *mvcc.RangeResult, r *pb.RangeRequest, lg *zap.Logger) sortOrder = pb.RangeRequest_ASCEND } - if !isDefaultOrdering(r.SortTarget, sortOrder) { + if !IsDefaultOrdering(r.SortTarget, sortOrder) { var sorter sort.Interface switch { case r.SortTarget == pb.RangeRequest_KEY: diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index dfc5504f67ae..ba7cf14e3967 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -18,6 +18,7 @@ import ( "context" "encoding/base64" errorspkg "errors" + "math" "strconv" "time" @@ -56,6 +57,7 @@ const ( type RaftKV interface { Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResponse, error) + RangeStream(r *pb.RangeRequest, rs pb.KV_RangeStreamServer) error Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error) DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, error) @@ -150,6 +152,143 @@ func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRe return resp, err } +func (s *EtcdServer) RangeStream(r *pb.RangeRequest, rs pb.KV_RangeStreamServer) error { + ctx := rs.Context() + var span trace.Span + ctx, span = traceutil.Tracer.Start(ctx, "range_streaming", trace.WithAttributes( + attribute.String("range_begin", string(r.GetKey())), + attribute.String("range_end", string(r.GetRangeEnd())), + attribute.Int64("rev", r.GetRevision()), + attribute.Int64("limit", r.GetLimit()), + attribute.Bool("count_only", r.GetCountOnly()), + )) + defer span.End() + + ctx, trace := traceutil.EnsureTrace(ctx, s.Logger(), "range_streaming", + traceutil.Field{Key: "range_begin", Value: string(r.Key)}, + traceutil.Field{Key: "range_end", Value: string(r.RangeEnd)}, + ) + + if !r.Serializable { + err := s.read.LinearizableReadNotify(ctx) + trace.Step("agreement among raft nodes before linearized reading") + if err != nil { + return err + } + } + + chk := func(ai *auth.AuthInfo) error { + return s.authStore.IsRangePermitted(ai, r.Key, r.RangeEnd) + } + + var err error + get := func() { + err = s.rangeStream(ctx, r, rs) + } + if serr := s.doSerialize(ctx, chk, get); serr != nil { + err = serr + return err + } + return err +} + +func (s *EtcdServer) rangeStream(ctx context.Context, r *pb.RangeRequest, rs pb.KV_RangeStreamServer) error { + if r.CountOnly { + resp, _, err := txn.Range(ctx, s.Logger(), s.KV(), r, false) + if err != nil { + return err + } + out := &pb.RangeResponse{ + Header: &pb.ResponseHeader{Revision: resp.Header.Revision}, + Count: resp.Count, + } + return rs.Send(&pb.RangeStreamResponse{RangeResponse: out}) + } + + totalLimit := r.Limit + if totalLimit == 0 { + totalLimit = math.MaxInt64 + } + r.Limit = initialStreamChunkLimit + if r.Limit > totalLimit { + r.Limit = totalLimit + } + + count := int64(0) + var headerRev int64 + for { + resp, _, err := txn.Range(ctx, s.Logger(), s.KV(), r, false) + if err != nil { + return err + } + // headerRev should represent the latest store revision at the moment + // the server starts handling the client request, and remain stable for + // the whole response stream. + // + // If the client did not explicitly pin a revision (r.Revision == 0), + // we pin it here to that same initial latest revision, rather than + // advancing it for each subsequent range response in the stream. + // As a result, writes committed after the stream begins are not reflected + // in later range responses of this stream. + if headerRev == 0 { + headerRev = resp.Header.Revision + if r.Revision == 0 { + r.Revision = headerRev + } + } + count += int64(len(resp.Kvs)) + + var nextKey []byte + if resp.More { + nextKey = append(resp.Kvs[len(resp.Kvs)-1].Key, '\x00') + } + out := &pb.RangeResponse{Kvs: resp.Kvs} + done := !resp.More || count == totalLimit + if done { + out.Header = &pb.ResponseHeader{Revision: headerRev} + out.More = resp.More + out.Count = count + if resp.More { + remaining, cerr := txn.Count(ctx, s.Logger(), s.KV(), nextKey, r.RangeEnd, r.Revision) + if cerr != nil { + return cerr + } + out.Count += remaining + } + } + if err := rs.Send(&pb.RangeStreamResponse{RangeResponse: out}); err != nil { + return err + } + if done { + return nil + } + + r.Key = nextKey + r.Limit = adjustChunkLimit(r.Limit, resp.Size(), int(s.Cfg.MaxRequestBytes)) + r.Limit = min(r.Limit, totalLimit-count) + } +} + +const initialStreamChunkLimit = 10 + +// adjustChunkLimit picks the next chunk's Limit so each chunk lands near +// the target size: too small wastes round-trips, too large produces +// oversized chunks. Doubling/halving only outside [0.5x, 2x] avoids +// thrashing when responses sit near the boundary. Always returns >= 1, +// since Limit=0 means "unlimited" in txn.Range. +func adjustChunkLimit(lastLimit int64, lastSize, targetSize int) int64 { + switch { + case lastSize < targetSize/2: + lastLimit *= 2 + case lastSize > targetSize*2: + lastLimit /= 2 + } + if lastLimit == 0 { + lastLimit = 1 + } + return lastLimit +} + func (s *EtcdServer) Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error) { var span trace.Span ctx, span = traceutil.Tracer.Start(ctx, "put", trace.WithAttributes( diff --git a/server/proxy/grpcproxy/adapter/kv_client_adapter.go b/server/proxy/grpcproxy/adapter/kv_client_adapter.go index 69e3a113c4fe..a8149b17dac1 100644 --- a/server/proxy/grpcproxy/adapter/kv_client_adapter.go +++ b/server/proxy/grpcproxy/adapter/kv_client_adapter.go @@ -18,6 +18,8 @@ import ( "context" grpc "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" pb "go.etcd.io/etcd/api/v3/etcdserverpb" ) @@ -47,3 +49,7 @@ func (s *kvs2kvc) Txn(ctx context.Context, in *pb.TxnRequest, opts ...grpc.CallO func (s *kvs2kvc) Compact(ctx context.Context, in *pb.CompactionRequest, opts ...grpc.CallOption) (*pb.CompactionResponse, error) { return s.kvs.Compact(ctx, in) } + +func (s *kvs2kvc) RangeStream(ctx context.Context, in *pb.RangeRequest, opts ...grpc.CallOption) (pb.KV_RangeStreamClient, error) { + return nil, status.Error(codes.Unimplemented, "RangeStream is not supported by the KV client adapter") +} diff --git a/server/proxy/grpcproxy/kv.go b/server/proxy/grpcproxy/kv.go index 865cd36b5617..610e998426b2 100644 --- a/server/proxy/grpcproxy/kv.go +++ b/server/proxy/grpcproxy/kv.go @@ -18,6 +18,9 @@ import ( "context" "errors" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + pb "go.etcd.io/etcd/api/v3/etcdserverpb" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/server/v3/proxy/grpcproxy/cache" @@ -70,6 +73,10 @@ func (p *kvProxy) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRespo return gresp, nil } +func (p *kvProxy) RangeStream(r *pb.RangeRequest, rs pb.KV_RangeStreamServer) error { + return status.Error(codes.Unimplemented, "RangeStream is not supported by the gRPC proxy") +} + func (p *kvProxy) Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error) { p.cache.Invalidate(r.Key, nil) cacheKeys.Set(float64(p.cache.Size())) diff --git a/tests/integration/v3_grpc_test.go b/tests/integration/v3_grpc_test.go index 74cdd974c968..9ff38be62c15 100644 --- a/tests/integration/v3_grpc_test.go +++ b/tests/integration/v3_grpc_test.go @@ -19,6 +19,7 @@ import ( "context" "errors" "fmt" + "io" "math/rand" "os" "reflect" @@ -26,11 +27,14 @@ import ( "testing" "time" + "github.com/golang/protobuf/proto" //nolint:staticcheck // TODO: remove for a supported version + "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/testing/protocmp" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" @@ -1284,6 +1288,11 @@ func TestV3RangeRequest(t *testing.T) { wresps [][]string wmores []bool wcounts []int64 + + // streamUnsupported[j] marks request reqs[j] as using features that + // RangeStream intentionally does not support (non-key-ascending sort, + // min/max mod/create revision filters). Must match len(reqs). + streamUnsupported []bool }{ { "single key", @@ -1301,6 +1310,7 @@ func TestV3RangeRequest(t *testing.T) { }, []bool{false, false}, []int64{1, 0}, + []bool{false, false}, }, { "multi-key", @@ -1330,6 +1340,7 @@ func TestV3RangeRequest(t *testing.T) { }, []bool{false, false, false, false, false, false}, []int64{5, 2, 0, 0, 0, 5}, + []bool{false, false, false, false, false, false}, }, { "revision", @@ -1349,6 +1360,7 @@ func TestV3RangeRequest(t *testing.T) { }, []bool{false, false, false, false}, []int64{5, 0, 1, 2}, + []bool{false, false, false, false}, }, { "limit", @@ -1372,6 +1384,26 @@ func TestV3RangeRequest(t *testing.T) { }, []bool{true, true, false, false}, []int64{3, 3, 3, 3}, + []bool{false, false, false, false}, + }, + { + "count only", + []string{"a", "b", "c"}, + []pb.RangeRequest{ + // all match + {Key: []byte("a"), RangeEnd: []byte("z"), CountOnly: true}, + // single-key match + {Key: []byte("b"), RangeEnd: []byte("c"), CountOnly: true}, + // no match + {Key: []byte("x"), RangeEnd: []byte("z"), CountOnly: true}, + // CountOnly with Limit: Limit must not truncate the count. + {Key: []byte("a"), RangeEnd: []byte("z"), Limit: 1, CountOnly: true}, + }, + + [][]string{{}, {}, {}, {}}, + []bool{false, false, false, false}, + []int64{3, 1, 0, 3}, + []bool{false, false, false, false}, }, { "sort", @@ -1425,6 +1457,8 @@ func TestV3RangeRequest(t *testing.T) { }, []bool{true, true, true, true, false, false}, []int64{4, 4, 4, 4, 0, 4}, + // Only ASCEND+KEY (index 0) and SortOrder_NONE (index 5) are supported by RangeStream. + []bool{false, true, true, true, true, false}, }, { "min/max mod rev", @@ -1457,6 +1491,7 @@ func TestV3RangeRequest(t *testing.T) { }, []bool{false, false, false, false}, []int64{5, 5, 5, 5}, + []bool{true, true, true, true}, }, { "min/max create rev", @@ -1489,6 +1524,7 @@ func TestV3RangeRequest(t *testing.T) { }, []bool{false, false, false, false}, []int64{3, 3, 3, 3}, + []bool{true, true, true, true}, }, } @@ -1511,6 +1547,12 @@ func TestV3RangeRequest(t *testing.T) { t.Errorf("#%d.%d: Range error: %v", i, j, err) continue } + if !integration.ThroughProxy && !tt.streamUnsupported[j] { + got := rangeStream(t, kvc, &req) + require.Emptyf(t, cmp.Diff(resp, got, protocmp.Transform()), + "RangeStream response must match Range response") + } + if len(resp.Kvs) != len(tt.wresps[j]) { t.Errorf("#%d.%d: bad len(resp.Kvs). got = %d, want = %d, ", i, j, len(resp.Kvs), len(tt.wresps[j])) continue @@ -1536,6 +1578,193 @@ func TestV3RangeRequest(t *testing.T) { } } +// rangeStream calls RangeStream and returns the merged response. +func rangeStream(t *testing.T, kvc pb.KVClient, req *pb.RangeRequest) *pb.RangeResponse { + t.Helper() + + stream, err := kvc.RangeStream(t.Context(), req) + require.NoError(t, err) + + got := &pb.RangeResponse{} + for { + chunk, rerr := stream.Recv() + if errors.Is(rerr, io.EOF) { + break + } + require.NoError(t, rerr) + proto.Merge(got, chunk.RangeResponse) + } + return got +} + +// TestV3RangeStreamCount verifies Count semantics on the last streamed chunk, +// including the case where the stream truncates at Limit with more matching +// keys pending (exercises the CountOnly fallback query at the pinned revision). +func TestV3RangeStreamCount(t *testing.T) { + if integration.ThroughProxy { + t.Skip("RangeStream is not supported by the gRPC proxy") + } + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + defer clus.Terminate(t) + + kvc := integration.ToGRPC(clus.RandClient()).KV + const nKeys = 25 + for i := 0; i < nKeys; i++ { + _, err := kvc.Put(t.Context(), &pb.PutRequest{ + Key: []byte(fmt.Sprintf("k%02d", i)), + Value: []byte("v"), + }) + require.NoError(t, err) + } + + // The server-side chunker starts at Limit=10 and adapts from there, so + // nKeys=25 reliably produces multi-chunk responses for unlimited/large + // limits, while small limits fit in the first chunk. + tests := []struct { + name string + limit int64 + wantCount int64 + wantMore bool + wantKeys int + wantMinRecv int + }{ + { + name: "unlimited exhausts with running count", + limit: 0, + wantCount: nKeys, + wantMore: false, + wantKeys: nKeys, + wantMinRecv: 2, + }, + { + name: "limit below total truncates with fallback count", + limit: 5, + wantCount: nKeys, + wantMore: true, + wantKeys: 5, + wantMinRecv: 1, + }, + { + name: "limit equal to total, no truncation", + limit: nKeys, + wantCount: nKeys, + wantMore: false, + wantKeys: nKeys, + wantMinRecv: 2, + }, + { + name: "limit above total, exhausts early", + limit: 100, + wantCount: nKeys, + wantMore: false, + wantKeys: nKeys, + wantMinRecv: 2, + }, + { + name: "limit at first-chunk boundary with fallback count", + limit: 10, + wantCount: nKeys, + wantMore: true, + wantKeys: 10, + wantMinRecv: 1, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + stream, err := kvc.RangeStream(t.Context(), &pb.RangeRequest{ + Key: []byte("k00"), + RangeEnd: []byte("l"), + Limit: tt.limit, + }) + require.NoError(t, err) + + merged := &pb.RangeResponse{} + recvs := 0 + for { + chunk, rerr := stream.Recv() + if errors.Is(rerr, io.EOF) { + break + } + require.NoError(t, rerr) + recvs++ + proto.Merge(merged, chunk.RangeResponse) + } + require.Equalf(t, tt.wantCount, merged.Count, "Count") + require.Equalf(t, tt.wantMore, merged.More, "More") + require.Lenf(t, merged.Kvs, tt.wantKeys, "kv count") + require.GreaterOrEqualf(t, recvs, tt.wantMinRecv, "chunk count") + }) + } +} + +// TestV3RangeStreamPartialThenCompacted verifies that once the stream has +// emitted partial results at a pinned revision, a compaction past that +// revision causes the next chunk to surface ErrCompacted instead of silently +// returning inconsistent data. +func TestV3RangeStreamPartialThenCompacted(t *testing.T) { + if integration.ThroughProxy { + t.Skip("RangeStream is not supported by the gRPC proxy") + } + + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + defer clus.Terminate(t) + + kvc := integration.ToGRPC(clus.RandClient()).KV + value := []byte(strings.Repeat("x", 10*1024)) + for i := 0; i < 1000; i++ { + _, err := kvc.Put(t.Context(), &pb.PutRequest{ + Key: []byte(fmt.Sprintf("stream-%04d", i)), + Value: value, + }) + require.NoError(t, err) + } + + stream, err := kvc.RangeStream(t.Context(), &pb.RangeRequest{ + Key: []byte("stream-"), + RangeEnd: []byte("stream."), + }) + require.NoError(t, err) + + received := 0 + for received < 10 { + chunk, rerr := stream.Recv() + if errors.Is(rerr, io.EOF) { + t.Fatalf("stream ended before the test could compact; received %d keys", received) + } + require.NoError(t, rerr) + received += len(chunk.GetRangeResponse().GetKvs()) + } + + advance, err := kvc.Put(t.Context(), &pb.PutRequest{ + Key: []byte("zz-advance-revision"), + Value: []byte("x"), + }) + require.NoError(t, err) + + _, err = kvc.Compact(t.Context(), &pb.CompactionRequest{ + Revision: advance.Header.Revision, + Physical: true, + }) + require.NoError(t, err) + + for { + chunk, rerr := stream.Recv() + if errors.Is(rerr, io.EOF) { + t.Fatalf("expected compacted error after receiving partial keys; received %d keys", received) + } + + if rerr != nil { + require.Truef(t, eqErrGRPC(rerr, rpctypes.ErrGRPCCompacted), "got %v, expected %v", rerr, rpctypes.ErrGRPCCompacted) + require.GreaterOrEqual(t, received, 10) + return + } + received += len(chunk.GetRangeResponse().GetKvs()) + } +} + // TestTLSGRPCRejectInsecureClient checks that connection is rejected if server is TLS but not client. func TestTLSGRPCRejectInsecureClient(t *testing.T) { integration.BeforeTest(t) From 21cb1e68c4a1f93497d588420db0ef2c41334bb6 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Tue, 28 Apr 2026 11:03:24 -0400 Subject: [PATCH 0946/1068] scripts: include tests/common in coverage pass for client/v3 wrappers Signed-off-by: Jefftree --- scripts/test.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/test.sh b/scripts/test.sh index bb1c1317232d..a21d2ee95908 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -352,6 +352,9 @@ function cov_pass { # integration_cluster_proxy run_for_module "tests" go_test "./integration/..." "parallel" "pkg_to_coverprofileflag integration_cluster_proxy" \ -tags cluster_proxy -timeout=30m "${gocov_build_flags[@]}" || failed="$failed integration_cluster_proxy" + # integration_common + run_for_module "tests" go_test "./common/..." "parallel" "pkg_to_coverprofileflag integration_common" \ + -tags=integration -timeout=30m "${gocov_build_flags[@]}" "$@" || failed="$failed integration_common" local cover_out_file="${coverdir}/all.coverprofile" merge_cov "${coverdir}" From 7d1277bf5a842dfab3cd89c856bb00cd281ca4d8 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 28 Apr 2026 18:55:33 +0100 Subject: [PATCH 0947/1068] move function CheckTxnAuth from package txn to apply Signed-off-by: Benjamin Wang --- server/etcdserver/apply/auth.go | 71 +++++- server/etcdserver/apply/auth_test.go | 365 ++++++++++++++++++++++++++ server/etcdserver/txn/txn.go | 69 ----- server/etcdserver/txn/txn_test.go | 369 --------------------------- server/etcdserver/v3_server.go | 2 +- 5 files changed, 435 insertions(+), 441 deletions(-) diff --git a/server/etcdserver/apply/auth.go b/server/etcdserver/apply/auth.go index d8fd2bca8d8c..979a8068a9d5 100644 --- a/server/etcdserver/apply/auth.go +++ b/server/etcdserver/apply/auth.go @@ -21,7 +21,6 @@ import ( "go.etcd.io/etcd/pkg/v3/traceutil" "go.etcd.io/etcd/server/v3/auth" "go.etcd.io/etcd/server/v3/etcdserver/api/membership" - "go.etcd.io/etcd/server/v3/etcdserver/txn" "go.etcd.io/etcd/server/v3/lease" ) @@ -107,12 +106,80 @@ func (aa *authApplierV3) DeleteRange(r *pb.DeleteRangeRequest) (*pb.DeleteRangeR } func (aa *authApplierV3) Txn(rt *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) { - if err := txn.CheckTxnAuth(aa.as, &aa.authInfo, rt); err != nil { + if err := CheckTxnAuth(aa.as, &aa.authInfo, rt); err != nil { return nil, nil, err } return aa.applierV3.Txn(rt) } +func CheckTxnAuth(as auth.AuthStore, ai *auth.AuthInfo, rt *pb.TxnRequest) error { + return checkTxnPermission(as, ai, rt) +} + +func checkTxnPermission(as auth.AuthStore, ai *auth.AuthInfo, rt *pb.TxnRequest) error { + for _, c := range rt.Compare { + if err := as.IsRangePermitted(ai, c.Key, c.RangeEnd); err != nil { + return err + } + } + if err := checkTxnReqsPermission(as, ai, rt.Success); err != nil { + return err + } + return checkTxnReqsPermission(as, ai, rt.Failure) +} + +func checkTxnReqsPermission(as auth.AuthStore, ai *auth.AuthInfo, reqs []*pb.RequestOp) error { + for _, requ := range reqs { + switch tv := requ.Request.(type) { + case *pb.RequestOp_RequestRange: + if tv.RequestRange == nil { + continue + } + + if err := as.IsRangePermitted(ai, tv.RequestRange.Key, tv.RequestRange.RangeEnd); err != nil { + return err + } + + case *pb.RequestOp_RequestPut: + if tv.RequestPut == nil { + continue + } + + if err := as.IsPutPermitted(ai, tv.RequestPut.Key); err != nil { + return err + } + + case *pb.RequestOp_RequestDeleteRange: + if tv.RequestDeleteRange == nil { + continue + } + + if tv.RequestDeleteRange.PrevKv { + err := as.IsRangePermitted(ai, tv.RequestDeleteRange.Key, tv.RequestDeleteRange.RangeEnd) + if err != nil { + return err + } + } + + err := as.IsDeleteRangePermitted(ai, tv.RequestDeleteRange.Key, tv.RequestDeleteRange.RangeEnd) + if err != nil { + return err + } + case *pb.RequestOp_RequestTxn: + if tv.RequestTxn == nil { + continue + } + + err := checkTxnPermission(as, ai, tv.RequestTxn) + if err != nil { + return err + } + } + } + + return nil +} + func (aa *authApplierV3) LeaseRevoke(lc *pb.LeaseRevokeRequest) (*pb.LeaseRevokeResponse, error) { if err := aa.checkLeasePuts(lease.LeaseID(lc.ID)); err != nil { return nil, err diff --git a/server/etcdserver/apply/auth_test.go b/server/etcdserver/apply/auth_test.go index d6e434cbccce..2e48124f2ba8 100644 --- a/server/etcdserver/apply/auth_test.go +++ b/server/etcdserver/apply/auth_test.go @@ -33,6 +33,7 @@ import ( "go.etcd.io/etcd/server/v3/etcdserver/api/v3alarm" "go.etcd.io/etcd/server/v3/etcdserver/cindex" "go.etcd.io/etcd/server/v3/lease" + "go.etcd.io/etcd/server/v3/storage/backend" betesting "go.etcd.io/etcd/server/v3/storage/backend/testing" "go.etcd.io/etcd/server/v3/storage/mvcc" "go.etcd.io/etcd/server/v3/storage/schema" @@ -825,3 +826,367 @@ func TestCheckLeasePutsKeys(t *testing.T) { aa.authInfo = auth.AuthInfo{Username: "bob", Revision: aa.as.Revision()} assert.NoErrorf(t, aa.checkLeasePutsKeys(l), "bob should be able to access key 'a'") } + +func TestCheckTxnAuth(t *testing.T) { + be, _ := betesting.NewDefaultTmpBackend(t) + defer betesting.Close(t, be) + as := setupAuth(t, be) + + tests := []struct { + name string + txnRequest *pb.TxnRequest + err error + }{ + { + name: "Out of range compare is unauthorized", + txnRequest: &pb.TxnRequest{ + Compare: []*pb.Compare{outOfRangeCompare}, + }, + err: auth.ErrPermissionDenied, + }, + { + name: "In range compare is authorized", + txnRequest: &pb.TxnRequest{ + Compare: []*pb.Compare{inRangeCompare}, + }, + err: nil, + }, + { + name: "Nil request range is always authorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{nilRequestRange}, + }, + err: nil, + }, + { + name: "Range request in range is authorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{inRangeRequestRange}, + Failure: []*pb.RequestOp{inRangeRequestRange}, + }, + err: nil, + }, + { + name: "Range request out of range success case is unauthorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{outOfRangeRequestRange}, + Failure: []*pb.RequestOp{inRangeRequestRange}, + }, + err: auth.ErrPermissionDenied, + }, + { + name: "Range request out of range failure case is unauthorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{inRangeRequestRange}, + Failure: []*pb.RequestOp{outOfRangeRequestRange}, + }, + err: auth.ErrPermissionDenied, + }, + { + name: "Nil Put request is always authorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{nilRequestPut}, + }, + err: nil, + }, + { + name: "Put request in range in authorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{inRangeRequestPut}, + Failure: []*pb.RequestOp{inRangeRequestPut}, + }, + err: nil, + }, + { + name: "Put request out of range success case is unauthorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{outOfRangeRequestPut}, + Failure: []*pb.RequestOp{inRangeRequestPut}, + }, + err: auth.ErrPermissionDenied, + }, + { + name: "Put request out of range failure case is unauthorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{inRangeRequestPut}, + Failure: []*pb.RequestOp{outOfRangeRequestPut}, + }, + err: auth.ErrPermissionDenied, + }, + { + name: "Nil delete request is authorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{nilRequestDeleteRange}, + }, + err: nil, + }, + { + name: "Delete range request in range is authorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{inRangeRequestDeleteRange}, + Failure: []*pb.RequestOp{inRangeRequestDeleteRange}, + }, + err: nil, + }, + { + name: "Delete range request out of range success case is unauthorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{outOfRangeRequestDeleteRange}, + Failure: []*pb.RequestOp{inRangeRequestDeleteRange}, + }, + err: auth.ErrPermissionDenied, + }, + { + name: "Delete range request out of range failure case is unauthorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{inRangeRequestDeleteRange}, + Failure: []*pb.RequestOp{outOfRangeRequestDeleteRange}, + }, + err: auth.ErrPermissionDenied, + }, + { + name: "Delete range request out of range and PrevKv false success case is unauthorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{outOfRangeRequestDeleteRangeKvFalse}, + Failure: []*pb.RequestOp{inRangeRequestDeleteRange}, + }, + err: auth.ErrPermissionDenied, + }, + { + name: "Delete range request out of range and PrevKv false failure case is unauthorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{inRangeRequestDeleteRange}, + Failure: []*pb.RequestOp{outOfRangeRequestDeleteRangeKvFalse}, + }, + err: auth.ErrPermissionDenied, + }, + { + name: "Nested txn request in range is authorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{ + { + Request: &pb.RequestOp_RequestTxn{ + RequestTxn: &pb.TxnRequest{ + Success: []*pb.RequestOp{inRangeRequestRange, inRangeRequestPut}, + Failure: []*pb.RequestOp{inRangeRequestDeleteRange}, + }, + }, + }, + }, + }, + err: nil, + }, + { + name: "Nested txn request out of range success case is unauthorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{ + { + Request: &pb.RequestOp_RequestTxn{ + RequestTxn: &pb.TxnRequest{ + Success: []*pb.RequestOp{outOfRangeRequestRange}, + }, + }, + }, + }, + }, + err: auth.ErrPermissionDenied, + }, + { + name: "Nested txn request out of range failure case is unauthorized", + txnRequest: &pb.TxnRequest{ + Failure: []*pb.RequestOp{ + { + Request: &pb.RequestOp_RequestTxn{ + RequestTxn: &pb.TxnRequest{ + Failure: []*pb.RequestOp{outOfRangeRequestPut}, + }, + }, + }, + }, + }, + err: auth.ErrPermissionDenied, + }, + { + name: "Nested txn request out of range delete is unauthorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{ + { + Request: &pb.RequestOp_RequestTxn{ + RequestTxn: &pb.TxnRequest{ + Success: []*pb.RequestOp{outOfRangeRequestDeleteRange}, + }, + }, + }, + }, + }, + err: auth.ErrPermissionDenied, + }, + { + name: "Two level nested txn request out of range delete is unauthorized", + txnRequest: &pb.TxnRequest{ + Success: []*pb.RequestOp{ + { + Request: &pb.RequestOp_RequestTxn{ + RequestTxn: &pb.TxnRequest{ + Failure: []*pb.RequestOp{ + { + Request: &pb.RequestOp_RequestTxn{ + RequestTxn: &pb.TxnRequest{ + Success: []*pb.RequestOp{outOfRangeRequestDeleteRange}, + }, + }, + }, + }, + }, + }, + }, + }, + }, + err: auth.ErrPermissionDenied, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := CheckTxnAuth(as, &auth.AuthInfo{Username: "foo", Revision: 8}, tt.txnRequest) + assert.Equal(t, tt.err, err) + }) + } +} + +// CheckTxnAuth test setup. +func setupAuth(t *testing.T, be backend.Backend) auth.AuthStore { + lg := zaptest.NewLogger(t) + + simpleTokenTTLDefault := 300 * time.Second + tokenTypeSimple := "simple" + dummyIndexWaiter1 := func(index uint64) <-chan struct{} { + ch := make(chan struct{}, 1) + go func() { + ch <- struct{}{} + }() + return ch + } + + tp, _ := auth.NewTokenProvider(zaptest.NewLogger(t), tokenTypeSimple, dummyIndexWaiter1, simpleTokenTTLDefault) + + as := auth.NewAuthStore(lg, schema.NewAuthBackend(lg, be), tp, 4) + + // create "root" user and "foo" user with limited range + _, err := as.RoleAdd(&pb.AuthRoleAddRequest{Name: "root"}) + require.NoError(t, err) + + _, err = as.RoleAdd(&pb.AuthRoleAddRequest{Name: "rw"}) + require.NoError(t, err) + + _, err = as.RoleGrantPermission(&pb.AuthRoleGrantPermissionRequest{ + Name: "rw", + Perm: &authpb.Permission{ + PermType: authpb.Permission_READWRITE, + Key: []byte("foo"), + RangeEnd: []byte("zoo"), + }, + }) + require.NoError(t, err) + + _, err = as.UserAdd(&pb.AuthUserAddRequest{Name: "root", Password: "foo"}) + require.NoError(t, err) + + _, err = as.UserAdd(&pb.AuthUserAddRequest{Name: "foo", Password: "foo"}) + require.NoError(t, err) + + _, err = as.UserGrantRole(&pb.AuthUserGrantRoleRequest{User: "root", Role: "root"}) + require.NoError(t, err) + + _, err = as.UserGrantRole(&pb.AuthUserGrantRoleRequest{User: "foo", Role: "rw"}) + require.NoError(t, err) + + err = as.AuthEnable() + require.NoError(t, err) + + return as +} + +// CheckTxnAuth variables setup. +var ( + inRangeCompare = &pb.Compare{ + Key: []byte("foo"), + RangeEnd: []byte("zoo"), + } + outOfRangeCompare = &pb.Compare{ + Key: []byte("boo"), + RangeEnd: []byte("zoo"), + } + nilRequestPut = &pb.RequestOp{ + Request: &pb.RequestOp_RequestPut{ + RequestPut: nil, + }, + } + inRangeRequestPut = &pb.RequestOp{ + Request: &pb.RequestOp_RequestPut{ + RequestPut: &pb.PutRequest{ + Key: []byte("foo"), + }, + }, + } + outOfRangeRequestPut = &pb.RequestOp{ + Request: &pb.RequestOp_RequestPut{ + RequestPut: &pb.PutRequest{ + Key: []byte("boo"), + }, + }, + } + nilRequestRange = &pb.RequestOp{ + Request: &pb.RequestOp_RequestRange{ + RequestRange: nil, + }, + } + inRangeRequestRange = &pb.RequestOp{ + Request: &pb.RequestOp_RequestRange{ + RequestRange: &pb.RangeRequest{ + Key: []byte("foo"), + RangeEnd: []byte("zoo"), + }, + }, + } + outOfRangeRequestRange = &pb.RequestOp{ + Request: &pb.RequestOp_RequestRange{ + RequestRange: &pb.RangeRequest{ + Key: []byte("boo"), + RangeEnd: []byte("zoo"), + }, + }, + } + nilRequestDeleteRange = &pb.RequestOp{ + Request: &pb.RequestOp_RequestDeleteRange{ + RequestDeleteRange: nil, + }, + } + inRangeRequestDeleteRange = &pb.RequestOp{ + Request: &pb.RequestOp_RequestDeleteRange{ + RequestDeleteRange: &pb.DeleteRangeRequest{ + Key: []byte("foo"), + RangeEnd: []byte("zoo"), + PrevKv: true, + }, + }, + } + outOfRangeRequestDeleteRange = &pb.RequestOp{ + Request: &pb.RequestOp_RequestDeleteRange{ + RequestDeleteRange: &pb.DeleteRangeRequest{ + Key: []byte("boo"), + RangeEnd: []byte("zoo"), + PrevKv: true, + }, + }, + } + outOfRangeRequestDeleteRangeKvFalse = &pb.RequestOp{ + Request: &pb.RequestOp_RequestDeleteRange{ + RequestDeleteRange: &pb.DeleteRangeRequest{ + Key: []byte("boo"), + RangeEnd: []byte("zoo"), + PrevKv: false, + }, + }, + } +) diff --git a/server/etcdserver/txn/txn.go b/server/etcdserver/txn/txn.go index 3407f468b095..a60ad33bceac 100644 --- a/server/etcdserver/txn/txn.go +++ b/server/etcdserver/txn/txn.go @@ -24,7 +24,6 @@ import ( pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/pkg/v3/traceutil" - "go.etcd.io/etcd/server/v3/auth" "go.etcd.io/etcd/server/v3/lease" "go.etcd.io/etcd/server/v3/storage/mvcc" ) @@ -351,71 +350,3 @@ func IsTxnReadonly(r *pb.TxnRequest) bool { } return true } - -func CheckTxnAuth(as auth.AuthStore, ai *auth.AuthInfo, rt *pb.TxnRequest) error { - return checkTxnPermission(as, ai, rt) -} - -func checkTxnPermission(as auth.AuthStore, ai *auth.AuthInfo, rt *pb.TxnRequest) error { - for _, c := range rt.Compare { - if err := as.IsRangePermitted(ai, c.Key, c.RangeEnd); err != nil { - return err - } - } - if err := checkTxnReqsPermission(as, ai, rt.Success); err != nil { - return err - } - return checkTxnReqsPermission(as, ai, rt.Failure) -} - -func checkTxnReqsPermission(as auth.AuthStore, ai *auth.AuthInfo, reqs []*pb.RequestOp) error { - for _, requ := range reqs { - switch tv := requ.Request.(type) { - case *pb.RequestOp_RequestRange: - if tv.RequestRange == nil { - continue - } - - if err := as.IsRangePermitted(ai, tv.RequestRange.Key, tv.RequestRange.RangeEnd); err != nil { - return err - } - - case *pb.RequestOp_RequestPut: - if tv.RequestPut == nil { - continue - } - - if err := as.IsPutPermitted(ai, tv.RequestPut.Key); err != nil { - return err - } - - case *pb.RequestOp_RequestDeleteRange: - if tv.RequestDeleteRange == nil { - continue - } - - if tv.RequestDeleteRange.PrevKv { - err := as.IsRangePermitted(ai, tv.RequestDeleteRange.Key, tv.RequestDeleteRange.RangeEnd) - if err != nil { - return err - } - } - - err := as.IsDeleteRangePermitted(ai, tv.RequestDeleteRange.Key, tv.RequestDeleteRange.RangeEnd) - if err != nil { - return err - } - case *pb.RequestOp_RequestTxn: - if tv.RequestTxn == nil { - continue - } - - err := checkTxnPermission(as, ai, tv.RequestTxn) - if err != nil { - return err - } - } - } - - return nil -} diff --git a/server/etcdserver/txn/txn_test.go b/server/etcdserver/txn/txn_test.go index 92e2bd76c52d..30b6d378eab9 100644 --- a/server/etcdserver/txn/txn_test.go +++ b/server/etcdserver/txn/txn_test.go @@ -21,21 +21,16 @@ import ( "os" "strings" "testing" - "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" - "go.etcd.io/etcd/api/v3/authpb" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/pkg/v3/traceutil" - "go.etcd.io/etcd/server/v3/auth" "go.etcd.io/etcd/server/v3/lease" - "go.etcd.io/etcd/server/v3/storage/backend" betesting "go.etcd.io/etcd/server/v3/storage/backend/testing" "go.etcd.io/etcd/server/v3/storage/mvcc" - "go.etcd.io/etcd/server/v3/storage/schema" ) type testCase struct { @@ -382,286 +377,6 @@ func TestWriteTxnPanicWithoutApply(t *testing.T) { require.Equalf(t, dbHashBefore, dbHashAfter, "mismatch in DB hash before and after failed write txn") } -func TestCheckTxnAuth(t *testing.T) { - be, _ := betesting.NewDefaultTmpBackend(t) - defer betesting.Close(t, be) - as := setupAuth(t, be) - - tests := []struct { - name string - txnRequest *pb.TxnRequest - err error - }{ - { - name: "Out of range compare is unauthorized", - txnRequest: &pb.TxnRequest{ - Compare: []*pb.Compare{outOfRangeCompare}, - }, - err: auth.ErrPermissionDenied, - }, - { - name: "In range compare is authorized", - txnRequest: &pb.TxnRequest{ - Compare: []*pb.Compare{inRangeCompare}, - }, - err: nil, - }, - { - name: "Nil request range is always authorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{nilRequestRange}, - }, - err: nil, - }, - { - name: "Range request in range is authorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{inRangeRequestRange}, - Failure: []*pb.RequestOp{inRangeRequestRange}, - }, - err: nil, - }, - { - name: "Range request out of range success case is unauthorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{outOfRangeRequestRange}, - Failure: []*pb.RequestOp{inRangeRequestRange}, - }, - err: auth.ErrPermissionDenied, - }, - { - name: "Range request out of range failure case is unauthorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{inRangeRequestRange}, - Failure: []*pb.RequestOp{outOfRangeRequestRange}, - }, - err: auth.ErrPermissionDenied, - }, - { - name: "Nil Put request is always authorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{nilRequestPut}, - }, - err: nil, - }, - { - name: "Put request in range in authorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{inRangeRequestPut}, - Failure: []*pb.RequestOp{inRangeRequestPut}, - }, - err: nil, - }, - { - name: "Put request out of range success case is unauthorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{outOfRangeRequestPut}, - Failure: []*pb.RequestOp{inRangeRequestPut}, - }, - err: auth.ErrPermissionDenied, - }, - { - name: "Put request out of range failure case is unauthorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{inRangeRequestPut}, - Failure: []*pb.RequestOp{outOfRangeRequestPut}, - }, - err: auth.ErrPermissionDenied, - }, - { - name: "Nil delete request is authorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{nilRequestDeleteRange}, - }, - err: nil, - }, - { - name: "Delete range request in range is authorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{inRangeRequestDeleteRange}, - Failure: []*pb.RequestOp{inRangeRequestDeleteRange}, - }, - err: nil, - }, - { - name: "Delete range request out of range success case is unauthorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{outOfRangeRequestDeleteRange}, - Failure: []*pb.RequestOp{inRangeRequestDeleteRange}, - }, - err: auth.ErrPermissionDenied, - }, - { - name: "Delete range request out of range failure case is unauthorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{inRangeRequestDeleteRange}, - Failure: []*pb.RequestOp{outOfRangeRequestDeleteRange}, - }, - err: auth.ErrPermissionDenied, - }, - { - name: "Delete range request out of range and PrevKv false success case is unauthorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{outOfRangeRequestDeleteRangeKvFalse}, - Failure: []*pb.RequestOp{inRangeRequestDeleteRange}, - }, - err: auth.ErrPermissionDenied, - }, - { - name: "Delete range request out of range and PrevKv false failure case is unauthorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{inRangeRequestDeleteRange}, - Failure: []*pb.RequestOp{outOfRangeRequestDeleteRangeKvFalse}, - }, - err: auth.ErrPermissionDenied, - }, - { - name: "Nested txn request in range is authorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{ - { - Request: &pb.RequestOp_RequestTxn{ - RequestTxn: &pb.TxnRequest{ - Success: []*pb.RequestOp{inRangeRequestRange, inRangeRequestPut}, - Failure: []*pb.RequestOp{inRangeRequestDeleteRange}, - }, - }, - }, - }, - }, - err: nil, - }, - { - name: "Nested txn request out of range success case is unauthorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{ - { - Request: &pb.RequestOp_RequestTxn{ - RequestTxn: &pb.TxnRequest{ - Success: []*pb.RequestOp{outOfRangeRequestRange}, - }, - }, - }, - }, - }, - err: auth.ErrPermissionDenied, - }, - { - name: "Nested txn request out of range failure case is unauthorized", - txnRequest: &pb.TxnRequest{ - Failure: []*pb.RequestOp{ - { - Request: &pb.RequestOp_RequestTxn{ - RequestTxn: &pb.TxnRequest{ - Failure: []*pb.RequestOp{outOfRangeRequestPut}, - }, - }, - }, - }, - }, - err: auth.ErrPermissionDenied, - }, - { - name: "Nested txn request out of range delete is unauthorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{ - { - Request: &pb.RequestOp_RequestTxn{ - RequestTxn: &pb.TxnRequest{ - Success: []*pb.RequestOp{outOfRangeRequestDeleteRange}, - }, - }, - }, - }, - }, - err: auth.ErrPermissionDenied, - }, - { - name: "Two level nested txn request out of range delete is unauthorized", - txnRequest: &pb.TxnRequest{ - Success: []*pb.RequestOp{ - { - Request: &pb.RequestOp_RequestTxn{ - RequestTxn: &pb.TxnRequest{ - Failure: []*pb.RequestOp{ - { - Request: &pb.RequestOp_RequestTxn{ - RequestTxn: &pb.TxnRequest{ - Success: []*pb.RequestOp{outOfRangeRequestDeleteRange}, - }, - }, - }, - }, - }, - }, - }, - }, - }, - err: auth.ErrPermissionDenied, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := CheckTxnAuth(as, &auth.AuthInfo{Username: "foo", Revision: 8}, tt.txnRequest) - assert.Equal(t, tt.err, err) - }) - } -} - -// CheckTxnAuth test setup. -func setupAuth(t *testing.T, be backend.Backend) auth.AuthStore { - lg := zaptest.NewLogger(t) - - simpleTokenTTLDefault := 300 * time.Second - tokenTypeSimple := "simple" - dummyIndexWaiter := func(index uint64) <-chan struct{} { - ch := make(chan struct{}, 1) - go func() { - ch <- struct{}{} - }() - return ch - } - - tp, _ := auth.NewTokenProvider(zaptest.NewLogger(t), tokenTypeSimple, dummyIndexWaiter, simpleTokenTTLDefault) - - as := auth.NewAuthStore(lg, schema.NewAuthBackend(lg, be), tp, 4) - - // create "root" user and "foo" user with limited range - _, err := as.RoleAdd(&pb.AuthRoleAddRequest{Name: "root"}) - require.NoError(t, err) - - _, err = as.RoleAdd(&pb.AuthRoleAddRequest{Name: "rw"}) - require.NoError(t, err) - - _, err = as.RoleGrantPermission(&pb.AuthRoleGrantPermissionRequest{ - Name: "rw", - Perm: &authpb.Permission{ - PermType: authpb.Permission_READWRITE, - Key: []byte("foo"), - RangeEnd: []byte("zoo"), - }, - }) - require.NoError(t, err) - - _, err = as.UserAdd(&pb.AuthUserAddRequest{Name: "root", Password: "foo"}) - require.NoError(t, err) - - _, err = as.UserAdd(&pb.AuthUserAddRequest{Name: "foo", Password: "foo"}) - require.NoError(t, err) - - _, err = as.UserGrantRole(&pb.AuthUserGrantRoleRequest{User: "root", Role: "root"}) - require.NoError(t, err) - - _, err = as.UserGrantRole(&pb.AuthUserGrantRoleRequest{User: "foo", Role: "rw"}) - require.NoError(t, err) - - err = as.AuthEnable() - require.NoError(t, err) - - return as -} - func computeFileHash(filePath string) (string, error) { file, err := os.Open(filePath) if err != nil { @@ -675,87 +390,3 @@ func computeFileHash(filePath string) (string, error) { } return string(h.Sum(nil)), nil } - -// CheckTxnAuth variables setup. -var ( - inRangeCompare = &pb.Compare{ - Key: []byte("foo"), - RangeEnd: []byte("zoo"), - } - outOfRangeCompare = &pb.Compare{ - Key: []byte("boo"), - RangeEnd: []byte("zoo"), - } - nilRequestPut = &pb.RequestOp{ - Request: &pb.RequestOp_RequestPut{ - RequestPut: nil, - }, - } - inRangeRequestPut = &pb.RequestOp{ - Request: &pb.RequestOp_RequestPut{ - RequestPut: &pb.PutRequest{ - Key: []byte("foo"), - }, - }, - } - outOfRangeRequestPut = &pb.RequestOp{ - Request: &pb.RequestOp_RequestPut{ - RequestPut: &pb.PutRequest{ - Key: []byte("boo"), - }, - }, - } - nilRequestRange = &pb.RequestOp{ - Request: &pb.RequestOp_RequestRange{ - RequestRange: nil, - }, - } - inRangeRequestRange = &pb.RequestOp{ - Request: &pb.RequestOp_RequestRange{ - RequestRange: &pb.RangeRequest{ - Key: []byte("foo"), - RangeEnd: []byte("zoo"), - }, - }, - } - outOfRangeRequestRange = &pb.RequestOp{ - Request: &pb.RequestOp_RequestRange{ - RequestRange: &pb.RangeRequest{ - Key: []byte("boo"), - RangeEnd: []byte("zoo"), - }, - }, - } - nilRequestDeleteRange = &pb.RequestOp{ - Request: &pb.RequestOp_RequestDeleteRange{ - RequestDeleteRange: nil, - }, - } - inRangeRequestDeleteRange = &pb.RequestOp{ - Request: &pb.RequestOp_RequestDeleteRange{ - RequestDeleteRange: &pb.DeleteRangeRequest{ - Key: []byte("foo"), - RangeEnd: []byte("zoo"), - PrevKv: true, - }, - }, - } - outOfRangeRequestDeleteRange = &pb.RequestOp{ - Request: &pb.RequestOp_RequestDeleteRange{ - RequestDeleteRange: &pb.DeleteRangeRequest{ - Key: []byte("boo"), - RangeEnd: []byte("zoo"), - PrevKv: true, - }, - }, - } - outOfRangeRequestDeleteRangeKvFalse = &pb.RequestOp{ - Request: &pb.RequestOp_RequestDeleteRange{ - RequestDeleteRange: &pb.DeleteRangeRequest{ - Key: []byte("boo"), - RangeEnd: []byte("zoo"), - PrevKv: false, - }, - }, - } -) diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index ba7cf14e3967..b07e845b823a 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -349,7 +349,7 @@ func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse var resp *pb.TxnResponse var err error chk := func(ai *auth.AuthInfo) error { - return txn.CheckTxnAuth(s.authStore, ai, r) + return apply2.CheckTxnAuth(s.authStore, ai, r) } defer func(start time.Time) { From 49a5c846adb7d7c68625fd61cfcceb8a3d1a7207 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 28 Apr 2026 20:34:57 +0100 Subject: [PATCH 0948/1068] Add an integration test case to reproduce the read via PrevKv bypass rbac check issue Signed-off-by: Benjamin Wang --- tests/integration/v3_auth_test.go | 57 ++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/tests/integration/v3_auth_test.go b/tests/integration/v3_auth_test.go index af05b38cb573..62c5fe8a645f 100644 --- a/tests/integration/v3_auth_test.go +++ b/tests/integration/v3_auth_test.go @@ -17,6 +17,7 @@ package integration import ( "context" "fmt" + "strings" "sync" "testing" "time" @@ -182,6 +183,7 @@ type user struct { name string password string role string + perm string key string end string } @@ -293,8 +295,15 @@ func authSetupUsers(t *testing.T, auth pb.AuthClient, users []user) { continue } + permType := authpb.Permission_READWRITE + if len(user.perm) > 0 { + val, ok := authpb.Permission_Type_value[strings.ToUpper(user.perm)] + if ok { + permType = authpb.Permission_Type(val) + } + } perm := &authpb.Permission{ - PermType: authpb.Permission_READWRITE, + PermType: permType, Key: []byte(user.key), RangeEnd: []byte(user.end), } @@ -401,6 +410,52 @@ func TestV3AuthNestedTxnPermissionDenied(t *testing.T) { require.Equal(t, resp.Kvs[0].Value, []byte("bar")) } +func TestReadWithPrevKvInTXN(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + defer clus.Terminate(t) + + users := []user{ + { + name: "user1", + password: "user1-123", + role: "role1", + perm: "write", + key: "foo", + end: "zoo", + }, + } + anonCli := integration.ToGRPC(clus.Client(0)) + authSetupUsers(t, anonCli.Auth, users) + authSetupRoot(t, anonCli.Auth) + + rootc, err := integration.NewClient(t, clientv3.Config{ + Endpoints: clus.Client(0).Endpoints(), + Username: "root", + Password: "123", + }) + require.NoError(t, err) + defer rootc.Close() + + userc, err := integration.NewClient(t, clientv3.Config{ + Endpoints: clus.Client(0).Endpoints(), + Username: "user1", + Password: "user1-123", + }) + require.NoError(t, err) + defer userc.Close() + + _, err = rootc.Put(t.Context(), "foo", "bar") + require.NoError(t, err) + + _, err = userc.Txn(t.Context()). + Then(clientv3.OpPut("foo", "new", clientv3.WithPrevKV())). + Commit() + + require.Error(t, err) + require.Truef(t, eqErrGRPC(err, rpctypes.ErrGRPCPermissionDenied), "got %v, expected %v", err, rpctypes.ErrGRPCPermissionDenied) +} + func TestV3AuthOldRevConcurrent(t *testing.T) { integration.BeforeTest(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) From 62c57484668f5fb0d6a96e8fd05051dd3c90632d Mon Sep 17 00:00:00 2001 From: Jefftree Date: Fri, 1 May 2026 10:49:20 -0400 Subject: [PATCH 0949/1068] clientv3: address review feedback on RangeStream from #21358 Signed-off-by: Jefftree --- client/v3/kv.go | 2 +- client/v3/ordering/kv.go | 8 ++++++++ tests/integration/clientv3/kv_test.go | 29 +++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/client/v3/kv.go b/client/v3/kv.go index defcf296b6b5..c0d3ace313a4 100644 --- a/client/v3/kv.go +++ b/client/v3/kv.go @@ -179,7 +179,7 @@ func (kv *kv) GetStream(ctx context.Context, key string, opts ...OpOption) (GetS resp, err := c.Recv() if err != nil { if !errors.Is(err, io.EOF) { - respCh <- RangeStreamResponse{closeErr: err} + respCh <- RangeStreamResponse{closeErr: ContextError(ctx, err)} } return } diff --git a/client/v3/ordering/kv.go b/client/v3/ordering/kv.go index b843103dce4b..741feebb80a6 100644 --- a/client/v3/ordering/kv.go +++ b/client/v3/ordering/kv.go @@ -18,6 +18,9 @@ import ( "context" "sync" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + clientv3 "go.etcd.io/etcd/client/v3" ) @@ -75,6 +78,11 @@ func (kv *kvOrdering) Get(ctx context.Context, key string, opts ...clientv3.OpOp } } +// GetStream is not supported by kvOrdering. +func (kv *kvOrdering) GetStream(ctx context.Context, key string, opts ...clientv3.OpOption) (clientv3.GetStreamChan, error) { + return nil, status.Error(codes.Unimplemented, "GetStream is not supported by kvOrdering") +} + func (kv *kvOrdering) Txn(ctx context.Context) clientv3.Txn { return &txnOrdering{ kv.KV.Txn(ctx), diff --git a/tests/integration/clientv3/kv_test.go b/tests/integration/clientv3/kv_test.go index 661bafa0fefe..e705c1fa84f6 100644 --- a/tests/integration/clientv3/kv_test.go +++ b/tests/integration/clientv3/kv_test.go @@ -460,6 +460,35 @@ func TestKVCompact(t *testing.T) { } } +// TestKVGetStreamCompactedError ensures GetStream surfaces the typed +// rpctypes.ErrCompacted error from the server (matching Get's behavior), +// rather than the raw gRPC status. +func TestKVGetStreamCompactedError(t *testing.T) { + integration.BeforeTest(t) + + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + defer clus.Terminate(t) + + kv := clus.RandClient() + ctx := t.Context() + + for i := 0; i < 5; i++ { + _, err := kv.Put(ctx, "foo", "bar") + require.NoError(t, err) + } + _, err := kv.Compact(ctx, 6) + require.NoError(t, err) + + _, err = kv.Get(ctx, "foo", clientv3.WithRev(3)) + require.ErrorIsf(t, err, rpctypes.ErrCompacted, "Get returned %T %v", err, err) + + stream, err := kv.GetStream(ctx, "foo", clientv3.WithRev(3)) + require.NoError(t, err) + + _, err = clientv3.GetStreamToGetResponse(stream) + require.ErrorIsf(t, err, rpctypes.ErrCompacted, "GetStream returned %T %v", err, err) +} + // TestKVGetRetry ensures get will retry on disconnect. func TestKVGetRetry(t *testing.T) { integration.BeforeTest(t) From b5e6dcb5a6193746f4d782880dabdf353be9f588 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 28 Apr 2026 20:36:01 +0100 Subject: [PATCH 0950/1068] Add an integration test to reproduce the issue of PutWithLease in a TXN bypass RBAC check Signed-off-by: Benjamin Wang --- tests/integration/v3_auth_test.go | 50 +++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/tests/integration/v3_auth_test.go b/tests/integration/v3_auth_test.go index 62c5fe8a645f..6703f7fd926e 100644 --- a/tests/integration/v3_auth_test.go +++ b/tests/integration/v3_auth_test.go @@ -456,6 +456,56 @@ func TestReadWithPrevKvInTXN(t *testing.T) { require.Truef(t, eqErrGRPC(err, rpctypes.ErrGRPCPermissionDenied), "got %v, expected %v", err, rpctypes.ErrGRPCPermissionDenied) } +func TestPutWithLeaseInTXN(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + defer clus.Terminate(t) + + users := []user{ + { + name: "user1", + password: "user1-123", + role: "role1", + perm: "write", + key: "foo", + end: "fop", + }, + } + anonCli := integration.ToGRPC(clus.Client(0)) + authSetupUsers(t, anonCli.Auth, users) + authSetupRoot(t, anonCli.Auth) + + rootc, err := integration.NewClient(t, clientv3.Config{ + Endpoints: clus.Client(0).Endpoints(), + Username: "root", + Password: "123", + }) + require.NoError(t, err) + defer rootc.Close() + + userc, err := integration.NewClient(t, clientv3.Config{ + Endpoints: clus.Client(0).Endpoints(), + Username: "user1", + Password: "user1-123", + }) + require.NoError(t, err) + defer userc.Close() + + t.Log("Create a lease and attach it to a key which the user1 doesn't have permission to write") + leaseResp, err := rootc.Grant(t.Context(), 90) + require.NoError(t, err) + leaseID := leaseResp.ID + _, err = rootc.Put(t.Context(), "eoo", "bar", clientv3.WithLease(leaseID)) + require.NoError(t, err) + + _, err = userc.Txn(t.Context()). + Then(clientv3.OpPut("foo", "new", clientv3.WithLease(leaseID))). + Commit() + + require.Error(t, err) + require.Truef(t, eqErrGRPC(err, rpctypes.ErrGRPCPermissionDenied), "got %v, expected %v", err, rpctypes.ErrGRPCPermissionDenied) +} + func TestV3AuthOldRevConcurrent(t *testing.T) { integration.BeforeTest(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) From 76e786a7e85984546557eced26b6ee481f04d4b3 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 28 Apr 2026 18:59:50 +0100 Subject: [PATCH 0951/1068] Get all Put related auth check into a separate function 'checkPutAuth' Signed-off-by: Benjamin Wang --- server/etcdserver/apply/auth.go | 35 +++++++++++++++++----------- server/etcdserver/apply/auth_test.go | 14 +++++------ 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/server/etcdserver/apply/auth.go b/server/etcdserver/apply/auth.go index 979a8068a9d5..f617beec6d17 100644 --- a/server/etcdserver/apply/auth.go +++ b/server/etcdserver/apply/auth.go @@ -63,25 +63,34 @@ func (aa *authApplierV3) Apply(r *pb.InternalRaftRequest, shouldApplyV3 membersh } func (aa *authApplierV3) Put(r *pb.PutRequest) (*pb.PutResponse, *traceutil.Trace, error) { - if err := aa.as.IsPutPermitted(&aa.authInfo, r.Key); err != nil { + if err := checkPutAuth(aa.as, &aa.authInfo, aa.lessor, r); err != nil { return nil, nil, err } - if err := aa.checkLeasePuts(lease.LeaseID(r.Lease)); err != nil { + return aa.applierV3.Put(r) +} + +func checkPutAuth(as auth.AuthStore, ai *auth.AuthInfo, lessor lease.Lessor, r *pb.PutRequest) error { + if err := as.IsPutPermitted(ai, r.Key); err != nil { + return err + } + + if err := checkLeasePuts(as, ai, lessor, lease.LeaseID(r.Lease)); err != nil { // The specified lease is already attached with a key that cannot // be written by this user. It means the user cannot revoke the // lease so attaching the lease to the newly written key should // be forbidden. - return nil, nil, err + return err } if r.PrevKv { - err := aa.as.IsRangePermitted(&aa.authInfo, r.Key, nil) + err := as.IsRangePermitted(ai, r.Key, nil) if err != nil { - return nil, nil, err + return err } } - return aa.applierV3.Put(r) + + return nil } func (aa *authApplierV3) Range(r *pb.RangeRequest) (*pb.RangeResponse, *traceutil.Trace, error) { @@ -181,30 +190,30 @@ func checkTxnReqsPermission(as auth.AuthStore, ai *auth.AuthInfo, reqs []*pb.Req } func (aa *authApplierV3) LeaseRevoke(lc *pb.LeaseRevokeRequest) (*pb.LeaseRevokeResponse, error) { - if err := aa.checkLeasePuts(lease.LeaseID(lc.ID)); err != nil { + if err := checkLeasePuts(aa.as, &aa.authInfo, aa.lessor, lease.LeaseID(lc.ID)); err != nil { return nil, err } return aa.applierV3.LeaseRevoke(lc) } -func (aa *authApplierV3) checkLeasePuts(leaseID lease.LeaseID) error { - l := aa.lessor.Lookup(leaseID) +func checkLeasePuts(as auth.AuthStore, ai *auth.AuthInfo, lessor lease.Lessor, leaseID lease.LeaseID) error { + l := lessor.Lookup(leaseID) if l != nil { - return aa.checkLeasePutsKeys(l) + return checkLeasePutsKeys(as, ai, l) } return nil } -func (aa *authApplierV3) checkLeasePutsKeys(l *lease.Lease) error { +func checkLeasePutsKeys(as auth.AuthStore, ai *auth.AuthInfo, l *lease.Lease) error { // early return for most-common scenario of either disabled auth or admin user. // IsAdminPermitted also checks whether auth is enabled - if err := aa.as.IsAdminPermitted(&aa.authInfo); err == nil { + if err := as.IsAdminPermitted(ai); err == nil { return nil } for _, key := range l.Keys() { - if err := aa.as.IsPutPermitted(&aa.authInfo, []byte(key)); err != nil { + if err := as.IsPutPermitted(ai, []byte(key)); err != nil { return err } } diff --git a/server/etcdserver/apply/auth_test.go b/server/etcdserver/apply/auth_test.go index 2e48124f2ba8..d372945db45e 100644 --- a/server/etcdserver/apply/auth_test.go +++ b/server/etcdserver/apply/auth_test.go @@ -786,24 +786,24 @@ func TestAuthApplierV3_RoleGet(t *testing.T) { func TestCheckLeasePutsKeys(t *testing.T) { aa := defaultAuthApplierV3(t) - require.NoErrorf(t, aa.checkLeasePutsKeys(lease.NewLease(lease.LeaseID(1), 3600)), "auth is disabled, should allow puts") + require.NoErrorf(t, checkLeasePutsKeys(aa.as, &aa.authInfo, lease.NewLease(lease.LeaseID(1), 3600)), "auth is disabled, should allow puts") mustCreateRolesAndEnableAuth(t, aa) aa.authInfo = auth.AuthInfo{Username: "root"} - require.NoErrorf(t, aa.checkLeasePutsKeys(lease.NewLease(lease.LeaseID(1), 3600)), "auth is enabled, should allow puts for root") + require.NoErrorf(t, checkLeasePutsKeys(aa.as, &aa.authInfo, lease.NewLease(lease.LeaseID(1), 3600)), "auth is enabled, should allow puts for root") l := lease.NewLease(lease.LeaseID(1), 3600) l.SetLeaseItem(lease.LeaseItem{Key: "a"}) aa.authInfo = auth.AuthInfo{Username: "bob", Revision: 0} - require.ErrorIsf(t, aa.checkLeasePutsKeys(l), auth.ErrUserEmpty, "auth is enabled, should not allow bob, non existing at rev 0") + require.ErrorIsf(t, checkLeasePutsKeys(aa.as, &aa.authInfo, l), auth.ErrUserEmpty, "auth is enabled, should not allow bob, non existing at rev 0") aa.authInfo = auth.AuthInfo{Username: "bob", Revision: 1} - require.ErrorIsf(t, aa.checkLeasePutsKeys(l), auth.ErrAuthOldRevision, "auth is enabled, old revision") + require.ErrorIsf(t, checkLeasePutsKeys(aa.as, &aa.authInfo, l), auth.ErrAuthOldRevision, "auth is enabled, old revision") aa.authInfo = auth.AuthInfo{Username: "bob", Revision: aa.as.Revision()} - require.ErrorIsf(t, aa.checkLeasePutsKeys(l), auth.ErrPermissionDenied, "auth is enabled, bob does not have permissions, bob does not exist") + require.ErrorIsf(t, checkLeasePutsKeys(aa.as, &aa.authInfo, l), auth.ErrPermissionDenied, "auth is enabled, bob does not have permissions, bob does not exist") _, err := aa.as.UserAdd(&pb.AuthUserAddRequest{Name: "bob", Options: &authpb.UserAddOptions{NoPassword: true}}) require.NoErrorf(t, err, "bob should be added without error") aa.authInfo = auth.AuthInfo{Username: "bob", Revision: aa.as.Revision()} - require.ErrorIsf(t, aa.checkLeasePutsKeys(l), auth.ErrPermissionDenied, "auth is enabled, bob exists yet does not have permissions") + require.ErrorIsf(t, checkLeasePutsKeys(aa.as, &aa.authInfo, l), auth.ErrPermissionDenied, "auth is enabled, bob exists yet does not have permissions") // allow bob to access "a" _, err = aa.as.RoleAdd(&pb.AuthRoleAddRequest{Name: "bobsrole"}) @@ -824,7 +824,7 @@ func TestCheckLeasePutsKeys(t *testing.T) { require.NoErrorf(t, err, "bob should be granted bobsrole without error") aa.authInfo = auth.AuthInfo{Username: "bob", Revision: aa.as.Revision()} - assert.NoErrorf(t, aa.checkLeasePutsKeys(l), "bob should be able to access key 'a'") + assert.NoErrorf(t, checkLeasePutsKeys(aa.as, &aa.authInfo, l), "bob should be able to access key 'a'") } func TestCheckTxnAuth(t *testing.T) { From 03645dc0de9cb6864d12bd753f24807f77e8e0b9 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Fri, 1 May 2026 11:22:39 -0400 Subject: [PATCH 0952/1068] tests: skip TestKVGetStreamCompactedError under cluster_proxy Signed-off-by: Jefftree --- tests/integration/clientv3/kv_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/integration/clientv3/kv_test.go b/tests/integration/clientv3/kv_test.go index e705c1fa84f6..2af6d0ff9a9f 100644 --- a/tests/integration/clientv3/kv_test.go +++ b/tests/integration/clientv3/kv_test.go @@ -464,6 +464,9 @@ func TestKVCompact(t *testing.T) { // rpctypes.ErrCompacted error from the server (matching Get's behavior), // rather than the raw gRPC status. func TestKVGetStreamCompactedError(t *testing.T) { + if integration.ThroughProxy { + t.Skip("RangeStream is not supported by the KV client adapter") + } integration.BeforeTest(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) From 2fcdd7f4520074e45e91d846cab6c01da525cc78 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Tue, 28 Apr 2026 20:40:21 +0100 Subject: [PATCH 0953/1068] Fix the 'read via PrevKv' and 'Put with lease' in TXN bypass rbac check issue Signed-off-by: Benjamin Wang --- server/etcdserver/apply/auth.go | 19 +++++++++---------- server/etcdserver/apply/auth_test.go | 2 +- server/etcdserver/v3_server.go | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/server/etcdserver/apply/auth.go b/server/etcdserver/apply/auth.go index f617beec6d17..c7f609932043 100644 --- a/server/etcdserver/apply/auth.go +++ b/server/etcdserver/apply/auth.go @@ -115,29 +115,29 @@ func (aa *authApplierV3) DeleteRange(r *pb.DeleteRangeRequest) (*pb.DeleteRangeR } func (aa *authApplierV3) Txn(rt *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) { - if err := CheckTxnAuth(aa.as, &aa.authInfo, rt); err != nil { + if err := CheckTxnAuth(aa.as, &aa.authInfo, aa.lessor, rt); err != nil { return nil, nil, err } return aa.applierV3.Txn(rt) } -func CheckTxnAuth(as auth.AuthStore, ai *auth.AuthInfo, rt *pb.TxnRequest) error { - return checkTxnPermission(as, ai, rt) +func CheckTxnAuth(as auth.AuthStore, ai *auth.AuthInfo, lessor lease.Lessor, rt *pb.TxnRequest) error { + return checkTxnPermission(as, ai, lessor, rt) } -func checkTxnPermission(as auth.AuthStore, ai *auth.AuthInfo, rt *pb.TxnRequest) error { +func checkTxnPermission(as auth.AuthStore, ai *auth.AuthInfo, lessor lease.Lessor, rt *pb.TxnRequest) error { for _, c := range rt.Compare { if err := as.IsRangePermitted(ai, c.Key, c.RangeEnd); err != nil { return err } } - if err := checkTxnReqsPermission(as, ai, rt.Success); err != nil { + if err := checkTxnReqsPermission(as, ai, lessor, rt.Success); err != nil { return err } - return checkTxnReqsPermission(as, ai, rt.Failure) + return checkTxnReqsPermission(as, ai, lessor, rt.Failure) } -func checkTxnReqsPermission(as auth.AuthStore, ai *auth.AuthInfo, reqs []*pb.RequestOp) error { +func checkTxnReqsPermission(as auth.AuthStore, ai *auth.AuthInfo, lessor lease.Lessor, reqs []*pb.RequestOp) error { for _, requ := range reqs { switch tv := requ.Request.(type) { case *pb.RequestOp_RequestRange: @@ -154,10 +154,9 @@ func checkTxnReqsPermission(as auth.AuthStore, ai *auth.AuthInfo, reqs []*pb.Req continue } - if err := as.IsPutPermitted(ai, tv.RequestPut.Key); err != nil { + if err := checkPutAuth(as, ai, lessor, tv.RequestPut); err != nil { return err } - case *pb.RequestOp_RequestDeleteRange: if tv.RequestDeleteRange == nil { continue @@ -179,7 +178,7 @@ func checkTxnReqsPermission(as auth.AuthStore, ai *auth.AuthInfo, reqs []*pb.Req continue } - err := checkTxnPermission(as, ai, tv.RequestTxn) + err := checkTxnPermission(as, ai, lessor, tv.RequestTxn) if err != nil { return err } diff --git a/server/etcdserver/apply/auth_test.go b/server/etcdserver/apply/auth_test.go index d372945db45e..009d8dac4f39 100644 --- a/server/etcdserver/apply/auth_test.go +++ b/server/etcdserver/apply/auth_test.go @@ -1048,7 +1048,7 @@ func TestCheckTxnAuth(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - err := CheckTxnAuth(as, &auth.AuthInfo{Username: "foo", Revision: 8}, tt.txnRequest) + err := CheckTxnAuth(as, &auth.AuthInfo{Username: "foo", Revision: 8}, &lease.FakeLessor{}, tt.txnRequest) assert.Equal(t, tt.err, err) }) } diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index b07e845b823a..11d85ab10fc4 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -349,7 +349,7 @@ func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse var resp *pb.TxnResponse var err error chk := func(ai *auth.AuthInfo) error { - return apply2.CheckTxnAuth(s.authStore, ai, r) + return apply2.CheckTxnAuth(s.authStore, ai, s.lessor, r) } defer func(start time.Time) { From bcf4449e9d4c3e193134c2f393e5d3744f70d36d Mon Sep 17 00:00:00 2001 From: Jefftree Date: Fri, 1 May 2026 11:12:35 -0400 Subject: [PATCH 0954/1068] robustness: exercise RangeStream in random op mix Signed-off-by: Jefftree --- tests/robustness/client/client.go | 24 +++++++++++++++ tests/robustness/traffic/etcd.go | 49 +++++++++++++++++++++---------- 2 files changed, 58 insertions(+), 15 deletions(-) diff --git a/tests/robustness/client/client.go b/tests/robustness/client/client.go index 17f543df97a7..83ca2b1bbf39 100644 --- a/tests/robustness/client/client.go +++ b/tests/robustness/client/client.go @@ -113,6 +113,30 @@ func (c *RecordingClient) Range(ctx context.Context, start, end string, revision return resp, err } +func (c *RecordingClient) RangeStream(ctx context.Context, start, end string, revision, limit int64) (*clientv3.GetResponse, error) { + ops := []clientv3.OpOption{} + if end != "" { + ops = append(ops, clientv3.WithRange(end)) + } + if revision != 0 { + ops = append(ops, clientv3.WithRev(revision)) + } + if limit != 0 { + ops = append(ops, clientv3.WithLimit(limit)) + } + c.kvMux.Lock() + defer c.kvMux.Unlock() + callTime := time.Since(c.baseTime) + stream, err := c.client.GetStream(ctx, start, ops...) + var resp *clientv3.GetResponse + if err == nil { + resp, err = clientv3.GetStreamToGetResponse(stream) + } + returnTime := time.Since(c.baseTime) + c.kvOperations.AppendRange(start, end, revision, limit, callTime, returnTime, resp, err) + return resp, err +} + func (c *RecordingClient) Put(ctx context.Context, key, value string, _ ...clientv3.OpOption) (*clientv3.PutResponse, error) { c.kvMux.Lock() defer c.kvMux.Unlock() diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index 840eaea298fe..26732c528040 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -37,9 +37,11 @@ var ( // Please keep the sum of weights equal 100. requests: []random.ChoiceWeight[etcdRequestType]{ {Choice: Get, Weight: 15}, - {Choice: List, Weight: 15}, + {Choice: List, Weight: 8}, + {Choice: ListStream, Weight: 7}, {Choice: StaleGet, Weight: 10}, - {Choice: StaleList, Weight: 10}, + {Choice: StaleList, Weight: 5}, + {Choice: StaleListStream, Weight: 5}, {Choice: Delete, Weight: 5}, {Choice: MultiOpTxn, Weight: 10}, {Choice: PutWithLease, Weight: 5}, @@ -54,9 +56,11 @@ var ( // Please keep the sum of weights equal 100. requests: []random.ChoiceWeight[etcdRequestType]{ {Choice: Get, Weight: 15}, - {Choice: List, Weight: 15}, + {Choice: List, Weight: 8}, + {Choice: ListStream, Weight: 7}, {Choice: StaleGet, Weight: 10}, - {Choice: StaleList, Weight: 10}, + {Choice: StaleList, Weight: 5}, + {Choice: StaleListStream, Weight: 5}, {Choice: MultiOpTxn, Weight: 10}, {Choice: Put, Weight: 40}, }, @@ -85,17 +89,19 @@ func (t etcdTraffic) ExpectUniqueRevision() bool { type etcdRequestType string const ( - Get etcdRequestType = "get" - StaleGet etcdRequestType = "staleGet" - List etcdRequestType = "list" - StaleList etcdRequestType = "staleList" - Put etcdRequestType = "put" - Delete etcdRequestType = "delete" - MultiOpTxn etcdRequestType = "multiOpTxn" - PutWithLease etcdRequestType = "putWithLease" - LeaseRevoke etcdRequestType = "leaseRevoke" - CompareAndSet etcdRequestType = "compareAndSet" - Defragment etcdRequestType = "defragment" + Get etcdRequestType = "get" + StaleGet etcdRequestType = "staleGet" + List etcdRequestType = "list" + StaleList etcdRequestType = "staleList" + ListStream etcdRequestType = "listStream" + StaleListStream etcdRequestType = "staleListStream" + Put etcdRequestType = "put" + Delete etcdRequestType = "delete" + MultiOpTxn etcdRequestType = "multiOpTxn" + PutWithLease etcdRequestType = "putWithLease" + LeaseRevoke etcdRequestType = "leaseRevoke" + CompareAndSet etcdRequestType = "compareAndSet" + Defragment etcdRequestType = "defragment" ) func (t etcdTraffic) Name() string { @@ -233,6 +239,19 @@ func (c etcdTrafficClient) Request(ctx context.Context, request etcdRequestType, if resp != nil { rev = resp.Header.Revision } + case ListStream: + var resp *clientv3.GetResponse + resp, err = c.client.RangeStream(opCtx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), 0, limit) + if resp != nil { + c.keyStore.SyncKeys(resp) + rev = resp.Header.Revision + } + case StaleListStream: + var resp *clientv3.GetResponse + resp, err = c.client.RangeStream(opCtx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), lastRev, limit) + if resp != nil { + rev = resp.Header.Revision + } case Put: var resp *clientv3.PutResponse resp, err = c.client.Put(opCtx, c.keyStore.GetKey(), fmt.Sprintf("%d", c.idProvider.NewRequestID())) From d0608400f6cf8f936a183ec0fccf86e6ec5eeaf3 Mon Sep 17 00:00:00 2001 From: goingforstudying-ctrl Date: Wed, 29 Apr 2026 09:14:41 +0000 Subject: [PATCH 0955/1068] fix(etcdutl): add missing Close() calls in etcdutl commands to prevent db lock hang - Add defer b.Close() to close the backend after hashing in hashkv_command.go - Add defer st.Close() to close the mvcc store after hashing in hashkv_command.go - Add defer b.Close() to close the backend in bucket_command.go getHash() - Add defer b.Close() to close the backend in defrag_command.go DefragData() Fixes #20276 Signed-off-by: goingforstudying-ctrl --- etcdutl/etcdutl/bucket_command.go | 1 + etcdutl/etcdutl/defrag_command.go | 1 + etcdutl/etcdutl/hashkv_command.go | 2 ++ 3 files changed, 4 insertions(+) diff --git a/etcdutl/etcdutl/bucket_command.go b/etcdutl/etcdutl/bucket_command.go index 57caf1cc690c..254a431cf979 100644 --- a/etcdutl/etcdutl/bucket_command.go +++ b/etcdutl/etcdutl/bucket_command.go @@ -261,5 +261,6 @@ func getHashCommandFunc(_ *cobra.Command, args []string) { func getHash(dbPath string) (hash uint32, err error) { b := backend.NewDefaultBackend(zap.NewNop(), dbPath, backend.WithTimeout(FlockTimeout)) + defer b.Close() return b.Hash(schema.DefaultIgnores) } diff --git a/etcdutl/etcdutl/defrag_command.go b/etcdutl/etcdutl/defrag_command.go index 183e21c0cfed..6a80df2d3b70 100644 --- a/etcdutl/etcdutl/defrag_command.go +++ b/etcdutl/etcdutl/defrag_command.go @@ -52,6 +52,7 @@ func DefragData(dataDir string) error { GetLogger(), datadir.ToBackendFileName(dataDir), backend.WithTimeout(FlockTimeout)) + defer b.Close() return b.Defrag() } diff --git a/etcdutl/etcdutl/hashkv_command.go b/etcdutl/etcdutl/hashkv_command.go index 69982e84e58d..bc06f60c54b0 100644 --- a/etcdutl/etcdutl/hashkv_command.go +++ b/etcdutl/etcdutl/hashkv_command.go @@ -55,8 +55,10 @@ type HashKV struct { func calculateHashKV(dbPath string, rev int64) (HashKV, error) { b := backend.NewDefaultBackend(zap.NewNop(), dbPath, backend.WithTimeout(FlockTimeout)) + defer b.Close() // Since `etcdutl hashkv` only hashes the keyspace and ignores leases, we use a simple lessor to simplify the implementation. st := mvcc.NewStore(zap.NewNop(), b, &SimpleLessor{}, mvcc.StoreConfig{}) + defer st.Close() hst := mvcc.NewHashStorage(zap.NewNop(), st) h, _, err := hst.HashByRev(rev) From 94e32415ce233e2f70962a09aea26abff2b8eb7e Mon Sep 17 00:00:00 2001 From: Jefftree Date: Fri, 1 May 2026 10:56:00 -0400 Subject: [PATCH 0956/1068] hack/benchmark: remove v2-era bench.sh and README Signed-off-by: Jefftree --- hack/benchmark/README.md | 14 --------- hack/benchmark/bench.sh | 65 ---------------------------------------- 2 files changed, 79 deletions(-) delete mode 100644 hack/benchmark/README.md delete mode 100755 hack/benchmark/bench.sh diff --git a/hack/benchmark/README.md b/hack/benchmark/README.md deleted file mode 100644 index 6a09c530299d..000000000000 --- a/hack/benchmark/README.md +++ /dev/null @@ -1,14 +0,0 @@ -## Usage - -Benchmark 3-member etcd cluster to get its read and write performance. - -## Instructions - -1. Start 3-member etcd cluster on 3 machines -2. Update `$leader` and `$servers` in the script -3. Run the script in a separate machine - -## Caveat - -1. Set environment variable `GOMAXPROCS` as the number of available cores to maximize CPU resources for both etcd member and bench process. -2. Set the number of open files per process as 10000 for amounts of client connections for both etcd member and benchmark process. diff --git a/hack/benchmark/bench.sh b/hack/benchmark/bench.sh deleted file mode 100755 index d72efd3e2029..000000000000 --- a/hack/benchmark/bench.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash -e - -leader=http://localhost:2379 -# assume three servers -servers=( http://localhost:2379 http://localhost:22379 http://localhost:32379 ) - -keyarray=( 64 256 ) - -for keysize in ${keyarray[@]}; do - - echo write, 1 client, $keysize key size, to leader - ./hey -m PUT -n 10 -d value=`head -c $keysize < /dev/zero | tr '\0' '\141'` -c 1 -T application/x-www-form-urlencoded $leader/v2/keys/foo | grep -e "Requests/sec" -e "Latency" -e "90%" | tr "\n" "\t" | xargs echo - - echo write, 64 client, $keysize key size, to leader - ./hey -m PUT -n 640 -d value=`head -c $keysize < /dev/zero | tr '\0' '\141'` -c 64 -T application/x-www-form-urlencoded $leader/v2/keys/foo | grep -e "Requests/sec" -e "Latency" -e "90%" | tr "\n" "\t" | xargs echo - - echo write, 256 client, $keysize key size, to leader - ./hey -m PUT -n 2560 -d value=`head -c $keysize < /dev/zero | tr '\0' '\141'` -c 256 -T application/x-www-form-urlencoded $leader/v2/keys/foo | grep -e "Requests/sec" -e "Latency" -e "90%" | tr "\n" "\t" | xargs echo - - echo write, 64 client, $keysize key size, to all servers - for i in ${servers[@]}; do - ./hey -m PUT -n 210 -d value=`head -c $keysize < /dev/zero | tr '\0' '\141'` -c 21 -T application/x-www-form-urlencoded $i/v2/keys/foo | grep -e "Requests/sec" -e "Latency" -e "90%" | tr "\n" "\t" | xargs echo & - done - # wait for all heys to start running - sleep 3 - # wait for all heys to finish - for pid in $(pgrep 'hey'); do - while kill -0 "$pid" 2> /dev/null; do - sleep 3 - done - done - - echo write, 256 client, $keysize key size, to all servers - for i in ${servers[@]}; do - ./hey -m PUT -n 850 -d value=`head -c $keysize < /dev/zero | tr '\0' '\141'` -c 85 -T application/x-www-form-urlencoded $i/v2/keys/foo | grep -e "Requests/sec" -e "Latency" -e "90%" | tr "\n" "\t" | xargs echo & - done - sleep 3 - for pid in $(pgrep 'hey'); do - while kill -0 "$pid" 2> /dev/null; do - sleep 3 - done - done - - echo read, 1 client, $keysize key size, to leader - ./hey -n 100 -c 1 $leader/v2/keys/foo | grep -e "Requests/sec" -e "Latency" -e "90%" | tr "\n" "\t" | xargs echo - - echo read, 64 client, $keysize key size, to leader - ./hey -n 6400 -c 64 $leader/v2/keys/foo | grep -e "Requests/sec" -e "Latency" -e "90%" | tr "\n" "\t" | xargs echo - - echo read, 256 client, $keysize key size, to leader - ./hey -n 25600 -c 256 $leader/v2/keys/foo | grep -e "Requests/sec" -e "Latency" -e "90%" | tr "\n" "\t" | xargs echo - - echo read, 64 client, $keysize key size, to all servers - # bench servers one by one, so it doesn't overload this benchmark machine - # It doesn't impact correctness because read request doesn't involve peer interaction. - for i in ${servers[@]}; do - ./hey -n 21000 -c 21 $i/v2/keys/foo | grep -e "Requests/sec" -e "Latency" -e "90%" | tr "\n" "\t" | xargs echo - done - - echo read, 256 client, $keysize key size, to all servers - for i in ${servers[@]}; do - ./hey -n 85000 -c 85 $i/v2/keys/foo | grep -e "Requests/sec" -e "Latency" -e "90%" | tr "\n" "\t" | xargs echo - done - -done From 89208f1c61bc92e07bb024c22231e46843382795 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Thu, 30 Apr 2026 09:57:50 -0400 Subject: [PATCH 0957/1068] *: add GetStream and RangeStream client support Signed-off-by: Jefftree --- cache/cache_test.go | 4 + client/v3/go.mod | 2 +- client/v3/kv.go | 65 +++++++++++ client/v3/leasing/kv.go | 5 + client/v3/namespace/kv.go | 8 ++ .../api/v3discovery/discovery_test.go | 4 + tests/common/integration_test.go | 1 + tests/common/kv_test.go | 37 ++++++- tests/common/main_test.go | 5 +- tests/framework/config/client.go | 1 + tests/framework/e2e/etcdctl.go | 3 + tests/framework/integration/integration.go | 7 ++ .../clientv3/examples/example_kv_test.go | 104 ++++++++++++++++++ tests/robustness/client/client.go | 4 + 14 files changed, 242 insertions(+), 8 deletions(-) diff --git a/cache/cache_test.go b/cache/cache_test.go index c153df97c1ce..53a1523a4a81 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -640,6 +640,10 @@ func (s *kvStub) Compact(ctx context.Context, rev int64, _ ...clientv3.CompactOp return nil, nil } +func (s *kvStub) GetStream(ctx context.Context, key string, opts ...clientv3.OpOption) (clientv3.GetStreamChan, error) { + return nil, errors.New("GetStream not implemented") +} + func (s *kvStub) Do(ctx context.Context, op clientv3.Op) (clientv3.OpResponse, error) { return clientv3.OpResponse{}, nil } diff --git a/client/v3/go.mod b/client/v3/go.mod index e60363a2418a..33c1ec81b6a0 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -7,6 +7,7 @@ toolchain go1.26.2 require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 + github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/prometheus/client_golang v1.23.2 github.com/stretchr/testify v1.11.1 @@ -22,7 +23,6 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect diff --git a/client/v3/kv.go b/client/v3/kv.go index 6b94b8196015..defcf296b6b5 100644 --- a/client/v3/kv.go +++ b/client/v3/kv.go @@ -16,7 +16,10 @@ package clientv3 import ( "context" + "errors" + "io" + "github.com/golang/protobuf/proto" //nolint:staticcheck // TODO: remove for a supported version "google.golang.org/grpc" pb "go.etcd.io/etcd/api/v3/etcdserverpb" @@ -27,6 +30,7 @@ type ( CompactResponse pb.CompactionResponse PutResponse pb.PutResponse GetResponse pb.RangeResponse + GetStreamChan <-chan RangeStreamResponse DeleteResponse pb.DeleteRangeResponse TxnResponse pb.TxnResponse ) @@ -48,6 +52,15 @@ type KV interface { // When passed WithSort(), the keys will be sorted. Get(ctx context.Context, key string, opts ...OpOption) (*GetResponse, error) + // RangeStream retrieves keys. + // By default, will return the value for "key", if any. + // When passed WithRange(end), will return the keys in the range [key, end). + // When passed WithFromKey(), returns keys greater than or equal to key. + // When passed WithRev(rev) with rev > 0, retrieves keys at the given revision; + // if the required revision is compacted, the request will fail with ErrCompacted . + // When passed WithLimit(limit), the number of returned keys is bounded by limit. + GetStream(ctx context.Context, key string, opts ...OpOption) (GetStreamChan, error) + // Delete deletes a key, or optionally using WithRange(end), [key, end). Delete(ctx context.Context, key string, opts ...OpOption) (*DeleteResponse, error) @@ -65,6 +78,35 @@ type KV interface { Txn(ctx context.Context) Txn } +// RangeStreamResponse holds a single chunk from a RangeStream RPC. Kvs is +// disjoint per chunk; Header, More, and Count are populated only on the +// final chunk. +// +// On a non-EOF stream error, the final value sent on the channel is a +// terminal RangeStreamResponse with RangeResponse == nil and a non-nil +// Err(). +type RangeStreamResponse struct { + *pb.RangeResponse + closeErr error +} + +// Err returns the error value if this RangeStreamResponse is the terminal +// error response for a stream that failed mid-flight. +func (r *RangeStreamResponse) Err() error { + return r.closeErr +} + +func GetStreamToGetResponse(stream GetStreamChan) (*GetResponse, error) { + resp := &pb.RangeResponse{} + for r := range stream { + if err := r.Err(); err != nil { + return nil, err + } + proto.Merge(resp, r.RangeResponse) + } + return (*GetResponse)(resp), nil +} + type OpResponse struct { put *PutResponse get *GetResponse @@ -124,6 +166,29 @@ func (kv *kv) Get(ctx context.Context, key string, opts ...OpOption) (*GetRespon return r.get, ContextError(ctx, err) } +func (kv *kv) GetStream(ctx context.Context, key string, opts ...OpOption) (GetStreamChan, error) { + op := OpGet(key, opts...) + c, err := kv.remote.RangeStream(ctx, op.toRangeRequest(), kv.callOpts...) + if err != nil { + return nil, ContextError(ctx, err) + } + respCh := make(chan RangeStreamResponse, 1) + go func() { + defer close(respCh) + for { + resp, err := c.Recv() + if err != nil { + if !errors.Is(err, io.EOF) { + respCh <- RangeStreamResponse{closeErr: err} + } + return + } + respCh <- RangeStreamResponse{RangeResponse: resp.RangeResponse} + } + }() + return respCh, nil +} + func (kv *kv) Delete(ctx context.Context, key string, opts ...OpOption) (*DeleteResponse, error) { r, err := kv.Do(ctx, OpDelete(key, opts...)) return r.del, ContextError(ctx, err) diff --git a/client/v3/leasing/kv.go b/client/v3/leasing/kv.go index c14af78d629c..ec846cd6c47c 100644 --- a/client/v3/leasing/kv.go +++ b/client/v3/leasing/kv.go @@ -91,6 +91,11 @@ func (lkv *leasingKV) Put(ctx context.Context, key, val string, opts ...v3.OpOpt return lkv.put(ctx, v3.OpPut(key, val, opts...)) } +// GetStream is not supported by leasingKV. +func (lkv *leasingKV) GetStream(ctx context.Context, key string, opts ...v3.OpOption) (v3.GetStreamChan, error) { + return nil, status.Error(codes.Unimplemented, "GetStream is not supported by leasingKV") +} + func (lkv *leasingKV) Delete(ctx context.Context, key string, opts ...v3.OpOption) (*v3.DeleteResponse, error) { return lkv.delete(ctx, v3.OpDelete(key, opts...)) } diff --git a/client/v3/namespace/kv.go b/client/v3/namespace/kv.go index aa338d5356d8..42fd93db63bd 100644 --- a/client/v3/namespace/kv.go +++ b/client/v3/namespace/kv.go @@ -17,6 +17,9 @@ package namespace import ( "context" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" @@ -64,6 +67,11 @@ func (kv *kvPrefix) Get(ctx context.Context, key string, opts ...clientv3.OpOpti return get, nil } +// GetStream is not supported by kvPrefix. +func (kv *kvPrefix) GetStream(ctx context.Context, key string, opts ...clientv3.OpOption) (clientv3.GetStreamChan, error) { + return nil, status.Error(codes.Unimplemented, "GetStream is not supported by kvPrefix") +} + func (kv *kvPrefix) Delete(ctx context.Context, key string, opts ...clientv3.OpOption) (*clientv3.DeleteResponse, error) { if len(key) == 0 && !(clientv3.IsOptsWithFromKey(opts) || clientv3.IsOptsWithPrefix(opts)) { return nil, rpctypes.ErrEmptyKey diff --git a/server/etcdserver/api/v3discovery/discovery_test.go b/server/etcdserver/api/v3discovery/discovery_test.go index e0834f9825c1..4e4809163f7a 100644 --- a/server/etcdserver/api/v3discovery/discovery_test.go +++ b/server/etcdserver/api/v3discovery/discovery_test.go @@ -748,6 +748,10 @@ func (fkv *fakeBaseKV) Get(ctx context.Context, key string, opts ...clientv3.OpO return nil, nil } +func (fkv *fakeBaseKV) GetStream(ctx context.Context, key string, opts ...clientv3.OpOption) (clientv3.GetStreamChan, error) { + return nil, nil +} + func (fkv *fakeBaseKV) Delete(ctx context.Context, key string, opts ...clientv3.OpOption) (*clientv3.DeleteResponse, error) { return nil, nil } diff --git a/tests/common/integration_test.go b/tests/common/integration_test.go index 53234cd04bc3..df1e41066511 100644 --- a/tests/common/integration_test.go +++ b/tests/common/integration_test.go @@ -25,6 +25,7 @@ import ( func init() { testRunner = framework.IntegrationTestRunner clusterTestCases = integrationClusterTestCases + supportsGetStream = true } func integrationClusterTestCases() []testCase { diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index 8215227442dd..c0462fa02470 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -27,6 +27,7 @@ import ( "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/mvccpb" clientv3 "go.etcd.io/etcd/client/v3" + "go.etcd.io/etcd/server/v3/etcdserver/txn" "go.etcd.io/etcd/tests/v3/framework/config" "go.etcd.io/etcd/tests/v3/framework/testutils" ) @@ -153,11 +154,20 @@ func TestKVGet(t *testing.T) { } for _, tt := range slices.Concat(tests, testsWithKeysOnly) { t.Run(tt.name, func(t *testing.T) { - resp, err := cc.Get(ctx, tt.begin, tt.options) - require.NoErrorf(t, err, "count not get key %q, err: %s", tt.begin, err) - resp.Header.MemberId = 0 - resp.Header.RaftTerm = 0 - assert.Equal(t, tt.wantResponse, resp) + for _, stream := range []bool{true, false} { + t.Run(fmt.Sprintf("Stream=%v", stream), func(t *testing.T) { + if !supportsGetStream || !rangeStreamSupports(tt.options) { + t.Skip("Stream not supported") + } + opts := tt.options + opts.Stream = stream + resp, err := cc.Get(ctx, tt.begin, opts) + require.NoErrorf(t, err, "count not get key %q, err: %s", tt.begin, err) + resp.Header.MemberId = 0 + resp.Header.RaftTerm = 0 + assert.Equal(t, tt.wantResponse, resp) + }) + } }) } }) @@ -175,6 +185,23 @@ func createKV(key, val string, createRev, modRev, ver int64) *mvccpb.KeyValue { } } +// rangeStreamSupports reports whether the server's RangeStream RPC accepts a +// request with these options, mirroring v3rpc.checkRangeStreamRequest. +func rangeStreamSupports(o config.GetOptions) bool { + if !txn.IsDefaultOrdering( + etcdserverpb.RangeRequest_SortTarget(o.SortBy), + etcdserverpb.RangeRequest_SortOrder(o.Order), + ) { + return false + } + return !txn.HasRevisionFilters(&etcdserverpb.RangeRequest{ + MinModRevision: int64(o.MinModRevision), + MaxModRevision: int64(o.MaxModRevision), + MinCreateRevision: int64(o.MinCreateRevision), + MaxCreateRevision: int64(o.MaxCreateRevision), + }) +} + func dropValue(s []*mvccpb.KeyValue) []*mvccpb.KeyValue { ss := make([]*mvccpb.KeyValue, 0, len(s)) for _, kv := range s { diff --git a/tests/common/main_test.go b/tests/common/main_test.go index be5e5a17d4db..326918f794bf 100644 --- a/tests/common/main_test.go +++ b/tests/common/main_test.go @@ -22,8 +22,9 @@ import ( ) var ( - testRunner intf.TestRunner - clusterTestCases func() []testCase + testRunner intf.TestRunner + clusterTestCases func() []testCase + supportsGetStream bool ) func TestMain(m *testing.M) { diff --git a/tests/framework/config/client.go b/tests/framework/config/client.go index 1e3c4ff9e18d..a7a0048638c5 100644 --- a/tests/framework/config/client.go +++ b/tests/framework/config/client.go @@ -43,6 +43,7 @@ type GetOptions struct { MaxModRevision int MinCreateRevision int MaxCreateRevision int + Stream bool } type PutOptions struct { diff --git a/tests/framework/e2e/etcdctl.go b/tests/framework/e2e/etcdctl.go index c39b74806094..03f96d2ad2e1 100644 --- a/tests/framework/e2e/etcdctl.go +++ b/tests/framework/e2e/etcdctl.go @@ -104,6 +104,9 @@ func (ctl *EtcdctlV3) DowngradeCancel(ctx context.Context) error { } func (ctl *EtcdctlV3) Get(ctx context.Context, key string, o config.GetOptions) (*clientv3.GetResponse, error) { + if o.Stream { + return nil, fmt.Errorf("etcdctl has no RangeStream command; Stream=true is not supported by the e2e backend") + } var args []string if o.Timeout != 0 { args = append(args, fmt.Sprintf("--command-timeout=%s", o.Timeout)) diff --git a/tests/framework/integration/integration.go b/tests/framework/integration/integration.go index ff4784a7c2cd..28944b590fbf 100644 --- a/tests/framework/integration/integration.go +++ b/tests/framework/integration/integration.go @@ -230,6 +230,13 @@ func (c integrationClient) Get(ctx context.Context, key string, o config.GetOpti if o.MinModRevision != 0 { clientOpts = append(clientOpts, clientv3.WithMinModRev(int64(o.MinModRevision))) } + if o.Stream { + stream, err := c.Client.GetStream(ctx, key, clientOpts...) + if err != nil { + return nil, err + } + return clientv3.GetStreamToGetResponse(stream) + } return c.Client.Get(ctx, key, clientOpts...) } diff --git a/tests/integration/clientv3/examples/example_kv_test.go b/tests/integration/clientv3/examples/example_kv_test.go index 235404b6753f..6c4b1c1bfc42 100644 --- a/tests/integration/clientv3/examples/example_kv_test.go +++ b/tests/integration/clientv3/examples/example_kv_test.go @@ -192,6 +192,110 @@ func ExampleKV_getSortedPrefix() { // key_0 : value } +func mockKVGetStream() { + fmt.Println("key_0 : value") + fmt.Println("key_1 : value") + fmt.Println("key_2 : value") + fmt.Println("count: 3, more: false") +} + +func ExampleKV_getStream() { + forUnitTestsRunInMockedContext(mockKVGetStream, func() { + cli, err := clientv3.New(clientv3.Config{ + Endpoints: exampleEndpoints(), + DialTimeout: dialTimeout, + }) + if err != nil { + log.Fatal(err) + } + defer cli.Close() + + for i := 0; i < 3; i++ { + ctx, cancel := context.WithTimeout(context.Background(), requestTimeout) + _, err = cli.Put(ctx, fmt.Sprintf("key_%d", i), "value") + cancel() + if err != nil { + log.Fatal(err) + } + } + + ctx, cancel := context.WithTimeout(context.Background(), requestTimeout) + defer cancel() + stream, err := cli.GetStream(ctx, "key", clientv3.WithPrefix()) + if err != nil { + log.Fatal(err) + } + // Header, More, and Count are populated only on the final chunk, and + // only when the stream completes without error. Track the latest + // chunk to read them, the same way they appear on a unary Get response. + var last clientv3.RangeStreamResponse + for chunk := range stream { + if err := chunk.Err(); err != nil { + log.Fatal(err) + } + for _, ev := range chunk.Kvs { + fmt.Printf("%s : %s\n", ev.Key, ev.Value) + } + last = chunk + } + fmt.Printf("count: %d, more: %v\n", last.Count, last.More) + }) + // Output: + // key_0 : value + // key_1 : value + // key_2 : value + // count: 3, more: false +} + +func mockKVGetStreamToGetResponse() { + fmt.Println("count: 3") + fmt.Println("key_0 : value") + fmt.Println("key_1 : value") + fmt.Println("key_2 : value") +} + +func ExampleKV_getStreamToGetResponse() { + forUnitTestsRunInMockedContext(mockKVGetStreamToGetResponse, func() { + cli, err := clientv3.New(clientv3.Config{ + Endpoints: exampleEndpoints(), + DialTimeout: dialTimeout, + }) + if err != nil { + log.Fatal(err) + } + defer cli.Close() + + for i := 0; i < 3; i++ { + ctx, cancel := context.WithTimeout(context.Background(), requestTimeout) + _, err = cli.Put(ctx, fmt.Sprintf("key_%d", i), "value") + cancel() + if err != nil { + log.Fatal(err) + } + } + + ctx, cancel := context.WithTimeout(context.Background(), requestTimeout) + defer cancel() + stream, err := cli.GetStream(ctx, "key", clientv3.WithPrefix()) + if err != nil { + log.Fatal(err) + } + resp, err := clientv3.GetStreamToGetResponse(stream) + if err != nil { + log.Fatal(err) + } + fmt.Printf("count: %d\n", resp.Count) + for _, ev := range resp.Kvs { + fmt.Printf("%s : %s\n", ev.Key, ev.Value) + } + }) + // Output: + // count: 3 + // key_0 : value + // key_1 : value + // key_2 : value +} + func mockKVDelete() { fmt.Println("Deleted all keys: true") } diff --git a/tests/robustness/client/client.go b/tests/robustness/client/client.go index 19d75c2ec562..17f543df97a7 100644 --- a/tests/robustness/client/client.go +++ b/tests/robustness/client/client.go @@ -216,6 +216,10 @@ func (c *RecordingClient) Defragment(ctx context.Context) (*clientv3.DefragmentR return resp, err } +func (c *RecordingClient) GetStream(ctx context.Context, key string, opts ...clientv3.OpOption) (clientv3.GetStreamChan, error) { + panic("not implemented") +} + func (c *RecordingClient) Compact(ctx context.Context, rev int64, _ ...clientv3.CompactOption) (*clientv3.CompactResponse, error) { c.kvMux.Lock() defer c.kvMux.Unlock() From fb7220496ad5be91d89d564fd8db2592672e7449 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Sun, 8 Mar 2026 18:34:13 -0400 Subject: [PATCH 0958/1068] client/v3: switch to pointer for clientv3.Cmp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add client/v3/internal/pb/clone.go as a temporary gogo clone helper, keep clone boundaries when txn/op code retains compare state, and update the namespace/leasing/grpcproxy/etcdctl/robustness paths to use the new representation. ---- It uses `Cmp` to hide the underlying pointer, so any modifications must go through the exported methods. There are two major changes: * Users can no longer construct a `Cmp` value with a composite literal such as `Cmp{key: value}`. * The original implementation only performed a shadow copy. The new change performs a deep copy of `Key []byte` and `RangeEnd []byte`. The original implementation does not copy `Cmp` in these three functions. This change performs a deep copy of `Cmp` in all three functions. * (clientv3.txn).If * (clientv3.Op).toTxnRequest * (clientv3).OpTxn Within Kubernetes, kube-apiserver uses `Cmp` when performing `OptimisticPut`, `OptimisticDelete`, and updating `compactRevKey`. Based on the benchmark results, which still use gogo-generated protobuf structs, simply passing values instead of performing a deep copy does not seem to have a significant impact. Anyway, Let's use deep copy first. ``` goos: linux goarch: amd64 pkg: go.etcd.io/etcd/client/v3 cpu: AMD Ryzen 7 5800H with Radeon Graphics │ /tmp/bench-old.txt │ /tmp/bench-new.txt │ /tmp/bench-new-without-clone.txt │ │ sec/op │ sec/op vs base │ sec/op vs base │ TxnIfSingleCmp-16 160.6n ± ∞ ¹ 1383.0n ± ∞ ¹ ~ (p=1.000 n=1) ² 643.2n ± ∞ ¹ ~ (p=1.000 n=1) ² KubernetesOptimisticPutTxnBuild-16 953.5n ± ∞ ¹ 2286.0n ± ∞ ¹ ~ (p=1.000 n=1) ² 1494.0n ± ∞ ¹ ~ (p=1.000 n=1) ² OpTxnSingleCmpToTxnRequest-16 880.1n ± ∞ ¹ 2794.0n ± ∞ ¹ ~ (p=1.000 n=1) ² 1247.0n ± ∞ ¹ ~ (p=1.000 n=1) ² geomean 512.7n 2.067µ +303.19% 1.062µ +107.17% ¹ need >= 6 samples for confidence interval at level 0.95 ² need >= 4 samples to detect a difference at alpha level 0.05 │ /tmp/bench-old.txt │ /tmp/bench-new.txt │ /tmp/bench-new-without-clone.txt │ │ B/op │ B/op vs base │ B/op vs base │ TxnIfSingleCmp-16 304.0 ± ∞ ¹ 600.0 ± ∞ ¹ ~ (p=1.000 n=1) ² 448.0 ± ∞ ¹ ~ (p=1.000 n=1) ² KubernetesOptimisticPutTxnBuild-16 2.008Ki ± ∞ ¹ 2.297Ki ± ∞ ¹ ~ (p=1.000 n=1) ² 2.148Ki ± ∞ ¹ ~ (p=1.000 n=1) ² OpTxnSingleCmpToTxnRequest-16 1.867Ki ± ∞ ¹ 1.844Ki ± ∞ ¹ ~ (p=1.000 n=1) ² 1.539Ki ± ∞ ¹ ~ (p=1.000 n=1) ² geomean 1.036Ki 1.354Ki +30.64% 1.131Ki +9.13% ¹ need >= 6 samples for confidence interval at level 0.95 ² need >= 4 samples to detect a difference at alpha level 0.05 │ /tmp/bench-old.txt │ /tmp/bench-new.txt │ /tmp/bench-new-without-clone.txt │ │ allocs/op │ allocs/op vs base │ allocs/op vs base │ TxnIfSingleCmp-16 5.000 ± ∞ ¹ 10.000 ± ∞ ¹ ~ (p=1.000 n=1) ² 7.000 ± ∞ ¹ ~ (p=1.000 n=1) ² KubernetesOptimisticPutTxnBuild-16 22.00 ± ∞ ¹ 27.00 ± ∞ ¹ ~ (p=1.000 n=1) ² 24.00 ± ∞ ¹ ~ (p=1.000 n=1) ² OpTxnSingleCmpToTxnRequest-16 21.00 ± ∞ ¹ 28.00 ± ∞ ¹ ~ (p=1.000 n=1) ² 21.00 ± ∞ ¹ ~ (p=1.000 n=1) ³ geomean 13.22 19.63 +48.47% 15.22 +15.16% ¹ need >= 6 samples for confidence interval at level 0.95 ² need >= 4 samples to detect a difference at alpha level 0.05 ³ all samples are equal ``` Co-authored-by: Jordan Liggitt Signed-off-by: Wei Fu --- cache/go.mod | 1 + cache/go.sum | 31 ++++++++++ client/v3/compare.go | 90 ++++++++++++++++++++++------ client/v3/compare_bench_test.go | 80 +++++++++++++++++++++++++ client/v3/compare_test.go | 78 ++++++++++++++++++++++++ client/v3/go.mod | 1 + client/v3/go.sum | 31 ++++++++++ client/v3/leasing/cache.go | 4 +- client/v3/leasing/kv.go | 3 +- client/v3/leasing/txn.go | 2 +- client/v3/leasing/util.go | 13 ++-- client/v3/namespace/kv.go | 8 +-- client/v3/op.go | 9 ++- client/v3/txn.go | 3 +- etcdctl/ctlv3/command/txn_command.go | 3 +- etcdctl/go.mod | 1 + etcdctl/go.sum | 31 ++++++++++ server/proxy/grpcproxy/kv.go | 2 +- tests/robustness/model/history.go | 11 ++-- 19 files changed, 357 insertions(+), 45 deletions(-) create mode 100644 client/v3/compare_bench_test.go create mode 100644 client/v3/compare_test.go diff --git a/cache/go.mod b/cache/go.mod index 82835773c9b4..f3932a1bef8a 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -16,6 +16,7 @@ require ( github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect diff --git a/cache/go.sum b/cache/go.sum index 2853e7dd4a9f..fc57c670648b 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -12,6 +12,8 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -24,6 +26,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajR github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -44,6 +48,8 @@ github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0t github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -64,12 +70,37 @@ go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/client/v3/compare.go b/client/v3/compare.go index 663fdb4d2064..022f1dfb5e57 100644 --- a/client/v3/compare.go +++ b/client/v3/compare.go @@ -15,6 +15,8 @@ package clientv3 import ( + gogoproto "github.com/gogo/protobuf/proto" + pb "go.etcd.io/etcd/api/v3/etcdserverpb" ) @@ -30,7 +32,25 @@ const ( CompareValue ) -type Cmp pb.Compare +type Cmp struct { + c *pb.Compare +} + +func FromCompare(c *pb.Compare) Cmp { + return Cmp{c: cloneCompare(c)} +} + +func (cmp *Cmp) GetCompare() *pb.Compare { + cmp.ensureCompare() + return cmp.c +} + +func (cmp *Cmp) Clone() Cmp { + if cmp.c == nil { + return Cmp{} + } + return Cmp{c: cloneCompare(cmp.c)} +} func Compare(cmp Cmp, result string, v any) Cmp { var r pb.Compare_CompareResult @@ -48,22 +68,24 @@ func Compare(cmp Cmp, result string, v any) Cmp { panic("Unknown result op") } - cmp.Result = r - switch cmp.Target { + cmp = cmp.Clone() + cmp.ensureCompare() + cmp.c.Result = r + switch cmp.c.Target { case pb.Compare_VALUE: val, ok := v.(string) if !ok { panic("bad compare value") } - cmp.TargetUnion = &pb.Compare_Value{Value: []byte(val)} + cmp.c.TargetUnion = &pb.Compare_Value{Value: []byte(val)} case pb.Compare_VERSION: - cmp.TargetUnion = &pb.Compare_Version{Version: mustInt64(v)} + cmp.c.TargetUnion = &pb.Compare_Version{Version: mustInt64(v)} case pb.Compare_CREATE: - cmp.TargetUnion = &pb.Compare_CreateRevision{CreateRevision: mustInt64(v)} + cmp.c.TargetUnion = &pb.Compare_CreateRevision{CreateRevision: mustInt64(v)} case pb.Compare_MOD: - cmp.TargetUnion = &pb.Compare_ModRevision{ModRevision: mustInt64(v)} + cmp.c.TargetUnion = &pb.Compare_ModRevision{ModRevision: mustInt64(v)} case pb.Compare_LEASE: - cmp.TargetUnion = &pb.Compare_Lease{Lease: mustInt64orLeaseID(v)} + cmp.c.TargetUnion = &pb.Compare_Lease{Lease: mustInt64orLeaseID(v)} default: panic("Unknown compare type") } @@ -71,53 +93,74 @@ func Compare(cmp Cmp, result string, v any) Cmp { } func Value(key string) Cmp { - return Cmp{Key: []byte(key), Target: pb.Compare_VALUE} + return Cmp{c: &pb.Compare{Key: []byte(key), Target: pb.Compare_VALUE}} } func Version(key string) Cmp { - return Cmp{Key: []byte(key), Target: pb.Compare_VERSION} + return Cmp{c: &pb.Compare{Key: []byte(key), Target: pb.Compare_VERSION}} } func CreateRevision(key string) Cmp { - return Cmp{Key: []byte(key), Target: pb.Compare_CREATE} + return Cmp{c: &pb.Compare{Key: []byte(key), Target: pb.Compare_CREATE}} } func ModRevision(key string) Cmp { - return Cmp{Key: []byte(key), Target: pb.Compare_MOD} + return Cmp{c: &pb.Compare{Key: []byte(key), Target: pb.Compare_MOD}} } // LeaseValue compares a key's LeaseID to a value of your choosing. The empty // LeaseID is 0, otherwise known as `NoLease`. func LeaseValue(key string) Cmp { - return Cmp{Key: []byte(key), Target: pb.Compare_LEASE} + return Cmp{c: &pb.Compare{Key: []byte(key), Target: pb.Compare_LEASE}} +} + +func (cmp *Cmp) ensureCompare() { + if cmp.c == nil { + cmp.c = &pb.Compare{} + } } // KeyBytes returns the byte slice holding with the comparison key. -func (cmp *Cmp) KeyBytes() []byte { return cmp.Key } +func (cmp *Cmp) KeyBytes() []byte { + if cmp == nil { + return nil + } + return cmp.c.GetKey() +} // WithKeyBytes sets the byte slice for the comparison key. -func (cmp *Cmp) WithKeyBytes(key []byte) { cmp.Key = key } +func (cmp *Cmp) WithKeyBytes(key []byte) { + cmp.ensureCompare() + cmp.c.Key = key +} // ValueBytes returns the byte slice holding the comparison value, if any. func (cmp *Cmp) ValueBytes() []byte { - if tu, ok := cmp.TargetUnion.(*pb.Compare_Value); ok { + if tu, ok := cmp.GetCompare().GetTargetUnion().(*pb.Compare_Value); ok { return tu.Value } return nil } // WithValueBytes sets the byte slice for the comparison's value. -func (cmp *Cmp) WithValueBytes(v []byte) { cmp.TargetUnion.(*pb.Compare_Value).Value = v } +func (cmp *Cmp) WithValueBytes(v []byte) { + cmp.ensureCompare() + cmp.c.TargetUnion.(*pb.Compare_Value).Value = v +} // WithRange sets the comparison to scan the range [key, end). func (cmp Cmp) WithRange(end string) Cmp { - cmp.RangeEnd = []byte(end) + cmp = cmp.Clone() + cmp.ensureCompare() + cmp.c.RangeEnd = []byte(end) return cmp } // WithPrefix sets the comparison to scan all keys prefixed by the key. func (cmp Cmp) WithPrefix() Cmp { - cmp.RangeEnd = getPrefix(cmp.Key) + cmp = cmp.Clone() + cmp.ensureCompare() + cmp.c.RangeEnd = getPrefix(cmp.c.GetKey()) return cmp } @@ -140,3 +183,12 @@ func mustInt64orLeaseID(val any) int64 { } return mustInt64(val) } + +// TODO: use the official protobuf clone path after client/v3 stops using +// gogo-generated messages. +func cloneCompare(c *pb.Compare) *pb.Compare { + if c == nil { + return nil + } + return gogoproto.Clone(c).(*pb.Compare) +} diff --git a/client/v3/compare_bench_test.go b/client/v3/compare_bench_test.go new file mode 100644 index 000000000000..970dc9b24755 --- /dev/null +++ b/client/v3/compare_bench_test.go @@ -0,0 +1,80 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package clientv3 + +import ( + "context" + "testing" + + pb "go.etcd.io/etcd/api/v3/etcdserverpb" +) + +var ( + benchmarkTxnRequestSink *pb.TxnRequest + benchmarkTxnSink *txn +) + +func BenchmarkTxnIfSingleCmp(b *testing.B) { + const key = "/registry/pods/default/pod-0" + const expectedRevision int64 = 123 + + b.ReportAllocs() + for i := 0; i < b.N; i++ { + txn := (&txn{ctx: context.Background()}).If( + Compare(ModRevision(key), "=", expectedRevision), + ).(*txn) + benchmarkTxnSink = txn + } +} + +func BenchmarkKubernetesOptimisticPutTxnBuild(b *testing.B) { + const ( + key = "/registry/pods/default/pod-0" + value = "value" + expectedRevision = int64(123) + leaseID = LeaseID(456) + ) + + b.ReportAllocs() + for i := 0; i < b.N; i++ { + txn := (&txn{ctx: context.Background()}).If( + Compare(ModRevision(key), "=", expectedRevision), + ).Then( + OpPut(key, value, WithLease(leaseID)), + ).Else( + OpGet(key), + ).(*txn) + benchmarkTxnRequestSink = &pb.TxnRequest{Compare: txn.cmps, Success: txn.sus, Failure: txn.fas} + } +} + +func BenchmarkOpTxnSingleCmpToTxnRequest(b *testing.B) { + const ( + key = "/registry/pods/default/pod-0" + value = "value" + expectedRevision = int64(123) + leaseID = LeaseID(456) + ) + + b.ReportAllocs() + for i := 0; i < b.N; i++ { + op := OpTxn( + []Cmp{Compare(ModRevision(key), "=", expectedRevision)}, + []Op{OpPut(key, value, WithLease(leaseID))}, + []Op{OpGet(key)}, + ) + benchmarkTxnRequestSink = op.toTxnRequest() + } +} diff --git a/client/v3/compare_test.go b/client/v3/compare_test.go new file mode 100644 index 000000000000..11cd05f45367 --- /dev/null +++ b/client/v3/compare_test.go @@ -0,0 +1,78 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package clientv3 + +import ( + "testing" + + pb "go.etcd.io/etcd/api/v3/etcdserverpb" +) + +func TestCompareClonesInput(t *testing.T) { + base := ModRevision("foo") + cmp := Compare(base, "=", 7) + + base.WithKeyBytes([]byte("bar")) + + if got := string(cmp.KeyBytes()); got != "foo" { + t.Fatalf("cmp key = %q, want %q", got, "foo") + } + if got := cmp.GetCompare().GetModRevision(); got != 7 { + t.Fatalf("cmp mod revision = %d, want %d", got, 7) + } +} + +func TestWithRangeClonesInput(t *testing.T) { + base := ModRevision("foo") + ranged := base.WithRange("zoo") + + if got := string(base.GetCompare().GetRangeEnd()); got != "" { + t.Fatalf("base range end = %q, want empty", got) + } + if got := string(ranged.GetCompare().GetRangeEnd()); got != "zoo" { + t.Fatalf("ranged range end = %q, want %q", got, "zoo") + } +} + +func TestTxnIfClonesCmp(t *testing.T) { + cmp := Compare(ModRevision("foo"), "=", 7) + txn := (&txn{}).If(cmp).(*txn) + + cmp.WithKeyBytes([]byte("bar")) + cmp.GetCompare().Result = pb.Compare_NOT_EQUAL + + if got := string(txn.cmps[0].GetKey()); got != "foo" { + t.Fatalf("txn compare key = %q, want %q", got, "foo") + } + if got := txn.cmps[0].GetResult(); got != pb.Compare_EQUAL { + t.Fatalf("txn compare result = %v, want %v", got, pb.Compare_EQUAL) + } +} + +func TestOpTxnClonesCmps(t *testing.T) { + cmp := Compare(ModRevision("foo"), "=", 7) + op := OpTxn([]Cmp{cmp}, nil, nil) + + cmp.WithKeyBytes([]byte("bar")) + cmp.GetCompare().Result = pb.Compare_NOT_EQUAL + + req := op.toTxnRequest() + if got := string(req.Compare[0].GetKey()); got != "foo" { + t.Fatalf("txn request compare key = %q, want %q", got, "foo") + } + if got := req.Compare[0].GetResult(); got != pb.Compare_EQUAL { + t.Fatalf("txn request compare result = %v, want %v", got, pb.Compare_EQUAL) + } +} diff --git a/client/v3/go.mod b/client/v3/go.mod index 33c1ec81b6a0..f56fee59f2eb 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -7,6 +7,7 @@ toolchain go1.26.2 require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 + github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/prometheus/client_golang v1.23.2 diff --git a/client/v3/go.sum b/client/v3/go.sum index ec4a90602ada..6c499f4e5467 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -14,6 +14,8 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -26,6 +28,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajR github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -50,6 +54,8 @@ github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0t github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -72,12 +78,37 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/client/v3/leasing/cache.go b/client/v3/leasing/cache.go index 214ee2fc196d..9e78b78fa196 100644 --- a/client/v3/leasing/cache.go +++ b/client/v3/leasing/cache.go @@ -267,10 +267,10 @@ func (lc *leaseCache) clearOldRevokes(ctx context.Context) { func (lc *leaseCache) evalCmp(cmps []v3.Cmp) (cmpVal bool, ok bool) { for _, cmp := range cmps { - if len(cmp.RangeEnd) > 0 { + if len(cmp.GetCompare().GetRangeEnd()) > 0 { return false, false } - lk := lc.entries[string(cmp.Key)] + lk := lc.entries[string(cmp.KeyBytes())] if lk == nil { return false, false } diff --git a/client/v3/leasing/kv.go b/client/v3/leasing/kv.go index ec846cd6c47c..febe18ea6efd 100644 --- a/client/v3/leasing/kv.go +++ b/client/v3/leasing/kv.go @@ -24,7 +24,6 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" v3 "go.etcd.io/etcd/client/v3" @@ -268,7 +267,7 @@ func (lkv *leasingKV) acquire(ctx context.Context, key string, op v3.Op) (*v3.Tx if err := lkv.waitSession(ctx); err != nil { return nil, err } - lcmp := v3.Cmp{Key: []byte(key), Target: pb.Compare_LEASE} + lcmp := v3.LeaseValue(key) resp, err := lkv.kv.Txn(ctx).If( v3.Compare(v3.CreateRevision(lkv.pfx+key), "=", 0), v3.Compare(lcmp, "=", 0)). diff --git a/client/v3/leasing/txn.go b/client/v3/leasing/txn.go index 30c6aa2e4d77..ae7528d4595f 100644 --- a/client/v3/leasing/txn.go +++ b/client/v3/leasing/txn.go @@ -206,7 +206,7 @@ func (txn *txnLeasing) serverTxn() (*v3.TxnResponse, error) { resp, err := txn.lkv.kv.Txn(txn.ctx).If(cmps...).Then(userTxn).Else(fbOps...).Commit() if err != nil { for _, cmp := range cmps { - txn.lkv.leases.Evict(strings.TrimPrefix(string(cmp.Key), txn.lkv.pfx)) + txn.lkv.leases.Evict(strings.TrimPrefix(string(cmp.KeyBytes()), txn.lkv.pfx)) } return nil, err } diff --git a/client/v3/leasing/util.go b/client/v3/leasing/util.go index b6a520f03f0c..405a2a090b47 100644 --- a/client/v3/leasing/util.go +++ b/client/v3/leasing/util.go @@ -36,26 +36,27 @@ func evalCmp(resp *v3.GetResponse, tcmp v3.Cmp) bool { var result int if len(resp.Kvs) != 0 { kv := resp.Kvs[0] - switch tcmp.Target { + cmp := tcmp.GetCompare() + switch cmp.GetTarget() { case v3pb.Compare_VALUE: - if tv, _ := tcmp.TargetUnion.(*v3pb.Compare_Value); tv != nil { + if tv, _ := cmp.GetTargetUnion().(*v3pb.Compare_Value); tv != nil { result = bytes.Compare(kv.Value, tv.Value) } case v3pb.Compare_CREATE: - if tv, _ := tcmp.TargetUnion.(*v3pb.Compare_CreateRevision); tv != nil { + if tv, _ := cmp.GetTargetUnion().(*v3pb.Compare_CreateRevision); tv != nil { result = compareInt64(kv.CreateRevision, tv.CreateRevision) } case v3pb.Compare_MOD: - if tv, _ := tcmp.TargetUnion.(*v3pb.Compare_ModRevision); tv != nil { + if tv, _ := cmp.GetTargetUnion().(*v3pb.Compare_ModRevision); tv != nil { result = compareInt64(kv.ModRevision, tv.ModRevision) } case v3pb.Compare_VERSION: - if tv, _ := tcmp.TargetUnion.(*v3pb.Compare_Version); tv != nil { + if tv, _ := cmp.GetTargetUnion().(*v3pb.Compare_Version); tv != nil { result = compareInt64(kv.Version, tv.Version) } } } - switch tcmp.Result { + switch tcmp.GetCompare().GetResult() { case v3pb.Compare_EQUAL: return result == 0 case v3pb.Compare_NOT_EQUAL: diff --git a/client/v3/namespace/kv.go b/client/v3/namespace/kv.go index 42fd93db63bd..3b1cebe4ebc8 100644 --- a/client/v3/namespace/kv.go +++ b/client/v3/namespace/kv.go @@ -199,11 +199,11 @@ func (kv *kvPrefix) prefixInterval(key, end []byte) (pfxKey []byte, pfxEnd []byt func (kv *kvPrefix) prefixCmps(cs []clientv3.Cmp) []clientv3.Cmp { newCmps := make([]clientv3.Cmp, len(cs)) for i := range cs { - newCmps[i] = cs[i] - pfxKey, endKey := kv.prefixInterval(cs[i].KeyBytes(), cs[i].RangeEnd) + newCmps[i] = cs[i].Clone() + pfxKey, endKey := kv.prefixInterval(cs[i].KeyBytes(), cs[i].GetCompare().GetRangeEnd()) newCmps[i].WithKeyBytes(pfxKey) - if len(cs[i].RangeEnd) != 0 { - newCmps[i].RangeEnd = endKey + if len(cs[i].GetCompare().GetRangeEnd()) != 0 { + newCmps[i].GetCompare().RangeEnd = endKey } } return newCmps diff --git a/client/v3/op.go b/client/v3/op.go index 33e2c024f892..2dbbbaf48c32 100644 --- a/client/v3/op.go +++ b/client/v3/op.go @@ -208,7 +208,8 @@ func (op Op) toTxnRequest() *pb.TxnRequest { } cmps := make([]*pb.Compare, len(op.cmps)) for i := range op.cmps { - cmps[i] = (*pb.Compare)(&op.cmps[i]) + cmp := op.cmps[i].Clone() + cmps[i] = cmp.GetCompare() } return &pb.TxnRequest{Compare: cmps, Success: thenOps, Failure: elseOps} } @@ -326,7 +327,11 @@ func OpPut(key, val string, opts ...OpOption) Op { // OpTxn returns "txn" operation based on given transaction conditions. func OpTxn(cmps []Cmp, thenOps []Op, elseOps []Op) Op { - return Op{t: tTxn, cmps: cmps, thenOps: thenOps, elseOps: elseOps} + clonedCmps := make([]Cmp, len(cmps)) + for i := range cmps { + clonedCmps[i] = cmps[i].Clone() + } + return Op{t: tTxn, cmps: clonedCmps, thenOps: thenOps, elseOps: elseOps} } func OpWatch(key string, opts ...OpOption) Op { diff --git a/client/v3/txn.go b/client/v3/txn.go index 0a57332ac789..152016b34ac9 100644 --- a/client/v3/txn.go +++ b/client/v3/txn.go @@ -89,7 +89,8 @@ func (txn *txn) If(cs ...Cmp) Txn { txn.cif = true for i := range cs { - txn.cmps = append(txn.cmps, (*pb.Compare)(&cs[i])) + cmp := cs[i].Clone() + txn.cmps = append(txn.cmps, cmp.GetCompare()) } return txn diff --git a/etcdctl/ctlv3/command/txn_command.go b/etcdctl/ctlv3/command/txn_command.go index df746a2289fa..d0410999bc39 100644 --- a/etcdctl/ctlv3/command/txn_command.go +++ b/etcdctl/ctlv3/command/txn_command.go @@ -24,7 +24,6 @@ import ( "github.com/spf13/cobra" - pb "go.etcd.io/etcd/api/v3/etcdserverpb" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/pkg/v3/cobrautl" ) @@ -222,7 +221,7 @@ func ParseCompare(line string) (*clientv3.Cmp, error) { case "val", "value": cmp = clientv3.Compare(clientv3.Value(key), op, val) case "lease": - cmp = clientv3.Compare(clientv3.Cmp{Target: pb.Compare_LEASE}, op, val) + cmp = clientv3.Compare(clientv3.LeaseValue(key), op, val) default: return nil, fmt.Errorf("malformed comparison: %s (unknown target %s)", line, target) } diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 35f70a90ff7f..928943592c69 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -30,6 +30,7 @@ require ( github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.19.0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index e66c39ce8100..6a5a09604424 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -27,6 +27,8 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -41,6 +43,8 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF2 github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -81,6 +85,8 @@ github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -102,15 +108,40 @@ go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/server/proxy/grpcproxy/kv.go b/server/proxy/grpcproxy/kv.go index 610e998426b2..05efb49bcd53 100644 --- a/server/proxy/grpcproxy/kv.go +++ b/server/proxy/grpcproxy/kv.go @@ -230,7 +230,7 @@ func TxnRequestToOp(r *pb.TxnRequest) clientv3.Op { thenops := make([]clientv3.Op, len(r.Success)) elseops := make([]clientv3.Op, len(r.Failure)) for i := range r.Compare { - cmps[i] = (clientv3.Cmp)(*r.Compare[i]) + cmps[i] = clientv3.FromCompare(r.Compare[i]) } for i := range r.Success { thenops[i] = requestOpToOp(r.Success[i]) diff --git a/tests/robustness/model/history.go b/tests/robustness/model/history.go index 47da7a3baac3..aa62eed9cbab 100644 --- a/tests/robustness/model/history.go +++ b/tests/robustness/model/history.go @@ -204,15 +204,16 @@ func (h *AppendableHistory) appendSuccessful(request EtcdRequest, start, end tim } func toEtcdCondition(cmp clientv3.Cmp) (cond EtcdCondition) { + compare := cmp.GetCompare() switch { - case cmp.Result == etcdserverpb.Compare_EQUAL && cmp.Target == etcdserverpb.Compare_MOD: + case compare.GetResult() == etcdserverpb.Compare_EQUAL && compare.GetTarget() == etcdserverpb.Compare_MOD: cond.Key = string(cmp.KeyBytes()) - cond.ExpectedRevision = cmp.TargetUnion.(*etcdserverpb.Compare_ModRevision).ModRevision - case cmp.Result == etcdserverpb.Compare_EQUAL && cmp.Target == etcdserverpb.Compare_VERSION: - cond.ExpectedVersion = cmp.TargetUnion.(*etcdserverpb.Compare_Version).Version + cond.ExpectedRevision = compare.GetTargetUnion().(*etcdserverpb.Compare_ModRevision).ModRevision + case compare.GetResult() == etcdserverpb.Compare_EQUAL && compare.GetTarget() == etcdserverpb.Compare_VERSION: + cond.ExpectedVersion = compare.GetTargetUnion().(*etcdserverpb.Compare_Version).Version cond.Key = string(cmp.KeyBytes()) default: - panic(fmt.Sprintf("Compare not supported, target: %q, result: %q", cmp.Target, cmp.Result)) + panic(fmt.Sprintf("Compare not supported, target: %q, result: %q", compare.GetTarget(), compare.GetResult())) } return cond } From 475fa75f1677fa8c76f23d93a395079b6e31de74 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 1 May 2026 13:02:01 +0200 Subject: [PATCH 0959/1068] Remove etcd diagnostic tool Signed-off-by: Marek Siarkowicz --- etcdctl/README.md | 36 --- .../command/diagnosis/engine/diagnosis.go | 40 --- .../command/diagnosis/engine/intf/plugin.go | 31 -- .../examples/etcd_diagnosis_report.json | 181 ------------ .../diagnosis/plugins/common/checker.go | 32 --- .../diagnosis/plugins/common/client.go | 40 --- .../diagnosis/plugins/epstatus/plugin.go | 187 ------------ .../diagnosis/plugins/membership/plugin.go | 118 -------- .../diagnosis/plugins/metrics/plugin.go | 178 ------------ .../command/diagnosis/plugins/read/plugin.go | 145 ---------- etcdctl/ctlv3/command/diagnosis_command.go | 105 ------- etcdctl/ctlv3/ctl.go | 1 - etcdutl/ctl.go | 3 - etcdutl/etcdutl/bucket_command.go | 266 ------------------ tools/etcd-dump-db/README.md | 3 - 15 files changed, 1366 deletions(-) delete mode 100644 etcdctl/ctlv3/command/diagnosis/engine/diagnosis.go delete mode 100644 etcdctl/ctlv3/command/diagnosis/engine/intf/plugin.go delete mode 100644 etcdctl/ctlv3/command/diagnosis/examples/etcd_diagnosis_report.json delete mode 100644 etcdctl/ctlv3/command/diagnosis/plugins/common/checker.go delete mode 100644 etcdctl/ctlv3/command/diagnosis/plugins/common/client.go delete mode 100644 etcdctl/ctlv3/command/diagnosis/plugins/epstatus/plugin.go delete mode 100644 etcdctl/ctlv3/command/diagnosis/plugins/membership/plugin.go delete mode 100644 etcdctl/ctlv3/command/diagnosis/plugins/metrics/plugin.go delete mode 100644 etcdctl/ctlv3/command/diagnosis/plugins/read/plugin.go delete mode 100644 etcdctl/ctlv3/command/diagnosis_command.go delete mode 100644 etcdutl/etcdutl/bucket_command.go diff --git a/etcdctl/README.md b/etcdctl/README.md index e8a03e6153a3..460f3f857e1f 100644 --- a/etcdctl/README.md +++ b/etcdctl/README.md @@ -1139,42 +1139,6 @@ DOWNGRADE CANCEL cancels the ongoing downgrade action to cluster. Downgrade cancel success, cluster version 3.5 ``` -### DIAGNOSIS - -`etcdctl diagnosis [flags]` - Collects and analyzes troubleshooting data from a running etcd cluster. - -The `diagnosis` command gathers a concise set of diagnostic details from each cluster member by performing several checks, including: - - * **Membership checks**: Verifies the cluster membership information. - * **Endpoint status**: Retrieves the status of each endpoint. - * **Serializable and linearizable reads**: Performs read operations to validate data consistency. - * **Metrics snapshot**: Collects a small snapshot of key metrics. - -#### Flags - -- `--cluster`: use all endpoints discovered from the cluster member list. -- `--etcd-storage-quota-bytes`: expected etcd storage quota in bytes (value passed to etcd with `--quota-backend-bytes`). -- `-o, --output`: optional file path to write the JSON report; by default the report is written to stdout. Logs are written to stderr. - -Global flags (like `--endpoints`, TLS, auth, and timeouts) are shared with other `etcdctl` commands. See `etcdctl options` for the full list. - -#### Examples - -To perform analysis of a running etcd cluster, you can use the following command. This will collect and analyze data from all specified endpoints. - -```bash -etcdctl diagnosis --endpoints=https://10.0.1.10:2379,https://10.0.1.11:2379,https://10.0.1.12:2379 \ - --cacert ./ca.crt --key ./etcd-diagnosis.key --cert ./etcd-diagnosis.crt - -# Use cluster-discovered endpoints -etcdctl diagnosis --cluster - -# Write report to a file (logs still go to stderr) -etcdctl diagnosis -o report.json -``` - - -Example output: see [ctlv3/command/diagnosis/examples/etcd_diagnosis_report.json](ctlv3/command/diagnosis/examples/etcd_diagnosis_report.json) ## Concurrency commands diff --git a/etcdctl/ctlv3/command/diagnosis/engine/diagnosis.go b/etcdctl/ctlv3/command/diagnosis/engine/diagnosis.go deleted file mode 100644 index 48c4c78ecfc6..000000000000 --- a/etcdctl/ctlv3/command/diagnosis/engine/diagnosis.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2025 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package engine - -import ( - "encoding/json" - - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" -) - -type report struct { - Input any `json:"input,omitempty"` - Results []any `json:"results,omitempty"` -} - -// Diagnose runs all provided plugins and returns a JSON report. -// It logs plugin progress and individual results to stderr. -func Diagnose(input any, plugins []intf.Plugin) ([]byte, error) { - rp := report{ - Input: input, - } - for _, plugin := range plugins { - result := plugin.Diagnose() - rp.Results = append(rp.Results, result) - } - - return json.MarshalIndent(rp, "", "\t") -} diff --git a/etcdctl/ctlv3/command/diagnosis/engine/intf/plugin.go b/etcdctl/ctlv3/command/diagnosis/engine/intf/plugin.go deleted file mode 100644 index 65b3b6d95a39..000000000000 --- a/etcdctl/ctlv3/command/diagnosis/engine/intf/plugin.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2025 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package intf - -type Plugin interface { - // Name returns the name of the plugin - Name() string - // Diagnose performs diagnosis and returns the result. If it fails - // to do the diagnosis for any reason, it gets the detailed reason - // included in the diagnosis result. - Diagnose() any -} - -// FailedResult is the result returned by a plugin if it fails to -// perform the diagnosis for any reason. -type FailedResult struct { - Name string `json:"name"` - Reason string `json:"reason"` -} diff --git a/etcdctl/ctlv3/command/diagnosis/examples/etcd_diagnosis_report.json b/etcdctl/ctlv3/command/diagnosis/examples/etcd_diagnosis_report.json deleted file mode 100644 index 4eeb2030f93d..000000000000 --- a/etcdctl/ctlv3/command/diagnosis/examples/etcd_diagnosis_report.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "input": { - "endpoints": [ - "http://127.0.0.1:2379" - ], - "useClusterEndpoints": true, - "dial-timeout": 2000000000, - "command-timeout": 5000000000, - "keep-alive-time": 2000000000, - "keep-alive-timeout": 5000000000, - "insecure": true, - "insecure-discovery": true, - "db-quota-bytes": 2147483648 - }, - "results": [ - { - "name": "membershipChecker", - "memberList": { - "header": { - "cluster_id": 17237436991929493444, - "member_id": 9372538179322589801, - "raft_term": 2 - }, - "members": [ - { - "ID": 9372538179322589801, - "name": "infra1", - "peerURLs": [ - "http://127.0.0.1:12380" - ], - "clientURLs": [ - "http://127.0.0.1:2379" - ] - }, - { - "ID": 10501334649042878790, - "name": "infra2", - "peerURLs": [ - "http://127.0.0.1:22380" - ], - "clientURLs": [ - "http://127.0.0.1:22379" - ] - }, - { - "ID": 18249187646912138824, - "name": "infra3", - "peerURLs": [ - "http://127.0.0.1:32380" - ], - "clientURLs": [ - "http://127.0.0.1:32379" - ] - } - ] - } - }, - { - "name": "epStatusChecker", - "summary": [ - "Successful" - ], - "epStatusList": [ - { - "endpoint": "http://127.0.0.1:2379", - "epStatus": { - "header": { - "cluster_id": 17237436991929493444, - "member_id": 9372538179322589801, - "revision": 1, - "raft_term": 2 - }, - "version": "3.5.9", - "dbSize": 98304, - "leader": 18249187646912138824, - "raftIndex": 8, - "raftTerm": 2, - "raftAppliedIndex": 8, - "dbSizeInUse": 98304 - } - }, - { - "endpoint": "http://127.0.0.1:22379", - "epStatus": { - "header": { - "cluster_id": 17237436991929493444, - "member_id": 10501334649042878790, - "revision": 1, - "raft_term": 2 - }, - "version": "3.5.9", - "dbSize": 98304, - "leader": 18249187646912138824, - "raftIndex": 8, - "raftTerm": 2, - "raftAppliedIndex": 8, - "dbSizeInUse": 98304 - } - }, - { - "endpoint": "http://127.0.0.1:32379", - "epStatus": { - "header": { - "cluster_id": 17237436991929493444, - "member_id": 18249187646912138824, - "revision": 1, - "raft_term": 2 - }, - "version": "3.5.9", - "dbSize": 98304, - "leader": 18249187646912138824, - "raftIndex": 8, - "raftTerm": 2, - "raftAppliedIndex": 8, - "dbSizeInUse": 98304 - } - } - ] - }, - { - "name": "serializableReadChecker", - "summary": "Successful", - "readResponses": [ - { - "endpoint": "http://127.0.0.1:2379", - "took": "686.5µs" - }, - { - "endpoint": "http://127.0.0.1:22379", - "took": "1.129291ms" - }, - { - "endpoint": "http://127.0.0.1:32379", - "took": "1.034625ms" - } - ] - }, - { - "name": "linearizableReadChecker", - "summary": "Successful", - "readResponses": [ - { - "endpoint": "http://127.0.0.1:2379", - "took": "1.286333ms" - }, - { - "endpoint": "http://127.0.0.1:22379", - "took": "890.417µs" - }, - { - "endpoint": "http://127.0.0.1:32379", - "took": "1.257791ms" - } - ] - }, - { - "name": "metricsChecker", - "summary": [ - "Successful" - ], - "epMetricsList": [ - { - "endpoint": "http://127.0.0.1:2379", - "took": "3.752625ms", - "epMetrics": { - "etcd_disk_backend_commit_duration_seconds_bucket": [ - "etcd_disk_backend_commit_duration_seconds_bucket{le=\"0.001\"} 0" - ], - "etcd_disk_wal_fsync_duration_seconds_bucket": [ - "etcd_disk_wal_fsync_duration_seconds_bucket{le=\"0.001\"} 0" - ], - "etcd_network_peer_round_trip_time_seconds_bucket": [ - "etcd_network_peer_round_trip_time_seconds_bucket{To=\"91bc3c398fb3c146\",le=\"0.0001\"} 2" - ], - "process_resident_memory_bytes": null - } - } - ] - } - ] -} diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/common/checker.go b/etcdctl/ctlv3/command/diagnosis/plugins/common/checker.go deleted file mode 100644 index 8818fb37f47b..000000000000 --- a/etcdctl/ctlv3/command/diagnosis/plugins/common/checker.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2025 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package common - -import ( - "time" - - clientv3 "go.etcd.io/etcd/client/v3" -) - -// Checker carries shared configuration for diagnosis plugins. -// It embeds generic options such as the etcd client configuration, -// resolved endpoints, and command timeout. -type Checker struct { - Cfg *clientv3.ConfigSpec - Endpoints []string - CommandTimeout time.Duration - DbQuotaBytes int64 - Name string -} diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/common/client.go b/etcdctl/ctlv3/command/diagnosis/plugins/common/client.go deleted file mode 100644 index 76c4c4db05e8..000000000000 --- a/etcdctl/ctlv3/command/diagnosis/plugins/common/client.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2025 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package common - -import ( - "go.uber.org/zap" - - "go.etcd.io/etcd/client/pkg/v3/logutil" - clientv3 "go.etcd.io/etcd/client/v3" -) - -// NewClient creates an etcd client from the given configuration spec. -func NewClient(cfg *clientv3.ConfigSpec) (*clientv3.Client, error) { - lg, _ := logutil.CreateDefaultZapLogger(zap.InfoLevel) - cliCfg, err := clientv3.NewClientConfig(cfg, lg) - if err != nil { - return nil, err - } - return clientv3.New(*cliCfg) -} - -// ConfigWithEndpoint returns a shallow copy of cfg with Endpoints set to the -// provided single endpoint. -func ConfigWithEndpoint(cfg *clientv3.ConfigSpec, ep string) *clientv3.ConfigSpec { - c := *cfg - c.Endpoints = []string{ep} - return &c -} diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/epstatus/plugin.go b/etcdctl/ctlv3/command/diagnosis/plugins/epstatus/plugin.go deleted file mode 100644 index e15b8c3efb88..000000000000 --- a/etcdctl/ctlv3/command/diagnosis/plugins/epstatus/plugin.go +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright 2025 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package epstatus - -import ( - "context" - "fmt" - "log" - "time" - - clientv3 "go.etcd.io/etcd/client/v3" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/common" -) - -type epStatusChecker struct { - common.Checker -} - -type epStatus struct { - Endpoint string `json:"endpoint,omitempty"` - EpStatus *clientv3.StatusResponse `json:"epStatus,omitempty"` -} - -type checkResult struct { - Name string `json:"name,omitempty"` - Summary []string `json:"summary,omitempty"` - EpStatusList []epStatus `json:"epStatusList,omitempty"` -} - -func NewPlugin(cfg *clientv3.ConfigSpec, eps []string, timeout time.Duration, dbQuota int64) intf.Plugin { - return &epStatusChecker{ - Checker: common.Checker{ - Cfg: cfg, - Endpoints: eps, - CommandTimeout: timeout, - DbQuotaBytes: dbQuota, - Name: "epStatusChecker", - }, - } -} - -func (ck *epStatusChecker) Name() string { - return ck.Checker.Name -} - -func (ck *epStatusChecker) Diagnose() (result any) { - var err error - eps := ck.Endpoints - - defer func() { - if err != nil { - result = &intf.FailedResult{ - Name: ck.Name(), - Reason: err.Error(), - } - } - }() - - var ( - maxRetries = 3 - retries = 0 - shouldRetry = true - - chkResult = initCheckResult(ck.Name(), len(eps)) - ) - - for { - for i, ep := range eps { - chkResult.EpStatusList[i].Endpoint = ep - - cfg := common.ConfigWithEndpoint(ck.Cfg, ep) - c, err := common.NewClient(cfg) - if err != nil { - appendSummary(&chkResult, "Failed to create client for %q: %v", ep, err) - continue - } - ctx, cancel := context.WithTimeout(context.Background(), ck.CommandTimeout) - chkResult.EpStatusList[i].EpStatus, err = c.Status(ctx, ep) - cancel() - c.Close() - if err != nil { - appendSummary(&chkResult, "Failed to get endpoint status from %q: %v", ep, err) - continue - } - - if len(chkResult.EpStatusList[i].EpStatus.Errors) > 0 { - appendSummary(&chkResult, "Detected errors in endpoint %q: %v\n", ep, chkResult.EpStatusList[i].EpStatus.Errors) - shouldRetry = false - continue - } - - if i > 0 { - if !compareHardInfo(chkResult.EpStatusList[0].EpStatus, chkResult.EpStatusList[i].EpStatus) { - appendSummary(&chkResult, "Detected inconsistent hard endpoint info between %q and %q\n", eps[0], eps[i]) - shouldRetry = false - } - - if !shouldRetry { - continue - } - - if !compareSoftInfo(chkResult.EpStatusList[0].EpStatus, chkResult.EpStatusList[i].EpStatus) { - appendSummary(&chkResult, "Detected inconsistent soft endpoint info between %q and %q\n", eps[0], eps[i]) - } - } - } - - retries++ - - if len(chkResult.Summary) == 0 || !shouldRetry || retries >= maxRetries { - break - } - - chkResult = initCheckResult(ck.Name(), len(eps)) - log.Printf("Retrying checking endpoint status: %d/%d\n", retries, maxRetries) - time.Sleep(time.Second) - } - - checkDBSize(&chkResult, ck.DbQuotaBytes) - - if len(chkResult.Summary) == 0 { - chkResult.Summary = []string{"Successful"} - } - - result = chkResult - return result -} - -func initCheckResult(name string, epCount int) checkResult { - return checkResult{ - Name: name, - Summary: []string{}, - EpStatusList: make([]epStatus, epCount), - } -} - -func appendSummary(chkResult *checkResult, format string, v ...any) { - errMsg := fmt.Sprintf(format, v...) - log.Println(errMsg) - chkResult.Summary = append(chkResult.Summary, errMsg) -} - -func compareHardInfo(s1, s2 *clientv3.StatusResponse) bool { - if s1 == nil || s2 == nil { - return false - } - return s1.Header.ClusterId == s2.Header.ClusterId && - s1.Version == s2.Version && - s1.StorageVersion == s2.StorageVersion -} - -func compareSoftInfo(s1, s2 *clientv3.StatusResponse) bool { - if s1 == nil || s2 == nil { - return false - } - return s1.Header.Revision == s2.Header.Revision && - s1.RaftTerm == s2.RaftTerm && - s1.RaftIndex == s2.RaftIndex && - s1.RaftAppliedIndex == s2.RaftAppliedIndex && - s1.Leader == s2.Leader -} - -func checkDBSize(chkResult *checkResult, dbQuota int64) { - for _, sts := range chkResult.EpStatusList { - if sts.EpStatus == nil { - continue - } - - freeSize := sts.EpStatus.DbSize - sts.EpStatus.DbSizeInUse - if freeSize > sts.EpStatus.DbSizeInUse && freeSize > 1_000_000_000 /* about 1GB */ || sts.EpStatus.DbSize >= dbQuota*80/100 { - appendSummary(chkResult, "Detected large amount of db [free] space for endpoint %q, dbQuota: %d, dbSize: %d, dbSizeInUse: %d, dbSizeFree: %d", sts.Endpoint, dbQuota, sts.EpStatus.DbSize, sts.EpStatus.DbSizeInUse, freeSize) - } - } -} diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/membership/plugin.go b/etcdctl/ctlv3/command/diagnosis/plugins/membership/plugin.go deleted file mode 100644 index 1b651284bd00..000000000000 --- a/etcdctl/ctlv3/command/diagnosis/plugins/membership/plugin.go +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2025 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package membership - -import ( - "context" - "log" - "reflect" - "time" - - clientv3 "go.etcd.io/etcd/client/v3" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/common" -) - -type membershipChecker struct { - common.Checker -} - -type checkResult struct { - Name string `json:"name,omitempty"` - Summary string `json:"summary,omitempty"` - MemberList *clientv3.MemberListResponse `json:"memberList,omitempty"` - AllMemberLists []*clientv3.MemberListResponse `json:"allMemberLists,omitempty"` -} - -func NewPlugin(cfg *clientv3.ConfigSpec, eps []string, timeout time.Duration) intf.Plugin { - return &membershipChecker{ - Checker: common.Checker{ - Cfg: cfg, - Endpoints: eps, - CommandTimeout: timeout, - Name: "membershipChecker", - }, - } -} - -func (ck *membershipChecker) Name() string { - return ck.Checker.Name -} - -func (ck *membershipChecker) Diagnose() (result any) { - var err error - eps := ck.Endpoints - - defer func() { - if err != nil { - result = &intf.FailedResult{ - Name: ck.Name(), - Reason: err.Error(), - } - } - }() - - memberLists := make([]*clientv3.MemberListResponse, len(eps)) - detectedInconsistency := false - for i, ep := range eps { - cfg := common.ConfigWithEndpoint(ck.Cfg, ep) - c, err := common.NewClient(cfg) - if err != nil { - detectedInconsistency = true - log.Printf("Failed to create client for %q: %v\n", ep, err) - continue - } - ctx, cancel := context.WithTimeout(context.Background(), ck.CommandTimeout) - memberLists[i], err = c.MemberList(ctx, clientv3.WithSerializable()) - cancel() - c.Close() - if err != nil { - detectedInconsistency = true - log.Printf("Failed to get member list from %q: %v\n", ep, err) - continue - } - - if i > 0 { - if !compareMembers(memberLists[0], memberLists[i]) { - detectedInconsistency = true - log.Printf("Detected inconsistent member list between %q and %q\n", eps[0], eps[i]) - } - } - } - - if detectedInconsistency { - result = checkResult{ - Name: ck.Name(), - Summary: "Detected inconsistent member list between different members", - AllMemberLists: memberLists, - } - } else { - result = checkResult{ - Name: ck.Name(), - Summary: "Successful", - MemberList: memberLists[0], - } - } - - return result -} - -func compareMembers(m1, m2 *clientv3.MemberListResponse) bool { - if m1 == nil || m2 == nil { - return false - } - - return m1.Header.ClusterId == m2.Header.ClusterId && reflect.DeepEqual(m1.Members, m2.Members) -} diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/metrics/plugin.go b/etcdctl/ctlv3/command/diagnosis/plugins/metrics/plugin.go deleted file mode 100644 index 24d2e1e7d084..000000000000 --- a/etcdctl/ctlv3/command/diagnosis/plugins/metrics/plugin.go +++ /dev/null @@ -1,178 +0,0 @@ -// Copyright 2025 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package metrics - -import ( - "crypto/tls" - "crypto/x509" - "fmt" - "io" - "log" - "net/http" - "net/url" - "os" - "strings" - "time" - - clientv3 "go.etcd.io/etcd/client/v3" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/common" -) - -var metricsNames = []string{ - "etcd_disk_wal_fsync_duration_seconds_bucket", - "etcd_disk_backend_commit_duration_seconds_bucket", - "etcd_network_peer_round_trip_time_seconds_bucket", - "process_resident_memory_bytes", - //"process_cpu_seconds_total", -} - -type metricsChecker struct { - common.Checker -} - -type epMetrics struct { - Endpoint string `json:"endpoint,omitempty"` - Took string `json:"took,omitempty"` - EpMetrics map[string][]string `json:"epMetrics,omitempty"` -} - -type checkResult struct { - Name string `json:"name,omitempty"` - Summary []string `json:"summary,omitempty"` - EpMetricsList []epMetrics `json:"epMetricsList,omitempty"` -} - -func NewPlugin(cfg *clientv3.ConfigSpec, eps []string, timeout time.Duration) intf.Plugin { - return &metricsChecker{ - Checker: common.Checker{ - Cfg: cfg, - Endpoints: eps, - CommandTimeout: timeout, - Name: "metricsChecker", - }, - } -} - -func (ck *metricsChecker) Name() string { - return ck.Checker.Name -} - -func (ck *metricsChecker) Diagnose() (result any) { - var err error - eps := ck.Endpoints - - defer func() { - if err != nil { - result = &intf.FailedResult{ - Name: ck.Name(), - Reason: err.Error(), - } - } - }() - - chkResult := checkResult{ - Name: ck.Name(), - Summary: []string{}, - EpMetricsList: make([]epMetrics, len(eps)), - } - - for i, ep := range eps { - chkResult.EpMetricsList[i].Endpoint = ep - - startTs := time.Now() - allMetrics, err := fetchMetrics(ck.Cfg, ep, ck.CommandTimeout) - chkResult.EpMetricsList[i].Took = time.Since(startTs).String() - if err != nil { - appendSummary(&chkResult, "Failed to get endpoint metrics from %q: %v", ep, err) - continue - } - - metricsMap := map[string][]string{} - for _, prefix := range metricsNames { - ret := metrics(allMetrics, prefix) - metricsMap[prefix] = ret - } - - chkResult.EpMetricsList[i].EpMetrics = metricsMap - } - - if len(chkResult.Summary) == 0 { - chkResult.Summary = []string{"Successful"} - } - - result = chkResult - return result -} - -func metrics(lines []string, prefix string) []string { - var ret []string - for _, line := range lines { - if strings.HasPrefix(line, prefix) { - ret = append(ret, line) - } - } - return ret -} - -func appendSummary(chkResult *checkResult, format string, v ...any) { - errMsg := fmt.Sprintf(format, v...) - log.Println(errMsg) - chkResult.Summary = append(chkResult.Summary, errMsg) -} - -func fetchMetrics(cfg *clientv3.ConfigSpec, ep string, timeout time.Duration) ([]string, error) { - if !strings.HasPrefix(ep, "http://") && !strings.HasPrefix(ep, "https://") { - ep = "http://" + ep - } - urlPath, err := url.JoinPath(ep, "metrics") - if err != nil { - return nil, fmt.Errorf("failed to join metrics url path: %w", err) - } - - client := &http.Client{Timeout: timeout} - if strings.HasPrefix(urlPath, "https://") && cfg.Secure != nil { - cert, certErr := tls.LoadX509KeyPair(cfg.Secure.Cert, cfg.Secure.Key) - if certErr != nil { - return nil, fmt.Errorf("failed to load certificate: %w", certErr) - } - caCert, caErr := os.ReadFile(cfg.Secure.Cacert) - if caErr != nil { - return nil, fmt.Errorf("failed to load CA: %w", caErr) - } - caCertPool := x509.NewCertPool() - caCertPool.AppendCertsFromPEM(caCert) - tr := &http.Transport{ - TLSClientConfig: &tls.Config{ - Certificates: []tls.Certificate{cert}, - RootCAs: caCertPool, - InsecureSkipVerify: cfg.Secure.InsecureSkipVerify, - }, - } - client.Transport = tr - } - resp, err := client.Get(urlPath) - if err != nil { - return nil, fmt.Errorf("http get failed: %w", err) - } - defer resp.Body.Close() - - data, err := io.ReadAll(resp.Body) - if err != nil { - return nil, fmt.Errorf("failed to read metrics response: %w", err) - } - - return strings.Split(string(data), "\n"), nil -} diff --git a/etcdctl/ctlv3/command/diagnosis/plugins/read/plugin.go b/etcdctl/ctlv3/command/diagnosis/plugins/read/plugin.go deleted file mode 100644 index e6565151dfbf..000000000000 --- a/etcdctl/ctlv3/command/diagnosis/plugins/read/plugin.go +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2025 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package read - -import ( - "context" - "errors" - "log" - "time" - - "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" - clientv3 "go.etcd.io/etcd/client/v3" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/common" -) - -type readChecker struct { - common.Checker - linearizable bool -} - -type readResponse struct { - Endpoint string `json:"endpoint,omitempty"` - Took string `json:"took,omitempty"` - Error string `json:"error,omitempty"` -} -type checkResult struct { - Name string `json:"name,omitempty"` - Summary string `json:"summary,omitempty"` - ReadResponses []readResponse `json:"readResponses,omitempty"` -} - -func NewPlugin(cfg *clientv3.ConfigSpec, eps []string, timeout time.Duration, linearizable bool) intf.Plugin { - return &readChecker{ - Checker: common.Checker{ - Cfg: cfg, - Endpoints: eps, - CommandTimeout: timeout, - Name: generateName(linearizable), - }, - linearizable: linearizable, - } -} - -func (ck *readChecker) Name() string { - return ck.Checker.Name -} - -func generateName(linearizable bool) string { - if linearizable { - return "linearizableReadChecker" - } - return "serializableReadChecker" -} - -func (ck *readChecker) Diagnose() (result any) { - var err error - eps := ck.Endpoints - - defer func() { - if err != nil { - result = &intf.FailedResult{ - Name: ck.Name(), - Reason: err.Error(), - } - } - }() - - var ( - maxRetries = 3 - retries = 0 - - chkResult = initCheckResult(ck.Name(), len(eps)) - ) - - for { - shouldRetry := false - for i, ep := range eps { - chkResult.ReadResponses[i].Endpoint = ep - - startTs := time.Now() - cfg := common.ConfigWithEndpoint(ck.Cfg, ep) - c, err := common.NewClient(cfg) - if err != nil { - chkResult.ReadResponses[i].Error = err.Error() - shouldRetry = true - continue - } - ctx, cancel := context.WithTimeout(context.Background(), ck.CommandTimeout) - if ck.linearizable { - _, err = c.Get(ctx, "health") - } else { - _, err = c.Get(ctx, "health", clientv3.WithSerializable()) - } - cancel() - c.Close() - if err != nil && !errors.Is(err, rpctypes.ErrPermissionDenied) { - chkResult.ReadResponses[i].Error = err.Error() - shouldRetry = true - } - chkResult.ReadResponses[i].Took = time.Since(startTs).String() - } - - retries++ - - if !shouldRetry || retries >= maxRetries { - break - } - - chkResult = initCheckResult(ck.Name(), len(eps)) - log.Printf("Retrying checking read: %d/%d\n", retries, maxRetries) - time.Sleep(time.Second) - } - - chkResult.Summary = "Successful" - for _, resp := range chkResult.ReadResponses { - if len(resp.Error) > 0 { - chkResult.Summary = "Unsuccessful" - break - } - } - - result = chkResult - return result -} - -func initCheckResult(name string, epCount int) checkResult { - return checkResult{ - Name: name, - Summary: "", - ReadResponses: make([]readResponse, epCount), - } -} diff --git a/etcdctl/ctlv3/command/diagnosis_command.go b/etcdctl/ctlv3/command/diagnosis_command.go deleted file mode 100644 index 69748254e8e7..000000000000 --- a/etcdctl/ctlv3/command/diagnosis_command.go +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2025 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package command - -import ( - "fmt" - "os" - - "github.com/spf13/cobra" - - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/engine/intf" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/epstatus" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/membership" - "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/metrics" - readplugin "go.etcd.io/etcd/etcdctl/v3/ctlv3/command/diagnosis/plugins/read" - "go.etcd.io/etcd/pkg/v3/cobrautl" -) - -var ( - useCluster bool - dbQuotaBytes int64 - outputFile string -) - -// NewDiagnosisCommand returns the cobra command for "diagnosis". -func NewDiagnosisCommand() *cobra.Command { - cmd := &cobra.Command{ - Use: "diagnosis", - Short: "One-stop etcd diagnosis tool", - Run: runDiagnosis, - GroupID: groupClusterMaintenanceID, - } - - cmd.Flags().BoolVar(&useCluster, "cluster", false, "use all endpoints from the cluster member list") - cmd.Flags().Int64Var(&dbQuotaBytes, "etcd-storage-quota-bytes", 2*1024*1024*1024, "etcd storage quota in bytes (the value passed to etcd instance by flag --quota-backend-bytes)") - cmd.Flags().StringVarP(&outputFile, "output", "o", "", "write report to file instead of stdout") - - return cmd -} - -func runDiagnosis(cmd *cobra.Command, args []string) { - cfg := clientConfigFromCmd(cmd) - cli := mustClientFromCmd(cmd) - defer cli.Close() - - eps := cfg.Endpoints - if useCluster { - ctx, cancel := commandCtx(cmd) - members, err := cli.MemberList(ctx) - cancel() - if err != nil { - fmt.Fprintf(os.Stderr, "failed to fetch member list: %v\n", err) - os.Exit(cobrautl.ExitError) - } - var clusterEps []string - for _, m := range members.Members { - clusterEps = append(clusterEps, m.ClientURLs...) - } - eps = clusterEps - cfg.Endpoints = eps - } - - timeout, err := cmd.Flags().GetDuration("command-timeout") - if err != nil { - fmt.Fprintf(os.Stderr, "failed to get command-timeout: %v\n", err) - os.Exit(cobrautl.ExitError) - } - - plugins := []intf.Plugin{ - membership.NewPlugin(cfg, eps, timeout), - epstatus.NewPlugin(cfg, eps, timeout, dbQuotaBytes), - readplugin.NewPlugin(cfg, eps, timeout, false), - readplugin.NewPlugin(cfg, eps, timeout, true), - metrics.NewPlugin(cfg, eps, timeout), - } - - report, err := engine.Diagnose(cfg, plugins) - if err != nil { - fmt.Fprintf(os.Stderr, "diagnosis failed: %v\n", err) - os.Exit(cobrautl.ExitError) - } - - if outputFile != "" { - if err := os.WriteFile(outputFile, report, 0o644); err != nil { - fmt.Fprintf(os.Stderr, "failed to write report: %v\n", err) - os.Exit(cobrautl.ExitError) - } - return - } - - fmt.Fprintln(os.Stdout, string(report)) -} diff --git a/etcdctl/ctlv3/ctl.go b/etcdctl/ctlv3/ctl.go index 2d382b5ee054..039485ddf84d 100644 --- a/etcdctl/ctlv3/ctl.go +++ b/etcdctl/ctlv3/ctl.go @@ -106,7 +106,6 @@ func init() { command.NewUserCommand(), command.NewRoleCommand(), command.NewCheckCommand(), - command.NewDiagnosisCommand(), command.NewCompletionCommand(), command.NewDowngradeCommand(), command.NewOptionsCommand(rootCmd), diff --git a/etcdutl/ctl.go b/etcdutl/ctl.go index fe8d89fe02a9..02793a64d366 100644 --- a/etcdutl/ctl.go +++ b/etcdutl/ctl.go @@ -48,9 +48,6 @@ func init() { etcdutl.NewVersionCommand(), etcdutl.NewCompletionCommand(), etcdutl.NewMigrateCommand(), - etcdutl.NewListBucketCommand(), - etcdutl.NewIterateBucketCommand(), - etcdutl.NewHashCommand(), ) } diff --git a/etcdutl/etcdutl/bucket_command.go b/etcdutl/etcdutl/bucket_command.go deleted file mode 100644 index 254a431cf979..000000000000 --- a/etcdutl/etcdutl/bucket_command.go +++ /dev/null @@ -1,266 +0,0 @@ -// Copyright 2025 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package etcdutl - -import ( - "encoding/binary" - "fmt" - "path/filepath" - "strings" - - "github.com/spf13/cobra" - "go.uber.org/zap" - - bolt "go.etcd.io/bbolt" - "go.etcd.io/etcd/api/v3/authpb" - "go.etcd.io/etcd/api/v3/mvccpb" - "go.etcd.io/etcd/client/pkg/v3/fileutil" - "go.etcd.io/etcd/server/v3/lease/leasepb" - "go.etcd.io/etcd/server/v3/storage/backend" - "go.etcd.io/etcd/server/v3/storage/datadir" - "go.etcd.io/etcd/server/v3/storage/mvcc" - "go.etcd.io/etcd/server/v3/storage/schema" -) - -var ( - iterateBucketLimit uint64 - iterateBucketDecode bool -) - -func NewListBucketCommand() *cobra.Command { - cmd := &cobra.Command{ - Use: "list-bucket [data dir or db file path]", - Short: "bucket lists all buckets.", - Args: cobra.ExactArgs(1), - Run: listBucketCommandFunc, - } - - return cmd -} - -func NewIterateBucketCommand() *cobra.Command { - cmd := &cobra.Command{ - Use: "iterate-bucket [data dir or db file path] [bucket name]", - Short: "iterate-bucket lists key-value pairs in reverse order.", - Args: cobra.ExactArgs(2), - Run: iterateBucketCommandFunc, - } - - cmd.PersistentFlags().Uint64Var(&iterateBucketLimit, "limit", 0, "max number of key-value pairs to iterate (0 to iterate all)") - cmd.PersistentFlags().BoolVar(&iterateBucketDecode, "decode", false, "true to decode Protocol Buffer encoded data") - - return cmd -} - -func NewHashCommand() *cobra.Command { - cmd := &cobra.Command{ - Use: "hash [data dir or db file path]", - Short: "hash computes the hash of db file.", - Args: cobra.ExactArgs(1), - Run: getHashCommandFunc, - } - - return cmd -} - -func listBucketCommandFunc(_ *cobra.Command, args []string) { - lg := GetLogger() - dp := args[0] - if !strings.HasSuffix(dp, "db") { - dp = filepath.Join(datadir.ToSnapDir(dp), "db") - } - - if !fileutil.Exist(dp) { - lg.Fatal("db file not exist", zap.String("path", dp)) - } - - bts, err := getBuckets(dp) - if err != nil { - lg.Fatal("Failed to get buckets", zap.Error(err)) - } - for _, b := range bts { - fmt.Println(b) - } -} - -func getBuckets(dbPath string) (buckets []string, err error) { - db, derr := bolt.Open(dbPath, 0o600, &bolt.Options{Timeout: FlockTimeout}) - if derr != nil { - return nil, fmt.Errorf("failed to open bolt DB %w", derr) - } - defer db.Close() - - err = db.View(func(tx *bolt.Tx) error { - return tx.ForEach(func(b []byte, _ *bolt.Bucket) error { - buckets = append(buckets, string(b)) - return nil - }) - }) - return buckets, err -} - -func iterateBucketCommandFunc(_ *cobra.Command, args []string) { - lg := GetLogger() - dp := args[0] - if !strings.HasSuffix(dp, "db") { - dp = filepath.Join(datadir.ToSnapDir(dp), "db") - } - if !fileutil.Exist(dp) { - lg.Fatal("db file not exist", zap.String("path", dp)) - } - bucket := args[1] - err := iterateBucket(dp, bucket, iterateBucketLimit, iterateBucketDecode) - if err != nil { - lg.Fatal("Failed to iterate bucket", zap.Error(err)) - } -} - -type decoder func(k, v []byte) - -// key is the bucket name, and value is the function to decode K/V in the bucket. -var decoders = map[string]decoder{ - "key": keyDecoder, - "lease": leaseDecoder, - "auth": authDecoder, - "authRoles": authRolesDecoder, - "authUsers": authUsersDecoder, - "meta": metaDecoder, -} - -func defaultDecoder(k, v []byte) { - fmt.Printf("key=%q, value=%q\n", k, v) -} - -func keyDecoder(k, v []byte) { - rev := mvcc.BytesToBucketKey(k) - var kv mvccpb.KeyValue - if err := kv.Unmarshal(v); err != nil { - panic(err) - } - fmt.Printf("rev=%+v, value=[key %q | val %q | created %d | mod %d | ver %d]\n", rev, string(kv.Key), string(kv.Value), kv.CreateRevision, kv.ModRevision, kv.Version) -} - -func bytesToLeaseID(bytes []byte) int64 { - if len(bytes) != 8 { - panic(fmt.Errorf("lease ID must be 8-byte")) - } - return int64(binary.BigEndian.Uint64(bytes)) -} - -func leaseDecoder(k, v []byte) { - leaseID := bytesToLeaseID(k) - var lpb leasepb.Lease - if err := lpb.Unmarshal(v); err != nil { - panic(err) - } - fmt.Printf("lease ID=%016x, TTL=%ds, remaining TTL=%ds\n", leaseID, lpb.TTL, lpb.RemainingTTL) -} - -func authDecoder(k, v []byte) { - if string(k) == "authRevision" { - rev := binary.BigEndian.Uint64(v) - fmt.Printf("key=%q, value=%v\n", k, rev) - } else { - fmt.Printf("key=%q, value=%v\n", k, v) - } -} - -func authRolesDecoder(_, v []byte) { - role := &authpb.Role{} - err := role.Unmarshal(v) - if err != nil { - panic(err) - } - fmt.Printf("role=%q, keyPermission=%v\n", string(role.Name), role.KeyPermission) -} - -func authUsersDecoder(_, v []byte) { - user := &authpb.User{} - err := user.Unmarshal(v) - if err != nil { - panic(err) - } - fmt.Printf("user=%q, roles=%q, option=%v\n", user.Name, user.Roles, user.Options) -} - -func metaDecoder(k, v []byte) { - if string(k) == string(schema.MetaConsistentIndexKeyName) || string(k) == string(schema.MetaTermKeyName) { - fmt.Printf("key=%q, value=%v\n", k, binary.BigEndian.Uint64(v)) - } else if string(k) == string(schema.ScheduledCompactKeyName) || string(k) == string(schema.FinishedCompactKeyName) { - rev := mvcc.BytesToRev(v) - fmt.Printf("key=%q, value=%v\n", k, rev) - } else { - defaultDecoder(k, v) - } -} - -func iterateBucket(dbPath, bucket string, limit uint64, decode bool) (err error) { - db, err := bolt.Open(dbPath, 0o600, &bolt.Options{Timeout: FlockTimeout}) - if err != nil { - return fmt.Errorf("failed to open bolt DB %w", err) - } - defer db.Close() - - err = db.View(func(tx *bolt.Tx) error { - b := tx.Bucket([]byte(bucket)) - if b == nil { - return fmt.Errorf("got nil bucket for %s", bucket) - } - - c := b.Cursor() - - // iterate in reverse order (use First() and Next() for ascending order) - for k, v := c.Last(); k != nil; k, v = c.Prev() { - // TODO: remove sensitive information - // (https://github.com/etcd-io/etcd/issues/7620) - if dec, ok := decoders[bucket]; decode && ok { - dec(k, v) - } else { - defaultDecoder(k, v) - } - - limit-- - if limit == 0 { - break - } - } - - return nil - }) - return err -} - -func getHashCommandFunc(_ *cobra.Command, args []string) { - lg := GetLogger() - dp := args[0] - if !strings.HasSuffix(dp, "db") { - dp = filepath.Join(datadir.ToSnapDir(dp), "db") - } - if !fileutil.Exist(dp) { - lg.Fatal("db file not exist", zap.String("path", dp)) - } - - hash, err := getHash(dp) - if err != nil { - lg.Fatal("failed to get hash", zap.Error(err)) - } - fmt.Printf("db path: %s\nHash: %d\n", dp, hash) -} - -func getHash(dbPath string) (hash uint32, err error) { - b := backend.NewDefaultBackend(zap.NewNop(), dbPath, backend.WithTimeout(FlockTimeout)) - defer b.Close() - return b.Hash(schema.DefaultIgnores) -} diff --git a/tools/etcd-dump-db/README.md b/tools/etcd-dump-db/README.md index e2375da05b63..b176096f0a6e 100644 --- a/tools/etcd-dump-db/README.md +++ b/tools/etcd-dump-db/README.md @@ -2,9 +2,6 @@ `etcd-dump-db` inspects etcd db files. -> ⚠️ **Deprecated**: This tool has been deprecated. -> Please use [etcdutl](https://github.com/etcd-io/etcd/tree/main/etcdutl) instead. - ## Installation Install the tool by running the following command from the etcd source directory. From b0bbaf715e6250217750574a946c1bf2ac336d58 Mon Sep 17 00:00:00 2001 From: Himanshu-370 Date: Fri, 3 Apr 2026 01:54:50 +0000 Subject: [PATCH 0960/1068] fix: Move sync_go_toolchain_directive.sh to scripts/fix/ with improvements - Move sync_go_toolchain_directive.sh to scripts/fix/ directory - Add ETCD_ROOT_DIR support for dynamic path resolution - Integrate with test_lib.sh for consistent logging - Add log_callout and log_success messages - Keep original script name with underscore convention - Update Makefile and verify_go_versions.sh references Signed-off-by: Himanshu-370 --- Makefile | 2 +- scripts/{ => fix}/sync_go_toolchain_directive.sh | 14 ++++++++++---- scripts/verify_go_versions.sh | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) rename scripts/{ => fix}/sync_go_toolchain_directive.sh (70%) diff --git a/Makefile b/Makefile index 98a6a8f3c279..e6356e1f8192 100644 --- a/Makefile +++ b/Makefile @@ -230,7 +230,7 @@ verify-grpc-experimental: .PHONY: sync-toolchain-directive sync-toolchain-directive: - ./scripts/sync_go_toolchain_directive.sh + ./scripts/fix/sync_go_toolchain_directive.sh .PHONY: markdown-diff-lint markdown-diff-lint: diff --git a/scripts/sync_go_toolchain_directive.sh b/scripts/fix/sync_go_toolchain_directive.sh similarity index 70% rename from scripts/sync_go_toolchain_directive.sh rename to scripts/fix/sync_go_toolchain_directive.sh index 7bb61f287607..db3a13ede306 100755 --- a/scripts/sync_go_toolchain_directive.sh +++ b/scripts/fix/sync_go_toolchain_directive.sh @@ -1,11 +1,12 @@ #!/usr/bin/env bash + # Copyright 2025 The etcd Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -21,8 +22,13 @@ set -euo pipefail -source ./scripts/test_lib.sh +ETCD_ROOT_DIR=${ETCD_ROOT_DIR:-$(git rev-parse --show-toplevel)} +source "${ETCD_ROOT_DIR}/scripts/test_lib.sh" + +log_callout "Syncing Go toolchain directive" TARGET_GO_VERSION="${TARGET_GO_VERSION:-"$(cat "${ETCD_ROOT_DIR}/.go-version")"}" -find . -name 'go.mod' -exec go mod edit -toolchain=go"${TARGET_GO_VERSION}" {} \; -go work edit -toolchain=go"${TARGET_GO_VERSION}" +run find "${ETCD_ROOT_DIR}" -name 'go.mod' -exec go mod edit -toolchain=go"${TARGET_GO_VERSION}" {} \; +run go work edit -toolchain=go"${TARGET_GO_VERSION}" + +log_success "Go toolchain directive synced" diff --git a/scripts/verify_go_versions.sh b/scripts/verify_go_versions.sh index 157191ec3b45..b9a2829f9138 100755 --- a/scripts/verify_go_versions.sh +++ b/scripts/verify_go_versions.sh @@ -67,7 +67,7 @@ done < <(find . -name 'go.mod') if [[ "${toolchain_out_of_sync}" == "true" ]]; then log_error - log_error "Please run scripts/sync_go_toolchain_directive.sh or update .go-version to rectify this error" + log_error "Please run make sync-toolchain-directive or update .go-version to rectify this error" fi if [[ "${go_line_violation}" == "true" ]]; then From 89d50c2cb4f62eeb7e107da4631bb0fa51db9935 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Sun, 8 Mar 2026 19:57:13 -0400 Subject: [PATCH 0961/1068] client/v3: use pointer for GetResponse observe channels Switch concurrency.Election.Observe and mirror.Syncer.SyncBase from GetResponse values to *GetResponse. Update the etcdctl election observer and add integration coverage for multiple Observe updates to verify each event returns a fresh response wrapper. Also manually copy lease cache responses/headers to avoid shared mutable state in future. Signed-off-by: Wei Fu --- client/v3/concurrency/election.go | 16 +- client/v3/leasing/cache.go | 26 ++- client/v3/leasing/util.go | 50 ++++- client/v3/leasing/util_test.go | 173 ++++++++++++++++++ client/v3/mirror/syncer.go | 8 +- etcdctl/ctlv3/command/elect_command.go | 2 +- .../clientv3/concurrency/election_test.go | 2 +- tests/integration/v3_election_test.go | 54 ++++++ 8 files changed, 300 insertions(+), 31 deletions(-) create mode 100644 client/v3/leasing/util_test.go diff --git a/client/v3/concurrency/election.go b/client/v3/concurrency/election.go index 2b196b96a1a9..60f931d25df6 100644 --- a/client/v3/concurrency/election.go +++ b/client/v3/concurrency/election.go @@ -158,19 +158,19 @@ func (e *Election) Leader(ctx context.Context) (*v3.GetResponse, error) { } // Observe returns a channel that reliably observes ordered leader proposals -// as GetResponse values on every current elected leader key. It will not +// as GetResponse pointers on every current elected leader key. It will not // necessarily fetch all historical leader updates, but will always post the // most recent leader value. // // The channel closes when the context is canceled or the underlying watcher // is otherwise disrupted. -func (e *Election) Observe(ctx context.Context) <-chan v3.GetResponse { - retc := make(chan v3.GetResponse) +func (e *Election) Observe(ctx context.Context) <-chan *v3.GetResponse { + retc := make(chan *v3.GetResponse) go e.observe(ctx, retc) return retc } -func (e *Election) observe(ctx context.Context, ch chan<- v3.GetResponse) { +func (e *Election) observe(ctx context.Context, ch chan<- *v3.GetResponse) { client := e.session.Client() defer close(ch) @@ -211,7 +211,7 @@ func (e *Election) observe(ctx context.Context, ch chan<- v3.GetResponse) { } select { - case ch <- v3.GetResponse{Header: hdr, Kvs: []*mvccpb.KeyValue{kv}}: + case ch <- &v3.GetResponse{Header: hdr, Kvs: []*mvccpb.KeyValue{kv}}: case <-ctx.Done(): return } @@ -230,10 +230,10 @@ func (e *Election) observe(ctx context.Context, ch chan<- v3.GetResponse) { keyDeleted = true break } - resp.Header = &wr.Header - resp.Kvs = []*mvccpb.KeyValue{ev.Kv} select { - case ch <- *resp: + case ch <- &v3.GetResponse{ + Header: &wr.Header, + Kvs: []*mvccpb.KeyValue{ev.Kv}}: case <-cctx.Done(): cancel() return diff --git a/client/v3/leasing/cache.go b/client/v3/leasing/cache.go index 9e78b78fa196..779039d85da8 100644 --- a/client/v3/leasing/cache.go +++ b/client/v3/leasing/cache.go @@ -217,26 +217,22 @@ func (lc *leaseCache) Get(ctx context.Context, op v3.Op) (*v3.GetResponse, bool) } func (lk *leaseKey) get(op v3.Op) *v3.GetResponse { - ret := *lk.response - ret.Header = copyHeader(ret.Header) - empty := len(ret.Kvs) == 0 || op.IsCountOnly() - empty = empty || (op.MinModRev() > ret.Kvs[0].ModRevision) - empty = empty || (op.MaxModRev() != 0 && op.MaxModRev() < ret.Kvs[0].ModRevision) - empty = empty || (op.MinCreateRev() > ret.Kvs[0].CreateRevision) - empty = empty || (op.MaxCreateRev() != 0 && op.MaxCreateRev() < ret.Kvs[0].CreateRevision) + resp := lk.response + empty := len(resp.Kvs) == 0 || op.IsCountOnly() + empty = empty || (op.MinModRev() > resp.Kvs[0].ModRevision) + empty = empty || (op.MaxModRev() != 0 && op.MaxModRev() < resp.Kvs[0].ModRevision) + empty = empty || (op.MinCreateRev() > resp.Kvs[0].CreateRevision) + empty = empty || (op.MaxCreateRev() != 0 && op.MaxCreateRev() < resp.Kvs[0].CreateRevision) + + ret := copyGetResponseMetadataOnly(resp) if empty { ret.Kvs = nil } else { - kv := *ret.Kvs[0] - kv.Key = make([]byte, len(kv.Key)) - copy(kv.Key, ret.Kvs[0].Key) - if !op.IsKeysOnly() { - kv.Value = make([]byte, len(kv.Value)) - copy(kv.Value, ret.Kvs[0].Value) + ret.Kvs = []*mvccpb.KeyValue{ + copyKeyValue(resp.Kvs[0], op.IsKeysOnly()), } - ret.Kvs = []*mvccpb.KeyValue{&kv} } - return &ret + return ret } func (lc *leaseCache) notify(key string) (*leaseKey, <-chan struct{}) { diff --git a/client/v3/leasing/util.go b/client/v3/leasing/util.go index 405a2a090b47..6d9ef7f6a99c 100644 --- a/client/v3/leasing/util.go +++ b/client/v3/leasing/util.go @@ -18,6 +18,7 @@ import ( "bytes" v3pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/api/v3/mvccpb" v3 "go.etcd.io/etcd/client/v3" ) @@ -98,8 +99,53 @@ func gatherResponseOps(resp []*v3pb.ResponseOp, ops []v3.Op) (ret []v3.Op) { } func copyHeader(hdr *v3pb.ResponseHeader) *v3pb.ResponseHeader { - h := *hdr - return &h + if hdr == nil { + return nil + } + + return &v3pb.ResponseHeader{ + ClusterId: hdr.GetClusterId(), + MemberId: hdr.GetMemberId(), + Revision: hdr.GetRevision(), + RaftTerm: hdr.GetRaftTerm(), + } +} + +func copyGetResponseMetadataOnly(resp *v3.GetResponse) *v3.GetResponse { + if resp == nil { + return nil + } + + return &v3.GetResponse{ + Header: copyHeader(resp.Header), + Kvs: nil, + More: resp.More, + Count: resp.Count, + } +} + +func copyKeyValue(kv *mvccpb.KeyValue, keysOnly bool) *mvccpb.KeyValue { + if kv == nil { + return nil + } + + key := make([]byte, len(kv.Key)) + copy(key, kv.Key) + + var value []byte + if !keysOnly { + value = make([]byte, len(kv.Value)) + copy(value, kv.Value) + } + + return &mvccpb.KeyValue{ + Key: key, + CreateRevision: kv.CreateRevision, + ModRevision: kv.ModRevision, + Version: kv.Version, + Value: value, + Lease: kv.Lease, + } } func closeAll(chs []chan<- struct{}) { diff --git a/client/v3/leasing/util_test.go b/client/v3/leasing/util_test.go new file mode 100644 index 000000000000..565d37ea92bc --- /dev/null +++ b/client/v3/leasing/util_test.go @@ -0,0 +1,173 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package leasing + +import ( + "reflect" + "testing" + + "github.com/stretchr/testify/require" + + v3pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/api/v3/mvccpb" + v3 "go.etcd.io/etcd/client/v3" +) + +func TestCopyHeader(t *testing.T) { + t.Run("ResponseHeader should have 4 protobuf fields", func(t *testing.T) { + require.Equal(t, 4, countProtobufFields(&v3pb.ResponseHeader{})) + }) + + t.Run("nil header", func(t *testing.T) { + require.Nil(t, copyHeader(nil)) + }) + + t.Run("copy header", func(t *testing.T) { + want := &v3pb.ResponseHeader{ + ClusterId: 123, + MemberId: 456, + Revision: 789, + RaftTerm: 101112, + } + actual := copyHeader(want) + require.Equal(t, want, actual) + + actual.ClusterId = 999 + require.Equal(t, uint64(123), want.ClusterId) + }) +} + +func TestCopyGetResponseMetadataOnly(t *testing.T) { + t.Run("GetResponse should have 4 protobuf fields", func(t *testing.T) { + require.Equal(t, 4, countProtobufFields(&v3.GetResponse{})) + }) + + t.Run("nil GetResponse", func(t *testing.T) { + require.Nil(t, copyGetResponseMetadataOnly(nil)) + }) + + t.Run("copy GetResponse metadata only", func(t *testing.T) { + want := &v3.GetResponse{ + Header: &v3pb.ResponseHeader{ + ClusterId: 123, + MemberId: 456, + Revision: 789, + RaftTerm: 101112, + }, + Kvs: []*mvccpb.KeyValue{ + { + Key: []byte("key1"), + Value: []byte("value1"), + CreateRevision: 1, + ModRevision: 2, + Version: 3, + }, + }, + More: true, + Count: 1, + } + actual := copyGetResponseMetadataOnly(want) + require.Equal(t, want.Header, actual.Header) + require.Nil(t, actual.Kvs) + require.True(t, actual.More) + require.Equal(t, int64(1), actual.Count) + + actual.Header.ClusterId = 999 + require.Equal(t, uint64(123), want.Header.ClusterId) + + actual.Count = 2 + require.Equal(t, int64(1), want.Count) + }) +} + +func TestCopyKeyValue(t *testing.T) { + t.Run("KeyValue should have 6 protobuf fields", func(t *testing.T) { + require.Equal(t, 6, countProtobufFields(&mvccpb.KeyValue{})) + }) + + t.Run("nil key-value", func(t *testing.T) { + require.Nil(t, copyKeyValue(nil, false)) + require.Nil(t, copyKeyValue(nil, true)) + }) + + t.Run("copy key and value", func(t *testing.T) { + src := &mvccpb.KeyValue{ + Key: []byte("key1"), + Value: []byte("value1"), + CreateRevision: 1, + ModRevision: 2, + Version: 3, + Lease: 4, + } + + got := copyKeyValue(src, false) + require.NotSame(t, src, got) + require.Equal(t, src, got) + + got.Key[0] = 'K' + got.Value[0] = 'V' + require.Equal(t, byte('k'), src.Key[0]) + require.Equal(t, byte('v'), src.Value[0]) + + src.Key[1] = 'X' + src.Value[1] = 'Y' + require.Equal(t, byte('e'), got.Key[1]) + require.Equal(t, byte('a'), got.Value[1]) + }) + + t.Run("keys only", func(t *testing.T) { + src := &mvccpb.KeyValue{ + Key: []byte("key2"), + Value: []byte("value2"), + CreateRevision: 5, + ModRevision: 6, + Version: 7, + Lease: 8, + } + + got := copyKeyValue(src, true) + require.Equal(t, &mvccpb.KeyValue{ + Key: []byte("key2"), + Value: nil, + CreateRevision: 5, + ModRevision: 6, + Version: 7, + Lease: 8, + }, got) + require.Nil(t, got.Value) + + got.Key[0] = 'K' + require.Equal(t, byte('k'), src.Key[0]) + }) +} + +func countProtobufFields(v any) int { + t := reflect.TypeOf(v) + if t.Kind() == reflect.Ptr { + t = t.Elem() + } + if t.Kind() != reflect.Struct { + return 0 + } + + count := 0 + for i := 0; i < t.NumField(); i++ { + f := t.Field(i) + if tag := f.Tag.Get("protobuf"); tag != "" { + count++ + } + } + return count +} diff --git a/client/v3/mirror/syncer.go b/client/v3/mirror/syncer.go index 55775dc51355..082b57620d1b 100644 --- a/client/v3/mirror/syncer.go +++ b/client/v3/mirror/syncer.go @@ -29,7 +29,7 @@ const ( type Syncer interface { // SyncBase syncs the base state of the key-value state. // The key-value state are sent through the returned chan. - SyncBase(ctx context.Context) (<-chan clientv3.GetResponse, chan error) + SyncBase(ctx context.Context) (<-chan *clientv3.GetResponse, chan error) // SyncUpdates syncs the updates of the key-value state. // The update events are sent through the returned chan. SyncUpdates(ctx context.Context) clientv3.WatchChan @@ -46,8 +46,8 @@ type syncer struct { prefix string } -func (s *syncer) SyncBase(ctx context.Context) (<-chan clientv3.GetResponse, chan error) { - respchan := make(chan clientv3.GetResponse, 1024) +func (s *syncer) SyncBase(ctx context.Context) (<-chan *clientv3.GetResponse, chan error) { + respchan := make(chan *clientv3.GetResponse, 1024) errchan := make(chan error, 1) // if rev is not specified, we will choose the most recent revision. @@ -99,7 +99,7 @@ func (s *syncer) SyncBase(ctx context.Context) (<-chan clientv3.GetResponse, cha return } - respchan <- *resp + respchan <- resp if !resp.More { return diff --git a/etcdctl/ctlv3/command/elect_command.go b/etcdctl/ctlv3/command/elect_command.go index 6ff828843061..2806912691b4 100644 --- a/etcdctl/ctlv3/command/elect_command.go +++ b/etcdctl/ctlv3/command/elect_command.go @@ -83,7 +83,7 @@ func observe(c *clientv3.Client, election string) error { go func() { for resp := range e.Observe(ctx) { - display.Get(resp) + display.Get(*resp) } close(donec) }() diff --git a/tests/integration/clientv3/concurrency/election_test.go b/tests/integration/clientv3/concurrency/election_test.go index d814a4a48b70..84cf9d476a22 100644 --- a/tests/integration/clientv3/concurrency/election_test.go +++ b/tests/integration/clientv3/concurrency/election_test.go @@ -72,7 +72,7 @@ func TestResumeElection(t *testing.T) { if string(resp.Kvs[0].Value) == "candidate1" { continue } - respChan <- &resp + respChan <- resp return } t.Error("Observe() channel closed prematurely") diff --git a/tests/integration/v3_election_test.go b/tests/integration/v3_election_test.go index 8bae7b0e0903..d84d8629363a 100644 --- a/tests/integration/v3_election_test.go +++ b/tests/integration/v3_election_test.go @@ -282,6 +282,60 @@ func TestElectionObserveCompacted(t *testing.T) { require.Equalf(t, "abc", string(v.Kvs[0].Value), `expected leader value "abc", got %q`, string(v.Kvs[0].Value)) } +func TestElectionObserveFreshResponsesOnProclaim(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + defer clus.Terminate(t) + + cli := clus.RandClient() + + session, err := concurrency.NewSession(cli) + require.NoError(t, err) + defer session.Orphan() + + e := concurrency.NewElection(session, "test-elect") + require.NoError(t, e.Campaign(t.Context(), "abc")) + + ctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) + defer cancel() + + observeCh := e.Observe(ctx) + + mustObserve := func(want string, msg string) *clientv3.GetResponse { + resp, ok := <-observeCh + require.Truef(t, ok, msg) + require.Len(t, resp.Kvs, 1) + require.Equal(t, want, string(resp.Kvs[0].Value)) + return resp + } + + assertFreshResponse := func(lhs, rhs *clientv3.GetResponse, msg string) { + if lhs == rhs { + t.Fatal(msg) + } + } + + firstResp := mustObserve("abc", "could not wait for first election; channel closed") + + require.NoError(t, e.Proclaim(t.Context(), "def")) + secondResp := mustObserve("def", "could not wait for proclaimed election; channel closed") + + require.NoError(t, e.Proclaim(t.Context(), "ghi")) + thirdResp := mustObserve("ghi", "could not wait for second proclaimed election; channel closed") + + assertFreshResponse(firstResp, secondResp, "Observe() reused the first GetResponse pointer") + assertFreshResponse(firstResp, thirdResp, "Observe() reused the first GetResponse pointer") + assertFreshResponse(secondResp, thirdResp, "Observe() reused the second GetResponse pointer") + + require.Equal(t, "abc", string(firstResp.Kvs[0].Value)) + require.Equal(t, "def", string(secondResp.Kvs[0].Value)) + require.Equal(t, int64(1), firstResp.Kvs[0].Version) + require.Equal(t, int64(2), secondResp.Kvs[0].Version) + require.Equal(t, int64(3), thirdResp.Kvs[0].Version) + require.Less(t, firstResp.Header.Revision, secondResp.Header.Revision) + require.Less(t, secondResp.Header.Revision, thirdResp.Header.Revision) +} + // TestElectionWithAuthEnabled verifies the election interface when auth is enabled. // Refer to the discussion in https://github.com/etcd-io/etcd/issues/17502 func TestElectionWithAuthEnabled(t *testing.T) { From 644a1672269e231d4d39121010314f530770f270 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Mon, 4 May 2026 19:45:27 -0400 Subject: [PATCH 0962/1068] tools/benchmark: add stream, paginate, and prefix modes to range Signed-off-by: Jefftree --- go.mod | 2 +- tools/benchmark/cmd/range.go | 102 +++++++++++++++++++++++++++++------ 2 files changed, 88 insertions(+), 16 deletions(-) diff --git a/go.mod b/go.mod index 733f25c481dc..7322a8c66d85 100644 --- a/go.mod +++ b/go.mod @@ -21,6 +21,7 @@ require ( github.com/cheggaaa/pb/v3 v3.1.7 github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 + github.com/golang/protobuf v1.5.4 github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 @@ -54,7 +55,6 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.3.1 // indirect - github.com/golang/protobuf v1.5.4 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect diff --git a/tools/benchmark/cmd/range.go b/tools/benchmark/cmd/range.go index 6bbed8ac3e09..66d15273bc24 100644 --- a/tools/benchmark/cmd/range.go +++ b/tools/benchmark/cmd/range.go @@ -22,13 +22,19 @@ import ( "time" "github.com/cheggaaa/pb/v3" + "github.com/golang/protobuf/proto" //nolint:staticcheck "github.com/spf13/cobra" "golang.org/x/time/rate" + etcdserverpb "go.etcd.io/etcd/api/v3/etcdserverpb" v3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/pkg/v3/report" ) +// k8sWatchCachePageSize matches the default page size used by the Kubernetes +// watch cache when paginating List requests against etcd. +const k8sWatchCachePageSize = 10000 + // rangeCmd represents the range command var rangeCmd = &cobra.Command{ Use: "range key [end-range]", @@ -43,6 +49,9 @@ var ( rangeConsistency string rangeLimit int64 rangeCountOnly bool + rangeStream bool + rangePaginate bool + rangePrefix bool ) func init() { @@ -52,20 +61,31 @@ func init() { rangeCmd.Flags().StringVar(&rangeConsistency, "consistency", "l", "Linearizable(l) or Serializable(s)") rangeCmd.Flags().Int64Var(&rangeLimit, "limit", 0, "Maximum number of results to return from range request (0 is no limit)") rangeCmd.Flags().BoolVar(&rangeCountOnly, "count-only", false, "Only returns the count of keys") + rangeCmd.Flags().BoolVar(&rangeStream, "stream", false, "Use RangeStream instead of unary Range") + rangeCmd.Flags().BoolVar(&rangePaginate, "paginate", false, "Use paginated unary range with 10k-key pages") + rangeCmd.Flags().BoolVar(&rangePrefix, "prefix", false, "Range over all keys with the given key as prefix") } func rangeFunc(cmd *cobra.Command, args []string) { - if len(args) == 0 || len(args) > 2 { + if len(args) > 2 || (len(args) == 0 && !rangePrefix) { fmt.Fprintln(os.Stderr, cmd.Usage()) os.Exit(1) } - k := args[0] + key := "" end := "" + if len(args) >= 1 { + key = args[0] + } if len(args) == 2 { end = args[1] } + if rangePaginate && rangeLimit > 0 { + fmt.Fprintln(os.Stderr, "--paginate and --limit are mutually exclusive") + os.Exit(1) + } + if rangeConsistency == "l" { fmt.Println("bench with linearizable range") } else if rangeConsistency == "s" { @@ -80,22 +100,58 @@ func rangeFunc(cmd *cobra.Command, args []string) { } limit := rate.NewLimiter(rate.Limit(rangeRate), 1) - requests := make(chan v3.Op, totalClients) + requests := make(chan struct{}, totalClients) clients := mustCreateClients(totalClients, totalConns) bar = pb.New(rangeTotal) bar.Start() + var baseOpts []v3.OpOption + if rangeLimit > 0 { + baseOpts = append(baseOpts, v3.WithLimit(rangeLimit)) + } + if rangeCountOnly { + baseOpts = append(baseOpts, v3.WithCountOnly()) + } + if rangeConsistency == "s" { + baseOpts = append(baseOpts, v3.WithSerializable()) + } + if rangePrefix { + if rangePaginate { + // Pin the prefix's range end once. Otherwise WithPrefix would + // re-derive it from the advancing start key on every page. + baseOpts = append(baseOpts, v3.WithRange(v3.GetPrefixRangeEnd(key))) + if key == "" { + key = "\x00" + } + } else { + baseOpts = append(baseOpts, v3.WithPrefix()) + } + } else if end != "" { + baseOpts = append(baseOpts, v3.WithRange(end)) + } + r := newReport(cmd.Name()) for i := range clients { wg.Add(1) go func(c *v3.Client) { defer wg.Done() - for op := range requests { + for range requests { limit.Wait(context.Background()) - st := time.Now() - _, err := c.Do(context.Background(), op) + var err error + switch { + case rangeStream: + var stream v3.GetStreamChan + stream, err = c.GetStream(context.Background(), key, baseOpts...) + if err == nil { + _, err = v3.GetStreamToGetResponse(stream) + } + case rangePaginate: + err = paginatedRange(c, key, k8sWatchCachePageSize, baseOpts) + default: + _, err = c.Get(context.Background(), key, baseOpts...) + } r.Results() <- report.Result{Err: err, Start: st, End: time.Now()} bar.Increment() } @@ -104,15 +160,7 @@ func rangeFunc(cmd *cobra.Command, args []string) { go func() { for i := 0; i < rangeTotal; i++ { - opts := []v3.OpOption{v3.WithRange(end), v3.WithLimit(rangeLimit)} - if rangeCountOnly { - opts = append(opts, v3.WithCountOnly()) - } - if rangeConsistency == "s" { - opts = append(opts, v3.WithSerializable()) - } - op := v3.OpGet(k, opts...) - requests <- op + requests <- struct{}{} } close(requests) }() @@ -123,3 +171,27 @@ func rangeFunc(cmd *cobra.Command, args []string) { bar.Finish() fmt.Printf("%s", <-rc) } + +func paginatedRange(c *v3.Client, key string, pageSize int64, baseOpts []v3.OpOption) error { + merged := &etcdserverpb.RangeResponse{} + var rev int64 + for { + opts := append([]v3.OpOption{v3.WithLimit(pageSize)}, baseOpts...) + if rev != 0 { + opts = append(opts, v3.WithRev(rev)) + } + resp, err := c.Get(context.Background(), key, opts...) + if err != nil { + return err + } + if rev == 0 { + rev = resp.Header.Revision + } + proto.Merge(merged, (*etcdserverpb.RangeResponse)(resp)) + if !resp.More || len(resp.Kvs) == 0 { + return nil + } + last := resp.Kvs[len(resp.Kvs)-1].Key + key = string(append(last, '\x00')) + } +} From 64651096ef3ee91ebbb77d63543bd3b3be568e41 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Sun, 15 Mar 2026 11:13:33 -0400 Subject: [PATCH 0963/1068] client/v3: move Event helper methods into pb package Signed-off-by: Wei Fu --- api/mvccpb/extension.go | 25 +++++++++++++++++++++++ client/v3/watch.go | 18 ++-------------- etcdctl/ctlv3/command/printer_protobuf.go | 7 +------ server/proxy/grpcproxy/watcher.go | 2 +- 4 files changed, 29 insertions(+), 23 deletions(-) create mode 100644 api/mvccpb/extension.go diff --git a/api/mvccpb/extension.go b/api/mvccpb/extension.go new file mode 100644 index 000000000000..616e1c69feb6 --- /dev/null +++ b/api/mvccpb/extension.go @@ -0,0 +1,25 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mvccpb + +// IsCreate returns true if the event tells that the key is newly created. +func (e *Event) IsCreate() bool { + return e.GetType() == PUT && e.GetKv().GetCreateRevision() == e.GetKv().GetModRevision() +} + +// IsModify returns true if the event tells that a new value is put on existing key. +func (e *Event) IsModify() bool { + return e.GetType() == PUT && e.GetKv().GetCreateRevision() != e.GetKv().GetModRevision() +} diff --git a/client/v3/watch.go b/client/v3/watch.go index 90df8d7b67c6..951e9b51c21c 100644 --- a/client/v3/watch.go +++ b/client/v3/watch.go @@ -46,7 +46,7 @@ const ( InvalidWatchID = -1 ) -type Event mvccpb.Event +type Event = mvccpb.Event type WatchChan <-chan WatchResponse @@ -116,16 +116,6 @@ type WatchResponse struct { CancelReason string } -// IsCreate returns true if the event tells that the key is newly created. -func (e *Event) IsCreate() bool { - return e.Type == EventTypePut && e.Kv.CreateRevision == e.Kv.ModRevision -} - -// IsModify returns true if the event tells that a new value is put on existing key. -func (e *Event) IsModify() bool { - return e.Type == EventTypePut && e.Kv.CreateRevision != e.Kv.ModRevision -} - // Err is the error value if this WatchResponse holds an error. func (wr *WatchResponse) Err() error { switch { @@ -719,14 +709,10 @@ func (w *watchGRPCStream) nextResume() *watcherStream { // dispatchEvent sends a WatchResponse to the appropriate watcher stream func (w *watchGRPCStream) dispatchEvent(pbresp *pb.WatchResponse) bool { - events := make([]*Event, len(pbresp.Events)) - for i, ev := range pbresp.Events { - events[i] = (*Event)(ev) - } // TODO: return watch ID? wr := &WatchResponse{ Header: ensureWatchHeader(pbresp.Header), - Events: events, + Events: pbresp.Events, CompactRevision: pbresp.CompactRevision, Created: pbresp.Created, Canceled: pbresp.Canceled, diff --git a/etcdctl/ctlv3/command/printer_protobuf.go b/etcdctl/ctlv3/command/printer_protobuf.go index 48689aa2e702..ba8f033579fe 100644 --- a/etcdctl/ctlv3/command/printer_protobuf.go +++ b/etcdctl/ctlv3/command/printer_protobuf.go @@ -19,7 +19,6 @@ import ( "os" pb "go.etcd.io/etcd/api/v3/etcdserverpb" - mvccpb "go.etcd.io/etcd/api/v3/mvccpb" v3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/pkg/v3/cobrautl" ) @@ -37,13 +36,9 @@ func newPBPrinter() printer { } func (p *pbPrinter) Watch(r v3.WatchResponse) { - evs := make([]*mvccpb.Event, len(r.Events)) - for i, ev := range r.Events { - evs[i] = (*mvccpb.Event)(ev) - } wr := pb.WatchResponse{ Header: r.Header, - Events: evs, + Events: r.Events, CompactRevision: r.CompactRevision, Canceled: r.Canceled, Created: r.Created, diff --git a/server/proxy/grpcproxy/watcher.go b/server/proxy/grpcproxy/watcher.go index cdb4a8454e64..d2fa3c7b295d 100644 --- a/server/proxy/grpcproxy/watcher.go +++ b/server/proxy/grpcproxy/watcher.go @@ -68,7 +68,7 @@ func (w *watcher) send(wr clientv3.WatchResponse) { var lastRev int64 for i := range wr.Events { - ev := (*mvccpb.Event)(wr.Events[i]) + ev := wr.Events[i] if ev.Kv.ModRevision < w.nextrev { continue } From f75b2fa03932eed78d5b79d45edcd8f174a90a75 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Wed, 6 May 2026 15:49:00 +0200 Subject: [PATCH 0964/1068] Update kubernetes patches used in etcd-k8s coverage tests Signed-off-by: Aleksander Mistewicz --- .../patches/kubernetes/0004-Configure-cmd-tests.patch | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch b/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch index 1590a619c822..5ca6eab6a35f 100644 --- a/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch +++ b/tests/robustness/coverage/patches/kubernetes/0004-Configure-cmd-tests.patch @@ -5,7 +5,7 @@ Subject: [PATCH 4/4] Configure cmd tests diff --git a/hack/lib/etcd.sh b/hack/lib/etcd.sh -index 15c4e59bba9..a22e8d04775 100755 +index a3316e73bd4..f6b6bea6e26 100755 --- a/hack/lib/etcd.sh +++ b/hack/lib/etcd.sh @@ -25,6 +25,8 @@ ETCD_PORT=${ETCD_PORT:-2379} @@ -17,10 +17,10 @@ index 15c4e59bba9..a22e8d04775 100755 kube::etcd::validate() { # validate if in path command -v etcd >/dev/null || { -@@ -84,8 +86,8 @@ kube::etcd::start() { - else - ETCD_LOGFILE=${ETCD_LOGFILE:-"/dev/null"} +@@ -89,8 +91,8 @@ kube::etcd::start() { + return fi + - kube::log::info "etcd --advertise-client-urls ${KUBE_INTEGRATION_ETCD_URL} --data-dir ${ETCD_DIR} --listen-client-urls http://${ETCD_HOST}:${ETCD_PORT} --listen-peer-urls http://localhost:0 --log-level=${ETCD_LOGLEVEL} 2> \"${ETCD_LOGFILE}\" >/dev/null" - etcd --advertise-client-urls "${KUBE_INTEGRATION_ETCD_URL}" --data-dir "${ETCD_DIR}" --listen-client-urls "${KUBE_INTEGRATION_ETCD_URL}" --listen-peer-urls "http://localhost:0" --log-level="${ETCD_LOGLEVEL}" 2> "${ETCD_LOGFILE}" >/dev/null & + kube::log::info "etcd --advertise-client-urls ${KUBE_INTEGRATION_ETCD_URL} --data-dir ${ETCD_DIR} --listen-client-urls http://${ETCD_HOST}:${ETCD_PORT} --listen-peer-urls http://localhost:0 --log-level=${ETCD_LOGLEVEL} --enable-distributed-tracing --distributed-tracing-address=\"192.168.32.1:4317\" --distributed-tracing-service-name=\"etcd\" --distributed-tracing-sampling-rate=1000000 2> \"${ETCD_LOGFILE}\" >/dev/null" From 3fddaf67a4b81fc51fa942019e333aeb7ba81970 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 May 2026 17:34:22 +0000 Subject: [PATCH 0965/1068] build(deps): bump github/codeql-action from 4.35.2 to 4.35.4 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.2 to 4.35.4. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/95e58e9a2cdfd71adc6e0353d5c52f41a045d225...68bde559dea0fdcac2102bfdf6230c5f70eb485e) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.35.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index b5840725c548..d8547c79a6da 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2 + uses: github/codeql-action/init@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4.35.4 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2 + uses: github/codeql-action/autobuild@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4.35.4 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2 + uses: github/codeql-action/analyze@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4.35.4 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 3d4ae352832d..05d522c4226f 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2 + uses: github/codeql-action/upload-sarif@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4.35.4 with: sarif_file: results.sarif From 7146c434d616d656ee040699bb7c3df755142cc5 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Fri, 8 May 2026 19:41:03 +0800 Subject: [PATCH 0966/1068] Bump Go to 1.26.3 Signed-off-by: shenmu.wy --- .go-version | 2 +- api/go.mod | 2 +- cache/go.mod | 2 +- client/pkg/go.mod | 2 +- client/v3/go.mod | 2 +- etcdctl/go.mod | 2 +- etcdutl/go.mod | 2 +- go.mod | 2 +- go.work | 2 +- pkg/go.mod | 2 +- server/go.mod | 2 +- tests/go.mod | 2 +- tools/mod/go.mod | 2 +- tools/rw-heatmaps/go.mod | 2 +- tools/testgrid-analysis/go.mod | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.go-version b/.go-version index c7c3f3333e15..f8f738140964 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.26.2 +1.26.3 diff --git a/api/go.mod b/api/go.mod index 0923538cc998..84ca3f9c36cb 100644 --- a/api/go.mod +++ b/api/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/api/v3 go 1.26 -toolchain go1.26.2 +toolchain go1.26.3 require ( github.com/coreos/go-semver v0.3.1 diff --git a/cache/go.mod b/cache/go.mod index f3932a1bef8a..fa6fe981c6f5 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/cache/v3 go 1.26 -toolchain go1.26.2 +toolchain go1.26.3 require ( github.com/google/go-cmp v0.7.0 diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 43a91bb37aa5..c7ab033030fd 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/pkg/v3 go 1.26 -toolchain go1.26.2 +toolchain go1.26.3 require ( github.com/coreos/go-systemd/v22 v22.7.0 diff --git a/client/v3/go.mod b/client/v3/go.mod index f56fee59f2eb..e5c96dd0b333 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/v3 go 1.26 -toolchain go1.26.2 +toolchain go1.26.3 require ( github.com/coreos/go-semver v0.3.1 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 928943592c69..c50f69a04cd1 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdctl/v3 go 1.26 -toolchain go1.26.2 +toolchain go1.26.3 require ( github.com/bgentry/speakeasy v0.2.0 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 9351be0e939d..7c4864b5f531 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdutl/v3 go 1.26 -toolchain go1.26.2 +toolchain go1.26.3 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/go.mod b/go.mod index 7322a8c66d85..dfba6e71d400 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/v3 go 1.26 -toolchain go1.26.2 +toolchain go1.26.3 replace ( go.etcd.io/etcd/api/v3 => ./api diff --git a/go.work b/go.work index 980f21826291..5073813a8358 100644 --- a/go.work +++ b/go.work @@ -2,7 +2,7 @@ go 1.26 -toolchain go1.26.2 +toolchain go1.26.3 use ( . diff --git a/pkg/go.mod b/pkg/go.mod index 19f87f6f2977..02aa414834fe 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/pkg/v3 go 1.26 -toolchain go1.26.2 +toolchain go1.26.3 require ( github.com/creack/pty v1.1.18 diff --git a/server/go.mod b/server/go.mod index 10f0d9fce63c..6bc01f070f6b 100644 --- a/server/go.mod +++ b/server/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/server/v3 go 1.26 -toolchain go1.26.2 +toolchain go1.26.3 require ( github.com/coreos/go-semver v0.3.1 diff --git a/tests/go.mod b/tests/go.mod index b2ab94f51bd6..54a43220db21 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tests/v3 go 1.26 -toolchain go1.26.2 +toolchain go1.26.3 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 170cf4804244..521407c67e00 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/v3 go 1.26 -toolchain go1.26.2 +toolchain go1.26.3 require ( github.com/alexfalkowski/gocovmerge v1.11.0 diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index d17a525f6471..ef985c61346d 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/rw-heatmaps/v3 go 1.26 -toolchain go1.26.2 +toolchain go1.26.3 require ( github.com/spf13/cobra v1.10.2 diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 6238d71b672a..4c48308afd26 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 go 1.26 -toolchain go1.26.2 +toolchain go1.26.3 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 From 2a6ac6542d178cdf52cf72980583fb85139f8fce Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Mon, 9 Mar 2026 15:12:40 -0400 Subject: [PATCH 0967/1068] client/v3: use pointer header in WatchResponse Keep close/progress responses safe by always providing a non-nil header, and update downstream users to match pointer semantics: - cache demux progress responses - concurrency election observe path - grpcproxy watcher/watch cancel path - etcdctl watch printers Signed-off-by: Wei Fu --- api/etcdserverpb/util.go | 28 ++++++++++++++++++++ api/go.mod | 1 + api/go.sum | 31 +++++++++++++++++++++++ cache/cache.go | 6 ++++- cache/cache_test.go | 19 ++++++++++++++ cache/demux.go | 8 +++--- cache/demux_test.go | 11 ++++++++ cache/watcher.go | 5 ++++ client/v3/concurrency/election.go | 4 +-- client/v3/watch.go | 21 ++++++++++----- etcdctl/ctlv3/command/printer_fields.go | 2 +- etcdctl/ctlv3/command/printer_protobuf.go | 2 +- server/proxy/grpcproxy/watch.go | 2 +- server/proxy/grpcproxy/watcher.go | 6 ++--- 14 files changed, 126 insertions(+), 20 deletions(-) create mode 100644 api/etcdserverpb/util.go diff --git a/api/etcdserverpb/util.go b/api/etcdserverpb/util.go new file mode 100644 index 000000000000..04939280c86a --- /dev/null +++ b/api/etcdserverpb/util.go @@ -0,0 +1,28 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package etcdserverpb + +import proto "github.com/gogo/protobuf/proto" + +// Clone returns a deep copy of h, or an empty ResponseHeader if h is nil. +// +// TODO: replace this with the official protobuf clone helper once this package +// migrates away from gogo/protobuf. +func (h *ResponseHeader) Clone() *ResponseHeader { + if h == nil { + return &ResponseHeader{} + } + return proto.Clone(h).(*ResponseHeader) +} diff --git a/api/go.mod b/api/go.mod index 09925edb514c..0923538cc998 100644 --- a/api/go.mod +++ b/api/go.mod @@ -6,6 +6,7 @@ toolchain go1.26.2 require ( github.com/coreos/go-semver v0.3.1 + github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 github.com/stretchr/testify v1.11.1 diff --git a/api/go.sum b/api/go.sum index d1286dee074c..35846ee741ce 100644 --- a/api/go.sum +++ b/api/go.sum @@ -8,6 +8,8 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -16,6 +18,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -26,6 +30,8 @@ github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0t github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -38,12 +44,37 @@ go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfC go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/cache/cache.go b/cache/cache.go index ed7872e3e8ca..783e15309376 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -126,7 +126,11 @@ func (c *Cache) Watch(ctx context.Context, key string, opts ...clientv3.OpOption pred, err := c.validateWatch(key, op) if err != nil { ch := make(chan clientv3.WatchResponse, 1) - ch <- clientv3.WatchResponse{Canceled: true, CancelReason: err.Error()} + ch <- clientv3.WatchResponse{ + Header: &pb.ResponseHeader{}, + Canceled: true, + CancelReason: err.Error(), + } close(ch) return ch } diff --git a/cache/cache_test.go b/cache/cache_test.go index 53a1523a4a81..d87ab9b86868 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -402,6 +402,25 @@ func TestValidateWatchRange(t *testing.T) { } } +func TestCacheInvalidWatchResponseHasHeader(t *testing.T) { + ready := newReady() + ready.Set() + c := &Cache{ + prefix: "/foo", + ready: ready, + } + + ch := c.Watch(t.Context(), "/bar") + + resp := <-ch + if !resp.Canceled { + t.Fatalf("expected canceled response, got %+v", resp) + } + if resp.Header == nil { + t.Fatal("expected non-nil response header") + } +} + func TestCacheCompactionResync(t *testing.T) { firstSnapshot := &clientv3.GetResponse{ Header: &pb.ResponseHeader{Revision: 5}, diff --git a/cache/demux.go b/cache/demux.go index dca89effd93f..9799c323d7fe 100644 --- a/cache/demux.go +++ b/cache/demux.go @@ -170,7 +170,7 @@ func (d *demux) BroadcastProgress() { return } resp := clientv3.WatchResponse{ - Header: etcdserverpb.ResponseHeader{ + Header: &etcdserverpb.ResponseHeader{ Revision: d.maxRev, }, } @@ -189,7 +189,7 @@ func (d *demux) BroadcastProgressTo(w *watcher) { return } resp := clientv3.WatchResponse{ - Header: etcdserverpb.ResponseHeader{ + Header: &etcdserverpb.ResponseHeader{ Revision: d.maxRev, }, } @@ -242,7 +242,7 @@ func (d *demux) broadcastProgressLocked(progressRev int64) { continue } resp := clientv3.WatchResponse{ - Header: etcdserverpb.ResponseHeader{ + Header: &etcdserverpb.ResponseHeader{ Revision: progressRev, }, } @@ -345,7 +345,7 @@ func (d *demux) resyncLaggingWatchers() { // Send progress to just resync. if resyncSuccess { resp := clientv3.WatchResponse{ - Header: etcdserverpb.ResponseHeader{Revision: d.maxRev}, + Header: &etcdserverpb.ResponseHeader{Revision: d.maxRev}, } if d.maxRev > nextRev && w.enqueueResponse(resp) { nextRev = d.maxRev + 1 diff --git a/cache/demux_test.go b/cache/demux_test.go index 42217e07dd40..950d7a0bbd3b 100644 --- a/cache/demux_test.go +++ b/cache/demux_test.go @@ -336,6 +336,16 @@ func TestSlowWatcherResync(t *testing.T) { } } +func TestWatcherCompactResponseHasHeader(t *testing.T) { + w := newWatcher(1, nil) + + w.Compact(7) + + require.NotNil(t, w.cancelResp.Header) + require.True(t, w.cancelResp.Canceled) + require.Equal(t, int64(7), w.cancelResp.CompactRevision) +} + func TestBroadcastProgress(t *testing.T) { t.Run("sends progress to active watchers", func(t *testing.T) { d := newDemux(16, 10*time.Millisecond) @@ -496,6 +506,7 @@ func readBatches(t *testing.T, w *watcher, n int) (revs []int64, sizes []int) { if len(resp.Events) == 0 { continue } + require.NotNil(t, resp.Header) revs = append(revs, resp.Events[0].Kv.ModRevision) sizes = append(sizes, len(resp.Events)) case <-timeout: diff --git a/cache/watcher.go b/cache/watcher.go index 219911c67853..840398b8a202 100644 --- a/cache/watcher.go +++ b/cache/watcher.go @@ -17,6 +17,7 @@ package cache import ( "sync" + pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" clientv3 "go.etcd.io/etcd/client/v3" ) @@ -51,6 +52,9 @@ func (w *watcher) enqueueResponse(resp clientv3.WatchResponse) bool { } resp.Events = filtered } + if resp.Header == nil { + resp.Header = &pb.ResponseHeader{} + } select { case w.respCh <- resp: return true @@ -61,6 +65,7 @@ func (w *watcher) enqueueResponse(resp clientv3.WatchResponse) bool { func (w *watcher) Compact(compactRev int64) { resp := &clientv3.WatchResponse{ + Header: &pb.ResponseHeader{}, Canceled: true, CompactRevision: compactRev, CancelReason: rpctypes.ErrCompacted.Error(), diff --git a/client/v3/concurrency/election.go b/client/v3/concurrency/election.go index 60f931d25df6..7a9e2754faf7 100644 --- a/client/v3/concurrency/election.go +++ b/client/v3/concurrency/election.go @@ -197,7 +197,7 @@ func (e *Election) observe(ctx context.Context, ch chan<- *v3.GetResponse) { // only accept puts; a delete will make observe() spin for _, ev := range wr.Events { if ev.Type == mvccpb.Event_PUT { - hdr, kv = &wr.Header, ev.Kv + hdr, kv = wr.Header, ev.Kv // may have multiple revs; hdr.rev = the last rev // set to kv's rev in case batch has multiple Puts hdr.Revision = kv.ModRevision @@ -232,7 +232,7 @@ func (e *Election) observe(ctx context.Context, ch chan<- *v3.GetResponse) { } select { case ch <- &v3.GetResponse{ - Header: &wr.Header, + Header: wr.Header, Kvs: []*mvccpb.KeyValue{ev.Kv}}: case <-cctx.Done(): cancel() diff --git a/client/v3/watch.go b/client/v3/watch.go index b0ab779f31ce..90df8d7b67c6 100644 --- a/client/v3/watch.go +++ b/client/v3/watch.go @@ -50,6 +50,13 @@ type Event mvccpb.Event type WatchChan <-chan WatchResponse +func ensureWatchHeader(hdr *pb.ResponseHeader) *pb.ResponseHeader { + if hdr != nil { + return hdr + } + return &pb.ResponseHeader{} +} + type Watcher interface { // Watch watches on a key or prefix. The watched events will be returned // through the returned channel. If revisions waiting to be sent over the @@ -89,7 +96,7 @@ type Watcher interface { } type WatchResponse struct { - Header pb.ResponseHeader + Header *pb.ResponseHeader Events []*Event // CompactRevision is the minimum revision the watcher may receive. @@ -137,7 +144,7 @@ func (wr *WatchResponse) Err() error { // IsProgressNotify returns true if the WatchResponse is progress notification. func (wr *WatchResponse) IsProgressNotify() bool { - return len(wr.Events) == 0 && !wr.Canceled && !wr.Created && wr.CompactRevision == 0 && wr.Header.Revision != 0 + return len(wr.Events) == 0 && !wr.Canceled && !wr.Created && wr.CompactRevision == 0 && wr.Header.GetRevision() != 0 } // watcher implements the Watcher interface @@ -356,7 +363,7 @@ func (w *watcher) Watch(ctx context.Context, key string, opts ...OpOption) Watch case <-donec: ok = false if wgs.closeErr != nil { - closeCh <- WatchResponse{Canceled: true, closeErr: wgs.closeErr} + closeCh <- WatchResponse{Header: &pb.ResponseHeader{}, Canceled: true, closeErr: wgs.closeErr} break } // retry; may have dropped stream from no ctxs @@ -371,7 +378,7 @@ func (w *watcher) Watch(ctx context.Context, key string, opts ...OpOption) Watch case <-ctx.Done(): case <-donec: if wgs.closeErr != nil { - closeCh <- WatchResponse{Canceled: true, closeErr: wgs.closeErr} + closeCh <- WatchResponse{Header: &pb.ResponseHeader{}, Canceled: true, closeErr: wgs.closeErr} break } // retry; may have dropped stream from no ctxs @@ -485,7 +492,7 @@ func (w *watchGRPCStream) closeSubstream(ws *watcherStream) { } // close subscriber's channel if closeErr := w.closeErr; closeErr != nil && ws.initReq.ctx.Err() == nil { - go w.sendCloseSubstream(ws, &WatchResponse{Canceled: true, closeErr: w.closeErr}) + go w.sendCloseSubstream(ws, &WatchResponse{Header: &pb.ResponseHeader{}, Canceled: true, closeErr: w.closeErr}) } else if ws.outc != nil { close(ws.outc) } @@ -718,7 +725,7 @@ func (w *watchGRPCStream) dispatchEvent(pbresp *pb.WatchResponse) bool { } // TODO: return watch ID? wr := &WatchResponse{ - Header: *pbresp.Header, + Header: ensureWatchHeader(pbresp.Header), Events: events, CompactRevision: pbresp.CompactRevision, Created: pbresp.Created, @@ -799,7 +806,7 @@ func (w *watchGRPCStream) serveSubstream(ws *watcherStream, resumec chan struct{ w.wg.Done() }() - emptyWr := &WatchResponse{} + emptyWr := &WatchResponse{Header: &pb.ResponseHeader{}} for { curWr := emptyWr outc := ws.outc diff --git a/etcdctl/ctlv3/command/printer_fields.go b/etcdctl/ctlv3/command/printer_fields.go index 3e97fe4dae70..87543ab30ff7 100644 --- a/etcdctl/ctlv3/command/printer_fields.go +++ b/etcdctl/ctlv3/command/printer_fields.go @@ -100,7 +100,7 @@ func (p *fieldsPrinter) Txn(r v3.TxnResponse) { } func (p *fieldsPrinter) Watch(resp v3.WatchResponse) { - p.hdr(&resp.Header) + p.hdr(resp.Header) for _, e := range resp.Events { fmt.Println(`"Type" :`, e.Type) if e.PrevKv != nil { diff --git a/etcdctl/ctlv3/command/printer_protobuf.go b/etcdctl/ctlv3/command/printer_protobuf.go index 3c839bffc8c1..48689aa2e702 100644 --- a/etcdctl/ctlv3/command/printer_protobuf.go +++ b/etcdctl/ctlv3/command/printer_protobuf.go @@ -42,7 +42,7 @@ func (p *pbPrinter) Watch(r v3.WatchResponse) { evs[i] = (*mvccpb.Event)(ev) } wr := pb.WatchResponse{ - Header: &r.Header, + Header: r.Header, Events: evs, CompactRevision: r.CompactRevision, Canceled: r.Canceled, diff --git a/server/proxy/grpcproxy/watch.go b/server/proxy/grpcproxy/watch.go index 20e00deced16..313d59d6ee37 100644 --- a/server/proxy/grpcproxy/watch.go +++ b/server/proxy/grpcproxy/watch.go @@ -319,7 +319,7 @@ func (wps *watchProxyStream) delete(id int64) { wps.ranges.delete(w) delete(wps.watchers, id) resp := &pb.WatchResponse{ - Header: &w.lastHeader, + Header: w.lastHeader.Clone(), WatchId: id, Canceled: true, } diff --git a/server/proxy/grpcproxy/watcher.go b/server/proxy/grpcproxy/watcher.go index 08e0ab94c443..cdb4a8454e64 100644 --- a/server/proxy/grpcproxy/watcher.go +++ b/server/proxy/grpcproxy/watcher.go @@ -44,7 +44,7 @@ type watcher struct { // nextrev is the minimum expected next event revision. nextrev int64 // lastHeader has the last header sent over the stream. - lastHeader pb.ResponseHeader + lastHeader *pb.ResponseHeader // wps is the parent. wps *watchProxyStream @@ -105,9 +105,9 @@ func (w *watcher) send(wr clientv3.WatchResponse) { return } - w.lastHeader = wr.Header + w.lastHeader = wr.Header.Clone() w.post(&pb.WatchResponse{ - Header: &wr.Header, + Header: w.lastHeader.Clone(), Created: wr.Created, CompactRevision: wr.CompactRevision, Canceled: wr.Canceled, From c631f83e808d313172072d6b36f78819e361b357 Mon Sep 17 00:00:00 2001 From: "kunal.behbudzade" Date: Sun, 26 Apr 2026 17:57:57 +0300 Subject: [PATCH 0968/1068] server: allow non-admin maintenance status Signed-off-by: kunal.behbudzade --- server/etcdserver/api/v3rpc/maintenance.go | 2 +- tests/common/maintenance_auth_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/etcdserver/api/v3rpc/maintenance.go b/server/etcdserver/api/v3rpc/maintenance.go index 9a437bc5bd5b..432b30d96e88 100644 --- a/server/etcdserver/api/v3rpc/maintenance.go +++ b/server/etcdserver/api/v3rpc/maintenance.go @@ -367,7 +367,7 @@ func (ams *authMaintenanceServer) Alarm(ctx context.Context, ar *pb.AlarmRequest } func (ams *authMaintenanceServer) Status(ctx context.Context, ar *pb.StatusRequest) (*pb.StatusResponse, error) { - if err := ams.isPermitted(ctx); err != nil { + if err := ams.requireAuthInfo(ctx); err != nil { return nil, togRPCError(err) } diff --git a/tests/common/maintenance_auth_test.go b/tests/common/maintenance_auth_test.go index 1a0e7b22b39a..87612c82e302 100644 --- a/tests/common/maintenance_auth_test.go +++ b/tests/common/maintenance_auth_test.go @@ -166,7 +166,7 @@ func TestStatusWithRootAuth(t *testing.T) { } func TestStatusWithUserAuth(t *testing.T) { - testStatusWithAuth(t, false, true, WithAuth("user0", "user0Pass")) + testStatusWithAuth(t, false, false, WithAuth("user0", "user0Pass")) } func testStatusWithAuth(t *testing.T, expectConnectionError, expectOperationError bool, opts ...config.ClientOption) { From 0303981d626af98daca34e1ad64454b1b19baa8b Mon Sep 17 00:00:00 2001 From: Jefftree Date: Tue, 5 May 2026 09:57:21 -0400 Subject: [PATCH 0969/1068] tests/integration: verify RangeStream pins revision at stream start Signed-off-by: Jefftree --- tests/integration/v3_grpc_test.go | 63 +++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/tests/integration/v3_grpc_test.go b/tests/integration/v3_grpc_test.go index 9ff38be62c15..7a5ebc763c7d 100644 --- a/tests/integration/v3_grpc_test.go +++ b/tests/integration/v3_grpc_test.go @@ -1765,6 +1765,69 @@ func TestV3RangeStreamPartialThenCompacted(t *testing.T) { } } +func TestV3RangeStreamWriteBetweenChunks(t *testing.T) { + if integration.ThroughProxy { + t.Skip("RangeStream is not supported by the gRPC proxy") + } + + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + defer clus.Terminate(t) + + kvc := integration.ToGRPC(clus.RandClient()).KV + + // Relies on an implementation detail that n > 10 yields multiple chunks. + const nKeys = 25 + var pinnedRev int64 + for i := 0; i < nKeys; i++ { + resp, err := kvc.Put(t.Context(), &pb.PutRequest{ + Key: []byte(fmt.Sprintf("k%02d", i)), + Value: []byte("v"), + }) + require.NoError(t, err) + pinnedRev = resp.Header.Revision + } + + stream, err := kvc.RangeStream(t.Context(), &pb.RangeRequest{ + Key: []byte("k00"), + RangeEnd: []byte("l"), + }) + require.NoError(t, err) + + // Recv before Put so the Put is guaranteed to be after the revision pin. + first, err := stream.Recv() + require.NoError(t, err) + require.NotEmpty(t, first.GetRangeResponse().GetKvs()) + + _, err = kvc.Put(t.Context(), &pb.PutRequest{ + Key: []byte("k99-new"), + Value: []byte("v"), + }) + require.NoError(t, err) + + merged := &pb.RangeResponse{} + proto.Merge(merged, first.RangeResponse) + chunks := 1 + for { + chunk, rerr := stream.Recv() + if errors.Is(rerr, io.EOF) { + break + } + require.NoError(t, rerr) + chunks++ + proto.Merge(merged, chunk.RangeResponse) + } + + require.GreaterOrEqualf(t, chunks, 2, "expected multi-chunk stream, got %d", chunks) + require.Lenf(t, merged.Kvs, nKeys, "stream must return only the keys that existed at pinned revision") + for i, kv := range merged.Kvs { + require.Equal(t, fmt.Sprintf("k%02d", i), string(kv.Key)) + require.Equal(t, "v", string(kv.Value)) + } + require.Equalf(t, pinnedRev, merged.Header.Revision, "stream header revision must equal the latest revision at stream start") + require.Equalf(t, int64(nKeys), merged.Count, "stream Count must reflect the pinned revision") +} + // TestTLSGRPCRejectInsecureClient checks that connection is rejected if server is TLS but not client. func TestTLSGRPCRejectInsecureClient(t *testing.T) { integration.BeforeTest(t) From fcabed06381a3ab73cc547a3e541f6b0135e1582 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Wed, 11 Mar 2026 18:12:00 -0400 Subject: [PATCH 0970/1068] etcdctl/ctlv3/command: use pointer for gogopb responses switch ctlv3 command printer/watch paths to pointer-based gogopb response handling, and read protobuf-backed fields via GetXXX() just in case input is nil. In tests/framework/e2e/etcdctl.go, txn output is decoded into command.TxnResponseJSON and converted with ToProto(), instead of hand-building ResponseOp variants before json.Unmarshal. Co-authored-by: Jordan Liggitt Signed-off-by: Wei Fu --- etcdctl/ctlv3/command/alarm_command.go | 4 +- etcdctl/ctlv3/command/auth_command.go | 2 +- etcdctl/ctlv3/command/del_command.go | 2 +- etcdctl/ctlv3/command/downgrade_command.go | 6 +- etcdctl/ctlv3/command/elect_command.go | 4 +- etcdctl/ctlv3/command/get_command.go | 2 +- etcdctl/ctlv3/command/lease_command.go | 12 +- etcdctl/ctlv3/command/lock_command.go | 2 +- etcdctl/ctlv3/command/member_command.go | 10 +- etcdctl/ctlv3/command/move_leader_command.go | 2 +- etcdctl/ctlv3/command/printer.go | 227 +++++++++--------- etcdctl/ctlv3/command/printer_fields.go | 235 +++++++++++-------- etcdctl/ctlv3/command/printer_json.go | 135 +++++++---- etcdctl/ctlv3/command/printer_json_test.go | 57 ++++- etcdctl/ctlv3/command/printer_protobuf.go | 19 +- etcdctl/ctlv3/command/printer_simple.go | 167 ++++++------- etcdctl/ctlv3/command/printer_table.go | 2 +- etcdctl/ctlv3/command/put_command.go | 2 +- etcdctl/ctlv3/command/role_command.go | 12 +- etcdctl/ctlv3/command/txn_command.go | 2 +- etcdctl/ctlv3/command/user_command.go | 16 +- etcdctl/ctlv3/command/util.go | 6 +- etcdctl/ctlv3/command/watch_command.go | 14 +- tests/framework/e2e/etcdctl.go | 47 +--- tests/framework/e2e/etcdctl_test.go | 30 ++- 25 files changed, 568 insertions(+), 449 deletions(-) diff --git a/etcdctl/ctlv3/command/alarm_command.go b/etcdctl/ctlv3/command/alarm_command.go index 9bf6ffbdab2d..f0bb9f554c1f 100644 --- a/etcdctl/ctlv3/command/alarm_command.go +++ b/etcdctl/ctlv3/command/alarm_command.go @@ -58,7 +58,7 @@ func alarmDisarmCommandFunc(cmd *cobra.Command, args []string) { if err != nil { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.Alarm(*resp) + display.Alarm(resp) } func NewAlarmListCommand() *cobra.Command { @@ -81,5 +81,5 @@ func alarmListCommandFunc(cmd *cobra.Command, args []string) { if err != nil { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.Alarm(*resp) + display.Alarm(resp) } diff --git a/etcdctl/ctlv3/command/auth_command.go b/etcdctl/ctlv3/command/auth_command.go index 6a414f7aacfd..d120a043f81b 100644 --- a/etcdctl/ctlv3/command/auth_command.go +++ b/etcdctl/ctlv3/command/auth_command.go @@ -61,7 +61,7 @@ func authStatusCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.AuthStatus(*result) + display.AuthStatus(result) } func newAuthEnableCommand() *cobra.Command { diff --git a/etcdctl/ctlv3/command/del_command.go b/etcdctl/ctlv3/command/del_command.go index 5fa39f80704d..3b03d7bd8844 100644 --- a/etcdctl/ctlv3/command/del_command.go +++ b/etcdctl/ctlv3/command/del_command.go @@ -57,7 +57,7 @@ func delCommandFunc(cmd *cobra.Command, args []string) { if err != nil { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.Del(*resp) + display.Del(resp) } func getDelOp(args []string) (string, []clientv3.OpOption) { diff --git a/etcdctl/ctlv3/command/downgrade_command.go b/etcdctl/ctlv3/command/downgrade_command.go index c56b7749c74b..3db3e836a067 100644 --- a/etcdctl/ctlv3/command/downgrade_command.go +++ b/etcdctl/ctlv3/command/downgrade_command.go @@ -95,7 +95,7 @@ func downgradeValidateCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.DowngradeValidate(*resp) + display.DowngradeValidate(resp) } // downgradeEnableCommandFunc executes the "downgrade enable" command. @@ -121,7 +121,7 @@ func downgradeEnableCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.DowngradeEnable(*resp) + display.DowngradeEnable(resp) } // downgradeCancelCommandFunc executes the "downgrade cancel" command. @@ -135,5 +135,5 @@ func downgradeCancelCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.DowngradeCancel(*resp) + display.DowngradeCancel(resp) } diff --git a/etcdctl/ctlv3/command/elect_command.go b/etcdctl/ctlv3/command/elect_command.go index 2806912691b4..8c171873e485 100644 --- a/etcdctl/ctlv3/command/elect_command.go +++ b/etcdctl/ctlv3/command/elect_command.go @@ -83,7 +83,7 @@ func observe(c *clientv3.Client, election string) error { go func() { for resp := range e.Observe(ctx) { - display.Get(*resp) + display.Get(resp) } close(donec) }() @@ -125,7 +125,7 @@ func campaign(c *clientv3.Client, election string, prop string) error { if err != nil { return err } - display.Get(*resp) + display.Get(resp) select { case <-donec: diff --git a/etcdctl/ctlv3/command/get_command.go b/etcdctl/ctlv3/command/get_command.go index 94d34dac0060..33da91d9d808 100644 --- a/etcdctl/ctlv3/command/get_command.go +++ b/etcdctl/ctlv3/command/get_command.go @@ -101,7 +101,7 @@ func getCommandFunc(cmd *cobra.Command, args []string) { } dp.valueOnly = true } - display.Get(*resp) + display.Get(resp) } func getGetOp(args []string) (string, []clientv3.OpOption) { diff --git a/etcdctl/ctlv3/command/lease_command.go b/etcdctl/ctlv3/command/lease_command.go index 0fccc5f64767..acc82f22acae 100644 --- a/etcdctl/ctlv3/command/lease_command.go +++ b/etcdctl/ctlv3/command/lease_command.go @@ -72,7 +72,7 @@ func leaseGrantCommandFunc(cmd *cobra.Command, args []string) { if err != nil { cobrautl.ExitWithError(cobrautl.ExitError, fmt.Errorf("failed to grant lease (%w)", err)) } - display.Grant(*resp) + display.Grant(resp) } // NewLeaseRevokeCommand returns the cobra command for "lease revoke". @@ -100,7 +100,7 @@ func leaseRevokeCommandFunc(cmd *cobra.Command, args []string) { if err != nil { cobrautl.ExitWithError(cobrautl.ExitError, fmt.Errorf("failed to revoke lease (%w)", err)) } - display.Revoke(id, *resp) + display.Revoke(id, resp) } var timeToLiveKeys bool @@ -131,7 +131,7 @@ func leaseTimeToLiveCommandFunc(cmd *cobra.Command, args []string) { if rerr != nil { cobrautl.ExitWithError(cobrautl.ExitBadConnection, rerr) } - display.TimeToLive(*resp, timeToLiveKeys) + display.TimeToLive(resp, timeToLiveKeys) } // NewLeaseListCommand returns the cobra command for "lease list". @@ -150,7 +150,7 @@ func leaseListCommandFunc(cmd *cobra.Command, args []string) { if rerr != nil { cobrautl.ExitWithError(cobrautl.ExitBadConnection, rerr) } - display.Leases(*resp) + display.Leases(resp) } var leaseKeepAliveOnce bool @@ -182,7 +182,7 @@ func leaseKeepAliveCommandFunc(cmd *cobra.Command, args []string) { if kerr != nil { cobrautl.ExitWithError(cobrautl.ExitBadConnection, kerr) } - display.KeepAlive(*respc) + display.KeepAlive(respc) return } @@ -191,7 +191,7 @@ func leaseKeepAliveCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitBadConnection, kerr) } for resp := range respc { - display.KeepAlive(*resp) + display.KeepAlive(resp) } if _, ok := (display).(*simplePrinter); ok { diff --git a/etcdctl/ctlv3/command/lock_command.go b/etcdctl/ctlv3/command/lock_command.go index 0faa76fe64c7..63641eba05d3 100644 --- a/etcdctl/ctlv3/command/lock_command.go +++ b/etcdctl/ctlv3/command/lock_command.go @@ -112,7 +112,7 @@ func lockUntilSignal(c *clientv3.Client, lockname string, cmdArgs []string) erro if len(k.Kvs) == 0 { return errors.New("lock lost on init") } - display.Get(*k) + display.Get(k) select { case <-donec: diff --git a/etcdctl/ctlv3/command/member_command.go b/etcdctl/ctlv3/command/member_command.go index 0ead08f43df5..871c5822a17a 100644 --- a/etcdctl/ctlv3/command/member_command.go +++ b/etcdctl/ctlv3/command/member_command.go @@ -160,7 +160,7 @@ func memberAddCommandFunc(cmd *cobra.Command, args []string) { } newID := resp.Member.ID - display.MemberAdd(*resp) + display.MemberAdd(resp) if _, ok := (display).(*simplePrinter); ok { var conf []string @@ -199,7 +199,7 @@ func memberRemoveCommandFunc(cmd *cobra.Command, args []string) { if err != nil { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.MemberRemove(id, *resp) + display.MemberRemove(id, resp) } // memberUpdateCommandFunc executes the "member update" command. @@ -226,7 +226,7 @@ func memberUpdateCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.MemberUpdate(id, *resp) + display.MemberUpdate(id, resp) } // memberListCommandFunc executes the "member list" command. @@ -242,7 +242,7 @@ func memberListCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.MemberList(*resp) + display.MemberList(resp) } // memberPromoteCommandFunc executes the "member promote" command. @@ -262,5 +262,5 @@ func memberPromoteCommandFunc(cmd *cobra.Command, args []string) { if err != nil { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.MemberPromote(id, *resp) + display.MemberPromote(id, resp) } diff --git a/etcdctl/ctlv3/command/move_leader_command.go b/etcdctl/ctlv3/command/move_leader_command.go index 320d9ff3926f..4b74cf23969e 100644 --- a/etcdctl/ctlv3/command/move_leader_command.go +++ b/etcdctl/ctlv3/command/move_leader_command.go @@ -81,5 +81,5 @@ func transferLeadershipCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.MoveLeader(leaderID, target, *resp) + display.MoveLeader(leaderID, target, resp) } diff --git a/etcdctl/ctlv3/command/printer.go b/etcdctl/ctlv3/command/printer.go index 12460259eb33..f3514df658ed 100644 --- a/etcdctl/ctlv3/command/printer.go +++ b/etcdctl/ctlv3/command/printer.go @@ -28,51 +28,51 @@ import ( ) type printer interface { - Del(v3.DeleteResponse) - Get(v3.GetResponse) - Put(v3.PutResponse) - Txn(v3.TxnResponse) - Watch(v3.WatchResponse) - - Grant(r v3.LeaseGrantResponse) - Revoke(id v3.LeaseID, r v3.LeaseRevokeResponse) - KeepAlive(r v3.LeaseKeepAliveResponse) - TimeToLive(r v3.LeaseTimeToLiveResponse, keys bool) - Leases(r v3.LeaseLeasesResponse) - - MemberAdd(v3.MemberAddResponse) - MemberRemove(id uint64, r v3.MemberRemoveResponse) - MemberUpdate(id uint64, r v3.MemberUpdateResponse) - MemberPromote(id uint64, r v3.MemberPromoteResponse) - MemberList(v3.MemberListResponse) + Del(*v3.DeleteResponse) + Get(*v3.GetResponse) + Put(*v3.PutResponse) + Txn(*v3.TxnResponse) + Watch(*v3.WatchResponse) + + Grant(r *v3.LeaseGrantResponse) + Revoke(id v3.LeaseID, r *v3.LeaseRevokeResponse) + KeepAlive(r *v3.LeaseKeepAliveResponse) + TimeToLive(r *v3.LeaseTimeToLiveResponse, keys bool) + Leases(r *v3.LeaseLeasesResponse) + + MemberAdd(*v3.MemberAddResponse) + MemberRemove(id uint64, r *v3.MemberRemoveResponse) + MemberUpdate(id uint64, r *v3.MemberUpdateResponse) + MemberPromote(id uint64, r *v3.MemberPromoteResponse) + MemberList(*v3.MemberListResponse) EndpointHealth([]epHealth) EndpointStatus([]epStatus) EndpointHashKV([]epHashKV) - MoveLeader(leader, target uint64, r v3.MoveLeaderResponse) - - DowngradeValidate(r v3.DowngradeResponse) - DowngradeEnable(r v3.DowngradeResponse) - DowngradeCancel(r v3.DowngradeResponse) - - Alarm(v3.AlarmResponse) - - RoleAdd(role string, r v3.AuthRoleAddResponse) - RoleGet(role string, r v3.AuthRoleGetResponse) - RoleDelete(role string, r v3.AuthRoleDeleteResponse) - RoleList(v3.AuthRoleListResponse) - RoleGrantPermission(role string, r v3.AuthRoleGrantPermissionResponse) - RoleRevokePermission(role string, key string, end string, r v3.AuthRoleRevokePermissionResponse) - - UserAdd(user string, r v3.AuthUserAddResponse) - UserGet(user string, r v3.AuthUserGetResponse) - UserList(r v3.AuthUserListResponse) - UserChangePassword(v3.AuthUserChangePasswordResponse) - UserGrantRole(user string, role string, r v3.AuthUserGrantRoleResponse) - UserRevokeRole(user string, role string, r v3.AuthUserRevokeRoleResponse) - UserDelete(user string, r v3.AuthUserDeleteResponse) - - AuthStatus(r v3.AuthStatusResponse) + MoveLeader(leader, target uint64, r *v3.MoveLeaderResponse) + + DowngradeValidate(r *v3.DowngradeResponse) + DowngradeEnable(r *v3.DowngradeResponse) + DowngradeCancel(r *v3.DowngradeResponse) + + Alarm(*v3.AlarmResponse) + + RoleAdd(role string, r *v3.AuthRoleAddResponse) + RoleGet(role string, r *v3.AuthRoleGetResponse) + RoleDelete(role string, r *v3.AuthRoleDeleteResponse) + RoleList(*v3.AuthRoleListResponse) + RoleGrantPermission(role string, r *v3.AuthRoleGrantPermissionResponse) + RoleRevokePermission(role string, key string, end string, r *v3.AuthRoleRevokePermissionResponse) + + UserAdd(user string, r *v3.AuthUserAddResponse) + UserGet(user string, r *v3.AuthUserGetResponse) + UserList(r *v3.AuthUserListResponse) + UserChangePassword(*v3.AuthUserChangePasswordResponse) + UserGrantRole(user string, role string, r *v3.AuthUserGrantRoleResponse) + UserRevokeRole(user string, role string, r *v3.AuthUserRevokeRoleResponse) + UserDelete(user string, r *v3.AuthUserDeleteResponse) + + AuthStatus(r *v3.AuthStatusResponse) } func NewPrinter(printerType string, isHex bool) printer { @@ -96,72 +96,72 @@ type printerRPC struct { p func(any) } -func (p *printerRPC) Del(r v3.DeleteResponse) { p.p((*pb.DeleteRangeResponse)(&r)) } -func (p *printerRPC) Get(r v3.GetResponse) { p.p((*pb.RangeResponse)(&r)) } -func (p *printerRPC) Put(r v3.PutResponse) { p.p((*pb.PutResponse)(&r)) } -func (p *printerRPC) Txn(r v3.TxnResponse) { p.p((*pb.TxnResponse)(&r)) } -func (p *printerRPC) Watch(r v3.WatchResponse) { p.p(&r) } - -func (p *printerRPC) Grant(r v3.LeaseGrantResponse) { p.p(r) } -func (p *printerRPC) Revoke(id v3.LeaseID, r v3.LeaseRevokeResponse) { p.p(r) } -func (p *printerRPC) KeepAlive(r v3.LeaseKeepAliveResponse) { p.p(r) } -func (p *printerRPC) TimeToLive(r v3.LeaseTimeToLiveResponse, keys bool) { p.p(&r) } -func (p *printerRPC) Leases(r v3.LeaseLeasesResponse) { p.p(&r) } - -func (p *printerRPC) MemberAdd(r v3.MemberAddResponse) { p.p((*pb.MemberAddResponse)(&r)) } -func (p *printerRPC) MemberRemove(id uint64, r v3.MemberRemoveResponse) { - p.p((*pb.MemberRemoveResponse)(&r)) +func (p *printerRPC) Del(r *v3.DeleteResponse) { p.p((*pb.DeleteRangeResponse)(r)) } +func (p *printerRPC) Get(r *v3.GetResponse) { p.p((*pb.RangeResponse)(r)) } +func (p *printerRPC) Put(r *v3.PutResponse) { p.p((*pb.PutResponse)(r)) } +func (p *printerRPC) Txn(r *v3.TxnResponse) { p.p((*pb.TxnResponse)(r)) } +func (p *printerRPC) Watch(r *v3.WatchResponse) { p.p(r) } + +func (p *printerRPC) Grant(r *v3.LeaseGrantResponse) { p.p(r) } +func (p *printerRPC) Revoke(id v3.LeaseID, r *v3.LeaseRevokeResponse) { p.p(r) } +func (p *printerRPC) KeepAlive(r *v3.LeaseKeepAliveResponse) { p.p(r) } +func (p *printerRPC) TimeToLive(r *v3.LeaseTimeToLiveResponse, keys bool) { p.p(r) } +func (p *printerRPC) Leases(r *v3.LeaseLeasesResponse) { p.p(r) } + +func (p *printerRPC) MemberAdd(r *v3.MemberAddResponse) { p.p((*pb.MemberAddResponse)(r)) } +func (p *printerRPC) MemberRemove(id uint64, r *v3.MemberRemoveResponse) { + p.p((*pb.MemberRemoveResponse)(r)) } -func (p *printerRPC) MemberUpdate(id uint64, r v3.MemberUpdateResponse) { - p.p((*pb.MemberUpdateResponse)(&r)) +func (p *printerRPC) MemberUpdate(id uint64, r *v3.MemberUpdateResponse) { + p.p((*pb.MemberUpdateResponse)(r)) } -func (p *printerRPC) MemberPromote(id uint64, r v3.MemberPromoteResponse) { - p.p((*pb.MemberPromoteResponse)(&r)) +func (p *printerRPC) MemberPromote(id uint64, r *v3.MemberPromoteResponse) { + p.p((*pb.MemberPromoteResponse)(r)) } -func (p *printerRPC) MemberList(r v3.MemberListResponse) { p.p((*pb.MemberListResponse)(&r)) } -func (p *printerRPC) Alarm(r v3.AlarmResponse) { p.p((*pb.AlarmResponse)(&r)) } -func (p *printerRPC) MoveLeader(leader, target uint64, r v3.MoveLeaderResponse) { - p.p((*pb.MoveLeaderResponse)(&r)) +func (p *printerRPC) MemberList(r *v3.MemberListResponse) { p.p((*pb.MemberListResponse)(r)) } +func (p *printerRPC) Alarm(r *v3.AlarmResponse) { p.p((*pb.AlarmResponse)(r)) } +func (p *printerRPC) MoveLeader(leader, target uint64, r *v3.MoveLeaderResponse) { + p.p((*pb.MoveLeaderResponse)(r)) } -func (p *printerRPC) DowngradeValidate(r v3.DowngradeResponse) { p.p((*pb.DowngradeResponse)(&r)) } -func (p *printerRPC) DowngradeEnable(r v3.DowngradeResponse) { p.p((*pb.DowngradeResponse)(&r)) } -func (p *printerRPC) DowngradeCancel(r v3.DowngradeResponse) { p.p((*pb.DowngradeResponse)(&r)) } -func (p *printerRPC) RoleAdd(_ string, r v3.AuthRoleAddResponse) { p.p((*pb.AuthRoleAddResponse)(&r)) } -func (p *printerRPC) RoleGet(_ string, r v3.AuthRoleGetResponse) { p.p((*pb.AuthRoleGetResponse)(&r)) } -func (p *printerRPC) RoleDelete(_ string, r v3.AuthRoleDeleteResponse) { - p.p((*pb.AuthRoleDeleteResponse)(&r)) +func (p *printerRPC) DowngradeValidate(r *v3.DowngradeResponse) { p.p((*pb.DowngradeResponse)(r)) } +func (p *printerRPC) DowngradeEnable(r *v3.DowngradeResponse) { p.p((*pb.DowngradeResponse)(r)) } +func (p *printerRPC) DowngradeCancel(r *v3.DowngradeResponse) { p.p((*pb.DowngradeResponse)(r)) } +func (p *printerRPC) RoleAdd(_ string, r *v3.AuthRoleAddResponse) { p.p((*pb.AuthRoleAddResponse)(r)) } +func (p *printerRPC) RoleGet(_ string, r *v3.AuthRoleGetResponse) { p.p((*pb.AuthRoleGetResponse)(r)) } +func (p *printerRPC) RoleDelete(_ string, r *v3.AuthRoleDeleteResponse) { + p.p((*pb.AuthRoleDeleteResponse)(r)) } -func (p *printerRPC) RoleList(r v3.AuthRoleListResponse) { p.p((*pb.AuthRoleListResponse)(&r)) } -func (p *printerRPC) RoleGrantPermission(_ string, r v3.AuthRoleGrantPermissionResponse) { - p.p((*pb.AuthRoleGrantPermissionResponse)(&r)) +func (p *printerRPC) RoleList(r *v3.AuthRoleListResponse) { p.p((*pb.AuthRoleListResponse)(r)) } +func (p *printerRPC) RoleGrantPermission(_ string, r *v3.AuthRoleGrantPermissionResponse) { + p.p((*pb.AuthRoleGrantPermissionResponse)(r)) } -func (p *printerRPC) RoleRevokePermission(_ string, _ string, _ string, r v3.AuthRoleRevokePermissionResponse) { - p.p((*pb.AuthRoleRevokePermissionResponse)(&r)) +func (p *printerRPC) RoleRevokePermission(_ string, _ string, _ string, r *v3.AuthRoleRevokePermissionResponse) { + p.p((*pb.AuthRoleRevokePermissionResponse)(r)) } -func (p *printerRPC) UserAdd(_ string, r v3.AuthUserAddResponse) { p.p((*pb.AuthUserAddResponse)(&r)) } -func (p *printerRPC) UserGet(_ string, r v3.AuthUserGetResponse) { p.p((*pb.AuthUserGetResponse)(&r)) } -func (p *printerRPC) UserList(r v3.AuthUserListResponse) { p.p((*pb.AuthUserListResponse)(&r)) } -func (p *printerRPC) UserChangePassword(r v3.AuthUserChangePasswordResponse) { - p.p((*pb.AuthUserChangePasswordResponse)(&r)) +func (p *printerRPC) UserAdd(_ string, r *v3.AuthUserAddResponse) { p.p((*pb.AuthUserAddResponse)(r)) } +func (p *printerRPC) UserGet(_ string, r *v3.AuthUserGetResponse) { p.p((*pb.AuthUserGetResponse)(r)) } +func (p *printerRPC) UserList(r *v3.AuthUserListResponse) { p.p((*pb.AuthUserListResponse)(r)) } +func (p *printerRPC) UserChangePassword(r *v3.AuthUserChangePasswordResponse) { + p.p((*pb.AuthUserChangePasswordResponse)(r)) } -func (p *printerRPC) UserGrantRole(_ string, _ string, r v3.AuthUserGrantRoleResponse) { - p.p((*pb.AuthUserGrantRoleResponse)(&r)) +func (p *printerRPC) UserGrantRole(_ string, _ string, r *v3.AuthUserGrantRoleResponse) { + p.p((*pb.AuthUserGrantRoleResponse)(r)) } -func (p *printerRPC) UserRevokeRole(_ string, _ string, r v3.AuthUserRevokeRoleResponse) { - p.p((*pb.AuthUserRevokeRoleResponse)(&r)) +func (p *printerRPC) UserRevokeRole(_ string, _ string, r *v3.AuthUserRevokeRoleResponse) { + p.p((*pb.AuthUserRevokeRoleResponse)(r)) } -func (p *printerRPC) UserDelete(_ string, r v3.AuthUserDeleteResponse) { - p.p((*pb.AuthUserDeleteResponse)(&r)) +func (p *printerRPC) UserDelete(_ string, r *v3.AuthUserDeleteResponse) { + p.p((*pb.AuthUserDeleteResponse)(r)) } -func (p *printerRPC) AuthStatus(r v3.AuthStatusResponse) { - p.p((*pb.AuthStatusResponse)(&r)) +func (p *printerRPC) AuthStatus(r *v3.AuthStatusResponse) { + p.p((*pb.AuthStatusResponse)(r)) } type printerUnsupported struct{ printerRPC } @@ -177,13 +177,16 @@ func (p *printerUnsupported) EndpointHealth([]epHealth) { p.p(nil) } func (p *printerUnsupported) EndpointStatus([]epStatus) { p.p(nil) } func (p *printerUnsupported) EndpointHashKV([]epHashKV) { p.p(nil) } -func (p *printerUnsupported) MoveLeader(leader, target uint64, r v3.MoveLeaderResponse) { p.p(nil) } -func (p *printerUnsupported) DowngradeValidate(r v3.DowngradeResponse) { p.p(nil) } -func (p *printerUnsupported) DowngradeEnable(r v3.DowngradeResponse) { p.p(nil) } -func (p *printerUnsupported) DowngradeCancel(r v3.DowngradeResponse) { p.p(nil) } +func (p *printerUnsupported) MoveLeader(leader, target uint64, r *v3.MoveLeaderResponse) { p.p(nil) } +func (p *printerUnsupported) DowngradeValidate(r *v3.DowngradeResponse) { p.p(nil) } +func (p *printerUnsupported) DowngradeEnable(r *v3.DowngradeResponse) { p.p(nil) } +func (p *printerUnsupported) DowngradeCancel(r *v3.DowngradeResponse) { p.p(nil) } -func makeMemberListTable(r v3.MemberListResponse) (hdr []string, rows [][]string) { +func makeMemberListTable(r *v3.MemberListResponse) (hdr []string, rows [][]string) { hdr = []string{"ID", "Status", "Name", "Peer Addrs", "Client Addrs", "Is Learner"} + if r == nil { + return hdr, rows + } for _, m := range r.Members { status := "started" if len(m.Name) == 0 { @@ -224,23 +227,24 @@ func makeEndpointStatusTable(statusList []epStatus) (hdr []string, rows [][]stri "raft index", "raft applied index", "errors", "downgrade target version", "downgrade enabled", } for _, status := range statusList { + resp := (*pb.StatusResponse)(status.Resp) rows = append(rows, []string{ status.Ep, - fmt.Sprintf("%x", status.Resp.Header.MemberId), - status.Resp.Version, - status.Resp.StorageVersion, - humanize.Bytes(uint64(status.Resp.DbSize)), - humanize.Bytes(uint64(status.Resp.DbSizeInUse)), - fmt.Sprintf("%d%%", int(float64(100-(status.Resp.DbSizeInUse*100/status.Resp.DbSize)))), - humanize.Bytes(uint64(status.Resp.DbSizeQuota)), - fmt.Sprint(status.Resp.Leader == status.Resp.Header.MemberId), - fmt.Sprint(status.Resp.IsLearner), - fmt.Sprint(status.Resp.RaftTerm), - fmt.Sprint(status.Resp.RaftIndex), - fmt.Sprint(status.Resp.RaftAppliedIndex), - fmt.Sprint(strings.Join(status.Resp.Errors, ", ")), - status.Resp.DowngradeInfo.GetTargetVersion(), - strconv.FormatBool(status.Resp.DowngradeInfo.GetEnabled()), + fmt.Sprintf("%x", resp.GetHeader().GetMemberId()), + resp.GetVersion(), + resp.GetStorageVersion(), + humanize.Bytes(uint64(resp.GetDbSize())), + humanize.Bytes(uint64(resp.GetDbSizeInUse())), + fmt.Sprintf("%d%%", int(float64(100-(resp.GetDbSizeInUse()*100/resp.GetDbSize())))), + humanize.Bytes(uint64(resp.GetDbSizeQuota())), + fmt.Sprint(resp.GetLeader() == resp.GetHeader().GetMemberId()), + fmt.Sprint(resp.GetIsLearner()), + fmt.Sprint(resp.GetRaftTerm()), + fmt.Sprint(resp.GetRaftIndex()), + fmt.Sprint(resp.GetRaftAppliedIndex()), + fmt.Sprint(strings.Join(resp.GetErrors(), ", ")), + resp.GetDowngradeInfo().GetTargetVersion(), + strconv.FormatBool(resp.GetDowngradeInfo().GetEnabled()), }) } return hdr, rows @@ -249,10 +253,11 @@ func makeEndpointStatusTable(statusList []epStatus) (hdr []string, rows [][]stri func makeEndpointHashKVTable(hashList []epHashKV) (hdr []string, rows [][]string) { hdr = []string{"endpoint", "hash", "hash_revision"} for _, h := range hashList { + resp := (*pb.HashKVResponse)(h.Resp) rows = append(rows, []string{ h.Ep, - fmt.Sprint(h.Resp.Hash), - fmt.Sprint(h.Resp.HashRevision), + fmt.Sprint(resp.GetHash()), + fmt.Sprint(resp.GetHashRevision()), }) } return hdr, rows diff --git a/etcdctl/ctlv3/command/printer_fields.go b/etcdctl/ctlv3/command/printer_fields.go index 87543ab30ff7..5feafe70e7a6 100644 --- a/etcdctl/ctlv3/command/printer_fields.go +++ b/etcdctl/ctlv3/command/printer_fields.go @@ -29,88 +29,96 @@ type fieldsPrinter struct { } func (p *fieldsPrinter) kv(pfx string, kv *spb.KeyValue) { - fmt.Printf("\"%sKey\" : %q\n", pfx, string(kv.Key)) - fmt.Printf("\"%sCreateRevision\" : %d\n", pfx, kv.CreateRevision) - fmt.Printf("\"%sModRevision\" : %d\n", pfx, kv.ModRevision) - fmt.Printf("\"%sVersion\" : %d\n", pfx, kv.Version) - fmt.Printf("\"%sValue\" : %q\n", pfx, string(kv.Value)) + fmt.Printf("\"%sKey\" : %q\n", pfx, string(kv.GetKey())) + fmt.Printf("\"%sCreateRevision\" : %d\n", pfx, kv.GetCreateRevision()) + fmt.Printf("\"%sModRevision\" : %d\n", pfx, kv.GetModRevision()) + fmt.Printf("\"%sVersion\" : %d\n", pfx, kv.GetVersion()) + fmt.Printf("\"%sValue\" : %q\n", pfx, string(kv.GetValue())) if p.isHex { - fmt.Printf("\"%sLease\" : %016x\n", pfx, kv.Lease) + fmt.Printf("\"%sLease\" : %016x\n", pfx, kv.GetLease()) } else { - fmt.Printf("\"%sLease\" : %d\n", pfx, kv.Lease) + fmt.Printf("\"%sLease\" : %d\n", pfx, kv.GetLease()) } } func (p *fieldsPrinter) hdr(h *pb.ResponseHeader) { if p.isHex { - fmt.Println(`"ClusterID" :`, types.ID(h.ClusterId)) - fmt.Println(`"MemberID" :`, types.ID(h.MemberId)) + fmt.Println(`"ClusterID" :`, types.ID(h.GetClusterId())) + fmt.Println(`"MemberID" :`, types.ID(h.GetMemberId())) } else { - fmt.Println(`"ClusterID" :`, h.ClusterId) - fmt.Println(`"MemberID" :`, h.MemberId) + fmt.Println(`"ClusterID" :`, h.GetClusterId()) + fmt.Println(`"MemberID" :`, h.GetMemberId()) } // Revision only makes sense for k/v responses. For other kinds of // responses, i.e. MemberList, usually the revision isn't populated // at all; so it would be better to hide this field in these cases. - if h.Revision > 0 { - fmt.Println(`"Revision" :`, h.Revision) + if h.GetRevision() > 0 { + fmt.Println(`"Revision" :`, h.GetRevision()) } - fmt.Println(`"RaftTerm" :`, h.RaftTerm) + fmt.Println(`"RaftTerm" :`, h.GetRaftTerm()) } -func (p *fieldsPrinter) Del(r v3.DeleteResponse) { - p.hdr(r.Header) - fmt.Println(`"Deleted" :`, r.Deleted) - for _, kv := range r.PrevKvs { +func (p *fieldsPrinter) Del(r *v3.DeleteResponse) { + resp := (*pb.DeleteRangeResponse)(r) + p.hdr(resp.GetHeader()) + fmt.Println(`"Deleted" :`, resp.GetDeleted()) + for _, kv := range resp.GetPrevKvs() { p.kv("Prev", kv) } } -func (p *fieldsPrinter) Get(r v3.GetResponse) { - p.hdr(r.Header) - for _, kv := range r.Kvs { +func (p *fieldsPrinter) Get(r *v3.GetResponse) { + resp := (*pb.RangeResponse)(r) + p.hdr(resp.GetHeader()) + for _, kv := range resp.GetKvs() { p.kv("", kv) } - fmt.Println(`"More" :`, r.More) - fmt.Println(`"Count" :`, r.Count) + fmt.Println(`"More" :`, resp.GetMore()) + fmt.Println(`"Count" :`, resp.GetCount()) } -func (p *fieldsPrinter) Put(r v3.PutResponse) { - p.hdr(r.Header) - if r.PrevKv != nil { - p.kv("Prev", r.PrevKv) +func (p *fieldsPrinter) Put(r *v3.PutResponse) { + resp := (*pb.PutResponse)(r) + p.hdr(resp.GetHeader()) + if resp.GetPrevKv() != nil { + p.kv("Prev", resp.GetPrevKv()) } } -func (p *fieldsPrinter) Txn(r v3.TxnResponse) { - p.hdr(r.Header) - fmt.Println(`"Succeeded" :`, r.Succeeded) - for _, resp := range r.Responses { - switch v := resp.Response.(type) { +func (p *fieldsPrinter) Txn(r *v3.TxnResponse) { + resp := (*pb.TxnResponse)(r) + p.hdr(resp.GetHeader()) + fmt.Println(`"Succeeded" :`, resp.GetSucceeded()) + for _, opResp := range resp.GetResponses() { + switch v := opResp.GetResponse().(type) { case *pb.ResponseOp_ResponseDeleteRange: - p.Del((v3.DeleteResponse)(*v.ResponseDeleteRange)) + p.Del((*v3.DeleteResponse)(v.ResponseDeleteRange)) case *pb.ResponseOp_ResponsePut: - p.Put((v3.PutResponse)(*v.ResponsePut)) + p.Put((*v3.PutResponse)(v.ResponsePut)) case *pb.ResponseOp_ResponseRange: - p.Get((v3.GetResponse)(*v.ResponseRange)) + p.Get((*v3.GetResponse)(v.ResponseRange)) default: fmt.Printf("\"Unknown\" : %q\n", fmt.Sprintf("%+v", v)) } } } -func (p *fieldsPrinter) Watch(resp v3.WatchResponse) { +func (p *fieldsPrinter) Watch(resp *v3.WatchResponse) { + if resp == nil { + return + } + p.hdr(resp.Header) - for _, e := range resp.Events { - fmt.Println(`"Type" :`, e.Type) - if e.PrevKv != nil { - p.kv("Prev", e.PrevKv) + for _, ev := range resp.Events { + fmt.Println(`"Type" :`, ev.GetType()) + if ev.GetPrevKv() != nil { + p.kv("Prev", ev.GetPrevKv()) } - p.kv("", e.Kv) + p.kv("", ev.GetKv()) } } -func (p *fieldsPrinter) Grant(r v3.LeaseGrantResponse) { +func (p *fieldsPrinter) Grant(r *v3.LeaseGrantResponse) { p.hdr(r.ResponseHeader) if p.isHex { fmt.Printf("\"ID\" : %016x\n", r.ID) @@ -120,11 +128,11 @@ func (p *fieldsPrinter) Grant(r v3.LeaseGrantResponse) { fmt.Println(`"TTL" :`, r.TTL) } -func (p *fieldsPrinter) Revoke(id v3.LeaseID, r v3.LeaseRevokeResponse) { - p.hdr(r.Header) +func (p *fieldsPrinter) Revoke(id v3.LeaseID, r *v3.LeaseRevokeResponse) { + p.hdr((*pb.LeaseRevokeResponse)(r).GetHeader()) } -func (p *fieldsPrinter) KeepAlive(r v3.LeaseKeepAliveResponse) { +func (p *fieldsPrinter) KeepAlive(r *v3.LeaseKeepAliveResponse) { p.hdr(r.ResponseHeader) if p.isHex { fmt.Printf("\"ID\" : %016x\n", r.ID) @@ -134,7 +142,7 @@ func (p *fieldsPrinter) KeepAlive(r v3.LeaseKeepAliveResponse) { fmt.Println(`"TTL" :`, r.TTL) } -func (p *fieldsPrinter) TimeToLive(r v3.LeaseTimeToLiveResponse, keys bool) { +func (p *fieldsPrinter) TimeToLive(r *v3.LeaseTimeToLiveResponse, keys bool) { p.hdr(r.ResponseHeader) if p.isHex { fmt.Printf("\"ID\" : %016x\n", r.ID) @@ -148,7 +156,7 @@ func (p *fieldsPrinter) TimeToLive(r v3.LeaseTimeToLiveResponse, keys bool) { } } -func (p *fieldsPrinter) Leases(r v3.LeaseLeasesResponse) { +func (p *fieldsPrinter) Leases(r *v3.LeaseLeasesResponse) { p.hdr(r.ResponseHeader) for _, item := range r.Leases { if p.isHex { @@ -159,22 +167,23 @@ func (p *fieldsPrinter) Leases(r v3.LeaseLeasesResponse) { } } -func (p *fieldsPrinter) MemberList(r v3.MemberListResponse) { - p.hdr(r.Header) - for _, m := range r.Members { +func (p *fieldsPrinter) MemberList(r *v3.MemberListResponse) { + resp := (*pb.MemberListResponse)(r) + p.hdr(resp.GetHeader()) + for _, m := range resp.GetMembers() { if p.isHex { - fmt.Println(`"ID" :`, types.ID(m.ID)) + fmt.Println(`"ID" :`, types.ID(m.GetID())) } else { - fmt.Println(`"ID" :`, m.ID) + fmt.Println(`"ID" :`, m.GetID()) } - fmt.Printf("\"Name\" : %q\n", m.Name) - for _, u := range m.PeerURLs { + fmt.Printf("\"Name\" : %q\n", m.GetName()) + for _, u := range m.GetPeerURLs() { fmt.Printf("\"PeerURL\" : %q\n", u) } - for _, u := range m.ClientURLs { + for _, u := range m.GetClientURLs() { fmt.Printf("\"ClientURL\" : %q\n", u) } - fmt.Println(`"IsLearner" :`, m.IsLearner) + fmt.Println(`"IsLearner" :`, m.GetIsLearner()) fmt.Println() } } @@ -191,81 +200,103 @@ func (p *fieldsPrinter) EndpointHealth(hs []epHealth) { func (p *fieldsPrinter) EndpointStatus(eps []epStatus) { for _, ep := range eps { - p.hdr(ep.Resp.Header) - fmt.Printf("\"Version\" : %q\n", ep.Resp.Version) - fmt.Printf("\"StorageVersion\" : %q\n", ep.Resp.StorageVersion) - fmt.Println(`"DBSize" :`, ep.Resp.DbSize) - fmt.Println(`"DBSizeInUse" :`, ep.Resp.DbSizeInUse) - fmt.Println(`"DBSizeQuota" :`, ep.Resp.DbSizeQuota) - fmt.Println(`"Leader" :`, ep.Resp.Leader) - fmt.Println(`"IsLearner" :`, ep.Resp.IsLearner) - fmt.Println(`"RaftIndex" :`, ep.Resp.RaftIndex) - fmt.Println(`"RaftTerm" :`, ep.Resp.RaftTerm) - fmt.Println(`"RaftAppliedIndex" :`, ep.Resp.RaftAppliedIndex) - fmt.Println(`"Errors" :`, ep.Resp.Errors) + resp := (*pb.StatusResponse)(ep.Resp) + p.hdr(resp.GetHeader()) + fmt.Printf("\"Version\" : %q\n", resp.GetVersion()) + fmt.Printf("\"StorageVersion\" : %q\n", resp.GetStorageVersion()) + fmt.Println(`"DBSize" :`, resp.GetDbSize()) + fmt.Println(`"DBSizeInUse" :`, resp.GetDbSizeInUse()) + fmt.Println(`"DBSizeQuota" :`, resp.GetDbSizeQuota()) + fmt.Println(`"Leader" :`, resp.GetLeader()) + fmt.Println(`"IsLearner" :`, resp.GetIsLearner()) + fmt.Println(`"RaftIndex" :`, resp.GetRaftIndex()) + fmt.Println(`"RaftTerm" :`, resp.GetRaftTerm()) + fmt.Println(`"RaftAppliedIndex" :`, resp.GetRaftAppliedIndex()) + fmt.Println(`"Errors" :`, resp.GetErrors()) fmt.Printf("\"Endpoint\" : %q\n", ep.Ep) - fmt.Printf("\"DowngradeTargetVersion\" : %q\n", ep.Resp.DowngradeInfo.GetTargetVersion()) - fmt.Println(`"DowngradeEnabled" :`, ep.Resp.DowngradeInfo.GetEnabled()) + fmt.Printf("\"DowngradeTargetVersion\" : %q\n", resp.GetDowngradeInfo().GetTargetVersion()) + fmt.Println(`"DowngradeEnabled" :`, resp.GetDowngradeInfo().GetEnabled()) fmt.Println() } } func (p *fieldsPrinter) EndpointHashKV(hs []epHashKV) { for _, h := range hs { - p.hdr(h.Resp.Header) + resp := (*pb.HashKVResponse)(h.Resp) + p.hdr(resp.GetHeader()) fmt.Printf("\"Endpoint\" : %q\n", h.Ep) - fmt.Println(`"Hash" :`, h.Resp.Hash) - fmt.Println(`"HashRevision" :`, h.Resp.HashRevision) + fmt.Println(`"Hash" :`, resp.GetHash()) + fmt.Println(`"HashRevision" :`, resp.GetHashRevision()) fmt.Println() } } -func (p *fieldsPrinter) Alarm(r v3.AlarmResponse) { - p.hdr(r.Header) - for _, a := range r.Alarms { +func (p *fieldsPrinter) Alarm(r *v3.AlarmResponse) { + resp := (*pb.AlarmResponse)(r) + p.hdr(resp.GetHeader()) + for _, a := range resp.GetAlarms() { if p.isHex { - fmt.Println(`"MemberID" :`, types.ID(a.MemberID)) + fmt.Println(`"MemberID" :`, types.ID(a.GetMemberID())) } else { - fmt.Println(`"MemberID" :`, a.MemberID) + fmt.Println(`"MemberID" :`, a.GetMemberID()) } - fmt.Println(`"AlarmType" :`, a.Alarm) + fmt.Println(`"AlarmType" :`, a.GetAlarm()) fmt.Println() } } -func (p *fieldsPrinter) RoleAdd(role string, r v3.AuthRoleAddResponse) { p.hdr(r.Header) } -func (p *fieldsPrinter) RoleGet(role string, r v3.AuthRoleGetResponse) { - p.hdr(r.Header) - for _, p := range r.Perm { - fmt.Println(`"PermType" : `, p.PermType.String()) - fmt.Printf("\"Key\" : %q\n", string(p.Key)) - fmt.Printf("\"RangeEnd\" : %q\n", string(p.RangeEnd)) +func (p *fieldsPrinter) RoleAdd(role string, r *v3.AuthRoleAddResponse) { + p.hdr((*pb.AuthRoleAddResponse)(r).GetHeader()) +} + +func (p *fieldsPrinter) RoleGet(role string, r *v3.AuthRoleGetResponse) { + resp := (*pb.AuthRoleGetResponse)(r) + p.hdr(resp.GetHeader()) + for _, perm := range resp.GetPerm() { + fmt.Println(`"PermType" : `, perm.GetPermType().String()) + fmt.Printf("\"Key\" : %q\n", string(perm.GetKey())) + fmt.Printf("\"RangeEnd\" : %q\n", string(perm.GetRangeEnd())) } } -func (p *fieldsPrinter) RoleDelete(role string, r v3.AuthRoleDeleteResponse) { p.hdr(r.Header) } -func (p *fieldsPrinter) RoleList(r v3.AuthRoleListResponse) { - p.hdr(r.Header) + +func (p *fieldsPrinter) RoleDelete(role string, r *v3.AuthRoleDeleteResponse) { + p.hdr((*pb.AuthRoleDeleteResponse)(r).GetHeader()) +} + +func (p *fieldsPrinter) RoleList(r *v3.AuthRoleListResponse) { + resp := (*pb.AuthRoleListResponse)(r) + p.hdr(resp.GetHeader()) fmt.Print(`"Roles" :`) - for _, r := range r.Roles { - fmt.Printf(" %q", r) + for _, role := range resp.GetRoles() { + fmt.Printf(" %q", role) } fmt.Println() } -func (p *fieldsPrinter) RoleGrantPermission(role string, r v3.AuthRoleGrantPermissionResponse) { - p.hdr(r.Header) +func (p *fieldsPrinter) RoleGrantPermission(role string, r *v3.AuthRoleGrantPermissionResponse) { + p.hdr((*pb.AuthRoleGrantPermissionResponse)(r).GetHeader()) } -func (p *fieldsPrinter) RoleRevokePermission(role string, key string, end string, r v3.AuthRoleRevokePermissionResponse) { - p.hdr(r.Header) +func (p *fieldsPrinter) RoleRevokePermission(role string, key string, end string, r *v3.AuthRoleRevokePermissionResponse) { + p.hdr((*pb.AuthRoleRevokePermissionResponse)(r).GetHeader()) } -func (p *fieldsPrinter) UserAdd(user string, r v3.AuthUserAddResponse) { p.hdr(r.Header) } -func (p *fieldsPrinter) UserChangePassword(r v3.AuthUserChangePasswordResponse) { p.hdr(r.Header) } -func (p *fieldsPrinter) UserGrantRole(user string, role string, r v3.AuthUserGrantRoleResponse) { - p.hdr(r.Header) + +func (p *fieldsPrinter) UserAdd(user string, r *v3.AuthUserAddResponse) { + p.hdr((*pb.AuthUserAddResponse)(r).GetHeader()) +} + +func (p *fieldsPrinter) UserChangePassword(r *v3.AuthUserChangePasswordResponse) { + p.hdr((*pb.AuthUserChangePasswordResponse)(r).GetHeader()) +} + +func (p *fieldsPrinter) UserGrantRole(user string, role string, r *v3.AuthUserGrantRoleResponse) { + p.hdr((*pb.AuthUserGrantRoleResponse)(r).GetHeader()) +} + +func (p *fieldsPrinter) UserRevokeRole(user string, role string, r *v3.AuthUserRevokeRoleResponse) { + p.hdr((*pb.AuthUserRevokeRoleResponse)(r).GetHeader()) } -func (p *fieldsPrinter) UserRevokeRole(user string, role string, r v3.AuthUserRevokeRoleResponse) { - p.hdr(r.Header) +func (p *fieldsPrinter) UserDelete(user string, r *v3.AuthUserDeleteResponse) { + p.hdr((*pb.AuthUserDeleteResponse)(r).GetHeader()) } -func (p *fieldsPrinter) UserDelete(user string, r v3.AuthUserDeleteResponse) { p.hdr(r.Header) } diff --git a/etcdctl/ctlv3/command/printer_json.go b/etcdctl/ctlv3/command/printer_json.go index 4e6f9bf718b0..81c7bbbce9d6 100644 --- a/etcdctl/ctlv3/command/printer_json.go +++ b/etcdctl/ctlv3/command/printer_json.go @@ -36,28 +36,32 @@ type ( ) func (h *HexResponseHeader) MarshalJSON() ([]byte, error) { - type Alias pb.ResponseHeader - return json.Marshal(&struct { ClusterID string `json:"cluster_id"` MemberID string `json:"member_id"` - Alias + Revision int64 `json:"revision,omitempty"` + RaftTerm uint64 `json:"raft_term,omitempty"` }{ ClusterID: fmt.Sprintf("%x", h.ClusterId), MemberID: fmt.Sprintf("%x", h.MemberId), - Alias: (Alias)(*h), + Revision: h.Revision, + RaftTerm: h.RaftTerm, }) } func (m *HexMember) MarshalJSON() ([]byte, error) { - type Alias pb.Member - return json.Marshal(&struct { - ID string `json:"ID"` - Alias + ID string `json:"ID"` + Name string `json:"name,omitempty"` + PeerURLs []string `json:"peerURLs,omitempty"` + ClientURLs []string `json:"clientURLs,omitempty"` + IsLearner bool `json:"isLearner,omitempty"` }{ - ID: fmt.Sprintf("%x", m.ID), - Alias: (Alias)(*m), + ID: fmt.Sprintf("%x", m.ID), + Name: m.Name, + PeerURLs: m.PeerURLs, + ClientURLs: m.ClientURLs, + IsLearner: m.IsLearner, }) } @@ -73,11 +77,15 @@ func (p *jsonPrinter) EndpointHealth(r []epHealth) { printJSON(r) } func (p *jsonPrinter) EndpointStatus(r []epStatus) { printJSON(r) } func (p *jsonPrinter) EndpointHashKV(r []epHashKV) { printJSON(r) } -func (p *jsonPrinter) MemberAdd(r clientv3.MemberAddResponse) { p.printJSON(r) } -func (p *jsonPrinter) MemberRemove(_ uint64, r clientv3.MemberRemoveResponse) { p.printJSON(r) } -func (p *jsonPrinter) MemberUpdate(_ uint64, r clientv3.MemberUpdateResponse) { p.printJSON(r) } -func (p *jsonPrinter) MemberPromote(_ uint64, r clientv3.MemberPromoteResponse) { p.printJSON(r) } -func (p *jsonPrinter) MemberList(r clientv3.MemberListResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberAdd(r *clientv3.MemberAddResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberRemove(_ uint64, r *clientv3.MemberRemoveResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberUpdate(_ uint64, r *clientv3.MemberUpdateResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberPromote(_ uint64, r *clientv3.MemberPromoteResponse) { p.printJSON(r) } +func (p *jsonPrinter) MemberList(r *clientv3.MemberListResponse) { p.printJSON(r) } + +func (p *jsonPrinter) Txn(r *clientv3.TxnResponse) { + p.printJSON(TxnResponseJSONFromProto((*pb.TxnResponse)(r))) +} func printJSONTo(w io.Writer, v any) { b, err := json.Marshal(v) @@ -92,6 +100,73 @@ func printJSON(v any) { printJSONTo(os.Stdout, v) } +type TxnResponseJSON struct { + Header *pb.ResponseHeader `json:"header,omitempty"` + Succeeded bool `json:"succeeded,omitempty"` + Responses []ResponseOpJSON `json:"responses,omitempty"` +} + +type ResponseOpJSON struct { + Response ResponseOpResponseJSON `json:"Response"` +} + +type ResponseOpResponseJSON struct { + ResponseRange *pb.RangeResponse `json:"response_range,omitempty"` + ResponsePut *pb.PutResponse `json:"response_put,omitempty"` + ResponseDeleteRange *pb.DeleteRangeResponse `json:"response_delete_range,omitempty"` + ResponseTxn *TxnResponseJSON `json:"response_txn,omitempty"` +} + +func (t *TxnResponseJSON) ToProto() *pb.TxnResponse { + if t == nil { + return nil + } + + r := &pb.TxnResponse{ + Header: t.Header, + Succeeded: t.Succeeded, + } + for _, jsonResponse := range t.Responses { + switch { + case jsonResponse.Response.ResponseDeleteRange != nil: + r.Responses = append(r.Responses, &pb.ResponseOp{Response: &pb.ResponseOp_ResponseDeleteRange{ResponseDeleteRange: jsonResponse.Response.ResponseDeleteRange}}) + case jsonResponse.Response.ResponseRange != nil: + r.Responses = append(r.Responses, &pb.ResponseOp{Response: &pb.ResponseOp_ResponseRange{ResponseRange: jsonResponse.Response.ResponseRange}}) + case jsonResponse.Response.ResponseTxn != nil: + r.Responses = append(r.Responses, &pb.ResponseOp{Response: &pb.ResponseOp_ResponseTxn{ResponseTxn: jsonResponse.Response.ResponseTxn.ToProto()}}) + case jsonResponse.Response.ResponsePut != nil: + r.Responses = append(r.Responses, &pb.ResponseOp{Response: &pb.ResponseOp_ResponsePut{ResponsePut: jsonResponse.Response.ResponsePut}}) + default: + // unknown + r.Responses = append(r.Responses, &pb.ResponseOp{}) + } + } + return r +} + +func TxnResponseJSONFromProto(protoResponse *pb.TxnResponse) TxnResponseJSON { + r := TxnResponseJSON{ + Header: protoResponse.GetHeader(), + Succeeded: protoResponse.GetSucceeded(), + } + for _, response := range protoResponse.GetResponses() { + switch response := response.Response.(type) { + case *pb.ResponseOp_ResponseRange: + r.Responses = append(r.Responses, ResponseOpJSON{ResponseOpResponseJSON{ResponseRange: response.ResponseRange}}) + case *pb.ResponseOp_ResponsePut: + r.Responses = append(r.Responses, ResponseOpJSON{ResponseOpResponseJSON{ResponsePut: response.ResponsePut}}) + case *pb.ResponseOp_ResponseDeleteRange: + r.Responses = append(r.Responses, ResponseOpJSON{ResponseOpResponseJSON{ResponseDeleteRange: response.ResponseDeleteRange}}) + case *pb.ResponseOp_ResponseTxn: + responseTxn := TxnResponseJSONFromProto(response.ResponseTxn) + r.Responses = append(r.Responses, ResponseOpJSON{ResponseOpResponseJSON{ResponseTxn: &responseTxn}}) + default: + r.Responses = append(r.Responses, ResponseOpJSON{ResponseOpResponseJSON{}}) + } + } + return r +} + func (p *jsonPrinter) printJSON(v any) { var data any if !p.isHex { @@ -100,67 +175,47 @@ func (p *jsonPrinter) printJSON(v any) { } switch r := v.(type) { - case clientv3.MemberAddResponse: - type Alias clientv3.MemberAddResponse - + case *clientv3.MemberAddResponse: data = &struct { Header *HexResponseHeader `json:"header"` Member *HexMember `json:"member"` Members []*HexMember `json:"members"` - *Alias }{ Header: (*HexResponseHeader)(r.Header), Member: (*HexMember)(r.Member), Members: toHexMembers(r.Members), - Alias: (*Alias)(&r), } - case clientv3.MemberRemoveResponse: - type Alias clientv3.MemberRemoveResponse - + case *clientv3.MemberRemoveResponse: data = &struct { Header *HexResponseHeader `json:"header"` Members []*HexMember `json:"members"` - *Alias }{ Header: (*HexResponseHeader)(r.Header), Members: toHexMembers(r.Members), - Alias: (*Alias)(&r), } - case clientv3.MemberUpdateResponse: - type Alias clientv3.MemberUpdateResponse - + case *clientv3.MemberUpdateResponse: data = &struct { Header *HexResponseHeader `json:"header"` Members []*HexMember `json:"members"` - *Alias }{ Header: (*HexResponseHeader)(r.Header), Members: toHexMembers(r.Members), - Alias: (*Alias)(&r), } - case clientv3.MemberPromoteResponse: - type Alias clientv3.MemberPromoteResponse - + case *clientv3.MemberPromoteResponse: data = &struct { Header *HexResponseHeader `json:"header"` Members []*HexMember `json:"members"` - *Alias }{ Header: (*HexResponseHeader)(r.Header), Members: toHexMembers(r.Members), - Alias: (*Alias)(&r), } - case clientv3.MemberListResponse: - type Alias clientv3.MemberListResponse - + case *clientv3.MemberListResponse: data = &struct { Header *HexResponseHeader `json:"header"` Members []*HexMember `json:"members"` - *Alias }{ Header: (*HexResponseHeader)(r.Header), Members: toHexMembers(r.Members), - Alias: (*Alias)(&r), } default: data = v diff --git a/etcdctl/ctlv3/command/printer_json_test.go b/etcdctl/ctlv3/command/printer_json_test.go index 8f65be6983c4..e883846a8d54 100644 --- a/etcdctl/ctlv3/command/printer_json_test.go +++ b/etcdctl/ctlv3/command/printer_json_test.go @@ -121,6 +121,53 @@ var testCases = []testCase{ {math.MaxInt64, "7fffffffffffffff", math.MaxInt64}, } +// TODO(fuweid): This helper is used to make sure that adaptor struct is +// compatible with gogopb struct. We should remove this once we migrate to +// official pb. +func TestTxnResponseJSONFailedResponseMatchesProtoJSON(t *testing.T) { + response := &pb.TxnResponse{ + Header: &pb.ResponseHeader{Revision: 1}, + Succeeded: false, + } + + want, err := json.Marshal(response) + require.NoError(t, err) + got, err := json.Marshal(TxnResponseJSONFromProto(response)) + require.NoError(t, err) + + assert.JSONEq(t, string(want), string(got)) +} + +// TODO(fuweid): This helper is used to make sure that adaptor struct is +// compatible with gogopb struct. We should remove this once we migrate to +// official pb. +func TestTxnResponseJSONNestedTxnRoundTrip(t *testing.T) { + response := &pb.TxnResponse{ + Succeeded: true, + Responses: []*pb.ResponseOp{{ + Response: &pb.ResponseOp_ResponseTxn{ + ResponseTxn: &pb.TxnResponse{ + Succeeded: true, + Responses: []*pb.ResponseOp{{ + Response: &pb.ResponseOp_ResponseRange{ + ResponseRange: &pb.RangeResponse{Count: 1}, + }, + }}, + }, + }, + }}, + } + + data, err := json.Marshal(TxnResponseJSONFromProto(response)) + require.NoError(t, err) + + var got TxnResponseJSON + decoder := json.NewDecoder(bytes.NewReader(data)) + require.NoError(t, decoder.Decode(&got)) + + assert.Equal(t, response, got.ToProto()) +} + func TestMemberAdd(t *testing.T) { tests := []testScenario{ {name: "decimal", isHex: false, cases: testCases}, @@ -148,7 +195,7 @@ func TestMemberAdd(t *testing.T) { Member: &pb.Member{ID: tt.number}, Members: []*pb.Member{{ID: tt.number}}, } - p.MemberAdd(response) + p.MemberAdd(&response) var got map[string]any err := decoder.Decode(&got) @@ -193,7 +240,7 @@ func TestMemberRemove(t *testing.T) { }, Members: []*pb.Member{{ID: tt.number}}, } - p.MemberRemove(0, response) + p.MemberRemove(0, &response) var got map[string]any err := decoder.Decode(&got) @@ -233,7 +280,7 @@ func TestMemberUpdate(t *testing.T) { }, Members: []*pb.Member{{ID: tt.number}}, } - p.MemberUpdate(0, response) + p.MemberUpdate(0, &response) var got map[string]any err := decoder.Decode(&got) @@ -273,7 +320,7 @@ func TestMemberPromote(t *testing.T) { }, Members: []*pb.Member{{ID: tt.number}}, } - p.MemberPromote(0, response) + p.MemberPromote(0, &response) var got map[string]any err := decoder.Decode(&got) @@ -313,7 +360,7 @@ func TestMemberList(t *testing.T) { }, Members: []*pb.Member{{ID: tt.number}}, } - p.MemberList(response) + p.MemberList(&response) var got map[string]any err := decoder.Decode(&got) diff --git a/etcdctl/ctlv3/command/printer_protobuf.go b/etcdctl/ctlv3/command/printer_protobuf.go index ba8f033579fe..b7e4148f0a13 100644 --- a/etcdctl/ctlv3/command/printer_protobuf.go +++ b/etcdctl/ctlv3/command/printer_protobuf.go @@ -35,15 +35,18 @@ func newPBPrinter() printer { } } -func (p *pbPrinter) Watch(r v3.WatchResponse) { - wr := pb.WatchResponse{ - Header: r.Header, - Events: r.Events, - CompactRevision: r.CompactRevision, - Canceled: r.Canceled, - Created: r.Created, +func (p *pbPrinter) Watch(r *v3.WatchResponse) { + wr := &pb.WatchResponse{} + if r != nil { + wr = &pb.WatchResponse{ + Header: r.Header, + Events: r.Events, + CompactRevision: r.CompactRevision, + Canceled: r.Canceled, + Created: r.Created, + } } - printPB(&wr) + printPB(wr) } func printPB(v any) { diff --git a/etcdctl/ctlv3/command/printer_simple.go b/etcdctl/ctlv3/command/printer_simple.go index c7e4fab725e2..35af58047bc4 100644 --- a/etcdctl/ctlv3/command/printer_simple.go +++ b/etcdctl/ctlv3/command/printer_simple.go @@ -19,6 +19,7 @@ import ( "os" "strings" + "go.etcd.io/etcd/api/v3/authpb" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/client/pkg/v3/types" v3 "go.etcd.io/etcd/client/v3" @@ -31,71 +32,75 @@ type simplePrinter struct { valueOnly bool } -func (s *simplePrinter) Del(resp v3.DeleteResponse) { - fmt.Println(resp.Deleted) - for _, kv := range resp.PrevKvs { +func (s *simplePrinter) Del(resp *v3.DeleteResponse) { + r := (*pb.DeleteRangeResponse)(resp) + fmt.Println(r.GetDeleted()) + for _, kv := range r.GetPrevKvs() { printKV(s.isHex, s.valueOnly, kv) } } -func (s *simplePrinter) Get(resp v3.GetResponse) { - for _, kv := range resp.Kvs { +func (s *simplePrinter) Get(resp *v3.GetResponse) { + r := (*pb.RangeResponse)(resp) + for _, kv := range r.GetKvs() { printKV(s.isHex, s.valueOnly, kv) } } -func (s *simplePrinter) Put(r v3.PutResponse) { +func (s *simplePrinter) Put(r *v3.PutResponse) { + resp := (*pb.PutResponse)(r) fmt.Println("OK") - if r.PrevKv != nil { - printKV(s.isHex, s.valueOnly, r.PrevKv) + if resp.GetPrevKv() != nil { + printKV(s.isHex, s.valueOnly, resp.GetPrevKv()) } } -func (s *simplePrinter) Txn(resp v3.TxnResponse) { - if resp.Succeeded { +func (s *simplePrinter) Txn(resp *v3.TxnResponse) { + r := (*pb.TxnResponse)(resp) + if r.GetSucceeded() { fmt.Println("SUCCESS") } else { fmt.Println("FAILURE") } - for _, r := range resp.Responses { + for _, opResp := range r.GetResponses() { fmt.Println("") - switch v := r.Response.(type) { + switch v := opResp.GetResponse().(type) { case *pb.ResponseOp_ResponseDeleteRange: - s.Del((v3.DeleteResponse)(*v.ResponseDeleteRange)) + s.Del((*v3.DeleteResponse)(v.ResponseDeleteRange)) case *pb.ResponseOp_ResponsePut: - s.Put((v3.PutResponse)(*v.ResponsePut)) + s.Put((*v3.PutResponse)(v.ResponsePut)) case *pb.ResponseOp_ResponseRange: - s.Get(((v3.GetResponse)(*v.ResponseRange))) + s.Get((*v3.GetResponse)(v.ResponseRange)) default: - fmt.Printf("unexpected response %+v\n", r) + fmt.Printf("unexpected response %+v\n", opResp) } } } -func (s *simplePrinter) Watch(resp v3.WatchResponse) { - for _, e := range resp.Events { - fmt.Println(e.Type) - if e.PrevKv != nil { - printKV(s.isHex, s.valueOnly, e.PrevKv) +func (s *simplePrinter) Watch(resp *v3.WatchResponse) { + for _, event := range resp.Events { + fmt.Println(event.GetType()) + if event.GetPrevKv() != nil { + printKV(s.isHex, s.valueOnly, event.GetPrevKv()) } - printKV(s.isHex, s.valueOnly, e.Kv) + printKV(s.isHex, s.valueOnly, event.GetKv()) } } -func (s *simplePrinter) Grant(resp v3.LeaseGrantResponse) { +func (s *simplePrinter) Grant(resp *v3.LeaseGrantResponse) { fmt.Printf("lease %016x granted with TTL(%ds)\n", resp.ID, resp.TTL) } -func (s *simplePrinter) Revoke(id v3.LeaseID, r v3.LeaseRevokeResponse) { +func (s *simplePrinter) Revoke(id v3.LeaseID, r *v3.LeaseRevokeResponse) { fmt.Printf("lease %016x revoked\n", id) } -func (s *simplePrinter) KeepAlive(resp v3.LeaseKeepAliveResponse) { +func (s *simplePrinter) KeepAlive(resp *v3.LeaseKeepAliveResponse) { fmt.Printf("lease %016x keepalived with TTL(%d)\n", resp.ID, resp.TTL) } -func (s *simplePrinter) TimeToLive(resp v3.LeaseTimeToLiveResponse, keys bool) { +func (s *simplePrinter) TimeToLive(resp *v3.LeaseTimeToLiveResponse, keys bool) { if resp.GrantedTTL == 0 && resp.TTL == -1 { fmt.Printf("lease %016x already expired\n", resp.ID) return @@ -112,40 +117,42 @@ func (s *simplePrinter) TimeToLive(resp v3.LeaseTimeToLiveResponse, keys bool) { fmt.Println(txt) } -func (s *simplePrinter) Leases(resp v3.LeaseLeasesResponse) { +func (s *simplePrinter) Leases(resp *v3.LeaseLeasesResponse) { fmt.Printf("found %d leases\n", len(resp.Leases)) for _, item := range resp.Leases { fmt.Printf("%016x\n", item.ID) } } -func (s *simplePrinter) Alarm(resp v3.AlarmResponse) { - for _, e := range resp.Alarms { +func (s *simplePrinter) Alarm(resp *v3.AlarmResponse) { + r := (*pb.AlarmResponse)(resp) + for _, e := range r.GetAlarms() { fmt.Printf("%+v\n", e) } } -func (s *simplePrinter) MemberAdd(r v3.MemberAddResponse) { +func (s *simplePrinter) MemberAdd(r *v3.MemberAddResponse) { + resp := (*pb.MemberAddResponse)(r) asLearner := " " - if r.Member.IsLearner { + if resp.GetMember().GetIsLearner() { asLearner = " as learner " } - fmt.Printf("Member %16x added%sto cluster %16x\n", r.Member.ID, asLearner, r.Header.ClusterId) + fmt.Printf("Member %16x added%sto cluster %16x\n", resp.GetMember().GetID(), asLearner, resp.GetHeader().GetClusterId()) } -func (s *simplePrinter) MemberRemove(id uint64, r v3.MemberRemoveResponse) { - fmt.Printf("Member %16x removed from cluster %16x\n", id, r.Header.ClusterId) +func (s *simplePrinter) MemberRemove(id uint64, r *v3.MemberRemoveResponse) { + fmt.Printf("Member %16x removed from cluster %16x\n", id, (*pb.MemberRemoveResponse)(r).GetHeader().GetClusterId()) } -func (s *simplePrinter) MemberUpdate(id uint64, r v3.MemberUpdateResponse) { - fmt.Printf("Member %16x updated in cluster %16x\n", id, r.Header.ClusterId) +func (s *simplePrinter) MemberUpdate(id uint64, r *v3.MemberUpdateResponse) { + fmt.Printf("Member %16x updated in cluster %16x\n", id, (*pb.MemberUpdateResponse)(r).GetHeader().GetClusterId()) } -func (s *simplePrinter) MemberPromote(id uint64, r v3.MemberPromoteResponse) { - fmt.Printf("Member %16x promoted in cluster %16x\n", id, r.Header.ClusterId) +func (s *simplePrinter) MemberPromote(id uint64, r *v3.MemberPromoteResponse) { + fmt.Printf("Member %16x promoted in cluster %16x\n", id, (*pb.MemberPromoteResponse)(r).GetHeader().GetClusterId()) } -func (s *simplePrinter) MemberList(resp v3.MemberListResponse) { +func (s *simplePrinter) MemberList(resp *v3.MemberListResponse) { _, rows := makeMemberListTable(resp) for _, row := range rows { fmt.Println(strings.Join(row, ", ")) @@ -176,29 +183,30 @@ func (s *simplePrinter) EndpointHashKV(hashList []epHashKV) { } } -func (s *simplePrinter) MoveLeader(leader, target uint64, r v3.MoveLeaderResponse) { +func (s *simplePrinter) MoveLeader(leader, target uint64, r *v3.MoveLeaderResponse) { fmt.Printf("Leadership transferred from %s to %s\n", types.ID(leader), types.ID(target)) } -func (s *simplePrinter) DowngradeValidate(r v3.DowngradeResponse) { - fmt.Printf("Downgrade validate success, cluster version %s\n", r.Version) +func (s *simplePrinter) DowngradeValidate(r *v3.DowngradeResponse) { + fmt.Printf("Downgrade validate success, cluster version %s\n", (*pb.DowngradeResponse)(r).GetVersion()) } -func (s *simplePrinter) DowngradeEnable(r v3.DowngradeResponse) { - fmt.Printf("Downgrade enable success, cluster version %s\n", r.Version) +func (s *simplePrinter) DowngradeEnable(r *v3.DowngradeResponse) { + fmt.Printf("Downgrade enable success, cluster version %s\n", (*pb.DowngradeResponse)(r).GetVersion()) } -func (s *simplePrinter) DowngradeCancel(r v3.DowngradeResponse) { - fmt.Printf("Downgrade cancel success, cluster version %s\n", r.Version) +func (s *simplePrinter) DowngradeCancel(r *v3.DowngradeResponse) { + fmt.Printf("Downgrade cancel success, cluster version %s\n", (*pb.DowngradeResponse)(r).GetVersion()) } -func (s *simplePrinter) RoleAdd(role string, r v3.AuthRoleAddResponse) { +func (s *simplePrinter) RoleAdd(role string, r *v3.AuthRoleAddResponse) { fmt.Printf("Role %s created\n", role) } -func (s *simplePrinter) RoleGet(role string, r v3.AuthRoleGetResponse) { +func (s *simplePrinter) RoleGet(role string, r *v3.AuthRoleGetResponse) { + resp := (*pb.AuthRoleGetResponse)(r) fmt.Printf("Role %s\n", role) - if rootRole == role && r.Perm == nil { + if rootRole == role && resp.GetPerm() == nil { fmt.Println("KV Read:") fmt.Println("\t[, ") fmt.Println("KV Write:") @@ -208,9 +216,9 @@ func (s *simplePrinter) RoleGet(role string, r v3.AuthRoleGetResponse) { fmt.Println("KV Read:") - printRange := func(perm *v3.Permission) { - sKey := string(perm.Key) - sRangeEnd := string(perm.RangeEnd) + printRange := func(perm *authpb.Permission) { + sKey := string(perm.GetKey()) + sRangeEnd := string(perm.GetRangeEnd()) if sRangeEnd != "\x00" { fmt.Printf("\t[%s, %s)", sKey, sRangeEnd) } else { @@ -222,42 +230,42 @@ func (s *simplePrinter) RoleGet(role string, r v3.AuthRoleGetResponse) { fmt.Print("\n") } - for _, perm := range r.Perm { - if perm.PermType == v3.PermRead || perm.PermType == v3.PermReadWrite { - if len(perm.RangeEnd) == 0 { - fmt.Printf("\t%s\n", perm.Key) + for _, perm := range resp.GetPerm() { + if perm.GetPermType() == v3.PermRead || perm.GetPermType() == v3.PermReadWrite { + if len(perm.GetRangeEnd()) == 0 { + fmt.Printf("\t%s\n", perm.GetKey()) } else { - printRange((*v3.Permission)(perm)) + printRange(perm) } } } fmt.Println("KV Write:") - for _, perm := range r.Perm { - if perm.PermType == v3.PermWrite || perm.PermType == v3.PermReadWrite { - if len(perm.RangeEnd) == 0 { - fmt.Printf("\t%s\n", perm.Key) + for _, perm := range resp.GetPerm() { + if perm.GetPermType() == v3.PermWrite || perm.GetPermType() == v3.PermReadWrite { + if len(perm.GetRangeEnd()) == 0 { + fmt.Printf("\t%s\n", perm.GetKey()) } else { - printRange((*v3.Permission)(perm)) + printRange(perm) } } } } -func (s *simplePrinter) RoleList(r v3.AuthRoleListResponse) { - for _, role := range r.Roles { +func (s *simplePrinter) RoleList(r *v3.AuthRoleListResponse) { + for _, role := range (*pb.AuthRoleListResponse)(r).GetRoles() { fmt.Printf("%s\n", role) } } -func (s *simplePrinter) RoleDelete(role string, r v3.AuthRoleDeleteResponse) { +func (s *simplePrinter) RoleDelete(role string, r *v3.AuthRoleDeleteResponse) { fmt.Printf("Role %s deleted\n", role) } -func (s *simplePrinter) RoleGrantPermission(role string, r v3.AuthRoleGrantPermissionResponse) { +func (s *simplePrinter) RoleGrantPermission(role string, r *v3.AuthRoleGrantPermissionResponse) { fmt.Printf("Role %s updated\n", role) } -func (s *simplePrinter) RoleRevokePermission(role string, key string, end string, r v3.AuthRoleRevokePermissionResponse) { +func (s *simplePrinter) RoleRevokePermission(role string, key string, end string, r *v3.AuthRoleRevokePermissionResponse) { if len(end) == 0 { fmt.Printf("Permission of key %s is revoked from role %s\n", key, role) return @@ -269,42 +277,43 @@ func (s *simplePrinter) RoleRevokePermission(role string, key string, end string } } -func (s *simplePrinter) UserAdd(name string, r v3.AuthUserAddResponse) { +func (s *simplePrinter) UserAdd(name string, r *v3.AuthUserAddResponse) { fmt.Printf("User %s created\n", name) } -func (s *simplePrinter) UserGet(name string, r v3.AuthUserGetResponse) { +func (s *simplePrinter) UserGet(name string, r *v3.AuthUserGetResponse) { fmt.Printf("User: %s\n", name) fmt.Print("Roles:") - for _, role := range r.Roles { + for _, role := range (*pb.AuthUserGetResponse)(r).GetRoles() { fmt.Printf(" %s", role) } fmt.Print("\n") } -func (s *simplePrinter) UserChangePassword(v3.AuthUserChangePasswordResponse) { +func (s *simplePrinter) UserChangePassword(*v3.AuthUserChangePasswordResponse) { fmt.Println("Password updated") } -func (s *simplePrinter) UserGrantRole(user string, role string, r v3.AuthUserGrantRoleResponse) { +func (s *simplePrinter) UserGrantRole(user string, role string, r *v3.AuthUserGrantRoleResponse) { fmt.Printf("Role %s is granted to user %s\n", role, user) } -func (s *simplePrinter) UserRevokeRole(user string, role string, r v3.AuthUserRevokeRoleResponse) { +func (s *simplePrinter) UserRevokeRole(user string, role string, r *v3.AuthUserRevokeRoleResponse) { fmt.Printf("Role %s is revoked from user %s\n", role, user) } -func (s *simplePrinter) UserDelete(user string, r v3.AuthUserDeleteResponse) { +func (s *simplePrinter) UserDelete(user string, r *v3.AuthUserDeleteResponse) { fmt.Printf("User %s deleted\n", user) } -func (s *simplePrinter) UserList(r v3.AuthUserListResponse) { - for _, user := range r.Users { +func (s *simplePrinter) UserList(r *v3.AuthUserListResponse) { + for _, user := range (*pb.AuthUserListResponse)(r).GetUsers() { fmt.Printf("%s\n", user) } } -func (s *simplePrinter) AuthStatus(r v3.AuthStatusResponse) { - fmt.Println("Authentication Status:", r.Enabled) - fmt.Println("AuthRevision:", r.AuthRevision) +func (s *simplePrinter) AuthStatus(r *v3.AuthStatusResponse) { + resp := (*pb.AuthStatusResponse)(r) + fmt.Println("Authentication Status:", resp.GetEnabled()) + fmt.Println("AuthRevision:", resp.GetAuthRevision()) } diff --git a/etcdctl/ctlv3/command/printer_table.go b/etcdctl/ctlv3/command/printer_table.go index fcab69fb0639..f6f72fe35207 100644 --- a/etcdctl/ctlv3/command/printer_table.go +++ b/etcdctl/ctlv3/command/printer_table.go @@ -25,7 +25,7 @@ import ( type tablePrinter struct{ printer } -func (tp *tablePrinter) MemberList(r v3.MemberListResponse) { +func (tp *tablePrinter) MemberList(r *v3.MemberListResponse) { hdr, rows := makeMemberListTable(r) cfgBuilder := tablewriter.NewConfigBuilder().WithRowAlignment(tw.AlignRight) table := tablewriter.NewTable(os.Stdout, tablewriter.WithConfig(cfgBuilder.Build())) diff --git a/etcdctl/ctlv3/command/put_command.go b/etcdctl/ctlv3/command/put_command.go index 084815013771..6e92452d59ae 100644 --- a/etcdctl/ctlv3/command/put_command.go +++ b/etcdctl/ctlv3/command/put_command.go @@ -76,7 +76,7 @@ func putCommandFunc(cmd *cobra.Command, args []string) { if err != nil { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.Put(*resp) + display.Put(resp) } func getPutOp(args []string) (string, string, []clientv3.OpOption) { diff --git a/etcdctl/ctlv3/command/role_command.go b/etcdctl/ctlv3/command/role_command.go index 5fd96ca1c985..c63fc6c651a7 100644 --- a/etcdctl/ctlv3/command/role_command.go +++ b/etcdctl/ctlv3/command/role_command.go @@ -117,7 +117,7 @@ func roleAddCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.RoleAdd(args[0], *resp) + display.RoleAdd(args[0], resp) } // roleDeleteCommandFunc executes the "role delete" command. @@ -131,7 +131,7 @@ func roleDeleteCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.RoleDelete(args[0], *resp) + display.RoleDelete(args[0], resp) } // roleGetCommandFunc executes the "role get" command. @@ -146,7 +146,7 @@ func roleGetCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.RoleGet(name, *resp) + display.RoleGet(name, resp) } // roleListCommandFunc executes the "role list" command. @@ -160,7 +160,7 @@ func roleListCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.RoleList(*resp) + display.RoleList(resp) } // roleGrantPermissionCommandFunc executes the "role grant-permission" command. @@ -180,7 +180,7 @@ func roleGrantPermissionCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.RoleGrantPermission(args[0], *resp) + display.RoleGrantPermission(args[0], resp) } // roleRevokePermissionCommandFunc executes the "role revoke-permission" command. @@ -194,7 +194,7 @@ func roleRevokePermissionCommandFunc(cmd *cobra.Command, args []string) { if err != nil { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.RoleRevokePermission(args[0], args[1], rangeEnd, *resp) + display.RoleRevokePermission(args[0], args[1], rangeEnd, resp) } func permRange(args []string) (string, string) { diff --git a/etcdctl/ctlv3/command/txn_command.go b/etcdctl/ctlv3/command/txn_command.go index d0410999bc39..bbbf579b1827 100644 --- a/etcdctl/ctlv3/command/txn_command.go +++ b/etcdctl/ctlv3/command/txn_command.go @@ -86,7 +86,7 @@ func txnCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.Txn(*resp) + display.Txn(resp) } func promptInteractive(s string) { diff --git a/etcdctl/ctlv3/command/user_command.go b/etcdctl/ctlv3/command/user_command.go index 20e4d3e8c952..7de63210048e 100644 --- a/etcdctl/ctlv3/command/user_command.go +++ b/etcdctl/ctlv3/command/user_command.go @@ -168,7 +168,7 @@ func userAddCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.UserAdd(user, *resp) + display.UserAdd(user, resp) } // userDeleteCommandFunc executes the "user delete" command. @@ -181,7 +181,7 @@ func userDeleteCommandFunc(cmd *cobra.Command, args []string) { if err != nil { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.UserDelete(args[0], *resp) + display.UserDelete(args[0], resp) } // userGetCommandFunc executes the "user get" command. @@ -205,10 +205,10 @@ func userGetCommandFunc(cmd *cobra.Command, args []string) { if err != nil { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.RoleGet(role, *roleResp) + display.RoleGet(role, roleResp) } } else { - display.UserGet(name, *resp) + display.UserGet(name, resp) } } @@ -223,7 +223,7 @@ func userListCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.UserList(*resp) + display.UserList(resp) } // userChangePasswordCommandFunc executes the "user passwd" command. @@ -245,7 +245,7 @@ func userChangePasswordCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.UserChangePassword(*resp) + display.UserChangePassword(resp) } // userGrantRoleCommandFunc executes the "user grant-role" command. @@ -259,7 +259,7 @@ func userGrantRoleCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.UserGrantRole(args[0], args[1], *resp) + display.UserGrantRole(args[0], args[1], resp) } // userRevokeRoleCommandFunc executes the "user revoke-role" command. @@ -273,7 +273,7 @@ func userRevokeRoleCommandFunc(cmd *cobra.Command, args []string) { cobrautl.ExitWithError(cobrautl.ExitError, err) } - display.UserRevokeRole(args[0], args[1], *resp) + display.UserRevokeRole(args[0], args[1], resp) } func readPasswordInteractive(name string) string { diff --git a/etcdctl/ctlv3/command/util.go b/etcdctl/ctlv3/command/util.go index 1ee33102bd9a..aa7f784a3f83 100644 --- a/etcdctl/ctlv3/command/util.go +++ b/etcdctl/ctlv3/command/util.go @@ -34,10 +34,10 @@ import ( ) func printKV(isHex bool, valueOnly bool, kv *pb.KeyValue) { - k, v := string(kv.Key), string(kv.Value) + k, v := string(kv.GetKey()), string(kv.GetValue()) if isHex { - k = addHexPrefix(hex.EncodeToString(kv.Key)) - v = addHexPrefix(hex.EncodeToString(kv.Value)) + k = addHexPrefix(hex.EncodeToString(kv.GetKey())) + v = addHexPrefix(hex.EncodeToString(kv.GetValue())) } if !valueOnly { fmt.Println(k) diff --git a/etcdctl/ctlv3/command/watch_command.go b/etcdctl/ctlv3/command/watch_command.go index b8c8bdf130f5..01e4d5d82357 100644 --- a/etcdctl/ctlv3/command/watch_command.go +++ b/etcdctl/ctlv3/command/watch_command.go @@ -169,18 +169,18 @@ func printWatchCh(c *clientv3.Client, ch clientv3.WatchChan, execArgs []string) fmt.Fprintf(os.Stderr, "watch was canceled (%v)\n", resp.Err()) } if resp.IsProgressNotify() { - fmt.Fprintf(os.Stdout, "progress notify: %d\n", resp.Header.Revision) + fmt.Fprintf(os.Stdout, "progress notify: %d\n", resp.Header.GetRevision()) } - display.Watch(resp) + display.Watch(&resp) if len(execArgs) > 0 { - for _, ev := range resp.Events { + for _, event := range resp.Events { cmd := exec.CommandContext(c.Ctx(), execArgs[0], execArgs[1:]...) cmd.Env = os.Environ() - cmd.Env = append(cmd.Env, fmt.Sprintf("ETCD_WATCH_REVISION=%d", resp.Header.Revision)) - cmd.Env = append(cmd.Env, fmt.Sprintf("ETCD_WATCH_EVENT_TYPE=%q", ev.Type)) - cmd.Env = append(cmd.Env, fmt.Sprintf("ETCD_WATCH_KEY=%q", ev.Kv.Key)) - cmd.Env = append(cmd.Env, fmt.Sprintf("ETCD_WATCH_VALUE=%q", ev.Kv.Value)) + cmd.Env = append(cmd.Env, fmt.Sprintf("ETCD_WATCH_REVISION=%d", resp.Header.GetRevision())) + cmd.Env = append(cmd.Env, fmt.Sprintf("ETCD_WATCH_EVENT_TYPE=%q", event.GetType())) + cmd.Env = append(cmd.Env, fmt.Sprintf("ETCD_WATCH_KEY=%q", event.GetKv().GetKey())) + cmd.Env = append(cmd.Env, fmt.Sprintf("ETCD_WATCH_VALUE=%q", event.GetKv().GetValue())) cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr if err := cmd.Run(); err != nil { fmt.Fprintf(os.Stderr, "command %q error (%v)\n", execArgs, err) diff --git a/tests/framework/e2e/etcdctl.go b/tests/framework/e2e/etcdctl.go index 03f96d2ad2e1..88d19913c758 100644 --- a/tests/framework/e2e/etcdctl.go +++ b/tests/framework/e2e/etcdctl.go @@ -17,9 +17,7 @@ package e2e import ( "context" "encoding/json" - "errors" "fmt" - "io" "strconv" "strings" "time" @@ -27,6 +25,7 @@ import ( "go.etcd.io/etcd/api/v3/authpb" "go.etcd.io/etcd/api/v3/etcdserverpb" clientv3 "go.etcd.io/etcd/client/v3" + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command" "go.etcd.io/etcd/pkg/v3/expect" "go.etcd.io/etcd/tests/v3/framework/config" ) @@ -311,47 +310,11 @@ func (ctl *EtcdctlV3) Txn(ctx context.Context, compares, ifSucess, ifFail []stri if err != nil { return nil, err } - var resp clientv3.TxnResponse - addTxnResponse(&resp, line) - err = json.Unmarshal([]byte(line), &resp) - return &resp, err -} - -// addTxnResponse looks for ResponseOp json tags and adds the objects for json decoding -func addTxnResponse(resp *clientv3.TxnResponse, jsonData string) { - if resp == nil { - return - } - if resp.Responses == nil { - resp.Responses = []*etcdserverpb.ResponseOp{} - } - jd := json.NewDecoder(strings.NewReader(jsonData)) - for { - t, e := jd.Token() - if errors.Is(e, io.EOF) { - break - } - if t == "response_range" { - resp.Responses = append(resp.Responses, &etcdserverpb.ResponseOp{ - Response: &etcdserverpb.ResponseOp_ResponseRange{}, - }) - } - if t == "response_put" { - resp.Responses = append(resp.Responses, &etcdserverpb.ResponseOp{ - Response: &etcdserverpb.ResponseOp_ResponsePut{}, - }) - } - if t == "response_delete_range" { - resp.Responses = append(resp.Responses, &etcdserverpb.ResponseOp{ - Response: &etcdserverpb.ResponseOp_ResponseDeleteRange{}, - }) - } - if t == "response_txn" { - resp.Responses = append(resp.Responses, &etcdserverpb.ResponseOp{ - Response: &etcdserverpb.ResponseOp_ResponseTxn{}, - }) - } + var jsonResp command.TxnResponseJSON + if err := json.Unmarshal([]byte(line), &jsonResp); err != nil { + return nil, err } + return (*clientv3.TxnResponse)(jsonResp.ToProto()), nil } func (ctl *EtcdctlV3) MemberList(ctx context.Context, serializable bool) (*clientv3.MemberListResponse, error) { diff --git a/tests/framework/e2e/etcdctl_test.go b/tests/framework/e2e/etcdctl_test.go index 3bc16e98169b..d66ddd584013 100644 --- a/tests/framework/e2e/etcdctl_test.go +++ b/tests/framework/e2e/etcdctl_test.go @@ -16,24 +16,30 @@ package e2e import ( "encoding/json" + "strings" "testing" - clientv3 "go.etcd.io/etcd/client/v3" + "github.com/stretchr/testify/require" + + "go.etcd.io/etcd/etcdctl/v3/ctlv3/command" ) -func Test_addTxnResponse(t *testing.T) { +func Test_jsonTxnResponse(t *testing.T) { jsonData := `{"header":{"cluster_id":238453183653593855,"member_id":14578408409545168728,"revision":3,"raft_term":2},"succeeded":true,"responses":[{"Response":{"response_range":{"header":{"revision":3},"kvs":[{"key":"a2V5MQ==","create_revision":2,"mod_revision":2,"version":1,"value":"dmFsdWUx"}],"count":1}}},{"Response":{"response_range":{"header":{"revision":3},"kvs":[{"key":"a2V5Mg==","create_revision":3,"mod_revision":3,"version":1,"value":"dmFsdWUy"}],"count":1}}}]}` - var resp clientv3.TxnResponse - addTxnResponse(&resp, jsonData) - err := json.Unmarshal([]byte(jsonData), &resp) - if err != nil { - t.Errorf("json Unmarshal failed. err: %s", err) + + var jsonTxnResponse command.TxnResponseJSON + decoder := json.NewDecoder(strings.NewReader(jsonData)) + decoder.DisallowUnknownFields() + if err := decoder.Decode(&jsonTxnResponse); err != nil { + t.Fatal(err) } - enc, err := json.Marshal(resp) + + pb := jsonTxnResponse.ToProto() + roundTrippedJSONTxnResponse := command.TxnResponseJSONFromProto(pb) + roundTrippedJSONData, err := json.Marshal(roundTrippedJSONTxnResponse) if err != nil { - t.Errorf("json Marshal failed. err: %s", err) - } - if string(enc) != jsonData { - t.Error("could not get original message after encoding") + t.Fatal(err) } + + require.JSONEqf(t, jsonData, string(roundTrippedJSONData), "could not get original message after encoding") } From 3a995036526ac54eee6bd6346bba61fc8aff874b Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Thu, 7 May 2026 12:37:40 +0800 Subject: [PATCH 0971/1068] add TestMemberUpdateLearner Signed-off-by: shenmu.wy --- tests/integration/clientv3/cluster_test.go | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/tests/integration/clientv3/cluster_test.go b/tests/integration/clientv3/cluster_test.go index 0e2eaaff67a3..6eb30b5ed173 100644 --- a/tests/integration/clientv3/cluster_test.go +++ b/tests/integration/clientv3/cluster_test.go @@ -156,6 +156,68 @@ func TestMemberUpdate(t *testing.T) { } } +func TestMemberUpdateLearner(t *testing.T) { + integration.BeforeTest(t) + + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, DisableStrictReconfigCheck: true}) + defer clus.Terminate(t) + + capi := clus.RandClient() + + urls := []string{"http://127.0.0.1:1234"} + addResp, err := capi.MemberAddAsLearner(t.Context(), urls) + if err != nil { + t.Fatalf("failed to add member %v", err) + } + learnerID := addResp.Member.ID + + resp, err := capi.MemberList(t.Context()) + if err != nil { + t.Fatalf("failed to list member %v", err) + } + var learnerFound bool + for _, m := range resp.Members { + if m.ID == learnerID { + learnerFound = true + if !m.IsLearner { + t.Fatalf("added a member as learner, got member.IsLearner = %v", m.IsLearner) + } + break + } + } + if !learnerFound { + t.Fatalf("failed to find learner member %x", learnerID) + } + + updatedURLs := []string{"http://127.0.0.1:5678"} + _, err = capi.MemberUpdate(t.Context(), learnerID, updatedURLs) + if err != nil { + t.Fatalf("failed to update learner member %v", err) + } + + resp, err = capi.MemberList(t.Context()) + if err != nil { + t.Fatalf("failed to list member %v", err) + } + + learnerFound = false + for _, m := range resp.Members { + if m.ID == learnerID { + learnerFound = true + if !reflect.DeepEqual(m.PeerURLs, updatedURLs) { + t.Errorf("urls = %v, want %v", updatedURLs, m.PeerURLs) + } + if !m.IsLearner { + t.Fatalf("updated peer address of a learner member, but IsLearner was updated to %t by mistake", m.IsLearner) + } + break + } + } + if !learnerFound { + t.Fatalf("failed to find updated learner member %x", learnerID) + } +} + func TestMemberAddUpdateWrongURLs(t *testing.T) { integration.BeforeTest(t) From 7f2f82fe6b2ca35500918953dea08e4cdbb93407 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Wed, 6 May 2026 12:37:23 -0400 Subject: [PATCH 0972/1068] etcdserver: add beforeRangeStreamChunk gofail point Signed-off-by: Jefftree --- server/etcdserver/v3_server.go | 1 + tests/integration/v3_grpc_test.go | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 11d85ab10fc4..238292f8a672 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -217,6 +217,7 @@ func (s *EtcdServer) rangeStream(ctx context.Context, r *pb.RangeRequest, rs pb. count := int64(0) var headerRev int64 for { + // gofail: var beforeRangeStreamChunk struct{} resp, _, err := txn.Range(ctx, s.Logger(), s.KV(), r, false) if err != nil { return err diff --git a/tests/integration/v3_grpc_test.go b/tests/integration/v3_grpc_test.go index 7a5ebc763c7d..d17f5cd64aaf 100644 --- a/tests/integration/v3_grpc_test.go +++ b/tests/integration/v3_grpc_test.go @@ -42,6 +42,7 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/tests/v3/framework/config" "go.etcd.io/etcd/tests/v3/framework/integration" + gofail "go.etcd.io/gofail/runtime" ) // TestV3PutOverwrite puts a key with the v3 api to a random Cluster member, @@ -1771,6 +1772,7 @@ func TestV3RangeStreamWriteBetweenChunks(t *testing.T) { } integration.BeforeTest(t) + integration.SkipIfNoGoFail(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) defer clus.Terminate(t) @@ -1788,6 +1790,10 @@ func TestV3RangeStreamWriteBetweenChunks(t *testing.T) { pinnedRev = resp.Header.Revision } + // Sleep between chunks to prevent gRPC queueing. + require.NoError(t, gofail.Enable("beforeRangeStreamChunk", `sleep("1s")`)) + defer func() { require.NoError(t, gofail.Disable("beforeRangeStreamChunk")) }() + stream, err := kvc.RangeStream(t.Context(), &pb.RangeRequest{ Key: []byte("k00"), RangeEnd: []byte("l"), From 777021cbc3b2d9e08dc9501159ad2d6bd0cfe9a9 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Thu, 7 May 2026 16:09:26 +0800 Subject: [PATCH 0973/1068] bugfix: MemberUpdate a learner overrides its IsLearner to false Signed-off-by: shenmu.wy --- server/etcdserver/api/membership/cluster.go | 43 +++++------ .../etcdserver/api/membership/cluster_test.go | 15 +++- tests/integration/clientv3/cluster_test.go | 76 ++++++++----------- 3 files changed, 64 insertions(+), 70 deletions(-) diff --git a/server/etcdserver/api/membership/cluster.go b/server/etcdserver/api/membership/cluster.go index 1441a7d71878..ab37ad1495dd 100644 --- a/server/etcdserver/api/membership/cluster.go +++ b/server/etcdserver/api/membership/cluster.go @@ -535,42 +535,35 @@ func (c *RaftCluster) UpdateRaftAttributes(id types.ID, raftAttr RaftAttributes, c.Lock() defer c.Unlock() - if _, ok := c.members[id]; ok { - m := *(c.members[id]) - m.RaftAttributes = raftAttr - } else { + var ( + m *Member + ok bool + ) + if m, ok = c.members[id]; !ok { c.lg.Info("Skipped updating non-existent member in v2store", zap.String("cluster-id", c.cid.String()), zap.String("local-member-id", c.localID.String()), zap.String("updated-remote-peer-id", id.String()), zap.Strings("updated-remote-peer-urls", raftAttr.PeerURLs), zap.Bool("updated-remote-peer-is-learner", raftAttr.IsLearner), + zap.Bool("should-apply-v3", bool(shouldApplyV3)), ) + return } + // `MemberUpdateRequest` only supports updating PeerURLs. + m.RaftAttributes.PeerURLs = raftAttr.PeerURLs if shouldApplyV3 { - if m, ok := c.members[id]; ok { - m.RaftAttributes = raftAttr - c.be.MustSaveMemberToBackend(m) + c.be.MustSaveMemberToBackend(m) - c.lg.Info( - "updated member", - zap.String("cluster-id", c.cid.String()), - zap.String("local-member-id", c.localID.String()), - zap.String("updated-remote-peer-id", id.String()), - zap.Strings("updated-remote-peer-urls", raftAttr.PeerURLs), - zap.Bool("updated-remote-peer-is-learner", raftAttr.IsLearner), - ) - } else { - c.lg.Info( - "ignore updating non-existent member", - zap.String("cluster-id", c.cid.String()), - zap.String("local-member-id", c.localID.String()), - zap.String("updated-remote-peer-id", id.String()), - zap.Strings("updated-remote-peer-urls", raftAttr.PeerURLs), - zap.Bool("updated-remote-peer-is-learner", raftAttr.IsLearner), - ) - } + c.lg.Info( + "updated member", + zap.String("cluster-id", c.cid.String()), + zap.String("local-member-id", c.localID.String()), + zap.String("updated-remote-peer-id", id.String()), + zap.Strings("updated-remote-peer-urls", raftAttr.PeerURLs), + zap.Bool("updated-remote-peer-is-learner", raftAttr.IsLearner), + ) } else { c.lg.Info( "ignored already updated member", diff --git a/server/etcdserver/api/membership/cluster_test.go b/server/etcdserver/api/membership/cluster_test.go index 4d1e4d960599..e602eeb27986 100644 --- a/server/etcdserver/api/membership/cluster_test.go +++ b/server/etcdserver/api/membership/cluster_test.go @@ -1063,7 +1063,7 @@ func TestUpdateRaftAttributes(t *testing.T) { wantMembers map[types.ID]*Member }{ { - name: "update an existing member", + name: "update an existing voting member", members: []*Member{ newTestMember(1, oldPeerURLs, "1", clientURLs), newTestMember(2, oldPeerURLs, "2", clientURLs), @@ -1074,6 +1074,18 @@ func TestUpdateRaftAttributes(t *testing.T) { 2: newTestMember(2, newPeerURLs, "2", clientURLs), }, }, + { + name: "update an existing learner member", + members: []*Member{ + newTestMember(1, oldPeerURLs, "1", clientURLs), + newTestMemberAsLearner(2, oldPeerURLs, "2", clientURLs), + }, + updateMemberID: 2, + wantMembers: map[types.ID]*Member{ + 1: newTestMember(1, oldPeerURLs, "1", clientURLs), + 2: newTestMemberAsLearner(2, newPeerURLs, "2", clientURLs), + }, + }, { name: "update a non-exist member", members: []*Member{ @@ -1096,6 +1108,7 @@ func TestUpdateRaftAttributes(t *testing.T) { mst, _ := c.be.MustReadMembersFromBackend() require.Equal(t, tc.wantMembers, mst) + require.Equal(t, tc.wantMembers, c.members) }) } } diff --git a/tests/integration/clientv3/cluster_test.go b/tests/integration/clientv3/cluster_test.go index 6eb30b5ed173..43b365ba2d07 100644 --- a/tests/integration/clientv3/cluster_test.go +++ b/tests/integration/clientv3/cluster_test.go @@ -25,7 +25,9 @@ import ( "github.com/stretchr/testify/require" + "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/client/pkg/v3/types" + clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/tests/v3/framework/integration" ) @@ -166,56 +168,21 @@ func TestMemberUpdateLearner(t *testing.T) { urls := []string{"http://127.0.0.1:1234"} addResp, err := capi.MemberAddAsLearner(t.Context(), urls) - if err != nil { - t.Fatalf("failed to add member %v", err) - } + require.NoError(t, err) learnerID := addResp.Member.ID - resp, err := capi.MemberList(t.Context()) - if err != nil { - t.Fatalf("failed to list member %v", err) - } - var learnerFound bool - for _, m := range resp.Members { - if m.ID == learnerID { - learnerFound = true - if !m.IsLearner { - t.Fatalf("added a member as learner, got member.IsLearner = %v", m.IsLearner) - } - break - } - } - if !learnerFound { - t.Fatalf("failed to find learner member %x", learnerID) - } + learner, err := getMemberByID(t.Context(), capi, learnerID) + require.NoError(t, err) + require.Truef(t, learner.IsLearner, "added a member as learner, IsLearner is %t", learner.IsLearner) updatedURLs := []string{"http://127.0.0.1:5678"} _, err = capi.MemberUpdate(t.Context(), learnerID, updatedURLs) - if err != nil { - t.Fatalf("failed to update learner member %v", err) - } - - resp, err = capi.MemberList(t.Context()) - if err != nil { - t.Fatalf("failed to list member %v", err) - } + require.NoError(t, err) - learnerFound = false - for _, m := range resp.Members { - if m.ID == learnerID { - learnerFound = true - if !reflect.DeepEqual(m.PeerURLs, updatedURLs) { - t.Errorf("urls = %v, want %v", updatedURLs, m.PeerURLs) - } - if !m.IsLearner { - t.Fatalf("updated peer address of a learner member, but IsLearner was updated to %t by mistake", m.IsLearner) - } - break - } - } - if !learnerFound { - t.Fatalf("failed to find updated learner member %x", learnerID) - } + learner, err = getMemberByID(t.Context(), capi, learnerID) + require.NoError(t, err) + require.Equal(t, learner.PeerURLs, updatedURLs) + require.Truef(t, learner.IsLearner, "updated peer address of a learner member, IsLearner is %t", learner.IsLearner) } func TestMemberAddUpdateWrongURLs(t *testing.T) { @@ -491,3 +458,24 @@ func TestMaxLearnerInCluster(t *testing.T) { t.Errorf("failed to add member %v", err) } } + +func getMemberByID(ctx context.Context, cli *clientv3.Client, id uint64) (member *etcdserverpb.Member, err error) { + var resp *clientv3.MemberListResponse + resp, err = cli.MemberList(ctx) + if err != nil { + return member, err + } + + for _, m := range resp.Members { + if m.ID == id { + member = m + break + } + } + + if member == nil { + err = fmt.Errorf("failed to find member by id %d", id) + } + + return member, err +} From 5225ef671bfb359259ce809c07c2760b7c811d2b Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Wed, 11 Mar 2026 22:07:01 -0400 Subject: [PATCH 0974/1068] wal: use pointer for WAL.start/openAtIndex snapshot state keep WAL snapshot tracking on pointer form as well: - change WAL.start from walpb.Snapshot to *walpb.Snapshot - in openAtIndex, normalize nil input to &walpb.Snapshot{} and store pointer start - keep ReadAll math/error path on getters (GetIndex/GetTerm) for pointer-safe access - update WAL test fixture to pass start as pointer Signed-off-by: Wei Fu --- contrib/raftexample/raft.go | 4 +- etcdutl/etcdutl/common.go | 6 +- etcdutl/etcdutl/common_test.go | 16 ++--- etcdutl/snapshot/v3_snapshot.go | 2 +- server/etcdserver/api/snap/snapshotter.go | 2 +- .../etcdserver/api/snap/snapshotter_test.go | 8 +-- server/etcdserver/bootstrap.go | 2 +- server/etcdserver/bootstrap_test.go | 2 +- server/storage/schema/schema_test.go | 6 +- server/storage/storage.go | 4 +- server/storage/wal/doc.go | 6 +- server/storage/wal/repair_test.go | 8 +-- server/storage/wal/testing/waltesting.go | 10 +-- server/storage/wal/wal.go | 46 +++++++------- server/storage/wal/wal_test.go | 62 +++++++++---------- server/storage/wal/walpb/record.go | 13 ++++ server/verify/verify.go | 2 +- tests/integration/utl_wal_version_test.go | 2 +- tests/robustness/report/wal_test.go | 10 +-- tools/etcd-dump-logs/main.go | 2 +- 20 files changed, 115 insertions(+), 98 deletions(-) diff --git a/contrib/raftexample/raft.go b/contrib/raftexample/raft.go index d059115fabdb..71161d055621 100644 --- a/contrib/raftexample/raft.go +++ b/contrib/raftexample/raft.go @@ -128,7 +128,7 @@ func (rc *raftNode) saveSnap(snap raftpb.Snapshot) error { if err := rc.snapshotter.SaveSnap(snap); err != nil { return err } - if err := rc.wal.SaveSnapshot(walSnap); err != nil { + if err := rc.wal.SaveSnapshot(&walSnap); err != nil { return err } return rc.wal.ReleaseLockTo(snap.Metadata.Index) @@ -235,7 +235,7 @@ func (rc *raftNode) openWAL(snapshot *raftpb.Snapshot) *wal.WAL { walsnap.Index, walsnap.Term = new(snapshot.Metadata.Index), new(snapshot.Metadata.Term) } log.Printf("loading WAL at term %d and index %d", walsnap.GetTerm(), walsnap.GetIndex()) - w, err := wal.Open(zap.NewExample(), rc.waldir, walsnap) + w, err := wal.Open(zap.NewExample(), rc.waldir, &walsnap) if err != nil { log.Fatalf("raftexample: error loading wal (%v)", err) } diff --git a/etcdutl/etcdutl/common.go b/etcdutl/etcdutl/common.go index 40c55858897b..3ba688388c5f 100644 --- a/etcdutl/etcdutl/common.go +++ b/etcdutl/etcdutl/common.go @@ -43,18 +43,18 @@ func GetLogger() *zap.Logger { return lg } -func getLatestWALSnap(lg *zap.Logger, dataDir string) (walpb.Snapshot, error) { +func getLatestWALSnap(lg *zap.Logger, dataDir string) (*walpb.Snapshot, error) { walPath := datadir.ToWALDir(dataDir) walSnaps, err := wal.ValidSnapshotEntries(lg, walPath) if err != nil { - return walpb.Snapshot{}, err + return nil, err } if len(walSnaps) > 0 { lastIdx := len(walSnaps) - 1 return walSnaps[lastIdx], nil } - return walpb.Snapshot{}, nil + return &walpb.Snapshot{}, nil } // SimpleLessor is a simplified implementation of Lessor interface. diff --git a/etcdutl/etcdutl/common_test.go b/etcdutl/etcdutl/common_test.go index d8d6659f577a..414051d6589f 100644 --- a/etcdutl/etcdutl/common_test.go +++ b/etcdutl/etcdutl/common_test.go @@ -33,13 +33,13 @@ import ( func TestGetLatestWalSnap(t *testing.T) { testCases := []struct { name string - walSnaps []walpb.Snapshot + walSnaps []*walpb.Snapshot snapshots []raftpb.Snapshot - expectedLatestWALSnap walpb.Snapshot + expectedLatestWALSnap *walpb.Snapshot }{ { name: "wal snapshot records match the snapshot files", - walSnaps: []walpb.Snapshot{ + walSnaps: []*walpb.Snapshot{ {Index: new(uint64(10)), Term: new(uint64(2))}, {Index: new(uint64(20)), Term: new(uint64(3))}, {Index: new(uint64(30)), Term: new(uint64(5))}, @@ -49,11 +49,11 @@ func TestGetLatestWalSnap(t *testing.T) { {Metadata: raftpb.SnapshotMetadata{Index: 20, Term: 3}}, {Metadata: raftpb.SnapshotMetadata{Index: 30, Term: 5}}, }, - expectedLatestWALSnap: walpb.Snapshot{Index: new(uint64(30)), Term: new(uint64(5))}, + expectedLatestWALSnap: &walpb.Snapshot{Index: new(uint64(30)), Term: new(uint64(5))}, }, { name: "there are orphan snapshot files", - walSnaps: []walpb.Snapshot{ + walSnaps: []*walpb.Snapshot{ {Index: new(uint64(10)), Term: new(uint64(2))}, {Index: new(uint64(20)), Term: new(uint64(3))}, {Index: new(uint64(35)), Term: new(uint64(5))}, @@ -65,7 +65,7 @@ func TestGetLatestWalSnap(t *testing.T) { {Metadata: raftpb.SnapshotMetadata{Index: 40, Term: 6}}, {Metadata: raftpb.SnapshotMetadata{Index: 50, Term: 7}}, }, - expectedLatestWALSnap: walpb.Snapshot{Index: new(uint64(35)), Term: new(uint64(5))}, + expectedLatestWALSnap: &walpb.Snapshot{Index: new(uint64(35)), Term: new(uint64(5))}, }, } @@ -108,8 +108,8 @@ func TestGetLatestWalSnap(t *testing.T) { walSnap, err := getLatestWALSnap(lg, dataDir) require.NoError(t, err) - require.Equal(t, tc.expectedLatestWALSnap.Term, walSnap.Term) - require.Equal(t, tc.expectedLatestWALSnap.Index, walSnap.Index) + require.Equal(t, tc.expectedLatestWALSnap.GetTerm(), walSnap.GetTerm()) + require.Equal(t, tc.expectedLatestWALSnap.GetIndex(), walSnap.GetIndex()) }) } } diff --git a/etcdutl/snapshot/v3_snapshot.go b/etcdutl/snapshot/v3_snapshot.go index c095f6ae85f5..3baf6beab201 100644 --- a/etcdutl/snapshot/v3_snapshot.go +++ b/etcdutl/snapshot/v3_snapshot.go @@ -587,7 +587,7 @@ func (s *v3Manager) saveWALAndSnap() (*raftpb.HardState, error) { return nil, err } snapshot := walpb.Snapshot{Index: &commit, Term: &term, ConfState: &confState} - return &hardState, w.SaveSnapshot(snapshot) + return &hardState, w.SaveSnapshot(&snapshot) } func (s *v3Manager) updateCIndex(commit uint64, term uint64) error { diff --git a/server/etcdserver/api/snap/snapshotter.go b/server/etcdserver/api/snap/snapshotter.go index 31febdc0ed6c..f1b377678f2a 100644 --- a/server/etcdserver/api/snap/snapshotter.go +++ b/server/etcdserver/api/snap/snapshotter.go @@ -110,7 +110,7 @@ func (s *Snapshotter) Load() (*raftpb.Snapshot, error) { } // LoadNewestAvailable loads the newest snapshot available that is in walSnaps. -func (s *Snapshotter) LoadNewestAvailable(walSnaps []walpb.Snapshot) (*raftpb.Snapshot, error) { +func (s *Snapshotter) LoadNewestAvailable(walSnaps []*walpb.Snapshot) (*raftpb.Snapshot, error) { return s.loadMatching(func(snapshot *raftpb.Snapshot) bool { m := snapshot.Metadata for i := len(walSnaps) - 1; i >= 0; i-- { diff --git a/server/etcdserver/api/snap/snapshotter_test.go b/server/etcdserver/api/snap/snapshotter_test.go index b0fd09410bc6..8f1734832386 100644 --- a/server/etcdserver/api/snap/snapshotter_test.go +++ b/server/etcdserver/api/snap/snapshotter_test.go @@ -171,7 +171,7 @@ func TestLoadNewestSnap(t *testing.T) { cases := []struct { name string - availableWALSnaps []walpb.Snapshot + availableWALSnaps []*walpb.Snapshot expected *raftpb.Snapshot }{ { @@ -180,17 +180,17 @@ func TestLoadNewestSnap(t *testing.T) { }, { name: "loadnewestavailable-newest", - availableWALSnaps: []walpb.Snapshot{{Index: new(uint64(0)), Term: new(uint64(0))}, {Index: new(uint64(1)), Term: new(uint64(1))}, {Index: new(uint64(5)), Term: new(uint64(1))}}, + availableWALSnaps: []*walpb.Snapshot{{Index: new(uint64(0)), Term: new(uint64(0))}, {Index: new(uint64(1)), Term: new(uint64(1))}, {Index: new(uint64(5)), Term: new(uint64(1))}}, expected: &newSnap, }, { name: "loadnewestavailable-newest-unsorted", - availableWALSnaps: []walpb.Snapshot{{Index: new(uint64(5)), Term: new(uint64(1))}, {Index: new(uint64(1)), Term: new(uint64(1))}, {Index: new(uint64(0)), Term: new(uint64(0))}}, + availableWALSnaps: []*walpb.Snapshot{{Index: new(uint64(5)), Term: new(uint64(1))}, {Index: new(uint64(1)), Term: new(uint64(1))}, {Index: new(uint64(0)), Term: new(uint64(0))}}, expected: &newSnap, }, { name: "loadnewestavailable-previous", - availableWALSnaps: []walpb.Snapshot{{Index: new(uint64(0)), Term: new(uint64(0))}, {Index: new(uint64(1)), Term: new(uint64(1))}}, + availableWALSnaps: []*walpb.Snapshot{{Index: new(uint64(0)), Term: new(uint64(0))}, {Index: new(uint64(1)), Term: new(uint64(1))}}, expected: testSnap, }, } diff --git a/server/etcdserver/bootstrap.go b/server/etcdserver/bootstrap.go index bd46002b6c77..4e70f71e83bf 100644 --- a/server/etcdserver/bootstrap.go +++ b/server/etcdserver/bootstrap.go @@ -636,7 +636,7 @@ func openWALFromSnapshot(cfg config.ServerConfig, snapshot *raftpb.Snapshot) (*w } repaired := false for { - w, err := wal.Open(cfg.Logger, cfg.WALDir(), walsnap) + w, err := wal.Open(cfg.Logger, cfg.WALDir(), &walsnap) if err != nil { cfg.Logger.Fatal("failed to open WAL", zap.Error(err)) } diff --git a/server/etcdserver/bootstrap_test.go b/server/etcdserver/bootstrap_test.go index 4884a958f3ca..d700ed72942e 100644 --- a/server/etcdserver/bootstrap_test.go +++ b/server/etcdserver/bootstrap_test.go @@ -261,7 +261,7 @@ func createWALFileWithSnapshotRecord(cfg config.ServerConfig, snapshotTerm, snap }, } - if err = w.SaveSnapshot(walSnap); err != nil { + if err = w.SaveSnapshot(&walSnap); err != nil { return err } diff --git a/server/storage/schema/schema_test.go b/server/storage/schema/schema_test.go index 4f6f25c0b154..bbd56e84b3d0 100644 --- a/server/storage/schema/schema_test.go +++ b/server/storage/schema/schema_test.go @@ -108,7 +108,7 @@ func TestMigrate(t *testing.T) { // Overrides which keys should be set (default based on version) overrideKeys func(tx backend.UnsafeReadWriter) targetVersion semver.Version - walEntries []etcdserverpb.InternalRaftRequest + walEntries []*etcdserverpb.InternalRaftRequest expectVersion *semver.Version expectError bool @@ -183,7 +183,7 @@ func TestMigrate(t *testing.T) { name: "Downgrading v3.6 to v3.5 works as there are no v3.6 wal entries", version: version.V3_6, targetVersion: version.V3_5, - walEntries: []etcdserverpb.InternalRaftRequest{ + walEntries: []*etcdserverpb.InternalRaftRequest{ {Range: &etcdserverpb.RangeRequest{Key: []byte("\x00"), RangeEnd: []byte("\xff")}}, }, expectVersion: nil, @@ -192,7 +192,7 @@ func TestMigrate(t *testing.T) { name: "Downgrading v3.6 to v3.5 fails if there are newer WAL entries", version: version.V3_6, targetVersion: version.V3_5, - walEntries: []etcdserverpb.InternalRaftRequest{ + walEntries: []*etcdserverpb.InternalRaftRequest{ {DowngradeVersionTest: &etcdserverpb.DowngradeVersionTestRequest{Ver: "3.6.0"}}, }, expectVersion: &version.V3_6, diff --git a/server/storage/storage.go b/server/storage/storage.go index 6e2a201f5282..3270c8efee11 100644 --- a/server/storage/storage.go +++ b/server/storage/storage.go @@ -74,7 +74,7 @@ func (st *storage) SaveSnap(snap raftpb.Snapshot) error { } // gofail: var raftBeforeWALSaveSnaphot struct{} - return st.w.SaveSnapshot(walsnap) + return st.w.SaveSnapshot(&walsnap) } // Release releases resources older than the given snap and are no longer needed: @@ -121,7 +121,7 @@ func (st *storage) MinimalEtcdVersion() *semver.Version { walsnap.Term = new(sn.Metadata.Term) walsnap.ConfState = &sn.Metadata.ConfState } - w, err := st.w.Reopen(st.lg, walsnap) + w, err := st.w.Reopen(st.lg, &walsnap) if err != nil { panic(err) } diff --git a/server/storage/wal/doc.go b/server/storage/wal/doc.go index 8839ca3064f7..a1032d3513d3 100644 --- a/server/storage/wal/doc.go +++ b/server/storage/wal/doc.go @@ -30,7 +30,7 @@ record it. So WAL can match with the saved snapshot when restarting. index := uint64(10) term := uint64(2) - err := w.SaveSnapshot(walpb.Snapshot{Index: &index, Term: &term}) + err := w.SaveSnapshot(&walpb.Snapshot{Index: &index, Term: &term}) When a user has finished using a WAL it must be closed: @@ -58,11 +58,11 @@ If a second cut issues 0x10 entries with incremental index later, then the file 0000000000000002-0000000000000031.wal. At a later time a WAL can be opened at a particular snapshot. If there is no -snapshot, an empty snapshot should be passed in. +snapshot, nil or an empty snapshot should be passed in. index := uint64(10) term := uint64(2) - w, err := wal.Open("/var/lib/etcd", walpb.Snapshot{Index: &index, Term: &term}) + w, err := wal.Open(zap.NewExample(), "/var/lib/etcd", &walpb.Snapshot{Index: &index, Term: &term}) ... The snapshot must have been written to the WAL. diff --git a/server/storage/wal/repair_test.go b/server/storage/wal/repair_test.go index 8f05b197806f..00c0679c1a59 100644 --- a/server/storage/wal/repair_test.go +++ b/server/storage/wal/repair_test.go @@ -69,7 +69,7 @@ func testRepair(t *testing.T, ents [][]raftpb.Entry, corrupt corruptFunc, expect require.NoError(t, corrupt(p, offset)) // verify we broke the wal - w, err = Open(zaptest.NewLogger(t), p, walpb.Snapshot{}) + w, err = Open(zaptest.NewLogger(t), p, &walpb.Snapshot{}) require.NoError(t, err) _, _, _, err = w.ReadAll() @@ -88,7 +88,7 @@ func testRepair(t *testing.T, ents [][]raftpb.Entry, corrupt corruptFunc, expect require.Equalf(t, expectedPerms, actualPerms, "unexpected file permissions on .broken wal") // read it back - w, err = Open(lg, p, walpb.Snapshot{}) + w, err = Open(lg, p, &walpb.Snapshot{}) require.NoError(t, err) _, _, walEnts, err := w.ReadAll() @@ -103,7 +103,7 @@ func testRepair(t *testing.T, ents [][]raftpb.Entry, corrupt corruptFunc, expect require.NoError(t, w.Close()) // read back entries following repair, ensure it's all there - w, err = Open(lg, p, walpb.Snapshot{}) + w, err = Open(lg, p, &walpb.Snapshot{}) require.NoError(t, err) _, _, walEnts, err = w.ReadAll() require.NoError(t, err) @@ -197,7 +197,7 @@ func TestRepairFailDeleteDir(t *testing.T) { } f.Close() - w, err = Open(zaptest.NewLogger(t), p, walpb.Snapshot{}) + w, err = Open(zaptest.NewLogger(t), p, &walpb.Snapshot{}) if err != nil { t.Fatal(err) } diff --git a/server/storage/wal/testing/waltesting.go b/server/storage/wal/testing/waltesting.go index 7613a3f7107f..fc6ed0311abe 100644 --- a/server/storage/wal/testing/waltesting.go +++ b/server/storage/wal/testing/waltesting.go @@ -28,7 +28,7 @@ import ( "go.etcd.io/raft/v3/raftpb" ) -func NewTmpWAL(tb testing.TB, reqs []etcdserverpb.InternalRaftRequest) (*wal.WAL, string) { +func NewTmpWAL(tb testing.TB, reqs []*etcdserverpb.InternalRaftRequest) (*wal.WAL, string) { tb.Helper() dir, err := os.MkdirTemp(tb.TempDir(), "etcd_wal_test") if err != nil { @@ -45,7 +45,7 @@ func NewTmpWAL(tb testing.TB, reqs []etcdserverpb.InternalRaftRequest) (*wal.WAL tb.Fatalf("Failed to close WAL: %v", err) } if len(reqs) != 0 { - w, err = wal.Open(lg, tmpPath, walpb.Snapshot{}) + w, err = wal.Open(lg, tmpPath, &walpb.Snapshot{}) if err != nil { tb.Fatalf("Failed to open WAL: %v", err) } @@ -61,7 +61,7 @@ func NewTmpWAL(tb testing.TB, reqs []etcdserverpb.InternalRaftRequest) (*wal.WAL Term: 1, Index: 1, Type: raftpb.EntryNormal, - Data: pbutil.MustMarshal(&req), + Data: pbutil.MustMarshal(req), }) } err = w.Save(state, entries) @@ -74,7 +74,7 @@ func NewTmpWAL(tb testing.TB, reqs []etcdserverpb.InternalRaftRequest) (*wal.WAL } } - w, err = wal.OpenForRead(lg, tmpPath, walpb.Snapshot{}) + w, err = wal.OpenForRead(lg, tmpPath, &walpb.Snapshot{}) if err != nil { tb.Fatalf("Failed to open WAL: %v", err) } @@ -84,7 +84,7 @@ func NewTmpWAL(tb testing.TB, reqs []etcdserverpb.InternalRaftRequest) (*wal.WAL func Reopen(tb testing.TB, walPath string) *wal.WAL { tb.Helper() lg := zaptest.NewLogger(tb) - w, err := wal.OpenForRead(lg, walPath, walpb.Snapshot{}) + w, err := wal.OpenForRead(lg, walPath, &walpb.Snapshot{}) if err != nil { tb.Fatalf("Failed to open WAL: %v", err) } diff --git a/server/storage/wal/wal.go b/server/storage/wal/wal.go index 6c944e3abdd2..badfde13c0c1 100644 --- a/server/storage/wal/wal.go +++ b/server/storage/wal/wal.go @@ -80,9 +80,9 @@ type WAL struct { metadata []byte // metadata recorded at the head of each WAL state raftpb.HardState // hardstate recorded at the head of WAL - start walpb.Snapshot // snapshot to start reading - decoder Decoder // decoder to Decode records - readClose func() error // closer for Decode reader + start *walpb.Snapshot // snapshot to start reading + decoder Decoder // decoder to Decode records + readClose func() error // closer for Decode reader unsafeNoSync bool // if set, do not fsync @@ -170,7 +170,7 @@ func Create(lg *zap.Logger, dirpath string, metadata []byte) (*WAL, error) { return nil, err } // Create an empty snapshot record during the initial bootstrap only. - if err = w.SaveSnapshot(walpb.Snapshot{Index: new(uint64(0)), Term: new(uint64(0))}); err != nil { + if err = w.SaveSnapshot(&walpb.Snapshot{Index: new(uint64(0)), Term: new(uint64(0))}); err != nil { return nil, err } @@ -259,7 +259,7 @@ func createNewWALFile[T *os.File | *fileutil.LockedFile](path string, forceNew b return any(file).(T), nil } -func (w *WAL) Reopen(lg *zap.Logger, snap walpb.Snapshot) (*WAL, error) { +func (w *WAL) Reopen(lg *zap.Logger, snap *walpb.Snapshot) (*WAL, error) { err := w.Close() if err != nil { lg.Panic("failed to close WAL during reopen", zap.Error(err)) @@ -325,7 +325,7 @@ func (w *WAL) renameWALUnlock(tmpdirpath string) (*WAL, error) { } // reopen and relock - newWAL, oerr := Open(w.lg, w.dir, walpb.Snapshot{}) + newWAL, oerr := Open(w.lg, w.dir, &walpb.Snapshot{}) if oerr != nil { return nil, oerr } @@ -342,7 +342,7 @@ func (w *WAL) renameWALUnlock(tmpdirpath string) (*WAL, error) { // The returned WAL is ready to read and the first record will be the one after // the given snap. The WAL cannot be appended to before reading out all of its // previous records. -func Open(lg *zap.Logger, dirpath string, snap walpb.Snapshot) (*WAL, error) { +func Open(lg *zap.Logger, dirpath string, snap *walpb.Snapshot) (*WAL, error) { w, err := openAtIndex(lg, dirpath, snap, true) if err != nil { return nil, fmt.Errorf("openAtIndex failed: %w", err) @@ -355,14 +355,15 @@ func Open(lg *zap.Logger, dirpath string, snap walpb.Snapshot) (*WAL, error) { // OpenForRead only opens the wal files for read. // Write on a read only wal panics. -func OpenForRead(lg *zap.Logger, dirpath string, snap walpb.Snapshot) (*WAL, error) { +func OpenForRead(lg *zap.Logger, dirpath string, snap *walpb.Snapshot) (*WAL, error) { return openAtIndex(lg, dirpath, snap, false) } -func openAtIndex(lg *zap.Logger, dirpath string, snap walpb.Snapshot, write bool) (*WAL, error) { +func openAtIndex(lg *zap.Logger, dirpath string, startSnap *walpb.Snapshot, write bool) (*WAL, error) { if lg == nil { lg = zap.NewNop() } + snap := startSnap.Clone() names, nameIndex, err := selectWALFiles(lg, dirpath, snap) if err != nil { return nil, fmt.Errorf("[openAtIndex] selectWALFiles failed: %w", err) @@ -397,7 +398,7 @@ func openAtIndex(lg *zap.Logger, dirpath string, snap walpb.Snapshot, write bool return w, nil } -func selectWALFiles(lg *zap.Logger, dirpath string, snap walpb.Snapshot) ([]string, int, error) { +func selectWALFiles(lg *zap.Logger, dirpath string, snap *walpb.Snapshot) ([]string, int, error) { names, err := readWALNames(lg, dirpath) if err != nil { return nil, -1, fmt.Errorf("readWALNames failed: %w", err) @@ -405,7 +406,7 @@ func selectWALFiles(lg *zap.Logger, dirpath string, snap walpb.Snapshot) ([]stri nameIndex, ok := searchIndex(lg, names, snap.GetIndex()) if !ok { - return nil, -1, fmt.Errorf("wal: file not found which matches the snapshot index '%d'", snap.Index) + return nil, -1, fmt.Errorf("wal: file not found which matches the snapshot index '%d'", snap.GetIndex()) } if !isValidSeq(lg, names[nameIndex:]) { @@ -492,7 +493,7 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb. // We still return the continuous WAL entries that have already been read. // Refer to https://github.com/etcd-io/etcd/pull/19038#issuecomment-2557414292. return nil, state, ents, fmt.Errorf("%w, snapshot[Index: %d, Term: %d], current entry[Index: %d, Term: %d], len(ents): %d", - ErrSliceOutOfRange, w.start.Index, w.start.Term, e.Index, e.Term, len(ents)) + ErrSliceOutOfRange, w.start.GetIndex(), w.start.GetTerm(), e.Index, e.Term, len(ents)) } // The line below is potentially overriding some 'uncommitted' entries. ents = append(ents[:offset], e) @@ -575,7 +576,7 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb. w.readClose() w.readClose = nil } - w.start = walpb.Snapshot{} + w.start = &walpb.Snapshot{} w.metadata = metadata @@ -593,8 +594,8 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb. // ValidSnapshotEntries returns all the valid snapshot entries in the wal logs in the given directory. // Snapshot entries are valid if their index is less than or equal to the most recent committed hardstate. -func ValidSnapshotEntries(lg *zap.Logger, walDir string) ([]walpb.Snapshot, error) { - var snaps []walpb.Snapshot +func ValidSnapshotEntries(lg *zap.Logger, walDir string) ([]*walpb.Snapshot, error) { + var snaps []*walpb.Snapshot var state raftpb.HardState var err error @@ -622,8 +623,8 @@ func ValidSnapshotEntries(lg *zap.Logger, walDir string) ([]walpb.Snapshot, erro for err = decoder.Decode(rec); err == nil; err = decoder.Decode(rec) { switch rec.GetType() { case SnapshotType: - var loadedSnap walpb.Snapshot - pbutil.MustUnmarshal(&loadedSnap, rec.Data) + loadedSnap := &walpb.Snapshot{} + pbutil.MustUnmarshal(loadedSnap, rec.Data) snaps = append(snaps, loadedSnap) case StateType: state = MustUnmarshalState(rec.Data) @@ -662,7 +663,7 @@ func ValidSnapshotEntries(lg *zap.Logger, walDir string) ([]walpb.Snapshot, erro // If it cannot read out the expected snap, it will return ErrSnapshotNotFound. // If the loaded snap doesn't match with the expected one, it will // return error ErrSnapshotMismatch. -func Verify(lg *zap.Logger, walDir string, snap walpb.Snapshot) (*raftpb.HardState, error) { +func Verify(lg *zap.Logger, walDir string, snap *walpb.Snapshot) (*raftpb.HardState, error) { var metadata []byte var err error var match bool @@ -991,12 +992,15 @@ func (w *WAL) Save(st raftpb.HardState, ents []raftpb.Entry) error { return w.cut() } -func (w *WAL) SaveSnapshot(e walpb.Snapshot) error { - if err := walpb.ValidateSnapshotForWrite(&e); err != nil { +func (w *WAL) SaveSnapshot(e *walpb.Snapshot) error { + if e == nil { + return errors.New("snapshot is nil") + } + if err := walpb.ValidateSnapshotForWrite(e); err != nil { return err } - b := pbutil.MustMarshal(&e) + b := pbutil.MustMarshal(e) w.mu.Lock() defer w.mu.Unlock() diff --git a/server/storage/wal/wal_test.go b/server/storage/wal/wal_test.go index 40abdb1e3a5f..df05db2c9e82 100644 --- a/server/storage/wal/wal_test.go +++ b/server/storage/wal/wal_test.go @@ -228,7 +228,7 @@ func TestOpenAtIndex(t *testing.T) { } f.Close() - w, err := Open(zaptest.NewLogger(t), dir, walpb.Snapshot{}) + w, err := Open(zaptest.NewLogger(t), dir, &walpb.Snapshot{}) require.NoErrorf(t, err, "err = %v, want nil", err) if g := filepath.Base(w.tail().Name()); g != walName(0, 0) { t.Errorf("name = %+v, want %+v", g, walName(0, 0)) @@ -245,7 +245,7 @@ func TestOpenAtIndex(t *testing.T) { } f.Close() - w, err = Open(zaptest.NewLogger(t), dir, walpb.Snapshot{Index: new(uint64(5))}) + w, err = Open(zaptest.NewLogger(t), dir, &walpb.Snapshot{Index: new(uint64(5))}) require.NoErrorf(t, err, "err = %v, want nil", err) if g := filepath.Base(w.tail().Name()); g != wname { t.Errorf("name = %+v, want %+v", g, wname) @@ -256,7 +256,7 @@ func TestOpenAtIndex(t *testing.T) { w.Close() emptydir := t.TempDir() - if _, err = Open(zaptest.NewLogger(t), emptydir, walpb.Snapshot{}); !errors.Is(err, ErrFileNotFound) { + if _, err = Open(zaptest.NewLogger(t), emptydir, &walpb.Snapshot{}); !errors.Is(err, ErrFileNotFound) { t.Errorf("err = %v, want %v", err, ErrFileNotFound) } } @@ -290,7 +290,7 @@ func TestVerify(t *testing.T) { require.NoError(t, w.Save(hs, nil)) // to verify the WAL is not corrupted at this point - hardstate, err := Verify(lg, walDir, walpb.Snapshot{}) + hardstate, err := Verify(lg, walDir, &walpb.Snapshot{}) if err != nil { t.Errorf("expected a nil error, got %v", err) } @@ -307,7 +307,7 @@ func TestVerify(t *testing.T) { t.Fatal(err) } - _, err = Verify(lg, walDir, walpb.Snapshot{}) + _, err = Verify(lg, walDir, &walpb.Snapshot{}) if err == nil { t.Error("expected a non-nil error, got nil") } @@ -344,7 +344,7 @@ func TestCut(t *testing.T) { t.Fatal(err) } snap := walpb.Snapshot{Index: new(uint64(2)), Term: new(uint64(1)), ConfState: &confState} - if err = w.SaveSnapshot(snap); err != nil { + if err = w.SaveSnapshot(&snap); err != nil { t.Fatal(err) } wname = walName(2, 2) @@ -362,7 +362,7 @@ func TestCut(t *testing.T) { defer f.Close() nw := &WAL{ decoder: NewDecoder(fileutil.NewFileReader(f)), - start: snap, + start: &snap, } _, gst, _, err := nw.ReadAll() if err != nil { @@ -404,7 +404,7 @@ func TestSaveWithCut(t *testing.T) { w.Close() - neww, err := Open(zaptest.NewLogger(t), p, walpb.Snapshot{}) + neww, err := Open(zaptest.NewLogger(t), p, &walpb.Snapshot{}) require.NoErrorf(t, err, "err = %v, want nil", err) defer neww.Close() wname := walName(1, index) @@ -457,7 +457,7 @@ func TestRecover(t *testing.T) { if err != nil { t.Fatal(err) } - if err = w.SaveSnapshot(walpb.Snapshot{Index: new(uint64(0)), Term: new(uint64(0))}); err != nil { + if err = w.SaveSnapshot(&walpb.Snapshot{Index: new(uint64(0)), Term: new(uint64(0))}); err != nil { t.Fatal(err) } @@ -480,7 +480,7 @@ func TestRecover(t *testing.T) { } w.Close() - if w, err = Open(zaptest.NewLogger(t), p, walpb.Snapshot{}); err != nil { + if w, err = Open(zaptest.NewLogger(t), p, &walpb.Snapshot{}); err != nil { t.Fatal(err) } metadata, state, entries, err := w.ReadAll() @@ -579,7 +579,7 @@ func TestRecoverAfterCut(t *testing.T) { t.Fatal(err) } for i := 0; i < 10; i++ { - if err = md.SaveSnapshot(walpb.Snapshot{Index: new(uint64(i)), Term: new(uint64(1)), ConfState: &confState}); err != nil { + if err = md.SaveSnapshot(&walpb.Snapshot{Index: new(uint64(i)), Term: new(uint64(1)), ConfState: &confState}); err != nil { t.Fatal(err) } es := []raftpb.Entry{{Index: uint64(i)}} @@ -597,7 +597,7 @@ func TestRecoverAfterCut(t *testing.T) { } for i := 0; i < 10; i++ { - w, err := Open(zaptest.NewLogger(t), p, walpb.Snapshot{Index: new(uint64(i)), Term: new(uint64(1))}) + w, err := Open(zaptest.NewLogger(t), p, &walpb.Snapshot{Index: new(uint64(i)), Term: new(uint64(1))}) if err != nil { if i <= 4 { if !strings.Contains(err.Error(), "do not increase continuously") { @@ -632,7 +632,7 @@ func TestOpenAtUncommittedIndex(t *testing.T) { if err != nil { t.Fatal(err) } - if err = w.SaveSnapshot(walpb.Snapshot{Index: new(uint64(0)), Term: new(uint64(0))}); err != nil { + if err = w.SaveSnapshot(&walpb.Snapshot{Index: new(uint64(0)), Term: new(uint64(0))}); err != nil { t.Fatal(err) } if err = w.Save(raftpb.HardState{}, []raftpb.Entry{{Index: 0}}); err != nil { @@ -640,7 +640,7 @@ func TestOpenAtUncommittedIndex(t *testing.T) { } w.Close() - w, err = Open(zaptest.NewLogger(t), p, walpb.Snapshot{}) + w, err = Open(zaptest.NewLogger(t), p, &walpb.Snapshot{}) if err != nil { t.Fatal(err) } @@ -678,7 +678,7 @@ func TestOpenForRead(t *testing.T) { w.ReleaseLockTo(unlockIndex) // All are available for read - w2, err := OpenForRead(zaptest.NewLogger(t), p, walpb.Snapshot{}) + w2, err := OpenForRead(zaptest.NewLogger(t), p, &walpb.Snapshot{}) if err != nil { t.Fatal(err) } @@ -710,7 +710,7 @@ func TestOpenWithMaxIndex(t *testing.T) { w1.Close() w1 = nil - w2, err := Open(zaptest.NewLogger(t), p, walpb.Snapshot{}) + w2, err := Open(zaptest.NewLogger(t), p, &walpb.Snapshot{}) if err != nil { t.Fatal(err) } @@ -828,7 +828,7 @@ func TestTailWriteNoSlackSpace(t *testing.T) { w.Close() // open, write more - w, err = Open(zaptest.NewLogger(t), p, walpb.Snapshot{}) + w, err = Open(zaptest.NewLogger(t), p, &walpb.Snapshot{}) if err != nil { t.Fatal(err) } @@ -847,7 +847,7 @@ func TestTailWriteNoSlackSpace(t *testing.T) { w.Close() // confirm all writes - w, err = Open(zaptest.NewLogger(t), p, walpb.Snapshot{}) + w, err = Open(zaptest.NewLogger(t), p, &walpb.Snapshot{}) if err != nil { t.Fatal(err) } @@ -884,7 +884,7 @@ func TestRestartCreateWal(t *testing.T) { t.Fatalf("got %q exists, expected it to not exist", tmpdir) } - if w, err = OpenForRead(zaptest.NewLogger(t), p, walpb.Snapshot{}); err != nil { + if w, err = OpenForRead(zaptest.NewLogger(t), p, &walpb.Snapshot{}); err != nil { t.Fatal(err) } defer w.Close() @@ -943,7 +943,7 @@ func TestOpenOnTornWrite(t *testing.T) { } f.Close() - w, err = Open(zaptest.NewLogger(t), p, walpb.Snapshot{}) + w, err = Open(zaptest.NewLogger(t), p, &walpb.Snapshot{}) if err != nil { t.Fatal(err) } @@ -964,7 +964,7 @@ func TestOpenOnTornWrite(t *testing.T) { w.Close() // read back the entries, confirm number of entries matches expectation - w, err = OpenForRead(zaptest.NewLogger(t), p, walpb.Snapshot{}) + w, err = OpenForRead(zaptest.NewLogger(t), p, &walpb.Snapshot{}) if err != nil { t.Fatal(err) } @@ -1036,22 +1036,22 @@ func TestValidSnapshotEntries(t *testing.T) { defer w.Close() // snap0 is implicitly created at index 0, term 0 - if err = w.SaveSnapshot(snap1); err != nil { + if err = w.SaveSnapshot(&snap1); err != nil { t.Fatal(err) } if err = w.Save(state1, nil); err != nil { t.Fatal(err) } - if err = w.SaveSnapshot(snap2); err != nil { + if err = w.SaveSnapshot(&snap2); err != nil { t.Fatal(err) } - if err = w.SaveSnapshot(snap3); err != nil { + if err = w.SaveSnapshot(&snap3); err != nil { t.Fatal(err) } if err = w.Save(state2, nil); err != nil { t.Fatal(err) } - if err = w.SaveSnapshot(snap4); err != nil { + if err = w.SaveSnapshot(&snap4); err != nil { t.Fatal(err) } }() @@ -1059,7 +1059,7 @@ func TestValidSnapshotEntries(t *testing.T) { if err != nil { t.Fatal(err) } - expected := []walpb.Snapshot{snap0, snap1, snap2, snap3} + expected := []*walpb.Snapshot{&snap0, &snap1, &snap2, &snap3} if !reflect.DeepEqual(walSnaps, expected) { t.Errorf("expected walSnaps %+v, got %+v", expected, walSnaps) } @@ -1088,16 +1088,16 @@ func TestValidSnapshotEntriesAfterPurgeWal(t *testing.T) { defer w.Close() // snap0 is implicitly created at index 0, term 0 - if err = w.SaveSnapshot(snap1); err != nil { + if err = w.SaveSnapshot(&snap1); err != nil { t.Fatal(err) } if err = w.Save(state1, nil); err != nil { t.Fatal(err) } - if err = w.SaveSnapshot(snap2); err != nil { + if err = w.SaveSnapshot(&snap2); err != nil { t.Fatal(err) } - if err = w.SaveSnapshot(snap3); err != nil { + if err = w.SaveSnapshot(&snap3); err != nil { t.Fatal(err) } for i := 0; i < 128; i++ { @@ -1106,7 +1106,7 @@ func TestValidSnapshotEntriesAfterPurgeWal(t *testing.T) { } } }() - files, _, err := selectWALFiles(nil, p, snap0) + files, _, err := selectWALFiles(nil, p, &snap0) if err != nil { t.Fatal(err) } @@ -1180,7 +1180,7 @@ func TestLastRecordLengthExceedFileEnd(t *testing.T) { newFileName := filepath.Join(filepath.Dir(fileName), "0000000000000000-0000000000000000.wal") require.NoError(t, os.Rename(fileName, newFileName)) - w, err := Open(zaptest.NewLogger(t), filepath.Dir(fileName), walpb.Snapshot{ + w, err := Open(zaptest.NewLogger(t), filepath.Dir(fileName), &walpb.Snapshot{ Index: new(uint64(0)), Term: new(uint64(0)), }) diff --git a/server/storage/wal/walpb/record.go b/server/storage/wal/walpb/record.go index ddeeab7e745a..5ed46cbe10c9 100644 --- a/server/storage/wal/walpb/record.go +++ b/server/storage/wal/walpb/record.go @@ -17,6 +17,8 @@ package walpb import ( "errors" "fmt" + + proto "github.com/gogo/protobuf/proto" ) var ErrCRCMismatch = errors.New("walpb: crc mismatch") @@ -28,6 +30,17 @@ func (rec *Record) Validate(crc uint32) error { return fmt.Errorf("%w: expected: %x computed: %x", ErrCRCMismatch, rec.GetCrc(), crc) } +// Clone returns a deep copy of s, or an empty Snapshot if s is nil. +// +// TODO: replace this with the official protobuf clone helper once this package +// migrates away from gogo/protobuf. +func (s *Snapshot) Clone() *Snapshot { + if s == nil { + return &Snapshot{} + } + return proto.Clone(s).(*Snapshot) +} + // ValidateSnapshotForWrite ensures the Snapshot the newly written snapshot is valid. // // There might exist log-entries written by old etcd versions that does not conform diff --git a/server/verify/verify.go b/server/verify/verify.go index c01421305b66..20f6444ae6ec 100644 --- a/server/verify/verify.go +++ b/server/verify/verify.go @@ -144,5 +144,5 @@ func validateWAL(cfg Config) (*walpb.Snapshot, *raftpb.HardState, error) { if err != nil { return nil, nil, err } - return &snapshot, hardstate, nil + return snapshot, hardstate, nil } diff --git a/tests/integration/utl_wal_version_test.go b/tests/integration/utl_wal_version_test.go index b376f50f5aa4..26f8c87d0c4d 100644 --- a/tests/integration/utl_wal_version_test.go +++ b/tests/integration/utl_wal_version_test.go @@ -74,7 +74,7 @@ func TestEtcdVersionFromWAL(t *testing.T) { cli.Close() srv.Close() - w, err := wal.Open(zap.NewNop(), cfg.Dir+"/member/wal", walpb.Snapshot{}) + w, err := wal.Open(zap.NewNop(), cfg.Dir+"/member/wal", &walpb.Snapshot{}) require.NoError(t, err) defer w.Close() diff --git a/tests/robustness/report/wal_test.go b/tests/robustness/report/wal_test.go index fa5a95cd3e4b..eb00476511b6 100644 --- a/tests/robustness/report/wal_test.go +++ b/tests/robustness/report/wal_test.go @@ -381,7 +381,7 @@ func TestWriteReadWAL(t *testing.T) { tcs := []struct { name string operations []batch - readAt walpb.Snapshot + readAt *walpb.Snapshot walReadAll want readAllEntries want }{ @@ -518,7 +518,7 @@ func TestWriteReadWAL(t *testing.T) { entries: []raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, }, - readAt: walpb.Snapshot{Index: new(uint64(3))}, + readAt: &walpb.Snapshot{Index: new(uint64(3))}, walReadAll: want{ wantState: raftpb.HardState{Commit: 5}, wantEntries: []raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, @@ -575,7 +575,7 @@ func TestWriteReadWAL(t *testing.T) { entries: []raftpb.Entry{{Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, }, }, - readAt: walpb.Snapshot{Index: new(uint64(4))}, + readAt: &walpb.Snapshot{Index: new(uint64(4))}, walReadAll: want{ wantState: raftpb.HardState{Commit: 6}, wantEntries: []raftpb.Entry{{Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, @@ -600,7 +600,7 @@ func TestWriteReadWAL(t *testing.T) { entries: []raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, }, - readAt: walpb.Snapshot{Index: new(uint64(4))}, + readAt: &walpb.Snapshot{Index: new(uint64(4))}, walReadAll: want{ wantError: "snapshot not found", wantState: raftpb.HardState{Commit: 5}, @@ -624,7 +624,7 @@ func TestWriteReadWAL(t *testing.T) { require.NoError(t, err) } if op.snapshot != nil { - err = w.SaveSnapshot(*op.snapshot) + err = w.SaveSnapshot(op.snapshot) require.NoError(t, err) } } diff --git a/tools/etcd-dump-logs/main.go b/tools/etcd-dump-logs/main.go index 880b1f61902e..d4cf69446632 100644 --- a/tools/etcd-dump-logs/main.go +++ b/tools/etcd-dump-logs/main.go @@ -160,7 +160,7 @@ func readUsingReadAll(lg *zap.Logger, startFromIndex bool, startIndex *uint64, e wd = walDir(dataDir) } - w, err := wal.OpenForRead(zap.NewExample(), wd, walsnap) + w, err := wal.OpenForRead(zap.NewExample(), wd, &walsnap) if err != nil { log.Fatalf("Failed opening WAL: %v", err) } From 3a1887016fe08139ebc349c76f3cccae8d3680a0 Mon Sep 17 00:00:00 2001 From: Steven Richards Date: Thu, 7 May 2026 17:31:29 -0700 Subject: [PATCH 0975/1068] etcdserver: set etcd_cluster_version version metric in Recover() Fixes #18805 On startup, during a rolling deployment of etcd 3.6.0 we see Host 1: starting etcd server - cluster-version: to_be_decided Host 1: set cluster version from store - cluster-version: 3.6 ... Host 2: starting etcd server - cluster-version: to_be_decided Host 2: set cluster version from store - cluster-version: 3.6 ... And so on. However, once the rolling-deploy is complete, we find that the cluster_version metric is not being emitted: root@etcd-host-2:/# curl -s localhost:2379/metrics | grep "server_version" 'server_version' label with current version. etcd_server_version{server_version="3.6.0"} 1 root@etcd-host-2:/# curl -s localhost:2379/metrics | grep "cluster_version" root@etcd-host-2:/# It appears we are missing the call to actually set the metric once we determine it in the recover() path, via applySnapshot(). Signed-off-by: Steven Richards --- server/etcdserver/api/membership/cluster.go | 1 + 1 file changed, 1 insertion(+) diff --git a/server/etcdserver/api/membership/cluster.go b/server/etcdserver/api/membership/cluster.go index 1441a7d71878..1ce71fac3fc7 100644 --- a/server/etcdserver/api/membership/cluster.go +++ b/server/etcdserver/api/membership/cluster.go @@ -297,6 +297,7 @@ func (c *RaftCluster) Recover(onSet func(*zap.Logger, *semver.Version)) { "set cluster version from store", zap.String("cluster-version", version.Cluster(c.version.String())), ) + ClusterVersionMetrics.With(prometheus.Labels{"cluster_version": version.Cluster(c.version.String())}).Set(1) } } From 30113d054f4b234bbced71938ac2040b604b0230 Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Mon, 11 May 2026 15:02:08 +0200 Subject: [PATCH 0976/1068] Remove obsolete k8s feature gate It was deleted in https://github.com/kubernetes/kubernetes/pull/138907 Signed-off-by: Aleksander Mistewicz --- tests/robustness/coverage/kind-with-tracing.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/robustness/coverage/kind-with-tracing.yaml b/tests/robustness/coverage/kind-with-tracing.yaml index bafaf55dcfb9..ec45c693194c 100644 --- a/tests/robustness/coverage/kind-with-tracing.yaml +++ b/tests/robustness/coverage/kind-with-tracing.yaml @@ -1,8 +1,6 @@ --- kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 -featureGates: - "APIServerTracing": true nodes: - role: control-plane extraMounts: From a897c185ff28dc36cec6d8a0a64257cf9d9a0c19 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Thu, 12 Mar 2026 11:41:53 -0400 Subject: [PATCH 0977/1068] mvcc/watch: switch gogopb kv/event paths to pointer slices stop passing mvcc gogopb structs around by value in txn/watch paths. - change mvcc interfaces/results to pointer forms: - RangeResult.KVs: []mvccpb.KeyValue -> []*mvccpb.KeyValue - TxnWrite.Changes: []mvccpb.KeyValue -> []*mvccpb.KeyValue - watch event batches: []mvccpb.Event -> []*mvccpb.Event - update txn rpc assembly to reuse pointers directly instead of &slice[i] copies - update watch send/filter pipeline (mvcc, v3rpc, grpcproxy) to pointer events - update sendFragments to build per-fragment WatchResponse explicitly (avoid proto struct value copy) - add TestWatchResponseProtoFieldCount to catch future WatchResponse field additions - adjust compare/filter helpers to pointer args - update affected mvcc/watch tests accordingly Signed-off-by: Wei Fu --- server/etcdserver/api/v3rpc/watch.go | 43 +++++++--- server/etcdserver/api/v3rpc/watch_test.go | 21 +++++ server/etcdserver/txn/delete.go | 4 +- server/etcdserver/txn/put.go | 2 +- server/etcdserver/txn/range.go | 6 +- server/etcdserver/txn/txn.go | 4 +- server/proxy/grpcproxy/watcher.go | 2 +- server/storage/mvcc/kv.go | 6 +- server/storage/mvcc/kv_test.go | 32 +++---- server/storage/mvcc/kvstore_test.go | 8 +- server/storage/mvcc/kvstore_txn.go | 16 ++-- server/storage/mvcc/watchable_store.go | 12 +-- server/storage/mvcc/watchable_store_test.go | 38 ++++---- server/storage/mvcc/watchable_store_txn.go | 4 +- server/storage/mvcc/watcher.go | 4 +- server/storage/mvcc/watcher_group.go | 14 +-- server/storage/mvcc/watcher_test.go | 57 +++++++++++- .../integration/clientv3/watch/watch_test.go | 86 +++++++++++++++++++ 18 files changed, 269 insertions(+), 90 deletions(-) diff --git a/server/etcdserver/api/v3rpc/watch.go b/server/etcdserver/api/v3rpc/watch.go index c501dcf69953..605c768be1b7 100644 --- a/server/etcdserver/api/v3rpc/watch.go +++ b/server/etcdserver/api/v3rpc/watch.go @@ -436,21 +436,20 @@ func (sws *serverWatchStream) sendLoop() { } start := time.Now() - // TODO: evs is []mvccpb.Event type - // either return []*mvccpb.Event from the mvcc package - // or define protocol buffer with []mvccpb.Event. + + // TODO(fuweid): do we still need copy here? evs := wresp.Events events := make([]*mvccpb.Event, len(evs)) sws.mu.RLock() needPrevKV := sws.prevKV[wresp.WatchID] sws.mu.RUnlock() for i := range evs { - events[i] = &evs[i] + events[i] = evs[i] if needPrevKV && !IsCreateEvent(evs[i]) { opt := mvcc.RangeOptions{Rev: evs[i].Kv.ModRevision - 1} r, err := sws.watchable.Range(context.TODO(), evs[i].Kv.Key, nil, opt) if err == nil && len(r.KVs) != 0 { - events[i].PrevKv = &(r.KVs[0]) + events[i].PrevKv = r.KVs[0] } } } @@ -573,7 +572,7 @@ func (sws *serverWatchStream) sendLoop() { } } -func IsCreateEvent(e mvccpb.Event) bool { +func IsCreateEvent(e *mvccpb.Event) bool { return e.Type == mvccpb.Event_PUT && e.Kv.CreateRevision == e.Kv.ModRevision } @@ -588,13 +587,29 @@ func sendFragments( return sendFunc(wr) } - ow := *wr - ow.Events = make([]*mvccpb.Event, 0) - ow.Fragment = true - var idx int for { - cur := ow + // Keep this explicit field copy in sync with pb.WatchResponse. + // TestWatchResponseProtoFieldCount guards against missing new fields. + // + // Header is the same for all fragments from one response, so + // it is safe to reuse. However, we cannot reuse wr itself. + // sendFunc can enqueue the response and return immediately, + // so the actual send may happen later. Reusing wr would let + // mutations in the next loop iteration corrupt queued fragments. + // + // REF: https://github.com/grpc/grpc-go/issues/5857 + cur := &pb.WatchResponse{ + Header: wr.Header, + WatchId: wr.WatchId, + Created: wr.Created, + Canceled: wr.Canceled, + CompactRevision: wr.CompactRevision, + CancelReason: wr.CancelReason, + Fragment: true, + Events: make([]*mvccpb.Event, 0), + } + for _, ev := range wr.Events[idx:] { cur.Events = append(cur.Events, ev) if len(cur.Events) > 1 && uint(cur.Size()) >= maxRequestBytes { @@ -607,7 +622,7 @@ func sendFragments( // last response has no more fragment cur.Fragment = false } - if err := sendFunc(&cur); err != nil { + if err := sendFunc(cur); err != nil { return err } if !cur.Fragment { @@ -632,11 +647,11 @@ func (sws *serverWatchStream) newResponseHeader(rev int64) *pb.ResponseHeader { } } -func filterNoDelete(e mvccpb.Event) bool { +func filterNoDelete(e *mvccpb.Event) bool { return e.Type == mvccpb.Event_DELETE } -func filterNoPut(e mvccpb.Event) bool { +func filterNoPut(e *mvccpb.Event) bool { return e.Type == mvccpb.Event_PUT } diff --git a/server/etcdserver/api/v3rpc/watch_test.go b/server/etcdserver/api/v3rpc/watch_test.go index caa86f91ad71..1ecd31fae9bc 100644 --- a/server/etcdserver/api/v3rpc/watch_test.go +++ b/server/etcdserver/api/v3rpc/watch_test.go @@ -18,6 +18,7 @@ import ( "bytes" "errors" "math" + "reflect" "testing" pb "go.etcd.io/etcd/api/v3/etcdserverpb" @@ -83,6 +84,26 @@ func TestSendFragment(t *testing.T) { } } +func TestWatchResponseProtoFieldCount(t *testing.T) { + const expectedWatchResponseProtoFields = 8 + + fields := 0 + typ := reflect.TypeOf(pb.WatchResponse{}) + for i := 0; i < typ.NumField(); i++ { + if typ.Field(i).Tag.Get("protobuf") != "" { + fields++ + } + } + + // NOTE: + // + // We do manually value-copy in sendFragments. If there is new + // protobuf field added to WatchResponse, we need to update sendFragments. + if fields != expectedWatchResponseProtoFields { + t.Fatalf("unexpected pb.WatchResponse protobuf field count, got=%d expected=%d", fields, expectedWatchResponseProtoFields) + } +} + func createResponse(dataSize, events int) (resp *pb.WatchResponse) { resp = &pb.WatchResponse{Events: make([]*mvccpb.Event, events)} for i := range resp.Events { diff --git a/server/etcdserver/txn/delete.go b/server/etcdserver/txn/delete.go index f1baa5122446..20d1c68feabb 100644 --- a/server/etcdserver/txn/delete.go +++ b/server/etcdserver/txn/delete.go @@ -48,9 +48,7 @@ func deleteRange(ctx context.Context, txnWrite mvcc.TxnWrite, dr *pb.DeleteRange } if rr != nil { resp.PrevKvs = make([]*mvccpb.KeyValue, len(rr.KVs)) - for i := range rr.KVs { - resp.PrevKvs[i] = &rr.KVs[i] - } + copy(resp.PrevKvs, rr.KVs) } } diff --git a/server/etcdserver/txn/put.go b/server/etcdserver/txn/put.go index 90768d740115..ccefe81593db 100644 --- a/server/etcdserver/txn/put.go +++ b/server/etcdserver/txn/put.go @@ -58,7 +58,7 @@ func put(ctx context.Context, txnWrite mvcc.TxnWrite, p *pb.PutRequest, prevKV * } if p.PrevKv { if prevKV != nil && len(prevKV.KVs) != 0 { - resp.PrevKv = &prevKV.KVs[0] + resp.PrevKv = prevKV.KVs[0] } } diff --git a/server/etcdserver/txn/range.go b/server/etcdserver/txn/range.go index 592ffa63c6a2..552e75203f59 100644 --- a/server/etcdserver/txn/range.go +++ b/server/etcdserver/txn/range.go @@ -165,7 +165,7 @@ func asembleRangeResponse(rr *mvcc.RangeResult, r *pb.RangeRequest) *pb.RangeRes if r.KeysOnly { rr.KVs[i].Value = nil } - resp.Kvs[i] = &rr.KVs[i] + resp.Kvs[i] = rr.KVs[i] } return resp } @@ -186,14 +186,14 @@ func pruneKVs(rr *mvcc.RangeResult, isPrunable func(*mvccpb.KeyValue) bool) { j := 0 for i := range rr.KVs { rr.KVs[j] = rr.KVs[i] - if !isPrunable(&rr.KVs[i]) { + if !isPrunable(rr.KVs[i]) { j++ } } rr.KVs = rr.KVs[:j] } -type kvSort struct{ kvs []mvccpb.KeyValue } +type kvSort struct{ kvs []*mvccpb.KeyValue } func (s *kvSort) Swap(i, j int) { t := s.kvs[i] diff --git a/server/etcdserver/txn/txn.go b/server/etcdserver/txn/txn.go index a60ad33bceac..ac3750532532 100644 --- a/server/etcdserver/txn/txn.go +++ b/server/etcdserver/txn/txn.go @@ -269,7 +269,7 @@ func applyCompare(rv mvcc.ReadView, c *pb.Compare) bool { // nil == empty string in grpc; no way to represent missing value return false } - return compareKV(c, mvccpb.KeyValue{}) + return compareKV(c, &mvccpb.KeyValue{}) } for _, kv := range rr.KVs { if !compareKV(c, kv) { @@ -279,7 +279,7 @@ func applyCompare(rv mvcc.ReadView, c *pb.Compare) bool { return true } -func compareKV(c *pb.Compare, ckv mvccpb.KeyValue) bool { +func compareKV(c *pb.Compare, ckv *mvccpb.KeyValue) bool { var result int rev := int64(0) switch c.Target { diff --git a/server/proxy/grpcproxy/watcher.go b/server/proxy/grpcproxy/watcher.go index d2fa3c7b295d..a542fb1f4e3b 100644 --- a/server/proxy/grpcproxy/watcher.go +++ b/server/proxy/grpcproxy/watcher.go @@ -79,7 +79,7 @@ func (w *watcher) send(wr clientv3.WatchResponse) { filtered := false for _, filter := range w.filters { - if filter(*ev) { + if filter(ev) { filtered = true break } diff --git a/server/storage/mvcc/kv.go b/server/storage/mvcc/kv.go index ef8a9613b889..3da037b863e6 100644 --- a/server/storage/mvcc/kv.go +++ b/server/storage/mvcc/kv.go @@ -31,7 +31,7 @@ type RangeOptions struct { } type RangeResult struct { - KVs []mvccpb.KeyValue + KVs []*mvccpb.KeyValue Rev int64 Count int } @@ -87,7 +87,7 @@ type TxnWrite interface { TxnRead WriteView // Changes gets the changes made since opening the write txn. - Changes() []mvccpb.KeyValue + Changes() []*mvccpb.KeyValue } // txnReadWrite coerces a read txn to a write, panicking on any write operation. @@ -97,7 +97,7 @@ func (trw *txnReadWrite) DeleteRange(key, end []byte) (n, rev int64) { panic("un func (trw *txnReadWrite) Put(key, value []byte, lease lease.LeaseID) (rev int64) { panic("unexpected Put") } -func (trw *txnReadWrite) Changes() []mvccpb.KeyValue { return nil } +func (trw *txnReadWrite) Changes() []*mvccpb.KeyValue { return nil } func NewReadOnlyTxnWrite(txn TxnRead) TxnWrite { return &txnReadWrite{txn} } diff --git a/server/storage/mvcc/kv_test.go b/server/storage/mvcc/kv_test.go index ab1b61c5463d..965a72ac777b 100644 --- a/server/storage/mvcc/kv_test.go +++ b/server/storage/mvcc/kv_test.go @@ -89,7 +89,7 @@ func testKVRange(t *testing.T, f rangeFunc) { wrev := int64(4) tests := []struct { key, end []byte - wkvs []mvccpb.KeyValue + wkvs []*mvccpb.KeyValue }{ // get no keys { @@ -155,7 +155,7 @@ func testKVRangeRev(t *testing.T, f rangeFunc) { tests := []struct { rev int64 wrev int64 - wkvs []mvccpb.KeyValue + wkvs []*mvccpb.KeyValue }{ {-1, 4, kvs}, {0, 4, kvs}, @@ -225,7 +225,7 @@ func testKVRangeLimit(t *testing.T, f rangeFunc) { tests := []struct { limit int64 wcounts int64 - wkvs []mvccpb.KeyValue + wkvs []*mvccpb.KeyValue }{ // no limit {-1, 3, kvs}, @@ -277,7 +277,7 @@ func testKVPutMultipleTimes(t *testing.T, f putFunc) { if err != nil { t.Fatal(err) } - wkvs := []mvccpb.KeyValue{ + wkvs := []*mvccpb.KeyValue{ {Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, ModRevision: base + 1, Version: base, Lease: base}, } if !reflect.DeepEqual(r.KVs, wkvs) { @@ -388,7 +388,7 @@ func testKVPutWithSameLease(t *testing.T, f putFunc) { if err != nil { t.Fatal(err) } - wkvs := []mvccpb.KeyValue{ + wkvs := []*mvccpb.KeyValue{ {Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 3, Version: 2, Lease: leaseID}, } if !reflect.DeepEqual(r.KVs, wkvs) { @@ -416,7 +416,7 @@ func TestKVOperationInSequence(t *testing.T) { if err != nil { t.Fatal(err) } - wkvs := []mvccpb.KeyValue{ + wkvs := []*mvccpb.KeyValue{ {Key: []byte("foo"), Value: []byte("bar"), CreateRevision: base + 1, ModRevision: base + 1, Version: 1, Lease: int64(lease.NoLease)}, } if !reflect.DeepEqual(r.KVs, wkvs) { @@ -520,7 +520,7 @@ func TestKVTxnOperationInSequence(t *testing.T) { if err != nil { t.Fatal(err) } - wkvs := []mvccpb.KeyValue{ + wkvs := []*mvccpb.KeyValue{ {Key: []byte("foo"), Value: []byte("bar"), CreateRevision: base + 1, ModRevision: base + 1, Version: 1, Lease: int64(lease.NoLease)}, } if !reflect.DeepEqual(r.KVs, wkvs) { @@ -565,17 +565,17 @@ func TestKVCompactReserveLastValue(t *testing.T) { tests := []struct { rev int64 // wanted kvs right after the compacted rev - wkvs []mvccpb.KeyValue + wkvs []*mvccpb.KeyValue }{ { 1, - []mvccpb.KeyValue{ + []*mvccpb.KeyValue{ {Key: []byte("foo"), Value: []byte("bar0"), CreateRevision: 2, ModRevision: 2, Version: 1, Lease: 1}, }, }, { 2, - []mvccpb.KeyValue{ + []*mvccpb.KeyValue{ {Key: []byte("foo"), Value: []byte("bar1"), CreateRevision: 2, ModRevision: 3, Version: 2, Lease: 2}, }, }, @@ -585,7 +585,7 @@ func TestKVCompactReserveLastValue(t *testing.T) { }, { 4, - []mvccpb.KeyValue{ + []*mvccpb.KeyValue{ {Key: []byte("foo"), Value: []byte("bar2"), CreateRevision: 5, ModRevision: 5, Version: 1, Lease: 3}, }, }, @@ -695,7 +695,7 @@ func TestKVRestore(t *testing.T) { b, _ := betesting.NewDefaultTmpBackend(t) s := NewStore(zaptest.NewLogger(t), b, &lease.FakeLessor{}, StoreConfig{CompactionBatchLimit: compactBatchLimit}) tt(s) - var kvss [][]mvccpb.KeyValue + var kvss [][]*mvccpb.KeyValue for k := int64(0); k < 10; k++ { r, _ := s.Range(t.Context(), []byte("a"), []byte("z"), RangeOptions{Rev: k}) kvss = append(kvss, r.KVs) @@ -713,7 +713,7 @@ func TestKVRestore(t *testing.T) { // wait for possible compaction to finish testutil.WaitSchedule() - var nkvss [][]mvccpb.KeyValue + var nkvss [][]*mvccpb.KeyValue for k := int64(0); k < 10; k++ { r, _ := ns.Range(t.Context(), []byte("a"), []byte("z"), RangeOptions{Rev: k}) nkvss = append(nkvss, r.KVs) @@ -781,7 +781,7 @@ func TestWatchableKVWatch(t *testing.T) { wid, _ := w.Watch(t.Context(), 0, []byte("foo"), []byte("fop"), 0) - wev := []mvccpb.Event{ + wev := []*mvccpb.Event{ { Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{ @@ -882,11 +882,11 @@ func cleanup(s KV, b backend.Backend) { b.Close() } -func put3TestKVs(s KV) []mvccpb.KeyValue { +func put3TestKVs(s KV) []*mvccpb.KeyValue { s.Put([]byte("foo"), []byte("bar"), 1) s.Put([]byte("foo1"), []byte("bar1"), 2) s.Put([]byte("foo2"), []byte("bar2"), 3) - return []mvccpb.KeyValue{ + return []*mvccpb.KeyValue{ {Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 2, Version: 1, Lease: 1}, {Key: []byte("foo1"), Value: []byte("bar1"), CreateRevision: 3, ModRevision: 3, Version: 1, Lease: 2}, {Key: []byte("foo2"), Value: []byte("bar2"), CreateRevision: 4, ModRevision: 4, Version: 1, Lease: 3}, diff --git a/server/storage/mvcc/kvstore_test.go b/server/storage/mvcc/kvstore_test.go index 29a623eedf05..c7e15d7c3e3a 100644 --- a/server/storage/mvcc/kvstore_test.go +++ b/server/storage/mvcc/kvstore_test.go @@ -180,7 +180,7 @@ func TestStorePut(t *testing.T) { func TestStoreRange(t *testing.T) { lg := zaptest.NewLogger(t) key := newTestRevBytes(Revision{Main: 2}) - kv := mvccpb.KeyValue{ + kv := &mvccpb.KeyValue{ Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 1, @@ -221,7 +221,7 @@ func TestStoreRange(t *testing.T) { if err != nil { t.Errorf("#%d: err = %v, want nil", i, err) } - if w := []mvccpb.KeyValue{kv}; !reflect.DeepEqual(ret.KVs, w) { + if w := []*mvccpb.KeyValue{kv}; !reflect.DeepEqual(ret.KVs, w) { t.Errorf("#%d: kvs = %+v, want %+v", i, ret.KVs, w) } if ret.Rev != wrev { @@ -761,7 +761,7 @@ func TestConcurrentReadNotBlockingWrite(t *testing.T) { t.Fatalf("failed to range: %v", err) } // readTx2 should see the result of new write - w := mvccpb.KeyValue{ + w := &mvccpb.KeyValue{ Key: []byte("foo"), Value: []byte("newBar"), CreateRevision: 2, @@ -778,7 +778,7 @@ func TestConcurrentReadNotBlockingWrite(t *testing.T) { t.Fatalf("failed to range: %v", err) } // readTx1 should not see the result of new write - w = mvccpb.KeyValue{ + w = &mvccpb.KeyValue{ Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, diff --git a/server/storage/mvcc/kvstore_txn.go b/server/storage/mvcc/kvstore_txn.go index 7e537243697c..7f0165fc4c99 100644 --- a/server/storage/mvcc/kvstore_txn.go +++ b/server/storage/mvcc/kvstore_txn.go @@ -96,7 +96,7 @@ func (tr *storeTxnCommon) rangeKeys(ctx context.Context, key, end []byte, curRev limit = len(revpairs) } - kvs := make([]mvccpb.KeyValue, limit) + kvs := make([]*mvccpb.KeyValue, limit) revBytes := NewRevBytes() for i, revpair := range revpairs[:len(kvs)] { select { @@ -120,12 +120,14 @@ func (tr *storeTxnCommon) rangeKeys(ctx context.Context, key, end []byte, curRev zap.Int("len-values", len(vs)), ) } - if err := kvs[i].Unmarshal(vs[0]); err != nil { + kv := &mvccpb.KeyValue{} + if err := kv.Unmarshal(vs[0]); err != nil { tr.s.lg.Fatal( "failed to unmarshal mvccpb.KeyValue", zap.Error(err), ) } + kvs[i] = kv } tr.trace.Step("range keys from bolt db") return &RangeResult{KVs: kvs, Count: total, Rev: curRev}, nil @@ -141,7 +143,7 @@ type storeTxnWrite struct { tx backend.BatchTx // beginRev is the revision where the txn begins; it will write to the next revision. beginRev int64 - changes []mvccpb.KeyValue + changes []*mvccpb.KeyValue } func (s *store) Write(trace *traceutil.Trace) TxnWrite { @@ -152,7 +154,7 @@ func (s *store) Write(trace *traceutil.Trace) TxnWrite { storeTxnCommon: storeTxnCommon{s, tx, 0, 0, trace}, tx: tx, beginRev: s.currentRev, - changes: make([]mvccpb.KeyValue, 0, 4), + changes: make([]*mvccpb.KeyValue, 0, 4), } return newMetricsTxnWrite(tw) } @@ -211,7 +213,7 @@ func (tw *storeTxnWrite) put(key, value []byte, leaseID lease.LeaseID) { ibytes = RevToBytes(idxRev, ibytes) ver = ver + 1 - kv := mvccpb.KeyValue{ + kv := &mvccpb.KeyValue{ Key: key, Value: value, CreateRevision: c, @@ -283,7 +285,7 @@ func (tw *storeTxnWrite) delete(key []byte) { idxRev := newBucketKey(tw.beginRev+1, int64(len(tw.changes)), true) ibytes = BucketKeyToBytes(idxRev, ibytes) - kv := mvccpb.KeyValue{Key: key} + kv := &mvccpb.KeyValue{Key: key} d, err := kv.Marshal() if err != nil { @@ -318,4 +320,4 @@ func (tw *storeTxnWrite) delete(key []byte) { } } -func (tw *storeTxnWrite) Changes() []mvccpb.KeyValue { return tw.changes } +func (tw *storeTxnWrite) Changes() []*mvccpb.KeyValue { return tw.changes } diff --git a/server/storage/mvcc/watchable_store.go b/server/storage/mvcc/watchable_store.go index 7b96f55807c8..db654a5dc6d5 100644 --- a/server/storage/mvcc/watchable_store.go +++ b/server/storage/mvcc/watchable_store.go @@ -413,7 +413,7 @@ func (s *watchableStore) syncWatchers() int { } // rangeEvents returns events in range [minRev, maxRev). -func rangeEvents(lg *zap.Logger, b backend.Backend, minRev, maxRev int64, c contains) []mvccpb.Event { +func rangeEvents(lg *zap.Logger, b backend.Backend, minRev, maxRev int64, c contains) []*mvccpb.Event { if minRev < 0 { lg.Warn("Unexpected negative revision range start", zap.Int64("minRev", minRev)) minRev = 0 @@ -440,9 +440,9 @@ type contains interface { } // kvsToEvents gets all events for the watchers from all key-value pairs -func kvsToEvents(lg *zap.Logger, c contains, revs, vals [][]byte) (evs []mvccpb.Event) { +func kvsToEvents(lg *zap.Logger, c contains, revs, vals [][]byte) (evs []*mvccpb.Event) { for i, v := range vals { - var kv mvccpb.KeyValue + kv := &mvccpb.KeyValue{} if err := kv.Unmarshal(v); err != nil { lg.Panic("failed to unmarshal mvccpb.KeyValue", zap.Error(err)) } @@ -457,14 +457,14 @@ func kvsToEvents(lg *zap.Logger, c contains, revs, vals [][]byte) (evs []mvccpb. // patch in mod revision so watchers won't skip kv.ModRevision = BytesToRev(revs[i]).Main } - evs = append(evs, mvccpb.Event{Kv: &kv, Type: ty}) + evs = append(evs, &mvccpb.Event{Kv: kv, Type: ty}) } return evs } // notify notifies the fact that given event at the given rev just happened to // watchers that watch on the key of the event. -func (s *watchableStore) notify(rev int64, evs []mvccpb.Event) { +func (s *watchableStore) notify(rev int64, evs []*mvccpb.Event) { victim := make(watcherBatch) for w, eb := range newWatcherBatch(&s.synced, evs) { if eb.revs != 1 { @@ -574,7 +574,7 @@ func (w *watcher) send(wr WatchResponse) bool { progressEvent := len(wr.Events) == 0 if len(w.fcs) != 0 { - ne := make([]mvccpb.Event, 0, len(wr.Events)) + ne := make([]*mvccpb.Event, 0, len(wr.Events)) for i := range wr.Events { filtered := false for _, filter := range w.fcs { diff --git a/server/storage/mvcc/watchable_store_test.go b/server/storage/mvcc/watchable_store_test.go index 706ba1409c66..6d6296da6399 100644 --- a/server/storage/mvcc/watchable_store_test.go +++ b/server/storage/mvcc/watchable_store_test.go @@ -321,7 +321,7 @@ func TestSyncWatchers(t *testing.T) { for i := 0; i < watcherN; i++ { events := (<-w.(*watchStream).ch).Events assert.Len(t, events, 1) - assert.Equal(t, []mvccpb.Event{ + assert.Equal(t, []*mvccpb.Event{ { Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{ @@ -352,7 +352,7 @@ func TestRangeEvents(t *testing.T) { s.Put(foo3, value, lease.NoLease) s.DeleteRange(foo1, foo3) // Deletes "foo1" and "foo2" generating 2 events - expectEvents := []mvccpb.Event{ + expectEvents := []*mvccpb.Event{ { Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{ @@ -402,7 +402,7 @@ func TestRangeEvents(t *testing.T) { tcs := []struct { minRev int64 maxRev int64 - expectEvents []mvccpb.Event + expectEvents []*mvccpb.Event }{ // maxRev, top to bottom {minRev: -1, maxRev: 6, expectEvents: expectEvents[0:5]}, @@ -604,12 +604,12 @@ func testWatchRestore(t *testing.T, delayBeforeRestore, delayAfterRestore time.D tcs := []struct { name string startRevision int64 - wantEvents []mvccpb.Event + wantEvents []*mvccpb.Event }{ { name: "zero revision", startRevision: 0, - wantEvents: []mvccpb.Event{ + wantEvents: []*mvccpb.Event{ {Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: testKey, Value: testValue, CreateRevision: 2, ModRevision: 2, Version: 1}}, {Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: testKey, ModRevision: 3}}, }, @@ -617,7 +617,7 @@ func testWatchRestore(t *testing.T, delayBeforeRestore, delayAfterRestore time.D { name: "revision before first write", startRevision: 1, - wantEvents: []mvccpb.Event{ + wantEvents: []*mvccpb.Event{ {Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: testKey, Value: testValue, CreateRevision: 2, ModRevision: 2, Version: 1}}, {Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: testKey, ModRevision: 3}}, }, @@ -625,7 +625,7 @@ func testWatchRestore(t *testing.T, delayBeforeRestore, delayAfterRestore time.D { name: "revision of first write", startRevision: 2, - wantEvents: []mvccpb.Event{ + wantEvents: []*mvccpb.Event{ {Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: testKey, Value: testValue, CreateRevision: 2, ModRevision: 2, Version: 1}}, {Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: testKey, ModRevision: 3}}, }, @@ -633,14 +633,14 @@ func testWatchRestore(t *testing.T, delayBeforeRestore, delayAfterRestore time.D { name: "current revision", startRevision: 3, - wantEvents: []mvccpb.Event{ + wantEvents: []*mvccpb.Event{ {Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: testKey, ModRevision: 3}}, }, }, { name: "future revision", startRevision: 4, - wantEvents: []mvccpb.Event{}, + wantEvents: []*mvccpb.Event{}, }, } watchers := []WatchStream{} @@ -667,8 +667,8 @@ func testWatchRestore(t *testing.T, delayBeforeRestore, delayAfterRestore time.D } } -func readEventsForSecond(t *testing.T, ws <-chan WatchResponse) []mvccpb.Event { - events := []mvccpb.Event{} +func readEventsForSecond(t *testing.T, ws <-chan WatchResponse) []*mvccpb.Event { + events := []*mvccpb.Event{} deadline := time.After(time.Second) for { select { @@ -770,7 +770,7 @@ func TestNewMapwatcherToEventMap(t *testing.T) { ws := []*watcher{{key: k0}, {key: k1}, {key: k2}} - evs := []mvccpb.Event{ + evs := []*mvccpb.Event{ { Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{Key: k0, Value: v0}, @@ -787,15 +787,15 @@ func TestNewMapwatcherToEventMap(t *testing.T) { tests := []struct { sync []*watcher - evs []mvccpb.Event + evs []*mvccpb.Event - wwe map[*watcher][]mvccpb.Event + wwe map[*watcher][]*mvccpb.Event }{ // no watcher in sync, some events should return empty wwe { nil, evs, - map[*watcher][]mvccpb.Event{}, + map[*watcher][]*mvccpb.Event{}, }, // one watcher in sync, one event that does not match the key of that @@ -803,7 +803,7 @@ func TestNewMapwatcherToEventMap(t *testing.T) { { []*watcher{ws[2]}, evs[:1], - map[*watcher][]mvccpb.Event{}, + map[*watcher][]*mvccpb.Event{}, }, // one watcher in sync, one event that matches the key of that @@ -811,7 +811,7 @@ func TestNewMapwatcherToEventMap(t *testing.T) { { []*watcher{ws[1]}, evs[1:2], - map[*watcher][]mvccpb.Event{ + map[*watcher][]*mvccpb.Event{ ws[1]: evs[1:2], }, }, @@ -822,7 +822,7 @@ func TestNewMapwatcherToEventMap(t *testing.T) { { []*watcher{ws[0], ws[2]}, evs[2:], - map[*watcher][]mvccpb.Event{ + map[*watcher][]*mvccpb.Event{ ws[2]: evs[2:], }, }, @@ -832,7 +832,7 @@ func TestNewMapwatcherToEventMap(t *testing.T) { { []*watcher{ws[0], ws[1]}, evs[:2], - map[*watcher][]mvccpb.Event{ + map[*watcher][]*mvccpb.Event{ ws[0]: evs[:1], ws[1]: evs[1:2], }, diff --git a/server/storage/mvcc/watchable_store_txn.go b/server/storage/mvcc/watchable_store_txn.go index b1d13d2c7e08..42eb6ca06120 100644 --- a/server/storage/mvcc/watchable_store_txn.go +++ b/server/storage/mvcc/watchable_store_txn.go @@ -27,9 +27,9 @@ func (tw *watchableStoreTxnWrite) End() { } rev := tw.Rev() + 1 - evs := make([]mvccpb.Event, len(changes)) + evs := make([]*mvccpb.Event, len(changes)) for i, change := range changes { - evs[i].Kv = &changes[i] + evs[i] = &mvccpb.Event{Kv: changes[i]} if change.CreateRevision == 0 { evs[i].Type = mvccpb.Event_DELETE evs[i].Kv.ModRevision = rev diff --git a/server/storage/mvcc/watcher.go b/server/storage/mvcc/watcher.go index 87bcf9a40a85..1d497ccb825c 100644 --- a/server/storage/mvcc/watcher.go +++ b/server/storage/mvcc/watcher.go @@ -35,7 +35,7 @@ var ( type WatchID int64 // FilterFunc returns true if the given event should be filtered out. -type FilterFunc func(e mvccpb.Event) bool +type FilterFunc func(e *mvccpb.Event) bool type WatchStream interface { // Watch creates a watcher. The watcher watches the events happening or @@ -84,7 +84,7 @@ type WatchResponse struct { WatchID WatchID // Events contains all the events that needs to send. - Events []mvccpb.Event + Events []*mvccpb.Event // Revision is the revision of the KV when the watchResponse is created. // For a normal response, the revision should be the same as the last diff --git a/server/storage/mvcc/watcher_group.go b/server/storage/mvcc/watcher_group.go index c9db0e2bd9b0..4390293496f5 100644 --- a/server/storage/mvcc/watcher_group.go +++ b/server/storage/mvcc/watcher_group.go @@ -29,14 +29,14 @@ var watchBatchMaxRevs = 1000 type eventBatch struct { // evs is a batch of revision-ordered events - evs []mvccpb.Event + evs []*mvccpb.Event // revs is the minimum unique revisions observed for this batch revs int // moreRev is first revision with more events following this batch moreRev int64 } -func (eb *eventBatch) add(ev mvccpb.Event) { +func (eb *eventBatch) add(ev *mvccpb.Event) { if eb.revs > watchBatchMaxRevs { // maxed out batch size return @@ -65,7 +65,7 @@ func (eb *eventBatch) add(ev mvccpb.Event) { type watcherBatch map[*watcher]*eventBatch -func (wb watcherBatch) add(w *watcher, ev mvccpb.Event) { +func (wb watcherBatch) add(w *watcher, ev *mvccpb.Event) { eb := wb[w] if eb == nil { eb = &eventBatch{} @@ -76,7 +76,7 @@ func (wb watcherBatch) add(w *watcher, ev mvccpb.Event) { // newWatcherBatch maps watchers to their matched events. It enables quick // events look up by watcher. -func newWatcherBatch(wg *watcherGroup, evs []mvccpb.Event) watcherBatch { +func newWatcherBatch(wg *watcherGroup, evs []*mvccpb.Event) watcherBatch { if len(wg.watchers) == 0 { return nil } @@ -86,7 +86,11 @@ func newWatcherBatch(wg *watcherGroup, evs []mvccpb.Event) watcherBatch { for w := range wg.watcherSetByKey(string(ev.Kv.Key)) { if ev.Kv.ModRevision >= w.minRev { // don't double notify - wb.add(w, ev) + wb.add(w, &mvccpb.Event{ + Type: ev.Type, + Kv: ev.Kv, + PrevKv: ev.PrevKv, + }) } } } diff --git a/server/storage/mvcc/watcher_test.go b/server/storage/mvcc/watcher_test.go index 7a3cfe03ccf5..578d53af311f 100644 --- a/server/storage/mvcc/watcher_test.go +++ b/server/storage/mvcc/watcher_test.go @@ -192,6 +192,59 @@ func TestWatcherWatchPrefix(t *testing.T) { } } +func TestWatchResponseEventsNotSharedAcrossWatchers(t *testing.T) { + b, _ := betesting.NewDefaultTmpBackend(t) + s := New(zaptest.NewLogger(t), b, &lease.FakeLessor{}, StoreConfig{}) + defer cleanup(s, b) + + w := s.NewWatchStream() + defer w.Close() + + key := []byte("foo") + value := []byte("bar") + id1, err := w.Watch(t.Context(), 0, key, nil, 0) + if err != nil { + t.Fatalf("failed to create first watcher: %v", err) + } + id2, err := w.Watch(t.Context(), 0, key, nil, 0) + if err != nil { + t.Fatalf("failed to create second watcher: %v", err) + } + + s.Put(key, value, lease.NoLease) + respByID := collectWatchResponsesForWatchers(t, w.Chan(), id1, id2) + resp1 := respByID[id1] + resp2 := respByID[id2] + + if len(resp1.Events) != 1 || len(resp2.Events) != 1 { + t.Fatalf("unexpected event count: first response has %d events, second response has %d events", len(resp1.Events), len(resp2.Events)) + } + if resp1.Events[0] == resp2.Events[0] { + t.Fatalf("watch responses share the same event pointer") + } +} + +func collectWatchResponsesForWatchers(t *testing.T, ch <-chan WatchResponse, watcherIDs ...WatchID) map[WatchID]WatchResponse { + t.Helper() + target := make(map[WatchID]struct{}, len(watcherIDs)) + for _, id := range watcherIDs { + target[id] = struct{}{} + } + + respByID := make(map[WatchID]WatchResponse, len(watcherIDs)) + for len(respByID) < len(watcherIDs) { + select { + case resp := <-ch: + if _, ok := target[resp.WatchID]; ok { + respByID[resp.WatchID] = resp + } + case <-time.After(time.Second): + t.Fatalf("timed out waiting for watch responses; got %d, want %d", len(respByID), len(watcherIDs)) + } + } + return respByID +} + // TestWatcherWatchWrongRange ensures that watcher with wrong 'end' range // does not create watcher, which panics when canceling in range tree. func TestWatcherWatchWrongRange(t *testing.T) { @@ -236,7 +289,7 @@ func TestWatchDeleteRange(t *testing.T) { s.DeleteRange(from, to) - we := []mvccpb.Event{ + we := []*mvccpb.Event{ {Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: []byte("foo_0"), ModRevision: 5}}, {Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: []byte("foo_1"), ModRevision: 5}}, {Type: mvccpb.Event_DELETE, Kv: &mvccpb.KeyValue{Key: []byte("foo_2"), ModRevision: 5}}, @@ -425,7 +478,7 @@ func TestWatcherWatchWithFilter(t *testing.T) { w := s.NewWatchStream() defer w.Close() - filterPut := func(e mvccpb.Event) bool { + filterPut := func(e *mvccpb.Event) bool { return e.Type == mvccpb.Event_PUT } diff --git a/tests/integration/clientv3/watch/watch_test.go b/tests/integration/clientv3/watch/watch_test.go index ce32153e21b8..c6b4e8df3294 100644 --- a/tests/integration/clientv3/watch/watch_test.go +++ b/tests/integration/clientv3/watch/watch_test.go @@ -927,6 +927,92 @@ func TestWatchWithCreatedNotificationDropConn(t *testing.T) { } } +func TestWatchMixedPrevKVOnSameKeySeparateStreams(t *testing.T) { + integration.BeforeTest(t) + + cluster := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + defer cluster.Terminate(t) + + client := cluster.RandClient() + key := "prevkv-race-key" + const ( + totalWatchers = 10 + watchersWithPrev = 5 + updates = 10 + ) + + _, err := client.Put(t.Context(), key, "v0") + require.NoError(t, err) + + type watchCase struct { + withPrev bool + cancel context.CancelFunc + ch clientv3.WatchChan + } + watches := make([]watchCase, totalWatchers) + for i := 0; i < totalWatchers; i++ { + // Different metadata forces the client to open independent watch streams. + md := metadata.Pairs("watch-stream-id", fmt.Sprintf("%d", i)) + mctx := metadata.NewOutgoingContext(t.Context(), md) + wctx, cancel := context.WithCancel(mctx) + + opts := []clientv3.OpOption{clientv3.WithCreatedNotify()} + withPrev := i < watchersWithPrev + if withPrev { + opts = append(opts, clientv3.WithPrevKV()) + } + + watches[i] = watchCase{ + withPrev: withPrev, + cancel: cancel, + ch: client.Watch(wctx, key, opts...), + } + } + defer func() { + for _, watch := range watches { + watch.cancel() + } + }() + + for i, watch := range watches { + resp := <-watch.ch + require.Truef(t, resp.Created, "watcher %d expected created response, got %+v", i, resp) + require.NoErrorf(t, resp.Err(), "watcher %d created response should not have error", i) + } + + prevValue := "v0" + for rev := 1; rev <= updates; rev++ { + nextValue := fmt.Sprintf("v%d", rev) + _, err = client.Put(t.Context(), key, nextValue) + require.NoError(t, err) + + for i, watch := range watches { + var resp clientv3.WatchResponse + select { + case resp = <-watch.ch: + case <-time.After(10 * time.Second): + t.Fatalf("watcher %d timed out waiting for watch response at revision %d", i, rev) + } + + require.NoErrorf(t, resp.Err(), "watcher %d got unexpected watch error", i) + require.Lenf(t, resp.Events, 1, "watcher %d expected one event at revision %d", i, rev) + + event := resp.Events[0] + require.Equalf(t, key, string(event.Kv.Key), "watcher %d received event for wrong key", i) + require.Equalf(t, nextValue, string(event.Kv.Value), "watcher %d got wrong value", i) + + if watch.withPrev { + require.NotNilf(t, event.PrevKv, "watcher %d expected PrevKv", i) + require.Equalf(t, prevValue, string(event.PrevKv.Value), "watcher %d got wrong PrevKv value", i) + } else { + require.Nilf(t, event.PrevKv, "watcher %d should not receive PrevKv", i) + } + } + + prevValue = nextValue + } +} + // TestWatchCancelOnServer ensures client watcher cancels propagate back to the server. func TestWatchCancelOnServer(t *testing.T) { integration.BeforeTest(t) From 436decd247519cd28d4c8a72c46f589f800d035c Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Thu, 12 Mar 2026 16:53:17 -0400 Subject: [PATCH 0978/1068] mvcc: use pointer for KeyValue in restore path switch revKeyValue.kv from mvccpb.KeyValue to *mvccpb.KeyValue and unmarshal into a newly allocated KeyValue in restoreChunk. this removes gogopb-by-value usage in restore/index rebuild and keeps pb handling aligned with pointer-based paths. Signed-off-by: Wei Fu --- server/etcdserver/adapters.go | 4 +- server/etcdserver/corrupt.go | 2 +- server/etcdserver/server.go | 8 ++-- server/etcdserver/v3_server.go | 59 +++++++++++++++-------------- server/storage/mvcc/kvstore.go | 8 +++- server/storage/mvcc/kvstore_test.go | 8 ++-- 6 files changed, 48 insertions(+), 41 deletions(-) diff --git a/server/etcdserver/adapters.go b/server/etcdserver/adapters.go index 4eec3ba0f43f..ec4120042931 100644 --- a/server/etcdserver/adapters.go +++ b/server/etcdserver/adapters.go @@ -47,13 +47,13 @@ func (s *serverVersionAdapter) UpdateClusterVersion(version string) { func (s *serverVersionAdapter) DowngradeEnable(ctx context.Context, targetVersion *semver.Version) error { raftRequest := membershippb.DowngradeInfoSetRequest{Enabled: true, Ver: targetVersion.String()} - _, err := s.raftRequest(ctx, pb.InternalRaftRequest{DowngradeInfoSet: &raftRequest}) + _, err := s.raftRequest(ctx, &pb.InternalRaftRequest{DowngradeInfoSet: &raftRequest}) return err } func (s *serverVersionAdapter) DowngradeCancel(ctx context.Context) error { raftRequest := membershippb.DowngradeInfoSetRequest{Enabled: false} - _, err := s.raftRequest(ctx, pb.InternalRaftRequest{DowngradeInfoSet: &raftRequest}) + _, err := s.raftRequest(ctx, &pb.InternalRaftRequest{DowngradeInfoSet: &raftRequest}) return err } diff --git a/server/etcdserver/corrupt.go b/server/etcdserver/corrupt.go index d1883f06c82a..0dc563e2f670 100644 --- a/server/etcdserver/corrupt.go +++ b/server/etcdserver/corrupt.go @@ -438,7 +438,7 @@ func (s *EtcdServer) triggerCorruptAlarm(id types.ID) { Alarm: pb.AlarmType_CORRUPT, } s.GoAttach(func() { - s.raftRequest(s.ctx, pb.InternalRaftRequest{Alarm: a}) + s.raftRequest(s.ctx, &pb.InternalRaftRequest{Alarm: a}) }) } diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index 061232555bb2..364ad36a5d04 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -397,7 +397,7 @@ func NewServer(cfg config.ServerConfig) (srv *EtcdServer, err error) { return lease.ErrNotPrimary } - srv.raftRequest(ctx, pb.InternalRaftRequest{LeaseCheckpoint: cp}) + srv.raftRequest(ctx, &pb.InternalRaftRequest{LeaseCheckpoint: cp}) return nil }) } @@ -1818,7 +1818,7 @@ func (s *EtcdServer) publishV3(timeout time.Duration) { } ctx, cancel := context.WithTimeout(s.ctx, timeout) - _, err := s.raftRequest(ctx, pb.InternalRaftRequest{ClusterMemberAttrSet: req}) + _, err := s.raftRequest(ctx, &pb.InternalRaftRequest{ClusterMemberAttrSet: req}) cancel() switch err { case nil: @@ -1995,7 +1995,7 @@ func (s *EtcdServer) applyEntryNormal(e *raftpb.Entry, shouldApplyV3 membership. Action: pb.AlarmRequest_ACTIVATE, Alarm: pb.AlarmType_NOSPACE, } - s.raftRequest(s.ctx, pb.InternalRaftRequest{Alarm: a}) + s.raftRequest(s.ctx, &pb.InternalRaftRequest{Alarm: a}) s.w.Trigger(id, ar) }) } @@ -2316,7 +2316,7 @@ func (s *EtcdServer) updateClusterVersionV3(ver string) { req := membershippb.ClusterVersionSetRequest{Ver: ver} ctx, cancel := context.WithTimeout(s.ctx, s.Cfg.ReqTimeout()) - _, err := s.raftRequest(ctx, pb.InternalRaftRequest{ClusterVersionSet: &req}) + _, err := s.raftRequest(ctx, &pb.InternalRaftRequest{ClusterVersionSet: &req}) cancel() switch { diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 238292f8a672..359e9811830c 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -48,6 +48,8 @@ const ( // However, if the committed entries are very heavy to toApply, the gap might grow. // We should stop accepting new proposals if the gap growing to a certain point. maxGapBetweenApplyAndCommitIndex = 5000 + maxNormalGap = maxGapBetweenApplyAndCommitIndex + maxPriorityGap = 2 * maxGapBetweenApplyAndCommitIndex traceThreshold = 100 * time.Millisecond // The timeout for the node to catch up its applied index, and is used in @@ -298,7 +300,7 @@ func (s *EtcdServer) Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse defer span.End() ctx = context.WithValue(ctx, traceutil.StartTimeKey{}, time.Now()) - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{Put: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{Put: r}) if err != nil { return nil, err } @@ -313,7 +315,7 @@ func (s *EtcdServer) DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) )) defer span.End() - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{DeleteRange: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{DeleteRange: r}) if err != nil { return nil, err } @@ -370,7 +372,7 @@ func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse } ctx = context.WithValue(ctx, traceutil.StartTimeKey{}, time.Now()) - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{Txn: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{Txn: r}) if err != nil { return nil, err } @@ -387,7 +389,7 @@ func (s *EtcdServer) Compact(ctx context.Context, r *pb.CompactionRequest) (*pb. startTime := time.Now() ctx, trace := traceutil.EnsureTrace(ctx, s.Logger(), "compact") - result, err := s.processInternalRaftRequestOnce(ctx, pb.InternalRaftRequest{Compaction: r}) + result, err := s.processInternalRaftRequestOnce(ctx, &pb.InternalRaftRequest{Compaction: r}) if result != nil && result.Trace != nil { trace = result.Trace defer func() { @@ -446,7 +448,7 @@ func (s *EtcdServer) LeaseGrant(ctx context.Context, r *pb.LeaseGrantRequest) (* return nil, err } - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{LeaseGrant: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{LeaseGrant: r}) if err != nil { return nil, err } @@ -476,7 +478,7 @@ func (s *EtcdServer) LeaseRevoke(ctx context.Context, r *pb.LeaseRevokeRequest) return nil, err } - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{LeaseRevoke: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{LeaseRevoke: r}) if err != nil { return nil, err } @@ -800,7 +802,7 @@ func (s *EtcdServer) waitLeader(ctx context.Context) (*membership.Member, error) } func (s *EtcdServer) Alarm(ctx context.Context, r *pb.AlarmRequest) (*pb.AlarmResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{Alarm: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{Alarm: r}) if err != nil { return nil, err } @@ -808,7 +810,7 @@ func (s *EtcdServer) Alarm(ctx context.Context, r *pb.AlarmRequest) (*pb.AlarmRe } func (s *EtcdServer) AuthEnable(ctx context.Context, r *pb.AuthEnableRequest) (*pb.AuthEnableResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthEnable: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthEnable: r}) if err != nil { return nil, err } @@ -816,7 +818,7 @@ func (s *EtcdServer) AuthEnable(ctx context.Context, r *pb.AuthEnableRequest) (* } func (s *EtcdServer) AuthDisable(ctx context.Context, r *pb.AuthDisableRequest) (*pb.AuthDisableResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthDisable: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthDisable: r}) if err != nil { return nil, err } @@ -824,7 +826,7 @@ func (s *EtcdServer) AuthDisable(ctx context.Context, r *pb.AuthDisableRequest) } func (s *EtcdServer) AuthStatus(ctx context.Context, r *pb.AuthStatusRequest) (*pb.AuthStatusResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthStatus: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthStatus: r}) if err != nil { return nil, err } @@ -871,7 +873,7 @@ func (s *EtcdServer) Authenticate(ctx context.Context, r *pb.AuthenticateRequest SimpleToken: st, } - resp, err = s.raftRequest(ctx, pb.InternalRaftRequest{Authenticate: internalReq}) + resp, err = s.raftRequest(ctx, &pb.InternalRaftRequest{Authenticate: internalReq}) if err != nil { return nil, err } @@ -895,7 +897,7 @@ func (s *EtcdServer) UserAdd(ctx context.Context, r *pb.AuthUserAddRequest) (*pb r.Password = "" } - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthUserAdd: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthUserAdd: r}) if err != nil { return nil, err } @@ -903,7 +905,7 @@ func (s *EtcdServer) UserAdd(ctx context.Context, r *pb.AuthUserAddRequest) (*pb } func (s *EtcdServer) UserDelete(ctx context.Context, r *pb.AuthUserDeleteRequest) (*pb.AuthUserDeleteResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthUserDelete: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthUserDelete: r}) if err != nil { return nil, err } @@ -920,7 +922,7 @@ func (s *EtcdServer) UserChangePassword(ctx context.Context, r *pb.AuthUserChang r.Password = "" } - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthUserChangePassword: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthUserChangePassword: r}) if err != nil { return nil, err } @@ -928,7 +930,7 @@ func (s *EtcdServer) UserChangePassword(ctx context.Context, r *pb.AuthUserChang } func (s *EtcdServer) UserGrantRole(ctx context.Context, r *pb.AuthUserGrantRoleRequest) (*pb.AuthUserGrantRoleResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthUserGrantRole: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthUserGrantRole: r}) if err != nil { return nil, err } @@ -936,7 +938,7 @@ func (s *EtcdServer) UserGrantRole(ctx context.Context, r *pb.AuthUserGrantRoleR } func (s *EtcdServer) UserGet(ctx context.Context, r *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthUserGet: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthUserGet: r}) if err != nil { return nil, err } @@ -944,7 +946,7 @@ func (s *EtcdServer) UserGet(ctx context.Context, r *pb.AuthUserGetRequest) (*pb } func (s *EtcdServer) UserList(ctx context.Context, r *pb.AuthUserListRequest) (*pb.AuthUserListResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthUserList: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthUserList: r}) if err != nil { return nil, err } @@ -952,7 +954,7 @@ func (s *EtcdServer) UserList(ctx context.Context, r *pb.AuthUserListRequest) (* } func (s *EtcdServer) UserRevokeRole(ctx context.Context, r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthUserRevokeRole: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthUserRevokeRole: r}) if err != nil { return nil, err } @@ -960,7 +962,7 @@ func (s *EtcdServer) UserRevokeRole(ctx context.Context, r *pb.AuthUserRevokeRol } func (s *EtcdServer) RoleAdd(ctx context.Context, r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthRoleAdd: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthRoleAdd: r}) if err != nil { return nil, err } @@ -968,7 +970,7 @@ func (s *EtcdServer) RoleAdd(ctx context.Context, r *pb.AuthRoleAddRequest) (*pb } func (s *EtcdServer) RoleGrantPermission(ctx context.Context, r *pb.AuthRoleGrantPermissionRequest) (*pb.AuthRoleGrantPermissionResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthRoleGrantPermission: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthRoleGrantPermission: r}) if err != nil { return nil, err } @@ -976,7 +978,7 @@ func (s *EtcdServer) RoleGrantPermission(ctx context.Context, r *pb.AuthRoleGran } func (s *EtcdServer) RoleGet(ctx context.Context, r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthRoleGet: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthRoleGet: r}) if err != nil { return nil, err } @@ -984,7 +986,7 @@ func (s *EtcdServer) RoleGet(ctx context.Context, r *pb.AuthRoleGetRequest) (*pb } func (s *EtcdServer) RoleList(ctx context.Context, r *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthRoleList: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthRoleList: r}) if err != nil { return nil, err } @@ -992,7 +994,7 @@ func (s *EtcdServer) RoleList(ctx context.Context, r *pb.AuthRoleListRequest) (* } func (s *EtcdServer) RoleRevokePermission(ctx context.Context, r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthRoleRevokePermission: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthRoleRevokePermission: r}) if err != nil { return nil, err } @@ -1000,14 +1002,14 @@ func (s *EtcdServer) RoleRevokePermission(ctx context.Context, r *pb.AuthRoleRev } func (s *EtcdServer) RoleDelete(ctx context.Context, r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error) { - resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthRoleDelete: r}) + resp, err := s.raftRequest(ctx, &pb.InternalRaftRequest{AuthRoleDelete: r}) if err != nil { return nil, err } return resp.(*pb.AuthRoleDeleteResponse), nil } -func (s *EtcdServer) raftRequest(ctx context.Context, r pb.InternalRaftRequest) (proto.Message, error) { +func (s *EtcdServer) raftRequest(ctx context.Context, r *pb.InternalRaftRequest) (proto.Message, error) { result, err := s.processInternalRaftRequestOnce(ctx, r) if err != nil { trace.SpanFromContext(ctx).RecordError(err) @@ -1053,10 +1055,11 @@ func (s *EtcdServer) doSerialize(ctx context.Context, chk func(*auth.AuthInfo) e return nil } -func (s *EtcdServer) processInternalRaftRequestOnce(ctx context.Context, r pb.InternalRaftRequest) (*apply2.Result, error) { +func (s *EtcdServer) processInternalRaftRequestOnce(ctx context.Context, r *pb.InternalRaftRequest) (*apply2.Result, error) { ai := s.getAppliedIndex() ci := s.getCommittedIndex() - if ci > ai+maxGapBetweenApplyAndCommitIndex { + + if exceedsRequestLimit(ai, ci, r, s.FeatureEnabled(features.PriorityRequest)) { return nil, errors.ErrTooManyRequests } @@ -1080,7 +1083,7 @@ func (s *EtcdServer) processInternalRaftRequestOnce(ctx context.Context, r pb.In data []byte err error start = time.Now() - reqType = getRequestType(&r) + reqType = getRequestType(r) ) defer func() { success := err == nil diff --git a/server/storage/mvcc/kvstore.go b/server/storage/mvcc/kvstore.go index 662fba29121c..45b226734b4d 100644 --- a/server/storage/mvcc/kvstore.go +++ b/server/storage/mvcc/kvstore.go @@ -426,7 +426,7 @@ func (s *store) restore() error { type revKeyValue struct { key []byte - kv mvccpb.KeyValue + kv *mvccpb.KeyValue kstr string } @@ -492,9 +492,13 @@ func restoreIntoIndex(lg *zap.Logger, idx index) (chan<- revKeyValue, <-chan int func restoreChunk(lg *zap.Logger, kvc chan<- revKeyValue, keys, vals [][]byte, keyToLease map[string]lease.LeaseID) { for i, key := range keys { rkv := revKeyValue{key: key} - if err := rkv.kv.Unmarshal(vals[i]); err != nil { + + kv := &mvccpb.KeyValue{} + if err := kv.Unmarshal(vals[i]); err != nil { lg.Fatal("failed to unmarshal mvccpb.KeyValue", zap.Error(err)) } + rkv.kv = kv + rkv.kstr = string(rkv.kv.Key) if isTombstone(key) { delete(keyToLease, rkv.kstr) diff --git a/server/storage/mvcc/kvstore_test.go b/server/storage/mvcc/kvstore_test.go index c7e15d7c3e3a..b306347fa6c3 100644 --- a/server/storage/mvcc/kvstore_test.go +++ b/server/storage/mvcc/kvstore_test.go @@ -76,7 +76,7 @@ func TestStorePut(t *testing.T) { wrev Revision wkey []byte - wkv mvccpb.KeyValue + wkv *mvccpb.KeyValue wputrev Revision }{ { @@ -86,7 +86,7 @@ func TestStorePut(t *testing.T) { Revision{Main: 2}, newTestRevBytes(Revision{Main: 2}), - mvccpb.KeyValue{ + &mvccpb.KeyValue{ Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, @@ -103,7 +103,7 @@ func TestStorePut(t *testing.T) { Revision{Main: 2}, newTestRevBytes(Revision{Main: 2}), - mvccpb.KeyValue{ + &mvccpb.KeyValue{ Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, @@ -120,7 +120,7 @@ func TestStorePut(t *testing.T) { Revision{Main: 3}, newTestRevBytes(Revision{Main: 3}), - mvccpb.KeyValue{ + &mvccpb.KeyValue{ Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, From 25ae1997ab9ad72b17e1888254ec2e4b5a458c78 Mon Sep 17 00:00:00 2001 From: Nont <9658731+nwnt@users.noreply.github.com> Date: Mon, 11 May 2026 21:52:48 -0500 Subject: [PATCH 0979/1068] Refactor range kv tests Signed-off-by: Nont <9658731+nwnt@users.noreply.github.com> --- tests/common/kv_test.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index c0462fa02470..3e96fab53d21 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -110,15 +110,15 @@ func TestKVGet(t *testing.T) { tests := []testcase{ {name: "Get one specific key (a)", begin: "a", wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, {name: "Get one specific key (a), serializable", begin: "a", options: config.GetOptions{Serializable: true}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvA}}}, - {name: "Get [a, c)", begin: "a", options: config.GetOptions{End: "c"}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 2, Kvs: []*mvccpb.KeyValue{kvA, kvB}}}, + {name: "Get [a, c)", begin: "a", options: config.GetOptions{End: "c"}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 2, Kvs: allKvs[:2]}}, {name: "blank key with --prefix option -> all KVs", begin: "", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs}}, {name: "blank key with --from-key option -> all KVs", begin: "", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs}}, {name: "Range covering all keys -> all KVs", begin: "a", options: config.GetOptions{End: "x"}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs}}, {name: "blank key with --prefix and revision -> [first key, entry at specified revision]", begin: "", options: config.GetOptions{Prefix: true, Revision: int(firstRev + 3)}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 3, Kvs: []*mvccpb.KeyValue{kvA, kvB, kvCV1}}}, {name: "--count-only for one single key", begin: "a", options: config.GetOptions{CountOnly: true}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: nil}}, - {name: "--prefix of foo -> all entries with the prefix", begin: "foo", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 2, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc}}}, - {name: "--from-key of 'foo' -> [", begin: "foo", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 3, Kvs: []*mvccpb.KeyValue{kvFoo, kvFooAbc, kvFop}}}, - {name: "blank key with limit set", begin: "", options: config.GetOptions{Prefix: true, Limit: 2}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB}, More: true}}, + {name: "--prefix of foo -> all entries with the prefix", begin: "foo", options: config.GetOptions{Prefix: true}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 2, Kvs: allKvs[3:5]}}, + {name: "--from-key of 'foo' -> ", begin: "foo", options: config.GetOptions{FromKey: true}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 3, Kvs: allKvs[3:]}}, + {name: "blank key with limit set", begin: "", options: config.GetOptions{Prefix: true, Limit: 2}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs[:2], More: true}}, {name: "all kvs ordered by mod revision ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs}}, {name: "all KVs ordered by version ascending", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: kvsByVersion}}, {name: "all KVs ordered by key ascending, limit 2", begin: "", options: config.GetOptions{Prefix: true, Order: clientv3.SortAscend, SortBy: clientv3.SortByKey, Limit: 2}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvA, kvB}, More: true}}, @@ -134,10 +134,10 @@ func TestKVGet(t *testing.T) { {name: "Get second version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 4}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvCV2}}}, {name: "Get third version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 5}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, {name: "Get the latest version of 'c'", begin: "c", wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, - {name: "all KVs with mininum mod revision sorted by mod revision", begin: "", options: config.GetOptions{Prefix: true, MinModRevision: int(firstRev) + 3, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvC, kvFoo, kvFooAbc, kvFop}}}, - {name: "all KVs with maximum mod revision, sorted by key descending", begin: "", options: config.GetOptions{Prefix: true, MaxModRevision: int(firstRev) + 4, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvB, kvA}}}, - {name: "all KVs with minimum create revision, sorted by version, descending", begin: "", options: config.GetOptions{Prefix: true, MinCreateRevision: int(firstRev) + 3, Order: clientv3.SortDescend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvC, kvFoo, kvFooAbc, kvFop}}}, - {name: "all KVs with maximimum create revision, sorted by value", begin: "", options: config.GetOptions{Prefix: true, MaxCreateRevision: int(firstRev) + 6, Order: clientv3.SortDescend, SortBy: clientv3.SortByValue}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: []*mvccpb.KeyValue{kvFoo, kvC, kvA, kvB}}}, + {name: "all KVs with mininum mod revision sorted by mod revision", begin: "", options: config.GetOptions{Prefix: true, MinModRevision: int(firstRev) + 3, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs[2:]}}, + {name: "all KVs with maximum mod revision, sorted by key descending", begin: "", options: config.GetOptions{Prefix: true, MaxModRevision: int(firstRev) + 4, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: reversedKvs[:2]}}, + {name: "all KVs with minimum create revision, sorted by version, descending", begin: "", options: config.GetOptions{Prefix: true, MinCreateRevision: int(firstRev) + 3, Order: clientv3.SortDescend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs[2:]}}, + {name: "all KVs with maximimum create revision, sorted by value", begin: "", options: config.GetOptions{Prefix: true, MaxCreateRevision: int(firstRev) + 6, Order: clientv3.SortDescend, SortBy: clientv3.SortByValue}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs[:4]}}, } testsWithKeysOnly := make([]testcase, 0, len(tests)) for _, otc := range tests { From d76b683ebb286a1acfcafa65d83d407d9a570509 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Sun, 15 Mar 2026 14:27:23 -0400 Subject: [PATCH 0980/1068] server/proxy/grpcproxy: clone or copy instead of assignment copy Signed-off-by: Wei Fu --- server/proxy/grpcproxy/kv.go | 6 ++++-- server/proxy/grpcproxy/watcher.go | 9 ++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/server/proxy/grpcproxy/kv.go b/server/proxy/grpcproxy/kv.go index 05efb49bcd53..3b9bda9c03fa 100644 --- a/server/proxy/grpcproxy/kv.go +++ b/server/proxy/grpcproxy/kv.go @@ -18,6 +18,7 @@ import ( "context" "errors" + "github.com/gogo/protobuf/proto" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -64,10 +65,11 @@ func (p *kvProxy) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRespo } // cache linearizable as serializable - req := *r + // TODO(fuweid): consider using shadow copy here + req := proto.Clone(r).(*pb.RangeRequest) req.Serializable = true gresp := (*pb.RangeResponse)(resp.Get()) - p.cache.Add(&req, gresp) + p.cache.Add(req, gresp) cacheKeys.Set(float64(p.cache.Size())) return gresp, nil diff --git a/server/proxy/grpcproxy/watcher.go b/server/proxy/grpcproxy/watcher.go index a542fb1f4e3b..7e0f2cc183e7 100644 --- a/server/proxy/grpcproxy/watcher.go +++ b/server/proxy/grpcproxy/watcher.go @@ -89,9 +89,12 @@ func (w *watcher) send(wr clientv3.WatchResponse) { } if !w.prevKV { - evCopy := *ev - evCopy.PrevKv = nil - ev = &evCopy + evCopy := &mvccpb.Event{ + Type: ev.Type, + Kv: ev.Kv, + PrevKv: nil, + } + ev = evCopy } events = append(events, ev) } From 58a6a0c324b0cdc6095dab9acc2a303e727f57a3 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Thu, 12 Mar 2026 23:24:23 -0400 Subject: [PATCH 0981/1068] tests/robustness: use pointer for toWatchEvent Also using String() instead of %+v for proto struct Signed-off-by: Wei Fu --- tests/robustness/client/client.go | 4 ++-- tests/robustness/report/wal.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/robustness/client/client.go b/tests/robustness/client/client.go index 83ca2b1bbf39..e1f4211db4ee 100644 --- a/tests/robustness/client/client.go +++ b/tests/robustness/client/client.go @@ -369,7 +369,7 @@ func ToWatchResponse(r clientv3.WatchResponse, baseTime time.Time) model.WatchRe // see https://github.com/golang/go/blob/master/src/time/time.go#L17 resp := model.WatchResponse{Time: time.Since(baseTime)} for _, event := range r.Events { - resp.Events = append(resp.Events, toWatchEvent(*event)) + resp.Events = append(resp.Events, toWatchEvent(event)) } resp.IsProgressNotify = r.IsProgressNotify() resp.Revision = r.Header.Revision @@ -380,7 +380,7 @@ func ToWatchResponse(r clientv3.WatchResponse, baseTime time.Time) model.WatchRe return resp } -func toWatchEvent(event clientv3.Event) (watch model.WatchEvent) { +func toWatchEvent(event *clientv3.Event) (watch model.WatchEvent) { watch.Revision = event.Kv.ModRevision watch.Key = string(event.Kv.Key) watch.Value = model.ToValueOrHash(string(event.Kv.Value)) diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index ad69658b35ea..f2b8c3ff2f99 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -311,7 +311,7 @@ func parseEntryNormal(ent raftpb.Entry) (*model.EtcdRequest, error) { } return &request, nil default: - panic(fmt.Sprintf("Unhandled raft request: %+v", raftReq)) + panic(fmt.Sprintf("Unhandled raft request: %s", raftReq.String())) } } From 001f9c6df85340ec470b2244714dbc09d87a9c4e Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Sun, 15 Mar 2026 14:09:03 -0400 Subject: [PATCH 0982/1068] *: update test case to use pointer instead of copying pb Signed-off-by: Wei Fu --- .../api/v3rpc/validationfuzz_test.go | 6 +- tests/common/kv_test.go | 33 ++++-- tests/common/txn_test.go | 12 +-- tests/e2e/ctl_v3_member_test.go | 12 +-- tests/e2e/v3_curl_lease_test.go | 2 +- tests/go.mod | 2 +- .../clientv3/lease/leasing_test.go | 6 +- tests/integration/v3_grpc_test.go | 101 ++++++++++-------- tools/etcd-dump-logs/etcd-dump-log_test.go | 4 +- 9 files changed, 101 insertions(+), 77 deletions(-) diff --git a/server/etcdserver/api/v3rpc/validationfuzz_test.go b/server/etcdserver/api/v3rpc/validationfuzz_test.go index fdb3727d76b2..89a6366792b9 100644 --- a/server/etcdserver/api/v3rpc/validationfuzz_test.go +++ b/server/etcdserver/api/v3rpc/validationfuzz_test.go @@ -28,7 +28,7 @@ import ( ) func FuzzTxnRangeRequest(f *testing.F) { - testcases := []pb.RangeRequest{ + testcases := []*pb.RangeRequest{ { Key: []byte{2}, RangeEnd: []byte{2}, @@ -74,7 +74,7 @@ func FuzzTxnRangeRequest(f *testing.F) { } func FuzzTxnPutRequest(f *testing.F) { - testcases := []pb.PutRequest{ + testcases := []*pb.PutRequest{ { Key: []byte{2}, Value: []byte{2}, @@ -119,7 +119,7 @@ func FuzzTxnPutRequest(f *testing.F) { } func FuzzTxnDeleteRangeRequest(f *testing.F) { - testcases := []pb.DeleteRangeRequest{ + testcases := []*pb.DeleteRangeRequest{ { Key: []byte{2}, RangeEnd: []byte{2}, diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index 3e96fab53d21..c825a7822fb5 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -21,6 +21,7 @@ import ( "testing" "time" + "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -147,9 +148,7 @@ func TestKVGet(t *testing.T) { withKeysOnly := otc withKeysOnly.name = fmt.Sprintf("%s --keys-only", withKeysOnly.name) withKeysOnly.options.KeysOnly = true - wantResponse := *otc.wantResponse - wantResponse.Kvs = dropValue(withKeysOnly.wantResponse.Kvs) - withKeysOnly.wantResponse = &wantResponse + withKeysOnly.wantResponse = cloneGetResponseWithoutValues(otc.wantResponse) testsWithKeysOnly = append(testsWithKeysOnly, withKeysOnly) } for _, tt := range slices.Concat(tests, testsWithKeysOnly) { @@ -202,14 +201,28 @@ func rangeStreamSupports(o config.GetOptions) bool { }) } -func dropValue(s []*mvccpb.KeyValue) []*mvccpb.KeyValue { - ss := make([]*mvccpb.KeyValue, 0, len(s)) - for _, kv := range s { - clone := *kv - clone.Value = nil - ss = append(ss, &clone) +func cloneGetResponseWithoutValues(resp *clientv3.GetResponse) *clientv3.GetResponse { + clone := cloneGetResponse(resp) + if clone == nil { + return nil } - return ss + for _, kv := range clone.Kvs { + if kv != nil { + kv.Value = nil + } + } + return clone +} + +func cloneGetResponse(resp *clientv3.GetResponse) *clientv3.GetResponse { + if resp == nil { + return nil + } + return (*clientv3.GetResponse)( + proto.Clone( + (*etcdserverpb.RangeResponse)(resp), + ).(*etcdserverpb.RangeResponse), + ) } func TestKVDelete(t *testing.T) { diff --git a/tests/common/txn_test.go b/tests/common/txn_test.go index 4d55a26158bd..b3b0df601615 100644 --- a/tests/common/txn_test.go +++ b/tests/common/txn_test.go @@ -129,17 +129,17 @@ func getRespValues(r *clientv3.TxnResponse) []string { for _, resp := range r.Responses { switch v := resp.Response.(type) { case *pb.ResponseOp_ResponseDeleteRange: - r := (clientv3.DeleteResponse)(*v.ResponseDeleteRange) - ss = append(ss, fmt.Sprintf("%d", r.Deleted)) + r := v.ResponseDeleteRange + ss = append(ss, fmt.Sprintf("%d", r.GetDeleted())) case *pb.ResponseOp_ResponsePut: - r := (clientv3.PutResponse)(*v.ResponsePut) + r := v.ResponsePut ss = append(ss, "OK") - if r.PrevKv != nil { + if r.GetPrevKv() != nil { ss = append(ss, string(r.PrevKv.Key), string(r.PrevKv.Value)) } case *pb.ResponseOp_ResponseRange: - r := (clientv3.GetResponse)(*v.ResponseRange) - for _, kv := range r.Kvs { + r := v.ResponseRange + for _, kv := range r.GetKvs() { ss = append(ss, string(kv.Key), string(kv.Value)) } default: diff --git a/tests/e2e/ctl_v3_member_test.go b/tests/e2e/ctl_v3_member_test.go index c777004dae5d..234adbc28158 100644 --- a/tests/e2e/ctl_v3_member_test.go +++ b/tests/e2e/ctl_v3_member_test.go @@ -188,7 +188,7 @@ func ctlV3MemberList(cx ctlCtx) error { return e2e.SpawnWithExpects(cmdArgs, cx.envMap, lines...) } -func getMemberList(cx ctlCtx, serializable bool) (etcdserverpb.MemberListResponse, error) { +func getMemberList(cx ctlCtx, serializable bool) (*etcdserverpb.MemberListResponse, error) { cmdArgs := append(cx.PrefixArgs(), "--write-out", "json", "member", "list") if serializable { cmdArgs = append(cmdArgs, "--consistency", "s") @@ -196,23 +196,23 @@ func getMemberList(cx ctlCtx, serializable bool) (etcdserverpb.MemberListRespons proc, err := e2e.SpawnCmd(cmdArgs, cx.envMap) if err != nil { - return etcdserverpb.MemberListResponse{}, err + return nil, err } var txt string txt, err = proc.Expect("members") if err != nil { - return etcdserverpb.MemberListResponse{}, err + return nil, err } if err = proc.Close(); err != nil { - return etcdserverpb.MemberListResponse{}, err + return nil, err } resp := etcdserverpb.MemberListResponse{} dec := json.NewDecoder(strings.NewReader(txt)) if err := dec.Decode(&resp); errors.Is(err, io.EOF) { - return etcdserverpb.MemberListResponse{}, err + return nil, err } - return resp, nil + return &resp, nil } func memberListWithHexTest(cx ctlCtx) { diff --git a/tests/e2e/v3_curl_lease_test.go b/tests/e2e/v3_curl_lease_test.go index bd9d1adc6dd8..973e9db166b8 100644 --- a/tests/e2e/v3_curl_lease_test.go +++ b/tests/e2e/v3_curl_lease_test.go @@ -162,7 +162,7 @@ func gwLeaseRevoke(cx ctlCtx, leaseID int64) string { func gwKVPutLease(cx ctlCtx, k string, v string, leaseID int64) string { d := pb.PutRequest{Key: []byte(k), Value: []byte(v), Lease: leaseID} - s, err := e2e.DataMarshal(d) + s, err := e2e.DataMarshal(&d) require.NoErrorf(cx.t, err, "gwKVPutLease: Marshal error") return s } diff --git a/tests/go.mod b/tests/go.mod index 54a43220db21..1cc4c1bb6af7 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -19,6 +19,7 @@ require ( github.com/anishathalye/porcupine v1.1.0 github.com/antithesishq/antithesis-sdk-go v0.4.3 github.com/coreos/go-semver v0.3.1 + github.com/gogo/protobuf v1.3.2 github.com/golang-jwt/jwt/v5 v5.3.1 github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 @@ -69,7 +70,6 @@ require ( github.com/fatih/color v1.19.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/gogo/protobuf v1.3.2 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect diff --git a/tests/integration/clientv3/lease/leasing_test.go b/tests/integration/clientv3/lease/leasing_test.go index 68060e8d00ef..5746f99d8222 100644 --- a/tests/integration/clientv3/lease/leasing_test.go +++ b/tests/integration/clientv3/lease/leasing_test.go @@ -823,14 +823,14 @@ func TestLeasingTxnNonOwnerPut(t *testing.T) { clientv3.WithPrefix()) wresp := <-w c := 0 - var evs []clientv3.Event + var evsInStr []string for _, ev := range wresp.Events { - evs = append(evs, *ev) + evsInStr = append(evsInStr, ev.String()) if ev.Kv.ModRevision == tresp.Header.Revision { c++ } } - require.Equalf(t, 3, c, "expected 3 put events, got %+v", evs) + require.Equalf(t, 3, c, "expected 3 put events, got %+v", evsInStr) } // TestLeasingTxnRandIfThenOrElse randomly leases keys two separate clients, then diff --git a/tests/integration/v3_grpc_test.go b/tests/integration/v3_grpc_test.go index d17f5cd64aaf..ae1ce47c8ffe 100644 --- a/tests/integration/v3_grpc_test.go +++ b/tests/integration/v3_grpc_test.go @@ -496,13 +496,13 @@ func TestV3TxnRangeCompare(t *testing.T) { } tests := []struct { - cmp pb.Compare + cmp *pb.Compare wSuccess bool }{ { // >= /a/; all create revs fit - pb.Compare{ + &pb.Compare{ Key: []byte("/a/"), RangeEnd: []byte{0}, Target: pb.Compare_CREATE, @@ -513,7 +513,7 @@ func TestV3TxnRangeCompare(t *testing.T) { }, { // >= /a/; one create rev doesn't fit - pb.Compare{ + &pb.Compare{ Key: []byte("/a/"), RangeEnd: []byte{0}, Target: pb.Compare_CREATE, @@ -524,7 +524,7 @@ func TestV3TxnRangeCompare(t *testing.T) { }, { // prefix /a/*; all create revs fit - pb.Compare{ + &pb.Compare{ Key: []byte("/a/"), RangeEnd: []byte("/a0"), Target: pb.Compare_CREATE, @@ -535,7 +535,7 @@ func TestV3TxnRangeCompare(t *testing.T) { }, { // prefix /a/*; one create rev doesn't fit - pb.Compare{ + &pb.Compare{ Key: []byte("/a/"), RangeEnd: []byte("/a0"), Target: pb.Compare_CREATE, @@ -546,7 +546,7 @@ func TestV3TxnRangeCompare(t *testing.T) { }, { // does not exist, does not succeed - pb.Compare{ + &pb.Compare{ Key: []byte("/b/"), RangeEnd: []byte("/b0"), Target: pb.Compare_VALUE, @@ -557,7 +557,7 @@ func TestV3TxnRangeCompare(t *testing.T) { }, { // all keys are leased - pb.Compare{ + &pb.Compare{ Key: []byte("/a/"), RangeEnd: []byte("/a0"), Target: pb.Compare_LEASE, @@ -568,7 +568,7 @@ func TestV3TxnRangeCompare(t *testing.T) { }, { // no keys are leased - pb.Compare{ + &pb.Compare{ Key: []byte("/a/"), RangeEnd: []byte("/a0"), Target: pb.Compare_LEASE, @@ -582,7 +582,7 @@ func TestV3TxnRangeCompare(t *testing.T) { kvc := integration.ToGRPC(clus.Client(0)).KV for i, tt := range tests { txn := &pb.TxnRequest{} - txn.Compare = append(txn.Compare, &tt.cmp) + txn.Compare = append(txn.Compare, tt.cmp) tresp, err := kvc.Txn(t.Context(), txn) require.NoError(t, err) if tt.wSuccess != tresp.Succeeded { @@ -636,7 +636,7 @@ func TestV3TxnNestedPath(t *testing.T) { curTxnResp := tresp for i := range txnPath { if curTxnResp.Succeeded != txnPath[i] { - t.Fatalf("expected path %+v, got response %+v", txnPath, *tresp) + t.Fatalf("expected path %+v, got response %s", txnPath, tresp.String()) } curTxnResp = curTxnResp.Responses[0].Response.(*pb.ResponseOp_ResponseTxn).ResponseTxn } @@ -651,7 +651,13 @@ func TestV3PutIgnoreValue(t *testing.T) { kvc := integration.ToGRPC(clus.RandClient()).KV key, val := []byte("foo"), []byte("bar") - putReq := pb.PutRequest{Key: key, Value: val} + + newPutReq := func() *pb.PutRequest { + return &pb.PutRequest{ + Key: bytes.Clone(key), + Value: bytes.Clone(val), + } + } // create lease lc := integration.ToGRPC(clus.RandClient()).Lease @@ -666,9 +672,9 @@ func TestV3PutIgnoreValue(t *testing.T) { }{ { // put failure for non-existent key func() error { - preq := putReq + preq := newPutReq() preq.IgnoreValue = true - _, err := kvc.Put(t.Context(), &preq) + _, err := kvc.Put(t.Context(), preq) return err }, rpctypes.ErrGRPCKeyNotFound, @@ -676,12 +682,12 @@ func TestV3PutIgnoreValue(t *testing.T) { }, { // txn failure for non-existent key func() error { - preq := putReq + preq := newPutReq() preq.Value = nil preq.IgnoreValue = true txn := &pb.TxnRequest{} txn.Success = append(txn.Success, &pb.RequestOp{ - Request: &pb.RequestOp_RequestPut{RequestPut: &preq}, + Request: &pb.RequestOp_RequestPut{RequestPut: preq}, }) _, err := kvc.Txn(t.Context(), txn) return err @@ -691,7 +697,7 @@ func TestV3PutIgnoreValue(t *testing.T) { }, { // put success func() error { - _, err := kvc.Put(t.Context(), &putReq) + _, err := kvc.Put(t.Context(), newPutReq()) return err }, nil, @@ -699,13 +705,13 @@ func TestV3PutIgnoreValue(t *testing.T) { }, { // txn success, attach lease func() error { - preq := putReq + preq := newPutReq() preq.Value = nil preq.Lease = lresp.ID preq.IgnoreValue = true txn := &pb.TxnRequest{} txn.Success = append(txn.Success, &pb.RequestOp{ - Request: &pb.RequestOp_RequestPut{RequestPut: &preq}, + Request: &pb.RequestOp_RequestPut{RequestPut: preq}, }) _, err := kvc.Txn(t.Context(), txn) return err @@ -715,9 +721,9 @@ func TestV3PutIgnoreValue(t *testing.T) { }, { // non-empty value with ignore_value should error func() error { - preq := putReq + preq := newPutReq() preq.IgnoreValue = true - _, err := kvc.Put(t.Context(), &preq) + _, err := kvc.Put(t.Context(), preq) return err }, rpctypes.ErrGRPCValueProvided, @@ -725,10 +731,10 @@ func TestV3PutIgnoreValue(t *testing.T) { }, { // overwrite with previous value, ensure no prev-kv is returned and lease is detached func() error { - preq := putReq + preq := newPutReq() preq.Value = nil preq.IgnoreValue = true - presp, err := kvc.Put(t.Context(), &preq) + presp, err := kvc.Put(t.Context(), preq) if err != nil { return err } @@ -789,7 +795,12 @@ func TestV3PutIgnoreLease(t *testing.T) { require.Empty(t, lresp.Error) key, val, val1 := []byte("zoo"), []byte("bar"), []byte("bar1") - putReq := pb.PutRequest{Key: key, Value: val} + newPutReq := func() *pb.PutRequest { + return &pb.PutRequest{ + Key: bytes.Clone(key), + Value: bytes.Clone(val), + } + } tests := []struct { putFunc func() error @@ -799,9 +810,9 @@ func TestV3PutIgnoreLease(t *testing.T) { }{ { // put failure for non-existent key func() error { - preq := putReq + preq := newPutReq() preq.IgnoreLease = true - _, err := kvc.Put(t.Context(), &preq) + _, err := kvc.Put(t.Context(), preq) return err }, rpctypes.ErrGRPCKeyNotFound, @@ -810,11 +821,11 @@ func TestV3PutIgnoreLease(t *testing.T) { }, { // txn failure for non-existent key func() error { - preq := putReq + preq := newPutReq() preq.IgnoreLease = true txn := &pb.TxnRequest{} txn.Success = append(txn.Success, &pb.RequestOp{ - Request: &pb.RequestOp_RequestPut{RequestPut: &preq}, + Request: &pb.RequestOp_RequestPut{RequestPut: preq}, }) _, err := kvc.Txn(t.Context(), txn) return err @@ -825,9 +836,9 @@ func TestV3PutIgnoreLease(t *testing.T) { }, { // put success func() error { - preq := putReq + preq := newPutReq() preq.Lease = lresp.ID - _, err := kvc.Put(t.Context(), &preq) + _, err := kvc.Put(t.Context(), preq) return err }, nil, @@ -836,12 +847,12 @@ func TestV3PutIgnoreLease(t *testing.T) { }, { // txn success, modify value using 'ignore_lease' and ensure lease is not detached func() error { - preq := putReq + preq := newPutReq() preq.Value = val1 preq.IgnoreLease = true txn := &pb.TxnRequest{} txn.Success = append(txn.Success, &pb.RequestOp{ - Request: &pb.RequestOp_RequestPut{RequestPut: &preq}, + Request: &pb.RequestOp_RequestPut{RequestPut: preq}, }) _, err := kvc.Txn(t.Context(), txn) return err @@ -852,10 +863,10 @@ func TestV3PutIgnoreLease(t *testing.T) { }, { // non-empty lease with ignore_lease should error func() error { - preq := putReq + preq := newPutReq() preq.Lease = lresp.ID preq.IgnoreLease = true - _, err := kvc.Put(t.Context(), &preq) + _, err := kvc.Put(t.Context(), preq) return err }, rpctypes.ErrGRPCLeaseProvided, @@ -864,7 +875,7 @@ func TestV3PutIgnoreLease(t *testing.T) { }, { // overwrite with previous value, ensure no prev-kv is returned and lease is detached func() error { - presp, err := kvc.Put(t.Context(), &putReq) + presp, err := kvc.Put(t.Context(), newPutReq()) if err != nil { return err } @@ -1284,7 +1295,7 @@ func TestV3RangeRequest(t *testing.T) { name string putKeys []string - reqs []pb.RangeRequest + reqs []*pb.RangeRequest wresps [][]string wmores []bool @@ -1298,7 +1309,7 @@ func TestV3RangeRequest(t *testing.T) { { "single key", []string{"foo", "bar"}, - []pb.RangeRequest{ + []*pb.RangeRequest{ // exists {Key: []byte("foo")}, // doesn't exist @@ -1316,7 +1327,7 @@ func TestV3RangeRequest(t *testing.T) { { "multi-key", []string{"a", "b", "c", "d", "e"}, - []pb.RangeRequest{ + []*pb.RangeRequest{ // all in range {Key: []byte("a"), RangeEnd: []byte("z")}, // [b, d) @@ -1346,7 +1357,7 @@ func TestV3RangeRequest(t *testing.T) { { "revision", []string{"a", "b", "c", "d", "e"}, - []pb.RangeRequest{ + []*pb.RangeRequest{ {Key: []byte("a"), RangeEnd: []byte("z"), Revision: 0}, {Key: []byte("a"), RangeEnd: []byte("z"), Revision: 1}, {Key: []byte("a"), RangeEnd: []byte("z"), Revision: 2}, @@ -1366,7 +1377,7 @@ func TestV3RangeRequest(t *testing.T) { { "limit", []string{"a", "b", "c"}, - []pb.RangeRequest{ + []*pb.RangeRequest{ // more {Key: []byte("a"), RangeEnd: []byte("z"), Limit: 1}, // half @@ -1390,7 +1401,7 @@ func TestV3RangeRequest(t *testing.T) { { "count only", []string{"a", "b", "c"}, - []pb.RangeRequest{ + []*pb.RangeRequest{ // all match {Key: []byte("a"), RangeEnd: []byte("z"), CountOnly: true}, // single-key match @@ -1409,7 +1420,7 @@ func TestV3RangeRequest(t *testing.T) { { "sort", []string{"b", "a", "c", "d", "c"}, - []pb.RangeRequest{ + []*pb.RangeRequest{ { Key: []byte("a"), RangeEnd: []byte("z"), Limit: 1, @@ -1464,7 +1475,7 @@ func TestV3RangeRequest(t *testing.T) { { "min/max mod rev", []string{"rev2", "rev3", "rev4", "rev5", "rev6"}, - []pb.RangeRequest{ + []*pb.RangeRequest{ { Key: []byte{0}, RangeEnd: []byte{0}, MinModRevision: 3, @@ -1497,7 +1508,7 @@ func TestV3RangeRequest(t *testing.T) { { "min/max create rev", []string{"rev2", "rev3", "rev2", "rev2", "rev6", "rev3"}, - []pb.RangeRequest{ + []*pb.RangeRequest{ { Key: []byte{0}, RangeEnd: []byte{0}, MinCreateRevision: 3, @@ -1543,13 +1554,13 @@ func TestV3RangeRequest(t *testing.T) { for j, req := range tt.reqs { kvc := integration.ToGRPC(clus.RandClient()).KV - resp, err := kvc.Range(t.Context(), &req) + resp, err := kvc.Range(t.Context(), req) if err != nil { t.Errorf("#%d.%d: Range error: %v", i, j, err) continue } if !integration.ThroughProxy && !tt.streamUnsupported[j] { - got := rangeStream(t, kvc, &req) + got := rangeStream(t, kvc, req) require.Emptyf(t, cmp.Diff(resp, got, protocmp.Transform()), "RangeStream response must match Range response") } diff --git a/tools/etcd-dump-logs/etcd-dump-log_test.go b/tools/etcd-dump-logs/etcd-dump-log_test.go index f49cca49b5d9..309ccda81970 100644 --- a/tools/etcd-dump-logs/etcd-dump-log_test.go +++ b/tools/etcd-dump-logs/etcd-dump-log_test.go @@ -195,7 +195,7 @@ func appendNormalIRREnts(ents *[]raftpb.Entry) { irrauthrolerevokepermission := &etcdserverpb.AuthRoleRevokePermissionRequest{Role: "role3", Key: []byte("key"), RangeEnd: []byte("rangeend")} - irrs := []etcdserverpb.InternalRaftRequest{ + irrs := []*etcdserverpb.InternalRaftRequest{ {ID: 5, Range: irrrange}, {ID: 6, Put: irrput}, {ID: 7, DeleteRange: irrdeleterange}, @@ -227,7 +227,7 @@ func appendNormalIRREnts(ents *[]raftpb.Entry) { currentry.Term = uint64(i + 4) currentry.Index = uint64(i + 10) currentry.Type = raftpb.EntryNormal - currentry.Data = pbutil.MustMarshal(&irr) + currentry.Data = pbutil.MustMarshal(irr) *ents = append(*ents, currentry) } } From bf3073b30346152cc44ef3b1d44379f3266768f5 Mon Sep 17 00:00:00 2001 From: robin-vidal Date: Tue, 5 May 2026 21:55:50 +0200 Subject: [PATCH 0983/1068] scripts: fix SC2268 shellcheck warning in test_lib.sh Remove x-prefix pattern in comparison that is no longer needed in modern shells as per shellcheck SC2268. Fixes #21710 Signed-off-by: robin-vidal --- scripts/test_lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index 2b006a0d839f..1c92223062f0 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -497,7 +497,7 @@ function git_assert_branch_in_sync { if [ -n "${branch}" ]; then ref_local=$(run git rev-parse "${branch}") ref_origin=$(run git rev-parse "origin/${branch}") - if [ "x${ref_local}" != "x${ref_origin}" ]; then + if [ "${ref_local}" != "${ref_origin}" ]; then log_error "In workspace '$(pwd)' the branch: ${branch} diverges from the origin." log_error "Consider cleaning up / renaming this directory or (cd $(pwd) && git reset --hard origin/${branch})" return 2 From d014d12f0d75faabe3c0244f75104b34f284d611 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Wed, 13 May 2026 18:36:10 -0400 Subject: [PATCH 0984/1068] tests/common: fix TestKVGet skip masking non-stream coverage and stale wantResponses Signed-off-by: Jefftree --- tests/common/kv_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index c825a7822fb5..5c4c4e93d8ee 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -136,9 +136,9 @@ func TestKVGet(t *testing.T) { {name: "Get third version of 'c' by its revision", begin: "c", options: config.GetOptions{Revision: int(firstRev) + 5}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, {name: "Get the latest version of 'c'", begin: "c", wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 1, Kvs: []*mvccpb.KeyValue{kvC}}}, {name: "all KVs with mininum mod revision sorted by mod revision", begin: "", options: config.GetOptions{Prefix: true, MinModRevision: int(firstRev) + 3, SortBy: clientv3.SortByModRevision}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs[2:]}}, - {name: "all KVs with maximum mod revision, sorted by key descending", begin: "", options: config.GetOptions{Prefix: true, MaxModRevision: int(firstRev) + 4, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: reversedKvs[:2]}}, + {name: "all KVs with maximum mod revision, sorted by key descending", begin: "", options: config.GetOptions{Prefix: true, MaxModRevision: int(firstRev) + 4, Order: clientv3.SortDescend, SortBy: clientv3.SortByKey}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: reversedKvs[4:]}}, {name: "all KVs with minimum create revision, sorted by version, descending", begin: "", options: config.GetOptions{Prefix: true, MinCreateRevision: int(firstRev) + 3, Order: clientv3.SortDescend, SortBy: clientv3.SortByVersion}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs[2:]}}, - {name: "all KVs with maximimum create revision, sorted by value", begin: "", options: config.GetOptions{Prefix: true, MaxCreateRevision: int(firstRev) + 6, Order: clientv3.SortDescend, SortBy: clientv3.SortByValue}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: allKvs[:4]}}, + {name: "all KVs with maximimum create revision, sorted by value", begin: "", options: config.GetOptions{Prefix: true, MaxCreateRevision: int(firstRev) + 6, Order: clientv3.SortDescend, SortBy: clientv3.SortByValue}, wantResponse: &clientv3.GetResponse{Header: currentHeader, Count: 6, Kvs: kvsByValueDesc[1:5]}}, } testsWithKeysOnly := make([]testcase, 0, len(tests)) for _, otc := range tests { @@ -155,7 +155,7 @@ func TestKVGet(t *testing.T) { t.Run(tt.name, func(t *testing.T) { for _, stream := range []bool{true, false} { t.Run(fmt.Sprintf("Stream=%v", stream), func(t *testing.T) { - if !supportsGetStream || !rangeStreamSupports(tt.options) { + if stream && (!supportsGetStream || !rangeStreamSupports(tt.options)) { t.Skip("Stream not supported") } opts := tt.options From d5f10e3855825a2b09bf70b36ee19780ba3579ed Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Thu, 14 May 2026 09:57:59 -0400 Subject: [PATCH 0985/1068] scripts/genproto.sh: update to use google.golang.org/protobuf Signed-off-by: Wei Fu --- scripts/genproto.sh | 45 ++++----------------------------------------- 1 file changed, 4 insertions(+), 41 deletions(-) diff --git a/scripts/genproto.sh b/scripts/genproto.sh index 2253eb2a2df2..e20191e315a2 100755 --- a/scripts/genproto.sh +++ b/scripts/genproto.sh @@ -77,7 +77,6 @@ if [[ $(protoc --version | cut -f2 -d' ') != "3.20.3" ]]; then fi -GOFAST_BIN=$(tool_get_bin github.com/gogo/protobuf/protoc-gen-gofast) GOGEN_BIN=$(tool_get_bin google.golang.org/protobuf/cmd/protoc-gen-go) GOGENGRPC_BIN=$(tool_get_bin google.golang.org/grpc/cmd/protoc-gen-go-grpc) GRPC_GATEWAY_BIN=$(tool_get_bin github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway) @@ -116,7 +115,6 @@ download_googleapi echo echo "Resolved binary and packages versions:" -echo " - protoc-gen-gofast: ${GOFAST_BIN}" echo " - protoc-gen-go: ${GOGEN_BIN}" echo " - protoc-gen-go-grpc: ${GOGENGRPC_BIN}" echo " - protoc-gen-grpc-gateway: ${GRPC_GATEWAY_BIN}" @@ -129,16 +127,16 @@ GOGOPROTO_PATH="${GOGOPROTO_ROOT}:${GOGOPROTO_ROOT}/protobuf" # directories containing protos to be built DIRS="./server/storage/wal/walpb ./api/etcdserverpb ./server/etcdserver/api/snap/snappb ./api/mvccpb ./server/lease/leasepb ./api/authpb ./server/etcdserver/api/v3lock/v3lockpb ./server/etcdserver/api/v3election/v3electionpb ./api/membershippb ./api/versionpb" -log_callout -e "\\nRunning gofast (gogo) proto generation..." +log_callout -e "\\nRunning protoc-gen-go proto generation..." for dir in ${DIRS}; do run pushd "${dir}" - run protoc --gofast_out=. -I=".:${GOGOPROTO_PATH}:${ETCD_ROOT_DIR}/..:${RAFT_ROOT}:${ETCD_ROOT_DIR}:${GOOGLEAPI_ROOT}" \ - "--gofast_opt=paths=source_relative,${module_mappings}" \ + run protoc --go_out=. -I=".:${GOGOPROTO_PATH}:${ETCD_ROOT_DIR}/..:${RAFT_ROOT}:${ETCD_ROOT_DIR}:${GOOGLEAPI_ROOT}" \ + "--go_opt=paths=source_relative,${module_mappings}" \ --go-grpc_out=. \ "--go-grpc_opt=paths=source_relative,${module_mappings}" \ -I"${GRPC_GATEWAY_ROOT}" \ - --plugin="${GOFAST_BIN}" ./**/*.proto + ./**/*.proto run gofmt -s -w ./**/*.pb.go run_go_tool "golang.org/x/tools/cmd/goimports" -w ./**/*.pb.go @@ -188,41 +186,6 @@ for pb in api/etcdserverpb/rpc server/etcdserver/api/v3lock/v3lockpb/v3lock serv Documentation/dev-guide/apispec/swagger/"${swaggerName}".swagger.json done -# We only upgraded grpc-gateway from v1 to v2, but keep gogo/protobuf as it's for now. -# So we have to convert v1 message to v2 message. Once we get rid of gogo/protobuf, and -# start to depend on protobuf v2, then we can remove this patch. -# -# TODO(https://github.com/etcd-io/etcd/issues/14533): Remove the patch below after removal of gogo/protobuf -for pb in api/etcdserverpb/rpc server/etcdserver/api/v3lock/v3lockpb/v3lock server/etcdserver/api/v3election/v3electionpb/v3election; do - gwfile="$(dirname ${pb})/gw/$(basename ${pb}).pb.gw.go" - - # Changes something like below, - # import ( - # + protov1 "github.com/golang/protobuf/proto" - # + - run ${SED?} -i -E "s|import \(|import \(\n\tprotov1 \"github.com/golang/protobuf/proto\"\n|g" "${gwfile}" - - # Changes something like below, - # - return msg, metadata, err - # + return protov1.MessageV2(msg), metadata, err - run ${SED?} -i -E "s|return msg, metadata, err|return protov1.MessageV2\(msg\), metadata, err|g" "${gwfile}" - - # Changes something like below, - # - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - # + if err := marshaler.NewDecoder(newReader()).Decode(protov1.MessageV2(&protoReq)); err != nil && err != io.EOF { - run ${SED?} -i -E "s|Decode\(\&protoReq\)|Decode\(protov1\.MessageV2\(\&protoReq\)\)|g" "${gwfile}" - - # Changes something like below, - # - forward_Lease_LeaseKeepAlive_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) - # + forward_Lease_LeaseKeepAlive_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { - # + m1, err := resp.Recv() - # + return protov1.MessageV2(m1), err - # + }, mux.GetForwardResponseOptions()...) - run ${SED?} -i -E "s|return resp.Recv\(\)|\n\t\t\tm1, err := resp.Recv\(\)\n\t\t\treturn protov1.MessageV2\(m1\), err\n\t\t|g" "${gwfile}" - - run go fmt "${gwfile}" -done - if [ "${1:-}" != "--skip-protodoc" ]; then log_callout "protodoc is auto-generating grpc API reference documentation..." From 589c436f2062c46fc9495595489e02a03dd85fe5 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Wed, 13 May 2026 16:09:09 -0400 Subject: [PATCH 0986/1068] etcdctl: add --stream flag to get command Signed-off-by: Jefftree --- etcdctl/ctlv3/command/get_command.go | 17 +++++++++- tests/common/integration_test.go | 1 - tests/common/kv_test.go | 47 ++++++++++++++++++++-------- tests/common/main_test.go | 5 ++- tests/framework/e2e/etcdctl.go | 6 ++-- 5 files changed, 55 insertions(+), 21 deletions(-) diff --git a/etcdctl/ctlv3/command/get_command.go b/etcdctl/ctlv3/command/get_command.go index 33da91d9d808..59e70139edb5 100644 --- a/etcdctl/ctlv3/command/get_command.go +++ b/etcdctl/ctlv3/command/get_command.go @@ -39,6 +39,7 @@ var ( getMaxCreateRev int64 getMinModRev int64 getMaxModRev int64 + getStream bool ) // NewGetCommand returns the cobra command for "get". @@ -64,6 +65,7 @@ func NewGetCommand() *cobra.Command { cmd.Flags().Int64Var(&getMaxCreateRev, "max-create-rev", 0, "Maximum create revision") cmd.Flags().Int64Var(&getMinModRev, "min-mod-rev", 0, "Minimum modification revision") cmd.Flags().Int64Var(&getMaxModRev, "max-mod-rev", 0, "Maximum modification revision") + cmd.Flags().BoolVar(&getStream, "stream", false, "Use the RangeStream RPC") cmd.RegisterFlagCompletionFunc("consistency", func(_ *cobra.Command, _ []string, _ string) ([]string, cobra.ShellCompDirective) { return []string{"l", "s"}, cobra.ShellCompDirectiveDefault @@ -82,7 +84,20 @@ func NewGetCommand() *cobra.Command { func getCommandFunc(cmd *cobra.Command, args []string) { key, opts := getGetOp(args) ctx, cancel := commandCtx(cmd) - resp, err := mustClientFromCmd(cmd).Get(ctx, key, opts...) + client := mustClientFromCmd(cmd) + var ( + resp *clientv3.GetResponse + err error + ) + if getStream { + var stream clientv3.GetStreamChan + stream, err = client.GetStream(ctx, key, opts...) + if err == nil { + resp, err = clientv3.GetStreamToGetResponse(stream) + } + } else { + resp, err = client.Get(ctx, key, opts...) + } cancel() if err != nil { cobrautl.ExitWithError(cobrautl.ExitError, err) diff --git a/tests/common/integration_test.go b/tests/common/integration_test.go index df1e41066511..53234cd04bc3 100644 --- a/tests/common/integration_test.go +++ b/tests/common/integration_test.go @@ -25,7 +25,6 @@ import ( func init() { testRunner = framework.IntegrationTestRunner clusterTestCases = integrationClusterTestCases - supportsGetStream = true } func integrationClusterTestCases() []testCase { diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index 5c4c4e93d8ee..a2cc53a172e7 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -30,6 +30,7 @@ import ( clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/server/v3/etcdserver/txn" "go.etcd.io/etcd/tests/v3/framework/config" + "go.etcd.io/etcd/tests/v3/framework/interfaces" "go.etcd.io/etcd/tests/v3/framework/testutils" ) @@ -59,6 +60,14 @@ func TestKVPut(t *testing.T) { } func TestKVGet(t *testing.T) { + testKVGet(t, false) +} + +func TestKVGetStream(t *testing.T) { + testKVGet(t, true) +} + +func testKVGet(t *testing.T, stream bool) { testRunner.BeforeTest(t) for _, tc := range clusterTestCases() { t.Run(tc.name, func(t *testing.T) { @@ -68,6 +77,10 @@ func TestKVGet(t *testing.T) { defer clus.Close() cc := testutils.MustClient(clus.Client()) + if stream && !clusterSupportsGetStream(ctx, t, clus) { + t.Skip("RangeStream is not supported by this cluster") + } + testutils.ExecuteUntil(ctx, t, func() { resp, err := cc.Get(ctx, "", config.GetOptions{Prefix: true}) require.NoError(t, err) @@ -153,20 +166,16 @@ func TestKVGet(t *testing.T) { } for _, tt := range slices.Concat(tests, testsWithKeysOnly) { t.Run(tt.name, func(t *testing.T) { - for _, stream := range []bool{true, false} { - t.Run(fmt.Sprintf("Stream=%v", stream), func(t *testing.T) { - if stream && (!supportsGetStream || !rangeStreamSupports(tt.options)) { - t.Skip("Stream not supported") - } - opts := tt.options - opts.Stream = stream - resp, err := cc.Get(ctx, tt.begin, opts) - require.NoErrorf(t, err, "count not get key %q, err: %s", tt.begin, err) - resp.Header.MemberId = 0 - resp.Header.RaftTerm = 0 - assert.Equal(t, tt.wantResponse, resp) - }) + if stream && !rangeStreamSupports(tt.options) { + t.Skip("options not supported by RangeStream") } + opts := tt.options + opts.Stream = stream + resp, err := cc.Get(ctx, tt.begin, opts) + require.NoErrorf(t, err, "count not get key %q, err: %s", tt.begin, err) + resp.Header.MemberId = 0 + resp.Header.RaftTerm = 0 + assert.Equal(t, tt.wantResponse, resp) }) } }) @@ -184,6 +193,18 @@ func createKV(key, val string, createRev, modRev, ver int64) *mvccpb.KeyValue { } } +// clusterSupportsGetStream probes every cluster member with a RangeStream RPC and returns false if any member rejects it. +func clusterSupportsGetStream(ctx context.Context, t *testing.T, clus interfaces.Cluster) bool { + for _, m := range clus.Members() { + _, err := m.Client().Get(ctx, "probe", config.GetOptions{Stream: true}) + if err != nil { + t.Logf("member does not support RangeStream: %v", err) + return false + } + } + return true +} + // rangeStreamSupports reports whether the server's RangeStream RPC accepts a // request with these options, mirroring v3rpc.checkRangeStreamRequest. func rangeStreamSupports(o config.GetOptions) bool { diff --git a/tests/common/main_test.go b/tests/common/main_test.go index 326918f794bf..be5e5a17d4db 100644 --- a/tests/common/main_test.go +++ b/tests/common/main_test.go @@ -22,9 +22,8 @@ import ( ) var ( - testRunner intf.TestRunner - clusterTestCases func() []testCase - supportsGetStream bool + testRunner intf.TestRunner + clusterTestCases func() []testCase ) func TestMain(m *testing.M) { diff --git a/tests/framework/e2e/etcdctl.go b/tests/framework/e2e/etcdctl.go index 88d19913c758..237a2b9fcb03 100644 --- a/tests/framework/e2e/etcdctl.go +++ b/tests/framework/e2e/etcdctl.go @@ -103,9 +103,6 @@ func (ctl *EtcdctlV3) DowngradeCancel(ctx context.Context) error { } func (ctl *EtcdctlV3) Get(ctx context.Context, key string, o config.GetOptions) (*clientv3.GetResponse, error) { - if o.Stream { - return nil, fmt.Errorf("etcdctl has no RangeStream command; Stream=true is not supported by the e2e backend") - } var args []string if o.Timeout != 0 { args = append(args, fmt.Sprintf("--command-timeout=%s", o.Timeout)) @@ -152,6 +149,9 @@ func (ctl *EtcdctlV3) Get(ctx context.Context, key string, o config.GetOptions) if o.MinModRevision != 0 { args = append(args, fmt.Sprintf("--min-mod-rev=%d", o.MinModRevision)) } + if o.Stream { + args = append(args, "--stream") + } switch o.SortBy { case clientv3.SortByCreateRevision: args = append(args, "--sort-by=CREATE") From 7db7b4f927be0fc3466ce16ac983d38c0fc5be5e Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Fri, 15 May 2026 06:36:35 -0400 Subject: [PATCH 0987/1068] *: re-generate pb file by google.golang.org/protobuf Signed-off-by: Wei Fu --- api/authpb/auth.pb.go | 1374 +- api/etcdserverpb/etcdserver.pb.go | 404 +- api/etcdserverpb/gw/rpc.pb.gw.go | 351 +- api/etcdserverpb/raft_internal.pb.go | 3102 +- api/etcdserverpb/rpc.pb.go | 27346 +++------------- api/membershippb/membership.pb.go | 1696 +- api/mvccpb/kv.pb.go | 945 +- api/versionpb/version.pb.go | 187 +- server/etcdserver/api/snap/snappb/snap.pb.go | 422 +- .../v3electionpb/gw/v3election.pb.gw.go | 41 +- .../v3election/v3electionpb/v3election.pb.go | 2478 +- .../api/v3lock/v3lockpb/gw/v3lock.pb.gw.go | 18 +- .../api/v3lock/v3lockpb/v3lock.pb.go | 1113 +- server/lease/leasepb/lease.pb.go | 866 +- server/storage/wal/walpb/record.pb.go | 762 +- 15 files changed, 7337 insertions(+), 33768 deletions(-) diff --git a/api/authpb/auth.pb.go b/api/authpb/auth.pb.go index 5e0872ad780c..cf2471095f48 100644 --- a/api/authpb/auth.pb.go +++ b/api/authpb/auth.pb.go @@ -1,27 +1,26 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v3.20.3 // source: auth.proto package authpb import ( - fmt "fmt" - io "io" - math "math" - math_bits "math/bits" + reflect "reflect" + sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type Permission_Type int32 @@ -31,1197 +30,354 @@ const ( Permission_READWRITE Permission_Type = 2 ) -var Permission_Type_name = map[int32]string{ - 0: "READ", - 1: "WRITE", - 2: "READWRITE", -} +// Enum value maps for Permission_Type. +var ( + Permission_Type_name = map[int32]string{ + 0: "READ", + 1: "WRITE", + 2: "READWRITE", + } + Permission_Type_value = map[string]int32{ + "READ": 0, + "WRITE": 1, + "READWRITE": 2, + } +) -var Permission_Type_value = map[string]int32{ - "READ": 0, - "WRITE": 1, - "READWRITE": 2, +func (x Permission_Type) Enum() *Permission_Type { + p := new(Permission_Type) + *p = x + return p } func (x Permission_Type) String() string { - return proto.EnumName(Permission_Type_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Permission_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8bbd6f3875b0e874, []int{2, 0} +func (Permission_Type) Descriptor() protoreflect.EnumDescriptor { + return file_auth_proto_enumTypes[0].Descriptor() } -type UserAddOptions struct { - NoPassword bool `protobuf:"varint,1,opt,name=no_password,json=noPassword,proto3" json:"no_password,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (Permission_Type) Type() protoreflect.EnumType { + return &file_auth_proto_enumTypes[0] } -func (m *UserAddOptions) Reset() { *m = UserAddOptions{} } -func (m *UserAddOptions) String() string { return proto.CompactTextString(m) } -func (*UserAddOptions) ProtoMessage() {} -func (*UserAddOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_8bbd6f3875b0e874, []int{0} +func (x Permission_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (m *UserAddOptions) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *UserAddOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_UserAddOptions.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *UserAddOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_UserAddOptions.Merge(m, src) -} -func (m *UserAddOptions) XXX_Size() int { - return m.Size() -} -func (m *UserAddOptions) XXX_DiscardUnknown() { - xxx_messageInfo_UserAddOptions.DiscardUnknown(m) -} - -var xxx_messageInfo_UserAddOptions proto.InternalMessageInfo -func (m *UserAddOptions) GetNoPassword() bool { - if m != nil { - return m.NoPassword - } - return false +// Deprecated: Use Permission_Type.Descriptor instead. +func (Permission_Type) EnumDescriptor() ([]byte, []int) { + return file_auth_proto_rawDescGZIP(), []int{2, 0} } -// User is a single entry in the bucket authUsers -type User struct { - Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Password []byte `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` - Roles []string `protobuf:"bytes,3,rep,name=roles,proto3" json:"roles,omitempty"` - Options *UserAddOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type UserAddOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + NoPassword bool `protobuf:"varint,1,opt,name=no_password,json=noPassword,proto3" json:"no_password,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *User) Reset() { *m = User{} } -func (m *User) String() string { return proto.CompactTextString(m) } -func (*User) ProtoMessage() {} -func (*User) Descriptor() ([]byte, []int) { - return fileDescriptor_8bbd6f3875b0e874, []int{1} -} -func (m *User) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *User) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_User.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *User) XXX_Merge(src proto.Message) { - xxx_messageInfo_User.Merge(m, src) -} -func (m *User) XXX_Size() int { - return m.Size() +func (x *UserAddOptions) Reset() { + *x = UserAddOptions{} + mi := &file_auth_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *User) XXX_DiscardUnknown() { - xxx_messageInfo_User.DiscardUnknown(m) + +func (x *UserAddOptions) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_User proto.InternalMessageInfo +func (*UserAddOptions) ProtoMessage() {} -func (m *User) GetName() []byte { - if m != nil { - return m.Name +func (x *UserAddOptions) ProtoReflect() protoreflect.Message { + mi := &file_auth_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *User) GetPassword() []byte { - if m != nil { - return m.Password - } - return nil +// Deprecated: Use UserAddOptions.ProtoReflect.Descriptor instead. +func (*UserAddOptions) Descriptor() ([]byte, []int) { + return file_auth_proto_rawDescGZIP(), []int{0} } -func (m *User) GetRoles() []string { - if m != nil { - return m.Roles +func (x *UserAddOptions) GetNoPassword() bool { + if x != nil { + return x.NoPassword } - return nil + return false } -func (m *User) GetOptions() *UserAddOptions { - if m != nil { - return m.Options - } - return nil +// User is a single entry in the bucket authUsers +type User struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Password []byte `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + Roles []string `protobuf:"bytes,3,rep,name=roles,proto3" json:"roles,omitempty"` + Options *UserAddOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -// Permission is a single entity -type Permission struct { - PermType Permission_Type `protobuf:"varint,1,opt,name=permType,proto3,enum=authpb.Permission_Type" json:"permType,omitempty"` - Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - RangeEnd []byte `protobuf:"bytes,3,opt,name=range_end,json=rangeEnd,proto3" json:"range_end,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *User) Reset() { + *x = User{} + mi := &file_auth_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *Permission) Reset() { *m = Permission{} } -func (m *Permission) String() string { return proto.CompactTextString(m) } -func (*Permission) ProtoMessage() {} -func (*Permission) Descriptor() ([]byte, []int) { - return fileDescriptor_8bbd6f3875b0e874, []int{2} -} -func (m *Permission) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Permission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Permission.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Permission) XXX_Merge(src proto.Message) { - xxx_messageInfo_Permission.Merge(m, src) -} -func (m *Permission) XXX_Size() int { - return m.Size() -} -func (m *Permission) XXX_DiscardUnknown() { - xxx_messageInfo_Permission.DiscardUnknown(m) +func (x *User) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_Permission proto.InternalMessageInfo +func (*User) ProtoMessage() {} -func (m *Permission) GetPermType() Permission_Type { - if m != nil { - return m.PermType +func (x *User) ProtoReflect() protoreflect.Message { + mi := &file_auth_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return Permission_READ + return mi.MessageOf(x) } -func (m *Permission) GetKey() []byte { - if m != nil { - return m.Key - } - return nil +// Deprecated: Use User.ProtoReflect.Descriptor instead. +func (*User) Descriptor() ([]byte, []int) { + return file_auth_proto_rawDescGZIP(), []int{1} } -func (m *Permission) GetRangeEnd() []byte { - if m != nil { - return m.RangeEnd +func (x *User) GetName() []byte { + if x != nil { + return x.Name } return nil } -// Role is a single entry in the bucket authRoles -type Role struct { - Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - KeyPermission []*Permission `protobuf:"bytes,2,rep,name=keyPermission,proto3" json:"keyPermission,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Role) Reset() { *m = Role{} } -func (m *Role) String() string { return proto.CompactTextString(m) } -func (*Role) ProtoMessage() {} -func (*Role) Descriptor() ([]byte, []int) { - return fileDescriptor_8bbd6f3875b0e874, []int{3} -} -func (m *Role) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Role) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Role.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil +func (x *User) GetPassword() []byte { + if x != nil { + return x.Password } -} -func (m *Role) XXX_Merge(src proto.Message) { - xxx_messageInfo_Role.Merge(m, src) -} -func (m *Role) XXX_Size() int { - return m.Size() -} -func (m *Role) XXX_DiscardUnknown() { - xxx_messageInfo_Role.DiscardUnknown(m) + return nil } -var xxx_messageInfo_Role proto.InternalMessageInfo - -func (m *Role) GetName() []byte { - if m != nil { - return m.Name +func (x *User) GetRoles() []string { + if x != nil { + return x.Roles } return nil } -func (m *Role) GetKeyPermission() []*Permission { - if m != nil { - return m.KeyPermission +func (x *User) GetOptions() *UserAddOptions { + if x != nil { + return x.Options } return nil } -func init() { - proto.RegisterEnum("authpb.Permission_Type", Permission_Type_name, Permission_Type_value) - proto.RegisterType((*UserAddOptions)(nil), "authpb.UserAddOptions") - proto.RegisterType((*User)(nil), "authpb.User") - proto.RegisterType((*Permission)(nil), "authpb.Permission") - proto.RegisterType((*Role)(nil), "authpb.Role") +// Permission is a single entity +type Permission struct { + state protoimpl.MessageState `protogen:"open.v1"` + PermType Permission_Type `protobuf:"varint,1,opt,name=permType,proto3,enum=authpb.Permission_Type" json:"permType,omitempty"` + Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + RangeEnd []byte `protobuf:"bytes,3,opt,name=range_end,json=rangeEnd,proto3" json:"range_end,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func init() { proto.RegisterFile("auth.proto", fileDescriptor_8bbd6f3875b0e874) } - -var fileDescriptor_8bbd6f3875b0e874 = []byte{ - // 342 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xcf, 0x4e, 0xf2, 0x40, - 0x14, 0xc5, 0x19, 0x5a, 0xf8, 0xda, 0xcb, 0x07, 0x21, 0x37, 0x46, 0x1b, 0x8d, 0xb5, 0xe9, 0xaa, - 0x71, 0xd1, 0x2a, 0x6c, 0xdc, 0x62, 0x64, 0xe1, 0x4a, 0x32, 0xc1, 0x98, 0xb8, 0x21, 0xc5, 0x4e, - 0xb0, 0x01, 0x66, 0x9a, 0x99, 0xaa, 0x61, 0xe3, 0x73, 0xb8, 0xf0, 0x81, 0x5c, 0xfa, 0x08, 0x06, - 0x5f, 0xc4, 0xb4, 0xc3, 0x9f, 0x10, 0x5d, 0xf5, 0x9e, 0xd3, 0x73, 0xee, 0xfc, 0x32, 0x03, 0x10, - 0x3f, 0xe5, 0x8f, 0x61, 0x26, 0x45, 0x2e, 0xb0, 0x5e, 0xcc, 0xd9, 0xd8, 0x3f, 0x87, 0xd6, 0xad, - 0x62, 0xb2, 0x97, 0x24, 0x37, 0x59, 0x9e, 0x0a, 0xae, 0xf0, 0x04, 0x1a, 0x5c, 0x8c, 0xb2, 0x58, - 0xa9, 0x17, 0x21, 0x13, 0x87, 0x78, 0x24, 0xb0, 0x28, 0x70, 0x31, 0x58, 0x39, 0xfe, 0x2b, 0x98, - 0x45, 0x05, 0x11, 0x4c, 0x1e, 0xcf, 0x59, 0x99, 0xf8, 0x4f, 0xcb, 0x19, 0x0f, 0xc1, 0xda, 0x34, - 0xab, 0xa5, 0xbf, 0xd1, 0xb8, 0x07, 0x35, 0x29, 0x66, 0x4c, 0x39, 0x86, 0x67, 0x04, 0x36, 0xd5, - 0x02, 0xcf, 0xe0, 0x9f, 0xd0, 0x27, 0x3b, 0xa6, 0x47, 0x82, 0x46, 0x67, 0x3f, 0xd4, 0x68, 0xe1, - 0x2e, 0x17, 0x5d, 0xc7, 0xfc, 0x77, 0x02, 0x30, 0x60, 0x72, 0x9e, 0x2a, 0x95, 0x0a, 0x8e, 0x5d, - 0xb0, 0x32, 0x26, 0xe7, 0xc3, 0x45, 0xa6, 0x51, 0x5a, 0x9d, 0x83, 0xf5, 0x86, 0x6d, 0x2a, 0x2c, - 0x7e, 0xd3, 0x4d, 0x10, 0xdb, 0x60, 0x4c, 0xd9, 0x62, 0x85, 0x58, 0x8c, 0x78, 0x04, 0xb6, 0x8c, - 0xf9, 0x84, 0x8d, 0x18, 0x4f, 0x1c, 0x43, 0xa3, 0x97, 0x46, 0x9f, 0x27, 0xfe, 0x29, 0x98, 0x65, - 0xcd, 0x02, 0x93, 0xf6, 0x7b, 0x57, 0xed, 0x0a, 0xda, 0x50, 0xbb, 0xa3, 0xd7, 0xc3, 0x7e, 0x9b, - 0x60, 0x13, 0xec, 0xc2, 0xd4, 0xb2, 0xea, 0x0f, 0xc1, 0xa4, 0x62, 0xc6, 0xfe, 0xbc, 0x9e, 0x0b, - 0x68, 0x4e, 0xd9, 0x62, 0x8b, 0xe5, 0x54, 0x3d, 0x23, 0x68, 0x74, 0xf0, 0x37, 0x30, 0xdd, 0x0d, - 0x5e, 0x46, 0x1f, 0x4b, 0x97, 0x7c, 0x2e, 0x5d, 0xf2, 0xb5, 0x74, 0xc9, 0xdb, 0xb7, 0x5b, 0xb9, - 0x3f, 0x9e, 0x88, 0x90, 0xe5, 0x0f, 0x49, 0x98, 0x8a, 0xa8, 0xf8, 0x46, 0x71, 0x96, 0x46, 0xcf, - 0xdd, 0x48, 0xaf, 0x1a, 0xd7, 0xcb, 0x77, 0xee, 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x1b, - 0x2e, 0xdd, 0xf5, 0x01, 0x00, 0x00, +func (x *Permission) Reset() { + *x = Permission{} + mi := &file_auth_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *UserAddOptions) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (x *Permission) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UserAddOptions) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +func (*Permission) ProtoMessage() {} -func (m *UserAddOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.NoPassword { - i-- - if m.NoPassword { - dAtA[i] = 1 - } else { - dAtA[i] = 0 +func (x *Permission) ProtoReflect() protoreflect.Message { + mi := &file_auth_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0x8 + return ms } - return len(dAtA) - i, nil -} - -func (m *User) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *User) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return mi.MessageOf(x) } -func (m *User) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Options != nil { - { - size, err := m.Options.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintAuth(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if len(m.Roles) > 0 { - for iNdEx := len(m.Roles) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Roles[iNdEx]) - copy(dAtA[i:], m.Roles[iNdEx]) - i = encodeVarintAuth(dAtA, i, uint64(len(m.Roles[iNdEx]))) - i-- - dAtA[i] = 0x1a - } - } - if len(m.Password) > 0 { - i -= len(m.Password) - copy(dAtA[i:], m.Password) - i = encodeVarintAuth(dAtA, i, uint64(len(m.Password))) - i-- - dAtA[i] = 0x12 - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintAuth(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +// Deprecated: Use Permission.ProtoReflect.Descriptor instead. +func (*Permission) Descriptor() ([]byte, []int) { + return file_auth_proto_rawDescGZIP(), []int{2} } -func (m *Permission) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (x *Permission) GetPermType() Permission_Type { + if x != nil { + return x.PermType } - return dAtA[:n], nil -} - -func (m *Permission) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return Permission_READ } -func (m *Permission) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) +func (x *Permission) GetKey() []byte { + if x != nil { + return x.Key } - if len(m.RangeEnd) > 0 { - i -= len(m.RangeEnd) - copy(dAtA[i:], m.RangeEnd) - i = encodeVarintAuth(dAtA, i, uint64(len(m.RangeEnd))) - i-- - dAtA[i] = 0x1a - } - if len(m.Key) > 0 { - i -= len(m.Key) - copy(dAtA[i:], m.Key) - i = encodeVarintAuth(dAtA, i, uint64(len(m.Key))) - i-- - dAtA[i] = 0x12 - } - if m.PermType != 0 { - i = encodeVarintAuth(dAtA, i, uint64(m.PermType)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil + return nil } -func (m *Role) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (x *Permission) GetRangeEnd() []byte { + if x != nil { + return x.RangeEnd } - return dAtA[:n], nil -} - -func (m *Role) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return nil } -func (m *Role) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.KeyPermission) > 0 { - for iNdEx := len(m.KeyPermission) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.KeyPermission[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintAuth(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintAuth(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +// Role is a single entry in the bucket authRoles +type Role struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + KeyPermission []*Permission `protobuf:"bytes,2,rep,name=keyPermission,proto3" json:"keyPermission,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func encodeVarintAuth(dAtA []byte, offset int, v uint64) int { - offset -= sovAuth(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *UserAddOptions) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.NoPassword { - n += 2 - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +func (x *Role) Reset() { + *x = Role{} + mi := &file_auth_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *User) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovAuth(uint64(l)) - } - l = len(m.Password) - if l > 0 { - n += 1 + l + sovAuth(uint64(l)) - } - if len(m.Roles) > 0 { - for _, s := range m.Roles { - l = len(s) - n += 1 + l + sovAuth(uint64(l)) - } - } - if m.Options != nil { - l = m.Options.Size() - n += 1 + l + sovAuth(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +func (x *Role) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Permission) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.PermType != 0 { - n += 1 + sovAuth(uint64(m.PermType)) - } - l = len(m.Key) - if l > 0 { - n += 1 + l + sovAuth(uint64(l)) - } - l = len(m.RangeEnd) - if l > 0 { - n += 1 + l + sovAuth(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} +func (*Role) ProtoMessage() {} -func (m *Role) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovAuth(uint64(l)) - } - if len(m.KeyPermission) > 0 { - for _, e := range m.KeyPermission { - l = e.Size() - n += 1 + l + sovAuth(uint64(l)) +func (x *Role) ProtoReflect() protoreflect.Message { + mi := &file_auth_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } + return ms } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n + return mi.MessageOf(x) } -func sovAuth(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozAuth(x uint64) (n int) { - return sovAuth(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +// Deprecated: Use Role.ProtoReflect.Descriptor instead. +func (*Role) Descriptor() ([]byte, []int) { + return file_auth_proto_rawDescGZIP(), []int{3} } -func (m *UserAddOptions) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuth - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: UserAddOptions: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: UserAddOptions: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NoPassword", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuth - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.NoPassword = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipAuth(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAuth - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF +func (x *Role) GetName() []byte { + if x != nil { + return x.Name } return nil } -func (m *User) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuth - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: User: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: User: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuth - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthAuth - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthAuth - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = append(m.Name[:0], dAtA[iNdEx:postIndex]...) - if m.Name == nil { - m.Name = []byte{} - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Password", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuth - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthAuth - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthAuth - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Password = append(m.Password[:0], dAtA[iNdEx:postIndex]...) - if m.Password == nil { - m.Password = []byte{} - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuth - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthAuth - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAuth - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuth - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthAuth - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthAuth - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Options == nil { - m.Options = &UserAddOptions{} - } - if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAuth(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAuth - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF +func (x *Role) GetKeyPermission() []*Permission { + if x != nil { + return x.KeyPermission } return nil } -func (m *Permission) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuth - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Permission: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Permission: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PermType", wireType) - } - m.PermType = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuth - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.PermType |= Permission_Type(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuth - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthAuth - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthAuth - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) - if m.Key == nil { - m.Key = []byte{} - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RangeEnd", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuth - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthAuth - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthAuth - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.RangeEnd = append(m.RangeEnd[:0], dAtA[iNdEx:postIndex]...) - if m.RangeEnd == nil { - m.RangeEnd = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAuth(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAuth - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Role) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuth - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Role: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Role: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuth - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthAuth - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthAuth - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = append(m.Name[:0], dAtA[iNdEx:postIndex]...) - if m.Name == nil { - m.Name = []byte{} - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field KeyPermission", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAuth - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthAuth - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthAuth - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.KeyPermission = append(m.KeyPermission, &Permission{}) - if err := m.KeyPermission[len(m.KeyPermission)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAuth(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAuth - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipAuth(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowAuth - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowAuth - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowAuth - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthAuth - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupAuth - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthAuth - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} +var File_auth_proto protoreflect.FileDescriptor + +const file_auth_proto_rawDesc = "" + + "\n" + + "\n" + + "auth.proto\x12\x06authpb\"1\n" + + "\x0eUserAddOptions\x12\x1f\n" + + "\vno_password\x18\x01 \x01(\bR\n" + + "noPassword\"~\n" + + "\x04User\x12\x12\n" + + "\x04name\x18\x01 \x01(\fR\x04name\x12\x1a\n" + + "\bpassword\x18\x02 \x01(\fR\bpassword\x12\x14\n" + + "\x05roles\x18\x03 \x03(\tR\x05roles\x120\n" + + "\aoptions\x18\x04 \x01(\v2\x16.authpb.UserAddOptionsR\aoptions\"\x9c\x01\n" + + "\n" + + "Permission\x123\n" + + "\bpermType\x18\x01 \x01(\x0e2\x17.authpb.Permission.TypeR\bpermType\x12\x10\n" + + "\x03key\x18\x02 \x01(\fR\x03key\x12\x1b\n" + + "\trange_end\x18\x03 \x01(\fR\brangeEnd\"*\n" + + "\x04Type\x12\b\n" + + "\x04READ\x10\x00\x12\t\n" + + "\x05WRITE\x10\x01\x12\r\n" + + "\tREADWRITE\x10\x02\"T\n" + + "\x04Role\x12\x12\n" + + "\x04name\x18\x01 \x01(\fR\x04name\x128\n" + + "\rkeyPermission\x18\x02 \x03(\v2\x12.authpb.PermissionR\rkeyPermissionB\x1fZ\x1dgo.etcd.io/etcd/api/v3/authpbb\x06proto3" var ( - ErrInvalidLengthAuth = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowAuth = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupAuth = fmt.Errorf("proto: unexpected end of group") + file_auth_proto_rawDescOnce sync.Once + file_auth_proto_rawDescData []byte ) + +func file_auth_proto_rawDescGZIP() []byte { + file_auth_proto_rawDescOnce.Do(func() { + file_auth_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_auth_proto_rawDesc), len(file_auth_proto_rawDesc))) + }) + return file_auth_proto_rawDescData +} + +var file_auth_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_auth_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_auth_proto_goTypes = []any{ + (Permission_Type)(0), // 0: authpb.Permission.Type + (*UserAddOptions)(nil), // 1: authpb.UserAddOptions + (*User)(nil), // 2: authpb.User + (*Permission)(nil), // 3: authpb.Permission + (*Role)(nil), // 4: authpb.Role +} +var file_auth_proto_depIdxs = []int32{ + 1, // 0: authpb.User.options:type_name -> authpb.UserAddOptions + 0, // 1: authpb.Permission.permType:type_name -> authpb.Permission.Type + 3, // 2: authpb.Role.keyPermission:type_name -> authpb.Permission + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_auth_proto_init() } +func file_auth_proto_init() { + if File_auth_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_auth_proto_rawDesc), len(file_auth_proto_rawDesc)), + NumEnums: 1, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_auth_proto_goTypes, + DependencyIndexes: file_auth_proto_depIdxs, + EnumInfos: file_auth_proto_enumTypes, + MessageInfos: file_auth_proto_msgTypes, + }.Build() + File_auth_proto = out.File + file_auth_proto_goTypes = nil + file_auth_proto_depIdxs = nil +} diff --git a/api/etcdserverpb/etcdserver.pb.go b/api/etcdserverpb/etcdserver.pb.go index 442814b3d774..14dd9d114c15 100644 --- a/api/etcdserverpb/etcdserver.pb.go +++ b/api/etcdserverpb/etcdserver.pb.go @@ -1,346 +1,132 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v3.20.3 // source: etcdserver.proto package etcdserverpb import ( - fmt "fmt" - io "io" - math "math" - math_bits "math/bits" + reflect "reflect" + sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type Metadata struct { - NodeID *uint64 `protobuf:"varint,1,opt,name=NodeID" json:"NodeID,omitempty"` - ClusterID *uint64 `protobuf:"varint,2,opt,name=ClusterID" json:"ClusterID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + NodeID *uint64 `protobuf:"varint,1,opt,name=NodeID" json:"NodeID,omitempty"` + ClusterID *uint64 `protobuf:"varint,2,opt,name=ClusterID" json:"ClusterID,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *Metadata) Reset() { *m = Metadata{} } -func (m *Metadata) String() string { return proto.CompactTextString(m) } -func (*Metadata) ProtoMessage() {} -func (*Metadata) Descriptor() ([]byte, []int) { - return fileDescriptor_09ffbeb3bebbce7e, []int{0} +func (x *Metadata) Reset() { + *x = Metadata{} + mi := &file_etcdserver_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *Metadata) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) + +func (x *Metadata) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Metadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Metadata.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err + +func (*Metadata) ProtoMessage() {} + +func (x *Metadata) ProtoReflect() protoreflect.Message { + mi := &file_etcdserver_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *Metadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_Metadata.Merge(m, src) -} -func (m *Metadata) XXX_Size() int { - return m.Size() -} -func (m *Metadata) XXX_DiscardUnknown() { - xxx_messageInfo_Metadata.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_Metadata proto.InternalMessageInfo +// Deprecated: Use Metadata.ProtoReflect.Descriptor instead. +func (*Metadata) Descriptor() ([]byte, []int) { + return file_etcdserver_proto_rawDescGZIP(), []int{0} +} -func (m *Metadata) GetNodeID() uint64 { - if m != nil && m.NodeID != nil { - return *m.NodeID +func (x *Metadata) GetNodeID() uint64 { + if x != nil && x.NodeID != nil { + return *x.NodeID } return 0 } -func (m *Metadata) GetClusterID() uint64 { - if m != nil && m.ClusterID != nil { - return *m.ClusterID +func (x *Metadata) GetClusterID() uint64 { + if x != nil && x.ClusterID != nil { + return *x.ClusterID } return 0 } -func init() { - proto.RegisterType((*Metadata)(nil), "etcdserverpb.Metadata") -} +var File_etcdserver_proto protoreflect.FileDescriptor -func init() { proto.RegisterFile("etcdserver.proto", fileDescriptor_09ffbeb3bebbce7e) } +const file_etcdserver_proto_rawDesc = "" + + "\n" + + "\x10etcdserver.proto\x12\fetcdserverpb\"@\n" + + "\bMetadata\x12\x16\n" + + "\x06NodeID\x18\x01 \x01(\x04R\x06NodeID\x12\x1c\n" + + "\tClusterID\x18\x02 \x01(\x04R\tClusterIDB%Z#go.etcd.io/etcd/api/v3/etcdserverpb" -var fileDescriptor_09ffbeb3bebbce7e = []byte{ - // 139 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x48, 0x2d, 0x49, 0x4e, - 0x29, 0x4e, 0x2d, 0x2a, 0x4b, 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x41, 0x88, - 0x14, 0x24, 0x29, 0x39, 0x70, 0x71, 0xf8, 0xa6, 0x96, 0x24, 0xa6, 0x24, 0x96, 0x24, 0x0a, 0x89, - 0x71, 0xb1, 0xf9, 0xe5, 0xa7, 0xa4, 0x7a, 0xba, 0x48, 0x30, 0x2a, 0x30, 0x6a, 0xb0, 0x04, 0x41, - 0x79, 0x42, 0x32, 0x5c, 0x9c, 0xce, 0x39, 0xa5, 0xc5, 0x25, 0xa9, 0x45, 0x9e, 0x2e, 0x12, 0x4c, - 0x60, 0x29, 0x84, 0x80, 0x93, 0xe9, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, - 0x24, 0xc7, 0x38, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x72, 0x7a, 0xbe, 0x1e, 0xc8, 0x12, 0xbd, 0xcc, - 0x7c, 0x7d, 0x10, 0xad, 0x9f, 0x58, 0x90, 0xa9, 0x5f, 0x66, 0xac, 0x8f, 0x6c, 0x31, 0x20, 0x00, - 0x00, 0xff, 0xff, 0x5c, 0x60, 0x56, 0x96, 0x99, 0x00, 0x00, 0x00, -} - -func (m *Metadata) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Metadata) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Metadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.ClusterID != nil { - i = encodeVarintEtcdserver(dAtA, i, uint64(*m.ClusterID)) - i-- - dAtA[i] = 0x10 - } - if m.NodeID != nil { - i = encodeVarintEtcdserver(dAtA, i, uint64(*m.NodeID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} +var ( + file_etcdserver_proto_rawDescOnce sync.Once + file_etcdserver_proto_rawDescData []byte +) -func encodeVarintEtcdserver(dAtA []byte, offset int, v uint64) int { - offset -= sovEtcdserver(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Metadata) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.NodeID != nil { - n += 1 + sovEtcdserver(uint64(*m.NodeID)) - } - if m.ClusterID != nil { - n += 1 + sovEtcdserver(uint64(*m.ClusterID)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +func file_etcdserver_proto_rawDescGZIP() []byte { + file_etcdserver_proto_rawDescOnce.Do(func() { + file_etcdserver_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_etcdserver_proto_rawDesc), len(file_etcdserver_proto_rawDesc))) + }) + return file_etcdserver_proto_rawDescData } -func sovEtcdserver(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 +var file_etcdserver_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_etcdserver_proto_goTypes = []any{ + (*Metadata)(nil), // 0: etcdserverpb.Metadata } -func sozEtcdserver(x uint64) (n int) { - return sovEtcdserver(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +var file_etcdserver_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name } -func (m *Metadata) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Metadata: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Metadata: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType) - } - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.NodeID = &v - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ClusterID", wireType) - } - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.ClusterID = &v - default: - iNdEx = preIndex - skippy, err := skipEtcdserver(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthEtcdserver - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF +func init() { file_etcdserver_proto_init() } +func file_etcdserver_proto_init() { + if File_etcdserver_proto != nil { + return } - return nil + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_etcdserver_proto_rawDesc), len(file_etcdserver_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_etcdserver_proto_goTypes, + DependencyIndexes: file_etcdserver_proto_depIdxs, + MessageInfos: file_etcdserver_proto_msgTypes, + }.Build() + File_etcdserver_proto = out.File + file_etcdserver_proto_goTypes = nil + file_etcdserver_proto_depIdxs = nil } -func skipEtcdserver(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowEtcdserver - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthEtcdserver - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupEtcdserver - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthEtcdserver - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthEtcdserver = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowEtcdserver = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupEtcdserver = fmt.Errorf("proto: unexpected end of group") -) diff --git a/api/etcdserverpb/gw/rpc.pb.gw.go b/api/etcdserverpb/gw/rpc.pb.gw.go index 8eb910b6efd1..8bad7f150c90 100644 --- a/api/etcdserverpb/gw/rpc.pb.gw.go +++ b/api/etcdserverpb/gw/rpc.pb.gw.go @@ -9,8 +9,6 @@ It translates gRPC into RESTful JSON APIs. package gw import ( - protov1 "github.com/golang/protobuf/proto" - "context" "errors" "go.etcd.io/etcd/api/v3/etcdserverpb" @@ -43,14 +41,14 @@ func request_KV_Range_0(ctx context.Context, marshaler runtime.Marshaler, client protoReq etcdserverpb.RangeRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Range(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_KV_Range_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.KVServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -58,11 +56,11 @@ func local_request_KV_Range_0(ctx context.Context, marshaler runtime.Marshaler, protoReq etcdserverpb.RangeRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Range(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_KV_Put_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.KVClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -70,14 +68,14 @@ func request_KV_Put_0(ctx context.Context, marshaler runtime.Marshaler, client e protoReq etcdserverpb.PutRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Put(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_KV_Put_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.KVServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -85,11 +83,11 @@ func local_request_KV_Put_0(ctx context.Context, marshaler runtime.Marshaler, se protoReq etcdserverpb.PutRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Put(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_KV_DeleteRange_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.KVClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -97,14 +95,14 @@ func request_KV_DeleteRange_0(ctx context.Context, marshaler runtime.Marshaler, protoReq etcdserverpb.DeleteRangeRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.DeleteRange(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_KV_DeleteRange_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.KVServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -112,11 +110,11 @@ func local_request_KV_DeleteRange_0(ctx context.Context, marshaler runtime.Marsh protoReq etcdserverpb.DeleteRangeRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.DeleteRange(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_KV_Txn_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.KVClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -124,14 +122,14 @@ func request_KV_Txn_0(ctx context.Context, marshaler runtime.Marshaler, client e protoReq etcdserverpb.TxnRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Txn(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_KV_Txn_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.KVServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -139,11 +137,11 @@ func local_request_KV_Txn_0(ctx context.Context, marshaler runtime.Marshaler, se protoReq etcdserverpb.TxnRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Txn(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_KV_Compact_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.KVClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -151,14 +149,14 @@ func request_KV_Compact_0(ctx context.Context, marshaler runtime.Marshaler, clie protoReq etcdserverpb.CompactionRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Compact(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_KV_Compact_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.KVServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -166,11 +164,11 @@ func local_request_KV_Compact_0(ctx context.Context, marshaler runtime.Marshaler protoReq etcdserverpb.CompactionRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Compact(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Watch_Watch_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.WatchClient, req *http.Request, pathParams map[string]string) (etcdserverpb.Watch_WatchClient, runtime.ServerMetadata, error) { @@ -183,7 +181,7 @@ func request_Watch_Watch_0(ctx context.Context, marshaler runtime.Marshaler, cli dec := marshaler.NewDecoder(req.Body) handleSend := func() error { var protoReq etcdserverpb.WatchRequest - err := dec.Decode(protov1.MessageV2(&protoReq)) + err := dec.Decode(&protoReq) if errors.Is(err, io.EOF) { return err } @@ -221,14 +219,14 @@ func request_Lease_LeaseGrant_0(ctx context.Context, marshaler runtime.Marshaler protoReq etcdserverpb.LeaseGrantRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.LeaseGrant(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Lease_LeaseGrant_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.LeaseServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -236,11 +234,11 @@ func local_request_Lease_LeaseGrant_0(ctx context.Context, marshaler runtime.Mar protoReq etcdserverpb.LeaseGrantRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.LeaseGrant(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Lease_LeaseRevoke_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.LeaseClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -248,14 +246,14 @@ func request_Lease_LeaseRevoke_0(ctx context.Context, marshaler runtime.Marshale protoReq etcdserverpb.LeaseRevokeRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.LeaseRevoke(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Lease_LeaseRevoke_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.LeaseServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -263,11 +261,11 @@ func local_request_Lease_LeaseRevoke_0(ctx context.Context, marshaler runtime.Ma protoReq etcdserverpb.LeaseRevokeRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.LeaseRevoke(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Lease_LeaseRevoke_1(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.LeaseClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -275,14 +273,14 @@ func request_Lease_LeaseRevoke_1(ctx context.Context, marshaler runtime.Marshale protoReq etcdserverpb.LeaseRevokeRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.LeaseRevoke(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Lease_LeaseRevoke_1(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.LeaseServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -290,11 +288,11 @@ func local_request_Lease_LeaseRevoke_1(ctx context.Context, marshaler runtime.Ma protoReq etcdserverpb.LeaseRevokeRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.LeaseRevoke(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Lease_LeaseKeepAlive_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.LeaseClient, req *http.Request, pathParams map[string]string) (etcdserverpb.Lease_LeaseKeepAliveClient, runtime.ServerMetadata, error) { @@ -307,7 +305,7 @@ func request_Lease_LeaseKeepAlive_0(ctx context.Context, marshaler runtime.Marsh dec := marshaler.NewDecoder(req.Body) handleSend := func() error { var protoReq etcdserverpb.LeaseKeepAliveRequest - err := dec.Decode(protov1.MessageV2(&protoReq)) + err := dec.Decode(&protoReq) if errors.Is(err, io.EOF) { return err } @@ -345,14 +343,14 @@ func request_Lease_LeaseTimeToLive_0(ctx context.Context, marshaler runtime.Mars protoReq etcdserverpb.LeaseTimeToLiveRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.LeaseTimeToLive(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Lease_LeaseTimeToLive_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.LeaseServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -360,11 +358,11 @@ func local_request_Lease_LeaseTimeToLive_0(ctx context.Context, marshaler runtim protoReq etcdserverpb.LeaseTimeToLiveRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.LeaseTimeToLive(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Lease_LeaseTimeToLive_1(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.LeaseClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -372,14 +370,14 @@ func request_Lease_LeaseTimeToLive_1(ctx context.Context, marshaler runtime.Mars protoReq etcdserverpb.LeaseTimeToLiveRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.LeaseTimeToLive(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Lease_LeaseTimeToLive_1(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.LeaseServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -387,11 +385,11 @@ func local_request_Lease_LeaseTimeToLive_1(ctx context.Context, marshaler runtim protoReq etcdserverpb.LeaseTimeToLiveRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.LeaseTimeToLive(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Lease_LeaseLeases_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.LeaseClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -399,14 +397,14 @@ func request_Lease_LeaseLeases_0(ctx context.Context, marshaler runtime.Marshale protoReq etcdserverpb.LeaseLeasesRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.LeaseLeases(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Lease_LeaseLeases_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.LeaseServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -414,11 +412,11 @@ func local_request_Lease_LeaseLeases_0(ctx context.Context, marshaler runtime.Ma protoReq etcdserverpb.LeaseLeasesRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.LeaseLeases(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Lease_LeaseLeases_1(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.LeaseClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -426,14 +424,14 @@ func request_Lease_LeaseLeases_1(ctx context.Context, marshaler runtime.Marshale protoReq etcdserverpb.LeaseLeasesRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.LeaseLeases(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Lease_LeaseLeases_1(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.LeaseServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -441,11 +439,11 @@ func local_request_Lease_LeaseLeases_1(ctx context.Context, marshaler runtime.Ma protoReq etcdserverpb.LeaseLeasesRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.LeaseLeases(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Cluster_MemberAdd_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -453,14 +451,14 @@ func request_Cluster_MemberAdd_0(ctx context.Context, marshaler runtime.Marshale protoReq etcdserverpb.MemberAddRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.MemberAdd(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Cluster_MemberAdd_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.ClusterServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -468,11 +466,11 @@ func local_request_Cluster_MemberAdd_0(ctx context.Context, marshaler runtime.Ma protoReq etcdserverpb.MemberAddRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.MemberAdd(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Cluster_MemberRemove_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -480,14 +478,14 @@ func request_Cluster_MemberRemove_0(ctx context.Context, marshaler runtime.Marsh protoReq etcdserverpb.MemberRemoveRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.MemberRemove(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Cluster_MemberRemove_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.ClusterServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -495,11 +493,11 @@ func local_request_Cluster_MemberRemove_0(ctx context.Context, marshaler runtime protoReq etcdserverpb.MemberRemoveRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.MemberRemove(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Cluster_MemberUpdate_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -507,14 +505,14 @@ func request_Cluster_MemberUpdate_0(ctx context.Context, marshaler runtime.Marsh protoReq etcdserverpb.MemberUpdateRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.MemberUpdate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Cluster_MemberUpdate_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.ClusterServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -522,11 +520,11 @@ func local_request_Cluster_MemberUpdate_0(ctx context.Context, marshaler runtime protoReq etcdserverpb.MemberUpdateRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.MemberUpdate(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Cluster_MemberList_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -534,14 +532,14 @@ func request_Cluster_MemberList_0(ctx context.Context, marshaler runtime.Marshal protoReq etcdserverpb.MemberListRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.MemberList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Cluster_MemberList_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.ClusterServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -549,11 +547,11 @@ func local_request_Cluster_MemberList_0(ctx context.Context, marshaler runtime.M protoReq etcdserverpb.MemberListRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.MemberList(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Cluster_MemberPromote_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -561,14 +559,14 @@ func request_Cluster_MemberPromote_0(ctx context.Context, marshaler runtime.Mars protoReq etcdserverpb.MemberPromoteRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.MemberPromote(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Cluster_MemberPromote_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.ClusterServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -576,11 +574,11 @@ func local_request_Cluster_MemberPromote_0(ctx context.Context, marshaler runtim protoReq etcdserverpb.MemberPromoteRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.MemberPromote(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Maintenance_Alarm_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.MaintenanceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -588,14 +586,14 @@ func request_Maintenance_Alarm_0(ctx context.Context, marshaler runtime.Marshale protoReq etcdserverpb.AlarmRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Alarm(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Maintenance_Alarm_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.MaintenanceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -603,11 +601,11 @@ func local_request_Maintenance_Alarm_0(ctx context.Context, marshaler runtime.Ma protoReq etcdserverpb.AlarmRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Alarm(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Maintenance_Status_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.MaintenanceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -615,14 +613,14 @@ func request_Maintenance_Status_0(ctx context.Context, marshaler runtime.Marshal protoReq etcdserverpb.StatusRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Status(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Maintenance_Status_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.MaintenanceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -630,11 +628,11 @@ func local_request_Maintenance_Status_0(ctx context.Context, marshaler runtime.M protoReq etcdserverpb.StatusRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Status(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Maintenance_Defragment_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.MaintenanceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -642,14 +640,14 @@ func request_Maintenance_Defragment_0(ctx context.Context, marshaler runtime.Mar protoReq etcdserverpb.DefragmentRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Defragment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Maintenance_Defragment_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.MaintenanceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -657,11 +655,11 @@ func local_request_Maintenance_Defragment_0(ctx context.Context, marshaler runti protoReq etcdserverpb.DefragmentRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Defragment(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Maintenance_Hash_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.MaintenanceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -669,14 +667,14 @@ func request_Maintenance_Hash_0(ctx context.Context, marshaler runtime.Marshaler protoReq etcdserverpb.HashRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Hash(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Maintenance_Hash_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.MaintenanceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -684,11 +682,11 @@ func local_request_Maintenance_Hash_0(ctx context.Context, marshaler runtime.Mar protoReq etcdserverpb.HashRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Hash(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Maintenance_HashKV_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.MaintenanceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -696,14 +694,14 @@ func request_Maintenance_HashKV_0(ctx context.Context, marshaler runtime.Marshal protoReq etcdserverpb.HashKVRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.HashKV(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Maintenance_HashKV_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.MaintenanceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -711,11 +709,11 @@ func local_request_Maintenance_HashKV_0(ctx context.Context, marshaler runtime.M protoReq etcdserverpb.HashKVRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.HashKV(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Maintenance_Snapshot_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.MaintenanceClient, req *http.Request, pathParams map[string]string) (etcdserverpb.Maintenance_SnapshotClient, runtime.ServerMetadata, error) { @@ -723,7 +721,7 @@ func request_Maintenance_Snapshot_0(ctx context.Context, marshaler runtime.Marsh protoReq etcdserverpb.SnapshotRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { @@ -746,14 +744,14 @@ func request_Maintenance_MoveLeader_0(ctx context.Context, marshaler runtime.Mar protoReq etcdserverpb.MoveLeaderRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.MoveLeader(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Maintenance_MoveLeader_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.MaintenanceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -761,11 +759,11 @@ func local_request_Maintenance_MoveLeader_0(ctx context.Context, marshaler runti protoReq etcdserverpb.MoveLeaderRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.MoveLeader(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Maintenance_Downgrade_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.MaintenanceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -773,14 +771,14 @@ func request_Maintenance_Downgrade_0(ctx context.Context, marshaler runtime.Mars protoReq etcdserverpb.DowngradeRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Downgrade(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Maintenance_Downgrade_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.MaintenanceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -788,11 +786,11 @@ func local_request_Maintenance_Downgrade_0(ctx context.Context, marshaler runtim protoReq etcdserverpb.DowngradeRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Downgrade(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_AuthEnable_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -800,14 +798,14 @@ func request_Auth_AuthEnable_0(ctx context.Context, marshaler runtime.Marshaler, protoReq etcdserverpb.AuthEnableRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.AuthEnable(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_AuthEnable_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -815,11 +813,11 @@ func local_request_Auth_AuthEnable_0(ctx context.Context, marshaler runtime.Mars protoReq etcdserverpb.AuthEnableRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.AuthEnable(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_AuthDisable_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -827,14 +825,14 @@ func request_Auth_AuthDisable_0(ctx context.Context, marshaler runtime.Marshaler protoReq etcdserverpb.AuthDisableRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.AuthDisable(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_AuthDisable_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -842,11 +840,11 @@ func local_request_Auth_AuthDisable_0(ctx context.Context, marshaler runtime.Mar protoReq etcdserverpb.AuthDisableRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.AuthDisable(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_AuthStatus_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -854,14 +852,14 @@ func request_Auth_AuthStatus_0(ctx context.Context, marshaler runtime.Marshaler, protoReq etcdserverpb.AuthStatusRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.AuthStatus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_AuthStatus_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -869,11 +867,11 @@ func local_request_Auth_AuthStatus_0(ctx context.Context, marshaler runtime.Mars protoReq etcdserverpb.AuthStatusRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.AuthStatus(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_Authenticate_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -881,14 +879,14 @@ func request_Auth_Authenticate_0(ctx context.Context, marshaler runtime.Marshale protoReq etcdserverpb.AuthenticateRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Authenticate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_Authenticate_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -896,11 +894,11 @@ func local_request_Auth_Authenticate_0(ctx context.Context, marshaler runtime.Ma protoReq etcdserverpb.AuthenticateRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Authenticate(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_UserAdd_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -908,14 +906,14 @@ func request_Auth_UserAdd_0(ctx context.Context, marshaler runtime.Marshaler, cl protoReq etcdserverpb.AuthUserAddRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.UserAdd(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_UserAdd_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -923,11 +921,11 @@ func local_request_Auth_UserAdd_0(ctx context.Context, marshaler runtime.Marshal protoReq etcdserverpb.AuthUserAddRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.UserAdd(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_UserGet_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -935,14 +933,14 @@ func request_Auth_UserGet_0(ctx context.Context, marshaler runtime.Marshaler, cl protoReq etcdserverpb.AuthUserGetRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.UserGet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_UserGet_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -950,11 +948,11 @@ func local_request_Auth_UserGet_0(ctx context.Context, marshaler runtime.Marshal protoReq etcdserverpb.AuthUserGetRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.UserGet(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_UserList_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -962,14 +960,14 @@ func request_Auth_UserList_0(ctx context.Context, marshaler runtime.Marshaler, c protoReq etcdserverpb.AuthUserListRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.UserList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_UserList_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -977,11 +975,11 @@ func local_request_Auth_UserList_0(ctx context.Context, marshaler runtime.Marsha protoReq etcdserverpb.AuthUserListRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.UserList(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_UserDelete_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -989,14 +987,14 @@ func request_Auth_UserDelete_0(ctx context.Context, marshaler runtime.Marshaler, protoReq etcdserverpb.AuthUserDeleteRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.UserDelete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_UserDelete_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1004,11 +1002,11 @@ func local_request_Auth_UserDelete_0(ctx context.Context, marshaler runtime.Mars protoReq etcdserverpb.AuthUserDeleteRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.UserDelete(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_UserChangePassword_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1016,14 +1014,14 @@ func request_Auth_UserChangePassword_0(ctx context.Context, marshaler runtime.Ma protoReq etcdserverpb.AuthUserChangePasswordRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.UserChangePassword(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_UserChangePassword_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1031,11 +1029,11 @@ func local_request_Auth_UserChangePassword_0(ctx context.Context, marshaler runt protoReq etcdserverpb.AuthUserChangePasswordRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.UserChangePassword(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_UserGrantRole_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1043,14 +1041,14 @@ func request_Auth_UserGrantRole_0(ctx context.Context, marshaler runtime.Marshal protoReq etcdserverpb.AuthUserGrantRoleRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.UserGrantRole(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_UserGrantRole_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1058,11 +1056,11 @@ func local_request_Auth_UserGrantRole_0(ctx context.Context, marshaler runtime.M protoReq etcdserverpb.AuthUserGrantRoleRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.UserGrantRole(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_UserRevokeRole_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1070,14 +1068,14 @@ func request_Auth_UserRevokeRole_0(ctx context.Context, marshaler runtime.Marsha protoReq etcdserverpb.AuthUserRevokeRoleRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.UserRevokeRole(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_UserRevokeRole_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1085,11 +1083,11 @@ func local_request_Auth_UserRevokeRole_0(ctx context.Context, marshaler runtime. protoReq etcdserverpb.AuthUserRevokeRoleRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.UserRevokeRole(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_RoleAdd_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1097,14 +1095,14 @@ func request_Auth_RoleAdd_0(ctx context.Context, marshaler runtime.Marshaler, cl protoReq etcdserverpb.AuthRoleAddRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.RoleAdd(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_RoleAdd_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1112,11 +1110,11 @@ func local_request_Auth_RoleAdd_0(ctx context.Context, marshaler runtime.Marshal protoReq etcdserverpb.AuthRoleAddRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.RoleAdd(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_RoleGet_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1124,14 +1122,14 @@ func request_Auth_RoleGet_0(ctx context.Context, marshaler runtime.Marshaler, cl protoReq etcdserverpb.AuthRoleGetRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.RoleGet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_RoleGet_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1139,11 +1137,11 @@ func local_request_Auth_RoleGet_0(ctx context.Context, marshaler runtime.Marshal protoReq etcdserverpb.AuthRoleGetRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.RoleGet(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_RoleList_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1151,14 +1149,14 @@ func request_Auth_RoleList_0(ctx context.Context, marshaler runtime.Marshaler, c protoReq etcdserverpb.AuthRoleListRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.RoleList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_RoleList_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1166,11 +1164,11 @@ func local_request_Auth_RoleList_0(ctx context.Context, marshaler runtime.Marsha protoReq etcdserverpb.AuthRoleListRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.RoleList(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_RoleDelete_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1178,14 +1176,14 @@ func request_Auth_RoleDelete_0(ctx context.Context, marshaler runtime.Marshaler, protoReq etcdserverpb.AuthRoleDeleteRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.RoleDelete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_RoleDelete_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1193,11 +1191,11 @@ func local_request_Auth_RoleDelete_0(ctx context.Context, marshaler runtime.Mars protoReq etcdserverpb.AuthRoleDeleteRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.RoleDelete(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_RoleGrantPermission_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1205,14 +1203,14 @@ func request_Auth_RoleGrantPermission_0(ctx context.Context, marshaler runtime.M protoReq etcdserverpb.AuthRoleGrantPermissionRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.RoleGrantPermission(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_RoleGrantPermission_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1220,11 +1218,11 @@ func local_request_Auth_RoleGrantPermission_0(ctx context.Context, marshaler run protoReq etcdserverpb.AuthRoleGrantPermissionRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.RoleGrantPermission(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Auth_RoleRevokePermission_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1232,14 +1230,14 @@ func request_Auth_RoleRevokePermission_0(ctx context.Context, marshaler runtime. protoReq etcdserverpb.AuthRoleRevokePermissionRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.RoleRevokePermission(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Auth_RoleRevokePermission_0(ctx context.Context, marshaler runtime.Marshaler, server etcdserverpb.AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1247,11 +1245,11 @@ func local_request_Auth_RoleRevokePermission_0(ctx context.Context, marshaler ru protoReq etcdserverpb.AuthRoleRevokePermissionRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.RoleRevokePermission(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } // etcdserverpb.RegisterKVHandlerServer registers the http handlers for service KV to "mux". @@ -2345,10 +2343,7 @@ func RegisterWatchHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Watch_Watch_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { - m1, err := resp.Recv() - return protov1.MessageV2(m1), err - }, mux.GetForwardResponseOptions()...) + forward_Watch_Watch_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) }) return nil } @@ -2463,10 +2458,7 @@ func RegisterLeaseHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Lease_LeaseKeepAlive_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { - m1, err := resp.Recv() - return protov1.MessageV2(m1), err - }, mux.GetForwardResponseOptions()...) + forward_Lease_LeaseKeepAlive_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) }) mux.Handle(http.MethodPost, pattern_Lease_LeaseTimeToLive_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -2837,10 +2829,7 @@ func RegisterMaintenanceHandlerClient(ctx context.Context, mux *runtime.ServeMux runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Maintenance_Snapshot_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { - m1, err := resp.Recv() - return protov1.MessageV2(m1), err - }, mux.GetForwardResponseOptions()...) + forward_Maintenance_Snapshot_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) }) mux.Handle(http.MethodPost, pattern_Maintenance_MoveLeader_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/etcdserverpb/raft_internal.pb.go b/api/etcdserverpb/raft_internal.pb.go index 3c7d28d9e1fd..812183a768b2 100644 --- a/api/etcdserverpb/raft_internal.pb.go +++ b/api/etcdserverpb/raft_internal.pb.go @@ -1,91 +1,87 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v3.20.3 // source: raft_internal.proto package etcdserverpb import ( - fmt "fmt" - io "io" - math "math" - math_bits "math/bits" + reflect "reflect" + sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" membershippb "go.etcd.io/etcd/api/v3/membershippb" _ "go.etcd.io/etcd/api/v3/versionpb" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type RequestHeader struct { - ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` // username is a username that is associated with an auth token of gRPC connection Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` // auth_revision is a revision number of auth.authStore. It is not related to mvcc - AuthRevision uint64 `protobuf:"varint,3,opt,name=auth_revision,json=authRevision,proto3" json:"auth_revision,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + AuthRevision uint64 `protobuf:"varint,3,opt,name=auth_revision,json=authRevision,proto3" json:"auth_revision,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *RequestHeader) Reset() { *m = RequestHeader{} } -func (m *RequestHeader) String() string { return proto.CompactTextString(m) } -func (*RequestHeader) ProtoMessage() {} -func (*RequestHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_b4c9a9be0cfca103, []int{0} +func (x *RequestHeader) Reset() { + *x = RequestHeader{} + mi := &file_raft_internal_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *RequestHeader) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) + +func (x *RequestHeader) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RequestHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RequestHeader.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err + +func (*RequestHeader) ProtoMessage() {} + +func (x *RequestHeader) ProtoReflect() protoreflect.Message { + mi := &file_raft_internal_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *RequestHeader) XXX_Merge(src proto.Message) { - xxx_messageInfo_RequestHeader.Merge(m, src) -} -func (m *RequestHeader) XXX_Size() int { - return m.Size() -} -func (m *RequestHeader) XXX_DiscardUnknown() { - xxx_messageInfo_RequestHeader.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_RequestHeader proto.InternalMessageInfo +// Deprecated: Use RequestHeader.ProtoReflect.Descriptor instead. +func (*RequestHeader) Descriptor() ([]byte, []int) { + return file_raft_internal_proto_rawDescGZIP(), []int{0} +} -func (m *RequestHeader) GetID() uint64 { - if m != nil { - return m.ID +func (x *RequestHeader) GetID() uint64 { + if x != nil { + return x.ID } return 0 } -func (m *RequestHeader) GetUsername() string { - if m != nil { - return m.Username +func (x *RequestHeader) GetUsername() string { + if x != nil { + return x.Username } return "" } -func (m *RequestHeader) GetAuthRevision() uint64 { - if m != nil { - return m.AuthRevision +func (x *RequestHeader) GetAuthRevision() uint64 { + if x != nil { + return x.AuthRevision } return 0 } @@ -93,6 +89,7 @@ func (m *RequestHeader) GetAuthRevision() uint64 { // An InternalRaftRequest is the union of all requests which can be // sent via raft. type InternalRaftRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` Header *RequestHeader `protobuf:"bytes,100,opt,name=header,proto3" json:"header,omitempty"` ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` Range *RangeRequest `protobuf:"bytes,3,opt,name=range,proto3" json:"range,omitempty"` @@ -125,2824 +122,529 @@ type InternalRaftRequest struct { ClusterMemberAttrSet *membershippb.ClusterMemberAttrSetRequest `protobuf:"bytes,1301,opt,name=cluster_member_attr_set,json=clusterMemberAttrSet,proto3" json:"cluster_member_attr_set,omitempty"` DowngradeInfoSet *membershippb.DowngradeInfoSetRequest `protobuf:"bytes,1302,opt,name=downgrade_info_set,json=downgradeInfoSet,proto3" json:"downgrade_info_set,omitempty"` DowngradeVersionTest *DowngradeVersionTestRequest `protobuf:"bytes,9900,opt,name=downgrade_version_test,json=downgradeVersionTest,proto3" json:"downgrade_version_test,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *InternalRaftRequest) Reset() { *m = InternalRaftRequest{} } -func (m *InternalRaftRequest) String() string { return proto.CompactTextString(m) } -func (*InternalRaftRequest) ProtoMessage() {} -func (*InternalRaftRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b4c9a9be0cfca103, []int{1} +func (x *InternalRaftRequest) Reset() { + *x = InternalRaftRequest{} + mi := &file_raft_internal_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *InternalRaftRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) + +func (x *InternalRaftRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *InternalRaftRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_InternalRaftRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err + +func (*InternalRaftRequest) ProtoMessage() {} + +func (x *InternalRaftRequest) ProtoReflect() protoreflect.Message { + mi := &file_raft_internal_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *InternalRaftRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_InternalRaftRequest.Merge(m, src) -} -func (m *InternalRaftRequest) XXX_Size() int { - return m.Size() -} -func (m *InternalRaftRequest) XXX_DiscardUnknown() { - xxx_messageInfo_InternalRaftRequest.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_InternalRaftRequest proto.InternalMessageInfo +// Deprecated: Use InternalRaftRequest.ProtoReflect.Descriptor instead. +func (*InternalRaftRequest) Descriptor() ([]byte, []int) { + return file_raft_internal_proto_rawDescGZIP(), []int{1} +} -func (m *InternalRaftRequest) GetHeader() *RequestHeader { - if m != nil { - return m.Header +func (x *InternalRaftRequest) GetHeader() *RequestHeader { + if x != nil { + return x.Header } return nil } -func (m *InternalRaftRequest) GetID() uint64 { - if m != nil { - return m.ID +func (x *InternalRaftRequest) GetID() uint64 { + if x != nil { + return x.ID } return 0 } -func (m *InternalRaftRequest) GetRange() *RangeRequest { - if m != nil { - return m.Range +func (x *InternalRaftRequest) GetRange() *RangeRequest { + if x != nil { + return x.Range } return nil } -func (m *InternalRaftRequest) GetPut() *PutRequest { - if m != nil { - return m.Put +func (x *InternalRaftRequest) GetPut() *PutRequest { + if x != nil { + return x.Put } return nil } -func (m *InternalRaftRequest) GetDeleteRange() *DeleteRangeRequest { - if m != nil { - return m.DeleteRange +func (x *InternalRaftRequest) GetDeleteRange() *DeleteRangeRequest { + if x != nil { + return x.DeleteRange } return nil } -func (m *InternalRaftRequest) GetTxn() *TxnRequest { - if m != nil { - return m.Txn +func (x *InternalRaftRequest) GetTxn() *TxnRequest { + if x != nil { + return x.Txn } return nil } -func (m *InternalRaftRequest) GetCompaction() *CompactionRequest { - if m != nil { - return m.Compaction +func (x *InternalRaftRequest) GetCompaction() *CompactionRequest { + if x != nil { + return x.Compaction } return nil } -func (m *InternalRaftRequest) GetLeaseGrant() *LeaseGrantRequest { - if m != nil { - return m.LeaseGrant +func (x *InternalRaftRequest) GetLeaseGrant() *LeaseGrantRequest { + if x != nil { + return x.LeaseGrant } return nil } -func (m *InternalRaftRequest) GetLeaseRevoke() *LeaseRevokeRequest { - if m != nil { - return m.LeaseRevoke +func (x *InternalRaftRequest) GetLeaseRevoke() *LeaseRevokeRequest { + if x != nil { + return x.LeaseRevoke } return nil } -func (m *InternalRaftRequest) GetAlarm() *AlarmRequest { - if m != nil { - return m.Alarm +func (x *InternalRaftRequest) GetAlarm() *AlarmRequest { + if x != nil { + return x.Alarm } return nil } -func (m *InternalRaftRequest) GetLeaseCheckpoint() *LeaseCheckpointRequest { - if m != nil { - return m.LeaseCheckpoint +func (x *InternalRaftRequest) GetLeaseCheckpoint() *LeaseCheckpointRequest { + if x != nil { + return x.LeaseCheckpoint } return nil } -func (m *InternalRaftRequest) GetAuthEnable() *AuthEnableRequest { - if m != nil { - return m.AuthEnable +func (x *InternalRaftRequest) GetAuthEnable() *AuthEnableRequest { + if x != nil { + return x.AuthEnable } return nil } -func (m *InternalRaftRequest) GetAuthDisable() *AuthDisableRequest { - if m != nil { - return m.AuthDisable +func (x *InternalRaftRequest) GetAuthDisable() *AuthDisableRequest { + if x != nil { + return x.AuthDisable } return nil } -func (m *InternalRaftRequest) GetAuthStatus() *AuthStatusRequest { - if m != nil { - return m.AuthStatus +func (x *InternalRaftRequest) GetAuthStatus() *AuthStatusRequest { + if x != nil { + return x.AuthStatus } return nil } -func (m *InternalRaftRequest) GetAuthenticate() *InternalAuthenticateRequest { - if m != nil { - return m.Authenticate +func (x *InternalRaftRequest) GetAuthenticate() *InternalAuthenticateRequest { + if x != nil { + return x.Authenticate } return nil } -func (m *InternalRaftRequest) GetAuthUserAdd() *AuthUserAddRequest { - if m != nil { - return m.AuthUserAdd +func (x *InternalRaftRequest) GetAuthUserAdd() *AuthUserAddRequest { + if x != nil { + return x.AuthUserAdd } return nil } -func (m *InternalRaftRequest) GetAuthUserDelete() *AuthUserDeleteRequest { - if m != nil { - return m.AuthUserDelete +func (x *InternalRaftRequest) GetAuthUserDelete() *AuthUserDeleteRequest { + if x != nil { + return x.AuthUserDelete } return nil } -func (m *InternalRaftRequest) GetAuthUserGet() *AuthUserGetRequest { - if m != nil { - return m.AuthUserGet +func (x *InternalRaftRequest) GetAuthUserGet() *AuthUserGetRequest { + if x != nil { + return x.AuthUserGet } return nil } -func (m *InternalRaftRequest) GetAuthUserChangePassword() *AuthUserChangePasswordRequest { - if m != nil { - return m.AuthUserChangePassword +func (x *InternalRaftRequest) GetAuthUserChangePassword() *AuthUserChangePasswordRequest { + if x != nil { + return x.AuthUserChangePassword } return nil } -func (m *InternalRaftRequest) GetAuthUserGrantRole() *AuthUserGrantRoleRequest { - if m != nil { - return m.AuthUserGrantRole +func (x *InternalRaftRequest) GetAuthUserGrantRole() *AuthUserGrantRoleRequest { + if x != nil { + return x.AuthUserGrantRole } return nil } -func (m *InternalRaftRequest) GetAuthUserRevokeRole() *AuthUserRevokeRoleRequest { - if m != nil { - return m.AuthUserRevokeRole +func (x *InternalRaftRequest) GetAuthUserRevokeRole() *AuthUserRevokeRoleRequest { + if x != nil { + return x.AuthUserRevokeRole } return nil } -func (m *InternalRaftRequest) GetAuthUserList() *AuthUserListRequest { - if m != nil { - return m.AuthUserList +func (x *InternalRaftRequest) GetAuthUserList() *AuthUserListRequest { + if x != nil { + return x.AuthUserList } return nil } -func (m *InternalRaftRequest) GetAuthRoleList() *AuthRoleListRequest { - if m != nil { - return m.AuthRoleList +func (x *InternalRaftRequest) GetAuthRoleList() *AuthRoleListRequest { + if x != nil { + return x.AuthRoleList } return nil } -func (m *InternalRaftRequest) GetAuthRoleAdd() *AuthRoleAddRequest { - if m != nil { - return m.AuthRoleAdd +func (x *InternalRaftRequest) GetAuthRoleAdd() *AuthRoleAddRequest { + if x != nil { + return x.AuthRoleAdd } return nil } -func (m *InternalRaftRequest) GetAuthRoleDelete() *AuthRoleDeleteRequest { - if m != nil { - return m.AuthRoleDelete +func (x *InternalRaftRequest) GetAuthRoleDelete() *AuthRoleDeleteRequest { + if x != nil { + return x.AuthRoleDelete } return nil } -func (m *InternalRaftRequest) GetAuthRoleGet() *AuthRoleGetRequest { - if m != nil { - return m.AuthRoleGet +func (x *InternalRaftRequest) GetAuthRoleGet() *AuthRoleGetRequest { + if x != nil { + return x.AuthRoleGet } return nil } -func (m *InternalRaftRequest) GetAuthRoleGrantPermission() *AuthRoleGrantPermissionRequest { - if m != nil { - return m.AuthRoleGrantPermission +func (x *InternalRaftRequest) GetAuthRoleGrantPermission() *AuthRoleGrantPermissionRequest { + if x != nil { + return x.AuthRoleGrantPermission } return nil } -func (m *InternalRaftRequest) GetAuthRoleRevokePermission() *AuthRoleRevokePermissionRequest { - if m != nil { - return m.AuthRoleRevokePermission +func (x *InternalRaftRequest) GetAuthRoleRevokePermission() *AuthRoleRevokePermissionRequest { + if x != nil { + return x.AuthRoleRevokePermission } return nil } -func (m *InternalRaftRequest) GetClusterVersionSet() *membershippb.ClusterVersionSetRequest { - if m != nil { - return m.ClusterVersionSet +func (x *InternalRaftRequest) GetClusterVersionSet() *membershippb.ClusterVersionSetRequest { + if x != nil { + return x.ClusterVersionSet } return nil } -func (m *InternalRaftRequest) GetClusterMemberAttrSet() *membershippb.ClusterMemberAttrSetRequest { - if m != nil { - return m.ClusterMemberAttrSet +func (x *InternalRaftRequest) GetClusterMemberAttrSet() *membershippb.ClusterMemberAttrSetRequest { + if x != nil { + return x.ClusterMemberAttrSet } return nil } -func (m *InternalRaftRequest) GetDowngradeInfoSet() *membershippb.DowngradeInfoSetRequest { - if m != nil { - return m.DowngradeInfoSet +func (x *InternalRaftRequest) GetDowngradeInfoSet() *membershippb.DowngradeInfoSetRequest { + if x != nil { + return x.DowngradeInfoSet } return nil } -func (m *InternalRaftRequest) GetDowngradeVersionTest() *DowngradeVersionTestRequest { - if m != nil { - return m.DowngradeVersionTest +func (x *InternalRaftRequest) GetDowngradeVersionTest() *DowngradeVersionTestRequest { + if x != nil { + return x.DowngradeVersionTest } return nil } type EmptyResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *EmptyResponse) Reset() { *m = EmptyResponse{} } -func (m *EmptyResponse) String() string { return proto.CompactTextString(m) } -func (*EmptyResponse) ProtoMessage() {} -func (*EmptyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b4c9a9be0cfca103, []int{2} +func (x *EmptyResponse) Reset() { + *x = EmptyResponse{} + mi := &file_raft_internal_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *EmptyResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) + +func (x *EmptyResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EmptyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_EmptyResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err + +func (*EmptyResponse) ProtoMessage() {} + +func (x *EmptyResponse) ProtoReflect() protoreflect.Message { + mi := &file_raft_internal_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *EmptyResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_EmptyResponse.Merge(m, src) -} -func (m *EmptyResponse) XXX_Size() int { - return m.Size() -} -func (m *EmptyResponse) XXX_DiscardUnknown() { - xxx_messageInfo_EmptyResponse.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_EmptyResponse proto.InternalMessageInfo +// Deprecated: Use EmptyResponse.ProtoReflect.Descriptor instead. +func (*EmptyResponse) Descriptor() ([]byte, []int) { + return file_raft_internal_proto_rawDescGZIP(), []int{2} +} // What is the difference between AuthenticateRequest (defined in rpc.proto) and InternalAuthenticateRequest? // InternalAuthenticateRequest has a member that is filled by etcdserver and shouldn't be user-facing. // For avoiding misusage the field, we have an internal version of AuthenticateRequest. type InternalAuthenticateRequest struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` // simple_token is generated in API layer (etcdserver/v3_server.go) - SimpleToken string `protobuf:"bytes,3,opt,name=simple_token,json=simpleToken,proto3" json:"simple_token,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *InternalAuthenticateRequest) Reset() { *m = InternalAuthenticateRequest{} } -func (m *InternalAuthenticateRequest) String() string { return proto.CompactTextString(m) } -func (*InternalAuthenticateRequest) ProtoMessage() {} -func (*InternalAuthenticateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b4c9a9be0cfca103, []int{3} -} -func (m *InternalAuthenticateRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *InternalAuthenticateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_InternalAuthenticateRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *InternalAuthenticateRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_InternalAuthenticateRequest.Merge(m, src) -} -func (m *InternalAuthenticateRequest) XXX_Size() int { - return m.Size() -} -func (m *InternalAuthenticateRequest) XXX_DiscardUnknown() { - xxx_messageInfo_InternalAuthenticateRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_InternalAuthenticateRequest proto.InternalMessageInfo - -func (m *InternalAuthenticateRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *InternalAuthenticateRequest) GetPassword() string { - if m != nil { - return m.Password - } - return "" -} - -func (m *InternalAuthenticateRequest) GetSimpleToken() string { - if m != nil { - return m.SimpleToken - } - return "" -} - -func init() { - proto.RegisterType((*RequestHeader)(nil), "etcdserverpb.RequestHeader") - proto.RegisterType((*InternalRaftRequest)(nil), "etcdserverpb.InternalRaftRequest") - proto.RegisterType((*EmptyResponse)(nil), "etcdserverpb.EmptyResponse") - proto.RegisterType((*InternalAuthenticateRequest)(nil), "etcdserverpb.InternalAuthenticateRequest") -} - -func init() { proto.RegisterFile("raft_internal.proto", fileDescriptor_b4c9a9be0cfca103) } - -var fileDescriptor_b4c9a9be0cfca103 = []byte{ - // 1077 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x56, 0x4d, 0x73, 0x1b, 0x45, - 0x10, 0x45, 0xb6, 0x63, 0x5b, 0x23, 0xdb, 0x71, 0xc6, 0x26, 0x19, 0xec, 0x2a, 0xe3, 0x38, 0x10, - 0x0c, 0x04, 0x39, 0xd8, 0x84, 0x03, 0x17, 0x50, 0x2c, 0x97, 0xe3, 0x54, 0x92, 0x72, 0x6d, 0x0c, - 0x95, 0x82, 0xa2, 0x96, 0xd1, 0x6e, 0x5b, 0xda, 0x78, 0xb5, 0xbb, 0xcc, 0x8c, 0x1c, 0xe7, 0xca, - 0x91, 0x33, 0x50, 0xf9, 0x11, 0x1c, 0xf8, 0xfc, 0x0f, 0x1c, 0xf8, 0x08, 0xf0, 0x07, 0x28, 0x73, - 0xe1, 0x0e, 0xdc, 0x53, 0xf3, 0xb1, 0xb3, 0x5a, 0x69, 0xe4, 0x9b, 0xb6, 0xfb, 0xf5, 0x7b, 0x6f, - 0x66, 0xbb, 0x57, 0x8d, 0x16, 0x18, 0x3d, 0x14, 0x7e, 0x94, 0x08, 0x60, 0x09, 0x8d, 0xeb, 0x19, - 0x4b, 0x45, 0x8a, 0x67, 0x40, 0x04, 0x21, 0x07, 0x76, 0x0c, 0x2c, 0x6b, 0x2d, 0x55, 0x59, 0x16, - 0xe8, 0xc4, 0xd2, 0xaa, 0x4c, 0x6c, 0xd0, 0x2c, 0xda, 0x38, 0x06, 0xc6, 0xa3, 0x34, 0xc9, 0x5a, - 0xf9, 0x2f, 0x83, 0xb8, 0x6a, 0x11, 0x5d, 0xe8, 0xb6, 0x80, 0xf1, 0x4e, 0x94, 0x65, 0xad, 0xbe, - 0x07, 0x8d, 0x5b, 0x63, 0x68, 0xd6, 0x83, 0x4f, 0x7b, 0xc0, 0xc5, 0x2d, 0xa0, 0x21, 0x30, 0x3c, - 0x87, 0xc6, 0xf6, 0x9a, 0xa4, 0xb2, 0x5a, 0x59, 0x9f, 0xf0, 0xc6, 0xf6, 0x9a, 0x78, 0x09, 0x4d, - 0xf7, 0xb8, 0x34, 0xd5, 0x05, 0x32, 0xb6, 0x5a, 0x59, 0xaf, 0x7a, 0xf6, 0x19, 0x5f, 0x43, 0xb3, - 0xb4, 0x27, 0x3a, 0x3e, 0x83, 0xe3, 0x48, 0x6a, 0x93, 0x71, 0x59, 0x76, 0x73, 0xea, 0xf3, 0x1f, - 0xc9, 0xf8, 0x56, 0xfd, 0x4d, 0x6f, 0x46, 0x66, 0x3d, 0x93, 0x7c, 0x67, 0xea, 0x33, 0x15, 0xbe, - 0xbe, 0xf6, 0x64, 0x01, 0x2d, 0xec, 0x99, 0x93, 0x7a, 0xf4, 0x50, 0x18, 0x03, 0x78, 0x0b, 0x4d, - 0x76, 0x94, 0x09, 0x12, 0xae, 0x56, 0xd6, 0x6b, 0x9b, 0xcb, 0xf5, 0xfe, 0xf3, 0xd7, 0x4b, 0x3e, - 0x3d, 0x03, 0x1d, 0xf2, 0x7b, 0x1d, 0x9d, 0x63, 0x34, 0x69, 0x83, 0xf2, 0x52, 0xdb, 0x5c, 0x1a, - 0xe0, 0x90, 0x29, 0x43, 0xe4, 0x69, 0x20, 0x7e, 0x0d, 0x8d, 0x67, 0x3d, 0x41, 0x26, 0x14, 0x9e, - 0x94, 0xf1, 0xfb, 0xbd, 0xdc, 0x9d, 0x27, 0x41, 0x78, 0x1b, 0xcd, 0x84, 0x10, 0x83, 0x00, 0x5f, - 0x8b, 0x9c, 0x53, 0x45, 0xab, 0xe5, 0xa2, 0xa6, 0x42, 0x94, 0xa4, 0x6a, 0x61, 0x11, 0x93, 0x82, - 0xe2, 0x24, 0x21, 0x93, 0x2e, 0xc1, 0x83, 0x93, 0xc4, 0x0a, 0x8a, 0x93, 0x04, 0xbf, 0x8b, 0x50, - 0x90, 0x76, 0x33, 0x1a, 0x08, 0x79, 0xbf, 0x53, 0xaa, 0xe4, 0xc5, 0x72, 0xc9, 0xb6, 0xcd, 0xe7, - 0x95, 0x7d, 0x25, 0xf8, 0x3d, 0x54, 0x8b, 0x81, 0x72, 0xf0, 0xdb, 0x8c, 0x26, 0x82, 0x4c, 0xbb, - 0x18, 0xee, 0x48, 0xc0, 0xae, 0xcc, 0x5b, 0x86, 0xd8, 0x86, 0xe4, 0x99, 0x35, 0x03, 0x83, 0xe3, - 0xf4, 0x08, 0x48, 0xd5, 0x75, 0x66, 0x45, 0xe1, 0x29, 0x80, 0x3d, 0x73, 0x5c, 0xc4, 0xe4, 0x6b, - 0xa1, 0x31, 0x65, 0x5d, 0x82, 0x5c, 0xaf, 0xa5, 0x21, 0x53, 0xf6, 0xb5, 0x28, 0x20, 0x7e, 0x80, - 0xe6, 0xb5, 0x6c, 0xd0, 0x81, 0xe0, 0x28, 0x4b, 0xa3, 0x44, 0x90, 0x9a, 0x2a, 0x7e, 0xc9, 0x21, - 0xbd, 0x6d, 0x41, 0x86, 0x26, 0xef, 0xc2, 0xb7, 0xbc, 0xf3, 0x71, 0x19, 0x80, 0x1b, 0xa8, 0xa6, - 0xda, 0x16, 0x12, 0xda, 0x8a, 0x81, 0xfc, 0xe3, 0xbc, 0xd5, 0x46, 0x4f, 0x74, 0x76, 0x14, 0xc0, - 0xde, 0x09, 0xb5, 0x21, 0xdc, 0x44, 0xaa, 0xb7, 0xfd, 0x30, 0xe2, 0x8a, 0xe3, 0xdf, 0x29, 0xd7, - 0xa5, 0x48, 0x8e, 0xa6, 0x46, 0xd8, 0x4b, 0xa1, 0x45, 0x0c, 0xdf, 0x36, 0x46, 0xb8, 0xa0, 0xa2, - 0xc7, 0xc9, 0xff, 0x23, 0x8d, 0xdc, 0x57, 0x80, 0x81, 0x93, 0xdd, 0xd0, 0x8e, 0x74, 0x0e, 0xdf, - 0xd3, 0x8e, 0x20, 0x11, 0x51, 0x40, 0x05, 0x90, 0xff, 0x34, 0xd9, 0xab, 0x65, 0xb2, 0x7c, 0xec, - 0x1a, 0x7d, 0xd0, 0xdc, 0x5a, 0xa9, 0x1e, 0xef, 0x98, 0xd9, 0x96, 0xc3, 0xee, 0xd3, 0x30, 0x24, - 0x3f, 0x4f, 0x8f, 0x3a, 0xe2, 0xfb, 0x1c, 0x58, 0x23, 0x0c, 0x4b, 0x47, 0x34, 0x31, 0x7c, 0x0f, - 0xcd, 0x17, 0x34, 0x7a, 0x08, 0xc8, 0x2f, 0x9a, 0xe9, 0x8a, 0x9b, 0xc9, 0x4c, 0x8f, 0x21, 0x9b, - 0xa3, 0xa5, 0x70, 0xd9, 0x56, 0x1b, 0x04, 0xf9, 0xf5, 0x4c, 0x5b, 0xbb, 0x20, 0x86, 0x6c, 0xed, - 0x82, 0xc0, 0x6d, 0xf4, 0x42, 0x41, 0x13, 0x74, 0xe4, 0x58, 0xfa, 0x19, 0xe5, 0xfc, 0x51, 0xca, - 0x42, 0xf2, 0x9b, 0xa6, 0x7c, 0xdd, 0x4d, 0xb9, 0xad, 0xd0, 0xfb, 0x06, 0x9c, 0xb3, 0x5f, 0xa4, - 0xce, 0x34, 0x7e, 0x80, 0x16, 0xfb, 0xfc, 0xca, 0x79, 0xf2, 0x59, 0x1a, 0x03, 0x79, 0xaa, 0x35, - 0xae, 0x8e, 0xb0, 0xad, 0x66, 0x31, 0x2d, 0xda, 0xe6, 0x02, 0x1d, 0xcc, 0xe0, 0x8f, 0xd0, 0xf3, - 0x05, 0xb3, 0x1e, 0x4d, 0x4d, 0xfd, 0xbb, 0xa6, 0x7e, 0xc5, 0x4d, 0x6d, 0x66, 0xb4, 0x8f, 0x1b, - 0xd3, 0xa1, 0x14, 0xbe, 0x85, 0xe6, 0x0a, 0xf2, 0x38, 0xe2, 0x82, 0xfc, 0xa1, 0x59, 0x2f, 0xbb, - 0x59, 0xef, 0x44, 0x5c, 0x94, 0xfa, 0x28, 0x0f, 0x5a, 0x26, 0x69, 0x4d, 0x33, 0xfd, 0x39, 0x92, - 0x49, 0x4a, 0x0f, 0x31, 0xe5, 0x41, 0xfb, 0xea, 0x15, 0x93, 0xec, 0xc8, 0x6f, 0xaa, 0xa3, 0x5e, - 0xbd, 0xac, 0x19, 0xec, 0x48, 0x13, 0xb3, 0x1d, 0xa9, 0x68, 0x4c, 0x47, 0x7e, 0x5b, 0x1d, 0xd5, - 0x91, 0xb2, 0xca, 0xd1, 0x91, 0x45, 0xb8, 0x6c, 0x4b, 0x76, 0xe4, 0x77, 0x67, 0xda, 0x1a, 0xec, - 0x48, 0x13, 0xc3, 0x0f, 0xd1, 0x52, 0x1f, 0x8d, 0x6a, 0x94, 0x0c, 0x58, 0x37, 0xe2, 0xea, 0x8f, - 0xf5, 0x7b, 0xcd, 0x79, 0x6d, 0x04, 0xa7, 0x84, 0xef, 0x5b, 0x74, 0xce, 0x7f, 0x89, 0xba, 0xf3, - 0xb8, 0x8b, 0x96, 0x0b, 0x2d, 0xd3, 0x3a, 0x7d, 0x62, 0x3f, 0x68, 0xb1, 0x37, 0xdc, 0x62, 0xba, - 0x4b, 0x86, 0xd5, 0x08, 0x1d, 0x01, 0xc0, 0x9f, 0xa0, 0x85, 0x20, 0xee, 0x71, 0x01, 0xcc, 0x37, - 0x4b, 0x8a, 0xcf, 0x41, 0x90, 0x2f, 0x90, 0x19, 0x81, 0xfe, 0x0d, 0xa5, 0xbe, 0xad, 0x91, 0x1f, - 0x68, 0xe0, 0x7d, 0x10, 0x43, 0x5f, 0xbd, 0x0b, 0xc1, 0x20, 0x04, 0x3f, 0x44, 0x97, 0x72, 0x05, - 0x4d, 0xe6, 0x53, 0x21, 0x98, 0x52, 0xf9, 0x12, 0x99, 0xef, 0xa0, 0x4b, 0xe5, 0xae, 0x8a, 0x35, - 0x84, 0x60, 0x2e, 0xa1, 0xc5, 0xc0, 0x81, 0xc2, 0x1f, 0x23, 0x1c, 0xa6, 0x8f, 0x92, 0x36, 0xa3, - 0x21, 0xf8, 0x51, 0x72, 0x98, 0x2a, 0x99, 0xaf, 0xb4, 0xcc, 0xcb, 0x65, 0x99, 0x66, 0x0e, 0xdc, - 0x4b, 0x0e, 0x53, 0x97, 0xc4, 0x7c, 0x38, 0x80, 0xc0, 0x11, 0xba, 0x58, 0xd0, 0xe7, 0xd7, 0x25, - 0x80, 0x0b, 0xf2, 0xf5, 0x5d, 0xd7, 0x17, 0xdd, 0x4a, 0x98, 0xeb, 0x38, 0x00, 0x3e, 0x28, 0xf3, - 0xb6, 0xb7, 0x18, 0x3a, 0x50, 0x76, 0x21, 0xbb, 0x3d, 0x31, 0x3d, 0x36, 0x3f, 0xee, 0x8d, 0x1d, - 0x6f, 0xae, 0x9d, 0x47, 0xb3, 0x3b, 0xdd, 0x4c, 0x3c, 0xf6, 0x80, 0x67, 0x69, 0xc2, 0x61, 0xed, - 0x31, 0x5a, 0x3e, 0xe3, 0x3f, 0x03, 0x63, 0x34, 0xa1, 0x36, 0xc3, 0x8a, 0xda, 0x0c, 0xd5, 0x6f, - 0xb9, 0x31, 0xda, 0x4f, 0xa9, 0xd9, 0x18, 0xf3, 0x67, 0x7c, 0x19, 0xcd, 0xf0, 0xa8, 0x9b, 0xc5, - 0xe0, 0x8b, 0xf4, 0x08, 0xf4, 0xc2, 0x58, 0xf5, 0x6a, 0x3a, 0x76, 0x20, 0x43, 0xd6, 0xd5, 0xcd, - 0x1b, 0x3f, 0x9d, 0xae, 0x54, 0x9e, 0x9e, 0xae, 0x54, 0xfe, 0x3a, 0x5d, 0xa9, 0x3c, 0xf9, 0x7b, - 0xe5, 0xb9, 0x0f, 0xaf, 0xb4, 0x53, 0x75, 0xf8, 0x7a, 0x94, 0x6e, 0x14, 0x1b, 0xf0, 0xd6, 0x46, - 0xff, 0x85, 0xb4, 0x26, 0xd5, 0x62, 0xbb, 0xf5, 0x2c, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x47, 0x30, - 0xbe, 0x52, 0x0b, 0x00, 0x00, -} - -func (m *RequestHeader) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RequestHeader) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + SimpleToken string `protobuf:"bytes,3,opt,name=simple_token,json=simpleToken,proto3" json:"simple_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *RequestHeader) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.AuthRevision != 0 { - i = encodeVarintRaftInternal(dAtA, i, uint64(m.AuthRevision)) - i-- - dAtA[i] = 0x18 - } - if len(m.Username) > 0 { - i -= len(m.Username) - copy(dAtA[i:], m.Username) - i = encodeVarintRaftInternal(dAtA, i, uint64(len(m.Username))) - i-- - dAtA[i] = 0x12 - } - if m.ID != 0 { - i = encodeVarintRaftInternal(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil +func (x *InternalAuthenticateRequest) Reset() { + *x = InternalAuthenticateRequest{} + mi := &file_raft_internal_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *InternalRaftRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (x *InternalAuthenticateRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *InternalRaftRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +func (*InternalAuthenticateRequest) ProtoMessage() {} -func (m *InternalRaftRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.DowngradeVersionTest != nil { - { - size, err := m.DowngradeVersionTest.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x4 - i-- - dAtA[i] = 0xea - i-- - dAtA[i] = 0xe2 - } - if m.DowngradeInfoSet != nil { - { - size, err := m.DowngradeInfoSet.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x51 - i-- - dAtA[i] = 0xb2 - } - if m.ClusterMemberAttrSet != nil { - { - size, err := m.ClusterMemberAttrSet.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x51 - i-- - dAtA[i] = 0xaa - } - if m.ClusterVersionSet != nil { - { - size, err := m.ClusterVersionSet.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x51 - i-- - dAtA[i] = 0xa2 - } - if m.AuthRoleRevokePermission != nil { - { - size, err := m.AuthRoleRevokePermission.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x4b - i-- - dAtA[i] = 0xa2 - } - if m.AuthRoleGrantPermission != nil { - { - size, err := m.AuthRoleGrantPermission.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x4b - i-- - dAtA[i] = 0x9a - } - if m.AuthRoleGet != nil { - { - size, err := m.AuthRoleGet.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x4b - i-- - dAtA[i] = 0x92 - } - if m.AuthRoleDelete != nil { - { - size, err := m.AuthRoleDelete.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x4b - i-- - dAtA[i] = 0x8a - } - if m.AuthRoleAdd != nil { - { - size, err := m.AuthRoleAdd.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x4b - i-- - dAtA[i] = 0x82 - } - if m.AuthRoleList != nil { - { - size, err := m.AuthRoleList.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x45 - i-- - dAtA[i] = 0x9a - } - if m.AuthUserList != nil { - { - size, err := m.AuthUserList.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x45 - i-- - dAtA[i] = 0x92 - } - if m.AuthUserRevokeRole != nil { - { - size, err := m.AuthUserRevokeRole.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x45 - i-- - dAtA[i] = 0x8a - } - if m.AuthUserGrantRole != nil { - { - size, err := m.AuthUserGrantRole.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x45 - i-- - dAtA[i] = 0x82 - } - if m.AuthUserChangePassword != nil { - { - size, err := m.AuthUserChangePassword.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x44 - i-- - dAtA[i] = 0xfa - } - if m.AuthUserGet != nil { - { - size, err := m.AuthUserGet.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x44 - i-- - dAtA[i] = 0xf2 - } - if m.AuthUserDelete != nil { - { - size, err := m.AuthUserDelete.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x44 - i-- - dAtA[i] = 0xea - } - if m.AuthUserAdd != nil { - { - size, err := m.AuthUserAdd.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x44 - i-- - dAtA[i] = 0xe2 - } - if m.AuthStatus != nil { - { - size, err := m.AuthStatus.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x3f - i-- - dAtA[i] = 0xaa - } - if m.Authenticate != nil { - { - size, err := m.Authenticate.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x3f - i-- - dAtA[i] = 0xa2 - } - if m.AuthDisable != nil { - { - size, err := m.AuthDisable.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x3f - i-- - dAtA[i] = 0x9a - } - if m.AuthEnable != nil { - { - size, err := m.AuthEnable.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x3e - i-- - dAtA[i] = 0xc2 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x6 - i-- - dAtA[i] = 0xa2 - } - if m.LeaseCheckpoint != nil { - { - size, err := m.LeaseCheckpoint.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x5a - } - if m.Alarm != nil { - { - size, err := m.Alarm.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x52 - } - if m.LeaseRevoke != nil { - { - size, err := m.LeaseRevoke.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x4a - } - if m.LeaseGrant != nil { - { - size, err := m.LeaseGrant.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x42 - } - if m.Compaction != nil { - { - size, err := m.Compaction.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x3a - } - if m.Txn != nil { - { - size, err := m.Txn.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) +func (x *InternalAuthenticateRequest) ProtoReflect() protoreflect.Message { + mi := &file_raft_internal_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0x32 + return ms } - if m.DeleteRange != nil { - { - size, err := m.DeleteRange.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - if m.Put != nil { - { - size, err := m.Put.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.Range != nil { - { - size, err := m.Range.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRaftInternal(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if m.ID != 0 { - i = encodeVarintRaftInternal(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *EmptyResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *EmptyResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return mi.MessageOf(x) } -func (m *EmptyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - return len(dAtA) - i, nil -} - -func (m *InternalAuthenticateRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *InternalAuthenticateRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *InternalAuthenticateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.SimpleToken) > 0 { - i -= len(m.SimpleToken) - copy(dAtA[i:], m.SimpleToken) - i = encodeVarintRaftInternal(dAtA, i, uint64(len(m.SimpleToken))) - i-- - dAtA[i] = 0x1a - } - if len(m.Password) > 0 { - i -= len(m.Password) - copy(dAtA[i:], m.Password) - i = encodeVarintRaftInternal(dAtA, i, uint64(len(m.Password))) - i-- - dAtA[i] = 0x12 - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintRaftInternal(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintRaftInternal(dAtA []byte, offset int, v uint64) int { - offset -= sovRaftInternal(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *RequestHeader) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovRaftInternal(uint64(m.ID)) - } - l = len(m.Username) - if l > 0 { - n += 1 + l + sovRaftInternal(uint64(l)) - } - if m.AuthRevision != 0 { - n += 1 + sovRaftInternal(uint64(m.AuthRevision)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *InternalRaftRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovRaftInternal(uint64(m.ID)) - } - if m.Range != nil { - l = m.Range.Size() - n += 1 + l + sovRaftInternal(uint64(l)) - } - if m.Put != nil { - l = m.Put.Size() - n += 1 + l + sovRaftInternal(uint64(l)) - } - if m.DeleteRange != nil { - l = m.DeleteRange.Size() - n += 1 + l + sovRaftInternal(uint64(l)) - } - if m.Txn != nil { - l = m.Txn.Size() - n += 1 + l + sovRaftInternal(uint64(l)) - } - if m.Compaction != nil { - l = m.Compaction.Size() - n += 1 + l + sovRaftInternal(uint64(l)) - } - if m.LeaseGrant != nil { - l = m.LeaseGrant.Size() - n += 1 + l + sovRaftInternal(uint64(l)) - } - if m.LeaseRevoke != nil { - l = m.LeaseRevoke.Size() - n += 1 + l + sovRaftInternal(uint64(l)) - } - if m.Alarm != nil { - l = m.Alarm.Size() - n += 1 + l + sovRaftInternal(uint64(l)) - } - if m.LeaseCheckpoint != nil { - l = m.LeaseCheckpoint.Size() - n += 1 + l + sovRaftInternal(uint64(l)) - } - if m.Header != nil { - l = m.Header.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthEnable != nil { - l = m.AuthEnable.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthDisable != nil { - l = m.AuthDisable.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.Authenticate != nil { - l = m.Authenticate.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthStatus != nil { - l = m.AuthStatus.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthUserAdd != nil { - l = m.AuthUserAdd.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthUserDelete != nil { - l = m.AuthUserDelete.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthUserGet != nil { - l = m.AuthUserGet.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthUserChangePassword != nil { - l = m.AuthUserChangePassword.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthUserGrantRole != nil { - l = m.AuthUserGrantRole.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthUserRevokeRole != nil { - l = m.AuthUserRevokeRole.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthUserList != nil { - l = m.AuthUserList.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthRoleList != nil { - l = m.AuthRoleList.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthRoleAdd != nil { - l = m.AuthRoleAdd.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthRoleDelete != nil { - l = m.AuthRoleDelete.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthRoleGet != nil { - l = m.AuthRoleGet.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthRoleGrantPermission != nil { - l = m.AuthRoleGrantPermission.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.AuthRoleRevokePermission != nil { - l = m.AuthRoleRevokePermission.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.ClusterVersionSet != nil { - l = m.ClusterVersionSet.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.ClusterMemberAttrSet != nil { - l = m.ClusterMemberAttrSet.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.DowngradeInfoSet != nil { - l = m.DowngradeInfoSet.Size() - n += 2 + l + sovRaftInternal(uint64(l)) - } - if m.DowngradeVersionTest != nil { - l = m.DowngradeVersionTest.Size() - n += 3 + l + sovRaftInternal(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *EmptyResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *InternalAuthenticateRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovRaftInternal(uint64(l)) - } - l = len(m.Password) - if l > 0 { - n += 1 + l + sovRaftInternal(uint64(l)) - } - l = len(m.SimpleToken) - if l > 0 { - n += 1 + l + sovRaftInternal(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +// Deprecated: Use InternalAuthenticateRequest.ProtoReflect.Descriptor instead. +func (*InternalAuthenticateRequest) Descriptor() ([]byte, []int) { + return file_raft_internal_proto_rawDescGZIP(), []int{3} } -func sovRaftInternal(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozRaftInternal(x uint64) (n int) { - return sovRaftInternal(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *RequestHeader) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RequestHeader: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RequestHeader: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Username = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthRevision", wireType) - } - m.AuthRevision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.AuthRevision |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRaftInternal(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRaftInternal - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } +func (x *InternalAuthenticateRequest) GetName() string { + if x != nil { + return x.Name } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil + return "" } -func (m *InternalRaftRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: InternalRaftRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: InternalRaftRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Range", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Range == nil { - m.Range = &RangeRequest{} - } - if err := m.Range.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Put", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Put == nil { - m.Put = &PutRequest{} - } - if err := m.Put.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DeleteRange", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.DeleteRange == nil { - m.DeleteRange = &DeleteRangeRequest{} - } - if err := m.DeleteRange.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Txn", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Txn == nil { - m.Txn = &TxnRequest{} - } - if err := m.Txn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Compaction", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Compaction == nil { - m.Compaction = &CompactionRequest{} - } - if err := m.Compaction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LeaseGrant", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.LeaseGrant == nil { - m.LeaseGrant = &LeaseGrantRequest{} - } - if err := m.LeaseGrant.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 9: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LeaseRevoke", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.LeaseRevoke == nil { - m.LeaseRevoke = &LeaseRevokeRequest{} - } - if err := m.LeaseRevoke.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 10: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Alarm", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Alarm == nil { - m.Alarm = &AlarmRequest{} - } - if err := m.Alarm.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 11: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LeaseCheckpoint", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.LeaseCheckpoint == nil { - m.LeaseCheckpoint = &LeaseCheckpointRequest{} - } - if err := m.LeaseCheckpoint.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 100: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &RequestHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1000: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthEnable", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthEnable == nil { - m.AuthEnable = &AuthEnableRequest{} - } - if err := m.AuthEnable.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1011: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthDisable", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthDisable == nil { - m.AuthDisable = &AuthDisableRequest{} - } - if err := m.AuthDisable.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1012: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Authenticate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Authenticate == nil { - m.Authenticate = &InternalAuthenticateRequest{} - } - if err := m.Authenticate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1013: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthStatus", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthStatus == nil { - m.AuthStatus = &AuthStatusRequest{} - } - if err := m.AuthStatus.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1100: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthUserAdd", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthUserAdd == nil { - m.AuthUserAdd = &AuthUserAddRequest{} - } - if err := m.AuthUserAdd.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1101: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthUserDelete", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthUserDelete == nil { - m.AuthUserDelete = &AuthUserDeleteRequest{} - } - if err := m.AuthUserDelete.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1102: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthUserGet", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthUserGet == nil { - m.AuthUserGet = &AuthUserGetRequest{} - } - if err := m.AuthUserGet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1103: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthUserChangePassword", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthUserChangePassword == nil { - m.AuthUserChangePassword = &AuthUserChangePasswordRequest{} - } - if err := m.AuthUserChangePassword.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1104: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthUserGrantRole", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthUserGrantRole == nil { - m.AuthUserGrantRole = &AuthUserGrantRoleRequest{} - } - if err := m.AuthUserGrantRole.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1105: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthUserRevokeRole", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthUserRevokeRole == nil { - m.AuthUserRevokeRole = &AuthUserRevokeRoleRequest{} - } - if err := m.AuthUserRevokeRole.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1106: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthUserList", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthUserList == nil { - m.AuthUserList = &AuthUserListRequest{} - } - if err := m.AuthUserList.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1107: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthRoleList", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthRoleList == nil { - m.AuthRoleList = &AuthRoleListRequest{} - } - if err := m.AuthRoleList.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1200: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthRoleAdd", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthRoleAdd == nil { - m.AuthRoleAdd = &AuthRoleAddRequest{} - } - if err := m.AuthRoleAdd.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1201: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthRoleDelete", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthRoleDelete == nil { - m.AuthRoleDelete = &AuthRoleDeleteRequest{} - } - if err := m.AuthRoleDelete.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1202: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthRoleGet", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthRoleGet == nil { - m.AuthRoleGet = &AuthRoleGetRequest{} - } - if err := m.AuthRoleGet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1203: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthRoleGrantPermission", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthRoleGrantPermission == nil { - m.AuthRoleGrantPermission = &AuthRoleGrantPermissionRequest{} - } - if err := m.AuthRoleGrantPermission.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1204: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthRoleRevokePermission", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.AuthRoleRevokePermission == nil { - m.AuthRoleRevokePermission = &AuthRoleRevokePermissionRequest{} - } - if err := m.AuthRoleRevokePermission.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1300: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClusterVersionSet", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.ClusterVersionSet == nil { - m.ClusterVersionSet = &membershippb.ClusterVersionSetRequest{} - } - if err := m.ClusterVersionSet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1301: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClusterMemberAttrSet", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.ClusterMemberAttrSet == nil { - m.ClusterMemberAttrSet = &membershippb.ClusterMemberAttrSetRequest{} - } - if err := m.ClusterMemberAttrSet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 1302: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DowngradeInfoSet", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.DowngradeInfoSet == nil { - m.DowngradeInfoSet = &membershippb.DowngradeInfoSetRequest{} - } - if err := m.DowngradeInfoSet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 9900: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DowngradeVersionTest", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.DowngradeVersionTest == nil { - m.DowngradeVersionTest = &DowngradeVersionTestRequest{} - } - if err := m.DowngradeVersionTest.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRaftInternal(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRaftInternal - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF +func (x *InternalAuthenticateRequest) GetPassword() string { + if x != nil { + return x.Password } - return nil + return "" } -func (m *EmptyResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: EmptyResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: EmptyResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipRaftInternal(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRaftInternal - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF +func (x *InternalAuthenticateRequest) GetSimpleToken() string { + if x != nil { + return x.SimpleToken } - return nil + return "" } -func (m *InternalAuthenticateRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: InternalAuthenticateRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: InternalAuthenticateRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Password", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Password = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SimpleToken", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRaftInternal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRaftInternal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SimpleToken = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRaftInternal(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRaftInternal - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipRaftInternal(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowRaftInternal - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthRaftInternal - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupRaftInternal - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthRaftInternal - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} +var File_raft_internal_proto protoreflect.FileDescriptor + +const file_raft_internal_proto_rawDesc = "" + + "\n" + + "\x13raft_internal.proto\x12\fetcdserverpb\x1a\trpc.proto\x1a etcd/api/versionpb/version.proto\x1a&etcd/api/membershippb/membership.proto\"r\n" + + "\rRequestHeader\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x04R\x02ID\x12\x1a\n" + + "\busername\x18\x02 \x01(\tR\busername\x12,\n" + + "\rauth_revision\x18\x03 \x01(\x04B\a\x8a\xb5\x18\x033.1R\fauthRevision:\a\x82\xb5\x18\x033.0\"\x98\x13\n" + + "\x13InternalRaftRequest\x123\n" + + "\x06header\x18d \x01(\v2\x1b.etcdserverpb.RequestHeaderR\x06header\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x04R\x02ID\x120\n" + + "\x05range\x18\x03 \x01(\v2\x1a.etcdserverpb.RangeRequestR\x05range\x12*\n" + + "\x03put\x18\x04 \x01(\v2\x18.etcdserverpb.PutRequestR\x03put\x12C\n" + + "\fdelete_range\x18\x05 \x01(\v2 .etcdserverpb.DeleteRangeRequestR\vdeleteRange\x12*\n" + + "\x03txn\x18\x06 \x01(\v2\x18.etcdserverpb.TxnRequestR\x03txn\x12?\n" + + "\n" + + "compaction\x18\a \x01(\v2\x1f.etcdserverpb.CompactionRequestR\n" + + "compaction\x12@\n" + + "\vlease_grant\x18\b \x01(\v2\x1f.etcdserverpb.LeaseGrantRequestR\n" + + "leaseGrant\x12C\n" + + "\flease_revoke\x18\t \x01(\v2 .etcdserverpb.LeaseRevokeRequestR\vleaseRevoke\x120\n" + + "\x05alarm\x18\n" + + " \x01(\v2\x1a.etcdserverpb.AlarmRequestR\x05alarm\x12X\n" + + "\x10lease_checkpoint\x18\v \x01(\v2$.etcdserverpb.LeaseCheckpointRequestB\a\x8a\xb5\x18\x033.4R\x0fleaseCheckpoint\x12A\n" + + "\vauth_enable\x18\xe8\a \x01(\v2\x1f.etcdserverpb.AuthEnableRequestR\n" + + "authEnable\x12D\n" + + "\fauth_disable\x18\xf3\a \x01(\v2 .etcdserverpb.AuthDisableRequestR\vauthDisable\x12J\n" + + "\vauth_status\x18\xf5\a \x01(\v2\x1f.etcdserverpb.AuthStatusRequestB\a\x8a\xb5\x18\x033.5R\n" + + "authStatus\x12N\n" + + "\fauthenticate\x18\xf4\a \x01(\v2).etcdserverpb.InternalAuthenticateRequestR\fauthenticate\x12E\n" + + "\rauth_user_add\x18\xcc\b \x01(\v2 .etcdserverpb.AuthUserAddRequestR\vauthUserAdd\x12N\n" + + "\x10auth_user_delete\x18\xcd\b \x01(\v2#.etcdserverpb.AuthUserDeleteRequestR\x0eauthUserDelete\x12E\n" + + "\rauth_user_get\x18\xce\b \x01(\v2 .etcdserverpb.AuthUserGetRequestR\vauthUserGet\x12g\n" + + "\x19auth_user_change_password\x18\xcf\b \x01(\v2+.etcdserverpb.AuthUserChangePasswordRequestR\x16authUserChangePassword\x12X\n" + + "\x14auth_user_grant_role\x18\xd0\b \x01(\v2&.etcdserverpb.AuthUserGrantRoleRequestR\x11authUserGrantRole\x12[\n" + + "\x15auth_user_revoke_role\x18\xd1\b \x01(\v2'.etcdserverpb.AuthUserRevokeRoleRequestR\x12authUserRevokeRole\x12H\n" + + "\x0eauth_user_list\x18\xd2\b \x01(\v2!.etcdserverpb.AuthUserListRequestR\fauthUserList\x12H\n" + + "\x0eauth_role_list\x18\xd3\b \x01(\v2!.etcdserverpb.AuthRoleListRequestR\fauthRoleList\x12E\n" + + "\rauth_role_add\x18\xb0\t \x01(\v2 .etcdserverpb.AuthRoleAddRequestR\vauthRoleAdd\x12N\n" + + "\x10auth_role_delete\x18\xb1\t \x01(\v2#.etcdserverpb.AuthRoleDeleteRequestR\x0eauthRoleDelete\x12E\n" + + "\rauth_role_get\x18\xb2\t \x01(\v2 .etcdserverpb.AuthRoleGetRequestR\vauthRoleGet\x12j\n" + + "\x1aauth_role_grant_permission\x18\xb3\t \x01(\v2,.etcdserverpb.AuthRoleGrantPermissionRequestR\x17authRoleGrantPermission\x12m\n" + + "\x1bauth_role_revoke_permission\x18\xb4\t \x01(\v2-.etcdserverpb.AuthRoleRevokePermissionRequestR\x18authRoleRevokePermission\x12`\n" + + "\x13cluster_version_set\x18\x94\n" + + " \x01(\v2&.membershippb.ClusterVersionSetRequestB\a\x8a\xb5\x18\x033.5R\x11clusterVersionSet\x12j\n" + + "\x17cluster_member_attr_set\x18\x95\n" + + " \x01(\v2).membershippb.ClusterMemberAttrSetRequestB\a\x8a\xb5\x18\x033.5R\x14clusterMemberAttrSet\x12]\n" + + "\x12downgrade_info_set\x18\x96\n" + + " \x01(\v2%.membershippb.DowngradeInfoSetRequestB\a\x8a\xb5\x18\x033.5R\x10downgradeInfoSet\x12i\n" + + "\x16downgrade_version_test\x18\xacM \x01(\v2).etcdserverpb.DowngradeVersionTestRequestB\a\x8a\xb5\x18\x033.6R\x14downgradeVersionTest:\a\x82\xb5\x18\x033.0J\x04\b\x02\x10\x03R\x02v2\"\x0f\n" + + "\rEmptyResponse\"y\n" + + "\x1bInternalAuthenticateRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1a\n" + + "\bpassword\x18\x02 \x01(\tR\bpassword\x12!\n" + + "\fsimple_token\x18\x03 \x01(\tR\vsimpleToken:\a\x82\xb5\x18\x033.0B%Z#go.etcd.io/etcd/api/v3/etcdserverpbb\x06proto3" var ( - ErrInvalidLengthRaftInternal = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowRaftInternal = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupRaftInternal = fmt.Errorf("proto: unexpected end of group") + file_raft_internal_proto_rawDescOnce sync.Once + file_raft_internal_proto_rawDescData []byte ) + +func file_raft_internal_proto_rawDescGZIP() []byte { + file_raft_internal_proto_rawDescOnce.Do(func() { + file_raft_internal_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_raft_internal_proto_rawDesc), len(file_raft_internal_proto_rawDesc))) + }) + return file_raft_internal_proto_rawDescData +} + +var file_raft_internal_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_raft_internal_proto_goTypes = []any{ + (*RequestHeader)(nil), // 0: etcdserverpb.RequestHeader + (*InternalRaftRequest)(nil), // 1: etcdserverpb.InternalRaftRequest + (*EmptyResponse)(nil), // 2: etcdserverpb.EmptyResponse + (*InternalAuthenticateRequest)(nil), // 3: etcdserverpb.InternalAuthenticateRequest + (*RangeRequest)(nil), // 4: etcdserverpb.RangeRequest + (*PutRequest)(nil), // 5: etcdserverpb.PutRequest + (*DeleteRangeRequest)(nil), // 6: etcdserverpb.DeleteRangeRequest + (*TxnRequest)(nil), // 7: etcdserverpb.TxnRequest + (*CompactionRequest)(nil), // 8: etcdserverpb.CompactionRequest + (*LeaseGrantRequest)(nil), // 9: etcdserverpb.LeaseGrantRequest + (*LeaseRevokeRequest)(nil), // 10: etcdserverpb.LeaseRevokeRequest + (*AlarmRequest)(nil), // 11: etcdserverpb.AlarmRequest + (*LeaseCheckpointRequest)(nil), // 12: etcdserverpb.LeaseCheckpointRequest + (*AuthEnableRequest)(nil), // 13: etcdserverpb.AuthEnableRequest + (*AuthDisableRequest)(nil), // 14: etcdserverpb.AuthDisableRequest + (*AuthStatusRequest)(nil), // 15: etcdserverpb.AuthStatusRequest + (*AuthUserAddRequest)(nil), // 16: etcdserverpb.AuthUserAddRequest + (*AuthUserDeleteRequest)(nil), // 17: etcdserverpb.AuthUserDeleteRequest + (*AuthUserGetRequest)(nil), // 18: etcdserverpb.AuthUserGetRequest + (*AuthUserChangePasswordRequest)(nil), // 19: etcdserverpb.AuthUserChangePasswordRequest + (*AuthUserGrantRoleRequest)(nil), // 20: etcdserverpb.AuthUserGrantRoleRequest + (*AuthUserRevokeRoleRequest)(nil), // 21: etcdserverpb.AuthUserRevokeRoleRequest + (*AuthUserListRequest)(nil), // 22: etcdserverpb.AuthUserListRequest + (*AuthRoleListRequest)(nil), // 23: etcdserverpb.AuthRoleListRequest + (*AuthRoleAddRequest)(nil), // 24: etcdserverpb.AuthRoleAddRequest + (*AuthRoleDeleteRequest)(nil), // 25: etcdserverpb.AuthRoleDeleteRequest + (*AuthRoleGetRequest)(nil), // 26: etcdserverpb.AuthRoleGetRequest + (*AuthRoleGrantPermissionRequest)(nil), // 27: etcdserverpb.AuthRoleGrantPermissionRequest + (*AuthRoleRevokePermissionRequest)(nil), // 28: etcdserverpb.AuthRoleRevokePermissionRequest + (*membershippb.ClusterVersionSetRequest)(nil), // 29: membershippb.ClusterVersionSetRequest + (*membershippb.ClusterMemberAttrSetRequest)(nil), // 30: membershippb.ClusterMemberAttrSetRequest + (*membershippb.DowngradeInfoSetRequest)(nil), // 31: membershippb.DowngradeInfoSetRequest + (*DowngradeVersionTestRequest)(nil), // 32: etcdserverpb.DowngradeVersionTestRequest +} +var file_raft_internal_proto_depIdxs = []int32{ + 0, // 0: etcdserverpb.InternalRaftRequest.header:type_name -> etcdserverpb.RequestHeader + 4, // 1: etcdserverpb.InternalRaftRequest.range:type_name -> etcdserverpb.RangeRequest + 5, // 2: etcdserverpb.InternalRaftRequest.put:type_name -> etcdserverpb.PutRequest + 6, // 3: etcdserverpb.InternalRaftRequest.delete_range:type_name -> etcdserverpb.DeleteRangeRequest + 7, // 4: etcdserverpb.InternalRaftRequest.txn:type_name -> etcdserverpb.TxnRequest + 8, // 5: etcdserverpb.InternalRaftRequest.compaction:type_name -> etcdserverpb.CompactionRequest + 9, // 6: etcdserverpb.InternalRaftRequest.lease_grant:type_name -> etcdserverpb.LeaseGrantRequest + 10, // 7: etcdserverpb.InternalRaftRequest.lease_revoke:type_name -> etcdserverpb.LeaseRevokeRequest + 11, // 8: etcdserverpb.InternalRaftRequest.alarm:type_name -> etcdserverpb.AlarmRequest + 12, // 9: etcdserverpb.InternalRaftRequest.lease_checkpoint:type_name -> etcdserverpb.LeaseCheckpointRequest + 13, // 10: etcdserverpb.InternalRaftRequest.auth_enable:type_name -> etcdserverpb.AuthEnableRequest + 14, // 11: etcdserverpb.InternalRaftRequest.auth_disable:type_name -> etcdserverpb.AuthDisableRequest + 15, // 12: etcdserverpb.InternalRaftRequest.auth_status:type_name -> etcdserverpb.AuthStatusRequest + 3, // 13: etcdserverpb.InternalRaftRequest.authenticate:type_name -> etcdserverpb.InternalAuthenticateRequest + 16, // 14: etcdserverpb.InternalRaftRequest.auth_user_add:type_name -> etcdserverpb.AuthUserAddRequest + 17, // 15: etcdserverpb.InternalRaftRequest.auth_user_delete:type_name -> etcdserverpb.AuthUserDeleteRequest + 18, // 16: etcdserverpb.InternalRaftRequest.auth_user_get:type_name -> etcdserverpb.AuthUserGetRequest + 19, // 17: etcdserverpb.InternalRaftRequest.auth_user_change_password:type_name -> etcdserverpb.AuthUserChangePasswordRequest + 20, // 18: etcdserverpb.InternalRaftRequest.auth_user_grant_role:type_name -> etcdserverpb.AuthUserGrantRoleRequest + 21, // 19: etcdserverpb.InternalRaftRequest.auth_user_revoke_role:type_name -> etcdserverpb.AuthUserRevokeRoleRequest + 22, // 20: etcdserverpb.InternalRaftRequest.auth_user_list:type_name -> etcdserverpb.AuthUserListRequest + 23, // 21: etcdserverpb.InternalRaftRequest.auth_role_list:type_name -> etcdserverpb.AuthRoleListRequest + 24, // 22: etcdserverpb.InternalRaftRequest.auth_role_add:type_name -> etcdserverpb.AuthRoleAddRequest + 25, // 23: etcdserverpb.InternalRaftRequest.auth_role_delete:type_name -> etcdserverpb.AuthRoleDeleteRequest + 26, // 24: etcdserverpb.InternalRaftRequest.auth_role_get:type_name -> etcdserverpb.AuthRoleGetRequest + 27, // 25: etcdserverpb.InternalRaftRequest.auth_role_grant_permission:type_name -> etcdserverpb.AuthRoleGrantPermissionRequest + 28, // 26: etcdserverpb.InternalRaftRequest.auth_role_revoke_permission:type_name -> etcdserverpb.AuthRoleRevokePermissionRequest + 29, // 27: etcdserverpb.InternalRaftRequest.cluster_version_set:type_name -> membershippb.ClusterVersionSetRequest + 30, // 28: etcdserverpb.InternalRaftRequest.cluster_member_attr_set:type_name -> membershippb.ClusterMemberAttrSetRequest + 31, // 29: etcdserverpb.InternalRaftRequest.downgrade_info_set:type_name -> membershippb.DowngradeInfoSetRequest + 32, // 30: etcdserverpb.InternalRaftRequest.downgrade_version_test:type_name -> etcdserverpb.DowngradeVersionTestRequest + 31, // [31:31] is the sub-list for method output_type + 31, // [31:31] is the sub-list for method input_type + 31, // [31:31] is the sub-list for extension type_name + 31, // [31:31] is the sub-list for extension extendee + 0, // [0:31] is the sub-list for field type_name +} + +func init() { file_raft_internal_proto_init() } +func file_raft_internal_proto_init() { + if File_raft_internal_proto != nil { + return + } + file_rpc_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_raft_internal_proto_rawDesc), len(file_raft_internal_proto_rawDesc)), + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_raft_internal_proto_goTypes, + DependencyIndexes: file_raft_internal_proto_depIdxs, + MessageInfos: file_raft_internal_proto_msgTypes, + }.Build() + File_raft_internal_proto = out.File + file_raft_internal_proto_goTypes = nil + file_raft_internal_proto_depIdxs = nil +} diff --git a/api/etcdserverpb/rpc.pb.go b/api/etcdserverpb/rpc.pb.go index 41ef0bab686c..5e13278953b8 100644 --- a/api/etcdserverpb/rpc.pb.go +++ b/api/etcdserverpb/rpc.pb.go @@ -1,87 +1,128 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v3.20.3 // source: rpc.proto package etcdserverpb import ( - fmt "fmt" - io "io" - math "math" - math_bits "math/bits" + reflect "reflect" + sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" authpb "go.etcd.io/etcd/api/v3/authpb" mvccpb "go.etcd.io/etcd/api/v3/mvccpb" _ "go.etcd.io/etcd/api/v3/versionpb" _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type AlarmType int32 const ( - AlarmType_NONE AlarmType = 0 - AlarmType_NOSPACE AlarmType = 1 - AlarmType_CORRUPT AlarmType = 2 + AlarmType_NONE AlarmType = 0 // default, used to query if any alarm is active + AlarmType_NOSPACE AlarmType = 1 // space quota is exhausted + AlarmType_CORRUPT AlarmType = 2 // kv store corruption detected ) -var AlarmType_name = map[int32]string{ - 0: "NONE", - 1: "NOSPACE", - 2: "CORRUPT", -} +// Enum value maps for AlarmType. +var ( + AlarmType_name = map[int32]string{ + 0: "NONE", + 1: "NOSPACE", + 2: "CORRUPT", + } + AlarmType_value = map[string]int32{ + "NONE": 0, + "NOSPACE": 1, + "CORRUPT": 2, + } +) -var AlarmType_value = map[string]int32{ - "NONE": 0, - "NOSPACE": 1, - "CORRUPT": 2, +func (x AlarmType) Enum() *AlarmType { + p := new(AlarmType) + *p = x + return p } func (x AlarmType) String() string { - return proto.EnumName(AlarmType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (AlarmType) Descriptor() protoreflect.EnumDescriptor { + return file_rpc_proto_enumTypes[0].Descriptor() +} + +func (AlarmType) Type() protoreflect.EnumType { + return &file_rpc_proto_enumTypes[0] +} + +func (x AlarmType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AlarmType.Descriptor instead. func (AlarmType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{0} + return file_rpc_proto_rawDescGZIP(), []int{0} } type RangeRequest_SortOrder int32 const ( - RangeRequest_NONE RangeRequest_SortOrder = 0 - RangeRequest_ASCEND RangeRequest_SortOrder = 1 - RangeRequest_DESCEND RangeRequest_SortOrder = 2 + RangeRequest_NONE RangeRequest_SortOrder = 0 // default, no sorting + RangeRequest_ASCEND RangeRequest_SortOrder = 1 // lowest target value first + RangeRequest_DESCEND RangeRequest_SortOrder = 2 // highest target value first ) -var RangeRequest_SortOrder_name = map[int32]string{ - 0: "NONE", - 1: "ASCEND", - 2: "DESCEND", -} +// Enum value maps for RangeRequest_SortOrder. +var ( + RangeRequest_SortOrder_name = map[int32]string{ + 0: "NONE", + 1: "ASCEND", + 2: "DESCEND", + } + RangeRequest_SortOrder_value = map[string]int32{ + "NONE": 0, + "ASCEND": 1, + "DESCEND": 2, + } +) -var RangeRequest_SortOrder_value = map[string]int32{ - "NONE": 0, - "ASCEND": 1, - "DESCEND": 2, +func (x RangeRequest_SortOrder) Enum() *RangeRequest_SortOrder { + p := new(RangeRequest_SortOrder) + *p = x + return p } func (x RangeRequest_SortOrder) String() string { - return proto.EnumName(RangeRequest_SortOrder_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RangeRequest_SortOrder) Descriptor() protoreflect.EnumDescriptor { + return file_rpc_proto_enumTypes[1].Descriptor() +} + +func (RangeRequest_SortOrder) Type() protoreflect.EnumType { + return &file_rpc_proto_enumTypes[1] +} + +func (x RangeRequest_SortOrder) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use RangeRequest_SortOrder.Descriptor instead. func (RangeRequest_SortOrder) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{1, 0} + return file_rpc_proto_rawDescGZIP(), []int{1, 0} } type RangeRequest_SortTarget int32 @@ -94,28 +135,49 @@ const ( RangeRequest_VALUE RangeRequest_SortTarget = 4 ) -var RangeRequest_SortTarget_name = map[int32]string{ - 0: "KEY", - 1: "VERSION", - 2: "CREATE", - 3: "MOD", - 4: "VALUE", -} +// Enum value maps for RangeRequest_SortTarget. +var ( + RangeRequest_SortTarget_name = map[int32]string{ + 0: "KEY", + 1: "VERSION", + 2: "CREATE", + 3: "MOD", + 4: "VALUE", + } + RangeRequest_SortTarget_value = map[string]int32{ + "KEY": 0, + "VERSION": 1, + "CREATE": 2, + "MOD": 3, + "VALUE": 4, + } +) -var RangeRequest_SortTarget_value = map[string]int32{ - "KEY": 0, - "VERSION": 1, - "CREATE": 2, - "MOD": 3, - "VALUE": 4, +func (x RangeRequest_SortTarget) Enum() *RangeRequest_SortTarget { + p := new(RangeRequest_SortTarget) + *p = x + return p } func (x RangeRequest_SortTarget) String() string { - return proto.EnumName(RangeRequest_SortTarget_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RangeRequest_SortTarget) Descriptor() protoreflect.EnumDescriptor { + return file_rpc_proto_enumTypes[2].Descriptor() +} + +func (RangeRequest_SortTarget) Type() protoreflect.EnumType { + return &file_rpc_proto_enumTypes[2] +} + +func (x RangeRequest_SortTarget) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use RangeRequest_SortTarget.Descriptor instead. func (RangeRequest_SortTarget) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{1, 1} + return file_rpc_proto_rawDescGZIP(), []int{1, 1} } type Compare_CompareResult int32 @@ -127,26 +189,47 @@ const ( Compare_NOT_EQUAL Compare_CompareResult = 3 ) -var Compare_CompareResult_name = map[int32]string{ - 0: "EQUAL", - 1: "GREATER", - 2: "LESS", - 3: "NOT_EQUAL", -} +// Enum value maps for Compare_CompareResult. +var ( + Compare_CompareResult_name = map[int32]string{ + 0: "EQUAL", + 1: "GREATER", + 2: "LESS", + 3: "NOT_EQUAL", + } + Compare_CompareResult_value = map[string]int32{ + "EQUAL": 0, + "GREATER": 1, + "LESS": 2, + "NOT_EQUAL": 3, + } +) -var Compare_CompareResult_value = map[string]int32{ - "EQUAL": 0, - "GREATER": 1, - "LESS": 2, - "NOT_EQUAL": 3, +func (x Compare_CompareResult) Enum() *Compare_CompareResult { + p := new(Compare_CompareResult) + *p = x + return p } func (x Compare_CompareResult) String() string { - return proto.EnumName(Compare_CompareResult_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Compare_CompareResult) Descriptor() protoreflect.EnumDescriptor { + return file_rpc_proto_enumTypes[3].Descriptor() +} + +func (Compare_CompareResult) Type() protoreflect.EnumType { + return &file_rpc_proto_enumTypes[3] +} + +func (x Compare_CompareResult) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use Compare_CompareResult.Descriptor instead. func (Compare_CompareResult) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{9, 0} + return file_rpc_proto_rawDescGZIP(), []int{9, 0} } type Compare_CompareTarget int32 @@ -159,28 +242,49 @@ const ( Compare_LEASE Compare_CompareTarget = 4 ) -var Compare_CompareTarget_name = map[int32]string{ - 0: "VERSION", - 1: "CREATE", - 2: "MOD", - 3: "VALUE", - 4: "LEASE", -} +// Enum value maps for Compare_CompareTarget. +var ( + Compare_CompareTarget_name = map[int32]string{ + 0: "VERSION", + 1: "CREATE", + 2: "MOD", + 3: "VALUE", + 4: "LEASE", + } + Compare_CompareTarget_value = map[string]int32{ + "VERSION": 0, + "CREATE": 1, + "MOD": 2, + "VALUE": 3, + "LEASE": 4, + } +) -var Compare_CompareTarget_value = map[string]int32{ - "VERSION": 0, - "CREATE": 1, - "MOD": 2, - "VALUE": 3, - "LEASE": 4, +func (x Compare_CompareTarget) Enum() *Compare_CompareTarget { + p := new(Compare_CompareTarget) + *p = x + return p } func (x Compare_CompareTarget) String() string { - return proto.EnumName(Compare_CompareTarget_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Compare_CompareTarget) Descriptor() protoreflect.EnumDescriptor { + return file_rpc_proto_enumTypes[4].Descriptor() +} + +func (Compare_CompareTarget) Type() protoreflect.EnumType { + return &file_rpc_proto_enumTypes[4] +} + +func (x Compare_CompareTarget) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use Compare_CompareTarget.Descriptor instead. func (Compare_CompareTarget) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{9, 1} + return file_rpc_proto_rawDescGZIP(), []int{9, 1} } type WatchCreateRequest_FilterType int32 @@ -192,22 +296,43 @@ const ( WatchCreateRequest_NODELETE WatchCreateRequest_FilterType = 1 ) -var WatchCreateRequest_FilterType_name = map[int32]string{ - 0: "NOPUT", - 1: "NODELETE", -} +// Enum value maps for WatchCreateRequest_FilterType. +var ( + WatchCreateRequest_FilterType_name = map[int32]string{ + 0: "NOPUT", + 1: "NODELETE", + } + WatchCreateRequest_FilterType_value = map[string]int32{ + "NOPUT": 0, + "NODELETE": 1, + } +) -var WatchCreateRequest_FilterType_value = map[string]int32{ - "NOPUT": 0, - "NODELETE": 1, +func (x WatchCreateRequest_FilterType) Enum() *WatchCreateRequest_FilterType { + p := new(WatchCreateRequest_FilterType) + *p = x + return p } func (x WatchCreateRequest_FilterType) String() string { - return proto.EnumName(WatchCreateRequest_FilterType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (WatchCreateRequest_FilterType) Descriptor() protoreflect.EnumDescriptor { + return file_rpc_proto_enumTypes[5].Descriptor() +} + +func (WatchCreateRequest_FilterType) Type() protoreflect.EnumType { + return &file_rpc_proto_enumTypes[5] } +func (x WatchCreateRequest_FilterType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use WatchCreateRequest_FilterType.Descriptor instead. func (WatchCreateRequest_FilterType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{21, 0} + return file_rpc_proto_rawDescGZIP(), []int{21, 0} } type AlarmRequest_AlarmAction int32 @@ -218,24 +343,45 @@ const ( AlarmRequest_DEACTIVATE AlarmRequest_AlarmAction = 2 ) -var AlarmRequest_AlarmAction_name = map[int32]string{ - 0: "GET", - 1: "ACTIVATE", - 2: "DEACTIVATE", -} +// Enum value maps for AlarmRequest_AlarmAction. +var ( + AlarmRequest_AlarmAction_name = map[int32]string{ + 0: "GET", + 1: "ACTIVATE", + 2: "DEACTIVATE", + } + AlarmRequest_AlarmAction_value = map[string]int32{ + "GET": 0, + "ACTIVATE": 1, + "DEACTIVATE": 2, + } +) -var AlarmRequest_AlarmAction_value = map[string]int32{ - "GET": 0, - "ACTIVATE": 1, - "DEACTIVATE": 2, +func (x AlarmRequest_AlarmAction) Enum() *AlarmRequest_AlarmAction { + p := new(AlarmRequest_AlarmAction) + *p = x + return p } func (x AlarmRequest_AlarmAction) String() string { - return proto.EnumName(AlarmRequest_AlarmAction_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AlarmRequest_AlarmAction) Descriptor() protoreflect.EnumDescriptor { + return file_rpc_proto_enumTypes[6].Descriptor() +} + +func (AlarmRequest_AlarmAction) Type() protoreflect.EnumType { + return &file_rpc_proto_enumTypes[6] +} + +func (x AlarmRequest_AlarmAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use AlarmRequest_AlarmAction.Descriptor instead. func (AlarmRequest_AlarmAction) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{54, 0} + return file_rpc_proto_rawDescGZIP(), []int{54, 0} } type DowngradeRequest_DowngradeAction int32 @@ -246,27 +392,49 @@ const ( DowngradeRequest_CANCEL DowngradeRequest_DowngradeAction = 2 ) -var DowngradeRequest_DowngradeAction_name = map[int32]string{ - 0: "VALIDATE", - 1: "ENABLE", - 2: "CANCEL", -} +// Enum value maps for DowngradeRequest_DowngradeAction. +var ( + DowngradeRequest_DowngradeAction_name = map[int32]string{ + 0: "VALIDATE", + 1: "ENABLE", + 2: "CANCEL", + } + DowngradeRequest_DowngradeAction_value = map[string]int32{ + "VALIDATE": 0, + "ENABLE": 1, + "CANCEL": 2, + } +) -var DowngradeRequest_DowngradeAction_value = map[string]int32{ - "VALIDATE": 0, - "ENABLE": 1, - "CANCEL": 2, +func (x DowngradeRequest_DowngradeAction) Enum() *DowngradeRequest_DowngradeAction { + p := new(DowngradeRequest_DowngradeAction) + *p = x + return p } func (x DowngradeRequest_DowngradeAction) String() string { - return proto.EnumName(DowngradeRequest_DowngradeAction_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DowngradeRequest_DowngradeAction) Descriptor() protoreflect.EnumDescriptor { + return file_rpc_proto_enumTypes[7].Descriptor() +} + +func (DowngradeRequest_DowngradeAction) Type() protoreflect.EnumType { + return &file_rpc_proto_enumTypes[7] +} + +func (x DowngradeRequest_DowngradeAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use DowngradeRequest_DowngradeAction.Descriptor instead. func (DowngradeRequest_DowngradeAction) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{57, 0} + return file_rpc_proto_rawDescGZIP(), []int{57, 0} } type ResponseHeader struct { + state protoimpl.MessageState `protogen:"open.v1"` // cluster_id is the ID of the cluster which sent the response. ClusterId uint64 `protobuf:"varint,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // member_id is the ID of the member which sent the response. @@ -278,74 +446,71 @@ type ResponseHeader struct { // header.revision number. Revision int64 `protobuf:"varint,3,opt,name=revision,proto3" json:"revision,omitempty"` // raft_term is the raft term when the request was applied. - RaftTerm uint64 `protobuf:"varint,4,opt,name=raft_term,json=raftTerm,proto3" json:"raft_term,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + RaftTerm uint64 `protobuf:"varint,4,opt,name=raft_term,json=raftTerm,proto3" json:"raft_term,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *ResponseHeader) Reset() { *m = ResponseHeader{} } -func (m *ResponseHeader) String() string { return proto.CompactTextString(m) } -func (*ResponseHeader) ProtoMessage() {} -func (*ResponseHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{0} -} -func (m *ResponseHeader) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ResponseHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ResponseHeader.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ResponseHeader) XXX_Merge(src proto.Message) { - xxx_messageInfo_ResponseHeader.Merge(m, src) +func (x *ResponseHeader) Reset() { + *x = ResponseHeader{} + mi := &file_rpc_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *ResponseHeader) XXX_Size() int { - return m.Size() + +func (x *ResponseHeader) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ResponseHeader) XXX_DiscardUnknown() { - xxx_messageInfo_ResponseHeader.DiscardUnknown(m) + +func (*ResponseHeader) ProtoMessage() {} + +func (x *ResponseHeader) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ResponseHeader proto.InternalMessageInfo +// Deprecated: Use ResponseHeader.ProtoReflect.Descriptor instead. +func (*ResponseHeader) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{0} +} -func (m *ResponseHeader) GetClusterId() uint64 { - if m != nil { - return m.ClusterId +func (x *ResponseHeader) GetClusterId() uint64 { + if x != nil { + return x.ClusterId } return 0 } -func (m *ResponseHeader) GetMemberId() uint64 { - if m != nil { - return m.MemberId +func (x *ResponseHeader) GetMemberId() uint64 { + if x != nil { + return x.MemberId } return 0 } -func (m *ResponseHeader) GetRevision() int64 { - if m != nil { - return m.Revision +func (x *ResponseHeader) GetRevision() int64 { + if x != nil { + return x.Revision } return 0 } -func (m *ResponseHeader) GetRaftTerm() uint64 { - if m != nil { - return m.RaftTerm +func (x *ResponseHeader) GetRaftTerm() uint64 { + if x != nil { + return x.RaftTerm } return 0 } type RangeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // key is the first key for the range. If range_end is not given, the request only looks up key. Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // range_end is the upper bound on the requested range [key, range_end). @@ -387,138 +552,135 @@ type RangeRequest struct { MinCreateRevision int64 `protobuf:"varint,12,opt,name=min_create_revision,json=minCreateRevision,proto3" json:"min_create_revision,omitempty"` // max_create_revision is the upper bound for returned key create revisions; all keys with // greater create revisions will be filtered away. - MaxCreateRevision int64 `protobuf:"varint,13,opt,name=max_create_revision,json=maxCreateRevision,proto3" json:"max_create_revision,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + MaxCreateRevision int64 `protobuf:"varint,13,opt,name=max_create_revision,json=maxCreateRevision,proto3" json:"max_create_revision,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *RangeRequest) Reset() { *m = RangeRequest{} } -func (m *RangeRequest) String() string { return proto.CompactTextString(m) } -func (*RangeRequest) ProtoMessage() {} -func (*RangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{1} -} -func (m *RangeRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RangeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RangeRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *RangeRequest) Reset() { + *x = RangeRequest{} + mi := &file_rpc_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *RangeRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_RangeRequest.Merge(m, src) -} -func (m *RangeRequest) XXX_Size() int { - return m.Size() + +func (x *RangeRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RangeRequest) XXX_DiscardUnknown() { - xxx_messageInfo_RangeRequest.DiscardUnknown(m) + +func (*RangeRequest) ProtoMessage() {} + +func (x *RangeRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_RangeRequest proto.InternalMessageInfo +// Deprecated: Use RangeRequest.ProtoReflect.Descriptor instead. +func (*RangeRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{1} +} -func (m *RangeRequest) GetKey() []byte { - if m != nil { - return m.Key +func (x *RangeRequest) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func (m *RangeRequest) GetRangeEnd() []byte { - if m != nil { - return m.RangeEnd +func (x *RangeRequest) GetRangeEnd() []byte { + if x != nil { + return x.RangeEnd } return nil } -func (m *RangeRequest) GetLimit() int64 { - if m != nil { - return m.Limit +func (x *RangeRequest) GetLimit() int64 { + if x != nil { + return x.Limit } return 0 } -func (m *RangeRequest) GetRevision() int64 { - if m != nil { - return m.Revision +func (x *RangeRequest) GetRevision() int64 { + if x != nil { + return x.Revision } return 0 } -func (m *RangeRequest) GetSortOrder() RangeRequest_SortOrder { - if m != nil { - return m.SortOrder +func (x *RangeRequest) GetSortOrder() RangeRequest_SortOrder { + if x != nil { + return x.SortOrder } return RangeRequest_NONE } -func (m *RangeRequest) GetSortTarget() RangeRequest_SortTarget { - if m != nil { - return m.SortTarget +func (x *RangeRequest) GetSortTarget() RangeRequest_SortTarget { + if x != nil { + return x.SortTarget } return RangeRequest_KEY } -func (m *RangeRequest) GetSerializable() bool { - if m != nil { - return m.Serializable +func (x *RangeRequest) GetSerializable() bool { + if x != nil { + return x.Serializable } return false } -func (m *RangeRequest) GetKeysOnly() bool { - if m != nil { - return m.KeysOnly +func (x *RangeRequest) GetKeysOnly() bool { + if x != nil { + return x.KeysOnly } return false } -func (m *RangeRequest) GetCountOnly() bool { - if m != nil { - return m.CountOnly +func (x *RangeRequest) GetCountOnly() bool { + if x != nil { + return x.CountOnly } return false } -func (m *RangeRequest) GetMinModRevision() int64 { - if m != nil { - return m.MinModRevision +func (x *RangeRequest) GetMinModRevision() int64 { + if x != nil { + return x.MinModRevision } return 0 } -func (m *RangeRequest) GetMaxModRevision() int64 { - if m != nil { - return m.MaxModRevision +func (x *RangeRequest) GetMaxModRevision() int64 { + if x != nil { + return x.MaxModRevision } return 0 } -func (m *RangeRequest) GetMinCreateRevision() int64 { - if m != nil { - return m.MinCreateRevision +func (x *RangeRequest) GetMinCreateRevision() int64 { + if x != nil { + return x.MinCreateRevision } return 0 } -func (m *RangeRequest) GetMaxCreateRevision() int64 { - if m != nil { - return m.MaxCreateRevision +func (x *RangeRequest) GetMaxCreateRevision() int64 { + if x != nil { + return x.MaxCreateRevision } return 0 } type RangeResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // kvs is the list of key-value pairs matched by the range request. // kvs is empty when count is requested. Kvs []*mvccpb.KeyValue `protobuf:"bytes,2,rep,name=kvs,proto3" json:"kvs,omitempty"` @@ -527,74 +689,71 @@ type RangeResponse struct { // count is set to the actual number of keys within the range when requested. // Unlike Kvs, it is unaffected by limits and filters (e.g., Min/Max, Create/Modify, Revisions) // and reflects the full count within the specified range. - Count int64 `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Count int64 `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *RangeResponse) Reset() { *m = RangeResponse{} } -func (m *RangeResponse) String() string { return proto.CompactTextString(m) } -func (*RangeResponse) ProtoMessage() {} -func (*RangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{2} -} -func (m *RangeResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RangeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RangeResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *RangeResponse) Reset() { + *x = RangeResponse{} + mi := &file_rpc_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *RangeResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_RangeResponse.Merge(m, src) -} -func (m *RangeResponse) XXX_Size() int { - return m.Size() + +func (x *RangeResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RangeResponse) XXX_DiscardUnknown() { - xxx_messageInfo_RangeResponse.DiscardUnknown(m) + +func (*RangeResponse) ProtoMessage() {} + +func (x *RangeResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_RangeResponse proto.InternalMessageInfo +// Deprecated: Use RangeResponse.ProtoReflect.Descriptor instead. +func (*RangeResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{2} +} -func (m *RangeResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *RangeResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *RangeResponse) GetKvs() []*mvccpb.KeyValue { - if m != nil { - return m.Kvs +func (x *RangeResponse) GetKvs() []*mvccpb.KeyValue { + if x != nil { + return x.Kvs } return nil } -func (m *RangeResponse) GetMore() bool { - if m != nil { - return m.More +func (x *RangeResponse) GetMore() bool { + if x != nil { + return x.More } return false } -func (m *RangeResponse) GetCount() int64 { - if m != nil { - return m.Count +func (x *RangeResponse) GetCount() int64 { + if x != nil { + return x.Count } return 0 } type PutRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // key is the key, in bytes, to put into the key-value store. Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // value is the value, in bytes, to associate with the key in the key-value store. @@ -610,144 +769,138 @@ type PutRequest struct { IgnoreValue bool `protobuf:"varint,5,opt,name=ignore_value,json=ignoreValue,proto3" json:"ignore_value,omitempty"` // If ignore_lease is set, etcd updates the key using its current lease. // Returns an error if the key does not exist. - IgnoreLease bool `protobuf:"varint,6,opt,name=ignore_lease,json=ignoreLease,proto3" json:"ignore_lease,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + IgnoreLease bool `protobuf:"varint,6,opt,name=ignore_lease,json=ignoreLease,proto3" json:"ignore_lease,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *PutRequest) Reset() { *m = PutRequest{} } -func (m *PutRequest) String() string { return proto.CompactTextString(m) } -func (*PutRequest) ProtoMessage() {} -func (*PutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{3} -} -func (m *PutRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *PutRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_PutRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *PutRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_PutRequest.Merge(m, src) +func (x *PutRequest) Reset() { + *x = PutRequest{} + mi := &file_rpc_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *PutRequest) XXX_Size() int { - return m.Size() + +func (x *PutRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PutRequest) XXX_DiscardUnknown() { - xxx_messageInfo_PutRequest.DiscardUnknown(m) + +func (*PutRequest) ProtoMessage() {} + +func (x *PutRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PutRequest proto.InternalMessageInfo +// Deprecated: Use PutRequest.ProtoReflect.Descriptor instead. +func (*PutRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{3} +} -func (m *PutRequest) GetKey() []byte { - if m != nil { - return m.Key +func (x *PutRequest) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func (m *PutRequest) GetValue() []byte { - if m != nil { - return m.Value +func (x *PutRequest) GetValue() []byte { + if x != nil { + return x.Value } return nil } -func (m *PutRequest) GetLease() int64 { - if m != nil { - return m.Lease +func (x *PutRequest) GetLease() int64 { + if x != nil { + return x.Lease } return 0 } -func (m *PutRequest) GetPrevKv() bool { - if m != nil { - return m.PrevKv +func (x *PutRequest) GetPrevKv() bool { + if x != nil { + return x.PrevKv } return false } -func (m *PutRequest) GetIgnoreValue() bool { - if m != nil { - return m.IgnoreValue +func (x *PutRequest) GetIgnoreValue() bool { + if x != nil { + return x.IgnoreValue } return false } -func (m *PutRequest) GetIgnoreLease() bool { - if m != nil { - return m.IgnoreLease +func (x *PutRequest) GetIgnoreLease() bool { + if x != nil { + return x.IgnoreLease } return false } type PutResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // if prev_kv is set in the request, the previous key-value pair will be returned. - PrevKv *mvccpb.KeyValue `protobuf:"bytes,2,opt,name=prev_kv,json=prevKv,proto3" json:"prev_kv,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + PrevKv *mvccpb.KeyValue `protobuf:"bytes,2,opt,name=prev_kv,json=prevKv,proto3" json:"prev_kv,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *PutResponse) Reset() { *m = PutResponse{} } -func (m *PutResponse) String() string { return proto.CompactTextString(m) } -func (*PutResponse) ProtoMessage() {} -func (*PutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{4} -} -func (m *PutResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *PutResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_PutResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *PutResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_PutResponse.Merge(m, src) +func (x *PutResponse) Reset() { + *x = PutResponse{} + mi := &file_rpc_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *PutResponse) XXX_Size() int { - return m.Size() + +func (x *PutResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PutResponse) XXX_DiscardUnknown() { - xxx_messageInfo_PutResponse.DiscardUnknown(m) + +func (*PutResponse) ProtoMessage() {} + +func (x *PutResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PutResponse proto.InternalMessageInfo +// Deprecated: Use PutResponse.ProtoReflect.Descriptor instead. +func (*PutResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{4} +} -func (m *PutResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *PutResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *PutResponse) GetPrevKv() *mvccpb.KeyValue { - if m != nil { - return m.PrevKv +func (x *PutResponse) GetPrevKv() *mvccpb.KeyValue { + if x != nil { + return x.PrevKv } return nil } type DeleteRangeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // key is the first key to delete in the range. Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // range_end is the key following the last key to delete for the range [key, range_end). @@ -758,371 +911,366 @@ type DeleteRangeRequest struct { RangeEnd []byte `protobuf:"bytes,2,opt,name=range_end,json=rangeEnd,proto3" json:"range_end,omitempty"` // If prev_kv is set, etcd gets the previous key-value pairs before deleting it. // The previous key-value pairs will be returned in the delete response. - PrevKv bool `protobuf:"varint,3,opt,name=prev_kv,json=prevKv,proto3" json:"prev_kv,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + PrevKv bool `protobuf:"varint,3,opt,name=prev_kv,json=prevKv,proto3" json:"prev_kv,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *DeleteRangeRequest) Reset() { *m = DeleteRangeRequest{} } -func (m *DeleteRangeRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteRangeRequest) ProtoMessage() {} -func (*DeleteRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{5} -} -func (m *DeleteRangeRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DeleteRangeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_DeleteRangeRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *DeleteRangeRequest) Reset() { + *x = DeleteRangeRequest{} + mi := &file_rpc_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *DeleteRangeRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteRangeRequest.Merge(m, src) -} -func (m *DeleteRangeRequest) XXX_Size() int { - return m.Size() + +func (x *DeleteRangeRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DeleteRangeRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteRangeRequest.DiscardUnknown(m) + +func (*DeleteRangeRequest) ProtoMessage() {} + +func (x *DeleteRangeRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DeleteRangeRequest proto.InternalMessageInfo +// Deprecated: Use DeleteRangeRequest.ProtoReflect.Descriptor instead. +func (*DeleteRangeRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{5} +} -func (m *DeleteRangeRequest) GetKey() []byte { - if m != nil { - return m.Key +func (x *DeleteRangeRequest) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func (m *DeleteRangeRequest) GetRangeEnd() []byte { - if m != nil { - return m.RangeEnd +func (x *DeleteRangeRequest) GetRangeEnd() []byte { + if x != nil { + return x.RangeEnd } return nil } -func (m *DeleteRangeRequest) GetPrevKv() bool { - if m != nil { - return m.PrevKv +func (x *DeleteRangeRequest) GetPrevKv() bool { + if x != nil { + return x.PrevKv } return false } type DeleteRangeResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // deleted is the number of keys deleted by the delete range request. Deleted int64 `protobuf:"varint,2,opt,name=deleted,proto3" json:"deleted,omitempty"` // if prev_kv is set in the request, the previous key-value pairs will be returned. - PrevKvs []*mvccpb.KeyValue `protobuf:"bytes,3,rep,name=prev_kvs,json=prevKvs,proto3" json:"prev_kvs,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + PrevKvs []*mvccpb.KeyValue `protobuf:"bytes,3,rep,name=prev_kvs,json=prevKvs,proto3" json:"prev_kvs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *DeleteRangeResponse) Reset() { *m = DeleteRangeResponse{} } -func (m *DeleteRangeResponse) String() string { return proto.CompactTextString(m) } -func (*DeleteRangeResponse) ProtoMessage() {} -func (*DeleteRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{6} -} -func (m *DeleteRangeResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DeleteRangeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_DeleteRangeResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *DeleteRangeResponse) Reset() { + *x = DeleteRangeResponse{} + mi := &file_rpc_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *DeleteRangeResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteRangeResponse.Merge(m, src) -} -func (m *DeleteRangeResponse) XXX_Size() int { - return m.Size() + +func (x *DeleteRangeResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DeleteRangeResponse) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteRangeResponse.DiscardUnknown(m) + +func (*DeleteRangeResponse) ProtoMessage() {} + +func (x *DeleteRangeResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DeleteRangeResponse proto.InternalMessageInfo +// Deprecated: Use DeleteRangeResponse.ProtoReflect.Descriptor instead. +func (*DeleteRangeResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{6} +} -func (m *DeleteRangeResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *DeleteRangeResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *DeleteRangeResponse) GetDeleted() int64 { - if m != nil { - return m.Deleted +func (x *DeleteRangeResponse) GetDeleted() int64 { + if x != nil { + return x.Deleted } return 0 } -func (m *DeleteRangeResponse) GetPrevKvs() []*mvccpb.KeyValue { - if m != nil { - return m.PrevKvs +func (x *DeleteRangeResponse) GetPrevKvs() []*mvccpb.KeyValue { + if x != nil { + return x.PrevKvs } return nil } type RequestOp struct { + state protoimpl.MessageState `protogen:"open.v1"` // request is a union of request types accepted by a transaction. // // Types that are valid to be assigned to Request: + // // *RequestOp_RequestRange // *RequestOp_RequestPut // *RequestOp_RequestDeleteRange // *RequestOp_RequestTxn - Request isRequestOp_Request `protobuf_oneof:"request"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Request isRequestOp_Request `protobuf_oneof:"request"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *RequestOp) Reset() { *m = RequestOp{} } -func (m *RequestOp) String() string { return proto.CompactTextString(m) } -func (*RequestOp) ProtoMessage() {} -func (*RequestOp) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{7} -} -func (m *RequestOp) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RequestOp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RequestOp.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RequestOp) XXX_Merge(src proto.Message) { - xxx_messageInfo_RequestOp.Merge(m, src) -} -func (m *RequestOp) XXX_Size() int { - return m.Size() +func (x *RequestOp) Reset() { + *x = RequestOp{} + mi := &file_rpc_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *RequestOp) XXX_DiscardUnknown() { - xxx_messageInfo_RequestOp.DiscardUnknown(m) + +func (x *RequestOp) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_RequestOp proto.InternalMessageInfo +func (*RequestOp) ProtoMessage() {} -type isRequestOp_Request interface { - isRequestOp_Request() - MarshalTo([]byte) (int, error) - Size() int +func (x *RequestOp) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type RequestOp_RequestRange struct { - RequestRange *RangeRequest `protobuf:"bytes,1,opt,name=request_range,json=requestRange,proto3,oneof" json:"request_range,omitempty"` -} -type RequestOp_RequestPut struct { - RequestPut *PutRequest `protobuf:"bytes,2,opt,name=request_put,json=requestPut,proto3,oneof" json:"request_put,omitempty"` -} -type RequestOp_RequestDeleteRange struct { - RequestDeleteRange *DeleteRangeRequest `protobuf:"bytes,3,opt,name=request_delete_range,json=requestDeleteRange,proto3,oneof" json:"request_delete_range,omitempty"` -} -type RequestOp_RequestTxn struct { - RequestTxn *TxnRequest `protobuf:"bytes,4,opt,name=request_txn,json=requestTxn,proto3,oneof" json:"request_txn,omitempty"` +// Deprecated: Use RequestOp.ProtoReflect.Descriptor instead. +func (*RequestOp) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{7} } -func (*RequestOp_RequestRange) isRequestOp_Request() {} -func (*RequestOp_RequestPut) isRequestOp_Request() {} -func (*RequestOp_RequestDeleteRange) isRequestOp_Request() {} -func (*RequestOp_RequestTxn) isRequestOp_Request() {} - -func (m *RequestOp) GetRequest() isRequestOp_Request { - if m != nil { - return m.Request +func (x *RequestOp) GetRequest() isRequestOp_Request { + if x != nil { + return x.Request } return nil } -func (m *RequestOp) GetRequestRange() *RangeRequest { - if x, ok := m.GetRequest().(*RequestOp_RequestRange); ok { - return x.RequestRange +func (x *RequestOp) GetRequestRange() *RangeRequest { + if x != nil { + if x, ok := x.Request.(*RequestOp_RequestRange); ok { + return x.RequestRange + } } return nil } -func (m *RequestOp) GetRequestPut() *PutRequest { - if x, ok := m.GetRequest().(*RequestOp_RequestPut); ok { - return x.RequestPut +func (x *RequestOp) GetRequestPut() *PutRequest { + if x != nil { + if x, ok := x.Request.(*RequestOp_RequestPut); ok { + return x.RequestPut + } } return nil } -func (m *RequestOp) GetRequestDeleteRange() *DeleteRangeRequest { - if x, ok := m.GetRequest().(*RequestOp_RequestDeleteRange); ok { - return x.RequestDeleteRange +func (x *RequestOp) GetRequestDeleteRange() *DeleteRangeRequest { + if x != nil { + if x, ok := x.Request.(*RequestOp_RequestDeleteRange); ok { + return x.RequestDeleteRange + } } return nil } -func (m *RequestOp) GetRequestTxn() *TxnRequest { - if x, ok := m.GetRequest().(*RequestOp_RequestTxn); ok { - return x.RequestTxn +func (x *RequestOp) GetRequestTxn() *TxnRequest { + if x != nil { + if x, ok := x.Request.(*RequestOp_RequestTxn); ok { + return x.RequestTxn + } } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*RequestOp) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*RequestOp_RequestRange)(nil), - (*RequestOp_RequestPut)(nil), - (*RequestOp_RequestDeleteRange)(nil), - (*RequestOp_RequestTxn)(nil), - } +type isRequestOp_Request interface { + isRequestOp_Request() +} + +type RequestOp_RequestRange struct { + RequestRange *RangeRequest `protobuf:"bytes,1,opt,name=request_range,json=requestRange,proto3,oneof"` +} + +type RequestOp_RequestPut struct { + RequestPut *PutRequest `protobuf:"bytes,2,opt,name=request_put,json=requestPut,proto3,oneof"` } +type RequestOp_RequestDeleteRange struct { + RequestDeleteRange *DeleteRangeRequest `protobuf:"bytes,3,opt,name=request_delete_range,json=requestDeleteRange,proto3,oneof"` +} + +type RequestOp_RequestTxn struct { + RequestTxn *TxnRequest `protobuf:"bytes,4,opt,name=request_txn,json=requestTxn,proto3,oneof"` +} + +func (*RequestOp_RequestRange) isRequestOp_Request() {} + +func (*RequestOp_RequestPut) isRequestOp_Request() {} + +func (*RequestOp_RequestDeleteRange) isRequestOp_Request() {} + +func (*RequestOp_RequestTxn) isRequestOp_Request() {} + type ResponseOp struct { + state protoimpl.MessageState `protogen:"open.v1"` // response is a union of response types returned by a transaction. // // Types that are valid to be assigned to Response: + // // *ResponseOp_ResponseRange // *ResponseOp_ResponsePut // *ResponseOp_ResponseDeleteRange // *ResponseOp_ResponseTxn - Response isResponseOp_Response `protobuf_oneof:"response"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Response isResponseOp_Response `protobuf_oneof:"response"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *ResponseOp) Reset() { *m = ResponseOp{} } -func (m *ResponseOp) String() string { return proto.CompactTextString(m) } -func (*ResponseOp) ProtoMessage() {} -func (*ResponseOp) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{8} -} -func (m *ResponseOp) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ResponseOp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ResponseOp.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ResponseOp) XXX_Merge(src proto.Message) { - xxx_messageInfo_ResponseOp.Merge(m, src) +func (x *ResponseOp) Reset() { + *x = ResponseOp{} + mi := &file_rpc_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *ResponseOp) XXX_Size() int { - return m.Size() -} -func (m *ResponseOp) XXX_DiscardUnknown() { - xxx_messageInfo_ResponseOp.DiscardUnknown(m) + +func (x *ResponseOp) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ResponseOp proto.InternalMessageInfo +func (*ResponseOp) ProtoMessage() {} -type isResponseOp_Response interface { - isResponseOp_Response() - MarshalTo([]byte) (int, error) - Size() int +func (x *ResponseOp) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type ResponseOp_ResponseRange struct { - ResponseRange *RangeResponse `protobuf:"bytes,1,opt,name=response_range,json=responseRange,proto3,oneof" json:"response_range,omitempty"` -} -type ResponseOp_ResponsePut struct { - ResponsePut *PutResponse `protobuf:"bytes,2,opt,name=response_put,json=responsePut,proto3,oneof" json:"response_put,omitempty"` -} -type ResponseOp_ResponseDeleteRange struct { - ResponseDeleteRange *DeleteRangeResponse `protobuf:"bytes,3,opt,name=response_delete_range,json=responseDeleteRange,proto3,oneof" json:"response_delete_range,omitempty"` -} -type ResponseOp_ResponseTxn struct { - ResponseTxn *TxnResponse `protobuf:"bytes,4,opt,name=response_txn,json=responseTxn,proto3,oneof" json:"response_txn,omitempty"` +// Deprecated: Use ResponseOp.ProtoReflect.Descriptor instead. +func (*ResponseOp) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{8} } -func (*ResponseOp_ResponseRange) isResponseOp_Response() {} -func (*ResponseOp_ResponsePut) isResponseOp_Response() {} -func (*ResponseOp_ResponseDeleteRange) isResponseOp_Response() {} -func (*ResponseOp_ResponseTxn) isResponseOp_Response() {} - -func (m *ResponseOp) GetResponse() isResponseOp_Response { - if m != nil { - return m.Response +func (x *ResponseOp) GetResponse() isResponseOp_Response { + if x != nil { + return x.Response } return nil } -func (m *ResponseOp) GetResponseRange() *RangeResponse { - if x, ok := m.GetResponse().(*ResponseOp_ResponseRange); ok { - return x.ResponseRange +func (x *ResponseOp) GetResponseRange() *RangeResponse { + if x != nil { + if x, ok := x.Response.(*ResponseOp_ResponseRange); ok { + return x.ResponseRange + } } return nil } -func (m *ResponseOp) GetResponsePut() *PutResponse { - if x, ok := m.GetResponse().(*ResponseOp_ResponsePut); ok { - return x.ResponsePut +func (x *ResponseOp) GetResponsePut() *PutResponse { + if x != nil { + if x, ok := x.Response.(*ResponseOp_ResponsePut); ok { + return x.ResponsePut + } } return nil } -func (m *ResponseOp) GetResponseDeleteRange() *DeleteRangeResponse { - if x, ok := m.GetResponse().(*ResponseOp_ResponseDeleteRange); ok { - return x.ResponseDeleteRange +func (x *ResponseOp) GetResponseDeleteRange() *DeleteRangeResponse { + if x != nil { + if x, ok := x.Response.(*ResponseOp_ResponseDeleteRange); ok { + return x.ResponseDeleteRange + } } return nil } -func (m *ResponseOp) GetResponseTxn() *TxnResponse { - if x, ok := m.GetResponse().(*ResponseOp_ResponseTxn); ok { - return x.ResponseTxn +func (x *ResponseOp) GetResponseTxn() *TxnResponse { + if x != nil { + if x, ok := x.Response.(*ResponseOp_ResponseTxn); ok { + return x.ResponseTxn + } } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*ResponseOp) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*ResponseOp_ResponseRange)(nil), - (*ResponseOp_ResponsePut)(nil), - (*ResponseOp_ResponseDeleteRange)(nil), - (*ResponseOp_ResponseTxn)(nil), - } +type isResponseOp_Response interface { + isResponseOp_Response() } -type Compare struct { - // result is logical comparison operation for this comparison. - Result Compare_CompareResult `protobuf:"varint,1,opt,name=result,proto3,enum=etcdserverpb.Compare_CompareResult" json:"result,omitempty"` - // target is the key-value field to inspect for the comparison. - Target Compare_CompareTarget `protobuf:"varint,2,opt,name=target,proto3,enum=etcdserverpb.Compare_CompareTarget" json:"target,omitempty"` +type ResponseOp_ResponseRange struct { + ResponseRange *RangeResponse `protobuf:"bytes,1,opt,name=response_range,json=responseRange,proto3,oneof"` +} + +type ResponseOp_ResponsePut struct { + ResponsePut *PutResponse `protobuf:"bytes,2,opt,name=response_put,json=responsePut,proto3,oneof"` +} + +type ResponseOp_ResponseDeleteRange struct { + ResponseDeleteRange *DeleteRangeResponse `protobuf:"bytes,3,opt,name=response_delete_range,json=responseDeleteRange,proto3,oneof"` +} + +type ResponseOp_ResponseTxn struct { + ResponseTxn *TxnResponse `protobuf:"bytes,4,opt,name=response_txn,json=responseTxn,proto3,oneof"` +} + +func (*ResponseOp_ResponseRange) isResponseOp_Response() {} + +func (*ResponseOp_ResponsePut) isResponseOp_Response() {} + +func (*ResponseOp_ResponseDeleteRange) isResponseOp_Response() {} + +func (*ResponseOp_ResponseTxn) isResponseOp_Response() {} + +type Compare struct { + state protoimpl.MessageState `protogen:"open.v1"` + // result is logical comparison operation for this comparison. + Result Compare_CompareResult `protobuf:"varint,1,opt,name=result,proto3,enum=etcdserverpb.Compare_CompareResult" json:"result,omitempty"` + // target is the key-value field to inspect for the comparison. + Target Compare_CompareTarget `protobuf:"varint,2,opt,name=target,proto3,enum=etcdserverpb.Compare_CompareTarget" json:"target,omitempty"` // key is the subject key for the comparison operation. Key []byte `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` // Types that are valid to be assigned to TargetUnion: + // // *Compare_Version // *Compare_CreateRevision // *Compare_ModRevision @@ -1131,154 +1279,160 @@ type Compare struct { TargetUnion isCompare_TargetUnion `protobuf_oneof:"target_union"` // range_end compares the given target to all keys in the range [key, range_end). // See RangeRequest for more details on key ranges. - RangeEnd []byte `protobuf:"bytes,64,opt,name=range_end,json=rangeEnd,proto3" json:"range_end,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + RangeEnd []byte `protobuf:"bytes,64,opt,name=range_end,json=rangeEnd,proto3" json:"range_end,omitempty"` // TODO: fill out with most of the rest of RangeRequest fields when needed. + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *Compare) Reset() { *m = Compare{} } -func (m *Compare) String() string { return proto.CompactTextString(m) } -func (*Compare) ProtoMessage() {} -func (*Compare) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{9} -} -func (m *Compare) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Compare) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Compare.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Compare) XXX_Merge(src proto.Message) { - xxx_messageInfo_Compare.Merge(m, src) -} -func (m *Compare) XXX_Size() int { - return m.Size() +func (x *Compare) Reset() { + *x = Compare{} + mi := &file_rpc_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *Compare) XXX_DiscardUnknown() { - xxx_messageInfo_Compare.DiscardUnknown(m) + +func (x *Compare) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_Compare proto.InternalMessageInfo +func (*Compare) ProtoMessage() {} -type isCompare_TargetUnion interface { - isCompare_TargetUnion() - MarshalTo([]byte) (int, error) - Size() int +func (x *Compare) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type Compare_Version struct { - Version int64 `protobuf:"varint,4,opt,name=version,proto3,oneof" json:"version,omitempty"` -} -type Compare_CreateRevision struct { - CreateRevision int64 `protobuf:"varint,5,opt,name=create_revision,json=createRevision,proto3,oneof" json:"create_revision,omitempty"` -} -type Compare_ModRevision struct { - ModRevision int64 `protobuf:"varint,6,opt,name=mod_revision,json=modRevision,proto3,oneof" json:"mod_revision,omitempty"` -} -type Compare_Value struct { - Value []byte `protobuf:"bytes,7,opt,name=value,proto3,oneof" json:"value,omitempty"` -} -type Compare_Lease struct { - Lease int64 `protobuf:"varint,8,opt,name=lease,proto3,oneof" json:"lease,omitempty"` +// Deprecated: Use Compare.ProtoReflect.Descriptor instead. +func (*Compare) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{9} } -func (*Compare_Version) isCompare_TargetUnion() {} -func (*Compare_CreateRevision) isCompare_TargetUnion() {} -func (*Compare_ModRevision) isCompare_TargetUnion() {} -func (*Compare_Value) isCompare_TargetUnion() {} -func (*Compare_Lease) isCompare_TargetUnion() {} - -func (m *Compare) GetTargetUnion() isCompare_TargetUnion { - if m != nil { - return m.TargetUnion +func (x *Compare) GetResult() Compare_CompareResult { + if x != nil { + return x.Result } - return nil + return Compare_EQUAL } -func (m *Compare) GetResult() Compare_CompareResult { - if m != nil { - return m.Result +func (x *Compare) GetTarget() Compare_CompareTarget { + if x != nil { + return x.Target } - return Compare_EQUAL + return Compare_VERSION } -func (m *Compare) GetTarget() Compare_CompareTarget { - if m != nil { - return m.Target +func (x *Compare) GetKey() []byte { + if x != nil { + return x.Key } - return Compare_VERSION + return nil } -func (m *Compare) GetKey() []byte { - if m != nil { - return m.Key +func (x *Compare) GetTargetUnion() isCompare_TargetUnion { + if x != nil { + return x.TargetUnion } return nil } -func (m *Compare) GetVersion() int64 { - if x, ok := m.GetTargetUnion().(*Compare_Version); ok { - return x.Version +func (x *Compare) GetVersion() int64 { + if x != nil { + if x, ok := x.TargetUnion.(*Compare_Version); ok { + return x.Version + } } return 0 } -func (m *Compare) GetCreateRevision() int64 { - if x, ok := m.GetTargetUnion().(*Compare_CreateRevision); ok { - return x.CreateRevision +func (x *Compare) GetCreateRevision() int64 { + if x != nil { + if x, ok := x.TargetUnion.(*Compare_CreateRevision); ok { + return x.CreateRevision + } } return 0 } -func (m *Compare) GetModRevision() int64 { - if x, ok := m.GetTargetUnion().(*Compare_ModRevision); ok { - return x.ModRevision +func (x *Compare) GetModRevision() int64 { + if x != nil { + if x, ok := x.TargetUnion.(*Compare_ModRevision); ok { + return x.ModRevision + } } return 0 } -func (m *Compare) GetValue() []byte { - if x, ok := m.GetTargetUnion().(*Compare_Value); ok { - return x.Value +func (x *Compare) GetValue() []byte { + if x != nil { + if x, ok := x.TargetUnion.(*Compare_Value); ok { + return x.Value + } } return nil } -func (m *Compare) GetLease() int64 { - if x, ok := m.GetTargetUnion().(*Compare_Lease); ok { - return x.Lease +func (x *Compare) GetLease() int64 { + if x != nil { + if x, ok := x.TargetUnion.(*Compare_Lease); ok { + return x.Lease + } } return 0 } -func (m *Compare) GetRangeEnd() []byte { - if m != nil { - return m.RangeEnd +func (x *Compare) GetRangeEnd() []byte { + if x != nil { + return x.RangeEnd } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*Compare) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*Compare_Version)(nil), - (*Compare_CreateRevision)(nil), - (*Compare_ModRevision)(nil), - (*Compare_Value)(nil), - (*Compare_Lease)(nil), - } +type isCompare_TargetUnion interface { + isCompare_TargetUnion() +} + +type Compare_Version struct { + // version is the version of the given key + Version int64 `protobuf:"varint,4,opt,name=version,proto3,oneof"` +} + +type Compare_CreateRevision struct { + // create_revision is the creation revision of the given key + CreateRevision int64 `protobuf:"varint,5,opt,name=create_revision,json=createRevision,proto3,oneof"` +} + +type Compare_ModRevision struct { + // mod_revision is the last modified revision of the given key. + ModRevision int64 `protobuf:"varint,6,opt,name=mod_revision,json=modRevision,proto3,oneof"` +} + +type Compare_Value struct { + // value is the value of the given key, in bytes. + Value []byte `protobuf:"bytes,7,opt,name=value,proto3,oneof"` +} + +type Compare_Lease struct { + // lease is the lease id of the given key. + Lease int64 `protobuf:"varint,8,opt,name=lease,proto3,oneof"` // leave room for more target_union field tags, jump to 64 } +func (*Compare_Version) isCompare_TargetUnion() {} + +func (*Compare_CreateRevision) isCompare_TargetUnion() {} + +func (*Compare_ModRevision) isCompare_TargetUnion() {} + +func (*Compare_Value) isCompare_TargetUnion() {} + +func (*Compare_Lease) isCompare_TargetUnion() {} + // From google paxosdb paper: // Our implementation hinges around a powerful primitive which we call MultiOp. All other database // operations except for iteration are implemented as a single call to MultiOp. A MultiOp is applied atomically @@ -1295,6 +1449,7 @@ func (*Compare) XXX_OneofWrappers() []interface{} { // true. // 3. A list of database operations called f op. Like t op, but executed if guard evaluates to false. type TxnRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // compare is a list of predicates representing a conjunction of terms. // If the comparisons succeed, then the success requests will be processed in order, // and the response will contain their respective responses in order. @@ -1304,128 +1459,121 @@ type TxnRequest struct { // success is a list of requests which will be applied when compare evaluates to true. Success []*RequestOp `protobuf:"bytes,2,rep,name=success,proto3" json:"success,omitempty"` // failure is a list of requests which will be applied when compare evaluates to false. - Failure []*RequestOp `protobuf:"bytes,3,rep,name=failure,proto3" json:"failure,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Failure []*RequestOp `protobuf:"bytes,3,rep,name=failure,proto3" json:"failure,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *TxnRequest) Reset() { *m = TxnRequest{} } -func (m *TxnRequest) String() string { return proto.CompactTextString(m) } -func (*TxnRequest) ProtoMessage() {} -func (*TxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{10} -} -func (m *TxnRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *TxnRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_TxnRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *TxnRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_TxnRequest.Merge(m, src) +func (x *TxnRequest) Reset() { + *x = TxnRequest{} + mi := &file_rpc_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *TxnRequest) XXX_Size() int { - return m.Size() + +func (x *TxnRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *TxnRequest) XXX_DiscardUnknown() { - xxx_messageInfo_TxnRequest.DiscardUnknown(m) + +func (*TxnRequest) ProtoMessage() {} + +func (x *TxnRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_TxnRequest proto.InternalMessageInfo +// Deprecated: Use TxnRequest.ProtoReflect.Descriptor instead. +func (*TxnRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{10} +} -func (m *TxnRequest) GetCompare() []*Compare { - if m != nil { - return m.Compare +func (x *TxnRequest) GetCompare() []*Compare { + if x != nil { + return x.Compare } return nil } -func (m *TxnRequest) GetSuccess() []*RequestOp { - if m != nil { - return m.Success +func (x *TxnRequest) GetSuccess() []*RequestOp { + if x != nil { + return x.Success } return nil } -func (m *TxnRequest) GetFailure() []*RequestOp { - if m != nil { - return m.Failure +func (x *TxnRequest) GetFailure() []*RequestOp { + if x != nil { + return x.Failure } return nil } type TxnResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // succeeded is set to true if the compare evaluated to true or false otherwise. Succeeded bool `protobuf:"varint,2,opt,name=succeeded,proto3" json:"succeeded,omitempty"` // responses is a list of responses corresponding to the results from applying // success if succeeded is true or failure if succeeded is false. - Responses []*ResponseOp `protobuf:"bytes,3,rep,name=responses,proto3" json:"responses,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Responses []*ResponseOp `protobuf:"bytes,3,rep,name=responses,proto3" json:"responses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *TxnResponse) Reset() { *m = TxnResponse{} } -func (m *TxnResponse) String() string { return proto.CompactTextString(m) } -func (*TxnResponse) ProtoMessage() {} -func (*TxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{11} -} -func (m *TxnResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *TxnResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_TxnResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *TxnResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_TxnResponse.Merge(m, src) +func (x *TxnResponse) Reset() { + *x = TxnResponse{} + mi := &file_rpc_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *TxnResponse) XXX_Size() int { - return m.Size() + +func (x *TxnResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *TxnResponse) XXX_DiscardUnknown() { - xxx_messageInfo_TxnResponse.DiscardUnknown(m) + +func (*TxnResponse) ProtoMessage() {} + +func (x *TxnResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_TxnResponse proto.InternalMessageInfo +// Deprecated: Use TxnResponse.ProtoReflect.Descriptor instead. +func (*TxnResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{11} +} -func (m *TxnResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *TxnResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *TxnResponse) GetSucceeded() bool { - if m != nil { - return m.Succeeded +func (x *TxnResponse) GetSucceeded() bool { + if x != nil { + return x.Succeeded } return false } -func (m *TxnResponse) GetResponses() []*ResponseOp { - if m != nil { - return m.Responses +func (x *TxnResponse) GetResponses() []*ResponseOp { + if x != nil { + return x.Responses } return nil } @@ -1433,368 +1581,348 @@ func (m *TxnResponse) GetResponses() []*ResponseOp { // CompactionRequest compacts the key-value store up to a given revision. All superseded keys // with a revision less than the compaction revision will be removed. type CompactionRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // revision is the key-value store revision for the compaction operation. Revision int64 `protobuf:"varint,1,opt,name=revision,proto3" json:"revision,omitempty"` // physical is set so the RPC will wait until the compaction is physically // applied to the local database such that compacted entries are totally // removed from the backend database. - Physical bool `protobuf:"varint,2,opt,name=physical,proto3" json:"physical,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Physical bool `protobuf:"varint,2,opt,name=physical,proto3" json:"physical,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *CompactionRequest) Reset() { *m = CompactionRequest{} } -func (m *CompactionRequest) String() string { return proto.CompactTextString(m) } -func (*CompactionRequest) ProtoMessage() {} -func (*CompactionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{12} -} -func (m *CompactionRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *CompactionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_CompactionRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *CompactionRequest) Reset() { + *x = CompactionRequest{} + mi := &file_rpc_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *CompactionRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CompactionRequest.Merge(m, src) -} -func (m *CompactionRequest) XXX_Size() int { - return m.Size() + +func (x *CompactionRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CompactionRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CompactionRequest.DiscardUnknown(m) + +func (*CompactionRequest) ProtoMessage() {} + +func (x *CompactionRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CompactionRequest proto.InternalMessageInfo +// Deprecated: Use CompactionRequest.ProtoReflect.Descriptor instead. +func (*CompactionRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{12} +} -func (m *CompactionRequest) GetRevision() int64 { - if m != nil { - return m.Revision +func (x *CompactionRequest) GetRevision() int64 { + if x != nil { + return x.Revision } return 0 } -func (m *CompactionRequest) GetPhysical() bool { - if m != nil { - return m.Physical +func (x *CompactionRequest) GetPhysical() bool { + if x != nil { + return x.Physical } return false } type CompactionResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *CompactionResponse) Reset() { *m = CompactionResponse{} } -func (m *CompactionResponse) String() string { return proto.CompactTextString(m) } -func (*CompactionResponse) ProtoMessage() {} -func (*CompactionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{13} -} -func (m *CompactionResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *CompactionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_CompactionResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *CompactionResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CompactionResponse.Merge(m, src) +func (x *CompactionResponse) Reset() { + *x = CompactionResponse{} + mi := &file_rpc_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *CompactionResponse) XXX_Size() int { - return m.Size() + +func (x *CompactionResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CompactionResponse) XXX_DiscardUnknown() { - xxx_messageInfo_CompactionResponse.DiscardUnknown(m) + +func (*CompactionResponse) ProtoMessage() {} + +func (x *CompactionResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CompactionResponse proto.InternalMessageInfo +// Deprecated: Use CompactionResponse.ProtoReflect.Descriptor instead. +func (*CompactionResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{13} +} -func (m *CompactionResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *CompactionResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } type HashRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *HashRequest) Reset() { *m = HashRequest{} } -func (m *HashRequest) String() string { return proto.CompactTextString(m) } -func (*HashRequest) ProtoMessage() {} -func (*HashRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{14} -} -func (m *HashRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *HashRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_HashRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *HashRequest) Reset() { + *x = HashRequest{} + mi := &file_rpc_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *HashRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_HashRequest.Merge(m, src) -} -func (m *HashRequest) XXX_Size() int { - return m.Size() + +func (x *HashRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *HashRequest) XXX_DiscardUnknown() { - xxx_messageInfo_HashRequest.DiscardUnknown(m) + +func (*HashRequest) ProtoMessage() {} + +func (x *HashRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_HashRequest proto.InternalMessageInfo +// Deprecated: Use HashRequest.ProtoReflect.Descriptor instead. +func (*HashRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{14} +} type HashKVRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // revision is the key-value store revision for the hash operation. - Revision int64 `protobuf:"varint,1,opt,name=revision,proto3" json:"revision,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Revision int64 `protobuf:"varint,1,opt,name=revision,proto3" json:"revision,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *HashKVRequest) Reset() { *m = HashKVRequest{} } -func (m *HashKVRequest) String() string { return proto.CompactTextString(m) } -func (*HashKVRequest) ProtoMessage() {} -func (*HashKVRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{15} -} -func (m *HashKVRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *HashKVRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_HashKVRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *HashKVRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_HashKVRequest.Merge(m, src) +func (x *HashKVRequest) Reset() { + *x = HashKVRequest{} + mi := &file_rpc_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *HashKVRequest) XXX_Size() int { - return m.Size() + +func (x *HashKVRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *HashKVRequest) XXX_DiscardUnknown() { - xxx_messageInfo_HashKVRequest.DiscardUnknown(m) + +func (*HashKVRequest) ProtoMessage() {} + +func (x *HashKVRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_HashKVRequest proto.InternalMessageInfo +// Deprecated: Use HashKVRequest.ProtoReflect.Descriptor instead. +func (*HashKVRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{15} +} -func (m *HashKVRequest) GetRevision() int64 { - if m != nil { - return m.Revision +func (x *HashKVRequest) GetRevision() int64 { + if x != nil { + return x.Revision } return 0 } type HashKVResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // hash is the hash value computed from the responding member's MVCC keys up to a given revision. Hash uint32 `protobuf:"varint,2,opt,name=hash,proto3" json:"hash,omitempty"` // compact_revision is the compacted revision of key-value store when hash begins. CompactRevision int64 `protobuf:"varint,3,opt,name=compact_revision,json=compactRevision,proto3" json:"compact_revision,omitempty"` // hash_revision is the revision up to which the hash is calculated. - HashRevision int64 `protobuf:"varint,4,opt,name=hash_revision,json=hashRevision,proto3" json:"hash_revision,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + HashRevision int64 `protobuf:"varint,4,opt,name=hash_revision,json=hashRevision,proto3" json:"hash_revision,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *HashKVResponse) Reset() { *m = HashKVResponse{} } -func (m *HashKVResponse) String() string { return proto.CompactTextString(m) } -func (*HashKVResponse) ProtoMessage() {} -func (*HashKVResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{16} -} -func (m *HashKVResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *HashKVResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_HashKVResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *HashKVResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_HashKVResponse.Merge(m, src) +func (x *HashKVResponse) Reset() { + *x = HashKVResponse{} + mi := &file_rpc_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *HashKVResponse) XXX_Size() int { - return m.Size() + +func (x *HashKVResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *HashKVResponse) XXX_DiscardUnknown() { - xxx_messageInfo_HashKVResponse.DiscardUnknown(m) + +func (*HashKVResponse) ProtoMessage() {} + +func (x *HashKVResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_HashKVResponse proto.InternalMessageInfo +// Deprecated: Use HashKVResponse.ProtoReflect.Descriptor instead. +func (*HashKVResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{16} +} -func (m *HashKVResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *HashKVResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *HashKVResponse) GetHash() uint32 { - if m != nil { - return m.Hash +func (x *HashKVResponse) GetHash() uint32 { + if x != nil { + return x.Hash } return 0 } -func (m *HashKVResponse) GetCompactRevision() int64 { - if m != nil { - return m.CompactRevision +func (x *HashKVResponse) GetCompactRevision() int64 { + if x != nil { + return x.CompactRevision } return 0 } -func (m *HashKVResponse) GetHashRevision() int64 { - if m != nil { - return m.HashRevision +func (x *HashKVResponse) GetHashRevision() int64 { + if x != nil { + return x.HashRevision } return 0 } type HashResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // hash is the hash value computed from the responding member's KV's backend. - Hash uint32 `protobuf:"varint,2,opt,name=hash,proto3" json:"hash,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Hash uint32 `protobuf:"varint,2,opt,name=hash,proto3" json:"hash,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *HashResponse) Reset() { *m = HashResponse{} } -func (m *HashResponse) String() string { return proto.CompactTextString(m) } -func (*HashResponse) ProtoMessage() {} -func (*HashResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{17} -} -func (m *HashResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *HashResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_HashResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *HashResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_HashResponse.Merge(m, src) +func (x *HashResponse) Reset() { + *x = HashResponse{} + mi := &file_rpc_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *HashResponse) XXX_Size() int { - return m.Size() + +func (x *HashResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *HashResponse) XXX_DiscardUnknown() { - xxx_messageInfo_HashResponse.DiscardUnknown(m) + +func (*HashResponse) ProtoMessage() {} + +func (x *HashResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_HashResponse proto.InternalMessageInfo +// Deprecated: Use HashResponse.ProtoReflect.Descriptor instead. +func (*HashResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{17} +} -func (m *HashResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *HashResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *HashResponse) GetHash() uint32 { - if m != nil { - return m.Hash +func (x *HashResponse) GetHash() uint32 { + if x != nil { + return x.Hash } return 0 } type SnapshotRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *SnapshotRequest) Reset() { *m = SnapshotRequest{} } -func (m *SnapshotRequest) String() string { return proto.CompactTextString(m) } -func (*SnapshotRequest) ProtoMessage() {} -func (*SnapshotRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{18} -} -func (m *SnapshotRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *SnapshotRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_SnapshotRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *SnapshotRequest) Reset() { + *x = SnapshotRequest{} + mi := &file_rpc_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *SnapshotRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SnapshotRequest.Merge(m, src) -} -func (m *SnapshotRequest) XXX_Size() int { - return m.Size() + +func (x *SnapshotRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SnapshotRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SnapshotRequest.DiscardUnknown(m) + +func (*SnapshotRequest) ProtoMessage() {} + +func (x *SnapshotRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SnapshotRequest proto.InternalMessageInfo +// Deprecated: Use SnapshotRequest.ProtoReflect.Descriptor instead. +func (*SnapshotRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{18} +} type SnapshotResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` // header has the current key-value store information. The first header in the snapshot // stream indicates the point in time of the snapshot. Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` @@ -1805,177 +1933,171 @@ type SnapshotResponse struct { // local version of server that created the snapshot. // In cluster with binaries with different version, each cluster can return different result. // Informs which etcd server version should be used when restoring the snapshot. - Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *SnapshotResponse) Reset() { *m = SnapshotResponse{} } -func (m *SnapshotResponse) String() string { return proto.CompactTextString(m) } -func (*SnapshotResponse) ProtoMessage() {} -func (*SnapshotResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{19} -} -func (m *SnapshotResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *SnapshotResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_SnapshotResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *SnapshotResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_SnapshotResponse.Merge(m, src) +func (x *SnapshotResponse) Reset() { + *x = SnapshotResponse{} + mi := &file_rpc_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *SnapshotResponse) XXX_Size() int { - return m.Size() + +func (x *SnapshotResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SnapshotResponse) XXX_DiscardUnknown() { - xxx_messageInfo_SnapshotResponse.DiscardUnknown(m) + +func (*SnapshotResponse) ProtoMessage() {} + +func (x *SnapshotResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SnapshotResponse proto.InternalMessageInfo +// Deprecated: Use SnapshotResponse.ProtoReflect.Descriptor instead. +func (*SnapshotResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{19} +} -func (m *SnapshotResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *SnapshotResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *SnapshotResponse) GetRemainingBytes() uint64 { - if m != nil { - return m.RemainingBytes +func (x *SnapshotResponse) GetRemainingBytes() uint64 { + if x != nil { + return x.RemainingBytes } return 0 } -func (m *SnapshotResponse) GetBlob() []byte { - if m != nil { - return m.Blob +func (x *SnapshotResponse) GetBlob() []byte { + if x != nil { + return x.Blob } return nil } -func (m *SnapshotResponse) GetVersion() string { - if m != nil { - return m.Version +func (x *SnapshotResponse) GetVersion() string { + if x != nil { + return x.Version } return "" } type WatchRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // request_union is a request to either create a new watcher or cancel an existing watcher. // // Types that are valid to be assigned to RequestUnion: + // // *WatchRequest_CreateRequest // *WatchRequest_CancelRequest // *WatchRequest_ProgressRequest - RequestUnion isWatchRequest_RequestUnion `protobuf_oneof:"request_union"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + RequestUnion isWatchRequest_RequestUnion `protobuf_oneof:"request_union"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *WatchRequest) Reset() { *m = WatchRequest{} } -func (m *WatchRequest) String() string { return proto.CompactTextString(m) } -func (*WatchRequest) ProtoMessage() {} -func (*WatchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{20} -} -func (m *WatchRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *WatchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_WatchRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *WatchRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_WatchRequest.Merge(m, src) -} -func (m *WatchRequest) XXX_Size() int { - return m.Size() +func (x *WatchRequest) Reset() { + *x = WatchRequest{} + mi := &file_rpc_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *WatchRequest) XXX_DiscardUnknown() { - xxx_messageInfo_WatchRequest.DiscardUnknown(m) + +func (x *WatchRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_WatchRequest proto.InternalMessageInfo +func (*WatchRequest) ProtoMessage() {} -type isWatchRequest_RequestUnion interface { - isWatchRequest_RequestUnion() - MarshalTo([]byte) (int, error) - Size() int +func (x *WatchRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type WatchRequest_CreateRequest struct { - CreateRequest *WatchCreateRequest `protobuf:"bytes,1,opt,name=create_request,json=createRequest,proto3,oneof" json:"create_request,omitempty"` -} -type WatchRequest_CancelRequest struct { - CancelRequest *WatchCancelRequest `protobuf:"bytes,2,opt,name=cancel_request,json=cancelRequest,proto3,oneof" json:"cancel_request,omitempty"` -} -type WatchRequest_ProgressRequest struct { - ProgressRequest *WatchProgressRequest `protobuf:"bytes,3,opt,name=progress_request,json=progressRequest,proto3,oneof" json:"progress_request,omitempty"` +// Deprecated: Use WatchRequest.ProtoReflect.Descriptor instead. +func (*WatchRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{20} } -func (*WatchRequest_CreateRequest) isWatchRequest_RequestUnion() {} -func (*WatchRequest_CancelRequest) isWatchRequest_RequestUnion() {} -func (*WatchRequest_ProgressRequest) isWatchRequest_RequestUnion() {} - -func (m *WatchRequest) GetRequestUnion() isWatchRequest_RequestUnion { - if m != nil { - return m.RequestUnion +func (x *WatchRequest) GetRequestUnion() isWatchRequest_RequestUnion { + if x != nil { + return x.RequestUnion } return nil } -func (m *WatchRequest) GetCreateRequest() *WatchCreateRequest { - if x, ok := m.GetRequestUnion().(*WatchRequest_CreateRequest); ok { - return x.CreateRequest +func (x *WatchRequest) GetCreateRequest() *WatchCreateRequest { + if x != nil { + if x, ok := x.RequestUnion.(*WatchRequest_CreateRequest); ok { + return x.CreateRequest + } } return nil } -func (m *WatchRequest) GetCancelRequest() *WatchCancelRequest { - if x, ok := m.GetRequestUnion().(*WatchRequest_CancelRequest); ok { - return x.CancelRequest +func (x *WatchRequest) GetCancelRequest() *WatchCancelRequest { + if x != nil { + if x, ok := x.RequestUnion.(*WatchRequest_CancelRequest); ok { + return x.CancelRequest + } } return nil } -func (m *WatchRequest) GetProgressRequest() *WatchProgressRequest { - if x, ok := m.GetRequestUnion().(*WatchRequest_ProgressRequest); ok { - return x.ProgressRequest +func (x *WatchRequest) GetProgressRequest() *WatchProgressRequest { + if x != nil { + if x, ok := x.RequestUnion.(*WatchRequest_ProgressRequest); ok { + return x.ProgressRequest + } } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*WatchRequest) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*WatchRequest_CreateRequest)(nil), - (*WatchRequest_CancelRequest)(nil), - (*WatchRequest_ProgressRequest)(nil), - } +type isWatchRequest_RequestUnion interface { + isWatchRequest_RequestUnion() +} + +type WatchRequest_CreateRequest struct { + CreateRequest *WatchCreateRequest `protobuf:"bytes,1,opt,name=create_request,json=createRequest,proto3,oneof"` +} + +type WatchRequest_CancelRequest struct { + CancelRequest *WatchCancelRequest `protobuf:"bytes,2,opt,name=cancel_request,json=cancelRequest,proto3,oneof"` } +type WatchRequest_ProgressRequest struct { + ProgressRequest *WatchProgressRequest `protobuf:"bytes,3,opt,name=progress_request,json=progressRequest,proto3,oneof"` +} + +func (*WatchRequest_CreateRequest) isWatchRequest_RequestUnion() {} + +func (*WatchRequest_CancelRequest) isWatchRequest_RequestUnion() {} + +func (*WatchRequest_ProgressRequest) isWatchRequest_RequestUnion() {} + type WatchCreateRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // key is the key to register for watching. Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // range_end is the end of the range [key, range_end) to watch. If range_end is not given, @@ -2003,145 +2125,138 @@ type WatchCreateRequest struct { // use on the stream will cause an error to be returned. WatchId int64 `protobuf:"varint,7,opt,name=watch_id,json=watchId,proto3" json:"watch_id,omitempty"` // fragment enables splitting large revisions into multiple watch responses. - Fragment bool `protobuf:"varint,8,opt,name=fragment,proto3" json:"fragment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Fragment bool `protobuf:"varint,8,opt,name=fragment,proto3" json:"fragment,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *WatchCreateRequest) Reset() { *m = WatchCreateRequest{} } -func (m *WatchCreateRequest) String() string { return proto.CompactTextString(m) } -func (*WatchCreateRequest) ProtoMessage() {} -func (*WatchCreateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{21} -} -func (m *WatchCreateRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *WatchCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_WatchCreateRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *WatchCreateRequest) Reset() { + *x = WatchCreateRequest{} + mi := &file_rpc_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *WatchCreateRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_WatchCreateRequest.Merge(m, src) -} -func (m *WatchCreateRequest) XXX_Size() int { - return m.Size() + +func (x *WatchCreateRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *WatchCreateRequest) XXX_DiscardUnknown() { - xxx_messageInfo_WatchCreateRequest.DiscardUnknown(m) + +func (*WatchCreateRequest) ProtoMessage() {} + +func (x *WatchCreateRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_WatchCreateRequest proto.InternalMessageInfo +// Deprecated: Use WatchCreateRequest.ProtoReflect.Descriptor instead. +func (*WatchCreateRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{21} +} -func (m *WatchCreateRequest) GetKey() []byte { - if m != nil { - return m.Key +func (x *WatchCreateRequest) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func (m *WatchCreateRequest) GetRangeEnd() []byte { - if m != nil { - return m.RangeEnd +func (x *WatchCreateRequest) GetRangeEnd() []byte { + if x != nil { + return x.RangeEnd } return nil } -func (m *WatchCreateRequest) GetStartRevision() int64 { - if m != nil { - return m.StartRevision +func (x *WatchCreateRequest) GetStartRevision() int64 { + if x != nil { + return x.StartRevision } return 0 } -func (m *WatchCreateRequest) GetProgressNotify() bool { - if m != nil { - return m.ProgressNotify +func (x *WatchCreateRequest) GetProgressNotify() bool { + if x != nil { + return x.ProgressNotify } return false } -func (m *WatchCreateRequest) GetFilters() []WatchCreateRequest_FilterType { - if m != nil { - return m.Filters +func (x *WatchCreateRequest) GetFilters() []WatchCreateRequest_FilterType { + if x != nil { + return x.Filters } return nil } -func (m *WatchCreateRequest) GetPrevKv() bool { - if m != nil { - return m.PrevKv +func (x *WatchCreateRequest) GetPrevKv() bool { + if x != nil { + return x.PrevKv } return false } -func (m *WatchCreateRequest) GetWatchId() int64 { - if m != nil { - return m.WatchId +func (x *WatchCreateRequest) GetWatchId() int64 { + if x != nil { + return x.WatchId } return 0 } -func (m *WatchCreateRequest) GetFragment() bool { - if m != nil { - return m.Fragment +func (x *WatchCreateRequest) GetFragment() bool { + if x != nil { + return x.Fragment } return false } type WatchCancelRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // watch_id is the watcher id to cancel so that no more events are transmitted. - WatchId int64 `protobuf:"varint,1,opt,name=watch_id,json=watchId,proto3" json:"watch_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + WatchId int64 `protobuf:"varint,1,opt,name=watch_id,json=watchId,proto3" json:"watch_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *WatchCancelRequest) Reset() { *m = WatchCancelRequest{} } -func (m *WatchCancelRequest) String() string { return proto.CompactTextString(m) } -func (*WatchCancelRequest) ProtoMessage() {} -func (*WatchCancelRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{22} -} -func (m *WatchCancelRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *WatchCancelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_WatchCancelRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *WatchCancelRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_WatchCancelRequest.Merge(m, src) +func (x *WatchCancelRequest) Reset() { + *x = WatchCancelRequest{} + mi := &file_rpc_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *WatchCancelRequest) XXX_Size() int { - return m.Size() + +func (x *WatchCancelRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *WatchCancelRequest) XXX_DiscardUnknown() { - xxx_messageInfo_WatchCancelRequest.DiscardUnknown(m) + +func (*WatchCancelRequest) ProtoMessage() {} + +func (x *WatchCancelRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_WatchCancelRequest proto.InternalMessageInfo +// Deprecated: Use WatchCancelRequest.ProtoReflect.Descriptor instead. +func (*WatchCancelRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{22} +} -func (m *WatchCancelRequest) GetWatchId() int64 { - if m != nil { - return m.WatchId +func (x *WatchCancelRequest) GetWatchId() int64 { + if x != nil { + return x.WatchId } return 0 } @@ -2149,46 +2264,44 @@ func (m *WatchCancelRequest) GetWatchId() int64 { // Requests the a watch stream progress status be sent in the watch response stream as soon as // possible. type WatchProgressRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *WatchProgressRequest) Reset() { *m = WatchProgressRequest{} } -func (m *WatchProgressRequest) String() string { return proto.CompactTextString(m) } -func (*WatchProgressRequest) ProtoMessage() {} -func (*WatchProgressRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{23} -} -func (m *WatchProgressRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *WatchProgressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_WatchProgressRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *WatchProgressRequest) Reset() { + *x = WatchProgressRequest{} + mi := &file_rpc_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *WatchProgressRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_WatchProgressRequest.Merge(m, src) -} -func (m *WatchProgressRequest) XXX_Size() int { - return m.Size() + +func (x *WatchProgressRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *WatchProgressRequest) XXX_DiscardUnknown() { - xxx_messageInfo_WatchProgressRequest.DiscardUnknown(m) + +func (*WatchProgressRequest) ProtoMessage() {} + +func (x *WatchProgressRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_WatchProgressRequest proto.InternalMessageInfo +// Deprecated: Use WatchProgressRequest.ProtoReflect.Descriptor instead. +func (*WatchProgressRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{23} +} type WatchResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // watch_id is the ID of the watcher that corresponds to the response. WatchId int64 `protobuf:"varint,2,opt,name=watch_id,json=watchId,proto3" json:"watch_id,omitempty"` // created is set to true if the response is for a create watch request. @@ -2212,650 +2325,617 @@ type WatchResponse struct { // cancel_reason indicates the reason for canceling the watcher. CancelReason string `protobuf:"bytes,6,opt,name=cancel_reason,json=cancelReason,proto3" json:"cancel_reason,omitempty"` // framgment is true if large watch response was split over multiple responses. - Fragment bool `protobuf:"varint,7,opt,name=fragment,proto3" json:"fragment,omitempty"` - Events []*mvccpb.Event `protobuf:"bytes,11,rep,name=events,proto3" json:"events,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Fragment bool `protobuf:"varint,7,opt,name=fragment,proto3" json:"fragment,omitempty"` + Events []*mvccpb.Event `protobuf:"bytes,11,rep,name=events,proto3" json:"events,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *WatchResponse) Reset() { *m = WatchResponse{} } -func (m *WatchResponse) String() string { return proto.CompactTextString(m) } -func (*WatchResponse) ProtoMessage() {} -func (*WatchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{24} -} -func (m *WatchResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *WatchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_WatchResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *WatchResponse) Reset() { + *x = WatchResponse{} + mi := &file_rpc_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *WatchResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_WatchResponse.Merge(m, src) -} -func (m *WatchResponse) XXX_Size() int { - return m.Size() + +func (x *WatchResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *WatchResponse) XXX_DiscardUnknown() { - xxx_messageInfo_WatchResponse.DiscardUnknown(m) + +func (*WatchResponse) ProtoMessage() {} + +func (x *WatchResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_WatchResponse proto.InternalMessageInfo +// Deprecated: Use WatchResponse.ProtoReflect.Descriptor instead. +func (*WatchResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{24} +} -func (m *WatchResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *WatchResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *WatchResponse) GetWatchId() int64 { - if m != nil { - return m.WatchId +func (x *WatchResponse) GetWatchId() int64 { + if x != nil { + return x.WatchId } return 0 } -func (m *WatchResponse) GetCreated() bool { - if m != nil { - return m.Created +func (x *WatchResponse) GetCreated() bool { + if x != nil { + return x.Created } return false } -func (m *WatchResponse) GetCanceled() bool { - if m != nil { - return m.Canceled +func (x *WatchResponse) GetCanceled() bool { + if x != nil { + return x.Canceled } return false } -func (m *WatchResponse) GetCompactRevision() int64 { - if m != nil { - return m.CompactRevision +func (x *WatchResponse) GetCompactRevision() int64 { + if x != nil { + return x.CompactRevision } return 0 } -func (m *WatchResponse) GetCancelReason() string { - if m != nil { - return m.CancelReason +func (x *WatchResponse) GetCancelReason() string { + if x != nil { + return x.CancelReason } return "" } -func (m *WatchResponse) GetFragment() bool { - if m != nil { - return m.Fragment +func (x *WatchResponse) GetFragment() bool { + if x != nil { + return x.Fragment } return false } -func (m *WatchResponse) GetEvents() []*mvccpb.Event { - if m != nil { - return m.Events +func (x *WatchResponse) GetEvents() []*mvccpb.Event { + if x != nil { + return x.Events } return nil } type LeaseGrantRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // TTL is the advisory time-to-live in seconds. Expired lease will return -1. TTL int64 `protobuf:"varint,1,opt,name=TTL,proto3" json:"TTL,omitempty"` // ID is the requested ID for the lease. If ID is set to 0, the lessor chooses an ID. - ID int64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ID int64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaseGrantRequest) Reset() { *m = LeaseGrantRequest{} } -func (m *LeaseGrantRequest) String() string { return proto.CompactTextString(m) } -func (*LeaseGrantRequest) ProtoMessage() {} -func (*LeaseGrantRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{25} -} -func (m *LeaseGrantRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseGrantRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseGrantRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *LeaseGrantRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseGrantRequest.Merge(m, src) +func (x *LeaseGrantRequest) Reset() { + *x = LeaseGrantRequest{} + mi := &file_rpc_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaseGrantRequest) XXX_Size() int { - return m.Size() + +func (x *LeaseGrantRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LeaseGrantRequest) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseGrantRequest.DiscardUnknown(m) + +func (*LeaseGrantRequest) ProtoMessage() {} + +func (x *LeaseGrantRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LeaseGrantRequest proto.InternalMessageInfo +// Deprecated: Use LeaseGrantRequest.ProtoReflect.Descriptor instead. +func (*LeaseGrantRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{25} +} -func (m *LeaseGrantRequest) GetTTL() int64 { - if m != nil { - return m.TTL +func (x *LeaseGrantRequest) GetTTL() int64 { + if x != nil { + return x.TTL } return 0 } -func (m *LeaseGrantRequest) GetID() int64 { - if m != nil { - return m.ID +func (x *LeaseGrantRequest) GetID() int64 { + if x != nil { + return x.ID } return 0 } type LeaseGrantResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // ID is the lease ID for the granted lease. ID int64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID,omitempty"` // TTL is the server chosen lease time-to-live in seconds. - TTL int64 `protobuf:"varint,3,opt,name=TTL,proto3" json:"TTL,omitempty"` - Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + TTL int64 `protobuf:"varint,3,opt,name=TTL,proto3" json:"TTL,omitempty"` + Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaseGrantResponse) Reset() { *m = LeaseGrantResponse{} } -func (m *LeaseGrantResponse) String() string { return proto.CompactTextString(m) } -func (*LeaseGrantResponse) ProtoMessage() {} -func (*LeaseGrantResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{26} -} -func (m *LeaseGrantResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseGrantResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseGrantResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *LeaseGrantResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseGrantResponse.Merge(m, src) +func (x *LeaseGrantResponse) Reset() { + *x = LeaseGrantResponse{} + mi := &file_rpc_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaseGrantResponse) XXX_Size() int { - return m.Size() + +func (x *LeaseGrantResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LeaseGrantResponse) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseGrantResponse.DiscardUnknown(m) + +func (*LeaseGrantResponse) ProtoMessage() {} + +func (x *LeaseGrantResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LeaseGrantResponse proto.InternalMessageInfo +// Deprecated: Use LeaseGrantResponse.ProtoReflect.Descriptor instead. +func (*LeaseGrantResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{26} +} -func (m *LeaseGrantResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *LeaseGrantResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *LeaseGrantResponse) GetID() int64 { - if m != nil { - return m.ID +func (x *LeaseGrantResponse) GetID() int64 { + if x != nil { + return x.ID } return 0 } -func (m *LeaseGrantResponse) GetTTL() int64 { - if m != nil { - return m.TTL +func (x *LeaseGrantResponse) GetTTL() int64 { + if x != nil { + return x.TTL } return 0 } -func (m *LeaseGrantResponse) GetError() string { - if m != nil { - return m.Error +func (x *LeaseGrantResponse) GetError() string { + if x != nil { + return x.Error } return "" } type LeaseRevokeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // ID is the lease ID to revoke. When the ID is revoked, all associated keys will be deleted. - ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaseRevokeRequest) Reset() { *m = LeaseRevokeRequest{} } -func (m *LeaseRevokeRequest) String() string { return proto.CompactTextString(m) } -func (*LeaseRevokeRequest) ProtoMessage() {} -func (*LeaseRevokeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{27} -} -func (m *LeaseRevokeRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseRevokeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseRevokeRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *LeaseRevokeRequest) Reset() { + *x = LeaseRevokeRequest{} + mi := &file_rpc_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaseRevokeRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseRevokeRequest.Merge(m, src) -} -func (m *LeaseRevokeRequest) XXX_Size() int { - return m.Size() + +func (x *LeaseRevokeRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LeaseRevokeRequest) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseRevokeRequest.DiscardUnknown(m) + +func (*LeaseRevokeRequest) ProtoMessage() {} + +func (x *LeaseRevokeRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LeaseRevokeRequest proto.InternalMessageInfo +// Deprecated: Use LeaseRevokeRequest.ProtoReflect.Descriptor instead. +func (*LeaseRevokeRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{27} +} -func (m *LeaseRevokeRequest) GetID() int64 { - if m != nil { - return m.ID +func (x *LeaseRevokeRequest) GetID() int64 { + if x != nil { + return x.ID } return 0 } type LeaseRevokeResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaseRevokeResponse) Reset() { *m = LeaseRevokeResponse{} } -func (m *LeaseRevokeResponse) String() string { return proto.CompactTextString(m) } -func (*LeaseRevokeResponse) ProtoMessage() {} -func (*LeaseRevokeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{28} -} -func (m *LeaseRevokeResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseRevokeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseRevokeResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *LeaseRevokeResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseRevokeResponse.Merge(m, src) +func (x *LeaseRevokeResponse) Reset() { + *x = LeaseRevokeResponse{} + mi := &file_rpc_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaseRevokeResponse) XXX_Size() int { - return m.Size() + +func (x *LeaseRevokeResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LeaseRevokeResponse) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseRevokeResponse.DiscardUnknown(m) + +func (*LeaseRevokeResponse) ProtoMessage() {} + +func (x *LeaseRevokeResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LeaseRevokeResponse proto.InternalMessageInfo +// Deprecated: Use LeaseRevokeResponse.ProtoReflect.Descriptor instead. +func (*LeaseRevokeResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{28} +} -func (m *LeaseRevokeResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *LeaseRevokeResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } type LeaseCheckpoint struct { + state protoimpl.MessageState `protogen:"open.v1"` // ID is the lease ID to checkpoint. ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` // Remaining_TTL is the remaining time until expiry of the lease. - Remaining_TTL int64 `protobuf:"varint,2,opt,name=remaining_TTL,json=remainingTTL,proto3" json:"remaining_TTL,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Remaining_TTL int64 `protobuf:"varint,2,opt,name=remaining_TTL,json=remainingTTL,proto3" json:"remaining_TTL,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaseCheckpoint) Reset() { *m = LeaseCheckpoint{} } -func (m *LeaseCheckpoint) String() string { return proto.CompactTextString(m) } -func (*LeaseCheckpoint) ProtoMessage() {} -func (*LeaseCheckpoint) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{29} -} -func (m *LeaseCheckpoint) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseCheckpoint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseCheckpoint.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *LeaseCheckpoint) Reset() { + *x = LeaseCheckpoint{} + mi := &file_rpc_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaseCheckpoint) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseCheckpoint.Merge(m, src) -} -func (m *LeaseCheckpoint) XXX_Size() int { - return m.Size() + +func (x *LeaseCheckpoint) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LeaseCheckpoint) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseCheckpoint.DiscardUnknown(m) + +func (*LeaseCheckpoint) ProtoMessage() {} + +func (x *LeaseCheckpoint) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LeaseCheckpoint proto.InternalMessageInfo +// Deprecated: Use LeaseCheckpoint.ProtoReflect.Descriptor instead. +func (*LeaseCheckpoint) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{29} +} -func (m *LeaseCheckpoint) GetID() int64 { - if m != nil { - return m.ID +func (x *LeaseCheckpoint) GetID() int64 { + if x != nil { + return x.ID } return 0 } -func (m *LeaseCheckpoint) GetRemaining_TTL() int64 { - if m != nil { - return m.Remaining_TTL +func (x *LeaseCheckpoint) GetRemaining_TTL() int64 { + if x != nil { + return x.Remaining_TTL } return 0 } type LeaseCheckpointRequest struct { - Checkpoints []*LeaseCheckpoint `protobuf:"bytes,1,rep,name=checkpoints,proto3" json:"checkpoints,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Checkpoints []*LeaseCheckpoint `protobuf:"bytes,1,rep,name=checkpoints,proto3" json:"checkpoints,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaseCheckpointRequest) Reset() { *m = LeaseCheckpointRequest{} } -func (m *LeaseCheckpointRequest) String() string { return proto.CompactTextString(m) } -func (*LeaseCheckpointRequest) ProtoMessage() {} -func (*LeaseCheckpointRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{30} -} -func (m *LeaseCheckpointRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseCheckpointRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseCheckpointRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *LeaseCheckpointRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseCheckpointRequest.Merge(m, src) +func (x *LeaseCheckpointRequest) Reset() { + *x = LeaseCheckpointRequest{} + mi := &file_rpc_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaseCheckpointRequest) XXX_Size() int { - return m.Size() + +func (x *LeaseCheckpointRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LeaseCheckpointRequest) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseCheckpointRequest.DiscardUnknown(m) + +func (*LeaseCheckpointRequest) ProtoMessage() {} + +func (x *LeaseCheckpointRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LeaseCheckpointRequest proto.InternalMessageInfo +// Deprecated: Use LeaseCheckpointRequest.ProtoReflect.Descriptor instead. +func (*LeaseCheckpointRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{30} +} -func (m *LeaseCheckpointRequest) GetCheckpoints() []*LeaseCheckpoint { - if m != nil { - return m.Checkpoints +func (x *LeaseCheckpointRequest) GetCheckpoints() []*LeaseCheckpoint { + if x != nil { + return x.Checkpoints } return nil } type LeaseCheckpointResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaseCheckpointResponse) Reset() { *m = LeaseCheckpointResponse{} } -func (m *LeaseCheckpointResponse) String() string { return proto.CompactTextString(m) } -func (*LeaseCheckpointResponse) ProtoMessage() {} -func (*LeaseCheckpointResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{31} -} -func (m *LeaseCheckpointResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseCheckpointResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseCheckpointResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *LeaseCheckpointResponse) Reset() { + *x = LeaseCheckpointResponse{} + mi := &file_rpc_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaseCheckpointResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseCheckpointResponse.Merge(m, src) -} -func (m *LeaseCheckpointResponse) XXX_Size() int { - return m.Size() + +func (x *LeaseCheckpointResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LeaseCheckpointResponse) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseCheckpointResponse.DiscardUnknown(m) + +func (*LeaseCheckpointResponse) ProtoMessage() {} + +func (x *LeaseCheckpointResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LeaseCheckpointResponse proto.InternalMessageInfo +// Deprecated: Use LeaseCheckpointResponse.ProtoReflect.Descriptor instead. +func (*LeaseCheckpointResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{31} +} -func (m *LeaseCheckpointResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *LeaseCheckpointResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } type LeaseKeepAliveRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // ID is the lease ID for the lease to keep alive. - ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaseKeepAliveRequest) Reset() { *m = LeaseKeepAliveRequest{} } -func (m *LeaseKeepAliveRequest) String() string { return proto.CompactTextString(m) } -func (*LeaseKeepAliveRequest) ProtoMessage() {} -func (*LeaseKeepAliveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{32} -} -func (m *LeaseKeepAliveRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseKeepAliveRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseKeepAliveRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *LeaseKeepAliveRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseKeepAliveRequest.Merge(m, src) +func (x *LeaseKeepAliveRequest) Reset() { + *x = LeaseKeepAliveRequest{} + mi := &file_rpc_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaseKeepAliveRequest) XXX_Size() int { - return m.Size() + +func (x *LeaseKeepAliveRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LeaseKeepAliveRequest) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseKeepAliveRequest.DiscardUnknown(m) + +func (*LeaseKeepAliveRequest) ProtoMessage() {} + +func (x *LeaseKeepAliveRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LeaseKeepAliveRequest proto.InternalMessageInfo +// Deprecated: Use LeaseKeepAliveRequest.ProtoReflect.Descriptor instead. +func (*LeaseKeepAliveRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{32} +} -func (m *LeaseKeepAliveRequest) GetID() int64 { - if m != nil { - return m.ID +func (x *LeaseKeepAliveRequest) GetID() int64 { + if x != nil { + return x.ID } return 0 } type LeaseKeepAliveResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // ID is the lease ID from the keep alive request. ID int64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID,omitempty"` // TTL is the new time-to-live for the lease. - TTL int64 `protobuf:"varint,3,opt,name=TTL,proto3" json:"TTL,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + TTL int64 `protobuf:"varint,3,opt,name=TTL,proto3" json:"TTL,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaseKeepAliveResponse) Reset() { *m = LeaseKeepAliveResponse{} } -func (m *LeaseKeepAliveResponse) String() string { return proto.CompactTextString(m) } -func (*LeaseKeepAliveResponse) ProtoMessage() {} -func (*LeaseKeepAliveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{33} -} -func (m *LeaseKeepAliveResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseKeepAliveResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseKeepAliveResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *LeaseKeepAliveResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseKeepAliveResponse.Merge(m, src) +func (x *LeaseKeepAliveResponse) Reset() { + *x = LeaseKeepAliveResponse{} + mi := &file_rpc_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaseKeepAliveResponse) XXX_Size() int { - return m.Size() + +func (x *LeaseKeepAliveResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LeaseKeepAliveResponse) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseKeepAliveResponse.DiscardUnknown(m) + +func (*LeaseKeepAliveResponse) ProtoMessage() {} + +func (x *LeaseKeepAliveResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LeaseKeepAliveResponse proto.InternalMessageInfo +// Deprecated: Use LeaseKeepAliveResponse.ProtoReflect.Descriptor instead. +func (*LeaseKeepAliveResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{33} +} -func (m *LeaseKeepAliveResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *LeaseKeepAliveResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *LeaseKeepAliveResponse) GetID() int64 { - if m != nil { - return m.ID +func (x *LeaseKeepAliveResponse) GetID() int64 { + if x != nil { + return x.ID } return 0 } -func (m *LeaseKeepAliveResponse) GetTTL() int64 { - if m != nil { - return m.TTL +func (x *LeaseKeepAliveResponse) GetTTL() int64 { + if x != nil { + return x.TTL } return 0 } type LeaseTimeToLiveRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // ID is the lease ID for the lease. ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` // keys is true to query all the keys attached to this lease. - Keys bool `protobuf:"varint,2,opt,name=keys,proto3" json:"keys,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Keys bool `protobuf:"varint,2,opt,name=keys,proto3" json:"keys,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaseTimeToLiveRequest) Reset() { *m = LeaseTimeToLiveRequest{} } -func (m *LeaseTimeToLiveRequest) String() string { return proto.CompactTextString(m) } -func (*LeaseTimeToLiveRequest) ProtoMessage() {} -func (*LeaseTimeToLiveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{34} -} -func (m *LeaseTimeToLiveRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseTimeToLiveRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseTimeToLiveRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *LeaseTimeToLiveRequest) Reset() { + *x = LeaseTimeToLiveRequest{} + mi := &file_rpc_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaseTimeToLiveRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseTimeToLiveRequest.Merge(m, src) -} -func (m *LeaseTimeToLiveRequest) XXX_Size() int { - return m.Size() + +func (x *LeaseTimeToLiveRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LeaseTimeToLiveRequest) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseTimeToLiveRequest.DiscardUnknown(m) + +func (*LeaseTimeToLiveRequest) ProtoMessage() {} + +func (x *LeaseTimeToLiveRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LeaseTimeToLiveRequest proto.InternalMessageInfo +// Deprecated: Use LeaseTimeToLiveRequest.ProtoReflect.Descriptor instead. +func (*LeaseTimeToLiveRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{34} +} -func (m *LeaseTimeToLiveRequest) GetID() int64 { - if m != nil { - return m.ID +func (x *LeaseTimeToLiveRequest) GetID() int64 { + if x != nil { + return x.ID } return 0 } -func (m *LeaseTimeToLiveRequest) GetKeys() bool { - if m != nil { - return m.Keys +func (x *LeaseTimeToLiveRequest) GetKeys() bool { + if x != nil { + return x.Keys } return false } type LeaseTimeToLiveResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // ID is the lease ID from the keep alive request. ID int64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID,omitempty"` // TTL is the remaining TTL in seconds for the lease; the lease will expire in under TTL+1 seconds. @@ -2863,222 +2943,210 @@ type LeaseTimeToLiveResponse struct { // GrantedTTL is the initial granted time in seconds upon lease creation/renewal. GrantedTTL int64 `protobuf:"varint,4,opt,name=grantedTTL,proto3" json:"grantedTTL,omitempty"` // Keys is the list of keys attached to this lease. - Keys [][]byte `protobuf:"bytes,5,rep,name=keys,proto3" json:"keys,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Keys [][]byte `protobuf:"bytes,5,rep,name=keys,proto3" json:"keys,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaseTimeToLiveResponse) Reset() { *m = LeaseTimeToLiveResponse{} } -func (m *LeaseTimeToLiveResponse) String() string { return proto.CompactTextString(m) } -func (*LeaseTimeToLiveResponse) ProtoMessage() {} -func (*LeaseTimeToLiveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{35} -} -func (m *LeaseTimeToLiveResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseTimeToLiveResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseTimeToLiveResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *LeaseTimeToLiveResponse) Reset() { + *x = LeaseTimeToLiveResponse{} + mi := &file_rpc_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaseTimeToLiveResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseTimeToLiveResponse.Merge(m, src) -} -func (m *LeaseTimeToLiveResponse) XXX_Size() int { - return m.Size() + +func (x *LeaseTimeToLiveResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LeaseTimeToLiveResponse) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseTimeToLiveResponse.DiscardUnknown(m) + +func (*LeaseTimeToLiveResponse) ProtoMessage() {} + +func (x *LeaseTimeToLiveResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LeaseTimeToLiveResponse proto.InternalMessageInfo +// Deprecated: Use LeaseTimeToLiveResponse.ProtoReflect.Descriptor instead. +func (*LeaseTimeToLiveResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{35} +} -func (m *LeaseTimeToLiveResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *LeaseTimeToLiveResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *LeaseTimeToLiveResponse) GetID() int64 { - if m != nil { - return m.ID +func (x *LeaseTimeToLiveResponse) GetID() int64 { + if x != nil { + return x.ID } return 0 } -func (m *LeaseTimeToLiveResponse) GetTTL() int64 { - if m != nil { - return m.TTL +func (x *LeaseTimeToLiveResponse) GetTTL() int64 { + if x != nil { + return x.TTL } return 0 } -func (m *LeaseTimeToLiveResponse) GetGrantedTTL() int64 { - if m != nil { - return m.GrantedTTL +func (x *LeaseTimeToLiveResponse) GetGrantedTTL() int64 { + if x != nil { + return x.GrantedTTL } return 0 } -func (m *LeaseTimeToLiveResponse) GetKeys() [][]byte { - if m != nil { - return m.Keys +func (x *LeaseTimeToLiveResponse) GetKeys() [][]byte { + if x != nil { + return x.Keys } return nil } type LeaseLeasesRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaseLeasesRequest) Reset() { *m = LeaseLeasesRequest{} } -func (m *LeaseLeasesRequest) String() string { return proto.CompactTextString(m) } -func (*LeaseLeasesRequest) ProtoMessage() {} -func (*LeaseLeasesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{36} -} -func (m *LeaseLeasesRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseLeasesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseLeasesRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (x *LeaseLeasesRequest) Reset() { + *x = LeaseLeasesRequest{} + mi := &file_rpc_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LeaseLeasesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LeaseLeasesRequest) ProtoMessage() {} + +func (x *LeaseLeasesRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[36] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } + return mi.MessageOf(x) } -func (m *LeaseLeasesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseLeasesRequest.Merge(m, src) -} -func (m *LeaseLeasesRequest) XXX_Size() int { - return m.Size() + +// Deprecated: Use LeaseLeasesRequest.ProtoReflect.Descriptor instead. +func (*LeaseLeasesRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{36} } -func (m *LeaseLeasesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseLeasesRequest.DiscardUnknown(m) + +type LeaseStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` // TODO: int64 TTL = 2; + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -var xxx_messageInfo_LeaseLeasesRequest proto.InternalMessageInfo +func (x *LeaseStatus) Reset() { + *x = LeaseStatus{} + mi := &file_rpc_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} -type LeaseStatus struct { - ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *LeaseStatus) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LeaseStatus) Reset() { *m = LeaseStatus{} } -func (m *LeaseStatus) String() string { return proto.CompactTextString(m) } -func (*LeaseStatus) ProtoMessage() {} -func (*LeaseStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{37} -} -func (m *LeaseStatus) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseStatus.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (*LeaseStatus) ProtoMessage() {} + +func (x *LeaseStatus) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[37] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *LeaseStatus) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseStatus.Merge(m, src) -} -func (m *LeaseStatus) XXX_Size() int { - return m.Size() -} -func (m *LeaseStatus) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseStatus.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_LeaseStatus proto.InternalMessageInfo +// Deprecated: Use LeaseStatus.ProtoReflect.Descriptor instead. +func (*LeaseStatus) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{37} +} -func (m *LeaseStatus) GetID() int64 { - if m != nil { - return m.ID +func (x *LeaseStatus) GetID() int64 { + if x != nil { + return x.ID } return 0 } type LeaseLeasesResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - Leases []*LeaseStatus `protobuf:"bytes,2,rep,name=leases,proto3" json:"leases,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + Leases []*LeaseStatus `protobuf:"bytes,2,rep,name=leases,proto3" json:"leases,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaseLeasesResponse) Reset() { *m = LeaseLeasesResponse{} } -func (m *LeaseLeasesResponse) String() string { return proto.CompactTextString(m) } -func (*LeaseLeasesResponse) ProtoMessage() {} -func (*LeaseLeasesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{38} -} -func (m *LeaseLeasesResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseLeasesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseLeasesResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *LeaseLeasesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseLeasesResponse.Merge(m, src) +func (x *LeaseLeasesResponse) Reset() { + *x = LeaseLeasesResponse{} + mi := &file_rpc_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaseLeasesResponse) XXX_Size() int { - return m.Size() + +func (x *LeaseLeasesResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LeaseLeasesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseLeasesResponse.DiscardUnknown(m) + +func (*LeaseLeasesResponse) ProtoMessage() {} + +func (x *LeaseLeasesResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LeaseLeasesResponse proto.InternalMessageInfo +// Deprecated: Use LeaseLeasesResponse.ProtoReflect.Descriptor instead. +func (*LeaseLeasesResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{38} +} -func (m *LeaseLeasesResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *LeaseLeasesResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *LeaseLeasesResponse) GetLeases() []*LeaseStatus { - if m != nil { - return m.Leases +func (x *LeaseLeasesResponse) GetLeases() []*LeaseStatus { + if x != nil { + return x.Leases } return nil } type Member struct { + state protoimpl.MessageState `protogen:"open.v1"` // ID is the member ID for this member. ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` // name is the human-readable name of the member. If the member is not started, the name will be an empty string. @@ -3088,808 +3156,763 @@ type Member struct { // clientURLs is the list of URLs the member exposes to clients for communication. If the member is not started, clientURLs will be empty. ClientURLs []string `protobuf:"bytes,4,rep,name=clientURLs,proto3" json:"clientURLs,omitempty"` // isLearner indicates if the member is raft learner. - IsLearner bool `protobuf:"varint,5,opt,name=isLearner,proto3" json:"isLearner,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + IsLearner bool `protobuf:"varint,5,opt,name=isLearner,proto3" json:"isLearner,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *Member) Reset() { *m = Member{} } -func (m *Member) String() string { return proto.CompactTextString(m) } -func (*Member) ProtoMessage() {} -func (*Member) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{39} -} -func (m *Member) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Member) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Member.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *Member) Reset() { + *x = Member{} + mi := &file_rpc_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *Member) XXX_Merge(src proto.Message) { - xxx_messageInfo_Member.Merge(m, src) -} -func (m *Member) XXX_Size() int { - return m.Size() + +func (x *Member) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Member) XXX_DiscardUnknown() { - xxx_messageInfo_Member.DiscardUnknown(m) + +func (*Member) ProtoMessage() {} + +func (x *Member) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[39] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Member proto.InternalMessageInfo +// Deprecated: Use Member.ProtoReflect.Descriptor instead. +func (*Member) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{39} +} -func (m *Member) GetID() uint64 { - if m != nil { - return m.ID +func (x *Member) GetID() uint64 { + if x != nil { + return x.ID } return 0 } -func (m *Member) GetName() string { - if m != nil { - return m.Name +func (x *Member) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *Member) GetPeerURLs() []string { - if m != nil { - return m.PeerURLs +func (x *Member) GetPeerURLs() []string { + if x != nil { + return x.PeerURLs } return nil } -func (m *Member) GetClientURLs() []string { - if m != nil { - return m.ClientURLs +func (x *Member) GetClientURLs() []string { + if x != nil { + return x.ClientURLs } return nil } -func (m *Member) GetIsLearner() bool { - if m != nil { - return m.IsLearner +func (x *Member) GetIsLearner() bool { + if x != nil { + return x.IsLearner } return false } type MemberAddRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // peerURLs is the list of URLs the added member will use to communicate with the cluster. PeerURLs []string `protobuf:"bytes,1,rep,name=peerURLs,proto3" json:"peerURLs,omitempty"` // isLearner indicates if the added member is raft learner. - IsLearner bool `protobuf:"varint,2,opt,name=isLearner,proto3" json:"isLearner,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + IsLearner bool `protobuf:"varint,2,opt,name=isLearner,proto3" json:"isLearner,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *MemberAddRequest) Reset() { *m = MemberAddRequest{} } -func (m *MemberAddRequest) String() string { return proto.CompactTextString(m) } -func (*MemberAddRequest) ProtoMessage() {} -func (*MemberAddRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{40} -} -func (m *MemberAddRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MemberAddRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MemberAddRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MemberAddRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemberAddRequest.Merge(m, src) +func (x *MemberAddRequest) Reset() { + *x = MemberAddRequest{} + mi := &file_rpc_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *MemberAddRequest) XXX_Size() int { - return m.Size() + +func (x *MemberAddRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemberAddRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MemberAddRequest.DiscardUnknown(m) + +func (*MemberAddRequest) ProtoMessage() {} + +func (x *MemberAddRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[40] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemberAddRequest proto.InternalMessageInfo +// Deprecated: Use MemberAddRequest.ProtoReflect.Descriptor instead. +func (*MemberAddRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{40} +} -func (m *MemberAddRequest) GetPeerURLs() []string { - if m != nil { - return m.PeerURLs +func (x *MemberAddRequest) GetPeerURLs() []string { + if x != nil { + return x.PeerURLs } return nil } -func (m *MemberAddRequest) GetIsLearner() bool { - if m != nil { - return m.IsLearner +func (x *MemberAddRequest) GetIsLearner() bool { + if x != nil { + return x.IsLearner } return false } type MemberAddResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // member is the member information for the added member. Member *Member `protobuf:"bytes,2,opt,name=member,proto3" json:"member,omitempty"` // members is a list of all members after adding the new member. - Members []*Member `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Members []*Member `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *MemberAddResponse) Reset() { *m = MemberAddResponse{} } -func (m *MemberAddResponse) String() string { return proto.CompactTextString(m) } -func (*MemberAddResponse) ProtoMessage() {} -func (*MemberAddResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{41} -} -func (m *MemberAddResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MemberAddResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MemberAddResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MemberAddResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemberAddResponse.Merge(m, src) +func (x *MemberAddResponse) Reset() { + *x = MemberAddResponse{} + mi := &file_rpc_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *MemberAddResponse) XXX_Size() int { - return m.Size() + +func (x *MemberAddResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemberAddResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MemberAddResponse.DiscardUnknown(m) + +func (*MemberAddResponse) ProtoMessage() {} + +func (x *MemberAddResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[41] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemberAddResponse proto.InternalMessageInfo +// Deprecated: Use MemberAddResponse.ProtoReflect.Descriptor instead. +func (*MemberAddResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{41} +} -func (m *MemberAddResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *MemberAddResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *MemberAddResponse) GetMember() *Member { - if m != nil { - return m.Member +func (x *MemberAddResponse) GetMember() *Member { + if x != nil { + return x.Member } return nil } -func (m *MemberAddResponse) GetMembers() []*Member { - if m != nil { - return m.Members +func (x *MemberAddResponse) GetMembers() []*Member { + if x != nil { + return x.Members } return nil } type MemberRemoveRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // ID is the member ID of the member to remove. - ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *MemberRemoveRequest) Reset() { *m = MemberRemoveRequest{} } -func (m *MemberRemoveRequest) String() string { return proto.CompactTextString(m) } -func (*MemberRemoveRequest) ProtoMessage() {} -func (*MemberRemoveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{42} -} -func (m *MemberRemoveRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MemberRemoveRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MemberRemoveRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *MemberRemoveRequest) Reset() { + *x = MemberRemoveRequest{} + mi := &file_rpc_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *MemberRemoveRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemberRemoveRequest.Merge(m, src) -} -func (m *MemberRemoveRequest) XXX_Size() int { - return m.Size() + +func (x *MemberRemoveRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemberRemoveRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MemberRemoveRequest.DiscardUnknown(m) + +func (*MemberRemoveRequest) ProtoMessage() {} + +func (x *MemberRemoveRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemberRemoveRequest proto.InternalMessageInfo +// Deprecated: Use MemberRemoveRequest.ProtoReflect.Descriptor instead. +func (*MemberRemoveRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{42} +} -func (m *MemberRemoveRequest) GetID() uint64 { - if m != nil { - return m.ID +func (x *MemberRemoveRequest) GetID() uint64 { + if x != nil { + return x.ID } return 0 } type MemberRemoveResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // members is a list of all members after removing the member. - Members []*Member `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Members []*Member `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *MemberRemoveResponse) Reset() { *m = MemberRemoveResponse{} } -func (m *MemberRemoveResponse) String() string { return proto.CompactTextString(m) } -func (*MemberRemoveResponse) ProtoMessage() {} -func (*MemberRemoveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{43} -} -func (m *MemberRemoveResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MemberRemoveResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MemberRemoveResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *MemberRemoveResponse) Reset() { + *x = MemberRemoveResponse{} + mi := &file_rpc_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *MemberRemoveResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemberRemoveResponse.Merge(m, src) -} -func (m *MemberRemoveResponse) XXX_Size() int { - return m.Size() + +func (x *MemberRemoveResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemberRemoveResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MemberRemoveResponse.DiscardUnknown(m) + +func (*MemberRemoveResponse) ProtoMessage() {} + +func (x *MemberRemoveResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[43] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemberRemoveResponse proto.InternalMessageInfo +// Deprecated: Use MemberRemoveResponse.ProtoReflect.Descriptor instead. +func (*MemberRemoveResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{43} +} -func (m *MemberRemoveResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *MemberRemoveResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *MemberRemoveResponse) GetMembers() []*Member { - if m != nil { - return m.Members +func (x *MemberRemoveResponse) GetMembers() []*Member { + if x != nil { + return x.Members } return nil } type MemberUpdateRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // ID is the member ID of the member to update. ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` // peerURLs is the new list of URLs the member will use to communicate with the cluster. - PeerURLs []string `protobuf:"bytes,2,rep,name=peerURLs,proto3" json:"peerURLs,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + PeerURLs []string `protobuf:"bytes,2,rep,name=peerURLs,proto3" json:"peerURLs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *MemberUpdateRequest) Reset() { *m = MemberUpdateRequest{} } -func (m *MemberUpdateRequest) String() string { return proto.CompactTextString(m) } -func (*MemberUpdateRequest) ProtoMessage() {} -func (*MemberUpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{44} -} -func (m *MemberUpdateRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MemberUpdateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MemberUpdateRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MemberUpdateRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemberUpdateRequest.Merge(m, src) +func (x *MemberUpdateRequest) Reset() { + *x = MemberUpdateRequest{} + mi := &file_rpc_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *MemberUpdateRequest) XXX_Size() int { - return m.Size() + +func (x *MemberUpdateRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemberUpdateRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MemberUpdateRequest.DiscardUnknown(m) + +func (*MemberUpdateRequest) ProtoMessage() {} + +func (x *MemberUpdateRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[44] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemberUpdateRequest proto.InternalMessageInfo +// Deprecated: Use MemberUpdateRequest.ProtoReflect.Descriptor instead. +func (*MemberUpdateRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{44} +} -func (m *MemberUpdateRequest) GetID() uint64 { - if m != nil { - return m.ID +func (x *MemberUpdateRequest) GetID() uint64 { + if x != nil { + return x.ID } return 0 } -func (m *MemberUpdateRequest) GetPeerURLs() []string { - if m != nil { - return m.PeerURLs +func (x *MemberUpdateRequest) GetPeerURLs() []string { + if x != nil { + return x.PeerURLs } return nil } type MemberUpdateResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // members is a list of all members after updating the member. - Members []*Member `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Members []*Member `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *MemberUpdateResponse) Reset() { *m = MemberUpdateResponse{} } -func (m *MemberUpdateResponse) String() string { return proto.CompactTextString(m) } -func (*MemberUpdateResponse) ProtoMessage() {} -func (*MemberUpdateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{45} -} -func (m *MemberUpdateResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MemberUpdateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MemberUpdateResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MemberUpdateResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemberUpdateResponse.Merge(m, src) +func (x *MemberUpdateResponse) Reset() { + *x = MemberUpdateResponse{} + mi := &file_rpc_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *MemberUpdateResponse) XXX_Size() int { - return m.Size() + +func (x *MemberUpdateResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemberUpdateResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MemberUpdateResponse.DiscardUnknown(m) + +func (*MemberUpdateResponse) ProtoMessage() {} + +func (x *MemberUpdateResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[45] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemberUpdateResponse proto.InternalMessageInfo +// Deprecated: Use MemberUpdateResponse.ProtoReflect.Descriptor instead. +func (*MemberUpdateResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{45} +} -func (m *MemberUpdateResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *MemberUpdateResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *MemberUpdateResponse) GetMembers() []*Member { - if m != nil { - return m.Members +func (x *MemberUpdateResponse) GetMembers() []*Member { + if x != nil { + return x.Members } return nil } type MemberListRequest struct { - Linearizable bool `protobuf:"varint,1,opt,name=linearizable,proto3" json:"linearizable,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Linearizable bool `protobuf:"varint,1,opt,name=linearizable,proto3" json:"linearizable,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *MemberListRequest) Reset() { *m = MemberListRequest{} } -func (m *MemberListRequest) String() string { return proto.CompactTextString(m) } -func (*MemberListRequest) ProtoMessage() {} -func (*MemberListRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{46} -} -func (m *MemberListRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MemberListRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MemberListRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *MemberListRequest) Reset() { + *x = MemberListRequest{} + mi := &file_rpc_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *MemberListRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemberListRequest.Merge(m, src) -} -func (m *MemberListRequest) XXX_Size() int { - return m.Size() + +func (x *MemberListRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemberListRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MemberListRequest.DiscardUnknown(m) + +func (*MemberListRequest) ProtoMessage() {} + +func (x *MemberListRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[46] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemberListRequest proto.InternalMessageInfo +// Deprecated: Use MemberListRequest.ProtoReflect.Descriptor instead. +func (*MemberListRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{46} +} -func (m *MemberListRequest) GetLinearizable() bool { - if m != nil { - return m.Linearizable +func (x *MemberListRequest) GetLinearizable() bool { + if x != nil { + return x.Linearizable } return false } type MemberListResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // members is a list of all members associated with the cluster. - Members []*Member `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Members []*Member `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *MemberListResponse) Reset() { *m = MemberListResponse{} } -func (m *MemberListResponse) String() string { return proto.CompactTextString(m) } -func (*MemberListResponse) ProtoMessage() {} -func (*MemberListResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{47} -} -func (m *MemberListResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MemberListResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MemberListResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *MemberListResponse) Reset() { + *x = MemberListResponse{} + mi := &file_rpc_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *MemberListResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemberListResponse.Merge(m, src) -} -func (m *MemberListResponse) XXX_Size() int { - return m.Size() + +func (x *MemberListResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemberListResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MemberListResponse.DiscardUnknown(m) + +func (*MemberListResponse) ProtoMessage() {} + +func (x *MemberListResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[47] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemberListResponse proto.InternalMessageInfo +// Deprecated: Use MemberListResponse.ProtoReflect.Descriptor instead. +func (*MemberListResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{47} +} -func (m *MemberListResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *MemberListResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *MemberListResponse) GetMembers() []*Member { - if m != nil { - return m.Members +func (x *MemberListResponse) GetMembers() []*Member { + if x != nil { + return x.Members } return nil } type MemberPromoteRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // ID is the member ID of the member to promote. - ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *MemberPromoteRequest) Reset() { *m = MemberPromoteRequest{} } -func (m *MemberPromoteRequest) String() string { return proto.CompactTextString(m) } -func (*MemberPromoteRequest) ProtoMessage() {} -func (*MemberPromoteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{48} -} -func (m *MemberPromoteRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MemberPromoteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MemberPromoteRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MemberPromoteRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemberPromoteRequest.Merge(m, src) +func (x *MemberPromoteRequest) Reset() { + *x = MemberPromoteRequest{} + mi := &file_rpc_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *MemberPromoteRequest) XXX_Size() int { - return m.Size() + +func (x *MemberPromoteRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemberPromoteRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MemberPromoteRequest.DiscardUnknown(m) + +func (*MemberPromoteRequest) ProtoMessage() {} + +func (x *MemberPromoteRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[48] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemberPromoteRequest proto.InternalMessageInfo +// Deprecated: Use MemberPromoteRequest.ProtoReflect.Descriptor instead. +func (*MemberPromoteRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{48} +} -func (m *MemberPromoteRequest) GetID() uint64 { - if m != nil { - return m.ID +func (x *MemberPromoteRequest) GetID() uint64 { + if x != nil { + return x.ID } return 0 } type MemberPromoteResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // members is a list of all members after promoting the member. - Members []*Member `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Members []*Member `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *MemberPromoteResponse) Reset() { *m = MemberPromoteResponse{} } -func (m *MemberPromoteResponse) String() string { return proto.CompactTextString(m) } -func (*MemberPromoteResponse) ProtoMessage() {} -func (*MemberPromoteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{49} -} -func (m *MemberPromoteResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MemberPromoteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MemberPromoteResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MemberPromoteResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MemberPromoteResponse.Merge(m, src) +func (x *MemberPromoteResponse) Reset() { + *x = MemberPromoteResponse{} + mi := &file_rpc_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *MemberPromoteResponse) XXX_Size() int { - return m.Size() + +func (x *MemberPromoteResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MemberPromoteResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MemberPromoteResponse.DiscardUnknown(m) + +func (*MemberPromoteResponse) ProtoMessage() {} + +func (x *MemberPromoteResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[49] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MemberPromoteResponse proto.InternalMessageInfo +// Deprecated: Use MemberPromoteResponse.ProtoReflect.Descriptor instead. +func (*MemberPromoteResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{49} +} -func (m *MemberPromoteResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *MemberPromoteResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *MemberPromoteResponse) GetMembers() []*Member { - if m != nil { - return m.Members +func (x *MemberPromoteResponse) GetMembers() []*Member { + if x != nil { + return x.Members } return nil } type DefragmentRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *DefragmentRequest) Reset() { *m = DefragmentRequest{} } -func (m *DefragmentRequest) String() string { return proto.CompactTextString(m) } -func (*DefragmentRequest) ProtoMessage() {} -func (*DefragmentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{50} -} -func (m *DefragmentRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DefragmentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_DefragmentRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (x *DefragmentRequest) Reset() { + *x = DefragmentRequest{} + mi := &file_rpc_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DefragmentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DefragmentRequest) ProtoMessage() {} + +func (x *DefragmentRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[50] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } + return mi.MessageOf(x) } -func (m *DefragmentRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DefragmentRequest.Merge(m, src) -} -func (m *DefragmentRequest) XXX_Size() int { - return m.Size() + +// Deprecated: Use DefragmentRequest.ProtoReflect.Descriptor instead. +func (*DefragmentRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{50} } -func (m *DefragmentRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DefragmentRequest.DiscardUnknown(m) + +type DefragmentResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -var xxx_messageInfo_DefragmentRequest proto.InternalMessageInfo +func (x *DefragmentResponse) Reset() { + *x = DefragmentResponse{} + mi := &file_rpc_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} -type DefragmentResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *DefragmentResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DefragmentResponse) Reset() { *m = DefragmentResponse{} } -func (m *DefragmentResponse) String() string { return proto.CompactTextString(m) } -func (*DefragmentResponse) ProtoMessage() {} -func (*DefragmentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{51} -} -func (m *DefragmentResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DefragmentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_DefragmentResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (*DefragmentResponse) ProtoMessage() {} + +func (x *DefragmentResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[51] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *DefragmentResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_DefragmentResponse.Merge(m, src) -} -func (m *DefragmentResponse) XXX_Size() int { - return m.Size() -} -func (m *DefragmentResponse) XXX_DiscardUnknown() { - xxx_messageInfo_DefragmentResponse.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_DefragmentResponse proto.InternalMessageInfo +// Deprecated: Use DefragmentResponse.ProtoReflect.Descriptor instead. +func (*DefragmentResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{51} +} -func (m *DefragmentResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *DefragmentResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } type MoveLeaderRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // targetID is the node ID for the new leader. - TargetID uint64 `protobuf:"varint,1,opt,name=targetID,proto3" json:"targetID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + TargetID uint64 `protobuf:"varint,1,opt,name=targetID,proto3" json:"targetID,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *MoveLeaderRequest) Reset() { *m = MoveLeaderRequest{} } -func (m *MoveLeaderRequest) String() string { return proto.CompactTextString(m) } -func (*MoveLeaderRequest) ProtoMessage() {} -func (*MoveLeaderRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{52} -} -func (m *MoveLeaderRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MoveLeaderRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MoveLeaderRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *MoveLeaderRequest) Reset() { + *x = MoveLeaderRequest{} + mi := &file_rpc_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *MoveLeaderRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MoveLeaderRequest.Merge(m, src) -} -func (m *MoveLeaderRequest) XXX_Size() int { - return m.Size() + +func (x *MoveLeaderRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MoveLeaderRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MoveLeaderRequest.DiscardUnknown(m) + +func (*MoveLeaderRequest) ProtoMessage() {} + +func (x *MoveLeaderRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[52] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MoveLeaderRequest proto.InternalMessageInfo +// Deprecated: Use MoveLeaderRequest.ProtoReflect.Descriptor instead. +func (*MoveLeaderRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{52} +} -func (m *MoveLeaderRequest) GetTargetID() uint64 { - if m != nil { - return m.TargetID +func (x *MoveLeaderRequest) GetTargetID() uint64 { + if x != nil { + return x.TargetID } return 0 } type MoveLeaderResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *MoveLeaderResponse) Reset() { *m = MoveLeaderResponse{} } -func (m *MoveLeaderResponse) String() string { return proto.CompactTextString(m) } -func (*MoveLeaderResponse) ProtoMessage() {} -func (*MoveLeaderResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{53} -} -func (m *MoveLeaderResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MoveLeaderResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MoveLeaderResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MoveLeaderResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MoveLeaderResponse.Merge(m, src) +func (x *MoveLeaderResponse) Reset() { + *x = MoveLeaderResponse{} + mi := &file_rpc_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *MoveLeaderResponse) XXX_Size() int { - return m.Size() + +func (x *MoveLeaderResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MoveLeaderResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MoveLeaderResponse.DiscardUnknown(m) + +func (*MoveLeaderResponse) ProtoMessage() {} + +func (x *MoveLeaderResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[53] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MoveLeaderResponse proto.InternalMessageInfo +// Deprecated: Use MoveLeaderResponse.ProtoReflect.Descriptor instead. +func (*MoveLeaderResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{53} +} -func (m *MoveLeaderResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *MoveLeaderResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } type AlarmRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // action is the kind of alarm request to issue. The action // may GET alarm statuses, ACTIVATE an alarm, or DEACTIVATE a // raised alarm. @@ -3898,290 +3921,274 @@ type AlarmRequest struct { // alarm request covers all members. MemberID uint64 `protobuf:"varint,2,opt,name=memberID,proto3" json:"memberID,omitempty"` // alarm is the type of alarm to consider for this request. - Alarm AlarmType `protobuf:"varint,3,opt,name=alarm,proto3,enum=etcdserverpb.AlarmType" json:"alarm,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Alarm AlarmType `protobuf:"varint,3,opt,name=alarm,proto3,enum=etcdserverpb.AlarmType" json:"alarm,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AlarmRequest) Reset() { *m = AlarmRequest{} } -func (m *AlarmRequest) String() string { return proto.CompactTextString(m) } -func (*AlarmRequest) ProtoMessage() {} -func (*AlarmRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{54} -} -func (m *AlarmRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AlarmRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AlarmRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *AlarmRequest) Reset() { + *x = AlarmRequest{} + mi := &file_rpc_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AlarmRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AlarmRequest.Merge(m, src) -} -func (m *AlarmRequest) XXX_Size() int { - return m.Size() + +func (x *AlarmRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AlarmRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AlarmRequest.DiscardUnknown(m) + +func (*AlarmRequest) ProtoMessage() {} + +func (x *AlarmRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[54] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AlarmRequest proto.InternalMessageInfo +// Deprecated: Use AlarmRequest.ProtoReflect.Descriptor instead. +func (*AlarmRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{54} +} -func (m *AlarmRequest) GetAction() AlarmRequest_AlarmAction { - if m != nil { - return m.Action +func (x *AlarmRequest) GetAction() AlarmRequest_AlarmAction { + if x != nil { + return x.Action } return AlarmRequest_GET } -func (m *AlarmRequest) GetMemberID() uint64 { - if m != nil { - return m.MemberID +func (x *AlarmRequest) GetMemberID() uint64 { + if x != nil { + return x.MemberID } return 0 } -func (m *AlarmRequest) GetAlarm() AlarmType { - if m != nil { - return m.Alarm +func (x *AlarmRequest) GetAlarm() AlarmType { + if x != nil { + return x.Alarm } return AlarmType_NONE } type AlarmMember struct { + state protoimpl.MessageState `protogen:"open.v1"` // memberID is the ID of the member associated with the raised alarm. MemberID uint64 `protobuf:"varint,1,opt,name=memberID,proto3" json:"memberID,omitempty"` // alarm is the type of alarm which has been raised. - Alarm AlarmType `protobuf:"varint,2,opt,name=alarm,proto3,enum=etcdserverpb.AlarmType" json:"alarm,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Alarm AlarmType `protobuf:"varint,2,opt,name=alarm,proto3,enum=etcdserverpb.AlarmType" json:"alarm,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AlarmMember) Reset() { *m = AlarmMember{} } -func (m *AlarmMember) String() string { return proto.CompactTextString(m) } -func (*AlarmMember) ProtoMessage() {} -func (*AlarmMember) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{55} -} -func (m *AlarmMember) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AlarmMember) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AlarmMember.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AlarmMember) XXX_Merge(src proto.Message) { - xxx_messageInfo_AlarmMember.Merge(m, src) +func (x *AlarmMember) Reset() { + *x = AlarmMember{} + mi := &file_rpc_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AlarmMember) XXX_Size() int { - return m.Size() + +func (x *AlarmMember) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AlarmMember) XXX_DiscardUnknown() { - xxx_messageInfo_AlarmMember.DiscardUnknown(m) + +func (*AlarmMember) ProtoMessage() {} + +func (x *AlarmMember) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[55] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AlarmMember proto.InternalMessageInfo +// Deprecated: Use AlarmMember.ProtoReflect.Descriptor instead. +func (*AlarmMember) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{55} +} -func (m *AlarmMember) GetMemberID() uint64 { - if m != nil { - return m.MemberID +func (x *AlarmMember) GetMemberID() uint64 { + if x != nil { + return x.MemberID } return 0 } -func (m *AlarmMember) GetAlarm() AlarmType { - if m != nil { - return m.Alarm +func (x *AlarmMember) GetAlarm() AlarmType { + if x != nil { + return x.Alarm } return AlarmType_NONE } type AlarmResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // alarms is a list of alarms associated with the alarm request. - Alarms []*AlarmMember `protobuf:"bytes,2,rep,name=alarms,proto3" json:"alarms,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Alarms []*AlarmMember `protobuf:"bytes,2,rep,name=alarms,proto3" json:"alarms,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AlarmResponse) Reset() { *m = AlarmResponse{} } -func (m *AlarmResponse) String() string { return proto.CompactTextString(m) } -func (*AlarmResponse) ProtoMessage() {} -func (*AlarmResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{56} -} -func (m *AlarmResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AlarmResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AlarmResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AlarmResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AlarmResponse.Merge(m, src) +func (x *AlarmResponse) Reset() { + *x = AlarmResponse{} + mi := &file_rpc_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AlarmResponse) XXX_Size() int { - return m.Size() + +func (x *AlarmResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AlarmResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AlarmResponse.DiscardUnknown(m) + +func (*AlarmResponse) ProtoMessage() {} + +func (x *AlarmResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[56] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AlarmResponse proto.InternalMessageInfo +// Deprecated: Use AlarmResponse.ProtoReflect.Descriptor instead. +func (*AlarmResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{56} +} -func (m *AlarmResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AlarmResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *AlarmResponse) GetAlarms() []*AlarmMember { - if m != nil { - return m.Alarms +func (x *AlarmResponse) GetAlarms() []*AlarmMember { + if x != nil { + return x.Alarms } return nil } type DowngradeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // action is the kind of downgrade request to issue. The action may // VALIDATE the target version, DOWNGRADE the cluster version, // or CANCEL the current downgrading job. Action DowngradeRequest_DowngradeAction `protobuf:"varint,1,opt,name=action,proto3,enum=etcdserverpb.DowngradeRequest_DowngradeAction" json:"action,omitempty"` // version is the target version to downgrade. - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *DowngradeRequest) Reset() { *m = DowngradeRequest{} } -func (m *DowngradeRequest) String() string { return proto.CompactTextString(m) } -func (*DowngradeRequest) ProtoMessage() {} -func (*DowngradeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{57} -} -func (m *DowngradeRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DowngradeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_DowngradeRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *DowngradeRequest) Reset() { + *x = DowngradeRequest{} + mi := &file_rpc_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *DowngradeRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DowngradeRequest.Merge(m, src) -} -func (m *DowngradeRequest) XXX_Size() int { - return m.Size() + +func (x *DowngradeRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DowngradeRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DowngradeRequest.DiscardUnknown(m) + +func (*DowngradeRequest) ProtoMessage() {} + +func (x *DowngradeRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[57] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DowngradeRequest proto.InternalMessageInfo +// Deprecated: Use DowngradeRequest.ProtoReflect.Descriptor instead. +func (*DowngradeRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{57} +} -func (m *DowngradeRequest) GetAction() DowngradeRequest_DowngradeAction { - if m != nil { - return m.Action +func (x *DowngradeRequest) GetAction() DowngradeRequest_DowngradeAction { + if x != nil { + return x.Action } return DowngradeRequest_VALIDATE } -func (m *DowngradeRequest) GetVersion() string { - if m != nil { - return m.Version +func (x *DowngradeRequest) GetVersion() string { + if x != nil { + return x.Version } return "" } type DowngradeResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // version is the current cluster version. - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *DowngradeResponse) Reset() { *m = DowngradeResponse{} } -func (m *DowngradeResponse) String() string { return proto.CompactTextString(m) } -func (*DowngradeResponse) ProtoMessage() {} -func (*DowngradeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{58} -} -func (m *DowngradeResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DowngradeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_DowngradeResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *DowngradeResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_DowngradeResponse.Merge(m, src) +func (x *DowngradeResponse) Reset() { + *x = DowngradeResponse{} + mi := &file_rpc_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *DowngradeResponse) XXX_Size() int { - return m.Size() + +func (x *DowngradeResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DowngradeResponse) XXX_DiscardUnknown() { - xxx_messageInfo_DowngradeResponse.DiscardUnknown(m) + +func (*DowngradeResponse) ProtoMessage() {} + +func (x *DowngradeResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[58] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DowngradeResponse proto.InternalMessageInfo +// Deprecated: Use DowngradeResponse.ProtoReflect.Descriptor instead. +func (*DowngradeResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{58} +} -func (m *DowngradeResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *DowngradeResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *DowngradeResponse) GetVersion() string { - if m != nil { - return m.Version +func (x *DowngradeResponse) GetVersion() string { + if x != nil { + return x.Version } return "" } @@ -4191,93 +4198,88 @@ func (m *DowngradeResponse) GetVersion() string { // target version is less than this version, then the downgrade(online) // or migration(offline) isn't safe, so shouldn't be allowed. type DowngradeVersionTestRequest struct { - Ver string `protobuf:"bytes,1,opt,name=ver,proto3" json:"ver,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Ver string `protobuf:"bytes,1,opt,name=ver,proto3" json:"ver,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *DowngradeVersionTestRequest) Reset() { *m = DowngradeVersionTestRequest{} } -func (m *DowngradeVersionTestRequest) String() string { return proto.CompactTextString(m) } -func (*DowngradeVersionTestRequest) ProtoMessage() {} -func (*DowngradeVersionTestRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{59} -} -func (m *DowngradeVersionTestRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DowngradeVersionTestRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_DowngradeVersionTestRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *DowngradeVersionTestRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DowngradeVersionTestRequest.Merge(m, src) +func (x *DowngradeVersionTestRequest) Reset() { + *x = DowngradeVersionTestRequest{} + mi := &file_rpc_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *DowngradeVersionTestRequest) XXX_Size() int { - return m.Size() + +func (x *DowngradeVersionTestRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DowngradeVersionTestRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DowngradeVersionTestRequest.DiscardUnknown(m) + +func (*DowngradeVersionTestRequest) ProtoMessage() {} + +func (x *DowngradeVersionTestRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[59] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DowngradeVersionTestRequest proto.InternalMessageInfo +// Deprecated: Use DowngradeVersionTestRequest.ProtoReflect.Descriptor instead. +func (*DowngradeVersionTestRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{59} +} -func (m *DowngradeVersionTestRequest) GetVer() string { - if m != nil { - return m.Ver +func (x *DowngradeVersionTestRequest) GetVer() string { + if x != nil { + return x.Ver } return "" } type StatusRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *StatusRequest) Reset() { *m = StatusRequest{} } -func (m *StatusRequest) String() string { return proto.CompactTextString(m) } -func (*StatusRequest) ProtoMessage() {} -func (*StatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{60} -} -func (m *StatusRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *StatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_StatusRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *StatusRequest) Reset() { + *x = StatusRequest{} + mi := &file_rpc_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *StatusRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_StatusRequest.Merge(m, src) -} -func (m *StatusRequest) XXX_Size() int { - return m.Size() + +func (x *StatusRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *StatusRequest) XXX_DiscardUnknown() { - xxx_messageInfo_StatusRequest.DiscardUnknown(m) + +func (*StatusRequest) ProtoMessage() {} + +func (x *StatusRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[60] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_StatusRequest proto.InternalMessageInfo +// Deprecated: Use StatusRequest.ProtoReflect.Descriptor instead. +func (*StatusRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{60} +} type StatusResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // version is the cluster protocol version used by the responding member. Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // dbSize is the size of the backend database physically allocated, in bytes, of the responding member. @@ -4301,20522 +4303,2650 @@ type StatusResponse struct { // dbSizeQuota is the configured etcd storage quota in bytes (the value passed to etcd instance by flag --quota-backend-bytes) DbSizeQuota int64 `protobuf:"varint,12,opt,name=dbSizeQuota,proto3" json:"dbSizeQuota,omitempty"` // downgradeInfo indicates if there is downgrade process. - DowngradeInfo *DowngradeInfo `protobuf:"bytes,13,opt,name=downgradeInfo,proto3" json:"downgradeInfo,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + DowngradeInfo *DowngradeInfo `protobuf:"bytes,13,opt,name=downgradeInfo,proto3" json:"downgradeInfo,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *StatusResponse) Reset() { *m = StatusResponse{} } -func (m *StatusResponse) String() string { return proto.CompactTextString(m) } -func (*StatusResponse) ProtoMessage() {} -func (*StatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{61} -} -func (m *StatusResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *StatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_StatusResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *StatusResponse) Reset() { + *x = StatusResponse{} + mi := &file_rpc_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *StatusResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_StatusResponse.Merge(m, src) -} -func (m *StatusResponse) XXX_Size() int { - return m.Size() + +func (x *StatusResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *StatusResponse) XXX_DiscardUnknown() { - xxx_messageInfo_StatusResponse.DiscardUnknown(m) + +func (*StatusResponse) ProtoMessage() {} + +func (x *StatusResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[61] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_StatusResponse proto.InternalMessageInfo +// Deprecated: Use StatusResponse.ProtoReflect.Descriptor instead. +func (*StatusResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{61} +} -func (m *StatusResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *StatusResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *StatusResponse) GetVersion() string { - if m != nil { - return m.Version +func (x *StatusResponse) GetVersion() string { + if x != nil { + return x.Version } return "" } -func (m *StatusResponse) GetDbSize() int64 { - if m != nil { - return m.DbSize +func (x *StatusResponse) GetDbSize() int64 { + if x != nil { + return x.DbSize } return 0 } -func (m *StatusResponse) GetLeader() uint64 { - if m != nil { - return m.Leader +func (x *StatusResponse) GetLeader() uint64 { + if x != nil { + return x.Leader } return 0 } -func (m *StatusResponse) GetRaftIndex() uint64 { - if m != nil { - return m.RaftIndex +func (x *StatusResponse) GetRaftIndex() uint64 { + if x != nil { + return x.RaftIndex } return 0 } -func (m *StatusResponse) GetRaftTerm() uint64 { - if m != nil { - return m.RaftTerm +func (x *StatusResponse) GetRaftTerm() uint64 { + if x != nil { + return x.RaftTerm } return 0 } -func (m *StatusResponse) GetRaftAppliedIndex() uint64 { - if m != nil { - return m.RaftAppliedIndex +func (x *StatusResponse) GetRaftAppliedIndex() uint64 { + if x != nil { + return x.RaftAppliedIndex } return 0 } -func (m *StatusResponse) GetErrors() []string { - if m != nil { - return m.Errors +func (x *StatusResponse) GetErrors() []string { + if x != nil { + return x.Errors } return nil } -func (m *StatusResponse) GetDbSizeInUse() int64 { - if m != nil { - return m.DbSizeInUse +func (x *StatusResponse) GetDbSizeInUse() int64 { + if x != nil { + return x.DbSizeInUse } return 0 } -func (m *StatusResponse) GetIsLearner() bool { - if m != nil { - return m.IsLearner +func (x *StatusResponse) GetIsLearner() bool { + if x != nil { + return x.IsLearner } return false } -func (m *StatusResponse) GetStorageVersion() string { - if m != nil { - return m.StorageVersion +func (x *StatusResponse) GetStorageVersion() string { + if x != nil { + return x.StorageVersion } return "" } -func (m *StatusResponse) GetDbSizeQuota() int64 { - if m != nil { - return m.DbSizeQuota +func (x *StatusResponse) GetDbSizeQuota() int64 { + if x != nil { + return x.DbSizeQuota } return 0 } -func (m *StatusResponse) GetDowngradeInfo() *DowngradeInfo { - if m != nil { - return m.DowngradeInfo +func (x *StatusResponse) GetDowngradeInfo() *DowngradeInfo { + if x != nil { + return x.DowngradeInfo } return nil } type DowngradeInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` // enabled indicates whether the cluster is enabled to downgrade. Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` // targetVersion is the target downgrade version. - TargetVersion string `protobuf:"bytes,2,opt,name=targetVersion,proto3" json:"targetVersion,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + TargetVersion string `protobuf:"bytes,2,opt,name=targetVersion,proto3" json:"targetVersion,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *DowngradeInfo) Reset() { *m = DowngradeInfo{} } -func (m *DowngradeInfo) String() string { return proto.CompactTextString(m) } -func (*DowngradeInfo) ProtoMessage() {} -func (*DowngradeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{62} -} -func (m *DowngradeInfo) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DowngradeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_DowngradeInfo.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *DowngradeInfo) Reset() { + *x = DowngradeInfo{} + mi := &file_rpc_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *DowngradeInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_DowngradeInfo.Merge(m, src) -} -func (m *DowngradeInfo) XXX_Size() int { - return m.Size() + +func (x *DowngradeInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DowngradeInfo) XXX_DiscardUnknown() { - xxx_messageInfo_DowngradeInfo.DiscardUnknown(m) + +func (*DowngradeInfo) ProtoMessage() {} + +func (x *DowngradeInfo) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[62] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DowngradeInfo proto.InternalMessageInfo +// Deprecated: Use DowngradeInfo.ProtoReflect.Descriptor instead. +func (*DowngradeInfo) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{62} +} -func (m *DowngradeInfo) GetEnabled() bool { - if m != nil { - return m.Enabled +func (x *DowngradeInfo) GetEnabled() bool { + if x != nil { + return x.Enabled } return false } -func (m *DowngradeInfo) GetTargetVersion() string { - if m != nil { - return m.TargetVersion +func (x *DowngradeInfo) GetTargetVersion() string { + if x != nil { + return x.TargetVersion } return "" } type AuthEnableRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthEnableRequest) Reset() { *m = AuthEnableRequest{} } -func (m *AuthEnableRequest) String() string { return proto.CompactTextString(m) } -func (*AuthEnableRequest) ProtoMessage() {} -func (*AuthEnableRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{63} -} -func (m *AuthEnableRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthEnableRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthEnableRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (x *AuthEnableRequest) Reset() { + *x = AuthEnableRequest{} + mi := &file_rpc_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AuthEnableRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AuthEnableRequest) ProtoMessage() {} + +func (x *AuthEnableRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[63] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } + return mi.MessageOf(x) } -func (m *AuthEnableRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthEnableRequest.Merge(m, src) -} -func (m *AuthEnableRequest) XXX_Size() int { - return m.Size() + +// Deprecated: Use AuthEnableRequest.ProtoReflect.Descriptor instead. +func (*AuthEnableRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{63} } -func (m *AuthEnableRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthEnableRequest.DiscardUnknown(m) + +type AuthDisableRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -var xxx_messageInfo_AuthEnableRequest proto.InternalMessageInfo +func (x *AuthDisableRequest) Reset() { + *x = AuthDisableRequest{} + mi := &file_rpc_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} -type AuthDisableRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *AuthDisableRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthDisableRequest) Reset() { *m = AuthDisableRequest{} } -func (m *AuthDisableRequest) String() string { return proto.CompactTextString(m) } -func (*AuthDisableRequest) ProtoMessage() {} -func (*AuthDisableRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{64} -} -func (m *AuthDisableRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthDisableRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthDisableRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (*AuthDisableRequest) ProtoMessage() {} + +func (x *AuthDisableRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[64] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } + return mi.MessageOf(x) } -func (m *AuthDisableRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthDisableRequest.Merge(m, src) -} -func (m *AuthDisableRequest) XXX_Size() int { - return m.Size() + +// Deprecated: Use AuthDisableRequest.ProtoReflect.Descriptor instead. +func (*AuthDisableRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{64} } -func (m *AuthDisableRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthDisableRequest.DiscardUnknown(m) + +type AuthStatusRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -var xxx_messageInfo_AuthDisableRequest proto.InternalMessageInfo +func (x *AuthStatusRequest) Reset() { + *x = AuthStatusRequest{} + mi := &file_rpc_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} -type AuthStatusRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *AuthStatusRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthStatusRequest) Reset() { *m = AuthStatusRequest{} } -func (m *AuthStatusRequest) String() string { return proto.CompactTextString(m) } -func (*AuthStatusRequest) ProtoMessage() {} -func (*AuthStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{65} -} -func (m *AuthStatusRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthStatusRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (*AuthStatusRequest) ProtoMessage() {} + +func (x *AuthStatusRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[65] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } + return mi.MessageOf(x) } -func (m *AuthStatusRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthStatusRequest.Merge(m, src) -} -func (m *AuthStatusRequest) XXX_Size() int { - return m.Size() + +// Deprecated: Use AuthStatusRequest.ProtoReflect.Descriptor instead. +func (*AuthStatusRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{65} } -func (m *AuthStatusRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthStatusRequest.DiscardUnknown(m) + +type AuthenticateRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -var xxx_messageInfo_AuthStatusRequest proto.InternalMessageInfo +func (x *AuthenticateRequest) Reset() { + *x = AuthenticateRequest{} + mi := &file_rpc_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} -type AuthenticateRequest struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *AuthenticateRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthenticateRequest) Reset() { *m = AuthenticateRequest{} } -func (m *AuthenticateRequest) String() string { return proto.CompactTextString(m) } -func (*AuthenticateRequest) ProtoMessage() {} -func (*AuthenticateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{66} -} -func (m *AuthenticateRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthenticateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthenticateRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (*AuthenticateRequest) ProtoMessage() {} + +func (x *AuthenticateRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[66] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *AuthenticateRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthenticateRequest.Merge(m, src) -} -func (m *AuthenticateRequest) XXX_Size() int { - return m.Size() -} -func (m *AuthenticateRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthenticateRequest.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_AuthenticateRequest proto.InternalMessageInfo +// Deprecated: Use AuthenticateRequest.ProtoReflect.Descriptor instead. +func (*AuthenticateRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{66} +} -func (m *AuthenticateRequest) GetName() string { - if m != nil { - return m.Name +func (x *AuthenticateRequest) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *AuthenticateRequest) GetPassword() string { - if m != nil { - return m.Password +func (x *AuthenticateRequest) GetPassword() string { + if x != nil { + return x.Password } return "" } type AuthUserAddRequest struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` - Options *authpb.UserAddOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` - HashedPassword string `protobuf:"bytes,4,opt,name=hashedPassword,proto3" json:"hashedPassword,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AuthUserAddRequest) Reset() { *m = AuthUserAddRequest{} } -func (m *AuthUserAddRequest) String() string { return proto.CompactTextString(m) } -func (*AuthUserAddRequest) ProtoMessage() {} -func (*AuthUserAddRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{67} -} -func (m *AuthUserAddRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthUserAddRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthUserAddRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + Options *authpb.UserAddOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` + HashedPassword string `protobuf:"bytes,4,opt,name=hashedPassword,proto3" json:"hashedPassword,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthUserAddRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthUserAddRequest.Merge(m, src) + +func (x *AuthUserAddRequest) Reset() { + *x = AuthUserAddRequest{} + mi := &file_rpc_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthUserAddRequest) XXX_Size() int { - return m.Size() + +func (x *AuthUserAddRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthUserAddRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthUserAddRequest.DiscardUnknown(m) + +func (*AuthUserAddRequest) ProtoMessage() {} + +func (x *AuthUserAddRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[67] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthUserAddRequest proto.InternalMessageInfo +// Deprecated: Use AuthUserAddRequest.ProtoReflect.Descriptor instead. +func (*AuthUserAddRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{67} +} -func (m *AuthUserAddRequest) GetName() string { - if m != nil { - return m.Name +func (x *AuthUserAddRequest) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *AuthUserAddRequest) GetPassword() string { - if m != nil { - return m.Password +func (x *AuthUserAddRequest) GetPassword() string { + if x != nil { + return x.Password } return "" } -func (m *AuthUserAddRequest) GetOptions() *authpb.UserAddOptions { - if m != nil { - return m.Options +func (x *AuthUserAddRequest) GetOptions() *authpb.UserAddOptions { + if x != nil { + return x.Options } return nil } -func (m *AuthUserAddRequest) GetHashedPassword() string { - if m != nil { - return m.HashedPassword +func (x *AuthUserAddRequest) GetHashedPassword() string { + if x != nil { + return x.HashedPassword } return "" } type AuthUserGetRequest struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthUserGetRequest) Reset() { *m = AuthUserGetRequest{} } -func (m *AuthUserGetRequest) String() string { return proto.CompactTextString(m) } -func (*AuthUserGetRequest) ProtoMessage() {} -func (*AuthUserGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{68} -} -func (m *AuthUserGetRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthUserGetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthUserGetRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *AuthUserGetRequest) Reset() { + *x = AuthUserGetRequest{} + mi := &file_rpc_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthUserGetRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthUserGetRequest.Merge(m, src) -} -func (m *AuthUserGetRequest) XXX_Size() int { - return m.Size() + +func (x *AuthUserGetRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthUserGetRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthUserGetRequest.DiscardUnknown(m) + +func (*AuthUserGetRequest) ProtoMessage() {} + +func (x *AuthUserGetRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[68] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthUserGetRequest proto.InternalMessageInfo +// Deprecated: Use AuthUserGetRequest.ProtoReflect.Descriptor instead. +func (*AuthUserGetRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{68} +} -func (m *AuthUserGetRequest) GetName() string { - if m != nil { - return m.Name +func (x *AuthUserGetRequest) GetName() string { + if x != nil { + return x.Name } return "" } type AuthUserDeleteRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // name is the name of the user to delete. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthUserDeleteRequest) Reset() { *m = AuthUserDeleteRequest{} } -func (m *AuthUserDeleteRequest) String() string { return proto.CompactTextString(m) } -func (*AuthUserDeleteRequest) ProtoMessage() {} -func (*AuthUserDeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{69} -} -func (m *AuthUserDeleteRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthUserDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthUserDeleteRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AuthUserDeleteRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthUserDeleteRequest.Merge(m, src) +func (x *AuthUserDeleteRequest) Reset() { + *x = AuthUserDeleteRequest{} + mi := &file_rpc_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthUserDeleteRequest) XXX_Size() int { - return m.Size() + +func (x *AuthUserDeleteRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthUserDeleteRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthUserDeleteRequest.DiscardUnknown(m) + +func (*AuthUserDeleteRequest) ProtoMessage() {} + +func (x *AuthUserDeleteRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[69] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthUserDeleteRequest proto.InternalMessageInfo +// Deprecated: Use AuthUserDeleteRequest.ProtoReflect.Descriptor instead. +func (*AuthUserDeleteRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{69} +} -func (m *AuthUserDeleteRequest) GetName() string { - if m != nil { - return m.Name +func (x *AuthUserDeleteRequest) GetName() string { + if x != nil { + return x.Name } return "" } type AuthUserChangePasswordRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // name is the name of the user whose password is being changed. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // password is the new password for the user. Note that this field will be removed in the API layer. Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` // hashedPassword is the new password for the user. Note that this field will be initialized in the API layer. - HashedPassword string `protobuf:"bytes,3,opt,name=hashedPassword,proto3" json:"hashedPassword,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + HashedPassword string `protobuf:"bytes,3,opt,name=hashedPassword,proto3" json:"hashedPassword,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthUserChangePasswordRequest) Reset() { *m = AuthUserChangePasswordRequest{} } -func (m *AuthUserChangePasswordRequest) String() string { return proto.CompactTextString(m) } -func (*AuthUserChangePasswordRequest) ProtoMessage() {} -func (*AuthUserChangePasswordRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{70} -} -func (m *AuthUserChangePasswordRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthUserChangePasswordRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthUserChangePasswordRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *AuthUserChangePasswordRequest) Reset() { + *x = AuthUserChangePasswordRequest{} + mi := &file_rpc_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthUserChangePasswordRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthUserChangePasswordRequest.Merge(m, src) -} -func (m *AuthUserChangePasswordRequest) XXX_Size() int { - return m.Size() + +func (x *AuthUserChangePasswordRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthUserChangePasswordRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthUserChangePasswordRequest.DiscardUnknown(m) + +func (*AuthUserChangePasswordRequest) ProtoMessage() {} + +func (x *AuthUserChangePasswordRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[70] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthUserChangePasswordRequest proto.InternalMessageInfo +// Deprecated: Use AuthUserChangePasswordRequest.ProtoReflect.Descriptor instead. +func (*AuthUserChangePasswordRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{70} +} -func (m *AuthUserChangePasswordRequest) GetName() string { - if m != nil { - return m.Name +func (x *AuthUserChangePasswordRequest) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *AuthUserChangePasswordRequest) GetPassword() string { - if m != nil { - return m.Password +func (x *AuthUserChangePasswordRequest) GetPassword() string { + if x != nil { + return x.Password } return "" } -func (m *AuthUserChangePasswordRequest) GetHashedPassword() string { - if m != nil { - return m.HashedPassword +func (x *AuthUserChangePasswordRequest) GetHashedPassword() string { + if x != nil { + return x.HashedPassword } return "" } type AuthUserGrantRoleRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // user is the name of the user which should be granted a given role. User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` // role is the name of the role to grant to the user. - Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthUserGrantRoleRequest) Reset() { *m = AuthUserGrantRoleRequest{} } -func (m *AuthUserGrantRoleRequest) String() string { return proto.CompactTextString(m) } -func (*AuthUserGrantRoleRequest) ProtoMessage() {} -func (*AuthUserGrantRoleRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{71} -} -func (m *AuthUserGrantRoleRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthUserGrantRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthUserGrantRoleRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AuthUserGrantRoleRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthUserGrantRoleRequest.Merge(m, src) +func (x *AuthUserGrantRoleRequest) Reset() { + *x = AuthUserGrantRoleRequest{} + mi := &file_rpc_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthUserGrantRoleRequest) XXX_Size() int { - return m.Size() + +func (x *AuthUserGrantRoleRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthUserGrantRoleRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthUserGrantRoleRequest.DiscardUnknown(m) + +func (*AuthUserGrantRoleRequest) ProtoMessage() {} + +func (x *AuthUserGrantRoleRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[71] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthUserGrantRoleRequest proto.InternalMessageInfo +// Deprecated: Use AuthUserGrantRoleRequest.ProtoReflect.Descriptor instead. +func (*AuthUserGrantRoleRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{71} +} -func (m *AuthUserGrantRoleRequest) GetUser() string { - if m != nil { - return m.User +func (x *AuthUserGrantRoleRequest) GetUser() string { + if x != nil { + return x.User } return "" } -func (m *AuthUserGrantRoleRequest) GetRole() string { - if m != nil { - return m.Role +func (x *AuthUserGrantRoleRequest) GetRole() string { + if x != nil { + return x.Role } return "" } type AuthUserRevokeRoleRequest struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthUserRevokeRoleRequest) Reset() { *m = AuthUserRevokeRoleRequest{} } -func (m *AuthUserRevokeRoleRequest) String() string { return proto.CompactTextString(m) } -func (*AuthUserRevokeRoleRequest) ProtoMessage() {} -func (*AuthUserRevokeRoleRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{72} -} -func (m *AuthUserRevokeRoleRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthUserRevokeRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthUserRevokeRoleRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *AuthUserRevokeRoleRequest) Reset() { + *x = AuthUserRevokeRoleRequest{} + mi := &file_rpc_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthUserRevokeRoleRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthUserRevokeRoleRequest.Merge(m, src) -} -func (m *AuthUserRevokeRoleRequest) XXX_Size() int { - return m.Size() + +func (x *AuthUserRevokeRoleRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthUserRevokeRoleRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthUserRevokeRoleRequest.DiscardUnknown(m) + +func (*AuthUserRevokeRoleRequest) ProtoMessage() {} + +func (x *AuthUserRevokeRoleRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[72] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthUserRevokeRoleRequest proto.InternalMessageInfo +// Deprecated: Use AuthUserRevokeRoleRequest.ProtoReflect.Descriptor instead. +func (*AuthUserRevokeRoleRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{72} +} -func (m *AuthUserRevokeRoleRequest) GetName() string { - if m != nil { - return m.Name +func (x *AuthUserRevokeRoleRequest) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *AuthUserRevokeRoleRequest) GetRole() string { - if m != nil { - return m.Role +func (x *AuthUserRevokeRoleRequest) GetRole() string { + if x != nil { + return x.Role } return "" } type AuthRoleAddRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // name is the name of the role to add to the authentication system. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthRoleAddRequest) Reset() { *m = AuthRoleAddRequest{} } -func (m *AuthRoleAddRequest) String() string { return proto.CompactTextString(m) } -func (*AuthRoleAddRequest) ProtoMessage() {} -func (*AuthRoleAddRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{73} -} -func (m *AuthRoleAddRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthRoleAddRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthRoleAddRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AuthRoleAddRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthRoleAddRequest.Merge(m, src) +func (x *AuthRoleAddRequest) Reset() { + *x = AuthRoleAddRequest{} + mi := &file_rpc_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthRoleAddRequest) XXX_Size() int { - return m.Size() + +func (x *AuthRoleAddRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthRoleAddRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthRoleAddRequest.DiscardUnknown(m) + +func (*AuthRoleAddRequest) ProtoMessage() {} + +func (x *AuthRoleAddRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[73] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthRoleAddRequest proto.InternalMessageInfo +// Deprecated: Use AuthRoleAddRequest.ProtoReflect.Descriptor instead. +func (*AuthRoleAddRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{73} +} -func (m *AuthRoleAddRequest) GetName() string { - if m != nil { - return m.Name +func (x *AuthRoleAddRequest) GetName() string { + if x != nil { + return x.Name } return "" } type AuthRoleGetRequest struct { - Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthRoleGetRequest) Reset() { *m = AuthRoleGetRequest{} } -func (m *AuthRoleGetRequest) String() string { return proto.CompactTextString(m) } -func (*AuthRoleGetRequest) ProtoMessage() {} -func (*AuthRoleGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{74} -} -func (m *AuthRoleGetRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthRoleGetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthRoleGetRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *AuthRoleGetRequest) Reset() { + *x = AuthRoleGetRequest{} + mi := &file_rpc_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthRoleGetRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthRoleGetRequest.Merge(m, src) -} -func (m *AuthRoleGetRequest) XXX_Size() int { - return m.Size() + +func (x *AuthRoleGetRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthRoleGetRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthRoleGetRequest.DiscardUnknown(m) + +func (*AuthRoleGetRequest) ProtoMessage() {} + +func (x *AuthRoleGetRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[74] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthRoleGetRequest proto.InternalMessageInfo +// Deprecated: Use AuthRoleGetRequest.ProtoReflect.Descriptor instead. +func (*AuthRoleGetRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{74} +} -func (m *AuthRoleGetRequest) GetRole() string { - if m != nil { - return m.Role +func (x *AuthRoleGetRequest) GetRole() string { + if x != nil { + return x.Role } return "" } type AuthUserListRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthUserListRequest) Reset() { *m = AuthUserListRequest{} } -func (m *AuthUserListRequest) String() string { return proto.CompactTextString(m) } -func (*AuthUserListRequest) ProtoMessage() {} -func (*AuthUserListRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{75} -} -func (m *AuthUserListRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthUserListRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthUserListRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (x *AuthUserListRequest) Reset() { + *x = AuthUserListRequest{} + mi := &file_rpc_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AuthUserListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AuthUserListRequest) ProtoMessage() {} + +func (x *AuthUserListRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[75] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } + return mi.MessageOf(x) } -func (m *AuthUserListRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthUserListRequest.Merge(m, src) -} -func (m *AuthUserListRequest) XXX_Size() int { - return m.Size() + +// Deprecated: Use AuthUserListRequest.ProtoReflect.Descriptor instead. +func (*AuthUserListRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{75} } -func (m *AuthUserListRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthUserListRequest.DiscardUnknown(m) + +type AuthRoleListRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -var xxx_messageInfo_AuthUserListRequest proto.InternalMessageInfo +func (x *AuthRoleListRequest) Reset() { + *x = AuthRoleListRequest{} + mi := &file_rpc_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} -type AuthRoleListRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *AuthRoleListRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthRoleListRequest) Reset() { *m = AuthRoleListRequest{} } -func (m *AuthRoleListRequest) String() string { return proto.CompactTextString(m) } -func (*AuthRoleListRequest) ProtoMessage() {} -func (*AuthRoleListRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{76} -} -func (m *AuthRoleListRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthRoleListRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthRoleListRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (*AuthRoleListRequest) ProtoMessage() {} + +func (x *AuthRoleListRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[76] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } + return mi.MessageOf(x) } -func (m *AuthRoleListRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthRoleListRequest.Merge(m, src) -} -func (m *AuthRoleListRequest) XXX_Size() int { - return m.Size() + +// Deprecated: Use AuthRoleListRequest.ProtoReflect.Descriptor instead. +func (*AuthRoleListRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{76} } -func (m *AuthRoleListRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthRoleListRequest.DiscardUnknown(m) + +type AuthRoleDeleteRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -var xxx_messageInfo_AuthRoleListRequest proto.InternalMessageInfo +func (x *AuthRoleDeleteRequest) Reset() { + *x = AuthRoleDeleteRequest{} + mi := &file_rpc_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} -type AuthRoleDeleteRequest struct { - Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *AuthRoleDeleteRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthRoleDeleteRequest) Reset() { *m = AuthRoleDeleteRequest{} } -func (m *AuthRoleDeleteRequest) String() string { return proto.CompactTextString(m) } -func (*AuthRoleDeleteRequest) ProtoMessage() {} -func (*AuthRoleDeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{77} -} -func (m *AuthRoleDeleteRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthRoleDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthRoleDeleteRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (*AuthRoleDeleteRequest) ProtoMessage() {} + +func (x *AuthRoleDeleteRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[77] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *AuthRoleDeleteRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthRoleDeleteRequest.Merge(m, src) -} -func (m *AuthRoleDeleteRequest) XXX_Size() int { - return m.Size() -} -func (m *AuthRoleDeleteRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthRoleDeleteRequest.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_AuthRoleDeleteRequest proto.InternalMessageInfo +// Deprecated: Use AuthRoleDeleteRequest.ProtoReflect.Descriptor instead. +func (*AuthRoleDeleteRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{77} +} -func (m *AuthRoleDeleteRequest) GetRole() string { - if m != nil { - return m.Role +func (x *AuthRoleDeleteRequest) GetRole() string { + if x != nil { + return x.Role } return "" } type AuthRoleGrantPermissionRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // name is the name of the role which will be granted the permission. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // perm is the permission to grant to the role. - Perm *authpb.Permission `protobuf:"bytes,2,opt,name=perm,proto3" json:"perm,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Perm *authpb.Permission `protobuf:"bytes,2,opt,name=perm,proto3" json:"perm,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthRoleGrantPermissionRequest) Reset() { *m = AuthRoleGrantPermissionRequest{} } -func (m *AuthRoleGrantPermissionRequest) String() string { return proto.CompactTextString(m) } -func (*AuthRoleGrantPermissionRequest) ProtoMessage() {} -func (*AuthRoleGrantPermissionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{78} -} -func (m *AuthRoleGrantPermissionRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthRoleGrantPermissionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthRoleGrantPermissionRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *AuthRoleGrantPermissionRequest) Reset() { + *x = AuthRoleGrantPermissionRequest{} + mi := &file_rpc_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthRoleGrantPermissionRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthRoleGrantPermissionRequest.Merge(m, src) -} -func (m *AuthRoleGrantPermissionRequest) XXX_Size() int { - return m.Size() + +func (x *AuthRoleGrantPermissionRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthRoleGrantPermissionRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthRoleGrantPermissionRequest.DiscardUnknown(m) + +func (*AuthRoleGrantPermissionRequest) ProtoMessage() {} + +func (x *AuthRoleGrantPermissionRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[78] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthRoleGrantPermissionRequest proto.InternalMessageInfo +// Deprecated: Use AuthRoleGrantPermissionRequest.ProtoReflect.Descriptor instead. +func (*AuthRoleGrantPermissionRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{78} +} -func (m *AuthRoleGrantPermissionRequest) GetName() string { - if m != nil { - return m.Name +func (x *AuthRoleGrantPermissionRequest) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *AuthRoleGrantPermissionRequest) GetPerm() *authpb.Permission { - if m != nil { - return m.Perm +func (x *AuthRoleGrantPermissionRequest) GetPerm() *authpb.Permission { + if x != nil { + return x.Perm } return nil } type AuthRoleRevokePermissionRequest struct { - Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` - Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - RangeEnd []byte `protobuf:"bytes,3,opt,name=range_end,json=rangeEnd,proto3" json:"range_end,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + RangeEnd []byte `protobuf:"bytes,3,opt,name=range_end,json=rangeEnd,proto3" json:"range_end,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthRoleRevokePermissionRequest) Reset() { *m = AuthRoleRevokePermissionRequest{} } -func (m *AuthRoleRevokePermissionRequest) String() string { return proto.CompactTextString(m) } -func (*AuthRoleRevokePermissionRequest) ProtoMessage() {} -func (*AuthRoleRevokePermissionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{79} -} -func (m *AuthRoleRevokePermissionRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthRoleRevokePermissionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthRoleRevokePermissionRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AuthRoleRevokePermissionRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthRoleRevokePermissionRequest.Merge(m, src) +func (x *AuthRoleRevokePermissionRequest) Reset() { + *x = AuthRoleRevokePermissionRequest{} + mi := &file_rpc_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthRoleRevokePermissionRequest) XXX_Size() int { - return m.Size() + +func (x *AuthRoleRevokePermissionRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthRoleRevokePermissionRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthRoleRevokePermissionRequest.DiscardUnknown(m) + +func (*AuthRoleRevokePermissionRequest) ProtoMessage() {} + +func (x *AuthRoleRevokePermissionRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[79] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthRoleRevokePermissionRequest proto.InternalMessageInfo +// Deprecated: Use AuthRoleRevokePermissionRequest.ProtoReflect.Descriptor instead. +func (*AuthRoleRevokePermissionRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{79} +} -func (m *AuthRoleRevokePermissionRequest) GetRole() string { - if m != nil { - return m.Role +func (x *AuthRoleRevokePermissionRequest) GetRole() string { + if x != nil { + return x.Role } return "" } -func (m *AuthRoleRevokePermissionRequest) GetKey() []byte { - if m != nil { - return m.Key +func (x *AuthRoleRevokePermissionRequest) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func (m *AuthRoleRevokePermissionRequest) GetRangeEnd() []byte { - if m != nil { - return m.RangeEnd +func (x *AuthRoleRevokePermissionRequest) GetRangeEnd() []byte { + if x != nil { + return x.RangeEnd } return nil } type AuthEnableResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthEnableResponse) Reset() { *m = AuthEnableResponse{} } -func (m *AuthEnableResponse) String() string { return proto.CompactTextString(m) } -func (*AuthEnableResponse) ProtoMessage() {} -func (*AuthEnableResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{80} -} -func (m *AuthEnableResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthEnableResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthEnableResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *AuthEnableResponse) Reset() { + *x = AuthEnableResponse{} + mi := &file_rpc_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthEnableResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthEnableResponse.Merge(m, src) -} -func (m *AuthEnableResponse) XXX_Size() int { - return m.Size() + +func (x *AuthEnableResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthEnableResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthEnableResponse.DiscardUnknown(m) + +func (*AuthEnableResponse) ProtoMessage() {} + +func (x *AuthEnableResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[80] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthEnableResponse proto.InternalMessageInfo +// Deprecated: Use AuthEnableResponse.ProtoReflect.Descriptor instead. +func (*AuthEnableResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{80} +} -func (m *AuthEnableResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthEnableResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } type AuthDisableResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthDisableResponse) Reset() { *m = AuthDisableResponse{} } -func (m *AuthDisableResponse) String() string { return proto.CompactTextString(m) } -func (*AuthDisableResponse) ProtoMessage() {} -func (*AuthDisableResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{81} -} -func (m *AuthDisableResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthDisableResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthDisableResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AuthDisableResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthDisableResponse.Merge(m, src) +func (x *AuthDisableResponse) Reset() { + *x = AuthDisableResponse{} + mi := &file_rpc_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthDisableResponse) XXX_Size() int { - return m.Size() + +func (x *AuthDisableResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthDisableResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthDisableResponse.DiscardUnknown(m) + +func (*AuthDisableResponse) ProtoMessage() {} + +func (x *AuthDisableResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[81] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthDisableResponse proto.InternalMessageInfo +// Deprecated: Use AuthDisableResponse.ProtoReflect.Descriptor instead. +func (*AuthDisableResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{81} +} -func (m *AuthDisableResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthDisableResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } type AuthStatusResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` // authRevision is the current revision of auth store - AuthRevision uint64 `protobuf:"varint,3,opt,name=authRevision,proto3" json:"authRevision,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + AuthRevision uint64 `protobuf:"varint,3,opt,name=authRevision,proto3" json:"authRevision,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthStatusResponse) Reset() { *m = AuthStatusResponse{} } -func (m *AuthStatusResponse) String() string { return proto.CompactTextString(m) } -func (*AuthStatusResponse) ProtoMessage() {} -func (*AuthStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{82} -} -func (m *AuthStatusResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthStatusResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *AuthStatusResponse) Reset() { + *x = AuthStatusResponse{} + mi := &file_rpc_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthStatusResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthStatusResponse.Merge(m, src) -} -func (m *AuthStatusResponse) XXX_Size() int { - return m.Size() + +func (x *AuthStatusResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthStatusResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthStatusResponse.DiscardUnknown(m) + +func (*AuthStatusResponse) ProtoMessage() {} + +func (x *AuthStatusResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[82] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthStatusResponse proto.InternalMessageInfo +// Deprecated: Use AuthStatusResponse.ProtoReflect.Descriptor instead. +func (*AuthStatusResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{82} +} -func (m *AuthStatusResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthStatusResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *AuthStatusResponse) GetEnabled() bool { - if m != nil { - return m.Enabled +func (x *AuthStatusResponse) GetEnabled() bool { + if x != nil { + return x.Enabled } return false } -func (m *AuthStatusResponse) GetAuthRevision() uint64 { - if m != nil { - return m.AuthRevision +func (x *AuthStatusResponse) GetAuthRevision() uint64 { + if x != nil { + return x.AuthRevision } return 0 } type AuthenticateResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // token is an authorized token that can be used in succeeding RPCs - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthenticateResponse) Reset() { *m = AuthenticateResponse{} } -func (m *AuthenticateResponse) String() string { return proto.CompactTextString(m) } -func (*AuthenticateResponse) ProtoMessage() {} -func (*AuthenticateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{83} -} -func (m *AuthenticateResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthenticateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthenticateResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *AuthenticateResponse) Reset() { + *x = AuthenticateResponse{} + mi := &file_rpc_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthenticateResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthenticateResponse.Merge(m, src) -} -func (m *AuthenticateResponse) XXX_Size() int { - return m.Size() + +func (x *AuthenticateResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthenticateResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthenticateResponse.DiscardUnknown(m) + +func (*AuthenticateResponse) ProtoMessage() {} + +func (x *AuthenticateResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[83] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthenticateResponse proto.InternalMessageInfo +// Deprecated: Use AuthenticateResponse.ProtoReflect.Descriptor instead. +func (*AuthenticateResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{83} +} -func (m *AuthenticateResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthenticateResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *AuthenticateResponse) GetToken() string { - if m != nil { - return m.Token +func (x *AuthenticateResponse) GetToken() string { + if x != nil { + return x.Token } return "" } type AuthUserAddResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthUserAddResponse) Reset() { *m = AuthUserAddResponse{} } -func (m *AuthUserAddResponse) String() string { return proto.CompactTextString(m) } -func (*AuthUserAddResponse) ProtoMessage() {} -func (*AuthUserAddResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{84} -} -func (m *AuthUserAddResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthUserAddResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthUserAddResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AuthUserAddResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthUserAddResponse.Merge(m, src) +func (x *AuthUserAddResponse) Reset() { + *x = AuthUserAddResponse{} + mi := &file_rpc_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthUserAddResponse) XXX_Size() int { - return m.Size() + +func (x *AuthUserAddResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthUserAddResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthUserAddResponse.DiscardUnknown(m) + +func (*AuthUserAddResponse) ProtoMessage() {} + +func (x *AuthUserAddResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[84] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthUserAddResponse proto.InternalMessageInfo +// Deprecated: Use AuthUserAddResponse.ProtoReflect.Descriptor instead. +func (*AuthUserAddResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{84} +} -func (m *AuthUserAddResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthUserAddResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } type AuthUserGetResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - Roles []string `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + Roles []string `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthUserGetResponse) Reset() { *m = AuthUserGetResponse{} } -func (m *AuthUserGetResponse) String() string { return proto.CompactTextString(m) } -func (*AuthUserGetResponse) ProtoMessage() {} -func (*AuthUserGetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{85} -} -func (m *AuthUserGetResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthUserGetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthUserGetResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *AuthUserGetResponse) Reset() { + *x = AuthUserGetResponse{} + mi := &file_rpc_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthUserGetResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthUserGetResponse.Merge(m, src) -} -func (m *AuthUserGetResponse) XXX_Size() int { - return m.Size() + +func (x *AuthUserGetResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthUserGetResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthUserGetResponse.DiscardUnknown(m) + +func (*AuthUserGetResponse) ProtoMessage() {} + +func (x *AuthUserGetResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[85] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthUserGetResponse proto.InternalMessageInfo +// Deprecated: Use AuthUserGetResponse.ProtoReflect.Descriptor instead. +func (*AuthUserGetResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{85} +} -func (m *AuthUserGetResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthUserGetResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *AuthUserGetResponse) GetRoles() []string { - if m != nil { - return m.Roles +func (x *AuthUserGetResponse) GetRoles() []string { + if x != nil { + return x.Roles } return nil } type AuthUserDeleteResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthUserDeleteResponse) Reset() { *m = AuthUserDeleteResponse{} } -func (m *AuthUserDeleteResponse) String() string { return proto.CompactTextString(m) } -func (*AuthUserDeleteResponse) ProtoMessage() {} -func (*AuthUserDeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{86} -} -func (m *AuthUserDeleteResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthUserDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthUserDeleteResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AuthUserDeleteResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthUserDeleteResponse.Merge(m, src) +func (x *AuthUserDeleteResponse) Reset() { + *x = AuthUserDeleteResponse{} + mi := &file_rpc_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthUserDeleteResponse) XXX_Size() int { - return m.Size() -} -func (m *AuthUserDeleteResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthUserDeleteResponse.DiscardUnknown(m) + +func (x *AuthUserDeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_AuthUserDeleteResponse proto.InternalMessageInfo +func (*AuthUserDeleteResponse) ProtoMessage() {} -func (m *AuthUserDeleteResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthUserDeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[86] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type AuthUserChangePasswordResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use AuthUserDeleteResponse.ProtoReflect.Descriptor instead. +func (*AuthUserDeleteResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{86} } -func (m *AuthUserChangePasswordResponse) Reset() { *m = AuthUserChangePasswordResponse{} } -func (m *AuthUserChangePasswordResponse) String() string { return proto.CompactTextString(m) } -func (*AuthUserChangePasswordResponse) ProtoMessage() {} -func (*AuthUserChangePasswordResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{87} -} -func (m *AuthUserChangePasswordResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthUserChangePasswordResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthUserChangePasswordResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil +func (x *AuthUserDeleteResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } + return nil } -func (m *AuthUserChangePasswordResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthUserChangePasswordResponse.Merge(m, src) + +type AuthUserChangePasswordResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthUserChangePasswordResponse) XXX_Size() int { - return m.Size() + +func (x *AuthUserChangePasswordResponse) Reset() { + *x = AuthUserChangePasswordResponse{} + mi := &file_rpc_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthUserChangePasswordResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthUserChangePasswordResponse.DiscardUnknown(m) + +func (x *AuthUserChangePasswordResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_AuthUserChangePasswordResponse proto.InternalMessageInfo +func (*AuthUserChangePasswordResponse) ProtoMessage() {} -func (m *AuthUserChangePasswordResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthUserChangePasswordResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[87] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type AuthUserGrantRoleResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use AuthUserChangePasswordResponse.ProtoReflect.Descriptor instead. +func (*AuthUserChangePasswordResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{87} } -func (m *AuthUserGrantRoleResponse) Reset() { *m = AuthUserGrantRoleResponse{} } -func (m *AuthUserGrantRoleResponse) String() string { return proto.CompactTextString(m) } -func (*AuthUserGrantRoleResponse) ProtoMessage() {} -func (*AuthUserGrantRoleResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{88} -} -func (m *AuthUserGrantRoleResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthUserGrantRoleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthUserGrantRoleResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil +func (x *AuthUserChangePasswordResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } + return nil } -func (m *AuthUserGrantRoleResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthUserGrantRoleResponse.Merge(m, src) + +type AuthUserGrantRoleResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthUserGrantRoleResponse) XXX_Size() int { - return m.Size() + +func (x *AuthUserGrantRoleResponse) Reset() { + *x = AuthUserGrantRoleResponse{} + mi := &file_rpc_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthUserGrantRoleResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthUserGrantRoleResponse.DiscardUnknown(m) + +func (x *AuthUserGrantRoleResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_AuthUserGrantRoleResponse proto.InternalMessageInfo +func (*AuthUserGrantRoleResponse) ProtoMessage() {} -func (m *AuthUserGrantRoleResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthUserGrantRoleResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[88] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type AuthUserRevokeRoleResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use AuthUserGrantRoleResponse.ProtoReflect.Descriptor instead. +func (*AuthUserGrantRoleResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{88} } -func (m *AuthUserRevokeRoleResponse) Reset() { *m = AuthUserRevokeRoleResponse{} } -func (m *AuthUserRevokeRoleResponse) String() string { return proto.CompactTextString(m) } -func (*AuthUserRevokeRoleResponse) ProtoMessage() {} -func (*AuthUserRevokeRoleResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{89} -} -func (m *AuthUserRevokeRoleResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthUserRevokeRoleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthUserRevokeRoleResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil +func (x *AuthUserGrantRoleResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } + return nil } -func (m *AuthUserRevokeRoleResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthUserRevokeRoleResponse.Merge(m, src) + +type AuthUserRevokeRoleResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthUserRevokeRoleResponse) XXX_Size() int { - return m.Size() + +func (x *AuthUserRevokeRoleResponse) Reset() { + *x = AuthUserRevokeRoleResponse{} + mi := &file_rpc_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthUserRevokeRoleResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthUserRevokeRoleResponse.DiscardUnknown(m) + +func (x *AuthUserRevokeRoleResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_AuthUserRevokeRoleResponse proto.InternalMessageInfo +func (*AuthUserRevokeRoleResponse) ProtoMessage() {} -func (m *AuthUserRevokeRoleResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthUserRevokeRoleResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[89] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type AuthRoleAddResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use AuthUserRevokeRoleResponse.ProtoReflect.Descriptor instead. +func (*AuthUserRevokeRoleResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{89} } -func (m *AuthRoleAddResponse) Reset() { *m = AuthRoleAddResponse{} } -func (m *AuthRoleAddResponse) String() string { return proto.CompactTextString(m) } -func (*AuthRoleAddResponse) ProtoMessage() {} -func (*AuthRoleAddResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{90} -} -func (m *AuthRoleAddResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthRoleAddResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthRoleAddResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil +func (x *AuthUserRevokeRoleResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } + return nil } -func (m *AuthRoleAddResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthRoleAddResponse.Merge(m, src) + +type AuthRoleAddResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthRoleAddResponse) XXX_Size() int { - return m.Size() + +func (x *AuthRoleAddResponse) Reset() { + *x = AuthRoleAddResponse{} + mi := &file_rpc_proto_msgTypes[90] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthRoleAddResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthRoleAddResponse.DiscardUnknown(m) + +func (x *AuthRoleAddResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_AuthRoleAddResponse proto.InternalMessageInfo +func (*AuthRoleAddResponse) ProtoMessage() {} -func (m *AuthRoleAddResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthRoleAddResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[90] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type AuthRoleGetResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - Perm []*authpb.Permission `protobuf:"bytes,2,rep,name=perm,proto3" json:"perm,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use AuthRoleAddResponse.ProtoReflect.Descriptor instead. +func (*AuthRoleAddResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{90} } -func (m *AuthRoleGetResponse) Reset() { *m = AuthRoleGetResponse{} } -func (m *AuthRoleGetResponse) String() string { return proto.CompactTextString(m) } -func (*AuthRoleGetResponse) ProtoMessage() {} -func (*AuthRoleGetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{91} -} -func (m *AuthRoleGetResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthRoleGetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthRoleGetResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil +func (x *AuthRoleAddResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } + return nil } -func (m *AuthRoleGetResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthRoleGetResponse.Merge(m, src) + +type AuthRoleGetResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + Perm []*authpb.Permission `protobuf:"bytes,2,rep,name=perm,proto3" json:"perm,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *AuthRoleGetResponse) XXX_Size() int { - return m.Size() + +func (x *AuthRoleGetResponse) Reset() { + *x = AuthRoleGetResponse{} + mi := &file_rpc_proto_msgTypes[91] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthRoleGetResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthRoleGetResponse.DiscardUnknown(m) + +func (x *AuthRoleGetResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_AuthRoleGetResponse proto.InternalMessageInfo +func (*AuthRoleGetResponse) ProtoMessage() {} -func (m *AuthRoleGetResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthRoleGetResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[91] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *AuthRoleGetResponse) GetPerm() []*authpb.Permission { - if m != nil { - return m.Perm - } - return nil -} - -type AuthRoleListResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - Roles []string `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AuthRoleListResponse) Reset() { *m = AuthRoleListResponse{} } -func (m *AuthRoleListResponse) String() string { return proto.CompactTextString(m) } -func (*AuthRoleListResponse) ProtoMessage() {} -func (*AuthRoleListResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{92} -} -func (m *AuthRoleListResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthRoleListResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthRoleListResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AuthRoleListResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthRoleListResponse.Merge(m, src) -} -func (m *AuthRoleListResponse) XXX_Size() int { - return m.Size() -} -func (m *AuthRoleListResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthRoleListResponse.DiscardUnknown(m) +// Deprecated: Use AuthRoleGetResponse.ProtoReflect.Descriptor instead. +func (*AuthRoleGetResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{91} } -var xxx_messageInfo_AuthRoleListResponse proto.InternalMessageInfo - -func (m *AuthRoleListResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthRoleGetResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *AuthRoleListResponse) GetRoles() []string { - if m != nil { - return m.Roles +func (x *AuthRoleGetResponse) GetPerm() []*authpb.Permission { + if x != nil { + return x.Perm } return nil } -type AuthUserListResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - Users []string `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AuthUserListResponse) Reset() { *m = AuthUserListResponse{} } -func (m *AuthUserListResponse) String() string { return proto.CompactTextString(m) } -func (*AuthUserListResponse) ProtoMessage() {} -func (*AuthUserListResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{93} -} -func (m *AuthUserListResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthUserListResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthUserListResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AuthUserListResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthUserListResponse.Merge(m, src) -} -func (m *AuthUserListResponse) XXX_Size() int { - return m.Size() -} -func (m *AuthUserListResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthUserListResponse.DiscardUnknown(m) +type AuthRoleListResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + Roles []string `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -var xxx_messageInfo_AuthUserListResponse proto.InternalMessageInfo - -func (m *AuthUserListResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header - } - return nil +func (x *AuthRoleListResponse) Reset() { + *x = AuthRoleListResponse{} + mi := &file_rpc_proto_msgTypes[92] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *AuthUserListResponse) GetUsers() []string { - if m != nil { - return m.Users - } - return nil +func (x *AuthRoleListResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -type AuthRoleDeleteResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +func (*AuthRoleListResponse) ProtoMessage() {} -func (m *AuthRoleDeleteResponse) Reset() { *m = AuthRoleDeleteResponse{} } -func (m *AuthRoleDeleteResponse) String() string { return proto.CompactTextString(m) } -func (*AuthRoleDeleteResponse) ProtoMessage() {} -func (*AuthRoleDeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{94} -} -func (m *AuthRoleDeleteResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthRoleDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthRoleDeleteResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (x *AuthRoleListResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[92] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *AuthRoleDeleteResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthRoleDeleteResponse.Merge(m, src) -} -func (m *AuthRoleDeleteResponse) XXX_Size() int { - return m.Size() -} -func (m *AuthRoleDeleteResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthRoleDeleteResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_AuthRoleDeleteResponse proto.InternalMessageInfo - -func (m *AuthRoleDeleteResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header - } - return nil + return mi.MessageOf(x) } -type AuthRoleGrantPermissionResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AuthRoleGrantPermissionResponse) Reset() { *m = AuthRoleGrantPermissionResponse{} } -func (m *AuthRoleGrantPermissionResponse) String() string { return proto.CompactTextString(m) } -func (*AuthRoleGrantPermissionResponse) ProtoMessage() {} -func (*AuthRoleGrantPermissionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{95} -} -func (m *AuthRoleGrantPermissionResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthRoleGrantPermissionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthRoleGrantPermissionResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AuthRoleGrantPermissionResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthRoleGrantPermissionResponse.Merge(m, src) -} -func (m *AuthRoleGrantPermissionResponse) XXX_Size() int { - return m.Size() -} -func (m *AuthRoleGrantPermissionResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthRoleGrantPermissionResponse.DiscardUnknown(m) +// Deprecated: Use AuthRoleListResponse.ProtoReflect.Descriptor instead. +func (*AuthRoleListResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{92} } -var xxx_messageInfo_AuthRoleGrantPermissionResponse proto.InternalMessageInfo - -func (m *AuthRoleGrantPermissionResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthRoleListResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } return nil } -type AuthRoleRevokePermissionResponse struct { - Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AuthRoleRevokePermissionResponse) Reset() { *m = AuthRoleRevokePermissionResponse{} } -func (m *AuthRoleRevokePermissionResponse) String() string { return proto.CompactTextString(m) } -func (*AuthRoleRevokePermissionResponse) ProtoMessage() {} -func (*AuthRoleRevokePermissionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{96} -} -func (m *AuthRoleRevokePermissionResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *AuthRoleRevokePermissionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_AuthRoleRevokePermissionResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *AuthRoleRevokePermissionResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthRoleRevokePermissionResponse.Merge(m, src) -} -func (m *AuthRoleRevokePermissionResponse) XXX_Size() int { - return m.Size() -} -func (m *AuthRoleRevokePermissionResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthRoleRevokePermissionResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_AuthRoleRevokePermissionResponse proto.InternalMessageInfo - -func (m *AuthRoleRevokePermissionResponse) GetHeader() *ResponseHeader { - if m != nil { - return m.Header +func (x *AuthRoleListResponse) GetRoles() []string { + if x != nil { + return x.Roles } return nil } -// RangeStreamResponse is the response for the RangeStream RPC. -type RangeStreamResponse struct { - // range_response is a partial response for the KV.RangeStream RPC. - // The result of proto.Merge() applied on all responses should result in the - // same RangeResponse response as to the Range() method. - // - // Field population across chunks: - // - kvs: each chunk carries a disjoint slice of the result. Concatenating - // them in order yields the full key set. - // - header, more, count: set only on the final chunk. Non-merge clients - // can rely on io.EOF (end of stream) to detect completion. These - // fields are provided for clients that merge all responses into a - // single RangeResponse. - RangeResponse *RangeResponse `protobuf:"bytes,1,opt,name=range_response,json=rangeResponse,proto3" json:"range_response,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *RangeStreamResponse) Reset() { *m = RangeStreamResponse{} } -func (m *RangeStreamResponse) String() string { return proto.CompactTextString(m) } -func (*RangeStreamResponse) ProtoMessage() {} -func (*RangeStreamResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{97} -} -func (m *RangeStreamResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RangeStreamResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RangeStreamResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RangeStreamResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_RangeStreamResponse.Merge(m, src) -} -func (m *RangeStreamResponse) XXX_Size() int { - return m.Size() -} -func (m *RangeStreamResponse) XXX_DiscardUnknown() { - xxx_messageInfo_RangeStreamResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_RangeStreamResponse proto.InternalMessageInfo - -func (m *RangeStreamResponse) GetRangeResponse() *RangeResponse { - if m != nil { - return m.RangeResponse - } - return nil +type AuthUserListResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + Users []string `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func init() { - proto.RegisterEnum("etcdserverpb.AlarmType", AlarmType_name, AlarmType_value) - proto.RegisterEnum("etcdserverpb.RangeRequest_SortOrder", RangeRequest_SortOrder_name, RangeRequest_SortOrder_value) - proto.RegisterEnum("etcdserverpb.RangeRequest_SortTarget", RangeRequest_SortTarget_name, RangeRequest_SortTarget_value) - proto.RegisterEnum("etcdserverpb.Compare_CompareResult", Compare_CompareResult_name, Compare_CompareResult_value) - proto.RegisterEnum("etcdserverpb.Compare_CompareTarget", Compare_CompareTarget_name, Compare_CompareTarget_value) - proto.RegisterEnum("etcdserverpb.WatchCreateRequest_FilterType", WatchCreateRequest_FilterType_name, WatchCreateRequest_FilterType_value) - proto.RegisterEnum("etcdserverpb.AlarmRequest_AlarmAction", AlarmRequest_AlarmAction_name, AlarmRequest_AlarmAction_value) - proto.RegisterEnum("etcdserverpb.DowngradeRequest_DowngradeAction", DowngradeRequest_DowngradeAction_name, DowngradeRequest_DowngradeAction_value) - proto.RegisterType((*ResponseHeader)(nil), "etcdserverpb.ResponseHeader") - proto.RegisterType((*RangeRequest)(nil), "etcdserverpb.RangeRequest") - proto.RegisterType((*RangeResponse)(nil), "etcdserverpb.RangeResponse") - proto.RegisterType((*PutRequest)(nil), "etcdserverpb.PutRequest") - proto.RegisterType((*PutResponse)(nil), "etcdserverpb.PutResponse") - proto.RegisterType((*DeleteRangeRequest)(nil), "etcdserverpb.DeleteRangeRequest") - proto.RegisterType((*DeleteRangeResponse)(nil), "etcdserverpb.DeleteRangeResponse") - proto.RegisterType((*RequestOp)(nil), "etcdserverpb.RequestOp") - proto.RegisterType((*ResponseOp)(nil), "etcdserverpb.ResponseOp") - proto.RegisterType((*Compare)(nil), "etcdserverpb.Compare") - proto.RegisterType((*TxnRequest)(nil), "etcdserverpb.TxnRequest") - proto.RegisterType((*TxnResponse)(nil), "etcdserverpb.TxnResponse") - proto.RegisterType((*CompactionRequest)(nil), "etcdserverpb.CompactionRequest") - proto.RegisterType((*CompactionResponse)(nil), "etcdserverpb.CompactionResponse") - proto.RegisterType((*HashRequest)(nil), "etcdserverpb.HashRequest") - proto.RegisterType((*HashKVRequest)(nil), "etcdserverpb.HashKVRequest") - proto.RegisterType((*HashKVResponse)(nil), "etcdserverpb.HashKVResponse") - proto.RegisterType((*HashResponse)(nil), "etcdserverpb.HashResponse") - proto.RegisterType((*SnapshotRequest)(nil), "etcdserverpb.SnapshotRequest") - proto.RegisterType((*SnapshotResponse)(nil), "etcdserverpb.SnapshotResponse") - proto.RegisterType((*WatchRequest)(nil), "etcdserverpb.WatchRequest") - proto.RegisterType((*WatchCreateRequest)(nil), "etcdserverpb.WatchCreateRequest") - proto.RegisterType((*WatchCancelRequest)(nil), "etcdserverpb.WatchCancelRequest") - proto.RegisterType((*WatchProgressRequest)(nil), "etcdserverpb.WatchProgressRequest") - proto.RegisterType((*WatchResponse)(nil), "etcdserverpb.WatchResponse") - proto.RegisterType((*LeaseGrantRequest)(nil), "etcdserverpb.LeaseGrantRequest") - proto.RegisterType((*LeaseGrantResponse)(nil), "etcdserverpb.LeaseGrantResponse") - proto.RegisterType((*LeaseRevokeRequest)(nil), "etcdserverpb.LeaseRevokeRequest") - proto.RegisterType((*LeaseRevokeResponse)(nil), "etcdserverpb.LeaseRevokeResponse") - proto.RegisterType((*LeaseCheckpoint)(nil), "etcdserverpb.LeaseCheckpoint") - proto.RegisterType((*LeaseCheckpointRequest)(nil), "etcdserverpb.LeaseCheckpointRequest") - proto.RegisterType((*LeaseCheckpointResponse)(nil), "etcdserverpb.LeaseCheckpointResponse") - proto.RegisterType((*LeaseKeepAliveRequest)(nil), "etcdserverpb.LeaseKeepAliveRequest") - proto.RegisterType((*LeaseKeepAliveResponse)(nil), "etcdserverpb.LeaseKeepAliveResponse") - proto.RegisterType((*LeaseTimeToLiveRequest)(nil), "etcdserverpb.LeaseTimeToLiveRequest") - proto.RegisterType((*LeaseTimeToLiveResponse)(nil), "etcdserverpb.LeaseTimeToLiveResponse") - proto.RegisterType((*LeaseLeasesRequest)(nil), "etcdserverpb.LeaseLeasesRequest") - proto.RegisterType((*LeaseStatus)(nil), "etcdserverpb.LeaseStatus") - proto.RegisterType((*LeaseLeasesResponse)(nil), "etcdserverpb.LeaseLeasesResponse") - proto.RegisterType((*Member)(nil), "etcdserverpb.Member") - proto.RegisterType((*MemberAddRequest)(nil), "etcdserverpb.MemberAddRequest") - proto.RegisterType((*MemberAddResponse)(nil), "etcdserverpb.MemberAddResponse") - proto.RegisterType((*MemberRemoveRequest)(nil), "etcdserverpb.MemberRemoveRequest") - proto.RegisterType((*MemberRemoveResponse)(nil), "etcdserverpb.MemberRemoveResponse") - proto.RegisterType((*MemberUpdateRequest)(nil), "etcdserverpb.MemberUpdateRequest") - proto.RegisterType((*MemberUpdateResponse)(nil), "etcdserverpb.MemberUpdateResponse") - proto.RegisterType((*MemberListRequest)(nil), "etcdserverpb.MemberListRequest") - proto.RegisterType((*MemberListResponse)(nil), "etcdserverpb.MemberListResponse") - proto.RegisterType((*MemberPromoteRequest)(nil), "etcdserverpb.MemberPromoteRequest") - proto.RegisterType((*MemberPromoteResponse)(nil), "etcdserverpb.MemberPromoteResponse") - proto.RegisterType((*DefragmentRequest)(nil), "etcdserverpb.DefragmentRequest") - proto.RegisterType((*DefragmentResponse)(nil), "etcdserverpb.DefragmentResponse") - proto.RegisterType((*MoveLeaderRequest)(nil), "etcdserverpb.MoveLeaderRequest") - proto.RegisterType((*MoveLeaderResponse)(nil), "etcdserverpb.MoveLeaderResponse") - proto.RegisterType((*AlarmRequest)(nil), "etcdserverpb.AlarmRequest") - proto.RegisterType((*AlarmMember)(nil), "etcdserverpb.AlarmMember") - proto.RegisterType((*AlarmResponse)(nil), "etcdserverpb.AlarmResponse") - proto.RegisterType((*DowngradeRequest)(nil), "etcdserverpb.DowngradeRequest") - proto.RegisterType((*DowngradeResponse)(nil), "etcdserverpb.DowngradeResponse") - proto.RegisterType((*DowngradeVersionTestRequest)(nil), "etcdserverpb.DowngradeVersionTestRequest") - proto.RegisterType((*StatusRequest)(nil), "etcdserverpb.StatusRequest") - proto.RegisterType((*StatusResponse)(nil), "etcdserverpb.StatusResponse") - proto.RegisterType((*DowngradeInfo)(nil), "etcdserverpb.DowngradeInfo") - proto.RegisterType((*AuthEnableRequest)(nil), "etcdserverpb.AuthEnableRequest") - proto.RegisterType((*AuthDisableRequest)(nil), "etcdserverpb.AuthDisableRequest") - proto.RegisterType((*AuthStatusRequest)(nil), "etcdserverpb.AuthStatusRequest") - proto.RegisterType((*AuthenticateRequest)(nil), "etcdserverpb.AuthenticateRequest") - proto.RegisterType((*AuthUserAddRequest)(nil), "etcdserverpb.AuthUserAddRequest") - proto.RegisterType((*AuthUserGetRequest)(nil), "etcdserverpb.AuthUserGetRequest") - proto.RegisterType((*AuthUserDeleteRequest)(nil), "etcdserverpb.AuthUserDeleteRequest") - proto.RegisterType((*AuthUserChangePasswordRequest)(nil), "etcdserverpb.AuthUserChangePasswordRequest") - proto.RegisterType((*AuthUserGrantRoleRequest)(nil), "etcdserverpb.AuthUserGrantRoleRequest") - proto.RegisterType((*AuthUserRevokeRoleRequest)(nil), "etcdserverpb.AuthUserRevokeRoleRequest") - proto.RegisterType((*AuthRoleAddRequest)(nil), "etcdserverpb.AuthRoleAddRequest") - proto.RegisterType((*AuthRoleGetRequest)(nil), "etcdserverpb.AuthRoleGetRequest") - proto.RegisterType((*AuthUserListRequest)(nil), "etcdserverpb.AuthUserListRequest") - proto.RegisterType((*AuthRoleListRequest)(nil), "etcdserverpb.AuthRoleListRequest") - proto.RegisterType((*AuthRoleDeleteRequest)(nil), "etcdserverpb.AuthRoleDeleteRequest") - proto.RegisterType((*AuthRoleGrantPermissionRequest)(nil), "etcdserverpb.AuthRoleGrantPermissionRequest") - proto.RegisterType((*AuthRoleRevokePermissionRequest)(nil), "etcdserverpb.AuthRoleRevokePermissionRequest") - proto.RegisterType((*AuthEnableResponse)(nil), "etcdserverpb.AuthEnableResponse") - proto.RegisterType((*AuthDisableResponse)(nil), "etcdserverpb.AuthDisableResponse") - proto.RegisterType((*AuthStatusResponse)(nil), "etcdserverpb.AuthStatusResponse") - proto.RegisterType((*AuthenticateResponse)(nil), "etcdserverpb.AuthenticateResponse") - proto.RegisterType((*AuthUserAddResponse)(nil), "etcdserverpb.AuthUserAddResponse") - proto.RegisterType((*AuthUserGetResponse)(nil), "etcdserverpb.AuthUserGetResponse") - proto.RegisterType((*AuthUserDeleteResponse)(nil), "etcdserverpb.AuthUserDeleteResponse") - proto.RegisterType((*AuthUserChangePasswordResponse)(nil), "etcdserverpb.AuthUserChangePasswordResponse") - proto.RegisterType((*AuthUserGrantRoleResponse)(nil), "etcdserverpb.AuthUserGrantRoleResponse") - proto.RegisterType((*AuthUserRevokeRoleResponse)(nil), "etcdserverpb.AuthUserRevokeRoleResponse") - proto.RegisterType((*AuthRoleAddResponse)(nil), "etcdserverpb.AuthRoleAddResponse") - proto.RegisterType((*AuthRoleGetResponse)(nil), "etcdserverpb.AuthRoleGetResponse") - proto.RegisterType((*AuthRoleListResponse)(nil), "etcdserverpb.AuthRoleListResponse") - proto.RegisterType((*AuthUserListResponse)(nil), "etcdserverpb.AuthUserListResponse") - proto.RegisterType((*AuthRoleDeleteResponse)(nil), "etcdserverpb.AuthRoleDeleteResponse") - proto.RegisterType((*AuthRoleGrantPermissionResponse)(nil), "etcdserverpb.AuthRoleGrantPermissionResponse") - proto.RegisterType((*AuthRoleRevokePermissionResponse)(nil), "etcdserverpb.AuthRoleRevokePermissionResponse") - proto.RegisterType((*RangeStreamResponse)(nil), "etcdserverpb.RangeStreamResponse") -} - -func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) } - -var fileDescriptor_77a6da22d6a3feb1 = []byte{ - // 4614 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x3c, 0xdf, 0x6f, 0x1c, 0x49, - 0x5a, 0xee, 0x99, 0xb1, 0xc7, 0xf3, 0xcd, 0x0f, 0x4f, 0xca, 0x4e, 0x76, 0x32, 0x9b, 0x38, 0x4e, - 0x27, 0xd9, 0xcd, 0x66, 0x37, 0x9e, 0xc4, 0x4e, 0x36, 0x47, 0xd0, 0x2e, 0x37, 0xb1, 0x67, 0x13, - 0x5f, 0x1c, 0xdb, 0xdb, 0x9e, 0x64, 0x6f, 0x83, 0x74, 0xa6, 0x3d, 0x53, 0xb1, 0xfb, 0x3c, 0xd3, - 0x3d, 0xd7, 0xdd, 0x9e, 0xd8, 0xcb, 0xc3, 0x2d, 0x07, 0xc7, 0xe9, 0x40, 0x3a, 0x89, 0x45, 0x42, - 0x27, 0x04, 0x2f, 0x80, 0x04, 0x0f, 0x80, 0xe0, 0x01, 0x24, 0x04, 0x12, 0x0f, 0xf0, 0x00, 0x0f, - 0x48, 0x48, 0xfc, 0x03, 0xb0, 0xf0, 0xc4, 0x5f, 0x71, 0xaa, 0x5f, 0x5d, 0x55, 0xdd, 0x3d, 0xb6, - 0xf7, 0xec, 0xd5, 0xbd, 0xc4, 0x5d, 0x55, 0xdf, 0xaf, 0xfa, 0xbe, 0xaa, 0xef, 0xab, 0xfa, 0xbe, - 0xca, 0x40, 0xc1, 0x1f, 0x74, 0xe6, 0x07, 0xbe, 0x17, 0x7a, 0xa8, 0x84, 0xc3, 0x4e, 0x37, 0xc0, - 0xfe, 0x10, 0xfb, 0x83, 0xed, 0x7a, 0x8d, 0xb4, 0x1a, 0xf6, 0xc0, 0x69, 0xf4, 0x87, 0x9d, 0xce, - 0x60, 0xbb, 0xb1, 0x37, 0x64, 0x70, 0xf5, 0x7a, 0x34, 0x62, 0xef, 0x87, 0xbb, 0x83, 0x6d, 0xfa, - 0x87, 0x8f, 0xcd, 0x45, 0x63, 0x43, 0xec, 0x07, 0x8e, 0xe7, 0x0e, 0xb6, 0xc5, 0x17, 0x87, 0xb8, - 0xb4, 0xe3, 0x79, 0x3b, 0x3d, 0xcc, 0xf0, 0x5d, 0xd7, 0x0b, 0xed, 0xd0, 0xf1, 0xdc, 0x80, 0x8f, - 0xb2, 0x3f, 0x9d, 0xdb, 0x3b, 0xd8, 0xbd, 0xed, 0x0d, 0xb0, 0x6b, 0x0f, 0x9c, 0xe1, 0x42, 0xc3, - 0x1b, 0x50, 0x98, 0x24, 0xbc, 0xf9, 0x13, 0x03, 0x2a, 0x16, 0x0e, 0x06, 0x9e, 0x1b, 0xe0, 0x27, - 0xd8, 0xee, 0x62, 0x1f, 0x5d, 0x06, 0xe8, 0xf4, 0xf6, 0x83, 0x10, 0xfb, 0x5b, 0x4e, 0xb7, 0x66, - 0xcc, 0x19, 0x37, 0x73, 0x56, 0x81, 0xf7, 0xac, 0x74, 0xd1, 0x9b, 0x50, 0xe8, 0xe3, 0xfe, 0x36, - 0x1b, 0xcd, 0xd0, 0xd1, 0x49, 0xd6, 0xb1, 0xd2, 0x45, 0x75, 0x98, 0xf4, 0xf1, 0xd0, 0x21, 0xe2, - 0xd6, 0xb2, 0x73, 0xc6, 0xcd, 0xac, 0x15, 0xb5, 0x09, 0xa2, 0x6f, 0xbf, 0x0a, 0xb7, 0x42, 0xec, - 0xf7, 0x6b, 0x39, 0x86, 0x48, 0x3a, 0xda, 0xd8, 0xef, 0x3f, 0xcc, 0xff, 0xe0, 0xef, 0x6a, 0xd9, - 0xc5, 0xf9, 0x3b, 0xe6, 0xbf, 0x8c, 0x43, 0xc9, 0xb2, 0xdd, 0x1d, 0x6c, 0xe1, 0xef, 0xed, 0xe3, - 0x20, 0x44, 0x55, 0xc8, 0xee, 0xe1, 0x43, 0x2a, 0x47, 0xc9, 0x22, 0x9f, 0x8c, 0x90, 0xbb, 0x83, - 0xb7, 0xb0, 0xcb, 0x24, 0x28, 0x11, 0x42, 0xee, 0x0e, 0x6e, 0xb9, 0x5d, 0x34, 0x03, 0xe3, 0x3d, - 0xa7, 0xef, 0x84, 0x9c, 0x3d, 0x6b, 0x68, 0x72, 0xe5, 0x62, 0x72, 0x2d, 0x01, 0x04, 0x9e, 0x1f, - 0x6e, 0x79, 0x7e, 0x17, 0xfb, 0xb5, 0xf1, 0x39, 0xe3, 0x66, 0x65, 0xe1, 0xfa, 0xbc, 0x6a, 0xcb, - 0x79, 0x55, 0xa0, 0xf9, 0x4d, 0xcf, 0x0f, 0xd7, 0x09, 0xac, 0x55, 0x08, 0xc4, 0x27, 0xfa, 0x08, - 0x8a, 0x94, 0x48, 0x68, 0xfb, 0x3b, 0x38, 0xac, 0x4d, 0x50, 0x2a, 0x37, 0x8e, 0xa1, 0xd2, 0xa6, - 0xc0, 0x16, 0x65, 0xcf, 0xbe, 0x91, 0x09, 0xa5, 0x00, 0xfb, 0x8e, 0xdd, 0x73, 0x3e, 0xb3, 0xb7, - 0x7b, 0xb8, 0x96, 0x9f, 0x33, 0x6e, 0x4e, 0x5a, 0x5a, 0x1f, 0x99, 0xff, 0x1e, 0x3e, 0x0c, 0xb6, - 0x3c, 0xb7, 0x77, 0x58, 0x9b, 0xa4, 0x00, 0x93, 0xa4, 0x63, 0xdd, 0xed, 0x1d, 0x52, 0xeb, 0x79, - 0xfb, 0x6e, 0xc8, 0x46, 0x0b, 0x74, 0xb4, 0x40, 0x7b, 0xe8, 0xf0, 0x5d, 0xa8, 0xf6, 0x1d, 0x77, - 0xab, 0xef, 0x75, 0xb7, 0x22, 0x85, 0x00, 0x51, 0xc8, 0xa3, 0xfc, 0xef, 0x50, 0x0b, 0xdc, 0xb5, - 0x2a, 0x7d, 0xc7, 0x7d, 0xe6, 0x75, 0x2d, 0xa1, 0x1f, 0x82, 0x62, 0x1f, 0xe8, 0x28, 0xc5, 0x38, - 0x8a, 0x7d, 0xa0, 0xa2, 0x3c, 0x80, 0x69, 0xc2, 0xa5, 0xe3, 0x63, 0x3b, 0xc4, 0x12, 0xab, 0xa4, - 0x63, 0x9d, 0xeb, 0x3b, 0xee, 0x12, 0x05, 0xd1, 0x10, 0xed, 0x83, 0x04, 0x62, 0x39, 0x8e, 0x68, - 0x1f, 0xe8, 0x88, 0xe6, 0x03, 0x28, 0x44, 0x76, 0x41, 0x93, 0x90, 0x5b, 0x5b, 0x5f, 0x6b, 0x55, - 0xc7, 0x10, 0xc0, 0x44, 0x73, 0x73, 0xa9, 0xb5, 0xb6, 0x5c, 0x35, 0x50, 0x11, 0xf2, 0xcb, 0x2d, - 0xd6, 0xc8, 0xd4, 0xf3, 0x5f, 0xf0, 0xf5, 0xf6, 0x14, 0x40, 0x9a, 0x02, 0xe5, 0x21, 0xfb, 0xb4, - 0xf5, 0x69, 0x75, 0x8c, 0x00, 0xbf, 0x68, 0x59, 0x9b, 0x2b, 0xeb, 0x6b, 0x55, 0x83, 0x50, 0x59, - 0xb2, 0x5a, 0xcd, 0x76, 0xab, 0x9a, 0x21, 0x10, 0xcf, 0xd6, 0x97, 0xab, 0x59, 0x54, 0x80, 0xf1, - 0x17, 0xcd, 0xd5, 0xe7, 0xad, 0x6a, 0x2e, 0x22, 0x26, 0x57, 0xf1, 0x1f, 0x19, 0x50, 0xe6, 0xe6, - 0x66, 0x7b, 0x0b, 0xdd, 0x83, 0x89, 0x5d, 0xba, 0xbf, 0xe8, 0x4a, 0x2e, 0x2e, 0x5c, 0x8a, 0xad, - 0x0d, 0x6d, 0x0f, 0x5a, 0x1c, 0x16, 0x99, 0x90, 0xdd, 0x1b, 0x06, 0xb5, 0xcc, 0x5c, 0xf6, 0x66, - 0x71, 0xa1, 0x3a, 0xcf, 0x3c, 0xc9, 0xfc, 0x53, 0x7c, 0xf8, 0xc2, 0xee, 0xed, 0x63, 0x8b, 0x0c, - 0x22, 0x04, 0xb9, 0xbe, 0xe7, 0x63, 0xba, 0xe0, 0x27, 0x2d, 0xfa, 0x4d, 0x76, 0x01, 0xb5, 0x39, - 0x5f, 0xec, 0xac, 0x21, 0xc5, 0xfb, 0x0f, 0x03, 0x60, 0x63, 0x3f, 0x1c, 0xbd, 0xc5, 0x66, 0x60, - 0x7c, 0x48, 0x38, 0xf0, 0xed, 0xc5, 0x1a, 0x74, 0x6f, 0x61, 0x3b, 0xc0, 0xd1, 0xde, 0x22, 0x0d, - 0x34, 0x07, 0xf9, 0x81, 0x8f, 0x87, 0x5b, 0x7b, 0x43, 0xca, 0x6d, 0x52, 0xda, 0x69, 0x82, 0xf4, - 0x3f, 0x1d, 0xa2, 0x5b, 0x50, 0x72, 0x76, 0x5c, 0xcf, 0xc7, 0x5b, 0x8c, 0xe8, 0xb8, 0x0a, 0xb6, - 0x60, 0x15, 0xd9, 0x20, 0x9d, 0x92, 0x02, 0xcb, 0x58, 0x4d, 0xa4, 0xc2, 0xae, 0x92, 0x31, 0x39, - 0x9f, 0xcf, 0x0d, 0x28, 0xd2, 0xf9, 0x9c, 0x4a, 0xd9, 0x0b, 0x72, 0x22, 0x19, 0x8a, 0x96, 0x50, - 0x78, 0x62, 0x6a, 0x52, 0x04, 0x17, 0xd0, 0x32, 0xee, 0xe1, 0x10, 0x9f, 0xc6, 0x79, 0x29, 0xaa, - 0xcc, 0xa6, 0xaa, 0x52, 0xf2, 0xfb, 0x33, 0x03, 0xa6, 0x35, 0x86, 0xa7, 0x9a, 0x7a, 0x0d, 0xf2, - 0x5d, 0x4a, 0x8c, 0xc9, 0x94, 0xb5, 0x44, 0x13, 0xdd, 0x83, 0x49, 0x2e, 0x52, 0x50, 0xcb, 0xa6, - 0x2f, 0x43, 0x29, 0x65, 0x9e, 0x49, 0x19, 0x48, 0x31, 0xff, 0x31, 0x03, 0x05, 0xae, 0x8c, 0xf5, - 0x01, 0x6a, 0x42, 0xd9, 0x67, 0x8d, 0x2d, 0x3a, 0x67, 0x2e, 0x63, 0x7d, 0xb4, 0x9f, 0x7c, 0x32, - 0x66, 0x95, 0x38, 0x0a, 0xed, 0x46, 0xbf, 0x0c, 0x45, 0x41, 0x62, 0xb0, 0x1f, 0x72, 0x43, 0xd5, - 0x74, 0x02, 0x72, 0x69, 0x3f, 0x19, 0xb3, 0x80, 0x83, 0x6f, 0xec, 0x87, 0xa8, 0x0d, 0x33, 0x02, - 0x99, 0xcd, 0x8f, 0x8b, 0x91, 0xa5, 0x54, 0xe6, 0x74, 0x2a, 0x49, 0x73, 0x3e, 0x19, 0xb3, 0x10, - 0xc7, 0x57, 0x06, 0xd1, 0xb2, 0x14, 0x29, 0x3c, 0x60, 0xf1, 0x25, 0x21, 0x52, 0xfb, 0xc0, 0xe5, - 0x44, 0x84, 0xb6, 0x16, 0x15, 0xd9, 0xda, 0x07, 0x6e, 0xa4, 0xb2, 0x47, 0x05, 0xc8, 0xf3, 0x6e, - 0xf3, 0xdf, 0x33, 0x00, 0xc2, 0x62, 0xeb, 0x03, 0xb4, 0x0c, 0x15, 0x9f, 0xb7, 0x34, 0xfd, 0xbd, - 0x99, 0xaa, 0x3f, 0x6e, 0xe8, 0x31, 0xab, 0x2c, 0x90, 0x98, 0xb8, 0x1f, 0x42, 0x29, 0xa2, 0x22, - 0x55, 0x78, 0x31, 0x45, 0x85, 0x11, 0x85, 0xa2, 0x40, 0x20, 0x4a, 0xfc, 0x04, 0xce, 0x47, 0xf8, - 0x29, 0x5a, 0xbc, 0x7a, 0x84, 0x16, 0x23, 0x82, 0xd3, 0x82, 0x82, 0xaa, 0xc7, 0xc7, 0x8a, 0x60, - 0x52, 0x91, 0x17, 0x53, 0x14, 0xc9, 0x80, 0x54, 0x4d, 0x46, 0x12, 0x6a, 0xaa, 0x04, 0x12, 0xf6, - 0x59, 0xbf, 0xf9, 0x17, 0x39, 0xc8, 0x2f, 0x79, 0xfd, 0x81, 0xed, 0x93, 0x45, 0x34, 0xe1, 0xe3, - 0x60, 0xbf, 0x17, 0x52, 0x05, 0x56, 0x16, 0xae, 0xe9, 0x3c, 0x38, 0x98, 0xf8, 0x6b, 0x51, 0x50, - 0x8b, 0xa3, 0x10, 0x64, 0x1e, 0xe5, 0x33, 0x27, 0x40, 0xe6, 0x31, 0x9e, 0xa3, 0x08, 0x87, 0x90, - 0x95, 0x0e, 0xa1, 0x0e, 0x79, 0x7e, 0xc0, 0x63, 0xce, 0xfa, 0xc9, 0x98, 0x25, 0x3a, 0xd0, 0x3b, - 0x30, 0x15, 0x0f, 0x85, 0xe3, 0x1c, 0xa6, 0xd2, 0xd1, 0x23, 0xe7, 0x35, 0x28, 0x69, 0x11, 0x7a, - 0x82, 0xc3, 0x15, 0xfb, 0x4a, 0x5c, 0xbe, 0x20, 0xdc, 0x3a, 0x39, 0x56, 0x94, 0x9e, 0x8c, 0x09, - 0xc7, 0x7e, 0x45, 0x38, 0xf6, 0x49, 0x35, 0xd0, 0x12, 0xbd, 0x72, 0x1f, 0x7f, 0x5d, 0xf5, 0x5a, - 0xdf, 0x24, 0xc8, 0x11, 0x90, 0x74, 0x5f, 0xa6, 0x05, 0x65, 0x4d, 0x65, 0x24, 0x46, 0xb6, 0x3e, - 0x7e, 0xde, 0x5c, 0x65, 0x01, 0xf5, 0x31, 0x8d, 0xa1, 0x56, 0xd5, 0x20, 0x01, 0x7a, 0xb5, 0xb5, - 0xb9, 0x59, 0xcd, 0xa0, 0x0b, 0x50, 0x58, 0x5b, 0x6f, 0x6f, 0x31, 0xa8, 0x6c, 0x3d, 0xff, 0x87, - 0xcc, 0x93, 0xc8, 0xf8, 0xfc, 0x69, 0x44, 0x93, 0x87, 0x68, 0x25, 0x32, 0x8f, 0x29, 0x91, 0xd9, - 0x10, 0x91, 0x39, 0x23, 0x23, 0x73, 0x16, 0x21, 0x18, 0x5f, 0x6d, 0x35, 0x37, 0x69, 0x90, 0x66, - 0xa4, 0x17, 0x93, 0xd1, 0xfa, 0x51, 0x05, 0x4a, 0xcc, 0x3c, 0x5b, 0xfb, 0x2e, 0x39, 0x4c, 0xfc, - 0xa5, 0x01, 0x20, 0x37, 0x2c, 0x6a, 0x40, 0xbe, 0xc3, 0x44, 0xa8, 0x19, 0xd4, 0x03, 0x9e, 0x4f, - 0xb5, 0xb8, 0x25, 0xa0, 0xd0, 0x5d, 0xc8, 0x07, 0xfb, 0x9d, 0x0e, 0x0e, 0x44, 0xe4, 0x7e, 0x23, - 0xee, 0x84, 0xb9, 0x43, 0xb4, 0x04, 0x1c, 0x41, 0x79, 0x65, 0x3b, 0xbd, 0x7d, 0x1a, 0xc7, 0x8f, - 0x46, 0xe1, 0x70, 0xd2, 0xc7, 0xfe, 0x89, 0x01, 0x45, 0x65, 0x5b, 0xfc, 0x9c, 0x21, 0xe0, 0x12, - 0x14, 0xa8, 0x30, 0xb8, 0xcb, 0x83, 0xc0, 0xa4, 0x25, 0x3b, 0xd0, 0xfb, 0x50, 0x10, 0x3b, 0x49, - 0xc4, 0x81, 0x5a, 0x3a, 0xd9, 0xf5, 0x81, 0x25, 0x41, 0xa5, 0x90, 0x6d, 0x38, 0x47, 0xf5, 0xd4, - 0x21, 0xb7, 0x0f, 0xa1, 0x59, 0xf5, 0x58, 0x6e, 0xc4, 0x8e, 0xe5, 0x75, 0x98, 0x1c, 0xec, 0x1e, - 0x06, 0x4e, 0xc7, 0xee, 0x71, 0x71, 0xa2, 0xb6, 0xa4, 0xba, 0x09, 0x48, 0xa5, 0x7a, 0x1a, 0x05, - 0x48, 0xa2, 0x17, 0xa0, 0xf8, 0xc4, 0x0e, 0x76, 0xb9, 0x90, 0xb2, 0xff, 0x1e, 0x94, 0x49, 0xff, - 0xd3, 0x17, 0x27, 0x10, 0x5f, 0x60, 0x2d, 0x9a, 0xff, 0x64, 0x40, 0x45, 0xa0, 0x9d, 0xca, 0x40, - 0x08, 0x72, 0xbb, 0x76, 0xb0, 0x4b, 0x95, 0x51, 0xb6, 0xe8, 0x37, 0x7a, 0x07, 0xaa, 0x1d, 0x36, - 0xff, 0xad, 0xd8, 0xbd, 0x6b, 0x8a, 0xf7, 0x47, 0x7b, 0xff, 0x3d, 0x28, 0x13, 0x94, 0x2d, 0xfd, - 0x1e, 0x24, 0xb6, 0xf1, 0xfb, 0x56, 0x69, 0x97, 0xce, 0x39, 0x2e, 0xbe, 0x0d, 0x25, 0xa6, 0x8c, - 0xb3, 0x96, 0x5d, 0xea, 0xb5, 0x0e, 0x53, 0x9b, 0xae, 0x3d, 0x08, 0x76, 0xbd, 0x30, 0xa6, 0xf3, - 0x45, 0xf3, 0x6f, 0x0d, 0xa8, 0xca, 0xc1, 0x53, 0xc9, 0xf0, 0x36, 0x4c, 0xf9, 0xb8, 0x6f, 0x3b, - 0xae, 0xe3, 0xee, 0x6c, 0x6d, 0x1f, 0x86, 0x38, 0xe0, 0xd7, 0xd7, 0x4a, 0xd4, 0xfd, 0x88, 0xf4, - 0x12, 0x61, 0xb7, 0x7b, 0xde, 0x36, 0x77, 0xd2, 0xf4, 0x1b, 0x5d, 0xd5, 0xbd, 0x74, 0x41, 0xea, - 0x4d, 0xf4, 0x4b, 0x99, 0x7f, 0x9a, 0x81, 0xd2, 0x27, 0x76, 0xd8, 0x11, 0x2b, 0x08, 0xad, 0x40, - 0x25, 0x72, 0xe3, 0xb4, 0x87, 0xcb, 0x1d, 0x3b, 0x70, 0x50, 0x1c, 0x71, 0xaf, 0x11, 0x07, 0x8e, - 0x72, 0x47, 0xed, 0xa0, 0xa4, 0x6c, 0xb7, 0x83, 0x7b, 0x11, 0xa9, 0xcc, 0x68, 0x52, 0x14, 0x50, - 0x25, 0xa5, 0x76, 0xa0, 0x6f, 0x43, 0x75, 0xe0, 0x7b, 0x3b, 0x3e, 0x0e, 0x82, 0x88, 0x18, 0x0b, - 0xe1, 0x66, 0x0a, 0xb1, 0x0d, 0x0e, 0x1a, 0x3b, 0xc5, 0xdc, 0x7b, 0x32, 0x66, 0x4d, 0x0d, 0xf4, - 0x31, 0xe9, 0x58, 0xa7, 0xe4, 0x79, 0x8f, 0x79, 0xd6, 0x1f, 0x65, 0x01, 0x25, 0xa7, 0xf9, 0x55, - 0x8f, 0xc9, 0x37, 0xa0, 0x12, 0x84, 0xb6, 0x9f, 0x58, 0xf3, 0x65, 0xda, 0x1b, 0xad, 0xf8, 0xb7, - 0x21, 0x92, 0x6c, 0xcb, 0xf5, 0x42, 0xe7, 0xd5, 0x21, 0xbb, 0xa0, 0x58, 0x15, 0xd1, 0xbd, 0x46, - 0x7b, 0xd1, 0x1a, 0xe4, 0x5f, 0x39, 0xbd, 0x10, 0xfb, 0x41, 0x6d, 0x7c, 0x2e, 0x7b, 0xb3, 0xb2, - 0xf0, 0xee, 0x71, 0x86, 0x99, 0xff, 0x88, 0xc2, 0xb7, 0x0f, 0x07, 0xea, 0xe9, 0x97, 0x13, 0x51, - 0x8f, 0xf1, 0x13, 0xe9, 0x37, 0x22, 0x13, 0x26, 0x5f, 0x13, 0xa2, 0x5b, 0x4e, 0x97, 0xc6, 0xe2, - 0x68, 0x1f, 0xde, 0xb3, 0xf2, 0x74, 0x60, 0xa5, 0x8b, 0xae, 0xc1, 0xe4, 0x2b, 0xdf, 0xde, 0xe9, - 0x63, 0x37, 0x64, 0xb7, 0x7c, 0x09, 0x13, 0x0d, 0x98, 0xf3, 0x00, 0x52, 0x14, 0x12, 0xf9, 0xd6, - 0xd6, 0x37, 0x9e, 0xb7, 0xab, 0x63, 0xa8, 0x04, 0x93, 0x6b, 0xeb, 0xcb, 0xad, 0xd5, 0x16, 0x89, - 0x8d, 0x22, 0xe6, 0xdd, 0x95, 0x9b, 0xae, 0x29, 0x0c, 0xa1, 0xad, 0x09, 0x55, 0x2e, 0x43, 0xbf, - 0x74, 0x0b, 0xb9, 0x04, 0x89, 0xbb, 0xe6, 0x15, 0x98, 0x49, 0x5b, 0x1a, 0x02, 0xe0, 0x9e, 0xf9, - 0xaf, 0x19, 0x28, 0xf3, 0x8d, 0x70, 0xaa, 0x9d, 0x7b, 0x51, 0x91, 0x8a, 0x5f, 0x4f, 0x84, 0x92, - 0x6a, 0x90, 0x67, 0x1b, 0xa4, 0xcb, 0xef, 0xbf, 0xa2, 0x49, 0x9c, 0x33, 0x5b, 0xef, 0xb8, 0xcb, - 0xcd, 0x1e, 0xb5, 0x53, 0xdd, 0xe6, 0xf8, 0x48, 0xb7, 0x19, 0x6d, 0x38, 0x3b, 0xe0, 0x07, 0xab, - 0x82, 0x34, 0x45, 0x49, 0x6c, 0x2a, 0x32, 0xa8, 0xd9, 0x2c, 0x3f, 0xc2, 0x66, 0xe8, 0x06, 0x4c, - 0xe0, 0x21, 0x76, 0xc3, 0xa0, 0x56, 0xa4, 0x81, 0xb4, 0x2c, 0x2e, 0x54, 0x2d, 0xd2, 0x6b, 0xf1, - 0x41, 0x69, 0xaa, 0x0f, 0xe1, 0x1c, 0xbd, 0xef, 0x3e, 0xf6, 0x6d, 0x57, 0xbd, 0xb3, 0xb7, 0xdb, - 0xab, 0x3c, 0xec, 0x90, 0x4f, 0x54, 0x81, 0xcc, 0xca, 0x32, 0xd7, 0x4f, 0x66, 0x65, 0x59, 0xe2, - 0xff, 0xae, 0x01, 0x48, 0x25, 0x70, 0x2a, 0x5b, 0xc4, 0xb8, 0x08, 0x39, 0xb2, 0x52, 0x8e, 0x19, - 0x18, 0xc7, 0xbe, 0xef, 0xf9, 0xcc, 0x51, 0x5a, 0xac, 0x21, 0xa5, 0xb9, 0xcd, 0x85, 0xb1, 0xf0, - 0xd0, 0xdb, 0x8b, 0x3c, 0x00, 0x23, 0x6b, 0x24, 0x85, 0x6f, 0xc3, 0xb4, 0x06, 0x7e, 0x36, 0x21, - 0x7e, 0x1d, 0xa6, 0x28, 0xd5, 0xa5, 0x5d, 0xdc, 0xd9, 0x1b, 0x78, 0x8e, 0x9b, 0x90, 0x00, 0x5d, - 0x23, 0xbe, 0x4b, 0x84, 0x0b, 0x32, 0x45, 0x36, 0xe7, 0x52, 0xd4, 0xd9, 0x6e, 0xaf, 0xca, 0xa5, - 0xbe, 0x0d, 0x17, 0x62, 0x04, 0xc5, 0xcc, 0x7e, 0x05, 0x8a, 0x9d, 0xa8, 0x33, 0xe0, 0x27, 0xc8, - 0xcb, 0xba, 0xb8, 0x71, 0x54, 0x15, 0x43, 0xf2, 0xf8, 0x36, 0xbc, 0x91, 0xe0, 0x71, 0x16, 0xea, - 0xb8, 0x67, 0xde, 0x81, 0xf3, 0x94, 0xf2, 0x53, 0x8c, 0x07, 0xcd, 0x9e, 0x33, 0x3c, 0xde, 0x2c, - 0x87, 0x7c, 0xbe, 0x0a, 0xc6, 0xd7, 0xbb, 0xac, 0x24, 0xeb, 0x16, 0x67, 0xdd, 0x76, 0xfa, 0xb8, - 0xed, 0xad, 0x8e, 0x96, 0x96, 0x04, 0xf2, 0x3d, 0x7c, 0x18, 0xf0, 0xe3, 0x23, 0xfd, 0x96, 0xde, - 0xeb, 0xaf, 0x0d, 0xae, 0x4e, 0x95, 0xce, 0xd7, 0xbc, 0x35, 0x66, 0x01, 0x76, 0xc8, 0x1e, 0xc4, - 0x5d, 0x32, 0xc0, 0x72, 0x73, 0x4a, 0x4f, 0x24, 0x30, 0x89, 0x42, 0xa5, 0xb8, 0xc0, 0x97, 0xf9, - 0xc6, 0xa1, 0xff, 0x04, 0x89, 0x93, 0xd2, 0x5b, 0x50, 0xa4, 0x23, 0x9b, 0xa1, 0x1d, 0xee, 0x07, - 0xa3, 0x2c, 0xb7, 0x68, 0xfe, 0xc8, 0xe0, 0x3b, 0x4a, 0xd0, 0x39, 0xd5, 0x9c, 0xef, 0xc2, 0x04, - 0xbd, 0x21, 0x8a, 0x9b, 0xce, 0xc5, 0x94, 0x85, 0xcd, 0x24, 0xb2, 0x38, 0xa0, 0x72, 0x4e, 0x32, - 0x60, 0xe2, 0x19, 0xad, 0x1c, 0x28, 0xd2, 0xe6, 0x84, 0xe5, 0x5c, 0xbb, 0xcf, 0xd2, 0x8f, 0x05, - 0x8b, 0x7e, 0xd3, 0x0b, 0x01, 0xc6, 0xfe, 0x73, 0x6b, 0x95, 0xdd, 0x40, 0x0a, 0x56, 0xd4, 0x26, - 0x8a, 0xed, 0xf4, 0x1c, 0xec, 0x86, 0x74, 0x34, 0x47, 0x47, 0x95, 0x1e, 0x74, 0x03, 0x0a, 0x4e, - 0xb0, 0x8a, 0x6d, 0xdf, 0xe5, 0x29, 0x7e, 0xc5, 0x31, 0xcb, 0x11, 0xb9, 0xc6, 0xbe, 0x03, 0x55, - 0x26, 0x59, 0xb3, 0xdb, 0x55, 0x4e, 0xfb, 0x11, 0x7f, 0x23, 0xc6, 0x5f, 0xa3, 0x9f, 0x39, 0x9e, - 0xfe, 0xdf, 0x18, 0x70, 0x4e, 0x61, 0x70, 0x2a, 0x13, 0xbc, 0x07, 0x13, 0xac, 0xfe, 0xc2, 0x8f, - 0x82, 0x33, 0x3a, 0x16, 0x63, 0x63, 0x71, 0x18, 0x34, 0x0f, 0x79, 0xf6, 0x25, 0xae, 0x71, 0xe9, - 0xe0, 0x02, 0x48, 0x8a, 0x3c, 0x0f, 0xd3, 0x7c, 0x0c, 0xf7, 0xbd, 0xb4, 0x3d, 0x97, 0xd3, 0x3d, - 0xc4, 0x0f, 0x0d, 0x98, 0xd1, 0x11, 0x4e, 0x35, 0x4b, 0x45, 0xee, 0xcc, 0x57, 0x92, 0xfb, 0x5b, - 0x42, 0xee, 0xe7, 0x83, 0xae, 0x72, 0xe4, 0x8c, 0xaf, 0x38, 0xd5, 0xba, 0x19, 0xdd, 0xba, 0x92, - 0xd6, 0x4f, 0xa2, 0x39, 0x09, 0x62, 0xa7, 0x9a, 0xd3, 0x83, 0x13, 0xcd, 0x49, 0x39, 0x82, 0x25, - 0x26, 0xb7, 0x22, 0x96, 0xd1, 0xaa, 0x13, 0x44, 0x11, 0xe7, 0x5d, 0x28, 0xf5, 0x1c, 0x17, 0xdb, - 0x3e, 0xaf, 0x21, 0x19, 0xea, 0x7a, 0xbc, 0x6f, 0x69, 0x83, 0x92, 0xd4, 0x6f, 0x1a, 0x80, 0x54, - 0x5a, 0xbf, 0x18, 0x6b, 0x35, 0x84, 0x82, 0x37, 0x7c, 0xaf, 0xef, 0x85, 0xc7, 0x2d, 0xb3, 0x7b, - 0xe6, 0x6f, 0x1b, 0x70, 0x3e, 0x86, 0xf1, 0x8b, 0x90, 0xfc, 0x9e, 0x79, 0x09, 0xce, 0x2d, 0x63, - 0x71, 0xc6, 0x4b, 0xe4, 0x0e, 0x36, 0x01, 0xa9, 0xa3, 0x67, 0x73, 0x8a, 0xf9, 0x06, 0x9c, 0x7b, - 0xe6, 0x0d, 0x89, 0x23, 0x27, 0xc3, 0xd2, 0x4d, 0xb1, 0x64, 0x56, 0xa4, 0xaf, 0xa8, 0x2d, 0x5d, - 0xef, 0x26, 0x20, 0x15, 0xf3, 0x2c, 0xc4, 0x59, 0x34, 0xff, 0xc7, 0x80, 0x52, 0xb3, 0x67, 0xfb, - 0x7d, 0x21, 0xca, 0x87, 0x30, 0xc1, 0x32, 0x33, 0x3c, 0xcd, 0xfa, 0x96, 0x4e, 0x4f, 0x85, 0x65, - 0x8d, 0x26, 0xcb, 0xe3, 0x70, 0x2c, 0x32, 0x15, 0x5e, 0x59, 0x5e, 0x8e, 0x55, 0x9a, 0x97, 0xd1, - 0x6d, 0x18, 0xb7, 0x09, 0x0a, 0x0d, 0xaf, 0x95, 0x78, 0xba, 0x8c, 0x52, 0x23, 0x57, 0x22, 0x8b, - 0x41, 0x99, 0x1f, 0x40, 0x51, 0xe1, 0x80, 0xf2, 0x90, 0x7d, 0xdc, 0xe2, 0xd7, 0xa4, 0xe6, 0x52, - 0x7b, 0xe5, 0x05, 0x4b, 0x21, 0x56, 0x00, 0x96, 0x5b, 0x51, 0x3b, 0x93, 0x52, 0xd8, 0xb3, 0x39, - 0x1d, 0x1e, 0xb7, 0x54, 0x09, 0x8d, 0x51, 0x12, 0x66, 0x4e, 0x22, 0xa1, 0x64, 0xf1, 0x1b, 0x06, - 0x94, 0xb9, 0x6a, 0x4e, 0x1b, 0x9a, 0x29, 0xe5, 0x11, 0xa1, 0x59, 0x99, 0x86, 0xc5, 0x01, 0xa5, - 0x0c, 0xff, 0x6c, 0x40, 0x75, 0xd9, 0x7b, 0xed, 0xee, 0xf8, 0x76, 0x37, 0xda, 0x83, 0x1f, 0xc5, - 0xcc, 0x39, 0x1f, 0xcb, 0xf4, 0xc7, 0xe0, 0x65, 0x47, 0xcc, 0xac, 0x35, 0x99, 0x4b, 0x61, 0xf1, - 0x5d, 0x34, 0xcd, 0x6f, 0xc2, 0x54, 0x0c, 0x89, 0x18, 0xe8, 0x45, 0x73, 0x75, 0x65, 0x99, 0x18, - 0x84, 0xe6, 0x7b, 0x5b, 0x6b, 0xcd, 0x47, 0xab, 0x2d, 0x5e, 0x95, 0x6d, 0xae, 0x2d, 0xb5, 0x56, - 0xa5, 0xa1, 0xee, 0x8b, 0x19, 0xdc, 0x37, 0x7b, 0x70, 0x4e, 0x11, 0xe8, 0xb4, 0xc5, 0xb1, 0x74, - 0x79, 0x25, 0xb7, 0x6f, 0xc0, 0x9b, 0x11, 0xb7, 0x17, 0x6c, 0xb0, 0x8d, 0x03, 0xf5, 0xb2, 0x36, - 0xe4, 0x4c, 0x0b, 0x16, 0xf9, 0x14, 0x98, 0xef, 0x9b, 0x35, 0x28, 0xf3, 0xf3, 0x51, 0xdc, 0x65, - 0xfc, 0x69, 0x0e, 0x2a, 0x62, 0xe8, 0xeb, 0x91, 0x1f, 0x5d, 0x80, 0x89, 0xee, 0xf6, 0xa6, 0xf3, - 0x99, 0xa8, 0xe8, 0xf2, 0x16, 0xe9, 0xef, 0x31, 0x3e, 0xec, 0x9d, 0x06, 0x6f, 0xa1, 0x4b, 0xec, - 0x09, 0xc7, 0x8a, 0xdb, 0xc5, 0x07, 0xf4, 0x18, 0x95, 0xb3, 0x64, 0x07, 0x4d, 0x87, 0xf2, 0xf7, - 0x1c, 0xf4, 0x96, 0xac, 0xbc, 0xef, 0x40, 0x8b, 0x50, 0x25, 0xdf, 0xcd, 0xc1, 0xa0, 0xe7, 0xe0, - 0x2e, 0x23, 0x40, 0x2e, 0xc8, 0x39, 0x79, 0x4e, 0x4a, 0x00, 0xa0, 0x2b, 0x30, 0x41, 0x2f, 0x8f, - 0x41, 0x6d, 0x92, 0x44, 0x64, 0x09, 0xca, 0xbb, 0xd1, 0x3b, 0x50, 0x64, 0x12, 0xaf, 0xb8, 0xcf, - 0x03, 0x4c, 0x5f, 0x3b, 0x28, 0x99, 0x14, 0x75, 0x4c, 0x3f, 0xa1, 0xc1, 0xa8, 0x13, 0x1a, 0x6a, - 0x40, 0x25, 0x08, 0x3d, 0xdf, 0xde, 0x11, 0x66, 0xa4, 0x4f, 0x1d, 0x94, 0x74, 0x5f, 0x6c, 0x58, - 0x8a, 0xf0, 0xf1, 0xbe, 0x17, 0xda, 0xfa, 0x13, 0x87, 0xf7, 0x2d, 0x75, 0x0c, 0x7d, 0x0b, 0xca, - 0x5d, 0xb1, 0x48, 0x56, 0xdc, 0x57, 0x1e, 0x7d, 0xd6, 0x90, 0xa8, 0xde, 0x2d, 0xab, 0x20, 0x92, - 0x92, 0x8e, 0xaa, 0xde, 0x64, 0xcb, 0x1a, 0x06, 0xb1, 0x36, 0x76, 0x49, 0x68, 0x67, 0x19, 0x9c, - 0x49, 0x4b, 0x34, 0xd1, 0x75, 0x28, 0xb3, 0x48, 0xf0, 0x42, 0x5b, 0x0d, 0x7a, 0x27, 0x89, 0x63, - 0xcd, 0xfd, 0x70, 0xb7, 0x45, 0x91, 0x12, 0x8b, 0xf2, 0x32, 0x20, 0x32, 0xba, 0xec, 0x04, 0xa9, - 0xc3, 0x1c, 0x39, 0x75, 0x45, 0xdf, 0x37, 0xd7, 0x60, 0x9a, 0x8c, 0x62, 0x37, 0x74, 0x3a, 0xca, - 0x51, 0x4c, 0x1c, 0xf6, 0x8d, 0xd8, 0x61, 0xdf, 0x0e, 0x82, 0xd7, 0x9e, 0xdf, 0xe5, 0x62, 0x46, - 0x6d, 0xc9, 0xed, 0x1f, 0x0c, 0x26, 0xcd, 0xf3, 0x40, 0x3b, 0xa8, 0x7f, 0x45, 0x7a, 0xe8, 0x97, - 0x20, 0xcf, 0x1f, 0x48, 0xf1, 0xfc, 0xe7, 0x85, 0x79, 0xf6, 0x30, 0x6b, 0x9e, 0x13, 0x5e, 0x67, - 0xa3, 0x4a, 0x8e, 0x8e, 0xc3, 0x93, 0xe5, 0xb2, 0x6b, 0x07, 0xbb, 0xb8, 0xbb, 0x21, 0x88, 0x6b, - 0xd9, 0xe1, 0xfb, 0x56, 0x6c, 0x58, 0xca, 0x7e, 0x57, 0x8a, 0xfe, 0x18, 0x87, 0x47, 0x88, 0xae, - 0xd6, 0x1f, 0xce, 0x0b, 0x14, 0x5e, 0x36, 0x3d, 0x09, 0xd6, 0x8f, 0x0d, 0xb8, 0x2c, 0xd0, 0x96, - 0x76, 0x6d, 0x77, 0x07, 0x0b, 0x61, 0x7e, 0x5e, 0x7d, 0x25, 0x27, 0x9d, 0x3d, 0xe1, 0xa4, 0x9f, - 0x42, 0x2d, 0x9a, 0x34, 0xcd, 0x45, 0x79, 0x3d, 0x75, 0x12, 0xfb, 0x41, 0xe4, 0x24, 0xe9, 0x37, - 0xe9, 0xf3, 0xbd, 0x5e, 0x74, 0x0d, 0x24, 0xdf, 0x92, 0xd8, 0x2a, 0x5c, 0x14, 0xc4, 0x78, 0x72, - 0x48, 0xa7, 0x96, 0x98, 0xd3, 0x91, 0xd4, 0xb8, 0x3d, 0x08, 0x8d, 0xa3, 0x97, 0x52, 0x2a, 0x8a, - 0x6e, 0x42, 0xca, 0xc5, 0x48, 0xe3, 0x32, 0xcb, 0x76, 0x00, 0x91, 0x59, 0x39, 0xb1, 0x27, 0xc6, - 0x09, 0xc9, 0xd4, 0x71, 0xbe, 0x04, 0xc8, 0x78, 0x62, 0x09, 0x8c, 0xe6, 0x8a, 0x61, 0x36, 0x12, - 0x94, 0xa8, 0x7d, 0x03, 0xfb, 0x7d, 0x27, 0x08, 0x94, 0x42, 0x5c, 0x9a, 0xba, 0xde, 0x82, 0xdc, - 0x00, 0xf3, 0xe3, 0x4b, 0x71, 0x01, 0x89, 0x3d, 0xa1, 0x20, 0xd3, 0x71, 0xc9, 0xa6, 0x0f, 0x57, - 0x04, 0x1b, 0x66, 0x90, 0x54, 0x3e, 0x71, 0x31, 0x45, 0xf2, 0x3f, 0x33, 0x22, 0xf9, 0x9f, 0xd5, - 0x93, 0xff, 0xda, 0x91, 0x5a, 0x75, 0x54, 0x67, 0x73, 0xa4, 0x6e, 0x33, 0x03, 0x44, 0xfe, 0xed, - 0x6c, 0xa8, 0xfe, 0x1e, 0x77, 0x54, 0x67, 0x15, 0xce, 0x85, 0x83, 0xcf, 0xe8, 0x0e, 0xde, 0x84, - 0x12, 0x31, 0x92, 0xa5, 0x56, 0x45, 0x72, 0x96, 0xd6, 0x27, 0x9d, 0xf1, 0x1e, 0xcc, 0xe8, 0xce, - 0xf8, 0x54, 0x42, 0xcd, 0xc0, 0x78, 0xe8, 0xed, 0x61, 0x11, 0x53, 0x58, 0x23, 0xa1, 0xd6, 0xc8, - 0x51, 0x9f, 0x8d, 0x5a, 0xbf, 0x2b, 0xa9, 0xd2, 0x0d, 0x78, 0xda, 0x19, 0x90, 0xe5, 0x28, 0x6e, - 0xff, 0xac, 0x21, 0x79, 0x7d, 0x02, 0x17, 0xe2, 0xce, 0xf7, 0x6c, 0x26, 0xb1, 0xc5, 0x36, 0x67, - 0x9a, 0x7b, 0x3e, 0x1b, 0x06, 0x2f, 0xa5, 0x9f, 0x54, 0x9c, 0xee, 0xd9, 0xd0, 0xfe, 0x55, 0xa8, - 0xa7, 0xf9, 0xe0, 0x33, 0xdd, 0x8b, 0x91, 0x4b, 0x3e, 0x1b, 0xaa, 0x3f, 0x34, 0x24, 0x59, 0x75, - 0xd5, 0x7c, 0xf0, 0x55, 0xc8, 0x8a, 0x58, 0x77, 0x27, 0x5a, 0x3e, 0x8d, 0xc8, 0x5b, 0x66, 0xd3, - 0xbd, 0xa5, 0x44, 0xa1, 0x80, 0x62, 0xff, 0x49, 0x57, 0xff, 0x75, 0xae, 0x5e, 0xce, 0x4c, 0xc6, - 0x9d, 0xd3, 0x32, 0x23, 0xe1, 0x39, 0x62, 0x46, 0x1b, 0x89, 0xad, 0xa2, 0x06, 0xa9, 0xb3, 0x31, - 0xdd, 0xaf, 0xc9, 0x00, 0x93, 0x88, 0x63, 0x67, 0xc3, 0xc1, 0x86, 0xb9, 0xd1, 0x21, 0xec, 0x6c, - 0x58, 0x6c, 0xc3, 0x34, 0x7d, 0xee, 0xb6, 0x19, 0xfa, 0xd8, 0x96, 0x77, 0xfc, 0x47, 0x50, 0x61, - 0x31, 0x4f, 0xbc, 0x9d, 0x39, 0xc1, 0xdb, 0x3e, 0xab, 0xec, 0xab, 0x4d, 0xc1, 0xe3, 0xc1, 0xad, - 0x26, 0x14, 0xa2, 0xfc, 0x82, 0xf2, 0x1a, 0xba, 0x08, 0xf9, 0xb5, 0xf5, 0xcd, 0x8d, 0xe6, 0x12, - 0xb9, 0x3e, 0xcf, 0x40, 0x7e, 0x69, 0xdd, 0xb2, 0x9e, 0x6f, 0xb4, 0xc9, 0xfd, 0x39, 0xfe, 0x38, - 0x6a, 0xe1, 0xef, 0x73, 0x90, 0x79, 0xfa, 0x02, 0x7d, 0x0a, 0xe3, 0xec, 0x71, 0xde, 0x11, 0x6f, - 0x34, 0xeb, 0x47, 0xc9, 0x68, 0xbe, 0xf1, 0x83, 0xff, 0xfa, 0xbf, 0xdf, 0xcf, 0x9c, 0x33, 0x4b, - 0x8d, 0xe1, 0x62, 0x63, 0x6f, 0xd8, 0xa0, 0x22, 0x3f, 0x34, 0x6e, 0xa1, 0x0d, 0x28, 0x2a, 0x8a, - 0x38, 0x92, 0xc1, 0xd5, 0x94, 0x31, 0x5d, 0x7f, 0xe6, 0xd8, 0x1d, 0x03, 0x7d, 0x0c, 0xd9, 0x8d, - 0xfd, 0x10, 0x8d, 0x7c, 0x0d, 0x5a, 0x1f, 0xfd, 0xc8, 0xd1, 0x3c, 0x4f, 0xc5, 0x9c, 0x32, 0x81, - 0x8b, 0x39, 0xd8, 0x0f, 0x89, 0x90, 0xdf, 0x83, 0xa2, 0xfa, 0x44, 0xf1, 0xd8, 0x27, 0xa2, 0xf5, - 0xe3, 0x9f, 0x3f, 0x9a, 0x97, 0x29, 0xab, 0x37, 0x4c, 0xc4, 0x59, 0xb1, 0x47, 0x94, 0x91, 0x5e, - 0x3e, 0x86, 0x6c, 0xfb, 0xc0, 0x45, 0x23, 0x1f, 0x90, 0xd6, 0x47, 0xbf, 0x88, 0x4c, 0xcc, 0x22, - 0x3c, 0x70, 0x09, 0xc9, 0xef, 0xf2, 0xa7, 0x8f, 0x9d, 0x10, 0x5d, 0x49, 0x79, 0xbb, 0xa6, 0xbe, - 0xc9, 0xaa, 0xcf, 0x8d, 0x06, 0xe0, 0x4c, 0x2e, 0x51, 0x26, 0x17, 0xcc, 0x73, 0x9c, 0x49, 0x27, - 0x02, 0x79, 0x68, 0xdc, 0x5a, 0xe8, 0xc0, 0x38, 0xad, 0xf9, 0xa3, 0x97, 0xe2, 0xa3, 0x9e, 0xf2, - 0x9a, 0x62, 0xc4, 0xd2, 0xd1, 0x5e, 0x0b, 0x98, 0x33, 0x94, 0x51, 0xc5, 0x2c, 0x10, 0x46, 0xb4, - 0xe2, 0xff, 0xd0, 0xb8, 0x75, 0xd3, 0xb8, 0x63, 0x2c, 0xfc, 0xd5, 0x38, 0x8c, 0xd3, 0xda, 0x12, - 0xda, 0x03, 0x90, 0xb5, 0xed, 0xf8, 0xec, 0x12, 0x65, 0xf3, 0xf8, 0xec, 0x92, 0x65, 0x71, 0xb3, - 0x4e, 0x99, 0xce, 0x98, 0x53, 0x84, 0x29, 0x2d, 0x59, 0x35, 0x68, 0x85, 0x8e, 0xe8, 0xf1, 0xc7, - 0x06, 0x2f, 0xb2, 0x31, 0xe7, 0x80, 0xd2, 0xa8, 0x69, 0x75, 0xed, 0xf8, 0x72, 0x48, 0x29, 0x65, - 0x9b, 0xf7, 0x29, 0xc3, 0x86, 0x59, 0x95, 0x0c, 0x7d, 0x0a, 0xf1, 0xd0, 0xb8, 0xf5, 0xb2, 0x66, - 0x4e, 0x73, 0x2d, 0xc7, 0x46, 0xd0, 0xf7, 0xa1, 0xa2, 0x57, 0x60, 0xd1, 0xb5, 0x14, 0x5e, 0xf1, - 0x8a, 0x6e, 0xfd, 0xfa, 0xd1, 0x40, 0x5c, 0xa6, 0x59, 0x2a, 0x13, 0x67, 0xce, 0x38, 0xef, 0x61, - 0x3c, 0xb0, 0x09, 0x10, 0xb7, 0x01, 0xfa, 0x63, 0x83, 0x17, 0xd1, 0x65, 0x01, 0x15, 0xa5, 0x51, - 0x4f, 0xd4, 0x69, 0xeb, 0x37, 0x8e, 0x81, 0xe2, 0x42, 0x7c, 0x40, 0x85, 0x78, 0x60, 0xce, 0x48, - 0x21, 0x42, 0xa7, 0x8f, 0x43, 0x8f, 0x4b, 0xf1, 0xf2, 0x92, 0xf9, 0x86, 0xa6, 0x1c, 0x6d, 0x54, - 0x1a, 0x8b, 0x15, 0x3a, 0x53, 0x8d, 0xa5, 0xd5, 0x52, 0x53, 0x8d, 0xa5, 0x57, 0x49, 0xd3, 0x8c, - 0xc5, 0xcb, 0x9a, 0x29, 0xc6, 0x8a, 0x46, 0x16, 0xfe, 0x3f, 0x07, 0xf9, 0x25, 0xf6, 0x5f, 0xa8, - 0x90, 0x07, 0x85, 0xa8, 0xf4, 0x87, 0x66, 0xd3, 0xaa, 0x0b, 0xf2, 0x02, 0x5a, 0xbf, 0x32, 0x72, - 0x9c, 0x0b, 0x74, 0x95, 0x0a, 0xf4, 0xa6, 0x79, 0x81, 0x70, 0xe6, 0xff, 0x4b, 0xab, 0xc1, 0x72, - 0xd0, 0x0d, 0xbb, 0xdb, 0x25, 0x8a, 0xf8, 0x75, 0x28, 0xa9, 0x85, 0x38, 0x74, 0x35, 0xb5, 0xa2, - 0xa1, 0x56, 0xf5, 0xea, 0xe6, 0x51, 0x20, 0x9c, 0xf3, 0x75, 0xca, 0x79, 0xd6, 0xbc, 0x98, 0xc2, - 0xd9, 0xa7, 0xa0, 0x1a, 0x73, 0x56, 0x31, 0x4b, 0x67, 0xae, 0x95, 0xe6, 0xd2, 0x99, 0xeb, 0x05, - 0xb7, 0x23, 0x99, 0xef, 0x53, 0x50, 0xc2, 0x3c, 0x00, 0x90, 0x25, 0x2d, 0x94, 0xaa, 0x4b, 0xe5, - 0x9a, 0x1d, 0x77, 0x0e, 0xc9, 0x6a, 0x98, 0x69, 0x52, 0xb6, 0x7c, 0xdd, 0xc5, 0xd8, 0xf6, 0x9c, - 0x20, 0x64, 0x1b, 0xb3, 0xac, 0x15, 0xa4, 0x50, 0xea, 0x7c, 0xf4, 0xfa, 0x56, 0xfd, 0xda, 0x91, - 0x30, 0x9c, 0xfb, 0x0d, 0xca, 0xfd, 0x8a, 0x59, 0x4f, 0xe1, 0x3e, 0x60, 0xb0, 0x64, 0xb1, 0x7d, - 0x9e, 0x87, 0xe2, 0x33, 0xdb, 0x71, 0x43, 0xec, 0xda, 0x6e, 0x07, 0xa3, 0x6d, 0x18, 0xa7, 0xa7, - 0x81, 0xb8, 0x23, 0x56, 0xeb, 0x2f, 0x71, 0x47, 0xac, 0x15, 0x20, 0xcc, 0x39, 0xca, 0xb8, 0x6e, - 0x9e, 0x27, 0x8c, 0xfb, 0x92, 0x74, 0x83, 0x95, 0x2e, 0x8c, 0x5b, 0xe8, 0x15, 0x4c, 0xf0, 0x87, - 0x07, 0x31, 0x42, 0x5a, 0x2a, 0xb0, 0x7e, 0x29, 0x7d, 0x30, 0x6d, 0x2d, 0xab, 0x6c, 0x02, 0x0a, - 0x47, 0xf8, 0x0c, 0x01, 0x64, 0x1d, 0x2d, 0x6e, 0xd1, 0x44, 0xfd, 0xad, 0x3e, 0x37, 0x1a, 0x20, - 0x4d, 0xa7, 0x2a, 0xcf, 0x6e, 0x04, 0x4b, 0xf8, 0x7e, 0x07, 0x72, 0x4f, 0xec, 0x60, 0x17, 0xc5, - 0x62, 0xaf, 0xf2, 0x4e, 0xb8, 0x5e, 0x4f, 0x1b, 0xe2, 0x5c, 0xae, 0x50, 0x2e, 0x17, 0x99, 0x2b, - 0x53, 0xb9, 0xd0, 0x97, 0xb0, 0x4c, 0x7f, 0xec, 0x91, 0x70, 0x5c, 0x7f, 0xda, 0x8b, 0xe3, 0xb8, - 0xfe, 0xf4, 0x77, 0xc5, 0xa3, 0xf5, 0x47, 0xb8, 0xec, 0x0d, 0x09, 0x9f, 0x01, 0x4c, 0x8a, 0xe7, - 0xb4, 0x28, 0xf6, 0x08, 0x29, 0xf6, 0x06, 0xb7, 0x3e, 0x3b, 0x6a, 0x98, 0x73, 0xbb, 0x46, 0xb9, - 0x5d, 0x36, 0x6b, 0x09, 0x6b, 0x71, 0xc8, 0x87, 0xc6, 0xad, 0x3b, 0x06, 0xfa, 0x3e, 0x80, 0x2c, - 0x35, 0x26, 0xf6, 0x60, 0xbc, 0x7c, 0x99, 0xd8, 0x83, 0x89, 0x2a, 0xa5, 0x39, 0x4f, 0xf9, 0xde, - 0x34, 0xaf, 0xc5, 0xf9, 0x86, 0xbe, 0xed, 0x06, 0xaf, 0xb0, 0x7f, 0x9b, 0x55, 0x2b, 0x82, 0x5d, - 0x67, 0x40, 0xa6, 0xec, 0x43, 0x21, 0xca, 0x90, 0xc7, 0xfd, 0x6d, 0xbc, 0x66, 0x15, 0xf7, 0xb7, - 0x89, 0x12, 0x92, 0xee, 0x78, 0xb4, 0xf5, 0x22, 0x40, 0xc9, 0x16, 0xfc, 0xf3, 0x2a, 0xe4, 0xc8, - 0x45, 0x82, 0x1c, 0x4f, 0x64, 0x92, 0x2a, 0x3e, 0xfb, 0x44, 0x9e, 0x3d, 0x3e, 0xfb, 0x64, 0x7e, - 0x4b, 0x3f, 0x9e, 0x90, 0x4b, 0x66, 0x83, 0x65, 0x7f, 0xc8, 0x4c, 0x3d, 0x28, 0x2a, 0xc9, 0x2b, - 0x94, 0x42, 0x4c, 0xcf, 0xdb, 0xc7, 0x03, 0x5e, 0x4a, 0xe6, 0xcb, 0x7c, 0x93, 0xf2, 0x3b, 0xcf, - 0x02, 0x1e, 0xe5, 0xd7, 0x65, 0x10, 0x84, 0x21, 0x9f, 0x1d, 0xdf, 0xf9, 0x29, 0xb3, 0xd3, 0x77, - 0xff, 0xdc, 0x68, 0x80, 0x91, 0xb3, 0x93, 0x5b, 0xff, 0x35, 0x94, 0xd4, 0x84, 0x15, 0x4a, 0x11, - 0x3e, 0x56, 0x59, 0x88, 0x47, 0x92, 0xb4, 0x7c, 0x97, 0xee, 0xdb, 0x28, 0x4b, 0x5b, 0x01, 0x23, - 0x8c, 0x7b, 0x90, 0xe7, 0x89, 0xab, 0x34, 0x95, 0xea, 0xc5, 0x87, 0x34, 0x95, 0xc6, 0xb2, 0x5e, - 0xfa, 0xf9, 0x99, 0x72, 0x24, 0x17, 0x68, 0x11, 0xad, 0x39, 0xb7, 0xc7, 0x38, 0x1c, 0xc5, 0x4d, - 0x26, 0x9b, 0x47, 0x71, 0x53, 0xf2, 0x1a, 0xa3, 0xb8, 0xed, 0xe0, 0x90, 0xfb, 0x03, 0x91, 0x14, - 0x40, 0x23, 0x88, 0xa9, 0x11, 0xd2, 0x3c, 0x0a, 0x24, 0xed, 0x7a, 0x23, 0x19, 0x8a, 0xf0, 0x78, - 0x00, 0x20, 0x93, 0x68, 0xf1, 0x33, 0x6b, 0x6a, 0x7d, 0x23, 0x7e, 0x66, 0x4d, 0xcf, 0xc3, 0xe9, - 0x3e, 0x56, 0xf2, 0x65, 0xb7, 0x2b, 0xc2, 0xf9, 0x0b, 0x03, 0x50, 0x32, 0xcd, 0x86, 0xde, 0x4d, - 0xa7, 0x9e, 0x5a, 0x2b, 0xa9, 0xbf, 0x77, 0x32, 0xe0, 0x34, 0x87, 0x2c, 0x45, 0xea, 0x50, 0xe8, - 0xc1, 0x6b, 0x22, 0xd4, 0xe7, 0x06, 0x94, 0xb5, 0xd4, 0x1c, 0x7a, 0x6b, 0x84, 0x4d, 0x63, 0x05, - 0x93, 0xfa, 0xdb, 0xc7, 0xc2, 0xa5, 0x1d, 0xe6, 0x95, 0x15, 0x20, 0x6e, 0x35, 0xbf, 0x65, 0x40, - 0x45, 0xcf, 0xe0, 0xa1, 0x11, 0xb4, 0x13, 0x75, 0x96, 0xfa, 0xcd, 0xe3, 0x01, 0x8f, 0x36, 0x8f, - 0xbc, 0xd0, 0xf4, 0x20, 0xcf, 0x53, 0x7d, 0x69, 0x0b, 0x5f, 0x2f, 0xcc, 0xa4, 0x2d, 0xfc, 0x58, - 0x9e, 0x30, 0x65, 0xe1, 0xfb, 0x5e, 0x0f, 0x2b, 0xdb, 0x8c, 0x67, 0x00, 0x47, 0x71, 0x3b, 0x7a, - 0x9b, 0xc5, 0xd2, 0x87, 0xa3, 0xb8, 0xc9, 0x6d, 0x26, 0x12, 0x7d, 0x68, 0x04, 0xb1, 0x63, 0xb6, - 0x59, 0x3c, 0x4f, 0x98, 0xb2, 0xcd, 0x28, 0x43, 0x65, 0x9b, 0xc9, 0x04, 0x5c, 0xda, 0x36, 0x4b, - 0xd4, 0x90, 0xd2, 0xb6, 0x59, 0x32, 0x87, 0x97, 0x62, 0x47, 0xca, 0x57, 0xdb, 0x66, 0xd3, 0x29, - 0x29, 0x3a, 0xf4, 0xde, 0x08, 0x25, 0xa6, 0x56, 0xa4, 0xea, 0xb7, 0x4f, 0x08, 0x3d, 0x72, 0x8d, - 0x33, 0xf5, 0x8b, 0x35, 0xfe, 0x07, 0x06, 0xcc, 0xa4, 0x65, 0xf5, 0xd0, 0x08, 0x3e, 0x23, 0x0a, - 0x58, 0xf5, 0xf9, 0x93, 0x82, 0x1f, 0xad, 0xad, 0x68, 0xd5, 0x3f, 0xda, 0xf9, 0xa2, 0xd9, 0x78, - 0x79, 0x05, 0x2e, 0xc3, 0x44, 0x73, 0xe0, 0x3c, 0xc5, 0x87, 0x68, 0x7a, 0x32, 0x53, 0x2f, 0x13, - 0xba, 0x9e, 0xef, 0x7c, 0x46, 0x7f, 0xab, 0x63, 0x2e, 0xb3, 0x5d, 0x02, 0x88, 0x00, 0xc6, 0xfe, - 0xed, 0xcb, 0x59, 0xe3, 0x3f, 0xbf, 0x9c, 0x35, 0xfe, 0xfb, 0xcb, 0x59, 0xe3, 0xa7, 0xff, 0x3b, - 0x3b, 0xf6, 0xf2, 0xda, 0x8e, 0x47, 0xc5, 0x9a, 0x77, 0xbc, 0x86, 0xfc, 0xfd, 0x90, 0xc5, 0x86, - 0x2a, 0xea, 0xf6, 0x04, 0xfd, 0xc1, 0x8f, 0xc5, 0x9f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x7a, 0x33, - 0x06, 0x6b, 0xb1, 0x44, 0x00, 0x00, -} - -func (m *ResponseHeader) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ResponseHeader) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ResponseHeader) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.RaftTerm != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.RaftTerm)) - i-- - dAtA[i] = 0x20 - } - if m.Revision != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Revision)) - i-- - dAtA[i] = 0x18 - } - if m.MemberId != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.MemberId)) - i-- - dAtA[i] = 0x10 - } - if m.ClusterId != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ClusterId)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *RangeRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RangeRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RangeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.MaxCreateRevision != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.MaxCreateRevision)) - i-- - dAtA[i] = 0x68 - } - if m.MinCreateRevision != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.MinCreateRevision)) - i-- - dAtA[i] = 0x60 - } - if m.MaxModRevision != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.MaxModRevision)) - i-- - dAtA[i] = 0x58 - } - if m.MinModRevision != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.MinModRevision)) - i-- - dAtA[i] = 0x50 - } - if m.CountOnly { - i-- - if m.CountOnly { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x48 - } - if m.KeysOnly { - i-- - if m.KeysOnly { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x40 - } - if m.Serializable { - i-- - if m.Serializable { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x38 - } - if m.SortTarget != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.SortTarget)) - i-- - dAtA[i] = 0x30 - } - if m.SortOrder != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.SortOrder)) - i-- - dAtA[i] = 0x28 - } - if m.Revision != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Revision)) - i-- - dAtA[i] = 0x20 - } - if m.Limit != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Limit)) - i-- - dAtA[i] = 0x18 - } - if len(m.RangeEnd) > 0 { - i -= len(m.RangeEnd) - copy(dAtA[i:], m.RangeEnd) - i = encodeVarintRpc(dAtA, i, uint64(len(m.RangeEnd))) - i-- - dAtA[i] = 0x12 - } - if len(m.Key) > 0 { - i -= len(m.Key) - copy(dAtA[i:], m.Key) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Key))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *RangeResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RangeResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RangeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Count != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Count)) - i-- - dAtA[i] = 0x20 - } - if m.More { - i-- - if m.More { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x18 - } - if len(m.Kvs) > 0 { - for iNdEx := len(m.Kvs) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Kvs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +func (x *AuthUserListResponse) Reset() { + *x = AuthUserListResponse{} + mi := &file_rpc_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *PutRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (x *AuthUserListResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PutRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +func (*AuthUserListResponse) ProtoMessage() {} -func (m *PutRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.IgnoreLease { - i-- - if m.IgnoreLease { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x30 - } - if m.IgnoreValue { - i-- - if m.IgnoreValue { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x28 - } - if m.PrevKv { - i-- - if m.PrevKv { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x20 - } - if m.Lease != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Lease)) - i-- - dAtA[i] = 0x18 - } - if len(m.Value) > 0 { - i -= len(m.Value) - copy(dAtA[i:], m.Value) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Value))) - i-- - dAtA[i] = 0x12 - } - if len(m.Key) > 0 { - i -= len(m.Key) - copy(dAtA[i:], m.Key) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Key))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *PutResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *PutResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *PutResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.PrevKv != nil { - { - size, err := m.PrevKv.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) +func (x *AuthUserListResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[93] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0x12 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *DeleteRangeRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err + return ms } - return dAtA[:n], nil + return mi.MessageOf(x) } -func (m *DeleteRangeRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +// Deprecated: Use AuthUserListResponse.ProtoReflect.Descriptor instead. +func (*AuthUserListResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{93} } -func (m *DeleteRangeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.PrevKv { - i-- - if m.PrevKv { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x18 - } - if len(m.RangeEnd) > 0 { - i -= len(m.RangeEnd) - copy(dAtA[i:], m.RangeEnd) - i = encodeVarintRpc(dAtA, i, uint64(len(m.RangeEnd))) - i-- - dAtA[i] = 0x12 - } - if len(m.Key) > 0 { - i -= len(m.Key) - copy(dAtA[i:], m.Key) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Key))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *DeleteRangeResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *DeleteRangeResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *DeleteRangeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.PrevKvs) > 0 { - for iNdEx := len(m.PrevKvs) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.PrevKvs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } +func (x *AuthUserListResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } - if m.Deleted != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Deleted)) - i-- - dAtA[i] = 0x10 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil + return nil } -func (m *RequestOp) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (x *AuthUserListResponse) GetUsers() []string { + if x != nil { + return x.Users } - return dAtA[:n], nil + return nil } -func (m *RequestOp) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type AuthRoleDeleteResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *RequestOp) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Request != nil { - { - size := m.Request.Size() - i -= size - if _, err := m.Request.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - } - } - return len(dAtA) - i, nil +func (x *AuthRoleDeleteResponse) Reset() { + *x = AuthRoleDeleteResponse{} + mi := &file_rpc_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *RequestOp_RequestRange) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (x *AuthRoleDeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RequestOp_RequestRange) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.RequestRange != nil { - { - size, err := m.RequestRange.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} -func (m *RequestOp_RequestPut) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RequestOp_RequestPut) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.RequestPut != nil { - { - size, err := m.RequestPut.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - return len(dAtA) - i, nil -} -func (m *RequestOp_RequestDeleteRange) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RequestOp_RequestDeleteRange) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.RequestDeleteRange != nil { - { - size, err := m.RequestDeleteRange.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - return len(dAtA) - i, nil -} -func (m *RequestOp_RequestTxn) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RequestOp_RequestTxn) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.RequestTxn != nil { - { - size, err := m.RequestTxn.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - return len(dAtA) - i, nil -} -func (m *ResponseOp) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ResponseOp) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ResponseOp) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Response != nil { - { - size := m.Response.Size() - i -= size - if _, err := m.Response.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } +func (*AuthRoleDeleteResponse) ProtoMessage() {} + +func (x *AuthRoleDeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[94] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } + return ms } - return len(dAtA) - i, nil -} - -func (m *ResponseOp_ResponseRange) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return mi.MessageOf(x) } -func (m *ResponseOp_ResponseRange) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.ResponseRange != nil { - { - size, err := m.ResponseRange.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} -func (m *ResponseOp_ResponsePut) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ResponseOp_ResponsePut) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.ResponsePut != nil { - { - size, err := m.ResponsePut.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - return len(dAtA) - i, nil -} -func (m *ResponseOp_ResponseDeleteRange) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ResponseOp_ResponseDeleteRange) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.ResponseDeleteRange != nil { - { - size, err := m.ResponseDeleteRange.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - return len(dAtA) - i, nil -} -func (m *ResponseOp_ResponseTxn) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ResponseOp_ResponseTxn) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.ResponseTxn != nil { - { - size, err := m.ResponseTxn.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - return len(dAtA) - i, nil -} -func (m *Compare) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Compare) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Compare) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.RangeEnd) > 0 { - i -= len(m.RangeEnd) - copy(dAtA[i:], m.RangeEnd) - i = encodeVarintRpc(dAtA, i, uint64(len(m.RangeEnd))) - i-- - dAtA[i] = 0x4 - i-- - dAtA[i] = 0x82 - } - if m.TargetUnion != nil { - { - size := m.TargetUnion.Size() - i -= size - if _, err := m.TargetUnion.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - } - } - if len(m.Key) > 0 { - i -= len(m.Key) - copy(dAtA[i:], m.Key) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Key))) - i-- - dAtA[i] = 0x1a - } - if m.Target != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Target)) - i-- - dAtA[i] = 0x10 - } - if m.Result != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Result)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *Compare_Version) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Compare_Version) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - i = encodeVarintRpc(dAtA, i, uint64(m.Version)) - i-- - dAtA[i] = 0x20 - return len(dAtA) - i, nil -} -func (m *Compare_CreateRevision) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Compare_CreateRevision) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - i = encodeVarintRpc(dAtA, i, uint64(m.CreateRevision)) - i-- - dAtA[i] = 0x28 - return len(dAtA) - i, nil -} -func (m *Compare_ModRevision) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Compare_ModRevision) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - i = encodeVarintRpc(dAtA, i, uint64(m.ModRevision)) - i-- - dAtA[i] = 0x30 - return len(dAtA) - i, nil -} -func (m *Compare_Value) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Compare_Value) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.Value != nil { - i -= len(m.Value) - copy(dAtA[i:], m.Value) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Value))) - i-- - dAtA[i] = 0x3a - } - return len(dAtA) - i, nil -} -func (m *Compare_Lease) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Compare_Lease) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - i = encodeVarintRpc(dAtA, i, uint64(m.Lease)) - i-- - dAtA[i] = 0x40 - return len(dAtA) - i, nil -} -func (m *TxnRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *TxnRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *TxnRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Failure) > 0 { - for iNdEx := len(m.Failure) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Failure[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - } - if len(m.Success) > 0 { - for iNdEx := len(m.Success) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Success[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if len(m.Compare) > 0 { - for iNdEx := len(m.Compare) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Compare[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func (m *TxnResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *TxnResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *TxnResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Responses) > 0 { - for iNdEx := len(m.Responses) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Responses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - } - if m.Succeeded { - i-- - if m.Succeeded { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x10 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +// Deprecated: Use AuthRoleDeleteResponse.ProtoReflect.Descriptor instead. +func (*AuthRoleDeleteResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{94} } -func (m *CompactionRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (x *AuthRoleDeleteResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } - return dAtA[:n], nil + return nil } -func (m *CompactionRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type AuthRoleGrantPermissionResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *CompactionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Physical { - i-- - if m.Physical { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x10 - } - if m.Revision != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Revision)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil +func (x *AuthRoleGrantPermissionResponse) Reset() { + *x = AuthRoleGrantPermissionResponse{} + mi := &file_rpc_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *CompactionResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (x *AuthRoleGrantPermissionResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CompactionResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +func (*AuthRoleGrantPermissionResponse) ProtoMessage() {} -func (m *CompactionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) +func (x *AuthRoleGrantPermissionResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[95] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0xa + return ms } - return len(dAtA) - i, nil -} - -func (m *HashRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *HashRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return mi.MessageOf(x) } -func (m *HashRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - return len(dAtA) - i, nil +// Deprecated: Use AuthRoleGrantPermissionResponse.ProtoReflect.Descriptor instead. +func (*AuthRoleGrantPermissionResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{95} } -func (m *HashKVRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (x *AuthRoleGrantPermissionResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } - return dAtA[:n], nil + return nil } -func (m *HashKVRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type AuthRoleRevokePermissionResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *HashKVRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Revision != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Revision)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil +func (x *AuthRoleRevokePermissionResponse) Reset() { + *x = AuthRoleRevokePermissionResponse{} + mi := &file_rpc_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *HashKVResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (x *AuthRoleRevokePermissionResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *HashKVResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +func (*AuthRoleRevokePermissionResponse) ProtoMessage() {} -func (m *HashKVResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.HashRevision != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.HashRevision)) - i-- - dAtA[i] = 0x20 - } - if m.CompactRevision != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.CompactRevision)) - i-- - dAtA[i] = 0x18 - } - if m.Hash != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Hash)) - i-- - dAtA[i] = 0x10 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) +func (x *AuthRoleRevokePermissionResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[96] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *HashResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err + return ms } - return dAtA[:n], nil + return mi.MessageOf(x) } -func (m *HashResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *HashResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Hash != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Hash)) - i-- - dAtA[i] = 0x10 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *SnapshotRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *SnapshotRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *SnapshotRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - return len(dAtA) - i, nil -} - -func (m *SnapshotResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *SnapshotResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *SnapshotResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Version) > 0 { - i -= len(m.Version) - copy(dAtA[i:], m.Version) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Version))) - i-- - dAtA[i] = 0x22 - } - if len(m.Blob) > 0 { - i -= len(m.Blob) - copy(dAtA[i:], m.Blob) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Blob))) - i-- - dAtA[i] = 0x1a - } - if m.RemainingBytes != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.RemainingBytes)) - i-- - dAtA[i] = 0x10 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +// Deprecated: Use AuthRoleRevokePermissionResponse.ProtoReflect.Descriptor instead. +func (*AuthRoleRevokePermissionResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{96} } -func (m *WatchRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (x *AuthRoleRevokePermissionResponse) GetHeader() *ResponseHeader { + if x != nil { + return x.Header } - return dAtA[:n], nil -} - -func (m *WatchRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return nil } -func (m *WatchRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.RequestUnion != nil { - { - size := m.RequestUnion.Size() - i -= size - if _, err := m.RequestUnion.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - } - } - return len(dAtA) - i, nil +// RangeStreamResponse is the response for the RangeStream RPC. +type RangeStreamResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // range_response is a partial response for the KV.RangeStream RPC. + // The result of proto.Merge() applied on all responses should result in the + // same RangeResponse response as to the Range() method. + // + // Field population across chunks: + // - kvs: each chunk carries a disjoint slice of the result. Concatenating + // them in order yields the full key set. + // - header, more, count: set only on the final chunk. Non-merge clients + // can rely on io.EOF (end of stream) to detect completion. These + // fields are provided for clients that merge all responses into a + // single RangeResponse. + RangeResponse *RangeResponse `protobuf:"bytes,1,opt,name=range_response,json=rangeResponse,proto3" json:"range_response,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *WatchRequest_CreateRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (x *RangeStreamResponse) Reset() { + *x = RangeStreamResponse{} + mi := &file_rpc_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *WatchRequest_CreateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.CreateRequest != nil { - { - size, err := m.CreateRequest.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} -func (m *WatchRequest_CancelRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *WatchRequest_CancelRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.CancelRequest != nil { - { - size, err := m.CancelRequest.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - return len(dAtA) - i, nil -} -func (m *WatchRequest_ProgressRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *WatchRequest_ProgressRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.ProgressRequest != nil { - { - size, err := m.ProgressRequest.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - return len(dAtA) - i, nil -} -func (m *WatchCreateRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (x *RangeStreamResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *WatchCreateRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +func (*RangeStreamResponse) ProtoMessage() {} -func (m *WatchCreateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Fragment { - i-- - if m.Fragment { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x40 - } - if m.WatchId != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.WatchId)) - i-- - dAtA[i] = 0x38 - } - if m.PrevKv { - i-- - if m.PrevKv { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x30 - } - if len(m.Filters) > 0 { - dAtA22 := make([]byte, len(m.Filters)*10) - var j21 int - for _, num := range m.Filters { - for num >= 1<<7 { - dAtA22[j21] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j21++ - } - dAtA22[j21] = uint8(num) - j21++ - } - i -= j21 - copy(dAtA[i:], dAtA22[:j21]) - i = encodeVarintRpc(dAtA, i, uint64(j21)) - i-- - dAtA[i] = 0x2a - } - if m.ProgressNotify { - i-- - if m.ProgressNotify { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x20 - } - if m.StartRevision != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.StartRevision)) - i-- - dAtA[i] = 0x18 - } - if len(m.RangeEnd) > 0 { - i -= len(m.RangeEnd) - copy(dAtA[i:], m.RangeEnd) - i = encodeVarintRpc(dAtA, i, uint64(len(m.RangeEnd))) - i-- - dAtA[i] = 0x12 - } - if len(m.Key) > 0 { - i -= len(m.Key) - copy(dAtA[i:], m.Key) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Key))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *WatchCancelRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *WatchCancelRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *WatchCancelRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.WatchId != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.WatchId)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *WatchProgressRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *WatchProgressRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *WatchProgressRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - return len(dAtA) - i, nil -} - -func (m *WatchResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *WatchResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *WatchResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Events) > 0 { - for iNdEx := len(m.Events) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Events[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x5a - } - } - if m.Fragment { - i-- - if m.Fragment { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x38 - } - if len(m.CancelReason) > 0 { - i -= len(m.CancelReason) - copy(dAtA[i:], m.CancelReason) - i = encodeVarintRpc(dAtA, i, uint64(len(m.CancelReason))) - i-- - dAtA[i] = 0x32 - } - if m.CompactRevision != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.CompactRevision)) - i-- - dAtA[i] = 0x28 - } - if m.Canceled { - i-- - if m.Canceled { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x20 - } - if m.Created { - i-- - if m.Created { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x18 - } - if m.WatchId != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.WatchId)) - i-- - dAtA[i] = 0x10 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) +func (x *RangeStreamResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[97] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *LeaseGrantRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaseGrantRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseGrantRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.ID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x10 - } - if m.TTL != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.TTL)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *LeaseGrantResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaseGrantResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseGrantResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Error) > 0 { - i -= len(m.Error) - copy(dAtA[i:], m.Error) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Error))) - i-- - dAtA[i] = 0x22 - } - if m.TTL != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.TTL)) - i-- - dAtA[i] = 0x18 - } - if m.ID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x10 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa + return ms } - return len(dAtA) - i, nil + return mi.MessageOf(x) } -func (m *LeaseRevokeRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} +// Deprecated: Use RangeStreamResponse.ProtoReflect.Descriptor instead. +func (*RangeStreamResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{97} +} + +func (x *RangeStreamResponse) GetRangeResponse() *RangeResponse { + if x != nil { + return x.RangeResponse + } + return nil +} + +var File_rpc_proto protoreflect.FileDescriptor + +const file_rpc_proto_rawDesc = "" + + "\n" + + "\trpc.proto\x12\fetcdserverpb\x1a\x18etcd/api/mvccpb/kv.proto\x1a\x1aetcd/api/authpb/auth.proto\x1a etcd/api/versionpb/version.proto\x1a\x1cgoogle/api/annotations.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\"\x8e\x01\n" + + "\x0eResponseHeader\x12\x1d\n" + + "\n" + + "cluster_id\x18\x01 \x01(\x04R\tclusterId\x12\x1b\n" + + "\tmember_id\x18\x02 \x01(\x04R\bmemberId\x12\x1a\n" + + "\brevision\x18\x03 \x01(\x03R\brevision\x12\x1b\n" + + "\traft_term\x18\x04 \x01(\x04R\braftTerm:\a\x82\xb5\x18\x033.0\"\xc3\x05\n" + + "\fRangeRequest\x12\x10\n" + + "\x03key\x18\x01 \x01(\fR\x03key\x12\x1b\n" + + "\trange_end\x18\x02 \x01(\fR\brangeEnd\x12\x14\n" + + "\x05limit\x18\x03 \x01(\x03R\x05limit\x12\x1a\n" + + "\brevision\x18\x04 \x01(\x03R\brevision\x12C\n" + + "\n" + + "sort_order\x18\x05 \x01(\x0e2$.etcdserverpb.RangeRequest.SortOrderR\tsortOrder\x12F\n" + + "\vsort_target\x18\x06 \x01(\x0e2%.etcdserverpb.RangeRequest.SortTargetR\n" + + "sortTarget\x12\"\n" + + "\fserializable\x18\a \x01(\bR\fserializable\x12\x1b\n" + + "\tkeys_only\x18\b \x01(\bR\bkeysOnly\x12\x1d\n" + + "\n" + + "count_only\x18\t \x01(\bR\tcountOnly\x121\n" + + "\x10min_mod_revision\x18\n" + + " \x01(\x03B\a\x8a\xb5\x18\x033.1R\x0eminModRevision\x121\n" + + "\x10max_mod_revision\x18\v \x01(\x03B\a\x8a\xb5\x18\x033.1R\x0emaxModRevision\x127\n" + + "\x13min_create_revision\x18\f \x01(\x03B\a\x8a\xb5\x18\x033.1R\x11minCreateRevision\x127\n" + + "\x13max_create_revision\x18\r \x01(\x03B\a\x8a\xb5\x18\x033.1R\x11maxCreateRevision\"7\n" + + "\tSortOrder\x12\b\n" + + "\x04NONE\x10\x00\x12\n" + + "\n" + + "\x06ASCEND\x10\x01\x12\v\n" + + "\aDESCEND\x10\x02\x1a\a\x92\xb5\x18\x033.0\"K\n" + + "\n" + + "SortTarget\x12\a\n" + + "\x03KEY\x10\x00\x12\v\n" + + "\aVERSION\x10\x01\x12\n" + + "\n" + + "\x06CREATE\x10\x02\x12\a\n" + + "\x03MOD\x10\x03\x12\t\n" + + "\x05VALUE\x10\x04\x1a\a\x92\xb5\x18\x033.0:\a\x82\xb5\x18\x033.0\"\x9c\x01\n" + + "\rRangeResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\"\n" + + "\x03kvs\x18\x02 \x03(\v2\x10.mvccpb.KeyValueR\x03kvs\x12\x12\n" + + "\x04more\x18\x03 \x01(\bR\x04more\x12\x14\n" + + "\x05count\x18\x04 \x01(\x03R\x05count:\a\x82\xb5\x18\x033.0\"\xcd\x01\n" + + "\n" + + "PutRequest\x12\x10\n" + + "\x03key\x18\x01 \x01(\fR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\fR\x05value\x12\x14\n" + + "\x05lease\x18\x03 \x01(\x03R\x05lease\x12 \n" + + "\aprev_kv\x18\x04 \x01(\bB\a\x8a\xb5\x18\x033.1R\x06prevKv\x12*\n" + + "\fignore_value\x18\x05 \x01(\bB\a\x8a\xb5\x18\x033.2R\vignoreValue\x12*\n" + + "\fignore_lease\x18\x06 \x01(\bB\a\x8a\xb5\x18\x033.2R\vignoreLease:\a\x82\xb5\x18\x033.0\"\x80\x01\n" + + "\vPutResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x122\n" + + "\aprev_kv\x18\x02 \x01(\v2\x10.mvccpb.KeyValueB\a\x8a\xb5\x18\x033.1R\x06prevKv:\a\x82\xb5\x18\x033.0\"n\n" + + "\x12DeleteRangeRequest\x12\x10\n" + + "\x03key\x18\x01 \x01(\fR\x03key\x12\x1b\n" + + "\trange_end\x18\x02 \x01(\fR\brangeEnd\x12 \n" + + "\aprev_kv\x18\x03 \x01(\bB\a\x8a\xb5\x18\x033.1R\x06prevKv:\a\x82\xb5\x18\x033.0\"\xa4\x01\n" + + "\x13DeleteRangeResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x18\n" + + "\adeleted\x18\x02 \x01(\x03R\adeleted\x124\n" + + "\bprev_kvs\x18\x03 \x03(\v2\x10.mvccpb.KeyValueB\a\x8a\xb5\x18\x033.1R\aprevKvs:\a\x82\xb5\x18\x033.0\"\xbb\x02\n" + + "\tRequestOp\x12A\n" + + "\rrequest_range\x18\x01 \x01(\v2\x1a.etcdserverpb.RangeRequestH\x00R\frequestRange\x12;\n" + + "\vrequest_put\x18\x02 \x01(\v2\x18.etcdserverpb.PutRequestH\x00R\n" + + "requestPut\x12T\n" + + "\x14request_delete_range\x18\x03 \x01(\v2 .etcdserverpb.DeleteRangeRequestH\x00R\x12requestDeleteRange\x12D\n" + + "\vrequest_txn\x18\x04 \x01(\v2\x18.etcdserverpb.TxnRequestB\a\x8a\xb5\x18\x033.3H\x00R\n" + + "requestTxn:\a\x82\xb5\x18\x033.0B\t\n" + + "\arequest\"\xc9\x02\n" + + "\n" + + "ResponseOp\x12D\n" + + "\x0eresponse_range\x18\x01 \x01(\v2\x1b.etcdserverpb.RangeResponseH\x00R\rresponseRange\x12>\n" + + "\fresponse_put\x18\x02 \x01(\v2\x19.etcdserverpb.PutResponseH\x00R\vresponsePut\x12W\n" + + "\x15response_delete_range\x18\x03 \x01(\v2!.etcdserverpb.DeleteRangeResponseH\x00R\x13responseDeleteRange\x12G\n" + + "\fresponse_txn\x18\x04 \x01(\v2\x19.etcdserverpb.TxnResponseB\a\x8a\xb5\x18\x033.3H\x00R\vresponseTxn:\a\x82\xb5\x18\x033.0B\n" + + "\n" + + "\bresponse\"\xa8\x04\n" + + "\aCompare\x12;\n" + + "\x06result\x18\x01 \x01(\x0e2#.etcdserverpb.Compare.CompareResultR\x06result\x12;\n" + + "\x06target\x18\x02 \x01(\x0e2#.etcdserverpb.Compare.CompareTargetR\x06target\x12\x10\n" + + "\x03key\x18\x03 \x01(\fR\x03key\x12\x1a\n" + + "\aversion\x18\x04 \x01(\x03H\x00R\aversion\x12)\n" + + "\x0fcreate_revision\x18\x05 \x01(\x03H\x00R\x0ecreateRevision\x12#\n" + + "\fmod_revision\x18\x06 \x01(\x03H\x00R\vmodRevision\x12\x16\n" + + "\x05value\x18\a \x01(\fH\x00R\x05value\x12\x1f\n" + + "\x05lease\x18\b \x01(\x03B\a\x8a\xb5\x18\x033.3H\x00R\x05lease\x12$\n" + + "\trange_end\x18@ \x01(\fB\a\x8a\xb5\x18\x033.3R\brangeEnd\"R\n" + + "\rCompareResult\x12\t\n" + + "\x05EQUAL\x10\x00\x12\v\n" + + "\aGREATER\x10\x01\x12\b\n" + + "\x04LESS\x10\x02\x12\x16\n" + + "\tNOT_EQUAL\x10\x03\x1a\a\x9a\xb5\x18\x033.1\x1a\a\x92\xb5\x18\x033.0\"Y\n" + + "\rCompareTarget\x12\v\n" + + "\aVERSION\x10\x00\x12\n" + + "\n" + + "\x06CREATE\x10\x01\x12\a\n" + + "\x03MOD\x10\x02\x12\t\n" + + "\x05VALUE\x10\x03\x12\x12\n" + + "\x05LEASE\x10\x04\x1a\a\x9a\xb5\x18\x033.3\x1a\a\x92\xb5\x18\x033.0:\a\x82\xb5\x18\x033.0B\x0e\n" + + "\ftarget_union\"\xac\x01\n" + + "\n" + + "TxnRequest\x12/\n" + + "\acompare\x18\x01 \x03(\v2\x15.etcdserverpb.CompareR\acompare\x121\n" + + "\asuccess\x18\x02 \x03(\v2\x17.etcdserverpb.RequestOpR\asuccess\x121\n" + + "\afailure\x18\x03 \x03(\v2\x17.etcdserverpb.RequestOpR\afailure:\a\x82\xb5\x18\x033.0\"\xa2\x01\n" + + "\vTxnResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x1c\n" + + "\tsucceeded\x18\x02 \x01(\bR\tsucceeded\x126\n" + + "\tresponses\x18\x03 \x03(\v2\x18.etcdserverpb.ResponseOpR\tresponses:\a\x82\xb5\x18\x033.0\"T\n" + + "\x11CompactionRequest\x12\x1a\n" + + "\brevision\x18\x01 \x01(\x03R\brevision\x12\x1a\n" + + "\bphysical\x18\x02 \x01(\bR\bphysical:\a\x82\xb5\x18\x033.0\"S\n" + + "\x12CompactionResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.0\"\x16\n" + + "\vHashRequest:\a\x82\xb5\x18\x033.0\"4\n" + + "\rHashKVRequest\x12\x1a\n" + + "\brevision\x18\x01 \x01(\x03R\brevision:\a\x82\xb5\x18\x033.3\"\xbc\x01\n" + + "\x0eHashKVResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x12\n" + + "\x04hash\x18\x02 \x01(\rR\x04hash\x12)\n" + + "\x10compact_revision\x18\x03 \x01(\x03R\x0fcompactRevision\x12,\n" + + "\rhash_revision\x18\x04 \x01(\x03B\a\x8a\xb5\x18\x033.6R\fhashRevision:\a\x82\xb5\x18\x033.3\"a\n" + + "\fHashResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x12\n" + + "\x04hash\x18\x02 \x01(\rR\x04hash:\a\x82\xb5\x18\x033.0\"\x1a\n" + + "\x0fSnapshotRequest:\a\x82\xb5\x18\x033.3\"\xb1\x01\n" + + "\x10SnapshotResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12'\n" + + "\x0fremaining_bytes\x18\x02 \x01(\x04R\x0eremainingBytes\x12\x12\n" + + "\x04blob\x18\x03 \x01(\fR\x04blob\x12!\n" + + "\aversion\x18\x04 \x01(\tB\a\x8a\xb5\x18\x033.6R\aversion:\a\x82\xb5\x18\x033.3\"\x98\x02\n" + + "\fWatchRequest\x12I\n" + + "\x0ecreate_request\x18\x01 \x01(\v2 .etcdserverpb.WatchCreateRequestH\x00R\rcreateRequest\x12I\n" + + "\x0ecancel_request\x18\x02 \x01(\v2 .etcdserverpb.WatchCancelRequestH\x00R\rcancelRequest\x12X\n" + + "\x10progress_request\x18\x03 \x01(\v2\".etcdserverpb.WatchProgressRequestB\a\x8a\xb5\x18\x033.4H\x00R\x0fprogressRequest:\a\x82\xb5\x18\x033.0B\x0f\n" + + "\rrequest_union\"\x87\x03\n" + + "\x12WatchCreateRequest\x12\x10\n" + + "\x03key\x18\x01 \x01(\fR\x03key\x12\x1b\n" + + "\trange_end\x18\x02 \x01(\fR\brangeEnd\x12%\n" + + "\x0estart_revision\x18\x03 \x01(\x03R\rstartRevision\x12'\n" + + "\x0fprogress_notify\x18\x04 \x01(\bR\x0eprogressNotify\x12N\n" + + "\afilters\x18\x05 \x03(\x0e2+.etcdserverpb.WatchCreateRequest.FilterTypeB\a\x8a\xb5\x18\x033.1R\afilters\x12 \n" + + "\aprev_kv\x18\x06 \x01(\bB\a\x8a\xb5\x18\x033.1R\x06prevKv\x12\"\n" + + "\bwatch_id\x18\a \x01(\x03B\a\x8a\xb5\x18\x033.4R\awatchId\x12#\n" + + "\bfragment\x18\b \x01(\bB\a\x8a\xb5\x18\x033.4R\bfragment\".\n" + + "\n" + + "FilterType\x12\t\n" + + "\x05NOPUT\x10\x00\x12\f\n" + + "\bNODELETE\x10\x01\x1a\a\x92\xb5\x18\x033.1:\a\x82\xb5\x18\x033.0\"A\n" + + "\x12WatchCancelRequest\x12\"\n" + + "\bwatch_id\x18\x01 \x01(\x03B\a\x8a\xb5\x18\x033.1R\awatchId:\a\x82\xb5\x18\x033.1\"\x1f\n" + + "\x14WatchProgressRequest:\a\x82\xb5\x18\x033.4\"\xc4\x02\n" + + "\rWatchResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x19\n" + + "\bwatch_id\x18\x02 \x01(\x03R\awatchId\x12\x18\n" + + "\acreated\x18\x03 \x01(\bR\acreated\x12\x1a\n" + + "\bcanceled\x18\x04 \x01(\bR\bcanceled\x12)\n" + + "\x10compact_revision\x18\x05 \x01(\x03R\x0fcompactRevision\x12,\n" + + "\rcancel_reason\x18\x06 \x01(\tB\a\x8a\xb5\x18\x033.4R\fcancelReason\x12#\n" + + "\bfragment\x18\a \x01(\bB\a\x8a\xb5\x18\x033.4R\bfragment\x12%\n" + + "\x06events\x18\v \x03(\v2\r.mvccpb.EventR\x06events:\a\x82\xb5\x18\x033.0\">\n" + + "\x11LeaseGrantRequest\x12\x10\n" + + "\x03TTL\x18\x01 \x01(\x03R\x03TTL\x12\x0e\n" + + "\x02ID\x18\x02 \x01(\x03R\x02ID:\a\x82\xb5\x18\x033.0\"\x8b\x01\n" + + "\x12LeaseGrantResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x0e\n" + + "\x02ID\x18\x02 \x01(\x03R\x02ID\x12\x10\n" + + "\x03TTL\x18\x03 \x01(\x03R\x03TTL\x12\x14\n" + + "\x05error\x18\x04 \x01(\tR\x05error:\a\x82\xb5\x18\x033.0\"-\n" + + "\x12LeaseRevokeRequest\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x03R\x02ID:\a\x82\xb5\x18\x033.0\"T\n" + + "\x13LeaseRevokeResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.0\"O\n" + + "\x0fLeaseCheckpoint\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x03R\x02ID\x12#\n" + + "\rremaining_TTL\x18\x02 \x01(\x03R\fremainingTTL:\a\x82\xb5\x18\x033.4\"b\n" + + "\x16LeaseCheckpointRequest\x12?\n" + + "\vcheckpoints\x18\x01 \x03(\v2\x1d.etcdserverpb.LeaseCheckpointR\vcheckpoints:\a\x82\xb5\x18\x033.4\"X\n" + + "\x17LeaseCheckpointResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.4\"0\n" + + "\x15LeaseKeepAliveRequest\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x03R\x02ID:\a\x82\xb5\x18\x033.0\"y\n" + + "\x16LeaseKeepAliveResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x0e\n" + + "\x02ID\x18\x02 \x01(\x03R\x02ID\x12\x10\n" + + "\x03TTL\x18\x03 \x01(\x03R\x03TTL:\a\x82\xb5\x18\x033.0\"E\n" + + "\x16LeaseTimeToLiveRequest\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x03R\x02ID\x12\x12\n" + + "\x04keys\x18\x02 \x01(\bR\x04keys:\a\x82\xb5\x18\x033.1\"\xae\x01\n" + + "\x17LeaseTimeToLiveResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x0e\n" + + "\x02ID\x18\x02 \x01(\x03R\x02ID\x12\x10\n" + + "\x03TTL\x18\x03 \x01(\x03R\x03TTL\x12\x1e\n" + + "\n" + + "grantedTTL\x18\x04 \x01(\x03R\n" + + "grantedTTL\x12\x12\n" + + "\x04keys\x18\x05 \x03(\fR\x04keys:\a\x82\xb5\x18\x033.1\"\x1d\n" + + "\x12LeaseLeasesRequest:\a\x82\xb5\x18\x033.3\"&\n" + + "\vLeaseStatus\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x03R\x02ID:\a\x82\xb5\x18\x033.3\"\x87\x01\n" + + "\x13LeaseLeasesResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x121\n" + + "\x06leases\x18\x02 \x03(\v2\x19.etcdserverpb.LeaseStatusR\x06leases:\a\x82\xb5\x18\x033.3\"\x98\x01\n" + + "\x06Member\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x04R\x02ID\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1a\n" + + "\bpeerURLs\x18\x03 \x03(\tR\bpeerURLs\x12\x1e\n" + + "\n" + + "clientURLs\x18\x04 \x03(\tR\n" + + "clientURLs\x12%\n" + + "\tisLearner\x18\x05 \x01(\bB\a\x8a\xb5\x18\x033.4R\tisLearner:\a\x82\xb5\x18\x033.0\"^\n" + + "\x10MemberAddRequest\x12\x1a\n" + + "\bpeerURLs\x18\x01 \x03(\tR\bpeerURLs\x12%\n" + + "\tisLearner\x18\x02 \x01(\bB\a\x8a\xb5\x18\x033.4R\tisLearner:\a\x82\xb5\x18\x033.0\"\xb0\x01\n" + + "\x11MemberAddResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12,\n" + + "\x06member\x18\x02 \x01(\v2\x14.etcdserverpb.MemberR\x06member\x12.\n" + + "\amembers\x18\x03 \x03(\v2\x14.etcdserverpb.MemberR\amembers:\a\x82\xb5\x18\x033.0\".\n" + + "\x13MemberRemoveRequest\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x04R\x02ID:\a\x82\xb5\x18\x033.0\"\x85\x01\n" + + "\x14MemberRemoveResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12.\n" + + "\amembers\x18\x02 \x03(\v2\x14.etcdserverpb.MemberR\amembers:\a\x82\xb5\x18\x033.0\"J\n" + + "\x13MemberUpdateRequest\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x04R\x02ID\x12\x1a\n" + + "\bpeerURLs\x18\x02 \x03(\tR\bpeerURLs:\a\x82\xb5\x18\x033.0\"\x8e\x01\n" + + "\x14MemberUpdateResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x127\n" + + "\amembers\x18\x02 \x03(\v2\x14.etcdserverpb.MemberB\a\x8a\xb5\x18\x033.1R\amembers:\a\x82\xb5\x18\x033.0\"I\n" + + "\x11MemberListRequest\x12+\n" + + "\flinearizable\x18\x01 \x01(\bB\a\x8a\xb5\x18\x033.5R\flinearizable:\a\x82\xb5\x18\x033.0\"\x83\x01\n" + + "\x12MemberListResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12.\n" + + "\amembers\x18\x02 \x03(\v2\x14.etcdserverpb.MemberR\amembers:\a\x82\xb5\x18\x033.0\"/\n" + + "\x14MemberPromoteRequest\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x04R\x02ID:\a\x82\xb5\x18\x033.4\"\x86\x01\n" + + "\x15MemberPromoteResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12.\n" + + "\amembers\x18\x02 \x03(\v2\x14.etcdserverpb.MemberR\amembers:\a\x82\xb5\x18\x033.4\"\x1c\n" + + "\x11DefragmentRequest:\a\x82\xb5\x18\x033.0\"S\n" + + "\x12DefragmentResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.0\"8\n" + + "\x11MoveLeaderRequest\x12\x1a\n" + + "\btargetID\x18\x01 \x01(\x04R\btargetID:\a\x82\xb5\x18\x033.3\"S\n" + + "\x12MoveLeaderResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.3\"\xe1\x01\n" + + "\fAlarmRequest\x12>\n" + + "\x06action\x18\x01 \x01(\x0e2&.etcdserverpb.AlarmRequest.AlarmActionR\x06action\x12\x1a\n" + + "\bmemberID\x18\x02 \x01(\x04R\bmemberID\x12-\n" + + "\x05alarm\x18\x03 \x01(\x0e2\x17.etcdserverpb.AlarmTypeR\x05alarm\"=\n" + + "\vAlarmAction\x12\a\n" + + "\x03GET\x10\x00\x12\f\n" + + "\bACTIVATE\x10\x01\x12\x0e\n" + + "\n" + + "DEACTIVATE\x10\x02\x1a\a\x92\xb5\x18\x033.0:\a\x82\xb5\x18\x033.0\"a\n" + + "\vAlarmMember\x12\x1a\n" + + "\bmemberID\x18\x01 \x01(\x04R\bmemberID\x12-\n" + + "\x05alarm\x18\x02 \x01(\x0e2\x17.etcdserverpb.AlarmTypeR\x05alarm:\a\x82\xb5\x18\x033.0\"\x81\x01\n" + + "\rAlarmResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x121\n" + + "\x06alarms\x18\x02 \x03(\v2\x19.etcdserverpb.AlarmMemberR\x06alarms:\a\x82\xb5\x18\x033.0\"\xbf\x01\n" + + "\x10DowngradeRequest\x12F\n" + + "\x06action\x18\x01 \x01(\x0e2..etcdserverpb.DowngradeRequest.DowngradeActionR\x06action\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\"@\n" + + "\x0fDowngradeAction\x12\f\n" + + "\bVALIDATE\x10\x00\x12\n" + + "\n" + + "\x06ENABLE\x10\x01\x12\n" + + "\n" + + "\x06CANCEL\x10\x02\x1a\a\x92\xb5\x18\x033.5:\a\x82\xb5\x18\x033.5\"l\n" + + "\x11DowngradeResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion:\a\x82\xb5\x18\x033.5\"8\n" + + "\x1bDowngradeVersionTestRequest\x12\x10\n" + + "\x03ver\x18\x01 \x01(\tR\x03ver:\a\x82\xb5\x18\x033.6\"\x18\n" + + "\rStatusRequest:\a\x82\xb5\x18\x033.0\"\xa3\x04\n" + + "\x0eStatusResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12\x16\n" + + "\x06dbSize\x18\x03 \x01(\x03R\x06dbSize\x12\x16\n" + + "\x06leader\x18\x04 \x01(\x04R\x06leader\x12\x1c\n" + + "\traftIndex\x18\x05 \x01(\x04R\traftIndex\x12\x1a\n" + + "\braftTerm\x18\x06 \x01(\x04R\braftTerm\x123\n" + + "\x10raftAppliedIndex\x18\a \x01(\x04B\a\x8a\xb5\x18\x033.4R\x10raftAppliedIndex\x12\x1f\n" + + "\x06errors\x18\b \x03(\tB\a\x8a\xb5\x18\x033.4R\x06errors\x12)\n" + + "\vdbSizeInUse\x18\t \x01(\x03B\a\x8a\xb5\x18\x033.4R\vdbSizeInUse\x12%\n" + + "\tisLearner\x18\n" + + " \x01(\bB\a\x8a\xb5\x18\x033.4R\tisLearner\x12/\n" + + "\x0estorageVersion\x18\v \x01(\tB\a\x8a\xb5\x18\x033.6R\x0estorageVersion\x12)\n" + + "\vdbSizeQuota\x18\f \x01(\x03B\a\x8a\xb5\x18\x033.6R\vdbSizeQuota\x12J\n" + + "\rdowngradeInfo\x18\r \x01(\v2\x1b.etcdserverpb.DowngradeInfoB\a\x8a\xb5\x18\x033.6R\rdowngradeInfo:\a\x82\xb5\x18\x033.0\"O\n" + + "\rDowngradeInfo\x12\x18\n" + + "\aenabled\x18\x01 \x01(\bR\aenabled\x12$\n" + + "\rtargetVersion\x18\x02 \x01(\tR\rtargetVersion\"\x1c\n" + + "\x11AuthEnableRequest:\a\x82\xb5\x18\x033.0\"\x1d\n" + + "\x12AuthDisableRequest:\a\x82\xb5\x18\x033.0\"\x1c\n" + + "\x11AuthStatusRequest:\a\x82\xb5\x18\x033.5\"N\n" + + "\x13AuthenticateRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1a\n" + + "\bpassword\x18\x02 \x01(\tR\bpassword:\a\x82\xb5\x18\x033.0\"\xb9\x01\n" + + "\x12AuthUserAddRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1a\n" + + "\bpassword\x18\x02 \x01(\tR\bpassword\x129\n" + + "\aoptions\x18\x03 \x01(\v2\x16.authpb.UserAddOptionsB\a\x8a\xb5\x18\x033.4R\aoptions\x12/\n" + + "\x0ehashedPassword\x18\x04 \x01(\tB\a\x8a\xb5\x18\x033.5R\x0ehashedPassword:\a\x82\xb5\x18\x033.0\"1\n" + + "\x12AuthUserGetRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name:\a\x82\xb5\x18\x033.0\"4\n" + + "\x15AuthUserDeleteRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name:\a\x82\xb5\x18\x033.0\"\x89\x01\n" + + "\x1dAuthUserChangePasswordRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1a\n" + + "\bpassword\x18\x02 \x01(\tR\bpassword\x12/\n" + + "\x0ehashedPassword\x18\x03 \x01(\tB\a\x8a\xb5\x18\x033.5R\x0ehashedPassword:\a\x82\xb5\x18\x033.0\"K\n" + + "\x18AuthUserGrantRoleRequest\x12\x12\n" + + "\x04user\x18\x01 \x01(\tR\x04user\x12\x12\n" + + "\x04role\x18\x02 \x01(\tR\x04role:\a\x82\xb5\x18\x033.0\"L\n" + + "\x19AuthUserRevokeRoleRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" + + "\x04role\x18\x02 \x01(\tR\x04role:\a\x82\xb5\x18\x033.0\"1\n" + + "\x12AuthRoleAddRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name:\a\x82\xb5\x18\x033.0\"1\n" + + "\x12AuthRoleGetRequest\x12\x12\n" + + "\x04role\x18\x01 \x01(\tR\x04role:\a\x82\xb5\x18\x033.0\"\x1e\n" + + "\x13AuthUserListRequest:\a\x82\xb5\x18\x033.0\"\x1e\n" + + "\x13AuthRoleListRequest:\a\x82\xb5\x18\x033.0\"4\n" + + "\x15AuthRoleDeleteRequest\x12\x12\n" + + "\x04role\x18\x01 \x01(\tR\x04role:\a\x82\xb5\x18\x033.0\"e\n" + + "\x1eAuthRoleGrantPermissionRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12&\n" + + "\x04perm\x18\x02 \x01(\v2\x12.authpb.PermissionR\x04perm:\a\x82\xb5\x18\x033.0\"m\n" + + "\x1fAuthRoleRevokePermissionRequest\x12\x12\n" + + "\x04role\x18\x01 \x01(\tR\x04role\x12\x10\n" + + "\x03key\x18\x02 \x01(\fR\x03key\x12\x1b\n" + + "\trange_end\x18\x03 \x01(\fR\brangeEnd:\a\x82\xb5\x18\x033.0\"S\n" + + "\x12AuthEnableResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.0\"T\n" + + "\x13AuthDisableResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.0\"\x91\x01\n" + + "\x12AuthStatusResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x18\n" + + "\aenabled\x18\x02 \x01(\bR\aenabled\x12\"\n" + + "\fauthRevision\x18\x03 \x01(\x04R\fauthRevision:\a\x82\xb5\x18\x033.5\"k\n" + + "\x14AuthenticateResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x14\n" + + "\x05token\x18\x02 \x01(\tR\x05token:\a\x82\xb5\x18\x033.0\"T\n" + + "\x13AuthUserAddResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.0\"j\n" + + "\x13AuthUserGetResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x14\n" + + "\x05roles\x18\x02 \x03(\tR\x05roles:\a\x82\xb5\x18\x033.0\"W\n" + + "\x16AuthUserDeleteResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.0\"_\n" + + "\x1eAuthUserChangePasswordResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.0\"Z\n" + + "\x19AuthUserGrantRoleResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.0\"[\n" + + "\x1aAuthUserRevokeRoleResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.0\"T\n" + + "\x13AuthRoleAddResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.0\"\x85\x01\n" + + "\x13AuthRoleGetResponse\x12=\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderB\a\x8a\xb5\x18\x033.0R\x06header\x12/\n" + + "\x04perm\x18\x02 \x03(\v2\x12.authpb.PermissionB\a\x8a\xb5\x18\x033.0R\x04perm\"k\n" + + "\x14AuthRoleListResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x14\n" + + "\x05roles\x18\x02 \x03(\tR\x05roles:\a\x82\xb5\x18\x033.0\"k\n" + + "\x14AuthUserListResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x14\n" + + "\x05users\x18\x02 \x03(\tR\x05users:\a\x82\xb5\x18\x033.0\"W\n" + + "\x16AuthRoleDeleteResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.0\"`\n" + + "\x1fAuthRoleGrantPermissionResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.0\"a\n" + + " AuthRoleRevokePermissionResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header:\a\x82\xb5\x18\x033.0\"b\n" + + "\x13RangeStreamResponse\x12B\n" + + "\x0erange_response\x18\x01 \x01(\v2\x1b.etcdserverpb.RangeResponseR\rrangeResponse:\a\x82\xb5\x18\x033.7*A\n" + + "\tAlarmType\x12\b\n" + + "\x04NONE\x10\x00\x12\v\n" + + "\aNOSPACE\x10\x01\x12\x14\n" + + "\aCORRUPT\x10\x02\x1a\a\x9a\xb5\x18\x033.3\x1a\a\x92\xb5\x18\x033.02\xb6\x04\n" + + "\x02KV\x12Y\n" + + "\x05Range\x12\x1a.etcdserverpb.RangeRequest\x1a\x1b.etcdserverpb.RangeResponse\"\x17\x82\xd3\xe4\x93\x02\x11:\x01*\"\f/v3/kv/range\x12P\n" + + "\vRangeStream\x12\x1a.etcdserverpb.RangeRequest\x1a!.etcdserverpb.RangeStreamResponse\"\x000\x01\x12Q\n" + + "\x03Put\x12\x18.etcdserverpb.PutRequest\x1a\x19.etcdserverpb.PutResponse\"\x15\x82\xd3\xe4\x93\x02\x0f:\x01*\"\n" + + "/v3/kv/put\x12q\n" + + "\vDeleteRange\x12 .etcdserverpb.DeleteRangeRequest\x1a!.etcdserverpb.DeleteRangeResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/v3/kv/deleterange\x12Q\n" + + "\x03Txn\x12\x18.etcdserverpb.TxnRequest\x1a\x19.etcdserverpb.TxnResponse\"\x15\x82\xd3\xe4\x93\x02\x0f:\x01*\"\n" + + "/v3/kv/txn\x12j\n" + + "\aCompact\x12\x1f.etcdserverpb.CompactionRequest\x1a .etcdserverpb.CompactionResponse\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/v3/kv/compaction2c\n" + + "\x05Watch\x12Z\n" + + "\x05Watch\x12\x1a.etcdserverpb.WatchRequest\x1a\x1b.etcdserverpb.WatchResponse\"\x14\x82\xd3\xe4\x93\x02\x0e:\x01*\"\t/v3/watch(\x010\x012\xad\x05\n" + + "\x05Lease\x12k\n" + + "\n" + + "LeaseGrant\x12\x1f.etcdserverpb.LeaseGrantRequest\x1a .etcdserverpb.LeaseGrantResponse\"\x1a\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/v3/lease/grant\x12\x89\x01\n" + + "\vLeaseRevoke\x12 .etcdserverpb.LeaseRevokeRequest\x1a!.etcdserverpb.LeaseRevokeResponse\"5\x82\xd3\xe4\x93\x02/:\x01*Z\x18:\x01*\"\x13/v3/kv/lease/revoke\"\x10/v3/lease/revoke\x12\x7f\n" + + "\x0eLeaseKeepAlive\x12#.etcdserverpb.LeaseKeepAliveRequest\x1a$.etcdserverpb.LeaseKeepAliveResponse\"\x1e\x82\xd3\xe4\x93\x02\x18:\x01*\"\x13/v3/lease/keepalive(\x010\x01\x12\x9d\x01\n" + + "\x0fLeaseTimeToLive\x12$.etcdserverpb.LeaseTimeToLiveRequest\x1a%.etcdserverpb.LeaseTimeToLiveResponse\"=\x82\xd3\xe4\x93\x027:\x01*Z\x1c:\x01*\"\x17/v3/kv/lease/timetolive\"\x14/v3/lease/timetolive\x12\x89\x01\n" + + "\vLeaseLeases\x12 .etcdserverpb.LeaseLeasesRequest\x1a!.etcdserverpb.LeaseLeasesResponse\"5\x82\xd3\xe4\x93\x02/:\x01*Z\x18:\x01*\"\x13/v3/kv/lease/leases\"\x10/v3/lease/leases2\xea\x04\n" + + "\aCluster\x12o\n" + + "\tMemberAdd\x12\x1e.etcdserverpb.MemberAddRequest\x1a\x1f.etcdserverpb.MemberAddResponse\"!\x82\xd3\xe4\x93\x02\x1b:\x01*\"\x16/v3/cluster/member/add\x12{\n" + + "\fMemberRemove\x12!.etcdserverpb.MemberRemoveRequest\x1a\".etcdserverpb.MemberRemoveResponse\"$\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/v3/cluster/member/remove\x12{\n" + + "\fMemberUpdate\x12!.etcdserverpb.MemberUpdateRequest\x1a\".etcdserverpb.MemberUpdateResponse\"$\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/v3/cluster/member/update\x12s\n" + + "\n" + + "MemberList\x12\x1f.etcdserverpb.MemberListRequest\x1a .etcdserverpb.MemberListResponse\"\"\x82\xd3\xe4\x93\x02\x1c:\x01*\"\x17/v3/cluster/member/list\x12\x7f\n" + + "\rMemberPromote\x12\".etcdserverpb.MemberPromoteRequest\x1a#.etcdserverpb.MemberPromoteResponse\"%\x82\xd3\xe4\x93\x02\x1f:\x01*\"\x1a/v3/cluster/member/promote2\x80\a\n" + + "\vMaintenance\x12b\n" + + "\x05Alarm\x12\x1a.etcdserverpb.AlarmRequest\x1a\x1b.etcdserverpb.AlarmResponse\" \x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/v3/maintenance/alarm\x12f\n" + + "\x06Status\x12\x1b.etcdserverpb.StatusRequest\x1a\x1c.etcdserverpb.StatusResponse\"!\x82\xd3\xe4\x93\x02\x1b:\x01*\"\x16/v3/maintenance/status\x12v\n" + + "\n" + + "Defragment\x12\x1f.etcdserverpb.DefragmentRequest\x1a .etcdserverpb.DefragmentResponse\"%\x82\xd3\xe4\x93\x02\x1f:\x01*\"\x1a/v3/maintenance/defragment\x12^\n" + + "\x04Hash\x12\x19.etcdserverpb.HashRequest\x1a\x1a.etcdserverpb.HashResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/v3/maintenance/hash\x12f\n" + + "\x06HashKV\x12\x1b.etcdserverpb.HashKVRequest\x1a\x1c.etcdserverpb.HashKVResponse\"!\x82\xd3\xe4\x93\x02\x1b:\x01*\"\x16/v3/maintenance/hashkv\x12p\n" + + "\bSnapshot\x12\x1d.etcdserverpb.SnapshotRequest\x1a\x1e.etcdserverpb.SnapshotResponse\"#\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/v3/maintenance/snapshot0\x01\x12\x7f\n" + + "\n" + + "MoveLeader\x12\x1f.etcdserverpb.MoveLeaderRequest\x1a .etcdserverpb.MoveLeaderResponse\".\x82\xd3\xe4\x93\x02(:\x01*\"#/v3/maintenance/transfer-leadership\x12r\n" + + "\tDowngrade\x12\x1e.etcdserverpb.DowngradeRequest\x1a\x1f.etcdserverpb.DowngradeResponse\"$\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/v3/maintenance/downgrade2\xa7\x10\n" + + "\x04Auth\x12k\n" + + "\n" + + "AuthEnable\x12\x1f.etcdserverpb.AuthEnableRequest\x1a .etcdserverpb.AuthEnableResponse\"\x1a\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/v3/auth/enable\x12o\n" + + "\vAuthDisable\x12 .etcdserverpb.AuthDisableRequest\x1a!.etcdserverpb.AuthDisableResponse\"\x1b\x82\xd3\xe4\x93\x02\x15:\x01*\"\x10/v3/auth/disable\x12k\n" + + "\n" + + "AuthStatus\x12\x1f.etcdserverpb.AuthStatusRequest\x1a .etcdserverpb.AuthStatusResponse\"\x1a\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/v3/auth/status\x12w\n" + + "\fAuthenticate\x12!.etcdserverpb.AuthenticateRequest\x1a\".etcdserverpb.AuthenticateResponse\" \x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/v3/auth/authenticate\x12l\n" + + "\aUserAdd\x12 .etcdserverpb.AuthUserAddRequest\x1a!.etcdserverpb.AuthUserAddResponse\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/v3/auth/user/add\x12l\n" + + "\aUserGet\x12 .etcdserverpb.AuthUserGetRequest\x1a!.etcdserverpb.AuthUserGetResponse\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/v3/auth/user/get\x12p\n" + + "\bUserList\x12!.etcdserverpb.AuthUserListRequest\x1a\".etcdserverpb.AuthUserListResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/v3/auth/user/list\x12x\n" + + "\n" + + "UserDelete\x12#.etcdserverpb.AuthUserDeleteRequest\x1a$.etcdserverpb.AuthUserDeleteResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/v3/auth/user/delete\x12\x92\x01\n" + + "\x12UserChangePassword\x12+.etcdserverpb.AuthUserChangePasswordRequest\x1a,.etcdserverpb.AuthUserChangePasswordResponse\"!\x82\xd3\xe4\x93\x02\x1b:\x01*\"\x16/v3/auth/user/changepw\x12\x80\x01\n" + + "\rUserGrantRole\x12&.etcdserverpb.AuthUserGrantRoleRequest\x1a'.etcdserverpb.AuthUserGrantRoleResponse\"\x1e\x82\xd3\xe4\x93\x02\x18:\x01*\"\x13/v3/auth/user/grant\x12\x84\x01\n" + + "\x0eUserRevokeRole\x12'.etcdserverpb.AuthUserRevokeRoleRequest\x1a(.etcdserverpb.AuthUserRevokeRoleResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/v3/auth/user/revoke\x12l\n" + + "\aRoleAdd\x12 .etcdserverpb.AuthRoleAddRequest\x1a!.etcdserverpb.AuthRoleAddResponse\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/v3/auth/role/add\x12l\n" + + "\aRoleGet\x12 .etcdserverpb.AuthRoleGetRequest\x1a!.etcdserverpb.AuthRoleGetResponse\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/v3/auth/role/get\x12p\n" + + "\bRoleList\x12!.etcdserverpb.AuthRoleListRequest\x1a\".etcdserverpb.AuthRoleListResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/v3/auth/role/list\x12x\n" + + "\n" + + "RoleDelete\x12#.etcdserverpb.AuthRoleDeleteRequest\x1a$.etcdserverpb.AuthRoleDeleteResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/v3/auth/role/delete\x12\x92\x01\n" + + "\x13RoleGrantPermission\x12,.etcdserverpb.AuthRoleGrantPermissionRequest\x1a-.etcdserverpb.AuthRoleGrantPermissionResponse\"\x1e\x82\xd3\xe4\x93\x02\x18:\x01*\"\x13/v3/auth/role/grant\x12\x96\x01\n" + + "\x14RoleRevokePermission\x12-.etcdserverpb.AuthRoleRevokePermissionRequest\x1a..etcdserverpb.AuthRoleRevokePermissionResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/v3/auth/role/revokeBW\x92A/Z\x1f\n" + + "\x1d\n" + + "\x06ApiKey\x12\x13\b\x02\x1a\rAuthorization \x02b\f\n" + + "\n" + + "\n" + + "\x06ApiKey\x12\x00Z#go.etcd.io/etcd/api/v3/etcdserverpbb\x06proto3" -func (m *LeaseRevokeRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +var ( + file_rpc_proto_rawDescOnce sync.Once + file_rpc_proto_rawDescData []byte +) -func (m *LeaseRevokeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.ID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x8 +func file_rpc_proto_rawDescGZIP() []byte { + file_rpc_proto_rawDescOnce.Do(func() { + file_rpc_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_rpc_proto_rawDesc), len(file_rpc_proto_rawDesc))) + }) + return file_rpc_proto_rawDescData +} + +var file_rpc_proto_enumTypes = make([]protoimpl.EnumInfo, 8) +var file_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 98) +var file_rpc_proto_goTypes = []any{ + (AlarmType)(0), // 0: etcdserverpb.AlarmType + (RangeRequest_SortOrder)(0), // 1: etcdserverpb.RangeRequest.SortOrder + (RangeRequest_SortTarget)(0), // 2: etcdserverpb.RangeRequest.SortTarget + (Compare_CompareResult)(0), // 3: etcdserverpb.Compare.CompareResult + (Compare_CompareTarget)(0), // 4: etcdserverpb.Compare.CompareTarget + (WatchCreateRequest_FilterType)(0), // 5: etcdserverpb.WatchCreateRequest.FilterType + (AlarmRequest_AlarmAction)(0), // 6: etcdserverpb.AlarmRequest.AlarmAction + (DowngradeRequest_DowngradeAction)(0), // 7: etcdserverpb.DowngradeRequest.DowngradeAction + (*ResponseHeader)(nil), // 8: etcdserverpb.ResponseHeader + (*RangeRequest)(nil), // 9: etcdserverpb.RangeRequest + (*RangeResponse)(nil), // 10: etcdserverpb.RangeResponse + (*PutRequest)(nil), // 11: etcdserverpb.PutRequest + (*PutResponse)(nil), // 12: etcdserverpb.PutResponse + (*DeleteRangeRequest)(nil), // 13: etcdserverpb.DeleteRangeRequest + (*DeleteRangeResponse)(nil), // 14: etcdserverpb.DeleteRangeResponse + (*RequestOp)(nil), // 15: etcdserverpb.RequestOp + (*ResponseOp)(nil), // 16: etcdserverpb.ResponseOp + (*Compare)(nil), // 17: etcdserverpb.Compare + (*TxnRequest)(nil), // 18: etcdserverpb.TxnRequest + (*TxnResponse)(nil), // 19: etcdserverpb.TxnResponse + (*CompactionRequest)(nil), // 20: etcdserverpb.CompactionRequest + (*CompactionResponse)(nil), // 21: etcdserverpb.CompactionResponse + (*HashRequest)(nil), // 22: etcdserverpb.HashRequest + (*HashKVRequest)(nil), // 23: etcdserverpb.HashKVRequest + (*HashKVResponse)(nil), // 24: etcdserverpb.HashKVResponse + (*HashResponse)(nil), // 25: etcdserverpb.HashResponse + (*SnapshotRequest)(nil), // 26: etcdserverpb.SnapshotRequest + (*SnapshotResponse)(nil), // 27: etcdserverpb.SnapshotResponse + (*WatchRequest)(nil), // 28: etcdserverpb.WatchRequest + (*WatchCreateRequest)(nil), // 29: etcdserverpb.WatchCreateRequest + (*WatchCancelRequest)(nil), // 30: etcdserverpb.WatchCancelRequest + (*WatchProgressRequest)(nil), // 31: etcdserverpb.WatchProgressRequest + (*WatchResponse)(nil), // 32: etcdserverpb.WatchResponse + (*LeaseGrantRequest)(nil), // 33: etcdserverpb.LeaseGrantRequest + (*LeaseGrantResponse)(nil), // 34: etcdserverpb.LeaseGrantResponse + (*LeaseRevokeRequest)(nil), // 35: etcdserverpb.LeaseRevokeRequest + (*LeaseRevokeResponse)(nil), // 36: etcdserverpb.LeaseRevokeResponse + (*LeaseCheckpoint)(nil), // 37: etcdserverpb.LeaseCheckpoint + (*LeaseCheckpointRequest)(nil), // 38: etcdserverpb.LeaseCheckpointRequest + (*LeaseCheckpointResponse)(nil), // 39: etcdserverpb.LeaseCheckpointResponse + (*LeaseKeepAliveRequest)(nil), // 40: etcdserverpb.LeaseKeepAliveRequest + (*LeaseKeepAliveResponse)(nil), // 41: etcdserverpb.LeaseKeepAliveResponse + (*LeaseTimeToLiveRequest)(nil), // 42: etcdserverpb.LeaseTimeToLiveRequest + (*LeaseTimeToLiveResponse)(nil), // 43: etcdserverpb.LeaseTimeToLiveResponse + (*LeaseLeasesRequest)(nil), // 44: etcdserverpb.LeaseLeasesRequest + (*LeaseStatus)(nil), // 45: etcdserverpb.LeaseStatus + (*LeaseLeasesResponse)(nil), // 46: etcdserverpb.LeaseLeasesResponse + (*Member)(nil), // 47: etcdserverpb.Member + (*MemberAddRequest)(nil), // 48: etcdserverpb.MemberAddRequest + (*MemberAddResponse)(nil), // 49: etcdserverpb.MemberAddResponse + (*MemberRemoveRequest)(nil), // 50: etcdserverpb.MemberRemoveRequest + (*MemberRemoveResponse)(nil), // 51: etcdserverpb.MemberRemoveResponse + (*MemberUpdateRequest)(nil), // 52: etcdserverpb.MemberUpdateRequest + (*MemberUpdateResponse)(nil), // 53: etcdserverpb.MemberUpdateResponse + (*MemberListRequest)(nil), // 54: etcdserverpb.MemberListRequest + (*MemberListResponse)(nil), // 55: etcdserverpb.MemberListResponse + (*MemberPromoteRequest)(nil), // 56: etcdserverpb.MemberPromoteRequest + (*MemberPromoteResponse)(nil), // 57: etcdserverpb.MemberPromoteResponse + (*DefragmentRequest)(nil), // 58: etcdserverpb.DefragmentRequest + (*DefragmentResponse)(nil), // 59: etcdserverpb.DefragmentResponse + (*MoveLeaderRequest)(nil), // 60: etcdserverpb.MoveLeaderRequest + (*MoveLeaderResponse)(nil), // 61: etcdserverpb.MoveLeaderResponse + (*AlarmRequest)(nil), // 62: etcdserverpb.AlarmRequest + (*AlarmMember)(nil), // 63: etcdserverpb.AlarmMember + (*AlarmResponse)(nil), // 64: etcdserverpb.AlarmResponse + (*DowngradeRequest)(nil), // 65: etcdserverpb.DowngradeRequest + (*DowngradeResponse)(nil), // 66: etcdserverpb.DowngradeResponse + (*DowngradeVersionTestRequest)(nil), // 67: etcdserverpb.DowngradeVersionTestRequest + (*StatusRequest)(nil), // 68: etcdserverpb.StatusRequest + (*StatusResponse)(nil), // 69: etcdserverpb.StatusResponse + (*DowngradeInfo)(nil), // 70: etcdserverpb.DowngradeInfo + (*AuthEnableRequest)(nil), // 71: etcdserverpb.AuthEnableRequest + (*AuthDisableRequest)(nil), // 72: etcdserverpb.AuthDisableRequest + (*AuthStatusRequest)(nil), // 73: etcdserverpb.AuthStatusRequest + (*AuthenticateRequest)(nil), // 74: etcdserverpb.AuthenticateRequest + (*AuthUserAddRequest)(nil), // 75: etcdserverpb.AuthUserAddRequest + (*AuthUserGetRequest)(nil), // 76: etcdserverpb.AuthUserGetRequest + (*AuthUserDeleteRequest)(nil), // 77: etcdserverpb.AuthUserDeleteRequest + (*AuthUserChangePasswordRequest)(nil), // 78: etcdserverpb.AuthUserChangePasswordRequest + (*AuthUserGrantRoleRequest)(nil), // 79: etcdserverpb.AuthUserGrantRoleRequest + (*AuthUserRevokeRoleRequest)(nil), // 80: etcdserverpb.AuthUserRevokeRoleRequest + (*AuthRoleAddRequest)(nil), // 81: etcdserverpb.AuthRoleAddRequest + (*AuthRoleGetRequest)(nil), // 82: etcdserverpb.AuthRoleGetRequest + (*AuthUserListRequest)(nil), // 83: etcdserverpb.AuthUserListRequest + (*AuthRoleListRequest)(nil), // 84: etcdserverpb.AuthRoleListRequest + (*AuthRoleDeleteRequest)(nil), // 85: etcdserverpb.AuthRoleDeleteRequest + (*AuthRoleGrantPermissionRequest)(nil), // 86: etcdserverpb.AuthRoleGrantPermissionRequest + (*AuthRoleRevokePermissionRequest)(nil), // 87: etcdserverpb.AuthRoleRevokePermissionRequest + (*AuthEnableResponse)(nil), // 88: etcdserverpb.AuthEnableResponse + (*AuthDisableResponse)(nil), // 89: etcdserverpb.AuthDisableResponse + (*AuthStatusResponse)(nil), // 90: etcdserverpb.AuthStatusResponse + (*AuthenticateResponse)(nil), // 91: etcdserverpb.AuthenticateResponse + (*AuthUserAddResponse)(nil), // 92: etcdserverpb.AuthUserAddResponse + (*AuthUserGetResponse)(nil), // 93: etcdserverpb.AuthUserGetResponse + (*AuthUserDeleteResponse)(nil), // 94: etcdserverpb.AuthUserDeleteResponse + (*AuthUserChangePasswordResponse)(nil), // 95: etcdserverpb.AuthUserChangePasswordResponse + (*AuthUserGrantRoleResponse)(nil), // 96: etcdserverpb.AuthUserGrantRoleResponse + (*AuthUserRevokeRoleResponse)(nil), // 97: etcdserverpb.AuthUserRevokeRoleResponse + (*AuthRoleAddResponse)(nil), // 98: etcdserverpb.AuthRoleAddResponse + (*AuthRoleGetResponse)(nil), // 99: etcdserverpb.AuthRoleGetResponse + (*AuthRoleListResponse)(nil), // 100: etcdserverpb.AuthRoleListResponse + (*AuthUserListResponse)(nil), // 101: etcdserverpb.AuthUserListResponse + (*AuthRoleDeleteResponse)(nil), // 102: etcdserverpb.AuthRoleDeleteResponse + (*AuthRoleGrantPermissionResponse)(nil), // 103: etcdserverpb.AuthRoleGrantPermissionResponse + (*AuthRoleRevokePermissionResponse)(nil), // 104: etcdserverpb.AuthRoleRevokePermissionResponse + (*RangeStreamResponse)(nil), // 105: etcdserverpb.RangeStreamResponse + (*mvccpb.KeyValue)(nil), // 106: mvccpb.KeyValue + (*mvccpb.Event)(nil), // 107: mvccpb.Event + (*authpb.UserAddOptions)(nil), // 108: authpb.UserAddOptions + (*authpb.Permission)(nil), // 109: authpb.Permission +} +var file_rpc_proto_depIdxs = []int32{ + 1, // 0: etcdserverpb.RangeRequest.sort_order:type_name -> etcdserverpb.RangeRequest.SortOrder + 2, // 1: etcdserverpb.RangeRequest.sort_target:type_name -> etcdserverpb.RangeRequest.SortTarget + 8, // 2: etcdserverpb.RangeResponse.header:type_name -> etcdserverpb.ResponseHeader + 106, // 3: etcdserverpb.RangeResponse.kvs:type_name -> mvccpb.KeyValue + 8, // 4: etcdserverpb.PutResponse.header:type_name -> etcdserverpb.ResponseHeader + 106, // 5: etcdserverpb.PutResponse.prev_kv:type_name -> mvccpb.KeyValue + 8, // 6: etcdserverpb.DeleteRangeResponse.header:type_name -> etcdserverpb.ResponseHeader + 106, // 7: etcdserverpb.DeleteRangeResponse.prev_kvs:type_name -> mvccpb.KeyValue + 9, // 8: etcdserverpb.RequestOp.request_range:type_name -> etcdserverpb.RangeRequest + 11, // 9: etcdserverpb.RequestOp.request_put:type_name -> etcdserverpb.PutRequest + 13, // 10: etcdserverpb.RequestOp.request_delete_range:type_name -> etcdserverpb.DeleteRangeRequest + 18, // 11: etcdserverpb.RequestOp.request_txn:type_name -> etcdserverpb.TxnRequest + 10, // 12: etcdserverpb.ResponseOp.response_range:type_name -> etcdserverpb.RangeResponse + 12, // 13: etcdserverpb.ResponseOp.response_put:type_name -> etcdserverpb.PutResponse + 14, // 14: etcdserverpb.ResponseOp.response_delete_range:type_name -> etcdserverpb.DeleteRangeResponse + 19, // 15: etcdserverpb.ResponseOp.response_txn:type_name -> etcdserverpb.TxnResponse + 3, // 16: etcdserverpb.Compare.result:type_name -> etcdserverpb.Compare.CompareResult + 4, // 17: etcdserverpb.Compare.target:type_name -> etcdserverpb.Compare.CompareTarget + 17, // 18: etcdserverpb.TxnRequest.compare:type_name -> etcdserverpb.Compare + 15, // 19: etcdserverpb.TxnRequest.success:type_name -> etcdserverpb.RequestOp + 15, // 20: etcdserverpb.TxnRequest.failure:type_name -> etcdserverpb.RequestOp + 8, // 21: etcdserverpb.TxnResponse.header:type_name -> etcdserverpb.ResponseHeader + 16, // 22: etcdserverpb.TxnResponse.responses:type_name -> etcdserverpb.ResponseOp + 8, // 23: etcdserverpb.CompactionResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 24: etcdserverpb.HashKVResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 25: etcdserverpb.HashResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 26: etcdserverpb.SnapshotResponse.header:type_name -> etcdserverpb.ResponseHeader + 29, // 27: etcdserverpb.WatchRequest.create_request:type_name -> etcdserverpb.WatchCreateRequest + 30, // 28: etcdserverpb.WatchRequest.cancel_request:type_name -> etcdserverpb.WatchCancelRequest + 31, // 29: etcdserverpb.WatchRequest.progress_request:type_name -> etcdserverpb.WatchProgressRequest + 5, // 30: etcdserverpb.WatchCreateRequest.filters:type_name -> etcdserverpb.WatchCreateRequest.FilterType + 8, // 31: etcdserverpb.WatchResponse.header:type_name -> etcdserverpb.ResponseHeader + 107, // 32: etcdserverpb.WatchResponse.events:type_name -> mvccpb.Event + 8, // 33: etcdserverpb.LeaseGrantResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 34: etcdserverpb.LeaseRevokeResponse.header:type_name -> etcdserverpb.ResponseHeader + 37, // 35: etcdserverpb.LeaseCheckpointRequest.checkpoints:type_name -> etcdserverpb.LeaseCheckpoint + 8, // 36: etcdserverpb.LeaseCheckpointResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 37: etcdserverpb.LeaseKeepAliveResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 38: etcdserverpb.LeaseTimeToLiveResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 39: etcdserverpb.LeaseLeasesResponse.header:type_name -> etcdserverpb.ResponseHeader + 45, // 40: etcdserverpb.LeaseLeasesResponse.leases:type_name -> etcdserverpb.LeaseStatus + 8, // 41: etcdserverpb.MemberAddResponse.header:type_name -> etcdserverpb.ResponseHeader + 47, // 42: etcdserverpb.MemberAddResponse.member:type_name -> etcdserverpb.Member + 47, // 43: etcdserverpb.MemberAddResponse.members:type_name -> etcdserverpb.Member + 8, // 44: etcdserverpb.MemberRemoveResponse.header:type_name -> etcdserverpb.ResponseHeader + 47, // 45: etcdserverpb.MemberRemoveResponse.members:type_name -> etcdserverpb.Member + 8, // 46: etcdserverpb.MemberUpdateResponse.header:type_name -> etcdserverpb.ResponseHeader + 47, // 47: etcdserverpb.MemberUpdateResponse.members:type_name -> etcdserverpb.Member + 8, // 48: etcdserverpb.MemberListResponse.header:type_name -> etcdserverpb.ResponseHeader + 47, // 49: etcdserverpb.MemberListResponse.members:type_name -> etcdserverpb.Member + 8, // 50: etcdserverpb.MemberPromoteResponse.header:type_name -> etcdserverpb.ResponseHeader + 47, // 51: etcdserverpb.MemberPromoteResponse.members:type_name -> etcdserverpb.Member + 8, // 52: etcdserverpb.DefragmentResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 53: etcdserverpb.MoveLeaderResponse.header:type_name -> etcdserverpb.ResponseHeader + 6, // 54: etcdserverpb.AlarmRequest.action:type_name -> etcdserverpb.AlarmRequest.AlarmAction + 0, // 55: etcdserverpb.AlarmRequest.alarm:type_name -> etcdserverpb.AlarmType + 0, // 56: etcdserverpb.AlarmMember.alarm:type_name -> etcdserverpb.AlarmType + 8, // 57: etcdserverpb.AlarmResponse.header:type_name -> etcdserverpb.ResponseHeader + 63, // 58: etcdserverpb.AlarmResponse.alarms:type_name -> etcdserverpb.AlarmMember + 7, // 59: etcdserverpb.DowngradeRequest.action:type_name -> etcdserverpb.DowngradeRequest.DowngradeAction + 8, // 60: etcdserverpb.DowngradeResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 61: etcdserverpb.StatusResponse.header:type_name -> etcdserverpb.ResponseHeader + 70, // 62: etcdserverpb.StatusResponse.downgradeInfo:type_name -> etcdserverpb.DowngradeInfo + 108, // 63: etcdserverpb.AuthUserAddRequest.options:type_name -> authpb.UserAddOptions + 109, // 64: etcdserverpb.AuthRoleGrantPermissionRequest.perm:type_name -> authpb.Permission + 8, // 65: etcdserverpb.AuthEnableResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 66: etcdserverpb.AuthDisableResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 67: etcdserverpb.AuthStatusResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 68: etcdserverpb.AuthenticateResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 69: etcdserverpb.AuthUserAddResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 70: etcdserverpb.AuthUserGetResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 71: etcdserverpb.AuthUserDeleteResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 72: etcdserverpb.AuthUserChangePasswordResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 73: etcdserverpb.AuthUserGrantRoleResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 74: etcdserverpb.AuthUserRevokeRoleResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 75: etcdserverpb.AuthRoleAddResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 76: etcdserverpb.AuthRoleGetResponse.header:type_name -> etcdserverpb.ResponseHeader + 109, // 77: etcdserverpb.AuthRoleGetResponse.perm:type_name -> authpb.Permission + 8, // 78: etcdserverpb.AuthRoleListResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 79: etcdserverpb.AuthUserListResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 80: etcdserverpb.AuthRoleDeleteResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 81: etcdserverpb.AuthRoleGrantPermissionResponse.header:type_name -> etcdserverpb.ResponseHeader + 8, // 82: etcdserverpb.AuthRoleRevokePermissionResponse.header:type_name -> etcdserverpb.ResponseHeader + 10, // 83: etcdserverpb.RangeStreamResponse.range_response:type_name -> etcdserverpb.RangeResponse + 9, // 84: etcdserverpb.KV.Range:input_type -> etcdserverpb.RangeRequest + 9, // 85: etcdserverpb.KV.RangeStream:input_type -> etcdserverpb.RangeRequest + 11, // 86: etcdserverpb.KV.Put:input_type -> etcdserverpb.PutRequest + 13, // 87: etcdserverpb.KV.DeleteRange:input_type -> etcdserverpb.DeleteRangeRequest + 18, // 88: etcdserverpb.KV.Txn:input_type -> etcdserverpb.TxnRequest + 20, // 89: etcdserverpb.KV.Compact:input_type -> etcdserverpb.CompactionRequest + 28, // 90: etcdserverpb.Watch.Watch:input_type -> etcdserverpb.WatchRequest + 33, // 91: etcdserverpb.Lease.LeaseGrant:input_type -> etcdserverpb.LeaseGrantRequest + 35, // 92: etcdserverpb.Lease.LeaseRevoke:input_type -> etcdserverpb.LeaseRevokeRequest + 40, // 93: etcdserverpb.Lease.LeaseKeepAlive:input_type -> etcdserverpb.LeaseKeepAliveRequest + 42, // 94: etcdserverpb.Lease.LeaseTimeToLive:input_type -> etcdserverpb.LeaseTimeToLiveRequest + 44, // 95: etcdserverpb.Lease.LeaseLeases:input_type -> etcdserverpb.LeaseLeasesRequest + 48, // 96: etcdserverpb.Cluster.MemberAdd:input_type -> etcdserverpb.MemberAddRequest + 50, // 97: etcdserverpb.Cluster.MemberRemove:input_type -> etcdserverpb.MemberRemoveRequest + 52, // 98: etcdserverpb.Cluster.MemberUpdate:input_type -> etcdserverpb.MemberUpdateRequest + 54, // 99: etcdserverpb.Cluster.MemberList:input_type -> etcdserverpb.MemberListRequest + 56, // 100: etcdserverpb.Cluster.MemberPromote:input_type -> etcdserverpb.MemberPromoteRequest + 62, // 101: etcdserverpb.Maintenance.Alarm:input_type -> etcdserverpb.AlarmRequest + 68, // 102: etcdserverpb.Maintenance.Status:input_type -> etcdserverpb.StatusRequest + 58, // 103: etcdserverpb.Maintenance.Defragment:input_type -> etcdserverpb.DefragmentRequest + 22, // 104: etcdserverpb.Maintenance.Hash:input_type -> etcdserverpb.HashRequest + 23, // 105: etcdserverpb.Maintenance.HashKV:input_type -> etcdserverpb.HashKVRequest + 26, // 106: etcdserverpb.Maintenance.Snapshot:input_type -> etcdserverpb.SnapshotRequest + 60, // 107: etcdserverpb.Maintenance.MoveLeader:input_type -> etcdserverpb.MoveLeaderRequest + 65, // 108: etcdserverpb.Maintenance.Downgrade:input_type -> etcdserverpb.DowngradeRequest + 71, // 109: etcdserverpb.Auth.AuthEnable:input_type -> etcdserverpb.AuthEnableRequest + 72, // 110: etcdserverpb.Auth.AuthDisable:input_type -> etcdserverpb.AuthDisableRequest + 73, // 111: etcdserverpb.Auth.AuthStatus:input_type -> etcdserverpb.AuthStatusRequest + 74, // 112: etcdserverpb.Auth.Authenticate:input_type -> etcdserverpb.AuthenticateRequest + 75, // 113: etcdserverpb.Auth.UserAdd:input_type -> etcdserverpb.AuthUserAddRequest + 76, // 114: etcdserverpb.Auth.UserGet:input_type -> etcdserverpb.AuthUserGetRequest + 83, // 115: etcdserverpb.Auth.UserList:input_type -> etcdserverpb.AuthUserListRequest + 77, // 116: etcdserverpb.Auth.UserDelete:input_type -> etcdserverpb.AuthUserDeleteRequest + 78, // 117: etcdserverpb.Auth.UserChangePassword:input_type -> etcdserverpb.AuthUserChangePasswordRequest + 79, // 118: etcdserverpb.Auth.UserGrantRole:input_type -> etcdserverpb.AuthUserGrantRoleRequest + 80, // 119: etcdserverpb.Auth.UserRevokeRole:input_type -> etcdserverpb.AuthUserRevokeRoleRequest + 81, // 120: etcdserverpb.Auth.RoleAdd:input_type -> etcdserverpb.AuthRoleAddRequest + 82, // 121: etcdserverpb.Auth.RoleGet:input_type -> etcdserverpb.AuthRoleGetRequest + 84, // 122: etcdserverpb.Auth.RoleList:input_type -> etcdserverpb.AuthRoleListRequest + 85, // 123: etcdserverpb.Auth.RoleDelete:input_type -> etcdserverpb.AuthRoleDeleteRequest + 86, // 124: etcdserverpb.Auth.RoleGrantPermission:input_type -> etcdserverpb.AuthRoleGrantPermissionRequest + 87, // 125: etcdserverpb.Auth.RoleRevokePermission:input_type -> etcdserverpb.AuthRoleRevokePermissionRequest + 10, // 126: etcdserverpb.KV.Range:output_type -> etcdserverpb.RangeResponse + 105, // 127: etcdserverpb.KV.RangeStream:output_type -> etcdserverpb.RangeStreamResponse + 12, // 128: etcdserverpb.KV.Put:output_type -> etcdserverpb.PutResponse + 14, // 129: etcdserverpb.KV.DeleteRange:output_type -> etcdserverpb.DeleteRangeResponse + 19, // 130: etcdserverpb.KV.Txn:output_type -> etcdserverpb.TxnResponse + 21, // 131: etcdserverpb.KV.Compact:output_type -> etcdserverpb.CompactionResponse + 32, // 132: etcdserverpb.Watch.Watch:output_type -> etcdserverpb.WatchResponse + 34, // 133: etcdserverpb.Lease.LeaseGrant:output_type -> etcdserverpb.LeaseGrantResponse + 36, // 134: etcdserverpb.Lease.LeaseRevoke:output_type -> etcdserverpb.LeaseRevokeResponse + 41, // 135: etcdserverpb.Lease.LeaseKeepAlive:output_type -> etcdserverpb.LeaseKeepAliveResponse + 43, // 136: etcdserverpb.Lease.LeaseTimeToLive:output_type -> etcdserverpb.LeaseTimeToLiveResponse + 46, // 137: etcdserverpb.Lease.LeaseLeases:output_type -> etcdserverpb.LeaseLeasesResponse + 49, // 138: etcdserverpb.Cluster.MemberAdd:output_type -> etcdserverpb.MemberAddResponse + 51, // 139: etcdserverpb.Cluster.MemberRemove:output_type -> etcdserverpb.MemberRemoveResponse + 53, // 140: etcdserverpb.Cluster.MemberUpdate:output_type -> etcdserverpb.MemberUpdateResponse + 55, // 141: etcdserverpb.Cluster.MemberList:output_type -> etcdserverpb.MemberListResponse + 57, // 142: etcdserverpb.Cluster.MemberPromote:output_type -> etcdserverpb.MemberPromoteResponse + 64, // 143: etcdserverpb.Maintenance.Alarm:output_type -> etcdserverpb.AlarmResponse + 69, // 144: etcdserverpb.Maintenance.Status:output_type -> etcdserverpb.StatusResponse + 59, // 145: etcdserverpb.Maintenance.Defragment:output_type -> etcdserverpb.DefragmentResponse + 25, // 146: etcdserverpb.Maintenance.Hash:output_type -> etcdserverpb.HashResponse + 24, // 147: etcdserverpb.Maintenance.HashKV:output_type -> etcdserverpb.HashKVResponse + 27, // 148: etcdserverpb.Maintenance.Snapshot:output_type -> etcdserverpb.SnapshotResponse + 61, // 149: etcdserverpb.Maintenance.MoveLeader:output_type -> etcdserverpb.MoveLeaderResponse + 66, // 150: etcdserverpb.Maintenance.Downgrade:output_type -> etcdserverpb.DowngradeResponse + 88, // 151: etcdserverpb.Auth.AuthEnable:output_type -> etcdserverpb.AuthEnableResponse + 89, // 152: etcdserverpb.Auth.AuthDisable:output_type -> etcdserverpb.AuthDisableResponse + 90, // 153: etcdserverpb.Auth.AuthStatus:output_type -> etcdserverpb.AuthStatusResponse + 91, // 154: etcdserverpb.Auth.Authenticate:output_type -> etcdserverpb.AuthenticateResponse + 92, // 155: etcdserverpb.Auth.UserAdd:output_type -> etcdserverpb.AuthUserAddResponse + 93, // 156: etcdserverpb.Auth.UserGet:output_type -> etcdserverpb.AuthUserGetResponse + 101, // 157: etcdserverpb.Auth.UserList:output_type -> etcdserverpb.AuthUserListResponse + 94, // 158: etcdserverpb.Auth.UserDelete:output_type -> etcdserverpb.AuthUserDeleteResponse + 95, // 159: etcdserverpb.Auth.UserChangePassword:output_type -> etcdserverpb.AuthUserChangePasswordResponse + 96, // 160: etcdserverpb.Auth.UserGrantRole:output_type -> etcdserverpb.AuthUserGrantRoleResponse + 97, // 161: etcdserverpb.Auth.UserRevokeRole:output_type -> etcdserverpb.AuthUserRevokeRoleResponse + 98, // 162: etcdserverpb.Auth.RoleAdd:output_type -> etcdserverpb.AuthRoleAddResponse + 99, // 163: etcdserverpb.Auth.RoleGet:output_type -> etcdserverpb.AuthRoleGetResponse + 100, // 164: etcdserverpb.Auth.RoleList:output_type -> etcdserverpb.AuthRoleListResponse + 102, // 165: etcdserverpb.Auth.RoleDelete:output_type -> etcdserverpb.AuthRoleDeleteResponse + 103, // 166: etcdserverpb.Auth.RoleGrantPermission:output_type -> etcdserverpb.AuthRoleGrantPermissionResponse + 104, // 167: etcdserverpb.Auth.RoleRevokePermission:output_type -> etcdserverpb.AuthRoleRevokePermissionResponse + 126, // [126:168] is the sub-list for method output_type + 84, // [84:126] is the sub-list for method input_type + 84, // [84:84] is the sub-list for extension type_name + 84, // [84:84] is the sub-list for extension extendee + 0, // [0:84] is the sub-list for field type_name +} + +func init() { file_rpc_proto_init() } +func file_rpc_proto_init() { + if File_rpc_proto != nil { + return + } + file_rpc_proto_msgTypes[7].OneofWrappers = []any{ + (*RequestOp_RequestRange)(nil), + (*RequestOp_RequestPut)(nil), + (*RequestOp_RequestDeleteRange)(nil), + (*RequestOp_RequestTxn)(nil), } - return len(dAtA) - i, nil -} - -func (m *LeaseRevokeResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err + file_rpc_proto_msgTypes[8].OneofWrappers = []any{ + (*ResponseOp_ResponseRange)(nil), + (*ResponseOp_ResponsePut)(nil), + (*ResponseOp_ResponseDeleteRange)(nil), + (*ResponseOp_ResponseTxn)(nil), } - return dAtA[:n], nil -} - -func (m *LeaseRevokeResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseRevokeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) + file_rpc_proto_msgTypes[9].OneofWrappers = []any{ + (*Compare_Version)(nil), + (*Compare_CreateRevision)(nil), + (*Compare_ModRevision)(nil), + (*Compare_Value)(nil), + (*Compare_Lease)(nil), } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa + file_rpc_proto_msgTypes[20].OneofWrappers = []any{ + (*WatchRequest_CreateRequest)(nil), + (*WatchRequest_CancelRequest)(nil), + (*WatchRequest_ProgressRequest)(nil), } - return len(dAtA) - i, nil + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_rpc_proto_rawDesc), len(file_rpc_proto_rawDesc)), + NumEnums: 8, + NumMessages: 98, + NumExtensions: 0, + NumServices: 6, + }, + GoTypes: file_rpc_proto_goTypes, + DependencyIndexes: file_rpc_proto_depIdxs, + EnumInfos: file_rpc_proto_enumTypes, + MessageInfos: file_rpc_proto_msgTypes, + }.Build() + File_rpc_proto = out.File + file_rpc_proto_goTypes = nil + file_rpc_proto_depIdxs = nil } - -func (m *LeaseCheckpoint) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaseCheckpoint) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseCheckpoint) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Remaining_TTL != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Remaining_TTL)) - i-- - dAtA[i] = 0x10 - } - if m.ID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *LeaseCheckpointRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaseCheckpointRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseCheckpointRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Checkpoints) > 0 { - for iNdEx := len(m.Checkpoints) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Checkpoints[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func (m *LeaseCheckpointResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaseCheckpointResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseCheckpointResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *LeaseKeepAliveRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaseKeepAliveRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseKeepAliveRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.ID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *LeaseKeepAliveResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaseKeepAliveResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseKeepAliveResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.TTL != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.TTL)) - i-- - dAtA[i] = 0x18 - } - if m.ID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x10 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *LeaseTimeToLiveRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaseTimeToLiveRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseTimeToLiveRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Keys { - i-- - if m.Keys { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x10 - } - if m.ID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *LeaseTimeToLiveResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaseTimeToLiveResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseTimeToLiveResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Keys) > 0 { - for iNdEx := len(m.Keys) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Keys[iNdEx]) - copy(dAtA[i:], m.Keys[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Keys[iNdEx]))) - i-- - dAtA[i] = 0x2a - } - } - if m.GrantedTTL != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.GrantedTTL)) - i-- - dAtA[i] = 0x20 - } - if m.TTL != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.TTL)) - i-- - dAtA[i] = 0x18 - } - if m.ID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x10 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *LeaseLeasesRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaseLeasesRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseLeasesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - return len(dAtA) - i, nil -} - -func (m *LeaseStatus) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaseStatus) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.ID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *LeaseLeasesResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaseLeasesResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseLeasesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Leases) > 0 { - for iNdEx := len(m.Leases) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Leases[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *Member) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Member) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Member) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.IsLearner { - i-- - if m.IsLearner { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x28 - } - if len(m.ClientURLs) > 0 { - for iNdEx := len(m.ClientURLs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.ClientURLs[iNdEx]) - copy(dAtA[i:], m.ClientURLs[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientURLs[iNdEx]))) - i-- - dAtA[i] = 0x22 - } - } - if len(m.PeerURLs) > 0 { - for iNdEx := len(m.PeerURLs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.PeerURLs[iNdEx]) - copy(dAtA[i:], m.PeerURLs[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerURLs[iNdEx]))) - i-- - dAtA[i] = 0x1a - } - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0x12 - } - if m.ID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *MemberAddRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MemberAddRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MemberAddRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.IsLearner { - i-- - if m.IsLearner { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x10 - } - if len(m.PeerURLs) > 0 { - for iNdEx := len(m.PeerURLs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.PeerURLs[iNdEx]) - copy(dAtA[i:], m.PeerURLs[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerURLs[iNdEx]))) - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func (m *MemberAddResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MemberAddResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MemberAddResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Members) > 0 { - for iNdEx := len(m.Members) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Members[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - } - if m.Member != nil { - { - size, err := m.Member.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MemberRemoveRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MemberRemoveRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MemberRemoveRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.ID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *MemberRemoveResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MemberRemoveResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MemberRemoveResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Members) > 0 { - for iNdEx := len(m.Members) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Members[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MemberUpdateRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MemberUpdateRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MemberUpdateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.PeerURLs) > 0 { - for iNdEx := len(m.PeerURLs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.PeerURLs[iNdEx]) - copy(dAtA[i:], m.PeerURLs[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerURLs[iNdEx]))) - i-- - dAtA[i] = 0x12 - } - } - if m.ID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *MemberUpdateResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MemberUpdateResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MemberUpdateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Members) > 0 { - for iNdEx := len(m.Members) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Members[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MemberListRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MemberListRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MemberListRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Linearizable { - i-- - if m.Linearizable { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *MemberListResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MemberListResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MemberListResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Members) > 0 { - for iNdEx := len(m.Members) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Members[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MemberPromoteRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MemberPromoteRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MemberPromoteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.ID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *MemberPromoteResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MemberPromoteResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MemberPromoteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Members) > 0 { - for iNdEx := len(m.Members) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Members[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *DefragmentRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *DefragmentRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *DefragmentRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - return len(dAtA) - i, nil -} - -func (m *DefragmentResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *DefragmentResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *DefragmentResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MoveLeaderRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MoveLeaderRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MoveLeaderRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.TargetID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.TargetID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *MoveLeaderResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MoveLeaderResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MoveLeaderResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AlarmRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AlarmRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AlarmRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Alarm != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Alarm)) - i-- - dAtA[i] = 0x18 - } - if m.MemberID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.MemberID)) - i-- - dAtA[i] = 0x10 - } - if m.Action != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Action)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *AlarmMember) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AlarmMember) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AlarmMember) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Alarm != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Alarm)) - i-- - dAtA[i] = 0x10 - } - if m.MemberID != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.MemberID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *AlarmResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AlarmResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AlarmResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Alarms) > 0 { - for iNdEx := len(m.Alarms) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Alarms[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *DowngradeRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *DowngradeRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *DowngradeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Version) > 0 { - i -= len(m.Version) - copy(dAtA[i:], m.Version) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Version))) - i-- - dAtA[i] = 0x12 - } - if m.Action != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Action)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *DowngradeResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *DowngradeResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *DowngradeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Version) > 0 { - i -= len(m.Version) - copy(dAtA[i:], m.Version) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Version))) - i-- - dAtA[i] = 0x12 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *DowngradeVersionTestRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *DowngradeVersionTestRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *DowngradeVersionTestRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Ver) > 0 { - i -= len(m.Ver) - copy(dAtA[i:], m.Ver) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Ver))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *StatusRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *StatusRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *StatusRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - return len(dAtA) - i, nil -} - -func (m *StatusResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *StatusResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *StatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.DowngradeInfo != nil { - { - size, err := m.DowngradeInfo.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x6a - } - if m.DbSizeQuota != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.DbSizeQuota)) - i-- - dAtA[i] = 0x60 - } - if len(m.StorageVersion) > 0 { - i -= len(m.StorageVersion) - copy(dAtA[i:], m.StorageVersion) - i = encodeVarintRpc(dAtA, i, uint64(len(m.StorageVersion))) - i-- - dAtA[i] = 0x5a - } - if m.IsLearner { - i-- - if m.IsLearner { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x50 - } - if m.DbSizeInUse != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.DbSizeInUse)) - i-- - dAtA[i] = 0x48 - } - if len(m.Errors) > 0 { - for iNdEx := len(m.Errors) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Errors[iNdEx]) - copy(dAtA[i:], m.Errors[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Errors[iNdEx]))) - i-- - dAtA[i] = 0x42 - } - } - if m.RaftAppliedIndex != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.RaftAppliedIndex)) - i-- - dAtA[i] = 0x38 - } - if m.RaftTerm != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.RaftTerm)) - i-- - dAtA[i] = 0x30 - } - if m.RaftIndex != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.RaftIndex)) - i-- - dAtA[i] = 0x28 - } - if m.Leader != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.Leader)) - i-- - dAtA[i] = 0x20 - } - if m.DbSize != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.DbSize)) - i-- - dAtA[i] = 0x18 - } - if len(m.Version) > 0 { - i -= len(m.Version) - copy(dAtA[i:], m.Version) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Version))) - i-- - dAtA[i] = 0x12 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *DowngradeInfo) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *DowngradeInfo) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *DowngradeInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.TargetVersion) > 0 { - i -= len(m.TargetVersion) - copy(dAtA[i:], m.TargetVersion) - i = encodeVarintRpc(dAtA, i, uint64(len(m.TargetVersion))) - i-- - dAtA[i] = 0x12 - } - if m.Enabled { - i-- - if m.Enabled { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *AuthEnableRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthEnableRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthEnableRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - return len(dAtA) - i, nil -} - -func (m *AuthDisableRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthDisableRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthDisableRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - return len(dAtA) - i, nil -} - -func (m *AuthStatusRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthStatusRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthStatusRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - return len(dAtA) - i, nil -} - -func (m *AuthenticateRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthenticateRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthenticateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Password) > 0 { - i -= len(m.Password) - copy(dAtA[i:], m.Password) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Password))) - i-- - dAtA[i] = 0x12 - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthUserAddRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthUserAddRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthUserAddRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.HashedPassword) > 0 { - i -= len(m.HashedPassword) - copy(dAtA[i:], m.HashedPassword) - i = encodeVarintRpc(dAtA, i, uint64(len(m.HashedPassword))) - i-- - dAtA[i] = 0x22 - } - if m.Options != nil { - { - size, err := m.Options.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if len(m.Password) > 0 { - i -= len(m.Password) - copy(dAtA[i:], m.Password) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Password))) - i-- - dAtA[i] = 0x12 - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthUserGetRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthUserGetRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthUserGetRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthUserDeleteRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthUserDeleteRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthUserDeleteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthUserChangePasswordRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthUserChangePasswordRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthUserChangePasswordRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.HashedPassword) > 0 { - i -= len(m.HashedPassword) - copy(dAtA[i:], m.HashedPassword) - i = encodeVarintRpc(dAtA, i, uint64(len(m.HashedPassword))) - i-- - dAtA[i] = 0x1a - } - if len(m.Password) > 0 { - i -= len(m.Password) - copy(dAtA[i:], m.Password) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Password))) - i-- - dAtA[i] = 0x12 - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthUserGrantRoleRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthUserGrantRoleRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthUserGrantRoleRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Role) > 0 { - i -= len(m.Role) - copy(dAtA[i:], m.Role) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Role))) - i-- - dAtA[i] = 0x12 - } - if len(m.User) > 0 { - i -= len(m.User) - copy(dAtA[i:], m.User) - i = encodeVarintRpc(dAtA, i, uint64(len(m.User))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthUserRevokeRoleRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthUserRevokeRoleRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthUserRevokeRoleRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Role) > 0 { - i -= len(m.Role) - copy(dAtA[i:], m.Role) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Role))) - i-- - dAtA[i] = 0x12 - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthRoleAddRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthRoleAddRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthRoleAddRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthRoleGetRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthRoleGetRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthRoleGetRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Role) > 0 { - i -= len(m.Role) - copy(dAtA[i:], m.Role) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Role))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthUserListRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthUserListRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthUserListRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - return len(dAtA) - i, nil -} - -func (m *AuthRoleListRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthRoleListRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthRoleListRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - return len(dAtA) - i, nil -} - -func (m *AuthRoleDeleteRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthRoleDeleteRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthRoleDeleteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Role) > 0 { - i -= len(m.Role) - copy(dAtA[i:], m.Role) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Role))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthRoleGrantPermissionRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthRoleGrantPermissionRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthRoleGrantPermissionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Perm != nil { - { - size, err := m.Perm.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthRoleRevokePermissionRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthRoleRevokePermissionRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthRoleRevokePermissionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.RangeEnd) > 0 { - i -= len(m.RangeEnd) - copy(dAtA[i:], m.RangeEnd) - i = encodeVarintRpc(dAtA, i, uint64(len(m.RangeEnd))) - i-- - dAtA[i] = 0x1a - } - if len(m.Key) > 0 { - i -= len(m.Key) - copy(dAtA[i:], m.Key) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Key))) - i-- - dAtA[i] = 0x12 - } - if len(m.Role) > 0 { - i -= len(m.Role) - copy(dAtA[i:], m.Role) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Role))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthEnableResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthEnableResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthEnableResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthDisableResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthDisableResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthDisableResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthStatusResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthStatusResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthStatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.AuthRevision != 0 { - i = encodeVarintRpc(dAtA, i, uint64(m.AuthRevision)) - i-- - dAtA[i] = 0x18 - } - if m.Enabled { - i-- - if m.Enabled { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x10 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthenticateResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthenticateResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthenticateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Token) > 0 { - i -= len(m.Token) - copy(dAtA[i:], m.Token) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Token))) - i-- - dAtA[i] = 0x12 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthUserAddResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthUserAddResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthUserAddResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthUserGetResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthUserGetResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthUserGetResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Roles) > 0 { - for iNdEx := len(m.Roles) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Roles[iNdEx]) - copy(dAtA[i:], m.Roles[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Roles[iNdEx]))) - i-- - dAtA[i] = 0x12 - } - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthUserDeleteResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthUserDeleteResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthUserDeleteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthUserChangePasswordResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthUserChangePasswordResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthUserChangePasswordResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthUserGrantRoleResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthUserGrantRoleResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthUserGrantRoleResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthUserRevokeRoleResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthUserRevokeRoleResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthUserRevokeRoleResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthRoleAddResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthRoleAddResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthRoleAddResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthRoleGetResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthRoleGetResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthRoleGetResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Perm) > 0 { - for iNdEx := len(m.Perm) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Perm[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthRoleListResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthRoleListResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthRoleListResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Roles) > 0 { - for iNdEx := len(m.Roles) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Roles[iNdEx]) - copy(dAtA[i:], m.Roles[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Roles[iNdEx]))) - i-- - dAtA[i] = 0x12 - } - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthUserListResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthUserListResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthUserListResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Users) > 0 { - for iNdEx := len(m.Users) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Users[iNdEx]) - copy(dAtA[i:], m.Users[iNdEx]) - i = encodeVarintRpc(dAtA, i, uint64(len(m.Users[iNdEx]))) - i-- - dAtA[i] = 0x12 - } - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthRoleDeleteResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthRoleDeleteResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthRoleDeleteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthRoleGrantPermissionResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthRoleGrantPermissionResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthRoleGrantPermissionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *AuthRoleRevokePermissionResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AuthRoleRevokePermissionResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *AuthRoleRevokePermissionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *RangeStreamResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RangeStreamResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RangeStreamResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.RangeResponse != nil { - { - size, err := m.RangeResponse.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRpc(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintRpc(dAtA []byte, offset int, v uint64) int { - offset -= sovRpc(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *ResponseHeader) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ClusterId != 0 { - n += 1 + sovRpc(uint64(m.ClusterId)) - } - if m.MemberId != 0 { - n += 1 + sovRpc(uint64(m.MemberId)) - } - if m.Revision != 0 { - n += 1 + sovRpc(uint64(m.Revision)) - } - if m.RaftTerm != 0 { - n += 1 + sovRpc(uint64(m.RaftTerm)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *RangeRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Key) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.RangeEnd) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.Limit != 0 { - n += 1 + sovRpc(uint64(m.Limit)) - } - if m.Revision != 0 { - n += 1 + sovRpc(uint64(m.Revision)) - } - if m.SortOrder != 0 { - n += 1 + sovRpc(uint64(m.SortOrder)) - } - if m.SortTarget != 0 { - n += 1 + sovRpc(uint64(m.SortTarget)) - } - if m.Serializable { - n += 2 - } - if m.KeysOnly { - n += 2 - } - if m.CountOnly { - n += 2 - } - if m.MinModRevision != 0 { - n += 1 + sovRpc(uint64(m.MinModRevision)) - } - if m.MaxModRevision != 0 { - n += 1 + sovRpc(uint64(m.MaxModRevision)) - } - if m.MinCreateRevision != 0 { - n += 1 + sovRpc(uint64(m.MinCreateRevision)) - } - if m.MaxCreateRevision != 0 { - n += 1 + sovRpc(uint64(m.MaxCreateRevision)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *RangeResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if len(m.Kvs) > 0 { - for _, e := range m.Kvs { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.More { - n += 2 - } - if m.Count != 0 { - n += 1 + sovRpc(uint64(m.Count)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *PutRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Key) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.Value) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.Lease != 0 { - n += 1 + sovRpc(uint64(m.Lease)) - } - if m.PrevKv { - n += 2 - } - if m.IgnoreValue { - n += 2 - } - if m.IgnoreLease { - n += 2 - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *PutResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.PrevKv != nil { - l = m.PrevKv.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *DeleteRangeRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Key) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.RangeEnd) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.PrevKv { - n += 2 - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *DeleteRangeResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.Deleted != 0 { - n += 1 + sovRpc(uint64(m.Deleted)) - } - if len(m.PrevKvs) > 0 { - for _, e := range m.PrevKvs { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *RequestOp) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Request != nil { - n += m.Request.Size() - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *RequestOp_RequestRange) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.RequestRange != nil { - l = m.RequestRange.Size() - n += 1 + l + sovRpc(uint64(l)) - } - return n -} -func (m *RequestOp_RequestPut) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.RequestPut != nil { - l = m.RequestPut.Size() - n += 1 + l + sovRpc(uint64(l)) - } - return n -} -func (m *RequestOp_RequestDeleteRange) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.RequestDeleteRange != nil { - l = m.RequestDeleteRange.Size() - n += 1 + l + sovRpc(uint64(l)) - } - return n -} -func (m *RequestOp_RequestTxn) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.RequestTxn != nil { - l = m.RequestTxn.Size() - n += 1 + l + sovRpc(uint64(l)) - } - return n -} -func (m *ResponseOp) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Response != nil { - n += m.Response.Size() - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *ResponseOp_ResponseRange) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ResponseRange != nil { - l = m.ResponseRange.Size() - n += 1 + l + sovRpc(uint64(l)) - } - return n -} -func (m *ResponseOp_ResponsePut) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ResponsePut != nil { - l = m.ResponsePut.Size() - n += 1 + l + sovRpc(uint64(l)) - } - return n -} -func (m *ResponseOp_ResponseDeleteRange) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ResponseDeleteRange != nil { - l = m.ResponseDeleteRange.Size() - n += 1 + l + sovRpc(uint64(l)) - } - return n -} -func (m *ResponseOp_ResponseTxn) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ResponseTxn != nil { - l = m.ResponseTxn.Size() - n += 1 + l + sovRpc(uint64(l)) - } - return n -} -func (m *Compare) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Result != 0 { - n += 1 + sovRpc(uint64(m.Result)) - } - if m.Target != 0 { - n += 1 + sovRpc(uint64(m.Target)) - } - l = len(m.Key) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.TargetUnion != nil { - n += m.TargetUnion.Size() - } - l = len(m.RangeEnd) - if l > 0 { - n += 2 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *Compare_Version) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - n += 1 + sovRpc(uint64(m.Version)) - return n -} -func (m *Compare_CreateRevision) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - n += 1 + sovRpc(uint64(m.CreateRevision)) - return n -} -func (m *Compare_ModRevision) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - n += 1 + sovRpc(uint64(m.ModRevision)) - return n -} -func (m *Compare_Value) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Value != nil { - l = len(m.Value) - n += 1 + l + sovRpc(uint64(l)) - } - return n -} -func (m *Compare_Lease) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - n += 1 + sovRpc(uint64(m.Lease)) - return n -} -func (m *TxnRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.Compare) > 0 { - for _, e := range m.Compare { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if len(m.Success) > 0 { - for _, e := range m.Success { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if len(m.Failure) > 0 { - for _, e := range m.Failure { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *TxnResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.Succeeded { - n += 2 - } - if len(m.Responses) > 0 { - for _, e := range m.Responses { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *CompactionRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Revision != 0 { - n += 1 + sovRpc(uint64(m.Revision)) - } - if m.Physical { - n += 2 - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *CompactionResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *HashRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *HashKVRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Revision != 0 { - n += 1 + sovRpc(uint64(m.Revision)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *HashKVResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.Hash != 0 { - n += 1 + sovRpc(uint64(m.Hash)) - } - if m.CompactRevision != 0 { - n += 1 + sovRpc(uint64(m.CompactRevision)) - } - if m.HashRevision != 0 { - n += 1 + sovRpc(uint64(m.HashRevision)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *HashResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.Hash != 0 { - n += 1 + sovRpc(uint64(m.Hash)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *SnapshotRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *SnapshotResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.RemainingBytes != 0 { - n += 1 + sovRpc(uint64(m.RemainingBytes)) - } - l = len(m.Blob) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.Version) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *WatchRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.RequestUnion != nil { - n += m.RequestUnion.Size() - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *WatchRequest_CreateRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.CreateRequest != nil { - l = m.CreateRequest.Size() - n += 1 + l + sovRpc(uint64(l)) - } - return n -} -func (m *WatchRequest_CancelRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.CancelRequest != nil { - l = m.CancelRequest.Size() - n += 1 + l + sovRpc(uint64(l)) - } - return n -} -func (m *WatchRequest_ProgressRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ProgressRequest != nil { - l = m.ProgressRequest.Size() - n += 1 + l + sovRpc(uint64(l)) - } - return n -} -func (m *WatchCreateRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Key) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.RangeEnd) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.StartRevision != 0 { - n += 1 + sovRpc(uint64(m.StartRevision)) - } - if m.ProgressNotify { - n += 2 - } - if len(m.Filters) > 0 { - l = 0 - for _, e := range m.Filters { - l += sovRpc(uint64(e)) - } - n += 1 + sovRpc(uint64(l)) + l - } - if m.PrevKv { - n += 2 - } - if m.WatchId != 0 { - n += 1 + sovRpc(uint64(m.WatchId)) - } - if m.Fragment { - n += 2 - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *WatchCancelRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.WatchId != 0 { - n += 1 + sovRpc(uint64(m.WatchId)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *WatchProgressRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *WatchResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.WatchId != 0 { - n += 1 + sovRpc(uint64(m.WatchId)) - } - if m.Created { - n += 2 - } - if m.Canceled { - n += 2 - } - if m.CompactRevision != 0 { - n += 1 + sovRpc(uint64(m.CompactRevision)) - } - l = len(m.CancelReason) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.Fragment { - n += 2 - } - if len(m.Events) > 0 { - for _, e := range m.Events { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseGrantRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.TTL != 0 { - n += 1 + sovRpc(uint64(m.TTL)) - } - if m.ID != 0 { - n += 1 + sovRpc(uint64(m.ID)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseGrantResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.ID != 0 { - n += 1 + sovRpc(uint64(m.ID)) - } - if m.TTL != 0 { - n += 1 + sovRpc(uint64(m.TTL)) - } - l = len(m.Error) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseRevokeRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovRpc(uint64(m.ID)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseRevokeResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseCheckpoint) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovRpc(uint64(m.ID)) - } - if m.Remaining_TTL != 0 { - n += 1 + sovRpc(uint64(m.Remaining_TTL)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseCheckpointRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.Checkpoints) > 0 { - for _, e := range m.Checkpoints { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseCheckpointResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseKeepAliveRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovRpc(uint64(m.ID)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseKeepAliveResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.ID != 0 { - n += 1 + sovRpc(uint64(m.ID)) - } - if m.TTL != 0 { - n += 1 + sovRpc(uint64(m.TTL)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseTimeToLiveRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovRpc(uint64(m.ID)) - } - if m.Keys { - n += 2 - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseTimeToLiveResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.ID != 0 { - n += 1 + sovRpc(uint64(m.ID)) - } - if m.TTL != 0 { - n += 1 + sovRpc(uint64(m.TTL)) - } - if m.GrantedTTL != 0 { - n += 1 + sovRpc(uint64(m.GrantedTTL)) - } - if len(m.Keys) > 0 { - for _, b := range m.Keys { - l = len(b) - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseLeasesRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseStatus) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovRpc(uint64(m.ID)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseLeasesResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if len(m.Leases) > 0 { - for _, e := range m.Leases { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *Member) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovRpc(uint64(m.ID)) - } - l = len(m.Name) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if len(m.PeerURLs) > 0 { - for _, s := range m.PeerURLs { - l = len(s) - n += 1 + l + sovRpc(uint64(l)) - } - } - if len(m.ClientURLs) > 0 { - for _, s := range m.ClientURLs { - l = len(s) - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.IsLearner { - n += 2 - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *MemberAddRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.PeerURLs) > 0 { - for _, s := range m.PeerURLs { - l = len(s) - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.IsLearner { - n += 2 - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *MemberAddResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.Member != nil { - l = m.Member.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if len(m.Members) > 0 { - for _, e := range m.Members { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *MemberRemoveRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovRpc(uint64(m.ID)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *MemberRemoveResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if len(m.Members) > 0 { - for _, e := range m.Members { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *MemberUpdateRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovRpc(uint64(m.ID)) - } - if len(m.PeerURLs) > 0 { - for _, s := range m.PeerURLs { - l = len(s) - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *MemberUpdateResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if len(m.Members) > 0 { - for _, e := range m.Members { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *MemberListRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Linearizable { - n += 2 - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *MemberListResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if len(m.Members) > 0 { - for _, e := range m.Members { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *MemberPromoteRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovRpc(uint64(m.ID)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *MemberPromoteResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if len(m.Members) > 0 { - for _, e := range m.Members { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *DefragmentRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *DefragmentResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *MoveLeaderRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.TargetID != 0 { - n += 1 + sovRpc(uint64(m.TargetID)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *MoveLeaderResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AlarmRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Action != 0 { - n += 1 + sovRpc(uint64(m.Action)) - } - if m.MemberID != 0 { - n += 1 + sovRpc(uint64(m.MemberID)) - } - if m.Alarm != 0 { - n += 1 + sovRpc(uint64(m.Alarm)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AlarmMember) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.MemberID != 0 { - n += 1 + sovRpc(uint64(m.MemberID)) - } - if m.Alarm != 0 { - n += 1 + sovRpc(uint64(m.Alarm)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AlarmResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if len(m.Alarms) > 0 { - for _, e := range m.Alarms { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *DowngradeRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Action != 0 { - n += 1 + sovRpc(uint64(m.Action)) - } - l = len(m.Version) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *DowngradeResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.Version) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *DowngradeVersionTestRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Ver) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *StatusRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *StatusResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.Version) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.DbSize != 0 { - n += 1 + sovRpc(uint64(m.DbSize)) - } - if m.Leader != 0 { - n += 1 + sovRpc(uint64(m.Leader)) - } - if m.RaftIndex != 0 { - n += 1 + sovRpc(uint64(m.RaftIndex)) - } - if m.RaftTerm != 0 { - n += 1 + sovRpc(uint64(m.RaftTerm)) - } - if m.RaftAppliedIndex != 0 { - n += 1 + sovRpc(uint64(m.RaftAppliedIndex)) - } - if len(m.Errors) > 0 { - for _, s := range m.Errors { - l = len(s) - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.DbSizeInUse != 0 { - n += 1 + sovRpc(uint64(m.DbSizeInUse)) - } - if m.IsLearner { - n += 2 - } - l = len(m.StorageVersion) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.DbSizeQuota != 0 { - n += 1 + sovRpc(uint64(m.DbSizeQuota)) - } - if m.DowngradeInfo != nil { - l = m.DowngradeInfo.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *DowngradeInfo) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Enabled { - n += 2 - } - l = len(m.TargetVersion) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthEnableRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthDisableRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthStatusRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthenticateRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.Password) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthUserAddRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.Password) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.Options != nil { - l = m.Options.Size() - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.HashedPassword) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthUserGetRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthUserDeleteRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthUserChangePasswordRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.Password) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.HashedPassword) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthUserGrantRoleRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.User) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.Role) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthUserRevokeRoleRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.Role) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthRoleAddRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthRoleGetRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Role) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthUserListRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthRoleListRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthRoleDeleteRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Role) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthRoleGrantPermissionRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.Perm != nil { - l = m.Perm.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthRoleRevokePermissionRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Role) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.Key) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.RangeEnd) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthEnableResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthDisableResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthStatusResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.Enabled { - n += 2 - } - if m.AuthRevision != 0 { - n += 1 + sovRpc(uint64(m.AuthRevision)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthenticateResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - l = len(m.Token) - if l > 0 { - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthUserAddResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthUserGetResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if len(m.Roles) > 0 { - for _, s := range m.Roles { - l = len(s) - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthUserDeleteResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthUserChangePasswordResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthUserGrantRoleResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthUserRevokeRoleResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthRoleAddResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthRoleGetResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if len(m.Perm) > 0 { - for _, e := range m.Perm { - l = e.Size() - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthRoleListResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if len(m.Roles) > 0 { - for _, s := range m.Roles { - l = len(s) - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthUserListResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if len(m.Users) > 0 { - for _, s := range m.Users { - l = len(s) - n += 1 + l + sovRpc(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthRoleDeleteResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthRoleGrantPermissionResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *AuthRoleRevokePermissionResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *RangeStreamResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.RangeResponse != nil { - l = m.RangeResponse.Size() - n += 1 + l + sovRpc(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func sovRpc(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozRpc(x uint64) (n int) { - return sovRpc(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *ResponseHeader) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ResponseHeader: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ResponseHeader: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ClusterId", wireType) - } - m.ClusterId = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ClusterId |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MemberId", wireType) - } - m.MemberId = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.MemberId |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Revision", wireType) - } - m.Revision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Revision |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RaftTerm", wireType) - } - m.RaftTerm = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.RaftTerm |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RangeRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RangeRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RangeRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) - if m.Key == nil { - m.Key = []byte{} - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RangeEnd", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.RangeEnd = append(m.RangeEnd[:0], dAtA[iNdEx:postIndex]...) - if m.RangeEnd == nil { - m.RangeEnd = []byte{} - } - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Limit", wireType) - } - m.Limit = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Limit |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Revision", wireType) - } - m.Revision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Revision |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field SortOrder", wireType) - } - m.SortOrder = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.SortOrder |= RangeRequest_SortOrder(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field SortTarget", wireType) - } - m.SortTarget = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.SortTarget |= RangeRequest_SortTarget(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Serializable", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Serializable = bool(v != 0) - case 8: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field KeysOnly", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.KeysOnly = bool(v != 0) - case 9: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field CountOnly", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.CountOnly = bool(v != 0) - case 10: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MinModRevision", wireType) - } - m.MinModRevision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.MinModRevision |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 11: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxModRevision", wireType) - } - m.MaxModRevision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.MaxModRevision |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 12: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MinCreateRevision", wireType) - } - m.MinCreateRevision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.MinCreateRevision |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 13: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxCreateRevision", wireType) - } - m.MaxCreateRevision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.MaxCreateRevision |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RangeResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RangeResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RangeResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Kvs", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Kvs = append(m.Kvs, &mvccpb.KeyValue{}) - if err := m.Kvs[len(m.Kvs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field More", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.More = bool(v != 0) - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Count", wireType) - } - m.Count = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Count |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PutRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PutRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PutRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) - if m.Key == nil { - m.Key = []byte{} - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...) - if m.Value == nil { - m.Value = []byte{} - } - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Lease", wireType) - } - m.Lease = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Lease |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PrevKv", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.PrevKv = bool(v != 0) - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IgnoreValue", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.IgnoreValue = bool(v != 0) - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IgnoreLease", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.IgnoreLease = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PutResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PutResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PutResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PrevKv", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.PrevKv == nil { - m.PrevKv = &mvccpb.KeyValue{} - } - if err := m.PrevKv.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DeleteRangeRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DeleteRangeRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DeleteRangeRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) - if m.Key == nil { - m.Key = []byte{} - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RangeEnd", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.RangeEnd = append(m.RangeEnd[:0], dAtA[iNdEx:postIndex]...) - if m.RangeEnd == nil { - m.RangeEnd = []byte{} - } - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PrevKv", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.PrevKv = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DeleteRangeResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DeleteRangeResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DeleteRangeResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Deleted", wireType) - } - m.Deleted = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Deleted |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PrevKvs", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.PrevKvs = append(m.PrevKvs, &mvccpb.KeyValue{}) - if err := m.PrevKvs[len(m.PrevKvs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RequestOp) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RequestOp: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RequestOp: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RequestRange", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &RangeRequest{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Request = &RequestOp_RequestRange{v} - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RequestPut", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &PutRequest{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Request = &RequestOp_RequestPut{v} - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RequestDeleteRange", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &DeleteRangeRequest{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Request = &RequestOp_RequestDeleteRange{v} - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RequestTxn", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &TxnRequest{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Request = &RequestOp_RequestTxn{v} - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ResponseOp) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ResponseOp: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ResponseOp: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResponseRange", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &RangeResponse{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Response = &ResponseOp_ResponseRange{v} - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResponsePut", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &PutResponse{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Response = &ResponseOp_ResponsePut{v} - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResponseDeleteRange", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &DeleteRangeResponse{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Response = &ResponseOp_ResponseDeleteRange{v} - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResponseTxn", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &TxnResponse{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Response = &ResponseOp_ResponseTxn{v} - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Compare) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Compare: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Compare: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType) - } - m.Result = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Result |= Compare_CompareResult(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) - } - m.Target = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Target |= Compare_CompareTarget(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) - if m.Key == nil { - m.Key = []byte{} - } - iNdEx = postIndex - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) - } - var v int64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.TargetUnion = &Compare_Version{v} - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field CreateRevision", wireType) - } - var v int64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.TargetUnion = &Compare_CreateRevision{v} - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ModRevision", wireType) - } - var v int64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.TargetUnion = &Compare_ModRevision{v} - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := make([]byte, postIndex-iNdEx) - copy(v, dAtA[iNdEx:postIndex]) - m.TargetUnion = &Compare_Value{v} - iNdEx = postIndex - case 8: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Lease", wireType) - } - var v int64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.TargetUnion = &Compare_Lease{v} - case 64: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RangeEnd", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.RangeEnd = append(m.RangeEnd[:0], dAtA[iNdEx:postIndex]...) - if m.RangeEnd == nil { - m.RangeEnd = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *TxnRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: TxnRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: TxnRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Compare", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Compare = append(m.Compare, &Compare{}) - if err := m.Compare[len(m.Compare)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Success = append(m.Success, &RequestOp{}) - if err := m.Success[len(m.Success)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Failure", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Failure = append(m.Failure, &RequestOp{}) - if err := m.Failure[len(m.Failure)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *TxnResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: TxnResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: TxnResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Succeeded", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Succeeded = bool(v != 0) - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Responses", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Responses = append(m.Responses, &ResponseOp{}) - if err := m.Responses[len(m.Responses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *CompactionRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: CompactionRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: CompactionRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Revision", wireType) - } - m.Revision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Revision |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Physical", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Physical = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *CompactionResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: CompactionResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: CompactionResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *HashRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: HashRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: HashRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *HashKVRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: HashKVRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: HashKVRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Revision", wireType) - } - m.Revision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Revision |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *HashKVResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: HashKVResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: HashKVResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Hash", wireType) - } - m.Hash = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Hash |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field CompactRevision", wireType) - } - m.CompactRevision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.CompactRevision |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field HashRevision", wireType) - } - m.HashRevision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.HashRevision |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *HashResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: HashResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: HashResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Hash", wireType) - } - m.Hash = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Hash |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *SnapshotRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: SnapshotRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: SnapshotRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *SnapshotResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: SnapshotResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: SnapshotResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RemainingBytes", wireType) - } - m.RemainingBytes = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.RemainingBytes |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Blob", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Blob = append(m.Blob[:0], dAtA[iNdEx:postIndex]...) - if m.Blob == nil { - m.Blob = []byte{} - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Version = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *WatchRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: WatchRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: WatchRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CreateRequest", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &WatchCreateRequest{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.RequestUnion = &WatchRequest_CreateRequest{v} - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CancelRequest", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &WatchCancelRequest{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.RequestUnion = &WatchRequest_CancelRequest{v} - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProgressRequest", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &WatchProgressRequest{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.RequestUnion = &WatchRequest_ProgressRequest{v} - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *WatchCreateRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: WatchCreateRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: WatchCreateRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) - if m.Key == nil { - m.Key = []byte{} - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RangeEnd", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.RangeEnd = append(m.RangeEnd[:0], dAtA[iNdEx:postIndex]...) - if m.RangeEnd == nil { - m.RangeEnd = []byte{} - } - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field StartRevision", wireType) - } - m.StartRevision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.StartRevision |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ProgressNotify", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.ProgressNotify = bool(v != 0) - case 5: - if wireType == 0 { - var v WatchCreateRequest_FilterType - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= WatchCreateRequest_FilterType(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Filters = append(m.Filters, v) - } else if wireType == 2 { - var packedLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - packedLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if packedLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + packedLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - var elementCount int - if elementCount != 0 && len(m.Filters) == 0 { - m.Filters = make([]WatchCreateRequest_FilterType, 0, elementCount) - } - for iNdEx < postIndex { - var v WatchCreateRequest_FilterType - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= WatchCreateRequest_FilterType(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Filters = append(m.Filters, v) - } - } else { - return fmt.Errorf("proto: wrong wireType = %d for field Filters", wireType) - } - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PrevKv", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.PrevKv = bool(v != 0) - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field WatchId", wireType) - } - m.WatchId = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.WatchId |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 8: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Fragment", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Fragment = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *WatchCancelRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: WatchCancelRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: WatchCancelRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field WatchId", wireType) - } - m.WatchId = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.WatchId |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *WatchProgressRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: WatchProgressRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: WatchProgressRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *WatchResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: WatchResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: WatchResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field WatchId", wireType) - } - m.WatchId = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.WatchId |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Created", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Created = bool(v != 0) - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Canceled", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Canceled = bool(v != 0) - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field CompactRevision", wireType) - } - m.CompactRevision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.CompactRevision |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CancelReason", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.CancelReason = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Fragment", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Fragment = bool(v != 0) - case 11: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Events", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Events = append(m.Events, &mvccpb.Event{}) - if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseGrantRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseGrantRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseGrantRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field TTL", wireType) - } - m.TTL = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.TTL |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseGrantResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseGrantResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseGrantResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field TTL", wireType) - } - m.TTL = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.TTL |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Error = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseRevokeRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseRevokeRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseRevokeRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseRevokeResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseRevokeResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseRevokeResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseCheckpoint) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseCheckpoint: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseCheckpoint: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Remaining_TTL", wireType) - } - m.Remaining_TTL = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Remaining_TTL |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseCheckpointRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseCheckpointRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseCheckpointRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Checkpoints", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Checkpoints = append(m.Checkpoints, &LeaseCheckpoint{}) - if err := m.Checkpoints[len(m.Checkpoints)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseCheckpointResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseCheckpointResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseCheckpointResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseKeepAliveRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseKeepAliveRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseKeepAliveRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseKeepAliveResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseKeepAliveResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseKeepAliveResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field TTL", wireType) - } - m.TTL = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.TTL |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseTimeToLiveRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseTimeToLiveRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseTimeToLiveRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Keys", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Keys = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseTimeToLiveResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseTimeToLiveResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseTimeToLiveResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field TTL", wireType) - } - m.TTL = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.TTL |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field GrantedTTL", wireType) - } - m.GrantedTTL = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.GrantedTTL |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Keys", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Keys = append(m.Keys, make([]byte, postIndex-iNdEx)) - copy(m.Keys[len(m.Keys)-1], dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseLeasesRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseLeasesRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseLeasesRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseStatus) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseStatus: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseStatus: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseLeasesResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseLeasesResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseLeasesResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Leases", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Leases = append(m.Leases, &LeaseStatus{}) - if err := m.Leases[len(m.Leases)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Member) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Member: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Member: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PeerURLs", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.PeerURLs = append(m.PeerURLs, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClientURLs", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ClientURLs = append(m.ClientURLs, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IsLearner", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.IsLearner = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MemberAddRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MemberAddRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MemberAddRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PeerURLs", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.PeerURLs = append(m.PeerURLs, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IsLearner", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.IsLearner = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MemberAddResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MemberAddResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MemberAddResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Member", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Member == nil { - m.Member = &Member{} - } - if err := m.Member.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Members", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Members = append(m.Members, &Member{}) - if err := m.Members[len(m.Members)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MemberRemoveRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MemberRemoveRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MemberRemoveRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MemberRemoveResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MemberRemoveResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MemberRemoveResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Members", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Members = append(m.Members, &Member{}) - if err := m.Members[len(m.Members)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MemberUpdateRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MemberUpdateRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MemberUpdateRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PeerURLs", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.PeerURLs = append(m.PeerURLs, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MemberUpdateResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MemberUpdateResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MemberUpdateResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Members", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Members = append(m.Members, &Member{}) - if err := m.Members[len(m.Members)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MemberListRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MemberListRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MemberListRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Linearizable", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Linearizable = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MemberListResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MemberListResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MemberListResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Members", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Members = append(m.Members, &Member{}) - if err := m.Members[len(m.Members)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MemberPromoteRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MemberPromoteRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MemberPromoteRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MemberPromoteResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MemberPromoteResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MemberPromoteResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Members", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Members = append(m.Members, &Member{}) - if err := m.Members[len(m.Members)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DefragmentRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DefragmentRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DefragmentRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DefragmentResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DefragmentResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DefragmentResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MoveLeaderRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MoveLeaderRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MoveLeaderRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field TargetID", wireType) - } - m.TargetID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.TargetID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MoveLeaderResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MoveLeaderResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MoveLeaderResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AlarmRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AlarmRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AlarmRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType) - } - m.Action = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Action |= AlarmRequest_AlarmAction(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MemberID", wireType) - } - m.MemberID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.MemberID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Alarm", wireType) - } - m.Alarm = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Alarm |= AlarmType(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AlarmMember) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AlarmMember: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AlarmMember: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MemberID", wireType) - } - m.MemberID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.MemberID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Alarm", wireType) - } - m.Alarm = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Alarm |= AlarmType(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AlarmResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AlarmResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AlarmResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Alarms", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Alarms = append(m.Alarms, &AlarmMember{}) - if err := m.Alarms[len(m.Alarms)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DowngradeRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DowngradeRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DowngradeRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType) - } - m.Action = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Action |= DowngradeRequest_DowngradeAction(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Version = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DowngradeResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DowngradeResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DowngradeResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Version = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DowngradeVersionTestRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DowngradeVersionTestRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DowngradeVersionTestRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Ver", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Ver = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *StatusRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: StatusRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: StatusRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *StatusResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: StatusResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: StatusResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Version = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field DbSize", wireType) - } - m.DbSize = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.DbSize |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Leader", wireType) - } - m.Leader = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Leader |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RaftIndex", wireType) - } - m.RaftIndex = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.RaftIndex |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RaftTerm", wireType) - } - m.RaftTerm = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.RaftTerm |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RaftAppliedIndex", wireType) - } - m.RaftAppliedIndex = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.RaftAppliedIndex |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Errors", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Errors = append(m.Errors, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 9: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field DbSizeInUse", wireType) - } - m.DbSizeInUse = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.DbSizeInUse |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 10: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IsLearner", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.IsLearner = bool(v != 0) - case 11: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StorageVersion", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.StorageVersion = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 12: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field DbSizeQuota", wireType) - } - m.DbSizeQuota = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.DbSizeQuota |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 13: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DowngradeInfo", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.DowngradeInfo == nil { - m.DowngradeInfo = &DowngradeInfo{} - } - if err := m.DowngradeInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DowngradeInfo) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DowngradeInfo: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DowngradeInfo: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Enabled = bool(v != 0) - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TargetVersion", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.TargetVersion = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthEnableRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthEnableRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthEnableRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthDisableRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthDisableRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthDisableRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthStatusRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthStatusRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthenticateRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthenticateRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthenticateRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Password", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Password = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthUserAddRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthUserAddRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthUserAddRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Password", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Password = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Options == nil { - m.Options = &authpb.UserAddOptions{} - } - if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field HashedPassword", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.HashedPassword = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthUserGetRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthUserGetRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthUserGetRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthUserDeleteRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthUserDeleteRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthUserDeleteRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthUserChangePasswordRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthUserChangePasswordRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthUserChangePasswordRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Password", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Password = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field HashedPassword", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.HashedPassword = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthUserGrantRoleRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthUserGrantRoleRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthUserGrantRoleRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.User = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Role = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthUserRevokeRoleRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthUserRevokeRoleRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthUserRevokeRoleRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Role = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthRoleAddRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthRoleAddRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthRoleAddRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthRoleGetRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthRoleGetRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthRoleGetRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Role = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthUserListRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthUserListRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthUserListRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthRoleListRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthRoleListRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthRoleListRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthRoleDeleteRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthRoleDeleteRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthRoleDeleteRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Role = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthRoleGrantPermissionRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthRoleGrantPermissionRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthRoleGrantPermissionRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Perm", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Perm == nil { - m.Perm = &authpb.Permission{} - } - if err := m.Perm.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthRoleRevokePermissionRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthRoleRevokePermissionRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthRoleRevokePermissionRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Role = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) - if m.Key == nil { - m.Key = []byte{} - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RangeEnd", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.RangeEnd = append(m.RangeEnd[:0], dAtA[iNdEx:postIndex]...) - if m.RangeEnd == nil { - m.RangeEnd = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthEnableResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthEnableResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthEnableResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthDisableResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthDisableResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthDisableResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthStatusResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthStatusResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Enabled = bool(v != 0) - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthRevision", wireType) - } - m.AuthRevision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.AuthRevision |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthenticateResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthenticateResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthenticateResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Token = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthUserAddResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthUserAddResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthUserAddResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthUserGetResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthUserGetResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthUserGetResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthUserDeleteResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthUserDeleteResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthUserDeleteResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthUserChangePasswordResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthUserChangePasswordResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthUserChangePasswordResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthUserGrantRoleResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthUserGrantRoleResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthUserGrantRoleResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthUserRevokeRoleResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthUserRevokeRoleResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthUserRevokeRoleResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthRoleAddResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthRoleAddResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthRoleAddResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthRoleGetResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthRoleGetResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthRoleGetResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Perm", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Perm = append(m.Perm, &authpb.Permission{}) - if err := m.Perm[len(m.Perm)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthRoleListResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthRoleListResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthRoleListResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthUserListResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthUserListResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthUserListResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Users", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Users = append(m.Users, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthRoleDeleteResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthRoleDeleteResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthRoleDeleteResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthRoleGrantPermissionResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthRoleGrantPermissionResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthRoleGrantPermissionResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AuthRoleRevokePermissionResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AuthRoleRevokePermissionResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AuthRoleRevokePermissionResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RangeStreamResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RangeStreamResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RangeStreamResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RangeResponse", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRpc - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRpc - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRpc - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.RangeResponse == nil { - m.RangeResponse = &RangeResponse{} - } - if err := m.RangeResponse.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRpc(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRpc - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipRpc(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowRpc - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowRpc - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowRpc - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthRpc - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupRpc - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthRpc - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthRpc = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowRpc = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupRpc = fmt.Errorf("proto: unexpected end of group") -) diff --git a/api/membershippb/membership.pb.go b/api/membershippb/membership.pb.go index fe7b956a944c..1882611f0217 100644 --- a/api/membershippb/membership.pb.go +++ b/api/membershippb/membership.pb.go @@ -1,1541 +1,423 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v3.20.3 // source: membership.proto package membershippb import ( - fmt "fmt" - io "io" - math "math" - math_bits "math/bits" + reflect "reflect" + sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" _ "go.etcd.io/etcd/api/v3/versionpb" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // RaftAttributes represents the raft related attributes of an etcd member. type RaftAttributes struct { + state protoimpl.MessageState `protogen:"open.v1"` // peerURLs is the list of peers in the raft cluster. PeerUrls []string `protobuf:"bytes,1,rep,name=peer_urls,json=peerUrls,proto3" json:"peer_urls,omitempty"` // isLearner indicates if the member is raft learner. - IsLearner bool `protobuf:"varint,2,opt,name=is_learner,json=isLearner,proto3" json:"is_learner,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + IsLearner bool `protobuf:"varint,2,opt,name=is_learner,json=isLearner,proto3" json:"is_learner,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *RaftAttributes) Reset() { *m = RaftAttributes{} } -func (m *RaftAttributes) String() string { return proto.CompactTextString(m) } -func (*RaftAttributes) ProtoMessage() {} -func (*RaftAttributes) Descriptor() ([]byte, []int) { - return fileDescriptor_949fe0d019050ef5, []int{0} +func (x *RaftAttributes) Reset() { + *x = RaftAttributes{} + mi := &file_membership_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *RaftAttributes) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) + +func (x *RaftAttributes) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RaftAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RaftAttributes.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err + +func (*RaftAttributes) ProtoMessage() {} + +func (x *RaftAttributes) ProtoReflect() protoreflect.Message { + mi := &file_membership_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *RaftAttributes) XXX_Merge(src proto.Message) { - xxx_messageInfo_RaftAttributes.Merge(m, src) -} -func (m *RaftAttributes) XXX_Size() int { - return m.Size() -} -func (m *RaftAttributes) XXX_DiscardUnknown() { - xxx_messageInfo_RaftAttributes.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_RaftAttributes proto.InternalMessageInfo +// Deprecated: Use RaftAttributes.ProtoReflect.Descriptor instead. +func (*RaftAttributes) Descriptor() ([]byte, []int) { + return file_membership_proto_rawDescGZIP(), []int{0} +} -func (m *RaftAttributes) GetPeerUrls() []string { - if m != nil { - return m.PeerUrls +func (x *RaftAttributes) GetPeerUrls() []string { + if x != nil { + return x.PeerUrls } return nil } -func (m *RaftAttributes) GetIsLearner() bool { - if m != nil { - return m.IsLearner +func (x *RaftAttributes) GetIsLearner() bool { + if x != nil { + return x.IsLearner } return false } // Attributes represents all the non-raft related attributes of an etcd member. type Attributes struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - ClientUrls []string `protobuf:"bytes,2,rep,name=client_urls,json=clientUrls,proto3" json:"client_urls,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + ClientUrls []string `protobuf:"bytes,2,rep,name=client_urls,json=clientUrls,proto3" json:"client_urls,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *Attributes) Reset() { *m = Attributes{} } -func (m *Attributes) String() string { return proto.CompactTextString(m) } -func (*Attributes) ProtoMessage() {} -func (*Attributes) Descriptor() ([]byte, []int) { - return fileDescriptor_949fe0d019050ef5, []int{1} -} -func (m *Attributes) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) +func (x *Attributes) Reset() { + *x = Attributes{} + mi := &file_membership_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *Attributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Attributes.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Attributes) XXX_Merge(src proto.Message) { - xxx_messageInfo_Attributes.Merge(m, src) -} -func (m *Attributes) XXX_Size() int { - return m.Size() -} -func (m *Attributes) XXX_DiscardUnknown() { - xxx_messageInfo_Attributes.DiscardUnknown(m) -} - -var xxx_messageInfo_Attributes proto.InternalMessageInfo -func (m *Attributes) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Attributes) GetClientUrls() []string { - if m != nil { - return m.ClientUrls - } - return nil +func (x *Attributes) String() string { + return protoimpl.X.MessageStringOf(x) } -type Member struct { - ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - RaftAttributes *RaftAttributes `protobuf:"bytes,2,opt,name=raft_attributes,json=raftAttributes,proto3" json:"raft_attributes,omitempty"` - MemberAttributes *Attributes `protobuf:"bytes,3,opt,name=member_attributes,json=memberAttributes,proto3" json:"member_attributes,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +func (*Attributes) ProtoMessage() {} -func (m *Member) Reset() { *m = Member{} } -func (m *Member) String() string { return proto.CompactTextString(m) } -func (*Member) ProtoMessage() {} -func (*Member) Descriptor() ([]byte, []int) { - return fileDescriptor_949fe0d019050ef5, []int{2} -} -func (m *Member) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Member) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Member.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (x *Attributes) ProtoReflect() protoreflect.Message { + mi := &file_membership_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *Member) XXX_Merge(src proto.Message) { - xxx_messageInfo_Member.Merge(m, src) -} -func (m *Member) XXX_Size() int { - return m.Size() -} -func (m *Member) XXX_DiscardUnknown() { - xxx_messageInfo_Member.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_Member proto.InternalMessageInfo - -func (m *Member) GetID() uint64 { - if m != nil { - return m.ID - } - return 0 +// Deprecated: Use Attributes.ProtoReflect.Descriptor instead. +func (*Attributes) Descriptor() ([]byte, []int) { + return file_membership_proto_rawDescGZIP(), []int{1} } -func (m *Member) GetRaftAttributes() *RaftAttributes { - if m != nil { - return m.RaftAttributes +func (x *Attributes) GetName() string { + if x != nil { + return x.Name } - return nil + return "" } -func (m *Member) GetMemberAttributes() *Attributes { - if m != nil { - return m.MemberAttributes +func (x *Attributes) GetClientUrls() []string { + if x != nil { + return x.ClientUrls } return nil } -type ClusterVersionSetRequest struct { - Ver string `protobuf:"bytes,1,opt,name=ver,proto3" json:"ver,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type Member struct { + state protoimpl.MessageState `protogen:"open.v1"` + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + RaftAttributes *RaftAttributes `protobuf:"bytes,2,opt,name=raft_attributes,json=raftAttributes,proto3" json:"raft_attributes,omitempty"` + MemberAttributes *Attributes `protobuf:"bytes,3,opt,name=member_attributes,json=memberAttributes,proto3" json:"member_attributes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *ClusterVersionSetRequest) Reset() { *m = ClusterVersionSetRequest{} } -func (m *ClusterVersionSetRequest) String() string { return proto.CompactTextString(m) } -func (*ClusterVersionSetRequest) ProtoMessage() {} -func (*ClusterVersionSetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_949fe0d019050ef5, []int{3} -} -func (m *ClusterVersionSetRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ClusterVersionSetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ClusterVersionSetRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ClusterVersionSetRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ClusterVersionSetRequest.Merge(m, src) +func (x *Member) Reset() { + *x = Member{} + mi := &file_membership_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *ClusterVersionSetRequest) XXX_Size() int { - return m.Size() -} -func (m *ClusterVersionSetRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ClusterVersionSetRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ClusterVersionSetRequest proto.InternalMessageInfo -func (m *ClusterVersionSetRequest) GetVer() string { - if m != nil { - return m.Ver - } - return "" +func (x *Member) String() string { + return protoimpl.X.MessageStringOf(x) } -type ClusterMemberAttrSetRequest struct { - Member_ID uint64 `protobuf:"varint,1,opt,name=member_ID,json=memberID,proto3" json:"member_ID,omitempty"` - MemberAttributes *Attributes `protobuf:"bytes,2,opt,name=member_attributes,json=memberAttributes,proto3" json:"member_attributes,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +func (*Member) ProtoMessage() {} -func (m *ClusterMemberAttrSetRequest) Reset() { *m = ClusterMemberAttrSetRequest{} } -func (m *ClusterMemberAttrSetRequest) String() string { return proto.CompactTextString(m) } -func (*ClusterMemberAttrSetRequest) ProtoMessage() {} -func (*ClusterMemberAttrSetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_949fe0d019050ef5, []int{4} -} -func (m *ClusterMemberAttrSetRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ClusterMemberAttrSetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ClusterMemberAttrSetRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (x *Member) ProtoReflect() protoreflect.Message { + mi := &file_membership_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *ClusterMemberAttrSetRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ClusterMemberAttrSetRequest.Merge(m, src) -} -func (m *ClusterMemberAttrSetRequest) XXX_Size() int { - return m.Size() -} -func (m *ClusterMemberAttrSetRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ClusterMemberAttrSetRequest.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_ClusterMemberAttrSetRequest proto.InternalMessageInfo +// Deprecated: Use Member.ProtoReflect.Descriptor instead. +func (*Member) Descriptor() ([]byte, []int) { + return file_membership_proto_rawDescGZIP(), []int{2} +} -func (m *ClusterMemberAttrSetRequest) GetMember_ID() uint64 { - if m != nil { - return m.Member_ID +func (x *Member) GetID() uint64 { + if x != nil { + return x.ID } return 0 } -func (m *ClusterMemberAttrSetRequest) GetMemberAttributes() *Attributes { - if m != nil { - return m.MemberAttributes +func (x *Member) GetRaftAttributes() *RaftAttributes { + if x != nil { + return x.RaftAttributes } return nil } -type DowngradeInfoSetRequest struct { - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - Ver string `protobuf:"bytes,2,opt,name=ver,proto3" json:"ver,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DowngradeInfoSetRequest) Reset() { *m = DowngradeInfoSetRequest{} } -func (m *DowngradeInfoSetRequest) String() string { return proto.CompactTextString(m) } -func (*DowngradeInfoSetRequest) ProtoMessage() {} -func (*DowngradeInfoSetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_949fe0d019050ef5, []int{5} -} -func (m *DowngradeInfoSetRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DowngradeInfoSetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_DowngradeInfoSetRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *DowngradeInfoSetRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DowngradeInfoSetRequest.Merge(m, src) -} -func (m *DowngradeInfoSetRequest) XXX_Size() int { - return m.Size() -} -func (m *DowngradeInfoSetRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DowngradeInfoSetRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_DowngradeInfoSetRequest proto.InternalMessageInfo - -func (m *DowngradeInfoSetRequest) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -func (m *DowngradeInfoSetRequest) GetVer() string { - if m != nil { - return m.Ver +func (x *Member) GetMemberAttributes() *Attributes { + if x != nil { + return x.MemberAttributes } - return "" -} - -func init() { - proto.RegisterType((*RaftAttributes)(nil), "membershippb.RaftAttributes") - proto.RegisterType((*Attributes)(nil), "membershippb.Attributes") - proto.RegisterType((*Member)(nil), "membershippb.Member") - proto.RegisterType((*ClusterVersionSetRequest)(nil), "membershippb.ClusterVersionSetRequest") - proto.RegisterType((*ClusterMemberAttrSetRequest)(nil), "membershippb.ClusterMemberAttrSetRequest") - proto.RegisterType((*DowngradeInfoSetRequest)(nil), "membershippb.DowngradeInfoSetRequest") -} - -func init() { proto.RegisterFile("membership.proto", fileDescriptor_949fe0d019050ef5) } - -var fileDescriptor_949fe0d019050ef5 = []byte{ - // 401 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x52, 0x3f, 0xcf, 0xd2, 0x40, - 0x18, 0xf7, 0xda, 0x37, 0xd0, 0x3e, 0x18, 0xc4, 0x5b, 0x6c, 0x44, 0x6b, 0x83, 0x0b, 0x53, 0x9b, - 0x48, 0x58, 0xdc, 0x54, 0x18, 0x30, 0xe2, 0x70, 0x06, 0x07, 0x17, 0x72, 0x85, 0x07, 0xbc, 0xa4, - 0xb4, 0xf5, 0xee, 0x8a, 0xbb, 0xa3, 0x9f, 0xc0, 0x6f, 0xe1, 0xe4, 0x77, 0x70, 0xf4, 0x23, 0x18, - 0xfc, 0x22, 0xa6, 0xd7, 0x42, 0x4b, 0x74, 0x7a, 0xb7, 0xe7, 0x7e, 0xb9, 0xe7, 0xf7, 0x2f, 0x0f, - 0x0c, 0x0e, 0x78, 0x88, 0x51, 0xaa, 0x8f, 0x22, 0x0f, 0x73, 0x99, 0xe9, 0x8c, 0xde, 0x6d, 0x90, - 0x3c, 0x7e, 0x18, 0xa0, 0xde, 0x6c, 0x23, 0x9e, 0x8b, 0xe8, 0x88, 0x52, 0x89, 0x2c, 0xcd, 0xe3, - 0xf3, 0x54, 0xfd, 0x1f, 0xad, 0xa0, 0xcf, 0xf8, 0x4e, 0xbf, 0xd0, 0x5a, 0x8a, 0xb8, 0xd0, 0xa8, - 0xe8, 0x10, 0xdc, 0x1c, 0x51, 0xae, 0x0b, 0x99, 0x28, 0x8f, 0x04, 0xf6, 0xd8, 0x65, 0x4e, 0x09, - 0xac, 0x64, 0xa2, 0xe8, 0x63, 0x00, 0xa1, 0xd6, 0x09, 0x72, 0x99, 0xa2, 0xf4, 0xac, 0x80, 0x8c, - 0x1d, 0xe6, 0x0a, 0xf5, 0xa6, 0x02, 0x9e, 0x77, 0xbf, 0xfc, 0xf0, 0xec, 0x49, 0x38, 0x1d, 0xbd, - 0x06, 0x68, 0x51, 0x52, 0xb8, 0x49, 0xf9, 0x01, 0x3d, 0x12, 0x90, 0xb1, 0xcb, 0xcc, 0x4c, 0x9f, - 0x40, 0x6f, 0x93, 0x08, 0x4c, 0x75, 0x25, 0x64, 0x19, 0x21, 0xa8, 0xa0, 0x52, 0xaa, 0xe1, 0xfa, - 0x4e, 0xa0, 0xb3, 0x34, 0xa9, 0x68, 0x1f, 0xac, 0xc5, 0xcc, 0xd0, 0xdc, 0x30, 0x6b, 0x31, 0xa3, - 0x73, 0xb8, 0x27, 0xf9, 0x4e, 0xaf, 0xf9, 0x45, 0xcb, 0x78, 0xea, 0x3d, 0x7b, 0x14, 0xb6, 0x7b, - 0x08, 0xaf, 0x23, 0xb2, 0xbe, 0xbc, 0x8e, 0x3c, 0x87, 0xfb, 0xd5, 0xf7, 0x36, 0x91, 0x6d, 0x88, - 0xbc, 0x6b, 0xa2, 0x16, 0x49, 0xdd, 0x7d, 0x83, 0x34, 0x8e, 0xa7, 0xe0, 0xbd, 0x4a, 0x0a, 0xa5, - 0x51, 0xbe, 0xaf, 0xca, 0x7e, 0x87, 0x9a, 0xe1, 0xa7, 0x02, 0x95, 0xa6, 0x03, 0xb0, 0x8f, 0x28, - 0xeb, 0x2a, 0xca, 0xb1, 0x59, 0xfb, 0x4a, 0x60, 0x58, 0xef, 0x2d, 0x2f, 0xdc, 0xad, 0xd5, 0x21, - 0xb8, 0xb5, 0xcd, 0x4b, 0x09, 0x4e, 0x05, 0x98, 0x2a, 0xfe, 0x93, 0xc1, 0xba, 0x7d, 0x86, 0xb7, - 0xf0, 0x60, 0x96, 0x7d, 0x4e, 0xf7, 0x92, 0x6f, 0x71, 0x91, 0xee, 0xb2, 0x96, 0x0f, 0x0f, 0xba, - 0x98, 0xf2, 0x38, 0xc1, 0xad, 0x71, 0xe1, 0xb0, 0xf3, 0xf3, 0x1c, 0xce, 0xfa, 0x37, 0xdc, 0xcb, - 0xe9, 0xcf, 0x93, 0x4f, 0x7e, 0x9d, 0x7c, 0xf2, 0xfb, 0xe4, 0x93, 0x6f, 0x7f, 0xfc, 0x3b, 0x1f, - 0x9e, 0xee, 0xb3, 0xb0, 0xbc, 0xcf, 0x50, 0x64, 0x51, 0x73, 0xa7, 0x93, 0xa8, 0x6d, 0x36, 0xee, - 0x98, 0x33, 0x9d, 0xfc, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x15, 0x23, 0xc3, 0x3f, 0xea, 0x02, 0x00, - 0x00, -} - -func (m *RaftAttributes) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RaftAttributes) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RaftAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.IsLearner { - i-- - if m.IsLearner { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x10 - } - if len(m.PeerUrls) > 0 { - for iNdEx := len(m.PeerUrls) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.PeerUrls[iNdEx]) - copy(dAtA[i:], m.PeerUrls[iNdEx]) - i = encodeVarintMembership(dAtA, i, uint64(len(m.PeerUrls[iNdEx]))) - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func (m *Attributes) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil + return nil } -func (m *Attributes) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type ClusterVersionSetRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ver string `protobuf:"bytes,1,opt,name=ver,proto3" json:"ver,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *Attributes) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.ClientUrls) > 0 { - for iNdEx := len(m.ClientUrls) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.ClientUrls[iNdEx]) - copy(dAtA[i:], m.ClientUrls[iNdEx]) - i = encodeVarintMembership(dAtA, i, uint64(len(m.ClientUrls[iNdEx]))) - i-- - dAtA[i] = 0x12 - } - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintMembership(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +func (x *ClusterVersionSetRequest) Reset() { + *x = ClusterVersionSetRequest{} + mi := &file_membership_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *Member) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (x *ClusterVersionSetRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Member) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +func (*ClusterVersionSetRequest) ProtoMessage() {} -func (m *Member) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.MemberAttributes != nil { - { - size, err := m.MemberAttributes.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintMembership(dAtA, i, uint64(size)) +func (x *ClusterVersionSetRequest) ProtoReflect() protoreflect.Message { + mi := &file_membership_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0x1a - } - if m.RaftAttributes != nil { - { - size, err := m.RaftAttributes.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintMembership(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if m.ID != 0 { - i = encodeVarintMembership(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *ClusterVersionSetRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err + return ms } - return dAtA[:n], nil -} - -func (m *ClusterVersionSetRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + return mi.MessageOf(x) } -func (m *ClusterVersionSetRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Ver) > 0 { - i -= len(m.Ver) - copy(dAtA[i:], m.Ver) - i = encodeVarintMembership(dAtA, i, uint64(len(m.Ver))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +// Deprecated: Use ClusterVersionSetRequest.ProtoReflect.Descriptor instead. +func (*ClusterVersionSetRequest) Descriptor() ([]byte, []int) { + return file_membership_proto_rawDescGZIP(), []int{3} } -func (m *ClusterMemberAttrSetRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (x *ClusterVersionSetRequest) GetVer() string { + if x != nil { + return x.Ver } - return dAtA[:n], nil + return "" } -func (m *ClusterMemberAttrSetRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type ClusterMemberAttrSetRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Member_ID uint64 `protobuf:"varint,1,opt,name=member_ID,json=memberID,proto3" json:"member_ID,omitempty"` + MemberAttributes *Attributes `protobuf:"bytes,2,opt,name=member_attributes,json=memberAttributes,proto3" json:"member_attributes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *ClusterMemberAttrSetRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.MemberAttributes != nil { - { - size, err := m.MemberAttributes.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintMembership(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if m.Member_ID != 0 { - i = encodeVarintMembership(dAtA, i, uint64(m.Member_ID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil +func (x *ClusterMemberAttrSetRequest) Reset() { + *x = ClusterMemberAttrSetRequest{} + mi := &file_membership_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *DowngradeInfoSetRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (x *ClusterMemberAttrSetRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DowngradeInfoSetRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +func (*ClusterMemberAttrSetRequest) ProtoMessage() {} -func (m *DowngradeInfoSetRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Ver) > 0 { - i -= len(m.Ver) - copy(dAtA[i:], m.Ver) - i = encodeVarintMembership(dAtA, i, uint64(len(m.Ver))) - i-- - dAtA[i] = 0x12 - } - if m.Enabled { - i-- - if m.Enabled { - dAtA[i] = 1 - } else { - dAtA[i] = 0 +func (x *ClusterMemberAttrSetRequest) ProtoReflect() protoreflect.Message { + mi := &file_membership_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0x8 + return ms } - return len(dAtA) - i, nil + return mi.MessageOf(x) } -func encodeVarintMembership(dAtA []byte, offset int, v uint64) int { - offset -= sovMembership(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *RaftAttributes) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.PeerUrls) > 0 { - for _, s := range m.PeerUrls { - l = len(s) - n += 1 + l + sovMembership(uint64(l)) - } - } - if m.IsLearner { - n += 2 - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +// Deprecated: Use ClusterMemberAttrSetRequest.ProtoReflect.Descriptor instead. +func (*ClusterMemberAttrSetRequest) Descriptor() ([]byte, []int) { + return file_membership_proto_rawDescGZIP(), []int{4} } -func (m *Attributes) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovMembership(uint64(l)) - } - if len(m.ClientUrls) > 0 { - for _, s := range m.ClientUrls { - l = len(s) - n += 1 + l + sovMembership(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) +func (x *ClusterMemberAttrSetRequest) GetMember_ID() uint64 { + if x != nil { + return x.Member_ID } - return n + return 0 } -func (m *Member) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovMembership(uint64(m.ID)) - } - if m.RaftAttributes != nil { - l = m.RaftAttributes.Size() - n += 1 + l + sovMembership(uint64(l)) - } - if m.MemberAttributes != nil { - l = m.MemberAttributes.Size() - n += 1 + l + sovMembership(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) +func (x *ClusterMemberAttrSetRequest) GetMemberAttributes() *Attributes { + if x != nil { + return x.MemberAttributes } - return n + return nil } -func (m *ClusterVersionSetRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Ver) - if l > 0 { - n += 1 + l + sovMembership(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +type DowngradeInfoSetRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + Ver string `protobuf:"bytes,2,opt,name=ver,proto3" json:"ver,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *ClusterMemberAttrSetRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Member_ID != 0 { - n += 1 + sovMembership(uint64(m.Member_ID)) - } - if m.MemberAttributes != nil { - l = m.MemberAttributes.Size() - n += 1 + l + sovMembership(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +func (x *DowngradeInfoSetRequest) Reset() { + *x = DowngradeInfoSetRequest{} + mi := &file_membership_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *DowngradeInfoSetRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Enabled { - n += 2 - } - l = len(m.Ver) - if l > 0 { - n += 1 + l + sovMembership(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +func (x *DowngradeInfoSetRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func sovMembership(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozMembership(x uint64) (n int) { - return sovMembership(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *RaftAttributes) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RaftAttributes: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RaftAttributes: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PeerUrls", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthMembership - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthMembership - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.PeerUrls = append(m.PeerUrls, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IsLearner", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.IsLearner = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipMembership(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthMembership - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } +func (*DowngradeInfoSetRequest) ProtoMessage() {} - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Attributes) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Attributes: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Attributes: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthMembership - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthMembership - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClientUrls", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthMembership - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthMembership - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ClientUrls = append(m.ClientUrls, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipMembership(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthMembership - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy +func (x *DowngradeInfoSetRequest) ProtoReflect() protoreflect.Message { + mi := &file_membership_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } + return ms } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil + return mi.MessageOf(x) } -func (m *Member) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Member: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Member: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RaftAttributes", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthMembership - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthMembership - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.RaftAttributes == nil { - m.RaftAttributes = &RaftAttributes{} - } - if err := m.RaftAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MemberAttributes", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthMembership - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthMembership - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.MemberAttributes == nil { - m.MemberAttributes = &Attributes{} - } - if err := m.MemberAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipMembership(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthMembership - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil +// Deprecated: Use DowngradeInfoSetRequest.ProtoReflect.Descriptor instead. +func (*DowngradeInfoSetRequest) Descriptor() ([]byte, []int) { + return file_membership_proto_rawDescGZIP(), []int{5} } -func (m *ClusterVersionSetRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ClusterVersionSetRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ClusterVersionSetRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Ver", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthMembership - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthMembership - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Ver = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipMembership(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthMembership - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF +func (x *DowngradeInfoSetRequest) GetEnabled() bool { + if x != nil { + return x.Enabled } - return nil + return false } -func (m *ClusterMemberAttrSetRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ClusterMemberAttrSetRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ClusterMemberAttrSetRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Member_ID", wireType) - } - m.Member_ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Member_ID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MemberAttributes", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthMembership - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthMembership - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.MemberAttributes == nil { - m.MemberAttributes = &Attributes{} - } - if err := m.MemberAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipMembership(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthMembership - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF +func (x *DowngradeInfoSetRequest) GetVer() string { + if x != nil { + return x.Ver } - return nil + return "" } -func (m *DowngradeInfoSetRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DowngradeInfoSetRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DowngradeInfoSetRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Enabled = bool(v != 0) - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Ver", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMembership - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthMembership - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthMembership - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Ver = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipMembership(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthMembership - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipMembership(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMembership - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMembership - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMembership - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthMembership - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupMembership - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthMembership - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} +var File_membership_proto protoreflect.FileDescriptor + +const file_membership_proto_rawDesc = "" + + "\n" + + "\x10membership.proto\x12\fmembershippb\x1a etcd/api/versionpb/version.proto\"U\n" + + "\x0eRaftAttributes\x12\x1b\n" + + "\tpeer_urls\x18\x01 \x03(\tR\bpeerUrls\x12\x1d\n" + + "\n" + + "is_learner\x18\x02 \x01(\bR\tisLearner:\a\x82\xb5\x18\x033.5\"J\n" + + "\n" + + "Attributes\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n" + + "\vclient_urls\x18\x02 \x03(\tR\n" + + "clientUrls:\a\x82\xb5\x18\x033.5\"\xaf\x01\n" + + "\x06Member\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x04R\x02ID\x12E\n" + + "\x0fraft_attributes\x18\x02 \x01(\v2\x1c.membershippb.RaftAttributesR\x0eraftAttributes\x12E\n" + + "\x11member_attributes\x18\x03 \x01(\v2\x18.membershippb.AttributesR\x10memberAttributes:\a\x82\xb5\x18\x033.5\"5\n" + + "\x18ClusterVersionSetRequest\x12\x10\n" + + "\x03ver\x18\x01 \x01(\tR\x03ver:\a\x82\xb5\x18\x033.5\"\x8a\x01\n" + + "\x1bClusterMemberAttrSetRequest\x12\x1b\n" + + "\tmember_ID\x18\x01 \x01(\x04R\bmemberID\x12E\n" + + "\x11member_attributes\x18\x02 \x01(\v2\x18.membershippb.AttributesR\x10memberAttributes:\a\x82\xb5\x18\x033.5\"N\n" + + "\x17DowngradeInfoSetRequest\x12\x18\n" + + "\aenabled\x18\x01 \x01(\bR\aenabled\x12\x10\n" + + "\x03ver\x18\x02 \x01(\tR\x03ver:\a\x82\xb5\x18\x033.5B%Z#go.etcd.io/etcd/api/v3/membershippbb\x06proto3" var ( - ErrInvalidLengthMembership = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowMembership = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupMembership = fmt.Errorf("proto: unexpected end of group") + file_membership_proto_rawDescOnce sync.Once + file_membership_proto_rawDescData []byte ) + +func file_membership_proto_rawDescGZIP() []byte { + file_membership_proto_rawDescOnce.Do(func() { + file_membership_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_membership_proto_rawDesc), len(file_membership_proto_rawDesc))) + }) + return file_membership_proto_rawDescData +} + +var file_membership_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_membership_proto_goTypes = []any{ + (*RaftAttributes)(nil), // 0: membershippb.RaftAttributes + (*Attributes)(nil), // 1: membershippb.Attributes + (*Member)(nil), // 2: membershippb.Member + (*ClusterVersionSetRequest)(nil), // 3: membershippb.ClusterVersionSetRequest + (*ClusterMemberAttrSetRequest)(nil), // 4: membershippb.ClusterMemberAttrSetRequest + (*DowngradeInfoSetRequest)(nil), // 5: membershippb.DowngradeInfoSetRequest +} +var file_membership_proto_depIdxs = []int32{ + 0, // 0: membershippb.Member.raft_attributes:type_name -> membershippb.RaftAttributes + 1, // 1: membershippb.Member.member_attributes:type_name -> membershippb.Attributes + 1, // 2: membershippb.ClusterMemberAttrSetRequest.member_attributes:type_name -> membershippb.Attributes + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_membership_proto_init() } +func file_membership_proto_init() { + if File_membership_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_membership_proto_rawDesc), len(file_membership_proto_rawDesc)), + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_membership_proto_goTypes, + DependencyIndexes: file_membership_proto_depIdxs, + MessageInfos: file_membership_proto_msgTypes, + }.Build() + File_membership_proto = out.File + file_membership_proto_goTypes = nil + file_membership_proto_depIdxs = nil +} diff --git a/api/mvccpb/kv.pb.go b/api/mvccpb/kv.pb.go index 5cda10d01587..73e72f966334 100644 --- a/api/mvccpb/kv.pb.go +++ b/api/mvccpb/kv.pb.go @@ -1,27 +1,26 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v3.20.3 // source: kv.proto package mvccpb import ( - fmt "fmt" - io "io" - math "math" - math_bits "math/bits" + reflect "reflect" + sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type Event_EventType int32 @@ -30,25 +29,47 @@ const ( Event_DELETE Event_EventType = 1 ) -var Event_EventType_name = map[int32]string{ - 0: "PUT", - 1: "DELETE", -} +// Enum value maps for Event_EventType. +var ( + Event_EventType_name = map[int32]string{ + 0: "PUT", + 1: "DELETE", + } + Event_EventType_value = map[string]int32{ + "PUT": 0, + "DELETE": 1, + } +) -var Event_EventType_value = map[string]int32{ - "PUT": 0, - "DELETE": 1, +func (x Event_EventType) Enum() *Event_EventType { + p := new(Event_EventType) + *p = x + return p } func (x Event_EventType) String() string { - return proto.EnumName(Event_EventType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Event_EventType) Descriptor() protoreflect.EnumDescriptor { + return file_kv_proto_enumTypes[0].Descriptor() +} + +func (Event_EventType) Type() protoreflect.EnumType { + return &file_kv_proto_enumTypes[0] +} + +func (x Event_EventType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use Event_EventType.Descriptor instead. func (Event_EventType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2216fe83c9c12408, []int{1, 0} + return file_kv_proto_rawDescGZIP(), []int{1, 0} } type KeyValue struct { + state protoimpl.MessageState `protogen:"open.v1"` // key is the key in bytes. An empty key is not allowed. Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // create_revision is the revision of last creation on this key. @@ -64,88 +85,85 @@ type KeyValue struct { // lease is the ID of the lease that attached to key. // When the attached lease expires, the key will be deleted. // If lease is 0, then no lease is attached to the key. - Lease int64 `protobuf:"varint,6,opt,name=lease,proto3" json:"lease,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Lease int64 `protobuf:"varint,6,opt,name=lease,proto3" json:"lease,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *KeyValue) Reset() { *m = KeyValue{} } -func (m *KeyValue) String() string { return proto.CompactTextString(m) } -func (*KeyValue) ProtoMessage() {} -func (*KeyValue) Descriptor() ([]byte, []int) { - return fileDescriptor_2216fe83c9c12408, []int{0} +func (x *KeyValue) Reset() { + *x = KeyValue{} + mi := &file_kv_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *KeyValue) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) + +func (x *KeyValue) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *KeyValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_KeyValue.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err + +func (*KeyValue) ProtoMessage() {} + +func (x *KeyValue) ProtoReflect() protoreflect.Message { + mi := &file_kv_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *KeyValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_KeyValue.Merge(m, src) -} -func (m *KeyValue) XXX_Size() int { - return m.Size() -} -func (m *KeyValue) XXX_DiscardUnknown() { - xxx_messageInfo_KeyValue.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_KeyValue proto.InternalMessageInfo +// Deprecated: Use KeyValue.ProtoReflect.Descriptor instead. +func (*KeyValue) Descriptor() ([]byte, []int) { + return file_kv_proto_rawDescGZIP(), []int{0} +} -func (m *KeyValue) GetKey() []byte { - if m != nil { - return m.Key +func (x *KeyValue) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func (m *KeyValue) GetCreateRevision() int64 { - if m != nil { - return m.CreateRevision +func (x *KeyValue) GetCreateRevision() int64 { + if x != nil { + return x.CreateRevision } return 0 } -func (m *KeyValue) GetModRevision() int64 { - if m != nil { - return m.ModRevision +func (x *KeyValue) GetModRevision() int64 { + if x != nil { + return x.ModRevision } return 0 } -func (m *KeyValue) GetVersion() int64 { - if m != nil { - return m.Version +func (x *KeyValue) GetVersion() int64 { + if x != nil { + return x.Version } return 0 } -func (m *KeyValue) GetValue() []byte { - if m != nil { - return m.Value +func (x *KeyValue) GetValue() []byte { + if x != nil { + return x.Value } return nil } -func (m *KeyValue) GetLease() int64 { - if m != nil { - return m.Lease +func (x *KeyValue) GetLease() int64 { + if x != nil { + return x.Lease } return 0 } type Event struct { + state protoimpl.MessageState `protogen:"open.v1"` // type is the kind of event. If type is a PUT, it indicates // new data has been stored to the key. If type is a DELETE, // it indicates the key was deleted. @@ -157,705 +175,134 @@ type Event struct { // its modification revision set to the revision of deletion. Kv *KeyValue `protobuf:"bytes,2,opt,name=kv,proto3" json:"kv,omitempty"` // prev_kv holds the key-value pair before the event happens. - PrevKv *KeyValue `protobuf:"bytes,3,opt,name=prev_kv,json=prevKv,proto3" json:"prev_kv,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Event) Reset() { *m = Event{} } -func (m *Event) String() string { return proto.CompactTextString(m) } -func (*Event) ProtoMessage() {} -func (*Event) Descriptor() ([]byte, []int) { - return fileDescriptor_2216fe83c9c12408, []int{1} -} -func (m *Event) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Event) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Event.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Event) XXX_Merge(src proto.Message) { - xxx_messageInfo_Event.Merge(m, src) -} -func (m *Event) XXX_Size() int { - return m.Size() -} -func (m *Event) XXX_DiscardUnknown() { - xxx_messageInfo_Event.DiscardUnknown(m) -} - -var xxx_messageInfo_Event proto.InternalMessageInfo - -func (m *Event) GetType() Event_EventType { - if m != nil { - return m.Type - } - return Event_PUT -} - -func (m *Event) GetKv() *KeyValue { - if m != nil { - return m.Kv - } - return nil -} - -func (m *Event) GetPrevKv() *KeyValue { - if m != nil { - return m.PrevKv - } - return nil -} - -func init() { - proto.RegisterEnum("mvccpb.Event_EventType", Event_EventType_name, Event_EventType_value) - proto.RegisterType((*KeyValue)(nil), "mvccpb.KeyValue") - proto.RegisterType((*Event)(nil), "mvccpb.Event") -} - -func init() { proto.RegisterFile("kv.proto", fileDescriptor_2216fe83c9c12408) } - -var fileDescriptor_2216fe83c9c12408 = []byte{ - // 308 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xc1, 0x4e, 0xb3, 0x40, - 0x14, 0x85, 0x3b, 0xa5, 0xa5, 0xfd, 0x6f, 0x9b, 0xfe, 0x64, 0x62, 0x22, 0x1b, 0x09, 0x76, 0x63, - 0x8d, 0x09, 0x24, 0xed, 0x1b, 0x18, 0x59, 0xd5, 0x85, 0x21, 0xe8, 0xc2, 0x4d, 0x43, 0xe1, 0xc6, - 0x10, 0x4a, 0x67, 0x42, 0xf1, 0x26, 0xbc, 0x89, 0x7b, 0xf7, 0x3e, 0x87, 0x4b, 0x1f, 0xc1, 0xe0, - 0x8b, 0x18, 0x66, 0xa4, 0x6e, 0xdc, 0xc0, 0x9c, 0x73, 0xbe, 0xcc, 0x3d, 0x37, 0x03, 0xe3, 0x9c, - 0x3c, 0x59, 0x8a, 0x4a, 0x70, 0xb3, 0xa0, 0x24, 0x91, 0xdb, 0xf9, 0x1b, 0x83, 0xf1, 0x1a, 0xeb, - 0x87, 0x78, 0xf7, 0x8c, 0xdc, 0x02, 0x23, 0xc7, 0xda, 0x66, 0x2e, 0x5b, 0x4c, 0xc3, 0xf6, 0xc8, - 0x2f, 0xe0, 0x7f, 0x52, 0x62, 0x5c, 0xe1, 0xa6, 0x44, 0xca, 0x0e, 0x99, 0xd8, 0xdb, 0x7d, 0x97, - 0x2d, 0x8c, 0x70, 0xa6, 0xed, 0xf0, 0xc7, 0xe5, 0xe7, 0x30, 0x2d, 0x44, 0xfa, 0x4b, 0x19, 0x8a, - 0x9a, 0x14, 0x22, 0x3d, 0x22, 0x36, 0x8c, 0x08, 0x4b, 0x95, 0x0e, 0x54, 0xda, 0x49, 0x7e, 0x02, - 0x43, 0x6a, 0x0b, 0xd8, 0x43, 0x35, 0x59, 0x8b, 0xd6, 0xdd, 0x61, 0x7c, 0x40, 0xdb, 0x54, 0xb4, - 0x16, 0xf3, 0x57, 0x06, 0xc3, 0x80, 0x70, 0x5f, 0xf1, 0x2b, 0x18, 0x54, 0xb5, 0x44, 0x55, 0x77, - 0xb6, 0x3c, 0xf5, 0xf4, 0x46, 0x9e, 0x0a, 0xf5, 0x37, 0xaa, 0x25, 0x86, 0x0a, 0xe2, 0x2e, 0xf4, - 0x73, 0x52, 0xdd, 0x27, 0x4b, 0xab, 0x43, 0xbb, 0xc5, 0xc3, 0x7e, 0x4e, 0xfc, 0x12, 0x46, 0xb2, - 0x44, 0xda, 0xe4, 0xa4, 0xca, 0xff, 0x85, 0x99, 0x2d, 0xb0, 0xa6, 0xb9, 0x0b, 0xff, 0x8e, 0xf7, - 0xf3, 0x11, 0x18, 0x77, 0xf7, 0x91, 0xd5, 0xe3, 0x00, 0xe6, 0x4d, 0x70, 0x1b, 0x44, 0x81, 0xc5, - 0xae, 0xfd, 0xf7, 0xc6, 0x61, 0x1f, 0x8d, 0xc3, 0x3e, 0x1b, 0x87, 0xbd, 0x7c, 0x39, 0xbd, 0xc7, - 0xb3, 0x27, 0xe1, 0x61, 0x95, 0xa4, 0x5e, 0x26, 0xfc, 0xf6, 0xef, 0xc7, 0x32, 0xf3, 0x69, 0xe5, - 0xeb, 0x19, 0x5b, 0x53, 0x3d, 0xcb, 0xea, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xcb, 0xc0, 0x08, 0x63, - 0xa2, 0x01, 0x00, 0x00, -} - -func (m *KeyValue) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil + PrevKv *KeyValue `protobuf:"bytes,3,opt,name=prev_kv,json=prevKv,proto3" json:"prev_kv,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *KeyValue) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (x *Event) Reset() { + *x = Event{} + mi := &file_kv_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *KeyValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Lease != 0 { - i = encodeVarintKv(dAtA, i, uint64(m.Lease)) - i-- - dAtA[i] = 0x30 - } - if len(m.Value) > 0 { - i -= len(m.Value) - copy(dAtA[i:], m.Value) - i = encodeVarintKv(dAtA, i, uint64(len(m.Value))) - i-- - dAtA[i] = 0x2a - } - if m.Version != 0 { - i = encodeVarintKv(dAtA, i, uint64(m.Version)) - i-- - dAtA[i] = 0x20 - } - if m.ModRevision != 0 { - i = encodeVarintKv(dAtA, i, uint64(m.ModRevision)) - i-- - dAtA[i] = 0x18 - } - if m.CreateRevision != 0 { - i = encodeVarintKv(dAtA, i, uint64(m.CreateRevision)) - i-- - dAtA[i] = 0x10 - } - if len(m.Key) > 0 { - i -= len(m.Key) - copy(dAtA[i:], m.Key) - i = encodeVarintKv(dAtA, i, uint64(len(m.Key))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +func (x *Event) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Event) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Event) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +func (*Event) ProtoMessage() {} -func (m *Event) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.PrevKv != nil { - { - size, err := m.PrevKv.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintKv(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if m.Kv != nil { - { - size, err := m.Kv.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintKv(dAtA, i, uint64(size)) +func (x *Event) ProtoReflect() protoreflect.Message { + mi := &file_kv_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0x12 + return ms } - if m.Type != 0 { - i = encodeVarintKv(dAtA, i, uint64(m.Type)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil + return mi.MessageOf(x) } -func encodeVarintKv(dAtA []byte, offset int, v uint64) int { - offset -= sovKv(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *KeyValue) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Key) - if l > 0 { - n += 1 + l + sovKv(uint64(l)) - } - if m.CreateRevision != 0 { - n += 1 + sovKv(uint64(m.CreateRevision)) - } - if m.ModRevision != 0 { - n += 1 + sovKv(uint64(m.ModRevision)) - } - if m.Version != 0 { - n += 1 + sovKv(uint64(m.Version)) - } - l = len(m.Value) - if l > 0 { - n += 1 + l + sovKv(uint64(l)) - } - if m.Lease != 0 { - n += 1 + sovKv(uint64(m.Lease)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +// Deprecated: Use Event.ProtoReflect.Descriptor instead. +func (*Event) Descriptor() ([]byte, []int) { + return file_kv_proto_rawDescGZIP(), []int{1} } -func (m *Event) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Type != 0 { - n += 1 + sovKv(uint64(m.Type)) +func (x *Event) GetType() Event_EventType { + if x != nil { + return x.Type } - if m.Kv != nil { - l = m.Kv.Size() - n += 1 + l + sovKv(uint64(l)) - } - if m.PrevKv != nil { - l = m.PrevKv.Size() - n += 1 + l + sovKv(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n + return Event_PUT } -func sovKv(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozKv(x uint64) (n int) { - return sovKv(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *KeyValue) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKv - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: KeyValue: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: KeyValue: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKv - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthKv - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthKv - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) - if m.Key == nil { - m.Key = []byte{} - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field CreateRevision", wireType) - } - m.CreateRevision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKv - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.CreateRevision |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ModRevision", wireType) - } - m.ModRevision = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKv - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ModRevision |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) - } - m.Version = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKv - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Version |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKv - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthKv - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthKv - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...) - if m.Value == nil { - m.Value = []byte{} - } - iNdEx = postIndex - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Lease", wireType) - } - m.Lease = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKv - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Lease |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipKv(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthKv - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF +func (x *Event) GetKv() *KeyValue { + if x != nil { + return x.Kv } return nil } -func (m *Event) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKv - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Event: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Event: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) - } - m.Type = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKv - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Type |= Event_EventType(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Kv", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKv - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthKv - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthKv - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Kv == nil { - m.Kv = &KeyValue{} - } - if err := m.Kv.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PrevKv", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKv - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthKv - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthKv - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.PrevKv == nil { - m.PrevKv = &KeyValue{} - } - if err := m.PrevKv.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipKv(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthKv - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF +func (x *Event) GetPrevKv() *KeyValue { + if x != nil { + return x.PrevKv } return nil } -func skipKv(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowKv - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowKv - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowKv - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthKv - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupKv - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthKv - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} + +var File_kv_proto protoreflect.FileDescriptor + +const file_kv_proto_rawDesc = "" + + "\n" + + "\bkv.proto\x12\x06mvccpb\"\xae\x01\n" + + "\bKeyValue\x12\x10\n" + + "\x03key\x18\x01 \x01(\fR\x03key\x12'\n" + + "\x0fcreate_revision\x18\x02 \x01(\x03R\x0ecreateRevision\x12!\n" + + "\fmod_revision\x18\x03 \x01(\x03R\vmodRevision\x12\x18\n" + + "\aversion\x18\x04 \x01(\x03R\aversion\x12\x14\n" + + "\x05value\x18\x05 \x01(\fR\x05value\x12\x14\n" + + "\x05lease\x18\x06 \x01(\x03R\x05lease\"\xa3\x01\n" + + "\x05Event\x12+\n" + + "\x04type\x18\x01 \x01(\x0e2\x17.mvccpb.Event.EventTypeR\x04type\x12 \n" + + "\x02kv\x18\x02 \x01(\v2\x10.mvccpb.KeyValueR\x02kv\x12)\n" + + "\aprev_kv\x18\x03 \x01(\v2\x10.mvccpb.KeyValueR\x06prevKv\" \n" + + "\tEventType\x12\a\n" + + "\x03PUT\x10\x00\x12\n" + + "\n" + + "\x06DELETE\x10\x01B\x1fZ\x1dgo.etcd.io/etcd/api/v3/mvccpbb\x06proto3" var ( - ErrInvalidLengthKv = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowKv = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupKv = fmt.Errorf("proto: unexpected end of group") + file_kv_proto_rawDescOnce sync.Once + file_kv_proto_rawDescData []byte ) + +func file_kv_proto_rawDescGZIP() []byte { + file_kv_proto_rawDescOnce.Do(func() { + file_kv_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kv_proto_rawDesc), len(file_kv_proto_rawDesc))) + }) + return file_kv_proto_rawDescData +} + +var file_kv_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_kv_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_kv_proto_goTypes = []any{ + (Event_EventType)(0), // 0: mvccpb.Event.EventType + (*KeyValue)(nil), // 1: mvccpb.KeyValue + (*Event)(nil), // 2: mvccpb.Event +} +var file_kv_proto_depIdxs = []int32{ + 0, // 0: mvccpb.Event.type:type_name -> mvccpb.Event.EventType + 1, // 1: mvccpb.Event.kv:type_name -> mvccpb.KeyValue + 1, // 2: mvccpb.Event.prev_kv:type_name -> mvccpb.KeyValue + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_kv_proto_init() } +func file_kv_proto_init() { + if File_kv_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_kv_proto_rawDesc), len(file_kv_proto_rawDesc)), + NumEnums: 1, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_kv_proto_goTypes, + DependencyIndexes: file_kv_proto_depIdxs, + EnumInfos: file_kv_proto_enumTypes, + MessageInfos: file_kv_proto_msgTypes, + }.Build() + File_kv_proto = out.File + file_kv_proto_goTypes = nil + file_kv_proto_depIdxs = nil +} diff --git a/api/versionpb/version.pb.go b/api/versionpb/version.pb.go index 62ee5a63a8f8..8653baa7fbaa 100644 --- a/api/versionpb/version.pb.go +++ b/api/versionpb/version.pb.go @@ -1,89 +1,134 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v3.20.3 // source: version.proto package versionpb import ( - fmt "fmt" - math "math" + reflect "reflect" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" descriptorpb "google.golang.org/protobuf/types/descriptorpb" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -var E_EtcdVersionMsg = &proto.ExtensionDesc{ - ExtendedType: (*descriptorpb.MessageOptions)(nil), - ExtensionType: (*string)(nil), - Field: 50000, - Name: "versionpb.etcd_version_msg", - Tag: "bytes,50000,opt,name=etcd_version_msg", - Filename: "version.proto", +var file_version_proto_extTypes = []protoimpl.ExtensionInfo{ + { + ExtendedType: (*descriptorpb.MessageOptions)(nil), + ExtensionType: (*string)(nil), + Field: 50000, + Name: "versionpb.etcd_version_msg", + Tag: "bytes,50000,opt,name=etcd_version_msg", + Filename: "version.proto", + }, + { + ExtendedType: (*descriptorpb.FieldOptions)(nil), + ExtensionType: (*string)(nil), + Field: 50001, + Name: "versionpb.etcd_version_field", + Tag: "bytes,50001,opt,name=etcd_version_field", + Filename: "version.proto", + }, + { + ExtendedType: (*descriptorpb.EnumOptions)(nil), + ExtensionType: (*string)(nil), + Field: 50002, + Name: "versionpb.etcd_version_enum", + Tag: "bytes,50002,opt,name=etcd_version_enum", + Filename: "version.proto", + }, + { + ExtendedType: (*descriptorpb.EnumValueOptions)(nil), + ExtensionType: (*string)(nil), + Field: 50003, + Name: "versionpb.etcd_version_enum_value", + Tag: "bytes,50003,opt,name=etcd_version_enum_value", + Filename: "version.proto", + }, } -var E_EtcdVersionField = &proto.ExtensionDesc{ - ExtendedType: (*descriptorpb.FieldOptions)(nil), - ExtensionType: (*string)(nil), - Field: 50001, - Name: "versionpb.etcd_version_field", - Tag: "bytes,50001,opt,name=etcd_version_field", - Filename: "version.proto", -} +// Extension fields to descriptorpb.MessageOptions. +var ( + // optional string etcd_version_msg = 50000; + E_EtcdVersionMsg = &file_version_proto_extTypes[0] +) -var E_EtcdVersionEnum = &proto.ExtensionDesc{ - ExtendedType: (*descriptorpb.EnumOptions)(nil), - ExtensionType: (*string)(nil), - Field: 50002, - Name: "versionpb.etcd_version_enum", - Tag: "bytes,50002,opt,name=etcd_version_enum", - Filename: "version.proto", -} +// Extension fields to descriptorpb.FieldOptions. +var ( + // optional string etcd_version_field = 50001; + E_EtcdVersionField = &file_version_proto_extTypes[1] +) -var E_EtcdVersionEnumValue = &proto.ExtensionDesc{ - ExtendedType: (*descriptorpb.EnumValueOptions)(nil), - ExtensionType: (*string)(nil), - Field: 50003, - Name: "versionpb.etcd_version_enum_value", - Tag: "bytes,50003,opt,name=etcd_version_enum_value", - Filename: "version.proto", -} +// Extension fields to descriptorpb.EnumOptions. +var ( + // optional string etcd_version_enum = 50002; + E_EtcdVersionEnum = &file_version_proto_extTypes[2] +) -func init() { - proto.RegisterExtension(E_EtcdVersionMsg) - proto.RegisterExtension(E_EtcdVersionField) - proto.RegisterExtension(E_EtcdVersionEnum) - proto.RegisterExtension(E_EtcdVersionEnumValue) -} +// Extension fields to descriptorpb.EnumValueOptions. +var ( + // optional string etcd_version_enum_value = 50003; + E_EtcdVersionEnumValue = &file_version_proto_extTypes[3] +) + +var File_version_proto protoreflect.FileDescriptor -func init() { proto.RegisterFile("version.proto", fileDescriptor_7d2c07d79758f814) } +const file_version_proto_rawDesc = "" + + "\n" + + "\rversion.proto\x12\tversionpb\x1a google/protobuf/descriptor.proto:N\n" + + "\x10etcd_version_msg\x12\x1f.google.protobuf.MessageOptions\x18І\x03 \x01(\tR\x0eetcdVersionMsg\x88\x01\x01:P\n" + + "\x12etcd_version_field\x12\x1d.google.protobuf.FieldOptions\x18ц\x03 \x01(\tR\x10etcdVersionField\x88\x01\x01:M\n" + + "\x11etcd_version_enum\x12\x1c.google.protobuf.EnumOptions\x18҆\x03 \x01(\tR\x0fetcdVersionEnum\x88\x01\x01:]\n" + + "\x17etcd_version_enum_value\x12!.google.protobuf.EnumValueOptions\x18ӆ\x03 \x01(\tR\x14etcdVersionEnumValue\x88\x01\x01B\"Z go.etcd.io/etcd/api/v3/versionpbb\x06proto3" + +var file_version_proto_goTypes = []any{ + (*descriptorpb.MessageOptions)(nil), // 0: google.protobuf.MessageOptions + (*descriptorpb.FieldOptions)(nil), // 1: google.protobuf.FieldOptions + (*descriptorpb.EnumOptions)(nil), // 2: google.protobuf.EnumOptions + (*descriptorpb.EnumValueOptions)(nil), // 3: google.protobuf.EnumValueOptions +} +var file_version_proto_depIdxs = []int32{ + 0, // 0: versionpb.etcd_version_msg:extendee -> google.protobuf.MessageOptions + 1, // 1: versionpb.etcd_version_field:extendee -> google.protobuf.FieldOptions + 2, // 2: versionpb.etcd_version_enum:extendee -> google.protobuf.EnumOptions + 3, // 3: versionpb.etcd_version_enum_value:extendee -> google.protobuf.EnumValueOptions + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 0, // [0:4] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} -var fileDescriptor_7d2c07d79758f814 = []byte{ - // 271 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2d, 0x4b, 0x2d, 0x2a, - 0xce, 0xcc, 0xcf, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x84, 0x72, 0x0b, 0x92, 0xa4, - 0x14, 0xd2, 0xf3, 0xf3, 0xd3, 0x73, 0x52, 0xf5, 0xc1, 0x12, 0x49, 0xa5, 0x69, 0xfa, 0x29, 0xa9, - 0xc5, 0xc9, 0x45, 0x99, 0x05, 0x25, 0xf9, 0x45, 0x10, 0xc5, 0x56, 0x7e, 0x5c, 0x02, 0xa9, 0x25, - 0xc9, 0x29, 0xf1, 0x50, 0x3d, 0xf1, 0xb9, 0xc5, 0xe9, 0x42, 0xf2, 0x7a, 0x10, 0x6d, 0x7a, 0x30, - 0x6d, 0x7a, 0xbe, 0xa9, 0xc5, 0xc5, 0x89, 0xe9, 0xa9, 0xfe, 0x05, 0x25, 0x99, 0xf9, 0x79, 0xc5, - 0x12, 0x17, 0xda, 0x98, 0x15, 0x18, 0x35, 0x38, 0x83, 0xf8, 0x40, 0x5a, 0xc3, 0x20, 0x3a, 0x7d, - 0x8b, 0xd3, 0x3b, 0x18, 0x19, 0xad, 0x02, 0xb8, 0x84, 0x50, 0xcc, 0x4b, 0xcb, 0x4c, 0xcd, 0x49, - 0x11, 0x92, 0xc5, 0x30, 0xd1, 0x0d, 0x24, 0x0e, 0x33, 0xef, 0x22, 0xd4, 0x3c, 0x01, 0x24, 0xf3, - 0xc0, 0x0a, 0x40, 0x26, 0xfa, 0x72, 0x09, 0xa2, 0x98, 0x98, 0x9a, 0x57, 0x9a, 0x2b, 0x24, 0x83, - 0x61, 0xa0, 0x6b, 0x5e, 0x69, 0x2e, 0xcc, 0xbc, 0x4b, 0x50, 0xf3, 0xf8, 0x91, 0xcc, 0x03, 0xc9, - 0x83, 0x8c, 0x8b, 0xe5, 0x12, 0xc7, 0x30, 0x2e, 0xbe, 0x2c, 0x31, 0xa7, 0x34, 0x55, 0x48, 0x11, - 0xab, 0xa1, 0x61, 0x20, 0x39, 0x98, 0xc9, 0x97, 0xa1, 0x26, 0x8b, 0xa0, 0x99, 0x0c, 0x56, 0xd4, - 0xc1, 0xc8, 0xe8, 0x64, 0x74, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, - 0x31, 0xce, 0x78, 0x2c, 0xc7, 0x10, 0xa5, 0x90, 0x9e, 0xaf, 0x07, 0x52, 0xad, 0x97, 0x99, 0xaf, - 0x0f, 0xa2, 0xf5, 0x13, 0x0b, 0x32, 0xf5, 0xcb, 0x8c, 0xf5, 0xe1, 0xb1, 0x94, 0xc4, 0x06, 0xb6, - 0xcf, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x16, 0x4f, 0x52, 0x12, 0xc8, 0x01, 0x00, 0x00, +func init() { file_version_proto_init() } +func file_version_proto_init() { + if File_version_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_version_proto_rawDesc), len(file_version_proto_rawDesc)), + NumEnums: 0, + NumMessages: 0, + NumExtensions: 4, + NumServices: 0, + }, + GoTypes: file_version_proto_goTypes, + DependencyIndexes: file_version_proto_depIdxs, + ExtensionInfos: file_version_proto_extTypes, + }.Build() + File_version_proto = out.File + file_version_proto_goTypes = nil + file_version_proto_depIdxs = nil } diff --git a/server/etcdserver/api/snap/snappb/snap.pb.go b/server/etcdserver/api/snap/snappb/snap.pb.go index 3e087dd05d10..ba3c20f86e06 100644 --- a/server/etcdserver/api/snap/snappb/snap.pb.go +++ b/server/etcdserver/api/snap/snappb/snap.pb.go @@ -1,363 +1,133 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v3.20.3 // source: snap.proto package snappb import ( - fmt "fmt" - io "io" - math "math" - math_bits "math/bits" + reflect "reflect" + sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type Snapshot struct { - Crc *uint32 `protobuf:"varint,1,opt,name=crc" json:"crc,omitempty"` - Data []byte `protobuf:"bytes,2,opt,name=data" json:"data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Crc *uint32 `protobuf:"varint,1,opt,name=crc" json:"crc,omitempty"` + Data []byte `protobuf:"bytes,2,opt,name=data" json:"data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *Snapshot) Reset() { *m = Snapshot{} } -func (m *Snapshot) String() string { return proto.CompactTextString(m) } -func (*Snapshot) ProtoMessage() {} -func (*Snapshot) Descriptor() ([]byte, []int) { - return fileDescriptor_f2e3c045ebf84d00, []int{0} +func (x *Snapshot) Reset() { + *x = Snapshot{} + mi := &file_snap_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *Snapshot) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) + +func (x *Snapshot) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Snapshot) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Snapshot.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err + +func (*Snapshot) ProtoMessage() {} + +func (x *Snapshot) ProtoReflect() protoreflect.Message { + mi := &file_snap_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *Snapshot) XXX_Merge(src proto.Message) { - xxx_messageInfo_Snapshot.Merge(m, src) -} -func (m *Snapshot) XXX_Size() int { - return m.Size() -} -func (m *Snapshot) XXX_DiscardUnknown() { - xxx_messageInfo_Snapshot.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_Snapshot proto.InternalMessageInfo +// Deprecated: Use Snapshot.ProtoReflect.Descriptor instead. +func (*Snapshot) Descriptor() ([]byte, []int) { + return file_snap_proto_rawDescGZIP(), []int{0} +} -func (m *Snapshot) GetCrc() uint32 { - if m != nil && m.Crc != nil { - return *m.Crc +func (x *Snapshot) GetCrc() uint32 { + if x != nil && x.Crc != nil { + return *x.Crc } return 0 } -func (m *Snapshot) GetData() []byte { - if m != nil { - return m.Data +func (x *Snapshot) GetData() []byte { + if x != nil { + return x.Data } return nil } -func init() { - proto.RegisterType((*Snapshot)(nil), "snappb.snapshot") -} +var File_snap_proto protoreflect.FileDescriptor -func init() { proto.RegisterFile("snap.proto", fileDescriptor_f2e3c045ebf84d00) } +const file_snap_proto_rawDesc = "" + + "\n" + + "\n" + + "snap.proto\x12\x06snappb\"0\n" + + "\bsnapshot\x12\x10\n" + + "\x03crc\x18\x01 \x01(\rR\x03crc\x12\x12\n" + + "\x04data\x18\x02 \x01(\fR\x04dataB6Z4go.etcd.io/etcd/server/v3/etcdserver/api/snap/snappb" -var fileDescriptor_f2e3c045ebf84d00 = []byte{ - // 140 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2a, 0xce, 0x4b, 0x2c, - 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x03, 0xb1, 0x0b, 0x92, 0x94, 0x0c, 0xb8, 0x38, - 0x40, 0xac, 0xe2, 0x8c, 0xfc, 0x12, 0x21, 0x01, 0x2e, 0xe6, 0xe4, 0xa2, 0x64, 0x09, 0x46, 0x05, - 0x46, 0x0d, 0xde, 0x20, 0x10, 0x53, 0x48, 0x88, 0x8b, 0x25, 0x25, 0xb1, 0x24, 0x51, 0x82, 0x49, - 0x81, 0x51, 0x83, 0x27, 0x08, 0xcc, 0x76, 0x72, 0x3b, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, - 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x67, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x49, 0xcf, 0xd7, 0x4b, 0x2d, - 0x49, 0x4e, 0xd1, 0xcb, 0xcc, 0xd7, 0x07, 0xd1, 0xfa, 0xc5, 0xa9, 0x45, 0x65, 0xa9, 0x45, 0xfa, - 0x65, 0xc6, 0x60, 0x2e, 0x94, 0x97, 0x58, 0x90, 0xa9, 0x0f, 0xb2, 0x4a, 0x1f, 0x62, 0x33, 0x20, - 0x00, 0x00, 0xff, 0xff, 0x64, 0x15, 0x9e, 0x77, 0x8e, 0x00, 0x00, 0x00, -} - -func (m *Snapshot) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Snapshot) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Snapshot) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Data != nil { - i -= len(m.Data) - copy(dAtA[i:], m.Data) - i = encodeVarintSnap(dAtA, i, uint64(len(m.Data))) - i-- - dAtA[i] = 0x12 - } - if m.Crc != nil { - i = encodeVarintSnap(dAtA, i, uint64(*m.Crc)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} +var ( + file_snap_proto_rawDescOnce sync.Once + file_snap_proto_rawDescData []byte +) -func encodeVarintSnap(dAtA []byte, offset int, v uint64) int { - offset -= sovSnap(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Snapshot) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Crc != nil { - n += 1 + sovSnap(uint64(*m.Crc)) - } - if m.Data != nil { - l = len(m.Data) - n += 1 + l + sovSnap(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +func file_snap_proto_rawDescGZIP() []byte { + file_snap_proto_rawDescOnce.Do(func() { + file_snap_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_snap_proto_rawDesc), len(file_snap_proto_rawDesc))) + }) + return file_snap_proto_rawDescData } -func sovSnap(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 +var file_snap_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_snap_proto_goTypes = []any{ + (*Snapshot)(nil), // 0: snappb.snapshot } -func sozSnap(x uint64) (n int) { - return sovSnap(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +var file_snap_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name } -func (m *Snapshot) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSnap - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: snapshot: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: snapshot: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Crc", wireType) - } - var v uint32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSnap - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Crc = &v - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSnap - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthSnap - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthSnap - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...) - if m.Data == nil { - m.Data = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipSnap(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthSnap - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF +func init() { file_snap_proto_init() } +func file_snap_proto_init() { + if File_snap_proto != nil { + return } - return nil + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_snap_proto_rawDesc), len(file_snap_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_snap_proto_goTypes, + DependencyIndexes: file_snap_proto_depIdxs, + MessageInfos: file_snap_proto_msgTypes, + }.Build() + File_snap_proto = out.File + file_snap_proto_goTypes = nil + file_snap_proto_depIdxs = nil } -func skipSnap(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowSnap - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowSnap - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowSnap - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthSnap - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupSnap - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthSnap - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthSnap = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowSnap = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupSnap = fmt.Errorf("proto: unexpected end of group") -) diff --git a/server/etcdserver/api/v3election/v3electionpb/gw/v3election.pb.gw.go b/server/etcdserver/api/v3election/v3electionpb/gw/v3election.pb.gw.go index 0f4f23d6709e..1a4e49c6465e 100644 --- a/server/etcdserver/api/v3election/v3electionpb/gw/v3election.pb.gw.go +++ b/server/etcdserver/api/v3election/v3electionpb/gw/v3election.pb.gw.go @@ -9,8 +9,6 @@ It translates gRPC into RESTful JSON APIs. package gw import ( - protov1 "github.com/golang/protobuf/proto" - "context" "errors" "go.etcd.io/etcd/server/v3/etcdserver/api/v3election/v3electionpb" @@ -43,14 +41,14 @@ func request_Election_Campaign_0(ctx context.Context, marshaler runtime.Marshale protoReq v3electionpb.CampaignRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Campaign(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Election_Campaign_0(ctx context.Context, marshaler runtime.Marshaler, server v3electionpb.ElectionServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -58,11 +56,11 @@ func local_request_Election_Campaign_0(ctx context.Context, marshaler runtime.Ma protoReq v3electionpb.CampaignRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Campaign(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Election_Proclaim_0(ctx context.Context, marshaler runtime.Marshaler, client v3electionpb.ElectionClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -70,14 +68,14 @@ func request_Election_Proclaim_0(ctx context.Context, marshaler runtime.Marshale protoReq v3electionpb.ProclaimRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Proclaim(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Election_Proclaim_0(ctx context.Context, marshaler runtime.Marshaler, server v3electionpb.ElectionServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -85,11 +83,11 @@ func local_request_Election_Proclaim_0(ctx context.Context, marshaler runtime.Ma protoReq v3electionpb.ProclaimRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Proclaim(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Election_Leader_0(ctx context.Context, marshaler runtime.Marshaler, client v3electionpb.ElectionClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -97,14 +95,14 @@ func request_Election_Leader_0(ctx context.Context, marshaler runtime.Marshaler, protoReq v3electionpb.LeaderRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Leader(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Election_Leader_0(ctx context.Context, marshaler runtime.Marshaler, server v3electionpb.ElectionServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -112,11 +110,11 @@ func local_request_Election_Leader_0(ctx context.Context, marshaler runtime.Mars protoReq v3electionpb.LeaderRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Leader(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Election_Observe_0(ctx context.Context, marshaler runtime.Marshaler, client v3electionpb.ElectionClient, req *http.Request, pathParams map[string]string) (v3electionpb.Election_ObserveClient, runtime.ServerMetadata, error) { @@ -124,7 +122,7 @@ func request_Election_Observe_0(ctx context.Context, marshaler runtime.Marshaler protoReq v3electionpb.LeaderRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { @@ -147,14 +145,14 @@ func request_Election_Resign_0(ctx context.Context, marshaler runtime.Marshaler, protoReq v3electionpb.ResignRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Resign(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Election_Resign_0(ctx context.Context, marshaler runtime.Marshaler, server v3electionpb.ElectionServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -162,11 +160,11 @@ func local_request_Election_Resign_0(ctx context.Context, marshaler runtime.Mars protoReq v3electionpb.ResignRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Resign(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } // v3electionpb.RegisterElectionHandlerServer registers the http handlers for service Election to "mux". @@ -368,10 +366,7 @@ func RegisterElectionHandlerClient(ctx context.Context, mux *runtime.ServeMux, c runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Election_Observe_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { - m1, err := resp.Recv() - return protov1.MessageV2(m1), err - }, mux.GetForwardResponseOptions()...) + forward_Election_Observe_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) }) mux.Handle(http.MethodPost, pattern_Election_Resign_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/server/etcdserver/api/v3election/v3electionpb/v3election.pb.go b/server/etcdserver/api/v3election/v3electionpb/v3election.pb.go index 894ea34b0a26..18a911cf4fc3 100644 --- a/server/etcdserver/api/v3election/v3electionpb/v3election.pb.go +++ b/server/etcdserver/api/v3election/v3electionpb/v3election.pb.go @@ -1,32 +1,32 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v3.20.3 // source: v3election.proto package v3electionpb import ( - fmt "fmt" - io "io" - math "math" - math_bits "math/bits" + reflect "reflect" + sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" etcdserverpb "go.etcd.io/etcd/api/v3/etcdserverpb" mvccpb "go.etcd.io/etcd/api/v3/mvccpb" _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type CampaignRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // name is the election's identifier for the campaign. Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // lease is the ID of the lease attached to leadership of the election. If the @@ -35,123 +35,117 @@ type CampaignRequest struct { Lease int64 `protobuf:"varint,2,opt,name=lease,proto3" json:"lease,omitempty"` // value is the initial proclaimed value set when the campaigner wins the // election. - Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *CampaignRequest) Reset() { *m = CampaignRequest{} } -func (m *CampaignRequest) String() string { return proto.CompactTextString(m) } -func (*CampaignRequest) ProtoMessage() {} -func (*CampaignRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c9b1f26cc432a035, []int{0} -} -func (m *CampaignRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *CampaignRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_CampaignRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *CampaignRequest) Reset() { + *x = CampaignRequest{} + mi := &file_v3election_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *CampaignRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CampaignRequest.Merge(m, src) -} -func (m *CampaignRequest) XXX_Size() int { - return m.Size() + +func (x *CampaignRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CampaignRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CampaignRequest.DiscardUnknown(m) + +func (*CampaignRequest) ProtoMessage() {} + +func (x *CampaignRequest) ProtoReflect() protoreflect.Message { + mi := &file_v3election_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CampaignRequest proto.InternalMessageInfo +// Deprecated: Use CampaignRequest.ProtoReflect.Descriptor instead. +func (*CampaignRequest) Descriptor() ([]byte, []int) { + return file_v3election_proto_rawDescGZIP(), []int{0} +} -func (m *CampaignRequest) GetName() []byte { - if m != nil { - return m.Name +func (x *CampaignRequest) GetName() []byte { + if x != nil { + return x.Name } return nil } -func (m *CampaignRequest) GetLease() int64 { - if m != nil { - return m.Lease +func (x *CampaignRequest) GetLease() int64 { + if x != nil { + return x.Lease } return 0 } -func (m *CampaignRequest) GetValue() []byte { - if m != nil { - return m.Value +func (x *CampaignRequest) GetValue() []byte { + if x != nil { + return x.Value } return nil } type CampaignResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // leader describes the resources used for holding leadereship of the election. - Leader *LeaderKey `protobuf:"bytes,2,opt,name=leader,proto3" json:"leader,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Leader *LeaderKey `protobuf:"bytes,2,opt,name=leader,proto3" json:"leader,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *CampaignResponse) Reset() { *m = CampaignResponse{} } -func (m *CampaignResponse) String() string { return proto.CompactTextString(m) } -func (*CampaignResponse) ProtoMessage() {} -func (*CampaignResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c9b1f26cc432a035, []int{1} -} -func (m *CampaignResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *CampaignResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_CampaignResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *CampaignResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CampaignResponse.Merge(m, src) +func (x *CampaignResponse) Reset() { + *x = CampaignResponse{} + mi := &file_v3election_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *CampaignResponse) XXX_Size() int { - return m.Size() + +func (x *CampaignResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CampaignResponse) XXX_DiscardUnknown() { - xxx_messageInfo_CampaignResponse.DiscardUnknown(m) + +func (*CampaignResponse) ProtoMessage() {} + +func (x *CampaignResponse) ProtoReflect() protoreflect.Message { + mi := &file_v3election_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CampaignResponse proto.InternalMessageInfo +// Deprecated: Use CampaignResponse.ProtoReflect.Descriptor instead. +func (*CampaignResponse) Descriptor() ([]byte, []int) { + return file_v3election_proto_rawDescGZIP(), []int{1} +} -func (m *CampaignResponse) GetHeader() *etcdserverpb.ResponseHeader { - if m != nil { - return m.Header +func (x *CampaignResponse) GetHeader() *etcdserverpb.ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *CampaignResponse) GetLeader() *LeaderKey { - if m != nil { - return m.Leader +func (x *CampaignResponse) GetLeader() *LeaderKey { + if x != nil { + return x.Leader } return nil } type LeaderKey struct { + state protoimpl.MessageState `protogen:"open.v1"` // name is the election identifier that corresponds to the leadership key. Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // key is an opaque key representing the ownership of the election. If the key @@ -162,2104 +156,464 @@ type LeaderKey struct { // matches rev. Rev int64 `protobuf:"varint,3,opt,name=rev,proto3" json:"rev,omitempty"` // lease is the lease ID of the election leader. - Lease int64 `protobuf:"varint,4,opt,name=lease,proto3" json:"lease,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Lease int64 `protobuf:"varint,4,opt,name=lease,proto3" json:"lease,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaderKey) Reset() { *m = LeaderKey{} } -func (m *LeaderKey) String() string { return proto.CompactTextString(m) } -func (*LeaderKey) ProtoMessage() {} -func (*LeaderKey) Descriptor() ([]byte, []int) { - return fileDescriptor_c9b1f26cc432a035, []int{2} -} -func (m *LeaderKey) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaderKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaderKey.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } +func (x *LeaderKey) Reset() { + *x = LeaderKey{} + mi := &file_v3election_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaderKey) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaderKey.Merge(m, src) -} -func (m *LeaderKey) XXX_Size() int { - return m.Size() + +func (x *LeaderKey) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LeaderKey) XXX_DiscardUnknown() { - xxx_messageInfo_LeaderKey.DiscardUnknown(m) + +func (*LeaderKey) ProtoMessage() {} + +func (x *LeaderKey) ProtoReflect() protoreflect.Message { + mi := &file_v3election_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LeaderKey proto.InternalMessageInfo +// Deprecated: Use LeaderKey.ProtoReflect.Descriptor instead. +func (*LeaderKey) Descriptor() ([]byte, []int) { + return file_v3election_proto_rawDescGZIP(), []int{2} +} -func (m *LeaderKey) GetName() []byte { - if m != nil { - return m.Name +func (x *LeaderKey) GetName() []byte { + if x != nil { + return x.Name } return nil } -func (m *LeaderKey) GetKey() []byte { - if m != nil { - return m.Key +func (x *LeaderKey) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func (m *LeaderKey) GetRev() int64 { - if m != nil { - return m.Rev +func (x *LeaderKey) GetRev() int64 { + if x != nil { + return x.Rev } return 0 } -func (m *LeaderKey) GetLease() int64 { - if m != nil { - return m.Lease +func (x *LeaderKey) GetLease() int64 { + if x != nil { + return x.Lease } return 0 } type LeaderRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // name is the election identifier for the leadership information. - Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaderRequest) Reset() { *m = LeaderRequest{} } -func (m *LeaderRequest) String() string { return proto.CompactTextString(m) } -func (*LeaderRequest) ProtoMessage() {} -func (*LeaderRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c9b1f26cc432a035, []int{3} -} -func (m *LeaderRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaderRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaderRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *LeaderRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaderRequest.Merge(m, src) -} -func (m *LeaderRequest) XXX_Size() int { - return m.Size() -} -func (m *LeaderRequest) XXX_DiscardUnknown() { - xxx_messageInfo_LeaderRequest.DiscardUnknown(m) +func (x *LeaderRequest) Reset() { + *x = LeaderRequest{} + mi := &file_v3election_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -var xxx_messageInfo_LeaderRequest proto.InternalMessageInfo - -func (m *LeaderRequest) GetName() []byte { - if m != nil { - return m.Name - } - return nil +func (x *LeaderRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -type LeaderResponse struct { - Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - // kv is the key-value pair representing the latest leader update. - Kv *mvccpb.KeyValue `protobuf:"bytes,2,opt,name=kv,proto3" json:"kv,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +func (*LeaderRequest) ProtoMessage() {} -func (m *LeaderResponse) Reset() { *m = LeaderResponse{} } -func (m *LeaderResponse) String() string { return proto.CompactTextString(m) } -func (*LeaderResponse) ProtoMessage() {} -func (*LeaderResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c9b1f26cc432a035, []int{4} -} -func (m *LeaderResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaderResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaderResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (x *LeaderRequest) ProtoReflect() protoreflect.Message { + mi := &file_v3election_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *LeaderResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaderResponse.Merge(m, src) -} -func (m *LeaderResponse) XXX_Size() int { - return m.Size() -} -func (m *LeaderResponse) XXX_DiscardUnknown() { - xxx_messageInfo_LeaderResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_LeaderResponse proto.InternalMessageInfo - -func (m *LeaderResponse) GetHeader() *etcdserverpb.ResponseHeader { - if m != nil { - return m.Header - } - return nil + return mi.MessageOf(x) } -func (m *LeaderResponse) GetKv() *mvccpb.KeyValue { - if m != nil { - return m.Kv - } - return nil -} - -type ResignRequest struct { - // leader is the leadership to relinquish by resignation. - Leader *LeaderKey `protobuf:"bytes,1,opt,name=leader,proto3" json:"leader,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ResignRequest) Reset() { *m = ResignRequest{} } -func (m *ResignRequest) String() string { return proto.CompactTextString(m) } -func (*ResignRequest) ProtoMessage() {} -func (*ResignRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c9b1f26cc432a035, []int{5} -} -func (m *ResignRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ResignRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ResignRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ResignRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ResignRequest.Merge(m, src) -} -func (m *ResignRequest) XXX_Size() int { - return m.Size() -} -func (m *ResignRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ResignRequest.DiscardUnknown(m) +// Deprecated: Use LeaderRequest.ProtoReflect.Descriptor instead. +func (*LeaderRequest) Descriptor() ([]byte, []int) { + return file_v3election_proto_rawDescGZIP(), []int{3} } -var xxx_messageInfo_ResignRequest proto.InternalMessageInfo - -func (m *ResignRequest) GetLeader() *LeaderKey { - if m != nil { - return m.Leader +func (x *LeaderRequest) GetName() []byte { + if x != nil { + return x.Name } return nil } -type ResignResponse struct { - Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type LeaderResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + // kv is the key-value pair representing the latest leader update. + Kv *mvccpb.KeyValue `protobuf:"bytes,2,opt,name=kv,proto3" json:"kv,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *ResignResponse) Reset() { *m = ResignResponse{} } -func (m *ResignResponse) String() string { return proto.CompactTextString(m) } -func (*ResignResponse) ProtoMessage() {} -func (*ResignResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c9b1f26cc432a035, []int{6} -} -func (m *ResignResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ResignResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ResignResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ResignResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ResignResponse.Merge(m, src) -} -func (m *ResignResponse) XXX_Size() int { - return m.Size() -} -func (m *ResignResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ResignResponse.DiscardUnknown(m) +func (x *LeaderResponse) Reset() { + *x = LeaderResponse{} + mi := &file_v3election_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -var xxx_messageInfo_ResignResponse proto.InternalMessageInfo - -func (m *ResignResponse) GetHeader() *etcdserverpb.ResponseHeader { - if m != nil { - return m.Header - } - return nil +func (x *LeaderResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -type ProclaimRequest struct { - // leader is the leadership hold on the election. - Leader *LeaderKey `protobuf:"bytes,1,opt,name=leader,proto3" json:"leader,omitempty"` - // value is an update meant to overwrite the leader's current value. - Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +func (*LeaderResponse) ProtoMessage() {} -func (m *ProclaimRequest) Reset() { *m = ProclaimRequest{} } -func (m *ProclaimRequest) String() string { return proto.CompactTextString(m) } -func (*ProclaimRequest) ProtoMessage() {} -func (*ProclaimRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c9b1f26cc432a035, []int{7} -} -func (m *ProclaimRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ProclaimRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ProclaimRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (x *LeaderResponse) ProtoReflect() protoreflect.Message { + mi := &file_v3election_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } + return mi.MessageOf(x) } -func (m *ProclaimRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProclaimRequest.Merge(m, src) -} -func (m *ProclaimRequest) XXX_Size() int { - return m.Size() -} -func (m *ProclaimRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ProclaimRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ProclaimRequest proto.InternalMessageInfo -func (m *ProclaimRequest) GetLeader() *LeaderKey { - if m != nil { - return m.Leader - } - return nil +// Deprecated: Use LeaderResponse.ProtoReflect.Descriptor instead. +func (*LeaderResponse) Descriptor() ([]byte, []int) { + return file_v3election_proto_rawDescGZIP(), []int{4} } -func (m *ProclaimRequest) GetValue() []byte { - if m != nil { - return m.Value +func (x *LeaderResponse) GetHeader() *etcdserverpb.ResponseHeader { + if x != nil { + return x.Header } return nil } -type ProclaimResponse struct { - Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ProclaimResponse) Reset() { *m = ProclaimResponse{} } -func (m *ProclaimResponse) String() string { return proto.CompactTextString(m) } -func (*ProclaimResponse) ProtoMessage() {} -func (*ProclaimResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c9b1f26cc432a035, []int{8} -} -func (m *ProclaimResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ProclaimResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ProclaimResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ProclaimResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProclaimResponse.Merge(m, src) -} -func (m *ProclaimResponse) XXX_Size() int { - return m.Size() -} -func (m *ProclaimResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ProclaimResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ProclaimResponse proto.InternalMessageInfo - -func (m *ProclaimResponse) GetHeader() *etcdserverpb.ResponseHeader { - if m != nil { - return m.Header +func (x *LeaderResponse) GetKv() *mvccpb.KeyValue { + if x != nil { + return x.Kv } return nil } -func init() { - proto.RegisterType((*CampaignRequest)(nil), "v3electionpb.CampaignRequest") - proto.RegisterType((*CampaignResponse)(nil), "v3electionpb.CampaignResponse") - proto.RegisterType((*LeaderKey)(nil), "v3electionpb.LeaderKey") - proto.RegisterType((*LeaderRequest)(nil), "v3electionpb.LeaderRequest") - proto.RegisterType((*LeaderResponse)(nil), "v3electionpb.LeaderResponse") - proto.RegisterType((*ResignRequest)(nil), "v3electionpb.ResignRequest") - proto.RegisterType((*ResignResponse)(nil), "v3electionpb.ResignResponse") - proto.RegisterType((*ProclaimRequest)(nil), "v3electionpb.ProclaimRequest") - proto.RegisterType((*ProclaimResponse)(nil), "v3electionpb.ProclaimResponse") -} - -func init() { proto.RegisterFile("v3election.proto", fileDescriptor_c9b1f26cc432a035) } - -var fileDescriptor_c9b1f26cc432a035 = []byte{ - // 548 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xcd, 0x6e, 0xd3, 0x4c, - 0x14, 0xfd, 0xc6, 0xc9, 0x17, 0xca, 0x25, 0x6d, 0x23, 0x53, 0x44, 0x08, 0xc1, 0x8d, 0x86, 0x4d, - 0x95, 0x85, 0x07, 0x35, 0xac, 0xb2, 0xaa, 0x40, 0xa0, 0x4a, 0x45, 0x02, 0x66, 0x81, 0x80, 0xdd, - 0xc4, 0xbd, 0x4a, 0xa3, 0x38, 0x1e, 0x63, 0xbb, 0x96, 0xb2, 0xe5, 0x15, 0x58, 0xc0, 0x23, 0xb1, - 0x44, 0xe2, 0x05, 0x50, 0xe0, 0x41, 0xd0, 0xcc, 0xd8, 0xf1, 0x8f, 0x12, 0x84, 0xc8, 0x6e, 0x3c, - 0xf7, 0xcc, 0x3d, 0xf7, 0x9c, 0x39, 0x1e, 0xe8, 0xa4, 0x23, 0xf4, 0xd1, 0x4b, 0x66, 0x32, 0x70, - 0xc3, 0x48, 0x26, 0xd2, 0x6e, 0x17, 0x3b, 0xe1, 0xa4, 0x77, 0x8c, 0x89, 0x77, 0xc9, 0x44, 0x38, - 0x63, 0x6a, 0x11, 0x63, 0x94, 0x62, 0x14, 0x4e, 0x58, 0x14, 0x7a, 0x06, 0xde, 0xeb, 0xae, 0x01, - 0x8b, 0xd4, 0xf3, 0xc2, 0x09, 0x9b, 0xa7, 0x59, 0xa5, 0x3f, 0x95, 0x72, 0xea, 0xa3, 0xae, 0x89, - 0x20, 0x90, 0x89, 0x50, 0x3d, 0x63, 0x53, 0xa5, 0xaf, 0xe1, 0xf0, 0xa9, 0x58, 0x84, 0x62, 0x36, - 0x0d, 0x38, 0x7e, 0xb8, 0xc6, 0x38, 0xb1, 0x6d, 0x68, 0x06, 0x62, 0x81, 0x5d, 0x32, 0x20, 0x27, - 0x6d, 0xae, 0xd7, 0xf6, 0x11, 0xfc, 0xef, 0xa3, 0x88, 0xb1, 0x6b, 0x0d, 0xc8, 0x49, 0x83, 0x9b, - 0x0f, 0xb5, 0x9b, 0x0a, 0xff, 0x1a, 0xbb, 0x0d, 0x0d, 0x35, 0x1f, 0x74, 0x09, 0x9d, 0xa2, 0x65, - 0x1c, 0xca, 0x20, 0x46, 0xfb, 0x31, 0xb4, 0xae, 0x50, 0x5c, 0x62, 0xa4, 0xbb, 0xde, 0x3a, 0xed, - 0xbb, 0x65, 0x1d, 0x6e, 0x8e, 0x3b, 0xd7, 0x18, 0x9e, 0x61, 0x6d, 0x06, 0x2d, 0xdf, 0x9c, 0xb2, - 0xf4, 0xa9, 0xbb, 0x6e, 0xd9, 0x14, 0xf7, 0x85, 0xae, 0x5d, 0xe0, 0x92, 0x67, 0x30, 0xfa, 0x0e, - 0x6e, 0xae, 0x37, 0x37, 0xea, 0xe8, 0x40, 0x63, 0x8e, 0x4b, 0xdd, 0xae, 0xcd, 0xd5, 0x52, 0xed, - 0x44, 0x98, 0x6a, 0x05, 0x0d, 0xae, 0x96, 0x85, 0xd6, 0x66, 0x49, 0x2b, 0x7d, 0x08, 0xfb, 0xa6, - 0xf5, 0x1f, 0x6c, 0xa2, 0x57, 0x70, 0x90, 0x83, 0x76, 0x12, 0x3e, 0x00, 0x6b, 0x9e, 0x66, 0xa2, - 0x3b, 0xae, 0xb9, 0x51, 0xf7, 0x02, 0x97, 0x6f, 0x94, 0xc1, 0xdc, 0x9a, 0xa7, 0xf4, 0x0c, 0xf6, - 0x39, 0xc6, 0xa5, 0x5b, 0x2b, 0xbc, 0x22, 0x7f, 0xe7, 0xd5, 0x73, 0x38, 0xc8, 0x3b, 0xec, 0x32, - 0x2b, 0x7d, 0x0b, 0x87, 0xaf, 0x22, 0xe9, 0xf9, 0x62, 0xb6, 0xf8, 0xd7, 0x59, 0x8a, 0x20, 0x59, - 0xe5, 0x20, 0x9d, 0x43, 0xa7, 0xe8, 0xbc, 0xcb, 0x8c, 0xa7, 0x9f, 0x9b, 0xb0, 0xf7, 0x2c, 0x1b, - 0xc0, 0x9e, 0xc3, 0x5e, 0x9e, 0x4f, 0xfb, 0x41, 0x75, 0xb2, 0xda, 0xaf, 0xd0, 0x73, 0xb6, 0x95, - 0x0d, 0x0b, 0x1d, 0x7c, 0xfc, 0xfe, 0xeb, 0x93, 0xd5, 0xa3, 0x77, 0x58, 0x3a, 0x62, 0x39, 0x90, - 0x79, 0x19, 0x6c, 0x4c, 0x86, 0x8a, 0x2c, 0xd7, 0x50, 0x27, 0xab, 0xb9, 0x56, 0x27, 0xab, 0x4b, - 0xdf, 0x42, 0x16, 0x66, 0x30, 0x45, 0xe6, 0x41, 0xcb, 0x78, 0x6b, 0xdf, 0xdf, 0xe4, 0x78, 0x4e, - 0xd4, 0xdf, 0x5c, 0xcc, 0x68, 0x1c, 0x4d, 0xd3, 0xa5, 0xb7, 0x2b, 0x34, 0xe6, 0xa2, 0x14, 0xc9, - 0x14, 0x6e, 0xbc, 0x9c, 0x68, 0xc3, 0x77, 0x61, 0x39, 0xd6, 0x2c, 0xf7, 0xe8, 0x51, 0x85, 0x45, - 0x9a, 0xc6, 0x63, 0x32, 0x7c, 0x44, 0x94, 0x1a, 0x13, 0xd0, 0x3a, 0x4f, 0x25, 0xf8, 0x75, 0x9e, - 0x6a, 0xa6, 0xb7, 0xa8, 0x89, 0x34, 0x68, 0x4c, 0x86, 0x4f, 0xf8, 0xd7, 0x95, 0x43, 0xbe, 0xad, - 0x1c, 0xf2, 0x63, 0xe5, 0x90, 0x2f, 0x3f, 0x9d, 0xff, 0xde, 0x9f, 0x4d, 0xa5, 0xce, 0x94, 0x3b, - 0x93, 0xfa, 0xb1, 0x65, 0x26, 0x5c, 0xfa, 0xfc, 0x3a, 0x6a, 0xfa, 0x35, 0x2d, 0x78, 0x59, 0x79, - 0x84, 0x49, 0x4b, 0x3f, 0xad, 0xa3, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x8d, 0x13, 0xc0, 0xca, - 0xd5, 0x05, 0x00, 0x00, -} - -func (m *CampaignRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *CampaignRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type ResignRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // leader is the leadership to relinquish by resignation. + Leader *LeaderKey `protobuf:"bytes,1,opt,name=leader,proto3" json:"leader,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *CampaignRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Value) > 0 { - i -= len(m.Value) - copy(dAtA[i:], m.Value) - i = encodeVarintV3Election(dAtA, i, uint64(len(m.Value))) - i-- - dAtA[i] = 0x1a - } - if m.Lease != 0 { - i = encodeVarintV3Election(dAtA, i, uint64(m.Lease)) - i-- - dAtA[i] = 0x10 - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintV3Election(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +func (x *ResignRequest) Reset() { + *x = ResignRequest{} + mi := &file_v3election_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *CampaignResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (x *ResignRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CampaignResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +func (*ResignRequest) ProtoMessage() {} -func (m *CampaignResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Leader != nil { - { - size, err := m.Leader.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintV3Election(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintV3Election(dAtA, i, uint64(size)) +func (x *ResignRequest) ProtoReflect() protoreflect.Message { + mi := &file_v3election_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0xa + return ms } - return len(dAtA) - i, nil + return mi.MessageOf(x) } -func (m *LeaderKey) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaderKey) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaderKey) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Lease != 0 { - i = encodeVarintV3Election(dAtA, i, uint64(m.Lease)) - i-- - dAtA[i] = 0x20 - } - if m.Rev != 0 { - i = encodeVarintV3Election(dAtA, i, uint64(m.Rev)) - i-- - dAtA[i] = 0x18 - } - if len(m.Key) > 0 { - i -= len(m.Key) - copy(dAtA[i:], m.Key) - i = encodeVarintV3Election(dAtA, i, uint64(len(m.Key))) - i-- - dAtA[i] = 0x12 - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintV3Election(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *LeaderRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaderRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaderRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintV3Election(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +// Deprecated: Use ResignRequest.ProtoReflect.Descriptor instead. +func (*ResignRequest) Descriptor() ([]byte, []int) { + return file_v3election_proto_rawDescGZIP(), []int{5} } -func (m *LeaderResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (x *ResignRequest) GetLeader() *LeaderKey { + if x != nil { + return x.Leader } - return dAtA[:n], nil + return nil } -func (m *LeaderResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type ResignResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaderResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Kv != nil { - { - size, err := m.Kv.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintV3Election(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintV3Election(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +func (x *ResignResponse) Reset() { + *x = ResignResponse{} + mi := &file_v3election_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *ResignRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (x *ResignResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ResignRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +func (*ResignResponse) ProtoMessage() {} -func (m *ResignRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Leader != nil { - { - size, err := m.Leader.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintV3Election(dAtA, i, uint64(size)) +func (x *ResignResponse) ProtoReflect() protoreflect.Message { + mi := &file_v3election_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0xa + return ms } - return len(dAtA) - i, nil + return mi.MessageOf(x) } -func (m *ResignResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ResignResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ResignResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintV3Election(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +// Deprecated: Use ResignResponse.ProtoReflect.Descriptor instead. +func (*ResignResponse) Descriptor() ([]byte, []int) { + return file_v3election_proto_rawDescGZIP(), []int{6} } -func (m *ProclaimRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (x *ResignResponse) GetHeader() *etcdserverpb.ResponseHeader { + if x != nil { + return x.Header } - return dAtA[:n], nil + return nil } -func (m *ProclaimRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type ProclaimRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // leader is the leadership hold on the election. + Leader *LeaderKey `protobuf:"bytes,1,opt,name=leader,proto3" json:"leader,omitempty"` + // value is an update meant to overwrite the leader's current value. + Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *ProclaimRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Value) > 0 { - i -= len(m.Value) - copy(dAtA[i:], m.Value) - i = encodeVarintV3Election(dAtA, i, uint64(len(m.Value))) - i-- - dAtA[i] = 0x12 - } - if m.Leader != nil { - { - size, err := m.Leader.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintV3Election(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +func (x *ProclaimRequest) Reset() { + *x = ProclaimRequest{} + mi := &file_v3election_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *ProclaimResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (x *ProclaimRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ProclaimResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +func (*ProclaimRequest) ProtoMessage() {} -func (m *ProclaimResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintV3Election(dAtA, i, uint64(size)) +func (x *ProclaimRequest) ProtoReflect() protoreflect.Message { + mi := &file_v3election_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0xa + return ms } - return len(dAtA) - i, nil + return mi.MessageOf(x) } -func encodeVarintV3Election(dAtA []byte, offset int, v uint64) int { - offset -= sovV3Election(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *CampaignRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovV3Election(uint64(l)) - } - if m.Lease != 0 { - n += 1 + sovV3Election(uint64(m.Lease)) - } - l = len(m.Value) - if l > 0 { - n += 1 + l + sovV3Election(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *CampaignResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovV3Election(uint64(l)) - } - if m.Leader != nil { - l = m.Leader.Size() - n += 1 + l + sovV3Election(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaderKey) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovV3Election(uint64(l)) - } - l = len(m.Key) - if l > 0 { - n += 1 + l + sovV3Election(uint64(l)) - } - if m.Rev != 0 { - n += 1 + sovV3Election(uint64(m.Rev)) - } - if m.Lease != 0 { - n += 1 + sovV3Election(uint64(m.Lease)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaderRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovV3Election(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaderResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovV3Election(uint64(l)) - } - if m.Kv != nil { - l = m.Kv.Size() - n += 1 + l + sovV3Election(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *ResignRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Leader != nil { - l = m.Leader.Size() - n += 1 + l + sovV3Election(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *ResignResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovV3Election(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *ProclaimRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Leader != nil { - l = m.Leader.Size() - n += 1 + l + sovV3Election(uint64(l)) - } - l = len(m.Value) - if l > 0 { - n += 1 + l + sovV3Election(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +// Deprecated: Use ProclaimRequest.ProtoReflect.Descriptor instead. +func (*ProclaimRequest) Descriptor() ([]byte, []int) { + return file_v3election_proto_rawDescGZIP(), []int{7} } -func (m *ProclaimResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovV3Election(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func sovV3Election(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozV3Election(x uint64) (n int) { - return sovV3Election(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *CampaignRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: CampaignRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: CampaignRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthV3Election - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthV3Election - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = append(m.Name[:0], dAtA[iNdEx:postIndex]...) - if m.Name == nil { - m.Name = []byte{} - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Lease", wireType) - } - m.Lease = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Lease |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthV3Election - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthV3Election - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...) - if m.Value == nil { - m.Value = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipV3Election(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthV3Election - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF +func (x *ProclaimRequest) GetLeader() *LeaderKey { + if x != nil { + return x.Leader } return nil } -func (m *CampaignResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: CampaignResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: CampaignResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthV3Election - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthV3Election - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &etcdserverpb.ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Leader", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthV3Election - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthV3Election - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Leader == nil { - m.Leader = &LeaderKey{} - } - if err := m.Leader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipV3Election(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthV3Election - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF +func (x *ProclaimRequest) GetValue() []byte { + if x != nil { + return x.Value } return nil } -func (m *LeaderKey) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaderKey: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaderKey: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthV3Election - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthV3Election - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = append(m.Name[:0], dAtA[iNdEx:postIndex]...) - if m.Name == nil { - m.Name = []byte{} - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthV3Election - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthV3Election - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) - if m.Key == nil { - m.Key = []byte{} - } - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Rev", wireType) - } - m.Rev = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Rev |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Lease", wireType) - } - m.Lease = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Lease |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipV3Election(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthV3Election - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil +type ProclaimResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaderRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaderRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaderRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthV3Election - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthV3Election - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = append(m.Name[:0], dAtA[iNdEx:postIndex]...) - if m.Name == nil { - m.Name = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipV3Election(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthV3Election - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil +func (x *ProclaimResponse) Reset() { + *x = ProclaimResponse{} + mi := &file_v3election_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaderResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaderResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaderResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthV3Election - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthV3Election - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &etcdserverpb.ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Kv", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthV3Election - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthV3Election - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Kv == nil { - m.Kv = &mvccpb.KeyValue{} - } - if err := m.Kv.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipV3Election(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthV3Election - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil +func (x *ProclaimResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ResignRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ResignRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ResignRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Leader", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthV3Election - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthV3Election - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Leader == nil { - m.Leader = &LeaderKey{} - } - if err := m.Leader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipV3Election(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthV3Election - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ResignResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ResignResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ResignResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthV3Election - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthV3Election - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &etcdserverpb.ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipV3Election(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthV3Election - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } +func (*ProclaimResponse) ProtoMessage() {} - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ProclaimRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ProclaimRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ProclaimRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Leader", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthV3Election - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthV3Election - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Leader == nil { - m.Leader = &LeaderKey{} - } - if err := m.Leader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthV3Election - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthV3Election - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...) - if m.Value == nil { - m.Value = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipV3Election(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthV3Election - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy +func (x *ProclaimResponse) ProtoReflect() protoreflect.Message { + mi := &file_v3election_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } + return ms } + return mi.MessageOf(x) +} - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil +// Deprecated: Use ProclaimResponse.ProtoReflect.Descriptor instead. +func (*ProclaimResponse) Descriptor() ([]byte, []int) { + return file_v3election_proto_rawDescGZIP(), []int{8} } -func (m *ProclaimResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ProclaimResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ProclaimResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Election - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthV3Election - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthV3Election - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &etcdserverpb.ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipV3Election(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthV3Election - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF +func (x *ProclaimResponse) GetHeader() *etcdserverpb.ResponseHeader { + if x != nil { + return x.Header } return nil } -func skipV3Election(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowV3Election - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowV3Election - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowV3Election - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthV3Election - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupV3Election - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthV3Election - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} + +var File_v3election_proto protoreflect.FileDescriptor + +const file_v3election_proto_rawDesc = "" + + "\n" + + "\x10v3election.proto\x12\fv3electionpb\x1a\x1fetcd/api/etcdserverpb/rpc.proto\x1a\x18etcd/api/mvccpb/kv.proto\x1a\x1cgoogle/api/annotations.proto\"Q\n" + + "\x0fCampaignRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\fR\x04name\x12\x14\n" + + "\x05lease\x18\x02 \x01(\x03R\x05lease\x12\x14\n" + + "\x05value\x18\x03 \x01(\fR\x05value\"y\n" + + "\x10CampaignResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12/\n" + + "\x06leader\x18\x02 \x01(\v2\x17.v3electionpb.LeaderKeyR\x06leader\"Y\n" + + "\tLeaderKey\x12\x12\n" + + "\x04name\x18\x01 \x01(\fR\x04name\x12\x10\n" + + "\x03key\x18\x02 \x01(\fR\x03key\x12\x10\n" + + "\x03rev\x18\x03 \x01(\x03R\x03rev\x12\x14\n" + + "\x05lease\x18\x04 \x01(\x03R\x05lease\"#\n" + + "\rLeaderRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\fR\x04name\"h\n" + + "\x0eLeaderResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12 \n" + + "\x02kv\x18\x02 \x01(\v2\x10.mvccpb.KeyValueR\x02kv\"@\n" + + "\rResignRequest\x12/\n" + + "\x06leader\x18\x01 \x01(\v2\x17.v3electionpb.LeaderKeyR\x06leader\"F\n" + + "\x0eResignResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\"X\n" + + "\x0fProclaimRequest\x12/\n" + + "\x06leader\x18\x01 \x01(\v2\x17.v3electionpb.LeaderKeyR\x06leader\x12\x14\n" + + "\x05value\x18\x02 \x01(\fR\x05value\"H\n" + + "\x10ProclaimResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header2\x97\x04\n" + + "\bElection\x12k\n" + + "\bCampaign\x12\x1d.v3electionpb.CampaignRequest\x1a\x1e.v3electionpb.CampaignResponse\" \x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/v3/election/campaign\x12k\n" + + "\bProclaim\x12\x1d.v3electionpb.ProclaimRequest\x1a\x1e.v3electionpb.ProclaimResponse\" \x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/v3/election/proclaim\x12c\n" + + "\x06Leader\x12\x1b.v3electionpb.LeaderRequest\x1a\x1c.v3electionpb.LeaderResponse\"\x1e\x82\xd3\xe4\x93\x02\x18:\x01*\"\x13/v3/election/leader\x12g\n" + + "\aObserve\x12\x1b.v3electionpb.LeaderRequest\x1a\x1c.v3electionpb.LeaderResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/v3/election/observe0\x01\x12c\n" + + "\x06Resign\x12\x1b.v3electionpb.ResignRequest\x1a\x1c.v3electionpb.ResignResponse\"\x1e\x82\xd3\xe4\x93\x02\x18:\x01*\"\x13/v3/election/resignBBZ@go.etcd.io/etcd/server/v3/etcdserver/api/v3election/v3electionpbb\x06proto3" var ( - ErrInvalidLengthV3Election = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowV3Election = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupV3Election = fmt.Errorf("proto: unexpected end of group") + file_v3election_proto_rawDescOnce sync.Once + file_v3election_proto_rawDescData []byte ) + +func file_v3election_proto_rawDescGZIP() []byte { + file_v3election_proto_rawDescOnce.Do(func() { + file_v3election_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v3election_proto_rawDesc), len(file_v3election_proto_rawDesc))) + }) + return file_v3election_proto_rawDescData +} + +var file_v3election_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_v3election_proto_goTypes = []any{ + (*CampaignRequest)(nil), // 0: v3electionpb.CampaignRequest + (*CampaignResponse)(nil), // 1: v3electionpb.CampaignResponse + (*LeaderKey)(nil), // 2: v3electionpb.LeaderKey + (*LeaderRequest)(nil), // 3: v3electionpb.LeaderRequest + (*LeaderResponse)(nil), // 4: v3electionpb.LeaderResponse + (*ResignRequest)(nil), // 5: v3electionpb.ResignRequest + (*ResignResponse)(nil), // 6: v3electionpb.ResignResponse + (*ProclaimRequest)(nil), // 7: v3electionpb.ProclaimRequest + (*ProclaimResponse)(nil), // 8: v3electionpb.ProclaimResponse + (*etcdserverpb.ResponseHeader)(nil), // 9: etcdserverpb.ResponseHeader + (*mvccpb.KeyValue)(nil), // 10: mvccpb.KeyValue +} +var file_v3election_proto_depIdxs = []int32{ + 9, // 0: v3electionpb.CampaignResponse.header:type_name -> etcdserverpb.ResponseHeader + 2, // 1: v3electionpb.CampaignResponse.leader:type_name -> v3electionpb.LeaderKey + 9, // 2: v3electionpb.LeaderResponse.header:type_name -> etcdserverpb.ResponseHeader + 10, // 3: v3electionpb.LeaderResponse.kv:type_name -> mvccpb.KeyValue + 2, // 4: v3electionpb.ResignRequest.leader:type_name -> v3electionpb.LeaderKey + 9, // 5: v3electionpb.ResignResponse.header:type_name -> etcdserverpb.ResponseHeader + 2, // 6: v3electionpb.ProclaimRequest.leader:type_name -> v3electionpb.LeaderKey + 9, // 7: v3electionpb.ProclaimResponse.header:type_name -> etcdserverpb.ResponseHeader + 0, // 8: v3electionpb.Election.Campaign:input_type -> v3electionpb.CampaignRequest + 7, // 9: v3electionpb.Election.Proclaim:input_type -> v3electionpb.ProclaimRequest + 3, // 10: v3electionpb.Election.Leader:input_type -> v3electionpb.LeaderRequest + 3, // 11: v3electionpb.Election.Observe:input_type -> v3electionpb.LeaderRequest + 5, // 12: v3electionpb.Election.Resign:input_type -> v3electionpb.ResignRequest + 1, // 13: v3electionpb.Election.Campaign:output_type -> v3electionpb.CampaignResponse + 8, // 14: v3electionpb.Election.Proclaim:output_type -> v3electionpb.ProclaimResponse + 4, // 15: v3electionpb.Election.Leader:output_type -> v3electionpb.LeaderResponse + 4, // 16: v3electionpb.Election.Observe:output_type -> v3electionpb.LeaderResponse + 6, // 17: v3electionpb.Election.Resign:output_type -> v3electionpb.ResignResponse + 13, // [13:18] is the sub-list for method output_type + 8, // [8:13] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { file_v3election_proto_init() } +func file_v3election_proto_init() { + if File_v3election_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_v3election_proto_rawDesc), len(file_v3election_proto_rawDesc)), + NumEnums: 0, + NumMessages: 9, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_v3election_proto_goTypes, + DependencyIndexes: file_v3election_proto_depIdxs, + MessageInfos: file_v3election_proto_msgTypes, + }.Build() + File_v3election_proto = out.File + file_v3election_proto_goTypes = nil + file_v3election_proto_depIdxs = nil +} diff --git a/server/etcdserver/api/v3lock/v3lockpb/gw/v3lock.pb.gw.go b/server/etcdserver/api/v3lock/v3lockpb/gw/v3lock.pb.gw.go index 836214a0f49d..342ea4c57ded 100644 --- a/server/etcdserver/api/v3lock/v3lockpb/gw/v3lock.pb.gw.go +++ b/server/etcdserver/api/v3lock/v3lockpb/gw/v3lock.pb.gw.go @@ -9,8 +9,6 @@ It translates gRPC into RESTful JSON APIs. package gw import ( - protov1 "github.com/golang/protobuf/proto" - "context" "errors" "go.etcd.io/etcd/server/v3/etcdserver/api/v3lock/v3lockpb" @@ -43,14 +41,14 @@ func request_Lock_Lock_0(ctx context.Context, marshaler runtime.Marshaler, clien protoReq v3lockpb.LockRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Lock(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Lock_Lock_0(ctx context.Context, marshaler runtime.Marshaler, server v3lockpb.LockServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -58,11 +56,11 @@ func local_request_Lock_Lock_0(ctx context.Context, marshaler runtime.Marshaler, protoReq v3lockpb.LockRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Lock(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func request_Lock_Unlock_0(ctx context.Context, marshaler runtime.Marshaler, client v3lockpb.LockClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -70,14 +68,14 @@ func request_Lock_Unlock_0(ctx context.Context, marshaler runtime.Marshaler, cli protoReq v3lockpb.UnlockRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if req.Body != nil { _, _ = io.Copy(io.Discard, req.Body) } msg, err := client.Unlock(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } func local_request_Lock_Unlock_0(ctx context.Context, marshaler runtime.Marshaler, server v3lockpb.LockServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -85,11 +83,11 @@ func local_request_Lock_Unlock_0(ctx context.Context, marshaler runtime.Marshale protoReq v3lockpb.UnlockRequest metadata runtime.ServerMetadata ) - if err := marshaler.NewDecoder(req.Body).Decode(protov1.MessageV2(&protoReq)); err != nil && !errors.Is(err, io.EOF) { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Unlock(ctx, &protoReq) - return protov1.MessageV2(msg), metadata, err + return msg, metadata, err } // v3lockpb.RegisterLockHandlerServer registers the http handlers for service Lock to "mux". diff --git a/server/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go b/server/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go index 2870d74ec74c..016b5965995a 100644 --- a/server/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go +++ b/server/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go @@ -1,31 +1,31 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v3.20.3 // source: v3lock.proto package v3lockpb import ( - fmt "fmt" - io "io" - math "math" - math_bits "math/bits" + reflect "reflect" + sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" etcdserverpb "go.etcd.io/etcd/api/v3/etcdserverpb" _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type LockRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` // name is the identifier for the distributed shared lock to be acquired. Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // lease is the ID of the lease that will be attached to ownership of the @@ -33,971 +33,272 @@ type LockRequest struct { // the lock is automatically released. Calls to Lock with the same lease will // be treated as a single acquisition; locking twice with the same lease is a // no-op. - Lease int64 `protobuf:"varint,2,opt,name=lease,proto3" json:"lease,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Lease int64 `protobuf:"varint,2,opt,name=lease,proto3" json:"lease,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LockRequest) Reset() { *m = LockRequest{} } -func (m *LockRequest) String() string { return proto.CompactTextString(m) } -func (*LockRequest) ProtoMessage() {} -func (*LockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_52389b3e2f253201, []int{0} +func (x *LockRequest) Reset() { + *x = LockRequest{} + mi := &file_v3lock_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LockRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) + +func (x *LockRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LockRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LockRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err + +func (*LockRequest) ProtoMessage() {} + +func (x *LockRequest) ProtoReflect() protoreflect.Message { + mi := &file_v3lock_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *LockRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_LockRequest.Merge(m, src) -} -func (m *LockRequest) XXX_Size() int { - return m.Size() -} -func (m *LockRequest) XXX_DiscardUnknown() { - xxx_messageInfo_LockRequest.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_LockRequest proto.InternalMessageInfo +// Deprecated: Use LockRequest.ProtoReflect.Descriptor instead. +func (*LockRequest) Descriptor() ([]byte, []int) { + return file_v3lock_proto_rawDescGZIP(), []int{0} +} -func (m *LockRequest) GetName() []byte { - if m != nil { - return m.Name +func (x *LockRequest) GetName() []byte { + if x != nil { + return x.Name } return nil } -func (m *LockRequest) GetLease() int64 { - if m != nil { - return m.Lease +func (x *LockRequest) GetLease() int64 { + if x != nil { + return x.Lease } return 0 } type LockResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // key is a key that will exist on etcd for the duration that the Lock caller // owns the lock. Users should not modify this key or the lock may exhibit // undefined behavior. - Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LockResponse) Reset() { *m = LockResponse{} } -func (m *LockResponse) String() string { return proto.CompactTextString(m) } -func (*LockResponse) ProtoMessage() {} -func (*LockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_52389b3e2f253201, []int{1} -} -func (m *LockResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LockResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LockResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *LockResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_LockResponse.Merge(m, src) -} -func (m *LockResponse) XXX_Size() int { - return m.Size() +func (x *LockResponse) Reset() { + *x = LockResponse{} + mi := &file_v3lock_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LockResponse) XXX_DiscardUnknown() { - xxx_messageInfo_LockResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_LockResponse proto.InternalMessageInfo -func (m *LockResponse) GetHeader() *etcdserverpb.ResponseHeader { - if m != nil { - return m.Header - } - return nil +func (x *LockResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LockResponse) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} +func (*LockResponse) ProtoMessage() {} -type UnlockRequest struct { - // key is the lock ownership key granted by Lock. - Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UnlockRequest) Reset() { *m = UnlockRequest{} } -func (m *UnlockRequest) String() string { return proto.CompactTextString(m) } -func (*UnlockRequest) ProtoMessage() {} -func (*UnlockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_52389b3e2f253201, []int{2} -} -func (m *UnlockRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *UnlockRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_UnlockRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (x *LockResponse) ProtoReflect() protoreflect.Message { + mi := &file_v3lock_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *UnlockRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UnlockRequest.Merge(m, src) -} -func (m *UnlockRequest) XXX_Size() int { - return m.Size() -} -func (m *UnlockRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UnlockRequest.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_UnlockRequest proto.InternalMessageInfo - -func (m *UnlockRequest) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} - -type UnlockResponse struct { - Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UnlockResponse) Reset() { *m = UnlockResponse{} } -func (m *UnlockResponse) String() string { return proto.CompactTextString(m) } -func (*UnlockResponse) ProtoMessage() {} -func (*UnlockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_52389b3e2f253201, []int{3} -} -func (m *UnlockResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *UnlockResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_UnlockResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *UnlockResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_UnlockResponse.Merge(m, src) -} -func (m *UnlockResponse) XXX_Size() int { - return m.Size() -} -func (m *UnlockResponse) XXX_DiscardUnknown() { - xxx_messageInfo_UnlockResponse.DiscardUnknown(m) +// Deprecated: Use LockResponse.ProtoReflect.Descriptor instead. +func (*LockResponse) Descriptor() ([]byte, []int) { + return file_v3lock_proto_rawDescGZIP(), []int{1} } -var xxx_messageInfo_UnlockResponse proto.InternalMessageInfo - -func (m *UnlockResponse) GetHeader() *etcdserverpb.ResponseHeader { - if m != nil { - return m.Header +func (x *LockResponse) GetHeader() *etcdserverpb.ResponseHeader { + if x != nil { + return x.Header } return nil } -func init() { - proto.RegisterType((*LockRequest)(nil), "v3lockpb.LockRequest") - proto.RegisterType((*LockResponse)(nil), "v3lockpb.LockResponse") - proto.RegisterType((*UnlockRequest)(nil), "v3lockpb.UnlockRequest") - proto.RegisterType((*UnlockResponse)(nil), "v3lockpb.UnlockResponse") -} - -func init() { proto.RegisterFile("v3lock.proto", fileDescriptor_52389b3e2f253201) } - -var fileDescriptor_52389b3e2f253201 = []byte{ - // 346 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x29, 0x33, 0xce, 0xc9, - 0x4f, 0xce, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x80, 0xf0, 0x0a, 0x92, 0xa4, 0xe4, - 0x53, 0x4b, 0x92, 0x53, 0xf4, 0x13, 0x0b, 0x32, 0xf5, 0x41, 0x8c, 0xe2, 0xd4, 0xa2, 0xb2, 0xd4, - 0xa2, 0x82, 0x24, 0xfd, 0xa2, 0x82, 0x64, 0x88, 0x52, 0x29, 0x99, 0xf4, 0xfc, 0xfc, 0xf4, 0x9c, - 0x54, 0xb0, 0x92, 0xc4, 0xbc, 0xbc, 0xfc, 0x92, 0xc4, 0x92, 0xcc, 0xfc, 0xbc, 0x62, 0x88, 0xac, - 0x92, 0x39, 0x17, 0xb7, 0x4f, 0x7e, 0x72, 0x76, 0x50, 0x6a, 0x61, 0x69, 0x6a, 0x71, 0x89, 0x90, - 0x10, 0x17, 0x4b, 0x5e, 0x62, 0x6e, 0xaa, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x4f, 0x10, 0x98, 0x2d, - 0x24, 0xc2, 0xc5, 0x9a, 0x93, 0x9a, 0x58, 0x9c, 0x2a, 0xc1, 0xa4, 0xc0, 0xa8, 0xc1, 0x1c, 0x04, - 0xe1, 0x28, 0x85, 0x71, 0xf1, 0x40, 0x34, 0x16, 0x17, 0xe4, 0xe7, 0x15, 0xa7, 0x0a, 0x99, 0x70, - 0xb1, 0x65, 0xa4, 0x26, 0xa6, 0xa4, 0x16, 0x81, 0xf5, 0x72, 0x1b, 0xc9, 0xe8, 0x21, 0xbb, 0x47, - 0x0f, 0xa6, 0xce, 0x03, 0xac, 0x26, 0x08, 0xaa, 0x56, 0x48, 0x80, 0x8b, 0x39, 0x3b, 0xb5, 0x12, - 0x6c, 0x32, 0x4f, 0x10, 0x88, 0xa9, 0xa4, 0xc8, 0xc5, 0x1b, 0x9a, 0x97, 0x83, 0xe4, 0x24, 0xa8, - 0x12, 0x46, 0x84, 0x12, 0x37, 0x2e, 0x3e, 0x98, 0x12, 0x4a, 0x2c, 0x37, 0xda, 0xc0, 0xc8, 0xc5, - 0x02, 0xf2, 0x83, 0x90, 0x3f, 0x94, 0x16, 0xd5, 0x83, 0x05, 0xab, 0x1e, 0x52, 0xa0, 0x48, 0x89, - 0xa1, 0x0b, 0x43, 0x4c, 0x53, 0x92, 0x68, 0xba, 0xfc, 0x64, 0x32, 0x93, 0x90, 0x12, 0xaf, 0x7e, - 0x99, 0xb1, 0x3e, 0x48, 0x01, 0x98, 0xb0, 0x62, 0xd4, 0x12, 0x0a, 0xe7, 0x62, 0x83, 0xb8, 0x50, - 0x48, 0x1c, 0xa1, 0x17, 0xc5, 0x5b, 0x52, 0x12, 0x98, 0x12, 0x50, 0x63, 0xa5, 0xc0, 0xc6, 0x8a, - 0x28, 0xf1, 0xc3, 0x8d, 0x2d, 0xcd, 0x83, 0x1a, 0xec, 0xe4, 0x75, 0xe2, 0x91, 0x1c, 0xe3, 0x85, - 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0xce, 0x78, 0x2c, 0xc7, 0x10, 0x65, 0x91, 0x9e, 0x0f, - 0xf6, 0xac, 0x5e, 0x66, 0x3e, 0x38, 0x05, 0xe8, 0x43, 0x7c, 0x0d, 0xd2, 0x8b, 0x08, 0x03, 0x70, - 0xe4, 0x43, 0xec, 0xd3, 0x87, 0x59, 0x9b, 0xc4, 0x06, 0x4e, 0x01, 0xc6, 0x80, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x2a, 0x20, 0x0d, 0x43, 0x5a, 0x02, 0x00, 0x00, -} - -func (m *LockRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (x *LockResponse) GetKey() []byte { + if x != nil { + return x.Key } - return dAtA[:n], nil + return nil } -func (m *LockRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type UnlockRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // key is the lock ownership key granted by Lock. + Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LockRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Lease != 0 { - i = encodeVarintV3Lock(dAtA, i, uint64(m.Lease)) - i-- - dAtA[i] = 0x10 - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintV3Lock(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +func (x *UnlockRequest) Reset() { + *x = UnlockRequest{} + mi := &file_v3lock_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LockResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (x *UnlockRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LockResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +func (*UnlockRequest) ProtoMessage() {} -func (m *LockResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Key) > 0 { - i -= len(m.Key) - copy(dAtA[i:], m.Key) - i = encodeVarintV3Lock(dAtA, i, uint64(len(m.Key))) - i-- - dAtA[i] = 0x12 - } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintV3Lock(dAtA, i, uint64(size)) +func (x *UnlockRequest) ProtoReflect() protoreflect.Message { + mi := &file_v3lock_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *UnlockRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *UnlockRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *UnlockRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Key) > 0 { - i -= len(m.Key) - copy(dAtA[i:], m.Key) - i = encodeVarintV3Lock(dAtA, i, uint64(len(m.Key))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *UnlockResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err + return ms } - return dAtA[:n], nil + return mi.MessageOf(x) } -func (m *UnlockResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +// Deprecated: Use UnlockRequest.ProtoReflect.Descriptor instead. +func (*UnlockRequest) Descriptor() ([]byte, []int) { + return file_v3lock_proto_rawDescGZIP(), []int{2} } -func (m *UnlockResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) +func (x *UnlockRequest) GetKey() []byte { + if x != nil { + return x.Key } - if m.Header != nil { - { - size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintV3Lock(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil + return nil } -func encodeVarintV3Lock(dAtA []byte, offset int, v uint64) int { - offset -= sovV3Lock(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *LockRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovV3Lock(uint64(l)) - } - if m.Lease != 0 { - n += 1 + sovV3Lock(uint64(m.Lease)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +type UnlockResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LockResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovV3Lock(uint64(l)) - } - l = len(m.Key) - if l > 0 { - n += 1 + l + sovV3Lock(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +func (x *UnlockResponse) Reset() { + *x = UnlockResponse{} + mi := &file_v3lock_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *UnlockRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Key) - if l > 0 { - n += 1 + l + sovV3Lock(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +func (x *UnlockResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UnlockResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Header != nil { - l = m.Header.Size() - n += 1 + l + sovV3Lock(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} +func (*UnlockResponse) ProtoMessage() {} -func sovV3Lock(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozV3Lock(x uint64) (n int) { - return sovV3Lock(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *LockRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Lock - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LockRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LockRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Lock - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthV3Lock - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthV3Lock - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = append(m.Name[:0], dAtA[iNdEx:postIndex]...) - if m.Name == nil { - m.Name = []byte{} - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Lease", wireType) - } - m.Lease = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Lock - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Lease |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipV3Lock(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthV3Lock - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy +func (x *UnlockResponse) ProtoReflect() protoreflect.Message { + mi := &file_v3lock_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } + return ms } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil + return mi.MessageOf(x) } -func (m *LockResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Lock - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LockResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LockResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Lock - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthV3Lock - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthV3Lock - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &etcdserverpb.ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Lock - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthV3Lock - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthV3Lock - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) - if m.Key == nil { - m.Key = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipV3Lock(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthV3Lock - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil +// Deprecated: Use UnlockResponse.ProtoReflect.Descriptor instead. +func (*UnlockResponse) Descriptor() ([]byte, []int) { + return file_v3lock_proto_rawDescGZIP(), []int{3} } -func (m *UnlockRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Lock - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: UnlockRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: UnlockRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Lock - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthV3Lock - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthV3Lock - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) - if m.Key == nil { - m.Key = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipV3Lock(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthV3Lock - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF +func (x *UnlockResponse) GetHeader() *etcdserverpb.ResponseHeader { + if x != nil { + return x.Header } return nil } -func (m *UnlockResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Lock - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: UnlockResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: UnlockResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowV3Lock - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthV3Lock - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthV3Lock - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Header == nil { - m.Header = &etcdserverpb.ResponseHeader{} - } - if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipV3Lock(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthV3Lock - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipV3Lock(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowV3Lock - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowV3Lock - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowV3Lock - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthV3Lock - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupV3Lock - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthV3Lock - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} +var File_v3lock_proto protoreflect.FileDescriptor + +const file_v3lock_proto_rawDesc = "" + + "\n" + + "\fv3lock.proto\x12\bv3lockpb\x1a\x1fetcd/api/etcdserverpb/rpc.proto\x1a\x1cgoogle/api/annotations.proto\"7\n" + + "\vLockRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\fR\x04name\x12\x14\n" + + "\x05lease\x18\x02 \x01(\x03R\x05lease\"V\n" + + "\fLockResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header\x12\x10\n" + + "\x03key\x18\x02 \x01(\fR\x03key\"!\n" + + "\rUnlockRequest\x12\x10\n" + + "\x03key\x18\x01 \x01(\fR\x03key\"F\n" + + "\x0eUnlockResponse\x124\n" + + "\x06header\x18\x01 \x01(\v2\x1c.etcdserverpb.ResponseHeaderR\x06header2\xb0\x01\n" + + "\x04Lock\x12O\n" + + "\x04Lock\x12\x15.v3lockpb.LockRequest\x1a\x16.v3lockpb.LockResponse\"\x18\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/v3/lock/lock\x12W\n" + + "\x06Unlock\x12\x17.v3lockpb.UnlockRequest\x1a\x18.v3lockpb.UnlockResponse\"\x1a\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/v3/lock/unlockB:Z8go.etcd.io/etcd/server/v3/etcdserver/api/v3lock/v3lockpbb\x06proto3" var ( - ErrInvalidLengthV3Lock = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowV3Lock = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupV3Lock = fmt.Errorf("proto: unexpected end of group") + file_v3lock_proto_rawDescOnce sync.Once + file_v3lock_proto_rawDescData []byte ) + +func file_v3lock_proto_rawDescGZIP() []byte { + file_v3lock_proto_rawDescOnce.Do(func() { + file_v3lock_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v3lock_proto_rawDesc), len(file_v3lock_proto_rawDesc))) + }) + return file_v3lock_proto_rawDescData +} + +var file_v3lock_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_v3lock_proto_goTypes = []any{ + (*LockRequest)(nil), // 0: v3lockpb.LockRequest + (*LockResponse)(nil), // 1: v3lockpb.LockResponse + (*UnlockRequest)(nil), // 2: v3lockpb.UnlockRequest + (*UnlockResponse)(nil), // 3: v3lockpb.UnlockResponse + (*etcdserverpb.ResponseHeader)(nil), // 4: etcdserverpb.ResponseHeader +} +var file_v3lock_proto_depIdxs = []int32{ + 4, // 0: v3lockpb.LockResponse.header:type_name -> etcdserverpb.ResponseHeader + 4, // 1: v3lockpb.UnlockResponse.header:type_name -> etcdserverpb.ResponseHeader + 0, // 2: v3lockpb.Lock.Lock:input_type -> v3lockpb.LockRequest + 2, // 3: v3lockpb.Lock.Unlock:input_type -> v3lockpb.UnlockRequest + 1, // 4: v3lockpb.Lock.Lock:output_type -> v3lockpb.LockResponse + 3, // 5: v3lockpb.Lock.Unlock:output_type -> v3lockpb.UnlockResponse + 4, // [4:6] is the sub-list for method output_type + 2, // [2:4] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_v3lock_proto_init() } +func file_v3lock_proto_init() { + if File_v3lock_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_v3lock_proto_rawDesc), len(file_v3lock_proto_rawDesc)), + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_v3lock_proto_goTypes, + DependencyIndexes: file_v3lock_proto_depIdxs, + MessageInfos: file_v3lock_proto_msgTypes, + }.Build() + File_v3lock_proto = out.File + file_v3lock_proto_goTypes = nil + file_v3lock_proto_depIdxs = nil +} diff --git a/server/lease/leasepb/lease.pb.go b/server/lease/leasepb/lease.pb.go index 784a64a9db01..7d8ea1b48f13 100644 --- a/server/lease/leasepb/lease.pb.go +++ b/server/lease/leasepb/lease.pb.go @@ -1,768 +1,240 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v3.20.3 // source: lease.proto package leasepb import ( - fmt "fmt" - io "io" - math "math" - math_bits "math/bits" + reflect "reflect" + sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" etcdserverpb "go.etcd.io/etcd/api/v3/etcdserverpb" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type Lease struct { - ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - TTL int64 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"` - RemainingTTL int64 `protobuf:"varint,3,opt,name=RemainingTTL,proto3" json:"RemainingTTL,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + TTL int64 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"` + RemainingTTL int64 `protobuf:"varint,3,opt,name=RemainingTTL,proto3" json:"RemainingTTL,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *Lease) Reset() { *m = Lease{} } -func (m *Lease) String() string { return proto.CompactTextString(m) } -func (*Lease) ProtoMessage() {} -func (*Lease) Descriptor() ([]byte, []int) { - return fileDescriptor_3dd57e402472b33a, []int{0} +func (x *Lease) Reset() { + *x = Lease{} + mi := &file_lease_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *Lease) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) + +func (x *Lease) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Lease) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Lease.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err + +func (*Lease) ProtoMessage() {} + +func (x *Lease) ProtoReflect() protoreflect.Message { + mi := &file_lease_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *Lease) XXX_Merge(src proto.Message) { - xxx_messageInfo_Lease.Merge(m, src) -} -func (m *Lease) XXX_Size() int { - return m.Size() -} -func (m *Lease) XXX_DiscardUnknown() { - xxx_messageInfo_Lease.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_Lease proto.InternalMessageInfo +// Deprecated: Use Lease.ProtoReflect.Descriptor instead. +func (*Lease) Descriptor() ([]byte, []int) { + return file_lease_proto_rawDescGZIP(), []int{0} +} -func (m *Lease) GetID() int64 { - if m != nil { - return m.ID +func (x *Lease) GetID() int64 { + if x != nil { + return x.ID } return 0 } -func (m *Lease) GetTTL() int64 { - if m != nil { - return m.TTL +func (x *Lease) GetTTL() int64 { + if x != nil { + return x.TTL } return 0 } -func (m *Lease) GetRemainingTTL() int64 { - if m != nil { - return m.RemainingTTL +func (x *Lease) GetRemainingTTL() int64 { + if x != nil { + return x.RemainingTTL } return 0 } type LeaseInternalRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` LeaseTimeToLiveRequest *etcdserverpb.LeaseTimeToLiveRequest `protobuf:"bytes,1,opt,name=LeaseTimeToLiveRequest,proto3" json:"LeaseTimeToLiveRequest,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *LeaseInternalRequest) Reset() { *m = LeaseInternalRequest{} } -func (m *LeaseInternalRequest) String() string { return proto.CompactTextString(m) } -func (*LeaseInternalRequest) ProtoMessage() {} -func (*LeaseInternalRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3dd57e402472b33a, []int{1} -} -func (m *LeaseInternalRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseInternalRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseInternalRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *LeaseInternalRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseInternalRequest.Merge(m, src) -} -func (m *LeaseInternalRequest) XXX_Size() int { - return m.Size() +func (x *LeaseInternalRequest) Reset() { + *x = LeaseInternalRequest{} + mi := &file_lease_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *LeaseInternalRequest) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseInternalRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_LeaseInternalRequest proto.InternalMessageInfo -func (m *LeaseInternalRequest) GetLeaseTimeToLiveRequest() *etcdserverpb.LeaseTimeToLiveRequest { - if m != nil { - return m.LeaseTimeToLiveRequest - } - return nil +func (x *LeaseInternalRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -type LeaseInternalResponse struct { - LeaseTimeToLiveResponse *etcdserverpb.LeaseTimeToLiveResponse `protobuf:"bytes,1,opt,name=LeaseTimeToLiveResponse,proto3" json:"LeaseTimeToLiveResponse,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +func (*LeaseInternalRequest) ProtoMessage() {} -func (m *LeaseInternalResponse) Reset() { *m = LeaseInternalResponse{} } -func (m *LeaseInternalResponse) String() string { return proto.CompactTextString(m) } -func (*LeaseInternalResponse) ProtoMessage() {} -func (*LeaseInternalResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_3dd57e402472b33a, []int{2} -} -func (m *LeaseInternalResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LeaseInternalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LeaseInternalResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (x *LeaseInternalRequest) ProtoReflect() protoreflect.Message { + mi := &file_lease_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *LeaseInternalResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_LeaseInternalResponse.Merge(m, src) -} -func (m *LeaseInternalResponse) XXX_Size() int { - return m.Size() -} -func (m *LeaseInternalResponse) XXX_DiscardUnknown() { - xxx_messageInfo_LeaseInternalResponse.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_LeaseInternalResponse proto.InternalMessageInfo +// Deprecated: Use LeaseInternalRequest.ProtoReflect.Descriptor instead. +func (*LeaseInternalRequest) Descriptor() ([]byte, []int) { + return file_lease_proto_rawDescGZIP(), []int{1} +} -func (m *LeaseInternalResponse) GetLeaseTimeToLiveResponse() *etcdserverpb.LeaseTimeToLiveResponse { - if m != nil { - return m.LeaseTimeToLiveResponse +func (x *LeaseInternalRequest) GetLeaseTimeToLiveRequest() *etcdserverpb.LeaseTimeToLiveRequest { + if x != nil { + return x.LeaseTimeToLiveRequest } return nil } -func init() { - proto.RegisterType((*Lease)(nil), "leasepb.Lease") - proto.RegisterType((*LeaseInternalRequest)(nil), "leasepb.LeaseInternalRequest") - proto.RegisterType((*LeaseInternalResponse)(nil), "leasepb.LeaseInternalResponse") +type LeaseInternalResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + LeaseTimeToLiveResponse *etcdserverpb.LeaseTimeToLiveResponse `protobuf:"bytes,1,opt,name=LeaseTimeToLiveResponse,proto3" json:"LeaseTimeToLiveResponse,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func init() { proto.RegisterFile("lease.proto", fileDescriptor_3dd57e402472b33a) } - -var fileDescriptor_3dd57e402472b33a = []byte{ - // 261 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0xce, 0x49, 0x4d, 0x2c, - 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x07, 0x73, 0x0a, 0x92, 0xa4, 0xe4, 0x53, - 0x4b, 0x92, 0x53, 0xf4, 0x13, 0x0b, 0x32, 0xf5, 0x41, 0x8c, 0xe2, 0xd4, 0xa2, 0xb2, 0xd4, 0xa2, - 0x82, 0x24, 0xfd, 0xa2, 0x82, 0x64, 0x88, 0x4a, 0x25, 0x5f, 0x2e, 0x56, 0x1f, 0x90, 0x5a, 0x21, - 0x3e, 0x2e, 0x26, 0x4f, 0x17, 0x09, 0x46, 0x05, 0x46, 0x0d, 0xe6, 0x20, 0x26, 0x4f, 0x17, 0x21, - 0x01, 0x2e, 0xe6, 0x90, 0x10, 0x1f, 0x09, 0x26, 0xb0, 0x00, 0x88, 0x29, 0xa4, 0xc4, 0xc5, 0x13, - 0x94, 0x9a, 0x9b, 0x98, 0x99, 0x97, 0x99, 0x97, 0x0e, 0x92, 0x62, 0x06, 0x4b, 0xa1, 0x88, 0x29, - 0x95, 0x70, 0x89, 0x80, 0x8d, 0xf3, 0xcc, 0x2b, 0x49, 0x2d, 0xca, 0x4b, 0xcc, 0x09, 0x4a, 0x2d, - 0x2c, 0x4d, 0x2d, 0x2e, 0x11, 0x8a, 0xe1, 0x12, 0x03, 0x8b, 0x87, 0x64, 0xe6, 0xa6, 0x86, 0xe4, - 0xfb, 0x64, 0x96, 0xa5, 0x42, 0x65, 0xc0, 0x36, 0x72, 0x1b, 0xa9, 0xe8, 0x21, 0xbb, 0x4f, 0x0f, - 0xbb, 0xda, 0x20, 0x1c, 0x66, 0x28, 0x55, 0x70, 0x89, 0xa2, 0xd9, 0x5a, 0x5c, 0x90, 0x9f, 0x57, - 0x9c, 0x2a, 0x14, 0xcf, 0x25, 0x8e, 0xa1, 0x05, 0x22, 0x05, 0xb5, 0x57, 0x95, 0x80, 0xbd, 0x10, - 0xc5, 0x41, 0xb8, 0x4c, 0x71, 0x72, 0x3c, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, - 0x8f, 0xe4, 0x18, 0x67, 0x3c, 0x96, 0x63, 0x88, 0xd2, 0x4f, 0xcf, 0x07, 0x9b, 0xa9, 0x97, 0x99, - 0x0f, 0x0e, 0x73, 0x7d, 0x88, 0xe1, 0xfa, 0x65, 0xc6, 0xfa, 0xe0, 0x48, 0xd1, 0x87, 0x46, 0x8d, - 0x35, 0x94, 0x4e, 0x62, 0x03, 0x47, 0x84, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x2c, 0x7a, 0xc1, - 0x88, 0xc1, 0x01, 0x00, 0x00, +func (x *LeaseInternalResponse) Reset() { + *x = LeaseInternalResponse{} + mi := &file_lease_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *Lease) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (x *LeaseInternalResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Lease) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} +func (*LeaseInternalResponse) ProtoMessage() {} -func (m *Lease) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.RemainingTTL != 0 { - i = encodeVarintLease(dAtA, i, uint64(m.RemainingTTL)) - i-- - dAtA[i] = 0x18 - } - if m.TTL != 0 { - i = encodeVarintLease(dAtA, i, uint64(m.TTL)) - i-- - dAtA[i] = 0x10 - } - if m.ID != 0 { - i = encodeVarintLease(dAtA, i, uint64(m.ID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *LeaseInternalRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaseInternalRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseInternalRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.LeaseTimeToLiveRequest != nil { - { - size, err := m.LeaseTimeToLiveRequest.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintLease(dAtA, i, uint64(size)) +func (x *LeaseInternalResponse) ProtoReflect() protoreflect.Message { + mi := &file_lease_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0xa + return ms } - return len(dAtA) - i, nil + return mi.MessageOf(x) } -func (m *LeaseInternalResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LeaseInternalResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LeaseInternalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.LeaseTimeToLiveResponse != nil { - { - size, err := m.LeaseTimeToLiveResponse.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintLease(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintLease(dAtA []byte, offset int, v uint64) int { - offset -= sovLease(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Lease) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ID != 0 { - n += 1 + sovLease(uint64(m.ID)) - } - if m.TTL != 0 { - n += 1 + sovLease(uint64(m.TTL)) - } - if m.RemainingTTL != 0 { - n += 1 + sovLease(uint64(m.RemainingTTL)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseInternalRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.LeaseTimeToLiveRequest != nil { - l = m.LeaseTimeToLiveRequest.Size() - n += 1 + l + sovLease(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *LeaseInternalResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.LeaseTimeToLiveResponse != nil { - l = m.LeaseTimeToLiveResponse.Size() - n += 1 + l + sovLease(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func sovLease(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozLease(x uint64) (n int) { - return sovLease(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +// Deprecated: Use LeaseInternalResponse.ProtoReflect.Descriptor instead. +func (*LeaseInternalResponse) Descriptor() ([]byte, []int) { + return file_lease_proto_rawDescGZIP(), []int{2} } -func (m *Lease) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLease - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Lease: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Lease: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - m.ID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLease - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ID |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field TTL", wireType) - } - m.TTL = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLease - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.TTL |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RemainingTTL", wireType) - } - m.RemainingTTL = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLease - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.RemainingTTL |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipLease(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthLease - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF +func (x *LeaseInternalResponse) GetLeaseTimeToLiveResponse() *etcdserverpb.LeaseTimeToLiveResponse { + if x != nil { + return x.LeaseTimeToLiveResponse } return nil } -func (m *LeaseInternalRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLease - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseInternalRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseInternalRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LeaseTimeToLiveRequest", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLease - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthLease - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthLease - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.LeaseTimeToLiveRequest == nil { - m.LeaseTimeToLiveRequest = &etcdserverpb.LeaseTimeToLiveRequest{} - } - if err := m.LeaseTimeToLiveRequest.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipLease(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthLease - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *LeaseInternalResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLease - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LeaseInternalResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LeaseInternalResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LeaseTimeToLiveResponse", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLease - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthLease - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthLease - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.LeaseTimeToLiveResponse == nil { - m.LeaseTimeToLiveResponse = &etcdserverpb.LeaseTimeToLiveResponse{} - } - if err := m.LeaseTimeToLiveResponse.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipLease(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthLease - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } +var File_lease_proto protoreflect.FileDescriptor - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipLease(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowLease - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowLease - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowLease - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthLease - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupLease - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthLease - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} +const file_lease_proto_rawDesc = "" + + "\n" + + "\vlease.proto\x12\aleasepb\x1a\x1fetcd/api/etcdserverpb/rpc.proto\"M\n" + + "\x05Lease\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x03R\x02ID\x12\x10\n" + + "\x03TTL\x18\x02 \x01(\x03R\x03TTL\x12\"\n" + + "\fRemainingTTL\x18\x03 \x01(\x03R\fRemainingTTL\"t\n" + + "\x14LeaseInternalRequest\x12\\\n" + + "\x16LeaseTimeToLiveRequest\x18\x01 \x01(\v2$.etcdserverpb.LeaseTimeToLiveRequestR\x16LeaseTimeToLiveRequest\"x\n" + + "\x15LeaseInternalResponse\x12_\n" + + "\x17LeaseTimeToLiveResponse\x18\x01 \x01(\v2%.etcdserverpb.LeaseTimeToLiveResponseR\x17LeaseTimeToLiveResponseB1Z/go.etcd.io/etcd/server/v3/lease/leasepb;leasepbb\x06proto3" var ( - ErrInvalidLengthLease = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowLease = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupLease = fmt.Errorf("proto: unexpected end of group") + file_lease_proto_rawDescOnce sync.Once + file_lease_proto_rawDescData []byte ) + +func file_lease_proto_rawDescGZIP() []byte { + file_lease_proto_rawDescOnce.Do(func() { + file_lease_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_lease_proto_rawDesc), len(file_lease_proto_rawDesc))) + }) + return file_lease_proto_rawDescData +} + +var file_lease_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_lease_proto_goTypes = []any{ + (*Lease)(nil), // 0: leasepb.Lease + (*LeaseInternalRequest)(nil), // 1: leasepb.LeaseInternalRequest + (*LeaseInternalResponse)(nil), // 2: leasepb.LeaseInternalResponse + (*etcdserverpb.LeaseTimeToLiveRequest)(nil), // 3: etcdserverpb.LeaseTimeToLiveRequest + (*etcdserverpb.LeaseTimeToLiveResponse)(nil), // 4: etcdserverpb.LeaseTimeToLiveResponse +} +var file_lease_proto_depIdxs = []int32{ + 3, // 0: leasepb.LeaseInternalRequest.LeaseTimeToLiveRequest:type_name -> etcdserverpb.LeaseTimeToLiveRequest + 4, // 1: leasepb.LeaseInternalResponse.LeaseTimeToLiveResponse:type_name -> etcdserverpb.LeaseTimeToLiveResponse + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_lease_proto_init() } +func file_lease_proto_init() { + if File_lease_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_lease_proto_rawDesc), len(file_lease_proto_rawDesc)), + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lease_proto_goTypes, + DependencyIndexes: file_lease_proto_depIdxs, + MessageInfos: file_lease_proto_msgTypes, + }.Build() + File_lease_proto = out.File + file_lease_proto_goTypes = nil + file_lease_proto_depIdxs = nil +} diff --git a/server/storage/wal/walpb/record.pb.go b/server/storage/wal/walpb/record.pb.go index 8c22cd15c8e6..00bf487ad7c1 100644 --- a/server/storage/wal/walpb/record.pb.go +++ b/server/storage/wal/walpb/record.pb.go @@ -1,670 +1,212 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v3.20.3 // source: record.proto package walpb import ( - fmt "fmt" - io "io" - math "math" - math_bits "math/bits" + reflect "reflect" + sync "sync" + unsafe "unsafe" - proto "github.com/golang/protobuf/proto" raftpb "go.etcd.io/raft/v3/raftpb" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type Record struct { - Type *int64 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"` - Crc *uint32 `protobuf:"varint,2,opt,name=crc" json:"crc,omitempty"` - Data []byte `protobuf:"bytes,3,opt,name=data" json:"data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState `protogen:"open.v1"` + Type *int64 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"` + Crc *uint32 `protobuf:"varint,2,opt,name=crc" json:"crc,omitempty"` + Data []byte `protobuf:"bytes,3,opt,name=data" json:"data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *Record) Reset() { *m = Record{} } -func (m *Record) String() string { return proto.CompactTextString(m) } -func (*Record) ProtoMessage() {} -func (*Record) Descriptor() ([]byte, []int) { - return fileDescriptor_bf94fd919e302a1d, []int{0} -} -func (m *Record) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Record) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Record.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Record) XXX_Merge(src proto.Message) { - xxx_messageInfo_Record.Merge(m, src) -} -func (m *Record) XXX_Size() int { - return m.Size() +func (x *Record) Reset() { + *x = Record{} + mi := &file_record_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *Record) XXX_DiscardUnknown() { - xxx_messageInfo_Record.DiscardUnknown(m) -} - -var xxx_messageInfo_Record proto.InternalMessageInfo -func (m *Record) GetType() int64 { - if m != nil && m.Type != nil { - return *m.Type - } - return 0 -} - -func (m *Record) GetCrc() uint32 { - if m != nil && m.Crc != nil { - return *m.Crc - } - return 0 +func (x *Record) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Record) GetData() []byte { - if m != nil { - return m.Data - } - return nil -} - -// Keep in sync with raftpb.SnapshotMetadata. -type Snapshot struct { - Index *uint64 `protobuf:"varint,1,opt,name=index" json:"index,omitempty"` - Term *uint64 `protobuf:"varint,2,opt,name=term" json:"term,omitempty"` - // Field populated since >=etcd-3.5.0. - ConfState *raftpb.ConfState `protobuf:"bytes,3,opt,name=conf_state,json=confState" json:"conf_state,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +func (*Record) ProtoMessage() {} -func (m *Snapshot) Reset() { *m = Snapshot{} } -func (m *Snapshot) String() string { return proto.CompactTextString(m) } -func (*Snapshot) ProtoMessage() {} -func (*Snapshot) Descriptor() ([]byte, []int) { - return fileDescriptor_bf94fd919e302a1d, []int{1} -} -func (m *Snapshot) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Snapshot) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Snapshot.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err +func (x *Record) ProtoReflect() protoreflect.Message { + mi := &file_record_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil + return ms } -} -func (m *Snapshot) XXX_Merge(src proto.Message) { - xxx_messageInfo_Snapshot.Merge(m, src) -} -func (m *Snapshot) XXX_Size() int { - return m.Size() -} -func (m *Snapshot) XXX_DiscardUnknown() { - xxx_messageInfo_Snapshot.DiscardUnknown(m) + return mi.MessageOf(x) } -var xxx_messageInfo_Snapshot proto.InternalMessageInfo +// Deprecated: Use Record.ProtoReflect.Descriptor instead. +func (*Record) Descriptor() ([]byte, []int) { + return file_record_proto_rawDescGZIP(), []int{0} +} -func (m *Snapshot) GetIndex() uint64 { - if m != nil && m.Index != nil { - return *m.Index +func (x *Record) GetType() int64 { + if x != nil && x.Type != nil { + return *x.Type } return 0 } -func (m *Snapshot) GetTerm() uint64 { - if m != nil && m.Term != nil { - return *m.Term +func (x *Record) GetCrc() uint32 { + if x != nil && x.Crc != nil { + return *x.Crc } return 0 } -func (m *Snapshot) GetConfState() *raftpb.ConfState { - if m != nil { - return m.ConfState +func (x *Record) GetData() []byte { + if x != nil { + return x.Data } return nil } -func init() { - proto.RegisterType((*Record)(nil), "walpb.Record") - proto.RegisterType((*Snapshot)(nil), "walpb.Snapshot") -} - -func init() { proto.RegisterFile("record.proto", fileDescriptor_bf94fd919e302a1d) } - -var fileDescriptor_bf94fd919e302a1d = []byte{ - // 239 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x34, 0x8f, 0x41, 0x4a, 0xc4, 0x30, - 0x14, 0x86, 0x8d, 0xed, 0x88, 0xc6, 0x11, 0x9c, 0xe0, 0xa2, 0xb8, 0x28, 0x65, 0x56, 0x05, 0x21, - 0x11, 0x5d, 0xbb, 0x19, 0x6f, 0x90, 0xd9, 0xb9, 0x91, 0x4c, 0x9a, 0x8e, 0x03, 0x63, 0x5f, 0x78, - 0x7d, 0x4c, 0xf5, 0x26, 0x1e, 0xc9, 0xa5, 0x47, 0x90, 0x7a, 0x11, 0xc9, 0x2b, 0xb3, 0xfa, 0xbf, - 0xf0, 0xff, 0x7c, 0xe4, 0xc9, 0x39, 0x06, 0x0f, 0xd8, 0xe8, 0x88, 0x40, 0xa0, 0x66, 0x83, 0xdb, - 0xc7, 0xcd, 0xed, 0x02, 0x5d, 0x4b, 0x71, 0x63, 0x52, 0x4c, 0xcd, 0x72, 0x25, 0xcf, 0x2c, 0x2f, - 0x95, 0x92, 0x39, 0x7d, 0xc6, 0x50, 0x88, 0x4a, 0xd4, 0x99, 0x65, 0x56, 0xd7, 0x32, 0xf3, 0xe8, - 0x8b, 0xd3, 0x4a, 0xd4, 0x57, 0x36, 0x61, 0x5a, 0x35, 0x8e, 0x5c, 0x91, 0x55, 0xa2, 0x9e, 0x5b, - 0xe6, 0x65, 0x2b, 0xcf, 0xd7, 0x9d, 0x8b, 0xfd, 0x1b, 0x90, 0xba, 0x91, 0xb3, 0x5d, 0xd7, 0x84, - 0x0f, 0xd6, 0xe4, 0x76, 0x7a, 0xb0, 0x3b, 0xe0, 0x3b, 0x8b, 0x72, 0xcb, 0xac, 0xee, 0xa5, 0xf4, - 0xd0, 0xb5, 0xaf, 0x3d, 0x39, 0x0a, 0xec, 0xbb, 0x7c, 0x58, 0xe8, 0xe9, 0x87, 0xfa, 0x19, 0xba, - 0x76, 0x9d, 0x0a, 0x7b, 0xe1, 0x8f, 0xb8, 0x7a, 0xfa, 0x1e, 0x4b, 0xf1, 0x33, 0x96, 0xe2, 0x77, - 0x2c, 0xc5, 0xd7, 0x5f, 0x79, 0xf2, 0x72, 0xb7, 0x05, 0x1d, 0xc8, 0x37, 0x7a, 0x07, 0x26, 0xa5, - 0xe9, 0x03, 0x1e, 0x02, 0x9a, 0xc3, 0xa3, 0xe9, 0x09, 0xd0, 0x6d, 0x83, 0x19, 0xdc, 0xde, 0xf0, - 0xf5, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x48, 0x29, 0xe6, 0x31, 0x13, 0x01, 0x00, 0x00, +// Keep in sync with raftpb.SnapshotMetadata. +type Snapshot struct { + state protoimpl.MessageState `protogen:"open.v1"` + Index *uint64 `protobuf:"varint,1,opt,name=index" json:"index,omitempty"` + Term *uint64 `protobuf:"varint,2,opt,name=term" json:"term,omitempty"` + // Field populated since >=etcd-3.5.0. + ConfState *raftpb.ConfState `protobuf:"bytes,3,opt,name=conf_state,json=confState" json:"conf_state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (m *Record) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (x *Snapshot) Reset() { + *x = Snapshot{} + mi := &file_record_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (m *Record) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (x *Snapshot) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Record) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.Data != nil { - i -= len(m.Data) - copy(dAtA[i:], m.Data) - i = encodeVarintRecord(dAtA, i, uint64(len(m.Data))) - i-- - dAtA[i] = 0x1a - } - if m.Crc != nil { - i = encodeVarintRecord(dAtA, i, uint64(*m.Crc)) - i-- - dAtA[i] = 0x10 - } - if m.Type != nil { - i = encodeVarintRecord(dAtA, i, uint64(*m.Type)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} +func (*Snapshot) ProtoMessage() {} -func (m *Snapshot) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Snapshot) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Snapshot) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if m.ConfState != nil { - { - size, err := m.ConfState.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRecord(dAtA, i, uint64(size)) +func (x *Snapshot) ProtoReflect() protoreflect.Message { + mi := &file_record_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - i-- - dAtA[i] = 0x1a - } - if m.Term != nil { - i = encodeVarintRecord(dAtA, i, uint64(*m.Term)) - i-- - dAtA[i] = 0x10 + return ms } - if m.Index != nil { - i = encodeVarintRecord(dAtA, i, uint64(*m.Index)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil + return mi.MessageOf(x) } -func encodeVarintRecord(dAtA []byte, offset int, v uint64) int { - offset -= sovRecord(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Record) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Type != nil { - n += 1 + sovRecord(uint64(*m.Type)) - } - if m.Crc != nil { - n += 1 + sovRecord(uint64(*m.Crc)) - } - if m.Data != nil { - l = len(m.Data) - n += 1 + l + sovRecord(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +// Deprecated: Use Snapshot.ProtoReflect.Descriptor instead. +func (*Snapshot) Descriptor() ([]byte, []int) { + return file_record_proto_rawDescGZIP(), []int{1} } -func (m *Snapshot) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Index != nil { - n += 1 + sovRecord(uint64(*m.Index)) - } - if m.Term != nil { - n += 1 + sovRecord(uint64(*m.Term)) - } - if m.ConfState != nil { - l = m.ConfState.Size() - n += 1 + l + sovRecord(uint64(l)) +func (x *Snapshot) GetIndex() uint64 { + if x != nil && x.Index != nil { + return *x.Index } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n + return 0 } -func sovRecord(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozRecord(x uint64) (n int) { - return sovRecord(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Record) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRecord - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Record: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Record: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) - } - var v int64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRecord - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Type = &v - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Crc", wireType) - } - var v uint32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRecord - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Crc = &v - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRecord - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthRecord - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthRecord - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...) - if m.Data == nil { - m.Data = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRecord(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRecord - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } +func (x *Snapshot) GetTerm() uint64 { + if x != nil && x.Term != nil { + return *x.Term } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil + return 0 } -func (m *Snapshot) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRecord - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Snapshot: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Snapshot: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType) - } - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRecord - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Index = &v - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Term", wireType) - } - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRecord - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Term = &v - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConfState", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRecord - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRecord - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRecord - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.ConfState == nil { - m.ConfState = &raftpb.ConfState{} - } - if err := m.ConfState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRecord(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRecord - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF +func (x *Snapshot) GetConfState() *raftpb.ConfState { + if x != nil { + return x.ConfState } return nil } -func skipRecord(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowRecord - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowRecord - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowRecord - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthRecord - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupRecord - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthRecord - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} + +var File_record_proto protoreflect.FileDescriptor + +const file_record_proto_rawDesc = "" + + "\n" + + "\frecord.proto\x12\x05walpb\x1a\x11raftpb/raft.proto\"B\n" + + "\x06Record\x12\x12\n" + + "\x04type\x18\x01 \x01(\x03R\x04type\x12\x10\n" + + "\x03crc\x18\x02 \x01(\rR\x03crc\x12\x12\n" + + "\x04data\x18\x03 \x01(\fR\x04data\"f\n" + + "\bSnapshot\x12\x14\n" + + "\x05index\x18\x01 \x01(\x04R\x05index\x12\x12\n" + + "\x04term\x18\x02 \x01(\x04R\x04term\x120\n" + + "\n" + + "conf_state\x18\x03 \x01(\v2\x11.raftpb.ConfStateR\tconfStateB-Z+go.etcd.io/etcd/server/v3/storage/wal/walpb" var ( - ErrInvalidLengthRecord = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowRecord = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupRecord = fmt.Errorf("proto: unexpected end of group") + file_record_proto_rawDescOnce sync.Once + file_record_proto_rawDescData []byte ) + +func file_record_proto_rawDescGZIP() []byte { + file_record_proto_rawDescOnce.Do(func() { + file_record_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_record_proto_rawDesc), len(file_record_proto_rawDesc))) + }) + return file_record_proto_rawDescData +} + +var file_record_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_record_proto_goTypes = []any{ + (*Record)(nil), // 0: walpb.Record + (*Snapshot)(nil), // 1: walpb.Snapshot + (*raftpb.ConfState)(nil), // 2: raftpb.ConfState +} +var file_record_proto_depIdxs = []int32{ + 2, // 0: walpb.Snapshot.conf_state:type_name -> raftpb.ConfState + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_record_proto_init() } +func file_record_proto_init() { + if File_record_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_record_proto_rawDesc), len(file_record_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_record_proto_goTypes, + DependencyIndexes: file_record_proto_depIdxs, + MessageInfos: file_record_proto_msgTypes, + }.Build() + File_record_proto = out.File + file_record_proto_goTypes = nil + file_record_proto_depIdxs = nil +} From a4b5968002c5bc78fc0021d6eda2c7e16a83e15b Mon Sep 17 00:00:00 2001 From: Jefftree Date: Thu, 14 May 2026 09:50:54 -0400 Subject: [PATCH 0988/1068] tests/integration: add RangeStream test for values exceeding chunker target Signed-off-by: Jefftree --- tests/integration/v3_grpc_test.go | 62 +++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/tests/integration/v3_grpc_test.go b/tests/integration/v3_grpc_test.go index 7a5ebc763c7d..b9f3eb03d2de 100644 --- a/tests/integration/v3_grpc_test.go +++ b/tests/integration/v3_grpc_test.go @@ -40,6 +40,7 @@ import ( "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" "go.etcd.io/etcd/client/pkg/v3/transport" clientv3 "go.etcd.io/etcd/client/v3" + "go.etcd.io/etcd/server/v3/embed" "go.etcd.io/etcd/tests/v3/framework/config" "go.etcd.io/etcd/tests/v3/framework/integration" ) @@ -1828,6 +1829,67 @@ func TestV3RangeStreamWriteBetweenChunks(t *testing.T) { require.Equalf(t, int64(nKeys), merged.Count, "stream Count must reflect the pinned revision") } +// TestV3RangeStreamLargeValues verifies the stream progresses and emits all +// KVs when individual stored values exceed the chunk target. +func TestV3RangeStreamLargeValues(t *testing.T) { + if integration.ThroughProxy { + t.Skip("RangeStream is not supported by the gRPC proxy") + } + integration.BeforeTest(t) + + const ( + valueSize = 4 * 1024 * 1024 + nKeys = 20 + ) + clus := integration.NewCluster(t, &integration.ClusterConfig{ + Size: 1, + MaxRequestBytes: 8 * 1024 * 1024, + }) + defer clus.Terminate(t) + + kvc := integration.ToGRPC(clus.Client(0)).KV + value := make([]byte, valueSize) + for i := 0; i < nKeys; i++ { + _, err := kvc.Put(t.Context(), &pb.PutRequest{ + Key: []byte(fmt.Sprintf("big-%02d", i)), + Value: value, + }) + require.NoError(t, err) + } + + m := clus.Members[0] + m.Stop(t) + m.MaxRequestBytes = embed.DefaultMaxRequestBytes + require.Lessf(t, int(m.MaxRequestBytes), valueSize, "valueSize must exceed MaxRequestBytes to exercise large-value path") + require.NoError(t, m.Restart(t)) + clus.WaitMembersForLeader(t, clus.Members) + kvc = integration.ToGRPC(clus.Client(0)).KV + waitForRestart(t, kvc) + + stream, err := kvc.RangeStream(t.Context(), &pb.RangeRequest{ + Key: []byte("big-"), + RangeEnd: []byte("big."), + }, grpc.MaxCallRecvMsgSize(nKeys*valueSize+512*1024)) + require.NoError(t, err) + + var kvs, recvs int + for { + chunk, rerr := stream.Recv() + if errors.Is(rerr, io.EOF) { + break + } + require.NoError(t, rerr) + recvs++ + for j, kv := range chunk.GetRangeResponse().GetKvs() { + require.Equal(t, fmt.Sprintf("big-%02d", kvs+j), string(kv.Key)) + require.Equal(t, value, kv.Value) + } + kvs += len(chunk.GetRangeResponse().GetKvs()) + } + require.Equalf(t, nKeys, kvs, "kv count") + require.GreaterOrEqualf(t, recvs, 2, "expected multi-chunk stream for %d-byte values", valueSize) +} + // TestTLSGRPCRejectInsecureClient checks that connection is rejected if server is TLS but not client. func TestTLSGRPCRejectInsecureClient(t *testing.T) { integration.BeforeTest(t) From e258ddd7112ab87fe437e3e5dfac5eb4ec1f8996 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Fri, 13 Mar 2026 19:13:47 -0400 Subject: [PATCH 0989/1068] *: switch to new protobuf struct MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit goos: linux goarch: amd64 pkg: go.etcd.io/etcd/server/v3/etcdserver/txn cpu: AMD Ryzen 7 5800H with Radeon Graphics │ /tmp/etcd-main-benchmark-warn-protosize.txt │ /tmp/etcd-current-benchmark-warn-protosize.txt │ │ sec/op │ sec/op vs base │ WarnOfExpensiveRequestWithProtoSize-16 3.530µ ± 1% 2.785µ ± 2% -21.12% (p=0.000 n=10) │ /tmp/etcd-main-benchmark-warn-protosize.txt │ /tmp/etcd-current-benchmark-warn-protosize.txt │ │ B/op │ B/op vs base │ WarnOfExpensiveRequestWithProtoSize-16 1.822Ki ± 0% 1.315Ki ± 0% -27.81% (p=0.000 n=10) │ /tmp/etcd-main-benchmark-warn-protosize.txt │ /tmp/etcd-current-benchmark-warn-protosize.txt │ │ allocs/op │ allocs/op vs base │ WarnOfExpensiveRequestWithProtoSize-16 15.00 ± 0% 28.00 ± 0% +86.67% (p=0.000 n=10) Signed-off-by: Wei Fu --- api/etcdserverpb/util.go | 5 +- api/go.mod | 1 - api/go.sum | 31 ----------- cache/cache_test.go | 5 +- cache/go.mod | 3 +- cache/go.sum | 31 ----------- cache/ringbuffer_test.go | 7 +-- cache/store_test.go | 5 +- client/v3/compare.go | 6 +-- client/v3/go.mod | 3 +- client/v3/go.sum | 31 ----------- etcdctl/ctlv3/command/printer_protobuf.go | 15 +++--- etcdctl/go.mod | 3 +- etcdctl/go.sum | 31 ----------- etcdutl/etcdutl/common_test.go | 2 +- etcdutl/go.mod | 2 +- etcdutl/snapshot/v3_snapshot.go | 5 +- pkg/go.mod | 2 +- pkg/pbutil/pbutil.go | 20 ++++++- pkg/pbutil/pbutil_test.go | 26 +++++++++ server/etcdserver/api/snap/snapshotter.go | 5 +- server/etcdserver/api/v3rpc/interceptor.go | 19 +++---- server/etcdserver/api/v3rpc/watch.go | 5 +- server/etcdserver/apply/apply.go | 2 +- server/etcdserver/apply/interface.go | 2 +- server/etcdserver/bootstrap.go | 4 +- server/etcdserver/server_test.go | 9 ++-- server/etcdserver/txn/put.go | 3 +- server/etcdserver/txn/txn.go | 3 +- server/etcdserver/txn/util.go | 6 +-- server/etcdserver/txn/util_bench_test.go | 54 +++++++++++-------- server/etcdserver/v3_server.go | 6 +-- server/go.mod | 2 +- server/lease/leasehttp/http.go | 20 +++---- server/lease/lessor_test.go | 4 +- server/proxy/grpcproxy/cache/store.go | 3 +- server/proxy/grpcproxy/kv.go | 2 +- server/storage/mvcc/kv_test.go | 31 +++++------ server/storage/mvcc/kvstore.go | 3 +- server/storage/mvcc/kvstore_test.go | 25 +++++---- server/storage/mvcc/kvstore_txn.go | 7 +-- server/storage/mvcc/testutil/hash.go | 5 +- server/storage/mvcc/watchable_store.go | 3 +- server/storage/mvcc/watchable_store_test.go | 20 ++++--- server/storage/mvcc/watcher_test.go | 6 ++- server/storage/schema/alarm.go | 7 +-- server/storage/schema/auth_roles.go | 7 +-- server/storage/schema/auth_roles_test.go | 11 ++-- server/storage/schema/auth_users.go | 7 +-- server/storage/schema/auth_users_test.go | 11 ++-- server/storage/schema/lease.go | 8 +-- server/storage/schema/lease_test.go | 7 ++- server/storage/wal/decoder.go | 4 +- server/storage/wal/encoder.go | 12 +++-- server/storage/wal/record_test.go | 10 ++-- server/storage/wal/testing/waltesting.go | 2 +- server/storage/wal/version.go | 2 +- server/storage/wal/version_test.go | 10 ++-- server/storage/wal/wal.go | 8 +-- server/storage/wal/wal_test.go | 8 +-- server/storage/wal/walpb/record.go | 5 +- tests/common/kv_test.go | 12 ++++- tests/e2e/v3_curl_maxstream_test.go | 13 +++-- tests/e2e/watch_test.go | 3 +- tests/framework/integration/cluster.go | 16 +++--- tests/go.mod | 2 +- tests/integration/cache_test.go | 7 +-- .../clientv3/lease/leasing_test.go | 7 ++- .../integration/clientv3/watch/watch_test.go | 3 +- tests/robustness/report/wal.go | 3 +- tools/etcd-dump-db/backend.go | 9 ++-- tools/etcd-dump-logs/etcd-dump-log_test.go | 2 +- tools/etcd-dump-logs/main.go | 27 +++++----- tools/etcd-dump-logs/raw.go | 4 +- tools/etcd-dump-logs/raw_test.go | 2 +- tools/mod/go.mod | 2 +- tools/mod/libs.go | 4 -- 77 files changed, 356 insertions(+), 362 deletions(-) diff --git a/api/etcdserverpb/util.go b/api/etcdserverpb/util.go index 04939280c86a..413f0826b3c6 100644 --- a/api/etcdserverpb/util.go +++ b/api/etcdserverpb/util.go @@ -14,12 +14,9 @@ package etcdserverpb -import proto "github.com/gogo/protobuf/proto" +import "google.golang.org/protobuf/proto" // Clone returns a deep copy of h, or an empty ResponseHeader if h is nil. -// -// TODO: replace this with the official protobuf clone helper once this package -// migrates away from gogo/protobuf. func (h *ResponseHeader) Clone() *ResponseHeader { if h == nil { return &ResponseHeader{} diff --git a/api/go.mod b/api/go.mod index 84ca3f9c36cb..d4bd8e83bb24 100644 --- a/api/go.mod +++ b/api/go.mod @@ -6,7 +6,6 @@ toolchain go1.26.3 require ( github.com/coreos/go-semver v0.3.1 - github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 github.com/stretchr/testify v1.11.1 diff --git a/api/go.sum b/api/go.sum index 35846ee741ce..d1286dee074c 100644 --- a/api/go.sum +++ b/api/go.sum @@ -8,8 +8,6 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -18,8 +16,6 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -30,8 +26,6 @@ github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0t github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -44,37 +38,12 @@ go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfC go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/cache/cache_test.go b/cache/cache_test.go index d87ab9b86868..7725fd15e1df 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -24,6 +24,7 @@ import ( "time" "github.com/google/go-cmp/cmp" + "google.golang.org/protobuf/testing/protocmp" pb "go.etcd.io/etcd/api/v3/etcdserverpb" mvccpb "go.etcd.io/etcd/api/v3/mvccpb" @@ -226,7 +227,7 @@ func TestCacheWatchAtomicOrderedDelivery(t *testing.T) { got := collectAndAssertAtomicEvents(ctx, t, watchCh, len(tt.wantBatch)) - if diff := cmp.Diff(tt.wantBatch, got); diff != "" { + if diff := cmp.Diff(tt.wantBatch, got, protocmp.Transform()); diff != "" { t.Fatalf("event mismatch (-want +got):\n%s", diff) } }) @@ -720,7 +721,7 @@ func verifySnapshot(t *testing.T, cache *Cache, want []*mvccpb.KeyValue) { t.Fatalf("Get all keys: %v", err) } - if diff := cmp.Diff(want, resp.Kvs); diff != "" { + if diff := cmp.Diff(want, resp.Kvs, protocmp.Transform()); diff != "" { t.Fatalf("cache snapshot mismatch (-want +got):\n%s", diff) } } diff --git a/cache/go.mod b/cache/go.mod index fa6fe981c6f5..c28a81082365 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -9,6 +9,7 @@ require ( github.com/stretchr/testify v1.11.1 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 + google.golang.org/protobuf v1.36.11 k8s.io/utils v0.0.0-20260108192941-914a6e750570 ) @@ -16,7 +17,6 @@ require ( github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect @@ -29,7 +29,6 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/grpc v1.80.0 // indirect - google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index fc57c670648b..2853e7dd4a9f 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -12,8 +12,6 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -26,8 +24,6 @@ github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajR github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -48,8 +44,6 @@ github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0t github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -70,37 +64,12 @@ go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/cache/ringbuffer_test.go b/cache/ringbuffer_test.go index 20b58471234c..a5671eaea314 100644 --- a/cache/ringbuffer_test.go +++ b/cache/ringbuffer_test.go @@ -19,6 +19,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" + "google.golang.org/protobuf/testing/protocmp" "go.etcd.io/etcd/api/v3/mvccpb" clientv3 "go.etcd.io/etcd/client/v3" @@ -158,7 +159,7 @@ func TestIterationMethods(t *testing.T) { tc := tc t.Run(fmt.Sprintf("%s_pivot_%d", tc.method, tc.pivot), func(t *testing.T) { got := collectRevisions(rb, tc.method, tc.pivot) - if diff := cmp.Diff(tc.wantIterRevisions, got); diff != "" { + if diff := cmp.Diff(tc.wantIterRevisions, got, protocmp.Transform()); diff != "" { t.Fatalf("%s(%d) mismatch (-want +got):\n%s", tc.method, tc.pivot, diff) } }) @@ -245,7 +246,7 @@ func TestIterationWithBatching(t *testing.T) { return true }) - if diff := cmp.Diff(tt.want, got); diff != "" { + if diff := cmp.Diff(tt.want, got, protocmp.Transform()); diff != "" { t.Fatalf("Events mismatch (-want +got):\n%s", diff) } }) @@ -310,7 +311,7 @@ func TestIterationEarlyStop(t *testing.T) { return shouldContinue }) - if diff := cmp.Diff(tt.want, collected); diff != "" { + if diff := cmp.Diff(tt.want, collected, protocmp.Transform()); diff != "" { t.Fatalf("Early stop failed.\nExpected: \nDiff (-want +got):\n%s", diff) } diff --git a/cache/store_test.go b/cache/store_test.go index 8437f1e78f91..1d60be37f6aa 100644 --- a/cache/store_test.go +++ b/cache/store_test.go @@ -19,6 +19,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" + "google.golang.org/protobuf/testing/protocmp" mvccpb "go.etcd.io/etcd/api/v3/mvccpb" clientv3 "go.etcd.io/etcd/client/v3" @@ -138,7 +139,7 @@ func TestStoreGet(t *testing.T) { t.Fatalf("revision=%d; want %d", rev, test.expectedRev) } - if diff := cmp.Diff(test.expectedKVs, kvs); diff != "" { + if diff := cmp.Diff(test.expectedKVs, kvs, protocmp.Transform()); diff != "" { t.Fatalf("Get mismatch (-want +got):\n%s", diff) } }) @@ -433,7 +434,7 @@ func verifyStoreSnapshot(t *testing.T, s *store, want []*mvccpb.KeyValue, wantRe if headerRev != latestRev { t.Fatalf("header rev=%d; want latest %d (requestedRev=%d)", latestRev, wantRev, requestedRev) } - if diff := cmp.Diff(want, kvs); diff != "" { + if diff := cmp.Diff(want, kvs, protocmp.Transform()); diff != "" { t.Fatalf("snapshot mismatch (requestedRev=%d) (-want +got):\n%s", requestedRev, diff) } } diff --git a/client/v3/compare.go b/client/v3/compare.go index 022f1dfb5e57..25a6e6557658 100644 --- a/client/v3/compare.go +++ b/client/v3/compare.go @@ -15,7 +15,7 @@ package clientv3 import ( - gogoproto "github.com/gogo/protobuf/proto" + "google.golang.org/protobuf/proto" pb "go.etcd.io/etcd/api/v3/etcdserverpb" ) @@ -184,11 +184,9 @@ func mustInt64orLeaseID(val any) int64 { return mustInt64(val) } -// TODO: use the official protobuf clone path after client/v3 stops using -// gogo-generated messages. func cloneCompare(c *pb.Compare) *pb.Compare { if c == nil { return nil } - return gogoproto.Clone(c).(*pb.Compare) + return proto.Clone(c).(*pb.Compare) } diff --git a/client/v3/go.mod b/client/v3/go.mod index e5c96dd0b333..ea152d8dda3f 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -7,7 +7,6 @@ toolchain go1.26.3 require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 - github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/prometheus/client_golang v1.23.2 @@ -16,6 +15,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 go.uber.org/zap v1.27.1 google.golang.org/grpc v1.80.0 + google.golang.org/protobuf v1.36.11 sigs.k8s.io/yaml v1.6.0 ) @@ -41,7 +41,6 @@ require ( golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect - google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/client/v3/go.sum b/client/v3/go.sum index 6c499f4e5467..ec4a90602ada 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -14,8 +14,6 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -28,8 +26,6 @@ github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajR github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -54,8 +50,6 @@ github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0t github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -78,37 +72,12 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/etcdctl/ctlv3/command/printer_protobuf.go b/etcdctl/ctlv3/command/printer_protobuf.go index b7e4148f0a13..11ba7762df61 100644 --- a/etcdctl/ctlv3/command/printer_protobuf.go +++ b/etcdctl/ctlv3/command/printer_protobuf.go @@ -18,6 +18,8 @@ import ( "fmt" "os" + "google.golang.org/protobuf/proto" + pb "go.etcd.io/etcd/api/v3/etcdserverpb" v3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/pkg/v3/cobrautl" @@ -25,10 +27,6 @@ import ( type pbPrinter struct{ printer } -type pbMarshal interface { - Marshal() ([]byte, error) -} - func newPBPrinter() printer { return &pbPrinter{ &printerRPC{newPrinterUnsupported("protobuf"), printPB}, @@ -50,11 +48,14 @@ func (p *pbPrinter) Watch(r *v3.WatchResponse) { } func printPB(v any) { - m, ok := v.(pbMarshal) - if !ok { + var b []byte + var err error + switch m := v.(type) { + case proto.Message: + b, err = proto.Marshal(m) + default: cobrautl.ExitWithError(cobrautl.ExitBadFeature, fmt.Errorf("marshal unsupported for type %T (%v)", v, v)) } - b, err := m.Marshal() if err != nil { fmt.Fprintf(os.Stderr, "%v\n", err) return diff --git a/etcdctl/go.mod b/etcdctl/go.mod index c50f69a04cd1..76d865c76309 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -19,6 +19,7 @@ require ( go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 google.golang.org/grpc v1.80.0 + google.golang.org/protobuf v1.36.11 ) require ( @@ -30,7 +31,6 @@ require ( github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.19.0 // indirect - github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -47,7 +47,6 @@ require ( golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect - google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 6a5a09604424..e66c39ce8100 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -27,8 +27,6 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -43,8 +41,6 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF2 github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -85,8 +81,6 @@ github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= @@ -108,40 +102,15 @@ go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/etcdutl/etcdutl/common_test.go b/etcdutl/etcdutl/common_test.go index 414051d6589f..4da61ab487e6 100644 --- a/etcdutl/etcdutl/common_test.go +++ b/etcdutl/etcdutl/common_test.go @@ -79,7 +79,7 @@ func TestGetLatestWalSnap(t *testing.T) { require.NoError(t, fileutil.TouchDirAll(lg, datadir.ToSnapDir(dataDir))) // populate wal file - w, err := wal.Create(lg, datadir.ToWALDir(dataDir), pbutil.MustMarshal( + w, err := wal.Create(lg, datadir.ToWALDir(dataDir), pbutil.MustMarshalMessage( &etcdserverpb.Metadata{ NodeID: new(uint64(1)), ClusterID: new(uint64(2)), diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 7c4864b5f531..8509b765e182 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -26,6 +26,7 @@ require ( go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.uber.org/zap v1.27.1 + google.golang.org/protobuf v1.36.11 gotest.tools/v3 v3.5.2 ) @@ -87,7 +88,6 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/grpc v1.80.0 // indirect - google.golang.org/protobuf v1.36.11 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/utils v0.0.0-20260108192941-914a6e750570 // indirect diff --git a/etcdutl/snapshot/v3_snapshot.go b/etcdutl/snapshot/v3_snapshot.go index 3baf6beab201..92ed85b69cc8 100644 --- a/etcdutl/snapshot/v3_snapshot.go +++ b/etcdutl/snapshot/v3_snapshot.go @@ -28,6 +28,7 @@ import ( "strings" "go.uber.org/zap" + "google.golang.org/protobuf/proto" bolt "go.etcd.io/bbolt" "go.etcd.io/etcd/api/v3/etcdserverpb" @@ -172,7 +173,7 @@ func (s *v3Manager) Status(dbPath string) (ds Status, err error) { ds.Revision = rev.Main var kv mvccpb.KeyValue - err = kv.Unmarshal(v) + err = proto.Unmarshal(v, &kv) if err != nil { return fmt.Errorf("cannot unmarshal value, key: %q value: %q err: %w", k, v, err) } @@ -521,7 +522,7 @@ func (s *v3Manager) saveWALAndSnap() (*raftpb.HardState, error) { m := s.cl.MemberByName(s.name) //nolint:staticcheck // See https://github.com/dominikh/go-tools/issues/1698 md := &etcdserverpb.Metadata{NodeID: new(uint64(m.ID)), ClusterID: new(uint64(s.cl.ID()))} - metadata, merr := md.Marshal() + metadata, merr := proto.Marshal(md) if merr != nil { return nil, merr } diff --git a/pkg/go.mod b/pkg/go.mod index 02aa414834fe..ff1d88694f8a 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -15,6 +15,7 @@ require ( go.uber.org/zap v1.27.1 golang.org/x/sys v0.43.0 google.golang.org/grpc v1.80.0 + google.golang.org/protobuf v1.36.11 ) require ( @@ -29,7 +30,6 @@ require ( golang.org/x/net v0.53.0 // indirect golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect - google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/pbutil/pbutil.go b/pkg/pbutil/pbutil.go index 821f59703ae6..682eb8971791 100644 --- a/pkg/pbutil/pbutil.go +++ b/pkg/pbutil/pbutil.go @@ -15,7 +15,11 @@ // Package pbutil defines interfaces for handling Protocol Buffer objects. package pbutil -import "fmt" +import ( + "fmt" + + "google.golang.org/protobuf/proto" +) type Marshaler interface { Marshal() (data []byte, err error) @@ -46,6 +50,20 @@ func MaybeUnmarshal(um Unmarshaler, data []byte) bool { return true } +func MustMarshalMessage(m proto.Message) []byte { + d, err := proto.Marshal(m) + if err != nil { + panic(fmt.Sprintf("marshal should never fail (%v)", err)) + } + return d +} + +func MustUnmarshalMessage(um proto.Message, data []byte) { + if err := proto.Unmarshal(data, um); err != nil { + panic(fmt.Sprintf("unmarshal should never fail (%v)", err)) + } +} + func GetBool(v *bool) (vv bool, set bool) { if v == nil { return false, false diff --git a/pkg/pbutil/pbutil_test.go b/pkg/pbutil/pbutil_test.go index ab6edcdc035d..9404af2704a0 100644 --- a/pkg/pbutil/pbutil_test.go +++ b/pkg/pbutil/pbutil_test.go @@ -20,6 +20,9 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/wrapperspb" ) func TestMarshaler(t *testing.T) { @@ -52,6 +55,29 @@ func TestUnmarshalerPanic(t *testing.T) { MustUnmarshal(m, nil) } +func TestProtoMarshaler(t *testing.T) { + m := wrapperspb.Int64(7) + g := MustMarshalMessage(m) + w, err := proto.Marshal(m) + require.NoError(t, err) + assert.Equal(t, w, g) +} + +func TestProtoUnmarshaler(t *testing.T) { + data := MustMarshalMessage(wrapperspb.Int64(9)) + m := &wrapperspb.Int64Value{} + MustUnmarshalMessage(m, data) + assert.Equal(t, int64(9), m.Value) +} + +func TestProtoUnmarshalerPanic(t *testing.T) { + defer func() { + assert.NotNilf(t, recover(), "recover = nil, want error") + }() + m := &wrapperspb.Int64Value{} + MustUnmarshalMessage(m, []byte("not-a-protobuf")) +} + func TestGetBool(t *testing.T) { tests := []struct { b *bool diff --git a/server/etcdserver/api/snap/snapshotter.go b/server/etcdserver/api/snap/snapshotter.go index f1b377678f2a..6ac5b2ff5170 100644 --- a/server/etcdserver/api/snap/snapshotter.go +++ b/server/etcdserver/api/snap/snapshotter.go @@ -26,6 +26,7 @@ import ( "time" "go.uber.org/zap" + "google.golang.org/protobuf/proto" "go.etcd.io/etcd/client/pkg/v3/verify" pioutil "go.etcd.io/etcd/pkg/v3/ioutil" @@ -79,7 +80,7 @@ func (s *Snapshotter) save(snapshot *raftpb.Snapshot) error { b := pbutil.MustMarshal(snapshot) crc := crc32.Update(0, crcTable, b) snap := snappb.Snapshot{Crc: &crc, Data: b} - d, err := snap.Marshal() + d, err := proto.Marshal(&snap) if err != nil { return err } @@ -167,7 +168,7 @@ func Read(lg *zap.Logger, snapname string) (*raftpb.Snapshot, error) { } var serializedSnap snappb.Snapshot - if err = serializedSnap.Unmarshal(b); err != nil { + if err = proto.Unmarshal(b, &serializedSnap); err != nil { lg.Warn("failed to unmarshal snappb.Snapshot", zap.String("path", snapname), zap.Error(err)) return nil, err } diff --git a/server/etcdserver/api/v3rpc/interceptor.go b/server/etcdserver/api/v3rpc/interceptor.go index 697d0b075ed9..f09ec425580a 100644 --- a/server/etcdserver/api/v3rpc/interceptor.go +++ b/server/etcdserver/api/v3rpc/interceptor.go @@ -24,6 +24,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" + "google.golang.org/protobuf/proto" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" @@ -113,35 +114,35 @@ func logUnaryRequestStats(ctx context.Context, lg *zap.Logger, warnLatency time. _req, ok := req.(*pb.RangeRequest) if ok { reqCount = 0 - reqSize = _req.Size() + reqSize = proto.Size(_req) reqContent = _req.String() } if _resp != nil { respCount = _resp.GetCount() - respSize = _resp.Size() + respSize = proto.Size(_resp) } case *pb.PutResponse: _req, ok := req.(*pb.PutRequest) if ok { reqCount = 1 - reqSize = _req.Size() + reqSize = proto.Size(_req) reqContent = pb.NewLoggablePutRequest(_req).String() // redact value field from request content, see PR #9821 } if _resp != nil { respCount = 0 - respSize = _resp.Size() + respSize = proto.Size(_resp) } case *pb.DeleteRangeResponse: _req, ok := req.(*pb.DeleteRangeRequest) if ok { reqCount = 0 - reqSize = _req.Size() + reqSize = proto.Size(_req) reqContent = _req.String() } if _resp != nil { respCount = _resp.GetDeleted() - respSize = _resp.Size() + respSize = proto.Size(_resp) } case *pb.TxnResponse: _req, ok := req.(*pb.TxnRequest) @@ -150,13 +151,13 @@ func logUnaryRequestStats(ctx context.Context, lg *zap.Logger, warnLatency time. reqCount = int64(len(_req.GetSuccess())) reqSize = 0 for _, r := range _req.GetSuccess() { - reqSize += r.Size() + reqSize += proto.Size(r) } } else { reqCount = int64(len(_req.GetFailure())) reqSize = 0 for _, r := range _req.GetFailure() { - reqSize += r.Size() + reqSize += proto.Size(r) } } reqContent = pb.NewLoggableTxnRequest(_req).String() @@ -164,7 +165,7 @@ func logUnaryRequestStats(ctx context.Context, lg *zap.Logger, warnLatency time. } if _resp != nil { respCount = 0 - respSize = _resp.Size() + respSize = proto.Size(_resp) } default: reqCount = -1 diff --git a/server/etcdserver/api/v3rpc/watch.go b/server/etcdserver/api/v3rpc/watch.go index 605c768be1b7..1fe1cbe13c33 100644 --- a/server/etcdserver/api/v3rpc/watch.go +++ b/server/etcdserver/api/v3rpc/watch.go @@ -25,6 +25,7 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" "go.uber.org/zap" + "google.golang.org/protobuf/proto" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/mvccpb" @@ -583,7 +584,7 @@ func sendFragments( ) error { // no need to fragment if total request size is smaller // than max request limit or response contains only one event - if uint(wr.Size()) < maxRequestBytes || len(wr.Events) < 2 { + if uint(proto.Size(wr)) < maxRequestBytes || len(wr.Events) < 2 { return sendFunc(wr) } @@ -612,7 +613,7 @@ func sendFragments( for _, ev := range wr.Events[idx:] { cur.Events = append(cur.Events, ev) - if len(cur.Events) > 1 && uint(cur.Size()) >= maxRequestBytes { + if len(cur.Events) > 1 && uint(proto.Size(cur)) >= maxRequestBytes { cur.Events = cur.Events[:len(cur.Events)-1] break } diff --git a/server/etcdserver/apply/apply.go b/server/etcdserver/apply/apply.go index 8730260499c7..a9f7fefdaf78 100644 --- a/server/etcdserver/apply/apply.go +++ b/server/etcdserver/apply/apply.go @@ -26,7 +26,7 @@ import ( func Apply(lg *zap.Logger, e *raftpb.Entry, uberApply UberApplier, w wait.Wait, shouldApplyV3 membership.ShouldApplyV3) (ar *Result, id uint64) { var raftReq pb.InternalRaftRequest - pbutil.MustUnmarshal(&raftReq, e.Data) + pbutil.MustUnmarshalMessage(&raftReq, e.Data) lg.Debug("Apply", zap.Stringer("raftReq", &raftReq)) id = raftReq.ID diff --git a/server/etcdserver/apply/interface.go b/server/etcdserver/apply/interface.go index 85bfb6109d57..a4ce1e1911fc 100644 --- a/server/etcdserver/apply/interface.go +++ b/server/etcdserver/apply/interface.go @@ -17,8 +17,8 @@ package apply import ( "time" - "github.com/gogo/protobuf/proto" "go.uber.org/zap" + "google.golang.org/protobuf/proto" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/membershippb" diff --git a/server/etcdserver/bootstrap.go b/server/etcdserver/bootstrap.go index 4e70f71e83bf..e1657ba1b819 100644 --- a/server/etcdserver/bootstrap.go +++ b/server/etcdserver/bootstrap.go @@ -659,7 +659,7 @@ func openWALFromSnapshot(cfg config.ServerConfig, snapshot *raftpb.Snapshot) (*w continue } var metadata etcdserverpb.Metadata - pbutil.MustUnmarshal(&metadata, wmetadata) + pbutil.MustUnmarshalMessage(&metadata, wmetadata) id := types.ID(metadata.GetNodeID()) cid := types.ID(metadata.GetClusterID()) meta := &snapshotMetadata{clusterID: cid, nodeID: id} @@ -672,7 +672,7 @@ type snapshotMetadata struct { } func bootstrapNewWAL(cfg config.ServerConfig, cl *bootstrappedCluster) *bootstrappedWAL { - metadata := pbutil.MustMarshal( + metadata := pbutil.MustMarshalMessage( &etcdserverpb.Metadata{ NodeID: new(uint64(cl.nodeID)), ClusterID: new(uint64(cl.cl.ID())), diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index 56523bee421a..82acc28d63df 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -35,6 +35,7 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zaptest" + "google.golang.org/protobuf/proto" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/membershippb" @@ -102,7 +103,7 @@ func TestApplyRepeat(t *testing.T) { Header: &pb.RequestHeader{ID: 1}, Put: &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}, } - ents := []raftpb.Entry{{Index: 1, Data: pbutil.MustMarshal(req)}} + ents := []raftpb.Entry{{Index: 1, Data: pbutil.MustMarshalMessage(req)}} n.readyc <- raft.Ready{CommittedEntries: ents} // dup msg n.readyc <- raft.Ready{CommittedEntries: ents} @@ -802,7 +803,7 @@ func TestConcurrentApplyAndSnapshotV3(t *testing.T) { Header: &pb.RequestHeader{ID: idx}, Put: &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}, } - ent := raftpb.Entry{Index: idx, Data: pbutil.MustMarshal(req)} + ent := raftpb.Entry{Index: idx, Data: pbutil.MustMarshalMessage(req)} ready := raft.Ready{Entries: []raftpb.Entry{ent}} n.readyc <- ready @@ -1072,7 +1073,7 @@ func TestPublishV3(t *testing.T) { } data := action[0].Params[0].([]byte) var r pb.InternalRaftRequest - if err := r.Unmarshal(data); err != nil { + if err := proto.Unmarshal(data, &r); err != nil { t.Fatalf("unmarshal request error: %v", err) } assert.Equal(t, &membershippb.ClusterMemberAttrSetRequest{Member_ID: 0x1, MemberAttributes: &membershippb.Attributes{ @@ -1194,7 +1195,7 @@ func TestUpdateVersionV3(t *testing.T) { } data := action[0].Params[0].([]byte) var r pb.InternalRaftRequest - if err := r.Unmarshal(data); err != nil { + if err := proto.Unmarshal(data, &r); err != nil { t.Fatalf("unmarshal request error: %v", err) } assert.Equal(t, &membershippb.ClusterVersionSetRequest{Ver: ver}, r.ClusterVersionSet) diff --git a/server/etcdserver/txn/put.go b/server/etcdserver/txn/put.go index ccefe81593db..ec3ae38c7b8e 100644 --- a/server/etcdserver/txn/put.go +++ b/server/etcdserver/txn/put.go @@ -18,6 +18,7 @@ import ( "context" "go.uber.org/zap" + "google.golang.org/protobuf/proto" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/pkg/v3/traceutil" @@ -29,7 +30,7 @@ import ( func Put(ctx context.Context, lg *zap.Logger, lessor lease.Lessor, kv mvcc.KV, p *pb.PutRequest) (resp *pb.PutResponse, trace *traceutil.Trace, err error) { ctx, trace = traceutil.EnsureTrace(ctx, lg, "put", traceutil.Field{Key: "key", Value: string(p.Key)}, - traceutil.Field{Key: "req_size", Value: p.Size()}, + traceutil.Field{Key: "req_size", Value: proto.Size(p)}, ) err = checkLease(lessor, p) if err != nil { diff --git a/server/etcdserver/txn/txn.go b/server/etcdserver/txn/txn.go index ac3750532532..abbe60d8560d 100644 --- a/server/etcdserver/txn/txn.go +++ b/server/etcdserver/txn/txn.go @@ -20,6 +20,7 @@ import ( "fmt" "go.uber.org/zap" + "google.golang.org/protobuf/proto" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/mvccpb" @@ -156,7 +157,7 @@ func executeTxn(ctx context.Context, lg *zap.Logger, txnWrite mvcc.TxnWrite, rt trace.StartSubTrace( traceutil.Field{Key: "req_type", Value: "put"}, traceutil.Field{Key: "key", Value: string(tv.RequestPut.Key)}, - traceutil.Field{Key: "req_size", Value: tv.RequestPut.Size()}) + traceutil.Field{Key: "req_size", Value: proto.Size(tv.RequestPut)}) prevKV, err := getPrevKV(trace, txnWrite, tv.RequestPut) if err != nil { return 0, fmt.Errorf("applyTxn: failed to get prevKV on put: %w", err) diff --git a/server/etcdserver/txn/util.go b/server/etcdserver/txn/util.go index 7f9b1c200c6c..1a09415e9cba 100644 --- a/server/etcdserver/txn/util.go +++ b/server/etcdserver/txn/util.go @@ -20,8 +20,8 @@ import ( "strings" "time" - "github.com/golang/protobuf/proto" //nolint:staticcheck // TODO: remove for a supported version "go.uber.org/zap" + "google.golang.org/protobuf/proto" pb "go.etcd.io/etcd/api/v3/etcdserverpb" ) @@ -72,7 +72,7 @@ func WarnOfExpensiveReadOnlyTxnRequest(lg *zap.Logger, warningApplyDuration time // only range responses should be in a read only txn request } } - resp = fmt.Sprintf("responses:<%s> size:%d", strings.Join(resps, " "), txnResponse.Size()) + resp = fmt.Sprintf("responses:<%s> size:%d", strings.Join(resps, " "), proto.Size(txnResponse)) } warnOfExpensiveGenericRequest(lg, warningApplyDuration, now, reqStringer, "read-only txn ", resp, err) } @@ -83,7 +83,7 @@ func WarnOfExpensiveReadOnlyRangeRequest(lg *zap.Logger, warningApplyDuration ti } var resp string if !isNil(rangeResponse) { - resp = fmt.Sprintf("range_response_count:%d size:%d", len(rangeResponse.Kvs), rangeResponse.Size()) + resp = fmt.Sprintf("range_response_count:%d size:%d", len(rangeResponse.Kvs), proto.Size(rangeResponse)) } warnOfExpensiveGenericRequest(lg, warningApplyDuration, now, reqStringer, "read-only range ", resp, err) } diff --git a/server/etcdserver/txn/util_bench_test.go b/server/etcdserver/txn/util_bench_test.go index 5a84f62f537d..7f9f1292a624 100644 --- a/server/etcdserver/txn/util_bench_test.go +++ b/server/etcdserver/txn/util_bench_test.go @@ -16,39 +16,47 @@ package txn import ( "errors" + "math/rand/v2" "testing" "time" - "go.uber.org/zap/zaptest" + "go.uber.org/zap" - "go.etcd.io/raft/v3/raftpb" + pb "go.etcd.io/etcd/api/v3/etcdserverpb" + mvccpb "go.etcd.io/etcd/api/v3/mvccpb" ) -func BenchmarkWarnOfExpensiveRequestNoLog(b *testing.B) { - m := &raftpb.Message{ - Type: 0, - To: 0, - From: 1, - Term: 2, - LogTerm: 3, - Index: 0, - Entries: []raftpb.Entry{ - { - Term: 0, - Index: 0, - Type: 0, - Data: make([]byte, 1024), +func benchmarkRangeResponse() *pb.RangeResponse { + value := make([]byte, 1024) + rng := rand.New(rand.NewPCG(1, 2)) + for i := range value { + value[i] = byte(rng.Uint64()) + } + return &pb.RangeResponse{ + Count: 1000, + Kvs: []*mvccpb.KeyValue{ + {Key: []byte("/pods/1"), Value: value}, + }, + } +} + +func BenchmarkWarnOfExpensiveRequestWithProtoSize(b *testing.B) { + reqStringer := &pb.InternalRaftStringer{ + Request: &pb.InternalRaftRequest{ + Header: &pb.RequestHeader{ID: 1}, + Range: &pb.RangeRequest{ + Key: []byte("/pods"), + RangeEnd: []byte("/pods\x00"), }, }, - Commit: 0, - Snapshot: nil, - Reject: false, - RejectHint: 0, - Context: nil, } + respMsg := benchmarkRangeResponse() err := errors.New("benchmarking warn of expensive request") - lg := zaptest.NewLogger(b) + lg := zap.NewNop() + now := time.Now().Add(-time.Second) + b.ReportAllocs() + b.ResetTimer() for n := 0; n < b.N; n++ { - WarnOfExpensiveRequest(lg, time.Second, time.Now(), nil, m, err) + WarnOfExpensiveRequest(lg, 0, now, reqStringer, respMsg, err) } } diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 359e9811830c..7e5f67c55951 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -22,11 +22,11 @@ import ( "strconv" "time" - "github.com/gogo/protobuf/proto" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" "go.uber.org/zap" "golang.org/x/crypto/bcrypt" + "google.golang.org/protobuf/proto" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/version" @@ -267,7 +267,7 @@ func (s *EtcdServer) rangeStream(ctx context.Context, r *pb.RangeRequest, rs pb. } r.Key = nextKey - r.Limit = adjustChunkLimit(r.Limit, resp.Size(), int(s.Cfg.MaxRequestBytes)) + r.Limit = adjustChunkLimit(r.Limit, proto.Size(resp), int(s.Cfg.MaxRequestBytes)) r.Limit = min(r.Limit, totalLimit-count) } } @@ -1090,7 +1090,7 @@ func (s *EtcdServer) processInternalRaftRequestOnce(ctx context.Context, r *pb.I requestDurationSec.WithLabelValues(reqType, strconv.FormatBool(success)).Observe(time.Since(start).Seconds()) }() - data, err = r.Marshal() + data, err = proto.Marshal(r) if err != nil { return nil, err } diff --git a/server/go.mod b/server/go.mod index 6bc01f070f6b..34e37c276515 100644 --- a/server/go.mod +++ b/server/go.mod @@ -8,7 +8,6 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/coreos/go-systemd/v22 v22.7.0 github.com/dustin/go-humanize v1.0.1 - github.com/gogo/protobuf v1.3.2 github.com/golang-jwt/jwt/v5 v5.3.1 github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 @@ -53,6 +52,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/gogo/protobuf v1.3.2 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect diff --git a/server/lease/leasehttp/http.go b/server/lease/leasehttp/http.go index ad19103b022f..8f00b652e755 100644 --- a/server/lease/leasehttp/http.go +++ b/server/lease/leasehttp/http.go @@ -23,6 +23,8 @@ import ( "net/http" "time" + "google.golang.org/protobuf/proto" + pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/pkg/v3/httputil" "go.etcd.io/etcd/server/v3/lease" @@ -63,7 +65,7 @@ func (h *leaseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case LeasePrefix: lreq := pb.LeaseKeepAliveRequest{} - if uerr := lreq.Unmarshal(b); uerr != nil { + if uerr := proto.Unmarshal(b, &lreq); uerr != nil { http.Error(w, "error unmarshalling request", http.StatusBadRequest) return } @@ -86,7 +88,7 @@ func (h *leaseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { } // TODO: fill out ResponseHeader resp := &pb.LeaseKeepAliveResponse{ID: lreq.ID, TTL: ttl} - v, err = resp.Marshal() + v, err = proto.Marshal(resp) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return @@ -94,7 +96,7 @@ func (h *leaseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { case LeaseInternalPrefix: lreq := leasepb.LeaseInternalRequest{} - if lerr := lreq.Unmarshal(b); lerr != nil { + if lerr := proto.Unmarshal(b, &lreq); lerr != nil { http.Error(w, "error unmarshalling request", http.StatusBadRequest) return } @@ -138,7 +140,7 @@ func (h *leaseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - v, err = resp.Marshal() + v, err = proto.Marshal(resp) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return @@ -157,7 +159,7 @@ func (h *leaseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { // TODO: Batch request in future? func RenewHTTP(ctx context.Context, id lease.LeaseID, url string, rt http.RoundTripper) (int64, error) { // will post lreq protobuf to leader - lreq, err := (&pb.LeaseKeepAliveRequest{ID: int64(id)}).Marshal() + lreq, err := proto.Marshal(&pb.LeaseKeepAliveRequest{ID: int64(id)}) if err != nil { return -1, err } @@ -197,7 +199,7 @@ func RenewHTTP(ctx context.Context, id lease.LeaseID, url string, rt http.RoundT } lresp := &pb.LeaseKeepAliveResponse{} - if err := lresp.Unmarshal(b); err != nil { + if err := proto.Unmarshal(b, lresp); err != nil { return -1, fmt.Errorf(`lease: %w. data = "%s"`, err, b) } if lresp.ID != int64(id) { @@ -209,12 +211,12 @@ func RenewHTTP(ctx context.Context, id lease.LeaseID, url string, rt http.RoundT // TimeToLiveHTTP retrieves lease information of the given lease ID. func TimeToLiveHTTP(ctx context.Context, id lease.LeaseID, keys bool, url string, rt http.RoundTripper) (*leasepb.LeaseInternalResponse, error) { // will post lreq protobuf to leader - lreq, err := (&leasepb.LeaseInternalRequest{ + lreq, err := proto.Marshal(&leasepb.LeaseInternalRequest{ LeaseTimeToLiveRequest: &pb.LeaseTimeToLiveRequest{ ID: int64(id), Keys: keys, }, - }).Marshal() + }) if err != nil { return nil, err } @@ -254,7 +256,7 @@ func TimeToLiveHTTP(ctx context.Context, id lease.LeaseID, keys bool, url string } lresp := &leasepb.LeaseInternalResponse{} - if err := lresp.Unmarshal(b); err != nil { + if err := proto.Unmarshal(b, lresp); err != nil { return nil, fmt.Errorf(`lease: %w. data = "%s"`, err, string(b)) } if lresp.LeaseTimeToLiveResponse.ID != int64(id) { diff --git a/server/lease/lessor_test.go b/server/lease/lessor_test.go index f46e2b399495..5e1b546e6f6e 100644 --- a/server/lease/lessor_test.go +++ b/server/lease/lessor_test.go @@ -101,7 +101,7 @@ func TestLessorGrant(t *testing.T) { defer tx.Unlock() lpb := schema.MustUnsafeGetLease(tx, int64(l.ID)) if lpb == nil { - t.Errorf("lpb = %d, want not nil", lpb) + t.Errorf("lpb = nil, want not nil") } } @@ -205,7 +205,7 @@ func TestLessorRevoke(t *testing.T) { defer tx.Unlock() lpb := schema.MustUnsafeGetLease(tx, int64(l.ID)) if lpb != nil { - t.Errorf("lpb = %d, want nil", lpb) + t.Errorf("lpb = %s, want nil", lpb.String()) } } diff --git a/server/proxy/grpcproxy/cache/store.go b/server/proxy/grpcproxy/cache/store.go index 9d5d80732483..9ddd2370ba87 100644 --- a/server/proxy/grpcproxy/cache/store.go +++ b/server/proxy/grpcproxy/cache/store.go @@ -20,6 +20,7 @@ import ( "errors" "sync" + "google.golang.org/protobuf/proto" "k8s.io/utils/lru" pb "go.etcd.io/etcd/api/v3/etcdserverpb" @@ -44,7 +45,7 @@ type Cache interface { // keyFunc returns the key of a request, which is used to look up its caching response in the cache. func keyFunc(req *pb.RangeRequest) string { // TODO: use marshalTo to reduce allocation - b, err := req.Marshal() + b, err := proto.Marshal(req) if err != nil { panic(err) } diff --git a/server/proxy/grpcproxy/kv.go b/server/proxy/grpcproxy/kv.go index 3b9bda9c03fa..3110c1e1050e 100644 --- a/server/proxy/grpcproxy/kv.go +++ b/server/proxy/grpcproxy/kv.go @@ -18,9 +18,9 @@ import ( "context" "errors" - "github.com/gogo/protobuf/proto" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" pb "go.etcd.io/etcd/api/v3/etcdserverpb" clientv3 "go.etcd.io/etcd/client/v3" diff --git a/server/storage/mvcc/kv_test.go b/server/storage/mvcc/kv_test.go index 965a72ac777b..5eb75c0be4f9 100644 --- a/server/storage/mvcc/kv_test.go +++ b/server/storage/mvcc/kv_test.go @@ -19,14 +19,15 @@ import ( "errors" "fmt" "os" - "reflect" "testing" "time" + "github.com/google/go-cmp/cmp" "github.com/prometheus/client_golang/prometheus" dto "github.com/prometheus/client_model/go" "github.com/stretchr/testify/assert" "go.uber.org/zap/zaptest" + "google.golang.org/protobuf/testing/protocmp" "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/client/pkg/v3/testutil" @@ -136,7 +137,7 @@ func testKVRange(t *testing.T, f rangeFunc) { if r.Rev != wrev { t.Errorf("#%d: rev = %d, want %d", i, r.Rev, wrev) } - if !reflect.DeepEqual(r.KVs, tt.wkvs) { + if !cmp.Equal(r.KVs, tt.wkvs, protocmp.Transform()) { t.Errorf("#%d: kvs = %+v, want %+v", i, r.KVs, tt.wkvs) } } @@ -172,7 +173,7 @@ func testKVRangeRev(t *testing.T, f rangeFunc) { if r.Rev != tt.wrev { t.Errorf("#%d: rev = %d, want %d", i, r.Rev, tt.wrev) } - if !reflect.DeepEqual(r.KVs, tt.wkvs) { + if !cmp.Equal(r.KVs, tt.wkvs, protocmp.Transform()) { t.Errorf("#%d: kvs = %+v, want %+v", i, r.KVs, tt.wkvs) } } @@ -241,7 +242,7 @@ func testKVRangeLimit(t *testing.T, f rangeFunc) { if err != nil { t.Fatalf("#%d: range error (%v)", i, err) } - if !reflect.DeepEqual(r.KVs, tt.wkvs) { + if !cmp.Equal(r.KVs, tt.wkvs, protocmp.Transform()) { t.Errorf("#%d: kvs = %+v, want %+v", i, r.KVs, tt.wkvs) } if r.Rev != wrev { @@ -280,7 +281,7 @@ func testKVPutMultipleTimes(t *testing.T, f putFunc) { wkvs := []*mvccpb.KeyValue{ {Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, ModRevision: base + 1, Version: base, Lease: base}, } - if !reflect.DeepEqual(r.KVs, wkvs) { + if !cmp.Equal(r.KVs, wkvs, protocmp.Transform()) { t.Errorf("#%d: kvs = %+v, want %+v", i, r.KVs, wkvs) } } @@ -391,7 +392,7 @@ func testKVPutWithSameLease(t *testing.T, f putFunc) { wkvs := []*mvccpb.KeyValue{ {Key: []byte("foo"), Value: []byte("bar"), CreateRevision: 2, ModRevision: 3, Version: 2, Lease: leaseID}, } - if !reflect.DeepEqual(r.KVs, wkvs) { + if !cmp.Equal(r.KVs, wkvs, protocmp.Transform()) { t.Errorf("kvs = %+v, want %+v", r.KVs, wkvs) } } @@ -419,7 +420,7 @@ func TestKVOperationInSequence(t *testing.T) { wkvs := []*mvccpb.KeyValue{ {Key: []byte("foo"), Value: []byte("bar"), CreateRevision: base + 1, ModRevision: base + 1, Version: 1, Lease: int64(lease.NoLease)}, } - if !reflect.DeepEqual(r.KVs, wkvs) { + if !cmp.Equal(r.KVs, wkvs, protocmp.Transform()) { t.Errorf("#%d: kvs = %+v, want %+v", i, r.KVs, wkvs) } if r.Rev != base+1 { @@ -523,7 +524,7 @@ func TestKVTxnOperationInSequence(t *testing.T) { wkvs := []*mvccpb.KeyValue{ {Key: []byte("foo"), Value: []byte("bar"), CreateRevision: base + 1, ModRevision: base + 1, Version: 1, Lease: int64(lease.NoLease)}, } - if !reflect.DeepEqual(r.KVs, wkvs) { + if !cmp.Equal(r.KVs, wkvs, protocmp.Transform()) { t.Errorf("#%d: kvs = %+v, want %+v", i, r.KVs, wkvs) } if r.Rev != base+1 { @@ -599,7 +600,7 @@ func TestKVCompactReserveLastValue(t *testing.T) { if err != nil { t.Errorf("#%d: unexpect range error %v", i, err) } - if !reflect.DeepEqual(r.KVs, tt.wkvs) { + if !cmp.Equal(r.KVs, tt.wkvs, protocmp.Transform()) { t.Errorf("#%d: kvs = %+v, want %+v", i, r.KVs, tt.wkvs) } } @@ -720,7 +721,7 @@ func TestKVRestore(t *testing.T) { } cleanup(ns, b) - if !reflect.DeepEqual(nkvss, kvss) { + if !cmp.Equal(nkvss, kvss, protocmp.Transform()) { t.Errorf("#%d: kvs history = %+v, want %+v", i, nkvss, kvss) } } @@ -763,7 +764,7 @@ func TestKVSnapshot(t *testing.T) { if err != nil { t.Errorf("unexpect range error (%v)", err) } - if !reflect.DeepEqual(r.KVs, wkvs) { + if !cmp.Equal(r.KVs, wkvs, protocmp.Transform()) { t.Errorf("kvs = %+v, want %+v", r.KVs, wkvs) } if r.Rev != 4 { @@ -824,7 +825,7 @@ func TestWatchableKVWatch(t *testing.T) { t.Errorf("resp.WatchID got = %d, want = %d", resp.WatchID, wid) } ev := resp.Events[0] - if !reflect.DeepEqual(ev, wev[0]) { + if !cmp.Equal(ev, wev[0], protocmp.Transform()) { t.Errorf("watched event = %+v, want %+v", ev, wev[0]) } case <-time.After(5 * time.Second): @@ -839,7 +840,7 @@ func TestWatchableKVWatch(t *testing.T) { t.Errorf("resp.WatchID got = %d, want = %d", resp.WatchID, wid) } ev := resp.Events[0] - if !reflect.DeepEqual(ev, wev[1]) { + if !cmp.Equal(ev, wev[1], protocmp.Transform()) { t.Errorf("watched event = %+v, want %+v", ev, wev[1]) } case <-time.After(5 * time.Second): @@ -855,7 +856,7 @@ func TestWatchableKVWatch(t *testing.T) { t.Errorf("resp.WatchID got = %d, want = %d", resp.WatchID, wid) } ev := resp.Events[0] - if !reflect.DeepEqual(ev, wev[1]) { + if !cmp.Equal(ev, wev[1], protocmp.Transform()) { t.Errorf("watched event = %+v, want %+v", ev, wev[1]) } case <-time.After(5 * time.Second): @@ -869,7 +870,7 @@ func TestWatchableKVWatch(t *testing.T) { t.Errorf("resp.WatchID got = %d, want = %d", resp.WatchID, wid) } ev := resp.Events[0] - if !reflect.DeepEqual(ev, wev[2]) { + if !cmp.Equal(ev, wev[2], protocmp.Transform()) { t.Errorf("watched event = %+v, want %+v", ev, wev[2]) } case <-time.After(5 * time.Second): diff --git a/server/storage/mvcc/kvstore.go b/server/storage/mvcc/kvstore.go index 45b226734b4d..a9cb65c0c9ff 100644 --- a/server/storage/mvcc/kvstore.go +++ b/server/storage/mvcc/kvstore.go @@ -23,6 +23,7 @@ import ( "time" "go.uber.org/zap" + "google.golang.org/protobuf/proto" "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/client/pkg/v3/verify" @@ -494,7 +495,7 @@ func restoreChunk(lg *zap.Logger, kvc chan<- revKeyValue, keys, vals [][]byte, k rkv := revKeyValue{key: key} kv := &mvccpb.KeyValue{} - if err := kv.Unmarshal(vals[i]); err != nil { + if err := proto.Unmarshal(vals[i], kv); err != nil { lg.Fatal("failed to unmarshal mvccpb.KeyValue", zap.Error(err)) } rkv.kv = kv diff --git a/server/storage/mvcc/kvstore_test.go b/server/storage/mvcc/kvstore_test.go index b306347fa6c3..6ddf74063293 100644 --- a/server/storage/mvcc/kvstore_test.go +++ b/server/storage/mvcc/kvstore_test.go @@ -29,8 +29,11 @@ import ( "testing" "time" + "github.com/google/go-cmp/cmp" "go.uber.org/zap" "go.uber.org/zap/zaptest" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/testing/protocmp" "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/client/pkg/v3/testutil" @@ -64,7 +67,7 @@ func TestStorePut(t *testing.T) { ModRevision: 2, Version: 1, } - kvb, err := kv.Marshal() + kvb, err := proto.Marshal(&kv) if err != nil { t.Fatal(err) } @@ -144,7 +147,7 @@ func TestStorePut(t *testing.T) { s.Put([]byte("foo"), []byte("bar"), lease.LeaseID(i+1)) - data, err := tt.wkv.Marshal() + data, err := proto.Marshal(tt.wkv) if err != nil { t.Errorf("#%d: marshal err = %v, want nil", i, err) } @@ -187,7 +190,7 @@ func TestStoreRange(t *testing.T) { ModRevision: 2, Version: 1, } - kvb, err := kv.Marshal() + kvb, err := proto.Marshal(kv) if err != nil { t.Fatal(err) } @@ -221,7 +224,7 @@ func TestStoreRange(t *testing.T) { if err != nil { t.Errorf("#%d: err = %v, want nil", i, err) } - if w := []*mvccpb.KeyValue{kv}; !reflect.DeepEqual(ret.KVs, w) { + if w := []*mvccpb.KeyValue{kv}; !cmp.Equal(ret.KVs, w, protocmp.Transform()) { t.Errorf("#%d: kvs = %+v, want %+v", i, ret.KVs, w) } if ret.Rev != wrev { @@ -260,7 +263,7 @@ func TestStoreDeleteRange(t *testing.T) { ModRevision: 2, Version: 1, } - kvb, err := kv.Marshal() + kvb, err := proto.Marshal(&kv) if err != nil { t.Fatal(err) } @@ -300,9 +303,9 @@ func TestStoreDeleteRange(t *testing.T) { t.Errorf("#%d: n = %d, want 1", i, n) } - data, err := (&mvccpb.KeyValue{ + data, err := proto.Marshal(&mvccpb.KeyValue{ Key: []byte("foo"), - }).Marshal() + }) if err != nil { t.Errorf("#%d: marshal err = %v, want nil", i, err) } @@ -383,7 +386,7 @@ func TestStoreRestore(t *testing.T) { ModRevision: 4, Version: 1, } - putkvb, err := putkv.Marshal() + putkvb, err := proto.Marshal(&putkv) if err != nil { t.Fatal(err) } @@ -391,7 +394,7 @@ func TestStoreRestore(t *testing.T) { delkv := mvccpb.KeyValue{ Key: []byte("foo"), } - delkvb, err := delkv.Marshal() + delkvb, err := proto.Marshal(&delkv) if err != nil { t.Fatal(err) } @@ -768,7 +771,7 @@ func TestConcurrentReadNotBlockingWrite(t *testing.T) { ModRevision: 3, Version: 2, } - if !reflect.DeepEqual(ret.KVs[0], w) { + if !cmp.Equal(ret.KVs[0], w, protocmp.Transform()) { t.Fatalf("range result = %+v, want = %+v", ret.KVs[0], w) } readTx2.End() @@ -785,7 +788,7 @@ func TestConcurrentReadNotBlockingWrite(t *testing.T) { ModRevision: 2, Version: 1, } - if !reflect.DeepEqual(ret.KVs[0], w) { + if !cmp.Equal(ret.KVs[0], w, protocmp.Transform()) { t.Fatalf("range result = %+v, want = %+v", ret.KVs[0], w) } readTx1.End() diff --git a/server/storage/mvcc/kvstore_txn.go b/server/storage/mvcc/kvstore_txn.go index 7f0165fc4c99..86dd6b504b04 100644 --- a/server/storage/mvcc/kvstore_txn.go +++ b/server/storage/mvcc/kvstore_txn.go @@ -19,6 +19,7 @@ import ( "fmt" "go.uber.org/zap" + "google.golang.org/protobuf/proto" "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/pkg/v3/traceutil" @@ -121,7 +122,7 @@ func (tr *storeTxnCommon) rangeKeys(ctx context.Context, key, end []byte, curRev ) } kv := &mvccpb.KeyValue{} - if err := kv.Unmarshal(vs[0]); err != nil { + if err := proto.Unmarshal(vs[0], kv); err != nil { tr.s.lg.Fatal( "failed to unmarshal mvccpb.KeyValue", zap.Error(err), @@ -222,7 +223,7 @@ func (tw *storeTxnWrite) put(key, value []byte, leaseID lease.LeaseID) { Lease: int64(leaseID), } - d, err := kv.Marshal() + d, err := proto.Marshal(kv) if err != nil { tw.storeTxnCommon.s.lg.Fatal( "failed to marshal mvccpb.KeyValue", @@ -287,7 +288,7 @@ func (tw *storeTxnWrite) delete(key []byte) { kv := &mvccpb.KeyValue{Key: key} - d, err := kv.Marshal() + d, err := proto.Marshal(kv) if err != nil { tw.storeTxnCommon.s.lg.Fatal( "failed to marshal mvccpb.KeyValue", diff --git a/server/storage/mvcc/testutil/hash.go b/server/storage/mvcc/testutil/hash.go index 01771bb5c542..e2c452407c90 100644 --- a/server/storage/mvcc/testutil/hash.go +++ b/server/storage/mvcc/testutil/hash.go @@ -23,6 +23,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "google.golang.org/protobuf/proto" "go.etcd.io/bbolt" "go.etcd.io/etcd/api/v3/mvccpb" @@ -128,12 +129,12 @@ func CorruptBBolt(fpath string) error { for k, v := c.First(); k != nil; k, v = c.Next() { keys = append(keys, k) var kv mvccpb.KeyValue - if uerr := kv.Unmarshal(v); uerr != nil { + if uerr := proto.Unmarshal(v, &kv); uerr != nil { return uerr } kv.Key[0]++ kv.Value[0]++ - v2, v2err := kv.Marshal() + v2, v2err := proto.Marshal(&kv) if v2err != nil { return v2err } diff --git a/server/storage/mvcc/watchable_store.go b/server/storage/mvcc/watchable_store.go index db654a5dc6d5..8a6946f5b43b 100644 --- a/server/storage/mvcc/watchable_store.go +++ b/server/storage/mvcc/watchable_store.go @@ -19,6 +19,7 @@ import ( "time" "go.uber.org/zap" + "google.golang.org/protobuf/proto" "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/client/pkg/v3/verify" @@ -443,7 +444,7 @@ type contains interface { func kvsToEvents(lg *zap.Logger, c contains, revs, vals [][]byte) (evs []*mvccpb.Event) { for i, v := range vals { kv := &mvccpb.KeyValue{} - if err := kv.Unmarshal(v); err != nil { + if err := proto.Unmarshal(v, kv); err != nil { lg.Panic("failed to unmarshal mvccpb.KeyValue", zap.Error(err)) } diff --git a/server/storage/mvcc/watchable_store_test.go b/server/storage/mvcc/watchable_store_test.go index 6d6296da6399..0c0216490fe2 100644 --- a/server/storage/mvcc/watchable_store_test.go +++ b/server/storage/mvcc/watchable_store_test.go @@ -16,17 +16,18 @@ package mvcc import ( "fmt" - "reflect" "strings" "sync" "testing" "time" "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" "github.com/prometheus/client_golang/prometheus/testutil" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" + "google.golang.org/protobuf/testing/protocmp" "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/pkg/v3/traceutil" @@ -321,7 +322,7 @@ func TestSyncWatchers(t *testing.T) { for i := 0; i < watcherN; i++ { events := (<-w.(*watchStream).ch).Events assert.Len(t, events, 1) - assert.Equal(t, []*mvccpb.Event{ + want := []*mvccpb.Event{ { Type: mvccpb.Event_PUT, Kv: &mvccpb.KeyValue{ @@ -332,7 +333,10 @@ func TestSyncWatchers(t *testing.T) { Value: testValue, }, }, - }, events) + } + if diff := cmp.Diff(want, events, protocmp.Transform()); diff != "" { + t.Fatalf("unexpected events (-want +got):\n%s", diff) + } } } @@ -432,7 +436,9 @@ func TestRangeEvents(t *testing.T) { } for i, tc := range tcs { t.Run(fmt.Sprintf("%d rangeEvents(%d, %d)", i, tc.minRev, tc.maxRev), func(t *testing.T) { - assert.ElementsMatch(t, tc.expectEvents, rangeEvents(lg, b, tc.minRev, tc.maxRev, fakeContains{})) + if diff := cmp.Diff(tc.expectEvents, rangeEvents(lg, b, tc.minRev, tc.maxRev, fakeContains{}), protocmp.Transform(), cmpopts.EquateEmpty()); diff != "" { + t.Fatalf("unexpected events (-want +got):\n%s", diff) + } }) } } @@ -660,7 +666,7 @@ func testWatchRestore(t *testing.T, delayBeforeRestore, delayAfterRestore time.D for i, tc := range tcs { t.Run(tc.name, func(t *testing.T) { events := readEventsForSecond(t, watchers[i].Chan()) - if diff := cmp.Diff(tc.wantEvents, events); diff != "" { + if diff := cmp.Diff(tc.wantEvents, events, protocmp.Transform()); diff != "" { t.Errorf("unexpected events (-want +got):\n%s", diff) } }) @@ -854,8 +860,8 @@ func TestNewMapwatcherToEventMap(t *testing.T) { if len(eb.evs) != len(tt.wwe[w]) { t.Errorf("#%d: len(eb.evs) got = %d, want = %d", i, len(eb.evs), len(tt.wwe[w])) } - if !reflect.DeepEqual(eb.evs, tt.wwe[w]) { - t.Errorf("#%d: reflect.DeepEqual events got = %v, want = true", i, false) + if diff := cmp.Diff(tt.wwe[w], eb.evs, protocmp.Transform()); diff != "" { + t.Errorf("#%d: events mismatch (-want +got):\n%s", i, diff) } } } diff --git a/server/storage/mvcc/watcher_test.go b/server/storage/mvcc/watcher_test.go index 578d53af311f..32f6bfe92dc8 100644 --- a/server/storage/mvcc/watcher_test.go +++ b/server/storage/mvcc/watcher_test.go @@ -23,7 +23,9 @@ import ( "testing" "time" + "github.com/google/go-cmp/cmp" "go.uber.org/zap/zaptest" + "google.golang.org/protobuf/testing/protocmp" "go.etcd.io/etcd/api/v3/mvccpb" clientv3 "go.etcd.io/etcd/client/v3" @@ -297,8 +299,8 @@ func TestWatchDeleteRange(t *testing.T) { select { case r := <-w.Chan(): - if !reflect.DeepEqual(r.Events, we) { - t.Errorf("event = %v, want %v", r.Events, we) + if diff := cmp.Diff(we, r.Events, protocmp.Transform()); diff != "" { + t.Errorf("unexpected events (-want +got):\n%s", diff) } case <-time.After(10 * time.Second): t.Fatal("failed to receive event after 10 seconds!") diff --git a/server/storage/schema/alarm.go b/server/storage/schema/alarm.go index 929fbd4cebdb..707c46dc87d9 100644 --- a/server/storage/schema/alarm.go +++ b/server/storage/schema/alarm.go @@ -16,6 +16,7 @@ package schema import ( "go.uber.org/zap" + "google.golang.org/protobuf/proto" "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/server/v3/storage/backend" @@ -56,7 +57,7 @@ func (s *alarmBackend) MustPutAlarm(alarm *etcdserverpb.AlarmMember) { } func (s *alarmBackend) mustUnsafePutAlarm(tx backend.UnsafeWriter, alarm *etcdserverpb.AlarmMember) { - v, err := alarm.Marshal() + v, err := proto.Marshal(alarm) if err != nil { s.lg.Panic("failed to marshal alarm member", zap.Error(err)) } @@ -72,7 +73,7 @@ func (s *alarmBackend) MustDeleteAlarm(alarm *etcdserverpb.AlarmMember) { } func (s *alarmBackend) mustUnsafeDeleteAlarm(tx backend.UnsafeWriter, alarm *etcdserverpb.AlarmMember) { - v, err := alarm.Marshal() + v, err := proto.Marshal(alarm) if err != nil { s.lg.Panic("failed to marshal alarm member", zap.Error(err)) } @@ -91,7 +92,7 @@ func (s *alarmBackend) unsafeGetAllAlarms(tx backend.UnsafeReader) ([]*etcdserve var ms []*etcdserverpb.AlarmMember err := tx.UnsafeForEach(Alarm, func(k, v []byte) error { var m etcdserverpb.AlarmMember - if err := m.Unmarshal(k); err != nil { + if err := proto.Unmarshal(k, &m); err != nil { return err } ms = append(ms, &m) diff --git a/server/storage/schema/auth_roles.go b/server/storage/schema/auth_roles.go index 6161a0885a91..379f719b1a5d 100644 --- a/server/storage/schema/auth_roles.go +++ b/server/storage/schema/auth_roles.go @@ -16,6 +16,7 @@ package schema import ( "go.uber.org/zap" + "google.golang.org/protobuf/proto" "go.etcd.io/etcd/api/v3/authpb" "go.etcd.io/etcd/server/v3/storage/backend" @@ -48,7 +49,7 @@ func (atx *authBatchTx) UnsafeGetAllRoles() []*authpb.Role { } func (atx *authBatchTx) UnsafePutRole(role *authpb.Role) { - b, err := role.Marshal() + b, err := proto.Marshal(role) if err != nil { atx.lg.Panic( "failed to marshal 'authpb.Role'", @@ -75,7 +76,7 @@ func unsafeGetRole(lg *zap.Logger, tx backend.UnsafeReader, roleName string) *au } role := &authpb.Role{} - err := role.Unmarshal(vs[0]) + err := proto.Unmarshal(vs[0], role) if err != nil { lg.Panic("failed to unmarshal 'authpb.Role'", zap.Error(err)) } @@ -95,7 +96,7 @@ func unsafeGetAllRoles(lg *zap.Logger, tx backend.UnsafeReader) []*authpb.Role { roles := make([]*authpb.Role, len(vs)) for i := range vs { role := &authpb.Role{} - err := role.Unmarshal(vs[i]) + err := proto.Unmarshal(vs[i], role) if err != nil { lg.Panic("failed to unmarshal 'authpb.Role'", zap.Error(err)) } diff --git a/server/storage/schema/auth_roles_test.go b/server/storage/schema/auth_roles_test.go index 8b09853c38e7..9f900397a7b6 100644 --- a/server/storage/schema/auth_roles_test.go +++ b/server/storage/schema/auth_roles_test.go @@ -18,8 +18,9 @@ import ( "testing" "time" - "github.com/stretchr/testify/assert" + "github.com/google/go-cmp/cmp" "go.uber.org/zap/zaptest" + "google.golang.org/protobuf/testing/protocmp" "go.etcd.io/etcd/api/v3/authpb" "go.etcd.io/etcd/server/v3/auth" @@ -127,7 +128,9 @@ func TestGetAllRoles(t *testing.T) { abe2 := NewAuthBackend(lg, be2) users := abe2.GetAllRoles() - assert.Equal(t, tc.want, users) + if diff := cmp.Diff(tc.want, users, protocmp.Transform()); diff != "" { + t.Fatalf("roles mismatch (-want +got):\n%s", diff) + } }) } } @@ -224,7 +227,9 @@ func TestGetRole(t *testing.T) { abe2 := NewAuthBackend(lg, be2) users := abe2.GetRole("role1") - assert.Equal(t, tc.want, users) + if diff := cmp.Diff(tc.want, users, protocmp.Transform()); diff != "" { + t.Fatalf("roles mismatch (-want +got):\n%s", diff) + } }) } } diff --git a/server/storage/schema/auth_users.go b/server/storage/schema/auth_users.go index c21fa7c16d8a..3559ec60fed6 100644 --- a/server/storage/schema/auth_users.go +++ b/server/storage/schema/auth_users.go @@ -16,6 +16,7 @@ package schema import ( "go.uber.org/zap" + "google.golang.org/protobuf/proto" "go.etcd.io/etcd/api/v3/authpb" "go.etcd.io/etcd/server/v3/storage/backend" @@ -37,7 +38,7 @@ func (atx *authBatchTx) UnsafeGetAllUsers() []*authpb.User { } func (atx *authBatchTx) UnsafePutUser(user *authpb.User) { - b, err := user.Marshal() + b, err := proto.Marshal(user) if err != nil { atx.lg.Panic("failed to unmarshal 'authpb.User'", zap.Error(err)) } @@ -59,7 +60,7 @@ func unsafeGetUser(lg *zap.Logger, tx backend.UnsafeReader, username string) *au } user := &authpb.User{} - err := user.Unmarshal(vs[0]) + err := proto.Unmarshal(vs[0], user) if err != nil { lg.Panic( "failed to unmarshal 'authpb.User'", @@ -98,7 +99,7 @@ func unsafeGetAllUsers(lg *zap.Logger, tx backend.UnsafeReader) []*authpb.User { users := make([]*authpb.User, len(vs)) for i := range vs { user := &authpb.User{} - err := user.Unmarshal(vs[i]) + err := proto.Unmarshal(vs[i], user) if err != nil { lg.Panic("failed to unmarshal 'authpb.User'", zap.Error(err)) } diff --git a/server/storage/schema/auth_users_test.go b/server/storage/schema/auth_users_test.go index f109697d0aff..e19ee42eca59 100644 --- a/server/storage/schema/auth_users_test.go +++ b/server/storage/schema/auth_users_test.go @@ -18,8 +18,9 @@ import ( "testing" "time" - "github.com/stretchr/testify/assert" + "github.com/google/go-cmp/cmp" "go.uber.org/zap/zaptest" + "google.golang.org/protobuf/testing/protocmp" "go.etcd.io/etcd/api/v3/authpb" "go.etcd.io/etcd/server/v3/auth" @@ -115,7 +116,9 @@ func TestGetAllUsers(t *testing.T) { abe2 := NewAuthBackend(lg, be2) users := abe2.ReadTx().UnsafeGetAllUsers() - assert.Equal(t, tc.want, users) + if diff := cmp.Diff(tc.want, users, protocmp.Transform()); diff != "" { + t.Fatalf("users mismatch (-want +got):\n%s", diff) + } }) } } @@ -200,7 +203,9 @@ func TestGetUser(t *testing.T) { abe2 := NewAuthBackend(lg, be2) users := abe2.GetUser("alice") - assert.Equal(t, tc.want, users) + if diff := cmp.Diff(tc.want, users, protocmp.Transform()); diff != "" { + t.Fatalf("users mismatch (-want +got):\n%s", diff) + } }) } } diff --git a/server/storage/schema/lease.go b/server/storage/schema/lease.go index de29f30fc494..bc72c562166e 100644 --- a/server/storage/schema/lease.go +++ b/server/storage/schema/lease.go @@ -18,6 +18,8 @@ import ( "encoding/binary" "fmt" + "google.golang.org/protobuf/proto" + "go.etcd.io/etcd/server/v3/lease/leasepb" "go.etcd.io/etcd/server/v3/storage/backend" ) @@ -30,7 +32,7 @@ func MustUnsafeGetAllLeases(tx backend.UnsafeReader) []*leasepb.Lease { ls := make([]*leasepb.Lease, 0) err := tx.UnsafeForEach(Lease, func(k, v []byte) error { var lpb leasepb.Lease - err := lpb.Unmarshal(v) + err := proto.Unmarshal(v, &lpb) if err != nil { return fmt.Errorf("failed to Unmarshal lease proto item; lease ID=%016x", bytesToLeaseID(k)) } @@ -46,7 +48,7 @@ func MustUnsafeGetAllLeases(tx backend.UnsafeReader) []*leasepb.Lease { func MustUnsafePutLease(tx backend.UnsafeWriter, lpb *leasepb.Lease) { key := leaseIDToBytes(lpb.ID) - val, err := lpb.Marshal() + val, err := proto.Marshal(lpb) if err != nil { panic("failed to marshal lease proto item") } @@ -63,7 +65,7 @@ func MustUnsafeGetLease(tx backend.UnsafeReader, leaseID int64) *leasepb.Lease { return nil } var lpb leasepb.Lease - err := lpb.Unmarshal(vs[0]) + err := proto.Unmarshal(vs[0], &lpb) if err != nil { panic("failed to unmarshal lease proto item") } diff --git a/server/storage/schema/lease_test.go b/server/storage/schema/lease_test.go index 88a1cd7e0633..2065c63ab77f 100644 --- a/server/storage/schema/lease_test.go +++ b/server/storage/schema/lease_test.go @@ -19,8 +19,9 @@ import ( "testing" "time" - "github.com/stretchr/testify/assert" + "github.com/google/go-cmp/cmp" "go.uber.org/zap/zaptest" + "google.golang.org/protobuf/testing/protocmp" "go.etcd.io/etcd/server/v3/lease/leasepb" "go.etcd.io/etcd/server/v3/storage/backend" @@ -103,7 +104,9 @@ func TestLeaseBackend(t *testing.T) { defer be2.Close() leases := MustUnsafeGetAllLeases(be2.ReadTx()) - assert.Equal(t, tc.want, leases) + if diff := cmp.Diff(tc.want, leases, protocmp.Transform()); diff != "" { + t.Fatalf("leases mismatch (-want +got):\n%s", diff) + } }) } } diff --git a/server/storage/wal/decoder.go b/server/storage/wal/decoder.go index a0d8558a2eed..2f6c32a0f930 100644 --- a/server/storage/wal/decoder.go +++ b/server/storage/wal/decoder.go @@ -22,6 +22,8 @@ import ( "io" "sync" + "google.golang.org/protobuf/proto" + "go.etcd.io/etcd/client/pkg/v3/fileutil" "go.etcd.io/etcd/pkg/v3/crc" "go.etcd.io/etcd/pkg/v3/pbutil" @@ -120,7 +122,7 @@ func (d *decoder) decodeRecord(rec *walpb.Record) error { } return err } - if err := rec.Unmarshal(data[:recBytes]); err != nil { + if err := proto.Unmarshal(data[:recBytes], rec); err != nil { if d.isTornEntry(data) { return io.ErrUnexpectedEOF } diff --git a/server/storage/wal/encoder.go b/server/storage/wal/encoder.go index 7d5aef08de46..3c9323364712 100644 --- a/server/storage/wal/encoder.go +++ b/server/storage/wal/encoder.go @@ -23,6 +23,8 @@ import ( "sync" "time" + "google.golang.org/protobuf/proto" + "go.etcd.io/etcd/pkg/v3/crc" "go.etcd.io/etcd/pkg/v3/ioutil" "go.etcd.io/etcd/server/v3/storage/wal/walpb" @@ -74,20 +76,20 @@ func (e *encoder) encode(rec *walpb.Record) error { var ( data []byte err error - n int ) - if rec.Size() > len(e.buf) { - data, err = rec.Marshal() + size := proto.Size(rec) + opts := proto.MarshalOptions{UseCachedSize: true} + if size > len(e.buf) { + data, err = proto.Marshal(rec) if err != nil { return err } } else { - n, err = rec.MarshalTo(e.buf) + data, err = opts.MarshalAppend(e.buf[:0], rec) if err != nil { return err } - data = e.buf[:n] } data, lenField := prepareDataWithPadding(data) diff --git a/server/storage/wal/record_test.go b/server/storage/wal/record_test.go index c8681b0dfc3a..fc533961993e 100644 --- a/server/storage/wal/record_test.go +++ b/server/storage/wal/record_test.go @@ -20,9 +20,11 @@ import ( "hash/crc32" "io" "os" - "reflect" "testing" + "github.com/google/go-cmp/cmp" + "google.golang.org/protobuf/testing/protocmp" + "go.etcd.io/etcd/client/pkg/v3/fileutil" "go.etcd.io/etcd/server/v3/storage/wal/walpb" ) @@ -59,8 +61,8 @@ func TestReadRecord(t *testing.T) { } decoder := NewDecoder(fileutil.NewFileReader(f)) e := decoder.Decode(rec) - if !reflect.DeepEqual(rec, tt.wr) { - t.Errorf("#%d: block = %v, want %v", i, rec, tt.wr) + if diff := cmp.Diff(tt.wr, rec, protocmp.Transform()); diff != "" { + t.Errorf("#%d: block mismatch (-want +got):\n%s", i, diff) } if !errors.Is(e, tt.we) { t.Errorf("#%d: err = %v, want %v", i, e, tt.we) @@ -89,7 +91,7 @@ func TestWriteRecord(t *testing.T) { if b.GetType() != typ { t.Errorf("type = %d, want %d", b.Type, typ) } - if !reflect.DeepEqual(b.Data, d) { + if !bytes.Equal(b.Data, d) { t.Errorf("data = %v, want %v", b.Data, d) } } diff --git a/server/storage/wal/testing/waltesting.go b/server/storage/wal/testing/waltesting.go index fc6ed0311abe..fb02447bf6c5 100644 --- a/server/storage/wal/testing/waltesting.go +++ b/server/storage/wal/testing/waltesting.go @@ -61,7 +61,7 @@ func NewTmpWAL(tb testing.TB, reqs []*etcdserverpb.InternalRaftRequest) (*wal.WA Term: 1, Index: 1, Type: raftpb.EntryNormal, - Data: pbutil.MustMarshal(req), + Data: pbutil.MustMarshalMessage(req), }) } err = w.Save(state, entries) diff --git a/server/storage/wal/version.go b/server/storage/wal/version.go index 97c1d66c4bf3..9bc6ad5cfec4 100644 --- a/server/storage/wal/version.go +++ b/server/storage/wal/version.go @@ -107,7 +107,7 @@ func visitEntryData(entryType raftpb.EntryType, data []byte, visitor Visitor) er switch entryType { case raftpb.EntryNormal: var raftReq etcdserverpb.InternalRaftRequest - if err := pbutil.Unmarshaler(&raftReq).Unmarshal(data); err != nil { + if err := proto.Unmarshal(data, &raftReq); err != nil { return err } msg = proto.MessageReflect(&raftReq) diff --git a/server/storage/wal/version_test.go b/server/storage/wal/version_test.go index 982e3e61600c..bacc25ca31c9 100644 --- a/server/storage/wal/version_test.go +++ b/server/storage/wal/version_test.go @@ -19,9 +19,9 @@ import ( "testing" "github.com/coreos/go-semver/semver" - "github.com/golang/protobuf/proto" //nolint:staticcheck // TODO: remove for a supported version "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" "go.etcd.io/etcd/api/v3/etcdserverpb" @@ -33,13 +33,13 @@ import ( func TestEtcdVersionFromEntry(t *testing.T) { raftReq := etcdserverpb.InternalRaftRequest{Header: &etcdserverpb.RequestHeader{AuthRevision: 1}} - normalRequestData := pbutil.MustMarshal(&raftReq) + normalRequestData := pbutil.MustMarshalMessage(&raftReq) downgradeVersionTestV3_6Req := etcdserverpb.InternalRaftRequest{DowngradeVersionTest: &etcdserverpb.DowngradeVersionTestRequest{Ver: "3.6.0"}} - downgradeVersionTestV3_6Data := pbutil.MustMarshal(&downgradeVersionTestV3_6Req) + downgradeVersionTestV3_6Data := pbutil.MustMarshalMessage(&downgradeVersionTestV3_6Req) downgradeVersionTestV3_7Req := etcdserverpb.InternalRaftRequest{DowngradeVersionTest: &etcdserverpb.DowngradeVersionTestRequest{Ver: "3.7.0"}} - downgradeVersionTestV3_7Data := pbutil.MustMarshal(&downgradeVersionTestV3_7Req) + downgradeVersionTestV3_7Data := pbutil.MustMarshalMessage(&downgradeVersionTestV3_7Req) confChange := raftpb.ConfChange{Type: raftpb.ConfChangeAddLearnerNode} confChangeData := pbutil.MustMarshal(&confChange) @@ -176,7 +176,7 @@ func TestEtcdVersionFromMessage(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { var maxVer *semver.Version - err := visitMessage(proto.MessageReflect(tc.input), func(path protoreflect.FullName, ver *semver.Version) error { + err := visitMessage(tc.input.ProtoReflect(), func(path protoreflect.FullName, ver *semver.Version) error { maxVer = maxVersion(maxVer, ver) return nil }) diff --git a/server/storage/wal/wal.go b/server/storage/wal/wal.go index badfde13c0c1..a4cd53db0b8e 100644 --- a/server/storage/wal/wal.go +++ b/server/storage/wal/wal.go @@ -522,7 +522,7 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb. case SnapshotType: var snap walpb.Snapshot - pbutil.MustUnmarshal(&snap, rec.Data) + pbutil.MustUnmarshalMessage(&snap, rec.Data) if snap.GetIndex() == w.start.GetIndex() { if snap.GetTerm() != w.start.GetTerm() { state.Reset() @@ -624,7 +624,7 @@ func ValidSnapshotEntries(lg *zap.Logger, walDir string) ([]*walpb.Snapshot, err switch rec.GetType() { case SnapshotType: loadedSnap := &walpb.Snapshot{} - pbutil.MustUnmarshal(loadedSnap, rec.Data) + pbutil.MustUnmarshalMessage(loadedSnap, rec.Data) snaps = append(snaps, loadedSnap) case StateType: state = MustUnmarshalState(rec.Data) @@ -711,7 +711,7 @@ func Verify(lg *zap.Logger, walDir string, snap *walpb.Snapshot) (*raftpb.HardSt decoder.UpdateCRC(rec.GetCrc()) case SnapshotType: var loadedSnap walpb.Snapshot - pbutil.MustUnmarshal(&loadedSnap, rec.Data) + pbutil.MustUnmarshalMessage(&loadedSnap, rec.Data) if loadedSnap.GetIndex() == snap.GetIndex() { if loadedSnap.GetTerm() != snap.GetTerm() { return nil, ErrSnapshotMismatch @@ -1000,7 +1000,7 @@ func (w *WAL) SaveSnapshot(e *walpb.Snapshot) error { return err } - b := pbutil.MustMarshal(e) + b := pbutil.MustMarshalMessage(e) w.mu.Lock() defer w.mu.Unlock() diff --git a/server/storage/wal/wal_test.go b/server/storage/wal/wal_test.go index df05db2c9e82..ebda7a8713c6 100644 --- a/server/storage/wal/wal_test.go +++ b/server/storage/wal/wal_test.go @@ -29,9 +29,11 @@ import ( "strings" "testing" + "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" + "google.golang.org/protobuf/testing/protocmp" "go.etcd.io/etcd/client/pkg/v3/fileutil" "go.etcd.io/etcd/pkg/v3/pbutil" @@ -89,7 +91,7 @@ func TestNew(t *testing.T) { require.NoErrorf(t, err, "err = %v, want nil", err) r := &walpb.Record{ Type: new(SnapshotType), - Data: pbutil.MustMarshal(&walpb.Snapshot{Index: new(uint64(0)), Term: new(uint64(0))}), + Data: pbutil.MustMarshalMessage(&walpb.Snapshot{Index: new(uint64(0)), Term: new(uint64(0))}), } err = e.encode(r) require.NoErrorf(t, err, "err = %v, want nil", err) @@ -1060,8 +1062,8 @@ func TestValidSnapshotEntries(t *testing.T) { t.Fatal(err) } expected := []*walpb.Snapshot{&snap0, &snap1, &snap2, &snap3} - if !reflect.DeepEqual(walSnaps, expected) { - t.Errorf("expected walSnaps %+v, got %+v", expected, walSnaps) + if diff := cmp.Diff(expected, walSnaps, protocmp.Transform()); diff != "" { + t.Errorf("walSnaps mismatch (-want +got):\n%s", diff) } } diff --git a/server/storage/wal/walpb/record.go b/server/storage/wal/walpb/record.go index 5ed46cbe10c9..695e2633ee5f 100644 --- a/server/storage/wal/walpb/record.go +++ b/server/storage/wal/walpb/record.go @@ -18,7 +18,7 @@ import ( "errors" "fmt" - proto "github.com/gogo/protobuf/proto" + "google.golang.org/protobuf/proto" ) var ErrCRCMismatch = errors.New("walpb: crc mismatch") @@ -31,9 +31,6 @@ func (rec *Record) Validate(crc uint32) error { } // Clone returns a deep copy of s, or an empty Snapshot if s is nil. -// -// TODO: replace this with the official protobuf clone helper once this package -// migrates away from gogo/protobuf. func (s *Snapshot) Clone() *Snapshot { if s == nil { return &Snapshot{} diff --git a/tests/common/kv_test.go b/tests/common/kv_test.go index a2cc53a172e7..67beb9d9e452 100644 --- a/tests/common/kv_test.go +++ b/tests/common/kv_test.go @@ -21,9 +21,11 @@ import ( "testing" "time" - "github.com/gogo/protobuf/proto" + "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/testing/protocmp" "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/mvccpb" @@ -175,7 +177,13 @@ func testKVGet(t *testing.T, stream bool) { require.NoErrorf(t, err, "count not get key %q, err: %s", tt.begin, err) resp.Header.MemberId = 0 resp.Header.RaftTerm = 0 - assert.Equal(t, tt.wantResponse, resp) + assert.Emptyf(t, + cmp.Diff( + (*etcdserverpb.RangeResponse)(tt.wantResponse), + (*etcdserverpb.RangeResponse)(resp), + protocmp.Transform(), + ), + "-want, +got") }) } }) diff --git a/tests/e2e/v3_curl_maxstream_test.go b/tests/e2e/v3_curl_maxstream_test.go index 0833fdbd36ed..9b4e0f909262 100644 --- a/tests/e2e/v3_curl_maxstream_test.go +++ b/tests/e2e/v3_curl_maxstream_test.go @@ -25,6 +25,7 @@ import ( "time" "github.com/stretchr/testify/require" + "google.golang.org/protobuf/encoding/protojson" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/client/pkg/v3/testutil" @@ -137,11 +138,15 @@ func testCurlV3MaxStream(t *testing.T, reachLimit bool, opts ...ctlOption) { } func submitConcurrentWatch(cx ctlCtx, number int, wgDone *sync.WaitGroup, closeCh chan struct{}) { - watchData, err := json.Marshal(&pb.WatchRequest_CreateRequest{ - CreateRequest: &pb.WatchCreateRequest{ - Key: []byte("foo"), + watchData, err := protojson.Marshal( + &pb.WatchRequest{ + RequestUnion: &pb.WatchRequest_CreateRequest{ + CreateRequest: &pb.WatchCreateRequest{ + Key: []byte("foo"), + }, + }, }, - }) + ) require.NoError(cx.t, err) var wgSchedule sync.WaitGroup diff --git a/tests/e2e/watch_test.go b/tests/e2e/watch_test.go index 827896c62fd4..7c4c0245e8ef 100644 --- a/tests/e2e/watch_test.go +++ b/tests/e2e/watch_test.go @@ -28,6 +28,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "golang.org/x/sync/errgroup" + "google.golang.org/protobuf/proto" "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/mvccpb" @@ -226,7 +227,7 @@ func continuouslyExecuteGetAll(ctx context.Context, t *testing.T, g *errgroup.Gr } respSize := 0 for _, kv := range resp.Kvs { - respSize += kv.Size() + respSize += proto.Size(kv) } mux.Lock() size += respSize diff --git a/tests/framework/integration/cluster.go b/tests/framework/integration/cluster.go index a287a8a9f788..ccd72b140b91 100644 --- a/tests/framework/integration/cluster.go +++ b/tests/framework/integration/cluster.go @@ -17,7 +17,6 @@ package integration import ( "context" "crypto/tls" - "errors" "fmt" "io" "log" @@ -35,7 +34,6 @@ import ( "time" "github.com/google/go-cmp/cmp" - "github.com/google/go-cmp/cmp/cmpopts" "github.com/soheilhy/cmux" "go.uber.org/zap" "go.uber.org/zap/zapcore" @@ -43,6 +41,7 @@ import ( "golang.org/x/crypto/bcrypt" "google.golang.org/grpc" "google.golang.org/grpc/keepalive" + "google.golang.org/protobuf/testing/protocmp" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/client/pkg/v3/testutil" @@ -387,10 +386,13 @@ func (c *Cluster) WaitMembersMatch(t testutil.TB, membs []*pb.Member) { default: } for { - resp, err := cc.Cluster.MemberList(ctx, &pb.MemberListRequest{Linearizable: false}) - if errors.Is(err, context.DeadlineExceeded) { - t.Fatal(err) + select { + case <-ctx.Done(): + t.Fatalf("WaitMembersMatch failed: %v", ctx.Err()) + default: } + + resp, err := cc.Cluster.MemberList(ctx, &pb.MemberListRequest{Linearizable: false}) if err != nil { continue } @@ -522,7 +524,9 @@ func (c *Cluster) waitVersion() { func isMembersEqual(membs []*pb.Member, wmembs []*pb.Member) bool { sort.Sort(SortableMemberSliceByPeerURLs(membs)) sort.Sort(SortableMemberSliceByPeerURLs(wmembs)) - return cmp.Equal(membs, wmembs, cmpopts.IgnoreFields(pb.Member{}, "ID", "PeerURLs", "ClientURLs")) + return cmp.Equal(membs, wmembs, + protocmp.Transform(), + protocmp.IgnoreFields(&pb.Member{}, "ID")) } func NewLocalListener(t testutil.TB) net.Listener { diff --git a/tests/go.mod b/tests/go.mod index 1cc4c1bb6af7..54a43220db21 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -19,7 +19,6 @@ require ( github.com/anishathalye/porcupine v1.1.0 github.com/antithesishq/antithesis-sdk-go v0.4.3 github.com/coreos/go-semver v0.3.1 - github.com/gogo/protobuf v1.3.2 github.com/golang-jwt/jwt/v5 v5.3.1 github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 @@ -70,6 +69,7 @@ require ( github.com/fatih/color v1.19.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/gogo/protobuf v1.3.2 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect diff --git a/tests/integration/cache_test.go b/tests/integration/cache_test.go index f1da755d1dc7..019daf8764ca 100644 --- a/tests/integration/cache_test.go +++ b/tests/integration/cache_test.go @@ -24,6 +24,7 @@ import ( "time" "github.com/google/go-cmp/cmp" + "google.golang.org/protobuf/testing/protocmp" "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" @@ -369,7 +370,7 @@ func testWatch(t *testing.T, kv clientv3.KV, watcher Watcher) { t.Run(tc.name, func(t *testing.T) { t.Parallel() events, _ := collectAndAssertAtomicEvents(t, watches[i]) - if diff := cmp.Diff(tc.wantEvents, events); diff != "" { + if diff := cmp.Diff(tc.wantEvents, events, protocmp.Transform()); diff != "" { t.Errorf("unexpected events (-want +got):\n%s", diff) } }) @@ -800,7 +801,7 @@ func testGet(t *testing.T, kv clientv3.KV, getReader func() Getter, initialEvent } t.Fatalf("Get %q failed: %v", tc.key, err) } - if diff := cmp.Diff(tc.wantKVs, resp.Kvs); diff != "" { + if diff := cmp.Diff(tc.wantKVs, resp.Kvs, protocmp.Transform()); diff != "" { t.Fatalf("unexpected KVs (-want +got):\n%s", diff) } if op.IsSerializable() { @@ -1314,7 +1315,7 @@ func testWithPrefixGet(t *testing.T, cli *clientv3.Client, getReader func() Gett t.Fatalf("Get(%q): %v", tc.key, err) } - if diff := cmp.Diff(tc.wantKVs, resp.Kvs); diff != "" { + if diff := cmp.Diff(tc.wantKVs, resp.Kvs, protocmp.Transform()); diff != "" { t.Errorf("unexpected KVs (-want +got):\n%s", diff) } diff --git a/tests/integration/clientv3/lease/leasing_test.go b/tests/integration/clientv3/lease/leasing_test.go index 5746f99d8222..e6f86166ff7e 100644 --- a/tests/integration/clientv3/lease/leasing_test.go +++ b/tests/integration/clientv3/lease/leasing_test.go @@ -24,9 +24,12 @@ import ( "testing" "time" + "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "google.golang.org/protobuf/testing/protocmp" + pb "go.etcd.io/etcd/api/v3/etcdserverpb" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/concurrency" "go.etcd.io/etcd/client/v3/leasing" @@ -133,7 +136,7 @@ func TestLeasingPutInvalidateNew(t *testing.T) { require.NoError(t, err) cResp, cerr := clus.Client(0).Get(t.Context(), "k") require.NoError(t, cerr) - require.Truef(t, reflect.DeepEqual(lkvResp, cResp), `expected %+v, got response %+v`, cResp, lkvResp) + require.Emptyf(t, cmp.Diff((*pb.RangeResponse)(lkvResp), (*pb.RangeResponse)(cResp), protocmp.Transform()), "-want, +got") } // TestLeasingPutInvalidateExisting checks the leasing KV updates its cache on a Put to an existing key. @@ -158,7 +161,7 @@ func TestLeasingPutInvalidateExisting(t *testing.T) { require.NoError(t, err) cResp, cerr := clus.Client(0).Get(t.Context(), "k") require.NoError(t, cerr) - require.Truef(t, reflect.DeepEqual(lkvResp, cResp), `expected %+v, got response %+v`, cResp, lkvResp) + require.Emptyf(t, cmp.Diff((*pb.RangeResponse)(lkvResp), (*pb.RangeResponse)(cResp), protocmp.Transform()), "-want, +got") } // TestLeasingGetNoLeaseTTL checks a key with a TTL is not leased. diff --git a/tests/integration/clientv3/watch/watch_test.go b/tests/integration/clientv3/watch/watch_test.go index c6b4e8df3294..dbb3ecabaaa9 100644 --- a/tests/integration/clientv3/watch/watch_test.go +++ b/tests/integration/clientv3/watch/watch_test.go @@ -30,6 +30,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/testing/protocmp" mvccpb "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" @@ -1287,7 +1288,7 @@ func TestWatch(t *testing.T) { } else { require.ErrorContains(t, err, tc.wantError.Error()) } - if diff := cmp.Diff(tc.wantEvents, events); diff != "" { + if diff := cmp.Diff(tc.wantEvents, events, protocmp.Transform()); diff != "" { t.Errorf("unexpected events (-want +got):\n%s", diff) } }) diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index f2b8c3ff2f99..e806c6b0165c 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -25,6 +25,7 @@ import ( "strings" "go.uber.org/zap" + "google.golang.org/protobuf/proto" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/client/pkg/v3/fileutil" @@ -215,7 +216,7 @@ func parseEntryNormal(ent raftpb.Entry) (*model.EtcdRequest, error) { if len(ent.Data) == 0 { return nil, nil } - if err := raftReq.Unmarshal(ent.Data); err != nil { + if err := proto.Unmarshal(ent.Data, &raftReq); err != nil { // PR https://github.com/etcd-io/etcd/pull/21263 removed v2 requests // in etcd v3.7. However, robustness always uses the latest protobuf // definitions to parse WAL entries generated by all previous versions. diff --git a/tools/etcd-dump-db/backend.go b/tools/etcd-dump-db/backend.go index 875997ad2476..ef88fb0ba33a 100644 --- a/tools/etcd-dump-db/backend.go +++ b/tools/etcd-dump-db/backend.go @@ -20,6 +20,7 @@ import ( "path/filepath" "go.uber.org/zap" + "google.golang.org/protobuf/proto" bolt "go.etcd.io/bbolt" "go.etcd.io/etcd/api/v3/authpb" @@ -71,7 +72,7 @@ func defaultDecoder(k, v []byte) { func keyDecoder(k, v []byte) { rev := mvcc.BytesToBucketKey(k) var kv mvccpb.KeyValue - if err := kv.Unmarshal(v); err != nil { + if err := proto.Unmarshal(v, &kv); err != nil { panic(err) } fmt.Printf("rev=%+v, value=[key %q | val %q | created %d | mod %d | ver %d]\n", rev, string(kv.Key), string(kv.Value), kv.CreateRevision, kv.ModRevision, kv.Version) @@ -87,7 +88,7 @@ func bytesToLeaseID(bytes []byte) int64 { func leaseDecoder(k, v []byte) { leaseID := bytesToLeaseID(k) var lpb leasepb.Lease - if err := lpb.Unmarshal(v); err != nil { + if err := proto.Unmarshal(v, &lpb); err != nil { panic(err) } fmt.Printf("lease ID=%016x, TTL=%ds, remaining TTL=%ds\n", leaseID, lpb.TTL, lpb.RemainingTTL) @@ -104,7 +105,7 @@ func authDecoder(k, v []byte) { func authRolesDecoder(_, v []byte) { role := &authpb.Role{} - err := role.Unmarshal(v) + err := proto.Unmarshal(v, role) if err != nil { panic(err) } @@ -113,7 +114,7 @@ func authRolesDecoder(_, v []byte) { func authUsersDecoder(_, v []byte) { user := &authpb.User{} - err := user.Unmarshal(v) + err := proto.Unmarshal(v, user) if err != nil { panic(err) } diff --git a/tools/etcd-dump-logs/etcd-dump-log_test.go b/tools/etcd-dump-logs/etcd-dump-log_test.go index 309ccda81970..1c936348e1e2 100644 --- a/tools/etcd-dump-logs/etcd-dump-log_test.go +++ b/tools/etcd-dump-logs/etcd-dump-log_test.go @@ -227,7 +227,7 @@ func appendNormalIRREnts(ents *[]raftpb.Entry) { currentry.Term = uint64(i + 4) currentry.Index = uint64(i + 10) currentry.Type = raftpb.EntryNormal - currentry.Data = pbutil.MustMarshal(irr) + currentry.Data = pbutil.MustMarshalMessage(irr) *ents = append(*ents, currentry) } } diff --git a/tools/etcd-dump-logs/main.go b/tools/etcd-dump-logs/main.go index d4cf69446632..dec90309a802 100644 --- a/tools/etcd-dump-logs/main.go +++ b/tools/etcd-dump-logs/main.go @@ -30,6 +30,7 @@ import ( "strings" "go.uber.org/zap" + "google.golang.org/protobuf/proto" "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/client/pkg/v3/types" @@ -199,7 +200,7 @@ func snapDir(dataDir string) string { return filepath.Join(dataDir, "member", "s func parseWALMetadata(b []byte) (id, cid types.ID) { var metadata etcdserverpb.Metadata - pbutil.MustUnmarshal(&metadata, b) + pbutil.MustUnmarshalMessage(&metadata, b) id = types.ID(metadata.GetNodeID()) cid = types.ID(metadata.GetClusterID()) return id, cid @@ -223,57 +224,57 @@ func passConfChange(entry raftpb.Entry) (bool, string) { func passInternalRaftRequest(entry raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest - return entry.Type == raftpb.EntryNormal && rr.Unmarshal(entry.Data) == nil, "InternalRaftRequest" + return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil, "InternalRaftRequest" } func passUnknownNormal(entry raftpb.Entry) (bool, string) { var rr2 etcdserverpb.InternalRaftRequest - return (entry.Type == raftpb.EntryNormal) && (rr2.Unmarshal(entry.Data) != nil), "UnknownNormal" + return (entry.Type == raftpb.EntryNormal) && proto.Unmarshal(entry.Data, &rr2) != nil, "UnknownNormal" } func passIRRRange(entry raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest - return entry.Type == raftpb.EntryNormal && rr.Unmarshal(entry.Data) == nil && rr.Range != nil, "InternalRaftRequest" + return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.Range != nil, "InternalRaftRequest" } func passIRRPut(entry raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest - return entry.Type == raftpb.EntryNormal && rr.Unmarshal(entry.Data) == nil && rr.Put != nil, "InternalRaftRequest" + return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.Put != nil, "InternalRaftRequest" } func passIRRDeleteRange(entry raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest - return entry.Type == raftpb.EntryNormal && rr.Unmarshal(entry.Data) == nil && rr.DeleteRange != nil, "InternalRaftRequest" + return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.DeleteRange != nil, "InternalRaftRequest" } func passIRRTxn(entry raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest - return entry.Type == raftpb.EntryNormal && rr.Unmarshal(entry.Data) == nil && rr.Txn != nil, "InternalRaftRequest" + return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.Txn != nil, "InternalRaftRequest" } func passIRRCompaction(entry raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest - return entry.Type == raftpb.EntryNormal && rr.Unmarshal(entry.Data) == nil && rr.Compaction != nil, "InternalRaftRequest" + return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.Compaction != nil, "InternalRaftRequest" } func passIRRLeaseGrant(entry raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest - return entry.Type == raftpb.EntryNormal && rr.Unmarshal(entry.Data) == nil && rr.LeaseGrant != nil, "InternalRaftRequest" + return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.LeaseGrant != nil, "InternalRaftRequest" } func passIRRLeaseRevoke(entry raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest - return entry.Type == raftpb.EntryNormal && rr.Unmarshal(entry.Data) == nil && rr.LeaseRevoke != nil, "InternalRaftRequest" + return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.LeaseRevoke != nil, "InternalRaftRequest" } func passIRRLeaseCheckpoint(entry raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest - return entry.Type == raftpb.EntryNormal && rr.Unmarshal(entry.Data) == nil && rr.LeaseCheckpoint != nil, "InternalRaftRequest" + return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.LeaseCheckpoint != nil, "InternalRaftRequest" } func passRequest(entry raftpb.Entry) (bool, string) { var rr2 etcdserverpb.InternalRaftRequest - return entry.Type == raftpb.EntryNormal && rr2.Unmarshal(entry.Data) != nil, "Request" + return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr2) != nil, "Request" } type EntryPrinter func(e raftpb.Entry) @@ -284,7 +285,7 @@ type EntryPrinter func(e raftpb.Entry) // IRRDeleteRange and IRRTxn entries func printInternalRaftRequest(entry raftpb.Entry) { var rr etcdserverpb.InternalRaftRequest - if err := rr.Unmarshal(entry.Data); err == nil { + if proto.Unmarshal(entry.Data, &rr) == nil { // Ensure we don't log user password if rr.AuthUserChangePassword != nil && rr.AuthUserChangePassword.Password != "" { rr.AuthUserChangePassword.Password = "" diff --git a/tools/etcd-dump-logs/raw.go b/tools/etcd-dump-logs/raw.go index 5b5bb6c94056..00ba28197d26 100644 --- a/tools/etcd-dump-logs/raw.go +++ b/tools/etcd-dump-logs/raw.go @@ -85,7 +85,7 @@ func printRec(rec *walpb.Record, fromIndex *uint64, out io.Writer) { switch rec.GetType() { case wal.MetadataType: var metadata etcdserverpb.Metadata - pbutil.MustUnmarshal(&metadata, rec.Data) + pbutil.MustUnmarshalMessage(&metadata, rec.Data) fmt.Fprintf(out, "Metadata: %s\n", metadata.String()) case wal.CrcType: fmt.Fprintf(out, "CRC: %d\n", rec.GetCrc()) @@ -96,7 +96,7 @@ func printRec(rec *walpb.Record, fromIndex *uint64, out io.Writer) { } case wal.SnapshotType: var snap walpb.Snapshot - pbutil.MustUnmarshal(&snap, rec.Data) + pbutil.MustUnmarshalMessage(&snap, rec.Data) if fromIndex == nil || snap.GetIndex() >= *fromIndex { fmt.Fprintf(out, "Snapshot: %s\n", snap.String()) } diff --git a/tools/etcd-dump-logs/raw_test.go b/tools/etcd-dump-logs/raw_test.go index 2d978f70a644..f1a1de734f20 100644 --- a/tools/etcd-dump-logs/raw_test.go +++ b/tools/etcd-dump-logs/raw_test.go @@ -29,7 +29,7 @@ func Test_readRaw(t *testing.T) { assert.Equal(t, `CRC: 0 Metadata: -Snapshot: index:0 term:0 +Snapshot: index:0 term:0 Entry: Term:1 Index:1 Type:EntryConfChange Data:"\010\001\020\000\030\002\"\000" Entry: Term:2 Index:2 Type:EntryConfChange Data:"\010\002\020\001\030\002\"\000" Entry: Term:2 Index:3 Type:EntryConfChange Data:"\010\003\020\002\030\002\"\000" diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 521407c67e00..59eb6ed149ce 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -8,7 +8,6 @@ require ( github.com/alexfalkowski/gocovmerge v1.11.0 github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/cloudflare/cfssl v1.6.5 - github.com/gogo/protobuf v1.3.2 github.com/golangci/golangci-lint/v2 v2.11.4 github.com/google/yamlfmt v0.21.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 @@ -105,6 +104,7 @@ require ( github.com/gobwas/glob v0.2.3 // indirect github.com/godoc-lint/godoc-lint v0.11.2 // indirect github.com/gofrs/flock v0.13.0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golangci/asciicheck v0.5.0 // indirect github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect diff --git a/tools/mod/libs.go b/tools/mod/libs.go index fd392d55a9f7..129a47f776b9 100644 --- a/tools/mod/libs.go +++ b/tools/mod/libs.go @@ -19,7 +19,3 @@ // for etcd. Thanks to this file 'go mod tidy' does not removes dependencies. package libs - -import ( - _ "github.com/gogo/protobuf/proto" -) From 8631cf628e3203c5661a7c18b730543cb9443f3b Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 22 Apr 2026 13:44:33 -0700 Subject: [PATCH 0990/1068] Use Dependabot to bump the devcontainer tag Add a Dockerfile that uses the Dev Container as the base, so Dependabot will create a pull request when there's a new tag. When Dependabot opens a pull request, run a GitHub action editing the `.devcontainer/devcontainer.json` file, pointing to the updated version. Signed-off-by: Ivan Valdes --- .github/dependabot.yml | 5 +++ .../workflows/bump-devcontainer-version.yml | 44 +++++++++++++++++++ tools/container-images/README.md | 10 +++++ .../container-images/devcontainer/Dockerfile | 1 + 4 files changed, 60 insertions(+) create mode 100644 .github/workflows/bump-devcontainer-version.yml create mode 100644 tools/container-images/README.md create mode 100644 tools/container-images/devcontainer/Dockerfile diff --git a/.github/dependabot.yml b/.github/dependabot.yml index bea854f3b4d3..21b563da9d5e 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -42,3 +42,8 @@ updates: target-branch: "release-3.6" schedule: interval: monthly + + - package-ecosystem: docker + directory: /tools/container-images/devcontainer + schedule: + interval: weekly diff --git a/.github/workflows/bump-devcontainer-version.yml b/.github/workflows/bump-devcontainer-version.yml new file mode 100644 index 000000000000..0a8da4391c61 --- /dev/null +++ b/.github/workflows/bump-devcontainer-version.yml @@ -0,0 +1,44 @@ +--- +name: Bump devcontainer version +on: pull_request +permissions: + contents: write + pull-requests: read +jobs: + dependabot-metadata: + runs-on: ubuntu-latest + if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'etcd-io/etcd' + outputs: + directory: ${{steps.metadata.outputs.directory}} + new-version: ${{steps.metadata.outputs.new-version}} + steps: + - name: Dependabot metadata + id: metadata + uses: dependabot/fetch-metadata@ffa630c65fa7e0ecfa0625b5ceda64399aea1b36 # v3.0.0 + with: + github-token: "${{secrets.GITHUB_TOKEN}}" + devcontainer-update: + runs-on: ubuntu-latest + needs: dependabot-metadata + if: needs.dependabot-metadata.outputs.directory == '/tools/container-images/devcontainer' + steps: + - name: Checkout the code + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + ref: ${{github.event.pull_request.head.ref}} + repository: ${{github.event.pull_request.head.repo.full_name}} + fetch-depth: 0 + - name: Update devcontainer.json + run: | + sed -i -E "s|(mcr\.microsoft\.com/devcontainers/go:)[^"'"'"]+|\1${{needs.dependabot-metadata.outputs.new-version}}|" .devcontainer/devcontainer.json + + git config user.name 'github-actions[bot]' + git config user.email '41898282+github-actions[bot]@users.noreply.github.com' + + git add .devcontainer/devcontainer.json + git diff --cached --quiet && exit 0 + + git commit --signoff -m "build(deps): bump devcontainer.json + + Bumps .devcontainer/devcontainer.json to ${{needs.dependabot-metadata.outputs.new-version}}." + git push origin "HEAD:refs/heads/${{github.event.pull_request.head.ref}}" diff --git a/tools/container-images/README.md b/tools/container-images/README.md new file mode 100644 index 000000000000..dfbc748ffe6b --- /dev/null +++ b/tools/container-images/README.md @@ -0,0 +1,10 @@ +# Container Images + +The container images defined in this directory are used to maintain +depenendencies up to date. **These images are not used to build the project.** + +These images cause [Dependabot] to do a version bump. After that, a [GitHub +action] will update other artifacts in the repository. + +[Dependabot]: ../../.github/dependabot.yml +[GitHub action]: ../../.github/workflows/bump-devcontainer-version.yml diff --git a/tools/container-images/devcontainer/Dockerfile b/tools/container-images/devcontainer/Dockerfile new file mode 100644 index 000000000000..3496e71c69c3 --- /dev/null +++ b/tools/container-images/devcontainer/Dockerfile @@ -0,0 +1 @@ +FROM mcr.microsoft.com/devcontainers/go:dev-1.25-bookworm@sha256:c9a8c52ad9c962655ef43c9e333954b2a4d22c18b184479cefec2833ae02b92e From cef1fc9cef528b1ece5a21e839c7643caf73e1c4 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 18 May 2026 14:08:07 +0200 Subject: [PATCH 0991/1068] Define THREAT_MODEL for etcd to decentivize agents reporting CVEs outside it Signed-off-by: Marek Siarkowicz --- THREAT_MODEL.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 THREAT_MODEL.md diff --git a/THREAT_MODEL.md b/THREAT_MODEL.md new file mode 100644 index 000000000000..9e8f54285c6a --- /dev/null +++ b/THREAT_MODEL.md @@ -0,0 +1,39 @@ +# etcd Threat Model + +This document defines the security assumptions and trust boundaries of the etcd project. + +Automated vulnerability scanners and security researchers MUST evaluate any security concern against these baseline boundaries. + +--- + +## Security Boundaries & Assumptions + +etcd Server is a consistent, distributed key-value storage designed to operate as a secure backend. +The baseline security boundaries are structured as follows: + +### The Network Boundary + +etcd Server assumes it is deployed within a strictly isolated, private network segment. +It **must not** be exposed to untrusted networks or the public internet. +Both the **etcd Client** and the **etcd Server** reside inside this protected perimeter. + +### The Client-to-Server Boundary + +etcd clients communicate with etcd Servers over Port 2379. +This boundary requires **mTLS encryption**. +Any client request must prove its identity at the transport layer using client certificates. + +### The Peer-to-Peer Boundary + +etcd Server members communicate with other cluster members over Port 2380 to run Raft consensus. +This boundary must be strictly limited to authorized cluster members using dedicated, private peer certificates (mTLS). + +### The Host Execution Boundary + +etcd Server is compiled as a pure, statically linked Go binary (`CGO_ENABLED=0`). +It does not dynamically load or link to dynamic system libraries (such as host C libraries or host transport encryption libraries) at runtime. + +### The Data Storage Boundary + +etcd Server writes data to the local storage subsystem exactly as received from the client. +Data protection at rest is a client-side responsibility (e.g., client envelope encryption) or must be managed via disk filesystem encryption. From fad5312668162bbdf4e6f3cb905d629b4d780cdb Mon Sep 17 00:00:00 2001 From: Jonathan Albrecht Date: Wed, 18 Mar 2026 12:57:11 -0400 Subject: [PATCH 0992/1068] Add test utils to create unique urls for embed tests to fix 'listen tcp 127.0.0.1:2380: bind: address already in use' errors when running tests. Address review comments: - Add Apache copyright to the new file - Fix typo Confg -> Config - Move server/embed/testutil/url.go -> server/embed/util_test.go - Add a new method to apply the test URLs to the config - Make all config functions private Signed-off-by: Jonathan Albrecht --- server/embed/auth_test.go | 4 +++ server/embed/serve_test.go | 26 ++--------------- server/embed/util_test.go | 58 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 23 deletions(-) create mode 100644 server/embed/util_test.go diff --git a/server/embed/auth_test.go b/server/embed/auth_test.go index 83a3ccfda1f9..dc92d92e5894 100644 --- a/server/embed/auth_test.go +++ b/server/embed/auth_test.go @@ -23,6 +23,10 @@ import ( func TestEnableAuth(t *testing.T) { tdir := t.TempDir() cfg := NewConfig() + + testURLConfig := newConfigTestURLs() + applyTestURLConfig(cfg, testURLConfig) + cfg.Dir = tdir e, err := StartEtcd(cfg) if err != nil { diff --git a/server/embed/serve_test.go b/server/embed/serve_test.go index 487a82c915cd..9d97d6e49581 100644 --- a/server/embed/serve_test.go +++ b/server/embed/serve_test.go @@ -15,9 +15,6 @@ package embed import ( - "fmt" - "net/url" - "os" "testing" "github.com/stretchr/testify/require" @@ -31,29 +28,12 @@ func TestStartEtcdWrongToken(t *testing.T) { cfg := NewConfig() - // Similar to function in integration/embed/embed_test.go for setting up Config. - urls := newEmbedURLs(2) - curls := []url.URL{urls[0]} - purls := []url.URL{urls[1]} - cfg.ListenClientUrls, cfg.AdvertiseClientUrls = curls, curls - cfg.ListenPeerUrls, cfg.AdvertisePeerUrls = purls, purls - cfg.InitialCluster = "" - for i := range purls { - cfg.InitialCluster += ",default=" + purls[i].String() - } - cfg.InitialCluster = cfg.InitialCluster[1:] + testURLConfig := newConfigTestURLs() + applyTestURLConfig(cfg, testURLConfig) + cfg.Dir = tdir cfg.AuthToken = "wrong-token" _, err := StartEtcd(cfg) require.ErrorIsf(t, err, auth.ErrInvalidAuthOpts, "expected %v, got %v", auth.ErrInvalidAuthOpts, err) } - -func newEmbedURLs(n int) (urls []url.URL) { - scheme := "unix" - for i := 0; i < n; i++ { - u, _ := url.Parse(fmt.Sprintf("%s://localhost:%d%06d", scheme, os.Getpid(), i)) - urls = append(urls, *u) - } - return urls -} diff --git a/server/embed/util_test.go b/server/embed/util_test.go new file mode 100644 index 000000000000..e54ed09468b3 --- /dev/null +++ b/server/embed/util_test.go @@ -0,0 +1,58 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package embed + +import ( + "fmt" + "net/url" + "os" +) + +type ConfigTestURLs struct { + PeerURLs []url.URL + ClientURLs []url.URL + InitialCluster string +} + +// Similar to function in integration/embed/embed_test.go for setting up Config. +func newConfigTestURLs() *ConfigTestURLs { + urls := newEmbedURLs(2) + cfg := &ConfigTestURLs{ + ClientURLs: []url.URL{urls[0]}, + PeerURLs: []url.URL{urls[1]}, + InitialCluster: "", + } + for i := range cfg.PeerURLs { + cfg.InitialCluster += ",default=" + cfg.PeerURLs[i].String() + } + cfg.InitialCluster = cfg.InitialCluster[1:] + return cfg +} + +func newEmbedURLs(n int) (urls []url.URL) { + scheme := "unix" + for i := 0; i < n; i++ { + u, _ := url.Parse(fmt.Sprintf("%s://localhost:%d%06d", scheme, os.Getpid(), i)) + urls = append(urls, *u) + } + return urls +} + +// applyTestURLConfig applies test URL configuration to the provided Config. +func applyTestURLConfig(cfg *Config, testURLConfig *ConfigTestURLs) { + cfg.ListenClientUrls, cfg.AdvertiseClientUrls = testURLConfig.ClientURLs, testURLConfig.ClientURLs + cfg.ListenPeerUrls, cfg.AdvertisePeerUrls = testURLConfig.PeerURLs, testURLConfig.PeerURLs + cfg.InitialCluster = testURLConfig.InitialCluster +} From b469f7085a0d3300dd2fd6ccb991bbad0c63af88 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Tue, 19 May 2026 11:59:32 -0700 Subject: [PATCH 0993/1068] version: bump up to 3.7.0-beta.0 Signed-off-by: Ivan Valdes --- api/version/version.go | 2 +- cache/go.mod | 6 +++--- client/v3/go.mod | 4 ++-- etcdctl/go.mod | 8 ++++---- etcdutl/go.mod | 10 +++++----- go.mod | 16 ++++++++-------- pkg/go.mod | 2 +- server/go.mod | 8 ++++---- tests/go.mod | 16 ++++++++-------- 9 files changed, 36 insertions(+), 36 deletions(-) diff --git a/api/version/version.go b/api/version/version.go index 31ca2f14d8a0..a66e919ac2cd 100644 --- a/api/version/version.go +++ b/api/version/version.go @@ -26,7 +26,7 @@ import ( var ( // MinClusterVersion is the min cluster version this etcd binary is compatible with. MinClusterVersion = "3.0.0" - Version = "3.7.0-alpha.0" + Version = "3.7.0-beta.0" APIVersion = "unknown" // Git SHA Value will be set during build diff --git a/cache/go.mod b/cache/go.mod index c28a81082365..1f2c1ec56131 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -7,8 +7,8 @@ toolchain go1.26.3 require ( github.com/google/go-cmp v0.7.0 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/api/v3 v3.7.0-beta.0 + go.etcd.io/etcd/client/v3 v3.7.0-beta.0 google.golang.org/protobuf v1.36.11 k8s.io/utils v0.0.0-20260108192941-914a6e750570 ) @@ -20,7 +20,7 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect golang.org/x/net v0.53.0 // indirect diff --git a/client/v3/go.mod b/client/v3/go.mod index ea152d8dda3f..ed162e5f47e6 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -11,8 +11,8 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/prometheus/client_golang v1.23.2 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/api/v3 v3.7.0-beta.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 go.uber.org/zap v1.27.1 google.golang.org/grpc v1.80.0 google.golang.org/protobuf v1.36.11 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 76d865c76309..9fe42000fb21 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -12,10 +12,10 @@ require ( github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/api/v3 v3.7.0-beta.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 + go.etcd.io/etcd/client/v3 v3.7.0-beta.0 + go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 google.golang.org/grpc v1.80.0 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 8509b765e182..63051fcca296 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -19,11 +19,11 @@ require ( github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 - go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/api/v3 v3.7.0-beta.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 + go.etcd.io/etcd/client/v3 v3.7.0-beta.0 + go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 + go.etcd.io/etcd/server/v3 v3.7.0-beta.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.uber.org/zap v1.27.1 google.golang.org/protobuf v1.36.11 diff --git a/go.mod b/go.mod index dfba6e71d400..6015f37905f4 100644 --- a/go.mod +++ b/go.mod @@ -25,14 +25,14 @@ require ( github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 - go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/etcdctl/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/etcdutl/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/tests/v3 v3.0.0-00010101000000-000000000000 + go.etcd.io/etcd/api/v3 v3.7.0-beta.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 + go.etcd.io/etcd/client/v3 v3.7.0-beta.0 + go.etcd.io/etcd/etcdctl/v3 v3.7.0-beta.0 + go.etcd.io/etcd/etcdutl/v3 v3.7.0-beta.0 + go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 + go.etcd.io/etcd/server/v3 v3.7.0-beta.0 + go.etcd.io/etcd/tests/v3 v3.7.0-beta.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 diff --git a/pkg/go.mod b/pkg/go.mod index ff1d88694f8a..c3d7bafc0722 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -10,7 +10,7 @@ require ( github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 go.opentelemetry.io/otel/trace v1.43.0 go.uber.org/zap v1.27.1 golang.org/x/sys v0.43.0 diff --git a/server/go.mod b/server/go.mod index 34e37c276515..4f664db55a72 100644 --- a/server/go.mod +++ b/server/go.mod @@ -23,10 +23,10 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 go.etcd.io/bbolt v1.4.3 - go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/api/v3 v3.7.0-beta.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 + go.etcd.io/etcd/client/v3 v3.7.0-beta.0 + go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 go.opentelemetry.io/otel v1.43.0 diff --git a/tests/go.mod b/tests/go.mod index 54a43220db21..d8fe817f2169 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -31,14 +31,14 @@ require ( github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.4.3 - go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/cache/v3 v3.6.1 - go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/etcdctl/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/etcdutl/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/pkg/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/server/v3 v3.6.0-alpha.0 + go.etcd.io/etcd/api/v3 v3.7.0-beta.0 + go.etcd.io/etcd/cache/v3 v3.7.0-beta.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 + go.etcd.io/etcd/client/v3 v3.7.0-beta.0 + go.etcd.io/etcd/etcdctl/v3 v3.7.0-beta.0 + go.etcd.io/etcd/etcdutl/v3 v3.7.0-beta.0 + go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 + go.etcd.io/etcd/server/v3 v3.7.0-beta.0 go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 From 9ccd5b75689a24efe4af61c3f6d764a367ebdf11 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Mon, 18 May 2026 12:20:48 +0800 Subject: [PATCH 0994/1068] etcdutl: validate data file path and return consistent errors instead of panic when given non-existent paths Signed-off-by: shenmu.wy --- etcdutl/etcdutl/common.go | 14 ++++++++++++++ etcdutl/etcdutl/defrag_command.go | 3 +++ etcdutl/etcdutl/hashkv_command.go | 3 +++ etcdutl/etcdutl/migrate_command.go | 6 ++++-- etcdutl/etcdutl/snapshot_command.go | 3 +++ 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/etcdutl/etcdutl/common.go b/etcdutl/etcdutl/common.go index 3ba688388c5f..e6b09efb7015 100644 --- a/etcdutl/etcdutl/common.go +++ b/etcdutl/etcdutl/common.go @@ -15,6 +15,7 @@ package etcdutl import ( + "os" "time" "go.uber.org/zap" @@ -29,6 +30,19 @@ import ( "go.etcd.io/etcd/server/v3/storage/wal/walpb" ) +// validateDataDir checks if the data directory's backend database file exists. +func validateDataDir(dataDir string) error { + dbPath := datadir.ToBackendFileName(dataDir) + return validateFilePath(dbPath) +} + +// validateFilePath checks if the specified file exists. +// It returns an error encountered by os.Stat, such as os.ErrNotExist, os.ErrPermission, etc. +func validateFilePath(filePath string) error { + _, err := os.Stat(filePath) + return err +} + // FlockTimeout is the duration to wait to obtain a file lock on db file. var FlockTimeout time.Duration diff --git a/etcdutl/etcdutl/defrag_command.go b/etcdutl/etcdutl/defrag_command.go index 6a80df2d3b70..5565e79c6adf 100644 --- a/etcdutl/etcdutl/defrag_command.go +++ b/etcdutl/etcdutl/defrag_command.go @@ -48,6 +48,9 @@ func defragCommandFunc(cmd *cobra.Command, args []string) { } func DefragData(dataDir string) error { + if err := validateDataDir(dataDir); err != nil { + return err + } b := backend.NewDefaultBackend( GetLogger(), datadir.ToBackendFileName(dataDir), diff --git a/etcdutl/etcdutl/hashkv_command.go b/etcdutl/etcdutl/hashkv_command.go index bc06f60c54b0..c80693ab56f0 100644 --- a/etcdutl/etcdutl/hashkv_command.go +++ b/etcdutl/etcdutl/hashkv_command.go @@ -54,6 +54,9 @@ type HashKV struct { } func calculateHashKV(dbPath string, rev int64) (HashKV, error) { + if err := validateFilePath(dbPath); err != nil { + return HashKV{}, err + } b := backend.NewDefaultBackend(zap.NewNop(), dbPath, backend.WithTimeout(FlockTimeout)) defer b.Close() // Since `etcdutl hashkv` only hashes the keyspace and ignores leases, we use a simple lessor to simplify the implementation. diff --git a/etcdutl/etcdutl/migrate_command.go b/etcdutl/etcdutl/migrate_command.go index 7620c54059ce..4fe5fee90241 100644 --- a/etcdutl/etcdutl/migrate_command.go +++ b/etcdutl/etcdutl/migrate_command.go @@ -122,8 +122,10 @@ func (c *migrateConfig) finalize() error { } func migrateCommandFunc(c *migrateConfig) error { - dbPath := datadir.ToBackendFileName(c.dataDir) - be := backend.NewDefaultBackend(GetLogger(), dbPath, backend.WithTimeout(FlockTimeout)) + if err := validateDataDir(c.dataDir); err != nil { + return err + } + be := backend.NewDefaultBackend(GetLogger(), datadir.ToBackendFileName(c.dataDir), backend.WithTimeout(FlockTimeout)) defer be.Close() tx := be.BatchTx() diff --git a/etcdutl/etcdutl/snapshot_command.go b/etcdutl/etcdutl/snapshot_command.go index 52cb4a1bbdda..e0d4b07329e5 100644 --- a/etcdutl/etcdutl/snapshot_command.go +++ b/etcdutl/etcdutl/snapshot_command.go @@ -94,6 +94,9 @@ func SnapshotStatusCommandFunc(cmd *cobra.Command, args []string) { err := fmt.Errorf("snapshot status requires exactly one argument") cobrautl.ExitWithError(cobrautl.ExitBadArgs, err) } + if err := validateFilePath(args[0]); err != nil { + cobrautl.ExitWithError(cobrautl.ExitError, err) + } printer := initPrinterFromCmd(cmd) lg := GetLogger() From ce6a209f58956089db38f4d8c518f4e6c100c505 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Thu, 14 May 2026 18:41:23 -0400 Subject: [PATCH 0995/1068] tools: tolerate unstable protobuf snapshot string spacing google.golang.org/protobuf intentionally varies whitespace in String output across binaries. Update the etcd-dump-logs raw output test to accept both snapshot line formats while keeping the rest of the output exact. Signed-off-by: Wei Fu --- tools/etcd-dump-logs/raw_test.go | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/tools/etcd-dump-logs/raw_test.go b/tools/etcd-dump-logs/raw_test.go index f1a1de734f20..7b8fe1a3e8e6 100644 --- a/tools/etcd-dump-logs/raw_test.go +++ b/tools/etcd-dump-logs/raw_test.go @@ -16,6 +16,7 @@ package main import ( "bytes" + "strings" "testing" "github.com/stretchr/testify/assert" @@ -26,8 +27,7 @@ func Test_readRaw(t *testing.T) { mustCreateWALLog(t, path) var out bytes.Buffer readRaw(nil, walDir(path), &out) - assert.Equal(t, - `CRC: 0 + assertReadRawOutput(t, `CRC: 0 Metadata: Snapshot: index:0 term:0 Entry: Term:1 Index:1 Type:EntryConfChange Data:"\010\001\020\000\030\002\"\000" @@ -62,3 +62,21 @@ Entry: Term:27 Index:34 Data:"?" EOF: All entries were processed. `, out.String()) } + +func assertReadRawOutput(t *testing.T, expected, actual string) { + t.Helper() + + // google.golang.org/protobuf intentionally makes String output unstable across + // binaries by varying whitespace, so accept the alternate snapshot line. + // See https://github.com/protocolbuffers/protobuf-go/blob/v1.36.11/internal/encoding/text/encode.go#L229-L232. + expectedWithExtraSpace := strings.Replace(expected, readRawSnapshotLine, readRawSnapshotLineWithExtraSpace, 1) + if actual == expected || actual == expectedWithExtraSpace { + return + } + assert.Equal(t, expected, actual) +} + +const ( + readRawSnapshotLine = "Snapshot: index:0 term:0\n" + readRawSnapshotLineWithExtraSpace = "Snapshot: index:0 term:0\n" +) From 1d4a8a48b5d982cc1f7192b9b1b2e04b8d16ba70 Mon Sep 17 00:00:00 2001 From: Sebastien Tardif Date: Sun, 17 May 2026 13:48:51 -0700 Subject: [PATCH 0996/1068] rafthttp: close response body on io.ReadAll error in stream dial In streamReader.dial(), when the HTTP response has status StatusPreconditionFailed, the code reads the response body via io.ReadAll. If io.ReadAll returns an error, the function returns without closing resp.Body, leaking the underlying TCP connection. Every other error path in this switch statement properly closes the response body (via httputil.GracefulClose), but this one was missed. Add resp.Body.Close() before returning on the io.ReadAll error path to prevent the connection leak. Signed-off-by: Sebastien Tardif --- server/etcdserver/api/rafthttp/stream.go | 1 + 1 file changed, 1 insertion(+) diff --git a/server/etcdserver/api/rafthttp/stream.go b/server/etcdserver/api/rafthttp/stream.go index cd4e11e1f21e..f17874f6c7af 100644 --- a/server/etcdserver/api/rafthttp/stream.go +++ b/server/etcdserver/api/rafthttp/stream.go @@ -630,6 +630,7 @@ func (cr *streamReader) dial(t streamType) (io.ReadCloser, error) { case http.StatusPreconditionFailed: b, err := io.ReadAll(resp.Body) if err != nil { + resp.Body.Close() cr.picker.unreachable(u) return nil, err } From 873ea347202f58be04a3e08e7cb3fe930e3c632f Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 21 May 2026 11:38:39 -0700 Subject: [PATCH 0997/1068] Fix devcontainer GitHub action, set workflow write permission Signed-off-by: Ivan Valdes --- .github/workflows/bump-devcontainer-version.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/bump-devcontainer-version.yml b/.github/workflows/bump-devcontainer-version.yml index 29736596121a..8dd32ecbe671 100644 --- a/.github/workflows/bump-devcontainer-version.yml +++ b/.github/workflows/bump-devcontainer-version.yml @@ -4,6 +4,7 @@ on: pull_request permissions: contents: write pull-requests: read + workflows: write jobs: dependabot-metadata: runs-on: ubuntu-latest From 25b7e4e06b53c83fc8f8a8b2e61c57715b3bfb8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 May 2026 05:09:21 +0000 Subject: [PATCH 0998/1068] build(deps): bump dependabot/fetch-metadata from 3.0.0 to 3.1.0 Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 3.0.0 to 3.1.0. - [Release notes](https://github.com/dependabot/fetch-metadata/releases) - [Commits](https://github.com/dependabot/fetch-metadata/compare/ffa630c65fa7e0ecfa0625b5ceda64399aea1b36...25dd0e34f4fe68f24cc83900b1fe3fe149efef98) --- updated-dependencies: - dependency-name: dependabot/fetch-metadata dependency-version: 3.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/bump-devcontainer-version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bump-devcontainer-version.yml b/.github/workflows/bump-devcontainer-version.yml index 0a8da4391c61..ff66d2380800 100644 --- a/.github/workflows/bump-devcontainer-version.yml +++ b/.github/workflows/bump-devcontainer-version.yml @@ -14,7 +14,7 @@ jobs: steps: - name: Dependabot metadata id: metadata - uses: dependabot/fetch-metadata@ffa630c65fa7e0ecfa0625b5ceda64399aea1b36 # v3.0.0 + uses: dependabot/fetch-metadata@25dd0e34f4fe68f24cc83900b1fe3fe149efef98 # v3.1.0 with: github-token: "${{secrets.GITHUB_TOKEN}}" devcontainer-update: From 440cd0e6f0eb4832a7950e0f7ece18eb920a657e Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 20 May 2026 16:00:57 +0800 Subject: [PATCH 0999/1068] Add missing watch response header Signed-off-by: Chun-Hung Tseng --- server/proxy/grpcproxy/watch.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server/proxy/grpcproxy/watch.go b/server/proxy/grpcproxy/watch.go index 313d59d6ee37..ebe1e98beabc 100644 --- a/server/proxy/grpcproxy/watch.go +++ b/server/proxy/grpcproxy/watch.go @@ -272,7 +272,12 @@ func (wps *watchProxyStream) recvLoop() error { filters: v3rpc.FiltersFromRequest(cr), } if !w.wr.valid() { - w.post(&pb.WatchResponse{WatchId: clientv3.InvalidWatchID, Created: true, Canceled: true}) + w.post(&pb.WatchResponse{ + Header: &pb.ResponseHeader{}, + WatchId: clientv3.InvalidWatchID, + Created: true, + Canceled: true, + }) wps.mu.Unlock() continue } From 1df7abcf158ec35a5181d208b416531cc6e0f94c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 May 2026 05:09:18 +0000 Subject: [PATCH 1000/1068] build(deps): bump antithesishq/antithesis-trigger-action Bumps [antithesishq/antithesis-trigger-action](https://github.com/antithesishq/antithesis-trigger-action) from 0.10 to 0.11. - [Release notes](https://github.com/antithesishq/antithesis-trigger-action/releases) - [Commits](https://github.com/antithesishq/antithesis-trigger-action/compare/f6221e2ba819fe0ac3e36bd67a281fa439a03fba...72e1bc49d6a5f66c9b892e2b311844e00d342554) --- updated-dependencies: - dependency-name: antithesishq/antithesis-trigger-action dependency-version: '0.11' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 2 +- .github/workflows/antithesis.debugger.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index f27cb6ae475c..c37f6305e3f1 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -76,7 +76,7 @@ jobs: docker push $IMAGE - name: Run Antithesis Tests - uses: antithesishq/antithesis-trigger-action@f6221e2ba819fe0ac3e36bd67a281fa439a03fba # v0.10 + uses: antithesishq/antithesis-trigger-action@72e1bc49d6a5f66c9b892e2b311844e00d342554 # v0.11 with: notebook_name: etcd tenant: linuxfoundation diff --git a/.github/workflows/antithesis.debugger.yml b/.github/workflows/antithesis.debugger.yml index 3dead9e6891e..88fc25506d6a 100644 --- a/.github/workflows/antithesis.debugger.yml +++ b/.github/workflows/antithesis.debugger.yml @@ -30,7 +30,7 @@ jobs: environment: Antithesis steps: - name: Trigger Antithesis Debugger - uses: antithesishq/antithesis-trigger-action@f6221e2ba819fe0ac3e36bd67a281fa439a03fba # v0.10 + uses: antithesishq/antithesis-trigger-action@72e1bc49d6a5f66c9b892e2b311844e00d342554 # v0.11 with: notebook_name: debugging tenant: linuxfoundation From 0dfbc9a6155080ac050644e6afff3e236981bad2 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 20 May 2026 09:39:21 -0700 Subject: [PATCH 1001/1068] Add devcontainer test GitHub action Run the tests on the devcontainer defined in `.devcontainer/devcontainer.json`. Ensure that the GitHub action that updates that file also updates the GitHub action. So, when we have an update to the dev container image, we ensure the environment can build the project. Signed-off-by: Ivan Valdes --- .../workflows/bump-devcontainer-version.yml | 10 ++++++---- .github/workflows/devcontainer-test.yml | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/devcontainer-test.yml diff --git a/.github/workflows/bump-devcontainer-version.yml b/.github/workflows/bump-devcontainer-version.yml index 0a8da4391c61..61b8a6b59607 100644 --- a/.github/workflows/bump-devcontainer-version.yml +++ b/.github/workflows/bump-devcontainer-version.yml @@ -28,17 +28,19 @@ jobs: ref: ${{github.event.pull_request.head.ref}} repository: ${{github.event.pull_request.head.repo.full_name}} fetch-depth: 0 - - name: Update devcontainer.json + - name: Update devcontainer references run: | + sed -i -E "s|(image: ).*|\1$(awk 'match($1, /FROM/){print $2}' tools/container-images/devcontainer/Dockerfile)|" .github/workflows/devcontainer-test.yml sed -i -E "s|(mcr\.microsoft\.com/devcontainers/go:)[^"'"'"]+|\1${{needs.dependabot-metadata.outputs.new-version}}|" .devcontainer/devcontainer.json git config user.name 'github-actions[bot]' git config user.email '41898282+github-actions[bot]@users.noreply.github.com' - git add .devcontainer/devcontainer.json + git add .devcontainer/devcontainer.json .github/workflows/devcontainer-test.yml git diff --cached --quiet && exit 0 - git commit --signoff -m "build(deps): bump devcontainer.json + git commit --signoff -m "build(deps): bump devcontainer version references - Bumps .devcontainer/devcontainer.json to ${{needs.dependabot-metadata.outputs.new-version}}." + * Bumps .devcontainer/devcontainer.json to ${{needs.dependabot-metadata.outputs.new-version}}. + * Bumps .github/workflows/devcontainer-test.yml to ${{needs.dependabot-metadata.outputs.new-version}}." git push origin "HEAD:refs/heads/${{github.event.pull_request.head.ref}}" diff --git a/.github/workflows/devcontainer-test.yml b/.github/workflows/devcontainer-test.yml new file mode 100644 index 000000000000..1f1a014a5c25 --- /dev/null +++ b/.github/workflows/devcontainer-test.yml @@ -0,0 +1,18 @@ +--- +name: Test devcontainer +on: + pull_request_target: + paths: + - '.devcontainer/devcontainer.json' +permissions: read-all +jobs: + test-devcontainer: + runs-on: ubuntu-latest + container: + image: mcr.microsoft.com/devcontainers/go:1.26-bookworm + steps: + - name: Build project using defined devcontainer + run: | + git clone --depth=1 --branch=${GITHUB_REF_NAME} https://github.com/${GITHUB_REPOSITORY} etcd + cd etcd + make build From cd5251ee3bada76f5ce6793f5c4c40fd247da15d Mon Sep 17 00:00:00 2001 From: vivekpatani <9080894+vivekpatani@users.noreply.github.com> Date: Wed, 20 May 2026 16:05:12 -0700 Subject: [PATCH 1002/1068] client/pkg/fileutil: use os.Getuid() to skip TestIsDirWriteable as root - replace user.Current().Name == "root" with os.Getuid() == 0. - drop os/user import and user.Current() error path. Signed-off-by: vivekpatani <9080894+vivekpatani@users.noreply.github.com> --- client/pkg/fileutil/fileutil_test.go | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/client/pkg/fileutil/fileutil_test.go b/client/pkg/fileutil/fileutil_test.go index 6abba29ca593..1c765e4e03c9 100644 --- a/client/pkg/fileutil/fileutil_test.go +++ b/client/pkg/fileutil/fileutil_test.go @@ -19,7 +19,6 @@ import ( "io" "math/rand" "os" - "os/user" "path/filepath" "runtime" "strings" @@ -35,13 +34,7 @@ func TestIsDirWriteable(t *testing.T) { tmpdir := t.TempDir() require.NoErrorf(t, IsDirWriteable(tmpdir), "unexpected IsDirWriteable error") require.NoErrorf(t, os.Chmod(tmpdir, 0o444), "unexpected os.Chmod error") - me, err := user.Current() - if err != nil { - // err can be non-nil when cross compiled - // http://stackoverflow.com/questions/20609415/cross-compiling-user-current-not-implemented-on-linux-amd64 - t.Skipf("failed to get current user: %v", err) - } - if me.Name == "root" || runtime.GOOS == "windows" { + if os.Getuid() == 0 || runtime.GOOS == "windows" { // ideally we should check CAP_DAC_OVERRIDE. // but it does not matter for tests. // Chmod is not supported under windows. From c693897ef100def7db22faa556fa848ec5536fa3 Mon Sep 17 00:00:00 2001 From: Nont <9658731+nwnt@users.noreply.github.com> Date: Thu, 21 May 2026 20:17:23 -0500 Subject: [PATCH 1003/1068] Add range --keys-only to the benchmark tool Signed-off-by: Nont <9658731+nwnt@users.noreply.github.com> --- tools/benchmark/cmd/range.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tools/benchmark/cmd/range.go b/tools/benchmark/cmd/range.go index 66d15273bc24..4d5b520ca703 100644 --- a/tools/benchmark/cmd/range.go +++ b/tools/benchmark/cmd/range.go @@ -49,6 +49,7 @@ var ( rangeConsistency string rangeLimit int64 rangeCountOnly bool + rangeKeysOnly bool rangeStream bool rangePaginate bool rangePrefix bool @@ -61,6 +62,7 @@ func init() { rangeCmd.Flags().StringVar(&rangeConsistency, "consistency", "l", "Linearizable(l) or Serializable(s)") rangeCmd.Flags().Int64Var(&rangeLimit, "limit", 0, "Maximum number of results to return from range request (0 is no limit)") rangeCmd.Flags().BoolVar(&rangeCountOnly, "count-only", false, "Only returns the count of keys") + rangeCmd.Flags().BoolVar(&rangeKeysOnly, "keys-only", false, "Only returns the keys") rangeCmd.Flags().BoolVar(&rangeStream, "stream", false, "Use RangeStream instead of unary Range") rangeCmd.Flags().BoolVar(&rangePaginate, "paginate", false, "Use paginated unary range with 10k-key pages") rangeCmd.Flags().BoolVar(&rangePrefix, "prefix", false, "Range over all keys with the given key as prefix") @@ -86,6 +88,11 @@ func rangeFunc(cmd *cobra.Command, args []string) { os.Exit(1) } + if rangeCountOnly && rangeKeysOnly { + fmt.Fprintln(os.Stderr, "`--keys-only` and `--count-only` cannot be set at the same time") + os.Exit(1) + } + if rangeConsistency == "l" { fmt.Println("bench with linearizable range") } else if rangeConsistency == "s" { @@ -110,9 +117,14 @@ func rangeFunc(cmd *cobra.Command, args []string) { if rangeLimit > 0 { baseOpts = append(baseOpts, v3.WithLimit(rangeLimit)) } - if rangeCountOnly { + + switch { + case rangeCountOnly: baseOpts = append(baseOpts, v3.WithCountOnly()) + case rangeKeysOnly: + baseOpts = append(baseOpts, v3.WithKeysOnly()) } + if rangeConsistency == "s" { baseOpts = append(baseOpts, v3.WithSerializable()) } From 0c22c64e3292cda28a53db1db899f7cde3e5e864 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 21 May 2026 10:18:18 +0200 Subject: [PATCH 1004/1068] Bump go.etcd.io/bbolt to v1.5.0-beta.0 Signed-off-by: Marek Siarkowicz --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 4 ++-- etcdutl/go.sum | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- go.work.sum | 5 +++++ pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 4 ++-- server/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 25 files changed, 53 insertions(+), 48 deletions(-) diff --git a/api/go.mod b/api/go.mod index d4bd8e83bb24..d14c2943ce69 100644 --- a/api/go.mod +++ b/api/go.mod @@ -21,7 +21,7 @@ require ( go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.43.0 // indirect + golang.org/x/sys v0.44.0 // indirect golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/api/go.sum b/api/go.sum index d1286dee074c..bafc0e6a14c1 100644 --- a/api/go.sum +++ b/api/go.sum @@ -40,8 +40,8 @@ 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= golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= diff --git a/cache/go.mod b/cache/go.mod index 1f2c1ec56131..ac5b2eb936ed 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -24,7 +24,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.43.0 // indirect + golang.org/x/sys v0.44.0 // indirect golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect diff --git a/cache/go.sum b/cache/go.sum index 2853e7dd4a9f..7c8d3ed998cf 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -66,8 +66,8 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index c7ab033030fd..d8ee9b766734 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.7.0 github.com/stretchr/testify v1.11.1 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.43.0 + golang.org/x/sys v0.44.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index f6bf09eb9c16..4bdf72f51ba6 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -24,8 +24,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index ed162e5f47e6..c7666270ba15 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -37,7 +37,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.43.0 // indirect + golang.org/x/sys v0.44.0 // indirect golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index ec4a90602ada..66f45781e551 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -74,8 +74,8 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 9fe42000fb21..bdd3bd227833 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -43,7 +43,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.43.0 // indirect + golang.org/x/sys v0.44.0 // indirect golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index e66c39ce8100..4cd252bb74a7 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -105,8 +105,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 63051fcca296..51bded681c49 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -18,7 +18,7 @@ require ( github.com/olekukonko/tablewriter v1.1.4 github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 - go.etcd.io/bbolt v1.4.3 + go.etcd.io/bbolt v1.5.0-beta.0 go.etcd.io/etcd/api/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/v3 v3.7.0-beta.0 @@ -82,7 +82,7 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.50.0 // indirect golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.43.0 // indirect + golang.org/x/sys v0.44.0 // indirect golang.org/x/text v0.36.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 67696dedce12..b36c10435826 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -104,8 +104,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= -go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= +go.etcd.io/bbolt v1.5.0-beta.0 h1:isxlkc3+ZBysJ71YL5dt2eC5D15gmLsa4X8P4ILs+MY= +go.etcd.io/bbolt v1.5.0-beta.0/go.mod h1:3A2bWM6MlWncO01mHrdDVIIQC7B43xx1RNZdYOK1w1s= go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51LgP6SUjROx7Ofqf8lGmeD/cCLaoagI= go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= @@ -161,8 +161,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= diff --git a/go.mod b/go.mod index 6015f37905f4..70b4a9869061 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 - go.etcd.io/bbolt v1.4.3 + go.etcd.io/bbolt v1.5.0-beta.0 go.etcd.io/etcd/api/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/v3 v3.7.0-beta.0 @@ -97,7 +97,7 @@ require ( golang.org/x/mod v0.35.0 // indirect golang.org/x/net v0.53.0 // indirect golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.43.0 // indirect + golang.org/x/sys v0.44.0 // indirect golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect diff --git a/go.sum b/go.sum index e65f3aaddb5b..0058d160f483 100644 --- a/go.sum +++ b/go.sum @@ -110,8 +110,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= -go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= +go.etcd.io/bbolt v1.5.0-beta.0 h1:isxlkc3+ZBysJ71YL5dt2eC5D15gmLsa4X8P4ILs+MY= +go.etcd.io/bbolt v1.5.0-beta.0/go.mod h1:3A2bWM6MlWncO01mHrdDVIIQC7B43xx1RNZdYOK1w1s= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51LgP6SUjROx7Ofqf8lGmeD/cCLaoagI= @@ -171,8 +171,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= diff --git a/go.work.sum b/go.work.sum index 50c85e8889db..34ccdd07e7d8 100644 --- a/go.work.sum +++ b/go.work.sum @@ -163,6 +163,8 @@ github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvK github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= +github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794 h1:xlwdaKcTNVW4PtpQb8aKA4Pjy0CdJHEqvFbAnvR5m2g= +github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794/go.mod h1:7e+I0LQFUI9AXWxOfsQROs9xPhoJtbsyWcjJqDd4KPY= github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9 h1:7kQgkwGRoLzC9K0oyXdJo7nve/bynv/KwUsxbiTlzAM= github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19 h1:iXUgAaqDcIUGbRoy2TdeofRG/j1zpGRSEmNK05T+bi8= github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY= @@ -486,7 +488,10 @@ golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= +golang.org/x/perf v0.0.0-20250813145418-2f7363a06fe1 h1:stGRioFgvBd3x8HoGVg9bb41lLTWLjBMFT/dMB7f4mQ= +golang.org/x/perf v0.0.0-20250813145418-2f7363a06fe1/go.mod h1:rjfRjhHXb3XNVh/9i5Jr2tXoTd0vOlZN5rzsM8cQE6k= golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200317205521-2944c61d58b4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= diff --git a/pkg/go.mod b/pkg/go.mod index c3d7bafc0722..574d7f426b33 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 go.opentelemetry.io/otel/trace v1.43.0 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.43.0 + golang.org/x/sys v0.44.0 google.golang.org/grpc v1.80.0 google.golang.org/protobuf v1.36.11 ) diff --git a/pkg/go.sum b/pkg/go.sum index 693ebf8398d2..e1a8367ef04f 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -58,8 +58,8 @@ go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= diff --git a/server/go.mod b/server/go.mod index 4f664db55a72..a77dbe07b4b6 100644 --- a/server/go.mod +++ b/server/go.mod @@ -22,7 +22,7 @@ require ( github.com/stretchr/testify v1.11.1 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 - go.etcd.io/bbolt v1.4.3 + go.etcd.io/bbolt v1.5.0-beta.0 go.etcd.io/etcd/api/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/v3 v3.7.0-beta.0 @@ -69,7 +69,7 @@ require ( go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/sys v0.43.0 // indirect + golang.org/x/sys v0.44.0 // indirect golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/server/go.sum b/server/go.sum index 1c91002c74aa..c88cb84f834e 100644 --- a/server/go.sum +++ b/server/go.sum @@ -84,8 +84,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= -go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= +go.etcd.io/bbolt v1.5.0-beta.0 h1:isxlkc3+ZBysJ71YL5dt2eC5D15gmLsa4X8P4ILs+MY= +go.etcd.io/bbolt v1.5.0-beta.0/go.mod h1:3A2bWM6MlWncO01mHrdDVIIQC7B43xx1RNZdYOK1w1s= go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51LgP6SUjROx7Ofqf8lGmeD/cCLaoagI= go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee/go.mod h1:VteWcRz3UV3TOpfex1x8jgPKAyjRXLKw3j8RdK3UAps= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= @@ -140,8 +140,8 @@ golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= diff --git a/tests/go.mod b/tests/go.mod index d8fe817f2169..702b167325c9 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -30,7 +30,7 @@ require ( github.com/prometheus/common v0.67.5 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.11.1 - go.etcd.io/bbolt v1.4.3 + go.etcd.io/bbolt v1.5.0-beta.0 go.etcd.io/etcd/api/v3 v3.7.0-beta.0 go.etcd.io/etcd/cache/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 @@ -97,7 +97,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.43.0 // indirect + golang.org/x/sys v0.44.0 // indirect golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect diff --git a/tests/go.sum b/tests/go.sum index 82efb77ef413..0fddaa3dafa5 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -116,8 +116,8 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= -go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= +go.etcd.io/bbolt v1.5.0-beta.0 h1:isxlkc3+ZBysJ71YL5dt2eC5D15gmLsa4X8P4ILs+MY= +go.etcd.io/bbolt v1.5.0-beta.0/go.mod h1:3A2bWM6MlWncO01mHrdDVIIQC7B43xx1RNZdYOK1w1s= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/raft/v3 v3.6.0-beta.0.0.20260116184858-6d944ca211ee h1:9s5V0M58uCy51LgP6SUjROx7Ofqf8lGmeD/cCLaoagI= @@ -175,8 +175,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 59eb6ed149ce..988dd252fa73 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -241,7 +241,7 @@ require ( golang.org/x/mod v0.35.0 // indirect golang.org/x/net v0.53.0 // indirect golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.43.0 // indirect + golang.org/x/sys v0.44.0 // indirect golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa // indirect golang.org/x/term v0.42.0 // indirect golang.org/x/text v0.36.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 3f770eb612ab..a333ddd00cb3 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -653,8 +653,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa h1:efT73AJZfAAUV7SOip6pWGkwJDzIGiKBZGVzHYa+ve4= golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa/go.mod h1:kHjTxDEnAu6/Nl9lDkzjWpR+bmKfxeiRuSDlsMb70gE= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 4c48308afd26..af647a19f543 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -18,7 +18,7 @@ require ( go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.43.0 // indirect + golang.org/x/sys v0.44.0 // indirect golang.org/x/text v0.36.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/grpc v1.80.0 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index ed17fc52e2d5..985801f92764 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1489,8 +1489,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From cac30ec17f79d36fc435d71df22316ee951e5877 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 May 2026 18:38:12 +0000 Subject: [PATCH 1005/1068] build(deps): bump actions/stale from 10.2.0 to 10.3.0 Bumps [actions/stale](https://github.com/actions/stale) from 10.2.0 to 10.3.0. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/b5d41d4e1d5dceea10e7104786b73624c18a190f...eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899) --- updated-dependencies: - dependency-name: actions/stale dependency-version: 10.3.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/stale.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index 7f1839bda648..ebfbcf044c78 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -13,7 +13,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f #v10.2.0 + - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 #v10.3.0 with: days-before-stale: 90 days-before-close: 21 From f5413d6c24cedfa98dac3c05be97dbb3f3694073 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 May 2026 18:38:19 +0000 Subject: [PATCH 1006/1068] build(deps): bump distroless/static-debian12 from `20bc6c0` to `9c346e4` Bumps distroless/static-debian12 from `20bc6c0` to `9c346e4`. --- updated-dependencies: - dependency-name: distroless/static-debian12 dependency-version: 9c346e4be81b5ca7ff31a0d89eaeade58b0f95cfd3baed1f36083ddb47ca3160 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 8d9db55f6fb6..e5ff38389b68 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG ARCH=amd64 -FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:20bc6c0bc4d625a22a8fde3e55f6515709b32055ef8fb9cfbddaa06d1760f838 +FROM --platform=linux/${ARCH} gcr.io/distroless/static-debian12@sha256:9c346e4be81b5ca7ff31a0d89eaeade58b0f95cfd3baed1f36083ddb47ca3160 ADD etcd /usr/local/bin/ ADD etcdctl /usr/local/bin/ From 98e609b1bd7f33232bd70f76956bbd8cbd000598 Mon Sep 17 00:00:00 2001 From: caltechustc Date: Fri, 22 May 2026 00:55:16 +0800 Subject: [PATCH 1007/1068] chore: fix some typos across codebase Signed-off-by: caltechustc --- client/pkg/transport/listener.go | 2 +- client/pkg/transport/listener_opts.go | 2 +- scripts/fix/shell_ws.sh | 2 +- scripts/test.sh | 4 ++-- server/etcdserver/api/membership/cluster_test.go | 2 +- server/etcdserver/api/v2store/event_test.go | 2 +- server/etcdserver/api/v3compactor/revision.go | 2 +- server/etcdserver/raft_test.go | 2 +- server/storage/mvcc/kv_test.go | 6 +++--- server/storage/mvcc/kvstore_compaction_test.go | 2 +- server/storage/mvcc/watchable_store_test.go | 2 +- tests/integration/member_test.go | 2 +- tests/integration/v3_lease_test.go | 2 +- 13 files changed, 16 insertions(+), 16 deletions(-) diff --git a/client/pkg/transport/listener.go b/client/pkg/transport/listener.go index 9c2d29ba998e..659bb7adb17e 100644 --- a/client/pkg/transport/listener.go +++ b/client/pkg/transport/listener.go @@ -39,7 +39,7 @@ import ( "go.etcd.io/etcd/client/pkg/v3/verify" ) -// NewListener creates a new listner. +// NewListener creates a new listener. func NewListener(addr, scheme string, tlsinfo *TLSInfo) (l net.Listener, err error) { return newListener(addr, scheme, WithTLSInfo(tlsinfo)) } diff --git a/client/pkg/transport/listener_opts.go b/client/pkg/transport/listener_opts.go index 7536f6aff462..cec7484e72de 100644 --- a/client/pkg/transport/listener_opts.go +++ b/client/pkg/transport/listener_opts.go @@ -53,7 +53,7 @@ func (lo *ListenerOptions) IsSocketOpts() bool { return lo.socketOpts.ReusePort || lo.socketOpts.ReuseAddress } -// IsTLS returns true if listner options includes TLSInfo. +// IsTLS returns true if listener options includes TLSInfo. func (lo *ListenerOptions) IsTLS() bool { if lo.tlsInfo == nil { return false diff --git a/scripts/fix/shell_ws.sh b/scripts/fix/shell_ws.sh index ad3c376714ea..b165bf6a73cf 100755 --- a/scripts/fix/shell_ws.sh +++ b/scripts/fix/shell_ws.sh @@ -23,7 +23,7 @@ function main { local TAB=$'\t' log_callout "Fixing whitespaces in bash scripts" - # Makes sure all bash scripts do use ' ' (double space) for indention. + # Makes sure all bash scripts do use ' ' (double space) for indentation. run find "${ETCD_ROOT_DIR}" -name '*.sh' -exec sed -i.bak "s|${TAB}| |g" {} \; run find "${ETCD_ROOT_DIR}" -name '*.sh.bak' -delete } diff --git a/scripts/test.sh b/scripts/test.sh index a21d2ee95908..d114d2aad1e7 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -398,10 +398,10 @@ function shellcheck_pass { } function shellws_pass { - log_callout "Ensuring no tab-based indention in shell scripts" + log_callout "Ensuring no tab-based indentation in shell scripts" local files if files=$(find . -name '*.sh' -print0 | xargs -0 grep -E -n $'^\s*\t'); then - log_error "FAIL: found tab-based indention in the following bash scripts. Use ' ' (double space):" + log_error "FAIL: found tab-based indentation in the following bash scripts. Use ' ' (double space):" log_error "${files}" log_warning "Suggestion: run \"make fix\" to address the issue." return 255 diff --git a/server/etcdserver/api/membership/cluster_test.go b/server/etcdserver/api/membership/cluster_test.go index e602eeb27986..b5bfc3090d4a 100644 --- a/server/etcdserver/api/membership/cluster_test.go +++ b/server/etcdserver/api/membership/cluster_test.go @@ -267,7 +267,7 @@ func TestClusterValidateAndAssignIDs(t *testing.T) { lcl := newTestCluster(t, tt.clmembs) ecl := newTestCluster(t, tt.membs) if err := ValidateClusterAndAssignIDs(zaptest.NewLogger(t), lcl, ecl); err != nil { - t.Errorf("#%d: unexpect update error: %v", i, err) + t.Errorf("#%d: unexpected update error: %v", i, err) } if !reflect.DeepEqual(lcl.MemberIDs(), tt.wids) { t.Errorf("#%d: ids = %v, want %v", i, lcl.MemberIDs(), tt.wids) diff --git a/server/etcdserver/api/v2store/event_test.go b/server/etcdserver/api/v2store/event_test.go index 11553e035a07..e390778eb9c3 100644 --- a/server/etcdserver/api/v2store/event_test.go +++ b/server/etcdserver/api/v2store/event_test.go @@ -85,7 +85,7 @@ func TestScanHistory(t *testing.T) { e, _ = eh.scan("/foo/bar", true, 7) if e != nil { - t.Fatalf("bad index shoud reuturn nil") + t.Fatalf("bad index should reuturn nil") } } diff --git a/server/etcdserver/api/v3compactor/revision.go b/server/etcdserver/api/v3compactor/revision.go index 41748616903d..2fc006161a76 100644 --- a/server/etcdserver/api/v3compactor/revision.go +++ b/server/etcdserver/api/v3compactor/revision.go @@ -28,7 +28,7 @@ import ( ) // Revision compacts the log by purging revisions older than -// the configured reivison number. Compaction happens every 5 minutes. +// the configured revision number. Compaction happens every 5 minutes. type Revision struct { lg *zap.Logger diff --git a/server/etcdserver/raft_test.go b/server/etcdserver/raft_test.go index e604a88a02f4..1b76c12e8e9f 100644 --- a/server/etcdserver/raft_test.go +++ b/server/etcdserver/raft_test.go @@ -251,7 +251,7 @@ func TestConfigChangeBlocksApply(t *testing.T) { select { case <-ap.raftAdvancedC: - t.Log("recevied raft advance notification") + t.Log("received raft advance notification") } select { diff --git a/server/storage/mvcc/kv_test.go b/server/storage/mvcc/kv_test.go index 5eb75c0be4f9..8bfe81820bfe 100644 --- a/server/storage/mvcc/kv_test.go +++ b/server/storage/mvcc/kv_test.go @@ -594,11 +594,11 @@ func TestKVCompactReserveLastValue(t *testing.T) { for i, tt := range tests { _, err := s.Compact(traceutil.TODO(), tt.rev) if err != nil { - t.Errorf("#%d: unexpect compact error %v", i, err) + t.Errorf("#%d: unexpected compact error %v", i, err) } r, err := s.Range(t.Context(), []byte("foo"), nil, RangeOptions{Rev: tt.rev + 1}) if err != nil { - t.Errorf("#%d: unexpect range error %v", i, err) + t.Errorf("#%d: unexpected range error %v", i, err) } if !cmp.Equal(r.KVs, tt.wkvs, protocmp.Transform()) { t.Errorf("#%d: kvs = %+v, want %+v", i, r.KVs, tt.wkvs) @@ -762,7 +762,7 @@ func TestKVSnapshot(t *testing.T) { defer ns.Close() r, err := ns.Range(t.Context(), []byte("a"), []byte("z"), RangeOptions{}) if err != nil { - t.Errorf("unexpect range error (%v)", err) + t.Errorf("unexpected range error (%v)", err) } if !cmp.Equal(r.KVs, wkvs, protocmp.Transform()) { t.Errorf("kvs = %+v, want %+v", r.KVs, wkvs) diff --git a/server/storage/mvcc/kvstore_compaction_test.go b/server/storage/mvcc/kvstore_compaction_test.go index 0b28c931ca7c..d61a1def75e8 100644 --- a/server/storage/mvcc/kvstore_compaction_test.go +++ b/server/storage/mvcc/kvstore_compaction_test.go @@ -140,7 +140,7 @@ func TestCompactAllAndRestore(t *testing.T) { } _, err = s1.Range(t.Context(), []byte("foo"), nil, RangeOptions{}) if err != nil { - t.Errorf("unexpect range error %v", err) + t.Errorf("unexpected range error %v", err) } err = s1.Close() if err != nil { diff --git a/server/storage/mvcc/watchable_store_test.go b/server/storage/mvcc/watchable_store_test.go index 0c0216490fe2..70cd3d7b7523 100644 --- a/server/storage/mvcc/watchable_store_test.go +++ b/server/storage/mvcc/watchable_store_test.go @@ -72,7 +72,7 @@ func TestNewWatcherCancel(t *testing.T) { } if s.(*watchableStore).synced.contains(string(testKey)) { - // the key shoud have been deleted + // the key should have been deleted t.Errorf("existence = true, want false") } } diff --git a/tests/integration/member_test.go b/tests/integration/member_test.go index 57a114989ed6..1616df299885 100644 --- a/tests/integration/member_test.go +++ b/tests/integration/member_test.go @@ -73,7 +73,7 @@ func TestLaunchDuplicateMemberShouldFail(t *testing.T) { defer c.Terminate(t) if err := m.Launch(); err == nil { - t.Errorf("unexpect successful launch") + t.Errorf("unexpected successful launch") } else { t.Logf("launch failed as expected: %v", err) assert.Contains(t, err.Error(), "has already been bootstrapped") diff --git a/tests/integration/v3_lease_test.go b/tests/integration/v3_lease_test.go index ade65c891870..3b8989248884 100644 --- a/tests/integration/v3_lease_test.go +++ b/tests/integration/v3_lease_test.go @@ -848,7 +848,7 @@ func TestV3LeaseSwitch(t *testing.T) { rresp, err := integration.ToGRPC(clus.RandClient()).KV.Range(t.Context(), rreq) require.NoError(t, err) if len(rresp.Kvs) != 1 { - t.Fatalf("unexpect removal of key") + t.Fatalf("unexpected removal of key") } // revoke lease2 should remove key From 5db313ed8e87240a07b4cb26fbc66997a38ecf7f Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 25 May 2026 19:24:07 +0200 Subject: [PATCH 1008/1068] server/storage: migrate storage and WAL APIs to pointerized raftpb types Signed-off-by: Marek Siarkowicz --- go.mod | 2 +- server/storage/backend.go | 4 +- server/storage/storage.go | 16 ++-- server/storage/util.go | 10 +-- server/storage/wal/decoder.go | 8 +- server/storage/wal/repair_test.go | 14 ++-- server/storage/wal/testing/waltesting.go | 6 +- server/storage/wal/version.go | 8 +- server/storage/wal/version_test.go | 2 +- server/storage/wal/wal.go | 56 ++++++++------ server/storage/wal/wal_test.go | 95 ++++++++++++++---------- 11 files changed, 125 insertions(+), 96 deletions(-) diff --git a/go.mod b/go.mod index 70b4a9869061..a78ebc603693 100644 --- a/go.mod +++ b/go.mod @@ -22,6 +22,7 @@ require ( github.com/coreos/go-semver v0.3.1 github.com/dustin/go-humanize v1.0.1 github.com/golang/protobuf v1.5.4 + github.com/google/go-cmp v0.7.0 github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.5.0-beta.0 @@ -55,7 +56,6 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.3.1 // indirect - github.com/google/go-cmp v0.7.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect diff --git a/server/storage/backend.go b/server/storage/backend.go index 7db61f9fae56..547fd905baa7 100644 --- a/server/storage/backend.go +++ b/server/storage/backend.go @@ -56,7 +56,7 @@ func newBackend(cfg config.ServerConfig, hooks backend.Hooks) backend.Backend { } // OpenSnapshotBackend renames a snapshot db to the current etcd db and opens it. -func OpenSnapshotBackend(cfg config.ServerConfig, ss *snap.Snapshotter, snapshot raftpb.Snapshot, hooks *BackendHooks) (backend.Backend, error) { +func OpenSnapshotBackend(cfg config.ServerConfig, ss *snap.Snapshotter, snapshot *raftpb.Snapshot, hooks *BackendHooks) (backend.Backend, error) { snapPath, err := ss.DBFilePath(snapshot.Metadata.Index) if err != nil { return nil, fmt.Errorf("failed to find database snapshot file (%w)", err) @@ -99,7 +99,7 @@ func OpenBackend(cfg config.ServerConfig, hooks backend.Hooks) backend.Backend { // before updating the backend db after persisting raft snapshot to disk, // violating the invariant snapshot.Metadata.Index < db.consistentIndex. In this // case, replace the db with the snapshot db sent by the leader. -func RecoverSnapshotBackend(cfg config.ServerConfig, oldbe backend.Backend, snapshot raftpb.Snapshot, beExist bool, hooks *BackendHooks) (backend.Backend, error) { +func RecoverSnapshotBackend(cfg config.ServerConfig, oldbe backend.Backend, snapshot *raftpb.Snapshot, beExist bool, hooks *BackendHooks) (backend.Backend, error) { consistentIndex := uint64(0) if beExist { consistentIndex, _ = schema.ReadConsistentIndex(oldbe.ReadTx()) diff --git a/server/storage/storage.go b/server/storage/storage.go index 3270c8efee11..8602a5b96b37 100644 --- a/server/storage/storage.go +++ b/server/storage/storage.go @@ -30,13 +30,13 @@ import ( type Storage interface { // Save function saves ents and state to the underlying stable storage. // Save MUST block until st and ents are on stable storage. - Save(st raftpb.HardState, ents []raftpb.Entry) error + Save(st *raftpb.HardState, ents []*raftpb.Entry) error // SaveSnap function saves snapshot to the underlying stable storage. - SaveSnap(snap raftpb.Snapshot) error + SaveSnap(snap *raftpb.Snapshot) error // Close closes the Storage and performs finalization. Close() error // Release releases the locked wal files older than the provided snapshot. - Release(snap raftpb.Snapshot) error + Release(snap *raftpb.Snapshot) error // Sync WAL Sync() error // MinimalEtcdVersion returns minimal etcd storage able to interpret WAL log. @@ -57,7 +57,7 @@ func NewStorage(lg *zap.Logger, w *wal.WAL, s *snap.Snapshotter) Storage { } // SaveSnap saves the snapshot file to disk and writes the WAL snapshot entry. -func (st *storage) SaveSnap(snap raftpb.Snapshot) error { +func (st *storage) SaveSnap(snap *raftpb.Snapshot) error { st.mux.RLock() defer st.mux.RUnlock() walsnap := walpb.Snapshot{ @@ -68,7 +68,7 @@ func (st *storage) SaveSnap(snap raftpb.Snapshot) error { // save the snapshot file before writing the snapshot to the wal. // This makes it possible for the snapshot file to become orphaned, but prevents // a WAL snapshot entry from having no corresponding snapshot file. - err := st.s.SaveSnap(snap) + err := st.s.SaveSnap(*snap) if err != nil { return err } @@ -80,16 +80,16 @@ func (st *storage) SaveSnap(snap raftpb.Snapshot) error { // Release releases resources older than the given snap and are no longer needed: // - releases the locks to the wal files that are older than the provided wal for the given snap. // - deletes any .snap.db files that are older than the given snap. -func (st *storage) Release(snap raftpb.Snapshot) error { +func (st *storage) Release(snap *raftpb.Snapshot) error { st.mux.RLock() defer st.mux.RUnlock() if err := st.w.ReleaseLockTo(snap.Metadata.Index); err != nil { return err } - return st.s.ReleaseSnapDBs(snap) + return st.s.ReleaseSnapDBs(*snap) } -func (st *storage) Save(s raftpb.HardState, ents []raftpb.Entry) error { +func (st *storage) Save(s *raftpb.HardState, ents []*raftpb.Entry) error { st.mux.RLock() defer st.mux.RUnlock() return st.w.Save(s, ents) diff --git a/server/storage/util.go b/server/storage/util.go index 62a201593093..ca1c2997f626 100644 --- a/server/storage/util.go +++ b/server/storage/util.go @@ -31,7 +31,7 @@ import ( // `self` is _not_ removed, even if present in the set. // If `self` is not inside the given ids, it creates a Raft entry to add a // default member with the given `self`. -func CreateConfigChangeEnts(lg *zap.Logger, ids []uint64, self uint64, term, index uint64) []raftpb.Entry { +func CreateConfigChangeEnts(lg *zap.Logger, ids []uint64, self uint64, term, index uint64) []*raftpb.Entry { found := false for _, id := range ids { if id == self { @@ -39,7 +39,7 @@ func CreateConfigChangeEnts(lg *zap.Logger, ids []uint64, self uint64, term, ind } } - var ents []raftpb.Entry + var ents []*raftpb.Entry next := index + 1 // NB: always add self first, then remove other nodes. Raft will panic if the @@ -58,7 +58,7 @@ func CreateConfigChangeEnts(lg *zap.Logger, ids []uint64, self uint64, term, ind NodeID: self, Context: ctx, } - e := raftpb.Entry{ + e := &raftpb.Entry{ Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(cc), Term: term, @@ -76,7 +76,7 @@ func CreateConfigChangeEnts(lg *zap.Logger, ids []uint64, self uint64, term, ind Type: raftpb.ConfChangeRemoveNode, NodeID: id, } - e := raftpb.Entry{ + e := &raftpb.Entry{ Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(cc), Term: term, @@ -95,7 +95,7 @@ func CreateConfigChangeEnts(lg *zap.Logger, ids []uint64, self uint64, term, ind // - ConfChangeAddNode, in which case the contained ID will Be added into the set. // - ConfChangeRemoveNode, in which case the contained ID will Be removed from the set. // - ConfChangeAddLearnerNode, in which the contained ID will Be added into the set. -func GetEffectiveNodeIDsFromWALEntries(lg *zap.Logger, snap *raftpb.Snapshot, ents []raftpb.Entry) []uint64 { +func GetEffectiveNodeIDsFromWALEntries(lg *zap.Logger, snap *raftpb.Snapshot, ents []*raftpb.Entry) []uint64 { ids := make(map[uint64]bool) if snap != nil { for _, id := range snap.Metadata.ConfState.Voters { diff --git a/server/storage/wal/decoder.go b/server/storage/wal/decoder.go index 2f6c32a0f930..94718e80a365 100644 --- a/server/storage/wal/decoder.go +++ b/server/storage/wal/decoder.go @@ -212,16 +212,16 @@ func (d *decoder) LastCRC() uint32 { func (d *decoder) LastOffset() int64 { return d.lastValidOff } -func MustUnmarshalEntry(d []byte) raftpb.Entry { +func MustUnmarshalEntry(d []byte) *raftpb.Entry { var e raftpb.Entry pbutil.MustUnmarshal(&e, d) - return e + return &e } -func MustUnmarshalState(d []byte) raftpb.HardState { +func MustUnmarshalState(d []byte) *raftpb.HardState { var s raftpb.HardState pbutil.MustUnmarshal(&s, d) - return s + return &s } func readInt64(r io.Reader) (int64, error) { diff --git a/server/storage/wal/repair_test.go b/server/storage/wal/repair_test.go index 00c0679c1a59..634b83b6b019 100644 --- a/server/storage/wal/repair_test.go +++ b/server/storage/wal/repair_test.go @@ -46,7 +46,7 @@ func TestRepairTruncate(t *testing.T) { testRepair(t, makeEnts(10), corruptf, 9) } -func testRepair(t *testing.T, ents [][]raftpb.Entry, corrupt corruptFunc, expectedEnts int) { +func testRepair(t *testing.T, ents [][]*raftpb.Entry, corrupt corruptFunc, expectedEnts int) { lg := zaptest.NewLogger(t) p := t.TempDir() @@ -59,7 +59,7 @@ func testRepair(t *testing.T, ents [][]raftpb.Entry, corrupt corruptFunc, expect require.NoError(t, err) for _, es := range ents { - require.NoError(t, w.Save(raftpb.HardState{}, es)) + require.NoError(t, w.Save(&raftpb.HardState{}, es)) } offset, err := w.tail().Seek(0, io.SeekCurrent) @@ -97,8 +97,8 @@ func testRepair(t *testing.T, ents [][]raftpb.Entry, corrupt corruptFunc, expect // write some more entries to repaired log for i := 1; i <= 10; i++ { - es := []raftpb.Entry{{Index: uint64(expectedEnts + i)}} - require.NoError(t, w.Save(raftpb.HardState{}, es)) + es := []*raftpb.Entry{{Index: uint64(expectedEnts + i)}} + require.NoError(t, w.Save(&raftpb.HardState{}, es)) } require.NoError(t, w.Close()) @@ -110,9 +110,9 @@ func testRepair(t *testing.T, ents [][]raftpb.Entry, corrupt corruptFunc, expect assert.Len(t, walEnts, expectedEnts+10) } -func makeEnts(ents int) (ret [][]raftpb.Entry) { +func makeEnts(ents int) (ret [][]*raftpb.Entry) { for i := 1; i <= ents; i++ { - ret = append(ret, []raftpb.Entry{{Index: uint64(i)}}) + ret = append(ret, []*raftpb.Entry{{Index: uint64(i)}}) } return ret } @@ -177,7 +177,7 @@ func TestRepairFailDeleteDir(t *testing.T) { SegmentSizeBytes = oldSegmentSizeBytes }() for _, es := range makeEnts(50) { - if err = w.Save(raftpb.HardState{}, es); err != nil { + if err = w.Save(&raftpb.HardState{}, es); err != nil { t.Fatal(err) } } diff --git a/server/storage/wal/testing/waltesting.go b/server/storage/wal/testing/waltesting.go index fb02447bf6c5..e31f67f61f49 100644 --- a/server/storage/wal/testing/waltesting.go +++ b/server/storage/wal/testing/waltesting.go @@ -50,14 +50,14 @@ func NewTmpWAL(tb testing.TB, reqs []*etcdserverpb.InternalRaftRequest) (*wal.WA tb.Fatalf("Failed to open WAL: %v", err) } - var state raftpb.HardState + var state *raftpb.HardState _, state, _, err = w.ReadAll() if err != nil { tb.Fatalf("Failed to read WAL: %v", err) } - var entries []raftpb.Entry + var entries []*raftpb.Entry for _, req := range reqs { - entries = append(entries, raftpb.Entry{ + entries = append(entries, &raftpb.Entry{ Term: 1, Index: 1, Type: raftpb.EntryNormal, diff --git a/server/storage/wal/version.go b/server/storage/wal/version.go index 9bc6ad5cfec4..20f272fb7abb 100644 --- a/server/storage/wal/version.go +++ b/server/storage/wal/version.go @@ -46,7 +46,7 @@ func ReadWALVersion(w *WAL) (Version, error) { } type walVersion struct { - entries []raftpb.Entry + entries []*raftpb.Entry } // MinimalEtcdVersion returns minimal etcd able to interpret entries from WAL log, @@ -57,7 +57,7 @@ func (w *walVersion) MinimalEtcdVersion() *semver.Version { // MinimalEtcdVersion returns minimal etcd able to interpret entries from WAL log, // determined by looking at entries since the last snapshot and returning the highest // etcd version annotation from used messages, fields, enums and their values. -func MinimalEtcdVersion(ents []raftpb.Entry) *semver.Version { +func MinimalEtcdVersion(ents []*raftpb.Entry) *semver.Version { var maxVer *semver.Version for _, ent := range ents { err := visitEntry(ent, func(path protoreflect.FullName, ver *semver.Version) error { @@ -94,8 +94,8 @@ func VisitFileDescriptor(file protoreflect.FileDescriptor, visitor Visitor) erro return nil } -func visitEntry(ent raftpb.Entry, visitor Visitor) error { - err := visitMessage(proto.MessageReflect(&ent), visitor) +func visitEntry(ent *raftpb.Entry, visitor Visitor) error { + err := visitMessage(proto.MessageReflect(ent), visitor) if err != nil { return err } diff --git a/server/storage/wal/version_test.go b/server/storage/wal/version_test.go index bacc25ca31c9..73b2dca7357b 100644 --- a/server/storage/wal/version_test.go +++ b/server/storage/wal/version_test.go @@ -106,7 +106,7 @@ func TestEtcdVersionFromEntry(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { var maxVer *semver.Version - err := visitEntry(tc.input, func(path protoreflect.FullName, ver *semver.Version) error { + err := visitEntry(&tc.input, func(path protoreflect.FullName, ver *semver.Version) error { maxVer = maxVersion(maxVer, ver) return nil }) diff --git a/server/storage/wal/wal.go b/server/storage/wal/wal.go index a4cd53db0b8e..d39ffad06d07 100644 --- a/server/storage/wal/wal.go +++ b/server/storage/wal/wal.go @@ -77,8 +77,8 @@ type WAL struct { // dirFile is a fd for the wal directory for syncing on Rename dirFile *os.File - metadata []byte // metadata recorded at the head of each WAL - state raftpb.HardState // hardstate recorded at the head of WAL + metadata []byte // metadata recorded at the head of each WAL + state *raftpb.HardState // hardstate recorded at the head of WAL start *walpb.Snapshot // snapshot to start reading decoder Decoder // decoder to Decode records @@ -468,7 +468,8 @@ func openWALFiles(lg *zap.Logger, dirpath string, names []string, nameIndex int, // // ReadAll may return uncommitted yet entries, that are subject to be overridden. // Do not apply entries that have index > state.commit, as they are subject to change. -func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb.Entry, err error) { +func (w *WAL) ReadAll() (metadata []byte, state *raftpb.HardState, ents []*raftpb.Entry, err error) { + state = &raftpb.HardState{} w.mu.Lock() defer w.mu.Unlock() @@ -505,7 +506,7 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb. case MetadataType: if metadata != nil && !bytes.Equal(metadata, rec.Data) { - state.Reset() + state = &raftpb.HardState{} return nil, state, nil, ErrMetadataConflict } metadata = rec.Data @@ -515,7 +516,7 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb. // current crc of decoder must match the crc of the record. // do no need to match 0 crc, since the decoder is a new one at this case. if crc != 0 && rec.Validate(crc) != nil { - state.Reset() + state = &raftpb.HardState{} return nil, state, nil, ErrCRCMismatch } decoder.UpdateCRC(rec.GetCrc()) @@ -525,14 +526,14 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb. pbutil.MustUnmarshalMessage(&snap, rec.Data) if snap.GetIndex() == w.start.GetIndex() { if snap.GetTerm() != w.start.GetTerm() { - state.Reset() + state = &raftpb.HardState{} return nil, state, nil, ErrSnapshotMismatch } match = true } default: - state.Reset() + state = &raftpb.HardState{} return nil, state, nil, fmt.Errorf("unexpected block type %d", rec.Type) } } @@ -543,13 +544,13 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb. // The last record maybe a partial written one, so // `io.ErrUnexpectedEOF` might be returned. if !errors.Is(err, io.EOF) && !errors.Is(err, io.ErrUnexpectedEOF) { - state.Reset() + state = &raftpb.HardState{} return nil, state, nil, err } default: // We must read all the entries if WAL is opened in write mode. if !errors.Is(err, io.EOF) { - state.Reset() + state = &raftpb.HardState{} return nil, state, nil, err } // decodeRecord() will return io.EOF if it detects a zero record, @@ -596,7 +597,7 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb. // Snapshot entries are valid if their index is less than or equal to the most recent committed hardstate. func ValidSnapshotEntries(lg *zap.Logger, walDir string) ([]*walpb.Snapshot, error) { var snaps []*walpb.Snapshot - var state raftpb.HardState + state := &raftpb.HardState{} var err error rec := &walpb.Record{} @@ -667,7 +668,7 @@ func Verify(lg *zap.Logger, walDir string, snap *walpb.Snapshot) (*raftpb.HardSt var metadata []byte var err error var match bool - var state raftpb.HardState + state := &raftpb.HardState{} rec := &walpb.Record{} @@ -722,7 +723,7 @@ func Verify(lg *zap.Logger, walDir string, snap *walpb.Snapshot) (*raftpb.HardSt // are not necessary for validating the WAL contents case EntryType: case StateType: - pbutil.MustUnmarshal(&state, rec.Data) + pbutil.MustUnmarshal(state, rec.Data) default: return nil, fmt.Errorf("unexpected block type %d", rec.Type) } @@ -738,7 +739,7 @@ func Verify(lg *zap.Logger, walDir string, snap *walpb.Snapshot) (*raftpb.HardSt return nil, ErrSnapshotNotFound } - return &state, nil + return state, nil } // cut closes current file written and creates a new one ready to append. @@ -783,7 +784,7 @@ func (w *WAL) cut() error { return err } - if err = w.saveState(&w.state); err != nil { + if err = w.saveState(w.state); err != nil { return err } @@ -945,33 +946,46 @@ func (w *WAL) saveEntry(e *raftpb.Entry) error { } func (w *WAL) saveState(s *raftpb.HardState) error { - if raft.IsEmptyHardState(*s) { + if s == nil || raft.IsEmptyHardState(*s) { return nil } - w.state = *s + w.state = s b := pbutil.MustMarshal(s) rec := &walpb.Record{Type: new(StateType), Data: b} return w.encoder.encode(rec) } -func (w *WAL) Save(st raftpb.HardState, ents []raftpb.Entry) error { +func (w *WAL) Save(st *raftpb.HardState, ents []*raftpb.Entry) error { w.mu.Lock() defer w.mu.Unlock() // short cut, do not call sync - if raft.IsEmptyHardState(st) && len(ents) == 0 { + if (st == nil || raft.IsEmptyHardState(*st)) && len(ents) == 0 { return nil } - mustSync := raft.MustSync(st, w.state, len(ents)) + var mustSync bool + if st != nil { + var prevHardState raftpb.HardState + if w.state != nil { + prevHardState = *w.state + } + mustSync = raft.MustSync(*st, prevHardState, len(ents)) + } else { + var prevHardState raftpb.HardState + if w.state != nil { + prevHardState = *w.state + } + mustSync = raft.MustSync(raftpb.HardState{}, prevHardState, len(ents)) + } // TODO(xiangli): no more reference operator for i := range ents { - if err := w.saveEntry(&ents[i]); err != nil { + if err := w.saveEntry(ents[i]); err != nil { return err } } - if err := w.saveState(&st); err != nil { + if err := w.saveState(st); err != nil { return err } diff --git a/server/storage/wal/wal_test.go b/server/storage/wal/wal_test.go index ebda7a8713c6..23be07d10d9b 100644 --- a/server/storage/wal/wal_test.go +++ b/server/storage/wal/wal_test.go @@ -279,8 +279,8 @@ func TestVerify(t *testing.T) { // make 5 separate files for i := 0; i < 5; i++ { - es := []raftpb.Entry{{Index: uint64(i), Data: []byte(fmt.Sprintf("waldata%d", i+1))}} - if err = w.Save(raftpb.HardState{}, es); err != nil { + es := []*raftpb.Entry{{Index: uint64(i), Data: []byte(fmt.Sprintf("waldata%d", i+1))}} + if err = w.Save(&raftpb.HardState{}, es); err != nil { t.Fatal(err) } if err = w.cut(); err != nil { @@ -289,7 +289,7 @@ func TestVerify(t *testing.T) { } hs := raftpb.HardState{Term: 1, Vote: 3, Commit: 5} - require.NoError(t, w.Save(hs, nil)) + require.NoError(t, w.Save(&hs, nil)) // to verify the WAL is not corrupted at this point hardstate, err := Verify(lg, walDir, &walpb.Snapshot{}) @@ -327,7 +327,7 @@ func TestCut(t *testing.T) { defer w.Close() state := raftpb.HardState{Term: 1} - if err = w.Save(state, nil); err != nil { + if err = w.Save(&state, nil); err != nil { t.Fatal(err) } if err = w.cut(); err != nil { @@ -338,8 +338,8 @@ func TestCut(t *testing.T) { t.Errorf("name = %s, want %s", g, wname) } - es := []raftpb.Entry{{Index: 1, Term: 1, Data: []byte{1}}} - if err = w.Save(raftpb.HardState{}, es); err != nil { + es := []*raftpb.Entry{{Index: 1, Term: 1, Data: []byte{1}}} + if err = w.Save(&raftpb.HardState{}, es); err != nil { t.Fatal(err) } if err = w.cut(); err != nil { @@ -370,8 +370,8 @@ func TestCut(t *testing.T) { if err != nil { t.Fatal(err) } - if !reflect.DeepEqual(gst, state) { - t.Errorf("state = %+v, want %+v", gst, state) + if !reflect.DeepEqual(*gst, state) { + t.Errorf("state = %+v, want %+v", *gst, state) } } @@ -384,7 +384,7 @@ func TestSaveWithCut(t *testing.T) { } state := raftpb.HardState{Term: 1} - if err = w.Save(state, nil); err != nil { + if err = w.Save(&state, nil); err != nil { t.Fatal(err) } bigData := make([]byte, 500) @@ -397,8 +397,8 @@ func TestSaveWithCut(t *testing.T) { defer func() { SegmentSizeBytes = restoreLater }() index := uint64(0) for totalSize := 0; totalSize < int(SegmentSizeBytes); totalSize += EntrySize { - ents := []raftpb.Entry{{Index: index, Term: 1, Data: bigData}} - if err = w.Save(state, ents); err != nil { + ents := []*raftpb.Entry{{Index: index, Term: 1, Data: bigData}} + if err = w.Save(&state, ents); err != nil { t.Fatal(err) } index++ @@ -419,7 +419,7 @@ func TestSaveWithCut(t *testing.T) { t.Fatal(err) } - if !reflect.DeepEqual(newhardstate, state) { + if !reflect.DeepEqual(*newhardstate, state) { t.Errorf("Hard State = %+v, want %+v", newhardstate, state) } if len(entries) != int(SegmentSizeBytes/int64(EntrySize)) { @@ -470,13 +470,13 @@ func TestRecover(t *testing.T) { t.Errorf("Unexpected error: %v", err) } - ents := []raftpb.Entry{{Index: 1, Term: 1, Data: data}, {Index: 2, Term: 2, Data: data}} - if err = w.Save(raftpb.HardState{}, ents); err != nil { + ents := []*raftpb.Entry{{Index: 1, Term: 1, Data: data}, {Index: 2, Term: 2, Data: data}} + if err = w.Save(&raftpb.HardState{}, ents); err != nil { t.Fatal(err) } sts := []raftpb.HardState{{Term: 1, Vote: 1, Commit: 1}, {Term: 2, Vote: 2, Commit: 2}} for _, s := range sts { - if err = w.Save(s, nil); err != nil { + if err = w.Save(&s, nil); err != nil { t.Fatal(err) } } @@ -493,13 +493,28 @@ func TestRecover(t *testing.T) { if !bytes.Equal(metadata, []byte("metadata")) { t.Errorf("metadata = %s, want %s", metadata, "metadata") } - if !reflect.DeepEqual(entries, ents) { - t.Errorf("ents = %+v, want %+v", entries, ents) + if len(ents) != len(entries) { + t.Fatalf("length mismatch: expected %d, got %d", len(ents), len(entries)) + } + for i := range ents { + if !bytes.Equal(ents[i].Data, entries[i].Data) { + t.Fatalf("Data payload mismatch at index %d", i) + } + // Clone entries to avoid side-effects, then strip raw payload data before structural diff: + // TODO: use proto.Clone + entA := *ents[i] + entB := *entries[i] + entA.Data = nil + entB.Data = nil + if diff := cmp.Diff(&entA, &entB, protocmp.Transform()); diff != "" { + t.Fatalf("ents structural mismatch at index %d (-want +got):\n%s", i, diff) + } } // only the latest state is recorded s := sts[len(sts)-1] - if !reflect.DeepEqual(state, s) { - t.Errorf("state = %+v, want %+v", state, s) + // TODO: use proto.Equal + if !reflect.DeepEqual(*state, s) { + t.Errorf("state = %+v, want %+v", *state, s) } w.Close() }) @@ -584,8 +599,8 @@ func TestRecoverAfterCut(t *testing.T) { if err = md.SaveSnapshot(&walpb.Snapshot{Index: new(uint64(i)), Term: new(uint64(1)), ConfState: &confState}); err != nil { t.Fatal(err) } - es := []raftpb.Entry{{Index: uint64(i)}} - if err = md.Save(raftpb.HardState{}, es); err != nil { + es := []*raftpb.Entry{{Index: uint64(i)}} + if err = md.Save(&raftpb.HardState{}, es); err != nil { t.Fatal(err) } if err = md.cut(); err != nil { @@ -637,7 +652,7 @@ func TestOpenAtUncommittedIndex(t *testing.T) { if err = w.SaveSnapshot(&walpb.Snapshot{Index: new(uint64(0)), Term: new(uint64(0))}); err != nil { t.Fatal(err) } - if err = w.Save(raftpb.HardState{}, []raftpb.Entry{{Index: 0}}); err != nil { + if err = w.Save(&raftpb.HardState{}, []*raftpb.Entry{{Index: 0}}); err != nil { t.Fatal(err) } w.Close() @@ -667,8 +682,8 @@ func TestOpenForRead(t *testing.T) { defer w.Close() // make 10 separate files for i := 0; i < 10; i++ { - es := []raftpb.Entry{{Index: uint64(i)}} - if err = w.Save(raftpb.HardState{}, es); err != nil { + es := []*raftpb.Entry{{Index: uint64(i)}} + if err = w.Save(&raftpb.HardState{}, es); err != nil { t.Fatal(err) } if err = w.cut(); err != nil { @@ -705,8 +720,8 @@ func TestOpenWithMaxIndex(t *testing.T) { } }() - es := []raftpb.Entry{{Index: uint64(math.MaxInt64)}} - if err = w1.Save(raftpb.HardState{}, es); err != nil { + es := []*raftpb.Entry{{Index: uint64(math.MaxInt64)}} + if err = w1.Save(&raftpb.HardState{}, es); err != nil { t.Fatal(err) } w1.Close() @@ -757,8 +772,8 @@ func TestReleaseLockTo(t *testing.T) { // make 10 separate files for i := 0; i < 10; i++ { - es := []raftpb.Entry{{Index: uint64(i)}} - if err = w.Save(raftpb.HardState{}, es); err != nil { + es := []*raftpb.Entry{{Index: uint64(i)}} + if err = w.Save(&raftpb.HardState{}, es); err != nil { t.Fatal(err) } if err = w.cut(); err != nil { @@ -814,8 +829,8 @@ func TestTailWriteNoSlackSpace(t *testing.T) { } // write some entries for i := 1; i <= 5; i++ { - es := []raftpb.Entry{{Index: uint64(i), Term: 1, Data: []byte{byte(i)}}} - if err = w.Save(raftpb.HardState{Term: 1}, es); err != nil { + es := []*raftpb.Entry{{Index: uint64(i), Term: 1, Data: []byte{byte(i)}}} + if err = w.Save(&raftpb.HardState{Term: 1}, es); err != nil { t.Fatal(err) } } @@ -841,8 +856,8 @@ func TestTailWriteNoSlackSpace(t *testing.T) { require.Lenf(t, ents, 5, "got entries %+v, expected 5 entries", ents) // write more entries for i := 6; i <= 10; i++ { - es := []raftpb.Entry{{Index: uint64(i), Term: 1, Data: []byte{byte(i)}}} - if err = w.Save(raftpb.HardState{Term: 1}, es); err != nil { + es := []*raftpb.Entry{{Index: uint64(i), Term: 1, Data: []byte{byte(i)}}} + if err = w.Save(&raftpb.HardState{Term: 1}, es); err != nil { t.Fatal(err) } } @@ -916,8 +931,8 @@ func TestOpenOnTornWrite(t *testing.T) { // get offset of end of each saved entry offsets := make([]int64, maxEntries) for i := range offsets { - es := []raftpb.Entry{{Index: uint64(i)}} - if err = w.Save(raftpb.HardState{}, es); err != nil { + es := []*raftpb.Entry{{Index: uint64(i)}} + if err = w.Save(&raftpb.HardState{}, es); err != nil { t.Fatal(err) } if offsets[i], err = w.tail().Seek(0, io.SeekCurrent); err != nil { @@ -958,8 +973,8 @@ func TestOpenOnTornWrite(t *testing.T) { // write a few entries past the clobbered entry for i := 0; i < overwriteEntries; i++ { // Index is different from old, truncated entries - es := []raftpb.Entry{{Index: uint64(i + clobberIdx), Data: []byte("new")}} - if err = w.Save(raftpb.HardState{}, es); err != nil { + es := []*raftpb.Entry{{Index: uint64(i + clobberIdx), Data: []byte("new")}} + if err = w.Save(&raftpb.HardState{}, es); err != nil { t.Fatal(err) } } @@ -1041,7 +1056,7 @@ func TestValidSnapshotEntries(t *testing.T) { if err = w.SaveSnapshot(&snap1); err != nil { t.Fatal(err) } - if err = w.Save(state1, nil); err != nil { + if err = w.Save(&state1, nil); err != nil { t.Fatal(err) } if err = w.SaveSnapshot(&snap2); err != nil { @@ -1050,7 +1065,7 @@ func TestValidSnapshotEntries(t *testing.T) { if err = w.SaveSnapshot(&snap3); err != nil { t.Fatal(err) } - if err = w.Save(state2, nil); err != nil { + if err = w.Save(&state2, nil); err != nil { t.Fatal(err) } if err = w.SaveSnapshot(&snap4); err != nil { @@ -1093,7 +1108,7 @@ func TestValidSnapshotEntriesAfterPurgeWal(t *testing.T) { if err = w.SaveSnapshot(&snap1); err != nil { t.Fatal(err) } - if err = w.Save(state1, nil); err != nil { + if err = w.Save(&state1, nil); err != nil { t.Fatal(err) } if err = w.SaveSnapshot(&snap2); err != nil { @@ -1103,7 +1118,7 @@ func TestValidSnapshotEntriesAfterPurgeWal(t *testing.T) { t.Fatal(err) } for i := 0; i < 128; i++ { - if err = w.Save(state2, nil); err != nil { + if err = w.Save(&state2, nil); err != nil { t.Fatal(err) } } From 803e94557370e56fb22b252da09678c732028f44 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 May 2026 18:38:08 +0000 Subject: [PATCH 1009/1068] build(deps): bump github/codeql-action from 4.35.4 to 4.35.5 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.4 to 4.35.5. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/68bde559dea0fdcac2102bfdf6230c5f70eb485e...9e0d7b8d25671d64c341c19c0152d693099fb5ba) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.35.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index d8547c79a6da..27664183c94c 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4.35.4 + uses: github/codeql-action/init@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4.35.4 + uses: github/codeql-action/autobuild@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4.35.4 + uses: github/codeql-action/analyze@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 05d522c4226f..36586e33b134 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4.35.4 + uses: github/codeql-action/upload-sarif@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5 with: sarif_file: results.sarif From a466e29b7c317e16976d7f1a00e931d48744fc6d Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 25 May 2026 14:56:32 +0200 Subject: [PATCH 1010/1068] server/etcdserver: migrate membership and snapshotter APIs Signed-off-by: Marek Siarkowicz --- server/etcdserver/api/membership/cluster.go | 2 +- server/etcdserver/api/membership/cluster_test.go | 2 +- server/etcdserver/api/snap/message.go | 4 ++-- server/etcdserver/api/snap/snapshotter.go | 9 +++++---- server/etcdserver/api/snap/snapshotter_test.go | 2 +- server/mock/mockstorage/storage_recorder.go | 10 +++++----- 6 files changed, 15 insertions(+), 14 deletions(-) diff --git a/server/etcdserver/api/membership/cluster.go b/server/etcdserver/api/membership/cluster.go index 9a109b3cb8e9..cc36c347403a 100644 --- a/server/etcdserver/api/membership/cluster.go +++ b/server/etcdserver/api/membership/cluster.go @@ -303,7 +303,7 @@ func (c *RaftCluster) Recover(onSet func(*zap.Logger, *semver.Version)) { // ValidateConfigurationChange takes a proposed ConfChange and // ensures that it is still valid. -func (c *RaftCluster) ValidateConfigurationChange(cc raftpb.ConfChange, shouldApplyV3 ShouldApplyV3) error { +func (c *RaftCluster) ValidateConfigurationChange(cc *raftpb.ConfChange, shouldApplyV3 ShouldApplyV3) error { if !shouldApplyV3 { return nil } diff --git a/server/etcdserver/api/membership/cluster_test.go b/server/etcdserver/api/membership/cluster_test.go index b5bfc3090d4a..8900982af77e 100644 --- a/server/etcdserver/api/membership/cluster_test.go +++ b/server/etcdserver/api/membership/cluster_test.go @@ -455,7 +455,7 @@ func TestClusterValidateConfigurationChangeV3(t *testing.T) { }, } for i, tt := range tests { - err := cl.ValidateConfigurationChange(tt.cc, true) + err := cl.ValidateConfigurationChange(&tt.cc, true) if !errors.Is(err, tt.werr) { t.Errorf("#%d: validateConfigurationChange error = %v, want %v", i, err, tt.werr) } diff --git a/server/etcdserver/api/snap/message.go b/server/etcdserver/api/snap/message.go index 2b4090c981d1..a346ffe3a395 100644 --- a/server/etcdserver/api/snap/message.go +++ b/server/etcdserver/api/snap/message.go @@ -30,13 +30,13 @@ import ( // // User of Message should close the Message after sending it. type Message struct { - raftpb.Message + *raftpb.Message ReadCloser io.ReadCloser TotalSize int64 closeC chan bool } -func NewMessage(rs raftpb.Message, rc io.ReadCloser, rcSize int64) *Message { +func NewMessage(rs *raftpb.Message, rc io.ReadCloser, rcSize int64) *Message { return &Message{ Message: rs, ReadCloser: ioutil.NewExactReadCloser(rc, rcSize), diff --git a/server/etcdserver/api/snap/snapshotter.go b/server/etcdserver/api/snap/snapshotter.go index 6ac5b2ff5170..40e0aad6cdbe 100644 --- a/server/etcdserver/api/snap/snapshotter.go +++ b/server/etcdserver/api/snap/snapshotter.go @@ -66,11 +66,12 @@ func New(lg *zap.Logger, dir string) *Snapshotter { } } -func (s *Snapshotter) SaveSnap(snapshot raftpb.Snapshot) error { - if raft.IsEmptySnap(snapshot) { +// TODO: change signature of IsEmptySnap to accept a pointer +func (s *Snapshotter) SaveSnap(snapshot *raftpb.Snapshot) error { + if raft.IsEmptySnap(*snapshot) { return nil } - return s.save(&snapshot) + return s.save(snapshot) } func (s *Snapshotter) save(snapshot *raftpb.Snapshot) error { @@ -253,7 +254,7 @@ func (s *Snapshotter) cleanupSnapdir(filenames []string) (names []string, err er return names, nil } -func (s *Snapshotter) ReleaseSnapDBs(snap raftpb.Snapshot) error { +func (s *Snapshotter) ReleaseSnapDBs(snap *raftpb.Snapshot) error { dir, err := os.Open(s.dir) if err != nil { return err diff --git a/server/etcdserver/api/snap/snapshotter_test.go b/server/etcdserver/api/snap/snapshotter_test.go index 8f1734832386..04a673b66ea3 100644 --- a/server/etcdserver/api/snap/snapshotter_test.go +++ b/server/etcdserver/api/snap/snapshotter_test.go @@ -286,7 +286,7 @@ func TestReleaseSnapDBs(t *testing.T) { ss := New(zaptest.NewLogger(t), dir) - if err := ss.ReleaseSnapDBs(raftpb.Snapshot{Metadata: raftpb.SnapshotMetadata{Index: 300}}); err != nil { + if err := ss.ReleaseSnapDBs(&raftpb.Snapshot{Metadata: raftpb.SnapshotMetadata{Index: 300}}); err != nil { t.Fatal(err) } diff --git a/server/mock/mockstorage/storage_recorder.go b/server/mock/mockstorage/storage_recorder.go index 7867bee494f0..75a17af1197e 100644 --- a/server/mock/mockstorage/storage_recorder.go +++ b/server/mock/mockstorage/storage_recorder.go @@ -35,20 +35,20 @@ func NewStorageRecorderStream(db string) *StorageRecorder { return &StorageRecorder{testutil.NewRecorderStream(), db} } -func (p *StorageRecorder) Save(st raftpb.HardState, ents []raftpb.Entry) error { +func (p *StorageRecorder) Save(st *raftpb.HardState, ents []*raftpb.Entry) error { p.Record(testutil.Action{Name: "Save"}) return nil } -func (p *StorageRecorder) SaveSnap(st raftpb.Snapshot) error { - if !raft.IsEmptySnap(st) { +func (p *StorageRecorder) SaveSnap(st *raftpb.Snapshot) error { + if !raft.IsEmptySnap(*st) { p.Record(testutil.Action{Name: "SaveSnap"}) } return nil } -func (p *StorageRecorder) Release(st raftpb.Snapshot) error { - if !raft.IsEmptySnap(st) { +func (p *StorageRecorder) Release(st *raftpb.Snapshot) error { + if !raft.IsEmptySnap(*st) { p.Record(testutil.Action{Name: "Release"}) } return nil From 8284f5a6ae3c8e32919e2670c1bec924daca1dd5 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 22 May 2026 11:57:18 -0700 Subject: [PATCH 1011/1068] Use new module function in update_dep.sh Signed-off-by: Ivan Valdes --- scripts/update_dep.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/update_dep.sh b/scripts/update_dep.sh index 3d847017ae57..c0ea4d1503ed 100755 --- a/scripts/update_dep.sh +++ b/scripts/update_dep.sh @@ -85,7 +85,7 @@ if is_fully_indirect; then fi log_info "Updating '${mod}' to ${ver:-latest} across all modules..." -run_for_modules update_module +run_for_workspace_modules update_module make fix-mod-tidy fix-bom update-go-workspace verify-dep From c068e4bb795247e35109f4e3f3473513bc19dfe9 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 25 May 2026 19:24:12 +0200 Subject: [PATCH 1012/1068] server/rafthttp: migrate transport APIs and clean up test helpers Signed-off-by: Marek Siarkowicz --- server/etcdserver/api/rafthttp/coder.go | 2 +- .../api/rafthttp/functional_test.go | 14 +++++------ server/etcdserver/api/rafthttp/http.go | 2 +- server/etcdserver/api/rafthttp/http_test.go | 4 ++-- server/etcdserver/api/rafthttp/msg_codec.go | 12 +++++----- .../etcdserver/api/rafthttp/msg_codec_test.go | 4 ++-- .../etcdserver/api/rafthttp/msgappv2_codec.go | 24 +++++++++---------- .../api/rafthttp/msgappv2_codec_test.go | 5 ++-- server/etcdserver/api/rafthttp/peer.go | 18 +++++++------- server/etcdserver/api/rafthttp/peer_test.go | 2 +- server/etcdserver/api/rafthttp/pipeline.go | 6 ++--- .../etcdserver/api/rafthttp/pipeline_test.go | 16 ++++++------- server/etcdserver/api/rafthttp/remote.go | 2 +- .../api/rafthttp/snapshot_sender.go | 2 +- .../etcdserver/api/rafthttp/snapshot_test.go | 2 +- server/etcdserver/api/rafthttp/stream.go | 18 +++++++------- server/etcdserver/api/rafthttp/stream_test.go | 20 ++++++++-------- server/etcdserver/api/rafthttp/transport.go | 6 ++--- .../api/rafthttp/transport_bench_test.go | 4 ++-- .../etcdserver/api/rafthttp/transport_test.go | 10 ++++---- 20 files changed, 87 insertions(+), 86 deletions(-) diff --git a/server/etcdserver/api/rafthttp/coder.go b/server/etcdserver/api/rafthttp/coder.go index 977442998966..b737b81d4ce1 100644 --- a/server/etcdserver/api/rafthttp/coder.go +++ b/server/etcdserver/api/rafthttp/coder.go @@ -23,5 +23,5 @@ type encoder interface { type decoder interface { // decode decodes the message from an input stream. - decode() (raftpb.Message, error) + decode() (*raftpb.Message, error) } diff --git a/server/etcdserver/api/rafthttp/functional_test.go b/server/etcdserver/api/rafthttp/functional_test.go index cf507d2773e9..8bbbf4ee80c6 100644 --- a/server/etcdserver/api/rafthttp/functional_test.go +++ b/server/etcdserver/api/rafthttp/functional_test.go @@ -43,7 +43,7 @@ func TestSendMessage(t *testing.T) { defer srv.Close() // member 2 - recvc := make(chan raftpb.Message, 1) + recvc := make(chan *raftpb.Message, 1) p := &fakeRaft{recvc: recvc} tr2 := &Transport{ ID: types.ID(2), @@ -65,7 +65,7 @@ func TestSendMessage(t *testing.T) { } data := []byte("some data") - tests := []raftpb.Message{ + tests := []*raftpb.Message{ // these messages are set to send to itself, which facilitates testing. {Type: raftpb.MsgProp, From: 1, To: 2, Entries: []raftpb.Entry{{Data: data}}}, {Type: raftpb.MsgApp, From: 1, To: 2, Term: 1, Index: 3, LogTerm: 0, Entries: []raftpb.Entry{{Index: 4, Term: 1, Data: data}}, Commit: 3}, @@ -77,7 +77,7 @@ func TestSendMessage(t *testing.T) { {Type: raftpb.MsgHeartbeatResp, From: 1, To: 2, Term: 1}, } for i, tt := range tests { - tr.Send([]raftpb.Message{tt}) + tr.Send([]*raftpb.Message{tt}) msg := <-recvc if !reflect.DeepEqual(msg, tt) { t.Errorf("#%d: msg = %+v, want %+v", i, msg, tt) @@ -101,7 +101,7 @@ func TestSendMessageWhenStreamIsBroken(t *testing.T) { defer srv.Close() // member 2 - recvc := make(chan raftpb.Message, 1) + recvc := make(chan *raftpb.Message, 1) p := &fakeRaft{recvc: recvc} tr2 := &Transport{ ID: types.ID(2), @@ -131,7 +131,7 @@ func TestSendMessageWhenStreamIsBroken(t *testing.T) { // TODO: remove this resend logic when we add retry logic into the code case <-time.After(time.Millisecond): n++ - tr.Send([]raftpb.Message{{Type: raftpb.MsgHeartbeat, From: 1, To: 2, Term: 1, Commit: 3}}) + tr.Send([]*raftpb.Message{{Type: raftpb.MsgHeartbeat, From: 1, To: 2, Term: 1, Commit: 3}}) case <-recvc: if n > 50 { t.Errorf("disconnection time = %dms, want < 50ms", n) @@ -160,12 +160,12 @@ func waitStreamWorking(p *peer) bool { } type fakeRaft struct { - recvc chan<- raftpb.Message + recvc chan<- *raftpb.Message err error removedID uint64 } -func (p *fakeRaft) Process(ctx context.Context, m raftpb.Message) error { +func (p *fakeRaft) Process(ctx context.Context, m *raftpb.Message) error { select { case p.recvc <- m: default: diff --git a/server/etcdserver/api/rafthttp/http.go b/server/etcdserver/api/rafthttp/http.go index 2610240e5ace..c171cb498acf 100644 --- a/server/etcdserver/api/rafthttp/http.go +++ b/server/etcdserver/api/rafthttp/http.go @@ -137,7 +137,7 @@ func (h *pipelineHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { receivedBytes.WithLabelValues(types.ID(m.From).String()).Add(float64(len(b))) - if err := h.r.Process(context.TODO(), m); err != nil { + if err := h.r.Process(context.TODO(), &m); err != nil { var writerErr writerToResponse switch { case errors.As(err, &writerErr): diff --git a/server/etcdserver/api/rafthttp/http_test.go b/server/etcdserver/api/rafthttp/http_test.go index fb3e1f66eb17..8f6d0ab428ca 100644 --- a/server/etcdserver/api/rafthttp/http_test.go +++ b/server/etcdserver/api/rafthttp/http_test.go @@ -357,7 +357,7 @@ type fakePeerGetter struct { func (pg *fakePeerGetter) Get(id types.ID) Peer { return pg.peers[id] } type fakePeer struct { - msgs []raftpb.Message + msgs []*raftpb.Message snapMsgs []snap.Message peerURLs types.URLs connc chan *outgoingConn @@ -372,7 +372,7 @@ func newFakePeer() *fakePeer { } } -func (pr *fakePeer) send(m raftpb.Message) { +func (pr *fakePeer) send(m *raftpb.Message) { if pr.paused { return } diff --git a/server/etcdserver/api/rafthttp/msg_codec.go b/server/etcdserver/api/rafthttp/msg_codec.go index 5444c01f8fdc..947589344104 100644 --- a/server/etcdserver/api/rafthttp/msg_codec.go +++ b/server/etcdserver/api/rafthttp/msg_codec.go @@ -47,22 +47,22 @@ var ( ErrExceedSizeLimit = errors.New("rafthttp: error limit exceeded") ) -func (dec *messageDecoder) decode() (raftpb.Message, error) { +func (dec *messageDecoder) decode() (*raftpb.Message, error) { return dec.decodeLimit(readBytesLimit) } -func (dec *messageDecoder) decodeLimit(numBytes uint64) (raftpb.Message, error) { +func (dec *messageDecoder) decodeLimit(numBytes uint64) (*raftpb.Message, error) { var m raftpb.Message var l uint64 if err := binary.Read(dec.r, binary.BigEndian, &l); err != nil { - return m, err + return nil, err } if l > numBytes { - return m, ErrExceedSizeLimit + return nil, ErrExceedSizeLimit } buf := make([]byte, int(l)) if _, err := io.ReadFull(dec.r, buf); err != nil { - return m, err + return nil, err } - return m, m.Unmarshal(buf) + return &m, m.Unmarshal(buf) } diff --git a/server/etcdserver/api/rafthttp/msg_codec_test.go b/server/etcdserver/api/rafthttp/msg_codec_test.go index cde7916fc1b6..497293183949 100644 --- a/server/etcdserver/api/rafthttp/msg_codec_test.go +++ b/server/etcdserver/api/rafthttp/msg_codec_test.go @@ -89,8 +89,8 @@ func TestMessage(t *testing.T) { continue } if err == nil { - if !reflect.DeepEqual(m, tt.msg) { - t.Errorf("#%d: message = %+v, want %+v", i, m, tt.msg) + if !reflect.DeepEqual(*m, tt.msg) { + t.Errorf("#%d: message = %+v, want %+v", i, *m, tt.msg) } } } diff --git a/server/etcdserver/api/rafthttp/msgappv2_codec.go b/server/etcdserver/api/rafthttp/msgappv2_codec.go index 59425aeea69d..ba6165e3e44c 100644 --- a/server/etcdserver/api/rafthttp/msgappv2_codec.go +++ b/server/etcdserver/api/rafthttp/msgappv2_codec.go @@ -171,18 +171,18 @@ func newMsgAppV2Decoder(r io.Reader, local, remote types.ID) *msgAppV2Decoder { } } -func (dec *msgAppV2Decoder) decode() (raftpb.Message, error) { +func (dec *msgAppV2Decoder) decode() (*raftpb.Message, error) { var ( m raftpb.Message typ uint8 ) if _, err := io.ReadFull(dec.r, dec.uint8buf); err != nil { - return m, err + return nil, err } typ = dec.uint8buf[0] switch typ { case msgTypeLinkHeartbeat: - return linkHeartbeatMessage, nil + return &linkHeartbeatMessage, nil case msgTypeAppEntries: m = raftpb.Message{ Type: raftpb.MsgApp, @@ -195,25 +195,25 @@ func (dec *msgAppV2Decoder) decode() (raftpb.Message, error) { // decode entries if _, err := io.ReadFull(dec.r, dec.uint64buf); err != nil { - return m, err + return nil, err } l := binary.BigEndian.Uint64(dec.uint64buf) m.Entries = make([]raftpb.Entry, int(l)) for i := 0; i < int(l); i++ { if _, err := io.ReadFull(dec.r, dec.uint64buf); err != nil { - return m, err + return nil, err } size := binary.BigEndian.Uint64(dec.uint64buf) var buf []byte if size < msgAppV2BufSize { buf = dec.buf[:size] if _, err := io.ReadFull(dec.r, buf); err != nil { - return m, err + return nil, err } } else { buf = make([]byte, int(size)) if _, err := io.ReadFull(dec.r, buf); err != nil { - return m, err + return nil, err } } dec.index++ @@ -222,17 +222,17 @@ func (dec *msgAppV2Decoder) decode() (raftpb.Message, error) { } // decode commit index if _, err := io.ReadFull(dec.r, dec.uint64buf); err != nil { - return m, err + return nil, err } m.Commit = binary.BigEndian.Uint64(dec.uint64buf) case msgTypeApp: var size uint64 if err := binary.Read(dec.r, binary.BigEndian, &size); err != nil { - return m, err + return nil, err } buf := make([]byte, int(size)) if _, err := io.ReadFull(dec.r, buf); err != nil { - return m, err + return nil, err } pbutil.MustUnmarshal(&m, buf) @@ -242,7 +242,7 @@ func (dec *msgAppV2Decoder) decode() (raftpb.Message, error) { dec.index = m.Entries[l-1].Index } default: - return m, fmt.Errorf("failed to parse type %d in msgappv2 stream", typ) + return nil, fmt.Errorf("failed to parse type %d in msgappv2 stream", typ) } - return m, nil + return &m, nil } diff --git a/server/etcdserver/api/rafthttp/msgappv2_codec_test.go b/server/etcdserver/api/rafthttp/msgappv2_codec_test.go index 50c7bd25c6d0..164d3340adaf 100644 --- a/server/etcdserver/api/rafthttp/msgappv2_codec_test.go +++ b/server/etcdserver/api/rafthttp/msgappv2_codec_test.go @@ -116,8 +116,9 @@ func TestMsgAppV2(t *testing.T) { t.Errorf("#%d: unexpected decode message error: %v", i, err) continue } - if !reflect.DeepEqual(m, tt) { - t.Errorf("#%d: message = %+v, want %+v", i, m, tt) + // TODO: use proto.Equal after bumping to raft v3.6.0-beta.0 + if !reflect.DeepEqual(*m, tt) { + t.Errorf("#%d: message = %+v, want %+v", i, *m, tt) } } } diff --git a/server/etcdserver/api/rafthttp/peer.go b/server/etcdserver/api/rafthttp/peer.go index c1e6ba127047..da466a6fb788 100644 --- a/server/etcdserver/api/rafthttp/peer.go +++ b/server/etcdserver/api/rafthttp/peer.go @@ -65,7 +65,7 @@ type Peer interface { // and has no promise that the message will be received by the remote. // When it fails to send message out, it will report the status to underlying // raft. - send(m raftpb.Message) + send(m *raftpb.Message) // sendSnap sends the merged snapshot message to the remote peer. Its behavior // is similar to send. @@ -118,8 +118,8 @@ type peer struct { msgAppV2Reader *streamReader msgAppReader *streamReader - recvc chan raftpb.Message - propc chan raftpb.Message + recvc chan *raftpb.Message + propc chan *raftpb.Message mu sync.Mutex paused bool @@ -164,8 +164,8 @@ func startPeer(t *Transport, urls types.URLs, peerID types.ID, fs *stats.Followe writer: startStreamWriter(t.Logger, t.ID, peerID, status, fs, r), pipeline: pipeline, snapSender: newSnapshotSender(t, picker, peerID, status), - recvc: make(chan raftpb.Message, recvBufSize), - propc: make(chan raftpb.Message, maxPendingProposals), + recvc: make(chan *raftpb.Message, recvBufSize), + propc: make(chan *raftpb.Message, maxPendingProposals), stopc: make(chan struct{}), } @@ -233,7 +233,7 @@ func startPeer(t *Transport, urls types.URLs, peerID types.ID, fs *stats.Followe return p } -func (p *peer) send(m raftpb.Message) { +func (p *peer) send(m *raftpb.Message) { p.mu.Lock() paused := p.paused p.mu.Unlock() @@ -334,7 +334,7 @@ func (p *peer) stop() { // pick picks a chan for sending the given message. The picked chan and the picked chan // string name are returned. -func (p *peer) pick(m raftpb.Message) (writec chan<- raftpb.Message, picked string) { +func (p *peer) pick(m *raftpb.Message) (writec chan<- *raftpb.Message, picked string) { var ok bool // Considering MsgSnap may have a big size, e.g., 1G, and will block // stream for a long time, only use one of the N pipelines to send MsgSnap. @@ -348,6 +348,6 @@ func (p *peer) pick(m raftpb.Message) (writec chan<- raftpb.Message, picked stri return p.pipeline.msgc, pipelineMsg } -func isMsgApp(m raftpb.Message) bool { return m.Type == raftpb.MsgApp } +func isMsgApp(m *raftpb.Message) bool { return m.Type == raftpb.MsgApp } -func isMsgSnap(m raftpb.Message) bool { return m.Type == raftpb.MsgSnap } +func isMsgSnap(m *raftpb.Message) bool { return m.Type == raftpb.MsgSnap } diff --git a/server/etcdserver/api/rafthttp/peer_test.go b/server/etcdserver/api/rafthttp/peer_test.go index d1a4f679367a..b5bd2bfa27e3 100644 --- a/server/etcdserver/api/rafthttp/peer_test.go +++ b/server/etcdserver/api/rafthttp/peer_test.go @@ -79,7 +79,7 @@ func TestPeerPick(t *testing.T) { writer: &streamWriter{working: tt.messageWorking}, pipeline: &pipeline{}, } - _, picked := peer.pick(tt.m) + _, picked := peer.pick(&tt.m) if picked != tt.wpicked { t.Errorf("#%d: picked = %v, want %v", i, picked, tt.wpicked) } diff --git a/server/etcdserver/api/rafthttp/pipeline.go b/server/etcdserver/api/rafthttp/pipeline.go index 0790b58d03be..b5176379122a 100644 --- a/server/etcdserver/api/rafthttp/pipeline.go +++ b/server/etcdserver/api/rafthttp/pipeline.go @@ -54,7 +54,7 @@ type pipeline struct { // deprecate when we depercate v2 API followerStats *stats.FollowerStats - msgc chan raftpb.Message + msgc chan *raftpb.Message // wait for the handling routines wg sync.WaitGroup stopc chan struct{} @@ -62,7 +62,7 @@ type pipeline struct { func (p *pipeline) start() { p.stopc = make(chan struct{}) - p.msgc = make(chan raftpb.Message, pipelineBufSize) + p.msgc = make(chan *raftpb.Message, pipelineBufSize) p.wg.Add(connPerPipeline) for i := 0; i < connPerPipeline; i++ { go p.handle() @@ -97,7 +97,7 @@ func (p *pipeline) handle() { select { case m := <-p.msgc: start := time.Now() - err := p.post(pbutil.MustMarshal(&m)) + err := p.post(pbutil.MustMarshal(m)) end := time.Now() if err != nil { diff --git a/server/etcdserver/api/rafthttp/pipeline_test.go b/server/etcdserver/api/rafthttp/pipeline_test.go index 316918ba5b6a..ba7c26ed8fb8 100644 --- a/server/etcdserver/api/rafthttp/pipeline_test.go +++ b/server/etcdserver/api/rafthttp/pipeline_test.go @@ -40,7 +40,7 @@ func TestPipelineSend(t *testing.T) { tp := &Transport{pipelineRt: tr} p := startTestPipeline(t, tp, picker) - p.msgc <- raftpb.Message{Type: raftpb.MsgApp} + p.msgc <- &raftpb.Message{Type: raftpb.MsgApp} tr.rec.Wait(1) p.stop() if p.followerStats.Counts.Success != 1 { @@ -58,7 +58,7 @@ func TestPipelineKeepSendingWhenPostError(t *testing.T) { defer p.stop() for i := 0; i < 50; i++ { - p.msgc <- raftpb.Message{Type: raftpb.MsgApp} + p.msgc <- &raftpb.Message{Type: raftpb.MsgApp} } _, err := tr.rec.Wait(50) @@ -78,7 +78,7 @@ func TestPipelineExceedMaximumServing(t *testing.T) { // nothing can go out as we block the sender for i := 0; i < connPerPipeline+pipelineBufSize; i++ { select { - case p.msgc <- raftpb.Message{}: + case p.msgc <- &raftpb.Message{}: case <-time.After(time.Second): t.Errorf("failed to send out message") } @@ -86,7 +86,7 @@ func TestPipelineExceedMaximumServing(t *testing.T) { // try to send a data when we are sure the buffer is full select { - case p.msgc <- raftpb.Message{}: + case p.msgc <- &raftpb.Message{}: t.Errorf("unexpected message sendout") default: } @@ -96,7 +96,7 @@ func TestPipelineExceedMaximumServing(t *testing.T) { // It could send new data after previous ones succeed select { - case p.msgc <- raftpb.Message{}: + case p.msgc <- &raftpb.Message{}: case <-time.After(time.Second): t.Errorf("failed to send out message") } @@ -111,7 +111,7 @@ func TestPipelineSendFailed(t *testing.T) { tp := &Transport{pipelineRt: rt} p := startTestPipeline(t, tp, picker) - p.msgc <- raftpb.Message{Type: raftpb.MsgApp} + p.msgc <- &raftpb.Message{Type: raftpb.MsgApp} if _, err := rt.rec.Wait(1); err != nil { t.Fatal(err) } @@ -149,7 +149,7 @@ func TestPipelinePost(t *testing.T) { t.Errorf("content type = %s, want %s", g, "application/protobuf") } if g := req.Header.Get("X-Server-Version"); g != version.Version { - t.Errorf("version = %s, want %s", g, version.Version) + t.Errorf("version = %s, want %s", g, "version.Version") } if g := req.Header.Get("X-Min-Cluster-Version"); g != version.MinClusterVersion { t.Errorf("min version = %s, want %s", g, version.MinClusterVersion) @@ -219,7 +219,7 @@ func TestStopBlockedPipeline(t *testing.T) { p := startTestPipeline(t, tp, picker) // send many messages that most of them will be blocked in buffer for i := 0; i < connPerPipeline*10; i++ { - p.msgc <- raftpb.Message{} + p.msgc <- &raftpb.Message{} } done := make(chan struct{}) diff --git a/server/etcdserver/api/rafthttp/remote.go b/server/etcdserver/api/rafthttp/remote.go index 3eb2f386806f..d6dcc989d129 100644 --- a/server/etcdserver/api/rafthttp/remote.go +++ b/server/etcdserver/api/rafthttp/remote.go @@ -51,7 +51,7 @@ func startRemote(tr *Transport, urls types.URLs, id types.ID) *remote { } } -func (g *remote) send(m raftpb.Message) { +func (g *remote) send(m *raftpb.Message) { select { case g.pipeline.msgc <- m: default: diff --git a/server/etcdserver/api/rafthttp/snapshot_sender.go b/server/etcdserver/api/rafthttp/snapshot_sender.go index 8dbc11724b33..a805716fad84 100644 --- a/server/etcdserver/api/rafthttp/snapshot_sender.go +++ b/server/etcdserver/api/rafthttp/snapshot_sender.go @@ -186,7 +186,7 @@ func createSnapBody(lg *zap.Logger, merged snap.Message) io.ReadCloser { buf := new(bytes.Buffer) enc := &messageEncoder{w: buf} // encode raft message - if err := enc.encode(&merged.Message); err != nil { + if err := enc.encode(merged.Message); err != nil { if lg != nil { lg.Panic("failed to encode message", zap.Error(err)) } diff --git a/server/etcdserver/api/rafthttp/snapshot_test.go b/server/etcdserver/api/rafthttp/snapshot_test.go index 8f319fe52aa0..8ee4d6b7f580 100644 --- a/server/etcdserver/api/rafthttp/snapshot_test.go +++ b/server/etcdserver/api/rafthttp/snapshot_test.go @@ -83,7 +83,7 @@ func TestSnapshotSend(t *testing.T) { } for i, tt := range tests { - sent, files := testSnapshotSend(t, snap.NewMessage(tt.m, tt.rc, tt.size)) + sent, files := testSnapshotSend(t, snap.NewMessage(&tt.m, tt.rc, tt.size)) if tt.wsent != sent { t.Errorf("#%d: snapshot expected %v, got %v", i, tt.wsent, sent) } diff --git a/server/etcdserver/api/rafthttp/stream.go b/server/etcdserver/api/rafthttp/stream.go index f17874f6c7af..b398e5be5732 100644 --- a/server/etcdserver/api/rafthttp/stream.go +++ b/server/etcdserver/api/rafthttp/stream.go @@ -125,7 +125,7 @@ type streamWriter struct { closer io.Closer working bool - msgc chan raftpb.Message + msgc chan *raftpb.Message connc chan *outgoingConn stopc chan struct{} done chan struct{} @@ -143,7 +143,7 @@ func startStreamWriter(lg *zap.Logger, local, id types.ID, status *peerStatus, f status: status, fs: fs, r: r, - msgc: make(chan raftpb.Message, streamBufSize), + msgc: make(chan *raftpb.Message, streamBufSize), connc: make(chan *outgoingConn), stopc: make(chan struct{}), done: make(chan struct{}), @@ -154,7 +154,7 @@ func startStreamWriter(lg *zap.Logger, local, id types.ID, status *peerStatus, f func (cw *streamWriter) run() { var ( - msgc chan raftpb.Message + msgc chan *raftpb.Message heartbeatc <-chan time.Time t streamType enc encoder @@ -201,7 +201,7 @@ func (cw *streamWriter) run() { heartbeatc, msgc = nil, nil case m := <-msgc: - err := enc.encode(&m) + err := enc.encode(m) if err == nil { unflushed += m.Size() @@ -303,7 +303,7 @@ func (cw *streamWriter) run() { } } -func (cw *streamWriter) writec() (chan<- raftpb.Message, bool) { +func (cw *streamWriter) writec() (chan<- *raftpb.Message, bool) { cw.mu.Lock() defer cw.mu.Unlock() return cw.msgc, cw.working @@ -331,7 +331,7 @@ func (cw *streamWriter) closeUnlocked() bool { if len(cw.msgc) > 0 { cw.r.ReportUnreachable(uint64(cw.peerID)) } - cw.msgc = make(chan raftpb.Message, streamBufSize) + cw.msgc = make(chan *raftpb.Message, streamBufSize) cw.working = false return true } @@ -361,8 +361,8 @@ type streamReader struct { tr *Transport picker *urlPicker status *peerStatus - recvc chan<- raftpb.Message - propc chan<- raftpb.Message + recvc chan<- *raftpb.Message + propc chan<- *raftpb.Message rl *rate.Limiter // alters the frequency of dial retrial attempts @@ -510,7 +510,7 @@ func (cr *streamReader) decodeLoop(rc io.ReadCloser, t streamType) error { continue } - if isLinkHeartbeatMessage(&m) { + if isLinkHeartbeatMessage(m) { // raft is not interested in link layer // heartbeat message, so we should ignore // it. diff --git a/server/etcdserver/api/rafthttp/stream_test.go b/server/etcdserver/api/rafthttp/stream_test.go index 66dd057ee7a7..638fbd0f3a7d 100644 --- a/server/etcdserver/api/rafthttp/stream_test.go +++ b/server/etcdserver/api/rafthttp/stream_test.go @@ -65,7 +65,7 @@ func TestStreamWriterAttachOutgoingConn(t *testing.T) { // if prevwfc == nil, the first connection may be pending, but the first // msgc is already available since it's set on calling startStreamwriter msgc, _ := sw.writec() - msgc <- raftpb.Message{} + msgc <- &raftpb.Message{} select { case <-wfc.writec: @@ -96,7 +96,7 @@ func TestStreamWriterAttachBadOutgoingConn(t *testing.T) { wfc := newFakeWriteFlushCloser(errors.New("blah")) sw.attach(&outgoingConn{t: streamTypeMessage, Writer: wfc, Flusher: wfc, Closer: wfc}) - sw.msgc <- raftpb.Message{} + sw.msgc <- &raftpb.Message{} select { case <-wfc.closed: case <-time.After(time.Second): @@ -265,9 +265,9 @@ func TestStreamReaderDialDetectUnsupport(t *testing.T) { // TestStream tests that streamReader and streamWriter can build stream to // send messages between each other. func TestStream(t *testing.T) { - recvc := make(chan raftpb.Message, streamBufSize) - propc := make(chan raftpb.Message, streamBufSize) - msgapp := raftpb.Message{ + recvc := make(chan *raftpb.Message, streamBufSize) + propc := make(chan *raftpb.Message, streamBufSize) + msgapp := &raftpb.Message{ Type: raftpb.MsgApp, From: 2, To: 1, @@ -279,12 +279,12 @@ func TestStream(t *testing.T) { tests := []struct { t streamType - m raftpb.Message - wc chan raftpb.Message + m *raftpb.Message + wc chan *raftpb.Message }{ { streamTypeMessage, - raftpb.Message{Type: raftpb.MsgProp, To: 2}, + &raftpb.Message{Type: raftpb.MsgProp, To: 2}, propc, }, { @@ -323,7 +323,7 @@ func TestStream(t *testing.T) { sr.start() // wait for stream to work - var writec chan<- raftpb.Message + var writec chan<- *raftpb.Message for { var ok bool if writec, ok = sw.writec(); ok { @@ -333,7 +333,7 @@ func TestStream(t *testing.T) { } writec <- tt.m - var m raftpb.Message + var m *raftpb.Message select { case m = <-tt.wc: case <-time.After(time.Second): diff --git a/server/etcdserver/api/rafthttp/transport.go b/server/etcdserver/api/rafthttp/transport.go index b376d578b6c4..7982ff625cae 100644 --- a/server/etcdserver/api/rafthttp/transport.go +++ b/server/etcdserver/api/rafthttp/transport.go @@ -33,7 +33,7 @@ import ( ) type Raft interface { - Process(ctx context.Context, m raftpb.Message) error + Process(ctx context.Context, m *raftpb.Message) error IsIDRemoved(id uint64) bool ReportUnreachable(id uint64) ReportSnapshot(id uint64, status raft.SnapshotStatus) @@ -54,7 +54,7 @@ type Transporter interface { // to an existing peer in the transport. // If the id cannot be found in the transport, the message // will be ignored. - Send(m []raftpb.Message) + Send(m []*raftpb.Message) // SendSnapshot sends out the given snapshot message to a remote peer. // The behavior of SendSnapshot is similar to Send. SendSnapshot(m snap.Message) @@ -172,7 +172,7 @@ func (t *Transport) Get(id types.ID) Peer { return t.peers[id] } -func (t *Transport) Send(msgs []raftpb.Message) { +func (t *Transport) Send(msgs []*raftpb.Message) { for _, m := range msgs { if m.To == 0 { // ignore intentionally dropped message diff --git a/server/etcdserver/api/rafthttp/transport_bench_test.go b/server/etcdserver/api/rafthttp/transport_bench_test.go index 646fa8ee2201..cd66e0703e62 100644 --- a/server/etcdserver/api/rafthttp/transport_bench_test.go +++ b/server/etcdserver/api/rafthttp/transport_bench_test.go @@ -69,7 +69,7 @@ func BenchmarkSendingMsgApp(b *testing.B) { b.ResetTimer() data := make([]byte, 64) for i := 0; i < b.N; i++ { - tr.Send([]raftpb.Message{ + tr.Send([]*raftpb.Message{ { Type: raftpb.MsgApp, From: 1, @@ -96,7 +96,7 @@ type countRaft struct { cnt int } -func (r *countRaft) Process(ctx context.Context, m raftpb.Message) error { +func (r *countRaft) Process(ctx context.Context, m *raftpb.Message) error { r.mu.Lock() defer r.mu.Unlock() r.cnt++ diff --git a/server/etcdserver/api/rafthttp/transport_test.go b/server/etcdserver/api/rafthttp/transport_test.go index 92adb01c4908..7a8a6a486661 100644 --- a/server/etcdserver/api/rafthttp/transport_test.go +++ b/server/etcdserver/api/rafthttp/transport_test.go @@ -38,18 +38,18 @@ func TestTransportSend(t *testing.T) { ServerStats: stats.NewServerStats("", ""), peers: map[types.ID]Peer{types.ID(1): peer1, types.ID(2): peer2}, } - wmsgsIgnored := []raftpb.Message{ + wmsgsIgnored := []*raftpb.Message{ // bad local message {Type: raftpb.MsgBeat}, // bad remote message {Type: raftpb.MsgProp, To: 3}, } - wmsgsTo1 := []raftpb.Message{ + wmsgsTo1 := []*raftpb.Message{ // good message {Type: raftpb.MsgProp, To: 1}, {Type: raftpb.MsgApp, To: 1}, } - wmsgsTo2 := []raftpb.Message{ + wmsgsTo2 := []*raftpb.Message{ // good message {Type: raftpb.MsgProp, To: 2}, {Type: raftpb.MsgApp, To: 2}, @@ -76,7 +76,7 @@ func TestTransportCutMend(t *testing.T) { tr.CutPeer(types.ID(1)) - wmsgsTo := []raftpb.Message{ + wmsgsTo := []*raftpb.Message{ // good message {Type: raftpb.MsgProp, To: 1}, {Type: raftpb.MsgApp, To: 1}, @@ -196,7 +196,7 @@ func TestTransportErrorc(t *testing.T) { t.Fatalf("received unexpected from errorc") case <-time.After(10 * time.Millisecond): } - tr.peers[1].send(raftpb.Message{}) + tr.peers[1].send(&raftpb.Message{}) select { case <-errorc: From cc6a3e503460416098b40e1e54aa50b549041508 Mon Sep 17 00:00:00 2001 From: Alessio Attilio Date: Sat, 16 May 2026 22:12:54 +0200 Subject: [PATCH 1013/1068] apply: fix data inconsistency in txns by skipping range execution Signed-off-by: Alessio Attilio --- .../api/v3rpc/validationfuzz_test.go | 2 +- server/etcdserver/apply/apply.go | 27 ++----- server/etcdserver/apply/auth.go | 8 +- server/etcdserver/apply/auth_test.go | 76 +++++++++---------- server/etcdserver/apply/backend.go | 6 +- server/etcdserver/apply/capped.go | 4 +- server/etcdserver/apply/corrupt.go | 2 +- server/etcdserver/apply/interface.go | 14 +++- server/etcdserver/apply/quota.go | 4 +- server/etcdserver/apply/uber_applier.go | 12 +-- server/etcdserver/apply/uber_applier_test.go | 54 ++++++------- server/etcdserver/server_test.go | 2 +- server/etcdserver/txn/txn.go | 29 ++++--- server/etcdserver/txn/txn_test.go | 76 ++++++++++++++++++- server/etcdserver/v3_server.go | 2 +- ..._test.go => txn_range_consistency_test.go} | 14 +--- .../integration/txn_range_consistency_test.go | 67 ++++++++++++++++ 17 files changed, 264 insertions(+), 135 deletions(-) rename tests/e2e/{reproduce_18667_test.go => txn_range_consistency_test.go} (78%) create mode 100644 tests/integration/txn_range_consistency_test.go diff --git a/server/etcdserver/api/v3rpc/validationfuzz_test.go b/server/etcdserver/api/v3rpc/validationfuzz_test.go index 89a6366792b9..61b234980d8e 100644 --- a/server/etcdserver/api/v3rpc/validationfuzz_test.go +++ b/server/etcdserver/api/v3rpc/validationfuzz_test.go @@ -175,7 +175,7 @@ func execTransaction(t *testing.T, req *pb.RequestOp) { Success: []*pb.RequestOp{req}, } - _, _, err := txn.Txn(ctx, zaptest.NewLogger(t), request, false, s, &lease.FakeLessor{}) + _, _, err := txn.Txn(ctx, zaptest.NewLogger(t), request, false, s, &lease.FakeLessor{}, false) if err != nil { t.Skipf("Application erroring. %s", err.Error()) } diff --git a/server/etcdserver/apply/apply.go b/server/etcdserver/apply/apply.go index a9f7fefdaf78..935737c5aefa 100644 --- a/server/etcdserver/apply/apply.go +++ b/server/etcdserver/apply/apply.go @@ -38,11 +38,12 @@ func Apply(lg *zap.Logger, e *raftpb.Entry, uberApply UberApplier, w wait.Wait, } needResult := w.IsRegistered(id) + wrapper := &InternalRaftRequestWrapper{ + InternalRaftRequest: &raftReq, + SkipRangeExecution: !needResult && raftReq.Txn != nil, + } if needResult || !noSideEffect(&raftReq) { - if !needResult && raftReq.Txn != nil { - removeNeedlessRangeReqs(raftReq.Txn) - } - return uberApply.Apply(&raftReq, shouldApplyV3), id + return uberApply.Apply(wrapper, shouldApplyV3), id } return nil, id } @@ -50,21 +51,3 @@ func Apply(lg *zap.Logger, e *raftpb.Entry, uberApply UberApplier, w wait.Wait, func noSideEffect(r *pb.InternalRaftRequest) bool { return r.Range != nil || r.AuthUserGet != nil || r.AuthRoleGet != nil || r.AuthStatus != nil } - -func removeNeedlessRangeReqs(txn *pb.TxnRequest) { - f := func(ops []*pb.RequestOp) []*pb.RequestOp { - j := 0 - for i := 0; i < len(ops); i++ { - if _, ok := ops[i].Request.(*pb.RequestOp_RequestRange); ok { - continue - } - ops[j] = ops[i] - j++ - } - - return ops[:j] - } - - txn.Success = f(txn.Success) - txn.Failure = f(txn.Failure) -} diff --git a/server/etcdserver/apply/auth.go b/server/etcdserver/apply/auth.go index c7f609932043..2b6a46ae699e 100644 --- a/server/etcdserver/apply/auth.go +++ b/server/etcdserver/apply/auth.go @@ -40,7 +40,7 @@ func newAuthApplierV3(as auth.AuthStore, base applierV3, lessor lease.Lessor) *a return &authApplierV3{applierV3: base, as: as, lessor: lessor} } -func (aa *authApplierV3) Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3, applyFunc applyFunc) *Result { +func (aa *authApplierV3) Apply(r *InternalRaftRequestWrapper, shouldApplyV3 membership.ShouldApplyV3, applyFunc applyFunc) *Result { aa.mu.Lock() defer aa.mu.Unlock() if r.Header != nil { @@ -49,7 +49,7 @@ func (aa *authApplierV3) Apply(r *pb.InternalRaftRequest, shouldApplyV3 membersh aa.authInfo.Username = r.Header.Username aa.authInfo.Revision = r.Header.AuthRevision } - if needAdminPermission(r) { + if needAdminPermission(r.InternalRaftRequest) { if err := aa.as.IsAdminPermitted(&aa.authInfo); err != nil { aa.authInfo.Username = "" aa.authInfo.Revision = 0 @@ -114,11 +114,11 @@ func (aa *authApplierV3) DeleteRange(r *pb.DeleteRangeRequest) (*pb.DeleteRangeR return aa.applierV3.DeleteRange(r) } -func (aa *authApplierV3) Txn(rt *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) { +func (aa *authApplierV3) Txn(rt *pb.TxnRequest, skipRangeExecution bool) (*pb.TxnResponse, *traceutil.Trace, error) { if err := CheckTxnAuth(aa.as, &aa.authInfo, aa.lessor, rt); err != nil { return nil, nil, err } - return aa.applierV3.Txn(rt) + return aa.applierV3.Txn(rt, skipRangeExecution) } func CheckTxnAuth(as auth.AuthStore, ai *auth.AuthInfo, lessor lease.Lessor, rt *pb.TxnRequest) error { diff --git a/server/etcdserver/apply/auth_test.go b/server/etcdserver/apply/auth_test.go index 009d8dac4f39..9e6faffea49c 100644 --- a/server/etcdserver/apply/auth_test.go +++ b/server/etcdserver/apply/auth_test.go @@ -45,7 +45,7 @@ func dummyIndexWaiter(_ uint64) <-chan struct{} { return ch } -func dummyApplyFunc(_ *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3) *Result { +func dummyApplyFunc(_ *InternalRaftRequestWrapper, shouldApplyV3 membership.ShouldApplyV3) *Result { return &Result{} } @@ -180,36 +180,36 @@ func setAuthInfo(authApplier *authApplierV3, userName string) { func TestAuthApplierV3_Apply(t *testing.T) { tcs := []struct { name string - request *pb.InternalRaftRequest + request *InternalRaftRequestWrapper expectResult *Result }{ { name: "request does not need admin permission", - request: &pb.InternalRaftRequest{ + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{ Header: &pb.RequestHeader{}, - }, + }}, expectResult: &Result{}, }, { name: "request needs admin permission but permission denied", - request: &pb.InternalRaftRequest{ + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{ Header: &pb.RequestHeader{ Username: userReadOnly, }, AuthEnable: &pb.AuthEnableRequest{}, - }, + }}, expectResult: &Result{ Err: auth.ErrPermissionDenied, }, }, { name: "request needs admin permission and permitted", - request: &pb.InternalRaftRequest{ + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{ Header: &pb.RequestHeader{ Username: userRoot, }, AuthEnable: &pb.AuthEnableRequest{}, - }, + }}, expectResult: &Result{}, }, } @@ -229,92 +229,92 @@ func TestAuthApplierV3_Apply(t *testing.T) { func TestAuthApplierV3_AdminPermission(t *testing.T) { tcs := []struct { name string - request *pb.InternalRaftRequest + request *InternalRaftRequestWrapper adminPermissionNeeded bool }{ { name: "Range does not need admin permission", - request: &pb.InternalRaftRequest{Range: &pb.RangeRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Range: &pb.RangeRequest{}}}, adminPermissionNeeded: false, }, { name: "Put does not need admin permission", - request: &pb.InternalRaftRequest{Put: &pb.PutRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Put: &pb.PutRequest{}}}, adminPermissionNeeded: false, }, { name: "DeleteRange does not need admin permission", - request: &pb.InternalRaftRequest{DeleteRange: &pb.DeleteRangeRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{DeleteRange: &pb.DeleteRangeRequest{}}}, adminPermissionNeeded: false, }, { name: "Txn does not need admin permission", - request: &pb.InternalRaftRequest{Txn: &pb.TxnRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Txn: &pb.TxnRequest{}}}, adminPermissionNeeded: false, }, { name: "Compaction does not need admin permission", - request: &pb.InternalRaftRequest{Compaction: &pb.CompactionRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Compaction: &pb.CompactionRequest{}}}, adminPermissionNeeded: false, }, { name: "LeaseGrant does not need admin permission", - request: &pb.InternalRaftRequest{LeaseGrant: &pb.LeaseGrantRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{LeaseGrant: &pb.LeaseGrantRequest{}}}, adminPermissionNeeded: false, }, { name: "LeaseRevoke does not need admin permission", - request: &pb.InternalRaftRequest{LeaseRevoke: &pb.LeaseRevokeRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{LeaseRevoke: &pb.LeaseRevokeRequest{}}}, adminPermissionNeeded: false, }, { name: "Alarm does not need admin permission", - request: &pb.InternalRaftRequest{Alarm: &pb.AlarmRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Alarm: &pb.AlarmRequest{}}}, adminPermissionNeeded: false, }, { name: "LeaseCheckpoint does not need admin permission", - request: &pb.InternalRaftRequest{LeaseCheckpoint: &pb.LeaseCheckpointRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{LeaseCheckpoint: &pb.LeaseCheckpointRequest{}}}, adminPermissionNeeded: false, }, { name: "Authenticate does not need admin permission", - request: &pb.InternalRaftRequest{Authenticate: &pb.InternalAuthenticateRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Authenticate: &pb.InternalAuthenticateRequest{}}}, adminPermissionNeeded: false, }, { name: "ClusterVersionSet does not need admin permission", - request: &pb.InternalRaftRequest{ClusterVersionSet: &membershippb.ClusterVersionSetRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{ClusterVersionSet: &membershippb.ClusterVersionSetRequest{}}}, adminPermissionNeeded: false, }, { name: "ClusterMemberAttrSet does not need admin permission", - request: &pb.InternalRaftRequest{ClusterMemberAttrSet: &membershippb.ClusterMemberAttrSetRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{ClusterMemberAttrSet: &membershippb.ClusterMemberAttrSetRequest{}}}, adminPermissionNeeded: false, }, { name: "DowngradeInfoSet does not need admin permission", - request: &pb.InternalRaftRequest{DowngradeInfoSet: &membershippb.DowngradeInfoSetRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{DowngradeInfoSet: &membershippb.DowngradeInfoSetRequest{}}}, adminPermissionNeeded: false, }, { name: "AuthUserGet does not need admin permission", - request: &pb.InternalRaftRequest{AuthUserGet: &pb.AuthUserGetRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthUserGet: &pb.AuthUserGetRequest{}}}, adminPermissionNeeded: false, }, { name: "AuthRoleGet does not need admin permission", - request: &pb.InternalRaftRequest{AuthRoleGet: &pb.AuthRoleGetRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthRoleGet: &pb.AuthRoleGetRequest{}}}, adminPermissionNeeded: false, }, { name: "AuthEnable needs admin permission", - request: &pb.InternalRaftRequest{AuthEnable: &pb.AuthEnableRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthEnable: &pb.AuthEnableRequest{}}}, adminPermissionNeeded: true, }, { name: "AuthDisable needs admin permission", - request: &pb.InternalRaftRequest{AuthDisable: &pb.AuthDisableRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthDisable: &pb.AuthDisableRequest{}}}, adminPermissionNeeded: true, }, { @@ -324,57 +324,57 @@ func TestAuthApplierV3_AdminPermission(t *testing.T) { }, { name: "AuthUserAdd needs admin permission", - request: &pb.InternalRaftRequest{AuthUserAdd: &pb.AuthUserAddRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthUserAdd: &pb.AuthUserAddRequest{}}}, adminPermissionNeeded: true, }, { name: "AuthUserDelete needs admin permission", - request: &pb.InternalRaftRequest{AuthUserDelete: &pb.AuthUserDeleteRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthUserDelete: &pb.AuthUserDeleteRequest{}}}, adminPermissionNeeded: true, }, { name: "AuthUserChangePassword needs admin permission", - request: &pb.InternalRaftRequest{AuthUserChangePassword: &pb.AuthUserChangePasswordRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthUserChangePassword: &pb.AuthUserChangePasswordRequest{}}}, adminPermissionNeeded: true, }, { name: "AuthUserGrantRole needs admin permission", - request: &pb.InternalRaftRequest{AuthUserGrantRole: &pb.AuthUserGrantRoleRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthUserGrantRole: &pb.AuthUserGrantRoleRequest{}}}, adminPermissionNeeded: true, }, { name: "AuthUserRevokeRole needs admin permission", - request: &pb.InternalRaftRequest{AuthUserRevokeRole: &pb.AuthUserRevokeRoleRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthUserRevokeRole: &pb.AuthUserRevokeRoleRequest{}}}, adminPermissionNeeded: true, }, { name: "AuthUserList needs admin permission", - request: &pb.InternalRaftRequest{AuthUserList: &pb.AuthUserListRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthUserList: &pb.AuthUserListRequest{}}}, adminPermissionNeeded: true, }, { name: "AuthRoleList needs admin permission", - request: &pb.InternalRaftRequest{AuthRoleList: &pb.AuthRoleListRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthRoleList: &pb.AuthRoleListRequest{}}}, adminPermissionNeeded: true, }, { name: "AuthRoleAdd needs admin permission", - request: &pb.InternalRaftRequest{AuthRoleAdd: &pb.AuthRoleAddRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthRoleAdd: &pb.AuthRoleAddRequest{}}}, adminPermissionNeeded: true, }, { name: "AuthRoleDelete needs admin permission", - request: &pb.InternalRaftRequest{AuthRoleDelete: &pb.AuthRoleDeleteRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthRoleDelete: &pb.AuthRoleDeleteRequest{}}}, adminPermissionNeeded: true, }, { name: "AuthRoleGrantPermission needs admin permission", - request: &pb.InternalRaftRequest{AuthRoleGrantPermission: &pb.AuthRoleGrantPermissionRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthRoleGrantPermission: &pb.AuthRoleGrantPermissionRequest{}}}, adminPermissionNeeded: true, }, { name: "AuthRoleRevokePermission needs admin permission", - request: &pb.InternalRaftRequest{AuthRoleRevokePermission: &pb.AuthRoleRevokePermissionRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{AuthRoleRevokePermission: &pb.AuthRoleRevokePermissionRequest{}}}, adminPermissionNeeded: true, }, } @@ -658,7 +658,7 @@ func TestAuthApplierV3_Txn(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { setAuthInfo(authApplier, tc.userName) - _, _, err := authApplier.Txn(tc.request) + _, _, err := authApplier.Txn(tc.request, false) require.Equalf(t, tc.expectError, err, "Range returned unexpected error (or lack thereof), expected: %v, got: %v", tc.expectError, err) }) } diff --git a/server/etcdserver/apply/backend.go b/server/etcdserver/apply/backend.go index 4151956c9be0..7d6d9b238260 100644 --- a/server/etcdserver/apply/backend.go +++ b/server/etcdserver/apply/backend.go @@ -43,7 +43,7 @@ func newApplierV3Backend(opts ApplierOptions) applierV3 { } } -func (a *applierV3backend) Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3, applyFunc applyFunc) *Result { +func (a *applierV3backend) Apply(r *InternalRaftRequestWrapper, shouldApplyV3 membership.ShouldApplyV3, applyFunc applyFunc) *Result { return applyFunc(r, shouldApplyV3) } @@ -59,8 +59,8 @@ func (a *applierV3backend) Range(r *pb.RangeRequest) (*pb.RangeResponse, *traceu return mvcctxn.Range(context.TODO(), a.options.Logger, a.options.KV, r, true) } -func (a *applierV3backend) Txn(rt *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) { - return mvcctxn.Txn(context.TODO(), a.options.Logger, rt, a.options.TxnModeWriteWithSharedBuffer, a.options.KV, a.options.Lessor) +func (a *applierV3backend) Txn(rt *pb.TxnRequest, skipRangeExecution bool) (*pb.TxnResponse, *traceutil.Trace, error) { + return mvcctxn.Txn(context.TODO(), a.options.Logger, rt, a.options.TxnModeWriteWithSharedBuffer, a.options.KV, a.options.Lessor, skipRangeExecution) } func (a *applierV3backend) Compaction(compaction *pb.CompactionRequest) (*pb.CompactionResponse, <-chan struct{}, *traceutil.Trace, error) { diff --git a/server/etcdserver/apply/capped.go b/server/etcdserver/apply/capped.go index 312eeb52c904..d17367bb1c5a 100644 --- a/server/etcdserver/apply/capped.go +++ b/server/etcdserver/apply/capped.go @@ -34,11 +34,11 @@ func (a *applierV3Capped) Put(_ *pb.PutRequest) (*pb.PutResponse, *traceutil.Tra return nil, nil, errors.ErrNoSpace } -func (a *applierV3Capped) Txn(r *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) { +func (a *applierV3Capped) Txn(r *pb.TxnRequest, skipRangeExecution bool) (*pb.TxnResponse, *traceutil.Trace, error) { if a.q.Cost(r) > 0 { return nil, nil, errors.ErrNoSpace } - return a.applierV3.Txn(r) + return a.applierV3.Txn(r, skipRangeExecution) } func (a *applierV3Capped) LeaseGrant(_ *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error) { diff --git a/server/etcdserver/apply/corrupt.go b/server/etcdserver/apply/corrupt.go index c198119510aa..ad2eb15e4dd2 100644 --- a/server/etcdserver/apply/corrupt.go +++ b/server/etcdserver/apply/corrupt.go @@ -38,7 +38,7 @@ func (a *applierV3Corrupt) DeleteRange(_ *pb.DeleteRangeRequest) (*pb.DeleteRang return nil, nil, errors.ErrCorrupt } -func (a *applierV3Corrupt) Txn(_ *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) { +func (a *applierV3Corrupt) Txn(_ *pb.TxnRequest, _ bool) (*pb.TxnResponse, *traceutil.Trace, error) { return nil, nil, errors.ErrCorrupt } diff --git a/server/etcdserver/apply/interface.go b/server/etcdserver/apply/interface.go index a4ce1e1911fc..00ba221ed922 100644 --- a/server/etcdserver/apply/interface.go +++ b/server/etcdserver/apply/interface.go @@ -33,16 +33,24 @@ import ( "go.etcd.io/etcd/server/v3/storage/mvcc" ) +// InternalRaftRequestWrapper carries per-apply metadata for an InternalRaftRequest. +type InternalRaftRequestWrapper struct { + *pb.InternalRaftRequest + // SkipRangeExecution skips execution of range requests inside a txn for + // members that do not need the response; validation via checkRange still runs. + SkipRangeExecution bool +} + // applierV3 is the interface for processing V3 raft messages type applierV3 interface { // Apply executes the generic portion of application logic for the current applier, but // delegates the actual execution to the applyFunc method. - Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3, applyFunc applyFunc) *Result + Apply(r *InternalRaftRequestWrapper, shouldApplyV3 membership.ShouldApplyV3, applyFunc applyFunc) *Result Put(p *pb.PutRequest) (*pb.PutResponse, *traceutil.Trace, error) Range(r *pb.RangeRequest) (*pb.RangeResponse, *traceutil.Trace, error) DeleteRange(dr *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, *traceutil.Trace, error) - Txn(rt *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) + Txn(rt *pb.TxnRequest, skipRangeExecution bool) (*pb.TxnResponse, *traceutil.Trace, error) Compaction(compaction *pb.CompactionRequest) (*pb.CompactionResponse, <-chan struct{}, *traceutil.Trace, error) LeaseGrant(lc *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error) @@ -115,4 +123,4 @@ type Result struct { Trace *traceutil.Trace } -type applyFunc func(*pb.InternalRaftRequest, membership.ShouldApplyV3) *Result +type applyFunc func(*InternalRaftRequestWrapper, membership.ShouldApplyV3) *Result diff --git a/server/etcdserver/apply/quota.go b/server/etcdserver/apply/quota.go index e1cef6016fb7..f172093d906a 100644 --- a/server/etcdserver/apply/quota.go +++ b/server/etcdserver/apply/quota.go @@ -42,9 +42,9 @@ func (a *quotaApplierV3) Put(p *pb.PutRequest) (*pb.PutResponse, *traceutil.Trac return resp, trace, err } -func (a *quotaApplierV3) Txn(rt *pb.TxnRequest) (*pb.TxnResponse, *traceutil.Trace, error) { +func (a *quotaApplierV3) Txn(rt *pb.TxnRequest, skipRangeExecution bool) (*pb.TxnResponse, *traceutil.Trace, error) { ok := a.q.Available(rt) - resp, trace, err := a.applierV3.Txn(rt) + resp, trace, err := a.applierV3.Txn(rt, skipRangeExecution) if err == nil && !ok { err = errors.ErrNoSpace } diff --git a/server/etcdserver/apply/uber_applier.go b/server/etcdserver/apply/uber_applier.go index 0eb76e3d4209..edb3bd0fefe5 100644 --- a/server/etcdserver/apply/uber_applier.go +++ b/server/etcdserver/apply/uber_applier.go @@ -28,7 +28,7 @@ import ( ) type UberApplier interface { - Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3) *Result + Apply(r *InternalRaftRequestWrapper, shouldApplyV3 membership.ShouldApplyV3) *Result } type uberApplier struct { @@ -79,7 +79,7 @@ func (a *uberApplier) restoreAlarms() { } } -func (a *uberApplier) Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3) *Result { +func (a *uberApplier) Apply(r *InternalRaftRequestWrapper, shouldApplyV3 membership.ShouldApplyV3) *Result { // We first execute chain of Apply() calls down the hierarchy: // (i.e. CorruptApplier -> CappedApplier -> Auth -> Quota -> Backend), // then dispatch() unpacks the request to a specific method (like Put), @@ -90,15 +90,15 @@ func (a *uberApplier) Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership. // dispatch translates the request (r) into appropriate call (like Put) on // the underlying applyV3 object. -func (a *uberApplier) dispatch(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3) *Result { +func (a *uberApplier) dispatch(r *InternalRaftRequestWrapper, shouldApplyV3 membership.ShouldApplyV3) *Result { op := "unknown" ar := &Result{} defer func(start time.Time) { success := ar.Err == nil || errors.Is(ar.Err, mvcc.ErrCompacted) txn.ApplySecObserve("v3", op, success, time.Since(start)) - txn.WarnOfExpensiveRequest(a.lg, a.warningApplyDuration, start, &pb.InternalRaftStringer{Request: r}, ar.Resp, ar.Err) + txn.WarnOfExpensiveRequest(a.lg, a.warningApplyDuration, start, &pb.InternalRaftStringer{Request: r.InternalRaftRequest}, ar.Resp, ar.Err) if !success { - txn.WarnOfFailedRequest(a.lg, start, &pb.InternalRaftStringer{Request: r}, ar.Resp, ar.Err) + txn.WarnOfFailedRequest(a.lg, start, &pb.InternalRaftStringer{Request: r.InternalRaftRequest}, ar.Resp, ar.Err) } }(time.Now()) @@ -139,7 +139,7 @@ func (a *uberApplier) dispatch(r *pb.InternalRaftRequest, shouldApplyV3 membersh ar.Resp, ar.Trace, ar.Err = a.applyV3.DeleteRange(r.DeleteRange) case r.Txn != nil: op = "Txn" - ar.Resp, ar.Trace, ar.Err = a.applyV3.Txn(r.Txn) + ar.Resp, ar.Trace, ar.Err = a.applyV3.Txn(r.Txn, r.SkipRangeExecution) case r.Compaction != nil: op = "Compaction" ar.Resp, ar.Physc, ar.Trace, ar.Err = a.applyV3.Compaction(r.Compaction) diff --git a/server/etcdserver/apply/uber_applier_test.go b/server/etcdserver/apply/uber_applier_test.go index e81fe49065e1..e85b187721ae 100644 --- a/server/etcdserver/apply/uber_applier_test.go +++ b/server/etcdserver/apply/uber_applier_test.go @@ -83,55 +83,55 @@ func defaultUberApplier(t *testing.T) UberApplier { func TestUberApplier_Alarm_Corrupt(t *testing.T) { tcs := []struct { name string - request *pb.InternalRaftRequest + request *InternalRaftRequestWrapper expectError error }{ { name: "Put request returns ErrCorrupt after alarm CORRUPT is activated", - request: &pb.InternalRaftRequest{Put: &pb.PutRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Put: &pb.PutRequest{}}}, expectError: errors.ErrCorrupt, }, { name: "Range request returns ErrCorrupt after alarm CORRUPT is activated", - request: &pb.InternalRaftRequest{Range: &pb.RangeRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Range: &pb.RangeRequest{}}}, expectError: errors.ErrCorrupt, }, { name: "DeleteRange request returns ErrCorrupt after alarm CORRUPT is activated", - request: &pb.InternalRaftRequest{DeleteRange: &pb.DeleteRangeRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{DeleteRange: &pb.DeleteRangeRequest{}}}, expectError: errors.ErrCorrupt, }, { name: "Txn request returns ErrCorrupt after alarm CORRUPT is activated", - request: &pb.InternalRaftRequest{Txn: &pb.TxnRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Txn: &pb.TxnRequest{}}}, expectError: errors.ErrCorrupt, }, { name: "Compaction request returns ErrCorrupt after alarm CORRUPT is activated", - request: &pb.InternalRaftRequest{Compaction: &pb.CompactionRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Compaction: &pb.CompactionRequest{}}}, expectError: errors.ErrCorrupt, }, { name: "LeaseGrant request returns ErrCorrupt after alarm CORRUPT is activated", - request: &pb.InternalRaftRequest{LeaseGrant: &pb.LeaseGrantRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{LeaseGrant: &pb.LeaseGrantRequest{}}}, expectError: errors.ErrCorrupt, }, { name: "LeaseRevoke request returns ErrCorrupt after alarm CORRUPT is activated", - request: &pb.InternalRaftRequest{LeaseRevoke: &pb.LeaseRevokeRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{LeaseRevoke: &pb.LeaseRevokeRequest{}}}, expectError: errors.ErrCorrupt, }, } ua := defaultUberApplier(t) - result := ua.Apply(&pb.InternalRaftRequest{ + result := ua.Apply(&InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{ Header: &pb.RequestHeader{}, Alarm: &pb.AlarmRequest{ Action: pb.AlarmRequest_ACTIVATE, MemberID: memberID, Alarm: pb.AlarmType_CORRUPT, }, - }, membership.ApplyBoth) + }}, membership.ApplyBoth) require.NotNil(t, result) require.NoError(t, result.Err) @@ -148,17 +148,17 @@ func TestUberApplier_Alarm_Corrupt(t *testing.T) { func TestUberApplier_Alarm_Quota(t *testing.T) { tcs := []struct { name string - request *pb.InternalRaftRequest + request *InternalRaftRequestWrapper expectError error }{ { name: "Put request returns ErrCorrupt after alarm NOSPACE is activated", - request: &pb.InternalRaftRequest{Put: &pb.PutRequest{Key: []byte(key)}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Put: &pb.PutRequest{Key: []byte(key)}}}, expectError: errors.ErrNoSpace, }, { name: "Txn request cost > 0 returns ErrCorrupt after alarm NOSPACE is activated", - request: &pb.InternalRaftRequest{Txn: &pb.TxnRequest{ + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Txn: &pb.TxnRequest{ Success: []*pb.RequestOp{ { Request: &pb.RequestOp_RequestPut{ @@ -168,12 +168,12 @@ func TestUberApplier_Alarm_Quota(t *testing.T) { }, }, }, - }}, + }}}, expectError: errors.ErrNoSpace, }, { name: "Txn request cost = 0 is still allowed after alarm NOSPACE is activated", - request: &pb.InternalRaftRequest{Txn: &pb.TxnRequest{ + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Txn: &pb.TxnRequest{ Success: []*pb.RequestOp{ { Request: &pb.RequestOp_RequestRange{ @@ -183,12 +183,12 @@ func TestUberApplier_Alarm_Quota(t *testing.T) { }, }, }, - }}, + }}}, expectError: nil, }, { name: "Txn request cost = 0 in both branches is still allowed after alarm NOSPACE is activated", - request: &pb.InternalRaftRequest{Txn: &pb.TxnRequest{ + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Txn: &pb.TxnRequest{ Compare: []*pb.Compare{ { Key: []byte(key), @@ -215,25 +215,25 @@ func TestUberApplier_Alarm_Quota(t *testing.T) { }, }, }, - }}, + }}}, expectError: nil, }, { name: "LeaseGrant request returns ErrCorrupt after alarm NOSPACE is activated", - request: &pb.InternalRaftRequest{LeaseGrant: &pb.LeaseGrantRequest{}}, + request: &InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{LeaseGrant: &pb.LeaseGrantRequest{}}}, expectError: errors.ErrNoSpace, }, } ua := defaultUberApplier(t) - result := ua.Apply(&pb.InternalRaftRequest{ + result := ua.Apply(&InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{ Header: &pb.RequestHeader{}, Alarm: &pb.AlarmRequest{ Action: pb.AlarmRequest_ACTIVATE, MemberID: memberID, Alarm: pb.AlarmType_NOSPACE, }, - }, membership.ApplyBoth) + }}, membership.ApplyBoth) require.NotNil(t, result) require.NoError(t, result.Err) @@ -249,33 +249,33 @@ func TestUberApplier_Alarm_Quota(t *testing.T) { // TestUberApplier_Alarm_Deactivate tests the applier should be able to apply after alarm is deactivated func TestUberApplier_Alarm_Deactivate(t *testing.T) { ua := defaultUberApplier(t) - result := ua.Apply(&pb.InternalRaftRequest{ + result := ua.Apply(&InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{ Header: &pb.RequestHeader{}, Alarm: &pb.AlarmRequest{ Action: pb.AlarmRequest_ACTIVATE, MemberID: memberID, Alarm: pb.AlarmType_NOSPACE, }, - }, membership.ApplyBoth) + }}, membership.ApplyBoth) require.NotNil(t, result) require.NoError(t, result.Err) - result = ua.Apply(&pb.InternalRaftRequest{Put: &pb.PutRequest{Key: []byte(key)}}, membership.ApplyBoth) + result = ua.Apply(&InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Put: &pb.PutRequest{Key: []byte(key)}}}, membership.ApplyBoth) require.NotNil(t, result) require.Equalf(t, errors.ErrNoSpace, result.Err, "Apply: got %v, expect: %v", result.Err, errors.ErrNoSpace) - result = ua.Apply(&pb.InternalRaftRequest{ + result = ua.Apply(&InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{ Header: &pb.RequestHeader{}, Alarm: &pb.AlarmRequest{ Action: pb.AlarmRequest_DEACTIVATE, MemberID: memberID, Alarm: pb.AlarmType_NOSPACE, }, - }, membership.ApplyBoth) + }}, membership.ApplyBoth) require.NotNil(t, result) require.NoError(t, result.Err) - result = ua.Apply(&pb.InternalRaftRequest{Put: &pb.PutRequest{Key: []byte(key)}}, membership.ApplyBoth) + result = ua.Apply(&InternalRaftRequestWrapper{InternalRaftRequest: &pb.InternalRaftRequest{Put: &pb.PutRequest{Key: []byte(key)}}}, membership.ApplyBoth) require.NotNil(t, result) assert.NoError(t, result.Err) } diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index 82acc28d63df..4ef253106049 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -139,7 +139,7 @@ func TestApplyRepeat(t *testing.T) { type uberApplierMock struct{} -func (uberApplierMock) Apply(r *pb.InternalRaftRequest, shouldApplyV3 membership.ShouldApplyV3) *apply2.Result { +func (uberApplierMock) Apply(r *apply2.InternalRaftRequestWrapper, shouldApplyV3 membership.ShouldApplyV3) *apply2.Result { return &apply2.Result{} } diff --git a/server/etcdserver/txn/txn.go b/server/etcdserver/txn/txn.go index abbe60d8560d..693c04289bf5 100644 --- a/server/etcdserver/txn/txn.go +++ b/server/etcdserver/txn/txn.go @@ -29,7 +29,7 @@ import ( "go.etcd.io/etcd/server/v3/storage/mvcc" ) -func Txn(ctx context.Context, lg *zap.Logger, rt *pb.TxnRequest, txnModeWriteWithSharedBuffer bool, kv mvcc.KV, lessor lease.Lessor) (txnResp *pb.TxnResponse, trace *traceutil.Trace, err error) { +func Txn(ctx context.Context, lg *zap.Logger, rt *pb.TxnRequest, txnModeWriteWithSharedBuffer bool, kv mvcc.KV, lessor lease.Lessor, skipRangeExecution bool) (txnResp *pb.TxnResponse, trace *traceutil.Trace, err error) { ctx, trace = traceutil.EnsureTrace(ctx, lg, "transaction") isWrite := !IsTxnReadonly(rt) // When the transaction contains write operations, we use ReadTx instead of @@ -68,7 +68,7 @@ func Txn(ctx context.Context, lg *zap.Logger, rt *pb.TxnRequest, txnModeWriteWit } else { txnWrite = mvcc.NewReadOnlyTxnWrite(txnRead) } - txnResp, err = txn(ctx, lg, txnWrite, rt, isWrite, txnPath) + txnResp, err = txn(ctx, lg, txnWrite, rt, isWrite, txnPath, skipRangeExecution) txnWrite.End() trace.AddField( @@ -78,9 +78,9 @@ func Txn(ctx context.Context, lg *zap.Logger, rt *pb.TxnRequest, txnModeWriteWit return txnResp, trace, err } -func txn(ctx context.Context, lg *zap.Logger, txnWrite mvcc.TxnWrite, rt *pb.TxnRequest, isWrite bool, txnPath []bool) (*pb.TxnResponse, error) { +func txn(ctx context.Context, lg *zap.Logger, txnWrite mvcc.TxnWrite, rt *pb.TxnRequest, isWrite bool, txnPath []bool, skipRangeExecution bool) (*pb.TxnResponse, error) { txnResp, _ := newTxnResp(rt, txnPath) - _, err := executeTxn(ctx, lg, txnWrite, rt, txnPath, txnResp) + _, err := executeTxn(ctx, lg, txnWrite, rt, txnPath, txnResp, skipRangeExecution) if err != nil { if isWrite { // CAUTION: When a txn performing write operations starts, we always expect it to be successful. @@ -132,7 +132,7 @@ func newTxnResp(rt *pb.TxnRequest, txnPath []bool) (txnResp *pb.TxnResponse, txn return txnResp, txnCount } -func executeTxn(ctx context.Context, lg *zap.Logger, txnWrite mvcc.TxnWrite, rt *pb.TxnRequest, txnPath []bool, tresp *pb.TxnResponse) (txns int, err error) { +func executeTxn(ctx context.Context, lg *zap.Logger, txnWrite mvcc.TxnWrite, rt *pb.TxnRequest, txnPath []bool, tresp *pb.TxnResponse, skipRangeExecution bool) (txns int, err error) { trace := traceutil.Get(ctx) reqs := rt.Success if !txnPath[0] { @@ -147,9 +147,20 @@ func executeTxn(ctx context.Context, lg *zap.Logger, txnWrite mvcc.TxnWrite, rt traceutil.Field{Key: "req_type", Value: "range"}, traceutil.Field{Key: "range_begin", Value: string(tv.RequestRange.Key)}, traceutil.Field{Key: "range_end", Value: string(tv.RequestRange.RangeEnd)}) - resp, err := executeRange(ctx, lg, txnWrite, tv.RequestRange, true) - if err != nil { - return 0, fmt.Errorf("applyTxn: failed Range: %w", err) + var resp *pb.RangeResponse + if skipRangeExecution { + rev := txnWrite.Rev() + if len(txnWrite.Changes()) > 0 { + rev++ + } + resp = &pb.RangeResponse{ + Header: &pb.ResponseHeader{Revision: rev}, + } + } else { + resp, err = executeRange(ctx, lg, txnWrite, tv.RequestRange, true) + if err != nil { + return 0, fmt.Errorf("applyTxn: failed Range: %w", err) + } } respi.(*pb.ResponseOp_ResponseRange).ResponseRange = resp trace.StopSubTrace() @@ -173,7 +184,7 @@ func executeTxn(ctx context.Context, lg *zap.Logger, txnWrite mvcc.TxnWrite, rt respi.(*pb.ResponseOp_ResponseDeleteRange).ResponseDeleteRange = resp case *pb.RequestOp_RequestTxn: resp := respi.(*pb.ResponseOp_ResponseTxn).ResponseTxn - applyTxns, err := executeTxn(ctx, lg, txnWrite, tv.RequestTxn, txnPath[1:], resp) + applyTxns, err := executeTxn(ctx, lg, txnWrite, tv.RequestTxn, txnPath[1:], resp, skipRangeExecution) if err != nil { // don't wrap the error. It's a recursive call and err should be already wrapped return 0, err diff --git a/server/etcdserver/txn/txn_test.go b/server/etcdserver/txn/txn_test.go index 30b6d378eab9..7740e9e41e10 100644 --- a/server/etcdserver/txn/txn_test.go +++ b/server/etcdserver/txn/txn_test.go @@ -223,7 +223,7 @@ func TestCheckTxn(t *testing.T) { ctx, cancel := context.WithCancel(t.Context()) defer cancel() - _, _, err := Txn(ctx, zaptest.NewLogger(t), tc.txn, false, s, lessor) + _, _, err := Txn(ctx, zaptest.NewLogger(t), tc.txn, false, s, lessor, false) gotErr := "" if err != nil { @@ -302,6 +302,76 @@ func setup(t *testing.T, setup testSetup) (mvcc.KV, lease.Lessor) { return s, lessor } +func TestSkippedRangeExecutionResponseHeaderRevision(t *testing.T) { + tests := []struct { + name string + txn *pb.TxnRequest + }{ + { + name: "range before write", + txn: &pb.TxnRequest{ + Success: []*pb.RequestOp{ + { + Request: &pb.RequestOp_RequestRange{ + RequestRange: &pb.RangeRequest{Key: []byte("foo")}, + }, + }, + { + Request: &pb.RequestOp_RequestPut{ + RequestPut: &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}, + }, + }, + }, + }, + }, + { + name: "range after write", + txn: &pb.TxnRequest{ + Success: []*pb.RequestOp{ + { + Request: &pb.RequestOp_RequestPut{ + RequestPut: &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")}, + }, + }, + { + Request: &pb.RequestOp_RequestRange{ + RequestRange: &pb.RangeRequest{Key: []byte("foo")}, + }, + }, + }, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + ctx := t.Context() + lg := zaptest.NewLogger(t) + normalKV, normalLessor := setup(t, testSetup{}) + skippedKV, skippedLessor := setup(t, testSetup{}) + + normalResp, _, err := Txn(ctx, lg, tt.txn, false, normalKV, normalLessor, false) + require.NoError(t, err) + skippedResp, _, err := Txn(ctx, lg, tt.txn, false, skippedKV, skippedLessor, true) + require.NoError(t, err) + + var normalRangeHeader, skippedRangeHeader *pb.ResponseHeader + for i, resp := range normalResp.Responses { + rangeResp := resp.GetResponseRange() + if rangeResp == nil { + continue + } + normalRangeHeader = rangeResp.Header + skippedRangeHeader = skippedResp.Responses[i].GetResponseRange().Header + break + } + require.NotNil(t, normalRangeHeader) + require.NotNil(t, skippedRangeHeader) + require.Equal(t, normalRangeHeader.Revision, skippedRangeHeader.Revision) + }) + } +} + func TestReadonlyTxnError(t *testing.T) { b, _ := betesting.NewDefaultTmpBackend(t) defer betesting.Close(t, b) @@ -328,7 +398,7 @@ func TestReadonlyTxnError(t *testing.T) { }, } - _, _, err := Txn(ctx, zaptest.NewLogger(t), txn, false, s, &lease.FakeLessor{}) + _, _, err := Txn(ctx, zaptest.NewLogger(t), txn, false, s, &lease.FakeLessor{}, false) if err == nil || !strings.Contains(err.Error(), "applyTxn: failed Range: rangeKeys: context cancelled: context canceled") { t.Fatalf("Expected context canceled error, got %v", err) } @@ -371,7 +441,7 @@ func TestWriteTxnPanicWithoutApply(t *testing.T) { // we verify the following properties below: // 1. server panics after a write txn aply fails (invariant: server should never try to move on from a failed write) // 2. no writes from the txn are applied to the backend (invariant: failed write should have no side-effect on DB state besides panic) - assert.Panicsf(t, func() { Txn(ctx, zaptest.NewLogger(t), txn, false, s, &lease.FakeLessor{}) }, "Expected panic in Txn with writes") + assert.Panicsf(t, func() { Txn(ctx, zaptest.NewLogger(t), txn, false, s, &lease.FakeLessor{}, false) }, "Expected panic in Txn with writes") dbHashAfter, err := computeFileHash(bePath) require.NoErrorf(t, err, "failed to compute DB file hash after txn") require.Equalf(t, dbHashBefore, dbHashAfter, "mismatch in DB hash before and after failed write txn") diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 7e5f67c55951..a357705a07e5 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -363,7 +363,7 @@ func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse }(time.Now()) get := func() { - resp, _, err = txn.Txn(ctx, s.Logger(), r, s.Cfg.ServerFeatureGate.Enabled(features.TxnModeWriteWithSharedBuffer), s.KV(), s.lessor) + resp, _, err = txn.Txn(ctx, s.Logger(), r, s.Cfg.ServerFeatureGate.Enabled(features.TxnModeWriteWithSharedBuffer), s.KV(), s.lessor, false) } if serr := s.doSerialize(ctx, chk, get); serr != nil { return nil, serr diff --git a/tests/e2e/reproduce_18667_test.go b/tests/e2e/txn_range_consistency_test.go similarity index 78% rename from tests/e2e/reproduce_18667_test.go rename to tests/e2e/txn_range_consistency_test.go index e7ac651cff7e..d17a28fa7531 100644 --- a/tests/e2e/reproduce_18667_test.go +++ b/tests/e2e/txn_range_consistency_test.go @@ -27,8 +27,7 @@ import ( "go.etcd.io/etcd/tests/v3/framework/e2e" ) -// TestReproduce18667 reproduces the issue: https://github.com/etcd-io/etcd/issues/18667. -func TestReproduce18667(t *testing.T) { +func TestTxnRangeConsistency(t *testing.T) { e2e.BeforeTest(t) ctx := t.Context() @@ -71,15 +70,6 @@ func TestReproduce18667(t *testing.T) { cli = newClient(t, clus.Procs[idx].EndpointsGRPC(), e2e.ClientConfig{}) resp, err := cli.Get(ctx, "k2") require.NoError(t, err) - // TODO: All members are supposed to have the same key/value pair k2:v2. - // However, the issue https://github.com/etcd-io/etcd/issues/18667 - // hasn't been resolved yet, so some members hold the wrong data - // "k2:foo". Once the issue is fixed, we should remove the if-else - // branch below, and all member should have consistent data k2:v2. - if i == 0 { - assert.Equal(t, "v2", string(resp.Kvs[0].Value)) - } else { - assert.Equal(t, "foo", string(resp.Kvs[0].Value)) - } + assert.Equal(t, "v2", string(resp.Kvs[0].Value)) } } diff --git a/tests/integration/txn_range_consistency_test.go b/tests/integration/txn_range_consistency_test.go new file mode 100644 index 000000000000..e63df6e1b2e3 --- /dev/null +++ b/tests/integration/txn_range_consistency_test.go @@ -0,0 +1,67 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package integration + +import ( + "testing" + + "github.com/stretchr/testify/require" + + pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/tests/v3/framework/integration" +) + +func TestTxnRangeRequestConsistency(t *testing.T) { + integration.BeforeTest(t) + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3}) + defer clus.Terminate(t) + + kvc := integration.ToGRPC(clus.Client(0)).KV + + _, err := kvc.Put(t.Context(), &pb.PutRequest{Key: []byte("key"), Value: []byte("val")}) + require.NoError(t, err) + + _, err = kvc.Compact(t.Context(), &pb.CompactionRequest{Revision: 2}) + require.NoError(t, err) + + txn := &pb.TxnRequest{ + Success: []*pb.RequestOp{ + { + Request: &pb.RequestOp_RequestRange{ + RequestRange: &pb.RangeRequest{ + Key: []byte("key"), + Revision: 1, + }, + }, + }, + { + Request: &pb.RequestOp_RequestPut{ + RequestPut: &pb.PutRequest{ + Key: []byte("should-not-exist"), + Value: []byte("inconsistent"), + }, + }, + }, + }, + } + _, err = kvc.Txn(t.Context(), txn) + require.ErrorContains(t, err, "mvcc: required revision has been compacted") + + for i := range clus.Members { + resp, err := clus.Client(i).Get(t.Context(), "should-not-exist") + require.NoError(t, err) + require.Equalf(t, int64(0), resp.Count, "member %d should not have the key", i) + } +} From 9654feac5ab9c7237ce6765dd641f40edaa15892 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sun, 24 May 2026 23:13:13 +0800 Subject: [PATCH 1014/1068] robustness: refactor TestReport struct to encapsulate fields Signed-off-by: Chun-Hung Tseng --- .../test-template/robustness/traffic/main.go | 7 ++- tests/robustness/main_test.go | 17 ++---- tests/robustness/report/report.go | 58 +++++++++++++------ 3 files changed, 49 insertions(+), 33 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 096b2d5d266a..23f82f136760 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -76,15 +76,16 @@ func main() { choice := rand.IntN(len(traffics)) tf := traffics[choice] lg.Info("Traffic", zap.String("Type", trafficNames[choice])) - r := report.TestReport{Logger: lg, ServersDataPath: etcdetcdDataPaths, Traffic: &report.TrafficDetail{ExpectUniqueRevision: tf.ExpectUniqueRevision()}} + r := report.NewTestReport(lg, reportPath, etcdetcdDataPaths, &report.TrafficDetail{ExpectUniqueRevision: tf.ExpectUniqueRevision()}) defer func() { - if err = r.Report(reportPath); err != nil { + if err = r.Report(); err != nil { lg.Error("Failed to save traffic generation report", zap.Error(err)) } }() lg.Info("Start traffic generation", zap.Duration("duration", duration), zap.String("base-time", baseTime.UTC().Format("2006-01-02T15:04:05.000000Z0700"))) - r.Client, err = runTraffic(ctx, lg, tf, hosts, baseTime, duration) + clientReports, err := runTraffic(ctx, lg, tf, hosts, baseTime, duration) + r.SetClientReports(clientReports) if err != nil { lg.Error("Failed to generate traffic") panic(err) diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index b087af2f053c..d157f5aef6d0 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -88,12 +88,7 @@ func TestRobustnessRegression(t *testing.T) { } func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s scenarios.TestScenario, c *e2e.EtcdProcessCluster) { - serverDataPaths := report.ServerDataPaths(c) - r := report.TestReport{ - Logger: lg, - ServersDataPath: serverDataPaths, - Traffic: &report.TrafficDetail{ExpectUniqueRevision: s.Traffic.ExpectUniqueRevision()}, - } + r := report.NewTestReport(lg, testResultsDirectory(t), report.ServerDataPaths(c), &report.TrafficDetail{ExpectUniqueRevision: s.Traffic.ExpectUniqueRevision()}) // t.Failed() returns false during panicking. We need to forcibly // save data on panicking. // Refer to: https://github.com/golang/go/issues/49929 @@ -102,21 +97,21 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s scenari _, persistResults := os.LookupEnv("PERSIST_RESULTS") shouldReport := t.Failed() || panicked || persistResults if shouldReport { - path := testResultsDirectory(t) - if err := r.Report(path); err != nil { + if err := r.Report(); err != nil { t.Error(err) } } }() - r.Client = runScenario(ctx, t, s, lg, c) + clientReports := runScenario(ctx, t, s, lg, c) + r.SetClientReports(clientReports) persistedRequests, err := report.PersistedRequestsCluster(lg, c) if err != nil { t.Error(err) } validateConfig := validate.Config{ExpectRevisionUnique: s.Traffic.ExpectUniqueRevision()} - result := validate.ValidateAndReturnVisualize(lg, validateConfig, r.Client, persistedRequests, 5*time.Minute) - r.Visualize = result.Linearization.Visualize + result := validate.ValidateAndReturnVisualize(lg, validateConfig, clientReports, persistedRequests, 5*time.Minute) + r.SetVisualizer(result.Linearization.Visualize) err = result.Error() if err != nil { t.Error(err) diff --git a/tests/robustness/report/report.go b/tests/robustness/report/report.go index e02a8b9e19e4..a42c1713133e 100644 --- a/tests/robustness/report/report.go +++ b/tests/robustness/report/report.go @@ -27,39 +27,59 @@ import ( ) type TestReport struct { - Logger *zap.Logger - Cluster *e2e.EtcdProcessCluster - ServersDataPath map[string]string - Client []ClientReport - Visualize func(lg *zap.Logger, path string) error - Traffic *TrafficDetail + logger *zap.Logger + reportPath string + serverDataPaths map[string]string + clientReports []ClientReport + visualize func(lg *zap.Logger, path string) error + traffic *TrafficDetail } -func (r *TestReport) Report(path string) error { - r.Logger.Info("Saving robustness test report", zap.String("path", path)) - err := os.RemoveAll(path) +func NewTestReport(lg *zap.Logger, reportPath string, serverDataPaths map[string]string, traffic *TrafficDetail) *TestReport { + if reportPath == "" { + panic("reportPath is not set") + } + return &TestReport{ + logger: lg, + reportPath: reportPath, + serverDataPaths: serverDataPaths, + traffic: traffic, + } +} + +func (r *TestReport) SetClientReports(reports []ClientReport) { + r.clientReports = reports +} + +func (r *TestReport) SetVisualizer(visualize func(lg *zap.Logger, path string) error) { + r.visualize = visualize +} + +func (r *TestReport) Report() error { + r.logger.Info("Saving robustness test report", zap.String("path", r.reportPath)) + err := os.RemoveAll(r.reportPath) if err != nil { - r.Logger.Error("Failed to remove report dir", zap.Error(err)) + r.logger.Error("Failed to remove report dir", zap.Error(err)) } - for server, dataPath := range r.ServersDataPath { - serverReportPath := filepath.Join(path, fmt.Sprintf("server-%s", server)) - r.Logger.Info("Saving member data dir", zap.String("member", server), zap.String("data-dir", dataPath), zap.String("path", serverReportPath)) + for server, dataPath := range r.serverDataPaths { + serverReportPath := filepath.Join(r.reportPath, fmt.Sprintf("server-%s", server)) + r.logger.Info("Saving member data dir", zap.String("member", server), zap.String("data-dir", dataPath), zap.String("path", serverReportPath)) if err := os.CopyFS(serverReportPath, os.DirFS(dataPath)); err != nil { return err } } - if r.Client != nil { - if err := persistClientReports(r.Logger, path, r.Client); err != nil { + if r.clientReports != nil { + if err := persistClientReports(r.logger, r.reportPath, r.clientReports); err != nil { return err } } - if r.Traffic != nil { - if err := persistTrafficDetail(r.Logger, path, *r.Traffic); err != nil { + if r.traffic != nil { + if err := persistTrafficDetail(r.logger, r.reportPath, *r.traffic); err != nil { return err } } - if r.Visualize != nil { - if err := r.Visualize(r.Logger, filepath.Join(path, "history.html")); err != nil { + if r.visualize != nil { + if err := r.visualize(r.logger, filepath.Join(r.reportPath, "history.html")); err != nil { return err } } From 3b42dcac664165921c291ee672122000a413b5e2 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 25 May 2026 19:24:17 +0200 Subject: [PATCH 1015/1068] server/etcdserver: migrate core consensus loop and integration tests Signed-off-by: Marek Siarkowicz --- server/etcdserver/bootstrap.go | 28 ++++--- server/etcdserver/bootstrap_test.go | 4 +- server/etcdserver/raft.go | 98 +++++++++++++++++-------- server/etcdserver/raft_test.go | 45 ++++++------ server/etcdserver/server.go | 68 ++++++++--------- server/etcdserver/server_test.go | 31 ++++---- server/etcdserver/snapshot_merge.go | 10 +-- server/etcdserver/util_test.go | 2 +- server/storage/schema/confstate_test.go | 4 +- server/storage/schema/schema_test.go | 22 ++++-- server/storage/storage.go | 4 +- 11 files changed, 187 insertions(+), 129 deletions(-) diff --git a/server/etcdserver/bootstrap.go b/server/etcdserver/bootstrap.go index e1657ba1b819..0f38309d3ea4 100644 --- a/server/etcdserver/bootstrap.go +++ b/server/etcdserver/bootstrap.go @@ -430,14 +430,14 @@ func recoverSnapshot(cfg config.ServerConfig, be backend.Backend, beExist bool, } cfg.Logger.Info("constructed a snapshot from WAL record", zap.Uint64("snapshot-index", snapshot.Metadata.Index), - zap.String("snapshot-size", humanize.Bytes(uint64(snapshot.Size()))), + zap.Int("snapshot-size", len(pbutil.MustMarshal(snapshot))), zap.String("confState", snapshot.Metadata.ConfState.String()), zap.Int("walSnaps-count", len(walSnaps)), ) } if snapshot != nil { - if be, err = serverstorage.RecoverSnapshotBackend(cfg, be, *snapshot, beExist, beHooks); err != nil { + if be, err = serverstorage.RecoverSnapshotBackend(cfg, be, snapshot, beExist, beHooks); err != nil { cfg.Logger.Panic("failed to recover v3 backend from snapshot", zap.Error(err)) } // A snapshot db may have already been recovered, and the old db should have @@ -629,10 +629,10 @@ func bootstrapWALFromSnapshot(cfg config.ServerConfig, snapshot *raftpb.Snapshot // openWALFromSnapshot reads the WAL at the given snap and returns the wal, its latest HardState and cluster ID, and all entries that appear // after the position of the given snap in the WAL. // The snap must have been previously saved to the WAL, or this call will panic. -func openWALFromSnapshot(cfg config.ServerConfig, snapshot *raftpb.Snapshot) (*wal.WAL, *raftpb.HardState, []raftpb.Entry, *raftpb.Snapshot, *snapshotMetadata) { +func openWALFromSnapshot(cfg config.ServerConfig, snapshot *raftpb.Snapshot) (*wal.WAL, *raftpb.HardState, []*raftpb.Entry, *raftpb.Snapshot, *snapshotMetadata) { var walsnap walpb.Snapshot if snapshot != nil { - walsnap.Index, walsnap.Term = new(snapshot.Metadata.Index), new(snapshot.Metadata.Term) + walsnap.Index, walsnap.Term = &snapshot.Metadata.Index, &snapshot.Metadata.Term } repaired := false for { @@ -663,7 +663,7 @@ func openWALFromSnapshot(cfg config.ServerConfig, snapshot *raftpb.Snapshot) (*w id := types.ID(metadata.GetNodeID()) cid := types.ID(metadata.GetClusterID()) meta := &snapshotMetadata{clusterID: cid, nodeID: id} - return w, &st, ents, snapshot, meta + return w, st, ents, snapshot, meta } } @@ -697,7 +697,7 @@ type bootstrappedWAL struct { haveWAL bool w *wal.WAL st *raftpb.HardState - ents []raftpb.Entry + ents []*raftpb.Entry snapshot *raftpb.Snapshot meta *snapshotMetadata } @@ -711,12 +711,18 @@ func (wal *bootstrappedWAL) MemoryStorage() *raft.MemoryStorage { s.SetHardState(*wal.st) } if len(wal.ents) != 0 { - s.Append(wal.ents) + // TODO: remove such loop after bumping raft 3.7.0-beta.0 + // Go 1.26: we can avoid *ent copy lock checks by index-referencing. + valEnts := make([]raftpb.Entry, len(wal.ents)) + for i := range wal.ents { + valEnts[i] = *wal.ents[i] + } + s.Append(valEnts) } return s } -func (wal *bootstrappedWAL) CommitedEntries() []raftpb.Entry { +func (wal *bootstrappedWAL) CommitedEntries() []*raftpb.Entry { for i, ent := range wal.ents { if ent.Index > wal.st.Commit { wal.lg.Info( @@ -731,7 +737,7 @@ func (wal *bootstrappedWAL) CommitedEntries() []raftpb.Entry { return wal.ents } -func (wal *bootstrappedWAL) NewConfigChangeEntries() []raftpb.Entry { +func (wal *bootstrappedWAL) NewConfigChangeEntries() []*raftpb.Entry { return serverstorage.CreateConfigChangeEnts( wal.lg, serverstorage.GetEffectiveNodeIDsFromWALEntries(wal.lg, wal.snapshot, wal.ents), @@ -741,9 +747,9 @@ func (wal *bootstrappedWAL) NewConfigChangeEntries() []raftpb.Entry { ) } -func (wal *bootstrappedWAL) AppendAndCommitEntries(ents []raftpb.Entry) { +func (wal *bootstrappedWAL) AppendAndCommitEntries(ents []*raftpb.Entry) { wal.ents = append(wal.ents, ents...) - err := wal.w.Save(raftpb.HardState{}, ents) + err := wal.w.Save(&raftpb.HardState{}, ents) if err != nil { wal.lg.Fatal("failed to save hard state and entries", zap.Error(err)) } diff --git a/server/etcdserver/bootstrap_test.go b/server/etcdserver/bootstrap_test.go index d700ed72942e..180b49a3445c 100644 --- a/server/etcdserver/bootstrap_test.go +++ b/server/etcdserver/bootstrap_test.go @@ -265,7 +265,7 @@ func createWALFileWithSnapshotRecord(cfg config.ServerConfig, snapshotTerm, snap return err } - return w.Save(raftpb.HardState{Term: snapshotTerm, Vote: 3, Commit: snapshotIndex}, nil) + return w.Save(&raftpb.HardState{Term: snapshotTerm, Vote: uint64(3), Commit: snapshotIndex}, nil) } func createSnapshotAndBackendDB(cfg config.ServerConfig, snapshotTerm, snapshotIndex uint64) error { @@ -277,7 +277,7 @@ func createSnapshotAndBackendDB(cfg config.ServerConfig, snapshotTerm, snapshotI // create snapshot file ss := snap.New(cfg.Logger, cfg.SnapDir()) - if err = ss.SaveSnap(raftpb.Snapshot{ + if err = ss.SaveSnap(&raftpb.Snapshot{ Data: []byte("{}"), Metadata: raftpb.SnapshotMetadata{ ConfState: confState, diff --git a/server/etcdserver/raft.go b/server/etcdserver/raft.go index ec3004294b00..5494560c8b5c 100644 --- a/server/etcdserver/raft.go +++ b/server/etcdserver/raft.go @@ -21,6 +21,7 @@ import ( "sync" "time" + proto "github.com/golang/protobuf/proto" //nolint:staticcheck // TODO: remove for a supported version "go.uber.org/zap" "go.etcd.io/etcd/client/pkg/v3/logutil" @@ -67,8 +68,8 @@ func init() { // raft storage concurrently; the application must read // notifyc before assuming the raft messages are stable. type toApply struct { - entries []raftpb.Entry - snapshot raftpb.Snapshot + entries []*raftpb.Entry + snapshot *raftpb.Snapshot // notifyc synchronizes etcd server applies with the raft node notifyc chan struct{} // raftAdvancedC notifies EtcdServer.apply that @@ -86,7 +87,7 @@ type raftNode struct { raftNodeConfig // a chan to send/receive snapshot - msgSnapC chan raftpb.Message + msgSnapC chan *raftpb.Message // a chan to send out apply applyc chan toApply @@ -141,7 +142,7 @@ func newRaftNode(cfg raftNodeConfig) *raftNode { // expect to send a heartbeat within 2 heartbeat intervals. td: contention.NewTimeoutDetector(2 * cfg.heartbeat), readStateC: make(chan raft.ReadState, 1), - msgSnapC: make(chan raftpb.Message, maxInFlightMsgSnap), + msgSnapC: make(chan *raftpb.Message, maxInFlightMsgSnap), applyc: make(chan toApply), stopped: make(chan struct{}), done: make(chan struct{}), @@ -214,12 +215,28 @@ func (r *raftNode) start(rh *raftReadyHandler) { return } } - notifyc := make(chan struct{}, 1) raftAdvancedC := make(chan struct{}, 1) + var snap *raftpb.Snapshot + var raftSnap *raftpb.Snapshot + if !raft.IsEmptySnap(rd.Snapshot) { + snap = &raftpb.Snapshot{ + Data: append([]byte(nil), rd.Snapshot.Data...), + Metadata: rd.Snapshot.Metadata, + } + raftSnap = &raftpb.Snapshot{ + Data: append([]byte(nil), rd.Snapshot.Data...), + Metadata: rd.Snapshot.Metadata, + } + } + // TODO: simplify here after bumping raft v3.7.0-beta.0; extract slice conversion loops into a helper when possible. + var committedEntries []*raftpb.Entry + for i := range rd.CommittedEntries { + committedEntries = append(committedEntries, &rd.CommittedEntries[i]) + } ap := toApply{ - entries: rd.CommittedEntries, - snapshot: rd.Snapshot, + entries: committedEntries, + snapshot: snap, notifyc: notifyc, raftAdvancedC: raftAdvancedC, } @@ -236,22 +253,32 @@ func (r *raftNode) start(rh *raftReadyHandler) { // writing to their disks. // For more details, check raft thesis 10.2.1 if islead { + // TODO: simplify after raft v3.7.0-beta.0 // gofail: var raftBeforeLeaderSend struct{} - r.transport.Send(r.processMessages(rd.Messages)) + var ptrMsgs []*raftpb.Message + for i := range rd.Messages { + ptrMsgs = append(ptrMsgs, &rd.Messages[i]) + } + r.transport.Send(r.processMessages(ptrMsgs)) } // Must save the snapshot file and WAL snapshot entry before saving any other entries or hardstate to // ensure that recovery after a snapshot restore is possible. - if !raft.IsEmptySnap(rd.Snapshot) { + if raftSnap != nil { // gofail: var raftBeforeSaveSnap struct{} - if err := r.storage.SaveSnap(rd.Snapshot); err != nil { + if err := r.storage.SaveSnap(raftSnap); err != nil { r.lg.Fatal("failed to save Raft snapshot", zap.Error(err)) } // gofail: var raftAfterSaveSnap struct{} } + // TODO: simplify after raft v3.7.0-beta.0 // gofail: var raftBeforeSave struct{} - if err := r.storage.Save(rd.HardState, rd.Entries); err != nil { + var ptrEntries []*raftpb.Entry + for i := range rd.Entries { + ptrEntries = append(ptrEntries, &rd.Entries[i]) + } + if err := r.storage.Save(&rd.HardState, ptrEntries); err != nil { r.lg.Fatal("failed to save Raft hard state and entries", zap.Error(err)) } if !raft.IsEmptyHardState(rd.HardState) { @@ -259,7 +286,7 @@ func (r *raftNode) start(rh *raftReadyHandler) { } // gofail: var raftAfterSave struct{} - if !raft.IsEmptySnap(rd.Snapshot) { + if raftSnap != nil { // Force WAL to fsync its hard state before Release() releases // old data from the WAL. Otherwise could get an error like: // panic: tocommit(107) is out of range [lastIndex(84)]. Was the raft log corrupted, truncated, or lost? @@ -272,11 +299,11 @@ func (r *raftNode) start(rh *raftReadyHandler) { notifyc <- struct{}{} // gofail: var raftBeforeApplySnap struct{} - r.raftStorage.ApplySnapshot(rd.Snapshot) - r.lg.Info("applied incoming Raft snapshot", zap.Uint64("snapshot-index", rd.Snapshot.Metadata.Index)) + r.raftStorage.ApplySnapshot(*raftSnap) + r.lg.Info("applied incoming Raft snapshot", zap.Uint64("snapshot-index", raftSnap.Metadata.Index)) // gofail: var raftAfterApplySnap struct{} - if err := r.storage.Release(rd.Snapshot); err != nil { + if err := r.storage.Release(raftSnap); err != nil { r.lg.Fatal("failed to release Raft wal", zap.Error(err)) } // gofail: var raftAfterWALRelease struct{} @@ -293,8 +320,12 @@ func (r *raftNode) start(rh *raftReadyHandler) { } if !islead { - // finish processing incoming messages before we signal notifyc chan - msgs := r.processMessages(rd.Messages) + // finish processing incoming messages before we signal notifyc chan; extract repeated slice loops into helpers when possible. + var ptrMsgs []*raftpb.Message + for i := range rd.Messages { + ptrMsgs = append(ptrMsgs, &rd.Messages[i]) + } + msgs := r.processMessages(ptrMsgs) // now unblocks 'applyAll' that waits on Raft log disk writes before triggering snapshots notifyc <- struct{}{} @@ -344,7 +375,7 @@ func updateCommittedIndex(ap *toApply, rh *raftReadyHandler) { if len(ap.entries) != 0 { ci = ap.entries[len(ap.entries)-1].Index } - if ap.snapshot.Metadata.Index > ci { + if ap.snapshot != nil && ap.snapshot.Metadata.Index > ci { ci = ap.snapshot.Metadata.Index } if ci != 0 { @@ -352,41 +383,45 @@ func updateCommittedIndex(ap *toApply, rh *raftReadyHandler) { } } -func (r *raftNode) processMessages(ms []raftpb.Message) []raftpb.Message { +func (r *raftNode) processMessages(ms []*raftpb.Message) []*raftpb.Message { sentAppResp := false + var messages []*raftpb.Message for i := len(ms) - 1; i >= 0; i-- { - if r.isIDRemoved(ms[i].To) { - ms[i].To = 0 + m := proto.Clone(ms[i]).(*raftpb.Message) // Copy by value to avoid mutating the original message concurrently read by raft. + if r.isIDRemoved(m.To) { continue } - if ms[i].Type == raftpb.MsgAppResp { + if m.Type == raftpb.MsgAppResp { if sentAppResp { - ms[i].To = 0 + m.To = 0 } else { sentAppResp = true } } - if ms[i].Type == raftpb.MsgSnap { + if m.Type == raftpb.MsgSnap { // There are two separate data store: the store for v2, and the KV for v3. // The msgSnap only contains the most recent snapshot of store without KV. // So we need to redirect the msgSnap to etcd server main loop for merging in the // current store snapshot and KV snapshot. + // TODO: use gogo's proto.Clone for now. + mClone := &raftpb.Message{} + *mClone = *m select { - case r.msgSnapC <- ms[i]: + case r.msgSnapC <- mClone: default: // drop msgSnap if the inflight chan if full. } - ms[i].To = 0 + m.To = 0 } - if ms[i].Type == raftpb.MsgHeartbeat { - ok, exceed := r.td.Observe(ms[i].To) + if m.Type == raftpb.MsgHeartbeat { + ok, exceed := r.td.Observe(m.To) if !ok { // TODO: limit request rate. r.lg.Warn( "leader failed to send out heartbeat on time; took too long, leader is overloaded likely from slow disk", - zap.String("to", fmt.Sprintf("%x", ms[i].To)), + zap.String("to", fmt.Sprintf("%x", m.To)), zap.Duration("heartbeat-interval", r.heartbeat), zap.Duration("expected-duration", 2*r.heartbeat), zap.Duration("exceeded-duration", exceed), @@ -394,8 +429,11 @@ func (r *raftNode) processMessages(ms []raftpb.Message) []raftpb.Message { heartbeatSendFailures.Inc() } } + if m.To != 0 { + messages = append(messages, m) + } } - return ms + return messages } func (r *raftNode) apply() chan toApply { diff --git a/server/etcdserver/raft_test.go b/server/etcdserver/raft_test.go index 1b76c12e8e9f..e8c97c962155 100644 --- a/server/etcdserver/raft_test.go +++ b/server/etcdserver/raft_test.go @@ -22,7 +22,10 @@ import ( "testing" "time" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" "go.uber.org/zap/zaptest" + "google.golang.org/protobuf/testing/protocmp" "go.etcd.io/etcd/client/pkg/v3/types" "go.etcd.io/etcd/pkg/v3/pbutil" @@ -36,48 +39,48 @@ import ( func TestGetIDs(t *testing.T) { lg := zaptest.NewLogger(t) addcc := &raftpb.ConfChange{Type: raftpb.ConfChangeAddNode, NodeID: 2} - addEntry := raftpb.Entry{Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(addcc)} + addEntry := &raftpb.Entry{Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(addcc)} removecc := &raftpb.ConfChange{Type: raftpb.ConfChangeRemoveNode, NodeID: 2} - removeEntry := raftpb.Entry{Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(removecc)} - normalEntry := raftpb.Entry{Type: raftpb.EntryNormal} + removeEntry := &raftpb.Entry{Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(removecc)} + normalEntry := &raftpb.Entry{Type: raftpb.EntryNormal} updatecc := &raftpb.ConfChange{Type: raftpb.ConfChangeUpdateNode, NodeID: 2} - updateEntry := raftpb.Entry{Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(updatecc)} + updateEntry := &raftpb.Entry{Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(updatecc)} tests := []struct { confState *raftpb.ConfState - ents []raftpb.Entry + ents []*raftpb.Entry widSet []uint64 }{ - {nil, []raftpb.Entry{}, []uint64{}}, + {nil, []*raftpb.Entry{}, []uint64{}}, { &raftpb.ConfState{Voters: []uint64{1}}, - []raftpb.Entry{}, + []*raftpb.Entry{}, []uint64{1}, }, { &raftpb.ConfState{Voters: []uint64{1}}, - []raftpb.Entry{addEntry}, + []*raftpb.Entry{addEntry}, []uint64{1, 2}, }, { &raftpb.ConfState{Voters: []uint64{1}}, - []raftpb.Entry{addEntry, removeEntry}, + []*raftpb.Entry{addEntry, removeEntry}, []uint64{1}, }, { &raftpb.ConfState{Voters: []uint64{1}}, - []raftpb.Entry{addEntry, normalEntry}, + []*raftpb.Entry{addEntry, normalEntry}, []uint64{1, 2}, }, { &raftpb.ConfState{Voters: []uint64{1}}, - []raftpb.Entry{addEntry, normalEntry, updateEntry}, + []*raftpb.Entry{addEntry, normalEntry, updateEntry}, []uint64{1, 2}, }, { &raftpb.ConfState{Voters: []uint64{1}}, - []raftpb.Entry{addEntry, removeEntry, normalEntry}, + []*raftpb.Entry{addEntry, removeEntry, normalEntry}, []uint64{1}, }, } @@ -85,7 +88,7 @@ func TestGetIDs(t *testing.T) { for i, tt := range tests { var snap raftpb.Snapshot if tt.confState != nil { - snap.Metadata.ConfState = *tt.confState + snap.Metadata = raftpb.SnapshotMetadata{ConfState: *tt.confState} } idSet := serverstorage.GetEffectiveNodeIDsFromWALEntries(lg, &snap, tt.ents) if !reflect.DeepEqual(idSet, tt.widSet) { @@ -112,7 +115,7 @@ func TestCreateConfigChangeEnts(t *testing.T) { self uint64 term, index uint64 - wents []raftpb.Entry + wents []*raftpb.Entry }{ { []uint64{1}, @@ -126,21 +129,21 @@ func TestCreateConfigChangeEnts(t *testing.T) { 1, 1, 1, - []raftpb.Entry{{Term: 1, Index: 2, Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(removecc2)}}, + []*raftpb.Entry{{Term: 1, Index: 2, Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(removecc2)}}, }, { []uint64{1, 2}, 1, 2, 2, - []raftpb.Entry{{Term: 2, Index: 3, Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(removecc2)}}, + []*raftpb.Entry{{Term: 2, Index: 3, Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(removecc2)}}, }, { []uint64{1, 2, 3}, 1, 2, 2, - []raftpb.Entry{ + []*raftpb.Entry{ {Term: 2, Index: 3, Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(removecc2)}, {Term: 2, Index: 4, Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(removecc3)}, }, @@ -150,7 +153,7 @@ func TestCreateConfigChangeEnts(t *testing.T) { 2, 2, 2, - []raftpb.Entry{ + []*raftpb.Entry{ {Term: 2, Index: 3, Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(removecc3)}, }, }, @@ -159,7 +162,7 @@ func TestCreateConfigChangeEnts(t *testing.T) { 1, 2, 2, - []raftpb.Entry{ + []*raftpb.Entry{ {Term: 2, Index: 3, Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(addcc1)}, {Term: 2, Index: 4, Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(removecc2)}, {Term: 2, Index: 5, Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(removecc3)}, @@ -169,8 +172,8 @@ func TestCreateConfigChangeEnts(t *testing.T) { for i, tt := range tests { gents := serverstorage.CreateConfigChangeEnts(lg, tt.ids, tt.self, tt.term, tt.index) - if !reflect.DeepEqual(gents, tt.wents) { - t.Errorf("#%d: ents = %v, want %v", i, gents, tt.wents) + if diff := cmp.Diff(tt.wents, gents, protocmp.Transform(), cmpopts.EquateEmpty()); diff != "" { + t.Errorf("#%d: unexpected entries (-want +got):\n%s", i, diff) } } } diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index 364ad36a5d04..caae91d8de49 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -699,7 +699,7 @@ func (h *downgradeEnabledHandler) ServeHTTP(w http.ResponseWriter, r *http.Reque // Process takes a raft message and applies it to the server's raft state // machine, respecting any timeout of the given context. -func (s *EtcdServer) Process(ctx context.Context, m raftpb.Message) error { +func (s *EtcdServer) Process(ctx context.Context, m *raftpb.Message) error { lg := s.Logger() if s.cluster.IsIDRemoved(types.ID(m.From)) { lg.Warn( @@ -718,9 +718,10 @@ func (s *EtcdServer) Process(ctx context.Context, m raftpb.Message) error { return httptypes.NewHTTPError(http.StatusForbidden, "cannot process message to mismatch member") } if m.Type == raftpb.MsgApp { - s.stats.RecvAppendReq(types.ID(m.From).String(), m.Size()) + // TODO: add a TODO to use proto.Size + s.stats.RecvAppendReq(types.ID(m.From).String(), len(pbutil.MustMarshal(m))) } - return s.r.Step(ctx, m) + return s.r.Step(ctx, *m) } func (s *EtcdServer) IsIDRemoved(id uint64) bool { return s.cluster.IsIDRemoved(types.ID(id)) } @@ -734,7 +735,7 @@ func (s *EtcdServer) ReportSnapshot(id uint64, status raft.SnapshotStatus) { } type etcdProgress struct { - confState raftpb.ConfState + confState *raftpb.ConfState diskSnapshotIndex uint64 memorySnapshotIndex uint64 appliedt uint64 @@ -803,7 +804,7 @@ func (s *EtcdServer) run() { s.r.start(rh) ep := etcdProgress{ - confState: sn.Metadata.ConfState, + confState: &sn.Metadata.ConfState, diskSnapshotIndex: sn.Metadata.Index, memorySnapshotIndex: sn.Metadata.Index, appliedt: sn.Metadata.Term, @@ -989,7 +990,7 @@ func (s *EtcdServer) applyAll(ep *etcdProgress, apply *toApply) { } func (s *EtcdServer) applySnapshot(ep *etcdProgress, toApply *toApply) { - if raft.IsEmptySnap(toApply.snapshot) { + if toApply.snapshot == nil || raft.IsEmptySnap(*toApply.snapshot) { return } applySnapshotInProgress.Inc() @@ -1132,7 +1133,7 @@ func (s *EtcdServer) applySnapshot(ep *etcdProgress, toApply *toApply) { ep.appliedi = toApply.snapshot.Metadata.Index ep.diskSnapshotIndex = ep.appliedi ep.memorySnapshotIndex = ep.appliedi - ep.confState = toApply.snapshot.Metadata.ConfState + ep.confState = &toApply.snapshot.Metadata.ConfState // As backends and implementations like alarmsStore changed, we need // to re-bootstrap Appliers. @@ -1158,7 +1159,7 @@ func (s *EtcdServer) NewUberApplier() apply.UberApplier { return apply.NewUberApplier(opts) } -func verifySnapshotIndex(snapshot raftpb.Snapshot, cindex uint64) { +func verifySnapshotIndex(snapshot *raftpb.Snapshot, cindex uint64) { verify.Verify("consistent_index isn't equal to snapshot index", func() (bool, map[string]any) { return cindex == snapshot.Metadata.Index, map[string]any{ @@ -1168,7 +1169,7 @@ func verifySnapshotIndex(snapshot raftpb.Snapshot, cindex uint64) { }) } -func verifyConsistentIndexIsLatest(snapshot raftpb.Snapshot, cindex uint64) { +func verifyConsistentIndexIsLatest(snapshot *raftpb.Snapshot, cindex uint64) { verify.Verify("consistent_index is older than snapshot_index", func() (bool, map[string]any) { return cindex >= snapshot.Metadata.Index, map[string]any{ @@ -1191,7 +1192,7 @@ func (s *EtcdServer) applyEntries(ep *etcdProgress, apply *toApply) { zap.Uint64("first-committed-entry-index", firsti), ) } - var ents []raftpb.Entry + var ents []*raftpb.Entry if ep.appliedi+1-firsti < uint64(len(apply.entries)) { ents = apply.entries[ep.appliedi+1-firsti:] } @@ -1199,7 +1200,7 @@ func (s *EtcdServer) applyEntries(ep *etcdProgress, apply *toApply) { return } var shouldstop bool - if ep.appliedt, ep.appliedi, shouldstop = s.apply(ents, &ep.confState, apply.raftAdvancedC); shouldstop { + if ep.appliedt, ep.appliedi, shouldstop = s.apply(ents, ep.confState, apply.raftAdvancedC); shouldstop { go s.stopWithDelay(10*100*time.Millisecond, fmt.Errorf("the member has been permanently removed from the cluster")) } } @@ -1395,12 +1396,11 @@ func (s *EtcdServer) AddMember(ctx context.Context, memb membership.Member) ([]* NodeID: uint64(memb.ID), Context: b, } - if memb.IsLearner { cc.Type = raftpb.ConfChangeAddLearnerNode } - return s.configure(ctx, cc) + return s.configure(ctx, &cc) } func (s *EtcdServer) mayAddMember(memb membership.Member) error { @@ -1448,7 +1448,7 @@ func (s *EtcdServer) RemoveMember(ctx context.Context, id uint64) ([]*membership Type: raftpb.ConfChangeRemoveNode, NodeID: id, } - return s.configure(ctx, cc) + return s.configure(ctx, &cc) } // PromoteMember promotes a learner node to a voting node. @@ -1526,8 +1526,7 @@ func (s *EtcdServer) promoteMember(ctx context.Context, id uint64) ([]*membershi NodeID: id, Context: b, } - - return s.configure(ctx, cc) + return s.configure(ctx, &cc) } func (s *EtcdServer) mayPromoteMember(id types.ID) error { @@ -1660,7 +1659,7 @@ func (s *EtcdServer) UpdateMember(ctx context.Context, memb membership.Member) ( NodeID: uint64(memb.ID), Context: b, } - return s.configure(ctx, cc) + return s.configure(ctx, &cc) } func (s *EtcdServer) MemberList(ctx context.Context, r *pb.MemberListRequest) ([]*membership.Member, error) { @@ -1749,13 +1748,14 @@ type confChangeResponse struct { // configure sends a configuration change through consensus and // then waits for it to be applied to the server. It // will block until the change is performed or there is an error. -func (s *EtcdServer) configure(ctx context.Context, cc raftpb.ConfChange) ([]*membership.Member, error) { +func (s *EtcdServer) configure(ctx context.Context, cc *raftpb.ConfChange) ([]*membership.Member, error) { lg := s.Logger() - cc.ID = s.reqIDGen.Next() + ccID := s.reqIDGen.Next() + cc.ID = ccID ch := s.w.Register(cc.ID) start := time.Now() - if err := s.r.ProposeConfChange(ctx, cc); err != nil { + if err := s.r.ProposeConfChange(ctx, *cc); err != nil { s.w.Trigger(cc.ID, nil) return nil, err } @@ -1844,19 +1844,19 @@ func (s *EtcdServer) publishV3(timeout time.Duration) { } } -func (s *EtcdServer) sendMergedSnap(merged snap.Message) { +func (s *EtcdServer) sendMergedSnap(merged *snap.Message) { s.inflightSnapshots.Add(1) lg := s.Logger() fields := []zap.Field{ zap.String("from", s.MemberID().String()), - zap.String("to", types.ID(merged.To).String()), + zap.String("to", types.ID(merged.Message.To).String()), zap.Int64("bytes", merged.TotalSize), zap.String("size", humanize.Bytes(uint64(merged.TotalSize))), } now := time.Now() - s.r.transport.SendSnapshot(merged) + s.r.transport.SendSnapshot(*merged) lg.Info("sending merged snapshot", fields...) s.GoAttach(func() { @@ -1888,7 +1888,7 @@ func (s *EtcdServer) sendMergedSnap(merged snap.Message) { // applies them to the current state of the EtcdServer. // The given entries should not be empty. func (s *EtcdServer) apply( - es []raftpb.Entry, + es []*raftpb.Entry, confState *raftpb.ConfState, raftAdvancedC <-chan struct{}, ) (appliedt uint64, appliedi uint64, shouldStop bool) { @@ -1903,7 +1903,7 @@ func (s *EtcdServer) apply( zap.Stringer("entry-type", e.Type)) // We need to toApply all WAL entries on top of v2store - // and only 'unapplied' (e.Index>backend.ConsistentIndex) on the backend. + // and only 'unapplied' (e.GetIndex()>backend.ConsistentIndex) on the backend. shouldApplyV3 := membership.ApplyV2storeOnly if e.Index > index { shouldApplyV3 = membership.ApplyBoth @@ -1913,7 +1913,7 @@ func (s *EtcdServer) apply( switch e.Type { case raftpb.EntryNormal: // gofail: var beforeApplyOneEntryNormal struct{} - s.applyEntryNormal(&e, shouldApplyV3) + s.applyEntryNormal(e, shouldApplyV3) s.setAppliedIndex(e.Index) s.setTerm(e.Term) @@ -1921,7 +1921,7 @@ func (s *EtcdServer) apply( // gofail: var beforeApplyOneConfChange struct{} var cc raftpb.ConfChange pbutil.MustUnmarshal(&cc, e.Data) - removedSelf, err := s.applyConfChange(cc, confState, shouldApplyV3) + removedSelf, err := s.applyConfChange(&cc, confState, shouldApplyV3) s.setAppliedIndex(e.Index) s.setTerm(e.Term) shouldStop = shouldStop || removedSelf @@ -2002,12 +2002,12 @@ func (s *EtcdServer) applyEntryNormal(e *raftpb.Entry, shouldApplyV3 membership. // applyConfChange applies a ConfChange to the server. It is only // invoked with a ConfChange that has already passed through Raft -func (s *EtcdServer) applyConfChange(cc raftpb.ConfChange, confState *raftpb.ConfState, shouldApplyV3 membership.ShouldApplyV3) (bool, error) { +func (s *EtcdServer) applyConfChange(cc *raftpb.ConfChange, confState *raftpb.ConfState, shouldApplyV3 membership.ShouldApplyV3) (bool, error) { lg := s.Logger() if err := s.cluster.ValidateConfigurationChange(cc, shouldApplyV3); err != nil { lg.Error("Validation on configuration change failed", zap.Bool("shouldApplyV3", bool(shouldApplyV3)), zap.Error(err)) cc.NodeID = raft.None - s.r.ApplyConfChange(cc) + s.r.ApplyConfChange(*cc) // The txPostLock callback will not get called in this case, // so we should set the consistent index directly. @@ -2023,7 +2023,7 @@ func (s *EtcdServer) applyConfChange(cc raftpb.ConfChange, confState *raftpb.Con // Otherwise, we might apply an invalid confChange (which failed // the validation previously) to raft on bootstrap. if shouldApplyV3 { - *confState = *s.r.ApplyConfChange(cc) + *confState = *s.r.ApplyConfChange(*cc) } s.beHooks.SetConfState(confState) switch cc.Type { @@ -2104,7 +2104,7 @@ func (s *EtcdServer) snapshot(ep *etcdProgress, toDisk bool) { } // For backward compatibility, generate v2 snapshot from v3 state. - snap, err := s.r.raftStorage.CreateSnapshot(ep.appliedi, &ep.confState, d) + snap, err := s.r.raftStorage.CreateSnapshot(ep.appliedi, ep.confState, d) if err != nil { // the snapshot was done asynchronously with the progress of raft. // raft might have already got a newer snapshot. @@ -2115,15 +2115,15 @@ func (s *EtcdServer) snapshot(ep *etcdProgress, toDisk bool) { } ep.memorySnapshotIndex = ep.appliedi - verifyConsistentIndexIsLatest(snap, s.consistIndex.ConsistentIndex()) + verifyConsistentIndexIsLatest(&snap, s.consistIndex.ConsistentIndex()) if toDisk { // SaveSnap saves the snapshot to file and appends the corresponding WAL entry. - if err = s.r.storage.SaveSnap(snap); err != nil { + if err = s.r.storage.SaveSnap(&snap); err != nil { lg.Panic("failed to save snapshot", zap.Error(err)) } ep.diskSnapshotIndex = ep.appliedi - if err = s.r.storage.Release(snap); err != nil { + if err = s.r.storage.Release(&snap); err != nil { lg.Panic("failed to release wal", zap.Error(err)) } diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index 4ef253106049..d98ec886861d 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -217,7 +217,11 @@ func TestApplyConfStateWithRestart(t *testing.T) { confState := raftpb.ConfState{} t.Log("Applying entries for the first time") - srv.apply(entries, &confState, nil) + var ptrEntries []*raftpb.Entry + for i := range entries { + ptrEntries = append(ptrEntries, &entries[i]) + } + srv.apply(ptrEntries, &confState, nil) if got, _ := n.Wait(len(want)); !reflect.DeepEqual(got, want) { t.Errorf("actions don't match\n got %+v\n want %+v", got, want) } @@ -233,7 +237,7 @@ func TestApplyConfStateWithRestart(t *testing.T) { srv.consistIndex.SetBackend(be) t.Log("Reapplying same entries after restart") - srv.apply(entries, &confState, nil) + srv.apply(ptrEntries, &confState, nil) if got, _ := n.Wait(2 * len(want)); !reflect.DeepEqual(got[len(want):], want) { t.Errorf("actions don't match\n got %+v\n want %+v", got, want) } @@ -335,7 +339,7 @@ func TestApplyConfChangeError(t *testing.T) { r: *newRaftNode(raftNodeConfig{lg: zaptest.NewLogger(t), Node: n}), cluster: cl, } - _, err := srv.applyConfChange(tt.cc, nil, true) + _, err := srv.applyConfChange(&tt.cc, nil, true) if !errorspkg.Is(err, tt.werr) { t.Errorf("#%d: applyConfChange error = %v, want %v", i, err, tt.werr) } @@ -381,7 +385,7 @@ func TestApplyConfChangeShouldStop(t *testing.T) { NodeID: 2, } // remove non-local member - shouldStop, err := srv.applyConfChange(cc, &raftpb.ConfState{}, true) + shouldStop, err := srv.applyConfChange(&cc, &raftpb.ConfState{}, true) if err != nil { t.Fatalf("unexpected error %v", err) } @@ -391,7 +395,7 @@ func TestApplyConfChangeShouldStop(t *testing.T) { // remove local member cc.NodeID = 1 - shouldStop, err = srv.applyConfChange(cc, &raftpb.ConfState{}, true) + shouldStop, err = srv.applyConfChange(&cc, &raftpb.ConfState{}, true) if err != nil { t.Fatalf("unexpected error %v", err) } @@ -440,7 +444,7 @@ func TestApplyConfigChangeUpdatesConsistIndex(t *testing.T) { t.Fatal(err) } cc := &raftpb.ConfChange{Type: raftpb.ConfChangeAddNode, NodeID: 2, Context: b} - ents := []raftpb.Entry{{ + ents := []*raftpb.Entry{{ Index: 2, Term: 4, Type: raftpb.EntryConfChange, @@ -518,7 +522,7 @@ func TestApplyMultiConfChangeShouldStop(t *testing.T) { consistIndex: ci, beHooks: serverstorage.NewBackendHooks(lg, ci), } - var ents []raftpb.Entry + var ents []*raftpb.Entry for i := 1; i <= 4; i++ { ent := raftpb.Entry{ Term: 1, @@ -530,7 +534,7 @@ func TestApplyMultiConfChangeShouldStop(t *testing.T) { NodeID: uint64(i), }), } - ents = append(ents, ent) + ents = append(ents, &ent) } raftAdvancedC := make(chan struct{}, 1) @@ -584,7 +588,7 @@ func TestSnapshotDisk(t *testing.T) { assert.Equal(t, testutil.Action{Name: "SaveSnap"}, gaction[0]) assert.Equal(t, testutil.Action{Name: "Release"}, gaction[1]) }() - ep := etcdProgress{appliedi: 1, confState: raftpb.ConfState{Voters: []uint64{1}}} + ep := etcdProgress{appliedi: 1, confState: &raftpb.ConfState{Voters: []uint64{1}}} srv.snapshot(&ep, true) <-ch assert.Empty(t, st.Action()) @@ -632,7 +636,7 @@ func TestSnapshotMemory(t *testing.T) { assert.Empty(t, gaction) }() - ep := etcdProgress{appliedi: 1, confState: raftpb.ConfState{Voters: []uint64{1}}} + ep := etcdProgress{appliedi: 1, confState: &raftpb.ConfState{Voters: []uint64{1}}} srv.snapshot(&ep, false) <-ch assert.Empty(t, st.Action()) @@ -936,8 +940,7 @@ func TestProcessIgnoreMismatchMessage(t *testing.T) { if types.ID(m.To) == s.MemberID() { t.Fatalf("m.To (%d) is expected to mismatch s.MemberID (%d)", m.To, s.MemberID()) } - err := s.Process(t.Context(), m) - if err == nil { + if err := s.Process(t.Context(), &m); err == nil { t.Fatalf("Must ignore the message and return an error") } } @@ -1398,7 +1401,7 @@ func newNopTransporter() rafthttp.Transporter { func (s *nopTransporter) Start() error { return nil } func (s *nopTransporter) Handler() http.Handler { return nil } -func (s *nopTransporter) Send(m []raftpb.Message) {} +func (s *nopTransporter) Send(m []*raftpb.Message) {} func (s *nopTransporter) SendSnapshot(m snap.Message) {} func (s *nopTransporter) AddRemote(id types.ID, us []string) {} func (s *nopTransporter) AddPeer(id types.ID, us []string) {} @@ -1442,7 +1445,7 @@ func newSendMsgAppRespTransporter() (rafthttp.Transporter, <-chan int) { return tr, ch } -func (s *sendMsgAppRespTransporter) Send(m []raftpb.Message) { +func (s *sendMsgAppRespTransporter) Send(m []*raftpb.Message) { var send int for _, msg := range m { if msg.To != 0 { diff --git a/server/etcdserver/snapshot_merge.go b/server/etcdserver/snapshot_merge.go index cc3c545bee2a..f0bd32151ec9 100644 --- a/server/etcdserver/snapshot_merge.go +++ b/server/etcdserver/snapshot_merge.go @@ -28,7 +28,7 @@ import ( // createMergedSnapshotMessage creates a snapshot message that contains: raft status (term, conf), // a snapshot of v2 store inside raft.Snapshot as []byte, a snapshot of v3 KV in the top level message // as ReadCloser. -func (s *EtcdServer) createMergedSnapshotMessage(m raftpb.Message, snapt, snapi uint64, confState raftpb.ConfState) snap.Message { +func (s *EtcdServer) createMergedSnapshotMessage(m *raftpb.Message, snapt, snapi uint64, confState *raftpb.ConfState) *snap.Message { lg := s.Logger() // get a snapshot of v2 store as []byte d := GetMembershipInfoInV2Format(lg, s.cluster) @@ -41,19 +41,19 @@ func (s *EtcdServer) createMergedSnapshotMessage(m raftpb.Message, snapt, snapi // put the []byte snapshot of store into raft snapshot and return the merged snapshot with // KV readCloser snapshot. - snapshot := raftpb.Snapshot{ + snapshot := &raftpb.Snapshot{ Metadata: raftpb.SnapshotMetadata{ Index: snapi, Term: snapt, - ConfState: confState, + ConfState: *confState, }, Data: d, } - m.Snapshot = &snapshot + m.Snapshot = snapshot verifySnapshotIndex(snapshot, s.consistIndex.ConsistentIndex()) - return *snap.NewMessage(m, rc, dbsnap.Size()) + return snap.NewMessage(m, rc, dbsnap.Size()) } func newSnapshotReaderCloser(lg *zap.Logger, snapshot backend.Snapshot) io.ReadCloser { diff --git a/server/etcdserver/util_test.go b/server/etcdserver/util_test.go index 816369e13203..b6693ed02dca 100644 --- a/server/etcdserver/util_test.go +++ b/server/etcdserver/util_test.go @@ -77,7 +77,7 @@ func newNopTransporterWithActiveTime(memberIDs []types.ID) rafthttp.Transporter func (s *nopTransporterWithActiveTime) Start() error { return nil } func (s *nopTransporterWithActiveTime) Handler() http.Handler { return nil } -func (s *nopTransporterWithActiveTime) Send(m []raftpb.Message) {} +func (s *nopTransporterWithActiveTime) Send(m []*raftpb.Message) {} func (s *nopTransporterWithActiveTime) SendSnapshot(m snap.Message) {} func (s *nopTransporterWithActiveTime) AddRemote(id types.ID, us []string) {} func (s *nopTransporterWithActiveTime) AddPeer(id types.ID, us []string) {} diff --git a/server/storage/schema/confstate_test.go b/server/storage/schema/confstate_test.go index 11131e40579c..6f1c2bd48dfa 100644 --- a/server/storage/schema/confstate_test.go +++ b/server/storage/schema/confstate_test.go @@ -38,7 +38,7 @@ func TestConfStateFromBackendInOneTx(t *testing.T) { confState := raftpb.ConfState{Learners: []uint64{1, 2}, Voters: []uint64{3}, AutoLeave: false} MustUnsafeSaveConfStateToBackend(lg, tx, &confState) - assert.Equal(t, confState, *UnsafeConfStateFromBackend(lg, tx)) + assert.Equal(t, &confState, UnsafeConfStateFromBackend(lg, tx)) } func TestMustUnsafeSaveConfStateToBackend(t *testing.T) { @@ -73,6 +73,6 @@ func TestMustUnsafeSaveConfStateToBackend(t *testing.T) { tx := be.ReadTx() tx.RLock() defer tx.RUnlock() - assert.Equal(t, confState, *UnsafeConfStateFromBackend(lg, tx)) + assert.Equal(t, &confState, UnsafeConfStateFromBackend(lg, tx)) }) } diff --git a/server/storage/schema/schema_test.go b/server/storage/schema/schema_test.go index bbd56e84b3d0..2dc3f78f1915 100644 --- a/server/storage/schema/schema_test.go +++ b/server/storage/schema/schema_test.go @@ -57,24 +57,32 @@ func TestValidate(t *testing.T) { name: `V3.5 schema without term field is correct`, version: version.V3_5, overrideKeys: func(tx backend.UnsafeReadWriter) { - MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{}) + MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{AutoLeave: false}) }, }, { name: `V3.5 schema with all fields is correct`, version: version.V3_5, overrideKeys: func(tx backend.UnsafeReadWriter) { - MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{}) + MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{AutoLeave: false}) UnsafeUpdateConsistentIndex(tx, 1, 1) }, }, { name: `V3.6 schema is correct`, version: version.V3_6, + overrideKeys: func(tx backend.UnsafeReadWriter) { + MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{AutoLeave: false}) + UnsafeUpdateConsistentIndex(tx, 1, 1) + }, }, { name: `V3.7 is correct`, version: version.V3_7, + overrideKeys: func(tx backend.UnsafeReadWriter) { + MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{AutoLeave: false}) + UnsafeUpdateConsistentIndex(tx, 1, 1) + }, }, { name: `V3.8 schema is unknown and should return error`, @@ -120,7 +128,7 @@ func TestMigrate(t *testing.T) { name: `Upgrading v3.5 to v3.6 should be rejected if term is not set`, version: version.V3_5, overrideKeys: func(tx backend.UnsafeReadWriter) { - MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{}) + MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{AutoLeave: false}) }, targetVersion: version.V3_6, expectVersion: nil, @@ -315,19 +323,19 @@ func setupBackendData(t *testing.T, ver semver.Version, overrideKeys func(tx bac switch ver { case version.V3_4: case version.V3_5: - MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{}) + MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{AutoLeave: false}) UnsafeUpdateConsistentIndex(tx, 1, 1) case version.V3_6: - MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{}) + MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{AutoLeave: false}) UnsafeUpdateConsistentIndex(tx, 1, 1) UnsafeSetStorageVersion(tx, &version.V3_6) case version.V3_7: - MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{}) + MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{AutoLeave: false}) UnsafeUpdateConsistentIndex(tx, 1, 1) UnsafeSetStorageVersion(tx, &version.V3_7) tx.UnsafePut(Meta, []byte("future-key"), []byte("")) case version.V3_8: - MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{}) + MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{AutoLeave: false}) UnsafeUpdateConsistentIndex(tx, 1, 1) UnsafeSetStorageVersion(tx, &version.V3_8) tx.UnsafePut(Meta, []byte("future-key"), []byte("")) diff --git a/server/storage/storage.go b/server/storage/storage.go index 8602a5b96b37..7d0a6476f2e3 100644 --- a/server/storage/storage.go +++ b/server/storage/storage.go @@ -68,7 +68,7 @@ func (st *storage) SaveSnap(snap *raftpb.Snapshot) error { // save the snapshot file before writing the snapshot to the wal. // This makes it possible for the snapshot file to become orphaned, but prevents // a WAL snapshot entry from having no corresponding snapshot file. - err := st.s.SaveSnap(*snap) + err := st.s.SaveSnap(snap) if err != nil { return err } @@ -86,7 +86,7 @@ func (st *storage) Release(snap *raftpb.Snapshot) error { if err := st.w.ReleaseLockTo(snap.Metadata.Index); err != nil { return err } - return st.s.ReleaseSnapDBs(*snap) + return st.s.ReleaseSnapDBs(snap) } func (st *storage) Save(s *raftpb.HardState, ents []*raftpb.Entry) error { From bc210b8c662bbc25f358182c332a8edb98922e5c Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 13 Apr 2026 14:06:39 +0200 Subject: [PATCH 1016/1068] Workaround long-running Porcupine Step Signed-off-by: Chun-Hung Tseng --- tests/robustness/model/non_deterministic.go | 28 ++++++++ tests/robustness/validate/operations.go | 28 +++++++- tests/robustness/validate/operations_test.go | 67 ++++++++++++++++++++ 3 files changed, 120 insertions(+), 3 deletions(-) diff --git a/tests/robustness/model/non_deterministic.go b/tests/robustness/model/non_deterministic.go index 3fbdca7b3995..b9a28abe00b1 100644 --- a/tests/robustness/model/non_deterministic.go +++ b/tests/robustness/model/non_deterministic.go @@ -19,10 +19,23 @@ import ( "fmt" "slices" "strings" + "sync/atomic" "github.com/anishathalye/porcupine" ) +// LinearizationDeadlineTripped is set when linearization validation exceeds +// its timeout. +// +// Porcupine currently does not propagate its timeout to the model Step +// callback. A single non-deterministic Step can take seconds or minutes, so +// CheckOperationsVerbose may not return promptly after its timeout expires. +// Until etcd depends on a Porcupine version with timeout propagation, validation +// uses this atomic flag to let Step and its helpers return early. +// +// See https://github.com/anishathalye/porcupine/pull/45 and https://github.com/etcd-io/etcd/pull/21715. +var LinearizationDeadlineTripped atomic.Int32 + // NonDeterministicModel extends DeterministicModel to allow for clients with imperfect knowledge of the request's destiny. // An unknown/error response doesn't inform whether the request was persisted or not, so the model // considers both cases. This is represented as multiple, equally possible deterministic states. @@ -146,6 +159,9 @@ func compareStates(first, second EtcdState) int { } func (states nonDeterministicState) apply(request EtcdRequest, response MaybeEtcdResponse) (bool, nonDeterministicState) { + if LinearizationDeadlineTripped.Load() != 0 { + return false, nil + } var newStates nonDeterministicState switch { case response.Error != "": @@ -164,6 +180,9 @@ func (states nonDeterministicState) apply(request EtcdRequest, response MaybeEtc func (states nonDeterministicState) applyFailedRequest(request EtcdRequest) nonDeterministicState { newStates := make(nonDeterministicState, 0, len(states)*2) for _, s := range states { + if LinearizationDeadlineTripped.Load() != 0 { + return nil + } newStates = append(newStates, s) newState, _ := s.Step(request) if !newState.Equal(s) { @@ -177,6 +196,9 @@ func (states nonDeterministicState) applyFailedRequest(request EtcdRequest) nonD func (states nonDeterministicState) applyPersistedRequest(request EtcdRequest) nonDeterministicState { newStates := make(nonDeterministicState, 0, len(states)) for _, s := range states { + if LinearizationDeadlineTripped.Load() != 0 { + return nil + } newState, _ := s.Step(request) newStates = append(newStates, newState) } @@ -187,6 +209,9 @@ func (states nonDeterministicState) applyPersistedRequest(request EtcdRequest) n func (states nonDeterministicState) applyPersistedRequestWithRevision(request EtcdRequest, responseRevision int64) nonDeterministicState { newStates := make(nonDeterministicState, 0, len(states)) for _, s := range states { + if LinearizationDeadlineTripped.Load() != 0 { + return nil + } newState, modelResponse := s.Step(request) if modelResponse.Revision == responseRevision { newStates = append(newStates, newState) @@ -199,6 +224,9 @@ func (states nonDeterministicState) applyPersistedRequestWithRevision(request Et func (states nonDeterministicState) applyRequestWithResponse(request EtcdRequest, response EtcdResponse) nonDeterministicState { newStates := make(nonDeterministicState, 0, len(states)) for _, s := range states { + if LinearizationDeadlineTripped.Load() != 0 { + return nil + } newState, modelResponse := s.Step(request) if Match(modelResponse, MaybeEtcdResponse{EtcdResponse: response}) { newStates = append(newStates, newState) diff --git a/tests/robustness/validate/operations.go b/tests/robustness/validate/operations.go index 419e2f3ef56f..3895c1befdd2 100644 --- a/tests/robustness/validate/operations.go +++ b/tests/robustness/validate/operations.go @@ -34,12 +34,34 @@ func validateLinearizableOperationsAndVisualize(lg *zap.Logger, keys []string, o lg.Info("Validating linearizable operations", zap.Duration("timeout", timeout)) start := time.Now() - model := model.NonDeterministicModel(keys) - check, info := porcupine.CheckOperationsVerbose(model, operations, timeout) + model.LinearizationDeadlineTripped.Store(0) + + var timer *time.Timer + if timeout > 0 { + timer = time.AfterFunc(timeout, func() { + model.LinearizationDeadlineTripped.Store(1) + }) + } + + m := model.NonDeterministicModel(keys) + check, info := porcupine.CheckOperationsVerbose(m, operations, timeout) + if timer != nil { + timer.Stop() + } + result := LinearizationResult{ Info: info, - Model: model, + Model: m, + } + + if model.LinearizationDeadlineTripped.Load() != 0 { + result.Status = Failure + result.Message = "timed out" + result.Timeout = true + lg.Error("Linearization timed out", zap.Duration("duration", time.Since(start))) + return result } + switch check { case porcupine.Ok: result.Status = Success diff --git a/tests/robustness/validate/operations_test.go b/tests/robustness/validate/operations_test.go index ab7fce592777..672e7af27c69 100644 --- a/tests/robustness/validate/operations_test.go +++ b/tests/robustness/validate/operations_test.go @@ -294,6 +294,73 @@ func keyValueRevision(key, value string, rev int64) model.KeyValue { } } +func TestValidateLinearizableOperationsTimeoutIsRespected(t *testing.T) { + timeout := time.Second + const failedPutCount = 17 + // Repeat the range read to make the final applyRequestWithResponse step slow. + const rangeReadCount = 3072 + + history := []porcupine.Operation{} + for i := 0; i < failedPutCount; i++ { + history = append(history, porcupine.Operation{ + ClientId: i, + Input: putRequest(fmt.Sprintf("failed%03d", i), "value"), + Output: errorResponse(fmt.Errorf("timeout")), + Call: int64(i), + Return: int64(failedPutCount + i), + }) + } + + rangeOperations := make([]model.EtcdOperation, 0, rangeReadCount) + for i := 0; i < rangeReadCount; i++ { + rangeOperations = append(rangeOperations, model.EtcdOperation{ + Type: model.RangeOperation, + Range: model.RangeOptions{ + Start: "failed", + End: "faile~", + }, + }) + } + readRequest := model.EtcdRequest{ + Type: model.Txn, + Txn: &model.TxnRequest{ + OperationsOnSuccess: rangeOperations, + }, + } + + // Each failed put can be lost or persisted, so the large read-only + // transaction reaches applyRequestWithResponse with many possible states in + // a single Step call. + replay := model.NewReplayFromOperations(history) + state, err := replay.StateForRevision(failedPutCount + 1) + if err != nil { + t.Fatal(err) + } + _, readResponse := state.Step(readRequest) + history = append(history, porcupine.Operation{ + ClientId: failedPutCount, + Input: readRequest, + Output: readResponse, + Call: int64(2 * failedPutCount), + Return: int64(2*failedPutCount + 1), + }) + keys := model.ModelKeys(history) + + start := time.Now() + result := validateLinearizableOperationsAndVisualize(zap.NewNop(), keys, history, timeout) + elapsed := time.Since(start) + + if !result.Timeout { + t.Fatalf("validateLinearizableOperationsAndVisualize(...) timed out = false, message = %q", result.Message) + } + if result.Message != "timed out" { + t.Fatalf("validateLinearizableOperationsAndVisualize(...) message = %q, want %q", result.Message, "timed out") + } + if elapsed > timeout+250*time.Millisecond { + t.Fatalf("validateLinearizableOperationsAndVisualize(...) does not respect timeout: %v, timeout was %v", elapsed, timeout) + } +} + func BenchmarkValidateLinearizableOperations(b *testing.B) { lg := zap.NewNop() b.Run("SequentialSuccessPuts", func(b *testing.B) { From 04b45d8e35609fc22dec31f42ffa3a5be15e616a Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 25 May 2026 19:24:21 +0200 Subject: [PATCH 1017/1068] etcdutl: migrate snapshot restore and verify tools Signed-off-by: Marek Siarkowicz --- etcdutl/etcdutl/common_test.go | 8 ++++---- etcdutl/snapshot/v3_snapshot.go | 19 +++++++------------ 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/etcdutl/etcdutl/common_test.go b/etcdutl/etcdutl/common_test.go index 4da61ab487e6..595e5cdd3887 100644 --- a/etcdutl/etcdutl/common_test.go +++ b/etcdutl/etcdutl/common_test.go @@ -34,7 +34,7 @@ func TestGetLatestWalSnap(t *testing.T) { testCases := []struct { name string walSnaps []*walpb.Snapshot - snapshots []raftpb.Snapshot + snapshots []*raftpb.Snapshot expectedLatestWALSnap *walpb.Snapshot }{ { @@ -44,7 +44,7 @@ func TestGetLatestWalSnap(t *testing.T) { {Index: new(uint64(20)), Term: new(uint64(3))}, {Index: new(uint64(30)), Term: new(uint64(5))}, }, - snapshots: []raftpb.Snapshot{ + snapshots: []*raftpb.Snapshot{ {Metadata: raftpb.SnapshotMetadata{Index: 10, Term: 2}}, {Metadata: raftpb.SnapshotMetadata{Index: 20, Term: 3}}, {Metadata: raftpb.SnapshotMetadata{Index: 30, Term: 5}}, @@ -58,7 +58,7 @@ func TestGetLatestWalSnap(t *testing.T) { {Index: new(uint64(20)), Term: new(uint64(3))}, {Index: new(uint64(35)), Term: new(uint64(5))}, }, - snapshots: []raftpb.Snapshot{ + snapshots: []*raftpb.Snapshot{ {Metadata: raftpb.SnapshotMetadata{Index: 10, Term: 2}}, {Metadata: raftpb.SnapshotMetadata{Index: 20, Term: 3}}, {Metadata: raftpb.SnapshotMetadata{Index: 35, Term: 5}}, @@ -91,7 +91,7 @@ func TestGetLatestWalSnap(t *testing.T) { walSnap.ConfState = &raftpb.ConfState{Voters: []uint64{1}} walErr := w.SaveSnapshot(walSnap) require.NoError(t, walErr) - walErr = w.Save(raftpb.HardState{Term: walSnap.GetTerm(), Commit: walSnap.GetIndex(), Vote: 1}, nil) + walErr = w.Save(&raftpb.HardState{Term: walSnap.GetTerm(), Commit: walSnap.GetIndex(), Vote: 1}, nil) require.NoError(t, walErr) } err = w.Close() diff --git a/etcdutl/snapshot/v3_snapshot.go b/etcdutl/snapshot/v3_snapshot.go index 92ed85b69cc8..6a4c9e57ae1e 100644 --- a/etcdutl/snapshot/v3_snapshot.go +++ b/etcdutl/snapshot/v3_snapshot.go @@ -37,6 +37,7 @@ import ( "go.etcd.io/etcd/client/pkg/v3/types" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/snapshot" + "go.etcd.io/etcd/pkg/v3/pbutil" "go.etcd.io/etcd/server/v3/config" "go.etcd.io/etcd/server/v3/etcdserver" "go.etcd.io/etcd/server/v3/etcdserver/api/membership" @@ -522,10 +523,7 @@ func (s *v3Manager) saveWALAndSnap() (*raftpb.HardState, error) { m := s.cl.MemberByName(s.name) //nolint:staticcheck // See https://github.com/dominikh/go-tools/issues/1698 md := &etcdserverpb.Metadata{NodeID: new(uint64(m.ID)), ClusterID: new(uint64(s.cl.ID()))} - metadata, merr := proto.Marshal(md) - if merr != nil { - return nil, merr - } + metadata := pbutil.MustMarshalMessage(md) w, walerr := wal.Create(s.lg, s.walDir, metadata) if walerr != nil { return nil, walerr @@ -541,7 +539,7 @@ func (s *v3Manager) saveWALAndSnap() (*raftpb.HardState, error) { peers[i] = raft.Peer{ID: uint64(id), Context: ctx} } - ents := make([]raftpb.Entry, len(peers)) + ents := make([]*raftpb.Entry, len(peers)) nodeIDs := make([]uint64, len(peers)) for i, p := range peers { nodeIDs[i] = p.ID @@ -550,11 +548,8 @@ func (s *v3Manager) saveWALAndSnap() (*raftpb.HardState, error) { NodeID: p.ID, Context: p.Context, } - d, err := cc.Marshal() - if err != nil { - return nil, err - } - ents[i] = raftpb.Entry{ + d := pbutil.MustMarshal(&cc) + ents[i] = &raftpb.Entry{ Type: raftpb.EntryConfChange, Term: 1, Index: uint64(i + 1), @@ -568,7 +563,7 @@ func (s *v3Manager) saveWALAndSnap() (*raftpb.HardState, error) { Vote: peers[0].ID, Commit: commit, } - if err := w.Save(hardState, ents); err != nil { + if err := w.Save(&hardState, ents); err != nil { return nil, err } @@ -584,7 +579,7 @@ func (s *v3Manager) saveWALAndSnap() (*raftpb.HardState, error) { }, } sn := snap.New(s.lg, s.snapDir) - if err := sn.SaveSnap(raftSnap); err != nil { + if err := sn.SaveSnap(&raftSnap); err != nil { return nil, err } snapshot := walpb.Snapshot{Index: &commit, Term: &term, ConfState: &confState} From 51aaaa085451daf3d2cf2214e64db8e5fb61493b Mon Sep 17 00:00:00 2001 From: xigang Date: Mon, 4 May 2026 22:16:56 +0800 Subject: [PATCH 1018/1068] client/v3: print info log when watcher stream buffer is backlogged Signed-off-by: xigang --- client/v3/block_logger.go | 67 ++++++++++++++++++++++ client/v3/block_logger_test.go | 102 +++++++++++++++++++++++++++++++++ client/v3/op.go | 8 ++- client/v3/watch.go | 75 ++++++++++++++++++++---- client/v3/watch_test.go | 98 +++++++++++++++++++++++++++++++ 5 files changed, 339 insertions(+), 11 deletions(-) create mode 100644 client/v3/block_logger.go create mode 100644 client/v3/block_logger_test.go diff --git a/client/v3/block_logger.go b/client/v3/block_logger.go new file mode 100644 index 000000000000..a5812928431d --- /dev/null +++ b/client/v3/block_logger.go @@ -0,0 +1,67 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package clientv3 + +import ( + "sync" + "time" +) + +type blockLogger struct { + interval time.Duration + threshold time.Duration + now func() time.Time + logFunc func(eventCount int, timeWaiting time.Duration, window time.Duration) + + mu sync.Mutex + lastLogTime time.Time + eventCount int + timeWaiting time.Duration +} + +func newBlockLogger(interval time.Duration, threshold time.Duration, now func() time.Time, logFunc func(eventCount int, timeWaiting time.Duration, window time.Duration)) *blockLogger { + if now == nil { + now = time.Now + } + l := &blockLogger{ + interval: interval, + threshold: threshold, + now: now, + logFunc: logFunc, + } + l.lastLogTime = l.now() + return l +} + +func (l *blockLogger) recordWait(waitTime time.Duration) { + l.mu.Lock() + defer l.mu.Unlock() + + l.eventCount++ + l.timeWaiting += waitTime + + now := l.now() + window := now.Sub(l.lastLogTime) + if window < l.interval { + return + } + + if l.timeWaiting > l.threshold && l.logFunc != nil { + l.logFunc(l.eventCount, l.timeWaiting, window) + } + l.eventCount = 0 + l.timeWaiting = 0 + l.lastLogTime = now +} diff --git a/client/v3/block_logger_test.go b/client/v3/block_logger_test.go new file mode 100644 index 000000000000..f9cc7ab6127f --- /dev/null +++ b/client/v3/block_logger_test.go @@ -0,0 +1,102 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package clientv3 + +import ( + "reflect" + "testing" + "time" +) + +func TestBlockLogger(t *testing.T) { + const ( + logInterval = 5 * time.Second + logThreshold = 100 * time.Millisecond + ) + + type step struct { + advance time.Duration + wait time.Duration + } + type logEntry struct { + count int + wait time.Duration + window time.Duration + } + + tests := []struct { + name string + steps []step + wantLogs []logEntry + }{ + { + name: "does not log before interval elapses", + steps: []step{ + {wait: logThreshold}, + {advance: time.Second, wait: logThreshold}, + }, + }, + { + name: "does not log when accumulated wait stays below threshold", + steps: []step{ + {wait: 20 * time.Millisecond}, + {advance: logInterval, wait: 20 * time.Millisecond}, + }, + }, + { + name: "logs accumulated waits when interval elapses and threshold is exceeded", + steps: []step{ + {wait: 40 * time.Millisecond}, + {advance: logInterval, wait: 80 * time.Millisecond}, + }, + wantLogs: []logEntry{ + {count: 2, wait: 120 * time.Millisecond, window: logInterval}, + }, + }, + { + name: "logs once per accumulation window and resets after logging", + steps: []step{ + {wait: 40 * time.Millisecond}, + {advance: logInterval, wait: 80 * time.Millisecond}, + {advance: logInterval, wait: 120 * time.Millisecond}, + }, + wantLogs: []logEntry{ + {count: 2, wait: 120 * time.Millisecond, window: logInterval}, + {count: 1, wait: 120 * time.Millisecond, window: logInterval}, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + now := time.Unix(0, 0) + var logs []logEntry + logger := newBlockLogger(logInterval, logThreshold, func() time.Time { + return now + }, func(eventCount int, timeWaiting time.Duration, window time.Duration) { + logs = append(logs, logEntry{count: eventCount, wait: timeWaiting, window: window}) + }) + + for _, step := range tt.steps { + now = now.Add(step.advance) + logger.recordWait(step.wait) + } + + if !reflect.DeepEqual(logs, tt.wantLogs) { + t.Fatalf("logs = %+v, want %+v", logs, tt.wantLogs) + } + }) + } +} diff --git a/client/v3/op.go b/client/v3/op.go index 2dbbbaf48c32..9542f0ccf744 100644 --- a/client/v3/op.go +++ b/client/v3/op.go @@ -55,7 +55,8 @@ type Op struct { // fragmentation should be disabled by default // if true, split watch events when total exceeds // "--max-request-bytes" flag value + 512-byte - fragment bool + fragment bool + watchBufLogEnabled bool // for put ignoreValue bool @@ -555,6 +556,11 @@ func WithFragment() OpOption { return func(op *Op) { op.fragment = true } } +// WithWatchBufLog enables watch response buffer logging. +func WithWatchBufLog() OpOption { + return func(op *Op) { op.watchBufLogEnabled = true } +} + // WithIgnoreValue updates the key using its current value. // This option can not be combined with non-empty values. // Returns an error if the key does not exist. diff --git a/client/v3/watch.go b/client/v3/watch.go index 951e9b51c21c..46adce7ba84d 100644 --- a/client/v3/watch.go +++ b/client/v3/watch.go @@ -44,6 +44,9 @@ const ( // InvalidWatchID represents an invalid watch ID and prevents duplication with an existing watch. InvalidWatchID = -1 + + watcherStreamBufWarningInterval = 5 * time.Second + watcherStreamBufWarningThreshold = 100 * time.Millisecond ) type Event = mvccpb.Event @@ -208,6 +211,8 @@ type watchRequest struct { // if true, split watch events when total exceeds // "--max-request-bytes" flag value + 512-byte fragment bool + // watchBufLogEnabled enables watch response buffer logging. + watchBufLogEnabled bool // filters is the list of events to filter out filters []pb.WatchCreateRequest_FilterType @@ -238,6 +243,10 @@ type watcherStream struct { // buf holds all events received from etcd but not yet consumed by the client buf []*WatchResponse + // bufLogger tracks buffer backlog and rate-limits warning logs. + bufLogger *blockLogger + // bufWaitStartTime is set while the first response in buf is waiting for outc. + bufWaitStartTime time.Time } func NewWatcher(c *Client) Watcher { @@ -304,16 +313,17 @@ func (w *watcher) Watch(ctx context.Context, key string, opts ...OpOption) Watch } wr := &watchRequest{ - ctx: ctx, - createdNotify: ow.createdNotify, - key: string(ow.key), - end: string(ow.end), - rev: ow.rev, - progressNotify: ow.progressNotify, - fragment: ow.fragment, - filters: filters, - prevKV: ow.prevKV, - retc: make(chan chan WatchResponse, 1), + ctx: ctx, + createdNotify: ow.createdNotify, + key: string(ow.key), + end: string(ow.end), + rev: ow.rev, + progressNotify: ow.progressNotify, + fragment: ow.fragment, + watchBufLogEnabled: ow.watchBufLogEnabled, + filters: filters, + prevKV: ow.prevKV, + retc: make(chan chan WatchResponse, 1), } ok := false @@ -554,6 +564,9 @@ func (w *watchGRPCStream) run() { // unbuffered so resumes won't cause repeat events recvc: make(chan *WatchResponse), } + if ws.initReq.watchBufLogEnabled { + ws.bufLogger = w.newWatcherStreamBufLogger(ws, time.Now) + } ws.donec = make(chan struct{}) w.wg.Add(1) @@ -791,6 +804,11 @@ func (w *watchGRPCStream) serveSubstream(ws *watcherStream, resumec chan struct{ } w.wg.Done() }() + defer func() { + if !resuming { + w.recordBufWait(ws) + } + }() emptyWr := &WatchResponse{Header: &pb.ResponseHeader{}} for { @@ -799,11 +817,13 @@ func (w *watchGRPCStream) serveSubstream(ws *watcherStream, resumec chan struct{ if len(ws.buf) > 0 { curWr = ws.buf[0] + w.startBufWait(ws) } else { outc = nil } select { case outc <- *curWr: + w.recordBufWait(ws) if ws.buf[0].Err() != nil { return } @@ -863,6 +883,7 @@ func (w *watchGRPCStream) serveSubstream(ws *watcherStream, resumec chan struct{ case <-ws.initReq.ctx.Done(): return case <-resumec: + ws.resetBufWait() resuming = true return } @@ -870,6 +891,40 @@ func (w *watchGRPCStream) serveSubstream(ws *watcherStream, resumec chan struct{ // lazily send cancel message if events on missing id } +func (w *watchGRPCStream) startBufWait(ws *watcherStream) { + if w.lg == nil || ws.bufLogger == nil || !ws.bufWaitStartTime.IsZero() { + return + } + ws.bufWaitStartTime = ws.bufLogger.now() +} + +func (w *watchGRPCStream) recordBufWait(ws *watcherStream) { + if w.lg == nil || ws.bufLogger == nil || ws.bufWaitStartTime.IsZero() { + return + } + ws.bufLogger.recordWait(ws.bufLogger.now().Sub(ws.bufWaitStartTime)) + ws.resetBufWait() +} + +func (ws *watcherStream) resetBufWait() { + ws.bufWaitStartTime = time.Time{} +} + +func (w *watchGRPCStream) newWatcherStreamBufLogger(ws *watcherStream, now func() time.Time) *blockLogger { + return newBlockLogger(watcherStreamBufWarningInterval, watcherStreamBufWarningThreshold, now, func(responseCount int, timeWaiting time.Duration, window time.Duration) { + w.lg.Info( + "watcher substream buffer is backlogged; subscriber may be too slow to consume events", + zap.String("range-start", ws.initReq.key), + zap.String("range-end", ws.initReq.end), + zap.Int64("watch-revision", ws.initReq.rev), + zap.Int("buffer-size", len(ws.buf)), + zap.Int("response-count", responseCount), + zap.Duration("time-blocked", timeWaiting), + zap.Duration("log-interval", window), + ) + }) +} + func (w *watchGRPCStream) newWatchClient() (pb.Watch_WatchClient, error) { // mark all substreams as resuming close(w.resumec) diff --git a/client/v3/watch_test.go b/client/v3/watch_test.go index ca0b86d26107..255194e73fb0 100644 --- a/client/v3/watch_test.go +++ b/client/v3/watch_test.go @@ -16,10 +16,14 @@ package clientv3 import ( "context" + "sync" "testing" + "time" + "go.uber.org/zap" "google.golang.org/grpc/metadata" + pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/mvccpb" ) @@ -106,3 +110,97 @@ func TestStreamKeyFromCtx(t *testing.T) { }) } } + +func TestServeSubstreamLogsSlowConsumer(t *testing.T) { + const ( + interval = 5 * time.Second + threshold = 100 * time.Millisecond + ) + + ctx, cancel := context.WithCancel(t.Context()) + defer cancel() + + var nowMu sync.Mutex + now := time.Unix(0, 0) + startedWaiting := make(chan struct{}) + waitStarted := false + + var logMu sync.Mutex + logCalls := 0 + logged := make(chan struct{}, 1) + + ws := &watcherStream{ + initReq: watchRequest{ctx: ctx}, + outc: make(chan WatchResponse), + recvc: make(chan *WatchResponse, 1), + donec: make(chan struct{}), + } + ws.bufLogger = newBlockLogger(interval, threshold, func() time.Time { + nowMu.Lock() + defer nowMu.Unlock() + if waitStarted { + close(startedWaiting) + waitStarted = false + } + return now + }, func(eventCount int, timeWaiting time.Duration, window time.Duration) { + logMu.Lock() + defer logMu.Unlock() + logCalls++ + select { + case logged <- struct{}{}: + default: + } + }) + + nowMu.Lock() + waitStarted = true + nowMu.Unlock() + + w := &watchGRPCStream{ + ctx: t.Context(), + closingc: make(chan *watcherStream, 1), + lg: zap.NewNop(), + } + w.wg.Add(1) + go w.serveSubstream(ws, make(chan struct{})) + + ws.recvc <- &WatchResponse{Header: &pb.ResponseHeader{Revision: 1}} + + select { + case <-startedWaiting: + case <-time.After(10 * time.Second): + t.Fatal("timed out waiting for serveSubstream to start buffering") + } + + nowMu.Lock() + now = now.Add(threshold + interval) + nowMu.Unlock() + + select { + case <-ws.outc: + case <-time.After(time.Second): + t.Fatal("timed out waiting for buffered response delivery") + } + + select { + case <-logged: + case <-time.After(time.Second): + t.Fatal("timed out waiting for backlog warning callback") + } + + logMu.Lock() + if logCalls != 1 { + logMu.Unlock() + t.Fatalf("expected one backlog warning, got %d", logCalls) + } + logMu.Unlock() + + cancel() + select { + case <-ws.donec: + case <-time.After(time.Second): + t.Fatal("timed out waiting for serveSubstream shutdown") + } + w.wg.Wait() +} From 4e37418335dee12238333645d983023aecdd1570 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 25 May 2026 16:00:32 +0200 Subject: [PATCH 1019/1068] contrib/raftexample: migrate example consensus loop and cleanup test helpers Signed-off-by: Marek Siarkowicz --- contrib/raftexample/httpapi.go | 8 +-- contrib/raftexample/main.go | 2 +- contrib/raftexample/raft.go | 93 ++++++++++++++++--------- contrib/raftexample/raft_test.go | 26 +++---- contrib/raftexample/raftexample_test.go | 12 ++-- 5 files changed, 84 insertions(+), 57 deletions(-) diff --git a/contrib/raftexample/httpapi.go b/contrib/raftexample/httpapi.go index dbe226add33c..350aa2a4218b 100644 --- a/contrib/raftexample/httpapi.go +++ b/contrib/raftexample/httpapi.go @@ -26,7 +26,7 @@ import ( // Handler for a http based key-value store backed by raft type httpKVAPI struct { store *kvstore - confChangeC chan<- raftpb.ConfChange + confChangeC chan<- *raftpb.ConfChange } func (h *httpKVAPI) ServeHTTP(w http.ResponseWriter, r *http.Request) { @@ -72,7 +72,7 @@ func (h *httpKVAPI) ServeHTTP(w http.ResponseWriter, r *http.Request) { NodeID: nodeID, Context: url, } - h.confChangeC <- cc + h.confChangeC <- &cc // As above, optimistic that raft will apply the conf change w.WriteHeader(http.StatusNoContent) case http.MethodDelete: @@ -87,7 +87,7 @@ func (h *httpKVAPI) ServeHTTP(w http.ResponseWriter, r *http.Request) { Type: raftpb.ConfChangeRemoveNode, NodeID: nodeID, } - h.confChangeC <- cc + h.confChangeC <- &cc // As above, optimistic that raft will apply the conf change w.WriteHeader(http.StatusNoContent) @@ -101,7 +101,7 @@ func (h *httpKVAPI) ServeHTTP(w http.ResponseWriter, r *http.Request) { } // serveHTTPKVAPI starts a key-value server with a GET/PUT API and listens. -func serveHTTPKVAPI(kv *kvstore, port int, confChangeC chan<- raftpb.ConfChange, errorC <-chan error) { +func serveHTTPKVAPI(kv *kvstore, port int, confChangeC chan<- *raftpb.ConfChange, errorC <-chan error) { srv := http.Server{ Addr: ":" + strconv.Itoa(port), Handler: &httpKVAPI{ diff --git a/contrib/raftexample/main.go b/contrib/raftexample/main.go index 73f02787a356..d011d45c9046 100644 --- a/contrib/raftexample/main.go +++ b/contrib/raftexample/main.go @@ -30,7 +30,7 @@ func main() { proposeC := make(chan string) defer close(proposeC) - confChangeC := make(chan raftpb.ConfChange) + confChangeC := make(chan *raftpb.ConfChange) defer close(confChangeC) // raft provides a commit stream for the proposals from the http api diff --git a/contrib/raftexample/raft.go b/contrib/raftexample/raft.go index 71161d055621..b798db8e0401 100644 --- a/contrib/raftexample/raft.go +++ b/contrib/raftexample/raft.go @@ -29,6 +29,7 @@ import ( "go.etcd.io/etcd/client/pkg/v3/fileutil" "go.etcd.io/etcd/client/pkg/v3/types" + "go.etcd.io/etcd/pkg/v3/pbutil" "go.etcd.io/etcd/server/v3/etcdserver/api/rafthttp" "go.etcd.io/etcd/server/v3/etcdserver/api/snap" stats "go.etcd.io/etcd/server/v3/etcdserver/api/v2stats" @@ -45,10 +46,10 @@ type commit struct { // A key-value stream backed by raft type raftNode struct { - proposeC <-chan string // proposed messages (k,v) - confChangeC <-chan raftpb.ConfChange // proposed cluster config changes - commitC chan<- *commit // entries committed to log (k,v) - errorC chan<- error // errors from raft session + proposeC <-chan string // proposed messages (k,v) + confChangeC <-chan *raftpb.ConfChange // proposed cluster config changes + commitC chan<- *commit // entries committed to log (k,v) + errorC chan<- error // errors from raft session id int // client ID for raft session peers []string // raft peer URLs @@ -57,7 +58,7 @@ type raftNode struct { snapdir string // path to snapshot directory getSnapshot func() ([]byte, error) - confState raftpb.ConfState + confState *raftpb.ConfState snapshotIndex uint64 appliedIndex uint64 @@ -86,7 +87,7 @@ var defaultSnapshotCount uint64 = 10000 // commit channel, followed by a nil message (to indicate the channel is // current), then new log entries. To shutdown, close proposeC and read errorC. func newRaftNode(id int, peers []string, join bool, getSnapshot func() ([]byte, error), proposeC <-chan string, - confChangeC <-chan raftpb.ConfChange, + confChangeC <-chan *raftpb.ConfChange, ) (<-chan *commit, <-chan error, <-chan *snap.Snapshotter) { commitC := make(chan *commit) errorC := make(chan error) @@ -116,10 +117,10 @@ func newRaftNode(id int, peers []string, join bool, getSnapshot func() ([]byte, return commitC, errorC, rc.snapshotterReady } -func (rc *raftNode) saveSnap(snap raftpb.Snapshot) error { +func (rc *raftNode) saveSnap(snap *raftpb.Snapshot) error { walSnap := walpb.Snapshot{ - Index: new(snap.Metadata.Index), - Term: new(snap.Metadata.Term), + Index: &snap.Metadata.Index, + Term: &snap.Metadata.Term, ConfState: &snap.Metadata.ConfState, } // save the snapshot file before writing the snapshot to the wal. @@ -134,7 +135,7 @@ func (rc *raftNode) saveSnap(snap raftpb.Snapshot) error { return rc.wal.ReleaseLockTo(snap.Metadata.Index) } -func (rc *raftNode) entriesToApply(ents []raftpb.Entry) (nents []raftpb.Entry) { +func (rc *raftNode) entriesToApply(ents []*raftpb.Entry) (nents []*raftpb.Entry) { if len(ents) == 0 { return ents } @@ -150,7 +151,7 @@ func (rc *raftNode) entriesToApply(ents []raftpb.Entry) (nents []raftpb.Entry) { // publishEntries writes committed log entries to commit channel and returns // whether all entries could be published. -func (rc *raftNode) publishEntries(ents []raftpb.Entry) (<-chan struct{}, bool) { +func (rc *raftNode) publishEntries(ents []*raftpb.Entry) (<-chan struct{}, bool) { if len(ents) == 0 { return nil, true } @@ -167,8 +168,8 @@ func (rc *raftNode) publishEntries(ents []raftpb.Entry) (<-chan struct{}, bool) data = append(data, s) case raftpb.EntryConfChange: var cc raftpb.ConfChange - cc.Unmarshal(ents[i].Data) - rc.confState = *rc.node.ApplyConfChange(cc) + pbutil.MustUnmarshal(&cc, ents[i].Data) + rc.confState = rc.node.ApplyConfChange(cc) switch cc.Type { case raftpb.ConfChangeAddNode: if len(cc.Context) > 0 { @@ -231,8 +232,8 @@ func (rc *raftNode) openWAL(snapshot *raftpb.Snapshot) *wal.WAL { } walsnap := walpb.Snapshot{} - if snapshot != nil { - walsnap.Index, walsnap.Term = new(snapshot.Metadata.Index), new(snapshot.Metadata.Term) + if snapshot.Metadata.Index != 0 { + walsnap.Index, walsnap.Term = &snapshot.Metadata.Index, &snapshot.Metadata.Term } log.Printf("loading WAL at term %d and index %d", walsnap.GetTerm(), walsnap.GetIndex()) w, err := wal.Open(zap.NewExample(), rc.waldir, &walsnap) @@ -256,10 +257,16 @@ func (rc *raftNode) replayWAL() *wal.WAL { if snapshot != nil { rc.raftStorage.ApplySnapshot(*snapshot) } - rc.raftStorage.SetHardState(st) + rc.raftStorage.SetHardState(*st) // append to storage so raft starts at the right place in log - rc.raftStorage.Append(ents) + if len(ents) != 0 { + var valEnts []raftpb.Entry + for _, ent := range ents { + valEnts = append(valEnts, *ent) + } + rc.raftStorage.Append(valEnts) + } return w } @@ -341,8 +348,8 @@ func (rc *raftNode) stopHTTP() { <-rc.httpdonec } -func (rc *raftNode) publishSnapshot(snapshotToSave raftpb.Snapshot) { - if raft.IsEmptySnap(snapshotToSave) { +func (rc *raftNode) publishSnapshot(snapshotToSave *raftpb.Snapshot) { + if raft.IsEmptySnap(*snapshotToSave) { return } @@ -354,7 +361,7 @@ func (rc *raftNode) publishSnapshot(snapshotToSave raftpb.Snapshot) { } rc.commitC <- nil // trigger kvstore to load snapshot - rc.confState = snapshotToSave.Metadata.ConfState + rc.confState = &snapshotToSave.Metadata.ConfState rc.snapshotIndex = snapshotToSave.Metadata.Index rc.appliedIndex = snapshotToSave.Metadata.Index } @@ -380,11 +387,11 @@ func (rc *raftNode) maybeTriggerSnapshot(applyDoneC <-chan struct{}) { if err != nil { log.Panic(err) } - snap, err := rc.raftStorage.CreateSnapshot(rc.appliedIndex, &rc.confState, data) + snap, err := rc.raftStorage.CreateSnapshot(rc.appliedIndex, rc.confState, data) if err != nil { panic(err) } - if err := rc.saveSnap(snap); err != nil { + if err := rc.saveSnap(&snap); err != nil { panic(err) } @@ -408,7 +415,7 @@ func (rc *raftNode) serveChannels() { if err != nil { panic(err) } - rc.confState = snap.Metadata.ConfState + rc.confState = &snap.Metadata.ConfState rc.snapshotIndex = snap.Metadata.Index rc.appliedIndex = snap.Metadata.Index @@ -437,7 +444,7 @@ func (rc *raftNode) serveChannels() { } else { confChangeCount++ cc.ID = confChangeCount - rc.node.ProposeConfChange(context.TODO(), cc) + rc.node.ProposeConfChange(context.TODO(), *cc) } } } @@ -456,16 +463,32 @@ func (rc *raftNode) serveChannels() { // Must save the snapshot file and WAL snapshot entry before saving any other entries // or hardstate to ensure that recovery after a snapshot restore is possible. if !raft.IsEmptySnap(rd.Snapshot) { - rc.saveSnap(rd.Snapshot) + rc.saveSnap(&rd.Snapshot) + } + var hs *raftpb.HardState + if !raft.IsEmptyHardState(rd.HardState) { + hs = &rd.HardState } - rc.wal.Save(rd.HardState, rd.Entries) + var ptrEntries []*raftpb.Entry + for i := range rd.Entries { + ptrEntries = append(ptrEntries, &rd.Entries[i]) + } + rc.wal.Save(hs, ptrEntries) if !raft.IsEmptySnap(rd.Snapshot) { rc.raftStorage.ApplySnapshot(rd.Snapshot) - rc.publishSnapshot(rd.Snapshot) + rc.publishSnapshot(&rd.Snapshot) } rc.raftStorage.Append(rd.Entries) - rc.transport.Send(rc.processMessages(rd.Messages)) - applyDoneC, ok := rc.publishEntries(rc.entriesToApply(rd.CommittedEntries)) + var ptrMsgs []*raftpb.Message + for i := range rd.Messages { + ptrMsgs = append(ptrMsgs, &rd.Messages[i]) + } + rc.transport.Send(rc.processMessages(ptrMsgs)) + var ptrCommits []*raftpb.Entry + for i := range rd.CommittedEntries { + ptrCommits = append(ptrCommits, &rd.CommittedEntries[i]) + } + applyDoneC, ok := rc.publishEntries(rc.entriesToApply(ptrCommits)) if !ok { rc.stop() return @@ -487,13 +510,15 @@ func (rc *raftNode) serveChannels() { // When there is a `raftpb.EntryConfChange` after creating the snapshot, // then the confState included in the snapshot is out of date. so We need // to update the confState before sending a snapshot to a follower. -func (rc *raftNode) processMessages(ms []raftpb.Message) []raftpb.Message { +func (rc *raftNode) processMessages(ms []*raftpb.Message) []*raftpb.Message { + var messages []*raftpb.Message for i := 0; i < len(ms); i++ { if ms[i].Type == raftpb.MsgSnap { - ms[i].Snapshot.Metadata.ConfState = rc.confState + ms[i].Snapshot.Metadata.ConfState = *rc.confState } + messages = append(messages, ms[i]) } - return ms + return messages } func (rc *raftNode) serveRaft() { @@ -516,8 +541,8 @@ func (rc *raftNode) serveRaft() { close(rc.httpdonec) } -func (rc *raftNode) Process(ctx context.Context, m raftpb.Message) error { - return rc.node.Step(ctx, m) +func (rc *raftNode) Process(ctx context.Context, m *raftpb.Message) error { + return rc.node.Step(ctx, *m) } func (rc *raftNode) IsIDRemoved(_ uint64) bool { return false } func (rc *raftNode) ReportUnreachable(id uint64) { rc.node.ReportUnreachable(id) } diff --git a/contrib/raftexample/raft_test.go b/contrib/raftexample/raft_test.go index a686c8c07071..a1571525972e 100644 --- a/contrib/raftexample/raft_test.go +++ b/contrib/raftexample/raft_test.go @@ -15,10 +15,10 @@ package main import ( - "reflect" "testing" - "github.com/stretchr/testify/require" + "github.com/google/go-cmp/cmp" + "google.golang.org/protobuf/testing/protocmp" "go.etcd.io/raft/v3/raftpb" ) @@ -26,16 +26,16 @@ import ( func TestProcessMessages(t *testing.T) { cases := []struct { name string - confState raftpb.ConfState - InputMessages []raftpb.Message - ExpectedMessages []raftpb.Message + confState *raftpb.ConfState + InputMessages []*raftpb.Message + ExpectedMessages []*raftpb.Message }{ { name: "only one snapshot message", - confState: raftpb.ConfState{ + confState: &raftpb.ConfState{ Voters: []uint64{2, 6, 8, 10}, }, - InputMessages: []raftpb.Message{ + InputMessages: []*raftpb.Message{ { Type: raftpb.MsgSnap, To: 8, @@ -51,7 +51,7 @@ func TestProcessMessages(t *testing.T) { }, }, }, - ExpectedMessages: []raftpb.Message{ + ExpectedMessages: []*raftpb.Message{ { Type: raftpb.MsgSnap, To: 8, @@ -69,10 +69,10 @@ func TestProcessMessages(t *testing.T) { }, { name: "one snapshot message and one other message", - confState: raftpb.ConfState{ + confState: &raftpb.ConfState{ Voters: []uint64{2, 7, 8, 12}, }, - InputMessages: []raftpb.Message{ + InputMessages: []*raftpb.Message{ { Type: raftpb.MsgSnap, To: 8, @@ -93,7 +93,7 @@ func TestProcessMessages(t *testing.T) { To: 8, }, }, - ExpectedMessages: []raftpb.Message{ + ExpectedMessages: []*raftpb.Message{ { Type: raftpb.MsgSnap, To: 8, @@ -123,7 +123,9 @@ func TestProcessMessages(t *testing.T) { } outputMessages := rn.processMessages(tc.InputMessages) - require.Truef(t, reflect.DeepEqual(outputMessages, tc.ExpectedMessages), "Unexpected messages, expected: %v, got %v", tc.ExpectedMessages, outputMessages) + if diff := cmp.Diff(tc.ExpectedMessages, outputMessages, protocmp.Transform()); diff != "" { + t.Errorf("unexpected diff (-want +got):\n%s", diff) + } }) } } diff --git a/contrib/raftexample/raftexample_test.go b/contrib/raftexample/raftexample_test.go index ceeba379179e..8fb404656281 100644 --- a/contrib/raftexample/raftexample_test.go +++ b/contrib/raftexample/raftexample_test.go @@ -43,7 +43,7 @@ type cluster struct { commitC []<-chan *commit errorC []<-chan error proposeC []chan string - confChangeC []chan raftpb.ConfChange + confChangeC []chan *raftpb.ConfChange snapshotTriggeredC []<-chan struct{} } @@ -59,7 +59,7 @@ func newCluster(n int) *cluster { commitC: make([]<-chan *commit, len(peers)), errorC: make([]<-chan error, len(peers)), proposeC: make([]chan string, len(peers)), - confChangeC: make([]chan raftpb.ConfChange, len(peers)), + confChangeC: make([]chan *raftpb.ConfChange, len(peers)), snapshotTriggeredC: make([]<-chan struct{}, len(peers)), } @@ -67,7 +67,7 @@ func newCluster(n int) *cluster { os.RemoveAll(fmt.Sprintf("raftexample-%d", i+1)) os.RemoveAll(fmt.Sprintf("raftexample-%d-snap", i+1)) clus.proposeC[i] = make(chan string, 1) - clus.confChangeC[i] = make(chan raftpb.ConfChange, 1) + clus.confChangeC[i] = make(chan *raftpb.ConfChange, 1) fn, snapshotTriggeredC := getSnapshotFn() clus.snapshotTriggeredC[i] = snapshotTriggeredC clus.commitC[i], clus.errorC[i], _ = newRaftNode(i+1, clus.peers, false, fn, clus.proposeC[i], clus.confChangeC[i]) @@ -176,7 +176,7 @@ func TestPutAndGetKeyValue(t *testing.T) { proposeC := make(chan string) defer close(proposeC) - confChangeC := make(chan raftpb.ConfChange) + confChangeC := make(chan *raftpb.ConfChange) defer close(confChangeC) var kvs *kvstore @@ -232,7 +232,7 @@ func TestAddNewNode(t *testing.T) { }() newNodeURL := "http://127.0.0.1:10004" - clus.confChangeC[0] <- raftpb.ConfChange{ + clus.confChangeC[0] <- &raftpb.ConfChange{ Type: raftpb.ConfChangeAddNode, NodeID: 4, Context: []byte(newNodeURL), @@ -241,7 +241,7 @@ func TestAddNewNode(t *testing.T) { proposeC := make(chan string) defer close(proposeC) - confChangeC := make(chan raftpb.ConfChange) + confChangeC := make(chan *raftpb.ConfChange) defer close(confChangeC) newRaftNode(4, append(clus.peers, newNodeURL), true, nil, proposeC, confChangeC) From 91e2e7ca2a94179df4667a331fbc22e7dfbb7640 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 25 May 2026 19:21:13 +0200 Subject: [PATCH 1020/1068] tools/etcd-dump-logs: migrate log printer to pointerized types Signed-off-by: Marek Siarkowicz --- tools/etcd-dump-logs/etcd-dump-log_test.go | 19 ++++++++++--------- tools/etcd-dump-logs/main.go | 8 ++++++-- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/tools/etcd-dump-logs/etcd-dump-log_test.go b/tools/etcd-dump-logs/etcd-dump-log_test.go index 1c936348e1e2..05d215d68cba 100644 --- a/tools/etcd-dump-logs/etcd-dump-log_test.go +++ b/tools/etcd-dump-logs/etcd-dump-log_test.go @@ -74,7 +74,8 @@ func TestEtcdDumpLogEntryType(t *testing.T) { {"decoder_wrongoutputformat", []string{"-stream-decoder", decoderWrongOutputFormat, p}, "expectedoutput/decoder_wrongoutputformat.output"}, } - for _, argtest := range argtests { + for i := range argtests { + argtest := &argtests[i] t.Run(argtest.name, func(t *testing.T) { cmd := exec.Command(dumpLogsBinary, argtest.args...) actual, err := cmd.CombinedOutput() @@ -103,7 +104,7 @@ func mustCreateWALLog(t *testing.T, path string) { err = os.Mkdir(snapdir, 0o744) require.NoError(t, err) - ents := make([]raftpb.Entry, 0) + ents := make([]*raftpb.Entry, 0) // append entries into wal log appendConfigChangeEnts(&ents) @@ -111,19 +112,19 @@ func mustCreateWALLog(t *testing.T, path string) { appendUnknownNormalEnts(&ents) // force commit newly appended entries - err = w.Save(raftpb.HardState{}, ents) + err = w.Save(&raftpb.HardState{}, ents) require.NoError(t, err) w.Close() } -func appendConfigChangeEnts(ents *[]raftpb.Entry) { +func appendConfigChangeEnts(ents *[]*raftpb.Entry) { configChangeData := []raftpb.ConfChange{ {ID: 1, Type: raftpb.ConfChangeAddNode, NodeID: 2, Context: []byte("")}, {ID: 2, Type: raftpb.ConfChangeRemoveNode, NodeID: 2, Context: []byte("")}, {ID: 3, Type: raftpb.ConfChangeUpdateNode, NodeID: 2, Context: []byte("")}, {ID: 4, Type: raftpb.ConfChangeAddLearnerNode, NodeID: 3, Context: []byte("")}, } - configChangeEntries := []raftpb.Entry{ + configChangeEntries := []*raftpb.Entry{ {Term: 1, Index: 1, Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(&configChangeData[0])}, {Term: 2, Index: 2, Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(&configChangeData[1])}, {Term: 2, Index: 3, Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(&configChangeData[2])}, @@ -132,7 +133,7 @@ func appendConfigChangeEnts(ents *[]raftpb.Entry) { *ents = append(*ents, configChangeEntries...) } -func appendNormalIRREnts(ents *[]raftpb.Entry) { +func appendNormalIRREnts(ents *[]*raftpb.Entry) { irrrange := &etcdserverpb.RangeRequest{Key: []byte("1"), RangeEnd: []byte("hi"), Limit: 6, Revision: 1, SortOrder: 1, SortTarget: 0, Serializable: false, KeysOnly: false, CountOnly: false, MinModRevision: 0, MaxModRevision: 20000, MinCreateRevision: 0, MaxCreateRevision: 20000} irrput := &etcdserverpb.PutRequest{Key: []byte("foo1"), Value: []byte("bar1"), Lease: 1, PrevKv: false, IgnoreValue: false, IgnoreLease: true} @@ -228,15 +229,15 @@ func appendNormalIRREnts(ents *[]raftpb.Entry) { currentry.Index = uint64(i + 10) currentry.Type = raftpb.EntryNormal currentry.Data = pbutil.MustMarshalMessage(irr) - *ents = append(*ents, currentry) + *ents = append(*ents, ¤try) } } -func appendUnknownNormalEnts(ents *[]raftpb.Entry) { +func appendUnknownNormalEnts(ents *[]*raftpb.Entry) { var currentry raftpb.Entry currentry.Term = 27 currentry.Index = 34 currentry.Type = raftpb.EntryNormal currentry.Data = []byte("?") - *ents = append(*ents, currentry) + *ents = append(*ents, ¤try) } diff --git a/tools/etcd-dump-logs/main.go b/tools/etcd-dump-logs/main.go index dec90309a802..785c656728c3 100644 --- a/tools/etcd-dump-logs/main.go +++ b/tools/etcd-dump-logs/main.go @@ -187,11 +187,15 @@ func readUsingReadAll(lg *zap.Logger, startFromIndex bool, startIndex *uint64, e if e.Index >= *endIndex { continue } - entries = append(entries, e) + entries = append(entries, *e) } return entries } - return ents + entries := make([]raftpb.Entry, len(ents)) + for i, e := range ents { + entries[i] = *e + } + return entries } func walDir(dataDir string) string { return filepath.Join(dataDir, "member", "wal") } From 8acf7e485eec01ef0426ac7505cb8f2236351f0a Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 25 May 2026 19:24:32 +0200 Subject: [PATCH 1021/1068] tests/robustness: adapt robustness WAL report helpers to pointerized WAL API changes Signed-off-by: Marek Siarkowicz --- tests/robustness/report/wal.go | 22 +- tests/robustness/report/wal_test.go | 354 ++++++++++++++-------------- 2 files changed, 188 insertions(+), 188 deletions(-) diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index e806c6b0165c..20402a513a3b 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -63,7 +63,7 @@ func PersistedRequests(lg *zap.Logger, dataDirs []string) ([]model.EtcdRequest, if len(dataDirs) == 0 { return nil, errors.New("no data dirs") } - entriesPersistedInWAL := make([][]raftpb.Entry, len(dataDirs)) + entriesPersistedInWAL := make([][]*raftpb.Entry, len(dataDirs)) var minCommitIndex uint64 = math.MaxUint64 for i, dir := range dataDirs { state, entries, err := ReadWAL(lg, dir) @@ -94,7 +94,7 @@ func PersistedRequests(lg *zap.Logger, dataDirs []string) ([]model.EtcdRequest, return persistedRequests, nil } -func mergeMembersEntries(minCommitIndex uint64, memberEntries [][]raftpb.Entry) ([]raftpb.Entry, error) { +func mergeMembersEntries(minCommitIndex uint64, memberEntries [][]*raftpb.Entry) ([]*raftpb.Entry, error) { for _, entries := range memberEntries { var lastIndex uint64 for _, e := range entries { @@ -105,7 +105,7 @@ func mergeMembersEntries(minCommitIndex uint64, memberEntries [][]raftpb.Entry) } } memberIndices := make([]int, len(memberEntries)) - mergedHistory := []raftpb.Entry{} + mergedHistory := []*raftpb.Entry{} var raftIndex uint64 for { // Find entry with raftIndex. @@ -169,20 +169,20 @@ func mergeMembersEntries(minCommitIndex uint64, memberEntries [][]raftpb.Entry) } entry := memberEntries[i][memberIndices[i]] if entryWithMostVotes == nil { - entryWithMostVotes = &entry + entryWithMostVotes = entry continue } if entryWithMostVotes.Term != entry.Term && entry.Index > minCommitIndex { if entryWithMostVotes.Term < entry.Term { - entryWithMostVotes = &entry + entryWithMostVotes = entry } continue } - if !reflect.DeepEqual(*entryWithMostVotes, entry) { - return nil, fmt.Errorf("mismatching entries on raft index %d, mostVotes: %+v, other: %+v", raftIndex, *entryWithMostVotes, entry) + if !reflect.DeepEqual(entryWithMostVotes, entry) { + return nil, fmt.Errorf("mismatching entries on raft index %d, mostVotes: %+v, other: %+v", raftIndex, entryWithMostVotes, entry) } } - mergedHistory = append(mergedHistory, *entryWithMostVotes) + mergedHistory = append(mergedHistory, entryWithMostVotes) } if len(mergedHistory) == 0 { return nil, errors.New("no WAL entries matched") @@ -190,7 +190,7 @@ func mergeMembersEntries(minCommitIndex uint64, memberEntries [][]raftpb.Entry) return mergedHistory, nil } -func ReadWAL(lg *zap.Logger, dataDir string) (state raftpb.HardState, ents []raftpb.Entry, err error) { +func ReadWAL(lg *zap.Logger, dataDir string) (state *raftpb.HardState, ents []*raftpb.Entry, err error) { walDir := datadir.ToWALDir(dataDir) repaired := false for { @@ -211,7 +211,7 @@ func ReadWAL(lg *zap.Logger, dataDir string) (state raftpb.HardState, ents []raf } } -func parseEntryNormal(ent raftpb.Entry) (*model.EtcdRequest, error) { +func parseEntryNormal(ent *raftpb.Entry) (*model.EtcdRequest, error) { var raftReq pb.InternalRaftRequest if len(ent.Data) == 0 { return nil, nil @@ -351,7 +351,7 @@ func toEtcdOperation(op *pb.RequestOp) (operation model.EtcdOperation) { return operation } -func ReadAllWALEntries(lg *zap.Logger, dirpath string) (state raftpb.HardState, ents []raftpb.Entry, err error) { +func ReadAllWALEntries(lg *zap.Logger, dirpath string) (state *raftpb.HardState, ents []*raftpb.Entry, err error) { names, err := fileutil.ReadDir(dirpath) if err != nil { return state, nil, err diff --git a/tests/robustness/report/wal_test.go b/tests/robustness/report/wal_test.go index eb00476511b6..d151ec20dbdb 100644 --- a/tests/robustness/report/wal_test.go +++ b/tests/robustness/report/wal_test.go @@ -30,62 +30,62 @@ func TestMergeMemberEntries(t *testing.T) { tcs := []struct { name string minCommitIndex uint64 - memberEntries [][]raftpb.Entry + memberEntries [][]*raftpb.Entry expectErr string - expectEntries []raftpb.Entry + expectEntries []*raftpb.Entry }{ { name: "Error when empty data dir", - memberEntries: [][]raftpb.Entry{}, + memberEntries: [][]*raftpb.Entry{}, expectErr: "no WAL entries matched", }, { name: "Success when no entries", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ {}, }, expectErr: "no WAL entries matched", }, { name: "Error when one member cluster didn't observe the index", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, }, expectErr: "no entry for raft index 2", }, { name: "Error when entries index unordered", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ { - raftpb.Entry{Index: 3, Data: []byte("c")}, - raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, }, }, expectErr: "raft index should increase, got: 1, previous: 3", }, { name: "Error when entries index duplicated", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, }, }, expectErr: "raft index should increase, got: 1, previous: 1", }, { name: "Success when one member cluster", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, }, - expectEntries: []raftpb.Entry{ + expectEntries: []*raftpb.Entry{ {Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, @@ -93,24 +93,24 @@ func TestMergeMemberEntries(t *testing.T) { }, { name: "Success when three members agree on entries", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, }, - expectEntries: []raftpb.Entry{ + expectEntries: []*raftpb.Entry{ {Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, @@ -118,27 +118,27 @@ func TestMergeMemberEntries(t *testing.T) { }, { name: "Success when three members have no entries", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ {}, {}, {}, }, expectErr: "no WAL entries matched", }, { name: "Success when one member has no entries in three node cluster", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ {}, { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, }, - expectEntries: []raftpb.Entry{ + expectEntries: []*raftpb.Entry{ {Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, @@ -146,16 +146,16 @@ func TestMergeMemberEntries(t *testing.T) { }, { name: "Success if two members have no entries in three node cluster", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ {}, {}, { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, }, - expectEntries: []raftpb.Entry{ + expectEntries: []*raftpb.Entry{ {Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, @@ -163,20 +163,20 @@ func TestMergeMemberEntries(t *testing.T) { }, { name: "Success if members didn't observe the whole history", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, }, { - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, { - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, }, - expectEntries: []raftpb.Entry{ + expectEntries: []*raftpb.Entry{ {Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, @@ -184,18 +184,18 @@ func TestMergeMemberEntries(t *testing.T) { }, { name: "Success if members observed only one part of history", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ { - raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, }, { - raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, }, { - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, }, - expectEntries: []raftpb.Entry{ + expectEntries: []*raftpb.Entry{ {Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, @@ -203,34 +203,34 @@ func TestMergeMemberEntries(t *testing.T) { }, { name: "Error when in three member cluster if no members observed index", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, }, expectErr: "no entry for raft index 2", }, { name: "Success if only one member observed history", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, {}, {}, }, - expectEntries: []raftpb.Entry{ + expectEntries: []*raftpb.Entry{ {Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, @@ -238,24 +238,24 @@ func TestMergeMemberEntries(t *testing.T) { }, { name: "Success when one member observed different last entry", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("x")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("x")}, }, }, - expectEntries: []raftpb.Entry{ + expectEntries: []*raftpb.Entry{ {Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, @@ -263,58 +263,58 @@ func TestMergeMemberEntries(t *testing.T) { }, { name: "Error when one member didn't observe whole history and others observed different last entry", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, }, { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("x")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("x")}, }, }, expectErr: "mismatching entries on raft index 3", }, { name: "Error when three members observed different last entry", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("x")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("x")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("y")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("y")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, { - raftpb.Entry{Index: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Data: []byte("z")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Data: []byte("z")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, }, expectErr: "mismatching entries on raft index 2", }, { name: "Error when one member observed empty history and others differ on last entry", - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ {}, { - raftpb.Entry{Index: 1, Data: []byte("x")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("x")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, { - raftpb.Entry{Index: 1, Data: []byte("y")}, - raftpb.Entry{Index: 2, Data: []byte("b")}, - raftpb.Entry{Index: 3, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Data: []byte("y")}, + &raftpb.Entry{Index: 2, Data: []byte("b")}, + &raftpb.Entry{Index: 3, Data: []byte("c")}, }, }, expectErr: "mismatching entries on raft index 1", @@ -322,14 +322,14 @@ func TestMergeMemberEntries(t *testing.T) { { name: "Error if entries mismatch on index before minCommitIndex", minCommitIndex: 2, - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ { - raftpb.Entry{Index: 1, Term: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Term: 1, Data: []byte("b")}, + &raftpb.Entry{Index: 1, Term: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Term: 1, Data: []byte("b")}, }, { - raftpb.Entry{Index: 1, Term: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Term: 2, Data: []byte("c")}, + &raftpb.Entry{Index: 1, Term: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Term: 2, Data: []byte("c")}, }, }, expectErr: "mismatching entries on raft index 2", @@ -337,17 +337,17 @@ func TestMergeMemberEntries(t *testing.T) { { name: "Select entry with higher term if they conflict on uncommitted index", minCommitIndex: 1, - memberEntries: [][]raftpb.Entry{ + memberEntries: [][]*raftpb.Entry{ { - raftpb.Entry{Index: 1, Term: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Term: 1, Data: []byte("b")}, + &raftpb.Entry{Index: 1, Term: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Term: 1, Data: []byte("b")}, }, { - raftpb.Entry{Index: 1, Term: 1, Data: []byte("a")}, - raftpb.Entry{Index: 2, Term: 2, Data: []byte("x")}, + &raftpb.Entry{Index: 1, Term: 1, Data: []byte("a")}, + &raftpb.Entry{Index: 2, Term: 2, Data: []byte("x")}, }, }, - expectEntries: []raftpb.Entry{ + expectEntries: []*raftpb.Entry{ {Index: 1, Term: 1, Data: []byte("a")}, {Index: 2, Term: 2, Data: []byte("x")}, }, @@ -369,12 +369,12 @@ func TestMergeMemberEntries(t *testing.T) { func TestWriteReadWAL(t *testing.T) { type batch struct { state *raftpb.HardState - entries []raftpb.Entry + entries []*raftpb.Entry snapshot *walpb.Snapshot } type want struct { - wantState raftpb.HardState - wantEntries []raftpb.Entry + wantState *raftpb.HardState + wantEntries []*raftpb.Entry wantError string } @@ -390,16 +390,16 @@ func TestWriteReadWAL(t *testing.T) { operations: []batch{ { state: &raftpb.HardState{Commit: 5}, - entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + entries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, }, walReadAll: want{ - wantState: raftpb.HardState{Commit: 5}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + wantState: &raftpb.HardState{Commit: 5}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, readAllEntries: want{ - wantState: raftpb.HardState{Commit: 5}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + wantState: &raftpb.HardState{Commit: 5}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, }, { @@ -407,24 +407,24 @@ func TestWriteReadWAL(t *testing.T) { operations: []batch{ { state: &raftpb.HardState{Commit: 2}, - entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + entries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, { state: &raftpb.HardState{Commit: 4}, - entries: []raftpb.Entry{{Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, + entries: []*raftpb.Entry{{Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, }, { state: &raftpb.HardState{Commit: 5}, - entries: []raftpb.Entry{{Index: 5, Data: []byte("e")}}, + entries: []*raftpb.Entry{{Index: 5, Data: []byte("e")}}, }, }, walReadAll: want{ - wantState: raftpb.HardState{Commit: 5}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + wantState: &raftpb.HardState{Commit: 5}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, readAllEntries: want{ - wantState: raftpb.HardState{Commit: 5}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + wantState: &raftpb.HardState{Commit: 5}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, }, { @@ -432,24 +432,24 @@ func TestWriteReadWAL(t *testing.T) { operations: []batch{ { state: &raftpb.HardState{Commit: 1}, - entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("a")}}, + entries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("a")}}, }, { state: &raftpb.HardState{Commit: 3}, - entries: []raftpb.Entry{{Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("b")}, {Index: 4, Data: []byte("b")}}, + entries: []*raftpb.Entry{{Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("b")}, {Index: 4, Data: []byte("b")}}, }, { state: &raftpb.HardState{Commit: 4}, - entries: []raftpb.Entry{{Index: 4, Data: []byte("c")}, {Index: 5, Data: []byte("c")}}, + entries: []*raftpb.Entry{{Index: 4, Data: []byte("c")}, {Index: 5, Data: []byte("c")}}, }, }, walReadAll: want{ - wantState: raftpb.HardState{Commit: 4}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("b")}, {Index: 4, Data: []byte("c")}, {Index: 5, Data: []byte("c")}}, + wantState: &raftpb.HardState{Commit: 4}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("b")}, {Index: 4, Data: []byte("c")}, {Index: 5, Data: []byte("c")}}, }, readAllEntries: want{ - wantState: raftpb.HardState{Commit: 4}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("b")}, {Index: 4, Data: []byte("c")}, {Index: 5, Data: []byte("c")}}, + wantState: &raftpb.HardState{Commit: 4}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("b")}, {Index: 4, Data: []byte("c")}, {Index: 5, Data: []byte("c")}}, }, }, { @@ -457,25 +457,25 @@ func TestWriteReadWAL(t *testing.T) { operations: []batch{ { state: &raftpb.HardState{Commit: 2}, - entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + entries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, { state: &raftpb.HardState{Commit: 6}, - entries: []raftpb.Entry{{Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, + entries: []*raftpb.Entry{{Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, }, { state: &raftpb.HardState{Commit: 4}, - entries: []raftpb.Entry{{Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, + entries: []*raftpb.Entry{{Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, }, }, walReadAll: want{ wantError: "slice bounds out of range", - wantState: raftpb.HardState{Commit: 2}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + wantState: &raftpb.HardState{Commit: 2}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, readAllEntries: want{ - wantState: raftpb.HardState{Commit: 4}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, + wantState: &raftpb.HardState{Commit: 4}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, }, }, { @@ -483,24 +483,24 @@ func TestWriteReadWAL(t *testing.T) { operations: []batch{ { state: &raftpb.HardState{Commit: 1}, - entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + entries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, { snapshot: &walpb.Snapshot{Index: new(uint64(3)), Term: new(uint64(0)), ConfState: &raftpb.ConfState{}}, }, { state: &raftpb.HardState{Commit: 5}, - entries: []raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + entries: []*raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, }, walReadAll: want{ wantError: "slice bounds out of range", - wantState: raftpb.HardState{Commit: 1}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + wantState: &raftpb.HardState{Commit: 1}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, readAllEntries: want{ - wantState: raftpb.HardState{Commit: 5}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + wantState: &raftpb.HardState{Commit: 5}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, }, { @@ -508,24 +508,24 @@ func TestWriteReadWAL(t *testing.T) { operations: []batch{ { state: &raftpb.HardState{Commit: 1}, - entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + entries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, { snapshot: &walpb.Snapshot{Index: new(uint64(3)), Term: new(uint64(0)), ConfState: &raftpb.ConfState{}}, }, { state: &raftpb.HardState{Commit: 5}, - entries: []raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + entries: []*raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, }, readAt: &walpb.Snapshot{Index: new(uint64(3))}, walReadAll: want{ - wantState: raftpb.HardState{Commit: 5}, - wantEntries: []raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + wantState: &raftpb.HardState{Commit: 5}, + wantEntries: []*raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, readAllEntries: want{ - wantState: raftpb.HardState{Commit: 5}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + wantState: &raftpb.HardState{Commit: 5}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, }, { @@ -533,27 +533,27 @@ func TestWriteReadWAL(t *testing.T) { operations: []batch{ { state: &raftpb.HardState{Commit: 1}, - entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + entries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, { state: &raftpb.HardState{Commit: 3}, - entries: []raftpb.Entry{{Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, + entries: []*raftpb.Entry{{Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, }, { snapshot: &walpb.Snapshot{Index: new(uint64(3)), Term: new(uint64(0)), ConfState: &raftpb.ConfState{}}, }, { state: &raftpb.HardState{Commit: 4}, - entries: []raftpb.Entry{{Index: 4, Data: []byte("e")}, {Index: 5, Data: []byte("f")}}, + entries: []*raftpb.Entry{{Index: 4, Data: []byte("e")}, {Index: 5, Data: []byte("f")}}, }, }, walReadAll: want{ - wantState: raftpb.HardState{Commit: 4}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("e")}, {Index: 5, Data: []byte("f")}}, + wantState: &raftpb.HardState{Commit: 4}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("e")}, {Index: 5, Data: []byte("f")}}, }, readAllEntries: want{ - wantState: raftpb.HardState{Commit: 4}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("e")}, {Index: 5, Data: []byte("f")}}, + wantState: &raftpb.HardState{Commit: 4}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("e")}, {Index: 5, Data: []byte("f")}}, }, }, { @@ -564,25 +564,25 @@ func TestWriteReadWAL(t *testing.T) { }, { state: &raftpb.HardState{Commit: 2}, - entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + entries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, { state: &raftpb.HardState{Commit: 4}, - entries: []raftpb.Entry{{Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, + entries: []*raftpb.Entry{{Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}}, }, { state: &raftpb.HardState{Commit: 6}, - entries: []raftpb.Entry{{Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, + entries: []*raftpb.Entry{{Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, }, }, readAt: &walpb.Snapshot{Index: new(uint64(4))}, walReadAll: want{ - wantState: raftpb.HardState{Commit: 6}, - wantEntries: []raftpb.Entry{{Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, + wantState: &raftpb.HardState{Commit: 6}, + wantEntries: []*raftpb.Entry{{Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, }, readAllEntries: want{ - wantState: raftpb.HardState{Commit: 6}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, + wantState: &raftpb.HardState{Commit: 6}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 3, Data: []byte("c")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}, {Index: 6, Data: []byte("f")}}, }, }, { @@ -590,25 +590,25 @@ func TestWriteReadWAL(t *testing.T) { operations: []batch{ { state: &raftpb.HardState{Commit: 1}, - entries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, + entries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}}, }, { snapshot: &walpb.Snapshot{Index: new(uint64(3)), Term: new(uint64(0)), ConfState: &raftpb.ConfState{}}, }, { state: &raftpb.HardState{Commit: 5}, - entries: []raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + entries: []*raftpb.Entry{{Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, }, readAt: &walpb.Snapshot{Index: new(uint64(4))}, walReadAll: want{ wantError: "snapshot not found", - wantState: raftpb.HardState{Commit: 5}, - wantEntries: []raftpb.Entry{{Index: 5, Data: []byte("e")}}, + wantState: &raftpb.HardState{Commit: 5}, + wantEntries: []*raftpb.Entry{{Index: 5, Data: []byte("e")}}, }, readAllEntries: want{ - wantState: raftpb.HardState{Commit: 5}, - wantEntries: []raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, + wantState: &raftpb.HardState{Commit: 5}, + wantEntries: []*raftpb.Entry{{Index: 1, Data: []byte("a")}, {Index: 2, Data: []byte("b")}, {Index: 4, Data: []byte("d")}, {Index: 5, Data: []byte("e")}}, }, }, } @@ -620,7 +620,7 @@ func TestWriteReadWAL(t *testing.T) { require.NoError(t, err) for _, op := range tc.operations { if op.state != nil { - err = w.Save(*op.state, op.entries) + err = w.Save(op.state, op.entries) require.NoError(t, err) } if op.snapshot != nil { From d59c902234b1e8d525a7f168d70301825340b35e Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 26 May 2026 10:54:51 +0200 Subject: [PATCH 1022/1068] tools: migrate etcd-dump-logs to pointerized WAL API changes Signed-off-by: Marek Siarkowicz --- tools/etcd-dump-logs/main.go | 48 +++++++++++++++++------------------- 1 file changed, 22 insertions(+), 26 deletions(-) diff --git a/tools/etcd-dump-logs/main.go b/tools/etcd-dump-logs/main.go index 785c656728c3..313c7475dad5 100644 --- a/tools/etcd-dump-logs/main.go +++ b/tools/etcd-dump-logs/main.go @@ -113,7 +113,7 @@ and output a hex encoded line of binary for each input line`) } } -func readUsingReadAll(lg *zap.Logger, startFromIndex bool, startIndex *uint64, endIndex *uint64, snapfile *string, dataDir string, waldir *string) []raftpb.Entry { +func readUsingReadAll(lg *zap.Logger, startFromIndex bool, startIndex *uint64, endIndex *uint64, snapfile *string, dataDir string, waldir *string) []*raftpb.Entry { var ( walsnap walpb.Snapshot snapshot *raftpb.Snapshot @@ -180,22 +180,18 @@ func readUsingReadAll(lg *zap.Logger, startFromIndex bool, startIndex *uint64, e fmt.Printf("WAL metadata:\nnodeID=%s clusterID=%s term=%d commitIndex=%d vote=%s\n", id, cid, state.Term, state.Commit, vid) if endAtIndex { - entries := make([]raftpb.Entry, 0) + entries := make([]*raftpb.Entry, 0) for _, e := range ents { // WAL might contain entries with e.Index >= *endIndex from prev term, then e.Index < *endIndex in the next term. // We cannot break when e.Index >= *endIndex. if e.Index >= *endIndex { continue } - entries = append(entries, *e) + entries = append(entries, e) } return entries } - entries := make([]raftpb.Entry, len(ents)) - for i, e := range ents { - entries[i] = *e - } - return entries + return ents } func walDir(dataDir string) string { return filepath.Join(dataDir, "member", "wal") } @@ -218,76 +214,76 @@ func genIDSlice(a []uint64) []types.ID { return ids } -type EntryFilter func(e raftpb.Entry) (bool, string) +type EntryFilter func(e *raftpb.Entry) (bool, string) // The 9 pass functions below takes the raftpb.Entry and return if the entry should be printed and the type of entry, // the type of the entry will used in the following print function -func passConfChange(entry raftpb.Entry) (bool, string) { +func passConfChange(entry *raftpb.Entry) (bool, string) { return entry.Type == raftpb.EntryConfChange, "ConfigChange" } -func passInternalRaftRequest(entry raftpb.Entry) (bool, string) { +func passInternalRaftRequest(entry *raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil, "InternalRaftRequest" } -func passUnknownNormal(entry raftpb.Entry) (bool, string) { +func passUnknownNormal(entry *raftpb.Entry) (bool, string) { var rr2 etcdserverpb.InternalRaftRequest return (entry.Type == raftpb.EntryNormal) && proto.Unmarshal(entry.Data, &rr2) != nil, "UnknownNormal" } -func passIRRRange(entry raftpb.Entry) (bool, string) { +func passIRRRange(entry *raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.Range != nil, "InternalRaftRequest" } -func passIRRPut(entry raftpb.Entry) (bool, string) { +func passIRRPut(entry *raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.Put != nil, "InternalRaftRequest" } -func passIRRDeleteRange(entry raftpb.Entry) (bool, string) { +func passIRRDeleteRange(entry *raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.DeleteRange != nil, "InternalRaftRequest" } -func passIRRTxn(entry raftpb.Entry) (bool, string) { +func passIRRTxn(entry *raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.Txn != nil, "InternalRaftRequest" } -func passIRRCompaction(entry raftpb.Entry) (bool, string) { +func passIRRCompaction(entry *raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.Compaction != nil, "InternalRaftRequest" } -func passIRRLeaseGrant(entry raftpb.Entry) (bool, string) { +func passIRRLeaseGrant(entry *raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.LeaseGrant != nil, "InternalRaftRequest" } -func passIRRLeaseRevoke(entry raftpb.Entry) (bool, string) { +func passIRRLeaseRevoke(entry *raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.LeaseRevoke != nil, "InternalRaftRequest" } -func passIRRLeaseCheckpoint(entry raftpb.Entry) (bool, string) { +func passIRRLeaseCheckpoint(entry *raftpb.Entry) (bool, string) { var rr etcdserverpb.InternalRaftRequest return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr) == nil && rr.LeaseCheckpoint != nil, "InternalRaftRequest" } -func passRequest(entry raftpb.Entry) (bool, string) { +func passRequest(entry *raftpb.Entry) (bool, string) { var rr2 etcdserverpb.InternalRaftRequest return entry.Type == raftpb.EntryNormal && proto.Unmarshal(entry.Data, &rr2) != nil, "Request" } -type EntryPrinter func(e raftpb.Entry) +type EntryPrinter func(e *raftpb.Entry) // The 4 print functions below print the entry format based on there types // printInternalRaftRequest is used to print entry information for IRRRange, IRRPut, // IRRDeleteRange and IRRTxn entries -func printInternalRaftRequest(entry raftpb.Entry) { +func printInternalRaftRequest(entry *raftpb.Entry) { var rr etcdserverpb.InternalRaftRequest if proto.Unmarshal(entry.Data, &rr) == nil { // Ensure we don't log user password @@ -298,11 +294,11 @@ func printInternalRaftRequest(entry raftpb.Entry) { } } -func printUnknownNormal(entry raftpb.Entry) { +func printUnknownNormal(entry *raftpb.Entry) { fmt.Printf("%4d\t%10d\tnorm\t???", entry.Term, entry.Index) } -func printConfChange(entry raftpb.Entry) { +func printConfChange(entry *raftpb.Entry) { fmt.Printf("%4d\t%10d", entry.Term, entry.Index) fmt.Print("\tconf") var r raftpb.ConfChange @@ -351,7 +347,7 @@ IRRCompaction, IRRLeaseGrant, IRRLeaseRevoke, IRRLeaseCheckpoint`, et) } // listEntriesType filters and prints entries based on the entry-type flag, -func listEntriesType(entrytype string, streamdecoder string, ents []raftpb.Entry) { +func listEntriesType(entrytype string, streamdecoder string, ents []*raftpb.Entry) { entryFilters := evaluateEntrytypeFlag(entrytype) printerMap := map[string]EntryPrinter{ "InternalRaftRequest": printInternalRaftRequest, From 79d25653640f2fb656191b23dd04084f65c386d8 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 26 May 2026 10:59:20 +0200 Subject: [PATCH 1023/1068] server: migrate server test to pointerized raft Signed-off-by: Marek Siarkowicz --- server/etcdserver/server_test.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index d98ec886861d..1160268fa02c 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -156,7 +156,7 @@ func TestApplyConfStateWithRestart(t *testing.T) { t.Fatal(err) } - entries := []raftpb.Entry{ + entries := []*raftpb.Entry{ { Term: 1, Index: 1, @@ -217,11 +217,7 @@ func TestApplyConfStateWithRestart(t *testing.T) { confState := raftpb.ConfState{} t.Log("Applying entries for the first time") - var ptrEntries []*raftpb.Entry - for i := range entries { - ptrEntries = append(ptrEntries, &entries[i]) - } - srv.apply(ptrEntries, &confState, nil) + srv.apply(entries, &confState, nil) if got, _ := n.Wait(len(want)); !reflect.DeepEqual(got, want) { t.Errorf("actions don't match\n got %+v\n want %+v", got, want) } @@ -237,7 +233,7 @@ func TestApplyConfStateWithRestart(t *testing.T) { srv.consistIndex.SetBackend(be) t.Log("Reapplying same entries after restart") - srv.apply(ptrEntries, &confState, nil) + srv.apply(entries, &confState, nil) if got, _ := n.Wait(2 * len(want)); !reflect.DeepEqual(got[len(want):], want) { t.Errorf("actions don't match\n got %+v\n want %+v", got, want) } From 18524e9fb9b6d4b563df6474e6c985aad8f37549 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 26 May 2026 12:06:50 +0200 Subject: [PATCH 1024/1068] Add support for KeysOnly into robustness tests Signed-off-by: Marek Siarkowicz --- tests/robustness/client/client.go | 16 +++-- tests/robustness/model/describe.go | 11 +++- tests/robustness/model/describe_test.go | 12 ++-- tests/robustness/model/deterministic.go | 6 +- tests/robustness/model/history.go | 14 ++--- tests/robustness/model/types.go | 7 ++- tests/robustness/report/client_test.go | 2 +- tests/robustness/report/wal.go | 7 ++- tests/robustness/traffic/etcd.go | 62 ++++++++++++------- .../robustness/validate/patch_history_test.go | 2 +- 10 files changed, 89 insertions(+), 50 deletions(-) diff --git a/tests/robustness/client/client.go b/tests/robustness/client/client.go index e1f4211db4ee..f70d24a4b6d9 100644 --- a/tests/robustness/client/client.go +++ b/tests/robustness/client/client.go @@ -90,10 +90,10 @@ func (c *RecordingClient) Do(ctx context.Context, op clientv3.Op) (clientv3.OpRe func (c *RecordingClient) Get(ctx context.Context, key string, opts ...clientv3.OpOption) (*clientv3.GetResponse, error) { op := clientv3.OpGet(key, opts...) - return c.Range(ctx, key, string(op.RangeBytes()), op.Rev(), op.Limit()) + return c.Range(ctx, key, string(op.RangeBytes()), op.Rev(), op.Limit(), op.IsKeysOnly()) } -func (c *RecordingClient) Range(ctx context.Context, start, end string, revision, limit int64) (*clientv3.GetResponse, error) { +func (c *RecordingClient) Range(ctx context.Context, start, end string, revision, limit int64, keyOnly bool) (*clientv3.GetResponse, error) { ops := []clientv3.OpOption{} if end != "" { ops = append(ops, clientv3.WithRange(end)) @@ -104,16 +104,19 @@ func (c *RecordingClient) Range(ctx context.Context, start, end string, revision if limit != 0 { ops = append(ops, clientv3.WithLimit(limit)) } + if keyOnly { + ops = append(ops, clientv3.WithKeysOnly()) + } c.kvMux.Lock() defer c.kvMux.Unlock() callTime := time.Since(c.baseTime) resp, err := c.client.Get(ctx, start, ops...) returnTime := time.Since(c.baseTime) - c.kvOperations.AppendRange(start, end, revision, limit, callTime, returnTime, resp, err) + c.kvOperations.AppendRange(start, end, revision, limit, keyOnly, callTime, returnTime, resp, err) return resp, err } -func (c *RecordingClient) RangeStream(ctx context.Context, start, end string, revision, limit int64) (*clientv3.GetResponse, error) { +func (c *RecordingClient) RangeStream(ctx context.Context, start, end string, revision, limit int64, keyOnly bool) (*clientv3.GetResponse, error) { ops := []clientv3.OpOption{} if end != "" { ops = append(ops, clientv3.WithRange(end)) @@ -124,6 +127,9 @@ func (c *RecordingClient) RangeStream(ctx context.Context, start, end string, re if limit != 0 { ops = append(ops, clientv3.WithLimit(limit)) } + if keyOnly { + ops = append(ops, clientv3.WithKeysOnly()) + } c.kvMux.Lock() defer c.kvMux.Unlock() callTime := time.Since(c.baseTime) @@ -133,7 +139,7 @@ func (c *RecordingClient) RangeStream(ctx context.Context, start, end string, re resp, err = clientv3.GetStreamToGetResponse(stream) } returnTime := time.Since(c.baseTime) - c.kvOperations.AppendRange(start, end, revision, limit, callTime, returnTime, resp, err) + c.kvOperations.AppendRange(start, end, revision, limit, keyOnly, callTime, returnTime, resp, err) return resp, err } diff --git a/tests/robustness/model/describe.go b/tests/robustness/model/describe.go index deb25761c4f2..529103e5d5cd 100644 --- a/tests/robustness/model/describe.go +++ b/tests/robustness/model/describe.go @@ -219,6 +219,9 @@ func describeRangeRequest(opts RangeOptions, revision int64) string { if opts.Limit != 0 { kwargs = append(kwargs, fmt.Sprintf("limit=%d", opts.Limit)) } + if opts.KeysOnly { + kwargs = append(kwargs, "keysOnly") + } kwargsString := strings.Join(kwargs, ", ") if kwargsString != "" { kwargsString = ", " + kwargsString @@ -252,7 +255,11 @@ func describeRangeResponse(request RangeOptions, response RangeResponse) string if request.End != "" { kvs := make([]string, len(response.KVs)) for i, kv := range response.KVs { - kvs[i] = describeValueOrHash(kv.Value) + if request.KeysOnly { + kvs[i] = kv.Key + } else { + kvs[i] = fmt.Sprintf("%s:%s", kv.Key, describeValueOrHash(kv.Value)) + } } return fmt.Sprintf("[%s], count: %d", strings.Join(kvs, ","), response.Count) } @@ -272,7 +279,7 @@ func DescribeOperationMetadata(response MaybeEtcdResponse) string { func describeValueOrHash(value ValueOrHash) string { if value.Hash != 0 { - return fmt.Sprintf("hash: %d", value.Hash) + return fmt.Sprintf("", value.Hash) } if value.Value == "" { return "nil" diff --git a/tests/robustness/model/describe_test.go b/tests/robustness/model/describe_test.go index 3c50053176d0..af700de97f0e 100644 --- a/tests/robustness/model/describe_test.go +++ b/tests/robustness/model/describe_test.go @@ -43,7 +43,7 @@ func TestModelDescribe(t *testing.T) { { req: getRequest("key2b"), resp: getResponse("key2b", "01234567890123456789", 2, 2), - expectDescribe: `get("key2b") -> hash: 2945867837, rev: 2`, + expectDescribe: `get("key2b") -> , rev: 2`, }, { req: putRequest("key3", "3"), @@ -58,7 +58,7 @@ func TestModelDescribe(t *testing.T) { { req: putRequest("key3c", "01234567890123456789"), resp: putResponse(3), - expectDescribe: `put("key3c", hash: 2945867837) -> ok, rev: 3`, + expectDescribe: `put("key3c", ) -> ok, rev: 3`, }, { req: putRequest("key4", "4"), @@ -137,13 +137,13 @@ func TestModelDescribe(t *testing.T) { }, { req: listRequest("key12", 0), - resp: rangeResponse([]*mvccpb.KeyValue{{Value: []byte("12")}}, 2, 12), - expectDescribe: `list("key12") -> ["12"], count: 2, rev: 12`, + resp: rangeResponse([]*mvccpb.KeyValue{{Key: []byte("key12"), Value: []byte("12")}}, 2, 12), + expectDescribe: `list("key12") -> [key12:"12"], count: 2, rev: 12`, }, { req: listRequest("key13", 0), - resp: rangeResponse([]*mvccpb.KeyValue{{Value: []byte("01234567890123456789")}}, 1, 13), - expectDescribe: `list("key13") -> [hash: 2945867837], count: 1, rev: 13`, + resp: rangeResponse([]*mvccpb.KeyValue{{Key: []byte("key13"), Value: []byte("01234567890123456789")}}, 1, 13), + expectDescribe: `list("key13") -> [key13:], count: 1, rev: 13`, }, { req: listRequest("key14", 14), diff --git a/tests/robustness/model/deterministic.go b/tests/robustness/model/deterministic.go index 821e8a1d1d77..feeed12e09f9 100644 --- a/tests/robustness/model/deterministic.go +++ b/tests/robustness/model/deterministic.go @@ -296,7 +296,11 @@ func (s EtcdState) getRange(options RangeOptions) RangeResponse { } k := s.Keys[i] if k >= options.Start && k < options.End { - response.KVs = append(response.KVs, KeyValue{Key: k, ValueRevision: *v}) + kv := KeyValue{Key: k, ValueRevision: *v} + if options.KeysOnly { + kv.ValueRevision.Value = ValueOrHash{} + } + response.KVs = append(response.KVs, kv) count++ } } diff --git a/tests/robustness/model/history.go b/tests/robustness/model/history.go index aa62eed9cbab..a41ffeac82fb 100644 --- a/tests/robustness/model/history.go +++ b/tests/robustness/model/history.go @@ -58,8 +58,8 @@ func NewAppendableHistory(ids identity.Provider) *AppendableHistory { } } -func (h *AppendableHistory) AppendRange(startKey, endKey string, revision, limit int64, start, end time.Duration, resp *clientv3.GetResponse, err error) { - request := staleRangeRequest(startKey, endKey, limit, revision) +func (h *AppendableHistory) AppendRange(startKey, endKey string, revision, limit int64, keysOnly bool, start, end time.Duration, resp *clientv3.GetResponse, err error) { + request := staleRangeRequest(startKey, endKey, limit, revision, keysOnly) if err != nil { h.appendFailed(request, start, end, err) return @@ -343,11 +343,11 @@ func getRequest(key string) EtcdRequest { } func staleGetRequest(key string, revision int64) EtcdRequest { - return staleRangeRequest(key, "", 0, revision) + return staleRangeRequest(key, "", 0, revision, false) } func rangeRequest(start, end string, limit int64) EtcdRequest { - return staleRangeRequest(start, end, limit, 0) + return staleRangeRequest(start, end, limit, 0, false) } func listRequest(key string, limit int64) EtcdRequest { @@ -355,11 +355,11 @@ func listRequest(key string, limit int64) EtcdRequest { } func staleListRequest(key string, limit, revision int64) EtcdRequest { - return staleRangeRequest(key, clientv3.GetPrefixRangeEnd(key), limit, revision) + return staleRangeRequest(key, clientv3.GetPrefixRangeEnd(key), limit, revision, false) } -func staleRangeRequest(start, end string, limit, revision int64) EtcdRequest { - return EtcdRequest{Type: Range, Range: &RangeRequest{RangeOptions: RangeOptions{Start: start, End: end, Limit: limit}, Revision: revision}} +func staleRangeRequest(start, end string, limit, revision int64, keysOnly bool) EtcdRequest { + return EtcdRequest{Type: Range, Range: &RangeRequest{RangeOptions: RangeOptions{Start: start, End: end, Limit: limit, KeysOnly: keysOnly}, Revision: revision}} } func emptyGetResponse(revision int64) MaybeEtcdResponse { diff --git a/tests/robustness/model/types.go b/tests/robustness/model/types.go index 74eaa71a14d1..280a90464744 100644 --- a/tests/robustness/model/types.go +++ b/tests/robustness/model/types.go @@ -71,9 +71,10 @@ type RangeRequest struct { } type RangeOptions struct { - Start string - End string - Limit int64 + Start string + End string + Limit int64 + KeysOnly bool } type PutOptions struct { diff --git a/tests/robustness/report/client_test.go b/tests/robustness/report/client_test.go index ce14da9472bd..3e00dc990436 100644 --- a/tests/robustness/report/client_test.go +++ b/tests/robustness/report/client_test.go @@ -38,7 +38,7 @@ func TestPersistLoadClientReports(t *testing.T) { start := time.Since(baseTime) time.Sleep(time.Nanosecond) stop := time.Since(baseTime) - h.AppendRange("key", "", 0, 0, start, stop, &clientv3.GetResponse{Header: &etcdserverpb.ResponseHeader{Revision: 2}, Count: 2, Kvs: []*mvccpb.KeyValue{{ + h.AppendRange("key", "", 0, 0, false, start, stop, &clientv3.GetResponse{Header: &etcdserverpb.ResponseHeader{Revision: 2}, Count: 2, Kvs: []*mvccpb.KeyValue{{ Key: []byte("key"), ModRevision: 2, Value: []byte("value"), diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index e806c6b0165c..4c1de7395d33 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -323,9 +323,10 @@ func toEtcdOperation(op *pb.RequestOp) (operation model.EtcdOperation) { operation = model.EtcdOperation{ Type: model.RangeOperation, Range: model.RangeOptions{ - Start: string(rangeOp.Key), - End: string(rangeOp.RangeEnd), - Limit: rangeOp.Limit, + Start: string(rangeOp.Key), + End: string(rangeOp.RangeEnd), + Limit: rangeOp.Limit, + KeysOnly: rangeOp.GetKeysOnly(), }, } case op.GetRequestPut() != nil: diff --git a/tests/robustness/traffic/etcd.go b/tests/robustness/traffic/etcd.go index 26732c528040..a34c072f2ac8 100644 --- a/tests/robustness/traffic/etcd.go +++ b/tests/robustness/traffic/etcd.go @@ -37,8 +37,10 @@ var ( // Please keep the sum of weights equal 100. requests: []random.ChoiceWeight[etcdRequestType]{ {Choice: Get, Weight: 15}, - {Choice: List, Weight: 8}, - {Choice: ListStream, Weight: 7}, + {Choice: List, Weight: 4}, + {Choice: ListKeyOnly, Weight: 4}, + {Choice: ListStream, Weight: 4}, + {Choice: ListStreamKeyOnly, Weight: 3}, {Choice: StaleGet, Weight: 10}, {Choice: StaleList, Weight: 5}, {Choice: StaleListStream, Weight: 5}, @@ -56,8 +58,10 @@ var ( // Please keep the sum of weights equal 100. requests: []random.ChoiceWeight[etcdRequestType]{ {Choice: Get, Weight: 15}, - {Choice: List, Weight: 8}, - {Choice: ListStream, Weight: 7}, + {Choice: List, Weight: 4}, + {Choice: ListKeyOnly, Weight: 4}, + {Choice: ListStream, Weight: 4}, + {Choice: ListStreamKeyOnly, Weight: 3}, {Choice: StaleGet, Weight: 10}, {Choice: StaleList, Weight: 5}, {Choice: StaleListStream, Weight: 5}, @@ -89,19 +93,21 @@ func (t etcdTraffic) ExpectUniqueRevision() bool { type etcdRequestType string const ( - Get etcdRequestType = "get" - StaleGet etcdRequestType = "staleGet" - List etcdRequestType = "list" - StaleList etcdRequestType = "staleList" - ListStream etcdRequestType = "listStream" - StaleListStream etcdRequestType = "staleListStream" - Put etcdRequestType = "put" - Delete etcdRequestType = "delete" - MultiOpTxn etcdRequestType = "multiOpTxn" - PutWithLease etcdRequestType = "putWithLease" - LeaseRevoke etcdRequestType = "leaseRevoke" - CompareAndSet etcdRequestType = "compareAndSet" - Defragment etcdRequestType = "defragment" + Get etcdRequestType = "get" + StaleGet etcdRequestType = "staleGet" + List etcdRequestType = "list" + ListKeyOnly etcdRequestType = "listKeyOnly" + StaleList etcdRequestType = "staleList" + ListStream etcdRequestType = "listStream" + ListStreamKeyOnly etcdRequestType = "listStreamKeyOnly" + StaleListStream etcdRequestType = "staleListStream" + Put etcdRequestType = "put" + Delete etcdRequestType = "delete" + MultiOpTxn etcdRequestType = "multiOpTxn" + PutWithLease etcdRequestType = "putWithLease" + LeaseRevoke etcdRequestType = "leaseRevoke" + CompareAndSet etcdRequestType = "compareAndSet" + Defragment etcdRequestType = "defragment" ) func (t etcdTraffic) Name() string { @@ -228,27 +234,41 @@ func (c etcdTrafficClient) Request(ctx context.Context, request etcdRequestType, } case List: var resp *clientv3.GetResponse - resp, err = c.client.Range(opCtx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), 0, limit) + resp, err = c.client.Range(opCtx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), 0, limit, false) + if resp != nil { + c.keyStore.SyncKeys(resp) + rev = resp.Header.Revision + } + case ListKeyOnly: + var resp *clientv3.GetResponse + resp, err = c.client.Range(opCtx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), 0, limit, true) if resp != nil { c.keyStore.SyncKeys(resp) rev = resp.Header.Revision } case StaleList: var resp *clientv3.GetResponse - resp, err = c.client.Range(opCtx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), lastRev, limit) + resp, err = c.client.Range(opCtx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), lastRev, limit, false) if resp != nil { rev = resp.Header.Revision } case ListStream: var resp *clientv3.GetResponse - resp, err = c.client.RangeStream(opCtx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), 0, limit) + resp, err = c.client.RangeStream(opCtx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), 0, limit, false) + if resp != nil { + c.keyStore.SyncKeys(resp) + rev = resp.Header.Revision + } + case ListStreamKeyOnly: + var resp *clientv3.GetResponse + resp, err = c.client.RangeStream(opCtx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), 0, limit, true) if resp != nil { c.keyStore.SyncKeys(resp) rev = resp.Header.Revision } case StaleListStream: var resp *clientv3.GetResponse - resp, err = c.client.RangeStream(opCtx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), lastRev, limit) + resp, err = c.client.RangeStream(opCtx, c.keyStore.GetPrefix(), clientv3.GetPrefixRangeEnd(c.keyStore.GetPrefix()), lastRev, limit, false) if resp != nil { rev = resp.Header.Revision } diff --git a/tests/robustness/validate/patch_history_test.go b/tests/robustness/validate/patch_history_test.go index 744cfb6e4f3b..5e9b0dc84f1a 100644 --- a/tests/robustness/validate/patch_history_test.go +++ b/tests/robustness/validate/patch_history_test.go @@ -44,7 +44,7 @@ func TestPatchHistory(t *testing.T) { { name: "successful range remains", historyFunc: func(h *model.AppendableHistory) { - h.AppendRange("key", "", 0, 0, 100, 200, &clientv3.GetResponse{}, nil) + h.AppendRange("key", "", 0, 0, false, 100, 200, &clientv3.GetResponse{}, nil) }, expectedRemainingOperations: []porcupine.Operation{ {Return: 200, Output: rangeResponse(0)}, From 4624e7660b8276c9112e831eae530dd319e4fb6d Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 26 May 2026 12:22:09 +0200 Subject: [PATCH 1025/1068] Address code review comments Signed-off-by: Marek Siarkowicz --- server/etcdserver/bootstrap.go | 2 +- server/etcdserver/raft.go | 26 +++++++------------------- server/etcdserver/server.go | 5 ++--- server/storage/wal/wal.go | 21 +++++++-------------- server/storage/wal/wal_test.go | 1 + 5 files changed, 18 insertions(+), 37 deletions(-) diff --git a/server/etcdserver/bootstrap.go b/server/etcdserver/bootstrap.go index 0f38309d3ea4..47019828bdc1 100644 --- a/server/etcdserver/bootstrap.go +++ b/server/etcdserver/bootstrap.go @@ -430,7 +430,7 @@ func recoverSnapshot(cfg config.ServerConfig, be backend.Backend, beExist bool, } cfg.Logger.Info("constructed a snapshot from WAL record", zap.Uint64("snapshot-index", snapshot.Metadata.Index), - zap.Int("snapshot-size", len(pbutil.MustMarshal(snapshot))), + zap.Int("snapshot-size", len(pbutil.MustMarshal(snapshot))), //TODO: use proto.Size after bumping to raft 3.7.0-beta.0 zap.String("confState", snapshot.Metadata.ConfState.String()), zap.Int("walSnaps-count", len(walSnaps)), ) diff --git a/server/etcdserver/raft.go b/server/etcdserver/raft.go index 5494560c8b5c..edad889bf60b 100644 --- a/server/etcdserver/raft.go +++ b/server/etcdserver/raft.go @@ -217,18 +217,6 @@ func (r *raftNode) start(rh *raftReadyHandler) { } notifyc := make(chan struct{}, 1) raftAdvancedC := make(chan struct{}, 1) - var snap *raftpb.Snapshot - var raftSnap *raftpb.Snapshot - if !raft.IsEmptySnap(rd.Snapshot) { - snap = &raftpb.Snapshot{ - Data: append([]byte(nil), rd.Snapshot.Data...), - Metadata: rd.Snapshot.Metadata, - } - raftSnap = &raftpb.Snapshot{ - Data: append([]byte(nil), rd.Snapshot.Data...), - Metadata: rd.Snapshot.Metadata, - } - } // TODO: simplify here after bumping raft v3.7.0-beta.0; extract slice conversion loops into a helper when possible. var committedEntries []*raftpb.Entry for i := range rd.CommittedEntries { @@ -236,7 +224,7 @@ func (r *raftNode) start(rh *raftReadyHandler) { } ap := toApply{ entries: committedEntries, - snapshot: snap, + snapshot: &rd.Snapshot, notifyc: notifyc, raftAdvancedC: raftAdvancedC, } @@ -264,9 +252,9 @@ func (r *raftNode) start(rh *raftReadyHandler) { // Must save the snapshot file and WAL snapshot entry before saving any other entries or hardstate to // ensure that recovery after a snapshot restore is possible. - if raftSnap != nil { + if !raft.IsEmptySnap(rd.Snapshot) { // gofail: var raftBeforeSaveSnap struct{} - if err := r.storage.SaveSnap(raftSnap); err != nil { + if err := r.storage.SaveSnap(&rd.Snapshot); err != nil { r.lg.Fatal("failed to save Raft snapshot", zap.Error(err)) } // gofail: var raftAfterSaveSnap struct{} @@ -286,7 +274,7 @@ func (r *raftNode) start(rh *raftReadyHandler) { } // gofail: var raftAfterSave struct{} - if raftSnap != nil { + if !raft.IsEmptySnap(rd.Snapshot) { // Force WAL to fsync its hard state before Release() releases // old data from the WAL. Otherwise could get an error like: // panic: tocommit(107) is out of range [lastIndex(84)]. Was the raft log corrupted, truncated, or lost? @@ -299,11 +287,11 @@ func (r *raftNode) start(rh *raftReadyHandler) { notifyc <- struct{}{} // gofail: var raftBeforeApplySnap struct{} - r.raftStorage.ApplySnapshot(*raftSnap) - r.lg.Info("applied incoming Raft snapshot", zap.Uint64("snapshot-index", raftSnap.Metadata.Index)) + r.raftStorage.ApplySnapshot(rd.Snapshot) + r.lg.Info("applied incoming Raft snapshot", zap.Uint64("snapshot-index", rd.Snapshot.Metadata.Index)) // gofail: var raftAfterApplySnap struct{} - if err := r.storage.Release(raftSnap); err != nil { + if err := r.storage.Release(&rd.Snapshot); err != nil { r.lg.Fatal("failed to release Raft wal", zap.Error(err)) } // gofail: var raftAfterWALRelease struct{} diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index caae91d8de49..2469eccb404b 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -990,7 +990,7 @@ func (s *EtcdServer) applyAll(ep *etcdProgress, apply *toApply) { } func (s *EtcdServer) applySnapshot(ep *etcdProgress, toApply *toApply) { - if toApply.snapshot == nil || raft.IsEmptySnap(*toApply.snapshot) { + if raft.IsEmptySnap(*toApply.snapshot) { return } applySnapshotInProgress.Inc() @@ -1750,8 +1750,7 @@ type confChangeResponse struct { // will block until the change is performed or there is an error. func (s *EtcdServer) configure(ctx context.Context, cc *raftpb.ConfChange) ([]*membership.Member, error) { lg := s.Logger() - ccID := s.reqIDGen.Next() - cc.ID = ccID + cc.ID = s.reqIDGen.Next() ch := s.w.Register(cc.ID) start := time.Now() diff --git a/server/storage/wal/wal.go b/server/storage/wal/wal.go index d39ffad06d07..55a1498dc86e 100644 --- a/server/storage/wal/wal.go +++ b/server/storage/wal/wal.go @@ -963,21 +963,14 @@ func (w *WAL) Save(st *raftpb.HardState, ents []*raftpb.Entry) error { if (st == nil || raft.IsEmptyHardState(*st)) && len(ents) == 0 { return nil } - - var mustSync bool - if st != nil { - var prevHardState raftpb.HardState - if w.state != nil { - prevHardState = *w.state - } - mustSync = raft.MustSync(*st, prevHardState, len(ents)) - } else { - var prevHardState raftpb.HardState - if w.state != nil { - prevHardState = *w.state - } - mustSync = raft.MustSync(raftpb.HardState{}, prevHardState, len(ents)) + if st == nil { + st = &raftpb.HardState{} } + if w.state == nil { + w.state = &raftpb.HardState{} + } + + mustSync := raft.MustSync(*st, *w.state, len(ents)) // TODO(xiangli): no more reference operator for i := range ents { diff --git a/server/storage/wal/wal_test.go b/server/storage/wal/wal_test.go index 23be07d10d9b..abcdc0bb6603 100644 --- a/server/storage/wal/wal_test.go +++ b/server/storage/wal/wal_test.go @@ -506,6 +506,7 @@ func TestRecover(t *testing.T) { entB := *entries[i] entA.Data = nil entB.Data = nil + // TODO: after bumping to raft 3.7.0-beta.0. This should can be simplified use a loop + proto.Equal, if diff := cmp.Diff(&entA, &entB, protocmp.Transform()); diff != "" { t.Fatalf("ents structural mismatch at index %d (-want +got):\n%s", i, diff) } From 93952f09a278bb89efc96d539d3557437d8ddf4c Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 15 Jan 2026 15:47:32 -0800 Subject: [PATCH 1026/1068] scripts: rewrite coverage test execution Use the new test functions, simplify generating the coverage files and merge at a single level by generating less coverage files. Signed-off-by: Ivan Valdes --- scripts/test.sh | 83 ++++++++++++------------------------------------- 1 file changed, 20 insertions(+), 63 deletions(-) diff --git a/scripts/test.sh b/scripts/test.sh index a21d2ee95908..abec04346105 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -237,30 +237,6 @@ function grpcproxy_e2e_pass { ################# COVERAGE ##################################################### -# pkg_to_coverflag [prefix] [pkgs] -# produces name of .coverprofile file to be used for tests of this package -function pkg_to_coverprofileflag { - local prefix="${1}" - local pkgs="${2}" - local pkgs_normalized - prefix_normalized=$(echo "${prefix}" | tr "./ " "__+") - if [ "${pkgs}" == "./..." ]; then - pkgs_normalized="all" - else - pkgs_normalized=$(echo "${pkgs}" | tr "./ " "__+") - fi - mkdir -p "${coverdir}/${prefix_normalized}" - echo -n "-coverprofile=${coverdir}/${prefix_normalized}/${pkgs_normalized}.coverprofile" -} - -function not_test_packages { - for m in $(modules); do - if [[ $m =~ .*/etcd/tests/v3 ]]; then continue; fi - if [[ $m =~ .*/etcd/v3 ]]; then continue; fi - echo "${m}/..." - done -} - # split_dir [dir] [num] function split_dir { local d="${1}" @@ -304,18 +280,6 @@ function merge_cov_files { done } -# merge_cov [coverdir] -function merge_cov { - log_callout "[$(date)] Merging coverage files ..." - coverdir="${1}" - for d in "${coverdir}"/*/; do - d=${d%*/} # remove the trailing "/" - merge_cov_files "${d}" "${d}.coverprofile" & - done - wait - merge_cov_files "${coverdir}" "${coverdir}/all.coverprofile" -} - # https://docs.codecov.com/docs/unexpected-coverage-changes#reasons-for-indirect-changes function cov_pass { # shellcheck disable=SC2153 @@ -327,52 +291,45 @@ function cov_pass { local coverdir coverdir=$(readlink -f "${COVERDIR}") mkdir -p "${coverdir}" - find "${coverdir}" -print0 -name '*.coverprofile' | xargs -0 rm + find "${coverdir}" -name '*.coverprofile' -delete + + local modules=() + load_workspace_relative_modules modules + local covpkgs=() + for module in "${modules[@]}"; do + if [[ ! "${module}" =~ ^./tests && ! "${module}" =~ ^./...$ ]]; then + covpkgs+=("${module}") + fi + done - local covpkgs - covpkgs=$(not_test_packages) local coverpkg_comma coverpkg_comma=$(echo "${covpkgs[@]}" | xargs | tr ' ' ',') local gocov_build_flags=("-covermode=set" "-coverpkg=$coverpkg_comma") - local failed="" + local failed=() log_callout "[$(date)] Collecting coverage from unit tests ..." - for m in $(module_dirs); do - run_for_module "${m}" go_test "./..." "parallel" "pkg_to_coverprofileflag unit_${m}" -short -timeout=30m \ - "${gocov_build_flags[@]}" "$@" || failed="$failed unit" - done + run_go_tests "${modules[@]}" -short -timeout=30m "${gocov_build_flags[@]}" -coverprofile="${coverdir}/unit.coverprofile" "$@" || failed+=("unit") log_callout "[$(date)] Collecting coverage from integration tests ..." - run_for_module "tests" go_test "./integration/..." "parallel" "pkg_to_coverprofileflag integration" \ - -timeout=30m "${gocov_build_flags[@]}" "$@" || failed="$failed integration" + run_go_tests "./tests/integration/..." -timeout=30m "${gocov_build_flags[@]}" -coverprofile="${coverdir}/integration.coverprofile" "$@" || failed+=("integration") # integration-store-v2 - run_for_module "tests" go_test "./integration/v2store/..." "keep_going" "pkg_to_coverprofileflag store_v2" \ - -timeout=5m "${gocov_build_flags[@]}" "$@" || failed="$failed integration_v2" + run_go_tests "./tests/integration/v2store/..." -timeout=5m "${gocov_build_flags[@]}" -coverprofile="${coverdir}/integration_v2.coverprofile" "$@" || failed+=("integration_v2") # integration_cluster_proxy - run_for_module "tests" go_test "./integration/..." "parallel" "pkg_to_coverprofileflag integration_cluster_proxy" \ - -tags cluster_proxy -timeout=30m "${gocov_build_flags[@]}" || failed="$failed integration_cluster_proxy" - # integration_common - run_for_module "tests" go_test "./common/..." "parallel" "pkg_to_coverprofileflag integration_common" \ - -tags=integration -timeout=30m "${gocov_build_flags[@]}" "$@" || failed="$failed integration_common" + run_go_tests "./tests/integration/..." -tags cluster_proxy -timeout=30m "${gocov_build_flags[@]}" -coverprofile="${coverdir}/integration_cluster_proxy.coverprofile" "$@" || failed+=("integration_cluster_proxy") + run_go_tests "./tests/common/" -tags integration -timeout=30m "${gocov_build_flags[@]}" -coverprofile="${coverdir}/common.coverprofile" "$@" || failed+=("common") local cover_out_file="${coverdir}/all.coverprofile" - merge_cov "${coverdir}" + merge_cov_files "${coverdir}" "${cover_out_file}" # strip out generated files (using GNU-style sed) sed --in-place -E "/[.]pb[.](gw[.])?go/d" "${cover_out_file}" || true - sed --in-place -E "s|go.etcd.io/etcd/api/v3/|api/|g" "${cover_out_file}" || true - sed --in-place -E "s|go.etcd.io/etcd/client/v3/|client/v3/|g" "${cover_out_file}" || true - sed --in-place -E "s|go.etcd.io/etcd/client/pkg/v3|client/pkg/v3/|g" "${cover_out_file}" || true - sed --in-place -E "s|go.etcd.io/etcd/etcdctl/v3/|etcdctl/|g" "${cover_out_file}" || true - sed --in-place -E "s|go.etcd.io/etcd/etcdutl/v3/|etcdutl/|g" "${cover_out_file}" || true - sed --in-place -E "s|go.etcd.io/etcd/pkg/v3/|pkg/|g" "${cover_out_file}" || true - sed --in-place -E "s|go.etcd.io/etcd/server/v3/|server/|g" "${cover_out_file}" || true + sed --in-place -E "s|go.etcd.io/etcd/(.*)/v3|\1|g" "${cover_out_file}" || true # held failures to generate the full coverage file, now fail - if [ -n "$failed" ]; then - for f in $failed; do + if [ "${#failed[@]}" -gt 0 ]; then + for f in "${failed[@]}"; do log_error "--- FAIL:" "$f" done log_warning "Despite failures, you can see partial report:" From 5fe0bae26f685048d249dfc671ff548eb7d30958 Mon Sep 17 00:00:00 2001 From: Nont <9658731+nwnt@users.noreply.github.com> Date: Wed, 20 May 2026 18:22:20 -0500 Subject: [PATCH 1027/1068] Range with --keys-only retrieves from memory when possible Signed-off-by: Nont <9658731+nwnt@users.noreply.github.com> --- server/etcdserver/txn/range.go | 1 + server/storage/mvcc/index.go | 18 +++++++------- server/storage/mvcc/index_test.go | 2 +- server/storage/mvcc/kv.go | 1 + server/storage/mvcc/kvstore_test.go | 20 +++++++++------- server/storage/mvcc/kvstore_txn.go | 37 ++++++++++++++++++++++++----- 6 files changed, 55 insertions(+), 24 deletions(-) diff --git a/server/etcdserver/txn/range.go b/server/etcdserver/txn/range.go index 552e75203f59..5331611ea0c2 100644 --- a/server/etcdserver/txn/range.go +++ b/server/etcdserver/txn/range.go @@ -64,6 +64,7 @@ func executeRange(ctx context.Context, lg *zap.Logger, txnRead mvcc.TxnRead, r * Limit: limit, Rev: r.Revision, CountOnly: r.CountOnly, + FastKeysOnly: r.KeysOnly && r.SortTarget != pb.RangeRequest_VALUE, WithTotalCount: withTotalCount, } diff --git a/server/storage/mvcc/index.go b/server/storage/mvcc/index.go index 16b54ae90bbd..99e2d04923a8 100644 --- a/server/storage/mvcc/index.go +++ b/server/storage/mvcc/index.go @@ -23,7 +23,7 @@ import ( type index interface { Get(key []byte, atRev int64) (rev, created Revision, ver int64, err error) - Range(key, end []byte, atRev int64) ([][]byte, []Revision) + Range(key, end []byte, atRev int64) (keys [][]byte, modifies, creates []Revision, versions []int64) Revisions(key, end []byte, atRev int64, limit int, withTotalCount bool) ([]Revision, int) CountRevisions(key, end []byte, atRev int64) int Put(key []byte, rev Revision) @@ -160,25 +160,27 @@ func (ti *treeIndex) CountRevisions(key, end []byte, atRev int64) int { return total } -func (ti *treeIndex) Range(key, end []byte, atRev int64) (keys [][]byte, revs []Revision) { +func (ti *treeIndex) Range(key, end []byte, atRev int64) (keys [][]byte, modifies, creates []Revision, versions []int64) { ti.RLock() defer ti.RUnlock() if end == nil { - rev, _, _, err := ti.unsafeGet(key, atRev) + modified, created, version, err := ti.unsafeGet(key, atRev) if err != nil { - return nil, nil + return nil, nil, nil, nil } - return [][]byte{key}, []Revision{rev} + return [][]byte{key}, []Revision{modified}, []Revision{created}, []int64{version} } ti.unsafeVisit(key, end, func(ki *keyIndex) bool { - if rev, _, _, err := ki.get(ti.lg, atRev); err == nil { - revs = append(revs, rev) + if modified, created, version, err := ki.get(ti.lg, atRev); err == nil { + modifies = append(modifies, modified) keys = append(keys, ki.key) + creates = append(creates, created) + versions = append(versions, version) } return true }) - return keys, revs + return keys, modifies, creates, versions } func (ti *treeIndex) Tombstone(key []byte, rev Revision) error { diff --git a/server/storage/mvcc/index_test.go b/server/storage/mvcc/index_test.go index 2244dbedec79..de01c66683f7 100644 --- a/server/storage/mvcc/index_test.go +++ b/server/storage/mvcc/index_test.go @@ -111,7 +111,7 @@ func TestIndexRange(t *testing.T) { }, } for i, tt := range tests { - keys, revs := ti.Range(tt.key, tt.end, atRev) + keys, revs, _, _ := ti.Range(tt.key, tt.end, atRev) if !reflect.DeepEqual(keys, tt.wkeys) { t.Errorf("#%d: keys = %+v, want %+v", i, keys, tt.wkeys) } diff --git a/server/storage/mvcc/kv.go b/server/storage/mvcc/kv.go index 3da037b863e6..41620279d74a 100644 --- a/server/storage/mvcc/kv.go +++ b/server/storage/mvcc/kv.go @@ -27,6 +27,7 @@ type RangeOptions struct { Limit int64 Rev int64 CountOnly bool + FastKeysOnly bool WithTotalCount bool } diff --git a/server/storage/mvcc/kvstore_test.go b/server/storage/mvcc/kvstore_test.go index 6ddf74063293..57854358f590 100644 --- a/server/storage/mvcc/kvstore_test.go +++ b/server/storage/mvcc/kvstore_test.go @@ -201,11 +201,11 @@ func TestStoreRange(t *testing.T) { r rangeResp }{ { - indexRangeResp{[][]byte{[]byte("foo")}, []Revision{{Main: 2}}}, + indexRangeResp{[][]byte{[]byte("foo")}, []Revision{{Main: 2}}, []Revision{{Main: 1}}, []int64{1}}, rangeResp{[][]byte{key}, [][]byte{kvb}}, }, { - indexRangeResp{[][]byte{[]byte("foo"), []byte("foo1")}, []Revision{{Main: 2}, {Main: 3}}}, + indexRangeResp{[][]byte{[]byte("foo"), []byte("foo1")}, []Revision{{Main: 2}, {Main: 3}}, []Revision{{Main: 2}, {Main: 3}}, []int64{1, 1}}, rangeResp{[][]byte{key}, [][]byte{kvb}}, }, } @@ -280,7 +280,7 @@ func TestStoreDeleteRange(t *testing.T) { }{ { Revision{Main: 2}, - indexRangeResp{[][]byte{[]byte("foo")}, []Revision{{Main: 2}}}, + indexRangeResp{[][]byte{[]byte("foo")}, []Revision{{Main: 2}}, []Revision{{Main: 2}}, []int64{1}}, rangeResp{[][]byte{key}, [][]byte{kvb}}, newTestBucketKeyBytes(newBucketKey(3, 0, true)), @@ -1014,8 +1014,10 @@ type indexGetResp struct { } type indexRangeResp struct { - keys [][]byte - revs []Revision + keys [][]byte + revs []Revision + creates []Revision + versions []int64 } type indexRangeEventsResp struct { @@ -1031,7 +1033,7 @@ type fakeIndex struct { } func (i *fakeIndex) Revisions(key, end []byte, atRev int64, limit int, withTotalCount bool) ([]Revision, int) { - _, rev := i.Range(key, end, atRev) + _, rev, _, _ := i.Range(key, end, atRev) if len(rev) >= limit { rev = rev[:limit] } @@ -1039,7 +1041,7 @@ func (i *fakeIndex) Revisions(key, end []byte, atRev int64, limit int, withTotal } func (i *fakeIndex) CountRevisions(key, end []byte, atRev int64) int { - _, rev := i.Range(key, end, atRev) + _, rev, _, _ := i.Range(key, end, atRev) return len(rev) } @@ -1049,10 +1051,10 @@ func (i *fakeIndex) Get(key []byte, atRev int64) (rev, created Revision, ver int return r.rev, r.created, r.ver, r.err } -func (i *fakeIndex) Range(key, end []byte, atRev int64) ([][]byte, []Revision) { +func (i *fakeIndex) Range(key, end []byte, atRev int64) (keys [][]byte, modifies, creates []Revision, versions []int64) { i.Recorder.Record(testutil.Action{Name: "range", Params: []any{key, end, atRev}}) r := <-i.indexRangeRespc - return r.keys, r.revs + return r.keys, r.revs, r.creates, r.versions } func (i *fakeIndex) Put(key []byte, rev Revision) { diff --git a/server/storage/mvcc/kvstore_txn.go b/server/storage/mvcc/kvstore_txn.go index 86dd6b504b04..7615aed084d9 100644 --- a/server/storage/mvcc/kvstore_txn.go +++ b/server/storage/mvcc/kvstore_txn.go @@ -86,18 +86,35 @@ func (tr *storeTxnCommon) rangeKeys(ctx context.Context, key, end []byte, curRev tr.trace.Step("count revisions from in-memory index tree") return &RangeResult{KVs: nil, Count: total, Rev: curRev}, nil } + + if ro.FastKeysOnly { + keys, modifies, creates, versions := tr.s.kvindex.Range(key, end, rev) + tr.trace.Step("keys only range from in-memory index tree") + if len(keys) == 0 { + return &RangeResult{KVs: nil, Count: 0, Rev: curRev}, nil + } + cappedKeysCount := sliceCapWithLimit(int(ro.Limit), keys) + kvs := make([]*mvccpb.KeyValue, cappedKeysCount) + for i := range len(kvs) { + kvs[i] = &mvccpb.KeyValue{ + Key: keys[i], + ModRevision: modifies[i].Main, + CreateRevision: creates[i].Main, + Version: versions[i], + } + } + return &RangeResult{KVs: kvs, Count: len(keys), Rev: curRev}, nil + } + revpairs, total := tr.s.kvindex.Revisions(key, end, rev, int(ro.Limit), ro.WithTotalCount) tr.trace.Step("range keys from in-memory index tree") if len(revpairs) == 0 { return &RangeResult{KVs: nil, Count: total, Rev: curRev}, nil } - limit := int(ro.Limit) - if limit <= 0 || limit > len(revpairs) { - limit = len(revpairs) - } + cappedEntriesCount := sliceCapWithLimit(int(ro.Limit), revpairs) - kvs := make([]*mvccpb.KeyValue, limit) + kvs := make([]*mvccpb.KeyValue, cappedEntriesCount) revBytes := NewRevBytes() for i, revpair := range revpairs[:len(kvs)] { select { @@ -105,6 +122,7 @@ func (tr *storeTxnCommon) rangeKeys(ctx context.Context, key, end []byte, curRev return nil, fmt.Errorf("rangeKeys: context cancelled: %w", ctx.Err()) default: } + revBytes = RevToBytes(revpair, revBytes) _, vs := tr.tx.UnsafeRange(schema.Key, revBytes, nil, 0) if len(vs) != 1 { @@ -134,6 +152,13 @@ func (tr *storeTxnCommon) rangeKeys(ctx context.Context, key, end []byte, curRev return &RangeResult{KVs: kvs, Count: total, Rev: curRev}, nil } +func sliceCapWithLimit[S any](limit int, s []S) int { + if limit <= 0 || limit > len(s) { + return len(s) + } + return limit +} + func (tr *storeTxnRead) End() { tr.tx.RUnlock() // RUnlock signals the end of concurrentReadTx. tr.s.mu.RUnlock() @@ -271,7 +296,7 @@ func (tw *storeTxnWrite) deleteRange(key, end []byte) int64 { if len(tw.changes) > 0 { rrev++ } - keys, _ := tw.s.kvindex.Range(key, end, rrev) + keys, _, _, _ := tw.s.kvindex.Range(key, end, rrev) if len(keys) == 0 { return 0 } From b607b80dcb6330088d4e90ee3c5a2b43d3c78695 Mon Sep 17 00:00:00 2001 From: Nont <9658731+nwnt@users.noreply.github.com> Date: Wed, 27 May 2026 22:14:59 -0500 Subject: [PATCH 1028/1068] Add tests asserting the behavior of server-side range with keysOnly and countOnly Signed-off-by: Nont <9658731+nwnt@users.noreply.github.com> --- tests/integration/clientv3/kv_test.go | 45 +++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/tests/integration/clientv3/kv_test.go b/tests/integration/clientv3/kv_test.go index 2af6d0ff9a9f..2e8eccb6729d 100644 --- a/tests/integration/clientv3/kv_test.go +++ b/tests/integration/clientv3/kv_test.go @@ -21,6 +21,7 @@ import ( "fmt" "os" "reflect" + "slices" "strconv" "strings" "testing" @@ -29,6 +30,7 @@ import ( "github.com/stretchr/testify/require" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" "go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" @@ -492,6 +494,49 @@ func TestKVGetStreamCompactedError(t *testing.T) { require.ErrorIsf(t, err, rpctypes.ErrCompacted, "GetStream returned %T %v", err, err) } +// TestKVGetKeysOnlyWithCountOnly asserts that when a Range operation +// with both KeysOnly and CountOnly are specified, CountOnly takes precedence. +func TestKVGetKeysOnlyWithCountOnly(t *testing.T) { + integration.BeforeTest(t) + + clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1}) + defer clus.Terminate(t) + + kv := clus.RandClient() + ctx := t.Context() + + keySet := []string{"a", "b", "c", "c", "c", "foo", "foo/abc", "fop"} + for i, key := range keySet { + if _, err := kv.Put(ctx, key, ""); err != nil { + t.Fatalf("#%d: couldn't put %q (%v)", i, key, err) + } + } + wresp, err := kv.Get(ctx, keySet[0]) + if err != nil { + t.Fatalf("couldn't get key (%v)", err) + } + wheader := wresp.Header + + opts := []clientv3.OpOption{ + clientv3.WithFromKey(), + clientv3.WithCountOnly(), + clientv3.WithKeysOnly(), + } + resp, err := kv.Get(ctx, "", opts...) + if err != nil { + t.Fatalf("couldn't execute range with KeysOnly and CountOnly") + } + if !proto.Equal(wheader, resp.Header) { + t.Fatalf("header expected %+v, got %+v", wheader, resp.Header) + } + if int(resp.Count) != len(slices.Compact(keySet)) { + t.Fatalf("response count expected %d, got %d", len(keySet), resp.Count) + } + if len(resp.Kvs) > 0 { + t.Fatalf("response should contain CountOnly") + } +} + // TestKVGetRetry ensures get will retry on disconnect. func TestKVGetRetry(t *testing.T) { integration.BeforeTest(t) From d97b807b3768aad12a6a9123b8ec0f79523c9979 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Thu, 28 May 2026 10:18:45 -0400 Subject: [PATCH 1029/1068] server/etcdserver/txn: add benchmark test for fastkeyonly Signed-off-by: Wei Fu --- server/etcdserver/txn/range_bench_test.go | 42 +++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/server/etcdserver/txn/range_bench_test.go b/server/etcdserver/txn/range_bench_test.go index 0e7c8b0c0dd2..4f42cc662d6e 100644 --- a/server/etcdserver/txn/range_bench_test.go +++ b/server/etcdserver/txn/range_bench_test.go @@ -106,3 +106,45 @@ func BenchmarkRange(b *testing.B) { } } } + +func BenchmarkRangeFastKeysOnlyWithLimit(b *testing.B) { + for _, keyCount := range []int{100, 1000, 10000, 100000} { + b.Run(fmt.Sprintf("keys_%d", keyCount), func(b *testing.B) { + bcfg := backend.DefaultBackendConfig(zap.NewNop()) + dir, _ := os.MkdirTemp(b.TempDir(), "etcd_backend_bench") + bcfg.Path = filepath.Join(dir, "database") + be := backend.New(bcfg) + defer betesting.Close(b, be) + s := mvcc.NewStore(zap.NewNop(), be, &lease.FakeLessor{}, mvcc.StoreConfig{}) + defer s.Close() + + for i := range keyCount { + s.Put([]byte(fmt.Sprintf("key-%06d", i)), []byte("value"), lease.NoLease) + } + s.Commit() + + ctx := context.Background() + req := &pb.RangeRequest{ + Key: []byte(""), + RangeEnd: []byte{0}, + Limit: 10, + KeysOnly: true, + SortOrder: pb.RangeRequest_NONE, + } + + b.ReportAllocs() + b.ResetTimer() + for b.Loop() { + // TODO: This benchmark currently returns all keys due to the fast keys only optimization. + // We should update it to return the correct number of keys once the optimization is fixed. + resp, _, err := Range(ctx, zap.NewNop(), s, req, false /* withTotalCount */) + if err != nil { + b.Fatal(err) + } + if len(resp.Kvs) != int(req.Limit) { + b.Fatalf("expected %d kvs, got %d", req.Limit, len(resp.Kvs)) + } + } + }) + } +} From 1138394e33cbd72a10f527ba47789001978f3d39 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 27 May 2026 15:19:27 -0700 Subject: [PATCH 1030/1068] Clean up old test functions These were used before the Go workspace. All test targets use the new workspace-friendly functions. Signed-off-by: Ivan Valdes --- scripts/test_lib.sh | 108 -------------------------------------------- 1 file changed, 108 deletions(-) diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index 1c92223062f0..c5234e45b924 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -217,16 +217,6 @@ function get_junit_filename_prefix { mktemp --dry-run "${junit_report_dir}/junit_XXXXXXXXXX" } -junitFilenamePrefix() { - if [[ -z "${JUNIT_REPORT_DIR:-}" ]]; then - echo "" - return - fi - mkdir -p "${JUNIT_REPORT_DIR}" - DATE=$( date +%s | base64 | head -c 15 ) - echo "${JUNIT_REPORT_DIR}/junit_$DATE" -} - function produce_junit_xmlreport { local -r junit_filename_prefix=${1:-} if [[ -z "${junit_filename_prefix}" ]]; then @@ -248,104 +238,6 @@ function produce_junit_xmlreport { #### Running go test ######## -# go_test [packages] [mode] [flags_for_package_func] [$@] -# [mode] supports 3 states: -# - "parallel": fastest as concurrently processes multiple packages, but silent -# till the last package. See: https://github.com/golang/go/issues/2731 -# - "keep_going" : executes tests package by package, but postpones reporting error to the last -# - "fail_fast" : executes tests packages 1 by 1, exits on the first failure. -# -# [flags_for_package_func] is a name of function that takes list of packages as parameter -# and computes additional flags to the go_test commands. -# Use 'true' or ':' if you dont need additional arguments. -# -# depends on the VERBOSE top-level variable. -# -# Example: -# go_test "./..." "keep_going" ":" --short -# -# The function returns != 0 code in case of test failure. -function go_test { - local packages="${1}" - local mode="${2}" - local flags_for_package_func="${3}" - local junit_filename_prefix - - shift 3 - - local goTestFlags="" - local goTestEnv="" - - ##### Create a junit-style XML test report in this directory if set. ##### - JUNIT_REPORT_DIR=${JUNIT_REPORT_DIR:-} - - # If JUNIT_REPORT_DIR is unset, and ARTIFACTS is set, then have them match. - if [[ -z "${JUNIT_REPORT_DIR:-}" && -n "${ARTIFACTS:-}" ]]; then - export JUNIT_REPORT_DIR="${ARTIFACTS}" - fi - - # Used to filter verbose test output. - go_test_grep_pattern=".*" - - if [[ -n "${JUNIT_REPORT_DIR}" ]] ; then - goTestFlags+="-v " - goTestFlags+="-json " - # Show only summary lines by matching lines like "status package/test" - go_test_grep_pattern="^[^[:space:]]\+[[:space:]]\+[^[:space:]]\+/[^[[:space:]]\+" - fi - - junit_filename_prefix=$(junitFilenamePrefix) - - if [ "${VERBOSE:-}" == "1" ]; then - goTestFlags="-v " - goTestFlags+="-json " - fi - - # Expanding patterns (like ./...) into list of packages - - local unpacked_packages=("${packages}") - if [ "${mode}" != "parallel" ]; then - # shellcheck disable=SC2207 - # shellcheck disable=SC2086 - if ! unpacked_packages=($(go list ${packages})); then - log_error "Cannot resolve packages: ${packages}" - return 255 - fi - fi - - if [ "${mode}" == "fail_fast" ]; then - goTestFlags+="-failfast " - fi - - local failures="" - - # execution of tests against packages: - for pkg in "${unpacked_packages[@]}"; do - local additional_flags - # shellcheck disable=SC2086 - additional_flags=$(${flags_for_package_func} ${pkg}) - - # shellcheck disable=SC2206 - local cmd=( go test ${goTestFlags} ${additional_flags} ${pkg} "$@" ) - - # shellcheck disable=SC2086 - if ! run env ${goTestEnv} ETCD_VERIFY="${ETCD_VERIFY}" "${cmd[@]}" | tee ${junit_filename_prefix:+"${junit_filename_prefix}.stdout"} | grep --binary-files=text "${go_test_grep_pattern}" ; then - if [ "${mode}" != "keep_going" ]; then - produce_junit_xmlreport "${junit_filename_prefix}" - return 2 - else - failures=("${failures[@]}" "${pkg}") - fi - fi - produce_junit_xmlreport "${junit_filename_prefix}" - done - - if [ -n "${failures[*]}" ] ; then - log_error -e "ERROR: Tests for following packages failed:\\n ${failures[*]}" - return 2 - fi -} - # run_go_tests_expanding_packages [arguments to pass to go test] # Expands the packages in the list of arguments, i.e. ./... into a list of # packages for that given module. Then, it calls run_go_tests with the expanded From 3b47e0e65806eb9a68ee5efe5a0ec4ae8cf06538 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 27 May 2026 15:03:02 -0700 Subject: [PATCH 1031/1068] Update build pass to use workspace module function Signed-off-by: Ivan Valdes --- scripts/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test.sh b/scripts/test.sh index b1c40a1259f1..1364ade2118b 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -118,7 +118,7 @@ fi function build_pass { log_callout "Building etcd" - run_for_modules run go build "${@}" || return 2 + run_for_workspace_modules run go build "${@}" ./... || return 2 GO_BUILD_FLAGS="-v" etcd_build "${@}" GO_BUILD_FLAGS="-v" tools_build "${@}" } From 0d790d12252073c07630ffb3f958c90f921c4775 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 May 2026 19:36:47 +0000 Subject: [PATCH 1032/1068] build(deps): bump github/codeql-action from 4.35.5 to 4.36.0 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.5 to 4.36.0. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/9e0d7b8d25671d64c341c19c0152d693099fb5ba...7211b7c8077ea37d8641b6271f6a365a22a5fbfa) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.36.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 27664183c94c..a8468a3527d3 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5 + uses: github/codeql-action/init@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4.36.0 with: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. @@ -50,6 +50,6 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5 + uses: github/codeql-action/autobuild@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4.36.0 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5 + uses: github/codeql-action/analyze@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4.36.0 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 36586e33b134..d6b8d88c686f 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5 + uses: github/codeql-action/upload-sarif@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4.36.0 with: sarif_file: results.sarif From 12227ed3781df67ce11ff412365194e467ae29dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 May 2026 19:36:27 +0000 Subject: [PATCH 1033/1068] build(deps): bump docker/login-action from 4.1.0 to 4.2.0 Bumps [docker/login-action](https://github.com/docker/login-action) from 4.1.0 to 4.2.0. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/4907a6ddec9925e35a0a9e82d7399ccc52663121...650006c6eb7dba73a995cc03b0b2d7f5ca915bee) --- updated-dependencies: - dependency-name: docker/login-action dependency-version: 4.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/antithesis-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/antithesis-test.yml b/.github/workflows/antithesis-test.yml index c37f6305e3f1..804a35a59c10 100644 --- a/.github/workflows/antithesis-test.yml +++ b/.github/workflows/antithesis-test.yml @@ -45,7 +45,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Login to Antithesis Docker Registry - uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 + uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0 with: registry: ${{ env.REGISTRY }} username: _json_key From 3991f1c6fda8da20345f4de3e3fac8f106bea22a Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 29 May 2026 11:46:08 +0200 Subject: [PATCH 1034/1068] robustness: Fix defaulting for proto comparison when merging WAL history Signed-off-by: Marek Siarkowicz --- tests/robustness/report/wal.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index 2bedb03e7fe8..98ec1fedc56e 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -23,8 +23,10 @@ import ( "path/filepath" "strings" + "github.com/google/go-cmp/cmp" "go.uber.org/zap" "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/testing/protocmp" pb "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/client/pkg/v3/fileutil" @@ -145,7 +147,7 @@ func mergeMembersEntries(minCommitIndex uint64, memberEntries [][]*raftpb.Entry) if entry2.GetIndex() != raftIndex { continue } - if proto.Equal(entry1, entry2) { + if cmp.Equal(entry1, entry2, protocmp.Transform(), protocmp.IgnoreDefaultScalars()) { votes[i]++ votes[j]++ } @@ -177,11 +179,11 @@ func mergeMembersEntries(minCommitIndex uint64, memberEntries [][]*raftpb.Entry) } continue } - if !proto.Equal(entryWithMostVotes, entry) { - return nil, fmt.Errorf("mismatching entries on raft index %d, mostVotes: %+v, other: %+v", raftIndex, entryWithMostVotes, entry) + if !cmp.Equal(entryWithMostVotes, entry, protocmp.Transform(), protocmp.IgnoreDefaultScalars()) { + return nil, fmt.Errorf("mismatching entries on raft index %d, diff: %s", raftIndex, cmp.Diff(entryWithMostVotes, entry, protocmp.Transform(), protocmp.IgnoreDefaultScalars())) } } - mergedHistory = append(mergedHistory, entryWithMostVotes) + mergedHistory = append(mergedHistory, proto.Clone(entryWithMostVotes).(*raftpb.Entry)) } if len(mergedHistory) == 0 { return nil, errors.New("no WAL entries matched") From 1a2a8405e0c439a940e0762d1c60247a7a265382 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 29 May 2026 12:29:17 +0200 Subject: [PATCH 1035/1068] server: Avoid dereferencing confstate Signed-off-by: Marek Siarkowicz --- server/etcdserver/server.go | 12 ++++++------ server/etcdserver/server_test.go | 25 ++++++++++++++++++------- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/server/etcdserver/server.go b/server/etcdserver/server.go index 33a09c34538e..0a6ec60f92d9 100644 --- a/server/etcdserver/server.go +++ b/server/etcdserver/server.go @@ -1203,7 +1203,7 @@ func (s *EtcdServer) applyEntries(ep *etcdProgress, apply *toApply) { return } var shouldstop bool - if ep.appliedt, ep.appliedi, shouldstop = s.apply(ents, ep.confState, apply.raftAdvancedC); shouldstop { + if ep.appliedt, ep.appliedi, shouldstop = s.apply(ents, ep, apply.raftAdvancedC); shouldstop { go s.stopWithDelay(10*100*time.Millisecond, fmt.Errorf("the member has been permanently removed from the cluster")) } } @@ -1891,7 +1891,7 @@ func (s *EtcdServer) sendMergedSnap(merged *snap.Message) { // The given entries should not be empty. func (s *EtcdServer) apply( es []*raftpb.Entry, - confState *raftpb.ConfState, + ep *etcdProgress, raftAdvancedC <-chan struct{}, ) (appliedt uint64, appliedi uint64, shouldStop bool) { s.lg.Debug("Applying entries", zap.Int("num-entries", len(es))) @@ -1923,7 +1923,7 @@ func (s *EtcdServer) apply( // gofail: var beforeApplyOneConfChange struct{} var cc raftpb.ConfChange pbutil.MustUnmarshalMessage(&cc, e.Data) - removedSelf, err := s.applyConfChange(&cc, confState, shouldApplyV3) + removedSelf, err := s.applyConfChange(&cc, ep, shouldApplyV3) s.setAppliedIndex(e.GetIndex()) s.setTerm(e.GetTerm()) shouldStop = shouldStop || removedSelf @@ -2004,7 +2004,7 @@ func (s *EtcdServer) applyEntryNormal(e *raftpb.Entry, shouldApplyV3 membership. // applyConfChange applies a ConfChange to the server. It is only // invoked with a ConfChange that has already passed through Raft -func (s *EtcdServer) applyConfChange(cc *raftpb.ConfChange, confState *raftpb.ConfState, shouldApplyV3 membership.ShouldApplyV3) (bool, error) { +func (s *EtcdServer) applyConfChange(cc *raftpb.ConfChange, ep *etcdProgress, shouldApplyV3 membership.ShouldApplyV3) (bool, error) { lg := s.Logger() if err := s.cluster.ValidateConfigurationChange(cc, shouldApplyV3); err != nil { lg.Error("Validation on configuration change failed", zap.Bool("shouldApplyV3", bool(shouldApplyV3)), zap.Error(err)) @@ -2025,9 +2025,9 @@ func (s *EtcdServer) applyConfChange(cc *raftpb.ConfChange, confState *raftpb.Co // Otherwise, we might apply an invalid confChange (which failed // the validation previously) to raft on bootstrap. if shouldApplyV3 { - *confState = *s.r.ApplyConfChange(cc) + ep.confState = s.r.ApplyConfChange(cc) } - s.beHooks.SetConfState(confState) + s.beHooks.SetConfState(ep.confState) switch cc.GetType() { case raftpb.ConfChangeAddNode, raftpb.ConfChangeAddLearnerNode: confChangeContext := new(membership.ConfigChangeContext) diff --git a/server/etcdserver/server_test.go b/server/etcdserver/server_test.go index ec0025d93d3b..97e2068c7df8 100644 --- a/server/etcdserver/server_test.go +++ b/server/etcdserver/server_test.go @@ -218,10 +218,12 @@ func TestApplyConfStateWithRestart(t *testing.T) { }, } - confState := raftpb.ConfState{} + ep := &etcdProgress{ + confState: &raftpb.ConfState{}, + } t.Log("Applying entries for the first time") - srv.apply(entries, &confState, nil) + srv.apply(entries, ep, nil) got, _ := n.Wait(len(want)) if diff := cmp.Diff(want, got, protocmp.Transform(), cmpopts.EquateEmpty()); diff != "" { t.Errorf("actions don't match (-want +got):\n%s", diff) @@ -238,7 +240,7 @@ func TestApplyConfStateWithRestart(t *testing.T) { srv.consistIndex.SetBackend(be) t.Log("Reapplying same entries after restart") - srv.apply(entries, &confState, nil) + srv.apply(entries, ep, nil) got, _ = n.Wait(2 * len(want)) if diff := cmp.Diff(want, got[len(want):], protocmp.Transform(), cmpopts.EquateEmpty()); diff != "" { t.Errorf("actions don't match (-want +got):\n%s", diff) @@ -388,8 +390,11 @@ func TestApplyConfChangeShouldStop(t *testing.T) { Type: raftpb.ConfChangeRemoveNode.Enum(), NodeId: new(uint64(2)), } + ep := &etcdProgress{ + confState: &raftpb.ConfState{}, + } // remove non-local member - shouldStop, err := srv.applyConfChange(&cc, &raftpb.ConfState{}, true) + shouldStop, err := srv.applyConfChange(&cc, ep, true) if err != nil { t.Fatalf("unexpected error %v", err) } @@ -399,7 +404,7 @@ func TestApplyConfChangeShouldStop(t *testing.T) { // remove local member cc.NodeId = new(uint64(1)) - shouldStop, err = srv.applyConfChange(&cc, &raftpb.ConfState{}, true) + shouldStop, err = srv.applyConfChange(&cc, ep, true) if err != nil { t.Fatalf("unexpected error %v", err) } @@ -454,10 +459,13 @@ func TestApplyConfigChangeUpdatesConsistIndex(t *testing.T) { Type: raftpb.EntryConfChange.Enum(), Data: pbutil.MustMarshalMessage(cc), }} + ep := &etcdProgress{ + confState: &raftpb.ConfState{}, + } raftAdvancedC := make(chan struct{}, 1) raftAdvancedC <- struct{}{} - _, appliedi, _ := srv.apply(ents, &raftpb.ConfState{}, raftAdvancedC) + _, appliedi, _ := srv.apply(ents, ep, raftAdvancedC) consistIndex := srv.consistIndex.ConsistentIndex() assert.Equal(t, uint64(2), appliedi) @@ -541,10 +549,13 @@ func TestApplyMultiConfChangeShouldStop(t *testing.T) { }), }) } + ep := &etcdProgress{ + confState: &raftpb.ConfState{}, + } raftAdvancedC := make(chan struct{}, 1) raftAdvancedC <- struct{}{} - _, _, shouldStop := srv.apply(ents, &raftpb.ConfState{}, raftAdvancedC) + _, _, shouldStop := srv.apply(ents, ep, raftAdvancedC) if !shouldStop { t.Errorf("shouldStop = %t, want %t", shouldStop, true) } From 065066f29de2ce5793f182165e8f93253ae1ffaa Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Wed, 27 May 2026 20:12:19 +0200 Subject: [PATCH 1036/1068] Update raft and bbolt dependencies to rc.0 Signed-off-by: Marek Siarkowicz --- api/go.mod | 6 +++--- api/go.sum | 12 ++++++------ cache/go.mod | 6 +++--- cache/go.sum | 12 ++++++------ client/pkg/go.mod | 2 +- client/pkg/go.sum | 4 ++-- client/v3/go.mod | 6 +++--- client/v3/go.sum | 12 ++++++------ etcdctl/go.mod | 6 +++--- etcdctl/go.sum | 12 ++++++------ etcdutl/go.mod | 12 ++++++------ etcdutl/go.sum | 24 +++++++++++------------ go.mod | 16 +++++++-------- go.sum | 32 +++++++++++++++--------------- go.work.sum | 7 ++++--- pkg/go.mod | 6 +++--- pkg/go.sum | 12 ++++++------ server/go.mod | 12 ++++++------ server/go.sum | 24 +++++++++++------------ tests/go.mod | 12 ++++++------ tests/go.sum | 24 +++++++++++------------ tools/mod/go.mod | 18 ++++++++--------- tools/mod/go.sum | 36 +++++++++++++++++----------------- tools/rw-heatmaps/go.mod | 2 +- tools/rw-heatmaps/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 6 +++--- tools/testgrid-analysis/go.sum | 12 ++++++------ 27 files changed, 169 insertions(+), 168 deletions(-) diff --git a/api/go.mod b/api/go.mod index d14c2943ce69..7ee96ead1fde 100644 --- a/api/go.mod +++ b/api/go.mod @@ -20,9 +20,9 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect - golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.44.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/net v0.54.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/api/go.sum b/api/go.sum index bafc0e6a14c1..22cf89c8b802 100644 --- a/api/go.sum +++ b/api/go.sum @@ -38,12 +38,12 @@ go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfC go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= +golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/cache/go.mod b/cache/go.mod index ac5b2eb936ed..06831ddf827d 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -23,9 +23,9 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect - golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.44.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/net v0.54.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/grpc v1.80.0 // indirect diff --git a/cache/go.sum b/cache/go.sum index 7c8d3ed998cf..b17d545340da 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -64,12 +64,12 @@ go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= +golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/client/pkg/go.mod b/client/pkg/go.mod index d8ee9b766734..1dc3bd648f34 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.7.0 github.com/stretchr/testify v1.11.1 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.44.0 + golang.org/x/sys v0.45.0 ) require ( diff --git a/client/pkg/go.sum b/client/pkg/go.sum index 4bdf72f51ba6..ca5d18481272 100644 --- a/client/pkg/go.sum +++ b/client/pkg/go.sum @@ -24,8 +24,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/client/v3/go.mod b/client/v3/go.mod index c7666270ba15..460822ee4b7f 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -36,9 +36,9 @@ require ( go.opentelemetry.io/otel/trace v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.44.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/net v0.54.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 66f45781e551..de34c1fd2d42 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -72,12 +72,12 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= +golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index bdd3bd227833..cd3a9d02b1d0 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -42,9 +42,9 @@ require ( github.com/olekukonko/ll v0.1.6 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.44.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/net v0.54.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 4cd252bb74a7..6fad599a8301 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -102,13 +102,13 @@ go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= +golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index e3686a800bb1..3c5ffee68e09 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -18,13 +18,13 @@ require ( github.com/olekukonko/tablewriter v1.1.4 github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 - go.etcd.io/bbolt v1.5.0-beta.0 + go.etcd.io/bbolt v1.5.0-rc.0 go.etcd.io/etcd/api/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/v3 v3.7.0-beta.0 go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 go.etcd.io/etcd/server/v3 v3.7.0-beta.0 - go.etcd.io/raft/v3 v3.7.0-beta.0 + go.etcd.io/raft/v3 v3.7.0-rc.1 go.uber.org/zap v1.27.1 google.golang.org/protobuf v1.36.11 gotest.tools/v3 v3.5.2 @@ -79,10 +79,10 @@ require ( go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.50.0 // indirect - golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.44.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/crypto v0.51.0 // indirect + golang.org/x/net v0.54.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 67daf68cca46..14752dc0f5d9 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -98,10 +98,10 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -go.etcd.io/bbolt v1.5.0-beta.0 h1:isxlkc3+ZBysJ71YL5dt2eC5D15gmLsa4X8P4ILs+MY= -go.etcd.io/bbolt v1.5.0-beta.0/go.mod h1:3A2bWM6MlWncO01mHrdDVIIQC7B43xx1RNZdYOK1w1s= -go.etcd.io/raft/v3 v3.7.0-beta.0 h1:x6OuTpr7Vhk7XFVC3pID9j81tBpxS+nUSeBRVezkawk= -go.etcd.io/raft/v3 v3.7.0-beta.0/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= +go.etcd.io/bbolt v1.5.0-rc.0 h1:eep+LDTa+VGJ6mmNMe0wWB8OdLUHnyuvvSimdJsWtAE= +go.etcd.io/bbolt v1.5.0-rc.0/go.mod h1:HXpeuv7FrPaEH3z9FzbnSXSntD27WQyEMjQNJbd+vd8= +go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= +go.etcd.io/raft/v3 v3.7.0-rc.1/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 h1:0Qx7VGBacMm9ZENQ7TnNObTYI4ShC+lHI16seduaxZo= @@ -134,24 +134,24 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= -golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= +golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= +golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= +golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/go.mod b/go.mod index 7d8c86a02b83..ab2c5fc17dd0 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 - go.etcd.io/bbolt v1.5.0-beta.0 + go.etcd.io/bbolt v1.5.0-rc.0 go.etcd.io/etcd/api/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/v3 v3.7.0-beta.0 @@ -34,10 +34,10 @@ require ( go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 go.etcd.io/etcd/server/v3 v3.7.0-beta.0 go.etcd.io/etcd/tests/v3 v3.7.0-beta.0 - go.etcd.io/raft/v3 v3.7.0-beta.0 + go.etcd.io/raft/v3 v3.7.0-rc.1 go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 - golang.org/x/tools v0.44.0 + golang.org/x/tools v0.45.0 google.golang.org/grpc v1.80.0 google.golang.org/protobuf v1.36.11 ) @@ -92,12 +92,12 @@ require ( go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.50.0 // indirect - golang.org/x/mod v0.35.0 // indirect - golang.org/x/net v0.53.0 // indirect + golang.org/x/crypto v0.51.0 // indirect + golang.org/x/mod v0.36.0 // indirect + golang.org/x/net v0.54.0 // indirect golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.44.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index 017b0e75ffc9..29449c475e34 100644 --- a/go.sum +++ b/go.sum @@ -104,12 +104,12 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -go.etcd.io/bbolt v1.5.0-beta.0 h1:isxlkc3+ZBysJ71YL5dt2eC5D15gmLsa4X8P4ILs+MY= -go.etcd.io/bbolt v1.5.0-beta.0/go.mod h1:3A2bWM6MlWncO01mHrdDVIIQC7B43xx1RNZdYOK1w1s= +go.etcd.io/bbolt v1.5.0-rc.0 h1:eep+LDTa+VGJ6mmNMe0wWB8OdLUHnyuvvSimdJsWtAE= +go.etcd.io/bbolt v1.5.0-rc.0/go.mod h1:HXpeuv7FrPaEH3z9FzbnSXSntD27WQyEMjQNJbd+vd8= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= -go.etcd.io/raft/v3 v3.7.0-beta.0 h1:x6OuTpr7Vhk7XFVC3pID9j81tBpxS+nUSeBRVezkawk= -go.etcd.io/raft/v3 v3.7.0-beta.0/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= +go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= +go.etcd.io/raft/v3 v3.7.0-rc.1/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 h1:0Qx7VGBacMm9ZENQ7TnNObTYI4ShC+lHI16seduaxZo= @@ -142,31 +142,31 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= -golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= -golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= -golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= +golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= +golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= +golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= +golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= -golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= +golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= +golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/go.work.sum b/go.work.sum index eb42b350e8b9..5661fbe1f43c 100644 --- a/go.work.sum +++ b/go.work.sum @@ -485,19 +485,20 @@ golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= +golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/perf v0.0.0-20250813145418-2f7363a06fe1 h1:stGRioFgvBd3x8HoGVg9bb41lLTWLjBMFT/dMB7f4mQ= golang.org/x/perf v0.0.0-20250813145418-2f7363a06fe1/go.mod h1:rjfRjhHXb3XNVh/9i5Jr2tXoTd0vOlZN5rzsM8cQE6k= golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200317205521-2944c61d58b4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= -golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= +golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= gonum.org/v1/tools v0.0.0-20200318103217-c168b003ce8c h1:cJWOvXtcaFSGXz2F4z2AMM0VV7edDDGrxb5GLQH7ayQ= diff --git a/pkg/go.mod b/pkg/go.mod index 574d7f426b33..043519eff23d 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -13,7 +13,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 go.opentelemetry.io/otel/trace v1.43.0 go.uber.org/zap v1.27.1 - golang.org/x/sys v0.44.0 + golang.org/x/sys v0.45.0 google.golang.org/grpc v1.80.0 google.golang.org/protobuf v1.36.11 ) @@ -27,8 +27,8 @@ require ( go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.53.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/net v0.54.0 // indirect + golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/go.sum b/pkg/go.sum index e1a8367ef04f..378a0d6e2068 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -56,12 +56,12 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= +golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= diff --git a/server/go.mod b/server/go.mod index eca6fddd69aa..9e2c71403be3 100644 --- a/server/go.mod +++ b/server/go.mod @@ -22,20 +22,20 @@ require ( github.com/stretchr/testify v1.11.1 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 - go.etcd.io/bbolt v1.5.0-beta.0 + go.etcd.io/bbolt v1.5.0-rc.0 go.etcd.io/etcd/api/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/v3 v3.7.0-beta.0 go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 - go.etcd.io/raft/v3 v3.7.0-beta.0 + go.etcd.io/raft/v3 v3.7.0-rc.1 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 go.opentelemetry.io/otel v1.43.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 go.opentelemetry.io/otel/sdk v1.43.0 go.opentelemetry.io/otel/trace v1.43.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.50.0 - golang.org/x/net v0.53.0 + golang.org/x/crypto v0.51.0 + golang.org/x/net v0.54.0 golang.org/x/time v0.15.0 google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 google.golang.org/grpc v1.80.0 @@ -68,8 +68,8 @@ require ( go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/sys v0.44.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index 5fb3bb4c3619..355021cd7c66 100644 --- a/server/go.sum +++ b/server/go.sum @@ -78,10 +78,10 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -go.etcd.io/bbolt v1.5.0-beta.0 h1:isxlkc3+ZBysJ71YL5dt2eC5D15gmLsa4X8P4ILs+MY= -go.etcd.io/bbolt v1.5.0-beta.0/go.mod h1:3A2bWM6MlWncO01mHrdDVIIQC7B43xx1RNZdYOK1w1s= -go.etcd.io/raft/v3 v3.7.0-beta.0 h1:x6OuTpr7Vhk7XFVC3pID9j81tBpxS+nUSeBRVezkawk= -go.etcd.io/raft/v3 v3.7.0-beta.0/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= +go.etcd.io/bbolt v1.5.0-rc.0 h1:eep+LDTa+VGJ6mmNMe0wWB8OdLUHnyuvvSimdJsWtAE= +go.etcd.io/bbolt v1.5.0-rc.0/go.mod h1:HXpeuv7FrPaEH3z9FzbnSXSntD27WQyEMjQNJbd+vd8= +go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= +go.etcd.io/raft/v3 v3.7.0-rc.1/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 h1:0Qx7VGBacMm9ZENQ7TnNObTYI4ShC+lHI16seduaxZo= @@ -114,23 +114,23 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= -golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= +golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= +golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= +golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index 894403bc52c1..d0a84f2208ee 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -30,7 +30,7 @@ require ( github.com/prometheus/common v0.67.5 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.11.1 - go.etcd.io/bbolt v1.5.0-beta.0 + go.etcd.io/bbolt v1.5.0-rc.0 go.etcd.io/etcd/api/v3 v3.7.0-beta.0 go.etcd.io/etcd/cache/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 @@ -40,13 +40,13 @@ require ( go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 go.etcd.io/etcd/server/v3 v3.7.0-beta.0 go.etcd.io/gofail v0.2.0 - go.etcd.io/raft/v3 v3.7.0-beta.0 + go.etcd.io/raft/v3 v3.7.0-rc.1 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 go.opentelemetry.io/otel v1.43.0 go.opentelemetry.io/otel/sdk v1.43.0 go.opentelemetry.io/proto/otlp v1.10.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.50.0 + golang.org/x/crypto v0.51.0 golang.org/x/sync v0.20.0 golang.org/x/time v0.15.0 google.golang.org/grpc v1.80.0 @@ -95,9 +95,9 @@ require ( go.opentelemetry.io/otel/trace v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.44.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/net v0.54.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index e07d8664eb12..68e1b8ac5c65 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -110,12 +110,12 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -go.etcd.io/bbolt v1.5.0-beta.0 h1:isxlkc3+ZBysJ71YL5dt2eC5D15gmLsa4X8P4ILs+MY= -go.etcd.io/bbolt v1.5.0-beta.0/go.mod h1:3A2bWM6MlWncO01mHrdDVIIQC7B43xx1RNZdYOK1w1s= +go.etcd.io/bbolt v1.5.0-rc.0 h1:eep+LDTa+VGJ6mmNMe0wWB8OdLUHnyuvvSimdJsWtAE= +go.etcd.io/bbolt v1.5.0-rc.0/go.mod h1:HXpeuv7FrPaEH3z9FzbnSXSntD27WQyEMjQNJbd+vd8= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= -go.etcd.io/raft/v3 v3.7.0-beta.0 h1:x6OuTpr7Vhk7XFVC3pID9j81tBpxS+nUSeBRVezkawk= -go.etcd.io/raft/v3 v3.7.0-beta.0/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= +go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= +go.etcd.io/raft/v3 v3.7.0-rc.1/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 h1:0Qx7VGBacMm9ZENQ7TnNObTYI4ShC+lHI16seduaxZo= @@ -148,24 +148,24 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= -golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= +golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= +golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= +golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 8dfd5ba125d7..fe1db371a5ab 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -14,8 +14,8 @@ require ( github.com/ryancurrah/gomodguard v1.4.1 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 - go.etcd.io/raft/v3 v3.7.0-beta.0 - golang.org/x/tools v0.44.0 + go.etcd.io/raft/v3 v3.7.0-rc.1 + golang.org/x/tools v0.45.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1 google.golang.org/protobuf v1.36.11 gotest.tools/gotestsum v1.13.0 @@ -234,15 +234,15 @@ require ( go.uber.org/zap v1.27.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.50.0 // indirect + golang.org/x/crypto v0.51.0 // indirect golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358 // indirect - golang.org/x/mod v0.35.0 // indirect - golang.org/x/net v0.53.0 // indirect + golang.org/x/mod v0.36.0 // indirect + golang.org/x/net v0.54.0 // indirect golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.44.0 // indirect - golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa // indirect - golang.org/x/term v0.42.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6 // indirect + golang.org/x/term v0.43.0 // indirect + golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/grpc v1.80.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 374aad5eb539..aeb6e31ba816 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -539,8 +539,8 @@ go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 h1:QQiUXlqz+d96jyNG71NE+IGTgOK6Xlhdx+PzvfbLHlQ= go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116/go.mod h1:F9kog+iVAuvPJucb1dkYcDcbV0g4uyGEHllTP5NrXiw= -go.etcd.io/raft/v3 v3.7.0-beta.0 h1:x6OuTpr7Vhk7XFVC3pID9j81tBpxS+nUSeBRVezkawk= -go.etcd.io/raft/v3 v3.7.0-beta.0/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= +go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= +go.etcd.io/raft/v3 v3.7.0-rc.1/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= 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= @@ -565,8 +565,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= -golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= +golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= +golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -582,8 +582,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= -golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= +golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= +golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -604,8 +604,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= +golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -646,10 +646,10 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa h1:efT73AJZfAAUV7SOip6pWGkwJDzIGiKBZGVzHYa+ve4= -golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa/go.mod h1:kHjTxDEnAu6/Nl9lDkzjWpR+bmKfxeiRuSDlsMb70gE= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6 h1:HjU6IWBiAgRIdAJ9/y1rwCn+UELEmwV+VsTLzj/W4sE= +golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6/go.mod h1:Eqhaxk/wZsWEH8CRxLwj6xzEJbz7k1EFGqx7nyCoabE= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -662,8 +662,8 @@ golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.42.0 h1:UiKe+zDFmJobeJ5ggPwOshJIVt6/Ft0rcfrXZDLWAWY= -golang.org/x/term v0.42.0/go.mod h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY= +golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4= +golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -677,8 +677,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= @@ -691,8 +691,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= -golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= +golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= +golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index ef985c61346d..faca04fde0e7 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -22,6 +22,6 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect golang.org/x/image v0.39.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/text v0.37.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect ) diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 2d50e6b0df6f..8cec6774338a 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -55,8 +55,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index af647a19f543..97b359001ae5 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -17,9 +17,9 @@ require ( github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect - golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.44.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/net v0.54.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/grpc v1.80.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 985801f92764..41ed31536f4c 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1341,8 +1341,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= +golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1489,8 +1489,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1521,8 +1521,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 2a0e272311724d0236abb3625c36f1f6628c363b Mon Sep 17 00:00:00 2001 From: Andrew Liu Date: Sat, 16 May 2026 02:46:41 -0700 Subject: [PATCH 1037/1068] traceutil: emit stable message name with trace_id and operation as fields Before this change, LogWithStepThreshold formatted the log message as fmt.Sprintf("trace[%d] %s", rand.Int31(), t.operation) producing a unique string on every invocation (e.g. "trace[12345678] range", "trace[87654321] range"). In structured logging each unique message value is a distinct cardinality entry, so a busy etcd instance generated O(ops/s) unique event names per minute. This made grouping, alerting, and dashboard queries on slow-trace events impractical. After this change the message is always the stable string "trace". The random trace identifier and the operation name are moved to structured zap fields ("trace_id" int32 and "operation" string), preserving full queryability while reducing message cardinality from O(N) to 1. The per-step format strings also no longer embed the trace ID inline; the ID appears once at the top level. Fixes #21733 Signed-off-by: Andrew Liu --- pkg/traceutil/trace.go | 9 +++++---- pkg/traceutil/trace_test.go | 25 +++++++++++++++++++------ 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/pkg/traceutil/trace.go b/pkg/traceutil/trace.go index f89ba83c97cd..121add9b9b0a 100644 --- a/pkg/traceutil/trace.go +++ b/pkg/traceutil/trace.go @@ -200,7 +200,6 @@ func (t *Trace) logInfo(threshold time.Duration) (string, []zap.Field) { endTime := time.Now() totalDuration := endTime.Sub(t.startTime) traceNum := rand.Int31() - msg := fmt.Sprintf("trace[%d] %s", traceNum, t.operation) var steps []string lastStepTime := t.startTime @@ -228,13 +227,15 @@ func (t *Trace) logInfo(threshold time.Duration) (string, []zap.Field) { } stepDuration := tstep.time.Sub(lastStepTime) if stepDuration > threshold { - steps = append(steps, fmt.Sprintf("trace[%d] '%v' %s (duration: %v)", - traceNum, tstep.msg, writeFields(tstep.fields), stepDuration)) + steps = append(steps, fmt.Sprintf("'%v' %s (duration: %v)", + tstep.msg, writeFields(tstep.fields), stepDuration)) } lastStepTime = tstep.time } fs := []zap.Field{ + zap.Int32("trace_id", traceNum), + zap.String("operation", t.operation), zap.String("detail", writeFields(t.fields)), zap.Duration("duration", totalDuration), zap.Time("start", t.startTime), @@ -242,7 +243,7 @@ func (t *Trace) logInfo(threshold time.Duration) (string, []zap.Field) { zap.Strings("steps", steps), zap.Int("step_count", len(steps)), } - return msg, fs + return "trace", fs } func (t *Trace) updateFieldIfExist(f Field) bool { diff --git a/pkg/traceutil/trace_test.go b/pkg/traceutil/trace_test.go index 395a1e0bb02d..cea4ca75a176 100644 --- a/pkg/traceutil/trace_test.go +++ b/pkg/traceutil/trace_test.go @@ -93,10 +93,11 @@ func TestCreate(t *testing.T) { func TestLog(t *testing.T) { tests := []struct { - name string - trace *Trace - fields []Field - expectedMsg []string + name string + trace *Trace + fields []Field + expectedMsg []string + notExpectedMsg []string }{ { name: "When dump all logs", @@ -135,12 +136,18 @@ func TestLog(t *testing.T) { {"count", 1}, }, expectedMsg: []string{ - "Test", + // stable message name + "\"trace\"", + // operation and trace_id emitted as structured fields + "\"operation\":\"Test\"", + "\"trace_id\":", "msg1", "msg2", "traceKey1:traceValue1", "count:1", "stepKey1:stepValue1", "stepKey2:stepValue2", "\"step_count\":2", }, + // step entries must not embed the trace ID inline + notExpectedMsg: []string{"trace["}, }, { name: "When trace has subtrace", @@ -178,13 +185,16 @@ func TestLog(t *testing.T) { {"count", 1}, }, expectedMsg: []string{ - "Test", + "\"trace\"", + "\"operation\":\"Test\"", + "\"trace_id\":", "msg1", "msg2", "submsg", "traceKey1:traceValue1", "count:1", "stepKey1:stepValue1", "stepKey2:stepValue2", "subStepKey:subStepValue", "beginSubTrace:true", "endSubTrace:true", "\"step_count\":3", }, + notExpectedMsg: []string{"trace["}, }, } @@ -209,6 +219,9 @@ func TestLog(t *testing.T) { for _, msg := range tt.expectedMsg { assert.Truef(t, bytes.Contains(data, []byte(msg)), "Expected to find %v in log", msg) } + for _, msg := range tt.notExpectedMsg { + assert.Falsef(t, bytes.Contains(data, []byte(msg)), "Expected NOT to find %v in log", msg) + } }) } } From 8c8d6926b4bcf558821e22902cd04a4806b5cfee Mon Sep 17 00:00:00 2001 From: Andrew Liu Date: Fri, 29 May 2026 01:16:18 -0700 Subject: [PATCH 1038/1068] traceutil: fix gci import formatting in trace_test.go gofmt expects 1-space minimum between the longest struct field name and its type; the notExpectedMsg field (14 chars) was padded with 2 spaces, shifting all fields off by one. Reduced to 1-space minimum so all types align at column 15. Signed-off-by: Andrew Liu --- pkg/traceutil/trace_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/traceutil/trace_test.go b/pkg/traceutil/trace_test.go index cea4ca75a176..10f8b2b192a1 100644 --- a/pkg/traceutil/trace_test.go +++ b/pkg/traceutil/trace_test.go @@ -93,11 +93,11 @@ func TestCreate(t *testing.T) { func TestLog(t *testing.T) { tests := []struct { - name string - trace *Trace - fields []Field - expectedMsg []string - notExpectedMsg []string + name string + trace *Trace + fields []Field + expectedMsg []string + notExpectedMsg []string }{ { name: "When dump all logs", From 9fc2d3ee4c98775aaa8aef69d44430e217e17af6 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 29 May 2026 17:29:40 +0100 Subject: [PATCH 1039/1068] Update core dependencies matrix Signed-off-by: Benjamin Wang --- Documentation/contributor-guide/dependency_management.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/contributor-guide/dependency_management.md b/Documentation/contributor-guide/dependency_management.md index 7b41670810d4..57c4e6d76d4e 100644 --- a/Documentation/contributor-guide/dependency_management.md +++ b/Documentation/contributor-guide/dependency_management.md @@ -191,3 +191,4 @@ Please see the table below: | 3.4.x | v1.3.x | N/A | | 3.5.x | v1.3.x | N/A | | 3.6.x | v1.4.x | v3.6.x | +| 3.7.x | v1.5.x | v3.7.x | From 692394d24f7505323f966e365870c7fc66105e43 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sun, 24 May 2026 23:22:30 +0800 Subject: [PATCH 1040/1068] robustness: save report data before validation Signed-off-by: Chun-Hung Tseng --- .../test-template/robustness/traffic/main.go | 2 +- tests/robustness/main_test.go | 15 ++++---- tests/robustness/report/report.go | 35 +++++++++++++++---- 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 23f82f136760..5e6f332366da 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -78,7 +78,7 @@ func main() { lg.Info("Traffic", zap.String("Type", trafficNames[choice])) r := report.NewTestReport(lg, reportPath, etcdetcdDataPaths, &report.TrafficDetail{ExpectUniqueRevision: tf.ExpectUniqueRevision()}) defer func() { - if err = r.Report(); err != nil { + if err = r.SaveEtcdData(); err != nil { lg.Error("Failed to save traffic generation report", zap.Error(err)) } }() diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index d157f5aef6d0..1cb9703b274c 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -94,22 +94,23 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s scenari // Refer to: https://github.com/golang/go/issues/49929 panicked := true defer func() { - _, persistResults := os.LookupEnv("PERSIST_RESULTS") - shouldReport := t.Failed() || panicked || persistResults - if shouldReport { - if err := r.Report(); err != nil { - t.Error(err) - } + err := r.Finalize(t.Failed(), panicked) + if err != nil { + t.Error(err) } }() clientReports := runScenario(ctx, t, s, lg, c) r.SetClientReports(clientReports) - persistedRequests, err := report.PersistedRequestsCluster(lg, c) + err := r.SaveEtcdData() if err != nil { t.Error(err) } validateConfig := validate.Config{ExpectRevisionUnique: s.Traffic.ExpectUniqueRevision()} + persistedRequests, err := report.PersistedRequestsCluster(lg, c) + if err != nil { + t.Error(err) + } result := validate.ValidateAndReturnVisualize(lg, validateConfig, clientReports, persistedRequests, 5*time.Minute) r.SetVisualizer(result.Linearization.Visualize) err = result.Error() diff --git a/tests/robustness/report/report.go b/tests/robustness/report/report.go index a42c1713133e..99fd39021a82 100644 --- a/tests/robustness/report/report.go +++ b/tests/robustness/report/report.go @@ -33,6 +33,7 @@ type TestReport struct { clientReports []ClientReport visualize func(lg *zap.Logger, path string) error traffic *TrafficDetail + dataSaved bool } func NewTestReport(lg *zap.Logger, reportPath string, serverDataPaths map[string]string, traffic *TrafficDetail) *TestReport { @@ -55,8 +56,11 @@ func (r *TestReport) SetVisualizer(visualize func(lg *zap.Logger, path string) e r.visualize = visualize } -func (r *TestReport) Report() error { - r.logger.Info("Saving robustness test report", zap.String("path", r.reportPath)) +func (r *TestReport) SaveEtcdData() error { + if r.dataSaved { + return nil + } + r.logger.Info("Saving etcd data", zap.String("path", r.reportPath)) err := os.RemoveAll(r.reportPath) if err != nil { r.logger.Error("Failed to remove report dir", zap.Error(err)) @@ -78,12 +82,31 @@ func (r *TestReport) Report() error { return err } } - if r.visualize != nil { - if err := r.visualize(r.logger, filepath.Join(r.reportPath, "history.html")); err != nil { - return err + r.dataSaved = true + return nil +} + +func (r *TestReport) Finalize(tFailed bool, panicked bool) error { + _, persistResults := os.LookupEnv("PERSIST_RESULTS") + keep := tFailed || panicked || persistResults + if !keep { + if !r.dataSaved { + return nil } + r.logger.Info("Removing robustness test report", zap.String("path", r.reportPath)) + return os.RemoveAll(r.reportPath) } - return nil + + if err := r.SaveEtcdData(); err != nil { + return fmt.Errorf("failed to save etcd data: %w", err) + } + + if r.visualize == nil { + r.logger.Info("No visualization available to be saved", zap.String("path", r.reportPath)) + return nil + } + r.logger.Info("Adding visualization to test report", zap.String("path", r.reportPath)) + return r.visualize(r.logger, filepath.Join(r.reportPath, "history.html")) } func ServerDataPaths(c *e2e.EtcdProcessCluster) map[string]string { From 3ec1a40356012fce93144ebede2dde8acb4752f0 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 29 May 2026 12:13:25 +0100 Subject: [PATCH 1041/1068] Add V2Depr1WriteOnlySkipCheck to bypass the v2 content check Signed-off-by: Benjamin Wang --- server/config/v2_deprecation.go | 7 ++++++- server/etcdmain/config.go | 1 + server/etcdmain/help.go | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/server/config/v2_deprecation.go b/server/config/v2_deprecation.go index 6c685bac918a..4913fd881715 100644 --- a/server/config/v2_deprecation.go +++ b/server/config/v2_deprecation.go @@ -26,6 +26,11 @@ const ( // The V2 files are maintained for v3.5 rollback. V2Depr1WriteOnly = V2DeprecationEnum("write-only") + // V2Depr1WriteOnlySkipCheck is like V2Depr1WriteOnly, but bypasses the v2 content check. + // Use only for 3.5 -> 3.6 upgrades with existing v2 data. + // WARNING: Users should read the 3.5 -> 3.6 upgrade guide and use this option at their own risk + V2Depr1WriteOnlySkipCheck = V2DeprecationEnum("write-only-skip-check") + // V2Depr1WriteOnlyDrop means v2store is WIPED if found !!! // Will be default in 3.7. V2Depr1WriteOnlyDrop = V2DeprecationEnum("write-only-drop-data") @@ -48,7 +53,7 @@ func (e V2DeprecationEnum) level() int { switch e { case V2Depr0NotYet: return 0 - case V2Depr1WriteOnly: + case V2Depr1WriteOnly, V2Depr1WriteOnlySkipCheck: return 1 case V2Depr1WriteOnlyDrop: return 2 diff --git a/server/etcdmain/config.go b/server/etcdmain/config.go index 8f16166759fc..e4e3d24c684b 100644 --- a/server/etcdmain/config.go +++ b/server/etcdmain/config.go @@ -99,6 +99,7 @@ func newConfig() *config { ), v2deprecation: flags.NewSelectiveStringsValue( string(cconfig.V2Depr1WriteOnly), + string(cconfig.V2Depr1WriteOnlySkipCheck), string(cconfig.V2Depr1WriteOnlyDrop), string(cconfig.V2Depr2Gone)), } diff --git a/server/etcdmain/help.go b/server/etcdmain/help.go index a2191157bd0e..f04bb2e28a23 100644 --- a/server/etcdmain/help.go +++ b/server/etcdmain/help.go @@ -176,6 +176,7 @@ Clustering: Supported values: 'not-yet' // Issues a warning if v2store have meaningful content (default in v3.5) 'write-only' // Custom v2 state is not allowed (default in v3.6) + 'write-only-skip-check' // Custom v2 state is not allowed similar to 'write-only', but bypass the v2 content check. 'write-only-drop-data' // Custom v2 state will get DELETED ! (planned default in v3.7) 'gone' // v2store is not maintained any longer. (planned to cleanup anything related to v2store in v3.8) From 6bcac938bf3f74cc3f11eefb1bb05acbaf230f07 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 30 May 2026 10:50:19 +0200 Subject: [PATCH 1042/1068] robustness: optimize WAL entry comparison in history merging MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces slow reflection-based 'cmp.Equal' and 'protocmp.Transform()' comparisons in 'mergeMembersEntries' with a custom, direct 'areEntriesEqual' helper. This helper leverages generated protobuf getters to compare fields directly, bypassing reflection while correctly supporting default-value comparisons. A simplified reflection mutation safeguard is also added to prevent the helper from drifting. benchstat comparison: goos: linux goarch: amd64 pkg: go.etcd.io/etcd/tests/v3/robustness/report cpu: AMD Ryzen Threadripper PRO 3945WX 12-Cores │ current_results.txt │ new_results.txt │ │ sec/op │ sec/op vs base │ MergeMemberEntries-24 615867.3µ ± 3% 390.1µ ± 0% -99.94% (p=0.002 n=6) │ current_results.txt │ new_results.txt │ │ B/op │ B/op vs base │ MergeMemberEntries-24 56801.2Ki ± 0% 173.3Ki ± 0% -99.69% (p=0.002 n=6) │ current_results.txt │ new_results.txt │ │ allocs/op │ allocs/op vs base │ MergeMemberEntries-24 818.258k ± 0% 4.008k ± 0% -99.51% (p=0.002 n=6) Signed-off-by: Marek Siarkowicz --- tests/robustness/report/wal.go | 18 +++++-- tests/robustness/report/wal_test.go | 77 +++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 3 deletions(-) diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index 98ec1fedc56e..6abde5d44ede 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -15,6 +15,7 @@ package report import ( + "bytes" "errors" "fmt" "io" @@ -147,7 +148,7 @@ func mergeMembersEntries(minCommitIndex uint64, memberEntries [][]*raftpb.Entry) if entry2.GetIndex() != raftIndex { continue } - if cmp.Equal(entry1, entry2, protocmp.Transform(), protocmp.IgnoreDefaultScalars()) { + if areEntriesEqual(entry1, entry2) { votes[i]++ votes[j]++ } @@ -179,8 +180,9 @@ func mergeMembersEntries(minCommitIndex uint64, memberEntries [][]*raftpb.Entry) } continue } - if !cmp.Equal(entryWithMostVotes, entry, protocmp.Transform(), protocmp.IgnoreDefaultScalars()) { - return nil, fmt.Errorf("mismatching entries on raft index %d, diff: %s", raftIndex, cmp.Diff(entryWithMostVotes, entry, protocmp.Transform(), protocmp.IgnoreDefaultScalars())) + if !areEntriesEqual(entryWithMostVotes, entry) { + diff := cmp.Diff(entryWithMostVotes, entry, protocmp.Transform(), protocmp.IgnoreDefaultScalars(), cmp.Comparer(bytes.Equal)) + return nil, fmt.Errorf("mismatching entries on raft index %d, diff: %s", raftIndex, diff) } } mergedHistory = append(mergedHistory, proto.Clone(entryWithMostVotes).(*raftpb.Entry)) @@ -191,6 +193,16 @@ func mergeMembersEntries(minCommitIndex uint64, memberEntries [][]*raftpb.Entry) return mergedHistory, nil } +func areEntriesEqual(e1, e2 *raftpb.Entry) bool { + if e1 == nil || e2 == nil { + return e1 == e2 + } + return e1.GetIndex() == e2.GetIndex() && + e1.GetTerm() == e2.GetTerm() && + e1.GetType() == e2.GetType() && + bytes.Equal(e1.GetData(), e2.GetData()) +} + func ReadWAL(lg *zap.Logger, dataDir string) (state *raftpb.HardState, ents []*raftpb.Entry, err error) { walDir := datadir.ToWALDir(dataDir) repaired := false diff --git a/tests/robustness/report/wal_test.go b/tests/robustness/report/wal_test.go index d0aa669c4a2e..9e27644e1ed0 100644 --- a/tests/robustness/report/wal_test.go +++ b/tests/robustness/report/wal_test.go @@ -16,6 +16,7 @@ package report import ( + "reflect" "testing" "github.com/google/go-cmp/cmp" @@ -669,3 +670,79 @@ func TestWriteReadWAL(t *testing.T) { }) } } + +func TestAreEntriesEqualVerifyAllFields(t *testing.T) { + base := &raftpb.Entry{ + Index: new(uint64(1)), + Term: new(uint64(1)), + Type: raftpb.EntryNormal.Enum(), + Data: []byte("data"), + } + + val := reflect.ValueOf(base).Elem() + typ := val.Type() + + for i := 0; i < val.NumField(); i++ { + field := typ.Field(i) + if !field.IsExported() { + continue + } + + t.Run(field.Name, func(t *testing.T) { + modified := proto.Clone(base).(*raftpb.Entry) + modVal := reflect.ValueOf(modified).Elem() + + f := modVal.Field(i) + switch f.Kind() { + case reflect.Pointer: + if f.Type().Elem().Kind() == reflect.Uint64 { + v := uint64(999) + f.Set(reflect.ValueOf(&v)) + } else if f.Type().Elem().Kind() == reflect.Int32 { + v := int32(999) + f.Set(reflect.ValueOf(&v).Convert(f.Type())) + } + case reflect.Slice: + if f.Type().Elem().Kind() == reflect.Uint8 { + f.SetBytes([]byte("different-data-payload")) + } + default: + t.Fatalf("Unhandled field type for reflection: %s", f.Type()) + } + + if areEntriesEqual(base, modified) { + t.Errorf("areEntriesEqual returned true after mutating field %q! This means changes to %q are not being compared.", field.Name, field.Name) + } + }) + } +} + +func BenchmarkMergeMemberEntries(b *testing.B) { + const numEntries = 1000 + memberEntries := make([][]*raftpb.Entry, 3) + for i := 0; i < 3; i++ { + memberEntries[i] = make([]*raftpb.Entry, numEntries) + for j := 0; j < numEntries; j++ { + var entryType *raftpb.EntryType + if i == 0 { + entryType = nil + } else { + entryType = raftpb.EntryNormal.Enum() + } + memberEntries[i][j] = &raftpb.Entry{ + Index: new(uint64(j + 1)), + Term: new(uint64(1)), + Type: entryType, + Data: []byte("some realistic data payload for entry"), + } + } + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + _, err := mergeMembersEntries(0, memberEntries) + if err != nil { + b.Fatal(err) + } + } +} From b57222462195f7b276ecbc720b14f399d52874e1 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Mon, 25 May 2026 07:56:40 +0800 Subject: [PATCH 1043/1068] robustness: improve error handling for NewTestReport Signed-off-by: Chun-Hung Tseng --- tests/antithesis/test-template/robustness/traffic/main.go | 5 ++++- tests/robustness/main_test.go | 7 ++++--- tests/robustness/report/report.go | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/tests/antithesis/test-template/robustness/traffic/main.go b/tests/antithesis/test-template/robustness/traffic/main.go index 5e6f332366da..50559083eaa4 100644 --- a/tests/antithesis/test-template/robustness/traffic/main.go +++ b/tests/antithesis/test-template/robustness/traffic/main.go @@ -76,7 +76,10 @@ func main() { choice := rand.IntN(len(traffics)) tf := traffics[choice] lg.Info("Traffic", zap.String("Type", trafficNames[choice])) - r := report.NewTestReport(lg, reportPath, etcdetcdDataPaths, &report.TrafficDetail{ExpectUniqueRevision: tf.ExpectUniqueRevision()}) + r, err := report.NewTestReport(lg, reportPath, etcdetcdDataPaths, &report.TrafficDetail{ExpectUniqueRevision: tf.ExpectUniqueRevision()}) + if err != nil { + lg.Fatal("Failed to create test report", zap.Error(err)) + } defer func() { if err = r.SaveEtcdData(); err != nil { lg.Error("Failed to save traffic generation report", zap.Error(err)) diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index 1cb9703b274c..d18f77c079f4 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -88,20 +88,21 @@ func TestRobustnessRegression(t *testing.T) { } func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s scenarios.TestScenario, c *e2e.EtcdProcessCluster) { - r := report.NewTestReport(lg, testResultsDirectory(t), report.ServerDataPaths(c), &report.TrafficDetail{ExpectUniqueRevision: s.Traffic.ExpectUniqueRevision()}) + r, err := report.NewTestReport(lg, testResultsDirectory(t), report.ServerDataPaths(c), &report.TrafficDetail{ExpectUniqueRevision: s.Traffic.ExpectUniqueRevision()}) + require.NoError(t, err) // t.Failed() returns false during panicking. We need to forcibly // save data on panicking. // Refer to: https://github.com/golang/go/issues/49929 panicked := true defer func() { - err := r.Finalize(t.Failed(), panicked) + err = r.Finalize(t.Failed(), panicked) if err != nil { t.Error(err) } }() clientReports := runScenario(ctx, t, s, lg, c) r.SetClientReports(clientReports) - err := r.SaveEtcdData() + err = r.SaveEtcdData() if err != nil { t.Error(err) } diff --git a/tests/robustness/report/report.go b/tests/robustness/report/report.go index 99fd39021a82..d1bfbc87b914 100644 --- a/tests/robustness/report/report.go +++ b/tests/robustness/report/report.go @@ -36,16 +36,16 @@ type TestReport struct { dataSaved bool } -func NewTestReport(lg *zap.Logger, reportPath string, serverDataPaths map[string]string, traffic *TrafficDetail) *TestReport { +func NewTestReport(lg *zap.Logger, reportPath string, serverDataPaths map[string]string, traffic *TrafficDetail) (*TestReport, error) { if reportPath == "" { - panic("reportPath is not set") + return nil, fmt.Errorf("reportPath is not set") } return &TestReport{ logger: lg, reportPath: reportPath, serverDataPaths: serverDataPaths, traffic: traffic, - } + }, nil } func (r *TestReport) SetClientReports(reports []ClientReport) { From ff469ed16efa3b8ec1d06631490ae3c23b6e6a33 Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 20 May 2026 12:02:40 +0530 Subject: [PATCH 1044/1068] dependency: bump google.golang.org/grpc/cmd/protoc-gen-go-grpc from 1.6.1 to 1.6.2 This commit will bump google.golang.org/grpc/cmd/protoc-gen-go-grpc from 1.6.1 to 1.6.2 Additionally it will also bump google.golang.org/grpc from 1.80.0 to 1.81.0 Signed-off-by: ArkaSaha30 --- api/go.mod | 3 ++- api/go.sum | 5 +++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/v3/go.mod | 5 +---- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- go.work.sum | 20 ++++++++++---------- pkg/go.mod | 3 +-- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 4 ++-- tools/mod/go.sum | 8 ++++---- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 23 files changed, 48 insertions(+), 50 deletions(-) diff --git a/api/go.mod b/api/go.mod index 7ee96ead1fde..ea3aa5389536 100644 --- a/api/go.mod +++ b/api/go.mod @@ -10,12 +10,13 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 github.com/stretchr/testify v1.11.1 google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 - google.golang.org/grpc v1.80.0 + google.golang.org/grpc v1.81.0 google.golang.org/protobuf v1.36.11 ) require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/kr/text v0.2.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect go.opentelemetry.io/otel v1.43.0 // indirect diff --git a/api/go.sum b/api/go.sum index 22cf89c8b802..80063d7360b6 100644 --- a/api/go.sum +++ b/api/go.sum @@ -2,6 +2,7 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= @@ -50,8 +51,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/grpc v1.81.0 h1:W3G9N3KQf3BU+YuCtGKJk0CmxQNbAISICD/9AORxLIw= +google.golang.org/grpc v1.81.0/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/cache/go.mod b/cache/go.mod index 06831ddf827d..c23b22332d9d 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -28,7 +28,7 @@ require ( golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect - google.golang.org/grpc v1.80.0 // indirect + google.golang.org/grpc v1.81.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/cache/go.sum b/cache/go.sum index b17d545340da..f4f0e7c77370 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -76,8 +76,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/grpc v1.81.0 h1:W3G9N3KQf3BU+YuCtGKJk0CmxQNbAISICD/9AORxLIw= +google.golang.org/grpc v1.81.0/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/client/v3/go.mod b/client/v3/go.mod index 460822ee4b7f..8140b49f8b24 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -14,7 +14,7 @@ require ( go.etcd.io/etcd/api/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 go.uber.org/zap v1.27.1 - google.golang.org/grpc v1.80.0 + google.golang.org/grpc v1.81.0 google.golang.org/protobuf v1.36.11 sigs.k8s.io/yaml v1.6.0 ) @@ -31,9 +31,6 @@ require ( github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.5 // indirect github.com/prometheus/procfs v0.16.1 // indirect - go.opentelemetry.io/otel/metric v1.43.0 // indirect - go.opentelemetry.io/otel/sdk v1.43.0 // indirect - go.opentelemetry.io/otel/trace v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.54.0 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index de34c1fd2d42..34fdf19ffd2f 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -84,8 +84,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/grpc v1.81.0 h1:W3G9N3KQf3BU+YuCtGKJk0CmxQNbAISICD/9AORxLIw= +google.golang.org/grpc v1.81.0/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index cd3a9d02b1d0..efa1fa5ddcaf 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -18,7 +18,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 - google.golang.org/grpc v1.80.0 + google.golang.org/grpc v1.81.0 google.golang.org/protobuf v1.36.11 ) diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 6fad599a8301..606c7718937b 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -117,8 +117,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/grpc v1.81.0 h1:W3G9N3KQf3BU+YuCtGKJk0CmxQNbAISICD/9AORxLIw= +google.golang.org/grpc v1.81.0/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 3c5ffee68e09..302d025b6f0d 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -86,7 +86,7 @@ require ( golang.org/x/time v0.15.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect - google.golang.org/grpc v1.80.0 // indirect + google.golang.org/grpc v1.81.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/utils v0.0.0-20260108192941-914a6e750570 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 14752dc0f5d9..8f76de4c52f0 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -161,8 +161,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/grpc v1.81.0 h1:W3G9N3KQf3BU+YuCtGKJk0CmxQNbAISICD/9AORxLIw= +google.golang.org/grpc v1.81.0/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.mod b/go.mod index ab2c5fc17dd0..92c5aa409869 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,7 @@ require ( go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 golang.org/x/tools v0.45.0 - google.golang.org/grpc v1.80.0 + google.golang.org/grpc v1.81.0 google.golang.org/protobuf v1.36.11 ) diff --git a/go.sum b/go.sum index 29449c475e34..df56bd5a345c 100644 --- a/go.sum +++ b/go.sum @@ -173,8 +173,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/grpc v1.81.0 h1:W3G9N3KQf3BU+YuCtGKJk0CmxQNbAISICD/9AORxLIw= +google.golang.org/grpc v1.81.0/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go.work.sum b/go.work.sum index c31bcbf2fbf7..e9ac44773a32 100644 --- a/go.work.sum +++ b/go.work.sum @@ -217,8 +217,8 @@ github.com/cloudflare/circl v1.1.0 h1:bZgT/A+cikZnKIwn7xL2OBj012Bmvho/o6RpRvv3GK github.com/cloudflare/redoctober v0.0.0-20211013234631-6a74ccc611f6 h1:QKzett0dn5FhjcIHNKSClEilabfhWCnsdijq3ftm9Ms= github.com/cloudflare/redoctober v0.0.0-20211013234631-6a74ccc611f6/go.mod h1:Ikt4Wfpln1YOrak+auA8BNxgiilj0Y2y7nO+aN2eMzk= github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nCtnAiZdYFd45cYZPs8vOOIYKfk= -github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w= -github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI= +github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik= +github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4= github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= github.com/cristalhq/acmd v0.12.0 h1:RdlKnxjN+txbQosg8p/TRNZ+J1Rdne43MVQZ1zDhGWk= github.com/cristalhq/acmd v0.12.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= @@ -228,12 +228,12 @@ github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLA github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA= github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU= -github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g= -github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98= +github.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ= +github.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= -github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4= -github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA= +github.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds= +github.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= @@ -255,8 +255,8 @@ github.com/go-fonts/liberation v0.2.0 h1:jAkAWJP4S+OsrPLZM4/eC9iW7CtHy+HBXrEwZXW github.com/go-fonts/stix v0.1.0 h1:UlZlgrvvmT/58o573ot7NFw0vZasZ5I6bcIft/oMdgg= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I= -github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs= -github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= +github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA= +github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk= github.com/go-kit/log v0.1.0 h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 h1:6zl3BbBhdnMkpSj2YY30qV3gDcVBGtFgVsV3+/i+mKQ= @@ -475,8 +475,8 @@ go.etcd.io/etcd/raft/v3 v3.5.12 h1:7r22RufdDsq2z3STjoR7Msz6fYH8tmbkdheGfwJNRmU= go.etcd.io/etcd/raft/v3 v3.5.12/go.mod h1:ERQuZVe79PI6vcC3DlKBukDCLja/L7YMu29B74Iwj4U= go.etcd.io/raft/v3 v3.7.0-beta.0/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opentelemetry.io/contrib/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE= -go.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk= +go.opentelemetry.io/contrib/detectors/gcp v1.42.0 h1:kpt2PEJuOuqYkPcktfJqWWDjTEd/FNgrxcniL7kQrXQ= +go.opentelemetry.io/contrib/detectors/gcp v1.42.0/go.mod h1:W9zQ439utxymRrXsUOzZbFX4JhLxXU4+ZnCt8GG7yA8= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= diff --git a/pkg/go.mod b/pkg/go.mod index 043519eff23d..123ae29e30ea 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -14,7 +14,7 @@ require ( go.opentelemetry.io/otel/trace v1.43.0 go.uber.org/zap v1.27.1 golang.org/x/sys v0.45.0 - google.golang.org/grpc v1.80.0 + google.golang.org/grpc v1.81.0 google.golang.org/protobuf v1.36.11 ) @@ -25,7 +25,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.opentelemetry.io/otel v1.43.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.54.0 // indirect golang.org/x/text v0.37.0 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 378a0d6e2068..0738c31f6c5f 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -66,8 +66,8 @@ gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/grpc v1.81.0 h1:W3G9N3KQf3BU+YuCtGKJk0CmxQNbAISICD/9AORxLIw= +google.golang.org/grpc v1.81.0/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/go.mod b/server/go.mod index 9e2c71403be3..219a2864700d 100644 --- a/server/go.mod +++ b/server/go.mod @@ -38,7 +38,7 @@ require ( golang.org/x/net v0.54.0 golang.org/x/time v0.15.0 google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 - google.golang.org/grpc v1.80.0 + google.golang.org/grpc v1.81.0 google.golang.org/protobuf v1.36.11 gopkg.in/natefinch/lumberjack.v2 v2.2.1 k8s.io/utils v0.0.0-20260108192941-914a6e750570 diff --git a/server/go.sum b/server/go.sum index 355021cd7c66..3792822ea2b7 100644 --- a/server/go.sum +++ b/server/go.sum @@ -140,8 +140,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/grpc v1.81.0 h1:W3G9N3KQf3BU+YuCtGKJk0CmxQNbAISICD/9AORxLIw= +google.golang.org/grpc v1.81.0/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tests/go.mod b/tests/go.mod index d0a84f2208ee..90b505b6b931 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -49,7 +49,7 @@ require ( golang.org/x/crypto v0.51.0 golang.org/x/sync v0.20.0 golang.org/x/time v0.15.0 - google.golang.org/grpc v1.80.0 + google.golang.org/grpc v1.81.0 google.golang.org/protobuf v1.36.11 ) diff --git a/tests/go.sum b/tests/go.sum index 68e1b8ac5c65..d674cef52624 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -175,8 +175,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/grpc v1.81.0 h1:W3G9N3KQf3BU+YuCtGKJk0CmxQNbAISICD/9AORxLIw= +google.golang.org/grpc v1.81.0/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index fe1db371a5ab..c172c1c3b1ec 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -16,7 +16,7 @@ require ( go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 go.etcd.io/raft/v3 v3.7.0-rc.1 golang.org/x/tools v0.45.0 - google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1 + google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.2 google.golang.org/protobuf v1.36.11 gotest.tools/gotestsum v1.13.0 gotest.tools/v3 v3.5.2 @@ -245,7 +245,7 @@ require ( golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect - google.golang.org/grpc v1.80.0 // indirect + google.golang.org/grpc v1.81.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect mvdan.cc/gofumpt v0.9.2 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index aeb6e31ba816..f8029e72db8f 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -706,10 +706,10 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1 h1:/WILD1UcXj/ujCxgoL/DvRgt2CP3txG8+FwkUbb9110= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1/go.mod h1:YNKnb2OAApgYn2oYY47Rn7alMr1zWjb2U8Q0aoGWiNc= +google.golang.org/grpc v1.81.0 h1:W3G9N3KQf3BU+YuCtGKJk0CmxQNbAISICD/9AORxLIw= +google.golang.org/grpc v1.81.0/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.2 h1:rgSNvqscFZ1JgV/4wH5GOsZFSFkR2Eua9As3KIr2LlM= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.2/go.mod h1:iMEtFwDlAhjDU9L5mY6U1XLwlIId/G3h+QcBHDIvrJ8= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 97b359001ae5..dc3f3c6bd93e 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -21,5 +21,5 @@ require ( golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect - google.golang.org/grpc v1.80.0 // indirect + google.golang.org/grpc v1.81.0 // indirect ) diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 41ed31536f4c..79e5faf3a59e 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1895,8 +1895,8 @@ google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGO google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/grpc v1.81.0 h1:W3G9N3KQf3BU+YuCtGKJk0CmxQNbAISICD/9AORxLIw= +google.golang.org/grpc v1.81.0/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 80ed6d3356cde22fe07cf9ac8883e7a3b7563a2d Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 20 May 2026 12:26:13 +0530 Subject: [PATCH 1045/1068] dependency: bump golang.org/x/tools from 0.44.0 to 0.45.0 This commit will bump golang.org/x/tools from 0.44.0 to 0.45.0 Additionally also bump dependent modules: - golang.org/x/net to v0.54.0 - golang.org/x/sys to v0.44.0 - golang.org/x/text to v0.37.0 - golang.org/x/crypto to v0.51.0 Signed-off-by: ArkaSaha30 fix Signed-off-by: ArkaSaha30 --- etcdutl/go.sum | 5 +++++ go.mod | 1 + go.sum | 12 ++++++++++++ server/go.sum | 5 +++++ tests/go.sum | 5 +++++ tools/rw-heatmaps/go.mod | 2 +- 6 files changed, 29 insertions(+), 1 deletion(-) diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 8f76de4c52f0..b53e3396b90a 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -136,10 +136,15 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/go.mod b/go.mod index 92c5aa409869..2c9e25dee1ad 100644 --- a/go.mod +++ b/go.mod @@ -38,6 +38,7 @@ require ( go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 golang.org/x/tools v0.45.0 + golang.org/x/tools v0.45.0 google.golang.org/grpc v1.81.0 google.golang.org/protobuf v1.36.11 ) diff --git a/go.sum b/go.sum index df56bd5a345c..1bf95f9de749 100644 --- a/go.sum +++ b/go.sum @@ -144,12 +144,17 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -165,8 +170,15 @@ golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/server/go.sum b/server/go.sum index 3792822ea2b7..381e65e174a4 100644 --- a/server/go.sum +++ b/server/go.sum @@ -116,10 +116,15 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/tests/go.sum b/tests/go.sum index d674cef52624..cb5261324763 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -150,10 +150,15 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index faca04fde0e7..7d94f7f31344 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -23,5 +23,5 @@ require ( golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect golang.org/x/image v0.39.0 // indirect golang.org/x/text v0.37.0 // indirect - gonum.org/v1/gonum v0.16.0 // indirect + gonum.org/v1/gonum v0.17.0 // indirect ) From 0f06d70d80dfd9372ef976dcc504cd2ef795a3fd Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 20 May 2026 13:03:52 +0530 Subject: [PATCH 1046/1068] dependency: bump github.com/golangci/golangci-lint/v2 from 2.11.4 to 2.12.2 This commit will bump github.com/golangci/golangci-lint/v2 from 2.11.4 to 2.12.2 Additionally also bumps: - github.com/clipperhouse/displaywidth v0.11.0 - github.com/clipperhouse/uax29/v2 v2.7.0 - github.com/mattn/go-runewidth v0.0.23 Signed-off-by: ArkaSaha30 --- etcdctl/go.mod | 6 +- etcdctl/go.sum | 12 +-- etcdutl/go.mod | 10 +-- etcdutl/go.sum | 20 ++--- go.mod | 10 +-- go.sum | 20 ++--- go.work.sum | 70 ++++++++--------- server/go.mod | 4 +- server/go.sum | 8 +- tests/go.mod | 10 +-- tests/go.sum | 20 ++--- tools/mod/go.mod | 66 ++++++++-------- tools/mod/go.sum | 159 ++++++++++++++++++--------------------- tools/rw-heatmaps/go.sum | 4 +- 14 files changed, 199 insertions(+), 220 deletions(-) diff --git a/etcdctl/go.mod b/etcdctl/go.mod index efa1fa5ddcaf..7b546a2bebd5 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -25,8 +25,8 @@ require ( require ( github.com/VividCortex/ewma v1.2.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/clipperhouse/displaywidth v0.10.0 // indirect - github.com/clipperhouse/uax29/v2 v2.6.0 // indirect + github.com/clipperhouse/displaywidth v0.11.0 // indirect + github.com/clipperhouse/uax29/v2 v2.7.0 // indirect github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -36,7 +36,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.19 // indirect + github.com/mattn/go-runewidth v0.0.23 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.2.0 // indirect github.com/olekukonko/ll v0.1.6 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 606c7718937b..0536b4b13338 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -8,10 +8,10 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= -github.com/clipperhouse/displaywidth v0.10.0 h1:GhBG8WuerxjFQQYeuZAeVTuyxuX+UraiZGD4HJQ3Y8g= -github.com/clipperhouse/displaywidth v0.10.0/go.mod h1:XqJajYsaiEwkxOj4bowCTMcT1SgvHo9flfF3jQasdbs= -github.com/clipperhouse/uax29/v2 v2.6.0 h1:z0cDbUV+aPASdFb2/ndFnS9ts/WNXgTNNGFoKXuhpos= -github.com/clipperhouse/uax29/v2 v2.6.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= +github.com/clipperhouse/displaywidth v0.11.0 h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8= +github.com/clipperhouse/displaywidth v0.11.0/go.mod h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0= +github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk= +github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= @@ -49,8 +49,8 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw= -github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= +github.com/mattn/go-runewidth v0.0.23 h1:7ykA0T0jkPpzSvMS5i9uoNn2Xy3R383f9HDx3RybWcw= +github.com/mattn/go-runewidth v0.0.23/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 302d025b6f0d..9f300783c42c 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -34,8 +34,8 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/clipperhouse/displaywidth v0.10.0 // indirect - github.com/clipperhouse/uax29/v2 v2.6.0 // indirect + github.com/clipperhouse/displaywidth v0.11.0 // indirect + github.com/clipperhouse/uax29/v2 v2.7.0 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.19.0 // indirect @@ -53,7 +53,7 @@ require ( github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.19 // indirect + github.com/mattn/go-runewidth v0.0.23 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.2.0 // indirect @@ -71,8 +71,8 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 // indirect go.opentelemetry.io/otel v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 // indirect go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/otel/sdk v1.43.0 // indirect go.opentelemetry.io/otel/trace v1.43.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index b53e3396b90a..243f7f2dc23a 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -4,10 +4,10 @@ github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1x github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/clipperhouse/displaywidth v0.10.0 h1:GhBG8WuerxjFQQYeuZAeVTuyxuX+UraiZGD4HJQ3Y8g= -github.com/clipperhouse/displaywidth v0.10.0/go.mod h1:XqJajYsaiEwkxOj4bowCTMcT1SgvHo9flfF3jQasdbs= -github.com/clipperhouse/uax29/v2 v2.6.0 h1:z0cDbUV+aPASdFb2/ndFnS9ts/WNXgTNNGFoKXuhpos= -github.com/clipperhouse/uax29/v2 v2.6.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= +github.com/clipperhouse/displaywidth v0.11.0 h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8= +github.com/clipperhouse/displaywidth v0.11.0/go.mod h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0= +github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk= +github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -58,8 +58,8 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw= -github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= +github.com/mattn/go-runewidth v0.0.23 h1:7ykA0T0jkPpzSvMS5i9uoNn2Xy3R383f9HDx3RybWcw= +github.com/mattn/go-runewidth v0.0.23/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc= @@ -108,10 +108,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0/go.mod h1:Sje3i3MjSPKTSPvVWCaL8ugBzJwik3u4smCjUeuupqg= 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/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 h1:RAE+JPfvEmvy+0LzyUA25/SGawPwIUbZ6u0Wug54sLc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0/go.mod h1:AGmbycVGEsRx9mXMZ75CsOyhSP6MFIcj/6dnG+vhVjk= go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= diff --git a/go.mod b/go.mod index 2c9e25dee1ad..1570a01881a3 100644 --- a/go.mod +++ b/go.mod @@ -48,8 +48,8 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/clipperhouse/displaywidth v0.10.0 // indirect - github.com/clipperhouse/uax29/v2 v2.6.0 // indirect + github.com/clipperhouse/displaywidth v0.11.0 // indirect + github.com/clipperhouse/uax29/v2 v2.7.0 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.19.0 // indirect @@ -65,7 +65,7 @@ require ( github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.19 // indirect + github.com/mattn/go-runewidth v0.0.23 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.2.0 // indirect @@ -85,8 +85,8 @@ require ( go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 // indirect go.opentelemetry.io/otel v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 // indirect go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/otel/sdk v1.43.0 // indirect go.opentelemetry.io/otel/trace v1.43.0 // indirect diff --git a/go.sum b/go.sum index 1bf95f9de749..785e222d9f05 100644 --- a/go.sum +++ b/go.sum @@ -10,10 +10,10 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= -github.com/clipperhouse/displaywidth v0.10.0 h1:GhBG8WuerxjFQQYeuZAeVTuyxuX+UraiZGD4HJQ3Y8g= -github.com/clipperhouse/displaywidth v0.10.0/go.mod h1:XqJajYsaiEwkxOj4bowCTMcT1SgvHo9flfF3jQasdbs= -github.com/clipperhouse/uax29/v2 v2.6.0 h1:z0cDbUV+aPASdFb2/ndFnS9ts/WNXgTNNGFoKXuhpos= -github.com/clipperhouse/uax29/v2 v2.6.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= +github.com/clipperhouse/displaywidth v0.11.0 h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8= +github.com/clipperhouse/displaywidth v0.11.0/go.mod h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0= +github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk= +github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -64,8 +64,8 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw= -github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= +github.com/mattn/go-runewidth v0.0.23 h1:7ykA0T0jkPpzSvMS5i9uoNn2Xy3R383f9HDx3RybWcw= +github.com/mattn/go-runewidth v0.0.23/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc= @@ -116,10 +116,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0/go.mod h1:Sje3i3MjSPKTSPvVWCaL8ugBzJwik3u4smCjUeuupqg= 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/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 h1:RAE+JPfvEmvy+0LzyUA25/SGawPwIUbZ6u0Wug54sLc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0/go.mod h1:AGmbycVGEsRx9mXMZ75CsOyhSP6MFIcj/6dnG+vhVjk= go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= diff --git a/go.work.sum b/go.work.sum index e9ac44773a32..f3435d1b592f 100644 --- a/go.work.sum +++ b/go.work.sum @@ -175,8 +175,8 @@ github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4 github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0 h1:uF5Q/hWnDU1XZeT6CsrRSxHLroUSEYYO3kgES+yd+So= github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0/go.mod h1:ccdDYaY5+gO+cbnQdFxEXqfy0RkoV25H3jLXUDNM3wg= -github.com/anthropics/anthropic-sdk-go v1.26.0 h1:oUTzFaUpAevfuELAP1sjL6CQJ9HHAfT7CoSYSac11PY= -github.com/anthropics/anthropic-sdk-go v1.26.0/go.mod h1:qUKmaW+uuPB64iy1l+4kOSvaLqPXnHTTBKH6RVZ7q5Q= +github.com/anthropics/anthropic-sdk-go v1.38.0 h1:bA4DcK+91gorIX+5VTONnynyt9LRU4nnN6rRQ+j/NIg= +github.com/anthropics/anthropic-sdk-go v1.38.0/go.mod h1:d288C1L+m74OYuYBvc4UFtR1Q8J0gC55oYDh2t+XxdI= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= @@ -188,13 +188,19 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= github.com/aws/aws-sdk-go v1.46.4 h1:48tKgtm9VMPkb6y7HuYlsfhQmoIRAsTEXTsWLVlty4M= github.com/aws/aws-sdk-go v1.46.4/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWpi6yML8= -github.com/aymanbagabas/go-udiff v0.2.0/go.mod h1:RE4Ex0qsGkTAJoQdQQCA0uG+nAzJO/pI/QwceO5fgrA= -github.com/bits-and-blooms/bitset v1.22.0 h1:Tquv9S8+SGaS3EhyA+up3FXzmkhxPGjQQCkcs2uw7w4= -github.com/bits-and-blooms/bitset v1.22.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= +github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= +github.com/aymanbagabas/go-udiff v0.4.1 h1:OEIrQ8maEeDBXQDoGCbbTTXYJMYRCRO1fnodZ12Gv5o= +github.com/aymanbagabas/go-udiff v0.4.1/go.mod h1:0L9PGwj20lrtmEMeyw4WKJ/TMyDtvAoK9bf2u/mNo3w= +github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= +github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= +github.com/bits-and-blooms/bitset v1.24.4 h1:95H15Og1clikBrKr/DuzMXkQzECs1M6hhoGXLwLQOZE= +github.com/bits-and-blooms/bitset v1.24.4/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= +github.com/buger/jsonparser v1.1.2 h1:frqHqw7otoVbk5M8LlE/L7HTnIq2v9RX6EJ48i9AxJk= +github.com/buger/jsonparser v1.1.2/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bwesterb/go-ristretto v1.2.0 h1:xxWOVbN5m8NNKiSDZXE1jtZvZnC6JSJ9cYFADiZcWtw= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= @@ -203,8 +209,12 @@ github.com/charmbracelet/bubbles v0.21.0 h1:9TdC97SdRVg/1aaXNVWfFH3nnLAwOXr8Fn6u github.com/charmbracelet/bubbles v0.21.0/go.mod h1:HF+v6QUR4HkEpz62dx7ym2xc71/KBHg+zKwJtMw+qtg= github.com/charmbracelet/bubbletea v1.3.10 h1:otUDHWMMzQSB0Pkc87rm691KZ3SWa4KUlvF9nRvCICw= github.com/charmbracelet/bubbletea v1.3.10/go.mod h1:ORQfo0fk8U+po9VaNvnV95UPWA1BitP1E0N6xJPlHr4= -github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a h1:G99klV19u0QnhiizODirwVksQB91TJKV/UaTnACcG30= -github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U= +github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= +github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30= +github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8= +github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs= +github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f h1:pk6gmGpCE7F3FcjaOEKYriCvpmIN4+6OS/RD0vm4uIA= +github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f/go.mod h1:IfZAMTHB6XkZSeXUqriemErjAWCCzT0LwjKFYCZyw0I= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= @@ -326,6 +336,8 @@ github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI= +github.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E= +github.com/invopop/jsonschema v0.13.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= @@ -367,8 +379,6 @@ github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPK github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= -github.com/mattn/goveralls v0.0.5 h1:spfq8AyZ0cCk57Za6/juJ5btQxeE1FaEGMdfcI+XO48= -github.com/mattn/goveralls v0.0.5/go.mod h1:Xg2LHi51faXLyKXwsndxiW6uxEEQT9+3sjGzzwU4xy0= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/mgechev/dots v1.0.0 h1:o+4OJ3OjWzgQHGJXKfJ8rbH4dqDugu5BiEy84nxg0k4= github.com/mgechev/dots v1.0.0/go.mod h1:rykuMydC9t3wfkM+ccYH3U3ss03vZGg6h3hmOznXLH0= @@ -384,8 +394,8 @@ github.com/mozilla/tls-observatory v0.0.0-20250923143331-eef96233227e/go.mod h1: github.com/mreiferson/go-httpclient v0.0.0-20201222173833-5e475fde3a4d h1:tLWCMSjfL8XyZwpu1RzI2UpJSPbZCOZ6DVHQFnlpL7A= github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= -github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= -github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= +github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc= +github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= @@ -393,8 +403,8 @@ github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0 h1:LiZB1h0GIcudcDci2 github.com/olekukonko/ts v0.0.0-20171002115256-78ecb04241c0/go.mod h1:F/7q8/HZz+TXjlsoZQQKVYvXTZaFH4QRa3y+j1p7MS0= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= -github.com/openai/openai-go/v3 v3.26.0 h1:bRt6H/ozMNt/dDkN4gobnLqaEGrRGBzmbVs0xxJEnQE= -github.com/openai/openai-go/v3 v3.26.0/go.mod h1:cdufnVK14cWcT9qA1rRtrXx4FTRsgbDPW7Ia7SS5cZo= +github.com/openai/openai-go/v3 v3.32.0 h1:aHp/3wkX1W6jB8zTtf9xV0aK0qPFSVDqS7AHmlJ4hXs= +github.com/openai/openai-go/v3 v3.32.0/go.mod h1:cdufnVK14cWcT9qA1rRtrXx4FTRsgbDPW7Ia7SS5cZo= github.com/otiai10/curr v1.0.0 h1:TJIWdbX0B+kpNagQrjgq8bCMrbhiuX73M2XwgtDMoOI= github.com/otiai10/mint v1.3.1 h1:BCmzIS3n71sGfHB5NMNDB3lHYPz8fWSkCAErHed//qc= github.com/phpdave11/gofpdf v1.4.2 h1:KPKiIbfwbvC/wOncwhrpRdXVj2CZTCFlw4wnoyjtHfQ= @@ -418,10 +428,8 @@ github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY= github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= -github.com/shirou/gopsutil/v4 v4.26.2 h1:X8i6sicvUFih4BmYIGT1m2wwgw2VG9YgrDTi7cIRGUI= -github.com/shirou/gopsutil/v4 v4.26.2/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= +github.com/shirou/gopsutil/v4 v4.26.4 h1:B4SXVbcwTyrocPHEmWBC4uCYr4Xcu3MK1TXqbprAOWY= +github.com/shirou/gopsutil/v4 v4.26.4/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= @@ -455,6 +463,8 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/quicktemplate v1.8.0 h1:zU0tjbIqTRgKQzFY1L42zq0qR3eh4WoQQdIdqCysW5k= github.com/valyala/quicktemplate v1.8.0/go.mod h1:qIqW8/igXt8fdrUln5kOSb+KWMaJ4Y8QUsfd1k6L2jM= +github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= +github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= @@ -468,12 +478,10 @@ github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 h1:Nzukz5fNOBIHOsnP+6I79kPx3QhLv8nBy2mfFhBRq30= github.com/zmap/zcertificate v0.0.1 h1:2X15TRx4Fr6qzKItfwUdww294OeRSmHILLa+Xn2Uv+s= -go.etcd.io/bbolt v1.5.0-beta.0/go.mod h1:3A2bWM6MlWncO01mHrdDVIIQC7B43xx1RNZdYOK1w1s= go.etcd.io/etcd/client/v2 v2.305.12 h1:0m4ovXYo1CHaA/Mp3X/Fak5sRNIWf01wk/X1/G3sGKI= go.etcd.io/etcd/client/v2 v2.305.12/go.mod h1:aQ/yhsxMu+Oht1FOupSr60oBvcS9cKXHrzBpDsPTf9E= go.etcd.io/etcd/raft/v3 v3.5.12 h1:7r22RufdDsq2z3STjoR7Msz6fYH8tmbkdheGfwJNRmU= go.etcd.io/etcd/raft/v3 v3.5.12/go.mod h1:ERQuZVe79PI6vcC3DlKBukDCLja/L7YMu29B74Iwj4U= -go.etcd.io/raft/v3 v3.7.0-beta.0/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opentelemetry.io/contrib/detectors/gcp v1.42.0 h1:kpt2PEJuOuqYkPcktfJqWWDjTEd/FNgrxcniL7kQrXQ= go.opentelemetry.io/contrib/detectors/gcp v1.42.0/go.mod h1:W9zQ439utxymRrXsUOzZbFX4JhLxXU4+ZnCt8GG7yA8= @@ -481,42 +489,24 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6h go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= -golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c h1:jTMrjjZRcSH/BDxWhXCP6OWsfVgmnwI7J+F4/nyVXaU= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= -golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= -golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= -golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= -golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/perf v0.0.0-20250813145418-2f7363a06fe1 h1:stGRioFgvBd3x8HoGVg9bb41lLTWLjBMFT/dMB7f4mQ= golang.org/x/perf v0.0.0-20250813145418-2f7363a06fe1/go.mod h1:rjfRjhHXb3XNVh/9i5Jr2tXoTd0vOlZN5rzsM8cQE6k= golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa/go.mod h1:kHjTxDEnAu6/Nl9lDkzjWpR+bmKfxeiRuSDlsMb70gE= -golang.org/x/term v0.42.0/go.mod h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200317205521-2944c61d58b4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= -golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= -golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= -golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= -golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= -golang.org/x/tools/go/expect v0.1.0-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= gonum.org/v1/tools v0.0.0-20200318103217-c168b003ce8c h1:cJWOvXtcaFSGXz2F4z2AMM0VV7edDDGrxb5GLQH7ayQ= @@ -525,8 +515,8 @@ google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA= google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genai v1.49.0 h1:Se+QJaH2GYK1aaR1o5S38mlU2GD5FnVvP76nfkV7LH0= -google.golang.org/genai v1.49.0/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= +google.golang.org/genai v1.54.0 h1:ZQCa70WMTJDI11FdqWCzGvZ5PanpcpfoO6jl/lrSnGU= +google.golang.org/genai v1.54.0/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230720185612-659f7aaaa771 h1:gm8vsVR64Jx1GxHY8M+p8YA2bxU/H/lymcutB2l7l9s= diff --git a/server/go.mod b/server/go.mod index 219a2864700d..66f5abcf451b 100644 --- a/server/go.mod +++ b/server/go.mod @@ -30,7 +30,7 @@ require ( go.etcd.io/raft/v3 v3.7.0-rc.1 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 go.opentelemetry.io/otel v1.43.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 go.opentelemetry.io/otel/sdk v1.43.0 go.opentelemetry.io/otel/trace v1.43.0 go.uber.org/zap v1.27.1 @@ -63,7 +63,7 @@ require ( github.com/sirupsen/logrus v1.9.4 // indirect github.com/spf13/pflag v1.0.10 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/server/go.sum b/server/go.sum index 381e65e174a4..57fa83375e13 100644 --- a/server/go.sum +++ b/server/go.sum @@ -88,10 +88,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0/go.mod h1:Sje3i3MjSPKTSPvVWCaL8ugBzJwik3u4smCjUeuupqg= 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/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 h1:RAE+JPfvEmvy+0LzyUA25/SGawPwIUbZ6u0Wug54sLc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0/go.mod h1:AGmbycVGEsRx9mXMZ75CsOyhSP6MFIcj/6dnG+vhVjk= go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= diff --git a/tests/go.mod b/tests/go.mod index 90b505b6b931..4582244aaa5f 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -60,8 +60,8 @@ require ( github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cheggaaa/pb/v3 v3.1.7 // indirect - github.com/clipperhouse/displaywidth v0.10.0 // indirect - github.com/clipperhouse/uax29/v2 v2.6.0 // indirect + github.com/clipperhouse/displaywidth v0.11.0 // indirect + github.com/clipperhouse/uax29/v2 v2.7.0 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/creack/pty v1.1.18 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -76,7 +76,7 @@ require ( github.com/jonboulle/clockwork v0.5.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.19 // indirect + github.com/mattn/go-runewidth v0.0.23 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.2.0 // indirect @@ -89,8 +89,8 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 // indirect go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/otel/trace v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index cb5261324763..8ed3f17f42de 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -14,10 +14,10 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb/v3 v3.1.7 h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI= github.com/cheggaaa/pb/v3 v3.1.7/go.mod h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ= -github.com/clipperhouse/displaywidth v0.10.0 h1:GhBG8WuerxjFQQYeuZAeVTuyxuX+UraiZGD4HJQ3Y8g= -github.com/clipperhouse/displaywidth v0.10.0/go.mod h1:XqJajYsaiEwkxOj4bowCTMcT1SgvHo9flfF3jQasdbs= -github.com/clipperhouse/uax29/v2 v2.6.0 h1:z0cDbUV+aPASdFb2/ndFnS9ts/WNXgTNNGFoKXuhpos= -github.com/clipperhouse/uax29/v2 v2.6.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= +github.com/clipperhouse/displaywidth v0.11.0 h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8= +github.com/clipperhouse/displaywidth v0.11.0/go.mod h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0= +github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk= +github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -70,8 +70,8 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw= -github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= +github.com/mattn/go-runewidth v0.0.23 h1:7ykA0T0jkPpzSvMS5i9uoNn2Xy3R383f9HDx3RybWcw= +github.com/mattn/go-runewidth v0.0.23/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc= @@ -122,10 +122,10 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0/go.mod h1:Sje3i3MjSPKTSPvVWCaL8ugBzJwik3u4smCjUeuupqg= 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/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 h1:RAE+JPfvEmvy+0LzyUA25/SGawPwIUbZ6u0Wug54sLc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0/go.mod h1:AGmbycVGEsRx9mXMZ75CsOyhSP6MFIcj/6dnG+vhVjk= go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index c172c1c3b1ec..2a5f12185baa 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -8,7 +8,7 @@ require ( github.com/alexfalkowski/gocovmerge v1.11.0 github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c github.com/cloudflare/cfssl v1.6.5 - github.com/golangci/golangci-lint/v2 v2.11.4 + github.com/golangci/golangci-lint/v2 v2.12.2 github.com/google/yamlfmt v0.21.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 github.com/ryancurrah/gomodguard v1.4.1 @@ -26,6 +26,7 @@ require ( require ( 4d63.com/gocheckcompilerdirectives v1.3.0 // indirect 4d63.com/gochecknoglobals v0.2.2 // indirect + charm.land/lipgloss/v2 v2.0.3 // indirect codeberg.org/chavacava/garif v0.2.0 // indirect codeberg.org/polyfloyd/go-errorlint v1.9.0 // indirect dev.gaijin.team/go/exhaustruct/v4 v4.0.0 // indirect @@ -39,48 +40,50 @@ require ( github.com/Antonboom/nilnil v1.1.1 // indirect github.com/Antonboom/testifylint v1.6.4 // indirect github.com/BurntSushi/toml v1.6.0 // indirect + github.com/ClickHouse/clickhouse-go-linter v1.2.0 // indirect github.com/Djarvur/go-err113 v0.1.1 // indirect - github.com/Masterminds/semver/v3 v3.4.0 // indirect + github.com/Masterminds/semver/v3 v3.5.0 // indirect github.com/MirrexOne/unqueryvet v1.5.4 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect - github.com/alecthomas/chroma/v2 v2.23.1 // indirect + github.com/alecthomas/chroma/v2 v2.24.1 // indirect github.com/alecthomas/go-check-sumtype v0.3.1 // indirect github.com/alexkohler/nakedret/v2 v2.0.6 // indirect github.com/alexkohler/prealloc v1.1.0 // indirect github.com/alfatraining/structtag v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect github.com/alingse/nilnesserr v0.2.0 // indirect - github.com/ashanbrown/forbidigo/v2 v2.3.0 // indirect - github.com/ashanbrown/makezero/v2 v2.1.0 // indirect - github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect + github.com/ashanbrown/forbidigo/v2 v2.3.1 // indirect + github.com/ashanbrown/makezero/v2 v2.2.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bitfield/gotestdox v0.2.2 // indirect github.com/bkielbasa/cyclop v1.2.3 // indirect github.com/blizzy78/varnamelen v0.8.0 // indirect github.com/bmatcuk/doublestar/v4 v4.8.1 // indirect github.com/bombsimon/wsl/v4 v4.7.0 // indirect - github.com/bombsimon/wsl/v5 v5.6.0 // indirect + github.com/bombsimon/wsl/v5 v5.8.0 // indirect github.com/breml/bidichk v0.3.3 // indirect github.com/breml/errchkjson v0.4.1 // indirect - github.com/butuzov/ireturn v0.4.0 // indirect + github.com/butuzov/ireturn v0.4.1 // indirect github.com/butuzov/mirror v1.3.0 // indirect github.com/catenacyber/perfsprint v0.10.1 // indirect github.com/ccojocar/zxcvbn-go v1.0.4 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charithe/durationcheck v0.0.11 // indirect - github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect - github.com/charmbracelet/lipgloss v1.1.0 // indirect - github.com/charmbracelet/x/ansi v0.10.1 // indirect - github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect - github.com/charmbracelet/x/term v0.2.1 // indirect + github.com/charmbracelet/colorprofile v0.4.3 // indirect + github.com/charmbracelet/ultraviolet v0.0.0-20251205161215-1948445e3318 // indirect + github.com/charmbracelet/x/ansi v0.11.7 // indirect + github.com/charmbracelet/x/term v0.2.2 // indirect + github.com/charmbracelet/x/termios v0.1.1 // indirect + github.com/charmbracelet/x/windows v0.2.2 // indirect github.com/ckaznocha/intrange v0.3.1 // indirect - github.com/clipperhouse/uax29/v2 v2.6.0 // indirect + github.com/clipperhouse/displaywidth v0.11.0 // indirect + github.com/clipperhouse/uax29/v2 v2.7.0 // indirect github.com/curioswitch/go-reassign v0.3.0 // indirect github.com/daixiang0/gci v0.13.7 // indirect github.com/dave/dst v0.27.3 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/denis-tingaikin/go-header v0.5.0 // indirect - github.com/dlclark/regexp2 v1.11.5 // indirect + github.com/dlclark/regexp2 v1.12.0 // indirect github.com/dnephin/pflag v1.0.7 // indirect github.com/ettle/strcase v0.2.0 // indirect github.com/fatih/color v1.19.0 // indirect @@ -105,13 +108,14 @@ require ( github.com/godoc-lint/godoc-lint v0.11.2 // indirect github.com/gofrs/flock v0.13.0 // indirect github.com/golangci/asciicheck v0.5.0 // indirect - github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect + github.com/golangci/dupl v0.0.0-20260401084720-c99c5cf5c202 // indirect github.com/golangci/go-printf-func-name v0.1.1 // indirect github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect github.com/golangci/golines v0.15.0 // indirect github.com/golangci/misspell v0.8.0 // indirect github.com/golangci/plugin-module-register v0.1.2 // indirect github.com/golangci/revgrep v0.8.0 // indirect + github.com/golangci/rowserrcheck v0.0.0-20260419091836-c5f79b8a11ba // indirect github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e // indirect github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e // indirect github.com/google/certificate-transparency-go v1.1.8 // indirect @@ -123,12 +127,11 @@ require ( github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect github.com/gostaticanalysis/nilerr v0.1.2 // indirect github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect - github.com/hashicorp/go-version v1.8.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/jgautheron/goconst v1.8.2 // indirect - github.com/jingyugao/rowserrcheck v1.1.1 // indirect + github.com/jgautheron/goconst v1.10.0 // indirect github.com/jjti/go-spancheck v0.6.5 // indirect github.com/jmhodges/clock v1.2.0 // indirect github.com/jmoiron/sqlx v1.4.0 // indirect @@ -147,30 +150,30 @@ require ( github.com/ldez/tagliatelle v0.7.2 // indirect github.com/ldez/usetesting v0.5.0 // indirect github.com/leonklingele/grouper v1.1.2 // indirect - github.com/lib/pq v1.11.2 // indirect - github.com/lucasb-eyer/go-colorful v1.2.0 // indirect + github.com/lib/pq v1.12.3 // indirect + github.com/lucasb-eyer/go-colorful v1.4.0 // indirect github.com/macabu/inamedparam v0.2.0 // indirect github.com/manuelarte/embeddedstructfieldcheck v0.4.0 // indirect - github.com/manuelarte/funcorder v0.5.0 // indirect + github.com/manuelarte/funcorder v0.6.0 // indirect github.com/maratori/testableexamples v1.0.1 // indirect github.com/maratori/testpackage v1.1.2 // indirect github.com/matoous/godox v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.19 // indirect + github.com/mattn/go-runewidth v0.0.23 // indirect github.com/mattn/go-sqlite3 v1.14.24 // indirect github.com/mgechev/revive v1.15.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moricho/tparallel v0.3.2 // indirect - github.com/muesli/termenv v0.16.0 // indirect + github.com/muesli/cancelreader v0.2.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect github.com/nunnatsa/ginkgolinter v0.23.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/pelletier/go-toml/v2 v2.3.1 // indirect github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect @@ -185,6 +188,7 @@ require ( github.com/raeperd/recvcheck v0.2.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect + github.com/ryancurrah/gomodguard/v2 v2.1.3 // indirect github.com/ryanrolds/sqlclosecheck v0.6.0 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect github.com/sagikazarmark/locafero v0.7.0 // indirect @@ -192,12 +196,12 @@ require ( github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect - github.com/securego/gosec/v2 v2.24.8-0.20260309165252-619ce2117e08 // indirect + github.com/securego/gosec/v2 v2.26.1 // indirect github.com/sirupsen/logrus v1.9.4 // indirect github.com/sivchari/containedctx v1.0.3 // indirect github.com/sonatard/noctx v0.5.1 // indirect github.com/sourcegraph/conc v0.3.0 // indirect - github.com/sourcegraph/go-diff v0.7.0 // indirect + github.com/sourcegraph/go-diff v0.8.0 // indirect github.com/spf13/afero v1.15.0 // indirect github.com/spf13/cast v1.7.1 // indirect github.com/spf13/cobra v1.10.2 // indirect @@ -208,15 +212,15 @@ require ( github.com/stretchr/objx v0.5.2 // indirect github.com/stretchr/testify v1.11.1 // indirect github.com/subosito/gotenv v1.6.0 // indirect - github.com/tetafro/godot v1.5.4 // indirect - github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 // indirect + github.com/tetafro/godot v1.5.6 // indirect + github.com/timakin/bodyclose v0.0.0-20260129054331-73d1f95b84b4 // indirect github.com/timonwong/loggercheck v0.11.0 // indirect github.com/tomarrell/wrapcheck/v2 v2.12.0 // indirect github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect github.com/ultraware/funlen v0.2.0 // indirect github.com/ultraware/whitespace v0.2.0 // indirect github.com/uudashr/gocognit v1.2.1 // indirect - github.com/uudashr/iface v1.4.1 // indirect + github.com/uudashr/iface v1.4.2 // indirect github.com/weppos/publicsuffix-go v0.30.3-0.20240510084413-5f1d03393b3d // indirect github.com/xen0n/gosmopolitan v1.3.0 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect @@ -227,7 +231,7 @@ require ( github.com/zmap/zlint/v3 v3.6.0 // indirect gitlab.com/bosi/decorder v0.4.2 // indirect go-simpler.org/musttag v0.14.0 // indirect - go-simpler.org/sloglint v0.11.1 // indirect + go-simpler.org/sloglint v0.12.0 // indirect go.augendre.info/arangolint v0.4.0 // indirect go.augendre.info/fatcontext v0.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index f8029e72db8f..93f1e4eec124 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -2,6 +2,8 @@ 4d63.com/gocheckcompilerdirectives v1.3.0/go.mod h1:ofsJ4zx2QAuIP/NO/NAh1ig6R1Fb18/GI7RVMwz7kAY= 4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= 4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= +charm.land/lipgloss/v2 v2.0.3 h1:yM2zJ4Cf5Y51b7RHIwioil4ApI/aypFXXVHSwlM6RzU= +charm.land/lipgloss/v2 v2.0.3/go.mod h1:7myLU9iG/3xluAWzpY/fSxYYHCgoKTie7laxk6ATwXA= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= codeberg.org/chavacava/garif v0.2.0 h1:F0tVjhYbuOCnvNcU3YSpO6b3Waw6Bimy4K0mM8y6MfY= codeberg.org/chavacava/garif v0.2.0/go.mod h1:P2BPbVbT4QcvLZrORc2T29szK3xEOlnl0GiPTJmEqBQ= @@ -30,10 +32,12 @@ github.com/Antonboom/testifylint v1.6.4 h1:gs9fUEy+egzxkEbq9P4cpcMB6/G0DYdMeiFS8 github.com/Antonboom/testifylint v1.6.4/go.mod h1:YO33FROXX2OoUfwjz8g+gUxQXio5i9qpVy7nXGbxDD4= github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk= github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/ClickHouse/clickhouse-go-linter v1.2.0 h1:zbm174up3hTKjp0wKZVnTzRiG7tSF5XZF0FJG/MuCBI= +github.com/ClickHouse/clickhouse-go-linter v1.2.0/go.mod h1:pLorS7ffPTfuUV9M0SJgfHA/h/WQPQUk2FWG9x74cQ4= github.com/Djarvur/go-err113 v0.1.1 h1:eHfopDqXRwAi+YmCUas75ZE0+hoBHJ2GQNLYRSxao4g= github.com/Djarvur/go-err113 v0.1.1/go.mod h1:IaWJdYFLg76t2ihfflPZnM1LIQszWOsFDh2hhhAVF6k= -github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= -github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Masterminds/semver/v3 v3.5.0 h1:kQceYJfbupGfZOKZQg0kou0DgAKhzDg2NZPAwZ/2OOE= +github.com/Masterminds/semver/v3 v3.5.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/MirrexOne/unqueryvet v1.5.4 h1:38QOxShO7JmMWT+eCdDMbcUgGCOeJphVkzzRgyLJgsQ= github.com/MirrexOne/unqueryvet v1.5.4/go.mod h1:fs9Zq6eh1LRIhsDIsxf9PONVUjYdFHdtkHIgZdJnyPU= github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= @@ -41,8 +45,8 @@ github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgz github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= -github.com/alecthomas/chroma/v2 v2.23.1 h1:nv2AVZdTyClGbVQkIzlDm/rnhk1E9bU9nXwmZ/Vk/iY= -github.com/alecthomas/chroma/v2 v2.23.1/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o= +github.com/alecthomas/chroma/v2 v2.24.1 h1:m5ffpfZbIb++k8AqFEKy9uVgY12xIQtBsQlc6DfZJQM= +github.com/alecthomas/chroma/v2 v2.24.1/go.mod h1:l+ohZ9xRXIbGe7cIW+YZgOGbvuVLjMps/FYN/CwuabI= github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU= github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= @@ -61,12 +65,10 @@ github.com/alingse/nilnesserr v0.2.0 h1:raLem5KG7EFVb4UIDAXgrv3N2JIaffeKNtcEXkEW github.com/alingse/nilnesserr v0.2.0/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c h1:xv0ICJ4AO52aNZ+vI2KFUYZBMh7dHvROixZ1vzMMfu8= github.com/appscodelabs/license-bill-of-materials v0.0.0-20220707232035-6018e0c5287c/go.mod h1:Y5/1I+0gnnhHKyX4z65mgaGTJ08tnz9WUgkoymA/cws= -github.com/ashanbrown/forbidigo/v2 v2.3.0 h1:OZZDOchCgsX5gvToVtEBoV2UWbFfI6RKQTir2UZzSxo= -github.com/ashanbrown/forbidigo/v2 v2.3.0/go.mod h1:5p6VmsG5/1xx3E785W9fouMxIOkvY2rRV9nMdWadd6c= -github.com/ashanbrown/makezero/v2 v2.1.0 h1:snuKYMbqosNokUKm+R6/+vOPs8yVAi46La7Ck6QYSaE= -github.com/ashanbrown/makezero/v2 v2.1.0/go.mod h1:aEGT/9q3S8DHeE57C88z2a6xydvgx8J5hgXIGWgo0MY= -github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= -github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= +github.com/ashanbrown/forbidigo/v2 v2.3.1 h1:KAZijvQ7zeIBKbhikT4jCm0TLYXC4u78bTiLh/8JROI= +github.com/ashanbrown/forbidigo/v2 v2.3.1/go.mod h1:2QDkLTzU6TV937eFROamXrW92M3paehdae4HCDCOZCM= +github.com/ashanbrown/makezero/v2 v2.2.1 h1:A7uU8dgB1PA9aelTxHMfHIQ8Qev8AB3JLxJUBUsejqM= +github.com/ashanbrown/makezero/v2 v2.2.1/go.mod h1:aEGT/9q3S8DHeE57C88z2a6xydvgx8J5hgXIGWgo0MY= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bitfield/gotestdox v0.2.2 h1:x6RcPAbBbErKLnapz1QeAlf3ospg8efBsedU93CDsnE= @@ -79,14 +81,14 @@ github.com/bmatcuk/doublestar/v4 v4.8.1 h1:54Bopc5c2cAvhLRAzqOGCYHYyhcDHsFF4wWIR github.com/bmatcuk/doublestar/v4 v4.8.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bombsimon/wsl/v4 v4.7.0 h1:1Ilm9JBPRczjyUs6hvOPKvd7VL1Q++PL8M0SXBDf+jQ= github.com/bombsimon/wsl/v4 v4.7.0/go.mod h1:uV/+6BkffuzSAVYD+yGyld1AChO7/EuLrCF/8xTiapg= -github.com/bombsimon/wsl/v5 v5.6.0 h1:4z+/sBqC5vUmSp1O0mS+czxwH9+LKXtCWtHH9rZGQL8= -github.com/bombsimon/wsl/v5 v5.6.0/go.mod h1:Uqt2EfrMj2NV8UGoN1f1Y3m0NpUVCsUdrNCdet+8LvU= +github.com/bombsimon/wsl/v5 v5.8.0 h1:JTkyfs4yl8SPejrCF2GdABXE+mO1WvM7iUYzRWlsxDs= +github.com/bombsimon/wsl/v5 v5.8.0/go.mod h1:AbOLsulgkqP4ZnitHf9gwPtCOGlrzkk0jb0uNxRSY0o= github.com/breml/bidichk v0.3.3 h1:WSM67ztRusf1sMoqH6/c4OBCUlRVTKq+CbSeo0R17sE= github.com/breml/bidichk v0.3.3/go.mod h1:ISbsut8OnjB367j5NseXEGGgO/th206dVa427kR8YTE= github.com/breml/errchkjson v0.4.1 h1:keFSS8D7A2T0haP9kzZTi7o26r7kE3vymjZNeNDRDwg= github.com/breml/errchkjson v0.4.1/go.mod h1:a23OvR6Qvcl7DG/Z4o0el6BRAjKnaReoPQFciAl9U3s= -github.com/butuzov/ireturn v0.4.0 h1:+s76bF/PfeKEdbG8b54aCocxXmi0wvYdOVsWxVO7n8E= -github.com/butuzov/ireturn v0.4.0/go.mod h1:ghI0FrCmap8pDWZwfPisFD1vEc56VKH4NpQUxDHta70= +github.com/butuzov/ireturn v0.4.1 h1:vWb3NO4t77iku/sjCQ/2pHTQeOmxEhjIriJqRLg1Y+I= +github.com/butuzov/ireturn v0.4.1/go.mod h1:q+DXKzTDV5guNuXLnIab9fKXizTn2miZHLhxH7V/GB4= github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= @@ -98,20 +100,24 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charithe/durationcheck v0.0.11 h1:g1/EX1eIiKS57NTWsYtHDZ/APfeXKhye1DidBcABctk= github.com/charithe/durationcheck v0.0.11/go.mod h1:x5iZaixRNl8ctbM+3B2RrPG5t856TxRyVQEnbIEM2X4= -github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs= -github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk= -github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= -github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30= -github.com/charmbracelet/x/ansi v0.10.1 h1:rL3Koar5XvX0pHGfovN03f5cxLbCF2YvLeyz7D2jVDQ= -github.com/charmbracelet/x/ansi v0.10.1/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE= -github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8= -github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs= -github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ= -github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg= +github.com/charmbracelet/colorprofile v0.4.3 h1:QPa1IWkYI+AOB+fE+mg/5/4HRMZcaXex9t5KX76i20Q= +github.com/charmbracelet/colorprofile v0.4.3/go.mod h1:/zT4BhpD5aGFpqQQqw7a+VtHCzu+zrQtt1zhMt9mR4Q= +github.com/charmbracelet/ultraviolet v0.0.0-20251205161215-1948445e3318 h1:OqDqxQZliC7C8adA7KjelW3OjtAxREfeHkNcd66wpeI= +github.com/charmbracelet/ultraviolet v0.0.0-20251205161215-1948445e3318/go.mod h1:Y6kE2GzHfkyQQVCSL9r2hwokSrIlHGzZG+71+wDYSZI= +github.com/charmbracelet/x/ansi v0.11.7 h1:kzv1kJvjg2S3r9KHo8hDdHFQLEqn4RBCb39dAYC84jI= +github.com/charmbracelet/x/ansi v0.11.7/go.mod h1:9qGpnAVYz+8ACONkZBUWPtL7lulP9No6p1epAihUZwQ= +github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk= +github.com/charmbracelet/x/term v0.2.2/go.mod h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI= +github.com/charmbracelet/x/termios v0.1.1 h1:o3Q2bT8eqzGnGPOYheoYS8eEleT5ZVNYNy8JawjaNZY= +github.com/charmbracelet/x/termios v0.1.1/go.mod h1:rB7fnv1TgOPOyyKRJ9o+AsTU/vK5WHJ2ivHeut/Pcwo= +github.com/charmbracelet/x/windows v0.2.2 h1:IofanmuvaxnKHuV04sC0eBy/smG6kIKrWG2/jYn2GuM= +github.com/charmbracelet/x/windows v0.2.2/go.mod h1:/8XtdKZzedat74NQFn0NGlGL4soHB0YQZrETF96h75k= github.com/ckaznocha/intrange v0.3.1 h1:j1onQyXvHUsPWujDH6WIjhyH26gkRt/txNlV7LspvJs= github.com/ckaznocha/intrange v0.3.1/go.mod h1:QVepyz1AkUoFQkpEqksSYpNpUo3c5W7nWh/s6SHIJJk= -github.com/clipperhouse/uax29/v2 v2.6.0 h1:z0cDbUV+aPASdFb2/ndFnS9ts/WNXgTNNGFoKXuhpos= -github.com/clipperhouse/uax29/v2 v2.6.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= +github.com/clipperhouse/displaywidth v0.11.0 h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8= +github.com/clipperhouse/displaywidth v0.11.0/go.mod h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0= +github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk= +github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cloudflare/cfssl v1.6.5 h1:46zpNkm6dlNkMZH/wMW22ejih6gIaJbzL2du6vD7ZeI= github.com/cloudflare/cfssl v1.6.5/go.mod h1:Bk1si7sq8h2+yVEDrFJiz3d7Aw+pfjjJSZVaD+Taky4= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= @@ -132,8 +138,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8= github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY= -github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ= -github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dlclark/regexp2 v1.12.0 h1:0j4c5qQmnC6XOWNjP3PIXURXN2gWx76rd3KvgdPkCz8= +github.com/dlclark/regexp2 v1.12.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dnephin/pflag v1.0.7 h1:oxONGlWxhmUct0YzKTgrpQv9AUA1wtPBn7zuSjJqptk= github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= @@ -196,14 +202,14 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golangci/asciicheck v0.5.0 h1:jczN/BorERZwK8oiFBOGvlGPknhvq0bjnysTj4nUfo0= github.com/golangci/asciicheck v0.5.0/go.mod h1:5RMNAInbNFw2krqN6ibBxN/zfRFa9S6tA1nPdM0l8qQ= -github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 h1:WUvBfQL6EW/40l6OmeSBYQJNSif4O11+bmWEz+C7FYw= -github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E= +github.com/golangci/dupl v0.0.0-20260401084720-c99c5cf5c202 h1:CbTB8KpqnViI6lIXxp03Oclc4VFHi3K4BWC1TacsZ+A= +github.com/golangci/dupl v0.0.0-20260401084720-c99c5cf5c202/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E= github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarogrvjO9AfiW3B4U= github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint/v2 v2.11.4 h1:GK+UlZBN5y7rh2PBnHA93XLSX6RaF7uhzJQ3JwU1wuA= -github.com/golangci/golangci-lint/v2 v2.11.4/go.mod h1:ODQDCASMA3VqfZYIbbQLpTRTzV7O/vjmIRF6u8NyFwI= +github.com/golangci/golangci-lint/v2 v2.12.2 h1:7+d1uY0bq1MU2UV3R5pW5Q7QWdcoq4naMRXM+gsJKrs= +github.com/golangci/golangci-lint/v2 v2.12.2/go.mod h1:opqHHuIcTG2R+4akzWMd4o1BnD9/1LcjICWOujr91U8= github.com/golangci/golines v0.15.0 h1:Qnph25g8Y1c5fdo1X7GaRDGgnMHgnxh4Gk4VfPTtRx0= github.com/golangci/golines v0.15.0/go.mod h1:AZjXd23tbHMpowhtnGlj9KCNsysj72aeZVVHnVcZx10= github.com/golangci/misspell v0.8.0 h1:qvxQhiE2/5z+BVRo1kwYA8yGz+lOlu5Jfvtx2b04Jbg= @@ -212,6 +218,8 @@ github.com/golangci/plugin-module-register v0.1.2 h1:e5WM6PO6NIAEcij3B053CohVp3H github.com/golangci/plugin-module-register v0.1.2/go.mod h1:1+QGTsKBvAIvPvoY/os+G5eoqxWn70HYDm2uvUyGuVw= github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s= github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= +github.com/golangci/rowserrcheck v0.0.0-20260419091836-c5f79b8a11ba h1:lqtcnSMDuuJdu/LrKWi5RJzpSNLOJXYe/nzQutTI5kg= +github.com/golangci/rowserrcheck v0.0.0-20260419091836-c5f79b8a11ba/go.mod h1:sCBNcpRmhJCtbFGz49+IM3ETTFf7QdJ30AeYCd43NKk= github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e h1:ai0EfmVYE2bRA5htgAG9r7s3tHsfjIhN98WshBTJ9jM= github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e/go.mod h1:Vrn4B5oR9qRwM+f54koyeH3yzphlecwERs0el27Fr/s= github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e h1:gD6P7NEo7Eqtt0ssnqSJNNndxe69DOQ24A5h7+i3KpM= @@ -254,18 +262,16 @@ github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1T 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.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -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/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/jgautheron/goconst v1.8.2 h1:y0XF7X8CikZ93fSNT6WBTb/NElBu9IjaY7CCYQrCMX4= -github.com/jgautheron/goconst v1.8.2/go.mod h1:A0oxgBCHy55NQn6sYpO7UdnA9p+h7cPtoOZUmvNIako= -github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= -github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= +github.com/jgautheron/goconst v1.10.0 h1:Ptt+OoE4NaEWKhLrWrrN3IpZdGLiqaf7WLnEX/iv4Jw= +github.com/jgautheron/goconst v1.10.0/go.mod h1:0p+wv1lFOiUr0IlNNT1nrm6+8DB8u2sU6KHGzFRXHDc= github.com/jjti/go-spancheck v0.6.5 h1:lmi7pKxa37oKYIMScialXUK6hP3iY5F1gu+mLBPgYB8= github.com/jjti/go-spancheck v0.6.5/go.mod h1:aEogkeatBrbYsyW6y5TgDfihCulDYciL1B7rG2vSsrU= github.com/jmhodges/clock v1.2.0 h1:eq4kys+NI0PLngzaHEe7AmPT90XMGIEySD1JfV1PDIs= @@ -311,16 +317,16 @@ github.com/ldez/usetesting v0.5.0/go.mod h1:Spnb4Qppf8JTuRgblLrEWb7IE6rDmUpGvxY3 github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.11.2 h1:x6gxUeu39V0BHZiugWe8LXZYZ+Utk7hSJGThs8sdzfs= -github.com/lib/pq v1.11.2/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA= -github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= -github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/lib/pq v1.12.3 h1:tTWxr2YLKwIvK90ZXEw8GP7UFHtcbTtty8zsI+YjrfQ= +github.com/lib/pq v1.12.3/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA= +github.com/lucasb-eyer/go-colorful v1.4.0 h1:UtrWVfLdarDgc44HcS7pYloGHJUjHV/4FwW4TvVgFr4= +github.com/lucasb-eyer/go-colorful v1.4.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/macabu/inamedparam v0.2.0 h1:VyPYpOc10nkhI2qeNUdh3Zket4fcZjEWe35poddBCpE= github.com/macabu/inamedparam v0.2.0/go.mod h1:+Pee9/YfGe5LJ62pYXqB89lJ+0k5bsR8Wgz/C0Zlq3U= github.com/manuelarte/embeddedstructfieldcheck v0.4.0 h1:3mAIyaGRtjK6EO9E73JlXLtiy7ha80b2ZVGyacxgfww= github.com/manuelarte/embeddedstructfieldcheck v0.4.0/go.mod h1:z8dFSyXqp+fC6NLDSljRJeNQJJDWnY7RoWFzV3PC6UM= -github.com/manuelarte/funcorder v0.5.0 h1:llMuHXXbg7tD0i/LNw8vGnkDTHFpTnWqKPI85Rknc+8= -github.com/manuelarte/funcorder v0.5.0/go.mod h1:Yt3CiUQthSBMBxjShjdXMexmzpP8YGvGLjrxJNkO2hA= +github.com/manuelarte/funcorder v0.6.0 h1:0hBngc4fa1IgNiI65A7sFGkMvoMCc878RjqB5V7rWP0= +github.com/manuelarte/funcorder v0.6.0/go.mod h1:id3NDhXdQBmeqXH7eVC6Z89xS6JxvZ8kF9xUxpArU/g= github.com/maratori/testableexamples v1.0.1 h1:HfOQXs+XgfeRBJ+Wz0XfH+FHnoY9TVqL6Fcevpzy4q8= github.com/maratori/testableexamples v1.0.1/go.mod h1:XE2F/nQs7B9N08JgyRmdGjYVGqxWwClLPCGSQhXQSrQ= github.com/maratori/testpackage v1.1.2 h1:ffDSh+AgqluCLMXhM19f/cpvQAKygKAJXFl9aUjmbqs= @@ -333,8 +339,8 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw= -github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= +github.com/mattn/go-runewidth v0.0.23 h1:7ykA0T0jkPpzSvMS5i9uoNn2Xy3R383f9HDx3RybWcw= +github.com/mattn/go-runewidth v0.0.23/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= @@ -348,8 +354,8 @@ github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKH github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U= github.com/mreiferson/go-httpclient v0.0.0-20160630210159-31f0106b4474/go.mod h1:OQA4XLvDbMgS8P0CevmM4m9Q3Jq4phKUzcocxuGJ5m8= github.com/mreiferson/go-httpclient v0.0.0-20201222173833-5e475fde3a4d/go.mod h1:OQA4XLvDbMgS8P0CevmM4m9Q3Jq4phKUzcocxuGJ5m8= -github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc= -github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk= +github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= +github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= @@ -360,8 +366,8 @@ github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= github.com/nunnatsa/ginkgolinter v0.23.0 h1:x3o4DGYOWbBMP/VdNQKgSj+25aJKx2Pe6lHr8gBcgf8= github.com/nunnatsa/ginkgolinter v0.23.0/go.mod h1:9qN1+0akwXEccwV1CAcCDfcoBlWXHB+ML9884pL4SZ4= -github.com/onsi/ginkgo/v2 v2.28.1 h1:S4hj+HbZp40fNKuLUQOYLDgZLwNUVn19N3Atb98NCyI= -github.com/onsi/ginkgo/v2 v2.28.1/go.mod h1:CLtbVInNckU3/+gC8LzkGUb9oF+e8W8TdUsxPwvdOgE= +github.com/onsi/ginkgo/v2 v2.28.2 h1:DTrMfpqxiNUyQ3Y0zhn1n3cOO2euFgQPYIpkWwxVFps= +github.com/onsi/ginkgo/v2 v2.28.2/go.mod h1:CLtbVInNckU3/+gC8LzkGUb9oF+e8W8TdUsxPwvdOgE= github.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28= github.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= @@ -374,8 +380,8 @@ github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT9 github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= -github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= +github.com/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= +github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d h1:CdDQnGF8Nq9ocOS/xlSptM1N3BbrA6/kmaep5ggwaIA= github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -408,6 +414,8 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7 github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryancurrah/gomodguard v1.4.1 h1:eWC8eUMNZ/wM/PWuZBv7JxxqT5fiIKSIyTvjb7Elr+g= github.com/ryancurrah/gomodguard v1.4.1/go.mod h1:qnMJwV1hX9m+YJseXEBhd2s90+1Xn6x9dLz11ualI1I= +github.com/ryancurrah/gomodguard/v2 v2.1.3 h1:E7sz3PJwE9Ba1reVxSpF6XLCPJZ74Kfw/LabTNM4GIA= +github.com/ryancurrah/gomodguard/v2 v2.1.3/go.mod h1:CQicdLGatWMxLX53JzoBjYlsNZhHbmLv2AVa0s2aivU= github.com/ryanrolds/sqlclosecheck v0.6.0 h1:pEyL9okISdg1F1SEpJNlrEotkTGerv5BMk7U4AG0eVg= github.com/ryanrolds/sqlclosecheck v0.6.0/go.mod h1:xyX16hsDaCMXHrMJ3JMzGf5OpDfHTOTTQrT7HOFUmeU= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= @@ -422,12 +430,10 @@ github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tM github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= github.com/sashamelentyev/usestdlibvars v1.29.0 h1:8J0MoRrw4/NAXtjQqTHrbW9NN+3iMf7Knkq057v4XOQ= github.com/sashamelentyev/usestdlibvars v1.29.0/go.mod h1:8PpnjHMk5VdeWlVb4wCdrB8PNbLqZ3wBZTZWkrpZZL8= -github.com/securego/gosec/v2 v2.24.8-0.20260309165252-619ce2117e08 h1:AoLtJX4WUtZkhhUUMFy3GgecAALp/Mb4S1iyQOA2s0U= -github.com/securego/gosec/v2 v2.24.8-0.20260309165252-619ce2117e08/go.mod h1:+XLCJiRE95ga77XInNELh2M6zQP+PdqiT9Zpm0D9Wpk= +github.com/securego/gosec/v2 v2.26.1 h1:gdkttGhQFVehqRJ8grKH4DrpqM/QlPKNHBnl8QgcEC4= +github.com/securego/gosec/v2 v2.26.1/go.mod h1:57UW4p0uoP3kxoTkhoo3axLdVAi+OWrLg/Ax/kdqtPE= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= @@ -439,8 +445,8 @@ github.com/sonatard/noctx v0.5.1 h1:wklWg9c9ZYugOAk7qG4yP4PBrlQsmSLPTvW1K4PRQMs= github.com/sonatard/noctx v0.5.1/go.mod h1:64XdbzFb18XL4LporKXp8poqZtPKbCrqQ402CV+kJas= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= -github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= +github.com/sourcegraph/go-diff v0.8.0 h1:ipIyu4cTsLbIrln4l0qtHA3r0a7gyK4ntKjtQytHhvY= +github.com/sourcegraph/go-diff v0.8.0/go.mod h1:hWlcO7Al+UZStZAP8rBumHpCK5ZHQ5BXsMls8p4+F5E= github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= @@ -474,10 +480,10 @@ github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= -github.com/tetafro/godot v1.5.4 h1:u1ww+gqpRLiIA16yF2PV1CV1n/X3zhyezbNXC3E14Sg= -github.com/tetafro/godot v1.5.4/go.mod h1:eOkMrVQurDui411nBY2FA05EYH01r14LuWY/NrVDVcU= -github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 h1:9LPGD+jzxMlnk5r6+hJnar67cgpDIz/iyD+rfl5r2Vk= -github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= +github.com/tetafro/godot v1.5.6 h1:IEkrFCwXaYHlOn4mGzGS3F3dkP6m9t0jpwqBFPIkKiA= +github.com/tetafro/godot v1.5.6/go.mod h1:eOkMrVQurDui411nBY2FA05EYH01r14LuWY/NrVDVcU= +github.com/timakin/bodyclose v0.0.0-20260129054331-73d1f95b84b4 h1:SiHe5XLTn9sFWJ5pBwJ5FN/4j34q9ZlOAD//kMoMYp0= +github.com/timakin/bodyclose v0.0.0-20260129054331-73d1f95b84b4/go.mod h1:sDHLK7rb/59v/ZxZ7KtymgcoxuUMxjXq8gtu9VMOK8M= github.com/timonwong/loggercheck v0.11.0 h1:jdaMpYBl+Uq9mWPXv1r8jc5fC3gyXx4/WGwTnnNKn4M= github.com/timonwong/loggercheck v0.11.0/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= github.com/tomarrell/wrapcheck/v2 v2.12.0 h1:H/qQ1aNWz/eeIhxKAFvkfIA+N7YDvq6TWVFL27Of9is= @@ -490,8 +496,8 @@ github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSW github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= github.com/uudashr/gocognit v1.2.1 h1:CSJynt5txTnORn/DkhiB4mZjwPuifyASC8/6Q0I/QS4= github.com/uudashr/gocognit v1.2.1/go.mod h1:acaubQc6xYlXFEMb9nWX2dYBzJ/bIjEkc1zzvyIZg5Q= -github.com/uudashr/iface v1.4.1 h1:J16Xl1wyNX9ofhpHmQ9h9gk5rnv2A6lX/2+APLTo0zU= -github.com/uudashr/iface v1.4.1/go.mod h1:pbeBPlbuU2qkNDn0mmfrxP2X+wjPMIQAy+r1MBXSXtg= +github.com/uudashr/iface v1.4.2 h1:06Vq5RKVYThBsj0Bnw4oasMjD1r+7CE/bcKOA8dVSvg= +github.com/uudashr/iface v1.4.2/go.mod h1:pbeBPlbuU2qkNDn0mmfrxP2X+wjPMIQAy+r1MBXSXtg= github.com/weppos/publicsuffix-go v0.13.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= github.com/weppos/publicsuffix-go v0.30.2-0.20230730094716-a20f9abcc222/go.mod h1:s41lQh6dIsDWIC1OWh7ChWJXLH0zkJ9KHZVqA7vHyuQ= github.com/weppos/publicsuffix-go v0.30.3-0.20240510084413-5f1d03393b3d h1:q80YKUcDWRNvvQcziH63e3ammTWARwrhohBCunHaYAg= @@ -509,7 +515,6 @@ github.com/ykadowak/zerologlint v0.1.5/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2 github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zmap/rc2 v0.0.0-20131011165748-24b9757f5521/go.mod h1:3YZ9o3WnatTIZhuOtot4IcUfzoKVjUHqu6WALIyI0nE= @@ -529,8 +534,8 @@ go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= go-simpler.org/musttag v0.14.0 h1:XGySZATqQYSEV3/YTy+iX+aofbZZllJaqwFWs+RTtSo= go-simpler.org/musttag v0.14.0/go.mod h1:uP8EymctQjJ4Z1kUnjX0u2l60WfUdQxCwSNKzE1JEOE= -go-simpler.org/sloglint v0.11.1 h1:xRbPepLT/MHPTCA6TS/wNfZrDzkGvCCqUv4Bdwc3H7s= -go-simpler.org/sloglint v0.11.1/go.mod h1:2PowwiCOK8mjiF+0KGifVOT8ZsCNiFzvfyJeJOIt8MQ= +go-simpler.org/sloglint v0.12.0 h1:UzWDlLWNE5FLqsvyq3tWYHuQMbqrervOhT8qPl4Mmw4= +go-simpler.org/sloglint v0.12.0/go.mod h1:jBjjC2bm8rYrs88oTRlFX497kWjJsyZWYoNaXkGRI6I= go.augendre.info/arangolint v0.4.0 h1:xSCZjRoS93nXazBSg5d0OGCi9APPLNMmmLrC995tR50= go.augendre.info/arangolint v0.4.0/go.mod h1:l+f/b4plABuFISuKnTGD4RioXiCCgghv2xqst/xOvAA= go.augendre.info/fatcontext v0.9.0 h1:Gt5jGD4Zcj8CDMVzjOJITlSb9cEch54hjRRlN3qDojE= @@ -560,8 +565,6 @@ golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= -golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= @@ -576,12 +579,9 @@ golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358/go.mod h1:4Mzdyp/ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -593,15 +593,12 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= -golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= @@ -614,8 +611,6 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -627,9 +622,7 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -641,8 +634,6 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -657,8 +648,6 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= -golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= @@ -674,7 +663,6 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= @@ -685,12 +673,9 @@ golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWc golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= diff --git a/tools/rw-heatmaps/go.sum b/tools/rw-heatmaps/go.sum index 8cec6774338a..798999f3b79a 100644 --- a/tools/rw-heatmaps/go.sum +++ b/tools/rw-heatmaps/go.sum @@ -63,8 +63,8 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= gonum.org/v1/plot v0.15.2 h1:Tlfh/jBk2tqjLZ4/P8ZIwGrLEWQSPDLRm/SNWKNXiGI= gonum.org/v1/plot v0.15.2/go.mod h1:DX+x+DWso3LTha+AdkJEv5Txvi+Tql3KAGkehP0/Ubg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From f91afe68c88463a114ce464a4b170d35e06f9e4a Mon Sep 17 00:00:00 2001 From: Nont <9658731+nwnt@users.noreply.github.com> Date: Sat, 30 May 2026 10:29:46 -0500 Subject: [PATCH 1047/1068] Refactor TestIndexRange The test now uses named fields. Signed-off-by: Nont <9658731+nwnt@users.noreply.github.com> --- server/storage/mvcc/index_test.go | 88 ++++++++++++++++++++++--------- 1 file changed, 62 insertions(+), 26 deletions(-) diff --git a/server/storage/mvcc/index_test.go b/server/storage/mvcc/index_test.go index de01c66683f7..f85d49bf60f4 100644 --- a/server/storage/mvcc/index_test.go +++ b/server/storage/mvcc/index_test.go @@ -73,51 +73,87 @@ func TestIndexRange(t *testing.T) { atRev := int64(3) tests := []struct { - key, end []byte - wkeys [][]byte - wrevs []Revision + name string + rangeStart, rangeEnd []byte + expectKeys [][]byte + expectRevisions []Revision + expectTotalCount int }{ - // single key that not found { - []byte("bar"), nil, nil, nil, + name: "single key that not found", + rangeStart: []byte("bar"), + rangeEnd: nil, + expectKeys: nil, + expectRevisions: nil, + expectTotalCount: 0, }, - // single key that found { - []byte("foo"), nil, allKeys[:1], allRevs[:1], + name: "single key that found", + rangeStart: []byte("foo"), + rangeEnd: nil, + expectKeys: allKeys[:1], + expectRevisions: allRevs[:1], + expectTotalCount: 1, }, - // range keys, return first member { - []byte("foo"), []byte("foo1"), allKeys[:1], allRevs[:1], + name: "range keys, return first member", + rangeStart: []byte("foo"), + rangeEnd: []byte("foo1"), + expectKeys: allKeys[:1], + expectRevisions: allRevs[:1], + expectTotalCount: 1, }, - // range keys, return first two members { - []byte("foo"), []byte("foo2"), allKeys[:2], allRevs[:2], + name: "range keys, return first two members", + rangeStart: []byte("foo"), + rangeEnd: []byte("foo2"), + expectKeys: allKeys[:2], + expectRevisions: allRevs[:2], + expectTotalCount: 2, }, - // range keys, return all members { - []byte("foo"), []byte("fop"), allKeys, allRevs, + name: "range keys, return all members", + rangeStart: []byte("foo"), + rangeEnd: []byte("fop"), + expectKeys: allKeys, + expectRevisions: allRevs, + expectTotalCount: 3, }, - // range keys, return last two members { - []byte("foo1"), []byte("fop"), allKeys[1:], allRevs[1:], + name: "range keys, return last two members", + rangeStart: []byte("foo1"), + rangeEnd: []byte("fop"), + expectKeys: allKeys[1:], + expectRevisions: allRevs[1:], + expectTotalCount: 2, }, - // range keys, return last member { - []byte("foo2"), []byte("fop"), allKeys[2:], allRevs[2:], + name: "range keys, return last member", + rangeStart: []byte("foo2"), + rangeEnd: []byte("fop"), + expectKeys: allKeys[2:], + expectRevisions: allRevs[2:], + expectTotalCount: 1, }, - // range keys, return nothing { - []byte("foo3"), []byte("fop"), nil, nil, + name: "range keys, return nothing", + rangeStart: []byte("foo3"), + rangeEnd: []byte("fop"), + expectKeys: nil, + expectRevisions: nil, + expectTotalCount: 0, }, } for i, tt := range tests { - keys, revs, _, _ := ti.Range(tt.key, tt.end, atRev) - if !reflect.DeepEqual(keys, tt.wkeys) { - t.Errorf("#%d: keys = %+v, want %+v", i, keys, tt.wkeys) - } - if !reflect.DeepEqual(revs, tt.wrevs) { - t.Errorf("#%d: revs = %+v, want %+v", i, revs, tt.wrevs) - } + t.Run(tt.name, func(t *testing.T) { + keys, revs, _, _ := ti.Range(tt.rangeStart, tt.rangeEnd, atRev) + if !reflect.DeepEqual(keys, tt.expectKeys) { + t.Errorf("#%d: keys = %+v, want %+v", i, keys, tt.expectKeys) + } + if !reflect.DeepEqual(revs, tt.expectRevisions) { + t.Errorf("#%d: revs = %+v, want %+v", i, revs, tt.expectRevisions) + } + }) } } From 49da69ec0b5c679127c64774d65390fbe45c1891 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 30 May 2026 18:46:41 +0200 Subject: [PATCH 1048/1068] tests: fix data race on client watch operations Signed-off-by: Marek Siarkowicz --- tests/robustness/client/client.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/robustness/client/client.go b/tests/robustness/client/client.go index f70d24a4b6d9..e4399f53d33e 100644 --- a/tests/robustness/client/client.go +++ b/tests/robustness/client/client.go @@ -42,6 +42,7 @@ type RecordingClient struct { watchMux sync.Mutex watchOperations []model.WatchOperation + wg sync.WaitGroup // mux ensures order of request appending. kvMux sync.Mutex kvOperations *model.AppendableHistory @@ -73,7 +74,9 @@ func NewRecordingClient(endpoints []string, ids identity.Provider, baseTime time } func (c *RecordingClient) Close() error { - return c.client.Close() + err := c.client.Close() + c.wg.Wait() + return err } func (c *RecordingClient) Report() report.ClientReport { @@ -349,7 +352,9 @@ func (c *RecordingClient) watch(ctx context.Context, request model.WatchRequest) index := len(c.watchOperations) - 1 c.watchMux.Unlock() + c.wg.Add(1) go func() { + defer c.wg.Done() defer close(respCh) for r := range c.client.Watch(ctx, request.Key, ops...) { responses = append(responses, ToWatchResponse(r, c.baseTime)) @@ -360,6 +365,8 @@ func (c *RecordingClient) watch(ctx context.Context, request model.WatchRequest) case respCh <- r: case <-ctx.Done(): return + case <-c.client.Ctx().Done(): + return } } }() From fbf6f12c221e4b37dc866bd53c10d4460e9d9c2a Mon Sep 17 00:00:00 2001 From: ArkaSaha30 Date: Wed, 20 May 2026 23:14:18 +0530 Subject: [PATCH 1049/1068] fix golangci-lint path, genproto, go.work.sum Signed-off-by: ArkaSaha30 --- api/etcdserverpb/rpc_grpc.pb.go | 2 +- api/go.mod | 2 - client/v3/leasing/util_test.go | 2 +- etcdutl/go.mod | 6 +-- etcdutl/go.sum | 33 ++++++++++----- go.mod | 7 ++-- go.sum | 40 ++++++++++--------- go.work.sum | 19 --------- scripts/test.sh | 3 ++ scripts/verify_golangci-lint_version.sh | 2 +- .../v3electionpb/v3election_grpc.pb.go | 2 +- .../api/v3lock/v3lockpb/v3lock_grpc.pb.go | 2 +- server/go.mod | 6 +-- server/go.sum | 33 ++++++++++----- tests/go.mod | 6 +-- tests/go.sum | 33 ++++++++++----- tools/testgrid-analysis/go.mod | 2 - 17 files changed, 108 insertions(+), 92 deletions(-) diff --git a/api/etcdserverpb/rpc_grpc.pb.go b/api/etcdserverpb/rpc_grpc.pb.go index fb11d78c6f43..843632e19111 100644 --- a/api/etcdserverpb/rpc_grpc.pb.go +++ b/api/etcdserverpb/rpc_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.6.1 +// - protoc-gen-go-grpc v1.6.2 // - protoc v3.20.3 // source: rpc.proto diff --git a/api/go.mod b/api/go.mod index ea3aa5389536..fd1a57f10a5d 100644 --- a/api/go.mod +++ b/api/go.mod @@ -19,8 +19,6 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - go.opentelemetry.io/otel v1.43.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect golang.org/x/net v0.54.0 // indirect golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect diff --git a/client/v3/leasing/util_test.go b/client/v3/leasing/util_test.go index 565d37ea92bc..110ae505c4f8 100644 --- a/client/v3/leasing/util_test.go +++ b/client/v3/leasing/util_test.go @@ -155,7 +155,7 @@ func TestCopyKeyValue(t *testing.T) { func countProtobufFields(v any) int { t := reflect.TypeOf(v) - if t.Kind() == reflect.Ptr { + if t.Kind() == reflect.Pointer { t = t.Elem() } if t.Kind() != reflect.Struct { diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 9f300783c42c..e9769e40908d 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -45,7 +45,7 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/gorilla/websocket v1.5.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect @@ -66,8 +66,8 @@ require ( github.com/sirupsen/logrus v1.9.4 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/spf13/pflag v1.0.10 // indirect - github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect - github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect + github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 // indirect + github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 // indirect go.opentelemetry.io/otel v1.43.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 243f7f2dc23a..5a66b92d0650 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -15,6 +15,8 @@ github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03V github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= @@ -34,8 +36,9 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= @@ -70,6 +73,7 @@ github.com/olekukonko/ll v0.1.6 h1:lGVTHO+Qc4Qm+fce/2h2m5y9LvqaW+DCN7xW9hsU3uA= github.com/olekukonko/ll v0.1.6/go.mod h1:NVUmjBb/aCtUpjKk75BhWrOlARz3dqsM+OtszpY4o88= github.com/olekukonko/tablewriter v1.1.4 h1:ORUMI3dXbMnRlRggJX3+q7OzQFDdvgbN9nVWj1drm6I= github.com/olekukonko/tablewriter v1.1.4/go.mod h1:+kedxuyTtgoZLwif3P1Em4hARJs+mVnzKxmsCL/C5RY= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= @@ -83,6 +87,7 @@ github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlT github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= @@ -92,12 +97,15 @@ github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiT github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= +github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= +github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= go.etcd.io/bbolt v1.5.0-rc.0 h1:eep+LDTa+VGJ6mmNMe0wWB8OdLUHnyuvvSimdJsWtAE= go.etcd.io/bbolt v1.5.0-rc.0/go.mod h1:HXpeuv7FrPaEH3z9FzbnSXSntD27WQyEMjQNJbd+vd8= go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= @@ -136,25 +144,27 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= @@ -175,6 +185,7 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= diff --git a/go.mod b/go.mod index 1570a01881a3..705a51eda771 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,6 @@ require ( go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 golang.org/x/tools v0.45.0 - golang.org/x/tools v0.45.0 google.golang.org/grpc v1.81.0 google.golang.org/protobuf v1.36.11 ) @@ -57,7 +56,7 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/golang-jwt/jwt/v5 v5.3.1 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/gorilla/websocket v1.5.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect @@ -79,8 +78,8 @@ require ( github.com/sirupsen/logrus v1.9.4 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/spf13/pflag v1.0.10 // indirect - github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect - github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect + github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 // indirect + github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 // indirect go.etcd.io/gofail v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 // indirect diff --git a/go.sum b/go.sum index 785e222d9f05..50671c978bd0 100644 --- a/go.sum +++ b/go.sum @@ -21,6 +21,8 @@ github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03V github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= @@ -40,8 +42,9 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= @@ -76,6 +79,7 @@ github.com/olekukonko/ll v0.1.6 h1:lGVTHO+Qc4Qm+fce/2h2m5y9LvqaW+DCN7xW9hsU3uA= github.com/olekukonko/ll v0.1.6/go.mod h1:NVUmjBb/aCtUpjKk75BhWrOlARz3dqsM+OtszpY4o88= github.com/olekukonko/tablewriter v1.1.4 h1:ORUMI3dXbMnRlRggJX3+q7OzQFDdvgbN9nVWj1drm6I= github.com/olekukonko/tablewriter v1.1.4/go.mod h1:+kedxuyTtgoZLwif3P1Em4hARJs+mVnzKxmsCL/C5RY= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= @@ -89,6 +93,7 @@ github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlT github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= @@ -98,12 +103,15 @@ github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiT github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= +github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= +github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= go.etcd.io/bbolt v1.5.0-rc.0 h1:eep+LDTa+VGJ6mmNMe0wWB8OdLUHnyuvvSimdJsWtAE= go.etcd.io/bbolt v1.5.0-rc.0/go.mod h1:HXpeuv7FrPaEH3z9FzbnSXSntD27WQyEMjQNJbd+vd8= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= @@ -144,41 +152,36 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= @@ -194,6 +197,7 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= diff --git a/go.work.sum b/go.work.sum index f3435d1b592f..48cf8a42b251 100644 --- a/go.work.sum +++ b/go.work.sum @@ -300,7 +300,6 @@ github.com/google/cel-go v0.25.0 h1:jsFw9Fhn+3y2kBbltZR4VEz5xKkcIFRPDnuEzAGv5GY= github.com/google/cel-go v0.25.0/go.mod h1:hjEb6r5SuOSlhCHmFoLzu8HGCERvIsDAbxDAyNU/MmI= github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v50 v50.2.0 h1:j2FyongEHlO9nxXLc+LP3wuBSVU9mVxfpdYUexMpIfk= github.com/google/go-pkcs11 v0.2.0 h1:5meDPB26aJ98f+K9G21f0AqZwo/S5BJMJh8nuhMbdsI= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= @@ -321,8 +320,6 @@ github.com/gookit/color v1.6.0 h1:JjJXBTk1ETNyqyilJhkTXJYYigHG24TM9Xa2M1xAhRA= github.com/gookit/color v1.6.0/go.mod h1:9ACFc7/1IpHGBW8RwuDm/0YEnhg3dwwXpoMsmtyHfjs= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= -github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= @@ -430,7 +427,6 @@ github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= github.com/shirou/gopsutil/v4 v4.26.4 h1:B4SXVbcwTyrocPHEmWBC4uCYr4Xcu3MK1TXqbprAOWY= github.com/shirou/gopsutil/v4 v4.26.4/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -438,7 +434,6 @@ github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMps github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs= github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -451,8 +446,6 @@ github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYI github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= -github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= -github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/transparency-dev/merkle v0.0.2 h1:Q9nBoQcZcgPamMkGn7ghV8XiTZ/kRxn1yCG81+twTK4= @@ -467,8 +460,6 @@ github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/ github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= -github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= -github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= @@ -493,20 +484,10 @@ golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c h1:jTMrjjZRcSH/BDxWhXC golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= -golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= -golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/perf v0.0.0-20250813145418-2f7363a06fe1 h1:stGRioFgvBd3x8HoGVg9bb41lLTWLjBMFT/dMB7f4mQ= golang.org/x/perf v0.0.0-20250813145418-2f7363a06fe1/go.mod h1:rjfRjhHXb3XNVh/9i5Jr2tXoTd0vOlZN5rzsM8cQE6k= -golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= -golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200317205521-2944c61d58b4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= -golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= gonum.org/v1/tools v0.0.0-20200318103217-c168b003ce8c h1:cJWOvXtcaFSGXz2F4z2AMM0VV7edDDGrxb5GLQH7ayQ= diff --git a/scripts/test.sh b/scripts/test.sh index 1364ade2118b..dcc151de5280 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -63,6 +63,9 @@ export ETCD_VERIFY=all source ./scripts/test_lib.sh source ./scripts/build_lib.sh +GOPATH_BIN=$(go env GOPATH)/bin +export PATH="${GOPATH_BIN}:${PATH}" + OUTPUT_FILE=${OUTPUT_FILE:-""} if [ -n "${OUTPUT_FILE}" ]; then diff --git a/scripts/verify_golangci-lint_version.sh b/scripts/verify_golangci-lint_version.sh index 1c4956c05eb3..dba0afc53eba 100755 --- a/scripts/verify_golangci-lint_version.sh +++ b/scripts/verify_golangci-lint_version.sh @@ -15,7 +15,7 @@ function install_golangci_lint() { echo "Installing golangci-lint ${GOLANGCI_LINT_VERSION}" - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b "$(go env GOPATH)/bin" "${GOLANGCI_LINT_VERSION}" + (cd tools/mod && GOFLAGS="" GOBIN="$(go env GOPATH)/bin" go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint) } GOLANGCI_LINT_VERSION=$(cd tools/mod && go list -m -f '{{.Version}}' github.com/golangci/golangci-lint/v2) diff --git a/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go b/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go index 655a2cac44dd..72d3da7f4879 100644 --- a/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go +++ b/server/etcdserver/api/v3election/v3electionpb/v3election_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.6.1 +// - protoc-gen-go-grpc v1.6.2 // - protoc v3.20.3 // source: v3election.proto diff --git a/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go b/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go index 38b789577bf9..466d8e0de73a 100644 --- a/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go +++ b/server/etcdserver/api/v3lock/v3lockpb/v3lock_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.6.1 +// - protoc-gen-go-grpc v1.6.2 // - protoc v3.20.3 // source: v3lock.proto diff --git a/server/go.mod b/server/go.mod index 66f5abcf451b..f0e38efbe41d 100644 --- a/server/go.mod +++ b/server/go.mod @@ -20,8 +20,8 @@ require ( github.com/soheilhy/cmux v0.1.5 github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 - github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 - github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 + github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 + github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 go.etcd.io/bbolt v1.5.0-rc.0 go.etcd.io/etcd/api/v3 v3.7.0-beta.0 go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 @@ -53,7 +53,7 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/gorilla/websocket v1.5.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect diff --git a/server/go.sum b/server/go.sum index 57fa83375e13..64d1601a615b 100644 --- a/server/go.sum +++ b/server/go.sum @@ -11,6 +11,8 @@ github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03V github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= @@ -28,8 +30,9 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= @@ -50,6 +53,7 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= @@ -63,6 +67,7 @@ github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlT github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= @@ -72,12 +77,15 @@ github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiT github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= +github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= +github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= go.etcd.io/bbolt v1.5.0-rc.0 h1:eep+LDTa+VGJ6mmNMe0wWB8OdLUHnyuvvSimdJsWtAE= go.etcd.io/bbolt v1.5.0-rc.0/go.mod h1:HXpeuv7FrPaEH3z9FzbnSXSntD27WQyEMjQNJbd+vd8= go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= @@ -116,24 +124,26 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= @@ -154,6 +164,7 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= k8s.io/utils v0.0.0-20260108192941-914a6e750570 h1:JT4W8lsdrGENg9W+YwwdLJxklIuKWdRm+BC+xt33FOY= diff --git a/tests/go.mod b/tests/go.mod index 4582244aaa5f..9717f70615d2 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -70,7 +70,7 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/gorilla/websocket v1.5.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect @@ -86,8 +86,8 @@ require ( github.com/sirupsen/logrus v1.9.4 // indirect github.com/spf13/cobra v1.10.2 // indirect github.com/spf13/pflag v1.0.10 // indirect - github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect - github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect + github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 // indirect + github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 8ed3f17f42de..2e11114be0d5 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -27,6 +27,8 @@ github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7 github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= @@ -46,8 +48,9 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= @@ -82,6 +85,7 @@ github.com/olekukonko/ll v0.1.6 h1:lGVTHO+Qc4Qm+fce/2h2m5y9LvqaW+DCN7xW9hsU3uA= github.com/olekukonko/ll v0.1.6/go.mod h1:NVUmjBb/aCtUpjKk75BhWrOlARz3dqsM+OtszpY4o88= github.com/olekukonko/tablewriter v1.1.4 h1:ORUMI3dXbMnRlRggJX3+q7OzQFDdvgbN9nVWj1drm6I= github.com/olekukonko/tablewriter v1.1.4/go.mod h1:+kedxuyTtgoZLwif3P1Em4hARJs+mVnzKxmsCL/C5RY= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= @@ -95,6 +99,7 @@ github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlT github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= @@ -104,12 +109,15 @@ github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiT github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= +github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= +github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= go.etcd.io/bbolt v1.5.0-rc.0 h1:eep+LDTa+VGJ6mmNMe0wWB8OdLUHnyuvvSimdJsWtAE= go.etcd.io/bbolt v1.5.0-rc.0/go.mod h1:HXpeuv7FrPaEH3z9FzbnSXSntD27WQyEMjQNJbd+vd8= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= @@ -150,25 +158,27 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= @@ -189,6 +199,7 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= k8s.io/utils v0.0.0-20260108192941-914a6e750570 h1:JT4W8lsdrGENg9W+YwwdLJxklIuKWdRm+BC+xt33FOY= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index dc3f3c6bd93e..159caccc541b 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -15,8 +15,6 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.10 // indirect - go.opentelemetry.io/otel v1.43.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect golang.org/x/net v0.54.0 // indirect golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect From cae3ac0187a57c936d2d5cb2425f5ffbdfa979b1 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sat, 30 May 2026 18:46:45 +0200 Subject: [PATCH 1050/1068] tests: add unit test reproducing watch client data race Signed-off-by: Marek Siarkowicz --- tests/robustness/client/client_test.go | 83 ++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 tests/robustness/client/client_test.go diff --git a/tests/robustness/client/client_test.go b/tests/robustness/client/client_test.go new file mode 100644 index 000000000000..59db1cfd8032 --- /dev/null +++ b/tests/robustness/client/client_test.go @@ -0,0 +1,83 @@ +// Copyright 2026 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package client + +import ( + "context" + "testing" + "time" + + "go.etcd.io/etcd/api/v3/etcdserverpb" + clientv3 "go.etcd.io/etcd/client/v3" + "go.etcd.io/etcd/tests/v3/robustness/identity" + "go.etcd.io/etcd/tests/v3/robustness/model" +) + +type mockWatcher struct { + ch chan clientv3.WatchResponse +} + +func (m *mockWatcher) Watch(ctx context.Context, key string, opts ...clientv3.OpOption) clientv3.WatchChan { + return m.ch +} + +func (m *mockWatcher) RequestProgress(ctx context.Context) error { + return nil +} + +func (m *mockWatcher) Close() error { + return nil +} + +func TestRecordingClientWatchRace(t *testing.T) { + baseTime := time.Now() + ids := identity.NewIDProvider() + + watchChan := make(chan clientv3.WatchResponse, 10) + watcher := &mockWatcher{ch: watchChan} + + cc := clientv3.NewCtxClient(context.Background()) + cc.Watcher = watcher + + c := &RecordingClient{ + ID: 1, + client: cc, + kvOperations: model.NewAppendableHistory(ids), + baseTime: baseTime, + } + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + request := model.WatchRequest{Key: "foo"} + _ = c.watch(ctx, request) + + go func() { + time.Sleep(2 * time.Millisecond) + watchChan <- clientv3.WatchResponse{ + Header: &etcdserverpb.ResponseHeader{Revision: 2}, + } + time.Sleep(2 * time.Millisecond) + cancel() + close(watchChan) + }() + + c.Close() + + report := c.Report() + for _, op := range report.Watch { + _ = op.Responses + } +} From 78950d357968616ce759bd816d3ca3b0b501829c Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 27 May 2026 14:46:56 -0700 Subject: [PATCH 1051/1068] Update run-govulncheck to use Go workspace function Signed-off-by: Ivan Valdes --- scripts/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test.sh b/scripts/test.sh index b1c40a1259f1..5086875bf578 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -389,7 +389,7 @@ function markdown_marker_pass { function govuln_pass { run go install golang.org/x/vuln/cmd/govulncheck@latest - run_for_modules run govulncheck -show verbose + run_for_all_workspace_modules run govulncheck -show verbose } function lint_pass { From fbad295ee6b823ff65838c9cdee0ab30a3a0ff6f Mon Sep 17 00:00:00 2001 From: Nont <9658731+nwnt@users.noreply.github.com> Date: Fri, 29 May 2026 23:51:59 -0500 Subject: [PATCH 1052/1068] Add support with limit and withTotalCount for fastKeysOnly Range Signed-off-by: Nont <9658731+nwnt@users.noreply.github.com> --- server/storage/mvcc/index.go | 25 ++++-- server/storage/mvcc/index_test.go | 123 +++++++++++++++++++++++++++- server/storage/mvcc/kvstore_test.go | 15 ++-- server/storage/mvcc/kvstore_txn.go | 9 +- 4 files changed, 150 insertions(+), 22 deletions(-) diff --git a/server/storage/mvcc/index.go b/server/storage/mvcc/index.go index 99e2d04923a8..15f6f944b031 100644 --- a/server/storage/mvcc/index.go +++ b/server/storage/mvcc/index.go @@ -23,7 +23,7 @@ import ( type index interface { Get(key []byte, atRev int64) (rev, created Revision, ver int64, err error) - Range(key, end []byte, atRev int64) (keys [][]byte, modifies, creates []Revision, versions []int64) + Range(key, end []byte, atRev int64, limit int, withTotalCount bool) (keys [][]byte, modifies, creates []Revision, versions []int64, totalCount int) Revisions(key, end []byte, atRev int64, limit int, withTotalCount bool) ([]Revision, int) CountRevisions(key, end []byte, atRev int64) int Put(key []byte, rev Revision) @@ -160,27 +160,34 @@ func (ti *treeIndex) CountRevisions(key, end []byte, atRev int64) int { return total } -func (ti *treeIndex) Range(key, end []byte, atRev int64) (keys [][]byte, modifies, creates []Revision, versions []int64) { +func (ti *treeIndex) Range(key, end []byte, atRev int64, limit int, withTotalCount bool) (keys [][]byte, modifies, creates []Revision, versions []int64, totalCount int) { ti.RLock() defer ti.RUnlock() if end == nil { modified, created, version, err := ti.unsafeGet(key, atRev) if err != nil { - return nil, nil, nil, nil + return nil, nil, nil, nil, 0 } - return [][]byte{key}, []Revision{modified}, []Revision{created}, []int64{version} + return [][]byte{key}, []Revision{modified}, []Revision{created}, []int64{version}, 1 } ti.unsafeVisit(key, end, func(ki *keyIndex) bool { + reachedLimit := limit > 0 && len(keys) >= limit + if reachedLimit && !withTotalCount { + return false + } if modified, created, version, err := ki.get(ti.lg, atRev); err == nil { - modifies = append(modifies, modified) - keys = append(keys, ki.key) - creates = append(creates, created) - versions = append(versions, version) + if !reachedLimit { + modifies = append(modifies, modified) + keys = append(keys, ki.key) + creates = append(creates, created) + versions = append(versions, version) + } + totalCount++ } return true }) - return keys, modifies, creates, versions + return keys, modifies, creates, versions, totalCount } func (ti *treeIndex) Tombstone(key []byte, rev Revision) error { diff --git a/server/storage/mvcc/index_test.go b/server/storage/mvcc/index_test.go index f85d49bf60f4..7a093c911e6e 100644 --- a/server/storage/mvcc/index_test.go +++ b/server/storage/mvcc/index_test.go @@ -75,6 +75,8 @@ func TestIndexRange(t *testing.T) { tests := []struct { name string rangeStart, rangeEnd []byte + rangeLimit int + withTotalCount bool expectKeys [][]byte expectRevisions []Revision expectTotalCount int @@ -86,6 +88,8 @@ func TestIndexRange(t *testing.T) { expectKeys: nil, expectRevisions: nil, expectTotalCount: 0, + rangeLimit: 0, + withTotalCount: false, }, { name: "single key that found", @@ -94,6 +98,8 @@ func TestIndexRange(t *testing.T) { expectKeys: allKeys[:1], expectRevisions: allRevs[:1], expectTotalCount: 1, + rangeLimit: 0, + withTotalCount: false, }, { name: "range keys, return first member", @@ -102,6 +108,8 @@ func TestIndexRange(t *testing.T) { expectKeys: allKeys[:1], expectRevisions: allRevs[:1], expectTotalCount: 1, + rangeLimit: 0, + withTotalCount: false, }, { name: "range keys, return first two members", @@ -110,6 +118,8 @@ func TestIndexRange(t *testing.T) { expectKeys: allKeys[:2], expectRevisions: allRevs[:2], expectTotalCount: 2, + rangeLimit: 0, + withTotalCount: false, }, { name: "range keys, return all members", @@ -118,6 +128,108 @@ func TestIndexRange(t *testing.T) { expectKeys: allKeys, expectRevisions: allRevs, expectTotalCount: 3, + rangeLimit: 0, + withTotalCount: false, + }, + { + name: "range keys limiting to one result without total count, return the first member", + rangeStart: []byte("foo"), + rangeEnd: []byte("fop"), + expectKeys: allKeys[:1], + expectRevisions: allRevs[:1], + expectTotalCount: 1, + rangeLimit: 1, + withTotalCount: false, + }, + { + name: "range keys with limit equal the index size without total count, return all members", + rangeStart: []byte("foo"), + rangeEnd: []byte("fop"), + expectKeys: allKeys, + expectRevisions: allRevs, + expectTotalCount: 3, + rangeLimit: 3, + withTotalCount: false, + }, + { + name: "range keys with over limit, without total count, return all members", + rangeStart: []byte("foo"), + rangeEnd: []byte("fop"), + expectKeys: allKeys, + expectRevisions: allRevs, + expectTotalCount: 3, + rangeLimit: 4, + withTotalCount: false, + }, + { + name: "range keys limiting to one result with total count, return the first member and all total count", + rangeStart: []byte("foo"), + rangeEnd: []byte("fop"), + expectKeys: allKeys[:1], + expectRevisions: allRevs[:1], + expectTotalCount: 3, + rangeLimit: 1, + withTotalCount: true, + }, + { + name: "range keys with limit on non-existent keys, return nothing", + rangeStart: []byte("fo"), + rangeEnd: []byte("foo"), + expectKeys: nil, + expectRevisions: nil, + expectTotalCount: 0, + rangeLimit: 3, + withTotalCount: true, + }, + { + name: "range keys with more limit than the one key found, returning the key", + rangeStart: []byte("foo"), + rangeEnd: []byte("foo1"), + expectKeys: allKeys[:1], + expectRevisions: allRevs[:1], + expectTotalCount: 1, + rangeLimit: 3, + withTotalCount: true, + }, + { + name: "range of 1 keys with 1 limit and total count, returning 1 key with 1 count", + rangeStart: []byte("foo"), + rangeEnd: []byte("foo1"), + expectKeys: allKeys[:1], + expectRevisions: allRevs[:1], + expectTotalCount: 1, + rangeLimit: 1, + withTotalCount: true, + }, + { + name: "range of 3 keys with 1 limit and total count, returning 1 key with 3 count", + rangeStart: []byte("foo"), + rangeEnd: []byte("foo3"), + expectKeys: allKeys[:1], + expectRevisions: allRevs[:1], + expectTotalCount: 3, + rangeLimit: 1, + withTotalCount: true, + }, + { + name: "range of 2 keys not starting from the beginning with 1 limit and total count, returning 1 key with 2 count", + rangeStart: []byte("foo1"), + rangeEnd: []byte("foo3"), + expectKeys: allKeys[1:2], + expectRevisions: allRevs[1:2], + expectTotalCount: 2, + rangeLimit: 1, + withTotalCount: true, + }, + { + name: "range of all keys with equal-sized limit and total count, returning all keys with the same count", + rangeStart: []byte("foo"), + rangeEnd: []byte("fop"), + expectKeys: allKeys, + expectRevisions: allRevs, + expectTotalCount: 3, + rangeLimit: 3, + withTotalCount: true, }, { name: "range keys, return last two members", @@ -126,6 +238,8 @@ func TestIndexRange(t *testing.T) { expectKeys: allKeys[1:], expectRevisions: allRevs[1:], expectTotalCount: 2, + rangeLimit: 0, + withTotalCount: false, }, { name: "range keys, return last member", @@ -134,6 +248,8 @@ func TestIndexRange(t *testing.T) { expectKeys: allKeys[2:], expectRevisions: allRevs[2:], expectTotalCount: 1, + rangeLimit: 0, + withTotalCount: false, }, { name: "range keys, return nothing", @@ -142,17 +258,22 @@ func TestIndexRange(t *testing.T) { expectKeys: nil, expectRevisions: nil, expectTotalCount: 0, + rangeLimit: 0, + withTotalCount: false, }, } for i, tt := range tests { t.Run(tt.name, func(t *testing.T) { - keys, revs, _, _ := ti.Range(tt.rangeStart, tt.rangeEnd, atRev) + keys, revs, _, _, total := ti.Range(tt.rangeStart, tt.rangeEnd, atRev, tt.rangeLimit, tt.withTotalCount) if !reflect.DeepEqual(keys, tt.expectKeys) { t.Errorf("#%d: keys = %+v, want %+v", i, keys, tt.expectKeys) } if !reflect.DeepEqual(revs, tt.expectRevisions) { t.Errorf("#%d: revs = %+v, want %+v", i, revs, tt.expectRevisions) } + if total != tt.expectTotalCount { + t.Errorf("#%d: total = %+d, want %+d", i, total, tt.expectTotalCount) + } }) } } diff --git a/server/storage/mvcc/kvstore_test.go b/server/storage/mvcc/kvstore_test.go index 57854358f590..8c2255f2e23a 100644 --- a/server/storage/mvcc/kvstore_test.go +++ b/server/storage/mvcc/kvstore_test.go @@ -201,11 +201,11 @@ func TestStoreRange(t *testing.T) { r rangeResp }{ { - indexRangeResp{[][]byte{[]byte("foo")}, []Revision{{Main: 2}}, []Revision{{Main: 1}}, []int64{1}}, + indexRangeResp{[][]byte{[]byte("foo")}, []Revision{{Main: 2}}, []Revision{{Main: 1}}, []int64{1}, 1}, rangeResp{[][]byte{key}, [][]byte{kvb}}, }, { - indexRangeResp{[][]byte{[]byte("foo"), []byte("foo1")}, []Revision{{Main: 2}, {Main: 3}}, []Revision{{Main: 2}, {Main: 3}}, []int64{1, 1}}, + indexRangeResp{[][]byte{[]byte("foo"), []byte("foo1")}, []Revision{{Main: 2}, {Main: 3}}, []Revision{{Main: 2}, {Main: 3}}, []int64{1, 1}, 2}, rangeResp{[][]byte{key}, [][]byte{kvb}}, }, } @@ -280,7 +280,7 @@ func TestStoreDeleteRange(t *testing.T) { }{ { Revision{Main: 2}, - indexRangeResp{[][]byte{[]byte("foo")}, []Revision{{Main: 2}}, []Revision{{Main: 2}}, []int64{1}}, + indexRangeResp{[][]byte{[]byte("foo")}, []Revision{{Main: 2}}, []Revision{{Main: 2}}, []int64{1}, 1}, rangeResp{[][]byte{key}, [][]byte{kvb}}, newTestBucketKeyBytes(newBucketKey(3, 0, true)), @@ -1018,6 +1018,7 @@ type indexRangeResp struct { revs []Revision creates []Revision versions []int64 + total int } type indexRangeEventsResp struct { @@ -1033,7 +1034,7 @@ type fakeIndex struct { } func (i *fakeIndex) Revisions(key, end []byte, atRev int64, limit int, withTotalCount bool) ([]Revision, int) { - _, rev, _, _ := i.Range(key, end, atRev) + _, rev, _, _, _ := i.Range(key, end, atRev, limit, withTotalCount) if len(rev) >= limit { rev = rev[:limit] } @@ -1041,7 +1042,7 @@ func (i *fakeIndex) Revisions(key, end []byte, atRev int64, limit int, withTotal } func (i *fakeIndex) CountRevisions(key, end []byte, atRev int64) int { - _, rev, _, _ := i.Range(key, end, atRev) + _, rev, _, _, _ := i.Range(key, end, atRev, 0, true) return len(rev) } @@ -1051,10 +1052,10 @@ func (i *fakeIndex) Get(key []byte, atRev int64) (rev, created Revision, ver int return r.rev, r.created, r.ver, r.err } -func (i *fakeIndex) Range(key, end []byte, atRev int64) (keys [][]byte, modifies, creates []Revision, versions []int64) { +func (i *fakeIndex) Range(key, end []byte, atRev int64, limit int, withTotalCount bool) (keys [][]byte, modifies, creates []Revision, versions []int64, total int) { i.Recorder.Record(testutil.Action{Name: "range", Params: []any{key, end, atRev}}) r := <-i.indexRangeRespc - return r.keys, r.revs, r.creates, r.versions + return r.keys, r.revs, r.creates, r.versions, r.total } func (i *fakeIndex) Put(key []byte, rev Revision) { diff --git a/server/storage/mvcc/kvstore_txn.go b/server/storage/mvcc/kvstore_txn.go index 7615aed084d9..f46c79766d7d 100644 --- a/server/storage/mvcc/kvstore_txn.go +++ b/server/storage/mvcc/kvstore_txn.go @@ -88,13 +88,12 @@ func (tr *storeTxnCommon) rangeKeys(ctx context.Context, key, end []byte, curRev } if ro.FastKeysOnly { - keys, modifies, creates, versions := tr.s.kvindex.Range(key, end, rev) + keys, modifies, creates, versions, total := tr.s.kvindex.Range(key, end, rev, int(ro.Limit), ro.WithTotalCount) tr.trace.Step("keys only range from in-memory index tree") if len(keys) == 0 { return &RangeResult{KVs: nil, Count: 0, Rev: curRev}, nil } - cappedKeysCount := sliceCapWithLimit(int(ro.Limit), keys) - kvs := make([]*mvccpb.KeyValue, cappedKeysCount) + kvs := make([]*mvccpb.KeyValue, len(keys)) for i := range len(kvs) { kvs[i] = &mvccpb.KeyValue{ Key: keys[i], @@ -103,7 +102,7 @@ func (tr *storeTxnCommon) rangeKeys(ctx context.Context, key, end []byte, curRev Version: versions[i], } } - return &RangeResult{KVs: kvs, Count: len(keys), Rev: curRev}, nil + return &RangeResult{KVs: kvs, Count: total, Rev: curRev}, nil } revpairs, total := tr.s.kvindex.Revisions(key, end, rev, int(ro.Limit), ro.WithTotalCount) @@ -296,7 +295,7 @@ func (tw *storeTxnWrite) deleteRange(key, end []byte) int64 { if len(tw.changes) > 0 { rrev++ } - keys, _, _, _ := tw.s.kvindex.Range(key, end, rrev) + keys, _, _, _, _ := tw.s.kvindex.Range(key, end, rrev, 0, false) if len(keys) == 0 { return 0 } From 648004afdb5351bc24325e13f48d26c931c96add Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 30 May 2026 17:15:29 +0200 Subject: [PATCH 1053/1068] robutsness: don't visualize history if there is any failure during linearization Signed-off-by: Chun-Hung Tseng Signed-off-by: Marek Siarkowicz --- .../test-template/robustness/finally/main.go | 9 ++---- tests/robustness/main_test.go | 3 +- tests/robustness/validate/operations.go | 25 ++++++++-------- tests/robustness/validate/operations_test.go | 8 ++--- tests/robustness/validate/result.go | 30 ++++++++++++++----- tests/robustness/validate/validate_test.go | 17 ++++++++++- 6 files changed, 59 insertions(+), 33 deletions(-) diff --git a/tests/antithesis/test-template/robustness/finally/main.go b/tests/antithesis/test-template/robustness/finally/main.go index 0f715fd0fc7d..e20b88a6f0d1 100644 --- a/tests/antithesis/test-template/robustness/finally/main.go +++ b/tests/antithesis/test-template/robustness/finally/main.go @@ -62,11 +62,7 @@ func validateReports(lg *zap.Logger, serversDataPath map[string]string, reports validateConfig := validate.Config{ExpectRevisionUnique: tf.ExpectUniqueRevision} result := validate.ValidateAndReturnVisualize(lg, validateConfig, reports, persistedRequests, 5*time.Minute) assertResult(result.Assumptions, "Validation assumptions fulfilled") - if result.Linearization.Timeout { - assert.Unreachable("Linearization timeout", nil) - } else { - assertResult(result.Linearization.Result, "Linearization validation passes") - } + assertResult(result.Linearization.Result, "Linearization validation passes") assertResult(result.Watch, "Watch validation passes") assertResult(result.Serializable, "Serializable validation passes") lg.Info("Completed robustness validation") @@ -77,8 +73,7 @@ func assertResult(result validate.Result, name string) { switch result.Status { case validate.Success, validate.Failure: assert.Always(result.Status == validate.Success, name, map[string]any{"msg": result.Message}) - case validate.Unknown: default: - assert.Unreachable(name, map[string]any{"msg": result.Message}) + assert.Unreachable(name, map[string]any{"error": result.Error().Error()}) } } diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index d18f77c079f4..3a55ab397290 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -113,10 +113,11 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s scenari t.Error(err) } result := validate.ValidateAndReturnVisualize(lg, validateConfig, clientReports, persistedRequests, 5*time.Minute) - r.SetVisualizer(result.Linearization.Visualize) err = result.Error() if err != nil { t.Error(err) + } else { + r.SetVisualizer(result.Linearization.Visualize) } panicked = false } diff --git a/tests/robustness/validate/operations.go b/tests/robustness/validate/operations.go index 3895c1befdd2..d86f60fff26b 100644 --- a/tests/robustness/validate/operations.go +++ b/tests/robustness/validate/operations.go @@ -16,6 +16,7 @@ package validate import ( "errors" + "fmt" "time" "github.com/anishathalye/porcupine" @@ -38,7 +39,9 @@ func validateLinearizableOperationsAndVisualize(lg *zap.Logger, keys []string, o var timer *time.Timer if timeout > 0 { - timer = time.AfterFunc(timeout, func() { + // Porcupine timeout is not always enforced (see https://github.com/anishathalye/porcupine/issues/44) + // Give it a small grace period before forcing the deadline from inside model execution. + timer = time.AfterFunc(timeout*11/10, func() { model.LinearizationDeadlineTripped.Store(1) }) } @@ -48,6 +51,7 @@ func validateLinearizableOperationsAndVisualize(lg *zap.Logger, keys []string, o if timer != nil { timer.Stop() } + duration := time.Since(start) result := LinearizationResult{ Info: info, @@ -55,29 +59,26 @@ func validateLinearizableOperationsAndVisualize(lg *zap.Logger, keys []string, o } if model.LinearizationDeadlineTripped.Load() != 0 { - result.Status = Failure - result.Message = "timed out" - result.Timeout = true - lg.Error("Linearization timed out", zap.Duration("duration", time.Since(start))) + result.Status = DeadlineExceeded + result.Message = "deadline exceeded" + lg.Error("Linearization deadline exceeded", zap.Duration("duration", duration)) return result } switch check { case porcupine.Ok: result.Status = Success - lg.Info("Linearization success", zap.Duration("duration", time.Since(start))) + lg.Info("Linearization success", zap.Duration("duration", duration)) case porcupine.Unknown: - result.Status = Failure - result.Message = "timed out" - result.Timeout = true - lg.Error("Linearization timed out", zap.Duration("duration", time.Since(start))) + result.Status = Timeout + lg.Error("Linearization timed out", zap.Duration("duration", duration)) case porcupine.Illegal: result.Status = Failure result.Message = "illegal" - lg.Error("Linearization illegal", zap.Duration("duration", time.Since(start))) + lg.Error("Linearization illegal", zap.Duration("duration", duration)) default: result.Status = Failure - result.Message = "unknown" + result.Message = fmt.Sprintf("unknown results from porcupine: %s", check) } return result } diff --git a/tests/robustness/validate/operations_test.go b/tests/robustness/validate/operations_test.go index 672e7af27c69..21f366769871 100644 --- a/tests/robustness/validate/operations_test.go +++ b/tests/robustness/validate/operations_test.go @@ -350,11 +350,11 @@ func TestValidateLinearizableOperationsTimeoutIsRespected(t *testing.T) { result := validateLinearizableOperationsAndVisualize(zap.NewNop(), keys, history, timeout) elapsed := time.Since(start) - if !result.Timeout { - t.Fatalf("validateLinearizableOperationsAndVisualize(...) timed out = false, message = %q", result.Message) + if result.Status != DeadlineExceeded { + t.Fatalf("validateLinearizableOperationsAndVisualize(...) status = %q, want %q", result.Status, DeadlineExceeded) } - if result.Message != "timed out" { - t.Fatalf("validateLinearizableOperationsAndVisualize(...) message = %q, want %q", result.Message, "timed out") + if result.Message != "deadline exceeded" { + t.Fatalf("validateLinearizableOperationsAndVisualize(...) message = %q, want %q", result.Message, "deadline exceeded") } if elapsed > timeout+250*time.Millisecond { t.Fatalf("validateLinearizableOperationsAndVisualize(...) does not respect timeout: %v, timeout was %v", elapsed, timeout) diff --git a/tests/robustness/validate/result.go b/tests/robustness/validate/result.go index 08bcb527de77..aac8d36a9bfe 100644 --- a/tests/robustness/validate/result.go +++ b/tests/robustness/validate/result.go @@ -40,6 +40,9 @@ var ( Unknown ResultStatus Success ResultStatus = "Success" Failure ResultStatus = "Failure" + Timeout ResultStatus = "Timeout" + // DeadlineExceeded is a workaround for Porcupine not always enforcing its timeout. It does not support visualization. + DeadlineExceeded ResultStatus = "DeadlineExceeded" ) func (r RobustnessResult) Error() error { @@ -71,25 +74,36 @@ func ResultFromError(err error) Result { } func (r Result) Error() error { - if r.Status == Failure { - if r.Message != "" { - return errors.New(r.Message) - } - return errors.New("failure") + switch r.Status { + case Success, Unknown: + return nil + default: + return errors.New(r.String()) } - return nil +} + +func (r Result) String() string { + if r.Message != "" { + return fmt.Sprintf("%s: %s", r.Status, r.Message) + } + return string(r.Status) } type LinearizationResult struct { Info porcupine.LinearizationInfo Model porcupine.Model Result - Timeout bool } func (r *LinearizationResult) Visualize(lg *zap.Logger, path string) error { + err := r.Error() + if err != nil { + lg.Info("Skipping linearization visualization", zap.Error(err)) + return nil + } + lg.Info("Saving visualization", zap.String("path", path)) - err := porcupine.VisualizePath(r.Model, r.Info, path) + err = porcupine.VisualizePath(r.Model, r.Info, path) if err != nil { return fmt.Errorf("failed to visualize, err: %w", err) } diff --git a/tests/robustness/validate/validate_test.go b/tests/robustness/validate/validate_test.go index 8b7c62153cd2..2842eb997363 100644 --- a/tests/robustness/validate/validate_test.go +++ b/tests/robustness/validate/validate_test.go @@ -169,7 +169,7 @@ func TestValidateAndReturnVisualize(t *testing.T) { }, }, persistedRequests: []model.EtcdRequest{putRequest("key", "value")}, - expectError: "watch: broke Reliable", + expectError: "watch: Failure: broke Reliable", }, } for _, tc := range tcs { @@ -188,6 +188,21 @@ func TestValidateAndReturnVisualize(t *testing.T) { } } +func TestLinearizationVisualizeSkipsDeadlineExceeded(t *testing.T) { + lg := zaptest.NewLogger(t) + path := filepath.Join(t.TempDir(), "history.html") + result := LinearizationResult{ + Result: Result{ + Status: DeadlineExceeded, + Message: "deadline exceeded", + }, + } + + require.NoError(t, result.Visualize(lg, path)) + _, err := os.Stat(path) + require.Truef(t, os.IsNotExist(err), "deadline exceeded should not produce visualization") +} + func watchEvent(rev int64, isCreate bool, eventType model.OperationType, key, value string) model.WatchEvent { return model.WatchEvent{PersistedEvent: model.PersistedEvent{Revision: rev, IsCreate: isCreate, Event: model.Event{Type: eventType, Key: key, Value: model.ToValueOrHash(value)}}} } From 74985c863603431768d5d3f39050d7d3794416b7 Mon Sep 17 00:00:00 2001 From: Nont <9658731+nwnt@users.noreply.github.com> Date: Sun, 31 May 2026 13:13:40 -0500 Subject: [PATCH 1054/1068] Refactor to make mvcc treeIndex.Revisions consistent with Range Signed-off-by: Nont <9658731+nwnt@users.noreply.github.com> --- server/storage/mvcc/index.go | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/server/storage/mvcc/index.go b/server/storage/mvcc/index.go index 99e2d04923a8..e2740115795d 100644 --- a/server/storage/mvcc/index.go +++ b/server/storage/mvcc/index.go @@ -109,7 +109,7 @@ func (ti *treeIndex) unsafeVisit(key, end []byte, f func(ki *keyIndex) bool) { // Revisions returns limited number of revisions from key(included) to end(excluded) // at the given rev. The returned slice is sorted in the order of key. There is no limit if limit <= 0. // The second return parameter isn't capped by the limit and reflects the total number of revisions. -func (ti *treeIndex) Revisions(key, end []byte, atRev int64, limit int, withTotalCount bool) (revs []Revision, total int) { +func (ti *treeIndex) Revisions(key, end []byte, atRev int64, limit int, withTotalCount bool) (revs []Revision, totalCount int) { ti.RLock() defer ti.RUnlock() @@ -121,20 +121,19 @@ func (ti *treeIndex) Revisions(key, end []byte, atRev int64, limit int, withTota return []Revision{rev}, 1 } ti.unsafeVisit(key, end, func(ki *keyIndex) bool { + reachedLimit := limit > 0 && len(revs) >= limit + if reachedLimit && !withTotalCount { + return false + } if rev, _, _, err := ki.get(ti.lg, atRev); err == nil { - reachedLimit := limit > 0 && len(revs) >= limit if !reachedLimit { revs = append(revs, rev) - } else { - if !withTotalCount { - return false - } } - total++ + totalCount++ } return true }) - return revs, total + return revs, totalCount } // CountRevisions returns the number of revisions From 90bbbfc1e3940129e0675ad7c50dd5b851e3be65 Mon Sep 17 00:00:00 2001 From: AR21SM Date: Wed, 3 Jun 2026 07:29:57 +0000 Subject: [PATCH 1055/1068] Update Go to 1.26.4 Signed-off-by: AR21SM --- .go-version | 2 +- api/go.mod | 2 +- cache/go.mod | 2 +- client/pkg/go.mod | 2 +- client/v3/go.mod | 2 +- etcdctl/go.mod | 2 +- etcdutl/go.mod | 2 +- go.mod | 2 +- go.work | 2 +- pkg/go.mod | 2 +- server/go.mod | 2 +- tests/go.mod | 2 +- tools/mod/go.mod | 2 +- tools/rw-heatmaps/go.mod | 2 +- tools/testgrid-analysis/go.mod | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.go-version b/.go-version index f8f738140964..ea0928cedf0d 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.26.3 +1.26.4 diff --git a/api/go.mod b/api/go.mod index fd1a57f10a5d..c20ab474d01a 100644 --- a/api/go.mod +++ b/api/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/api/v3 go 1.26 -toolchain go1.26.3 +toolchain go1.26.4 require ( github.com/coreos/go-semver v0.3.1 diff --git a/cache/go.mod b/cache/go.mod index 9c8ba75fd27e..74fb03b97cfe 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/cache/v3 go 1.26 -toolchain go1.26.3 +toolchain go1.26.4 require ( github.com/google/go-cmp v0.7.0 diff --git a/client/pkg/go.mod b/client/pkg/go.mod index 1dc3bd648f34..ab7025c85a83 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/pkg/v3 go 1.26 -toolchain go1.26.3 +toolchain go1.26.4 require ( github.com/coreos/go-systemd/v22 v22.7.0 diff --git a/client/v3/go.mod b/client/v3/go.mod index f933c271b92c..398b91408f6e 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/v3 go 1.26 -toolchain go1.26.3 +toolchain go1.26.4 require ( github.com/coreos/go-semver v0.3.1 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 4dd2e4aea9f9..dca68fb43138 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdctl/v3 go 1.26 -toolchain go1.26.3 +toolchain go1.26.4 require ( github.com/bgentry/speakeasy v0.2.0 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 5f69fd983e31..43d04195449e 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdutl/v3 go 1.26 -toolchain go1.26.3 +toolchain go1.26.4 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/go.mod b/go.mod index 4b9f61d4b4a4..c05cd44cc13f 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/v3 go 1.26 -toolchain go1.26.3 +toolchain go1.26.4 replace ( go.etcd.io/etcd/api/v3 => ./api diff --git a/go.work b/go.work index 5073813a8358..726a29d4a6ae 100644 --- a/go.work +++ b/go.work @@ -2,7 +2,7 @@ go 1.26 -toolchain go1.26.3 +toolchain go1.26.4 use ( . diff --git a/pkg/go.mod b/pkg/go.mod index 71ca86fefd3e..525af218436b 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/pkg/v3 go 1.26 -toolchain go1.26.3 +toolchain go1.26.4 require ( github.com/creack/pty v1.1.18 diff --git a/server/go.mod b/server/go.mod index 33315ff51fa5..a4602a8a376c 100644 --- a/server/go.mod +++ b/server/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/server/v3 go 1.26 -toolchain go1.26.3 +toolchain go1.26.4 require ( github.com/coreos/go-semver v0.3.1 diff --git a/tests/go.mod b/tests/go.mod index ddd6e087f2fc..44ab0d6a396f 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tests/v3 go 1.26 -toolchain go1.26.3 +toolchain go1.26.4 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 2a5f12185baa..48dd346fd486 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/v3 go 1.26 -toolchain go1.26.3 +toolchain go1.26.4 require ( github.com/alexfalkowski/gocovmerge v1.11.0 diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index 7d94f7f31344..e24602a1d008 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/rw-heatmaps/v3 go 1.26 -toolchain go1.26.3 +toolchain go1.26.4 require ( github.com/spf13/cobra v1.10.2 diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index 159caccc541b..fd1b9fa6bd30 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 go 1.26 -toolchain go1.26.3 +toolchain go1.26.4 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 From fff5b4b30ebf82dd21cb7feaceab960f6d545e9c Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Mon, 1 Jun 2026 14:18:05 -0700 Subject: [PATCH 1056/1068] version: bump up to 3.7.0-rc.0 Signed-off-by: Ivan Valdes --- api/version/version.go | 2 +- cache/go.mod | 6 +++--- client/v3/go.mod | 4 ++-- etcdctl/go.mod | 8 ++++---- etcdutl/go.mod | 10 +++++----- go.mod | 16 ++++++++-------- pkg/go.mod | 2 +- server/go.mod | 8 ++++---- tests/go.mod | 16 ++++++++-------- 9 files changed, 36 insertions(+), 36 deletions(-) diff --git a/api/version/version.go b/api/version/version.go index a66e919ac2cd..970bc5a785b5 100644 --- a/api/version/version.go +++ b/api/version/version.go @@ -26,7 +26,7 @@ import ( var ( // MinClusterVersion is the min cluster version this etcd binary is compatible with. MinClusterVersion = "3.0.0" - Version = "3.7.0-beta.0" + Version = "3.7.0-rc.0" APIVersion = "unknown" // Git SHA Value will be set during build diff --git a/cache/go.mod b/cache/go.mod index c23b22332d9d..9c8ba75fd27e 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -7,8 +7,8 @@ toolchain go1.26.3 require ( github.com/google/go-cmp v0.7.0 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/api/v3 v3.7.0-beta.0 - go.etcd.io/etcd/client/v3 v3.7.0-beta.0 + go.etcd.io/etcd/api/v3 v3.7.0-rc.0 + go.etcd.io/etcd/client/v3 v3.7.0-rc.0 google.golang.org/protobuf v1.36.11 k8s.io/utils v0.0.0-20260108192941-914a6e750570 ) @@ -20,7 +20,7 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect golang.org/x/net v0.54.0 // indirect diff --git a/client/v3/go.mod b/client/v3/go.mod index 8140b49f8b24..f933c271b92c 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -11,8 +11,8 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/prometheus/client_golang v1.23.2 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/api/v3 v3.7.0-beta.0 - go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 + go.etcd.io/etcd/api/v3 v3.7.0-rc.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 go.uber.org/zap v1.27.1 google.golang.org/grpc v1.81.0 google.golang.org/protobuf v1.36.11 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 7b546a2bebd5..4dd2e4aea9f9 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -12,10 +12,10 @@ require ( github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/api/v3 v3.7.0-beta.0 - go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 - go.etcd.io/etcd/client/v3 v3.7.0-beta.0 - go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 + go.etcd.io/etcd/api/v3 v3.7.0-rc.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 + go.etcd.io/etcd/client/v3 v3.7.0-rc.0 + go.etcd.io/etcd/pkg/v3 v3.7.0-rc.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 google.golang.org/grpc v1.81.0 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index e9769e40908d..5f69fd983e31 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -19,11 +19,11 @@ require ( github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.5.0-rc.0 - go.etcd.io/etcd/api/v3 v3.7.0-beta.0 - go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 - go.etcd.io/etcd/client/v3 v3.7.0-beta.0 - go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 - go.etcd.io/etcd/server/v3 v3.7.0-beta.0 + go.etcd.io/etcd/api/v3 v3.7.0-rc.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 + go.etcd.io/etcd/client/v3 v3.7.0-rc.0 + go.etcd.io/etcd/pkg/v3 v3.7.0-rc.0 + go.etcd.io/etcd/server/v3 v3.7.0-rc.0 go.etcd.io/raft/v3 v3.7.0-rc.1 go.uber.org/zap v1.27.1 google.golang.org/protobuf v1.36.11 diff --git a/go.mod b/go.mod index 705a51eda771..4b9f61d4b4a4 100644 --- a/go.mod +++ b/go.mod @@ -26,14 +26,14 @@ require ( github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.5.0-rc.0 - go.etcd.io/etcd/api/v3 v3.7.0-beta.0 - go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 - go.etcd.io/etcd/client/v3 v3.7.0-beta.0 - go.etcd.io/etcd/etcdctl/v3 v3.7.0-beta.0 - go.etcd.io/etcd/etcdutl/v3 v3.7.0-beta.0 - go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 - go.etcd.io/etcd/server/v3 v3.7.0-beta.0 - go.etcd.io/etcd/tests/v3 v3.7.0-beta.0 + go.etcd.io/etcd/api/v3 v3.7.0-rc.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 + go.etcd.io/etcd/client/v3 v3.7.0-rc.0 + go.etcd.io/etcd/etcdctl/v3 v3.7.0-rc.0 + go.etcd.io/etcd/etcdutl/v3 v3.7.0-rc.0 + go.etcd.io/etcd/pkg/v3 v3.7.0-rc.0 + go.etcd.io/etcd/server/v3 v3.7.0-rc.0 + go.etcd.io/etcd/tests/v3 v3.7.0-rc.0 go.etcd.io/raft/v3 v3.7.0-rc.1 go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 diff --git a/pkg/go.mod b/pkg/go.mod index 123ae29e30ea..71ca86fefd3e 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -10,7 +10,7 @@ require ( github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 go.opentelemetry.io/otel/trace v1.43.0 go.uber.org/zap v1.27.1 golang.org/x/sys v0.45.0 diff --git a/server/go.mod b/server/go.mod index f0e38efbe41d..33315ff51fa5 100644 --- a/server/go.mod +++ b/server/go.mod @@ -23,10 +23,10 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 go.etcd.io/bbolt v1.5.0-rc.0 - go.etcd.io/etcd/api/v3 v3.7.0-beta.0 - go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 - go.etcd.io/etcd/client/v3 v3.7.0-beta.0 - go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 + go.etcd.io/etcd/api/v3 v3.7.0-rc.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 + go.etcd.io/etcd/client/v3 v3.7.0-rc.0 + go.etcd.io/etcd/pkg/v3 v3.7.0-rc.0 go.etcd.io/raft/v3 v3.7.0-rc.1 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 go.opentelemetry.io/otel v1.43.0 diff --git a/tests/go.mod b/tests/go.mod index 9717f70615d2..ddd6e087f2fc 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -31,14 +31,14 @@ require ( github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.5.0-rc.0 - go.etcd.io/etcd/api/v3 v3.7.0-beta.0 - go.etcd.io/etcd/cache/v3 v3.7.0-beta.0 - go.etcd.io/etcd/client/pkg/v3 v3.7.0-beta.0 - go.etcd.io/etcd/client/v3 v3.7.0-beta.0 - go.etcd.io/etcd/etcdctl/v3 v3.7.0-beta.0 - go.etcd.io/etcd/etcdutl/v3 v3.7.0-beta.0 - go.etcd.io/etcd/pkg/v3 v3.7.0-beta.0 - go.etcd.io/etcd/server/v3 v3.7.0-beta.0 + go.etcd.io/etcd/api/v3 v3.7.0-rc.0 + go.etcd.io/etcd/cache/v3 v3.7.0-rc.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 + go.etcd.io/etcd/client/v3 v3.7.0-rc.0 + go.etcd.io/etcd/etcdctl/v3 v3.7.0-rc.0 + go.etcd.io/etcd/etcdutl/v3 v3.7.0-rc.0 + go.etcd.io/etcd/pkg/v3 v3.7.0-rc.0 + go.etcd.io/etcd/server/v3 v3.7.0-rc.0 go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.7.0-rc.1 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 From a028c84774cee3c84fb176c782353fcf7241fc4e Mon Sep 17 00:00:00 2001 From: AR21SM Date: Thu, 4 Jun 2026 06:59:31 +0000 Subject: [PATCH 1057/1068] Bump golang.org/x/crypto to v0.52.0 Signed-off-by: AR21SM --- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 5f69fd983e31..1e6851412770 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -79,7 +79,7 @@ require ( go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.51.0 // indirect + golang.org/x/crypto v0.52.0 // indirect golang.org/x/net v0.54.0 // indirect golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 5a66b92d0650..bf2c322ddcde 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -142,8 +142,8 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= -golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= diff --git a/go.mod b/go.mod index 4b9f61d4b4a4..658995a8953f 100644 --- a/go.mod +++ b/go.mod @@ -92,7 +92,7 @@ require ( go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.51.0 // indirect + golang.org/x/crypto v0.52.0 // indirect golang.org/x/mod v0.36.0 // indirect golang.org/x/net v0.54.0 // indirect golang.org/x/sync v0.20.0 // indirect diff --git a/go.sum b/go.sum index 50671c978bd0..418733f04ad1 100644 --- a/go.sum +++ b/go.sum @@ -150,8 +150,8 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= -golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= diff --git a/server/go.mod b/server/go.mod index 33315ff51fa5..7b1941a66685 100644 --- a/server/go.mod +++ b/server/go.mod @@ -34,7 +34,7 @@ require ( go.opentelemetry.io/otel/sdk v1.43.0 go.opentelemetry.io/otel/trace v1.43.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.51.0 + golang.org/x/crypto v0.52.0 golang.org/x/net v0.54.0 golang.org/x/time v0.15.0 google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 diff --git a/server/go.sum b/server/go.sum index 64d1601a615b..9fa8e01e9ab8 100644 --- a/server/go.sum +++ b/server/go.sum @@ -122,8 +122,8 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= -golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= diff --git a/tests/go.mod b/tests/go.mod index ddd6e087f2fc..0d3fb9450305 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -46,7 +46,7 @@ require ( go.opentelemetry.io/otel/sdk v1.43.0 go.opentelemetry.io/proto/otlp v1.10.0 go.uber.org/zap v1.27.1 - golang.org/x/crypto v0.51.0 + golang.org/x/crypto v0.52.0 golang.org/x/sync v0.20.0 golang.org/x/time v0.15.0 google.golang.org/grpc v1.81.0 diff --git a/tests/go.sum b/tests/go.sum index 2e11114be0d5..624011f94430 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -156,8 +156,8 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= -golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 2a5f12185baa..a0e4f1efbc74 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -238,7 +238,7 @@ require ( go.uber.org/zap v1.27.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.51.0 // indirect + golang.org/x/crypto v0.52.0 // indirect golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358 // indirect golang.org/x/mod v0.36.0 // indirect golang.org/x/net v0.54.0 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 93f1e4eec124..7eb2fa6a9d6e 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -568,8 +568,8 @@ golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIi golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= -golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= From 36a32bc7748f9b6934f6f0654359aa9fa7efb5f2 Mon Sep 17 00:00:00 2001 From: Sahil Patel Date: Thu, 4 Jun 2026 16:43:23 -0400 Subject: [PATCH 1058/1068] server/auth: accept bearer-prefixed auth tokens Signed-off-by: Sahil Patel --- server/auth/store.go | 2 +- server/auth/store_test.go | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/server/auth/store.go b/server/auth/store.go index 076947ea6202..49cc4d06dd48 100644 --- a/server/auth/store.go +++ b/server/auth/store.go @@ -1072,7 +1072,7 @@ func (as *authStore) AuthInfoFromCtx(ctx context.Context) (*AuthInfo, error) { return nil, nil } - token := ts[0] + token := strings.TrimPrefix(ts[0], "Bearer ") authInfo, uok := as.authInfoFromToken(ctx, token) if !uok { tokenFingerprint := redactToken(token) diff --git a/server/auth/store_test.go b/server/auth/store_test.go index 1aac1fbde2e4..fae37161d014 100644 --- a/server/auth/store_test.go +++ b/server/auth/store_test.go @@ -850,6 +850,11 @@ func TestAuthInfoFromCtx(t *testing.T) { if ai.Username != "foo" { t.Errorf("expected %v, got %v", "foo", ai.Username) } + + ctx = metadata.NewIncomingContext(t.Context(), metadata.New(map[string]string{rpctypes.TokenFieldNameGRPC: "Bearer " + resp.Token})) + ai, err = as.AuthInfoFromCtx(ctx) + require.NoError(t, err) + require.Equal(t, "foo", ai.Username) } func TestAuthDisable(t *testing.T) { From 33a64e784b3d1fd45c51cfaa9d7f28ead3f47788 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Thu, 11 Jun 2026 15:57:32 +0100 Subject: [PATCH 1059/1068] Make the etcd client creation non-blocking Signed-off-by: Benjamin Wang --- client/v3/client.go | 48 +------------- client/v3/client_test.go | 48 -------------- .../clientv3/connectivity/dial_test.go | 27 +++++--- tests/integration/v3_grpc_test.go | 64 ++++++++++++++----- tests/integration/v3_tls_test.go | 24 ++++--- 5 files changed, 83 insertions(+), 128 deletions(-) diff --git a/client/v3/client.go b/client/v3/client.go index 1b32a23d221b..e0cb49d04e26 100644 --- a/client/v3/client.go +++ b/client/v3/client.go @@ -29,7 +29,6 @@ import ( "google.golang.org/grpc/codes" grpccredentials "google.golang.org/grpc/credentials" "google.golang.org/grpc/credentials/insecure" - healthpb "google.golang.org/grpc/health/grpc_health_v1" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/status" @@ -326,52 +325,7 @@ func (c *Client) dial(creds grpccredentials.TransportCredentials, dopts ...grpc. opts = append(opts, c.cfg.DialOptions...) target := fmt.Sprintf("%s://%p/%s", resolver.Schema, c, authority(c.endpoints[0])) - conn, err := grpc.NewClient(target, opts...) - if err != nil { - return nil, err - } - if dialTimeout := c.cfg.DialTimeout; dialTimeout > 0 { - dctx, cancel := context.WithTimeout(c.ctx, dialTimeout) - defer cancel() - - if err := waitForConnection(dctx, conn); err != nil { - conn.Close() - return nil, err - } - } - return conn, nil -} - -func waitForConnection(ctx context.Context, conn *grpc.ClientConn) error { - cli := healthpb.NewHealthClient(conn) - - // Use WaitForReady to wait until the connection is ready. The health check - // may return Unimplemented if the server does not expose the health endpoint, - // or FailedPrecondition if the leader has not yet applied the configuration - // change that enables it. In both cases, we can still treat the connection as - // healthy enough to proceed. - // - // Use withMax to disable retrying on Unimplemented, so that we can - // return the original error immediately. - _, err := cli.Check(ctx, &healthpb.HealthCheckRequest{}, grpc.WaitForReady(true), withMax(0)) - if err == nil { - return nil - } - if cerr := ctx.Err(); cerr != nil { - if serr, ok := status.FromError(err); ok && serr.Message() != "" { - return fmt.Errorf("etcdclient: failed to connect to the etcd server: %s: %w", serr.Message(), cerr) - } - return fmt.Errorf("etcdclient: failed to connect to the etcd server: %w", cerr) - } - - serr, ok := status.FromError(err) - if ok { - switch serr.Code() { - case codes.Unimplemented, codes.FailedPrecondition: - return nil - } - } - return fmt.Errorf("etcdclient: failed to dial by invoking health endpoint: %w", err) + return grpc.NewClient(target, opts...) } func authority(endpoint string) string { diff --git a/client/v3/client_test.go b/client/v3/client_test.go index 0cf5cec6a79e..7f60f9e9263d 100644 --- a/client/v3/client_test.go +++ b/client/v3/client_test.go @@ -139,54 +139,6 @@ func TestDialCancel(t *testing.T) { } } -func TestDialTimeout(t *testing.T) { - testutil.RegisterLeakDetection(t) - - wantError := context.DeadlineExceeded - - testCfgs := []Config{ - { - Endpoints: []string{"http://254.0.0.1:12345"}, - DialTimeout: 2 * time.Second, - }, - { - Endpoints: []string{"http://254.0.0.1:12345"}, - DialTimeout: time.Second, - Username: "abc", - Password: "def", - }, - } - - for i, cfg := range testCfgs { - donec := make(chan error, 1) - go func(cfg Config, i int) { - // without timeout, dial continues forever on ipv4 black hole - c, err := NewClient(t, cfg) - if c != nil || err == nil { - t.Errorf("#%d: new client should fail", i) - } - donec <- err - }(cfg, i) - - time.Sleep(10 * time.Millisecond) - - select { - case err := <-donec: - t.Errorf("#%d: dial didn't wait (%v)", i, err) - default: - } - - select { - case <-time.After(5 * time.Second): - t.Errorf("#%d: failed to timeout dial on time", i) - case err := <-donec: - if !errors.Is(err, wantError) { - t.Errorf("#%d: unexpected error '%v', want '%v'", i, err, wantError) - } - } - } -} - func TestDialNoTimeout(t *testing.T) { cfg := Config{Endpoints: []string{"127.0.0.1:12345"}} c, err := NewClient(t, cfg) diff --git a/tests/integration/clientv3/connectivity/dial_test.go b/tests/integration/clientv3/connectivity/dial_test.go index 3132d91ced29..f2d9127752e4 100644 --- a/tests/integration/clientv3/connectivity/dial_test.go +++ b/tests/integration/clientv3/connectivity/dial_test.go @@ -47,7 +47,7 @@ var ( } ) -// TestDialTLSExpired tests client with expired certs fails to dial. +// TestDialTLSExpired tests client with expired certs fails the read request. func TestDialTLSExpired(t *testing.T) { integration.BeforeTest(t) clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, PeerTLS: &testTLSInfo, ClientTLS: &testTLSInfo}) @@ -56,15 +56,23 @@ func TestDialTLSExpired(t *testing.T) { tls, err := testTLSInfoExpired.ClientConfig() require.NoError(t, err) // expect remote errors "tls: bad certificate" - _, err = integration.NewClient(t, clientv3.Config{ + c, err := integration.NewClient(t, clientv3.Config{ Endpoints: []string{clus.Members[0].GRPCURL}, DialTimeout: 3 * time.Second, TLS: tls, }) - require.Truef(t, clientv3test.IsClientTimeout(err), "expected dial timeout error") + require.NoError(t, err) + defer func() { + require.NoError(t, c.Close()) + }() + + ctx, cancel := context.WithTimeout(t.Context(), 2*time.Second) + _, rerr := c.Get(ctx, "foo") + cancel() + require.Truef(t, clientv3test.IsClientTimeout(rerr), "expected get timeout error") } -// TestDialTLSNoConfig ensures the client fails to dial / times out +// TestDialTLSNoConfig ensures the client fails to range / times out // when TLS endpoints (https, unixs) are given but no tls config. func TestDialTLSNoConfig(t *testing.T) { integration.BeforeTest(t) @@ -75,12 +83,15 @@ func TestDialTLSNoConfig(t *testing.T) { Endpoints: []string{clus.Members[0].GRPCURL}, DialTimeout: time.Second, }) + require.NoError(t, err) defer func() { - if c != nil { - c.Close() - } + require.NoError(t, c.Close()) }() - require.Truef(t, clientv3test.IsClientTimeout(err), "expected dial timeout error") + + ctx, cancel := context.WithTimeout(t.Context(), 2*time.Second) + _, rerr := c.Get(ctx, "foo") + cancel() + require.Truef(t, clientv3test.IsClientTimeout(rerr), "expected get timeout error") } // TestDialSetEndpointsBeforeFail ensures SetEndpoints can replace unavailable diff --git a/tests/integration/v3_grpc_test.go b/tests/integration/v3_grpc_test.go index 40c9e8f47b12..36e6b77940ed 100644 --- a/tests/integration/v3_grpc_test.go +++ b/tests/integration/v3_grpc_test.go @@ -17,6 +17,7 @@ package integration import ( "bytes" "context" + "crypto/tls" "errors" "fmt" "io" @@ -1951,9 +1952,13 @@ func TestTLSGRPCRejectSecureClient(t *testing.T) { clus.Members[0].ClientTLSInfo = &integration.TestTLSInfo clus.Members[0].GRPCURL = strings.Replace(clus.Members[0].GRPCURL, "http://", "https://", 1) client, err := integration.NewClientV3(clus.Members[0]) - if client != nil || err == nil { - client.Close() - t.Fatalf("expected no client") + require.NoError(t, err) + defer client.Close() + ctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) + _, err = client.Status(ctx, client.Endpoints()[0]) + cancel() + if err == nil { + t.Fatalf("expected error") } else if !errors.Is(err, context.DeadlineExceeded) { t.Fatalf("unexpected error (%v)", err) } @@ -2082,11 +2087,15 @@ func testTLSReload( }) defer clus.Terminate(t) - // 3. concurrent client dialing while certs become expired + // 3. concurrent client creation while certs become expired errc := make(chan error, 1) + donec := make(chan struct{}) + var tlsInvalid *tls.Config go func() { + defer close(donec) for { - cc, err := tlsInfo.ClientConfig() + var err error + tlsInvalid, err = tlsInfo.ClientConfig() if err != nil { // errors in 'go/src/crypto/tls/tls.go' // tls: private key does not match public key @@ -2099,44 +2108,67 @@ func testTLSReload( cli, cerr := integration.NewClient(t, clientv3.Config{ Endpoints: []string{clus.Members[0].GRPCURL}, DialTimeout: time.Second, - TLS: cc, + TLS: tlsInvalid, }) if cerr != nil { errc <- cerr - return } cli.Close() + return } }() // 4. replace certs with expired ones replaceFunc() - // 5. expect dial time-out when loading expired certs select { case gerr := <-errc: - if !errors.Is(gerr, context.DeadlineExceeded) { - t.Fatalf("expected %v, got %v", context.DeadlineExceeded, gerr) + t.Fatalf("expected no error, got %v", gerr) + case <-time.After(2 * time.Second): + } + <-donec + + readTest := func(tlsCfg *tls.Config, expectedErr error) { + cli, cerr := integration.NewClient(t, clientv3.Config{ + Endpoints: []string{clus.Members[0].GRPCURL}, + DialTimeout: time.Second, + TLS: tlsCfg, + }) + require.NoError(t, cerr) + defer func() { + require.NoError(t, cli.Close()) + }() + + ctx, cancel := context.WithTimeout(t.Context(), 2*time.Second) + _, rerr := cli.Get(ctx, "foo") + cancel() + if expectedErr != nil { + require.ErrorIs(t, rerr, expectedErr) + } else { + require.NoError(t, rerr) } - case <-time.After(5 * time.Second): - t.Fatal("failed to receive dial timeout error") } + // 5. expect read request timed out when loading expired certs + readTest(tlsInvalid, context.DeadlineExceeded) + // 6. replace expired certs back with valid ones revertFunc() - // 7. new requests should trigger listener to reload valid certs - tls, terr := tlsInfo.ClientConfig() + tlsValid, terr := tlsInfo.ClientConfig() require.NoError(t, terr) cl, cerr := integration.NewClient(t, clientv3.Config{ Endpoints: []string{clus.Members[0].GRPCURL}, DialTimeout: 5 * time.Second, - TLS: tls, + TLS: tlsValid, }) if cerr != nil { t.Fatalf("expected no error, got %v", cerr) } - cl.Close() + require.NoError(t, cl.Close()) + + // 7. new requests should trigger listener to reload valid certs + readTest(tlsValid, nil) } func TestGRPCRequireLeader(t *testing.T) { diff --git a/tests/integration/v3_tls_test.go b/tests/integration/v3_tls_test.go index eaa1ace06830..b65867109e58 100644 --- a/tests/integration/v3_tls_test.go +++ b/tests/integration/v3_tls_test.go @@ -32,7 +32,7 @@ func TestTLSClientCipherSuitesValid(t *testing.T) { testTLSCipherSuites(t, tr func TestTLSClientCipherSuitesMismatch(t *testing.T) { testTLSCipherSuites(t, false) } // testTLSCipherSuites ensures mismatching client-side cipher suite -// fail TLS handshake with the server. +// fail the range request to the server. func testTLSCipherSuites(t *testing.T, valid bool) { integration.BeforeTest(t) @@ -67,14 +67,20 @@ func testTLSCipherSuites(t *testing.T, valid bool) { DialTimeout: time.Second, TLS: cc, }) - if cli != nil { - cli.Close() - } - if !valid && !errors.Is(cerr, context.DeadlineExceeded) { - t.Fatalf("expected %v with TLS handshake failure, got %v", context.DeadlineExceeded, cerr) - } - if valid && cerr != nil { - t.Fatalf("expected TLS handshake success, got %v", cerr) + require.NoError(t, cerr) + defer func() { + require.NoError(t, cli.Close()) + }() + + ctx, cancel := context.WithTimeout(t.Context(), 2*time.Second) + _, rerr := cli.Get(ctx, "foo") + cancel() + if valid { + require.NoError(t, rerr) + } else { + if !errors.Is(rerr, context.DeadlineExceeded) { + t.Fatalf("expected %v with TLS handshake failure, got %v", context.DeadlineExceeded, rerr) + } } } From 1e600de37153932dbd79aefd42024b6e6890fe75 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Fri, 12 Jun 2026 13:55:51 +0100 Subject: [PATCH 1060/1068] Update incorrect log message Signed-off-by: Benjamin Wang --- server/embed/etcd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/embed/etcd.go b/server/embed/etcd.go index c91953ac9cb0..a9be763f881e 100644 --- a/server/embed/etcd.go +++ b/server/embed/etcd.go @@ -727,7 +727,7 @@ func configureClientListeners(cfg *Config) (sctxs map[string]*serveCtx, err erro } sctx.l.Close() cfg.logger.Warn( - "closing peer listener", + "closing client listener", zap.String("address", sctx.addr), zap.Error(err), ) From 7ec92f6ea5221d341edfbe4e22aaa7d6cc4c9aac Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Mon, 29 Jun 2026 17:53:00 +0100 Subject: [PATCH 1061/1068] Bump go.etcd.io/bbolt to v1.5.0 Signed-off-by: Benjamin Wang --- bill-of-materials.json | 9 --------- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- 9 files changed, 12 insertions(+), 21 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index a507db65e1dc..275ec3a3215f 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -17,15 +17,6 @@ } ] }, - { - "project": "github.com/antithesishq/antithesis-sdk-go", - "licenses": [ - { - "type": "MIT License", - "confidence": 1 - } - ] - }, { "project": "github.com/beorn7/perks/quantile", "licenses": [ diff --git a/etcdutl/go.mod b/etcdutl/go.mod index c00739170bd9..7a7be535e1dc 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -18,7 +18,7 @@ require ( github.com/olekukonko/tablewriter v1.1.4 github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 - go.etcd.io/bbolt v1.5.0-rc.0 + go.etcd.io/bbolt v1.5.0 go.etcd.io/etcd/api/v3 v3.7.0-rc.0 go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 go.etcd.io/etcd/client/v3 v3.7.0-rc.0 diff --git a/etcdutl/go.sum b/etcdutl/go.sum index bf2c322ddcde..70a543080d90 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -106,8 +106,8 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7 github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -go.etcd.io/bbolt v1.5.0-rc.0 h1:eep+LDTa+VGJ6mmNMe0wWB8OdLUHnyuvvSimdJsWtAE= -go.etcd.io/bbolt v1.5.0-rc.0/go.mod h1:HXpeuv7FrPaEH3z9FzbnSXSntD27WQyEMjQNJbd+vd8= +go.etcd.io/bbolt v1.5.0 h1:S7GAl7Fxv12yohbwFfIbQCGDWbQbtDGPET4P/bD4lxU= +go.etcd.io/bbolt v1.5.0/go.mod h1:mkltfYE5aUHQxUct9N9V+Kp7aSjFqjgrhcXIS70Lrdk= go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= go.etcd.io/raft/v3 v3.7.0-rc.1/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= diff --git a/go.mod b/go.mod index 0350724f3051..68c38fd3a67a 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 - go.etcd.io/bbolt v1.5.0-rc.0 + go.etcd.io/bbolt v1.5.0 go.etcd.io/etcd/api/v3 v3.7.0-rc.0 go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 go.etcd.io/etcd/client/v3 v3.7.0-rc.0 diff --git a/go.sum b/go.sum index 418733f04ad1..3ab76cce8ec1 100644 --- a/go.sum +++ b/go.sum @@ -112,8 +112,8 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7 github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -go.etcd.io/bbolt v1.5.0-rc.0 h1:eep+LDTa+VGJ6mmNMe0wWB8OdLUHnyuvvSimdJsWtAE= -go.etcd.io/bbolt v1.5.0-rc.0/go.mod h1:HXpeuv7FrPaEH3z9FzbnSXSntD27WQyEMjQNJbd+vd8= +go.etcd.io/bbolt v1.5.0 h1:S7GAl7Fxv12yohbwFfIbQCGDWbQbtDGPET4P/bD4lxU= +go.etcd.io/bbolt v1.5.0/go.mod h1:mkltfYE5aUHQxUct9N9V+Kp7aSjFqjgrhcXIS70Lrdk= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= diff --git a/server/go.mod b/server/go.mod index 88a90683a814..5f3edb720e6b 100644 --- a/server/go.mod +++ b/server/go.mod @@ -22,7 +22,7 @@ require ( github.com/stretchr/testify v1.11.1 github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 - go.etcd.io/bbolt v1.5.0-rc.0 + go.etcd.io/bbolt v1.5.0 go.etcd.io/etcd/api/v3 v3.7.0-rc.0 go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 go.etcd.io/etcd/client/v3 v3.7.0-rc.0 diff --git a/server/go.sum b/server/go.sum index 9fa8e01e9ab8..a9f5bdb6308b 100644 --- a/server/go.sum +++ b/server/go.sum @@ -86,8 +86,8 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7 github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -go.etcd.io/bbolt v1.5.0-rc.0 h1:eep+LDTa+VGJ6mmNMe0wWB8OdLUHnyuvvSimdJsWtAE= -go.etcd.io/bbolt v1.5.0-rc.0/go.mod h1:HXpeuv7FrPaEH3z9FzbnSXSntD27WQyEMjQNJbd+vd8= +go.etcd.io/bbolt v1.5.0 h1:S7GAl7Fxv12yohbwFfIbQCGDWbQbtDGPET4P/bD4lxU= +go.etcd.io/bbolt v1.5.0/go.mod h1:mkltfYE5aUHQxUct9N9V+Kp7aSjFqjgrhcXIS70Lrdk= go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= go.etcd.io/raft/v3 v3.7.0-rc.1/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= diff --git a/tests/go.mod b/tests/go.mod index d6aa420a1651..9f5185e6b2b2 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -30,7 +30,7 @@ require ( github.com/prometheus/common v0.67.5 github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.11.1 - go.etcd.io/bbolt v1.5.0-rc.0 + go.etcd.io/bbolt v1.5.0 go.etcd.io/etcd/api/v3 v3.7.0-rc.0 go.etcd.io/etcd/cache/v3 v3.7.0-rc.0 go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 diff --git a/tests/go.sum b/tests/go.sum index 624011f94430..88dc9d961d7d 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -118,8 +118,8 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7 github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -go.etcd.io/bbolt v1.5.0-rc.0 h1:eep+LDTa+VGJ6mmNMe0wWB8OdLUHnyuvvSimdJsWtAE= -go.etcd.io/bbolt v1.5.0-rc.0/go.mod h1:HXpeuv7FrPaEH3z9FzbnSXSntD27WQyEMjQNJbd+vd8= +go.etcd.io/bbolt v1.5.0 h1:S7GAl7Fxv12yohbwFfIbQCGDWbQbtDGPET4P/bD4lxU= +go.etcd.io/bbolt v1.5.0/go.mod h1:mkltfYE5aUHQxUct9N9V+Kp7aSjFqjgrhcXIS70Lrdk= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= From f034cbd891b71538eb33ba858e40fbbfcd9ad80c Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Thu, 11 Jun 2026 17:22:13 +0100 Subject: [PATCH 1062/1068] Update the comment of DialTimeout to reflect the real usage Signed-off-by: Benjamin Wang --- client/v3/client_test.go | 39 -------------------------- client/v3/config.go | 11 ++++++-- tests/e2e/ctl_v3_kv_test.go | 56 ------------------------------------- 3 files changed, 9 insertions(+), 97 deletions(-) diff --git a/client/v3/client_test.go b/client/v3/client_test.go index 7f60f9e9263d..d193aa9c748e 100644 --- a/client/v3/client_test.go +++ b/client/v3/client_test.go @@ -46,37 +46,6 @@ func NewClient(t *testing.T, cfg Config) (*Client, error) { return New(cfg) } -func TestDialNotImplemented(t *testing.T) { - testutil.RegisterLeakDetection(t) - - ln, err := net.Listen("tcp", "127.0.0.1:0") - require.NoError(t, err) - defer ln.Close() - - srv := grpc.NewServer() - serveDone := make(chan error) - go func() { - defer close(serveDone) - srv.Serve(ln) - }() - defer func() { - srv.Stop() - <-serveDone - }() - - ep := ln.Addr().String() - cfg := Config{ - Endpoints: []string{ep}, - DialTimeout: 10 * time.Second, - } - c, err := NewClient(t, cfg) - require.NoError(t, err) - defer c.Close() - - _, err = c.Get(t.Context(), "foo") - require.ErrorContains(t, err, "code = Unimplemented desc = unknown service etcdserverpb.KV") -} - func TestDialCancel(t *testing.T) { testutil.RegisterLeakDetection(t) @@ -139,14 +108,6 @@ func TestDialCancel(t *testing.T) { } } -func TestDialNoTimeout(t *testing.T) { - cfg := Config{Endpoints: []string{"127.0.0.1:12345"}} - c, err := NewClient(t, cfg) - require.NotNilf(t, c, "new client with DialNoWait should succeed, got %v", err) - require.NoErrorf(t, err, "new client with DialNoWait should succeed") - c.Close() -} - func TestMaxUnaryRetries(t *testing.T) { maxUnaryRetries := uint(10) cfg := Config{ diff --git a/client/v3/config.go b/client/v3/config.go index 89405d80e291..153bb97bbc41 100644 --- a/client/v3/config.go +++ b/client/v3/config.go @@ -33,7 +33,14 @@ type Config struct { // 0 disables auto-sync. By default auto-sync is disabled. AutoSyncInterval time.Duration `json:"auto-sync-interval"` - // DialTimeout is the timeout for failing to establish a connection. + // DialTimeout is the timeout used for certain operations, such as fetching + // an authentication token and checking the cluster version (when + // RejectOldCluster is true). It is also used to derive the initial + // keep-alive timeout for lease keep-alives (DialTimeout + 1s). + // It is NOT used to bound the gRPC connection establishment itself, + // because client creation is non-blocking since + // https://github.com/etcd-io/etcd/pull/21832. + // A value of 0 means no timeout is applied to those operations. DialTimeout time.Duration `json:"dial-timeout"` // DialKeepAliveTime is the time after which client pings the server to see if @@ -74,7 +81,7 @@ type Config struct { // DialOptions is a list of dial options for the grpc client (e.g., for interceptors). // Note that grpc.NewClient ignores options that are specific to grpc.Dial such as - // "grpc.WithBlock()". Use DialTimeout to bound client initialization time. + // "grpc.WithBlock()". DialOptions []grpc.DialOption // Context is the default client context; it can be used to cancel grpc dial out and diff --git a/tests/e2e/ctl_v3_kv_test.go b/tests/e2e/ctl_v3_kv_test.go index 753d8e65b7b9..82211946c35b 100644 --- a/tests/e2e/ctl_v3_kv_test.go +++ b/tests/e2e/ctl_v3_kv_test.go @@ -17,7 +17,6 @@ package e2e import ( "context" "fmt" - "net" "strings" "testing" "time" @@ -46,24 +45,6 @@ func TestCtlV3GetCountOnly(t *testing.T) { testCtl(t, getCountOnlyTest) func TestCtlV3DelTimeout(t *testing.T) { testCtl(t, delTest, withDefaultDialTimeout()) } -func TestCtlV3TimeoutWhenNoProcessListensOnEndpoint(t *testing.T) { - e2e.BeforeTest(t) - - endpoint := unusedLocalTCPAddr(t) - cmdArgs := []string{ - e2e.BinPath.Etcdctl, - "--debug", - "--endpoints", endpoint, - "--dial-timeout", "5s", - "get", "foo", - } - assertEtcdctlDialTimedout(t, cmdArgs, nil) -} - -func TestCtlV3TimeoutWhenTLSClientCertMissing(t *testing.T) { - testCtl(t, timeoutWhenTLSClientCertMissingTest, withCfg(*e2e.NewConfigClientTLS())) -} - func TestCtlV3GetRevokedCRL(t *testing.T) { cfg := e2e.NewConfig( e2e.WithClusterSize(1), @@ -83,43 +64,6 @@ func testGetRevokedCRL(cx ctlCtx) { require.NoError(cx.t, ctlV3Put(cx, "k", "v", "")) } -func timeoutWhenTLSClientCertMissingTest(cx ctlCtx) { - cmdArgs := []string{ - e2e.BinPath.Etcdctl, - "--debug", - "--endpoints", strings.Join(cx.epc.EndpointsGRPC(), ","), - "--dial-timeout", "5s", - "get", "foo", - } - assertEtcdctlDialTimedout(cx.t, cmdArgs, nil) -} - -func unusedLocalTCPAddr(t *testing.T) string { - t.Helper() - - l, err := net.Listen("tcp", "127.0.0.1:0") - require.NoError(t, err) - defer l.Close() - - return l.Addr().String() -} - -func assertEtcdctlDialTimedout(t *testing.T, cmdArgs []string, envVars map[string]string) { - t.Helper() - - proc, err := e2e.SpawnCmd(cmdArgs, envVars) - require.NoError(t, err) - proc.Wait() - - err = proc.Close() - require.Error(t, err) - - out := strings.Join(proc.Lines(), "\n") - require.Containsf(t, out, context.DeadlineExceeded.Error(), - "expected timeout output, got close error: %v, output: %q", err, out, - ) -} - func putTest(cx ctlCtx) { key, value := "foo", "bar" From 26b71bf46b51d9e32c773b4e4c170cdc14963b2b Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Mon, 29 Jun 2026 17:54:05 +0100 Subject: [PATCH 1063/1068] Bump go.etcd.io/raft/v3 to v3.7.0 Signed-off-by: Benjamin Wang --- bill-of-materials.json | 9 +++++++++ etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- 11 files changed, 24 insertions(+), 15 deletions(-) diff --git a/bill-of-materials.json b/bill-of-materials.json index 275ec3a3215f..a507db65e1dc 100644 --- a/bill-of-materials.json +++ b/bill-of-materials.json @@ -17,6 +17,15 @@ } ] }, + { + "project": "github.com/antithesishq/antithesis-sdk-go", + "licenses": [ + { + "type": "MIT License", + "confidence": 1 + } + ] + }, { "project": "github.com/beorn7/perks/quantile", "licenses": [ diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 7a7be535e1dc..9207efa6a558 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -24,7 +24,7 @@ require ( go.etcd.io/etcd/client/v3 v3.7.0-rc.0 go.etcd.io/etcd/pkg/v3 v3.7.0-rc.0 go.etcd.io/etcd/server/v3 v3.7.0-rc.0 - go.etcd.io/raft/v3 v3.7.0-rc.1 + go.etcd.io/raft/v3 v3.7.0 go.uber.org/zap v1.27.1 google.golang.org/protobuf v1.36.11 gotest.tools/v3 v3.5.2 diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 70a543080d90..554f2b9a3d63 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -108,8 +108,8 @@ github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chq github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= go.etcd.io/bbolt v1.5.0 h1:S7GAl7Fxv12yohbwFfIbQCGDWbQbtDGPET4P/bD4lxU= go.etcd.io/bbolt v1.5.0/go.mod h1:mkltfYE5aUHQxUct9N9V+Kp7aSjFqjgrhcXIS70Lrdk= -go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= -go.etcd.io/raft/v3 v3.7.0-rc.1/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= +go.etcd.io/raft/v3 v3.7.0 h1:BGzlwx07bLv8PW6OU5HObuz1y4hlPZUXA07pM1mPUh4= +go.etcd.io/raft/v3 v3.7.0/go.mod h1:6gX6T2X907DjnjsFLODnTxba77stjs84W9gTTI0GUNA= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 h1:0Qx7VGBacMm9ZENQ7TnNObTYI4ShC+lHI16seduaxZo= diff --git a/go.mod b/go.mod index 68c38fd3a67a..956f5558208d 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.7.0-rc.0 go.etcd.io/etcd/server/v3 v3.7.0-rc.0 go.etcd.io/etcd/tests/v3 v3.7.0-rc.0 - go.etcd.io/raft/v3 v3.7.0-rc.1 + go.etcd.io/raft/v3 v3.7.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 golang.org/x/tools v0.45.0 diff --git a/go.sum b/go.sum index 3ab76cce8ec1..1a562748e788 100644 --- a/go.sum +++ b/go.sum @@ -116,8 +116,8 @@ go.etcd.io/bbolt v1.5.0 h1:S7GAl7Fxv12yohbwFfIbQCGDWbQbtDGPET4P/bD4lxU= go.etcd.io/bbolt v1.5.0/go.mod h1:mkltfYE5aUHQxUct9N9V+Kp7aSjFqjgrhcXIS70Lrdk= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= -go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= -go.etcd.io/raft/v3 v3.7.0-rc.1/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= +go.etcd.io/raft/v3 v3.7.0 h1:BGzlwx07bLv8PW6OU5HObuz1y4hlPZUXA07pM1mPUh4= +go.etcd.io/raft/v3 v3.7.0/go.mod h1:6gX6T2X907DjnjsFLODnTxba77stjs84W9gTTI0GUNA= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 h1:0Qx7VGBacMm9ZENQ7TnNObTYI4ShC+lHI16seduaxZo= diff --git a/server/go.mod b/server/go.mod index 5f3edb720e6b..c52b2e736e6e 100644 --- a/server/go.mod +++ b/server/go.mod @@ -27,7 +27,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 go.etcd.io/etcd/client/v3 v3.7.0-rc.0 go.etcd.io/etcd/pkg/v3 v3.7.0-rc.0 - go.etcd.io/raft/v3 v3.7.0-rc.1 + go.etcd.io/raft/v3 v3.7.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 go.opentelemetry.io/otel v1.43.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 diff --git a/server/go.sum b/server/go.sum index a9f5bdb6308b..194c203d2be0 100644 --- a/server/go.sum +++ b/server/go.sum @@ -88,8 +88,8 @@ github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chq github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= go.etcd.io/bbolt v1.5.0 h1:S7GAl7Fxv12yohbwFfIbQCGDWbQbtDGPET4P/bD4lxU= go.etcd.io/bbolt v1.5.0/go.mod h1:mkltfYE5aUHQxUct9N9V+Kp7aSjFqjgrhcXIS70Lrdk= -go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= -go.etcd.io/raft/v3 v3.7.0-rc.1/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= +go.etcd.io/raft/v3 v3.7.0 h1:BGzlwx07bLv8PW6OU5HObuz1y4hlPZUXA07pM1mPUh4= +go.etcd.io/raft/v3 v3.7.0/go.mod h1:6gX6T2X907DjnjsFLODnTxba77stjs84W9gTTI0GUNA= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 h1:0Qx7VGBacMm9ZENQ7TnNObTYI4ShC+lHI16seduaxZo= diff --git a/tests/go.mod b/tests/go.mod index 9f5185e6b2b2..fb0bf6d26d85 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -40,7 +40,7 @@ require ( go.etcd.io/etcd/pkg/v3 v3.7.0-rc.0 go.etcd.io/etcd/server/v3 v3.7.0-rc.0 go.etcd.io/gofail v0.2.0 - go.etcd.io/raft/v3 v3.7.0-rc.1 + go.etcd.io/raft/v3 v3.7.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 go.opentelemetry.io/otel v1.43.0 go.opentelemetry.io/otel/sdk v1.43.0 diff --git a/tests/go.sum b/tests/go.sum index 88dc9d961d7d..d5e67090c064 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -122,8 +122,8 @@ go.etcd.io/bbolt v1.5.0 h1:S7GAl7Fxv12yohbwFfIbQCGDWbQbtDGPET4P/bD4lxU= go.etcd.io/bbolt v1.5.0/go.mod h1:mkltfYE5aUHQxUct9N9V+Kp7aSjFqjgrhcXIS70Lrdk= go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= -go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= -go.etcd.io/raft/v3 v3.7.0-rc.1/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= +go.etcd.io/raft/v3 v3.7.0 h1:BGzlwx07bLv8PW6OU5HObuz1y4hlPZUXA07pM1mPUh4= +go.etcd.io/raft/v3 v3.7.0/go.mod h1:6gX6T2X907DjnjsFLODnTxba77stjs84W9gTTI0GUNA= 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/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 h1:0Qx7VGBacMm9ZENQ7TnNObTYI4ShC+lHI16seduaxZo= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index e4458e7f152b..c5ded88f985a 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -14,7 +14,7 @@ require ( github.com/ryancurrah/gomodguard v1.4.1 go.etcd.io/gofail v0.2.0 go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 - go.etcd.io/raft/v3 v3.7.0-rc.1 + go.etcd.io/raft/v3 v3.7.0 golang.org/x/tools v0.45.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.2 google.golang.org/protobuf v1.36.11 diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 7eb2fa6a9d6e..96938942bffe 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -544,8 +544,8 @@ go.etcd.io/gofail v0.2.0 h1:p19drv16FKK345a09a1iubchlw/vmRuksmRzgBIGjcA= go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o= go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116 h1:QQiUXlqz+d96jyNG71NE+IGTgOK6Xlhdx+PzvfbLHlQ= go.etcd.io/protodoc v0.0.0-20180829002748-484ab544e116/go.mod h1:F9kog+iVAuvPJucb1dkYcDcbV0g4uyGEHllTP5NrXiw= -go.etcd.io/raft/v3 v3.7.0-rc.1 h1:ZjxgOnOT16uEGhR6xiijKT0OcTk+9Nw0sU2ZgGAAjGg= -go.etcd.io/raft/v3 v3.7.0-rc.1/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= +go.etcd.io/raft/v3 v3.7.0 h1:BGzlwx07bLv8PW6OU5HObuz1y4hlPZUXA07pM1mPUh4= +go.etcd.io/raft/v3 v3.7.0/go.mod h1:6gX6T2X907DjnjsFLODnTxba77stjs84W9gTTI0GUNA= 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 389541b9c8c0998e0af546058467b9a2d3baa4e6 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Wed, 1 Jul 2026 14:01:50 +0100 Subject: [PATCH 1064/1068] Reject the client request if the client certificate has been revoked Signed-off-by: Benjamin Wang --- client/pkg/transport/listener_tls.go | 23 +++++++++++++++++++++++ server/embed/serve.go | 8 ++++++++ tests/e2e/ctl_v3_kv_test.go | 16 ++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/client/pkg/transport/listener_tls.go b/client/pkg/transport/listener_tls.go index 2c94841625b0..63566e1f6429 100644 --- a/client/pkg/transport/listener_tls.go +++ b/client/pkg/transport/listener_tls.go @@ -166,6 +166,29 @@ func (l *tlsListener) acceptLoop() { } } +// ConfigureCRLVerification appends a VerifyConnection hook to cfg that +// rejects any peer certificate whose serial number appears in the CRL file +// configured on info. It is a no-op when CRLFile is empty. Any existing +// VerifyConnection hook is called first and its error short-circuits. +func (info TLSInfo) ConfigureCRLVerification(cfg *tls.Config) { + if len(info.CRLFile) == 0 { + return + } + crlFile := info.CRLFile + prev := cfg.VerifyConnection + cfg.VerifyConnection = func(cs tls.ConnectionState) error { + if prev != nil { + if err := prev(cs); err != nil { + return err + } + } + if len(cs.PeerCertificates) == 0 { + return nil + } + return checkCRL(crlFile, cs.PeerCertificates) + } +} + func checkCRL(crlPath string, cert []*x509.Certificate) error { // TODO: cache crlBytes, err := os.ReadFile(crlPath) diff --git a/server/embed/serve.go b/server/embed/serve.go index e50529dfe438..2b28cf1cc6b9 100644 --- a/server/embed/serve.go +++ b/server/embed/serve.go @@ -233,6 +233,14 @@ func (sctx *serveCtx) serve( return tlsErr } + // In gRPC-only mode the gRPC stack owns the TLS handshake (via grpc.Creds). + // Wrapping sctx.l with a second TLS listener would cause a double-TLS failure, + // so inject CRL checking into the TLS config before the gRPC server is created + // (gRPC clones the config at creation time). + if onlyGRPC { + tlsinfo.ConfigureCRLVerification(tlscfg) + } + if grpcEnabled { gs = v3rpc.Server(s, tlscfg, nil, gopts...) v3electionpb.RegisterElectionServer(gs, servElection) diff --git a/tests/e2e/ctl_v3_kv_test.go b/tests/e2e/ctl_v3_kv_test.go index 82211946c35b..b79ebe5515ee 100644 --- a/tests/e2e/ctl_v3_kv_test.go +++ b/tests/e2e/ctl_v3_kv_test.go @@ -55,6 +55,22 @@ func TestCtlV3GetRevokedCRL(t *testing.T) { testCtl(t, testGetRevokedCRL, withCfg(*cfg)) } +// TestCtlV3GetRevokedCRLGRPCOnly is the same as TestCtlV3GetRevokedCRL but uses +// --listen-client-http-urls to split HTTP and gRPC onto separate ports. In that +// mode the gRPC server owns the TLS handshake directly (onlyGRPC=true in +// serve.go) and CRL checking must be injected via ConfigureCRLVerification +// rather than through the wrapping TLS listener used in the combined path. +func TestCtlV3GetRevokedCRLGRPCOnly(t *testing.T) { + cfg := e2e.NewConfig( + e2e.WithClusterSize(1), + e2e.WithClientConnType(e2e.ClientTLS), + e2e.WithClientRevokeCerts(true), + e2e.WithClientCertAuthority(true), + e2e.WithClientHTTPSeparate(true), + ) + testCtl(t, testGetRevokedCRL, withCfg(*cfg)) +} + func testGetRevokedCRL(cx ctlCtx) { // test reject require.ErrorContains(cx.t, ctlV3Put(cx, "k", "v", ""), "context deadline exceeded") From 6ae1f019ec518d84283fe2b2cbb5727343d47157 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 1 Jul 2026 14:16:25 -0700 Subject: [PATCH 1065/1068] dependency: bump golang.org/x/net from 0.54.0 to 0.55.0 Signed-off-by: Ivan Valdes --- api/go.mod | 2 +- api/go.sum | 4 ++-- cache/go.mod | 2 +- cache/go.sum | 4 ++-- client/v3/go.mod | 2 +- client/v3/go.sum | 4 ++-- etcdctl/go.mod | 2 +- etcdctl/go.sum | 4 ++-- etcdutl/go.mod | 2 +- etcdutl/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/go.mod | 2 +- pkg/go.sum | 4 ++-- server/go.mod | 2 +- server/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tools/mod/go.mod | 2 +- tools/mod/go.sum | 4 ++-- tools/testgrid-analysis/go.mod | 2 +- tools/testgrid-analysis/go.sum | 4 ++-- 22 files changed, 33 insertions(+), 33 deletions(-) diff --git a/api/go.mod b/api/go.mod index c20ab474d01a..5838a011c05e 100644 --- a/api/go.mod +++ b/api/go.mod @@ -19,7 +19,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - golang.org/x/net v0.54.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect diff --git a/api/go.sum b/api/go.sum index 80063d7360b6..c150fb4fdd1a 100644 --- a/api/go.sum +++ b/api/go.sum @@ -39,8 +39,8 @@ go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfC go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= diff --git a/cache/go.mod b/cache/go.mod index 74fb03b97cfe..8d1f02fde038 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -23,7 +23,7 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect - golang.org/x/net v0.54.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect diff --git a/cache/go.sum b/cache/go.sum index f4f0e7c77370..89feacd77466 100644 --- a/cache/go.sum +++ b/cache/go.sum @@ -64,8 +64,8 @@ go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= diff --git a/client/v3/go.mod b/client/v3/go.mod index 398b91408f6e..c200f52167ba 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -33,7 +33,7 @@ require ( github.com/prometheus/procfs v0.16.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.54.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect diff --git a/client/v3/go.sum b/client/v3/go.sum index 34fdf19ffd2f..decb2b8b97e0 100644 --- a/client/v3/go.sum +++ b/client/v3/go.sum @@ -72,8 +72,8 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= diff --git a/etcdctl/go.mod b/etcdctl/go.mod index dca68fb43138..5449ef26a3a9 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -42,7 +42,7 @@ require ( github.com/olekukonko/ll v0.1.6 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.54.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect diff --git a/etcdctl/go.sum b/etcdctl/go.sum index 0536b4b13338..3b570a84763d 100644 --- a/etcdctl/go.sum +++ b/etcdctl/go.sum @@ -102,8 +102,8 @@ go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 9207efa6a558..27ec75f0aa80 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -80,7 +80,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.52.0 // indirect - golang.org/x/net v0.54.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect golang.org/x/time v0.15.0 // indirect diff --git a/etcdutl/go.sum b/etcdutl/go.sum index 554f2b9a3d63..d2ec3d51af8a 100644 --- a/etcdutl/go.sum +++ b/etcdutl/go.sum @@ -147,8 +147,8 @@ golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGb golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/go.mod b/go.mod index 956f5558208d..88e294819be6 100644 --- a/go.mod +++ b/go.mod @@ -94,7 +94,7 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.52.0 // indirect golang.org/x/mod v0.36.0 // indirect - golang.org/x/net v0.54.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect diff --git a/go.sum b/go.sum index 1a562748e788..aafa57c06f46 100644 --- a/go.sum +++ b/go.sum @@ -157,8 +157,8 @@ golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/pkg/go.mod b/pkg/go.mod index 525af218436b..b18d70e358de 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -26,7 +26,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.opentelemetry.io/otel v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.54.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 0738c31f6c5f..4e82fad30920 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -56,8 +56,8 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= diff --git a/server/go.mod b/server/go.mod index c52b2e736e6e..57057f9865a6 100644 --- a/server/go.mod +++ b/server/go.mod @@ -35,7 +35,7 @@ require ( go.opentelemetry.io/otel/trace v1.43.0 go.uber.org/zap v1.27.1 golang.org/x/crypto v0.52.0 - golang.org/x/net v0.54.0 + golang.org/x/net v0.55.0 golang.org/x/time v0.15.0 google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 google.golang.org/grpc v1.81.0 diff --git a/server/go.sum b/server/go.sum index 194c203d2be0..dd8c7f875ea4 100644 --- a/server/go.sum +++ b/server/go.sum @@ -127,8 +127,8 @@ golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGb golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/tests/go.mod b/tests/go.mod index fb0bf6d26d85..60f8f0bb40b2 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -95,7 +95,7 @@ require ( go.opentelemetry.io/otel/trace v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.54.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect diff --git a/tests/go.sum b/tests/go.sum index d5e67090c064..74db1a045df8 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -161,8 +161,8 @@ golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGb golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/tools/mod/go.mod b/tools/mod/go.mod index c5ded88f985a..582f365defdb 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -241,7 +241,7 @@ require ( golang.org/x/crypto v0.52.0 // indirect golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358 // indirect golang.org/x/mod v0.36.0 // indirect - golang.org/x/net v0.54.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.45.0 // indirect golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6 // indirect diff --git a/tools/mod/go.sum b/tools/mod/go.sum index 96938942bffe..6116a478fb4a 100644 --- a/tools/mod/go.sum +++ b/tools/mod/go.sum @@ -601,8 +601,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index fd1b9fa6bd30..df64e0116321 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -15,7 +15,7 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.10 // indirect - golang.org/x/net v0.54.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect diff --git a/tools/testgrid-analysis/go.sum b/tools/testgrid-analysis/go.sum index 79e5faf3a59e..a2aafc4aacb7 100644 --- a/tools/testgrid-analysis/go.sum +++ b/tools/testgrid-analysis/go.sum @@ -1341,8 +1341,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From 38f525e581393f386e0ce39fc5019516510dddac Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Tue, 7 Jul 2026 15:23:13 -0700 Subject: [PATCH 1066/1068] Bump go toolchain to 1.26.5 Signed-off-by: Ivan Valdes --- .go-version | 2 +- api/go.mod | 2 +- cache/go.mod | 2 +- client/pkg/go.mod | 2 +- client/v3/go.mod | 2 +- etcdctl/go.mod | 2 +- etcdutl/go.mod | 2 +- go.mod | 2 +- go.work | 2 +- pkg/go.mod | 2 +- server/go.mod | 2 +- tests/go.mod | 2 +- tools/mod/go.mod | 2 +- tools/rw-heatmaps/go.mod | 2 +- tools/testgrid-analysis/go.mod | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.go-version b/.go-version index ea0928cedf0d..8fe00a57fe1d 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.26.4 +1.26.5 diff --git a/api/go.mod b/api/go.mod index 5838a011c05e..aca5a9d17d5c 100644 --- a/api/go.mod +++ b/api/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/api/v3 go 1.26 -toolchain go1.26.4 +toolchain go1.26.5 require ( github.com/coreos/go-semver v0.3.1 diff --git a/cache/go.mod b/cache/go.mod index 8d1f02fde038..2062d4e9daba 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/cache/v3 go 1.26 -toolchain go1.26.4 +toolchain go1.26.5 require ( github.com/google/go-cmp v0.7.0 diff --git a/client/pkg/go.mod b/client/pkg/go.mod index ab7025c85a83..0e4fda082daa 100644 --- a/client/pkg/go.mod +++ b/client/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/pkg/v3 go 1.26 -toolchain go1.26.4 +toolchain go1.26.5 require ( github.com/coreos/go-systemd/v22 v22.7.0 diff --git a/client/v3/go.mod b/client/v3/go.mod index c200f52167ba..364e7eebe720 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/client/v3 go 1.26 -toolchain go1.26.4 +toolchain go1.26.5 require ( github.com/coreos/go-semver v0.3.1 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index 5449ef26a3a9..e8461f1d954b 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdctl/v3 go 1.26 -toolchain go1.26.4 +toolchain go1.26.5 require ( github.com/bgentry/speakeasy v0.2.0 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index 27ec75f0aa80..c2dde181b6e8 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/etcdutl/v3 go 1.26 -toolchain go1.26.4 +toolchain go1.26.5 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/go.mod b/go.mod index 88e294819be6..47b78670b7ab 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/v3 go 1.26 -toolchain go1.26.4 +toolchain go1.26.5 replace ( go.etcd.io/etcd/api/v3 => ./api diff --git a/go.work b/go.work index 726a29d4a6ae..a45b75f624a2 100644 --- a/go.work +++ b/go.work @@ -2,7 +2,7 @@ go 1.26 -toolchain go1.26.4 +toolchain go1.26.5 use ( . diff --git a/pkg/go.mod b/pkg/go.mod index b18d70e358de..84ce3e21dae7 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/pkg/v3 go 1.26 -toolchain go1.26.4 +toolchain go1.26.5 require ( github.com/creack/pty v1.1.18 diff --git a/server/go.mod b/server/go.mod index 57057f9865a6..9365d85535cb 100644 --- a/server/go.mod +++ b/server/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/server/v3 go 1.26 -toolchain go1.26.4 +toolchain go1.26.5 require ( github.com/coreos/go-semver v0.3.1 diff --git a/tests/go.mod b/tests/go.mod index 60f8f0bb40b2..bb30050cd39b 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tests/v3 go 1.26 -toolchain go1.26.4 +toolchain go1.26.5 replace ( go.etcd.io/etcd/api/v3 => ../api diff --git a/tools/mod/go.mod b/tools/mod/go.mod index 582f365defdb..25fb14e92199 100644 --- a/tools/mod/go.mod +++ b/tools/mod/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/v3 go 1.26 -toolchain go1.26.4 +toolchain go1.26.5 require ( github.com/alexfalkowski/gocovmerge v1.11.0 diff --git a/tools/rw-heatmaps/go.mod b/tools/rw-heatmaps/go.mod index e24602a1d008..5cf44c3ee555 100644 --- a/tools/rw-heatmaps/go.mod +++ b/tools/rw-heatmaps/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/rw-heatmaps/v3 go 1.26 -toolchain go1.26.4 +toolchain go1.26.5 require ( github.com/spf13/cobra v1.10.2 diff --git a/tools/testgrid-analysis/go.mod b/tools/testgrid-analysis/go.mod index df64e0116321..e75c51aa0539 100644 --- a/tools/testgrid-analysis/go.mod +++ b/tools/testgrid-analysis/go.mod @@ -2,7 +2,7 @@ module go.etcd.io/etcd/tools/testgrid-analysis/v3 go 1.26 -toolchain go1.26.4 +toolchain go1.26.5 require ( github.com/GoogleCloudPlatform/testgrid v0.0.173 From 1e52da1c54939a5e8fa5a0dd964218b94622e9d7 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Wed, 8 Jul 2026 11:18:55 -0700 Subject: [PATCH 1067/1068] version: bump up to 3.7.0 Signed-off-by: Ivan Valdes --- api/version/version.go | 2 +- cache/go.mod | 6 +++--- client/v3/go.mod | 4 ++-- etcdctl/go.mod | 8 ++++---- etcdutl/go.mod | 10 +++++----- go.mod | 16 ++++++++-------- pkg/go.mod | 2 +- server/go.mod | 8 ++++---- tests/go.mod | 16 ++++++++-------- 9 files changed, 36 insertions(+), 36 deletions(-) diff --git a/api/version/version.go b/api/version/version.go index 970bc5a785b5..ad23060722e8 100644 --- a/api/version/version.go +++ b/api/version/version.go @@ -26,7 +26,7 @@ import ( var ( // MinClusterVersion is the min cluster version this etcd binary is compatible with. MinClusterVersion = "3.0.0" - Version = "3.7.0-rc.0" + Version = "3.7.0" APIVersion = "unknown" // Git SHA Value will be set during build diff --git a/cache/go.mod b/cache/go.mod index 2062d4e9daba..00d2ca1e23e4 100644 --- a/cache/go.mod +++ b/cache/go.mod @@ -7,8 +7,8 @@ toolchain go1.26.5 require ( github.com/google/go-cmp v0.7.0 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/api/v3 v3.7.0-rc.0 - go.etcd.io/etcd/client/v3 v3.7.0-rc.0 + go.etcd.io/etcd/api/v3 v3.7.0 + go.etcd.io/etcd/client/v3 v3.7.0 google.golang.org/protobuf v1.36.11 k8s.io/utils v0.0.0-20260108192941-914a6e750570 ) @@ -20,7 +20,7 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect golang.org/x/net v0.55.0 // indirect diff --git a/client/v3/go.mod b/client/v3/go.mod index 364e7eebe720..4695496ee1c8 100644 --- a/client/v3/go.mod +++ b/client/v3/go.mod @@ -11,8 +11,8 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 github.com/prometheus/client_golang v1.23.2 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/api/v3 v3.7.0-rc.0 - go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 + go.etcd.io/etcd/api/v3 v3.7.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0 go.uber.org/zap v1.27.1 google.golang.org/grpc v1.81.0 google.golang.org/protobuf v1.36.11 diff --git a/etcdctl/go.mod b/etcdctl/go.mod index e8461f1d954b..0e1a3b0460de 100644 --- a/etcdctl/go.mod +++ b/etcdctl/go.mod @@ -12,10 +12,10 @@ require ( github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/api/v3 v3.7.0-rc.0 - go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 - go.etcd.io/etcd/client/v3 v3.7.0-rc.0 - go.etcd.io/etcd/pkg/v3 v3.7.0-rc.0 + go.etcd.io/etcd/api/v3 v3.7.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0 + go.etcd.io/etcd/client/v3 v3.7.0 + go.etcd.io/etcd/pkg/v3 v3.7.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 google.golang.org/grpc v1.81.0 diff --git a/etcdutl/go.mod b/etcdutl/go.mod index c2dde181b6e8..67a7ba46807c 100644 --- a/etcdutl/go.mod +++ b/etcdutl/go.mod @@ -19,11 +19,11 @@ require ( github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.5.0 - go.etcd.io/etcd/api/v3 v3.7.0-rc.0 - go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 - go.etcd.io/etcd/client/v3 v3.7.0-rc.0 - go.etcd.io/etcd/pkg/v3 v3.7.0-rc.0 - go.etcd.io/etcd/server/v3 v3.7.0-rc.0 + go.etcd.io/etcd/api/v3 v3.7.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0 + go.etcd.io/etcd/client/v3 v3.7.0 + go.etcd.io/etcd/pkg/v3 v3.7.0 + go.etcd.io/etcd/server/v3 v3.7.0 go.etcd.io/raft/v3 v3.7.0 go.uber.org/zap v1.27.1 google.golang.org/protobuf v1.36.11 diff --git a/go.mod b/go.mod index 47b78670b7ab..e23dd6928a5e 100644 --- a/go.mod +++ b/go.mod @@ -26,14 +26,14 @@ require ( github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.5.0 - go.etcd.io/etcd/api/v3 v3.7.0-rc.0 - go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 - go.etcd.io/etcd/client/v3 v3.7.0-rc.0 - go.etcd.io/etcd/etcdctl/v3 v3.7.0-rc.0 - go.etcd.io/etcd/etcdutl/v3 v3.7.0-rc.0 - go.etcd.io/etcd/pkg/v3 v3.7.0-rc.0 - go.etcd.io/etcd/server/v3 v3.7.0-rc.0 - go.etcd.io/etcd/tests/v3 v3.7.0-rc.0 + go.etcd.io/etcd/api/v3 v3.7.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0 + go.etcd.io/etcd/client/v3 v3.7.0 + go.etcd.io/etcd/etcdctl/v3 v3.7.0 + go.etcd.io/etcd/etcdutl/v3 v3.7.0 + go.etcd.io/etcd/pkg/v3 v3.7.0 + go.etcd.io/etcd/server/v3 v3.7.0 + go.etcd.io/etcd/tests/v3 v3.7.0 go.etcd.io/raft/v3 v3.7.0 go.uber.org/zap v1.27.1 golang.org/x/time v0.15.0 diff --git a/pkg/go.mod b/pkg/go.mod index 84ce3e21dae7..3e017081361b 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -10,7 +10,7 @@ require ( github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 - go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0 go.opentelemetry.io/otel/trace v1.43.0 go.uber.org/zap v1.27.1 golang.org/x/sys v0.45.0 diff --git a/server/go.mod b/server/go.mod index 9365d85535cb..ac2bac72b85f 100644 --- a/server/go.mod +++ b/server/go.mod @@ -23,10 +23,10 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 go.etcd.io/bbolt v1.5.0 - go.etcd.io/etcd/api/v3 v3.7.0-rc.0 - go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 - go.etcd.io/etcd/client/v3 v3.7.0-rc.0 - go.etcd.io/etcd/pkg/v3 v3.7.0-rc.0 + go.etcd.io/etcd/api/v3 v3.7.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0 + go.etcd.io/etcd/client/v3 v3.7.0 + go.etcd.io/etcd/pkg/v3 v3.7.0 go.etcd.io/raft/v3 v3.7.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 go.opentelemetry.io/otel v1.43.0 diff --git a/tests/go.mod b/tests/go.mod index bb30050cd39b..c06f9affa5e1 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -31,14 +31,14 @@ require ( github.com/soheilhy/cmux v0.1.5 github.com/stretchr/testify v1.11.1 go.etcd.io/bbolt v1.5.0 - go.etcd.io/etcd/api/v3 v3.7.0-rc.0 - go.etcd.io/etcd/cache/v3 v3.7.0-rc.0 - go.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0 - go.etcd.io/etcd/client/v3 v3.7.0-rc.0 - go.etcd.io/etcd/etcdctl/v3 v3.7.0-rc.0 - go.etcd.io/etcd/etcdutl/v3 v3.7.0-rc.0 - go.etcd.io/etcd/pkg/v3 v3.7.0-rc.0 - go.etcd.io/etcd/server/v3 v3.7.0-rc.0 + go.etcd.io/etcd/api/v3 v3.7.0 + go.etcd.io/etcd/cache/v3 v3.7.0 + go.etcd.io/etcd/client/pkg/v3 v3.7.0 + go.etcd.io/etcd/client/v3 v3.7.0 + go.etcd.io/etcd/etcdctl/v3 v3.7.0 + go.etcd.io/etcd/etcdutl/v3 v3.7.0 + go.etcd.io/etcd/pkg/v3 v3.7.0 + go.etcd.io/etcd/server/v3 v3.7.0 go.etcd.io/gofail v0.2.0 go.etcd.io/raft/v3 v3.7.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 From f4656501f68b67a2c53a204fadbcc9ad80f2b907 Mon Sep 17 00:00:00 2001 From: John Sampson Date: Fri, 17 Jul 2026 15:40:39 -0400 Subject: [PATCH 1068/1068] UPSTREAM: : manually resolve conflicts --- go.work.sum | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/go.work.sum b/go.work.sum index 48cf8a42b251..cfcbbec3255a 100644 --- a/go.work.sum +++ b/go.work.sum @@ -300,6 +300,7 @@ github.com/google/cel-go v0.25.0 h1:jsFw9Fhn+3y2kBbltZR4VEz5xKkcIFRPDnuEzAGv5GY= github.com/google/cel-go v0.25.0/go.mod h1:hjEb6r5SuOSlhCHmFoLzu8HGCERvIsDAbxDAyNU/MmI= github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v50 v50.2.0 h1:j2FyongEHlO9nxXLc+LP3wuBSVU9mVxfpdYUexMpIfk= github.com/google/go-pkcs11 v0.2.0 h1:5meDPB26aJ98f+K9G21f0AqZwo/S5BJMJh8nuhMbdsI= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= @@ -469,10 +470,12 @@ github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 h1:Nzukz5fNOBIHOsnP+6I79kPx3QhLv8nBy2mfFhBRq30= github.com/zmap/zcertificate v0.0.1 h1:2X15TRx4Fr6qzKItfwUdww294OeRSmHILLa+Xn2Uv+s= +go.etcd.io/bbolt v1.5.0-rc.0/go.mod h1:HXpeuv7FrPaEH3z9FzbnSXSntD27WQyEMjQNJbd+vd8= go.etcd.io/etcd/client/v2 v2.305.12 h1:0m4ovXYo1CHaA/Mp3X/Fak5sRNIWf01wk/X1/G3sGKI= go.etcd.io/etcd/client/v2 v2.305.12/go.mod h1:aQ/yhsxMu+Oht1FOupSr60oBvcS9cKXHrzBpDsPTf9E= go.etcd.io/etcd/raft/v3 v3.5.12 h1:7r22RufdDsq2z3STjoR7Msz6fYH8tmbkdheGfwJNRmU= go.etcd.io/etcd/raft/v3 v3.5.12/go.mod h1:ERQuZVe79PI6vcC3DlKBukDCLja/L7YMu29B74Iwj4U= +go.etcd.io/raft/v3 v3.7.0-rc.1/go.mod h1:sWN3FZ3+MUeGidw1pzYc78c11I7VmeteCFB3YjA7tcw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opentelemetry.io/contrib/detectors/gcp v1.42.0 h1:kpt2PEJuOuqYkPcktfJqWWDjTEd/FNgrxcniL7kQrXQ= go.opentelemetry.io/contrib/detectors/gcp v1.42.0/go.mod h1:W9zQ439utxymRrXsUOzZbFX4JhLxXU4+ZnCt8GG7yA8= @@ -480,14 +483,24 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6h go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c h1:jTMrjjZRcSH/BDxWhXCP6OWsfVgmnwI7J+F4/nyVXaU= golang.org/x/exp/shiny v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/perf v0.0.0-20250813145418-2f7363a06fe1 h1:stGRioFgvBd3x8HoGVg9bb41lLTWLjBMFT/dMB7f4mQ= golang.org/x/perf v0.0.0-20250813145418-2f7363a06fe1/go.mod h1:rjfRjhHXb3XNVh/9i5Jr2tXoTd0vOlZN5rzsM8cQE6k= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= +golang.org/x/tools/go/expect v0.1.0-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= gonum.org/v1/tools v0.0.0-20200318103217-c168b003ce8c h1:cJWOvXtcaFSGXz2F4z2AMM0VV7edDDGrxb5GLQH7ayQ=